:root{--navy:#001628;--ink:#06111d;--blue:#0788c5;--sky:#32a3e2;--gold:#fbcf56;--amber:#f8a236;--cream:#f9ecc2;--green:#358443;--panel:rgba(0,22,40,.94);--line:rgba(249,236,194,.2)}
*{box-sizing:border-box}html,body,#app{-webkit-text-size-adjust:100%;text-size-adjust:100%;margin:0;width:100%;height:100%;overflow:hidden;background:var(--navy);color:var(--cream);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}button{font:inherit;color:inherit}.hidden{display:none!important}.screen{width:100%;height:100%}
.start-screen{display:grid;place-items:center;background:radial-gradient(circle at 75% 25%,#095f86 0,transparent 32%),linear-gradient(140deg,#001628,#051d33 58%,#2b2741);padding:18px}.start-card{width:min(620px,94vw);background:rgba(0,14,27,.86);border:1px solid rgba(251,207,86,.45);box-shadow:0 24px 80px #0008;padding:34px;position:relative}.start-card:before{content:"";position:absolute;inset:8px;border:1px solid #ffffff12;pointer-events:none}.eyebrow{font-size:11px;letter-spacing:.18em;color:var(--gold);margin:0 0 10px}.start-card h1{font-size:clamp(42px,8vw,74px);line-height:.86;margin:0;letter-spacing:-.07em}.start-card h1 span{color:var(--gold)}.chapter{color:var(--sky);font-weight:800}.intro{line-height:1.6;color:#fffbdc}.start-card fieldset{border:0;padding:8px 0 18px;margin:0}.start-card legend{font-size:12px;color:#d8e7ee;margin-bottom:10px}.gender-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.gender-option{background:#061a2a;border:1px solid #ffffff24;display:flex;align-items:center;gap:12px;padding:10px 14px;cursor:pointer;text-align:left}.gender-avatar{width:76px;height:76px;background-size:1300% 100%;background-position:0 0;background-repeat:no-repeat;image-rendering:pixelated}.gender-avatar.male{background-image:url(./assets/sprites/player_male_atlas.png)}.gender-avatar.female{background-image:url(./assets/sprites/player_female_atlas.png)}.gender-option.selected{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold)}.primary{border:0;background:var(--gold);color:#07111c;padding:13px 18px;font-weight:900;cursor:pointer;box-shadow:0 4px 0 #9c6c1d}.primary:active{transform:translateY(2px);box-shadow:0 2px 0 #9c6c1d}.primary.small{padding:9px 13px}.fineprint{font-size:10px;color:#91a8b5;margin:16px 0 0}
.game-screen{position:relative;background:#020c15}.hud{position:absolute;z-index:30;left:12px;right:12px;top:12px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;background:rgba(0,17,31,.83);border:1px solid #ffffff1d;backdrop-filter:blur(9px);padding:8px 11px;box-shadow:0 8px 30px #0007}.brand{display:flex;flex-direction:column;font-size:10px;letter-spacing:.1em}.brand strong{color:var(--gold)}.scene-title{text-align:center;display:flex;gap:8px;align-items:baseline}.scene-title span{color:var(--sky);font-size:9px}.scene-title strong{font-size:12px}.hud nav{display:flex;justify-content:flex-end;gap:5px}.hud nav button{background:#ffffff0a;border:1px solid #ffffff1c;padding:7px 9px;cursor:pointer;font-size:10px}.hud kbd{color:var(--gold);font-size:9px}.viewport{position:absolute;inset:0;overflow:hidden;background:#020a11;cursor:crosshair}.world{--world-w:min(100vw,177.78vh);--foot:98.44%;position:absolute;left:50%;top:50%;width:var(--world-w);aspect-ratio:16/9;transform:translate(-50%,-50%);overflow:hidden;background:#020a11}.scene-bg{position:absolute;width:100%;height:100%;object-fit:cover;object-position:center;image-rendering:pixelated;user-select:none;pointer-events:none;filter:saturate(.95) contrast(1.03)}.world:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(#00162833,#00162800 20%,#00162800 70%,#00162844),radial-gradient(circle at 50% 50%,transparent 56%,#0008 115%)}.ambient-layer{position:absolute;inset:0;z-index:5}.entity-layer{position:absolute;inset:0}/* Ancoragem: o pe do sprite fica exatamente na coordenada da cena. 97,66% e a
   linha do chao MEDIDA na arte oficial (ver src/actors.js e scripts/qa_actors.mjs). */
.entity{position:absolute;transform:translate(-50%,calc(var(--foot)*-1));filter:drop-shadow(0 5px 3px #00162888);transition:filter .15s;background:transparent;border:0;padding:0;pointer-events:none}.entity .sprite{display:block;width:100%;height:100%;background-repeat:no-repeat;image-rendering:pixelated;pointer-events:none}.entity.near{filter:drop-shadow(0 0 7px #fbcf56) drop-shadow(0 5px 3px #00162888)}.entity-label{position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:9px;background:#001628d9;border:1px solid #ffffff1e;padding:3px 5px}
.player{position:absolute;background-repeat:no-repeat;background-size:1300% 100%;image-rendering:pixelated;filter:drop-shadow(0 6px 3px #001628a8);transform:translate(-50%,calc(var(--foot)*-1));transform-origin:50% 98.44%;pointer-events:none}.player.flip{transform:translate(-50%,calc(var(--foot)*-1)) scaleX(-1)}
/* z-index alto: os atores recebem z = 300+y*10, e sem isso o sprite do jogador
   era desenhado POR CIMA da bolha, cortando a segunda linha. nowrap porque no
   celular o mundo tem 390px de largura e o texto quebrava em cima da cabeca. */
.interaction-prompt{position:absolute;z-index:9000;transform:translate(-50%,-100%);white-space:nowrap;max-width:none;background:#06111deb;border:1px solid var(--gold);color:var(--cream);padding:6px 9px;font-size:10px;box-shadow:0 5px 12px #0007}.objective-card{position:absolute;left:14px;bottom:14px;z-index:25;width:min(390px,calc(100vw - 28px));background:rgba(0,17,31,.86);border-left:3px solid var(--gold);padding:10px 13px;backdrop-filter:blur(8px)}.objective-card span{display:block;color:var(--gold);font-size:9px;letter-spacing:.16em}.objective-card strong{font-size:11px;display:block;margin:3px 0}.objective-card small{font-size:8px;color:#9fb4bf}.toast{position:absolute;z-index:40;left:50%;top:88px;transform:translateX(-50%);background:#06111def;border:1px solid var(--gold);padding:8px 11px;font-size:10px;box-shadow:0 8px 24px #0008}
.dialog{position:fixed;z-index:90;left:50%;bottom:28px;transform:translateX(-50%);width:min(720px,calc(100vw - 28px));background:#051422;border:1px solid #fbcf5666;padding:17px 18px 14px;box-shadow:0 20px 50px #000c}.dialog-name{color:var(--gold);font-weight:900;font-size:11px}.dialog p{line-height:1.55;margin:8px 0 12px}.dialog-choices{display:flex;flex-direction:column;gap:7px;margin-bottom:10px}
.escolha{display:flex;align-items:center;gap:10px;text-align:left;width:100%;
  background:#0a2033;border:1px solid #ffffff22;color:#e8f1f6;padding:10px 12px;
  cursor:pointer;font:inherit;font-size:13px;line-height:1.4;transition:.12s}
.escolha:hover,.escolha:focus-visible{background:#10314b;border-color:var(--gold)}
.escolha kbd{flex:0 0 auto;background:#00131f;border:1px solid #ffffff2a;color:var(--gold);
  padding:2px 7px;font-size:11px}.dialog-choices button{background:#ffffff0b;border:1px solid #ffffff2c;padding:8px 10px;cursor:pointer}.dialog-choices button:hover{border-color:var(--gold)}
.panel-backdrop{position:fixed;z-index:70;inset:0;background:#0008}.side-panel{position:fixed;z-index:80;right:0;top:0;height:100%;width:min(470px,94vw);background:linear-gradient(160deg,#06192b,#00111f);border-left:1px solid #fbcf5644;padding:28px;overflow:auto;box-shadow:-30px 0 70px #0009}.side-panel h2{margin:0 0 8px;font-size:24px}.panel-help{color:#9eb3bf;font-size:11px;line-height:1.5}.panel-close{position:absolute;right:18px;top:15px;background:transparent;border:0;font-size:30px;cursor:pointer}.inventory-list{display:grid;gap:10px;margin-top:18px}.inventory-item{display:grid;grid-template-columns:92px 1fr;gap:13px;background:#ffffff08;border:1px solid #ffffff14;padding:10px}.inventory-item img{width:92px;height:76px;object-fit:cover;background:#001628;image-rendering:pixelated}.inventory-item h3{font-size:12px;color:var(--gold);margin:2px 0 6px}.inventory-item p{font-size:10px;line-height:1.45;color:#d6e3e8;margin:0}.empty-state{border:1px dashed #ffffff25;padding:18px;color:#8da4b0;font-size:11px}.notebook{background:linear-gradient(145deg,#172224,#2d2a20)}.note{padding:13px 10px;border-bottom:1px solid #f9ecc21c}.note time{font-size:9px;color:#c5a963}.note p{font-family:Georgia,serif;font-style:italic;line-height:1.55;margin:7px 0;color:#f7edce}.map-list{display:grid;gap:9px;margin-top:20px}.map-node{display:flex;justify-content:space-between;align-items:center;text-align:left;background:#ffffff08;border:1px solid #ffffff18;padding:12px;cursor:pointer}.map-node.locked{opacity:.35;cursor:not-allowed}.map-node.current{border-color:var(--gold)}.map-node span{font-size:10px;color:#9fb4bf}.mobile-controls{display:none}
.ambient{position:absolute;pointer-events:none}.ambient.paper{width:9px;height:5px;background:#f9ecc2aa;animation:drift 8s linear infinite}.ambient.bird{font-size:12px;color:#101820;animation:fly 12s linear infinite}@keyframes drift{0%{transform:translate(-10vw,0) rotate(0)}100%{transform:translate(110vw,18vh) rotate(420deg)}}@keyframes fly{0%{transform:translateX(-20vw)}100%{transform:translateX(120vw)}}
@media(max-width:760px){.hud{grid-template-columns:1fr 1fr;}.scene-title{display:none}.hud nav{grid-column:1/-1;justify-content:space-between}.hud nav button{flex:1}.brand{grid-column:1/-1}.objective-card{bottom:92px}.mobile-controls{display:grid;position:absolute;z-index:35;right:14px;bottom:14px;grid-template-columns:42px 42px 42px;grid-template-rows:42px 42px;gap:4px}.mobile-controls button{background:#001628cc;border:1px solid #ffffff3a}.mobile-controls button[data-dir="up"]{grid-column:2}.mobile-controls button[data-dir="left"]{grid-row:2;grid-column:1}.mobile-controls button[data-dir="down"]{grid-row:2;grid-column:2}.mobile-controls button[data-dir="right"]{grid-row:2;grid-column:3}.mobile-controls .interact{position:absolute;right:138px;bottom:0;width:52px;height:52px;border-radius:50%;border-color:var(--gold);color:var(--gold)}.start-card{padding:24px 18px}.dialog{bottom:88px}}

/* Cracha do interlocutor: recorte 64x64 da celula oficial, em escala INTEIRA
   (2x no desktop, 1x no celular). Escala fracionaria embaralha o pixel art. */
.dialog{--portrait:128px}
@media (max-width:760px){.dialog{--portrait:64px}}
.dialog-head{display:flex;gap:14px;align-items:flex-start}
.dialog-portrait{flex:0 0 auto;width:var(--portrait);height:var(--portrait);
  background-repeat:no-repeat;image-rendering:pixelated;border:1px solid #ffffff28;
  background-color:#04182b;box-shadow:inset 0 0 0 1px #00000055}
.dialog-portrait[data-mood="tense"]{border-color:#e0713f88}
.dialog-portrait[data-mood="alert"]{border-color:#fbcf5699}
.dialog-portrait[data-mood="warm"]{border-color:#7fc9a488}
.dialog-portrait[data-mood="amused"]{border-color:#9ab6e888}
.dialog-portrait.hidden{display:none}
.dialog-body{flex:1 1 auto;min-width:0}
/* Perguntar: ao lado do Continuar/Fechar. O ponto dourado diz que ha assunto
 * novo; sem ponto, so sobram os de rever (o resumo da Lia). */
.dialog-acoes{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.dialog-perguntar{position:relative;background:#ffffff0b;border:1px solid #fbcf5688;color:#fff6d8;padding:8px 12px;font-weight:800;cursor:pointer}
.dialog-perguntar:hover{border-color:var(--gold)}
.dialog-perguntar.hidden{display:none}
.dialog-perguntar kbd{margin-left:4px;font-size:10px;opacity:.7}
.dialog-perguntar.novo::after{content:"";position:absolute;top:-4px;right:-4px;width:9px;height:9px;border-radius:50%;background:var(--gold);box-shadow:0 0 6px var(--gold)}
.escolha.assunto.visto{opacity:.72}
.escolha.fecha{border-style:dashed}

/* PUZZLE DAS TRES PLACAS
   Os simbolos sao recortes da arte do arquivo de mapas (archive_room.webp),
   posicionados por CSS. Nenhum asset novo foi criado — ver VISUAL_LOCK.md. */
.puzzle{position:fixed;z-index:80;left:50%;top:50%;transform:translate(-50%,-50%);
  width:min(560px,94vw);max-height:92vh;overflow:auto;background:rgba(2,16,28,.97);
  border:1px solid rgba(251,207,86,.45);box-shadow:0 24px 80px #000b;padding:26px}
.puzzle.hidden{display:none}
.puzzle h2{margin:.1em 0 .4em}
.puzzle-status{min-height:2.6em;margin:6px 0 12px;color:#cfe0ea;line-height:1.5}
.puzzle-status.erro{color:#f0a37a}
.puzzle-status.certo{color:#9fdcb6}

/* FECHO DO CAPITULO */
.chapter-end{position:fixed;z-index:90;inset:0;display:grid;place-items:center;
  background:rgba(1,10,18,.86);backdrop-filter:blur(6px);padding:18px}
.chapter-end.hidden{display:none}
.chapter-card{width:min(520px,94vw);max-height:94vh;overflow:auto;text-align:center;
  background:rgba(0,14,27,.96);border:1px solid rgba(251,207,86,.5);
  box-shadow:0 24px 90px #000c;padding:30px 26px}
.chapter-card h2{margin:.1em 0;font-size:clamp(26px,5vw,36px)}
.chapter-sub{color:var(--sky);font-weight:800;letter-spacing:.14em;margin:.2em 0 1em}
.chapter-figure{width:86px;height:106px;margin:0 auto 14px;border:1px solid #fbcf5688;box-shadow:0 0 0 3px #fbcf5618;
  background:url(./assets/items/rio_fragment.png) center/contain no-repeat;
  image-rendering:pixelated;filter:drop-shadow(0 6px 10px #0009)}
.chapter-summary{color:#cfe0ea;line-height:1.6;margin:0 0 14px}
.chapter-next{color:#fffbdc;line-height:1.6;margin:0 0 20px}
.chapter-next strong{color:var(--gold)}

/* TOQUE: a bolha de interacao nao pode engolir o toque de andar.
   No celular o mundo e uma faixa de ~390x219, e a bolha ocupa uma fracao enorme
   dela. Medido: um toque no meio do mundo caia na bolha, disparava a interacao
   e mandava o jogador para outra cena sem querer. Em ponteiro grosso a bolha
   vira so aviso, e quem interage e o botao E dos controles. */
@media (pointer:coarse){
  .interaction-prompt{pointer-events:none}
}
.mobile-controls .interact.tem-alvo{background:var(--gold);color:#07111c;border-color:var(--gold)}
/* Troca de cena: escondido na hora, revelado com um fade curto quando o fundo
   novo esta pronto (game.js: revelarQuandoPronta). */
.world{transition:opacity .22s ease-out}
.world.trocando{opacity:0;transition:none}
/* Primeiro plano: pedacos da arte da cena redesenhados na frente dos atores
 * (ver renderFrente em game.js). Sem z-index na camada, para cada recorte
 * disputar a ordem com os atores pela profundidade. */
.frente-layer{position:absolute;inset:0;pointer-events:none}
.scene-bg.recorte{inset:0}
/* A vinheta da cena passa por cima de tudo que esta no mundo — sem isso, o
 * recorte de um coqueiro no canto sairia mais claro que o resto da arte. */
.world:after{z-index:8000}
/* Destaque no centro: objeto, pista ou lugar novo (ver destacar em game.js). */
.destaque{position:absolute;z-index:45;left:50%;top:36%;display:flex;width:max-content;align-items:center;gap:14px;max-width:min(460px,calc(100vw - 32px));padding:14px 22px 14px 18px;background:#06111df2;border:1px solid var(--gold);box-shadow:0 0 0 4px #fbcf5618,0 18px 44px #000b;pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.9);transition:opacity .25s ease-out,transform .3s cubic-bezier(.2,1.4,.4,1);visibility:hidden}
.destaque.on{opacity:1;transform:translate(-50%,-50%) scale(1);visibility:visible}
.destaque img{width:64px;height:64px;object-fit:contain;image-rendering:pixelated;flex:none;filter:drop-shadow(0 3px 4px #0008)}
.destaque small{display:block;color:var(--gold);font-size:10px;letter-spacing:.18em;font-weight:900}
.destaque strong{display:block;font-size:20px;line-height:1.25;margin-top:3px;color:var(--cream)}
.destaque p{margin:4px 0 0;font-size:11px;color:#a9bcc6}
@media(max-width:760px){.destaque{top:30%;padding:11px 16px}.destaque strong{font-size:15px}.destaque img{width:44px;height:44px}}
.objective-card.novo{animation:objetivo-novo 1.4s ease-out}
@keyframes objetivo-novo{0%{box-shadow:0 0 0 0 #fbcf56cc;background:#2a2410f0}100%{box-shadow:0 0 0 16px #fbcf5600}}
@media(prefers-reduced-motion:reduce){.destaque{transition:opacity .2s}.objective-card.novo{animation:none}}
/* Celular em pe: o mundo inteiro cabia numa faixa de ~220 px e a gente virava
 * formiga. Aqui o mundo ocupa a altura livre entre o topo e o cartao de
 * objetivo, fica mais largo que a tela, e uma camera segue o personagem
 * (ver moverCamera em game.js). */
@media (max-width:760px) and (orientation:portrait){
 .world{--world-h:calc(100svh - 304px);--world-w:calc(var(--world-h)*16/9);width:var(--world-w);height:var(--world-h);aspect-ratio:auto;left:0;top:100px;transform:translateX(var(--cam,0px))}
}
.toast{font-size:12px;line-height:1.45;max-width:min(560px,calc(100vw - 32px));text-align:center}
/* ABERTURA — titulo, menu, escolha de personagem, configuracoes. */
.abertura{width:min(620px,94vw);max-height:calc(100svh - 36px);overflow:auto;background:rgba(0,14,27,.86);border:1px solid rgba(251,207,86,.45);box-shadow:0 24px 80px #0008;padding:34px;position:relative}
.abertura:before{content:"";position:absolute;inset:8px;border:1px solid #ffffff12;pointer-events:none}
.abertura h1{font-size:clamp(46px,9vw,82px);line-height:.86;margin:0;letter-spacing:-.07em}
.abertura h1 span{color:var(--gold)}
.passo{margin-top:18px}
.passo[hidden]{display:none}
.aperte-enter{display:block;margin:26px auto 6px;background:none;border:0;color:var(--gold);font-weight:900;font-size:15px;letter-spacing:.24em;text-transform:uppercase;cursor:pointer;animation:piscar 1.4s ease-in-out infinite alternate}
@keyframes piscar{from{opacity:1}to{opacity:.25}}
.so-toque{display:none}
@media (pointer:coarse){.so-teclado{display:none}.so-toque{display:inline}}
.menu-principal{display:grid;gap:8px}
.menu-principal[hidden]{display:none}
.menu-item{display:flex;justify-content:flex-start;align-items:baseline;gap:12px;width:100%;text-align:left;background:#061a2a;border:1px solid #ffffff24;padding:13px 16px;font-size:15px;font-weight:800;cursor:pointer;letter-spacing:.04em}
.menu-item small{margin-left:auto;font-size:10px;font-weight:400;color:#91a8b5;letter-spacing:.08em}
.menu-item[hidden]{display:none}
.menu-item:hover,.menu-item:focus-visible{border-color:var(--gold);outline:none;background:#0b2438}
.menu-item:hover:before,.menu-item:focus-visible:before{content:"▶ ";color:var(--gold)}
.menu-item:focus-visible{box-shadow:inset 0 0 0 1px var(--gold)}
.passo-titulo{font-size:15px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin:0 0 12px}
.passo-acoes{display:flex;justify-content:space-between;gap:10px;margin-top:16px}
.menu-voltar{background:none;border:1px solid #ffffff30;padding:11px 16px;cursor:pointer;font-weight:700}
.menu-voltar:hover,.menu-voltar:focus-visible{border-color:var(--gold);outline:none}
.gender-option{flex-direction:column;align-items:center;gap:6px;padding:14px 10px 12px;text-align:center;font-weight:800;font-size:14px}
.gender-option:focus-visible{outline:none;border-color:var(--gold)}
.gender-avatar{width:168px;height:168px;background-size:2500% 100%}
.aviso-novo{font-size:11px;color:var(--amber);margin:12px 0 0}
.aviso-novo[hidden]{display:none}
.config-lista{display:grid;gap:12px}
.config-linha{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;border-bottom:1px solid #ffffff14;padding-bottom:12px}
.config-linha[hidden]{display:none}
.config-opcoes{display:flex;gap:6px;flex-wrap:wrap}
.config-opcoes button{background:#061a2a;border:1px solid #ffffff24;padding:8px 12px;cursor:pointer}
.config-opcoes button.on{border-color:var(--gold);color:var(--gold)}
.config-ajuda{margin:0;font-size:11px;color:#a9bcc6;line-height:1.5;flex-basis:100%}
.chapter-acoes{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
/* Em tela baixa o cartao rola; os botoes ficam presos embaixo, sempre inteiros. */
.chapter-card .chapter-acoes{position:sticky;bottom:-30px;margin:0 -26px -30px;padding:12px 26px 18px;
  padding-top:26px;background:linear-gradient(to bottom,rgba(0,14,27,0),rgba(0,14,27,.98) 18px)}
/* Pausa */
.pausa{position:fixed;inset:0;z-index:95;display:grid;place-items:center;background:#000a;padding:16px}
.pausa-card{width:min(380px,100%);background:#051422f5;border:1px solid #fbcf5666;padding:22px;box-shadow:0 20px 50px #000c}
.pausa-confirma p{line-height:1.5;margin:0 0 4px}
.pausa-confirma[hidden]{display:none}
/* Texto grande (Configuracoes) */
body.texto-grande .dialog p{font-size:17px}
body.texto-grande .escolha{font-size:15px}
body.texto-grande .toast{font-size:15px}
body.texto-grande .objective-card strong{font-size:14px}
body.texto-grande .note p{font-size:17px}
body.texto-grande .inventory-item p,body.texto-grande .panel-help{font-size:14px}
body.texto-grande .interaction-prompt{font-size:13px}
@media(prefers-reduced-motion:reduce){.aperte-enter{animation:none}}
@media(max-width:760px){.abertura{padding:24px 20px}.gender-avatar{width:120px;height:120px}}
@media (pointer:coarse){.hud kbd{display:none}}
/* Setas das passagens (renderSaidas em game.js): um chevron dourado no chao,
 * com contorno escuro para ler em qualquer piso, balancando devagar na direcao
 * da saida. Trancada: apagada e parada. */
.saida{position:absolute;width:1.7%;aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:none;opacity:.8;filter:drop-shadow(0 0 1.5px #000) drop-shadow(0 2px 2px #0009)}
.saida:before,.saida:after{content:"";position:absolute;inset:0;border:solid #fbcf56;border-width:0 .28vw .28vw 0;border-width:0 min(.28vw,.5vh) min(.28vw,.5vh) 0}
.saida:after{transform:translate(-45%,0);opacity:.55}
.seta-down:before,.seta-down:after{rotate:45deg}
.seta-down:after{transform:translate(0,-45%) rotate(0)}
.seta-down{animation:seta-y 1.6s ease-in-out infinite}
.seta-up:before,.seta-up:after{rotate:-135deg}
.seta-up:after{transform:translate(0,45%)}
.seta-up{animation:seta-y 1.6s ease-in-out infinite reverse}
.seta-right:before,.seta-right:after{rotate:-45deg}
.seta-right:after{transform:translate(-45%,0)}
.seta-right{animation:seta-x 1.6s ease-in-out infinite}
.seta-left:before,.seta-left:after{rotate:135deg}
.seta-left:after{transform:translate(45%,0)}
.seta-left{animation:seta-x 1.6s ease-in-out infinite reverse}
@keyframes seta-y{0%,100%{margin-top:0}50%{margin-top:.5%}}
@keyframes seta-x{0%,100%{margin-left:0}50%{margin-left:.5%}}
.saida.trancada{opacity:.28;animation:none}
@media(prefers-reduced-motion:reduce){.saida{animation:none}}
/* DESAFIO — provas no dialogo, frase das placas, relogio do sino, relatorio. */
.escolha-pergunta{margin:0 0 6px;font-size:11px;color:var(--gold);letter-spacing:.06em;flex-basis:100%}
.dialog-choices.provas{display:flex;flex-wrap:wrap;gap:6px;max-height:40vh;overflow:auto}
.dialog-choices.provas .escolha{flex:1 1 calc(50% - 6px);min-width:180px}
.escolha.prova{border-left:3px solid var(--gold)}
.frase-texto{font-family:Georgia,serif;font-style:italic;font-size:19px;line-height:1.6;text-align:center;margin:14px 0}
.lacuna{display:inline-block;min-width:80px;border-bottom:2px dashed #fbcf5688;color:#9fb4bf;font-style:normal;text-align:center}
.lacuna.cheia{color:var(--gold);border-bottom-style:solid}
/* a frase gravada no bronze: letras que sobraram + espacos apagados */
.frase-placa{background:linear-gradient(#5a3f1e,#3e2b14);border:2px solid #a0793a;box-shadow:inset 0 0 18px #0008;padding:6px 14px;margin:6px 0 12px}
.frase-placa .frase-texto{color:#f3dca6}
.lacuna.molde{letter-spacing:.12em;color:#e8c886;font-family:monospace;font-size:17px}
.lacuna.molde i{color:#8f7448;font-style:normal}
[data-conferir]:disabled{opacity:.4;cursor:default}
.frase-opcoes{display:grid;gap:8px;margin:8px 0}
.frase-linha{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.frase-linha small{width:70px;color:#91a8b5;font-size:10px}
.frase-palavra{background:#061a2a;border:1px solid #ffffff24;padding:7px 12px;cursor:pointer}
.frase-palavra.on{border-color:var(--gold);color:var(--gold)}
#frase-conferir:disabled{opacity:.4;cursor:default}
.relogio{position:absolute;z-index:41;top:100px;left:50%;transform:translateX(-50%);background:#06111def;border:1px solid var(--gold);color:var(--gold);padding:6px 12px;font-size:12px;font-weight:800;letter-spacing:.06em}
.relogio[hidden]{display:none}
.relogio.urgente{color:#ff9a6b;border-color:#ff9a6b;animation:piscar .6s ease-in-out infinite alternate}
.chapter-summary .estrelas{display:block;font-size:34px;color:var(--gold);letter-spacing:.1em}
.chapter-summary .estrelas i{font-style:normal;color:#ffffff22}
.nota-final{display:block;font-size:20px;margin:2px 0}
.chapter-summary small{color:#91a8b5;font-size:11px}
/* Sem rolagem propria: quem rola e o cartao, e a lista termina antes dos
 * botoes presos embaixo (antes ela passava por tras deles, cortada). */
.chapter-relatorio{list-style:none;padding:0;margin:10px auto 4px;max-width:440px;text-align:left;font-size:11px}
.chapter-relatorio li{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px solid #ffffff12}
.chapter-relatorio li.cheio b{color:#7fc9a4}.chapter-relatorio li.meio b{color:var(--gold)}.chapter-relatorio li.zero b{color:#ff9a6b}
.chapter-summary .estatisticas{display:block;margin-top:2px}
/* Relatorio em palavras: tres blocos curtos, sem bronca. */
.chapter-relato{max-width:440px;margin:6px auto 8px;text-align:left}
.chapter-relato section{margin:0 0 10px}
.chapter-relato h3{margin:0 0 4px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.chapter-relato p{margin:0 0 4px;font-size:12px;line-height:1.45;color:#e6eef3;padding-left:12px;position:relative}
.chapter-relato p::before{content:'·';position:absolute;left:2px;color:var(--gold)}
.chapter-relato .relato-abertas p{color:#b9cad4}
.chapter-pontos{max-width:440px;margin:0 auto 6px;text-align:left}
.chapter-pontos summary{cursor:pointer;font-size:11px;color:#a9bcc6;padding:8px 0;min-height:24px}
.chapter-card{max-height:calc(100svh - 24px);overflow:auto}
.dialog-choices.provas .escolha{width:auto;margin:0}
/* lista inteira de provas: compacta, duas colunas, rola se passar da altura */
.dialog-choices.provas{max-height:52vh;display:grid!important;grid-template-columns:1fr 1fr;gap:5px;align-content:start}
.dialog-choices.provas .escolha-pergunta{grid-column:1/-1}
.dialog-choices.provas .escolha{min-width:0;width:auto}
.dialog-choices.provas .escolha:not(.prova){grid-column:1/-1}
@media (max-width:520px){.dialog-choices.provas{grid-template-columns:1fr}}
.dialog-choices.provas .escolha.prova{padding:6px 10px;font-size:12px;line-height:1.3}
.dialog-choices.provas .escolha kbd{display:none}
/* ABERTURA COM A ARTE DO MENU (29/09) — em tela deitada, cada passo mostra a
 * tela desenhada (assets/ui/menu_*.webp) e os botoes do HTML viram areas
 * transparentes por cima dos botoes desenhados: teclado, toque e leitor de
 * tela continuam funcionando. Em tela em pe a arte nao cabe legivel; fica o
 * menu em HTML sobre a paisagem. As Opcoes nao tem arte: abrem num cartao. */
.capitulo-selo{color:var(--gold);font-weight:900;letter-spacing:.1em;font-size:12px;margin:0}
.capitulo-titulo{font-size:26px;margin:6px 0 10px;color:var(--cream)}
.capitulo-passo{border-top:1px solid #fbcf5644;padding-top:10px;font-weight:800}
.capitulo-passo small{display:block;color:var(--gold);font-size:10px;letter-spacing:.2em;font-weight:400;margin-bottom:4px}
.menu-item[disabled]{opacity:.4;cursor:default}
.menu-item[disabled]:before{content:none}
/* Em tela em pe (celular, painel estreito) a arte inteira ficaria minuscula:
 * mostra-se so o lado esquerdo do desenho, onde estao titulo, texto e botoes
 * (--f = fracao da largura). A escolha de personagem usa a arte inteira. */
.start-screen{--f:1;--ar:1.7768}
@media (max-aspect-ratio:5/4){
 .start-screen[data-passo-atual="titulo"],.start-screen[data-passo-atual="menu"],.start-screen[data-passo-atual="config"],.start-screen[data-passo-atual="loja"],.start-screen[data-passo-atual="confirmar-novo"],.start-screen[data-passo-atual="capitulo"]{--f:.55;--ar:.9772}
}
 .start-screen{background:#01060c;padding:0}
 .abertura{width:min(100vw,calc(100svh * var(--ar)));max-height:none;aspect-ratio:var(--ar);padding:0;border:0;box-shadow:none;overflow:hidden;
  background:#01060c left top/calc(100% / var(--f)) 100% no-repeat;font-size:calc(min(100vw,calc(100svh * var(--ar)))/100 / var(--f))}
 .abertura:before{content:none}
 .start-screen[data-passo-atual="titulo"] .abertura{background-image:url(./assets/ui/menu_titulo.webp)}
 .start-screen[data-passo-atual="menu"] .abertura,.start-screen[data-passo-atual="config"] .abertura,.start-screen[data-passo-atual="loja"] .abertura,.start-screen[data-passo-atual="confirmar-novo"] .abertura{background-image:url(./assets/ui/menu_principal.webp)}
 .start-screen[data-passo-atual="personagem"] .abertura{background-image:url(./assets/ui/menu_personagem.webp)}
 .start-screen[data-passo-atual="capitulo"] .abertura{background-image:url(./assets/ui/menu_capitulo.webp)}
 .abertura-marca,.abertura .fineprint,.abertura .intro,.abertura .passo-titulo,.abertura .capitulo-selo,.abertura .capitulo-titulo,.abertura .capitulo-passo,.abertura .gender-avatar{display:none}
 .abertura .passo{position:static;margin:0}
 /* botao sobre botao desenhado: transparente, so o foco aparece */
 .abertura .passo:not([data-passo="config"]):not(.cartao-passo) button{position:absolute;margin:0;padding:0;background:transparent;border:0;box-shadow:none;color:transparent;
  border-radius:.4em;transition:box-shadow .15s,background .15s;animation:none;cursor:pointer}
 .abertura .passo:not([data-passo="config"]):not(.cartao-passo) button *{visibility:hidden}
 .abertura .passo:not([data-passo="config"]):not(.cartao-passo) button:hover,.abertura .passo:not([data-passo="config"]):not(.cartao-passo) button:focus-visible{outline:none;
  box-shadow:0 0 0 .25em #fbcf56,0 0 1.6em .3em #fbcf5699;background:#fbcf5614}
 .abertura .menu-item:before{content:none!important}
 /* onde o save parou: etiqueta ao lado do botao, nao por cima do texto desenhado */
 .abertura .menu-item small#continuar-onde{visibility:visible;position:absolute;left:calc(100% + .8em);top:50%;transform:translateY(-50%);white-space:nowrap;
  color:#fbcf56;background:#01060cdd;border:1px solid #fbcf5655;padding:.35em .7em;font-size:1.1em;letter-spacing:.04em}
 .abertura .menu-item[disabled] small#continuar-onde{display:none}
 .abertura .menu-item[disabled]{opacity:1;background:#01060caa!important;box-shadow:none!important;cursor:default}
 /* titulo */
 #aperte-enter{left:calc(4.2% / var(--f));top:81%;width:calc(36.9% / var(--f));height:6.1%;animation:brilho 1.6s ease-in-out infinite alternate!important}
 @keyframes brilho{from{box-shadow:0 0 0 0 #fbcf5600}to{box-shadow:0 0 0 .2em #fbcf56aa,0 0 1.4em .2em #fbcf5666}}
 /* menu principal: tres lugares desenhados (1 dourado, 2 e 3 escuros). Sem
  * jogo salvo: Novo jogo / Capitulos / Opcoes; com: Continuar investigacao /
  * Capitulos / Novo jogo, e Opcoes na linha de baixo. O .rotulo cobre o texto
  * desenhado so quando o botao do lugar nao e o que a arte escreve. */
 .menu-principal .menu-item{left:calc(4.4% / var(--f));width:calc(33.5% / var(--f));font-size:1em}
 .menu-principal[data-save="0"] #novo-jogo{top:52%;height:9.3%}
 .menu-principal[data-save="0"] #abrir-capitulos{top:63.2%;height:8.6%}
 .menu-principal[data-save="0"] #abrir-config{top:73.8%;height:8.6%}
 .menu-principal[data-save="1"] #start-game{top:52%;height:9.3%}
 .menu-principal[data-save="1"] #abrir-capitulos{top:63.2%;height:8.6%}
 .menu-principal[data-save="1"] #novo-jogo{top:73.8%;height:8.6%}
 .menu-principal[data-save="1"] #abrir-config{top:84.3%;height:5.6%}
 .abertura .menu-item .rotulo{position:absolute;inset:18% 4%;display:grid;place-items:center;visibility:visible!important;
  background:#0a1322;color:#f3e6c4;font-weight:900;font-size:1.65em;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;pointer-events:none}
 /* o que a arte ja escreve no lugar certo nao leva rotulo */
 .menu-principal[data-save="0"] #novo-jogo .rotulo,.menu-principal[data-save="0"] #abrir-config .rotulo{display:none}
 /* lugar dourado: rotulo dourado, texto escuro */
 .menu-principal[data-save="1"] #start-game .rotulo{background:linear-gradient(#f7d77c,#e8b54a);color:#1a1206;font-size:1.5em}
 /* Opcoes na linha de baixo: etiqueta pequena sobre o "escolha seu proximo destino" */
 .menu-principal[data-save="1"] #abrir-config .rotulo{inset:0;font-size:1.3em;border:1px solid #fbcf5688;background:#060d18;color:#f3e6c4}
 /* escolha de personagem: o escolhido brilha, o outro escurece */
 .abertura .gender-option[data-gender="male"]{left:calc(28.7% / var(--f));top:30.3%;width:calc(19.9% / var(--f));height:50.5%}
 .abertura .gender-option[data-gender="female"]{left:calc(51.3% / var(--f));top:30.3%;width:calc(20% / var(--f));height:50.5%}
 .abertura .gender-option:not(.selected){background:#01060c99!important}
 .abertura .gender-option.selected{box-shadow:0 0 0 .3em #fbcf56,0 0 2em .4em #fbcf5688}
 .abertura [data-passo="personagem"] [data-voltar]{left:calc(3.3% / var(--f));top:86.3%;width:calc(19.4% / var(--f));height:7.9%}
 #comecar{left:calc(74.2% / var(--f));top:86.6%;width:calc(22.5% / var(--f));height:8%}
 .abertura .aviso-novo{position:absolute;left:50%;top:97%;transform:translate(-50%,-50%);margin:0;white-space:nowrap;
  background:#01060cdd;border:1px solid #f8a23666;padding:.3em .9em;font-size:1em}
 /* capitulo */
 .abertura [data-passo="capitulo"] [data-voltar]{left:calc(3.9% / var(--f));top:87.5%;width:calc(13.9% / var(--f));height:6.8%}
 #comecar-investigacao{left:calc(22.4% / var(--f));top:86.6%;width:calc(31% / var(--f));height:8.3%}
 /* opcoes: cartao por cima do menu, com a arte escurecida atras */
 .abertura [data-passo="config"]{position:absolute;inset:0;display:grid;place-content:center;background:#01060cb8}
 .abertura [data-passo="config"][hidden]{display:none}
 .abertura [data-passo="config"]>*{width:min(460px,80vw)}
 .abertura [data-passo="config"]{padding:0 calc(50% - min(230px,40vw))}
 .abertura [data-passo="config"] .passo-titulo{display:block;background:#051422;border:1px solid #fbcf5666;border-bottom:0;margin:0;padding:18px 20px 8px}
 .abertura [data-passo="config"] .config-lista,.abertura [data-passo="config"] .passo-acoes{background:#051422;border:1px solid #fbcf5666;border-top:0;margin:0;padding:8px 20px 18px}
 .abertura [data-passo="config"] .config-lista{border-bottom:0}
.start-screen[data-passo-atual="capitulo"] .abertura-marca .chapter{display:none}
/* Opcoes em tela em pe: o cartao ocupa a tela, nao o recorte da arte */
@media (max-aspect-ratio:5/4){.abertura [data-passo="config"]{position:fixed;padding:16px}}
@media (max-aspect-ratio:5/4){.abertura .menu-item small#continuar-onde{display:none}.abertura .menu-item .rotulo{font-size:1.85em;letter-spacing:.06em}}
/* Fim do capitulo: chamada para o proximo */
.proximo-capitulo{margin:12px auto 14px;max-width:440px;border:1px solid #fbcf5666;background:linear-gradient(180deg,#fbcf5614,#fbcf5605);padding:12px 16px;text-align:center}
.proximo-selo{margin:0;color:var(--gold);font-size:10px;letter-spacing:.2em}
.proximo-nome{margin:4px 0;font-size:26px;font-weight:900;color:var(--cream)}
.proximo-nome span{font-size:15px;color:var(--gold);border:1px solid var(--gold);padding:2px 8px;margin-left:8px;vertical-align:middle}
.proximo-texto{margin:0 0 10px;font-size:12px;line-height:1.5;color:#cfe0ea}
.proximo-insta{display:inline-block;color:#07111c;background:var(--gold);padding:9px 14px;font-weight:800;font-size:12px;text-decoration:none;box-shadow:0 3px 0 #9c6c1d}
.proximo-insta strong{font-weight:900}
.proximo-insta:active{transform:translateY(2px);box-shadow:0 1px 0 #9c6c1d}
/* Aviso do navegador interno do Instagram */
.aviso-app{position:fixed;z-index:120;left:12px;right:12px;bottom:12px;background:#051422f5;border:1px solid var(--gold);padding:12px 14px;box-shadow:0 10px 30px #000c;display:flex;gap:10px;align-items:center}
.aviso-app[hidden]{display:none}
.aviso-app p{margin:0;font-size:12px;line-height:1.5;flex:1}
.aviso-app b{color:var(--gold)}
/* Selecao de capitulo (arte: assets/ui/menu_capitulos.webp) */
.capitulos-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.cap-card{background:#061a2a;border:1px solid #ffffff24;padding:12px;text-align:left;cursor:pointer;display:grid;gap:4px}
.cap-card small{color:#91a8b5}
.cap-card[data-trancado]{opacity:.55}
.cap-card.selected{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold);opacity:1}
.cap-aviso{margin:10px 0 0;font-size:12px;line-height:1.5;color:#cfe0ea}
.cap-aviso a{color:var(--gold)}
.cap-aviso[hidden]{display:none}
/* menu_capitulos_02.webp: o 02 desenhado como DISPONIVEL (o 02 esta liberado
 * em CAPITULOS). menu_capitulos.webp, com cadeado no 02, fica no repositorio
 * para quando o 02 voltar a ser bloqueado. */
.start-screen[data-passo-atual="capitulos"] .abertura{background-image:url(./assets/ui/menu_capitulos_02.webp)}
.start-screen[data-passo-atual="capitulos"] .abertura .passo-titulo{display:none}
.abertura .cap-card[data-cap="1"]{left:calc(7.2% / var(--f));top:35.6%;width:calc(20.9% / var(--f));height:44.6%}
.abertura .cap-card[data-cap="2"]{left:calc(29.4% / var(--f));top:36.1%;width:calc(19.9% / var(--f));height:43.7%}
.abertura .cap-card[data-cap="3"]{left:calc(50.8% / var(--f));top:36.1%;width:calc(19.9% / var(--f));height:43.7%}
.abertura .cap-card[data-cap="4"]{left:calc(72.4% / var(--f));top:36.1%;width:calc(20.2% / var(--f));height:43.7%}
.abertura .cap-card.selected{box-shadow:0 0 0 .3em #fbcf56,0 0 2em .4em #fbcf5688!important}
.abertura [data-passo="capitulos"] [data-voltar]{left:calc(4.2% / var(--f));top:86.3%;width:calc(21.4% / var(--f));height:8.1%}
.abertura #selecionar-capitulo{left:calc(70% / var(--f));top:86.6%;width:calc(26.1% / var(--f));height:7.8%}
.abertura .cap-aviso{position:absolute;left:50%;top:84.4%;transform:translateX(-50%);width:34%;margin:0;background:#01060cf2;border:1px solid #fbcf5688;padding:.35em .8em;font-size:.95em;line-height:1.35;text-align:center;z-index:2}
.abertura .cap-card[data-trancado]{opacity:1}
/* Estado de cada capitulo, por cima do "DISPONIVEL"/"EM BREVE" desenhado no
 * pe do card (o texto vem de LANCAMENTO, em data.js). */
.abertura .cap-card .cap-estado{visibility:visible!important;position:absolute;left:6%;right:6%;bottom:5%;min-height:12%;display:grid;place-content:center;gap:.15em;padding:.2em 0;
 background:#0b1424;text-align:center;pointer-events:none}
.abertura .cap-card .cap-estado *{visibility:visible!important}
.abertura .cap-card .cap-rotulo{color:#fbcf56;font-weight:900;font-size:1.5em;letter-spacing:.1em;text-transform:uppercase}
/* a previa: faixa dourada no alto do card, sem cobrir o nome desenhado */
.abertura .cap-card .cap-acao{visibility:visible!important;position:absolute;left:5%;right:5%;top:4%;padding:.45em .3em;text-align:center;pointer-events:none;
 background:linear-gradient(#f7d77c,#e8b54a);color:#1a1206;font-weight:800;font-size:1.05em;line-height:1.2;box-shadow:0 .2em .6em #0008}
.abertura .cap-card .cap-acao[hidden]{display:none}
.abertura .cap-card[data-estado="concluido"] .cap-rotulo{color:#8fd6ae}
.abertura .cap-card[data-estado="andamento"] .cap-rotulo{color:#f3e6c4}
.abertura .cap-card[data-estado="naoLancado"] .cap-rotulo{color:#a9b6c0;font-size:1.25em}
/* No celular em pe o card tem ~80 px: so o estado, a frase longa fica no aviso */
@media (max-aspect-ratio:5/4){
 .abertura .cap-card .cap-acao{display:none}
 .abertura .cap-card .cap-rotulo{font-size:max(8px,1.5em);letter-spacing:.02em;white-space:normal;line-height:1.05}
 .abertura .cap-aviso{position:fixed;left:16px;right:16px;top:auto;bottom:16px;transform:none;width:auto;font-size:13px;padding:10px 12px}
 /* os botoes desenhados ficam com ~16 px de altura: a area de toque cresce para os lados e para cima/baixo */
 .abertura [data-passo="capitulos"] [data-voltar]::after,.abertura #selecionar-capitulo::after{content:'';position:absolute;inset:-14px -6px}
}
/* Abertura do capitulo: o que a historia pressupoe, para quem entra na previa
 * sem ter terminado o Rio (por cima do mapa, do lado direito da arte). */
.abertura .capitulo-anterior{display:block;position:absolute;left:calc(57% / var(--f));top:58%;width:calc(38% / var(--f));margin:0;
 background:#01060cf0;border:1px solid #fbcf5688;padding:.8em 1em;font-size:1.05em;line-height:1.45;color:#f3e6c4}
.abertura .capitulo-anterior small{display:block;color:#fbcf56;letter-spacing:.14em;font-size:.85em;margin-bottom:.3em}
.abertura .capitulo-anterior[hidden]{display:none}
@media (max-aspect-ratio:5/4){.abertura .capitulo-anterior{position:fixed;left:16px;right:16px;top:auto;bottom:16px;width:auto;font-size:12px}}
/* Novo jogo com save: cartao de confirmacao por cima do menu (como Opcoes) */
.abertura .cartao-passo{position:absolute;inset:0;display:grid;place-content:center;background:#01060cb8;z-index:3}
.abertura .cartao-passo[hidden]{display:none}
.abertura .cartao-passo>*{width:min(420px,84vw);background:#051422;border:1px solid #fbcf5666;margin:0;padding:10px 20px}
.abertura .cartao-passo .passo-titulo{display:block;border-bottom:0;padding-top:18px}
.abertura .cartao-passo .confirmar-texto{display:block;border-top:0;border-bottom:0;line-height:1.5;font-size:13px}
.abertura .cartao-passo .passo-acoes{border-top:0;padding-bottom:18px;display:flex;gap:10px;justify-content:flex-end}
.abertura .cartao-passo button{padding:10px 16px;min-height:44px;font-size:14px;cursor:pointer}
.abertura .cartao-passo .menu-voltar{background:transparent;border:1px solid #ffffff33}
.abertura .cartao-passo .primary{background:var(--gold);color:#07111c;border:0;font-weight:800}
.abertura .cartao-passo button:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
@media (max-aspect-ratio:5/4){.abertura .cartao-passo{position:fixed}}
/* CELULAR DEITADO — o jeito certo de jogar no celular. Com a altura curta
 * (~390 px), topo e objetivo tapavam um terco do cenario e o botao E nao
 * aparecia (o layout de toque so ligava abaixo de 760 px de largura). */
@media (pointer:coarse) and (orientation:landscape) and (max-height:500px){
 .hud{top:6px;left:6px;right:6px;padding:4px 8px;gap:6px;grid-template-columns:auto 1fr auto}
 .brand{font-size:8px}.brand span{display:none}
 .scene-title strong{font-size:10px}.scene-title span{font-size:8px}
 .hud nav button{padding:4px 7px;font-size:9px}
 .objective-card{left:6px;bottom:6px;width:min(300px,40vw);padding:5px 9px;background:rgba(0,17,31,.72)}
 .objective-card span{font-size:7px}.objective-card strong{font-size:9px;margin:1px 0}.objective-card small{display:none}
 .mobile-controls{display:grid;position:absolute;z-index:35;right:8px;bottom:8px;grid-template-columns:38px 38px 38px;grid-template-rows:38px 38px;gap:3px}
 .mobile-controls button{background:#001628aa;border:1px solid #ffffff3a}
 .mobile-controls button[data-dir="up"]{grid-column:2}.mobile-controls button[data-dir="left"]{grid-row:2;grid-column:1}
 .mobile-controls button[data-dir="down"]{grid-row:2;grid-column:2}.mobile-controls button[data-dir="right"]{grid-row:2;grid-column:3}
 .mobile-controls .interact{position:absolute;right:126px;bottom:0;width:50px;height:50px;border-radius:50%;border-color:var(--gold);color:var(--gold)}
 .dialog{bottom:6px;width:min(620px,calc(100vw - 150px));left:calc(50% - 60px);padding:8px 12px}
 .dialog{--portrait:64px}.dialog p{font-size:12px;margin:4px 0 6px}
 .relogio{top:40px}.toast{top:40px}
 .destaque{top:40%}
 .side-panel{width:min(420px,70vw)}
}

/* ===================================================== CAPITULO 02 · MARRAKECH */
/* narracao na caixa de fala (a porta range, ele sai pelo jardim) */
.dialog.narracao .dialog-name{visibility:hidden}
.dialog.narracao p{font-style:italic;color:#c9d6de}
/* horarios do visitante no topo do Caderno */
.note.horarios ul{list-style:none;margin:8px 0 2px;padding:0;display:grid;gap:5px}
.note.horarios li{font-family:Georgia,serif;font-style:italic;color:#f7edce;line-height:1.45;font-size:12px}
.note.horarios li b{font-style:normal;font-family:monospace;color:#c5a963;margin-right:8px}
/* a mesa dos mapas (desafios 'bordas' e 'encaixe', 19/10): uma tela so, as pecas
 * cortadas da arte encaixada; a imagem do encaixe aparece por cima no fim */
.mesa-mapas{position:relative;display:grid;place-items:center;margin:6px auto 8px;max-width:100%}
.mesa-mapas canvas{display:block;max-width:100%;height:auto;max-height:min(58vh,560px);touch-action:none;border:1px solid #5a3a1a;box-shadow:inset 0 0 40px #0008;cursor:grab}
.mesa-mapas img.bord-junto{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#1a120ae6;
  animation:bord-junto .8s ease-out both;filter:drop-shadow(0 0 14px #fbcf5699)}
@keyframes bord-junto{from{opacity:0;transform:scale(.9)}}
.bord-botoes{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
/* o aviso do topo e so leitura: ele cobre a saida de cima da Jemaa el-Fnaa
 * e engolia o clique de quem queria ir para o souk */
.toast{pointer-events:none}
/* celular deitado: os paineis do Capitulo 02 cabem sem rolar */
@media (max-height:500px){
  .puzzle.desafio{padding:10px 16px}
  .puzzle.desafio h2{font-size:17px;margin:0 0 2px}
  .puzzle.desafio .eyebrow{margin:0}
}
/* ABERTURA DO CAPITULO 02 — arte propria (30/09), com o texto de Marrakech
 * desenhado e os botoes nos mesmos lugares da abertura do Rio: os mesmos
 * botoes transparentes servem para as duas. */
.start-screen[data-cap="2"][data-passo-atual="capitulo"] .abertura{background-image:url(./assets/ui/menu_capitulo_02.webp)}

/* ============================================= DESAFIOS (src/desafios.js) */
.puzzle.desafio{width:min(640px,96vw);max-height:96vh}
.puzzle.desafio.largo{width:min(900px,97vw)}
.desafio-corpo{margin:10px 0 4px}
.desafio-rodape{display:flex;justify-content:flex-end}
.desafio-rodape button{font-size:11px;padding:6px 10px}
.puzzle-status.dica{color:#fbcf56}
.desafio button:not(.panel-close){cursor:pointer}
/* camera */
.cam{position:relative;border:3px solid #1c2a22;background:#000;box-shadow:inset 0 0 40px #000}
.cam canvas{display:block;width:100%;height:auto}
.cam-alvos{position:absolute;inset:0;pointer-events:none}
.cam-alvos.ativos{pointer-events:auto}
.cam-alvo{position:absolute;background:transparent;border:2px dashed transparent;border-radius:6px}
.cam-alvos.ativos .cam-alvo{border-color:#5dff8a88}
.cam-alvos.ativos .cam-alvo:hover,.cam-alvos.ativos .cam-alvo:focus-visible{border-color:#5dff8a;background:#5dff8a18}
.cam-controles{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px}
.cam-controles input{flex:1;min-width:120px;accent-color:#fbcf56}
/* papel vegetal */
.veg{position:relative;aspect-ratio:4/3;overflow:hidden;border:1px solid #6b5230;touch-action:none}
.veg svg{position:absolute;inset:0;width:100%;height:100%}
.veg-mar{fill:#b7cbc0}.veg-onda{fill:none;stroke:#7fa196;stroke-width:.35}
.veg-terra{fill:#ead9b0;stroke:#7a5a30;stroke-width:.5}.veg-rua{stroke:#c7b183;stroke-width:.25}
.veg-morro{fill:#9c8a64}.veg-lugar circle{fill:#7a3b22}.veg-lugar text{font:2.1px Georgia,serif;font-style:italic;fill:#4a3219}
.veg-rosa circle{fill:none;stroke:#7a5a30;stroke-width:.3}.veg-rosa path{fill:#7a3b22}.veg-rosa text,.folha-norte text{font:bold 3px Georgia,serif;fill:#7a3b22}
.veg-titulo{font:bold 2.6px Georgia,serif;fill:#6b5230;letter-spacing:.3px}
.veg-folha{position:absolute;inset:0;cursor:grab;transition:transform .12s;outline:none}
.veg-folha:active{cursor:grabbing}.veg-folha.encaixada{transition:transform .5s}
.folha-papel{fill:#f4f1e6;fill-opacity:.32;stroke:#f4f1e6;stroke-opacity:.75;stroke-width:.4}
.folha-linha{fill:none;stroke:#1d4f7a;stroke-width:.55;stroke-dasharray:1.4 1}
.folha-marca circle{fill:#f4f1e633;stroke:#1d4f7a;stroke-width:.5}.folha-marca path{fill:none;stroke:#1d4f7a;stroke-width:.4}
.folha-marca .folha-ponto,.folha-marca .folha-seta{fill:#1d4f7a;stroke:none}
.folha-norte path{fill:#1d4f7a}.folha-norte text{fill:#1d4f7a}
.veg-folha.encaixada .folha-linha{stroke:#b3311d;stroke-dasharray:none;stroke-width:.8}
.veg-botoes{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px}
.veg-setas button,.trav-botoes button,.lun-setas button{width:40px;height:36px;background:#051422;border:1px solid #fbcf5666;color:var(--cream);font-size:14px}
/* travessias */
.trav{display:grid;place-items:center;background:#000}
.trav canvas{display:block;max-width:100%;max-height:min(62vh,520px);image-rendering:pixelated;touch-action:none}
.trav-botoes{display:flex;justify-content:center;gap:10px;margin-top:8px}
.trav-botoes button{width:64px;height:48px;font-size:20px}
.trav.fuga{background:transparent}
/* luneta */
.lun{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;align-items:center}
.lun-vista{position:relative;width:min(300px,56vw);aspect-ratio:1;border-radius:50%;overflow:hidden;border:6px solid #6a4e22;box-shadow:0 0 0 2px #fbcf5655,inset 0 0 30px #000;grid-row:span 3;touch-action:none;cursor:grab}
.lun-img{position:absolute;inset:0;background-repeat:no-repeat;image-rendering:pixelated}
.lun-mira{position:absolute;inset:0;background:linear-gradient(#fbcf5699,#fbcf5699) center/1px 30% no-repeat,linear-gradient(90deg,#fbcf5699,#fbcf5699) center/30% 1px no-repeat;pointer-events:none}
.lun-nome{position:absolute;left:0;right:0;bottom:14%;margin:0;text-align:center;font:bold 13px Georgia,serif;color:#fffbdc;text-shadow:0 1px 3px #000,0 0 8px #000}
.lun-rumo{position:relative;height:40px;border:1px solid #fbcf5666;background:#051422;overflow:hidden}
.lun-rumo span{position:absolute;inset:0;background:repeating-linear-gradient(90deg,#fbcf5688 0 1px,transparent 1px 18px)}
.lun-rumo b{position:absolute;inset:0;display:grid;place-items:center;font:bold 15px monospace;color:#fffbdc}
.lun-setas{display:flex;gap:6px}
.lun-pedras{display:flex;justify-content:center;gap:14px;margin:12px 0}
.lun-pedra{position:relative;width:96px;height:112px;background:#1a120a;border:1px solid #6a4e22;padding:0}
.lun-sinal{position:absolute;left:10%;top:6%;width:80%;height:72%;background-repeat:no-repeat}
.lun-seta{position:absolute;left:50%;top:40%;width:4px;height:40px;margin:-20px 0 0 -2px;background:linear-gradient(#ffdf7a 0 18%,#fbcf56aa 18%);clip-path:polygon(50% 0,100% 16%,100% 100%,0 100%,0 16%);transition:transform .2s;transform-origin:50% 50%}
.lun-pedra b{position:absolute;left:0;right:0;bottom:4px;font:bold 12px monospace;color:#fbcf56}
@media (max-width:640px),(max-height:500px){.lun{grid-template-columns:1fr}.lun-vista{width:min(200px,40vh);grid-row:auto;margin:auto}.lun-pedra{width:72px;height:86px}}
/* cha */
.cha{display:flex;justify-content:center;gap:28px;align-items:flex-end;height:180px}
.cha-copos{display:flex;gap:18px}
.cha-copo{width:44px;height:64px;border:2px solid #cfe6e8;border-top:0;border-radius:0 0 10px 10px;background:linear-gradient(transparent 0 100%);position:relative}
.cha-copo.bom{background:linear-gradient(#f6f0d8 0 22%,#b8741f 22%)}
.cha-copo.raso{background:linear-gradient(transparent 0 30%,#b8741f 30%)}
.cha-copo.respingou{background:linear-gradient(transparent 0 10%,#b8741f 10%);box-shadow:0 6px 0 -2px #b8741f88}
.cha-altura{position:relative;width:34px;height:170px;border:1px solid #fbcf5666;background:#051422}
.cha-faixa{position:absolute;left:0;right:0;background:#fbcf5644;border-top:1px solid #fbcf56;border-bottom:1px solid #fbcf56}
.cha-bule{position:absolute;left:-6px;right:-6px;height:6px;background:#e7c77a;box-shadow:0 0 8px #fbcf56}
.cha-botao{display:block;margin:14px auto 0;touch-action:none;user-select:none}
/* gabarito */
.gab{display:flex;justify-content:center;gap:22px;flex-wrap:wrap}
.gab figure{margin:0;text-align:center}.gab figcaption{font-size:11px;color:#9eb3bf;margin-bottom:6px}
.gab-grade{display:grid;grid-template-columns:repeat(4,44px);grid-template-rows:repeat(4,44px);background:#e9dcc0;border:2px solid #8a6a3c}
.gab-grade.latao{background:linear-gradient(135deg,#caa04a,#e6c677 45%,#b8892f)}
.gab-c{position:relative;border:1px solid #0000000f}
.gab-c b{position:absolute;background:#3f6f78}.gab-grade.latao .gab-c b{background:#5a3a12}
.gab-c b.d1{left:44%;width:12%;top:0;height:56%}.gab-c b.d4{left:44%;width:12%;bottom:0;height:56%}
.gab-c b.d2{top:44%;height:12%;right:0;width:56%}.gab-c b.d8{top:44%;height:12%;left:0;width:56%}
.gab-c em{position:absolute;inset:22%;border-radius:50%;border:2px solid #7a1d1d;background:#f4f1e6}
.gab-c em.gab-tanque{border-radius:3px}.gab-c em.gab-cisterna{background:#3f6f78}
.gab-botoes{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;align-items:center;margin-top:12px}
.gab-mov{font-size:11px;color:#9eb3bf}
@media (max-height:500px){.gab-grade{grid-template-columns:repeat(4,30px);grid-template-rows:repeat(4,30px)}}
/* circuito */
.circ{display:grid;grid-template-columns:minmax(160px,1fr) auto;gap:16px;align-items:start}
.circ-tit{margin:0 0 6px;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.circ-legenda{list-style:none;margin:12px 0 0;padding:10px 0 0;border-top:1px solid #ffffff1a;display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;font-size:11px;color:#d6e3e8}
.circ-legenda li{display:flex;align-items:center;gap:6px}
.circ-legenda img{width:24px;height:24px;object-fit:contain;background:#1f140a;border:1px solid #6a4e22;padding:2px}
.circ-regras{margin:0;padding-left:16px;font-size:11px;line-height:1.5;color:#d6e3e8}
.circ-grade{display:grid;grid-template-columns:repeat(6,64px);grid-template-rows:repeat(4,64px);background:#2b1b0c;border:3px solid #6a4e22;gap:2px;padding:2px}
.circ-c{position:relative;background:#4a3218;border:0;padding:0}
.circ-c.vazia{background:#3a2712;cursor:default}
.circ-c:not(.fixa):not(.vazia):hover{background:#5a3e20}
.circ-c b{position:absolute;background:#9a8a70}
.circ-c.molhada b{background:#4fb0d8;box-shadow:0 0 6px #4fb0d8}
.circ-c b.d1{left:40%;width:20%;top:0;height:60%}.circ-c b.d4{left:40%;width:20%;bottom:0;height:60%}
.circ-c b.d2{top:40%;height:20%;right:0;width:60%}.circ-c b.d8{top:40%;height:20%;left:0;width:60%}
.circ-c img{position:absolute;inset:6%;width:88%;height:88%;object-fit:contain}
.circ-c.fixa{background:#1f140a}
.circ + .primary{margin-top:12px}
@media (max-width:760px),(max-height:500px){.circ{grid-template-columns:1fr}.circ-regras,.circ-tit{display:none}.circ-legenda{grid-template-columns:repeat(3,auto);margin:0;padding:0;border:0}.circ-grade{grid-template-columns:repeat(6,44px);grid-template-rows:repeat(4,44px)}}
.lun-vista{background:#050a10}
.lun{grid-template-columns:auto 1fr}
.lun-vista{grid-row:auto}
.lun-lado{display:flex;flex-direction:column;gap:10px}
.lun-legenda{margin:0;font-size:11px;color:#9eb3bf}
.lun-lado .lun-pedras{justify-content:flex-start;margin:0}
.lun-lado .primary{align-self:flex-start}
@media (max-width:640px),(max-height:500px){.lun{grid-template-columns:auto 1fr}.lun-vista{width:min(170px,42vh)}.lun-lado{gap:6px}}
/* as pecas fixas mostram por onde a agua entra e sai: o icone fica no meio,
 * as pontas da canaleta aparecem nas bordas */
.circ-c.fixa img{inset:20%;width:60%;height:60%}
.circ-c.fixa b{background:#c9a24a}
.circ-c.fixa.molhada b{background:#4fb0d8}
/* canaleta desenhada (desafios/canaletas.png, 6 celulas: reta, curva, T e as
 * mesmas com agua); gira pelo transform que o desafio poe */
.circ-peca{position:absolute;inset:0;background:url(./assets/desafios/canaletas.png) 0 0/600% 100% no-repeat;image-rendering:auto;transition:transform .12s}
/* copos e bule desenhados (desafios/cha.png, 5 celulas) */
.cha-copo{width:74px;height:74px;border:0;border-radius:0;background:url(./assets/desafios/cha.png) 0 0/500% 100% no-repeat!important;box-shadow:none!important}
.cha-copo.bom{background-position:25% 0!important}
.cha-copo.raso{background-position:50% 0!important}
.cha-copo.respingou{background-position:75% 0!important}
.cha-bule{background:transparent;box-shadow:none;overflow:visible}
.cha-bule-arte{position:absolute;left:50%;bottom:0;width:66px;height:66px;transform:translate(-50%,6px);
  background:url(./assets/desafios/cha.png) 100% 0/500% 100% no-repeat;pointer-events:none}
/* 05/10 (2a rodada): o bule sobe EM CIMA do copo da vez, e um fio de cha
 * desce do bule ate o copo — quanto mais alto, mais comprido o fio */
.cha{position:relative;height:250px}
.cha-copo.vez{box-shadow:0 0 0 2px #fbcf56,0 0 14px #fbcf5688}
.cha .cha-altura{position:absolute;bottom:66px;height:150px;transition:left .35s ease}
.cha-fio{position:absolute;left:calc(50% + 29px);bottom:0;width:3px;background:linear-gradient(#d9a24a,#b8741f);opacity:0;transition:opacity .1s}
.cha-fio.on{opacity:.95}
.cha-bule:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:#e7c77a;box-shadow:0 0 8px #fbcf56}

/* LIA NO TIME (Capitulo 02): ela nao anda pelos mapas; fala pelo botao do
 * topo. O ponto dourado avisa que ela tem algo novo a dizer nesta cena. */
.hud nav button.falar-lia{position:relative;display:inline-flex;align-items:center;gap:6px}
.hud nav button.falar-lia[hidden]{display:none}
.lia-rosto{width:18px;height:18px;border-radius:50%;background:#0b2438 no-repeat;border:1px solid #ffffff33;overflow:hidden}
.hud nav button.falar-lia.novo:after{content:"";position:absolute;top:-3px;right:-3px;width:8px;height:8px;border-radius:50%;
  background:var(--gold);box-shadow:0 0 0 2px #00111f;animation:lia-ponto 1.6s ease-in-out infinite}
@keyframes lia-ponto{50%{transform:scale(1.35)}}
@media (prefers-reduced-motion:reduce){.hud nav button.falar-lia.novo:after{animation:none}}

/* O cartao do corvo (fim do Rio): um bilhete de papel grosso com lacre de
 * cera, por cima de tudo. Cabe deitado e em pe. */
.cartao-corvo{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:16px;background:radial-gradient(circle at 50% 45%,#0a1420cc,#010509f2)}
.cartao-corvo.hidden{display:none}
.cartao-papel{position:relative;width:min(420px,100%);padding:44px 28px 22px;text-align:center;color:#2b2118;
 background:linear-gradient(135deg,#f4ecd8,#e9dcbc 60%,#e2d1ad);border:1px solid #b89a63;box-shadow:0 24px 70px #000c,inset 0 0 40px #b8935a33;
 transform:rotate(-1.5deg);animation:cartao-entra .55s cubic-bezier(.2,1.3,.4,1)}
@keyframes cartao-entra{from{opacity:0;transform:translateY(40px) rotate(-6deg) scale(.92)}to{opacity:1;transform:rotate(-1.5deg)}}
.cartao-lacre{position:absolute;left:50%;top:-30px;width:62px;height:62px;margin-left:-31px;border-radius:50% 46% 52% 48%;display:grid;place-items:center;
 background:radial-gradient(circle at 38% 34%,#c8414f,#8e1b28 58%,#5c0f18);box-shadow:0 4px 10px #0008,inset 0 -3px 6px #0006,inset 0 3px 4px #ffffff30}
.cartao-lacre span{font:700 15px/1 Georgia,'Times New Roman',serif;letter-spacing:.06em;color:#f3c7c9;text-shadow:0 1px 0 #3d0910,0 -1px 0 #e47a85aa}
.cartao-texto{font:italic 400 clamp(19px,4.6vw,23px)/1.45 Georgia,'Times New Roman',serif;margin:6px 0 10px}
.cartao-assina{font:italic 600 18px/1 Georgia,'Times New Roman',serif;text-align:right;margin:0 6px 20px;color:#5c0f18}
.cartao-papel .primary{min-width:200px}

/* PROLOGO DE 1962: a arte do mirante em sepia, com grao de filme, e um quadro
 * de texto por vez. Em pe ou deitado, o texto fica embaixo, legivel. */
.prologo{position:fixed;inset:0;z-index:90;overflow:hidden;background:#140d06;color:#f4e6c8;cursor:pointer;user-select:none}
.prologo.hidden{display:none}
.prologo-cena{position:absolute;inset:-4%;background-size:cover;background-position:50% 40%;image-rendering:pixelated;
 filter:sepia(.9) saturate(.75) contrast(1.06) brightness(.72);animation:prologo-zoom 45s linear forwards}
@keyframes prologo-zoom{from{transform:scale(1)}to{transform:scale(1.12) translateY(-2%)}}
.prologo:after{content:"";position:absolute;inset:0;pointer-events:none;
 background:radial-gradient(ellipse at 50% 45%,transparent 45%,#0d0803e6 100%),repeating-linear-gradient(0deg,#ffffff07 0 1px,transparent 1px 3px);
 animation:prologo-grao .18s steps(2) infinite}
@keyframes prologo-grao{50%{background-position:0 0,0 1px}}
.prologo-quadro{position:absolute;left:50%;bottom:max(10%,72px);transform:translateX(-50%);width:min(680px,calc(100% - 32px));z-index:2;text-align:center;
 padding:18px 22px;background:linear-gradient(#1a1108cc,#120b05e6);border-top:1px solid #d9b77a66;border-bottom:1px solid #d9b77a66;transition:opacity .6s}
.prologo-quadro.saindo{opacity:0}
.prologo-selo{margin:0 0 8px;font:600 11px/1 ui-monospace,monospace;letter-spacing:.28em;color:#e8c27a}
.prologo-texto{margin:0;font:400 clamp(17px,2.4vw,22px)/1.5 Georgia,'Times New Roman',serif;text-wrap:pretty}
.prologo-quadro.citacao .prologo-texto{font-style:italic;font-size:clamp(20px,3vw,27px)}
.prologo-de{margin:8px 0 0;font:italic 14px/1 Georgia,serif;color:#e8c27a}
.prologo-de:empty,.prologo-selo:empty{display:none}
.prologo-foto{position:absolute;z-index:2;top:max(9%,64px);right:max(6%,16px);margin:0;transform:rotate(3deg);animation:prologo-foto .8s ease-out}
/* a foto do item (assets/items/amelia_photo.png) e uma foto torta sobre fundo
 * escuro: aqui so o recorte da foto, sem moldura nova */
.prologo-foto-img{width:clamp(150px,24vw,260px);aspect-ratio:1.19;background-repeat:no-repeat;background-size:150% auto;background-position:100% 100%;
 image-rendering:pixelated;filter:sepia(.6) drop-shadow(0 14px 22px #000c)}
.prologo-foto figcaption{font:italic 13px/1.6 Georgia,serif;color:#f4e6c8;text-align:center;text-shadow:0 1px 3px #000}
@keyframes prologo-foto{from{opacity:0;transform:rotate(9deg) translateY(30px)}}
.prologo-hoje{position:absolute;inset:0;z-index:3;display:grid;place-items:center;margin:0;background:#020a11;color:#fbcf56;
 font:700 clamp(16px,3vw,26px)/1 ui-monospace,monospace;letter-spacing:.3em;text-align:center;animation:prologo-hoje 2.2s ease}
@keyframes prologo-hoje{from{opacity:0}30%{opacity:1}}
.prologo-hoje[hidden],.prologo-foto[hidden]{display:none}
.prologo-dica{position:absolute;z-index:2;left:0;right:0;bottom:max(4%,22px);margin:0;text-align:center;font:11px/1 ui-monospace,monospace;letter-spacing:.12em;color:#e8c27aaa}
.prologo-pular{position:absolute;z-index:4;top:max(3%,14px);right:max(3%,14px);background:#00000066;border:1px solid #e8c27a77;color:#f4e6c8;padding:8px 12px;font-size:12px;cursor:pointer}
.prologo-pular kbd{color:#e8c27a;font-size:10px}
@media (max-aspect-ratio:3/4){.prologo-cena{background-position:30% 40%}.prologo-foto{top:auto;bottom:calc(max(10%,72px) + 190px);right:50%;transform:translateX(50%) rotate(3deg)}}
@media (prefers-reduced-motion:reduce){.prologo-cena,.prologo:after{animation:none}}

/* FUGA (desafios.js): cruz de direcoes, como num controle. Em tela baixa
 * (celular deitado) o mapa fica de um lado e a cruz do outro, sem o texto
 * de ajuda (ele continua nas dicas da Lia). */
.desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) .trav-botoes{display:grid;grid-template-columns:repeat(3,64px);grid-template-rows:repeat(2,50px);gap:6px;justify-content:center}
.desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) .trav-botoes [data-d="0,-1"]{grid-column:2;grid-row:1}
.desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) .trav-botoes [data-d="-1,0"]{grid-column:1;grid-row:2}
.desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) .trav-botoes [data-d="0,1"]{grid-column:2;grid-row:2}
.desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) .trav-botoes [data-d="1,0"]{grid-column:3;grid-row:2}
.desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) .trav-botoes button{width:auto;height:auto;touch-action:none}
/* o mapa cresce ate a altura que a tela da, sem esticar (pixel inteiro) */
.trav.fuga canvas{width:min(100%,calc(min(64vh,620px) * 364 / 476));height:auto;max-height:none}
@media (max-height:560px){
  /* duas colunas: o mapa na altura toda; titulo, cruz, aviso e dica ao lado */
  .puzzle.desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]){display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto 1fr auto auto;column-gap:20px;align-items:center;width:min(720px,96vw)}
  .desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) #desafio-ajuda{display:none}
  .desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) .desafio-corpo{display:contents}
  .desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) .trav.fuga{grid-column:1;grid-row:1 / -1}
  .desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) .trav.fuga canvas{width:auto;height:calc(100svh - 44px)}
  .desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) .eyebrow,.desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) h2,.desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) .trav-botoes,
  .desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) .puzzle-status,.desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) .desafio-rodape{grid-column:2}
  .desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) .trav-botoes{grid-row:3;grid-template-columns:repeat(3,60px);grid-template-rows:repeat(2,54px);margin:0}
  .desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) .puzzle-status{grid-row:4;min-height:2.6em;margin:6px 0}
  .desafio:is([data-desafio="fuga"],[data-desafio="telhados"],[data-desafio="cisterna"]) .desafio-rodape{grid-row:5;justify-content:center}
}
/* celular em pe: a conversa desce para a faixa dos controles (que nao servem
 * durante a fala) e deixa o cenario a mostra */
@media (max-width:760px) and (orientation:portrait){
  .dialog{bottom:10px}
}

/* ASSUNTO NOVO — "?" dourado em cima de quem tem o que perguntar; na lista de
 * Perguntar, etiqueta "novo" ou "visto". */
.entity .entity-assunto{display:none;position:absolute;left:50%;top:-4px;transform:translate(-50%,-100%);width:16px;height:18px;border-radius:50%;
 background:var(--gold);color:#07111c;font:900 12px/18px ui-monospace,monospace;text-align:center;font-style:normal;box-shadow:0 0 0 2px #07111c,0 0 8px #fbcf56aa;
 animation:assunto-pulso 1.6s ease-in-out infinite alternate}
.entity.tem-assunto .entity-assunto{display:block}
@keyframes assunto-pulso{from{transform:translate(-50%,-100%)}to{transform:translate(-50%,calc(-100% - 3px))}}
@media (prefers-reduced-motion:reduce){.entity .entity-assunto{animation:none}}
.escolha .etiqueta{margin-left:8px;font-size:9px;letter-spacing:.1em;text-transform:uppercase;padding:1px 5px;border:1px solid currentColor;vertical-align:middle;opacity:.85}
.escolha.assunto:not(.visto) .etiqueta{color:var(--gold)}
.escolha.visto .etiqueta{color:#8fa5b2}
/* Caderno em secoes */
.caderno-secao{margin:16px 0 4px;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#c5a963;border-bottom:1px solid #f9ecc22a;padding-bottom:4px}
.caderno-secao.novas{color:var(--gold)}
.note.nova{background:#fbcf5610;border-left:2px solid var(--gold);padding-left:8px}
.note.nova time{color:var(--gold)}
.questoes{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:6px}
.questoes li{font-family:Georgia,serif;font-size:13px;line-height:1.45;color:#f7edce;padding:6px 8px;background:#ffffff08;border:1px solid #ffffff12}
.questoes.abertas li::before{content:'? ';color:var(--gold);font-family:ui-monospace,monospace;font-weight:900}
.questoes.resolvidas li span{display:block;color:#bfb497;text-decoration:line-through;text-decoration-color:#bfb49766}
.questoes.resolvidas li b{display:block;font-weight:400;font-style:italic;color:#9fd9b8;margin-top:2px}
.hud nav button[data-panel="notebook"]{position:relative}
.hud nav button[data-panel="notebook"].novo:after{content:"";position:absolute;top:-3px;right:-3px;width:8px;height:8px;border-radius:50%;background:var(--gold);box-shadow:0 0 6px var(--gold)}
/* Ajuda da Lia depois de varias tentativas: faixa embaixo do minijogo */
.desafio-socorro{margin:8px 0 0;border:1px solid #fbcf5688;background:#0b1a28;padding:8px 10px}
.desafio-socorro[hidden]{display:none}
.desafio-socorro p{margin:0 0 6px;font-size:12px;line-height:1.4}
.socorro-opcoes{display:flex;flex-wrap:wrap;gap:6px}
.socorro-opcoes button{flex:1 1 140px;text-align:left;background:#061a2a;border:1px solid #ffffff2a;padding:8px 10px;cursor:pointer;font-weight:800;font-size:12px;min-height:44px}
.socorro-opcoes button small{display:block;font-weight:400;font-size:10px;color:#a9bcc6;margin-top:2px;line-height:1.3}
.socorro-opcoes button:focus-visible{outline:2px solid var(--gold)}
/* Deducoes: cartoes de pista e conclusoes */
.ded{display:grid;gap:8px;text-align:left}
.ded-passo{margin:4px 0 0;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
.ded-conta{color:#a9bcc6;margin-left:6px}
.ded-pistas{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-auto-rows:max-content;align-content:start;gap:6px;max-height:min(40vh,340px);overflow:auto;padding-right:4px;overscroll-behavior:contain}
.ded-pista,.ded-conclusao{background:#061a2a;border:1px solid #ffffff24;padding:8px 10px;text-align:left;cursor:pointer;min-height:44px;height:auto;overflow:visible;white-space:normal}
.ded-pista b{display:block;font-size:12px;color:#f3e6c4}
.ded-pista small{display:block;font-size:11px;color:#a9bcc6;margin-top:4px;line-height:1.4;white-space:normal;overflow-wrap:anywhere}
.ded-pista.on,.ded-conclusao.on{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold);background:#0b2438}
.ded-conclusoes{display:grid;gap:6px}
.ded-conclusao{font-size:12px;line-height:1.4}
.ded-acoes{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.ded-acoes button{min-height:44px;padding:8px 14px}
.ded-conferir:disabled{opacity:.45;cursor:default}
.questoes.deduzir li{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.questoes.deduzir .deduzir{background:var(--gold);color:#07111c;border:0;font-weight:800;padding:8px 12px;cursor:pointer;min-height:40px;font-family:ui-monospace,monospace;font-size:11px}
/* Abertura do Capitulo 01: a arte tem "estojo" desenhado em duas linhas. O
 * texto certo ("maleta", de CAPITULOS[1].intro) cobre so essas duas linhas,
 * sem mexer na imagem. */
.start-screen[data-cap="1"][data-passo-atual="capitulo"] .abertura .intro:nth-of-type(2),
.start-screen[data-cap="1"][data-passo-atual="capitulo"] .abertura .intro:nth-of-type(3),
.start-screen[data-cap="1"][data-passo-atual="capitulo"] .abertura .capitulo-passo{display:block;position:absolute;margin:0;
 background:#0a1526;color:#f6ecd2;font-family:Georgia,'Times New Roman',serif;font-weight:700;line-height:1.3;letter-spacing:.02em;
 box-shadow:0 0 .5em .45em #0a1526}
/* 07/10 ("em outras o texto esta mais destacado"): so o 1o paragrafo tinha o
 * painel por cima; o 2o ficava o desenhado na arte, com outro brilho. Agora os
 * dois ficam no mesmo painel, um bloco so. */
.start-screen[data-cap="1"][data-passo-atual="capitulo"] .abertura .intro:nth-of-type(3){left:calc(4.6% / var(--f));top:62%;width:calc(37.4% / var(--f));height:12.6%;font-size:1.72em;line-height:1.38}
.start-screen[data-cap="1"][data-passo-atual="capitulo"] .abertura .intro:nth-of-type(2){left:calc(4.6% / var(--f));top:53.2%;width:calc(37.4% / var(--f));height:8.8%;font-size:1.72em;line-height:1.38}
.start-screen[data-cap="1"][data-passo-atual="capitulo"] .abertura .capitulo-passo{left:calc(4% / var(--f));top:79.6%;width:calc(37.6% / var(--f));height:4.8%;font-size:2.02em;white-space:nowrap}
.start-screen[data-cap="1"][data-passo-atual="capitulo"] .abertura .capitulo-passo small{display:none}
/* Quem sai da cena andando (`sai` num bloco de fala) entra pela porta: some
 * devagar no fim do caminho, em vez de desaparecer de um quadro para o outro. */
.entity.saindo .entity-label,.entity.saindo .entity-assunto{display:none}
.entity.saiu{opacity:0;transition:opacity .4s}
/* As fotos do Ravi (desafios.js, abrirFotos): o visor da camera, grande */
.fotos-visor{position:relative;border:6px solid #15171c;border-radius:10px;background:#000;box-shadow:0 0 0 2px #3a3f4a,inset 0 0 30px #000}
.fotos-visor canvas{display:block;width:100%;height:auto;image-rendering:pixelated;border-radius:4px}
.fotos-alvos{position:absolute;inset:0}
.foto-alvo{position:absolute;background:transparent;border:2px solid transparent;border-radius:6px;cursor:pointer;padding:0}
.foto-alvo:hover,.foto-alvo:focus-visible{border-color:#ffffff66}
.foto-alvo.achado{border-color:#5dff8a;box-shadow:0 0 0 2px #0008}
.fotos-rotulo{position:absolute;left:12px;top:10px;background:#0009;color:#fff;font:600 12px monospace;padding:3px 7px;border-radius:4px}
.fotos-controles{display:flex;gap:8px;align-items:center;justify-content:center;margin-top:10px;flex-wrap:wrap}
.fotos-miniaturas{display:flex;gap:5px;flex-wrap:wrap;justify-content:center}
.fotos-miniaturas button{min-width:34px;min-height:34px;border:1px solid #ffffff33;background:#0d1b2b;color:#cfe0f0;border-radius:6px;font:600 13px monospace}
.fotos-miniaturas button.on{border-color:#fbcf56;color:#fbcf56}
.fotos-miniaturas button.achada{background:#173a26;border-color:#5dff8a}
.fotos-placar{margin:8px 0 0;text-align:center;font-size:.9em;opacity:.85}
/* O desenho de giz no calcadao (desafios.js, abrirGiz) */
.giz{border:3px solid #1b2733;border-radius:8px;overflow:hidden;background:#000}
.giz canvas{display:block;width:100%;height:auto}
.giz-texto{margin:10px 0;line-height:1.5}
/* Carinho nos bichos: um coracao sobe e some (game.js, fazerCarinho) */
.coracao{position:absolute;transform:translate(-50%,-100%);color:#ff7a93;font-size:22px;text-shadow:0 1px 0 #5a1020,0 0 8px #ff7a9388;
 pointer-events:none;animation:coracao-sobe 1.3s ease-out forwards;z-index:5}
@keyframes coracao-sobe{0%{opacity:0;transform:translate(-50%,-60%) scale(.6)}20%{opacity:1;transform:translate(-50%,-100%) scale(1.1)}100%{opacity:0;transform:translate(-50%,-260%) scale(1)}}
@media (prefers-reduced-motion:reduce){.coracao{animation:none;opacity:.9}}
/* Roda de choro com o Seu Bene (desafios.js, abrirRitmo) */
.ritmo{border:3px solid #1b2733;border-radius:8px;overflow:hidden;background:#0b1220}
.ritmo canvas{display:block;width:100%;height:auto;touch-action:none}
.ritmo-botoes{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
.ritmo-botoes button{min-height:56px;border:2px solid var(--cor);background:#0d1b2b;color:#fff;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;touch-action:manipulation;user-select:none}
.ritmo-botoes button small{opacity:.7;font-size:.8em}
.ritmo-botoes button.bateu{background:var(--cor);color:#0b1220}
.ritmo-fim{margin-top:10px;padding:10px 12px;border:1px solid #ffffff22;border-radius:8px;background:#0d1b2bcc}
.ritmo-fim p{margin:0 0 8px}
.ritmo-fala{font-style:italic}
/* no celular a pessoa na foto fica pequena: a area de toque passa da figura
 * (margem invisivel em volta, sem mudar o desenho) */
.foto-alvo::before{content:'';position:absolute;inset:-10px}
/* o botao de dica tinha 27 px de altura no celular: pouco para o dedo */
#desafio-dica{min-height:38px}
/* Encenacao (game.js: encenar): quem entra numa cena so para a conversa.
 * A Lia sai de dentro do jogador e volta para ele; os outros aparecem. */
.entity.encenado{transition:left .38s ease-out,top .38s ease-out,opacity .38s ease-out}
/* lote 8: a Lia anda ate o lugar dela (o passo leva 0,6 s) */
.entity.encenado.da-lia{transition:left .6s linear,top .6s linear,opacity .3s ease-out}
/* fuga: andar devagar (sem barulho) — Shift no teclado, este botao no toque */
.trav-botoes .fuga-devagar{min-width:120px;font-size:.85em}
/* lote 7: o botao Devagar ganha a propria linha, embaixo das setas (antes caia
 * na casa vazia ao lado do ▲ e, mais largo que a coluna, cobria a seta) */
.desafio:is([data-desafio="fuga"],[data-desafio="telhados"]) .trav-botoes .fuga-devagar{grid-column:1 / -1;grid-row:3;min-width:0;padding:6px 10px}
.trav-botoes .fuga-devagar.on{background:#2d5b3a;border-color:#5dff8a;color:#d9ffe4}
/* A henna da Zineb (desafios.js, abrirHenna): quatro motivos em traco de henna */
.henna-mao{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:380px;margin:0 auto}
.henna-motivo{aspect-ratio:1;border:2px solid #7a4a22;border-radius:18px;background:radial-gradient(#e9c9a3,#c99a6a);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;touch-action:manipulation;transition:transform .08s,box-shadow .08s}
.henna-motivo svg{width:62%;height:62%;fill:none;stroke:#6b2f12;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.henna-motivo small{color:#4a2410;font-weight:700}
.henna-motivo.on{transform:scale(1.05);box-shadow:0 0 0 4px #fbcf56,0 0 22px #fbcf56aa;background:radial-gradient(#fff1d8,#e2b07a)}
.henna-placar{text-align:center;margin:10px 0 6px;opacity:.85}
.henna-fim{text-align:center}
/* CELULAR (05/10, 2a rodada) */
.alvo-e{display:none}
@media (pointer:coarse){
  /* a bolha "E · ..." nao flutua mais sobre o mundo no toque; o alvo vai para o rotulo do botao E */
  .interaction-prompt{display:none!important}
  .mobile-controls .alvo-e:not([hidden]){display:block;position:absolute;right:196px;bottom:6px;max-width:min(40vw,200px);padding:6px 10px;
    background:#06111df0;border:1px solid var(--gold);color:#fff;font-size:12px;line-height:1.3;white-space:normal;pointer-events:none;box-shadow:0 6px 18px #0008}
  /* os botoes de direcao ficam meio transparentes por cima do mundo */
  .mobile-controls button:not(.interact){opacity:.82}
}
@media (max-width:760px) and (orientation:portrait){
  /* cabecalho numa linha so: o nome do lugar no lugar da marca */
  .hud .brand{display:none}
  .hud .scene-title{display:flex!important;grid-column:1/-1;gap:8px;align-items:baseline;font-size:12px;margin:0}
  .hud .scene-title #scene-kicker{font-size:10px}
  .objective-card{padding:10px 12px}
  .objective-card .objective-text,.objective-card #objective{font-size:13px}
}

/* lote 7: o encaixe das bordas visto PELA LUPA — a imagem dentro de uma lente redonda de latao */
.mesa-mapas img.bord-junto[src*="lupa_fragmentos"]{inset:50% auto auto 50%;width:min(92%,420px);height:auto;aspect-ratio:1;object-fit:cover;
  transform:translate(-50%,-50%);border-radius:50%;border:10px solid #b8893a;box-shadow:0 0 0 3px #4a3214,0 10px 30px #000c,inset 0 0 40px #000a;
  animation:lupa-entra .6s ease-out}
@keyframes lupa-entra{from{transform:translate(-50%,-50%) scale(.6);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}

/* VIAGEM (lote 7): cutscenes sobre arte desenhada */
.viagem{position:fixed;inset:0;z-index:91;overflow:hidden;background:#05080d;color:#fff6dc;cursor:pointer;user-select:none}
.viagem.hidden{display:none}
.viagem-fundo{position:absolute;inset:0;background-size:cover;background-position:50% 50%;image-rendering:pixelated;animation:viagem-zoom 14s ease-out both}
.viagem-fundo.pano{background-size:auto 100%;background-position:0% 50%;animation:viagem-pano 16s linear both}
@keyframes viagem-zoom{from{transform:scale(1.08)}to{transform:scale(1)}}
@keyframes viagem-pano{to{background-position:100% 50%}}
.viagem-sprite{position:absolute;left:0;top:var(--alto);width:var(--w);height:var(--h);margin-top:calc(var(--h) / -2);
  background-repeat:no-repeat;background-size:400% 100%;image-rendering:pixelated;
  animation:viagem-quadros calc(var(--ms) * 4) steps(4) infinite,viagem-atravessa 9s linear both}
.viagem-sprite[hidden]{display:none}
@keyframes viagem-quadros{from{background-position:0 0}to{background-position:133.333% 0}}
@keyframes viagem-atravessa{from{transform:translateX(calc(-1 * var(--w)))}to{transform:translateX(100vw)}}
.viagem-quadro{position:absolute;left:50%;bottom:max(9%,64px);transform:translateX(-50%);width:min(680px,calc(100% - 32px));z-index:2;
  text-align:center;background:#000a;padding:14px 18px;border:1px solid #fbcf5655;animation:viagem-in .8s ease-out}
@keyframes viagem-in{from{opacity:0;transform:translate(-50%,12px)}}
.viagem-selo{margin:0 0 8px;font:600 11px/1 ui-monospace,monospace;letter-spacing:.28em;color:#fbcf56}
.viagem-texto{margin:0;font:400 clamp(16px,2.2vw,20px)/1.5 Georgia,'Times New Roman',serif;text-wrap:pretty}
@media (max-aspect-ratio:3/4){.viagem-sprite{--w:200px!important;--h:84px!important}}

/* lote 7: o bule novo, de lado, bico para a direita. O bico (97% da largura,
 * 54% da altura da arte) cai em cima do fio de cha (.cha-fio: 50% + 29px) */
.cha-bule-arte{width:84px;height:67px;left:calc(50% - 52px);bottom:3px;transform:none;
  background:url(./assets/desafios/bule_lado.png) 0 0/100% 100% no-repeat}

/* lote 7: a barraca do Karim (jogo opcional do suco) */
.suco{max-width:520px;margin:0 auto;text-align:center}
.suco-pedido{font:italic 19px/1.4 Georgia,serif;color:#fff1d0;min-height:2.8em;margin:0 0 6px}
.suco-tempo{height:8px;background:#ffffff1f;border-radius:4px;overflow:hidden;margin:0 auto 12px;max-width:360px}
.suco-tempo i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#ff8a6a,#fbcf56)}
.suco-frutas{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.suco-fruta,.suco-copo{border:2px solid #7a4a22;border-radius:14px;background:radial-gradient(#fff2d6,#e2b98a);display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 2px;touch-action:manipulation;transition:transform .08s}
.suco-fruta i,.suco-copo i{width:56px;height:56px;background-repeat:no-repeat;background-size:600% 100%;image-rendering:pixelated}
.suco-fruta small,.suco-copo small{color:#4a2410;font-weight:700;font-size:12px}
.suco-fruta.on{transform:translateY(-3px);box-shadow:0 0 0 3px #fbcf56,0 0 16px #fbcf5699}
.suco-copo{margin:12px auto 0;width:min(240px,80%);flex-direction:row;justify-content:center;gap:10px;background:radial-gradient(#e8f4ff,#9fc6e6)}
.suco-dentro{color:#22384e;font-size:12px;font-weight:700;max-width:120px}
.suco-placar{margin:10px 0 6px;opacity:.85}

/* Esteira do Menara (opcional): malas do Canva numa fita que corre */
.esteira{display:grid;gap:10px}
.esteira-fita{position:relative;height:132px;overflow:hidden;background:repeating-linear-gradient(90deg,#2b3139 0 26px,#1b2026 26px 29px);border-top:6px solid #8b949e;border-bottom:6px solid #59616b;box-shadow:inset 0 10px 18px #0007}
.esteira-zona{position:absolute;left:50%;top:0;bottom:0;width:120px;transform:translateX(-50%);background:#fbcf561f;border-left:2px dashed #fbcf5699;border-right:2px dashed #fbcf5699;pointer-events:none}
.esteira-mala{position:absolute;left:0;bottom:10px;padding:0;border:0;background-color:transparent;background-repeat:no-repeat;background-size:800% 100%;cursor:pointer;filter:drop-shadow(0 4px 3px #000a)}
.esteira-mala.errada{filter:drop-shadow(0 0 6px #e05a4f)}
.esteira-mala.pega{filter:drop-shadow(0 0 8px var(--gold))}
.esteira-acoes{display:flex;justify-content:center}
.esteira-acoes button{min-height:48px;min-width:160px}
.esteira-placar{margin:0;text-align:center;font-size:12px;color:#a9bcc6}
/* vista de perto num objeto (fala com `ver`): a imagem fica acima da caixa de conversa */
.dialog-ver{position:absolute;left:50%;bottom:calc(100% + 10px);transform:translateX(-50%);max-width:180px;max-height:180px;padding:10px;background:#06111df2;border:1px solid var(--gold);box-shadow:0 12px 30px #000a}
.dialog-ver[hidden]{display:none}
@media(max-width:760px){.dialog-ver{max-width:120px;max-height:120px;padding:6px}}
/* LOJA (src/loja.js). Botao no menu: etiqueta dourada visivel, abaixo das
 * opcoes desenhadas na arte (a arte nao tem esse lugar). */
.menu-principal[data-save="0"] #abrir-loja{top:84.3%;height:5.6%}
.menu-principal[data-save="1"] #abrir-loja{top:91%;height:5.6%}
.abertura .menu-principal #abrir-loja .rotulo{inset:0;font-size:1.3em;border:1px solid var(--gold);background:linear-gradient(#f7d77c,#e8b54a);color:#1a1206}

.abertura .loja-passo>*{width:min(560px,90vw)}
.abertura .loja-passo{overflow:auto;padding:12px 0}
.loja-sub{display:block;font-size:13px;line-height:1.5;color:#cfe0ea;border-top:0;border-bottom:0}
.abertura .loja-produtos{display:grid;grid-template-columns:1fr 1fr;gap:10px;border-top:0;border-bottom:0}
.loja-produto{position:relative;display:flex;flex-direction:column;gap:6px;background:#061a2a;border:1px solid #ffffff24;padding:14px}
/* capitulo so do Passe (LOJA.soPasse): o avulso some e o Passe ocupa a linha */
.loja-produto[hidden]{display:none}
.abertura .loja-produtos.so-passe{grid-template-columns:1fr}
.loja-produto.loja-melhor{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold),0 0 18px #fbcf5622}
.loja-produto h3{margin:0;font-size:14px;color:#f3e6c4}
.loja-preco{font-size:26px;font-weight:900;color:var(--gold)}
.loja-produto p{margin:0;font-size:12px;line-height:1.45;color:#a9bcc6;flex:1}
.loja-selo{position:absolute;top:-9px;right:10px;background:var(--gold);color:#07111c;font-size:10px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;padding:2px 8px}
.loja-selo:empty{display:none}
.abertura .loja-comprar{display:block;text-align:center;text-decoration:none;padding:11px 14px;min-height:44px;font-size:14px;font-weight:800;cursor:pointer;background:#0b2438;border:1px solid #fbcf5688;color:#f3e6c4}
.abertura .loja-comprar.primary{background:var(--gold);color:#07111c;border:0}
.abertura .loja-comprar:not([href]){opacity:.8}
.abertura .loja-codigo{display:grid;gap:6px;border-top:0;border-bottom:0}
.loja-codigo label{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold)}
.loja-linha{display:flex;gap:8px}
.loja-linha input{flex:1;min-width:0;min-height:44px;padding:8px 12px;background:#020c16;border:1px solid #ffffff33;color:#f3e6c4;font:inherit;font-size:15px;letter-spacing:.08em;text-transform:uppercase}
.loja-linha input:focus{outline:2px solid var(--gold);outline-offset:1px}
.loja-msg{margin:0;min-height:1.2em;font-size:13px;line-height:1.45}
.loja-msg.ok{color:#8fe3a0}
.loja-msg.erro{color:#ff9a8a}
/* 07/10: chegou pelo link de desbloqueio (pagina de obrigado): so o recado e o Jogar */
.loja-passo.recem-liberado :is(.loja-sub,.loja-produtos,.loja-codigo label,.loja-linha,.loja-ajuda){display:none}
.loja-passo.recem-liberado .loja-msg{font-size:16px;line-height:1.5;margin:6px 0 4px}
.loja-ajuda{font-size:11px;color:#7f97a5;line-height:1.4}
@media (max-width:560px){.abertura .loja-produtos{grid-template-columns:1fr}.loja-preco{font-size:22px}}
/* 06/10: "Marrakech" desenhado nas artes do menu vira "Marrocos". Mesmo
 * truque do "maleta" da abertura do 01: texto por cima so da palavra, sem
 * mexer na imagem. Card do 02 na selecao (coordenadas relativas ao card): */
.abertura .cap-card[data-cap="2"]::after{content:"MARROCOS";position:absolute;left:19%;width:63%;top:72.6%;height:7.8%;display:grid;place-items:center;
 background:#0b1424;color:#f3e6c4;font-family:Georgia,'Times New Roman',serif;font-weight:900;font-size:1.95em;letter-spacing:.12em;pointer-events:none;visibility:visible}
/* abertura do 02: a faixa dourada inteira e os dois paragrafos (07/10: antes
 * so a palavra e a segunda linha eram cobertas, e ficavam com outro brilho) */
.start-screen[data-cap="2"][data-passo-atual="capitulo"] .abertura::before{content:"CAPÍTULO 02 · MARROCOS";position:absolute;left:calc(6.2% / var(--f));top:27.3%;width:calc(30.2% / var(--f));height:4.3%;
 display:grid;place-items:center;background:linear-gradient(#f9dc8c,#f0c25e);color:#1a1206;font-weight:900;font-size:1.75em;letter-spacing:.06em;white-space:nowrap;pointer-events:none}
.start-screen[data-cap="2"][data-passo-atual="capitulo"] .abertura .intro:nth-of-type(2),
.start-screen[data-cap="2"][data-passo-atual="capitulo"] .abertura .intro:nth-of-type(3){display:block;position:absolute;margin:0;left:calc(4.6% / var(--f));width:calc(41% / var(--f));
 background:#0a1526;color:#f6ecd2;font-family:Georgia,'Times New Roman',serif;font-weight:700;font-size:1.72em;line-height:1.38;letter-spacing:.02em;box-shadow:0 0 .5em .45em #0a1526}
.start-screen[data-cap="2"][data-passo-atual="capitulo"] .abertura .intro:nth-of-type(2){top:52.4%;height:8.8%}
.start-screen[data-cap="2"][data-passo-atual="capitulo"] .abertura .intro:nth-of-type(3){top:61.4%;height:12.8%}
/* 06/10: rejogar desafios, no Mapa, depois de concluir o capitulo */
.treino-titulo{margin:22px 0 2px;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold)}
.treino-ajuda{margin:0 0 4px}
.map-node.treino span{color:var(--gold);font-weight:700}
/* 06/10: o cha do Hamza refeito — o copo enche e a espuma depende da altura */
.cha2{display:flex;justify-content:center;align-items:flex-end;gap:26px;margin:4px auto 0}
.cha2-medidor{position:relative;width:22px;height:250px;border:1px solid #fbcf5666;background:#051422;border-radius:3px}
.cha2-faixa{position:absolute;left:0;right:0;background:#fbcf5638;border-top:2px solid #fbcf56;border-bottom:2px solid #fbcf56}
.cha2-marca{position:absolute;left:-7px;right:-7px;height:4px;margin-bottom:-2px;background:#9fb4bf;border-radius:2px}
.cha2-marca.dentro{background:#fbcf56;box-shadow:0 0 8px #fbcf56}
.cha2-marca.alto{background:#ff8a6a}
.cha2-palco{position:relative;width:170px;height:276px}
.cha2-bule{position:absolute;left:29px;width:84px;height:67px;background:url(./assets/desafios/bule_lado.png) 0 0/100% 100% no-repeat;image-rendering:pixelated;z-index:2}
.cha2-fio{position:absolute;left:109px;width:4px;margin-left:-2px;background:linear-gradient(#e2b45c,#b8741f);opacity:0;transition:opacity .12s;z-index:1}
.cha2-fio.on{opacity:.95}
.cha2-fio.respinga::after{content:"";position:absolute;bottom:-2px;left:-14px;width:32px;height:14px;
  background:radial-gradient(circle,#d39a3c 0 2px,transparent 3px) 0 0/8px 7px;animation:cha2-pingo .25s steps(2) infinite}
@keyframes cha2-pingo{to{background-position:4px 3px}}
.cha2-copo{position:absolute;left:75px;bottom:0;width:70px;height:96px;border:3px solid #d8ecef;border-top:0;border-radius:0 0 16px 16px;
  background:#ffffff0c;overflow:hidden;box-shadow:inset 0 0 0 2px #ffffff10}
.cha2-cha{position:absolute;left:0;right:0;bottom:0;height:0;background:linear-gradient(#c98a2c,#8e5418)}
.cha2-espuma{position:absolute;left:0;right:0;height:0;background:#f6efd6}
.cha2-linha{position:absolute;left:0;right:0;bottom:82%;border-top:1px dashed #fbcf5699}
.cha2-servidos{display:flex;flex-direction:column;gap:6px}
.cha2-servidos .cha-copo{width:54px;height:54px}
.cha2-estado{text-align:center;margin:8px 0 0;font:600 12px/1.3 ui-monospace,monospace;color:#cfe0ea;letter-spacing:.04em}
@media (max-width:520px){.cha2{gap:12px}.cha2-medidor{height:230px}.cha2-servidos .cha-copo{width:40px;height:40px}}
/* 06/10: a praca e desenhada no dobro da resolucao; a tela reduz suave */
.trav.praca canvas{image-rendering:auto;width:560px;height:auto}
/* 06/10: medidor de barulho no patio do riad (o Brandt de costas no portao) */
.ruido{position:absolute;left:50%;top:76px;transform:translateX(-50%);z-index:30;display:flex;align-items:center;gap:8px;
  padding:6px 12px;background:#000c;border:1px solid #fbcf5655;border-radius:6px;font:600 11px/1 ui-monospace,monospace;color:#fffbdc;pointer-events:none}
.ruido[hidden]{display:none}
.ruido i{display:block;width:120px;height:8px;background:#ffffff1c;border-radius:4px;overflow:hidden}
.ruido b{display:block;height:100%;width:calc(var(--ruido,0) * 100%);background:#7fc9a4;transition:width .1s}
.ruido.alto b{background:#ff8a6a}
.ruido small{color:#a9bcc6;font-size:10px}
@media (max-width:600px){.ruido{top:96px}.ruido small{display:none}}
/* 06/10: vista pela luneta (desafios.js: abrirVista) */
.vista{display:grid;justify-items:center;gap:8px}
.vista-lente{position:relative;width:min(340px,78vw);aspect-ratio:1;border-radius:50%;overflow:hidden;cursor:grab;touch-action:none;
  border:6px solid #3a2a12;box-shadow:0 0 0 2px #fbcf5677,inset 0 0 40px 18px #000b}
.vista-img{position:absolute;inset:0;background-repeat:no-repeat;image-rendering:auto}
.vista-mira{position:absolute;left:50%;top:50%;width:46px;height:46px;transform:translate(-50%,-50%);border:2px solid #fffbdc88;border-radius:50%;pointer-events:none}
.vista-mira::before,.vista-mira::after{content:"";position:absolute;background:#fffbdc88}
.vista-mira::before{left:50%;top:-14px;bottom:-14px;width:2px;margin-left:-1px}
.vista-mira::after{top:50%;left:-14px;right:-14px;height:2px;margin-top:-1px}
.vista-lente.mirando .vista-mira{border-color:#fbcf56;box-shadow:0 0 10px #fbcf56}
.vista-legenda{margin:0;min-height:1.4em;font:600 14px/1.4 ui-monospace,monospace;color:#fbcf56;text-align:center}
.vista-botoes{display:flex;gap:8px}
.vista-botoes button{width:56px;height:44px;background:#051422;border:1px solid #fbcf5666;color:var(--cream);font-size:18px;touch-action:none}

/* 06/10: aviso enquanto a cena espera o fundo e as folhas de sprite */
.carregando{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:40;display:flex;align-items:center;gap:10px;
 padding:10px 16px;border-radius:8px;background:rgba(10,16,24,.82);color:#f3e6c4;font:600 14px/1 var(--mono,monospace);letter-spacing:.06em;pointer-events:none}
.carregando[hidden]{display:none}
.carregando i{width:14px;height:14px;border:2px solid rgba(243,230,196,.3);border-top-color:#e7b85a;border-radius:50%;animation:girar .8s linear infinite}
@keyframes girar{to{transform:rotate(360deg)}}

/* 06/10 ("cards dos menus: tamanho do texto, definicao e funcao").
 * Desktop: a arte desenha o 01 ja aceso; com outro escolhido, os que nao
 * estao escolhidos apagam um pouco e so um card fica aceso. Duplo clique no
 * card ja seleciona (game.js). O aviso fica entre os dois botoes de baixo. */
.abertura .capitulos-grid:has(.selected) .cap-card:not(.selected)::before{content:'';position:absolute;inset:0;background:#01060c8c;border-radius:.4em;pointer-events:none}
.abertura .cap-card:not(.selected):hover::before{background:#01060c40}
.abertura .cap-aviso{top:85.6%;width:38%;font-size:.84em;line-height:1.38;padding:.4em .9em}
/* Celular em pe: a arte 16:9 inteira deixa o card com ~80 px e letra de 8 px.
 * Vira uma lista em HTML: miniatura recortada da propria arte de cada card,
 * nome, estado e o que o botao faz em letra legivel, e os botoes de verdade
 * fixos embaixo. O topo mostra o logo da mesma arte. */
@media (max-aspect-ratio:5/4){
 .start-screen[data-passo-atual="capitulos"]{display:block;overflow:hidden}
 .start-screen[data-passo-atual="capitulos"] .abertura{width:100vw;height:100svh;aspect-ratio:auto;overflow-y:auto;font-size:16px;
  background:linear-gradient(#01060c00 0,#01060c00 13.5svh,#01060c 18.5svh),url(./assets/ui/menu_capitulos_02.webp) center top/auto 66svh no-repeat,#01060c;
  padding:calc(20svh + env(safe-area-inset-top)) 16px calc(96px + env(safe-area-inset-bottom))}
 .start-screen[data-passo-atual="capitulos"] .abertura .passo-titulo{display:block;margin:0 0 12px;text-align:center;color:#fbcf56;font-size:15px;letter-spacing:.2em;text-transform:uppercase}
 .start-screen[data-passo-atual="capitulos"] .capitulos-grid{display:grid;grid-template-columns:1fr;gap:10px}
 .start-screen[data-passo-atual="capitulos"] .abertura .passo .cap-card{position:relative;left:auto;top:auto;width:auto;height:auto;min-height:92px;
  display:grid;grid-template-columns:104px 1fr;grid-template-rows:auto auto auto;column-gap:12px;align-content:center;padding:8px 12px 8px 8px;
  background:#071626;border:1px solid #fbcf5640;border-radius:8px;color:#f3e6c4;text-align:left;box-shadow:none}
 .start-screen[data-passo-atual="capitulos"] .abertura .passo .cap-card *{visibility:visible}
 .start-screen[data-passo-atual="capitulos"] .abertura .passo .cap-card.selected{border-color:#fbcf56;box-shadow:0 0 0 2px #fbcf56,0 0 18px 2px #fbcf5655!important;background:#0c2033}
 .start-screen[data-passo-atual="capitulos"] .abertura .capitulos-grid .cap-card::before{content:'';position:static;grid-row:1/4;width:104px;height:76px;border-radius:5px;
  background:url(./assets/ui/menu_capitulos_02.webp) no-repeat;--tw:104px;
  background-size:calc(var(--tw) * 100 / var(--cw)) auto;
  background-position:calc(var(--tw) * var(--cx) / var(--cw) * -1) calc(var(--tw) * 100 / var(--cw) / 1.7768 * var(--cy) / -100)}
 .start-screen[data-passo-atual="capitulos"] .cap-card[data-cap="1"]{--cx:8.2;--cy:37.5;--cw:18.9}
 .start-screen[data-passo-atual="capitulos"] .cap-card[data-cap="2"]{--cx:30.4;--cy:37.5;--cw:18.9}
 .start-screen[data-passo-atual="capitulos"] .cap-card[data-cap="3"]{--cx:51.8;--cy:37.5;--cw:18.9}
 .start-screen[data-passo-atual="capitulos"] .cap-card[data-cap="4"]{--cx:73.4;--cy:37.5;--cw:18.9}
 .start-screen[data-passo-atual="capitulos"] .cap-card b{grid-column:2;font-size:16px;letter-spacing:.04em;color:#f3e6c4;line-height:1.2}
 .start-screen[data-passo-atual="capitulos"] .abertura .cap-card .cap-estado{position:static;grid-column:2;grid-row:2;display:block;min-height:0;padding:0;margin-top:4px;background:none;text-align:left}
 .start-screen[data-passo-atual="capitulos"] .abertura .cap-card .cap-rotulo{font-size:13px;letter-spacing:.1em;line-height:1.2}
 .start-screen[data-passo-atual="capitulos"] .abertura .cap-card .cap-acao{display:block;position:static;grid-column:2;grid-row:3;margin-top:4px;padding:0;background:none;box-shadow:none;
  color:#cfe0ea;font-weight:500;font-size:12.5px;text-align:left}
 .start-screen[data-passo-atual="capitulos"] .abertura .cap-card .cap-acao[hidden]{display:none}
 .start-screen[data-passo-atual="capitulos"] .abertura .cap-aviso{position:static;transform:none;width:auto;margin:14px 0 0;font-size:14px;line-height:1.5;text-align:left;padding:12px 14px;border-radius:8px}
 .start-screen[data-passo-atual="capitulos"] .abertura [data-passo="capitulos"] .passo-acoes{position:fixed;left:0;right:0;bottom:0;z-index:3;display:grid;grid-template-columns:1fr 1.6fr;gap:10px;
  padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(#01060c00,#01060c 30%)}
 .start-screen[data-passo-atual="capitulos"] .abertura [data-passo="capitulos"] .passo-acoes button{position:static;width:auto;height:52px;color:#f3e6c4;border:1px solid #fbcf5699;
  background:#0b1a2a;border-radius:8px;font-weight:800;font-size:15px;line-height:1;letter-spacing:.08em;text-transform:uppercase}
 .start-screen[data-passo-atual="capitulos"] .abertura [data-passo="capitulos"] .passo-acoes button *{visibility:visible}
 .start-screen[data-passo-atual="capitulos"] .abertura [data-passo="capitulos"] .passo-acoes #selecionar-capitulo{background:linear-gradient(#f7d77c,#e8b54a);color:#1a1206;border-color:#fbcf56}
 .start-screen[data-passo-atual="capitulos"] .abertura [data-passo="capitulos"] [data-voltar]::after,.start-screen[data-passo-atual="capitulos"] .abertura #selecionar-capitulo::after{content:none}
 .start-screen[data-passo-atual="capitulos"] .abertura #selecionar-capitulo{width:auto;height:52px}
 /* no toque o :hover gruda no ultimo card tocado: so o escolhido brilha */
 .start-screen[data-passo-atual="capitulos"] .abertura .passo .cap-card:not(.selected):hover,.start-screen[data-passo-atual="capitulos"] .abertura .passo .cap-card:not(.selected):focus-visible{box-shadow:none;background:#071626}
 /* o "MARROCOS" que cobre o "MARRAKECH" desenhado so existe no card da arte grande */
 .start-screen[data-passo-atual="capitulos"] .abertura .cap-card[data-cap="2"]::after{content:none}
}
/* celular deitado (tela baixa): o aviso tem piso de letra e encosta no pe da tela */
@media (min-aspect-ratio:5/4) and (max-height:520px){
 .abertura .cap-aviso{top:auto;bottom:3px;width:39%;font-size:max(10px,.8em);line-height:1.2;padding:.3em .6em;max-height:24%;overflow:auto}
}
/* 06/10: escolha de personagem no celular em pe. A arte inteira (16:9) deixava
 * os dois personagens com ~70 px; agora so a metade do meio da propria arte
 * (25% a 75% da largura), onde eles estao, e Voltar/Confirmar viram botoes de
 * verdade no pe da tela (os desenhados ficam fora do recorte). */
@media (max-aspect-ratio:5/4){
 .start-screen[data-passo-atual="personagem"]{--f:.5;--ar:.8884}
 .start-screen[data-passo-atual="personagem"] .abertura{background-position:50% top}
 .start-screen[data-passo-atual="personagem"] .abertura .gender-option[data-gender="male"]{left:7.4%;width:39.8%}
 .start-screen[data-passo-atual="personagem"] .abertura .gender-option[data-gender="female"]{left:52.6%;width:40%}
 .start-screen[data-passo-atual="personagem"] .abertura [data-passo="personagem"] .passo-acoes{position:fixed;left:0;right:0;bottom:0;z-index:3;display:grid;grid-template-columns:1fr 1.6fr;gap:10px;
  padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(#01060c00,#01060c 30%)}
 .start-screen[data-passo-atual="personagem"] .abertura [data-passo="personagem"] .passo-acoes button{position:static;width:auto;height:52px;color:#f3e6c4;border:1px solid #fbcf5699;
  background:#0b1a2a;border-radius:8px;font-weight:800;font-size:15px;line-height:1;letter-spacing:.08em;text-transform:uppercase}
 .start-screen[data-passo-atual="personagem"] .abertura [data-passo="personagem"] .passo-acoes button *{visibility:visible}
 .start-screen[data-passo-atual="personagem"] .abertura #comecar{width:auto;height:52px;background:linear-gradient(#f7d77c,#e8b54a);color:#1a1206;border-color:#fbcf56}
 .start-screen[data-passo-atual="personagem"] .abertura .aviso-novo{position:fixed;left:16px;right:16px;top:auto;bottom:calc(84px + env(safe-area-inset-bottom));transform:none;white-space:normal;
  font-size:13px;line-height:1.4;text-align:center;padding:8px 12px;border-radius:6px}
}
/* figurante que anda com um quadro so (game.js: balanco): o corpo gira no pe */
.entity.figurante .sprite{transform-origin:50% 100%}

/* 06/10: figurante com uma pose de acao so (catalogo `vida`, game.js). O corpo
 * se mexe pela propria arte: gira no pe (transform-origin do .sprite) com as
 * propriedades `rotate`/`translate`, que somam ao espelhamento do transform. */
.entity.vida-mexe .sprite{animation:vida-mexe .75s ease-in-out infinite}
@keyframes vida-mexe{0%,100%{rotate:-1.6deg;translate:0 0}50%{rotate:1.6deg;translate:0 -1.2%}}
.entity.vida-toca .sprite{animation:vida-toca 1.2s ease-in-out infinite}
@keyframes vida-toca{0%,100%{rotate:-2.4deg}50%{rotate:2.4deg}}
.entity.vida-toca::before,.entity.vida-toca::after,.entity.vida-notas::before,.entity.vida-notas::after{content:'\266A';position:absolute;left:58%;top:6%;color:#fbcf56;font-size:clamp(9px,1.1vw,16px);
 text-shadow:0 1px 2px #0008;opacity:0;animation:vida-nota 2.6s linear infinite;pointer-events:none}
.entity.vida-toca::after,.entity.vida-notas::after{content:'\266B';left:70%;animation-delay:1.3s}
@keyframes vida-nota{0%{opacity:0;transform:translate(0,0)}15%{opacity:1}100%{opacity:0;transform:translate(.8em,-2.4em)}}
@media (prefers-reduced-motion:reduce){.entity[class*="vida-"] .sprite{animation:none}.entity.vida-toca::before,.entity.vida-toca::after,.entity.vida-notas::before,.entity.vida-notas::after{display:none}}

/* 07/10 ("algumas partes estao escuras"): no celular em pe a arte do menu
 * ocupa uma faixa e sobrava preto em cima e embaixo. Atras dela vai a mesma
 * arte, esticada, desfocada e escurecida: a tela inteira fica preenchida. */
.start-screen{position:relative;isolation:isolate;overflow:hidden}
.start-screen:before{content:"";position:absolute;inset:-40px;z-index:-1;pointer-events:none;
 background:var(--fundo,none) center/cover no-repeat;filter:blur(18px) brightness(.42) saturate(1.15)}
.start-screen[data-passo-atual="titulo"]{--fundo:url(./assets/ui/menu_titulo.webp)}
.start-screen:is([data-passo-atual="menu"],[data-passo-atual="config"],[data-passo-atual="loja"],[data-passo-atual="confirmar-novo"]){--fundo:url(./assets/ui/menu_principal.webp)}
.start-screen[data-passo-atual="personagem"]{--fundo:url(./assets/ui/menu_personagem.webp)}
.start-screen[data-passo-atual="capitulos"]{--fundo:url(./assets/ui/menu_capitulos_02.webp)}
.start-screen[data-passo-atual="capitulo"]{--fundo:url(./assets/ui/menu_capitulo.webp)}
.start-screen[data-cap="2"][data-passo-atual="capitulo"]{--fundo:url(./assets/ui/menu_capitulo_02.webp)}
/* Loja, "Novo jogo?" e Opcoes: cartao sobre a tela inteira (antes ficava preso
 * na faixa da arte; deitado, o topo da loja era cortado e as Opcoes ficavam
 * por cima do menu). Os espacadores centralizam e, se nao couber, rola. */
.abertura .cartao-passo:not([hidden]),.abertura [data-passo="config"]:not([hidden]){position:fixed;inset:0;z-index:5;
 display:flex;flex-direction:column;align-items:center;justify-content:flex-start;align-content:normal;overflow-y:auto;padding:16px 0;
 background:#01060cc7;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.abertura .cartao-passo:not([hidden]):before,.abertura .cartao-passo:not([hidden]):after,
.abertura [data-passo="config"]:not([hidden]):before,.abertura [data-passo="config"]:not([hidden]):after{content:"";flex:1 0 0;position:static;border:0}
.abertura .cartao-passo>*,.abertura [data-passo="config"]>*{flex:none}
/* O selo "Powered by Netlify" (o Netlify injeta na pagina) cobria o direcional
 * e o botao E no celular. O Netlify deixa desligar no plano gratis
 * (Project configuration > General); isto garante enquanto isso. */
#nl-badge-frame{display:none!important}
/* ============================================ CAPITULO 03 · KYOTO (13/10)
 * Abertura: arte propria (menu_capitulo_03), com o texto desenhado e os
 * botoes nos mesmos lugares das do 01 e do 02. Selecao: menu_capitulos_03
 * (o Kyoto desenhado como DISPONIVEL) so quando o capitulo esta liberado
 * (data-kyoto, game.js: atualizarCapitulos); antes disso, a arte do 02. */
.start-screen[data-cap="3"][data-passo-atual="capitulo"] .abertura{background-image:url(./assets/ui/menu_capitulo_03.webp)}
.start-screen[data-kyoto="1"][data-passo-atual="capitulos"] .abertura{background-image:url(./assets/ui/menu_capitulos_03.webp)}
/* a arte nova ja diz MARROCOS no card do 02 */
.start-screen[data-kyoto="1"] .abertura .cap-card[data-cap="2"]::after{content:none}
@media (max-aspect-ratio:5/4){
 .start-screen[data-kyoto="1"][data-passo-atual="capitulos"] .abertura{
  background:linear-gradient(#01060c00 0,#01060c00 13.5svh,#01060c 18.5svh),url(./assets/ui/menu_capitulos_03.webp) center top/auto 66svh no-repeat,#01060c}
 .start-screen[data-kyoto="1"][data-passo-atual="capitulos"] .abertura .capitulos-grid .cap-card::before{background-image:url(./assets/ui/menu_capitulos_03.webp)}
}
@media (min-aspect-ratio:5/4) and (max-height:520px){
 .start-screen[data-kyoto="1"][data-passo-atual="capitulos"]{--fundo:url(./assets/ui/menu_capitulos_03.webp)}
 .start-screen[data-cap="3"][data-passo-atual="capitulo"]{--fundo:url(./assets/ui/menu_capitulo_03.webp)}
}
/* A casa de cha a noite: a arte e de fim de tarde; um filtro de luz escurece
 * cenario e atores juntos (as lanternas continuam quentes). */
.world[data-filtro="noite"] .scene-bg{filter:brightness(.6) saturate(.9) hue-rotate(-6deg) contrast(1.05)}
.world[data-filtro="noite"] .entity .sprite{filter:brightness(.78) saturate(.92)}
/* 14/10: a madrugada de Kyoto (4h50, antes do sol) e o anoitecer de Fushimi
 * Inari, sobre artes desenhadas de dia: o mesmo truque do filtro de noite. */
.world[data-filtro="madrugada"] .scene-bg{filter:brightness(.52) saturate(.7) hue-rotate(18deg) contrast(1.08)}
.world[data-filtro="madrugada"] .entity .sprite{filter:brightness(.72) saturate(.8) hue-rotate(10deg)}
.world[data-filtro="anoitecer"] .scene-bg{filter:brightness(.74) saturate(1.08) sepia(.18) hue-rotate(-8deg) contrast(1.05)}
.world[data-filtro="anoitecer"] .entity .sprite{filter:brightness(.86) saturate(1.02)}
/* ---------------------------------------- minijogos de Kyoto (desafios_ky.js) */
.ky-luz,.ky-kintsugi,.ky-shateki{display:grid;place-items:center;background:#000}
.ky-luz canvas,.ky-kintsugi canvas,.ky-shateki canvas{display:block;max-width:100%;height:auto;max-height:min(62vh,560px);touch-action:none;image-rendering:auto}
.ky-kintsugi canvas{max-height:min(64vh,600px)}
.ky-botoes{display:flex;justify-content:center;align-items:center;gap:10px;margin-top:8px;flex-wrap:wrap}
.ky-botoes button{min-height:42px;padding:6px 14px}
.ky-botoes button.on{background:#2d5b3a;border-color:#5dff8a;color:#d9ffe4}
.ky-ouro{font:700 13px monospace;color:#fbcf56}
.ky-furtivo canvas{display:block;width:min(100%,calc(min(50vh,520px) * 800 / 480));height:auto;max-height:none;touch-action:none;image-rendering:pixelated}
.desafio:is([data-desafio="seguir"],[data-desafio="torii"]) .ky-dpad{display:grid;grid-template-columns:repeat(3,58px) auto;grid-template-rows:repeat(2,48px);gap:6px;justify-content:center;align-items:stretch}
.desafio:is([data-desafio="seguir"],[data-desafio="torii"]) .ky-dpad button{width:auto;height:auto;touch-action:none}
.ky-dpad [data-d="0,-1"]{grid-column:2;grid-row:1}.ky-dpad [data-d="-1,0"]{grid-column:1;grid-row:2}
.ky-dpad [data-d="0,1"]{grid-column:2;grid-row:2}.ky-dpad [data-d="1,0"]{grid-column:3;grid-row:2}
.ky-dpad .ky-acao{grid-column:4;grid-row:1;min-width:150px;font-size:.85em}.ky-dpad .ky-acao:disabled{opacity:.45}
.ky-dpad .fuga-devagar{grid-column:4;grid-row:2;min-width:150px}
.ky-dpad .ky-marcel{grid-column:5;grid-row:1 / 3;font-size:.85em;max-width:120px}
@media (max-height:560px){
  .puzzle.desafio:is([data-desafio="seguir"],[data-desafio="torii"]){display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto 1fr auto auto;column-gap:16px;align-items:center;width:min(980px,98vw)}
  .desafio:is([data-desafio="seguir"],[data-desafio="torii"]) #desafio-ajuda{display:none}
  .desafio:is([data-desafio="seguir"],[data-desafio="torii"]) .desafio-corpo{display:contents}
  .desafio:is([data-desafio="seguir"],[data-desafio="torii"]) .ky-furtivo{grid-column:1;grid-row:1 / -1}
  .desafio:is([data-desafio="seguir"],[data-desafio="torii"]) .ky-furtivo canvas{width:auto;height:calc(100svh - 40px)}
  .desafio:is([data-desafio="seguir"],[data-desafio="torii"]) :is(.eyebrow,h2,.ky-dpad,.puzzle-status,.desafio-rodape){grid-column:2}
  .desafio:is([data-desafio="seguir"],[data-desafio="torii"]) .ky-dpad{grid-row:3;grid-template-columns:repeat(3,52px);grid-template-rows:repeat(2,46px) auto auto;margin:0}
  .desafio:is([data-desafio="seguir"],[data-desafio="torii"]) .ky-dpad :is(.ky-acao,.fuga-devagar,.ky-marcel){grid-column:1 / -1;grid-row:auto;min-width:0}
  .desafio:is([data-desafio="seguir"],[data-desafio="torii"]) .puzzle-status{grid-row:4;min-height:2.6em;margin:6px 0}
  .desafio:is([data-desafio="seguir"],[data-desafio="torii"]) .desafio-rodape{grid-row:5;justify-content:center}
  .ky-luz canvas,.ky-kintsugi canvas,.ky-shateki canvas{max-height:calc(100svh - 170px)}
}
/* 19/10 ("os minijogos estão truncados"): no celular deitado, os minijogos de
 * Kyoto que nao sao de andar ficam em duas colunas, como as fugas: a imagem na
 * altura toda; titulo, ajuda, botoes, aviso e dica ao lado. Antes era preciso
 * rolar para ver a mesa dos tres pedacos, os botoes e o aviso do que aconteceu. */
@media (max-height:560px) and (min-aspect-ratio:5/4){
  .puzzle.desafio:is([data-desafio="contraluz_pagina"],[data-desafio="contraluz"],[data-desafio="kintsugi"],[data-desafio="encaixe"],[data-desafio="bordas"],[data-desafio="aburidashi"],[data-desafio="shateki"],[data-desafio="matcha"]){display:grid;grid-template-columns:auto minmax(200px,1fr);grid-auto-rows:min-content;column-gap:16px;align-content:center;width:min(980px,98vw);max-height:98svh;padding:10px 14px}
  .desafio:is([data-desafio="contraluz_pagina"],[data-desafio="contraluz"],[data-desafio="kintsugi"],[data-desafio="encaixe"],[data-desafio="bordas"],[data-desafio="aburidashi"],[data-desafio="shateki"],[data-desafio="matcha"]) .desafio-corpo{display:contents}
  .desafio:is([data-desafio="contraluz_pagina"],[data-desafio="contraluz"],[data-desafio="kintsugi"],[data-desafio="encaixe"],[data-desafio="bordas"],[data-desafio="aburidashi"],[data-desafio="shateki"],[data-desafio="matcha"]) :is(.ky-luz,.ky-kintsugi,.ky-shateki,.mesa-mapas){grid-column:1;grid-row:1 / span 8;align-self:center}
  .desafio:is([data-desafio="contraluz_pagina"],[data-desafio="contraluz"],[data-desafio="kintsugi"],[data-desafio="encaixe"],[data-desafio="bordas"],[data-desafio="aburidashi"],[data-desafio="shateki"],[data-desafio="matcha"]) :is(.eyebrow,h2,#desafio-ajuda,.ky-botoes,.trav-botoes,.bord-botoes,.puzzle-status,.desafio-socorro,.desafio-rodape){grid-column:2}
  .desafio:is([data-desafio="contraluz_pagina"],[data-desafio="contraluz"],[data-desafio="kintsugi"],[data-desafio="encaixe"],[data-desafio="bordas"],[data-desafio="aburidashi"],[data-desafio="shateki"],[data-desafio="matcha"]) h2{font-size:17px;margin:0 0 2px;padding-right:34px}
  .desafio:is([data-desafio="contraluz_pagina"],[data-desafio="contraluz"],[data-desafio="kintsugi"],[data-desafio="encaixe"],[data-desafio="bordas"],[data-desafio="aburidashi"],[data-desafio="shateki"],[data-desafio="matcha"]) #desafio-ajuda{font-size:11.5px;line-height:1.4;margin:4px 0}
  .desafio:is([data-desafio="contraluz_pagina"],[data-desafio="contraluz"],[data-desafio="kintsugi"],[data-desafio="encaixe"],[data-desafio="bordas"],[data-desafio="aburidashi"],[data-desafio="shateki"],[data-desafio="matcha"]) :is(.ky-luz,.ky-kintsugi,.ky-shateki) canvas{max-height:calc(100svh - 36px);max-width:62vw;width:auto}
  .desafio:is([data-desafio="encaixe"],[data-desafio="bordas"]) .mesa-mapas{margin:0}
  .desafio:is([data-desafio="encaixe"],[data-desafio="bordas"]) .mesa-mapas canvas{max-height:calc(100svh - 36px);max-width:60vw;width:auto}
  .desafio:is([data-desafio="contraluz_pagina"],[data-desafio="contraluz"],[data-desafio="kintsugi"],[data-desafio="encaixe"],[data-desafio="bordas"],[data-desafio="aburidashi"],[data-desafio="shateki"],[data-desafio="matcha"]) :is(.ky-botoes,.bord-botoes){justify-content:flex-start;margin:6px 0 0}
  .desafio:is([data-desafio="contraluz_pagina"],[data-desafio="contraluz"],[data-desafio="kintsugi"],[data-desafio="encaixe"],[data-desafio="bordas"],[data-desafio="aburidashi"],[data-desafio="shateki"],[data-desafio="matcha"]) .desafio-rodape{justify-content:flex-start}
}

/* 20/10 — CONVERSAS VIVAS (game.js: atualizarBalao, conversarFigurante, opcoesDeMostrar).
 * O balao de quem comenta quando voce passa perto: por cima das pessoas, com a
 * ponta para baixo, e some sozinho. Nao recebe toque (o jogo continua). */
.balao{position:absolute;z-index:2000;transform:translate(-50%,-100%);max-width:min(34%,260px);width:max-content;
 padding:6px 9px;background:#fff8e6;color:#2a1c10;border:2px solid #2a1c10;border-radius:10px;box-shadow:0 3px 0 #0005;
 font:600 clamp(10px,1.35vw,13px)/1.3 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;text-align:center;pointer-events:none;
 animation:balao-entra .22s ease-out both}
.balao:after{content:"";position:absolute;left:50%;bottom:-8px;transform:translateX(-50%);border:7px solid transparent;border-top-color:#2a1c10;border-bottom:0}
@keyframes balao-entra{from{opacity:0;transform:translate(-50%,-80%) scale(.9)}}
@media (prefers-reduced-motion:reduce){.balao{animation:none}}
@media (max-width:700px){.balao{max-width:min(48%,220px);font-size:11px;padding:5px 7px}}
/* "Mostrar uma anotação do Caderno…" e "Mostrar algo da Mochila…" no fim dos assuntos */
.escolha.mostrar{border-style:dashed;color:var(--gold)}

/* ====================================================== MODO ANDAR (20/10)
 * "Os minigames, principalmente aqueles de andar, ficam numa tela mt pequena
 * e difícil de controlar". No celular, as fugas, a cisterna, seguir a Lia e os
 * torii ganham a tela toda (desafios.js: modoAndar). O mapa fica numa janela
 * que segue o jogador (a camera mexe o canvas por transform); a ajuda vira um
 * cartao por cima do mapa (o "?" traz de volta); a cruz fica de um lado e as
 * acoes do outro, como num controle, sem cobrir o mapa.
 *   em pe:    titulo | mapa | aviso | cruz e acoes
 *   deitado:  cruz | mapa | titulo, aviso, acoes e dica
 * Seletor com #desafio: passa por cima das regras antigas de cada desafio. */
/* em pe o mapa vai de uma borda a outra (o recuo e so o do recorte da tela);
 * titulo, aviso e controles ficam a 8 px da borda */
#desafio.modo-andar{inset:0;left:0;top:0;transform:none;width:auto;height:auto;max-width:none;max-height:none;overflow:hidden;border:0;box-shadow:none;background:#02101c;
  padding:max(6px,env(safe-area-inset-top)) env(safe-area-inset-right) max(8px,env(safe-area-inset-bottom)) env(safe-area-inset-left);
  display:grid;align-items:stretch;justify-items:stretch;align-content:stretch;column-gap:10px;row-gap:6px;
  grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto auto auto;
  grid-template-areas:"tit tit" "mapa mapa" "stat stat" "pad acoes" "pad dica"}
#desafio.modo-andar>.eyebrow{display:none}
#desafio.modo-andar>h2{grid-area:tit;margin:0;padding:0 104px 0 10px;font-size:15px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#desafio.modo-andar #desafio-fechar{top:max(6px,env(safe-area-inset-top));right:max(8px,env(safe-area-inset-right));width:44px;height:36px;padding:0;line-height:1;font-size:28px;z-index:6}
#desafio.modo-andar .andar-como{grid-area:tit;justify-self:end;align-self:center;margin:0 58px 0 0;width:36px;height:36px;padding:0;border-radius:50%;border:1px solid #fbcf5699;background:#051422;color:var(--gold);font-weight:900;font-size:17px;z-index:6}
#desafio.modo-andar.ajuda-aberta .andar-como{background:var(--gold);color:#07111c}
#desafio.modo-andar .desafio-corpo{display:contents}
/* a janela do mapa: o canvas vai dentro no tamanho dele, e a camera o move */
#desafio.modo-andar .andar-vista{grid-area:mapa;position:relative;display:block;overflow:hidden;min-width:0;min-height:0;margin:0;background:transparent;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
#desafio.modo-andar .andar-vista canvas{position:absolute;left:0;top:0;transform-origin:0 0;image-rendering:pixelated;touch-action:none}
/* a ajuda: cartao por cima do mapa; aberto ao entrar, some no primeiro toque */
#desafio.modo-andar #desafio-ajuda{display:none;grid-area:mapa;align-self:start;justify-self:center;z-index:4;margin:8px;max-width:min(560px,calc(100% - 16px));max-height:calc(100% - 16px);overflow:auto;
  padding:12px 14px;background:#06111df5;border:1px solid var(--gold);box-shadow:0 10px 30px #000a;color:#f3ead2;font-size:13px;line-height:1.5;cursor:pointer}
#desafio.modo-andar.ajuda-aberta #desafio-ajuda{display:block}
#desafio.modo-andar #desafio-ajuda::before{content:'Como jogar';display:block;margin-bottom:4px;color:var(--gold);font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}
#desafio.modo-andar #desafio-ajuda::after{content:'Toque para fechar · o ? mostra de novo';display:block;margin-top:8px;color:var(--gold);font-size:11px;font-weight:700}
/* o aviso: tres linhas fixas embaixo do mapa (o mapa nao pula quando ele muda);
 * a altura que o mapa nao usa fica embaixo dele (--andar-sobra, desafios.js) */
#desafio.modo-andar #desafio-status{grid-area:stat;margin:0 0 var(--andar-sobra,0px);min-height:0;height:calc(3 * 1.35em + 4px);overflow:hidden;padding:2px 10px;font-size:12.5px;line-height:1.35}
#desafio.modo-andar #desafio-socorro{grid-area:mapa;align-self:end;z-index:5;margin:8px;max-height:calc(100% - 16px);overflow:auto;box-shadow:0 10px 30px #000a}
#desafio.modo-andar .desafio-rodape{grid-area:dica;align-self:end;justify-content:stretch;margin-right:8px}
#desafio.modo-andar #desafio-dica{width:100%;min-height:44px;padding:6px 8px;font-size:11px;line-height:1.25}
/* a cruz: controle de polegar (o dedo escolhe a seta pelo lado; arrastar troca) */
#desafio.modo-andar .andar-pad{grid-area:pad;align-self:end;justify-self:start;display:grid;grid-template-columns:repeat(3,60px);grid-template-rows:repeat(3,60px);gap:4px;margin:0 0 0 8px;
  touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
#desafio.modo-andar .andar-pad::before{content:'';grid-area:2/2;margin:13px;border-radius:50%;border:1px dashed #fbcf5655}
#desafio.modo-andar .andar-pad button{width:auto;height:auto;min-width:0;padding:0;pointer-events:none;font-size:22px;border-radius:12px;background:#051422e6;border:1px solid #fbcf5688;color:var(--cream)}
#desafio.modo-andar .andar-pad button.on{background:var(--gold);border-color:var(--gold);color:#07111c}
#desafio.modo-andar .andar-pad [data-d="0,-1"]{grid-area:1/2}
#desafio.modo-andar .andar-pad [data-d="-1,0"]{grid-area:2/1}
#desafio.modo-andar .andar-pad [data-d="1,0"]{grid-area:2/3}
#desafio.modo-andar .andar-pad [data-d="0,1"]{grid-area:3/2}
/* as acoes, do outro lado: Acao em cima, larga; Devagar e o sinal ao Marcel embaixo */
#desafio.modo-andar .andar-acoes{grid-area:acoes;align-self:end;display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-right:8px}
#desafio.modo-andar .andar-acoes:empty{display:none}
#desafio.modo-andar .andar-acoes button{grid-column:auto;grid-row:auto;width:100%;min-width:0;max-width:none;min-height:56px;margin:0;padding:6px 8px;border-radius:12px;
  background:#051422;border:1px solid #fbcf5666;color:var(--cream);font-size:13px;line-height:1.2;touch-action:manipulation}
#desafio.modo-andar .andar-acoes .ky-acao{grid-column:1/-1;min-height:60px;font-size:14px;font-weight:800;border-color:#5dff8a99;background:#0b2a1c}
#desafio.modo-andar .andar-acoes .ky-acao:disabled{opacity:.45;border-color:#ffffff30;background:#051422}
#desafio.modo-andar .andar-acoes .fuga-devagar:last-child{grid-column:1/-1}
#desafio.modo-andar .andar-acoes .fuga-devagar.on{background:#2d5b3a;border-color:#5dff8a;color:#d9ffe4}
#desafio.modo-andar .andar-acoes .ky-marcel:disabled{opacity:.45}
body.texto-grande #desafio.modo-andar #desafio-ajuda{font-size:15px}
body.texto-grande #desafio.modo-andar #desafio-status{font-size:14px}
/* deitado: a cruz na esquerda, o mapa no meio, o resto na direita */
@media (min-aspect-ratio:5/4){
  #desafio.modo-andar{padding:max(6px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));
    grid-template-columns:auto minmax(0,1fr) minmax(150px,176px);grid-template-rows:auto minmax(0,1fr) auto auto;
    grid-template-areas:"pad mapa tit" "pad mapa stat" "pad mapa acoes" "pad mapa dica"}
  #desafio.modo-andar>h2{padding:3px 40px 0 0;font-size:14px;line-height:1.25;white-space:normal;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}
  #desafio.modo-andar .andar-como{grid-area:pad;justify-self:start;align-self:start;margin:0}
  #desafio.modo-andar #desafio-status{height:auto;margin:0;padding:2px;overflow:auto;font-size:12px}
  #desafio.modo-andar .andar-pad{grid-template-columns:repeat(3,56px);grid-template-rows:repeat(3,56px);margin:0}
  #desafio.modo-andar :is(.andar-acoes,.desafio-rodape){margin:0}
  #desafio.modo-andar .andar-acoes .ky-acao{min-height:56px}
}

/* 21/10: botao de idioma na abertura (src/i18n.js) */
.trocar-idioma{position:fixed;top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right));z-index:60;font:600 13px/1 system-ui,sans-serif;letter-spacing:.02em;color:#fbcf56;background:rgba(0,14,27,.82);border:1px solid rgba(251,207,86,.55);border-radius:999px;padding:9px 14px;cursor:pointer}
.trocar-idioma:hover,.trocar-idioma:focus-visible{background:#fbcf56;color:#001628;outline:none}
.start-screen.hidden .trocar-idioma,.start-screen[hidden] .trocar-idioma{display:none}
/* 21/10 ingles: a arte da abertura escreve "Novo jogo" e "Opcoes" em portugues;
 * no ingles o rotulo cobre os dois sempre, e o do lugar dourado fica dourado. */
html[lang="en"] .menu-principal[data-save="0"] #novo-jogo .rotulo,html[lang="en"] .menu-principal[data-save="0"] #abrir-config .rotulo{display:grid}
html[lang="en"] .menu-principal[data-save="0"] #novo-jogo .rotulo{background:linear-gradient(#f7d77c,#e8b54a);color:#1a1206;font-size:1.5em}

/* 21/10 ingles por cima da arte (index.html: .arte-en). Medidas em % da arte; 1em = 1% da largura da arte. */
.arte-en{display:none}
html[lang="en"] .arte-en{display:block;position:absolute;inset:0;pointer-events:none;z-index:3}
html[lang="en"] .arte-en>span{display:none;position:absolute;place-items:center;text-align:center;line-height:1.15;font-family:ui-monospace,"SFMono-Regular",Menlo,monospace;font-weight:900;text-transform:none;white-space:nowrap}
html[lang="en"] .start-screen[data-passo-atual="titulo"] .arte-en>[data-telas~="titulo"],
html[lang="en"] .start-screen[data-passo-atual="menu"] .arte-en>[data-telas~="menu"],
html[lang="en"] .start-screen[data-passo-atual="personagem"] .arte-en>[data-telas~="personagem"],
html[lang="en"] .start-screen[data-passo-atual="capitulos"] .arte-en>[data-telas~="capitulos"],
html[lang="en"] .start-screen[data-cap="1"][data-passo-atual="capitulo"] .arte-en>[data-cap1]{display:grid}
.arte-en .ae-apresenta{background:#081120;color:#e9dcb6;font-size:1.02em;letter-spacing:.26em;box-shadow:0 0 .4em .3em #081120}
.arte-en .ae-frase{background:#071222;color:#f3e6c4;font-size:1.3em;line-height:1.55;letter-spacing:.02em;text-align:left;justify-items:start;white-space:normal;box-shadow:0 0 .6em .5em #071222}
.arte-en .ae-titulo-tela{background:#0a1424;color:#f6dc8a;font-size:2em;letter-spacing:.14em;box-shadow:0 0 .5em .4em #0a1424}
.arte-en .ae-opcao{background:#0a1526;color:#f3e6c4;font-size:1.45em;letter-spacing:.12em}
.arte-en .ae-linha{background:#0b1220;color:#f3e6c4;font-size:1.2em;letter-spacing:.06em;box-shadow:0 0 .5em .4em #0b1220}
.arte-en .ae-botao{background:#0a1322;color:#f3e6c4;font-size:1.65em;letter-spacing:.12em}
.arte-en .ae-botao-ouro{background:linear-gradient(#f7d77c,#e8b54a);color:#1a1206;font-size:1.55em;letter-spacing:.08em}
.arte-en .ae-card{background:#0a1322;color:#e9dcb6;font-size:1.2em;letter-spacing:.12em;line-height:1.3}
.arte-en .ae-card b{color:#f6dc8a;font-size:1.25em;letter-spacing:.06em}
.arte-en .ae-selo{background:linear-gradient(#f7d77c,#e8b54a);color:#1a1206;font-size:1.55em;letter-spacing:.06em}
.arte-en .ae-titulo-cap{background:#0a1526;color:#f6dc8a;font-size:4.1em;line-height:1.02;letter-spacing:.04em;justify-items:start;text-align:left;text-shadow:0 .06em 0 #6a4a10;box-shadow:0 0 .2em .15em #0a1526}
/* "aperte qualquer tecla" desenhado: no ingles o proprio botao mostra o texto */
html[lang="en"] #aperte-enter{display:grid;place-items:center;background:#060e1a!important;border:1px solid #fbcf5699!important}
html[lang="en"] #aperte-enter>span{visibility:visible!important;color:#fbcf56;font-size:1.1em;letter-spacing:.2em;font-weight:900}
/* 27/10: o figurante que conversa vira para o jogador no comeco da conversa
 * com um giro curto, nao num estalo (game.js: conversarFigurante). So nele: em
 * quem anda, o espelho acompanha o passo e uma transicao atrasaria o balanco. */
.entity.figurante.fala .sprite{transition:transform .16s ease-out}
@media (prefers-reduced-motion:reduce){.entity.figurante.fala .sprite{transition:none}}
/* 27/10: o minijogo de cada lugar (src/desafios_extras.js). A marquinha no
 * chao (game.js: renderMarcasJogo) aponta o que ainda nao foi jogado. */
.marca-jogo{position:absolute;width:clamp(10px,1.1vw,17px);aspect-ratio:1;transform:translate(-50%,-50%) rotate(45deg);background:#fbcf56;border:2px solid #5a3a18;box-shadow:0 0 0 3px #fbcf5655,0 0 12px #fbcf56aa;animation:marca-jogo 1.6s ease-in-out infinite;pointer-events:none}
@keyframes marca-jogo{50%{transform:translate(-50%,-50%) rotate(45deg) scale(1.25);box-shadow:0 0 0 6px #fbcf5622,0 0 18px #fbcf56}}
@media (prefers-reduced-motion:reduce){.marca-jogo{animation:none}}
.xj-procura,.xj-mesa{display:grid;gap:10px}
.xj-rolo{overflow:auto;max-width:100%;border:2px solid #fbcf5655;border-radius:6px;-webkit-overflow-scrolling:touch}
.xj-rolo canvas{display:block;width:100%;cursor:crosshair}
@media (max-width:760px){.xj-rolo canvas{width:860px}}
.xj-lista{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}
.xj-lista li{padding:5px 9px;border:1px solid #ffffff2a;border-radius:999px;font-size:12px;background:#ffffff0d}
.xj-lista li.ok{background:#2e7d4f;border-color:#6fd39a;text-decoration:line-through}
.xj-dif{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (max-width:760px),(orientation:portrait){.xj-dif{grid-template-columns:1fr}}
.xj-dif figure{margin:0}.xj-dif figcaption{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#9fd3ff;margin-bottom:4px}
.xj-dif canvas,.xj-ventania canvas,.xj-bambu canvas{display:block;width:100%;border:2px solid #ffffff22;border-radius:6px;touch-action:manipulation}
.xj-dif canvas{cursor:crosshair}
.xj-placar{margin:8px 0 0;font-size:12px;color:#fbcf56}
.xj-relogios{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.xj-relogio{background:#ffffff08;border:1px solid #ffffff1f;border-radius:8px;padding:8px;text-align:center}
.xj-relogio.certo{border-color:#6fd39a;box-shadow:0 0 0 2px #6fd39a55}
.xj-relogio canvas{width:min(140px,100%);aspect-ratio:1}
.xj-relogio p{font-size:12px;min-height:3em;margin:6px 0}
.xj-ponteiros{display:grid;grid-template-columns:1fr 1fr;gap:4px}
.xj-ponteiros button,.xj-oferta button,.xj-acoes button,.xj-mesa button{min-height:42px;padding:8px 10px;background:#ffffff12;border:1px solid #ffffff33;border-radius:6px;color:inherit;font:inherit;cursor:pointer}
.xj-acoes button.primary,.xj-mesa button.primary{background:#fbcf56;color:#1a1206;border-color:#fbcf56;font-weight:700}
.xj-pechincha{display:grid;grid-template-columns:120px 1fr;gap:12px;align-items:start}
.xj-pechincha canvas{width:120px;height:120px;image-rendering:pixelated}
.xj-fala{margin:0 0 8px}.xj-preco{font-weight:700;color:#fbcf56;margin:0}.xj-paciencia{margin:4px 0 10px;letter-spacing:.15em}
.xj-oferta{display:flex;gap:8px;align-items:center;margin-bottom:8px}.xj-oferta strong{min-width:9ch;text-align:center;font-size:16px}
.xj-acoes{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
@media (max-width:520px){.xj-pechincha{grid-template-columns:1fr}.xj-pechincha canvas{margin:0 auto}}
.xj-zellige canvas{display:block;width:min(100%,420px);margin:0 auto;aspect-ratio:1;cursor:pointer;border-radius:6px}
.xj-pistas{margin:0;padding-left:20px;font-size:13px;display:grid;gap:4px}
.xj-tabua{display:grid;grid-template-areas:". fundo ." "porta tampo cozinha" ". salao .";grid-template-columns:1fr 1.1fr 1fr;gap:6px;align-items:center}
.xj-lugar[data-l=fundo]{grid-area:fundo}.xj-lugar[data-l=porta]{grid-area:porta}.xj-lugar[data-l=cozinha]{grid-area:cozinha}.xj-lugar[data-l=salao]{grid-area:salao}
.xj-tampo{grid-area:tampo;aspect-ratio:1.6;border-radius:50%;background:radial-gradient(#8a5a2b,#5a3a18);display:grid;place-items:center;color:#f3e6c8;font-size:11px;letter-spacing:.1em;text-transform:uppercase}
.xj-lugar small{display:block;font-size:10px;opacity:.75}.xj-lugar span{display:block;font-size:13px}
.xj-gente{display:flex;flex-wrap:wrap;gap:6px}
.xj-pessoa b{margin-right:4px}.xj-pessoa.on{background:#fbcf5633!important;border-color:#fbcf56!important}.xj-pessoa.posta{opacity:.55}
.xj-placas{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
@media (max-width:520px){.xj-placas{grid-template-columns:repeat(3,1fr)}}
.xj-carta{aspect-ratio:1.3;border-radius:8px;border:1px solid #ffffff33;background:repeating-linear-gradient(45deg,#1b2a44 0 8px,#22355a 8px 16px);color:transparent;font-size:clamp(14px,3.6vw,26px);cursor:pointer;font-weight:700}
.xj-carta.virada{background:#f3ead6;color:#1a1206}.xj-carta.par{background:#cfeedd;color:#123d2a;border-color:#6fd39a}
.xj-carta span[lang=ja],.xj-lanterna span{font-family:"Noto Sans JP","Hiragino Sans","Yu Gothic","Noto Sans CJK JP",sans-serif}
.xj-lanternas{position:relative;border-radius:8px;overflow:hidden;min-height:240px}
.xj-rua{position:absolute;inset:0;background-size:cover;background-position:center 30%;filter:brightness(.35) saturate(.8)}
.xj-fio{position:relative;display:flex;justify-content:space-around;align-items:flex-start;padding:30px 10px 40px;border-top:3px solid #3a2814;margin-top:18px}
.xj-lanterna{width:clamp(48px,14vw,80px);aspect-ratio:.72;border-radius:40% 40% 44% 44%;background:linear-gradient(90deg,#d8cdb4,#f3ead6 40%,#d8cdb4);border:2px solid #3a2814;box-shadow:inset 0 6px 0 #3a2814,inset 0 -6px 0 #3a2814;display:grid;place-items:center;font-size:clamp(18px,5vw,30px);color:#5a1a10;cursor:pointer;transition:background .12s,box-shadow .12s}
.xj-lanterna.acesa{background:radial-gradient(#fff6cf,#fbcf56 60%,#e08a2c);box-shadow:inset 0 6px 0 #3a2814,inset 0 -6px 0 #3a2814,0 0 28px #fbcf56}
