/* RETRO POP · família misc — nível 3 de 4 (PLANO-APLICACAO.md 1.4, etapa 6)
   Dez páginas avulsas, cada uma com esqueleto próprio:
   · 404.html (<style> inline; o "404" é texto em gradiente recortado com duas cópias ::before/::after em loop)
   · oldgames.html (landing de SEO: header nu, .content-section, .game-category, .feature, .console-tag, .faq, footer)
   · tournaments.html (tournaments.css + tournament-competitors.css, quase tudo em --ogt-*: a ponte troca a tinta,
     esta folha troca os fundos escritos na mão e o acento usado como TEXTO, que no papel não passa AA)
   · pokemon-lobby.html  CALMA (iframe #emu do emulador GB): --nx-* pela ponte; só cor em volta do palco
   · network-room.html   CALMA (sala multiplayer: iframe/canvas em #native-stage): PÔSTER ESCURO (.rp-dark), só cor
   · cable-club.html     CALMA (canvas do GBmulator). O script de boot TROCA a classe do <html> por theme-dmg/cgb/gba
     antes de qualquer pintura: html.retro-pop some, e com ele núcleo, ponte e _shared.css. A seção 6 é chaveada
     por [data-hud-family="misc"] e carrega os próprios tokens.
   · pages/pokemon-gb-link.html (salas de troca Pokémon, --bg/--panel/--text... pela ponte)
   · pages/pokemon-kanto.html (landing do MMO; tokens próprios fora da ponte: --surface, --text2, --accent...)
   · subscription-success.html e pages/guides.html: só redirecionam (um <p> no papel; o núcleo basta).

   DUAS METADES por página, como retro/console.css: VARREDURA DE INVERSÃO nos seletores reais (com JS desligado o
   classMap não roda) e COMPOSIÇÃO com a geometria das primitivas que o misc.json estampa.

   PÁGINAS CALMAS: o jogo é intocável. Nada de moldura, sobreposição, transform, padding, borda, fonte ou tamanho
   em #native-stage, .stage, #emu, #gb, #gb-screen-border, canvas, iframe, vídeo nem nos ancestrais que decidem a
   geometria deles; nenhum pad de toque (.ds-controls, #gb-controls, .gb-*). Nessas páginas o núcleo troca a
   métrica do texto do body (retro-pop.css:201) e a ponte troca --nx-ui/--nx-disp: esta folha devolve as métricas
   originais onde elas decidem a posição do palco. Ver o relatório (defeito do núcleo).
   NUNCA aqui: cosmético pago, widgets de site inteiro (donos: retro/_shared.css), slot de anúncio, position/z-index
   de ninguém. Movimento: laços decorativos das páginas parados; os que ficam leem --rp-play. */

/* ═══════════ 0 · TOKENS DA FAMÍLIA ═══════════ */
html.retro-pop[data-hud-family="misc"]{
  --mx-ink:#17131f; --mx-ink2:#221c2c; --mx-ink3:#2e2639;
  --mx-cream:#f5ebd7; --mx-cream2:#dccfb2; --mx-cream3:#b5a68c; --mx-white:#fffaf0;
  --mx-line:rgba(245,235,215,.22); --mx-hard:5px 6px 0 #000;
}

/* ═══════════ 1 · 404.html ═══════════ */
html.retro-pop body:has(> .container > .code.glitch) .bg::before{background:radial-gradient(circle,rgba(23,19,31,.16) 1.4px,transparent 1.6px) 0 0/14px 14px}
html.retro-pop .container > .code.glitch{background:none;-webkit-background-clip:border-box;background-clip:border-box;-webkit-text-fill-color:var(--rp-yellow);color:var(--rp-yellow);filter:none;-webkit-text-stroke:3px var(--mx-ink);font-family:var(--rp-ff-display);text-shadow:7px 8px 0 var(--mx-ink)}
/* as duas cópias de "glitch" ficam como registro desalinhado de gráfica, paradas (eram 2 laços infinitos) */
html.retro-pop .container > .code.glitch::before{animation:none;transform:translate(-5px,-3px);-webkit-text-fill-color:rgba(255,46,77,.85);-webkit-text-stroke:0}
html.retro-pop .container > .code.glitch::after{animation:none;transform:translate(5px,3px);-webkit-text-fill-color:rgba(0,184,217,.85);-webkit-text-stroke:0}
html.retro-pop .code.glitch + .title{display:inline-block;padding:8px 26px;border-block:4px solid var(--mx-ink);background:var(--rp-red) var(--rp-art-ribcap) no-repeat left center/22px 100%;color:var(--mx-ink);font:400 clamp(20px,3vw,28px)/1.05 var(--rp-ff-display);letter-spacing:.02em;transform:rotate(-1.4deg)}
html.retro-pop .code.glitch ~ .desc{color:var(--rp-ink-2)}
html.retro-pop .code.glitch ~ .btn{min-height:48px;border:3px solid var(--mx-ink);border-radius:3px;background:var(--rp-red);color:var(--mx-ink);box-shadow:4px 5px 0 var(--mx-ink);font-family:var(--rp-ff-body);font-weight:800}
html.retro-pop .code.glitch ~ .btn:hover{transform:translate(-2px,-3px);box-shadow:7px 8px 0 var(--mx-ink)}
/* o <p> e os <a> do rodapé trazem cor no atributo style (#666/#888): só !important vence */
html.retro-pop .code.glitch ~ p[style]{color:var(--mx-ink)!important;font-weight:700}
html.retro-pop .code.glitch ~ p[style] a{color:var(--mx-ink)!important;font-weight:700;text-decoration-color:var(--rp-cyan);text-decoration-thickness:2px}


/* ═══════════ 2 · oldgames.html ═══════════ */
html.retro-pop body:has(.games-grid) > header{background-color:var(--rp-yellow);background-image:linear-gradient(179.5deg,transparent 0 calc(100% - 14px),var(--mx-ink) calc(100% - 14px));border-bottom:0;color:var(--mx-ink)}
html.retro-pop body:has(.games-grid) h1{color:var(--mx-ink);text-shadow:4px 4px 0 var(--rp-red);font-family:var(--rp-ff-display);letter-spacing:-.01em;text-transform:uppercase}
html.retro-pop body:has(.games-grid) .subtitle{display:inline-block;padding:5px 12px;border:3px solid var(--mx-ink);background:var(--mx-white);color:var(--mx-ink);font-weight:800;transform:rotate(-1deg)}
html.retro-pop body:has(.games-grid) .hero-text,
html.retro-pop body:has(.games-grid) p{color:var(--rp-ink-2)}
html.retro-pop body:has(.games-grid) p strong{color:var(--mx-ink)}
html.retro-pop body:has(.games-grid) .cta-button{border:3px solid var(--mx-ink);border-radius:3px;background:var(--rp-red);color:var(--mx-ink);box-shadow:4px 5px 0 var(--mx-ink);text-transform:uppercase;font-family:var(--rp-ff-body);font-weight:800}
html.retro-pop body:has(.games-grid) .cta-button:hover{transform:translate(-2px,-3px);box-shadow:7px 8px 0 var(--mx-ink)}
html.retro-pop body:has(.games-grid) .content-section{border:5px solid var(--mx-ink);border-radius:0;background:var(--mx-white);color:var(--mx-ink);box-shadow:7px 8px 0 var(--mx-ink)}
html.retro-pop body:has(.games-grid) .content-section:nth-of-type(even){transform:rotate(.35deg)}
html.retro-pop body:has(.games-grid) .content-section:nth-of-type(odd){transform:rotate(-.35deg)}
html.retro-pop body:has(.games-grid) h2{display:table;margin-inline:auto;padding:8px 30px;border-block:4px solid var(--mx-ink);background:var(--rp-cyan) var(--rp-art-ribcap) no-repeat left center/22px 100%;color:var(--mx-ink);font:400 clamp(22px,2.6vw,34px)/1.05 var(--rp-ff-display);text-transform:uppercase;transform:rotate(-1.2deg)}
html.retro-pop body:has(.games-grid) h3{color:var(--rp-red-deep);font-family:var(--rp-ff-display);text-transform:uppercase}
html.retro-pop body:has(.games-grid) h4{color:var(--mx-ink);font-family:var(--rp-ff-display);text-transform:uppercase}
html.retro-pop body:has(.games-grid) .game-category{border:3px solid var(--mx-ink);border-radius:0;background:var(--rp-paper-2);box-shadow:4px 5px 0 var(--mx-ink)}
html.retro-pop body:has(.games-grid) .game-category:nth-child(3n+1){background-color:var(--rp-yellow)}
html.retro-pop body:has(.games-grid) .game-category:hover{transform:translate(-2px,-4px);border-color:var(--mx-ink);box-shadow:7px 8px 0 var(--mx-ink)}
html.retro-pop body:has(.games-grid) .feature,
html.retro-pop body:has(.games-grid) .faq{border:3px solid var(--mx-ink);border-left-width:10px;border-radius:0;background:var(--rp-paper)}
html.retro-pop body:has(.games-grid) .console-tag{border:2px solid var(--mx-ink);border-radius:0;background:var(--rp-cyan);color:var(--mx-ink);box-shadow:2px 3px 0 var(--mx-ink);font:800 13px/1.2 var(--rp-ff-body);text-transform:uppercase;letter-spacing:.04em}
html.retro-pop body:has(.games-grid) .console-tag:nth-child(3n+2){background:var(--rp-yellow)}
html.retro-pop body:has(.games-grid) .console-tag:nth-child(3n){background:var(--rp-lime)}
html.retro-pop body:has(.games-grid) .console-tag:hover{transform:translate(-2px,-2px) rotate(-2deg);box-shadow:4px 5px 0 var(--mx-ink)}
html.retro-pop body:has(.games-grid) footer{margin-top:4rem;padding-bottom:calc(2rem + 10px);border-top:5px solid var(--mx-ink);background:var(--mx-ink) var(--rp-pat-candy) left bottom/100% 10px no-repeat;color:var(--mx-cream2)}
html.retro-pop body:has(.games-grid) footer p{color:var(--mx-cream2)}
html.retro-pop body:has(.games-grid) footer p strong{color:var(--mx-cream)}
html.retro-pop body:has(.games-grid) footer a{color:var(--rp-yellow);font-weight:700}
html.retro-pop body:has(.games-grid) footer a:hover{color:var(--mx-cream)}


/* ═══════════ 3 · tournaments.html (tournaments.css + tournament-competitors.css) ═══════════ */
/* tokens que a ponte não cobre; o acento usado como texto vira tinta (ciano/âmbar/lima no papel não passam AA) */
html.retro-pop body.tourney-page{--ogt-panel-strong:var(--mx-white);background:var(--rp-pat-news),var(--rp-paper)!important}
html.retro-pop body.tourney-page :is(.ogt-kicker,.ogt-command h1 em,.ogt-section-title em){color:var(--rp-red-deep)}
html.retro-pop body.tourney-page .ogt-brand span:last-child{color:var(--mx-ink)}
html.retro-pop body.tourney-page .ogt-kicker i{background:linear-gradient(90deg,transparent,var(--mx-ink))}
html.retro-pop body.tourney-page .ogt-command-copy{color:var(--rp-ink-2)}
html.retro-pop body.tourney-page :is(.ogt-prize-panel b,.ogt-champion-body span){color:var(--mx-ink)}
html.retro-pop body.tourney-page .ogt-status.ok{color:#3d6b00}
html.retro-pop body.tourney-page .ogt-status.err{color:var(--rp-red-deep)}
/* tarja: a barra é sticky (top:12px) — só cor, fundo e borda; o "corte" é camada de fundo */
html.retro-pop body.tourney-page .ogt-topbar{border:3px solid var(--mx-ink);border-radius:0;background-color:var(--rp-yellow);background-image:linear-gradient(179.3deg,transparent 0 calc(100% - 8px),var(--mx-ink) calc(100% - 8px));box-shadow:5px 6px 0 rgba(23,19,31,.25);-webkit-backdrop-filter:none;backdrop-filter:none}
html.retro-pop body.tourney-page .ogt-logo{border:3px solid var(--mx-ink);border-radius:3px;background:var(--rp-red);color:var(--mx-ink);box-shadow:3px 3px 0 var(--mx-ink)}
html.retro-pop body.tourney-page .ogt-navlinks a{color:var(--mx-ink);font-weight:800}
html.retro-pop body.tourney-page :is(.ogt-navlinks a:hover,.ogt-navlinks a.is-active){border-color:var(--mx-ink);background:var(--mx-white);color:var(--mx-ink)}
/* botões: papel couché; o principal vermelho; o perigo vermelho-escuro com creme */
html.retro-pop body.tourney-page .ogt-btn{display:inline-flex;align-items:center;justify-content:center}
html.retro-pop body.tourney-page :is(.ogt-auth button,.ogt-btn,.ogt-winner-btn,.ogt-test-link){border:3px solid var(--mx-ink);border-radius:3px;background:var(--rp-red);color:var(--mx-ink);box-shadow:4px 5px 0 var(--mx-ink)}
html.retro-pop body.tourney-page :is(.ogt-btn.ghost,.ogt-btn.flat,.ogt-auth .ogt-ghost-auth,.ogt-winner-btn,.ogt-test-link.alt){background:var(--mx-white);color:var(--mx-ink);border-color:var(--mx-ink)}
html.retro-pop body.tourney-page :is(.ogt-btn.danger,.ogt-winner-btn.danger-mini){background:var(--rp-red-deep);color:var(--mx-white);border-color:var(--mx-ink)}
html.retro-pop body.tourney-page :is(.ogt-btn,.ogt-auth button,.ogt-winner-btn):hover:not(:disabled){transform:translate(-2px,-3px);box-shadow:6px 7px 0 var(--mx-ink)}
/* placas: papel recortado com sombra dura */
html.retro-pop body.tourney-page :is(.ogt-command-main,.ogt-command-media,.ogt-sidebar,.ogt-stage){border:4px solid var(--mx-ink);border-radius:0;background:var(--mx-white);box-shadow:7px 8px 0 var(--mx-ink)}
html.retro-pop body.tourney-page .ogt-command-main::before{background:radial-gradient(circle,rgba(23,19,31,.13) 1.3px,transparent 1.5px) 0 0/10px 10px}
html.retro-pop body.tourney-page .ogt-command h1{color:var(--mx-ink);font-family:var(--rp-ff-display);text-shadow:4px 4px 0 var(--rp-yellow)}
html.retro-pop body.tourney-page .ogt-stat{border:3px solid var(--mx-ink);border-radius:0;background:var(--mx-white) linear-gradient(90deg,var(--mx-ink) 0 10px,transparent 10px) no-repeat;box-shadow:4px 5px 0 var(--mx-ink);color:var(--mx-ink)}
html.retro-pop body.tourney-page .ogt-stat:nth-child(2){background-color:var(--rp-yellow)}
html.retro-pop body.tourney-page .ogt-stat :is(b,strong){color:var(--mx-ink);font-family:var(--rp-ff-mono)}
html.retro-pop body.tourney-page .ogt-stat span{color:var(--rp-ink-2)}
html.retro-pop body.tourney-page .ogt-prize-panel{border:3px solid var(--mx-ink);border-radius:0;background:var(--rp-yellow);box-shadow:4px 5px 0 var(--mx-ink)}
html.retro-pop body.tourney-page .ogt-prize-panel span:last-child{border:2px solid var(--mx-ink);background:var(--rp-lime);color:var(--mx-ink)}
html.retro-pop body.tourney-page :is(.ogt-prize-panel small,.ogt-media-card small,.ogt-tournament-meta,.ogt-empty,.ogt-stage-head p,.ogt-fact small,.ogt-status){color:var(--rp-ink-2)}
/* capas: moldura de papel (a imagem não é tocada); a legenda sobre a capa continua ilha escura legível */
html.retro-pop body.tourney-page .ogt-media-card{border:3px solid var(--mx-ink);border-radius:0;background:var(--mx-ink);box-shadow:4px 5px 0 var(--mx-ink)}
html.retro-pop body.tourney-page .ogt-media-card span{background:var(--mx-ink);color:var(--mx-cream)}
html.retro-pop body.tourney-page :is(.ogt-card-cover,.ogt-game-panel img,.ogt-avatar,.ogt-preset-card img){border-color:var(--mx-ink);background:var(--rp-paper-3)}
html.retro-pop body.tourney-page .ogt-filter{border:2px solid var(--mx-ink);border-radius:0;background:var(--mx-white);color:var(--mx-ink);font-weight:800}
html.retro-pop body.tourney-page .ogt-filter.is-active{background:var(--rp-cyan);color:var(--mx-ink);border-color:var(--mx-ink)}
html.retro-pop body.tourney-page .ogt-tournament-card{border:3px solid var(--mx-ink);border-radius:0;background:var(--rp-paper);color:var(--mx-ink);box-shadow:3px 4px 0 var(--mx-ink)}
html.retro-pop body.tourney-page :is(.ogt-tournament-card:hover,.ogt-tournament-card.is-selected){border-color:var(--mx-ink);background:var(--mx-white);box-shadow:6px 7px 0 var(--mx-ink)}
html.retro-pop body.tourney-page .ogt-tournament-card.is-preview{background:var(--rp-paper-2)}
html.retro-pop body.tourney-page .ogt-chip{border:2px solid var(--mx-ink);border-radius:0;background:var(--mx-white);color:var(--mx-ink)}
html.retro-pop body.tourney-page .ogt-chip.open{background:var(--rp-lime)}
html.retro-pop body.tourney-page .ogt-chip.active{background:var(--rp-cyan)}
html.retro-pop body.tourney-page .ogt-chip.completed{background:var(--rp-yellow)}
html.retro-pop body.tourney-page .ogt-chip.pending{background:var(--rp-pink)}
html.retro-pop body.tourney-page .ogt-chip.preview{background:var(--rp-paper-3)}
html.retro-pop body.tourney-page .ogt-chip.cancelled{background:var(--rp-red-deep);color:var(--mx-white);text-decoration:line-through}
html.retro-pop body.tourney-page :is(.ogt-fact,.ogt-empty,.ogt-champion-panel,.ogt-match,.ogt-approval-card,.ogt-request-card,.ogt-seed-card,.ogt-create-card,.ogt-entry-requests,.ogt-test-panel,.ogtc-match-room){border-color:var(--mx-ink);background:var(--rp-paper);color:var(--mx-ink)}
html.retro-pop body.tourney-page .ogt-champion-panel{background:var(--rp-yellow)}
html.retro-pop body.tourney-page :is(.ogt-field input,.ogt-field select,.ogt-field textarea,.ogt-seed-input,.ogt-pair-card select,.ogt-game-picker select){border:3px solid var(--mx-ink);border-radius:3px;background:var(--rp-paper);color:var(--mx-ink)}
html.retro-pop body.tourney-page .ogt-toast{border:3px solid var(--mx-ink);border-radius:0;background:var(--mx-white);color:var(--mx-ink);box-shadow:5px 6px 0 var(--mx-ink)}
html.retro-pop body.tourney-page .ogt-section-title{color:var(--mx-ink);font-family:var(--rp-ff-display);text-transform:uppercase}
html.retro-pop body.tourney-page .ogt-media-card span,
html.retro-pop body.tourney-page .ogt-card-title{font-family:var(--rp-ff-body);font-weight:800}


/* ═══════════ 4 · pokemon-lobby.html — CALMA ═══════════
   A ponte põe papel e tinta via --nx-*; aqui só os fundos escritos na mão, o acento usado como texto e as
   MÉTRICAS: o palco (.stage > #emu) fica abaixo de .hdr e .roombar, cuja altura depende da fonte. A ponte troca
   --nx-ui/--nx-disp e o núcleo troca fonte/tamanho/entrelinha do body; ambos voltam ao original aqui. */
html.retro-pop[data-hud-family="misc"] body:has(#emu){--nx-ui:'Rajdhani',sans-serif;--nx-disp:'Orbitron',sans-serif;font-family:'Rajdhani',sans-serif;font-size:16px;line-height:normal}
html.retro-pop body:has(#emu)::before,html.retro-pop body:has(#emu)::after{background-image:none;filter:none}
html.retro-pop body:has(#emu) .hdr h1{background:none;-webkit-background-clip:border-box;background-clip:border-box;color:var(--mx-ink);text-shadow:2px 2px 0 var(--rp-yellow)}
html.retro-pop body:has(#emu) :is(.card,.panel){border-color:var(--mx-ink);background:var(--mx-white);box-shadow:5px 6px 0 var(--mx-ink);-webkit-backdrop-filter:none;backdrop-filter:none}
html.retro-pop body:has(#emu) :is(#landing h2,.panel h3){color:var(--rp-red-deep)}
html.retro-pop body:has(#emu) :is(input,select){border-color:var(--mx-ink);background:var(--rp-paper);color:var(--mx-ink)}
html.retro-pop body:has(#emu) .btn{background:var(--rp-red);color:var(--mx-ink);box-shadow:3px 4px 0 var(--mx-ink)}
html.retro-pop body:has(#emu) .btn.ghost{background:var(--mx-white);color:var(--mx-ink);border-color:var(--mx-ink)}
html.retro-pop body:has(#emu) .btn.violet{background:var(--rp-cyan);color:var(--mx-ink)}
html.retro-pop body:has(#emu) :is(.codechip,.mechip,.roomitem){border-color:var(--mx-ink);background:var(--rp-paper)}
html.retro-pop body:has(#emu) .codechip .code,
html.retro-pop body:has(#emu) .roomitem .roomcode{color:var(--mx-ink);text-shadow:2px 2px 0 var(--rp-lime)}
html.retro-pop body:has(#emu) .copybtn{border-color:var(--mx-ink);background:var(--mx-white);color:var(--mx-ink)}
html.retro-pop body:has(#emu) :is(.msg .who,.steps > div > b){color:var(--rp-cyan-deep)}
html.retro-pop body:has(#emu) .msg.me .who{color:var(--rp-red-deep)}
html.retro-pop body:has(#emu) .steps > div > b{border-color:var(--mx-ink);background:var(--rp-yellow);color:var(--mx-ink)}
html.retro-pop body:has(#emu) :is(.players .host,#room-status,#copy-status){color:var(--mx-ink);border-color:var(--mx-ink)}
html.retro-pop body:has(#emu) .err{color:var(--rp-red-deep)}
/* Rajdhani tem traço fino: legenda em tinta-2, não tinta-3, para o glifo segurar o contraste */
html.retro-pop body:has(#emu) :is(.hint,.divider,label,.roomempty,.msg.sys,.roomitem small,.codechip .lbl){color:var(--rp-ink-2)}
html.retro-pop body:has(#emu) .dot.on{background:var(--rp-lime);box-shadow:0 0 0 2px var(--mx-ink)}
/* cable-voice.css: a lista de voz é escrita em azul-noite na mão */
html.retro-pop :is(.ccv-member,.ccv-field select){background:var(--rp-paper);color:var(--mx-ink);border-color:var(--mx-ink)}
html.retro-pop :is(.ccv-member.is-speaking,#ccv-push.is-speaking){background:var(--rp-lime);color:var(--mx-ink)}


/* ═══════════ 5 · network-room.html — CALMA · PÔSTER ESCURO, SÓ COR ═══════════
   A sala inteira é ilha escura (mapa-lobby-live.md A.4, C.2): tokens --rp-* e --mp-* redeclarados escuros no
   contêiner e nos diálogos que o JS anexa ao body (.ds-settings: sem isso, texto escuro sobre o diálogo escuro).
   Só color, background, border-color e box-shadow. #native-stage e tudo dentro dele, e .ds-controls, intocados. */
html.retro-pop body :is(.mp-game-container,.mp-share-overlay,.mp-control-settings-overlay,.mp-voice-settings-overlay,.mp-mic-help-overlay,.mpc-overlay,.mp-cover-dialog,#nds-performance-panel,dialog.ds-settings){
  --rp-paper:#17131f; --rp-paper-2:#221c2c; --rp-paper-3:#2e2639; --rp-paper-w:#17131f;
  --rp-ink:#f5ebd7; --rp-ink-2:#dccfb2; --rp-ink-3:#b5a68c; --rp-ink-soft:rgba(245,235,215,.14);
  --mp-bg:#17131f; --mp-panel:#221c2c; --mp-panel-2:#2e2639; --mp-line:rgba(245,235,215,.2); --mp-line-strong:#f5ebd7;
  --mp-text:#f5ebd7; --mp-muted:#dccfb2; --mp-cyan:#00b8d9; --mp-blue:#ffd23f; --mp-lime:#b7e62e;
  --mp-amber:#ffd23f; --mp-danger:#ff5d8f; --mp-shadow:5px 6px 0 #000;
  --ds-ink:#f5ebd7; --ds-dim:#dccfb2; --ds-edge:rgba(245,235,215,.2); --ds-yellow:#ffd23f; --ds-orange:#ff7a1a;
  color-scheme:dark;
}
/* o body e o <html> ficam tinta (multiplayer-game.css:24-31 lê --mp-bg, que a ponte faz creme); as métricas do
   texto voltam às da página (o núcleo as troca no body e o dock decide a altura do palco) */
html.retro-pop[data-hud-family="misc"]:has(.mp-game-container){background-color:#17131f;scrollbar-color:#f5ebd7 #221c2c}
html.retro-pop[data-hud-family="misc"] body:has(.mp-game-container){background:#17131f!important;color:#f5ebd7!important;font-size:16px;line-height:normal}
html.retro-pop body .mp-game-container.mp-arena-v6{background:radial-gradient(60% 45% at 0 0,rgba(255,210,63,.07),transparent 70%),#17131f;color:#f5ebd7}
html.retro-pop body .mp-game-container::before{background-image:none}
/* trilhos e painéis: tinta clara, filete creme e sombra dura de papel (sem desfoque) */
html.retro-pop body .mp-arena-v6 > .mp-left-rail,
html.retro-pop body .mp-arena-v6 :is(.mp-players-section,.mp-room-chat,.mp-voice-channel,.mp-network-guide,.mp-action-dock,.mp-header){border-color:var(--mx-line);border-top-color:var(--rp-yellow);background:#221c2c;box-shadow:var(--mx-hard)}
html.retro-pop body .mp-arena-v6 > .mp-left-rail{border-top-color:var(--rp-yellow);box-shadow:inset 4px 0 var(--rp-yellow),var(--mx-hard)}
html.retro-pop body .mp-arena-v6 :is(.mp-main-content,.mp-right-rail){background:transparent}
html.retro-pop body .mp-arena-v6 :is(.mp-game-cover,.mp-room-info,.mp-network-card,.mp-game-info){border-color:var(--mx-line);background:#17131f}
html.retro-pop body .mp-arena-v6 > .mp-left-rail .mp-game-cover{border-color:var(--mx-line);background:#17131f}
html.retro-pop body .mp-room-brand span{color:var(--mx-cream2)}
html.retro-pop body .mp-arena-v6 > .mp-left-rail .mp-room-brand strong{color:#17131f;background:var(--rp-yellow);box-shadow:3px 3px 0 #000}
html.retro-pop body .mp-arena-v6 > .mp-left-rail .mp-game-title,
html.retro-pop body .mp-mode-title{color:#f5ebd7}
html.retro-pop body :is(.mp-game-system,.mp-network-card small,.mp-network-card span,.mp-stat-label,.mp-game-volume,.mp-voice-now,.mp-voice-heading small,.mp-voice-member-copy small){color:var(--mx-cream2)}
html.retro-pop body .mp-game-system > span:first-child{color:var(--rp-yellow)}
html.retro-pop body .mp-network-card strong{color:#f5ebd7}
html.retro-pop body #game-cover-placeholder{color:var(--rp-yellow)}
/* status da rede: lima (ao vivo) e rosa no erro — o !important da página (network-room.html:19-21) obriga */
html.retro-pop body .mp-network-status{color:var(--rp-lime)!important}
html.retro-pop body .mp-network-status.is-error{color:var(--rp-pink)!important}
html.retro-pop body :is(.mp-mode-badge,.mp-stat,.mp-streaming-indicator){border-color:var(--mx-line);background:#17131f}
html.retro-pop body .mp-stat-value{color:var(--rp-yellow)}
/* botões do dock: chapa de tinta com etiqueta amarela; o principal amarelo (convite), o perigo vermelho */
html.retro-pop body .mp-arena-v6 .mp-btn-secondary{border-color:var(--mx-line);background:#2e2639;color:#f5ebd7;box-shadow:3px 4px 0 #000}
html.retro-pop body .mp-arena-v6 .mp-btn-secondary:hover:not(:disabled){border-color:#f5ebd7;background:#3b3348}
html.retro-pop body .mp-btn span:first-child{background:var(--rp-yellow);color:#17131f}
html.retro-pop body .mp-arena-v6 :is(.mp-btn-primary,.mp-chat-send){border-color:#f5ebd7;background:var(--rp-yellow);color:#17131f;box-shadow:3px 4px 0 #000}
html.retro-pop body .mp-arena-v6 :is(.mp-btn-primary,.mp-chat-send):hover:not(:disabled){background:#fff1a8}
html.retro-pop body .mp-arena-v6 .mp-btn-primary span{color:#17131f;background:transparent}
html.retro-pop body .mp-arena-v6 .mp-btn-danger{border-color:#f5ebd7;background:var(--rp-red-deep);color:#fffaf0;box-shadow:3px 4px 0 #000}
html.retro-pop body .mp-arena-v6 .mp-btn-danger:hover:not(:disabled){border-color:#f5ebd7;background:#e01b3c}
html.retro-pop body .mp-arena-v6 .mp-btn-danger span:first-child{background:#fffaf0;color:#c80f2e}
html.retro-pop body .mp-native-game-action{border-color:var(--rp-lime)!important;color:#f5ebd7!important;background:#2e2639!important}
html.retro-pop body .mp-native-mode-pill{color:var(--rp-lime)!important;border-color:rgba(183,230,46,.5);background:#17131f}
html.retro-pop body .mp-game-volume input,html.retro-pop body .mp-voice-field input,html.retro-pop body .mp-voice-toggle input{accent-color:var(--rp-yellow)}
/* membros, chat e voz */
html.retro-pop body .mp-arena-v6 .mp-section-title{color:var(--rp-yellow)}
html.retro-pop body .mp-section-title::before{background:var(--rp-yellow)}
html.retro-pop body .mp-arena-v6 :is(.mp-player-card,.mp-chat-message){border-color:var(--mx-line);background:#17131f}
html.retro-pop body .mp-empty-slot{border-color:var(--mx-line);background:#17131f;color:var(--mx-cream2)}
html.retro-pop body .mp-player-avatar{background:var(--rp-cyan);color:#17131f}
html.retro-pop body .mp-arena-v6 .mp-player-name{color:#f5ebd7}
html.retro-pop body .mp-player-badge{color:#17131f;background:var(--rp-yellow);border-color:#17131f}
html.retro-pop body .mp-player-status-dot{background:var(--rp-lime);box-shadow:0 0 0 2px #17131f}
html.retro-pop body .mp-arena-v6 .mp-chat-messages{background:#17131f;border-color:var(--mx-line)}
html.retro-pop body .mp-chat-empty{color:var(--mx-cream2)}
html.retro-pop body .mp-arena-v6 .mp-chat-input-row{background:#17131f}
html.retro-pop body :is(.mp-chat-input,.mp-share-input){border-color:var(--mx-line);background:#2e2639;color:#f5ebd7}
html.retro-pop body :is(.mp-chat-input,.mp-share-input)::placeholder{color:var(--mx-cream3)}
html.retro-pop body .mp-chat-status{color:var(--rp-yellow)}
html.retro-pop body .mp-voice-heading-icon{background:var(--rp-yellow);color:#17131f}
html.retro-pop body .mp-voice-heading strong{color:#f5ebd7}
html.retro-pop body .mp-voice-live-dot{background:var(--rp-lime)}
html.retro-pop body .mp-voice-now{background:#17131f}
html.retro-pop body .mp-voice-now.is-active{color:var(--rp-lime)}
html.retro-pop body :is(.mp-voice-member,.mp-voice-field,.mp-voice-toggle,.mp-binding-item,.mp-binding-row,.mp-controller-status,.mp-mapping-info-bar){border-color:var(--mx-line);background:#17131f}
html.retro-pop body .mp-voice-member.is-speaking{border-color:var(--rp-lime);color:var(--rp-lime)}
html.retro-pop body .mp-voice-avatar{background:#2e2639;color:#f5ebd7}
html.retro-pop body :is(.mp-voice-control.is-active,.mp-arena-v6 .mp-voice-control.is-active){color:var(--rp-lime)}
html.retro-pop body .mp-voice-control.is-active#mp-deafen-btn{color:var(--rp-pink)}
/* guia do DS (details) */
html.retro-pop body .mp-network-guide{color:var(--mx-cream2)}
html.retro-pop body .mp-network-guide :is(summary,strong,label){color:#f5ebd7}
html.retro-pop body .mp-network-limitation{color:var(--rp-yellow)}
/* janelas da sala (convite, controles, voz, capa, ajuda do microfone, MPControls) */
html.retro-pop body :is(.mp-share-overlay,.mp-control-settings-overlay,.mp-voice-settings-overlay,.mp-mic-help-overlay,.mpc-overlay){background:rgba(23,19,31,.86)}
html.retro-pop body :is(.mp-share-modal,.mp-control-settings-modal,.mp-voice-settings-modal,.mp-cover-dialog,.mp-mic-help-modal,.mpc-overlay .mpc-modal){border-color:#f5ebd7;border-top-color:var(--rp-yellow);background:#221c2c;color:#f5ebd7;box-shadow:9px 10px 0 #000}
html.retro-pop body :is(.mp-share-title,.mp-control-settings-title h3,.mp-voice-settings-head h3,.mpc-overlay .mpc-title-copy h2,.mpc-overlay .mpc-controller-name,.mpc-overlay .mpc-group-title){color:var(--rp-yellow)}
html.retro-pop body :is(.mp-binding-btn,.mp-binding-clear,.mp-control-key,.mp-cover-dialog > button,.mp-mic-help-close,.mp-mic-help-actions button,.mp-voice-test button,.mp-voice-field select,.mpc-overlay .mpc-close,.mpc-overlay .mpc-row .mpc-row-value){border-color:var(--mx-line);background:#2e2639;color:#f5ebd7}
html.retro-pop body .mpc-overlay :is(.mpc-btn,.mpc-rescan,.mpc-audio-mute){border-color:var(--mx-line);background:#2e2639;color:#f5ebd7}
html.retro-pop body .mpc-overlay .mpc-tab{border-color:var(--mx-line);background:#17131f;color:var(--mx-cream2)}
html.retro-pop body .mpc-overlay .mpc-tab.active{border-color:var(--rp-yellow);background:var(--rp-yellow);color:#17131f;box-shadow:none}
html.retro-pop body .mpc-overlay :is(.mpc-status,.mpc-controller-layout,.mpc-controller-summary,.mpc-group,.mpc-audio-card,.mpc-audio-row,.mpc-row,.mpc-footer,.mpc-controller-pressed){border-color:var(--mx-line);background:#17131f}
html.retro-pop body .mpc-overlay .mpc-controller-stage{border-color:var(--mx-line);background:#17131f}
html.retro-pop body .mpc-overlay :is(.mpc-subtitle,.mpc-hint,.mpc-status-sub,.mpc-controller-help,.mpc-audio-sub,.mpc-audio-note,.mpc-audio-value){color:var(--mx-cream2)}
html.retro-pop body .mpc-overlay :is(.mpc-role-badge,.mpc-controller-role){border-color:var(--mx-line);background:#17131f;color:var(--rp-yellow)}
html.retro-pop body .mpc-overlay :is(.mpc-controller-live,.mpc-role.active){color:var(--rp-lime);border-color:rgba(183,230,46,.5);background:#17131f}
html.retro-pop body .mpc-overlay .mpc-icon,
html.retro-pop body .mpc-overlay .mpc-audio-icon{background:var(--rp-yellow);color:#17131f}
/* painel de FPS e diálogo de configurações do DS (anexados ao body, fora do contêiner): ilha escura */
html.retro-pop body #nds-performance-panel{border-color:#f5ebd7!important;border-top-color:var(--rp-yellow)!important;background:#221c2c!important;color:#dccfb2!important;box-shadow:6px 7px 0 #000!important}
html.retro-pop body #nds-performance-panel > strong{color:var(--rp-yellow)}
html.retro-pop body #nds-performance-panel button{border-color:var(--mx-line)!important;background:#2e2639!important;color:#f5ebd7!important}
html.retro-pop body dialog.ds-settings{border-color:#f5ebd7;border-top-color:var(--rp-yellow);background:#221c2c;color:#f5ebd7;box-shadow:10px 12px 0 #000}
html.retro-pop body dialog.ds-settings::backdrop{background:rgba(23,19,31,.86)}
html.retro-pop body dialog.ds-settings :is(button,select){border-color:var(--mx-line);background:#2e2639;color:#f5ebd7}
html.retro-pop body dialog.ds-settings button:hover:not(:disabled){border-color:#f5ebd7;background:#3b3348;color:#fffaf0}
html.retro-pop body dialog.ds-settings button:disabled{background:#17131f;color:var(--mx-cream3)}
html.retro-pop body dialog.ds-settings :is(.ds-primary,#ds-settings-save){border-color:#f5ebd7;background:var(--rp-yellow);color:#17131f}
html.retro-pop body dialog.ds-settings option{background:#221c2c;color:#f5ebd7}
html.retro-pop body dialog.ds-settings .ds-settings-tabs button[aria-pressed="true"]{border-color:var(--rp-yellow);background:var(--rp-yellow);color:#17131f}
html.retro-pop body dialog.ds-settings :is(#ds-section-controls > label,#ds-device-status,.ds-advanced,.ds-map-image,.ds-mapping-table,.ds-input-test,.ds-capture,.ds-settings-footer){border-color:var(--mx-line);background:#17131f}
html.retro-pop body dialog.ds-settings .ds-map-heading{background:#2e2639;color:var(--rp-yellow)}
html.retro-pop body dialog.ds-settings .ds-map-row.is-active{background:#3b3348}
html.retro-pop body dialog.ds-settings .ds-map-row.is-active > b{color:var(--rp-lime)}
html.retro-pop body dialog.ds-settings .ds-hotspot{background:rgba(23,19,31,.9)!important;color:#f5ebd7;border-color:var(--rp-yellow)}
html.retro-pop body dialog.ds-settings .ds-hotspot:hover{background:var(--rp-yellow)!important;color:#17131f}
html.retro-pop body dialog.ds-settings :is(.ds-eyebrow,.ds-license){color:var(--mx-cream2)}
html.retro-pop body dialog.ds-settings .ds-settings-footer p{color:var(--rp-lime)}


/* ═══════════ 6 · cable-club.html — CALMA, CLASSE TROCADA ═══════════
   O boot (cable-club.html, setTheme) faz document.documentElement.className="theme-cgb" durante o parse: daqui
   em diante só [data-hud-family="misc"] identifica o tema. Nenhum token do núcleo existe — os usados estão aqui.
   A pele da página (cable-club.css) é toda em --nx-*: redeclarados em PÔSTER ESCURO do Retro Pop (o jogo pede
   entorno escuro). Fonte, tamanho e posição do HUD ficam os da página: --cc-top-safe (92px) reserva o espaço do
   HUD fixo e mede o canvas — fonte nova empurraria o HUD sobre a tela do jogo. #gb, #gb-screen-border, o canvas
   e o pad (#gb-controls, .gb-*) não recebem regra nenhuma. */
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"],
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] body{
  --nx-void:#17131f; --nx-deep:#221c2c; --nx-glass:rgba(34,28,44,.94); --nx-glass2:rgba(46,38,57,.9);
  --nx-stroke:rgba(245,235,215,.24); --nx-stroke2:rgba(245,235,215,.5);
  --nx-cyan:#ffd23f; --nx-violet:#00b8d9; --nx-magenta:#ff5d8f; --nx-lime:#b7e62e; --nx-amber:#ffd23f;
  --nx-txt:#f5ebd7; --nx-txt2:#dccfb2; --nx-txt3:#b5a68c;
  --rp-yellow:#ffd23f; --rp-red:#ff2e4d; --rp-lime:#b7e62e; --rp-cyan:#00b8d9;
  color-scheme:dark;
}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"]{background:#17131f;scrollbar-color:#f5ebd7 #221c2c}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] body{background:#17131f;color:#f5ebd7}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] body.cc::before{background:radial-gradient(48vw 40vw at 10% -10%,rgba(255,210,63,.1),transparent 62%),radial-gradient(40vw 36vw at 92% 104%,rgba(0,184,217,.09),transparent 64%)}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] body.cc::after{background-image:radial-gradient(circle,rgba(245,235,215,.07) 1.5px,transparent 1.7px);background-size:16px 16px}
/* antes do login: o aviso de status vira etiqueta de papel no meio do pôster (sem mexer no layout do GBmulator) */
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] body:not(.cc) #status{color:#f5ebd7;font:800 15px/1.4 'Figtree',system-ui,sans-serif;letter-spacing:.02em}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] #emscripten-status .spinner{border-color:#f5ebd7;border-top-color:#ffd23f;background-color:#ff2e4d;animation-play-state:paused}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] body.cc #emscripten-status{color:#dccfb2}
/* HUD do Cable Club: chapa de tinta com filete creme e sombra dura; botões amarelos; marca chapada */
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] #cc-hud{background:#221c2c;border-color:rgba(245,235,215,.3);box-shadow:5px 6px 0 #000}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] #cc-hud::before{box-shadow:none;background:#ffd23f}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] #cc-hud .cc-emblem{background:#ffd23f;border-color:#f5ebd7;box-shadow:3px 3px 0 #000;color:#17131f}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] #cc-hud .cc-brand strong{background:none;-webkit-background-clip:border-box;background-clip:border-box;-webkit-text-fill-color:#ffd23f;color:#ffd23f}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] :is(#cc-hud select,#cc-hud input,#cc-settings select,#cc-settings input,#cc-hud .cc-gamepick-btn,#cc-hud .cc-status){background:#17131f;color:#f5ebd7}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] #cc-hud button{color:#17131f;background:#ffd23f;box-shadow:3px 4px 0 #000}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] :is(#cc-hud button.cc-ghost,#cc-settings button.cc-secondary,#cc-settings .cc-icon-btn){background:#2e2639;color:#f5ebd7}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] #cc-hud #cc-connect{color:#17131f;background:#b7e62e;box-shadow:3px 4px 0 #000;animation-play-state:paused}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] :is(#cc-hud button.has-save,#cc-hud #cc-sound.cc-sound-on){border-color:#b7e62e;background:#3b4a12;color:#f5ebd7}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] #cc-hud .cc-gamemenu{background:#221c2c;box-shadow:6px 7px 0 #000}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] #cc-hud .cc-gm-item:hover{background:#2e2639}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] #cc-hud .cc-gm-item.on{background:#3b3348}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] #cc-hud .cc-gm-sys{color:#17131f}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] #cc-settings .cc-settings-backdrop{background:rgba(23,19,31,.8)}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] #cc-settings .cc-settings-dialog{background:#221c2c;border-color:#f5ebd7;box-shadow:9px 10px 0 #000;color:#f5ebd7}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] :is(#cc-settings .cc-keymap span,#cc-settings .ccpad-row){background:#17131f}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] #cc-settings .ccpad-row:hover{background:#2e2639}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] #cc-settings .ccpad-key{background:#ffd23f;color:#17131f}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] ::selection{background:#ffd23f;color:#17131f}
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] :focus-visible{outline:3px dashed #ffd23f;outline-offset:3px}
/* o mesmo portão de login de _shared.css (seção 8) não chega aqui, porque a classe sumiu: legibilidade mínima */
html:is(.theme-dmg,.theme-cgb,.theme-gba)[data-hud-family="misc"] #mobileAuthGate .authcard{border:5px solid #f5ebd7;border-radius:0;background:#fffaf0;color:#17131f;box-shadow:10px 12px 0 #000}


/* ═══════════ 7 · pages/pokemon-gb-link.html ═══════════ */
html.retro-pop body:has(.app-shell > .topbar) .topbar{border-bottom:5px solid var(--mx-ink);background-color:var(--rp-yellow);color:var(--mx-ink);-webkit-backdrop-filter:none;backdrop-filter:none}
html.retro-pop body:has(.app-shell > .topbar) .brand-mark{border:3px solid var(--mx-ink);border-radius:3px;background:var(--rp-red);color:var(--mx-ink);box-shadow:3px 3px 0 var(--mx-ink)}
html.retro-pop body:has(.app-shell > .topbar) .brand h1{font-family:var(--rp-ff-display);text-transform:uppercase;color:var(--mx-ink)}
html.retro-pop body:has(.app-shell > .topbar) .brand span{color:var(--rp-ink-2)}
html.retro-pop body:has(.app-shell > .topbar) .status-pill{border:2px solid var(--mx-ink);background:var(--mx-white);color:var(--mx-ink);font-weight:800}
html.retro-pop body:has(.app-shell > .topbar) .status-pill[data-type="ok"]{background:var(--rp-lime);color:var(--mx-ink)}
html.retro-pop body:has(.app-shell > .topbar) .status-pill[data-type="error"]{background:var(--rp-red-deep);color:var(--mx-white)}
html.retro-pop body:has(.app-shell > .topbar) .status-pill[data-type="wait"]{background:var(--rp-yellow);color:var(--mx-ink)}
html.retro-pop body:has(.app-shell > .topbar) :is(.panel,.party-panel,.trade-bar){border:4px solid var(--mx-ink);border-radius:0;background:var(--mx-white);box-shadow:6px 7px 0 var(--mx-ink)}
html.retro-pop body:has(.app-shell > .topbar) .panel-head{border-bottom:3px solid var(--mx-ink);background:var(--rp-paper-2)}
html.retro-pop body:has(.app-shell > .topbar) .panel-head h2{font-family:var(--rp-ff-display);text-transform:uppercase;color:var(--mx-ink)}
html.retro-pop body:has(.app-shell > .topbar) :is(.panel-head small,label,.note,.og-empty,.offer-empty,.member small,.room-card small,.room-card em,.poke-card small,.offer-card small){color:var(--rp-ink-2)}
html.retro-pop body:has(.app-shell > .topbar) :is(select,input[type="text"],input[type="file"]){border:3px solid var(--mx-ink);background:var(--rp-paper);color:var(--mx-ink)}
html.retro-pop body:has(.app-shell > .topbar) .game-card img{border:3px solid var(--mx-ink);background:var(--rp-paper-3);box-shadow:3px 4px 0 var(--mx-ink)}
html.retro-pop body:has(.app-shell > .topbar) .game-card a{color:var(--rp-cyan-deep);font-weight:800}
html.retro-pop body:has(.app-shell > .topbar) .btn{border:3px solid var(--mx-ink);border-radius:3px;background:var(--mx-white);color:var(--mx-ink);box-shadow:3px 4px 0 var(--mx-ink);font-family:var(--rp-ff-body);font-weight:800;text-transform:uppercase}
html.retro-pop body:has(.app-shell > .topbar) .btn.primary{background:var(--rp-red)}
html.retro-pop body:has(.app-shell > .topbar) .btn.blue{background:var(--rp-cyan)}
html.retro-pop body:has(.app-shell > .topbar) .btn.warn{background:var(--rp-yellow)}
html.retro-pop body:has(.app-shell > .topbar) .btn.danger{background:var(--rp-red-deep);color:var(--mx-white)}
/* desabilitado: papel cinza tracejado e legível, em vez da opacidade .45 da página */
html.retro-pop body:has(.app-shell > .topbar) .btn:disabled{opacity:1;border-style:dashed;background:var(--rp-paper-3);color:var(--rp-ink-2);box-shadow:none}
html.retro-pop body:has(.app-shell > .topbar) .btn:hover:not(:disabled){transform:translate(-2px,-2px);box-shadow:5px 6px 0 var(--mx-ink)}
html.retro-pop body:has(.app-shell > .topbar) .room-code{border:3px dashed var(--mx-ink);background:var(--rp-yellow);color:var(--mx-ink);font-family:var(--rp-ff-mono)}
html.retro-pop body:has(.app-shell > .topbar) :is(.member,.room-card,.poke-card,.offer-slot,.chat-line){border:2px solid var(--mx-ink);border-radius:0;background:var(--rp-paper);color:var(--mx-ink)}
html.retro-pop body:has(.app-shell > .topbar) .poke-card.selected{border-color:var(--mx-ink);background:var(--rp-yellow);box-shadow:3px 4px 0 var(--mx-ink)}
html.retro-pop body:has(.app-shell > .topbar) .chat-line b{color:var(--rp-cyan-deep)}
html.retro-pop body:has(.app-shell > .topbar) .toast{border:3px solid var(--mx-ink);border-radius:0;background:var(--mx-white);color:var(--mx-ink);box-shadow:5px 6px 0 var(--mx-ink)}


/* ═══════════ 8 · pages/pokemon-kanto.html ═══════════ */
/* tokens próprios da página que a ponte não conhece (:root inline :55-73) */
html.retro-pop body:has(#mainNav){
  --bg2:var(--rp-paper-2); --surface:var(--mx-white); --surface2:var(--rp-paper-2);
  --border:var(--rp-ink-soft); --border-h:var(--mx-ink); --text2:var(--rp-ink-2);
  --accent:#0076a8; --accent-glow:rgba(0,184,217,.18); --gold-glow:rgba(255,210,63,.3); --green-glow:rgba(183,230,46,.35);
}
html.retro-pop body:has(#mainNav) .nav{border-bottom:5px solid var(--mx-ink);background-color:var(--rp-yellow);-webkit-backdrop-filter:none;backdrop-filter:none}
html.retro-pop body:has(#mainNav) .nav.scrolled{background-color:var(--rp-yellow)}
html.retro-pop body:has(#mainNav) :is(.nav-logo,.nav-title){color:var(--mx-ink)}
html.retro-pop body:has(#mainNav) .nav-logo{font-family:var(--rp-ff-display)}
html.retro-pop body:has(#mainNav) .nav-dot.offline{background:var(--rp-ink-3)}
/* o mapa de fundo era escurecido a 25% (filter no próprio .hero-bg, que também apaga o ::after): vira papel com o mapa em marca-d'água */
html.retro-pop body:has(#mainNav) .hero-bg{filter:blur(2px) saturate(.8);opacity:.2}
html.retro-pop body:has(#mainNav) .hero-bg::after{background:linear-gradient(180deg,transparent 0%,rgba(245,235,215,.6) 70%,var(--rp-paper) 100%)}
html.retro-pop body:has(#mainNav) .hero-grid{background-image:radial-gradient(circle,rgba(23,19,31,.14) 1.3px,transparent 1.5px);background-size:12px 12px}
html.retro-pop body:has(#mainNav) :is(.hero h1 .grad,.stat-val){background:none;-webkit-background-clip:border-box;background-clip:border-box;-webkit-text-fill-color:currentColor;color:var(--rp-red-deep)}
html.retro-pop body:has(#mainNav) .hero h1{color:var(--mx-ink);text-shadow:3px 3px 0 var(--rp-yellow)}
html.retro-pop body:has(#mainNav) .hero-chip{border:2px solid var(--mx-ink);border-radius:0;background:var(--rp-cyan);color:var(--mx-ink);font-weight:800}
html.retro-pop body:has(#mainNav) :is(.nav-btn-ghost,.btn-secondary){border:3px solid var(--mx-ink);border-radius:3px;background:var(--mx-white);color:var(--mx-ink);box-shadow:3px 4px 0 var(--mx-ink)}
html.retro-pop body:has(#mainNav) :is(.showcase-card,.feat,.stat){border:3px solid var(--mx-ink);border-radius:0;box-shadow:5px 6px 0 var(--mx-ink)}
html.retro-pop body:has(#mainNav) .feat:nth-child(3n+2){background:var(--rp-yellow)}
html.retro-pop body:has(#mainNav) .feat-icon{border:2px solid var(--mx-ink);color:var(--mx-ink)}
html.retro-pop body:has(#mainNav) .feat-icon.gold{background:var(--rp-yellow);color:var(--mx-ink)}
html.retro-pop body:has(#mainNav) .feat-icon.green{background:var(--rp-lime);color:var(--mx-ink)}
html.retro-pop body:has(#mainNav) .feat-icon.red{background:var(--rp-red);color:var(--mx-ink)}
html.retro-pop body:has(#mainNav) .feat-icon:not(.gold):not(.green):not(.red){background:var(--rp-cyan)}
html.retro-pop body:has(#mainNav) .showcase-badge{border:2px solid var(--mx-ink);border-radius:0;background:var(--rp-cyan);color:var(--mx-ink)}
html.retro-pop body:has(#mainNav) .hero-tag{border:2px solid var(--mx-ink);border-radius:0;background:var(--mx-white);color:var(--mx-ink)}
html.retro-pop body:has(#mainNav) .preview-visual-label{border:2px solid var(--mx-ink);background:var(--mx-ink);color:var(--mx-cream)}
html.retro-pop body:has(#mainNav) :is(.nav-btn-play,.btn-primary){border:3px solid var(--mx-ink);border-radius:3px;background:var(--rp-red);color:var(--mx-ink);box-shadow:4px 5px 0 var(--mx-ink);animation:none}
html.retro-pop body:has(#mainNav) :is(.nav-btn-play,.btn-primary):hover{transform:translate(-2px,-3px);box-shadow:7px 8px 0 var(--mx-ink)}
html.retro-pop body:has(#mainNav) .footer a{color:var(--rp-yellow);font-weight:700}
html.retro-pop body:has(#mainNav) .footer a:hover{color:var(--mx-cream)}
/* o script pinta o texto de status em var(--green) no atributo style: lima no papel não passa */
html.retro-pop body:has(#mainNav) #serverText{color:var(--mx-ink)!important;font-weight:800}
html.retro-pop body:has(#mainNav) .nav-status{border:2px solid var(--mx-ink);background:var(--mx-white);color:var(--mx-ink)}
html.retro-pop body:has(#mainNav) .footer{border-top:5px solid var(--mx-ink);background:var(--mx-ink) var(--rp-pat-candy) left bottom/100% 10px no-repeat;color:var(--mx-cream2)}
/* laços infinitos da landing: o ponto "online" fica (lê --rp-play), o resto para (eram 5+) */
html.retro-pop body:has(#mainNav) :is(.showcase-scroll,.pokemon-scroll){animation-play-state:var(--rp-play)}
html.retro-pop body:has(#mainNav) .nav-dot.online{animation-play-state:var(--rp-play)}
html.retro-pop body:has(#mainNav) .poke-sprite{animation:none}


/* ═══════════ 9 · LARGURAS ═══════════ */
@media (max-width:767px){
  html.retro-pop body:has(.games-grid) .content-section,
  html.retro-pop body:has(.games-grid) h2,
  html.retro-pop .code.glitch + .title,
  html.retro-pop body:has(.games-grid) .subtitle{transform:none}
  html.retro-pop body:has(.games-grid) > header,
  html.retro-pop body.tourney-page .ogt-topbar{background-image:none}
  /* Archivo Black é mais larga que a Orbitron da página: "TOURNAMENT" estourava o cartão a 390px */
  html.retro-pop body.tourney-page .ogt-command h1{font-size:clamp(28px,9vw,44px);overflow-wrap:anywhere}
}
