        .tt-gradient { background: linear-gradient(135deg, #0f172a 0%, #1e3a8a 50%, #2563eb 100%); }
        .tt-modern-logo { background: linear-gradient(135deg, #2563eb 0%, #1e1b4b 100%); box-shadow: 0 10px 25px -5px rgba(37, 99, 235, 0.4); }
        .dropdown-menu { display: none; }
        .dropdown-container:hover .dropdown-menu { display: block; }

        /* Posicionamento das Propagandas nas Laterais em Branco */
        .side-ad-container {
            position: fixed; /* Fixo para acompanhar a rolagem do site */
            top: 130px; /* Logo abaixo do header */
            width: 150px; /* Reduzido de 2 para 1 coluna vertical para não invadir o site */
            display: flex;
            flex-direction: column;
            gap: 12px;
            z-index: 20; /* Abaixo de modais (50), mas acima do sistema */
            max-height: calc(100vh - 150px); /* Impede que vaze do limite inferior da tela */
            overflow-y: auto;
            scrollbar-width: thin;
            scrollbar-color: #cbd5e1 transparent;
        }
        .side-ad-container::-webkit-scrollbar { width: 4px; }
        .side-ad-container::-webkit-scrollbar-thumb { background-color: #cbd5e1; border-radius: 4px; }

        .side-ad-left { left: 16px; }
        .side-ad-right { right: 16px; }

        /* Layout responsivo inteligente: Oculta nas laterais e mostra no rodapé se a tela for menor que 1650px */
        @media (max-width: 1650px) {
            .side-ad-container { display: none !important; }
            #bottomAdContainer { display: flex !important; }
        }

        /* Estilização otimizada para Impressão em Folha A4 Paisagem (Landscape) sem transbordar, com quebras dedicadas por grupo, chave e pódio isolado na última folha */
        @media print {
            @page {
                size: A4 landscape;
                margin: 10mm;
            }
            /* Força a impressão de cores de fundo/gradientes mesmo quando a opção "Gráficos em segundo plano"
               do navegador está desligada (padrão) — sem isso, cartões e textos claros sobre fundo colorido saem em branco. */
            * {
                -webkit-print-color-adjust: exact !important;
                print-color-adjust: exact !important;
                color-adjust: exact !important;
            }
            body * { visibility: hidden; }
            #tournamentDetailView, #tournamentDetailView * { visibility: visible; }
            #tournamentDetailView {
                position: absolute;
                left: 0;
                top: 0;
                width: 100%;
                background: white !important;
                padding: 0 !important;
                margin: 0 !important;
                box-shadow: none !important;
                border: none !important;
            }

            /* O folheto de Planos de Treinamento agora é impresso em uma janela própria, totalmente
               independente (ver printAcademyPlans() em app.js) — por isso não existe mais nenhuma regra
               aqui para ele: a janela de impressão não carrega este styles.css, então não há como ficar
               desatualizada em relação ao app.js. */

            button, nav, header, footer, .side-ad-container, .print-hidden { display: none !important; }
            
            /* Cada grupo de jogos ocupa obrigatoriamente uma página A4 exclusiva */
            .printable-group-page {
                page-break-before: always;
                page-break-after: always;
                break-inside: avoid;
                min-height: 100vh;
                display: flex;
                flex-direction: column;
                justify-content: flex-start;
                box-sizing: border-box;
                padding-bottom: 20mm;
            }

            /* Cada categoria / chave olímpica eliminatória ocupa obrigatoriamente uma página A4 exclusiva */
            .printable-category-page {
                page-break-before: always;
                page-break-after: always;
                break-inside: avoid;
                min-height: 100vh;
                display: flex;
                flex-direction: column;
                justify-content: flex-start;
                box-sizing: border-box;
                padding-bottom: 20mm;
            }
            .printable-category-page:first-of-type {
                page-break-before: avoid;
            }

            /* O pódio final deve ser jogado obrigatoriamente para a última folha, separado da chave olímpica eliminatória */
            .printable-podium-page {
                page-break-before: always;
                page-break-after: always;
                break-inside: avoid;
                min-height: 100vh;
                display: flex;
                flex-direction: column;
                justify-content: center;
                align-items: center;
                box-sizing: border-box;
                page-break-inside: avoid;
            }

            /* Ajustes estritos de escala para caber perfeitamente na largura/altura da folha A4 paisagem */
            .bracket-tree-container {
                transform: scale(0.82);
                transform-origin: top left;
                width: 115% !important;
                padding: 5px 0 !important;
                overflow: visible !important;
            }
            .bracket-round {
                width: 200px !important;
                min-width: 200px !important;
                max-width: 200px !important;
            }
            .bracket-match-box {
                margin: 6px 0 !important;
            }
            .bracket-player-row {
                padding: 4px 8px !important;
                font-size: 10px !important;
            }
        }

        /* Layout de Chave Olímpica em Árvore - campos compactados para caber na largura útil do site */
        .bracket-tree-container {
            display: flex;
            overflow-x: auto;
            padding: 20px 0;
            align-items: center;
            justify-content: flex-start;
            gap: 10px;
        }
        .bracket-round {
            display: flex;
            flex-direction: column;
            justify-content: space-around;
            width: 155px;
            min-width: 155px;
            max-width: 155px;
            flex-shrink: 0;
        }
        .bracket-match-box {
            background: #ffffff;
            border: 1px solid #cbd5e1;
            border-radius: 6px;
            overflow: hidden;
            box-shadow: 0 1px 3px rgba(0,0,0,0.05);
            margin: 8px 0;
            position: relative;
        }
        .bracket-player-row {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 5px 6px;
            font-size: 10.5px;
            border-bottom: 1px solid #e2e8f0;
            gap: 4px;
        }
        .bracket-player-row:last-child {
            border-bottom: none;
        }
        .bracket-player-name {
            font-weight: 700;
            color: #1e293b;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            max-width: 100px;
            flex: 1 1 auto;
            min-width: 0;
        }
        .bracket-player-score {
            font-weight: 800;
            background: #cbd5e1;
            color: #1e293b;
            padding: 2px 0;
            border-radius: 3px;
            width: 28px;
            min-width: 28px;
            max-width: 28px;
            flex: 0 0 28px;
            text-align: center;
            -moz-appearance: textfield;
            appearance: textfield;
        }
        .bracket-player-score::-webkit-outer-spin-button,
        .bracket-player-score::-webkit-inner-spin-button {
            -webkit-appearance: none;
            margin: 0;
        }
        .bracket-player-score.winner {
            background: #0f766e;
            color: #ffffff;
        }
        .bracket-player-score.gold {
            background: #d97706;
            color: #ffffff;
        }

        /* Animação de Entrada e União das Letras T */
        #splashScreen {
            position: fixed;
            inset: 0;
            z-index: 9999;
            background: linear-gradient(135deg, #0f172a 0%, #1e1b4b 100%);
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            transition: opacity 0.6s ease-in-out, visibility 0.6s ease-in-out;
        }
        
        .splash-t-top {
            animation: slideDownAndMeet 1.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
        }

        .splash-t-bottom {
            animation: slideUpAndMeet 1.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
        }

        .splash-container {
            position: relative;
            width: 100%;
            max-width: 450px;
            padding: 0 20px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
        }

        .splash-icon-box {
            animation: pulseAndGlow 1.5s ease-in-out infinite alternate;
        }

        @keyframes slideDownAndMeet {
            0% { transform: translateY(-70px); opacity: 0; }
            100% { transform: translateY(0); opacity: 1; }
        }

        @keyframes slideUpAndMeet {
            0% { transform: translateY(70px); opacity: 0; }
            100% { transform: translateY(0); opacity: 1; }
        }

        @keyframes pulseAndGlow {
            0% { transform: scale(1); box-shadow: 0 0 15px rgba(37, 99, 235, 0.5); }
            100% { transform: scale(1.08); box-shadow: 0 0 30px rgba(239, 68, 68, 0.8); }
        }

        .fade-out {
            opacity: 0;
            visibility: hidden;
        }