/* ==========================================================
   O VÍDEO DE ABERTURA DA PÁGINA DE VENDAS (#446) — da cópia higgsfield-v3
   ==========================================================
   "1. Adicionar objetos na cena, vão ser 8 no total mas só vai mostrar
   adicionando 3. 2. Texto sendo adicionado. 3. Pins e cordão ligando cada
   coisa (o mesmo cordão do site, com textura realista). 4. Luz na cena.
   5. Diretor de câmera. 6. Começar a gravar. 7. Rabiscos com caneta e
   formas destacando momentos importantes — e a pessoa pode clicar e
   rabiscar durante o vídeo. Sem a barra de ferramentas, a composição
   centralizada."

   Depois (higgsfield-v4): seis capítulos — os rabiscos acontecem durante
   a gravação, e a caneta de quem assiste saiu. E depois (#478): cinco — o
   dos pins e conectores saiu, e dois pins ficaram fixos nos post-its.

   Um canvas de 1600 × 700, escalado para a largura do banner (`--esc` e
   `--oy`, escritos na janela pelo js/vitrine-banner.js). O script troca
   as classes de cada momento e move a câmera; o desenho mora aqui. */

.vban { max-width: 80rem; margin: 1.6rem auto 0; }
/* OS TRÊS TEMAS (#494): os botões em cima do vídeo; cada um mostra a sua cena (#530) */
.vban__temas { display: flex; align-items: center; gap: .5rem; margin: 0 0 .9rem; }
/* O CARROSSEL (#532): a fileira rola de lado, sem barra; centrada quando
   cabe (as margens automáticas da primeira e da última), e as pontas
   somem num degradê quando não cabe. */
.vban__trilho {
  position: relative; flex: 1; min-width: 0; display: flex; gap: .5rem; padding: 3px; overflow-x: auto;
  scrollbar-width: none; scroll-snap-type: x proximity;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 1.5rem, #000 calc(100% - 1.5rem), transparent);
  mask-image: linear-gradient(90deg, transparent, #000 1.5rem, #000 calc(100% - 1.5rem), transparent);
}
.vban__trilho::-webkit-scrollbar { display: none; }
.vban__trilho > button { flex: none; white-space: nowrap; scroll-snap-align: center; }
.vban__trilho > button:first-child { margin-left: auto; }
.vban__trilho > button:last-child { margin-right: auto; }
.vban__temas .vban__seta { flex: none; display: grid; place-items: center; width: 2.4rem; height: 2.4rem; padding: 0; }
.vban__seta svg { width: 1.1rem; height: 1.1rem; fill: none; stroke: currentColor; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.vban__temas button {
  border: 1px solid rgba(255, 255, 255, .16); border-radius: 999px; background: rgba(255, 255, 255, .06);
  color: #fff; font: 600 .9rem/1 Inter, system-ui, sans-serif; padding: .6rem 1.05rem; cursor: pointer;
}
.vban__temas button:hover { background: rgba(255, 255, 255, .12); }
.vban__temas button[aria-pressed="true"] { background: #ff0a2b; border-color: #ff0a2b; }
.vban__temas button:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.vban__janela {
  position: relative; aspect-ratio: 16 / 7; overflow: hidden; border-radius: 20px;
  border: 1px solid rgba(255, 255, 255, .08); box-shadow: 0 30px 80px rgba(0, 0, 0, .45);
  background-color: #f6f8fb;
  background-image: linear-gradient(#e3e8f0 1px, transparent 0), linear-gradient(90deg, #e3e8f0 1px, transparent 0);
  background-size: calc(80px * var(--esc, .5)) calc(80px * var(--esc, .5));
  background-position: 0 var(--oy, 0px);
}
.vban__escala {
  position: absolute; left: 0; top: 0; width: 1600px; height: 700px;
  transform-origin: 0 0; transform: translateY(var(--oy, 0px)) scale(var(--esc, .5));
}
.vban__mundo {
  position: absolute; inset: 0; transform-origin: 0 0;
  transition: transform 1.25s cubic-bezier(.45, 0, .25, 1);
  background-color: #f6f8fb;
  background-image:
    linear-gradient(#e3e8f0 1px, transparent 0), linear-gradient(90deg, #e3e8f0 1px, transparent 0),
    linear-gradient(#eef1f6 1px, transparent 0), linear-gradient(90deg, #eef1f6 1px, transparent 0);
  background-size: 80px 80px, 80px 80px, 16px 16px, 16px 16px;
}
body.fundo-pontos .vban__mundo { background-image: radial-gradient(circle, #c9d1dd 0 1.4px, transparent 2px); background-size: 16px 16px; }
/* e a sobra do quadro no telefone também, nas bolinhas, na mesma escala */
body.fundo-pontos .vban__janela {
  background-image: radial-gradient(circle, #c9d1dd 0 calc(1.4px * var(--esc, .5) + .3px), transparent calc(2px * var(--esc, .5) + .4px));
  background-size: calc(16px * var(--esc, .5)) calc(16px * var(--esc, .5));
}
/* pular de capítulo: o estado novo vem sem viagem */
.vban--salto *, .vban--salto *::before, .vban--salto *::after, .vban--salto .vban__mundo { transition: none !important; }

/* ---------- o título, digitado ---------- */
.vban__titulo {
  position: absolute; left: 300px; top: 44px; width: 1000px; margin: 0; text-align: center;
  font: 700 50px/1.1 'Space Grotesk', system-ui, sans-serif; letter-spacing: -.03em; color: #14161a;
}
.vban__cursor { display: inline-block; width: 4px; height: 52px; margin-left: 4px; vertical-align: -8px; background: #ff0a2b; opacity: 0; }
.vban--digitando .vban__cursor { opacity: 1; animation: vban-pisca 1s steps(2, start) infinite; }

/* ---------- as oito peças do lançamento ---------- */
.vban__peca { position: absolute; box-sizing: border-box; box-shadow: 0 14px 28px rgba(20, 22, 26, .16); }
.vban__postit {
  width: 210px; height: 190px; padding: 52px 18px 0; background: #ffe066; transform: rotate(-3deg);
  font: 400 34px/1.05 'Caveat', cursive; color: #3a3200; text-align: center;
}
.vban__postit--rosa { width: 190px; height: 170px; padding-top: 46px; background: #ffb0c8; color: #4a1024; transform: rotate(3deg); }
.vban__polaroid { width: 240px; margin: 0; padding: 16px 16px 0; background: #fff; transform: rotate(2deg); }
.vban__polaroid img { display: block; width: 208px; height: 180px; object-fit: cover; }
.vban__polaroid figcaption { padding: 8px 0 14px; text-align: center; font: 400 28px/1 'Caveat', cursive; color: #2a2d33; }
.vban__kpi {
  width: 300px; height: 150px; border-radius: 18px; background: #fff;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
}
.vban__kpi b { font: 700 76px/1 'Space Grotesk', system-ui, sans-serif; letter-spacing: -.04em; color: #ff0a2b; }
.vban__kpi span { font: 500 19px 'Inter', system-ui, sans-serif; color: #5b6472; }
.vban__lista {
  width: 260px; height: 180px; padding: 20px 22px; border-radius: 16px; background: #fff;
  display: flex; flex-direction: column; gap: 10px; font: 500 20px 'Inter', system-ui, sans-serif; color: #2a2d33;
}
.vban__lista b { font: 700 22px 'Space Grotesk', system-ui, sans-serif; color: #14161a; }
.vban__lista span { display: flex; align-items: center; gap: 10px; }
.vban__lista span::before { content: ''; width: 18px; height: 18px; border: 2px solid #b6bdc8; border-radius: 5px; box-sizing: border-box; }
.vban__lista span.feito { color: #8a919c; text-decoration: line-through; }
.vban__lista span.feito::before { background: #16a34a; border-color: #16a34a; }
.vban__fone { width: 170px; height: 320px; padding: 10px; border-radius: 30px; background: #14161a; }
.vban__fone-tela {
  height: 100%; border-radius: 22px; padding: 18px 14px; box-sizing: border-box;
  display: flex; flex-direction: column; gap: 10px; background: linear-gradient(170deg, #fff1f3, #ffffff 55%);
}
.vban__fone-tela b { font: 700 18px 'Space Grotesk', system-ui, sans-serif; color: #14161a; }
.vban__fone-tela i { display: block; height: 96px; border-radius: 14px; background: radial-gradient(circle at 30% 30%, #ff6b82, #ff0a2b); }
.vban__fone-tela span { display: block; height: 10px; border-radius: 5px; background: #e3e8f0; }
.vban__fone-tela span.curta { width: 60%; }
.vban__fone-tela em {
  margin-top: auto; padding: 10px 0; border-radius: 12px; text-align: center; font-style: normal;
  font: 700 15px 'Inter', system-ui, sans-serif; background: #14161a; color: #fff;
}
.vban__grafico { width: 280px; height: 190px; padding: 16px 20px; border-radius: 16px; background: #fff; display: flex; flex-direction: column; }
.vban__grafico b { font: 700 18px 'Space Grotesk', system-ui, sans-serif; color: #14161a; }
.vban__grafico div { flex: 1; display: flex; align-items: flex-end; gap: 16px; padding: 10px 6px 4px; }
.vban__grafico div i { flex: 1; border-radius: 6px 6px 2px 2px; background: #cdd5e1; }
.vban__grafico div i.on { background: #ff0a2b; }
.vban__grafico small { display: flex; justify-content: space-around; font: 500 13px 'Inter', system-ui, sans-serif; color: #8a919c; }
.vban__agenda { width: 170px; height: 170px; border-radius: 18px; overflow: hidden; background: #fff; display: flex; flex-direction: column; align-items: center; }
.vban__agenda b { align-self: stretch; padding: 10px 0; text-align: center; background: #ff0a2b; color: #fff; font: 700 20px 'Space Grotesk', system-ui, sans-serif; letter-spacing: .12em; }
.vban__agenda strong { font: 700 72px/1.05 'Space Grotesk', system-ui, sans-serif; letter-spacing: -.04em; color: #14161a; }
.vban__agenda span { font: 500 17px 'Inter', system-ui, sans-serif; color: #5b6472; }

/* as três que entram: chegam carregadas pela mão, de fora do quadro */
.vban__novo {
  opacity: 0; transform: translate(460px, -70px) rotate(8deg) scale(.9);
  transition: transform 1.05s cubic-bezier(.2, .8, .2, 1), opacity .25s ease, filter .9s ease;
}
.vban--n1 [data-novo="1"], .vban--n2 [data-novo="2"], .vban--n3 [data-novo="3"] { opacity: 1; transform: none; }
/* o ponteiro que arrasta a peça: o da ferramenta V do editor ("deve ser
   ponteiro de mouse igual da ferramenta V do site, que ela arrasta as
   coisas"), o mesmo #ic-cursor, escuro e com a borda branca */
.vban__mao {
  position: absolute; left: 56%; top: 30%; width: 44px; height: 44px; max-width: none; overflow: visible;
  color: #14161a; stroke: #fff; stroke-width: 1.6; stroke-linejoin: round; paint-order: stroke;
  filter: drop-shadow(0 3px 4px rgba(20, 22, 26, .35)); transition: opacity .3s ease .95s;
}
.vban--n1 [data-novo="1"] .vban__mao, .vban--n2 [data-novo="2"] .vban__mao, .vban--n3 [data-novo="3"] .vban__mao { opacity: 0; }

/* ---------- os dois pins fixos (#478) ----------
   Parte do mural desde o primeiro quadro, e não um capítulo: o fincado do
   editor, visto de cima, centrado no ponto onde espeta. Cada um tem a sua
   forma e a sua cor — a tachinha azul no amarelo, o alfinete vermelho de
   fábrica no rosa. O azul sai da foto vermelha pelo mesmo giro de matiz
   da cena da janela de entrar (js/projetos.js, o tom 205). */
.vban__pinos, .vban__marcos { position: absolute; inset: 0; pointer-events: none; }
.vban__pino {
  position: absolute; width: auto; height: 46px; max-width: none;
  transform: translate(-50%, -50%) rotate(var(--giro, 0deg));
  filter: drop-shadow(0 4px 4px rgba(20, 22, 26, .3));
}
.vban__pino--tachinha { --giro: -14deg; filter: hue-rotate(205deg) drop-shadow(0 4px 4px rgba(20, 22, 26, .3)); }
.vban__pino--alfinete { --giro: 10deg; }

/* ---------- o diretor de câmera: os pontos numerados ---------- */
.vban__marco {
  position: absolute; width: 50px; height: 50px; margin: -25px 0 0 -25px; border-radius: 50%;
  display: grid; place-items: center; background: #2563eb; color: #fff;
  font: 700 24px 'Space Grotesk', system-ui, sans-serif;
  box-shadow: 0 0 0 8px rgba(37, 99, 235, .22), 0 10px 22px rgba(20, 22, 26, .3);
  transform: scale(0); transition: transform .4s cubic-bezier(.2, .9, .3, 1.3);
}
.vban--marcos .vban__marco { transform: none; }
.vban__marco.agora { background: #ff0a2b; box-shadow: 0 0 0 8px rgba(255, 10, 43, .24), 0 10px 22px rgba(20, 22, 26, .3); }

/* ---------- os rabiscos automáticos do fim ---------- */
.vban__tinta { position: absolute; left: 0; top: 0; width: 1600px; height: 700px; overflow: visible; pointer-events: none; }
.vban__risco {
  fill: none; stroke: var(--pp-acento, #ff0a2b); stroke-width: 7; stroke-linecap: round; stroke-linejoin: round;
  stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset 1s cubic-bezier(.5, 0, .3, 1);
}
/* SEM O PONTINHO ANTES DO TRAÇO: com a ponta redonda, o traço ainda
   apagado desenhava a ponta dele, um ponto parado no começo. Agora ele só
   aparece quando a caneta encosta. */
.vban__risco { opacity: 0; }
.vban--r1 [data-risco="1"], .vban--r2 [data-risco="2"], .vban--r3 [data-risco="3"],
.vban--r4 [data-risco="4"], .vban--r5 [data-risco="5"] { stroke-dashoffset: 0; opacity: 1; }
/* a elipse tracejada e o marca-texto azul do "500 pessoas no beta" saíram
   com a parada dele (#480): a gravação voltou a quatro pontos, um por luz */

/* ---------- AS LUZES (higgsfield-v4) ----------
   "Aprofundar mais nas luzes, temos várias opções interessantes para
   deixar a cena mais legal." O que o editor tem, em três lâmpadas: o
   ambiente escurecido em volta, a softbox quente (larga e macia) no
   post-it, o holofote frio (o facho saindo da lâmpada) no número e o
   efeito cores (a luz trocando de cor) na data. Tudo dentro do canvas:
   quando a câmera voa durante a gravação, as luzes vão junto.

   O ESCURO É UMA CAMADA SÓ, um SVG com uma máscara (ver o index.html): um
   furo por lâmpada, cada um no formato da luz dela. O furo redondo cresce
   do centro; o facho do holofote desce da lâmpada; a caixa acesa aparece. */
.vban__noite {
  position: absolute; left: -400px; top: -400px; width: 2400px; height: 1500px; pointer-events: none;
  max-width: none; max-height: none; overflow: visible; opacity: 0; transition: opacity .9s ease;
}
.vban--noite .vban__noite { opacity: 1; }
.vban__furo { transform-box: fill-box; transition: transform .8s ease, opacity .8s ease; }
.vban__furo--1, .vban__furo--3 { transform-origin: center; transform: scale(0); }
.vban__furo--2 { transform-origin: 50% 0; transform: scaleY(0); }
.vban__furo--4 { opacity: 0; }
.vban--l1 .vban__furo--1, .vban--l2 .vban__furo--2, .vban--l3 .vban__furo--3 { transform: none; }
.vban--l4 .vban__furo--4 { opacity: 1; }
.vban__luzes { position: absolute; inset: 0; pointer-events: none; }
.vban__luz { position: absolute; width: 0; height: 0; }
/* O BRILHO DE CADA UMA, NA COR DELA. O furo no escuro já mostra a peça
   clara (o mundo do banner é claro nos dois temas): a luz então tinge
   (multiply), e o vermelho do +38% continua vermelho, em vez de lavar.
   O holofote não tem o redondo: a luz dele é só o facho. */
.vban__luz--softbox::before, .vban__luz--cores::before {
  content: ''; position: absolute; border-radius: 50%; opacity: 0; mix-blend-mode: multiply;
  transition: opacity .8s ease;
}
.vban__luz--softbox::before { left: -230px; top: -230px; width: 460px; height: 460px; background: radial-gradient(circle, rgba(255, 190, 110, .55), rgba(255, 175, 95, .3) 40%, transparent 62%); }
.vban__luz--cores::before { left: -190px; top: -190px; width: 380px; height: 380px; background: radial-gradient(circle, rgba(255, 110, 160, .55), transparent 62%); }
.vban--l1 .vban__luz--softbox::before, .vban--l3 .vban__luz--cores::before { opacity: 1; }
.vban--l3 .vban__luz--cores::before { animation: vban-cores 2.4s linear infinite; }
@keyframes vban-cores {
  0%, 100% { background: radial-gradient(circle, rgba(255, 110, 160, .55), transparent 62%); }
  33%      { background: radial-gradient(circle, rgba(110, 175, 255, .55), transparent 62%); }
  66%      { background: radial-gradient(circle, rgba(130, 225, 140, .55), transparent 62%); }
}
/* o facho do holofote: da lâmpada, em cima, até passar do número, no
   mesmo cone do furo; tinge de frio e desce junto com ele */
.vban__facho {
  position: absolute; left: -195px; top: -150px; width: 390px; height: 295px;
  background: linear-gradient(to bottom, rgba(150, 200, 255, .55), rgba(150, 200, 255, .22) 72%, transparent);
  clip-path: polygon(48.7% 0, 51.3% 0, 100% 100%, 0 100%); mix-blend-mode: multiply;
  transform: scaleY(0); transform-origin: 50% 0; transition: transform .8s ease;
}
.vban--l2 .vban__facho { transform: none; }
/* A PEÇA ACESA, como no editor (#138): brilho cheio, um pouco acima do
   normal, e um halo em volta, como um letreiro. O pin preso nela fica
   dentro do furo e acende junto (#161). Cada cena marca a sua com
   data-acesa, e o halo é dela (--brilho, #530). */
[data-acesa] { --brilho: drop-shadow(0 0 24px rgba(255, 226, 160, .75)); }
.vban--l4 [data-acesa] { filter: brightness(1.05) var(--brilho); }
/* a lâmpada e o nome dela, como no editor */
.vban__lampada {
  position: absolute; width: 34px; height: 34px; margin: -17px 0 0 -17px; border-radius: 50%;
  background: radial-gradient(circle at 40% 35%, #fff, #ffe7a8 55%, #f5b941);
  box-shadow: 0 0 0 6px rgba(255, 220, 140, .25), 0 0 26px 8px rgba(255, 210, 120, .55);
  opacity: 0; transform: scale(.4); transition: opacity .3s ease, transform .4s cubic-bezier(.2, .9, .3, 1.3);
}
.vban__luz--holofote .vban__lampada { background: radial-gradient(circle at 40% 35%, #fff, #d5ebff 55%, #7fb6ff); box-shadow: 0 0 0 6px rgba(150, 200, 255, .25), 0 0 26px 8px rgba(140, 195, 255, .55); }
.vban__luz--cores .vban__lampada { background: conic-gradient(#ff5a8c, #5aa8ff, #7ee08a, #ff5a8c); box-shadow: 0 0 0 6px rgba(255, 255, 255, .2), 0 0 26px 8px rgba(255, 120, 170, .45); }
.vban__luz span {
  position: absolute; transform: translateX(-50%); white-space: nowrap; padding: 5px 10px; border-radius: 9px;
  background: rgba(15, 17, 19, .82); color: #fff; font: 600 17px 'Inter', system-ui, sans-serif;
  opacity: 0; transition: opacity .3s ease .2s;
}
.vban--l1 [data-luz="1"] .vban__lampada, .vban--l2 [data-luz="2"] .vban__lampada, .vban--l3 [data-luz="3"] .vban__lampada { opacity: 1; transform: none; }
.vban--l1 [data-luz="1"] span, .vban--l2 [data-luz="2"] span, .vban--l3 [data-luz="3"] span, .vban--l4 [data-luz="4"] span { opacity: 1; }
/* um clique da câmera marcando o ponto: o anel que se abre */
.vban__marco::after {
  content: ''; position: absolute; inset: -6px; border-radius: 50%; border: 3px solid #2563eb; opacity: 0;
}
.vban--marcos .vban__marco::after { animation: vban-clique .6s ease-out both; animation-delay: inherit; }
@keyframes vban-clique { from { transform: scale(.6); opacity: .9; } to { transform: scale(1.6); opacity: 0; } }

/* ---------- a caneta da pessoa, por cima de tudo do quadro ---------- */

/* ---------- o que vai por cima ---------- */
.vban__legenda, .vban__rec, .vban__voz, .vban__pronto, .vban__play { z-index: 2; }
.vban__legenda {
  position: absolute; left: 16px; top: 14px; margin: 0; max-width: 46%; pointer-events: none;
  display: flex; flex-direction: column; gap: .1rem; padding: .55rem .85rem; border-radius: 12px;
  background: rgba(15, 17, 19, .82); color: #fff; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
.vban__legenda b { font: 700 .95rem 'Space Grotesk', system-ui, sans-serif; text-transform: uppercase; letter-spacing: -.01em; }
.vban__legenda span { font: 500 .8rem 'Inter', system-ui, sans-serif; color: #c9ccd1; }
.vban__rec {
  position: absolute; right: 16px; top: 14px; pointer-events: none;
  display: inline-flex; align-items: center; gap: .45rem; padding: .4rem .7rem; border-radius: 10px;
  background: rgba(15, 17, 19, .82); color: #fff; font: 700 .82rem 'Space Grotesk', system-ui, sans-serif; letter-spacing: .04em;
  opacity: 0; transform: translateY(-6px); transition: opacity .3s, transform .3s;
}
.vban__rec i { width: .6rem; height: .6rem; border-radius: 50%; background: #ff0a2b; box-shadow: 0 0 0 4px rgba(255, 10, 43, .25); animation: vban-pisca 1s steps(2, start) infinite; }
.vban--rec .vban__rec { opacity: 1; transform: none; }
/* a voz entrando: cinco barras que sobem e descem */
.vban__voz {
  position: absolute; left: 50%; bottom: 14px; pointer-events: none;
  display: inline-flex; align-items: center; gap: 3px; padding: .45rem .8rem; border-radius: 99px;
  background: rgba(15, 17, 19, .82); color: #fff; font: 600 .78rem 'Inter', system-ui, sans-serif;
  opacity: 0; transform: translate(-50%, 8px); transition: opacity .3s, transform .3s;
}
.vban__voz i { width: 3px; height: 14px; border-radius: 2px; background: #ff0a2b; animation: vban-voz .9s ease-in-out infinite alternate; }
.vban__voz i:nth-child(2) { animation-delay: -.2s; } .vban__voz i:nth-child(3) { animation-delay: -.45s; }
.vban__voz i:nth-child(4) { animation-delay: -.1s; } .vban__voz i:nth-child(5) { animation-delay: -.6s; margin-right: .45rem; }
.vban--rec .vban__voz { opacity: 1; transform: translate(-50%, 0); }
.vban__pronto {
  position: absolute; right: 16px; bottom: 16px; pointer-events: none; padding: .55rem .85rem; border-radius: 12px;
  background: #16a34a; color: #fff; font: 600 .85rem 'Inter', system-ui, sans-serif; box-shadow: 0 10px 24px rgba(22, 163, 74, .3);
  opacity: 0; transform: translateY(8px); transition: opacity .35s, transform .35s;
}
.vban__pronto::before { content: '✓ '; }
.vban--pronto .vban__pronto { opacity: 1; transform: none; }
.vban__play {
  position: absolute; left: 16px; bottom: 14px; display: grid; place-items: center;
  width: 2.5rem; height: 2.5rem; border: 0; border-radius: 12px; cursor: pointer; background: rgba(15, 17, 19, .82); color: #fff;
}
.vban__play svg { width: 1.1rem; height: 1.1rem; fill: currentColor; }
.vban__ic-play { display: none; }
.vban--pausado .vban__ic-play { display: block; }
.vban--pausado .vban__ic-pausa { display: none; }
.vban__play:focus-visible, .vban__passos button:focus-visible { outline: 2px solid var(--pp-acento, #ff0a2b); outline-offset: 2px; }

/* ---------- os capítulos embaixo, e a frase do passo ---------- */
.vban__dica { margin: .6rem 0 0; min-height: 1.4em; color: var(--suave); font: 500 .95rem 'Inter', system-ui, sans-serif; }
.vban__passos { list-style: none; margin: .9rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(5, 1fr); gap: .5rem; }
.vban__passos button {
  display: flex; flex-direction: column; gap: .45rem; width: 100%; padding: 0; border: 0; background: none; cursor: pointer;
  text-align: left; color: var(--suave); font: 600 .82rem 'Inter', system-ui, sans-serif;
}
.vban__passos i { position: relative; display: block; height: 4px; border-radius: 99px; overflow: hidden; background: color-mix(in srgb, currentColor 22%, transparent); }
.vban__passos i::after { content: ''; position: absolute; inset: 0; transform-origin: 0 50%; transform: scaleX(0); background: var(--pp-acento, #ff0a2b); }
.vban__passos li.feito i::after { transform: scaleX(1); }
.vban__passos li.agora i::after { animation: vban-enche var(--dura, 3s) linear forwards; }
.vban__passos li.agora button { color: var(--ink); }
.vban--pausado .vban__passos li.agora i::after { animation-play-state: paused; }

@keyframes vban-pisca { to { visibility: hidden; } }
@keyframes vban-enche { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes vban-voz { from { transform: scaleY(.3); } to { transform: scaleY(1.2); } }

/* ==========================================================
   AS CENAS DOS TEMAS 2 E 3 (#530)
   ==========================================================
   "2 e 3 quero que você altere completamente as artes, posicionamento,
   apresentação, iluminação, pontos de câmera, gravação [...] cada um com
   uma estética específica que condiz com o tema." Cada tema é um
   .vban__mundo inteiro; só o do botão marcado aparece. A janela veste a
   cor da cena (o banner leva data-cena), porque a câmera, inclinada ou
   longe, mostra a sobra em volta do canvas. */
.vban__mundo[hidden] { display: none; }

/* O DESFOQUE DA CÂMERA, na gravação das duas cenas novas: o que não é do
   ponto em que a câmera parou sai de foco (o js/vitrine-banner.js marca
   com .vban__fora), e volta quando ela se abre no fim. */
.vban__peca:not(.vban__novo), .vban__mundo .vban__pino, .vban__fios { transition: filter .9s ease; }
.vban__fora { filter: blur(5px) saturate(.85); }
.vban--l4 [data-acesa].vban__fora { filter: blur(5px) brightness(1.05) var(--brilho); }

/* ---------- CENA 2 · o quadro do caso Gardner ----------
   Feltro escuro, papel de arquivo, máquina de escrever, fio vermelho e
   caneta amarela. A câmera é rápida e entra inclinada. */
.vban[data-cena="investigacao"] .vban__janela { background: #0f1114; }
.vban .vban__mundo[data-cena="investigacao"] {
  background-color: #15181d;
  background-image:
    radial-gradient(ellipse 70% 62% at 50% 44%, rgba(78, 86, 102, .38), transparent 72%),
    linear-gradient(rgba(255, 255, 255, .035) 1px, transparent 0), linear-gradient(90deg, rgba(255, 255, 255, .035) 1px, transparent 0);
  background-size: 100% 100%, 40px 40px, 40px 40px;
  transition-duration: 1s; transition-timing-function: cubic-bezier(.7, 0, .2, 1);
}
.vban__mundo[data-cena="investigacao"] .vban__titulo {
  font: 700 40px/1.3 'Courier Prime', ui-monospace, monospace; letter-spacing: .02em; text-transform: uppercase; color: #f1ece1;
}
.vban__mundo[data-cena="investigacao"] .vban__cursor { height: 42px; vertical-align: -7px; background: #ffd23f; }
.vban__mundo[data-cena="investigacao"] .vban__peca { box-shadow: 0 18px 36px rgba(0, 0, 0, .55); }
.vban__mundo[data-cena="investigacao"] .vban__risco { stroke: #ffd23f; stroke-width: 6; }

.vban__ficha {
  width: 340px; height: 258px; padding: 22px 22px 0; border-radius: 3px 10px 4px 4px; transform: rotate(-1.5deg);
  background: linear-gradient(180deg, #edd9a6, #e0c48a);
  font: 400 18px/1.35 'Courier Prime', ui-monospace, monospace; color: #2b2214;
}
/* a aba da pasta */
.vban__ficha::before { content: ''; position: absolute; left: 0; top: -16px; width: 128px; height: 18px; border-radius: 8px 8px 0 0; background: #edd9a6; }
.vban__ficha b {
  display: block; margin-bottom: 10px; padding-bottom: 6px; border-bottom: 2px solid rgba(43, 34, 20, .35);
  font-size: 21px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
}
.vban__ficha dl { display: grid; grid-template-columns: 84px 1fr; row-gap: 5px; margin: 0; }
.vban__ficha dt { color: #6b5a3c; }
.vban__ficha dd { margin: 0; font-weight: 700; }
.vban__carimbo {
  position: absolute; right: 14px; top: 118px; padding: 3px 9px; border: 3px solid #b3261e; border-radius: 6px;
  color: #b3261e; font: 700 17px 'Courier Prime', ui-monospace, monospace; font-style: normal; letter-spacing: .08em; text-transform: uppercase;
  transform: rotate(-12deg); opacity: .85; mix-blend-mode: multiply;
}
/* a fita de isolamento atravessando a pasta */
.vban__faixa {
  position: absolute; left: -22px; right: -22px; bottom: 18px; padding: 13px 0 11px; text-align: center; transform: rotate(-2.5deg);
  background:
    repeating-linear-gradient(-45deg, #111 0 9px, #f5c518 9px 18px) 0 0 / 100% 5px no-repeat,
    repeating-linear-gradient(-45deg, #111 0 9px, #f5c518 9px 18px) 0 100% / 100% 5px no-repeat, #f5c518;
  color: #111; font: 700 16px 'Courier Prime', ui-monospace, monospace; letter-spacing: .12em; text-transform: uppercase;
  box-shadow: 0 6px 14px rgba(0, 0, 0, .35);
}
.vban__polaroid--prova { width: auto; padding: 14px 14px 0; background: #f3efe6; transform: rotate(3deg); }
.vban__polaroid--prova img { width: 200px; height: 217px; }
.vban__polaroid--prova figcaption { padding: 10px 0 12px; font: 400 21px/1.1 'Permanent Marker', cursive; color: #1d1d1f; }
.vban__polaroid--prova figcaption small { display: block; margin-top: 4px; font: 400 14px 'Courier Prime', ui-monospace, monospace; color: #6b6458; }
.vban__polaroid--menor { transform: rotate(-3deg); }
.vban__polaroid--menor img { width: 124px; height: 154px; }
.vban__polaroid--menor figcaption { font-size: 18px; }
/* a ficha pautada dos suspeitos */
.vban__pautada {
  width: 240px; min-height: 150px; padding: 12px 18px 14px; transform: rotate(-3deg);
  background-color: #fbfaf4;
  background-image: linear-gradient(#e46a6a, #e46a6a), repeating-linear-gradient(transparent 0 33px, #b9cbe6 33px 34px);
  background-size: 100% 2px, 100% calc(100% - 40px); background-position: 0 38px, 0 40px; background-repeat: no-repeat;
}
.vban__pautada small { display: block; height: 30px; font: 700 14px/30px 'Courier Prime', ui-monospace, monospace; letter-spacing: .2em; text-transform: uppercase; color: #9a3b2e; }
.vban__pautada b { display: block; margin-top: 8px; font: 400 30px/34px 'Permanent Marker', cursive; color: #1b1b1d; }
.vban__recompensa {
  width: 540px; height: 165px; padding: 18px 24px; background: #efe9dc; transform: rotate(.6deg);
  font: 400 16px/1.25 'Courier Prime', ui-monospace, monospace; color: #2a2620;
}
.vban__recompensa b { font-size: 20px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.vban__recompensa ol { position: relative; list-style: none; margin: 16px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.vban__recompensa ol::before { content: ''; position: absolute; left: 8px; right: 8px; top: 7px; height: 2px; background: #2a2620; }
.vban__recompensa li { position: relative; padding-top: 26px; }
.vban__recompensa li::before {
  content: ''; position: absolute; left: 0; top: 0; width: 16px; height: 16px; border-radius: 50%; box-sizing: border-box;
  background: #efe9dc; border: 3px solid #2a2620;
}
.vban__recompensa li:last-child::before { background: #b3261e; border-color: #b3261e; }
.vban__recompensa time { display: block; font-size: 22px; font-weight: 700; }
.vban__recompensa li:last-child span { color: #b3261e; font-weight: 700; }
/* a moldura vazia, dourada, na parede verde da Sala Holandesa */
.vban .vban__moldura { width: 230px; height: 280px; box-shadow: none; }
.vban__moldura-vao {
  position: absolute; left: 0; top: 0; width: 230px; height: 238px; box-sizing: border-box; border: 20px solid transparent;
  background:
    radial-gradient(circle, rgba(255, 255, 255, .05) 0 3px, transparent 4px) 0 0 / 18px 18px padding-box,
    linear-gradient(#2f3d35, #222d27) padding-box,
    linear-gradient(135deg, #7a5618, #f3d27a 22%, #a87a2a 45%, #f6dc8c 68%, #7a5618) border-box;
  box-shadow: inset 0 0 0 3px #5e4314, inset 0 0 26px rgba(0, 0, 0, .65), 0 18px 36px rgba(0, 0, 0, .6);
}
.vban__moldura > span {
  position: absolute; left: 50%; bottom: 0; width: 176px; margin-left: -88px; padding: 6px 0 7px; border-radius: 3px; text-align: center;
  background: linear-gradient(#e8cf8a, #b8913f); color: #3a2a0c; box-shadow: 0 4px 10px rgba(0, 0, 0, .5);
  font: 700 13px/1.1 'Courier Prime', ui-monospace, monospace; letter-spacing: .08em; text-transform: uppercase;
}
.vban__moldura > span small { display: block; margin-top: 2px; font-size: 12px; font-weight: 400; letter-spacing: 0; text-transform: none; }
.vban__mundo[data-cena="investigacao"] [data-acesa] { --brilho: drop-shadow(0 0 30px rgba(255, 196, 92, .85)); }
.vban__inventario { width: 290px; padding: 16px 20px 14px; background: #efe9dc; font: 400 15px 'Courier Prime', ui-monospace, monospace; color: #2a2620; }
.vban__inventario b { display: block; margin-bottom: 10px; font-size: 19px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.vban__inventario ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.vban__inventario li { display: grid; grid-template-columns: 96px 1fr 18px; align-items: center; gap: 8px; }
.vban__inventario li i { display: block; width: calc(var(--n) * 20%); height: 12px; border-radius: 2px; background: #b3261e; }
.vban__inventario li em { font-style: normal; font-weight: 700; text-align: right; }
.vban__inventario small { display: block; margin-top: 12px; padding-top: 8px; border-top: 1px dashed rgba(42, 38, 32, .45); font-size: 14px; font-weight: 700; color: #b3261e; }
/* a planta do andar, em papel de cópia azul */
.vban__planta {
  width: 225px; padding: 12px 12px 10px; border-radius: 4px; color: #e6eefc;
  background-color: #1c3a66;
  background-image: linear-gradient(rgba(255, 255, 255, .07) 1px, transparent 0), linear-gradient(90deg, rgba(255, 255, 255, .07) 1px, transparent 0);
  background-size: 12px 12px;
}
.vban__planta b { display: block; margin-bottom: 8px; font: 700 14px 'Courier Prime', ui-monospace, monospace; letter-spacing: .1em; text-transform: uppercase; }
.vban__planta svg:not(.vban__mao) { display: block; width: 200px; height: 132px; overflow: visible; }
.vban__planta-salas rect { fill: rgba(255, 255, 255, .04); stroke: #cfe0ff; stroke-width: 1.6; }
.vban__planta text { fill: #cfe0ff; font: 700 9.5px 'Courier Prime', ui-monospace, monospace; text-anchor: middle; }
.vban__planta-rota { fill: none; stroke: #ff4d5e; stroke-width: 2.6; stroke-dasharray: 6 5; stroke-linecap: round; }
.vban__planta-x { fill: #ff4d5e; }
/* os fios vermelhos, de pin a pin */
.vban__fios { position: absolute; left: 0; top: 0; width: 1600px; height: 700px; overflow: visible; pointer-events: none; }
.vban__fios path { fill: none; stroke: #c8102e; stroke-width: 2.6; stroke-linecap: round; }
.vban__pino--vermelho { filter: drop-shadow(0 4px 4px rgba(0, 0, 0, .45)); }
.vban__pino--percevejo { --giro: -6deg; }
/* AS LUZES NUM FUNDO ESCURO SOMAM (screen): a softbox fria na ficha, o
   holofote quente no Vermeer — como num museu —, a sirene vermelha e
   azul nos suspeitos e a moldura acesa, dourada. */
.vban__mundo[data-cena="investigacao"] .vban__luz--softbox::before {
  mix-blend-mode: screen; background: radial-gradient(circle, rgba(170, 205, 255, .5), rgba(140, 185, 255, .2) 42%, transparent 62%);
}
.vban__mundo[data-cena="investigacao"] .vban__luz--softbox .vban__lampada {
  background: radial-gradient(circle at 40% 35%, #fff, #d5ebff 55%, #7fb6ff);
  box-shadow: 0 0 0 6px rgba(150, 200, 255, .25), 0 0 26px 8px rgba(140, 195, 255, .55);
}
.vban__mundo[data-cena="investigacao"] .vban__facho {
  mix-blend-mode: screen; background: linear-gradient(to bottom, rgba(255, 214, 150, .62), rgba(255, 200, 130, .22) 72%, transparent);
}
.vban__mundo[data-cena="investigacao"] .vban__luz--holofote .vban__lampada {
  background: radial-gradient(circle at 40% 35%, #fff, #ffe7a8 55%, #f5b941);
  box-shadow: 0 0 0 6px rgba(255, 220, 140, .25), 0 0 26px 8px rgba(255, 210, 120, .55);
}
.vban__mundo[data-cena="investigacao"] .vban__luz--cores::before { mix-blend-mode: screen; }
.vban--l3 .vban__mundo[data-cena="investigacao"] .vban__luz--cores::before { animation: vban-sirene 1s steps(1) infinite; }
.vban__mundo[data-cena="investigacao"] .vban__luz--cores .vban__lampada {
  background: conic-gradient(#ff2a3d 0 50%, #2d6bff 0); box-shadow: 0 0 0 6px rgba(255, 255, 255, .18), 0 0 26px 8px rgba(255, 60, 80, .5);
}
@keyframes vban-sirene {
  0%  { background: radial-gradient(circle, rgba(255, 40, 60, .7), rgba(255, 40, 60, .2) 40%, transparent 62%); }
  50% { background: radial-gradient(circle, rgba(45, 110, 255, .75), rgba(45, 110, 255, .22) 40%, transparent 62%); }
}

/* ---------- CENA 3 · o lançamento de "O mapa das marés" ----------
   Papel creme, serifa, fita adesiva no lugar dos pins, a luz âmbar de uma
   livraria e uma câmera que anda devagar. */
.vban[data-cena="livro"] .vban__janela { background: #ede3d1; }
.vban .vban__mundo[data-cena="livro"] {
  background-color: #f3ecdf;
  background-image:
    radial-gradient(ellipse 80% 70% at 50% 45%, rgba(255, 251, 242, .9), transparent 75%),
    radial-gradient(circle, rgba(140, 110, 70, .14) 0 1px, transparent 1.6px);
  background-size: 100% 100%, 22px 22px;
  transition-duration: 1.5s; transition-timing-function: cubic-bezier(.45, 0, .2, 1);
}
.vban__mundo[data-cena="livro"] .vban__titulo { font: italic 400 50px/1.15 'Playfair Display', Georgia, serif; letter-spacing: -.01em; color: #1b2d45; }
.vban__mundo[data-cena="livro"] .vban__cursor { height: 50px; vertical-align: -9px; background: #c4512d; }
.vban__mundo[data-cena="livro"] .vban__peca { box-shadow: 0 16px 32px rgba(92, 62, 30, .18); }
.vban__mundo[data-cena="livro"] .vban__risco { stroke: #c4512d; stroke-width: 6; }
.vban__mundo[data-cena="livro"] [data-acesa] { --brilho: drop-shadow(0 0 26px rgba(255, 190, 110, .85)); }

/* o livro em pé, com a lombada e o brilho da capa */
.vban .vban__livro {
  width: 230px; height: 337px; overflow: hidden; border-radius: 3px 8px 8px 3px;
  transform: perspective(1100px) rotateY(16deg) rotate(-2deg); transform-origin: 0 50%;
  box-shadow: 24px 26px 40px rgba(70, 45, 20, .38);
}
.vban__livro img { position: absolute; left: 0; top: 0; width: 100%; height: 100%; object-fit: cover; }
.vban__livro::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 16px; z-index: 2;
  background: linear-gradient(90deg, rgba(0, 0, 0, .35), rgba(255, 255, 255, .25) 45%, rgba(0, 0, 0, .12));
}
.vban__livro::after {
  content: ''; position: absolute; inset: 0; z-index: 2;
  background: linear-gradient(115deg, rgba(255, 255, 255, .26), transparent 38%, transparent 70%, rgba(0, 0, 0, .14));
}
.vban__livro b {
  position: absolute; left: 16px; right: 0; top: 0; z-index: 1; padding: 18px 0 14px; text-align: center;
  background: linear-gradient(#f3ecdf, rgba(243, 236, 223, .94)); font: italic 400 31px/1.02 'Playfair Display', Georgia, serif; color: #14253c;
}
.vban__livro span {
  position: absolute; left: 16px; right: 0; bottom: 22px; z-index: 1; padding: 8px 0; text-align: center;
  background: rgba(20, 37, 60, .9); color: #f3ecdf; font: 600 13px 'Inter', system-ui, sans-serif; letter-spacing: .32em; text-transform: uppercase;
}
/* a fita adesiva que prende cada papel */
.vban__fita {
  position: absolute; left: 50%; top: -13px; z-index: 3; width: 96px; height: 26px; margin-left: -48px; transform: rotate(-4deg);
  background-color: rgba(196, 81, 45, .5);
  background-image: repeating-linear-gradient(45deg, rgba(255, 255, 255, .22) 0 6px, transparent 6px 12px);
  box-shadow: 0 1px 2px rgba(0, 0, 0, .12);
}
.vban__citacao .vban__fita { left: auto; right: 22px; margin-left: 0; background-color: rgba(47, 93, 124, .48); transform: rotate(7deg); }
.vban__rosca .vban__fita { width: 70px; margin-left: -35px; background-color: rgba(184, 137, 59, .5); transform: rotate(3deg); }
.vban__polaroid--salao .vban__fita { left: 26px; margin-left: 0; background-color: rgba(47, 93, 124, .45); transform: rotate(-12deg); }
.vban__turne .vban__fita { left: auto; right: -18px; top: 14px; margin-left: 0; background-color: rgba(184, 137, 59, .55); transform: rotate(38deg); }
.vban__bilhete .vban__fita { width: 84px; margin-left: -42px; transform: rotate(3deg); }
.vban__bilhete {
  width: 230px; padding: 26px 18px 22px; transform: rotate(-3deg); text-align: center;
  background-color: #c9a677; background-image: radial-gradient(rgba(90, 60, 25, .1) 1px, transparent 1.4px); background-size: 7px 7px;
  font: 400 28px/1.05 'Caveat', cursive; color: #3a2814;
}
.vban__citacao { margin: 0; width: 360px; height: 214px; padding: 44px 28px 0 36px; background: #fffaf0; transform: rotate(-1deg); }
.vban__citacao::before { content: '\201C'; position: absolute; left: 12px; top: -26px; font: 400 120px/1 'Playfair Display', Georgia, serif; color: #c4512d; }
/* duas linhas, quebradas no index.html: o rabisco sublinha a segunda inteira */
.vban__citacao p { position: relative; margin: 0; white-space: nowrap; font: italic 400 28px/1.35 'Playfair Display', Georgia, serif; color: #1b2d45; }
.vban__citacao cite {
  position: absolute; left: 36px; bottom: 22px; font: 600 12px 'Inter', system-ui, sans-serif; font-style: normal;
  letter-spacing: .28em; text-transform: uppercase; color: #9a6b44;
}
.vban__rosca { width: 250px; height: 244px; padding: 20px 20px 0; background: #fffaf0; text-align: center; transform: rotate(1.5deg); }
.vban__rosca b, .vban__curva b { display: block; font: 600 13px 'Inter', system-ui, sans-serif; letter-spacing: .18em; text-transform: uppercase; color: #6d5137; }
.vban__rosca-anel { position: relative; width: 132px; height: 132px; margin: 14px auto 12px; display: grid; place-content: center; }
.vban__rosca-anel::before {
  content: ''; position: absolute; inset: 0; border-radius: 50%;
  background: conic-gradient(#1b2d45 0 64%, #c4512d 0 100%);
  -webkit-mask: radial-gradient(circle, transparent 0 45px, #000 46px); mask: radial-gradient(circle, transparent 0 45px, #000 46px);
}
.vban__rosca-anel strong { font: 400 36px/1 'Playfair Display', Georgia, serif; color: #1b2d45; }
.vban__rosca-anel small { font: 500 12px 'Inter', system-ui, sans-serif; color: #6d5137; }
.vban__rosca p { display: inline-flex; align-items: center; gap: 7px; margin: 0; font: 500 14px 'Inter', system-ui, sans-serif; color: #6d5137; }
.vban__rosca p i { width: 10px; height: 10px; border-radius: 50%; background: #c4512d; }
.vban__polaroid--salao { width: auto; padding: 12px 12px 0; background: #fffdf8; transform: rotate(2deg); }
.vban__polaroid--salao img { width: 250px; height: 177px; }
.vban__polaroid--salao figcaption { padding: 10px 0 12px; font: italic 400 21px 'Playfair Display', Georgia, serif; color: #3b2a1a; }
/* o ingresso da noite de autógrafos, com o canhoto picotado */
.vban__ingresso {
  width: 330px; height: 150px; display: flex; border-radius: 10px; rotate: -2deg;
  background: linear-gradient(135deg, #cf5a33, #b4441f); color: #fbf3e6;
}
.vban__ingresso::before, .vban__ingresso::after { content: ''; position: absolute; left: 239px; width: 22px; height: 22px; border-radius: 50%; background: #f3ecdf; }
.vban__ingresso::before { top: -11px; }
.vban__ingresso::after { bottom: -11px; }
.vban__ingresso > div {
  flex: 1; display: flex; flex-direction: column; justify-content: center; gap: 4px; margin: 14px 0; padding-left: 24px;
  border-right: 2px dashed rgba(251, 243, 230, .6);
}
.vban__ingresso small { font: 600 12px 'Inter', system-ui, sans-serif; letter-spacing: .24em; text-transform: uppercase; opacity: .85; }
.vban__ingresso b { font: italic 400 38px/1.05 'Playfair Display', Georgia, serif; }
.vban__ingresso span { font: 500 14px 'Inter', system-ui, sans-serif; opacity: .92; }
.vban__ingresso em {
  width: 80px; display: grid; place-items: center; writing-mode: vertical-rl; transform: rotate(180deg);
  font: 700 15px 'Courier Prime', ui-monospace, monospace; font-style: normal; letter-spacing: .12em;
}
.vban__curva { width: 330px; height: 214px; padding: 18px 20px 0; border-radius: 14px; background: #fffaf0; }
.vban__curva strong { display: block; margin-top: 6px; font: 400 46px/1 'Playfair Display', Georgia, serif; color: #1b2d45; }
.vban__curva > span { display: block; margin-top: 3px; font: 500 13px 'Inter', system-ui, sans-serif; color: #8a6a4a; }
.vban__curva svg:not(.vban__mao) { display: block; width: 290px; height: 86px; margin-top: 8px; }
.vban__turne { width: 290px; padding: 20px 22px 14px; border-radius: 4px; background: #1b2d45; color: #f3ecdf; }
.vban__turne b { display: block; margin-bottom: 10px; font: italic 400 25px 'Playfair Display', Georgia, serif; }
.vban__turne ol { list-style: none; margin: 0; padding: 0; }
.vban__turne li { display: flex; justify-content: space-between; padding: 8px 0; border-top: 1px solid rgba(243, 236, 223, .18); font: 500 15px 'Inter', system-ui, sans-serif; }
.vban__turne time { font-family: 'Courier Prime', ui-monospace, monospace; color: #e9a27f; }
/* as luzes de uma livraria: âmbar, o holofote suave na citação e as
   cores da festa no ingresso */
.vban__mundo[data-cena="livro"] .vban__facho { background: linear-gradient(to bottom, rgba(255, 222, 160, .6), rgba(255, 210, 140, .24) 72%, transparent); }
.vban__mundo[data-cena="livro"] .vban__luz--holofote .vban__lampada {
  background: radial-gradient(circle at 40% 35%, #fff, #fff0c8 55%, #f2c46a);
  box-shadow: 0 0 0 6px rgba(255, 226, 160, .25), 0 0 26px 8px rgba(255, 214, 140, .55);
}
.vban--l3 .vban__mundo[data-cena="livro"] .vban__luz--cores::before { animation: vban-festa 3s linear infinite; }
.vban__mundo[data-cena="livro"] .vban__luz--cores .vban__lampada { background: conic-gradient(#ffb347, #ff6f91, #4fc1b9, #ffb347); }
@keyframes vban-festa {
  0%, 100% { background: radial-gradient(circle, rgba(255, 170, 70, .6), transparent 62%); }
  33%      { background: radial-gradient(circle, rgba(255, 105, 150, .55), transparent 62%); }
  66%      { background: radial-gradient(circle, rgba(70, 190, 180, .55), transparent 62%); }
}

/* ---------- CENA 4 · a garagem do projeto de drift ----------
   Painel perfurado de oficina, ímãs de neon, a letra condensada das
   corridas e a técnica de máquina, laranja de segurança e ciano de neon.
   A câmera chega rápida e passa um pouco do ponto antes de parar. */
.vban[data-cena="carros"] .vban__janela { background: #111214; }
.vban .vban__mundo[data-cena="carros"] {
  background-color: #222328;
  background-image:
    radial-gradient(ellipse 75% 65% at 50% 40%, rgba(255, 255, 255, .06), transparent 70%),
    radial-gradient(circle, #0d0d10 0 3px, transparent 3.6px);
  background-size: 100% 100%, 28px 28px;
  transition-duration: .9s; transition-timing-function: cubic-bezier(.6, -.08, .25, 1.18);
}
.vban__mundo[data-cena="carros"] .vban__titulo {
  font: 400 56px/1.1 'Bebas Neue', Impact, sans-serif; letter-spacing: .05em; color: #f4f4f0;
  text-shadow: 0 0 22px rgba(255, 106, 19, .35);
}
.vban__mundo[data-cena="carros"] .vban__cursor { height: 50px; vertical-align: -5px; background: #ff6a13; }
.vban__mundo[data-cena="carros"] .vban__peca { box-shadow: 0 18px 34px rgba(0, 0, 0, .6); }
.vban__mundo[data-cena="carros"] .vban__risco { stroke: #f4f4f0; stroke-width: 6; }
.vban__mundo[data-cena="carros"] [data-acesa] { --brilho: drop-shadow(0 0 30px rgba(255, 90, 40, .85)); }
/* os ímãs de neon */
.vban .vban__ima {
  width: 22px; height: 22px; border-radius: 50%; filter: none;
  background: radial-gradient(circle at 35% 30%, #fff 0 2px, #6ff0ff 3px, #0aa5c2 72%);
  box-shadow: 0 4px 7px rgba(0, 0, 0, .65), 0 0 12px rgba(46, 230, 255, .55);
}
.vban .vban__ima--laranja { background: radial-gradient(circle at 35% 30%, #fff 0 2px, #ffa15c 3px, #e2550b 72%); box-shadow: 0 4px 7px rgba(0, 0, 0, .65), 0 0 12px rgba(255, 106, 19, .55); }
.vban .vban__ima.vban__fora { filter: blur(5px); }
/* a ficha do dinamômetro */
.vban__dinamometro {
  width: 300px; height: 290px; padding: 0 20px 14px; border-radius: 6px; border: 1px solid #3a3d44;
  background: linear-gradient(#2c2e34, #212328); color: #d7dbe0; font: 400 16px/1.5 'Fira Code', ui-monospace, monospace;
}
.vban__dinamometro b {
  display: block; margin: 0 -20px 14px; padding: 12px 20px 8px; border-radius: 6px 6px 0 0;
  background: #ff6a13; color: #1a120b; font: 400 30px/1 'Bebas Neue', Impact, sans-serif; letter-spacing: .08em;
}
.vban__dinamometro dl { display: grid; grid-template-columns: 100px 1fr; row-gap: 4px; margin: 0; }
.vban__dinamometro dt { color: #8b929c; }
.vban__dinamometro dd { margin: 0; color: #fff; font-weight: 600; }
.vban__dinamometro svg { display: block; width: 260px; height: 44px; margin-top: 10px; }
.vban__dinamometro path { fill: none; stroke-width: 2.6; stroke-linecap: round; }
.vban__dino-cv { stroke: #ff6a13; }
.vban__dino-torque { stroke: #2ee6ff; stroke-dasharray: 5 4; }
/* a nota da oficina, em papel térmico */
.vban__nota { width: 270px; padding: 16px 18px 20px; background: #f3f1ea; color: #26231d; transform: rotate(2deg); font: 400 14px/1.55 'Fira Code', ui-monospace, monospace; }
.vban__nota b { display: block; margin-bottom: 8px; padding-bottom: 6px; border-bottom: 1px dashed #8c877c; text-align: center; font: 400 24px/1 'Bebas Neue', Impact, sans-serif; letter-spacing: .14em; }
.vban__nota ul { list-style: none; margin: 0; padding: 0; }
.vban__nota li { display: flex; justify-content: space-between; gap: 12px; }
.vban__nota .vban__nota-total { margin-top: 6px; padding-top: 6px; border-top: 1px dashed #8c877c; font-weight: 700; }
/* as fotos impressas da garagem */
.vban__polaroid--pista, .vban__polaroid--turbo, .vban__polaroid--dupla { width: auto; background: #efefec; }
.vban__polaroid--pista { padding: 12px 12px 0; transform: rotate(-1.5deg); }
.vban__polaroid--pista img { width: 380px; height: 253px; }
/* a legenda da pista fica à esquerda: a fita crepe cobre o canto direito */
.vban__polaroid--pista figcaption { text-align: left; }
.vban__polaroid--pista figcaption, .vban__polaroid--turbo figcaption {
  padding: 9px 0 11px; font: 400 13px 'Fira Code', ui-monospace, monospace; color: #4b4f56;
}
.vban__polaroid--turbo { padding: 10px 10px 0; transform: rotate(1.5deg); }
.vban__polaroid--turbo img { width: 240px; height: 187px; }
.vban__chamada {
  position: absolute; transform: translateX(-50%); padding: 3px 8px; border-radius: 4px; white-space: nowrap;
  background: rgba(17, 18, 20, .86); color: #fff; font: 600 11px 'Fira Code', ui-monospace, monospace; letter-spacing: .04em;
}
.vban__polaroid--dupla { padding: 10px 10px 0; rotate: 2.5deg; }
.vban__polaroid--dupla img { width: 220px; height: 147px; }
.vban__polaroid--dupla figcaption { padding: 7px 0 9px; font: 400 22px/1.1 'Shadows Into Light', cursive; color: #1d1d1f; }
/* a etiqueta de fita crepe, escrita à mão */
.vban__crepe {
  width: 190px; padding: 12px 14px 10px; transform: rotate(-5deg); box-shadow: 0 6px 12px rgba(0, 0, 0, .4);
  background-color: #e4d6ae; background-image: repeating-linear-gradient(90deg, rgba(120, 95, 40, .06) 0 2px, transparent 2px 6px);
  font: 400 25px/1.05 'Shadows Into Light', cursive; color: #1d1b16;
}
/* o traçado da pista */
.vban__pista { width: 400px; height: 185px; padding: 14px 20px 0; border-radius: 6px; background: #1d1f23; border: 1px solid #34373e; }
.vban__pista b { display: block; font: 400 26px/1 'Bebas Neue', Impact, sans-serif; letter-spacing: .08em; color: #ff6a13; }
.vban__pista svg { display: block; width: 360px; height: 126px; margin-top: 8px; overflow: visible; }
.vban__pista-asfalto { fill: none; stroke: #474b54; stroke-width: 18; stroke-linejoin: round; }
.vban__pista-linha { fill: none; stroke: #ff6a13; stroke-width: 3; stroke-dasharray: 7 6; stroke-linecap: round; }
.vban__pista-marca { fill: #2ee6ff; }
.vban__pista text { fill: #c7ccd4; font: 500 11px 'Fira Code', ui-monospace, monospace; text-anchor: middle; }
/* o conta-giros, que acende */
.vban__giros {
  width: 300px; height: 300px; border-radius: 50%; border: 10px solid #2c2e34;
  background: radial-gradient(circle at 50% 42%, #24262b, #0d0e10 72%); box-sizing: border-box;
}
.vban__giros svg:not(.vban__mao) { position: absolute; inset: 0; width: 100%; height: 100%; }
.vban__giros-trilho { fill: none; stroke: #3a3d44; stroke-width: 6; stroke-linecap: round; }
.vban__giros-vermelho { fill: none; stroke: #ff3b2f; stroke-width: 6; stroke-linecap: round; }
.vban__giros-traco { stroke: #e8eaed; stroke-width: 2.6; stroke-linecap: round; }
.vban__giros-meio { stroke: #6b7079; stroke-width: 1.6; stroke-linecap: round; }
.vban__giros-agulha { stroke: #ff6a13; stroke-width: 3.6; stroke-linecap: round; }
.vban__giros-centro { fill: #ff6a13; stroke: #1a1b1e; stroke-width: 3; }
.vban__giros-escala { fill: #8b929c; font: 500 9px 'Fira Code', ui-monospace, monospace; text-anchor: middle; }
.vban__giros strong {
  position: absolute; left: 0; right: 0; bottom: 52px; text-align: center;
  font: 400 44px/1 'Bebas Neue', Impact, sans-serif; letter-spacing: .06em; color: #ff8a3d; text-shadow: 0 0 14px rgba(255, 106, 19, .6);
}
/* o ângulo da derrapagem */
.vban__angulo { width: 260px; height: 225px; padding: 16px 20px 0; border-radius: 8px; border: 1px solid rgba(46, 230, 255, .4); background: #17191d; text-align: center; }
.vban__angulo svg:not(.vban__mao) { display: block; width: 220px; height: 112px; }
.vban__angulo-arco { fill: none; stroke: #3a3d44; stroke-width: 4; }
.vban__angulo-feito { fill: none; stroke: #2ee6ff; stroke-width: 6; stroke-linecap: round; }
.vban__angulo-braco { stroke: #6b7079; stroke-width: 2.4; stroke-linecap: round; }
.vban__angulo-braco--vivo { stroke: #2ee6ff; }
.vban__angulo strong { display: block; margin-top: -30px; font: 400 76px/1 'Bebas Neue', Impact, sans-serif; color: #2ee6ff; text-shadow: 0 0 18px rgba(46, 230, 255, .45); }
.vban__angulo span { display: block; margin-top: 2px; font: 500 13px 'Fira Code', ui-monospace, monospace; color: #9aa1ab; }
/* a luz de oficina: a softbox branca e fria, o farol âmbar e o neon ciano e magenta */
.vban__mundo[data-cena="carros"] .vban__luz--softbox::before {
  mix-blend-mode: screen; background: radial-gradient(circle, rgba(225, 235, 255, .42), rgba(200, 215, 255, .16) 42%, transparent 62%);
}
.vban__mundo[data-cena="carros"] .vban__luz--softbox .vban__lampada {
  background: radial-gradient(circle at 40% 35%, #fff, #e8f0ff 55%, #a9c4ff); box-shadow: 0 0 0 6px rgba(220, 230, 255, .22), 0 0 26px 8px rgba(210, 225, 255, .5);
}
.vban__mundo[data-cena="carros"] .vban__facho {
  mix-blend-mode: screen; background: linear-gradient(to bottom, rgba(255, 196, 120, .6), rgba(255, 170, 90, .2) 72%, transparent);
}
.vban__mundo[data-cena="carros"] .vban__luz--holofote .vban__lampada {
  background: radial-gradient(circle at 40% 35%, #fff, #ffd9a0 55%, #ff9a3c); box-shadow: 0 0 0 6px rgba(255, 190, 110, .25), 0 0 26px 8px rgba(255, 160, 70, .55);
}
.vban__mundo[data-cena="carros"] .vban__luz--cores::before { mix-blend-mode: screen; }
.vban--l3 .vban__mundo[data-cena="carros"] .vban__luz--cores::before { animation: vban-neon 1.6s ease-in-out infinite alternate; }
.vban__mundo[data-cena="carros"] .vban__luz--cores .vban__lampada { background: conic-gradient(#2ee6ff, #ff2fd0, #2ee6ff); box-shadow: 0 0 0 6px rgba(255, 255, 255, .15), 0 0 26px 8px rgba(46, 230, 255, .5); }
@keyframes vban-neon {
  from { background: radial-gradient(circle, rgba(46, 230, 255, .62), rgba(46, 230, 255, .18) 40%, transparent 62%); }
  to   { background: radial-gradient(circle, rgba(255, 47, 208, .58), rgba(255, 47, 208, .16) 40%, transparent 62%); }
}

/* ---------- CENA 5 · a sala de montagem de "Viagem à Lua" ----------
   Escura e quente, com a poeira de luz do projetor; a letra das cartelas
   do cinema mudo (Cinzel), a do letreiro art déco (Josefin Sans) e a
   escrita à mão (Dancing Script); o lápis vermelho de marcar o corte. */
.vban[data-cena="cinema"] .vban__janela { background: #0e0b09; }
.vban .vban__mundo[data-cena="cinema"] {
  background-color: #17120e;
  background-image:
    radial-gradient(ellipse 60% 55% at 70% 18%, rgba(255, 196, 120, .12), transparent 70%),
    radial-gradient(circle, rgba(255, 230, 190, .05) 0 1px, transparent 1.6px),
    repeating-linear-gradient(90deg, rgba(0, 0, 0, .18) 0 2px, transparent 2px 120px);
  background-size: 100% 100%, 13px 13px, 100% 100%;
  transition-duration: 1.4s; transition-timing-function: cubic-bezier(.65, 0, .35, 1);
}
.vban__mundo[data-cena="cinema"] .vban__titulo { font: 700 40px/1.25 'Cinzel', Georgia, serif; letter-spacing: .04em; color: #f2e6cc; }
.vban__mundo[data-cena="cinema"] .vban__cursor { height: 44px; vertical-align: -8px; background: #e8372c; }
.vban__mundo[data-cena="cinema"] .vban__peca { box-shadow: 0 18px 36px rgba(0, 0, 0, .6); }
.vban__mundo[data-cena="cinema"] .vban__risco { stroke: #e8372c; stroke-width: 6; }
.vban__mundo[data-cena="cinema"] [data-acesa] { --brilho: drop-shadow(0 0 32px rgba(255, 240, 210, .9)); }
/* AS FAIXAS DO CINEMA: quando grava, a tela fecha em cima e embaixo */
.vban[data-cena="cinema"] .vban__janela::before, .vban[data-cena="cinema"] .vban__janela::after {
  content: ''; position: absolute; left: 0; right: 0; z-index: 1; height: 9%; background: #000; pointer-events: none;
  transform: scaleY(0); transition: transform .8s ease;
}
.vban[data-cena="cinema"] .vban__janela::before { top: 0; transform-origin: 50% 0; }
.vban[data-cena="cinema"] .vban__janela::after { bottom: 0; transform-origin: 50% 100%; }
.vban[data-cena="cinema"].vban--rec .vban__janela::before, .vban[data-cena="cinema"].vban--rec .vban__janela::after { transform: none; }
/* a claquete */
.vban__claquete { width: 300px; height: 240px; padding: 64px 22px 0; border-radius: 6px; background: #1c1c1e; color: #f4f1ea; transform: rotate(-3deg); }
.vban__claquete-haste {
  position: absolute; left: 0; right: 0; top: 0; height: 44px; border-radius: 6px 6px 0 0;
  background: repeating-linear-gradient(-55deg, #f4f1ea 0 22px, #1c1c1e 22px 44px);
  transform: rotate(-6deg); transform-origin: 0 100%;
}
.vban__claquete dl { display: grid; grid-template-columns: 96px 1fr; row-gap: 6px; margin: 0; }
.vban__claquete dt { font: 600 13px/32px 'Josefin Sans', system-ui, sans-serif; letter-spacing: .2em; text-transform: uppercase; color: #a49f95; border-bottom: 1px solid rgba(244, 241, 234, .2); }
.vban__claquete dd { margin: 0; font: 600 25px/32px 'Dancing Script', cursive; border-bottom: 1px solid rgba(244, 241, 234, .2); }
/* a película, com as perfurações dos dois lados */
.vban__pelicula {
  margin: 0; width: 412px; padding: 20px 26px 22px; background-color: #1d1712;
  background-image:
    repeating-linear-gradient(to bottom, transparent 0 9px, #e9dcc0 9px 21px, transparent 21px 30px),
    repeating-linear-gradient(to bottom, transparent 0 9px, #e9dcc0 9px 21px, transparent 21px 30px);
  background-size: 12px 100%, 12px 100%; background-position: 7px 0, calc(100% - 7px) 0; background-repeat: no-repeat;
  border-radius: 3px; transform: rotate(1.5deg);
}
.vban__pelicula img { display: block; width: 360px; height: 274px; }
.vban__pelicula figcaption {
  position: absolute; left: 0; right: 0; bottom: 4px; text-align: center;
  font: 600 10px 'Josefin Sans', system-ui, sans-serif; letter-spacing: .4em; text-transform: uppercase; color: #c9a86a;
}
.vban__polaroid--esboco, .vban__polaroid--trem, .vban__polaroid--estudio { width: auto; background: #f1e9d8; }
.vban__polaroid--esboco { padding: 10px 10px 0; transform: rotate(-2deg); }
.vban__polaroid--esboco img { width: 190px; height: 235px; }
.vban__polaroid--trem { padding: 12px 12px 0; rotate: 2deg; }
.vban__polaroid--trem img { width: 300px; height: 225px; filter: sepia(.25) contrast(1.05); }
.vban__polaroid--estudio { padding: 10px 10px 0; rotate: -2deg; }
.vban__polaroid--estudio img { width: 220px; height: 175px; filter: sepia(.3); }
.vban__polaroid--esboco figcaption, .vban__polaroid--trem figcaption, .vban__polaroid--estudio figcaption {
  padding: 8px 0 10px; font: 600 19px/1.1 'Dancing Script', cursive; color: #3a2a1a;
}
.vban__fita--velha { background-color: rgba(214, 190, 140, .7); background-image: none; }
/* a história da cópia, numa cartela de cinema mudo */
.vban__restauro {
  width: 410px; height: 200px; padding: 18px 26px; border: 3px double #c9a86a; border-radius: 4px; background: #120e0b; color: #f2e6cc;
}
.vban__restauro b { display: block; margin-bottom: 12px; text-align: center; font: 700 22px 'Cinzel', Georgia, serif; letter-spacing: .08em; color: #e9c86a; }
.vban__restauro ol { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.vban__restauro li { display: grid; grid-template-columns: 64px 1fr; align-items: baseline; gap: 12px; }
.vban__restauro time { font: 700 20px 'Cinzel', Georgia, serif; color: #e8372c; }
.vban__restauro span { font: 400 16px 'Josefin Sans', system-ui, sans-serif; }
/* as tintas da cópia */
.vban__tintas { width: 310px; height: 175px; padding: 16px 20px 0; border-radius: 4px; background: #f1e9d8; color: #2c2118; }
.vban__tintas b { display: block; font: 700 18px 'Cinzel', Georgia, serif; letter-spacing: .06em; }
.vban__tintas ul { list-style: none; margin: 12px 0 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.vban__tintas li { display: flex; flex-direction: column; align-items: center; gap: 6px; font: 600 13px 'Josefin Sans', system-ui, sans-serif; }
.vban__tintas li i { display: block; width: 52px; height: 52px; border-radius: 50%; background: var(--tinta); box-shadow: inset 0 -4px 8px rgba(0, 0, 0, .2); }
.vban__tintas small { display: block; margin-top: 8px; text-align: center; font: 600 16px 'Dancing Script', cursive; color: #6b5440; }
/* a mesa de luz, que acende */
.vban__mesa-de-luz { width: 320px; height: 205px; padding: 16px; border-radius: 10px; background: #2a2622; text-align: center; }
.vban__mesa-quadro { padding: 10px 24px; border-radius: 4px; background: linear-gradient(#fffdf6, #f3ecdc); box-shadow: inset 0 0 18px rgba(255, 220, 160, .6); }
.vban__mesa-quadro img { display: block; width: 240px; height: 132px; margin: 0 auto; object-fit: cover; }
.vban__mesa-de-luz span { display: block; margin-top: 10px; font: 600 12px 'Josefin Sans', system-ui, sans-serif; letter-spacing: .06em; text-transform: uppercase; color: #e9dcc0; }
/* a luz da sala de montagem: o tungstênio, o facho do projetor e as cores pintadas */
.vban__mundo[data-cena="cinema"] .vban__luz--softbox::before {
  mix-blend-mode: screen; background: radial-gradient(circle, rgba(255, 200, 130, .45), rgba(255, 180, 100, .16) 42%, transparent 62%);
}
.vban__mundo[data-cena="cinema"] .vban__facho {
  mix-blend-mode: screen; background: linear-gradient(to bottom, rgba(255, 244, 220, .6), rgba(255, 236, 200, .22) 72%, transparent);
}
.vban__mundo[data-cena="cinema"] .vban__luz--holofote .vban__lampada {
  background: radial-gradient(circle at 40% 35%, #fff, #fff4dc 55%, #f2d29a); box-shadow: 0 0 0 6px rgba(255, 240, 210, .25), 0 0 26px 8px rgba(255, 236, 200, .55);
}
.vban__mundo[data-cena="cinema"] .vban__luz--cores::before { mix-blend-mode: screen; }
.vban--l3 .vban__mundo[data-cena="cinema"] .vban__luz--cores::before { animation: vban-tintas 4s linear infinite; }
.vban__mundo[data-cena="cinema"] .vban__luz--cores .vban__lampada { background: conic-gradient(#e9c86a, #d4553e, #6f9a8a, #e9c86a); }
@keyframes vban-tintas {
  0%, 100% { background: radial-gradient(circle, rgba(233, 200, 106, .55), transparent 62%); }
  33%      { background: radial-gradient(circle, rgba(212, 85, 62, .5), transparent 62%); }
  66%      { background: radial-gradient(circle, rgba(111, 154, 138, .5), transparent 62%); }
}

/* ---------- CENA 6 · a sala de guerra do lançamento ----------
   Quadro branco de verdade: o branco frio com a sombra do que já foi
   apagado, o pincel atômico azul, preto e vermelho, os papéis impressos
   presos por ímã e a caneta verde de quem marca o que deu certo. A letra
   impressa é a do site (Outfit, Archivo Black) e a do quadro, a do
   pincel (Indie Flower). A câmera é rápida e chega seca, sem sobra. */
.vban[data-cena="vendas"] .vban__janela { background: #dfe2e0; }
.vban .vban__mundo[data-cena="vendas"] {
  background-color: #f5f6f4;
  background-image:
    radial-gradient(ellipse 22% 14% at 18% 78%, rgba(40, 70, 140, .05), transparent 70%),
    radial-gradient(ellipse 26% 16% at 78% 22%, rgba(20, 20, 20, .045), transparent 70%),
    radial-gradient(ellipse 30% 18% at 58% 88%, rgba(180, 40, 40, .035), transparent 70%),
    linear-gradient(115deg, rgba(255, 255, 255, .7), transparent 40%, rgba(255, 255, 255, .45) 60%, transparent);
  transition-duration: .75s; transition-timing-function: cubic-bezier(.16, 1, .3, 1);
}
.vban__mundo[data-cena="vendas"] .vban__titulo { font: 400 40px/1.25 'Archivo Black', system-ui, sans-serif; letter-spacing: -.01em; color: #17325c; }
.vban__mundo[data-cena="vendas"] .vban__cursor { height: 44px; vertical-align: -8px; background: #1f9d55; }
.vban__mundo[data-cena="vendas"] .vban__peca { box-shadow: 0 10px 22px rgba(30, 40, 60, .16); }
.vban__mundo[data-cena="vendas"] .vban__risco { stroke: #1f9d55; stroke-width: 7; }
.vban__mundo[data-cena="vendas"] [data-acesa] { --brilho: drop-shadow(0 0 26px rgba(80, 220, 140, .8)); }
.vban .vban__ima--quadro { background: radial-gradient(circle at 35% 30%, #fff 0 2px, #5b7cff 3px, #2a44c4 72%); box-shadow: 0 3px 5px rgba(0, 0, 0, .3); }
/* o funil */
.vban__funil { width: 300px; height: 280px; padding: 18px 20px; border-radius: 6px; background: #fff; font: 500 15px 'Outfit', system-ui, sans-serif; color: #1d2433; }
.vban__funil b, .vban__anuncios > b, .vban__semana b, .vban__xicaras b { display: block; font: 400 18px 'Archivo Black', system-ui, sans-serif; color: #17325c; }
.vban__funil ol { list-style: none; margin: 14px 0 0; padding: 0; display: grid; gap: 6px; }
.vban__funil li {
  width: var(--largura); margin: 0 auto; box-sizing: border-box; display: flex; justify-content: space-between; padding: 9px 14px;
  clip-path: polygon(0 0, 100% 0, 96% 100%, 4% 100%); background: #2a44c4; color: #fff;
}
.vban__funil li:nth-child(2) { background: #4a66e0; }
.vban__funil li:nth-child(3) { background: #7a90f0; }
.vban__funil li em { font-style: normal; font-weight: 700; }
.vban__funil p { margin: 16px 0 0; text-align: center; color: #4a5468; }
.vban__funil strong { display: block; font: 400 40px/1.05 'Archivo Black', system-ui, sans-serif; color: #17325c; }
/* o teste de anúncio */
.vban__anuncios { width: 470px; height: 285px; padding: 16px 18px; border-radius: 6px; background: #fff; display: grid; grid-template-columns: 1fr 1fr; gap: 12px 14px; align-content: start; }
.vban__anuncios > b { grid-column: 1 / -1; }
.vban__anuncio { position: relative; padding: 6px; border: 2px solid #d8dce4; border-radius: 8px; font: 500 13px/1.3 'Outfit', system-ui, sans-serif; color: #1d2433; }
.vban__anuncio img { display: block; width: 100%; height: 130px; border-radius: 4px; object-fit: cover; }
.vban__anuncio span { display: block; margin-top: 6px; font-weight: 600; }
.vban__anuncio em { display: block; margin-top: 2px; font-style: normal; color: #6b7487; }
.vban__anuncio--vence { border-color: #1f9d55; }
.vban__anuncio--vence em { color: #1f9d55; font-weight: 700; }
.vban__anuncio small {
  position: absolute; right: 10px; top: 10px; padding: 3px 8px; border-radius: 99px; background: #1f9d55; color: #fff;
  font: 700 11px 'Outfit', system-ui, sans-serif; letter-spacing: .1em; text-transform: uppercase;
}
/* a persona */
.vban__persona { width: 230px; height: 210px; padding: 18px; border-radius: 6px; background: #fff; text-align: center; font: 500 14px/1.35 'Outfit', system-ui, sans-serif; color: #4a5468; transform: rotate(2deg); }
.vban__persona-rosto { display: block; width: 62px; height: 62px; margin: 0 auto 10px; border-radius: 50%; background: radial-gradient(circle at 50% 38%, #c9a07a 0 14px, transparent 15px), radial-gradient(ellipse 30px 20px at 50% 100%, #c9a07a 0 100%, transparent 0), #e9eef8; }
.vban__persona b { display: block; margin-bottom: 6px; font: 400 20px 'Archivo Black', system-ui, sans-serif; color: #17325c; }
.vban__persona span { display: block; }
/* o kanban riscado no quadro */
.vban .vban__kanban { width: 460px; height: 205px; display: grid; grid-template-columns: repeat(3, 1fr); box-shadow: none; border: 3px solid #1d2433; border-radius: 10px 14px 8px 12px; }
.vban__kanban > div { position: relative; padding: 10px 12px; border-left: 3px solid #1d2433; }
.vban__kanban > div:first-child { border-left: 0; }
.vban__kanban b { display: block; font: 400 24px 'Indie Flower', cursive; color: #1d2433; border-bottom: 2px solid #1d2433; padding-bottom: 2px; }
.vban__kanban-nota {
  display: block; margin-top: 14px; padding: 10px 8px; min-height: 92px; box-sizing: border-box; background: #ffe066; rotate: -3deg;
  font: 400 19px/1.1 'Indie Flower', cursive; font-style: normal; color: #2a2400; box-shadow: 0 6px 10px rgba(0, 0, 0, .12);
}
.vban__kanban-nota--rosa { background: #ffb0c8; rotate: 2deg; }
.vban__kanban-nota--verde { background: #b9f2c8; rotate: -1deg; }
/* a semana do lançamento */
.vban__semana { width: 360px; height: 150px; padding: 16px 20px; border-radius: 6px; background: #fff; }
.vban__semana ol { position: relative; list-style: none; margin: 18px 0 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); text-align: center; font: 500 13px/1.2 'Outfit', system-ui, sans-serif; color: #4a5468; }
.vban__semana ol::before { content: ''; position: absolute; left: 12%; right: 12%; top: 26px; height: 2px; background: #c9ced8; }
.vban__semana li span { position: relative; display: block; width: 38px; margin: 0 auto 10px; padding: 6px 0; border-radius: 99px; background: #e9eef8; color: #17325c; font-weight: 700; text-transform: uppercase; }
.vban__semana-dia span { background: #1f9d55 !important; color: #fff !important; }
/* a meta, que acende */
.vban__meta { width: 270px; height: 300px; padding: 22px 22px; border-radius: 10px; background: #fff; display: flex; gap: 20px; }
.vban__meta-tubo { position: relative; flex: none; width: 34px; border-radius: 17px; background: #e9eef8; overflow: hidden; box-shadow: inset 0 0 0 2px #c9ced8; }
.vban__meta-tubo i { position: absolute; left: 0; right: 0; bottom: 0; border-radius: 17px; background: linear-gradient(#58d68d, #1f9d55); }
.vban__meta > div { display: flex; flex-direction: column; justify-content: center; font: 500 14px 'Outfit', system-ui, sans-serif; color: #4a5468; }
.vban__meta small { font: 600 12px 'Outfit', system-ui, sans-serif; letter-spacing: .14em; text-transform: uppercase; }
.vban__meta b { font: 400 30px 'Archivo Black', system-ui, sans-serif; color: #17325c; }
.vban__meta strong { margin-top: 18px; font: 400 64px/1 'Archivo Black', system-ui, sans-serif; color: #1f9d55; }
/* quanto custa e quanto rende cada cliente, em xícaras */
.vban__xicaras { width: 260px; height: 205px; padding: 16px 20px; border-radius: 6px; background: #fff; font: 500 14px 'Outfit', system-ui, sans-serif; color: #4a5468; }
.vban__xicaras p { display: flex; align-items: center; gap: 6px; margin: 12px 0 0; }
.vban__xicaras p span { width: 44px; }
.vban__xicaras p em { width: 58px; font-style: normal; font-weight: 700; color: #17325c; }
.vban__xicara { position: relative; width: 18px; height: 16px; border-radius: 0 0 7px 7px; background: #6b4a2b; }
.vban__xicara::after { content: ''; position: absolute; right: -6px; top: 3px; width: 6px; height: 7px; border: 2px solid #6b4a2b; border-left: 0; border-radius: 0 5px 5px 0; }
.vban__xicara--parte { width: 7px; border-radius: 0 0 0 7px; }
.vban__xicara--parte::after { display: none; }
.vban__xicaras strong { display: block; margin-top: 12px; text-align: center; font: 400 44px/1 'Archivo Black', system-ui, sans-serif; color: #1f9d55; }
/* o post-it da dúvida, no verde-limão */
.vban .vban__postit--lima { background: #d8f57a; color: #233000; rotate: 3deg; padding-top: 48px; font: 400 25px/1.1 'Indie Flower', cursive; }
/* a luz de escritório: a softbox branca, o holofote de palco e o verde que pisca quando a meta bate */
.vban__mundo[data-cena="vendas"] .vban__luz--softbox::before { background: radial-gradient(circle, rgba(170, 200, 255, .45), rgba(170, 200, 255, .2) 40%, transparent 62%); }
.vban__mundo[data-cena="vendas"] .vban__facho { background: linear-gradient(to bottom, rgba(255, 236, 170, .6), rgba(255, 226, 150, .22) 72%, transparent); }
.vban__mundo[data-cena="vendas"] .vban__luz--holofote .vban__lampada { background: radial-gradient(circle at 40% 35%, #fff, #fff1c0 55%, #f6c950); box-shadow: 0 0 0 6px rgba(255, 230, 150, .25), 0 0 26px 8px rgba(255, 220, 120, .55); }
.vban--l3 .vban__mundo[data-cena="vendas"] .vban__luz--cores::before { animation: vban-meta 1.2s ease-in-out infinite alternate; }
.vban__mundo[data-cena="vendas"] .vban__luz--cores .vban__lampada { background: conic-gradient(#1f9d55, #f6c950, #1f9d55); }
@keyframes vban-meta {
  from { background: radial-gradient(circle, rgba(31, 157, 85, .5), transparent 62%); }
  to   { background: radial-gradient(circle, rgba(246, 201, 80, .55), transparent 62%); }
}

/* ---------- CENA 7 · a prancheta do gol de 1970 ----------
   O mural é o campo: a grama cortada em faixas, a cal das linhas e a luz
   dos refletores. As peças são as da imprensa e do vestiário, os
   jogadores são os ímãs da prancheta, a letra é a condensada dos placares
   (Oswald) com a de jornal (Roboto) e a caneta é a amarela da camisa. A
   câmera acompanha como uma transmissão: chega rápido e desliza. */
.vban[data-cena="futebol"] .vban__janela { background: #123d22; }
.vban .vban__mundo[data-cena="futebol"] {
  background-color: #1d6b37;
  background-image:
    radial-gradient(ellipse 70% 60% at 50% 45%, rgba(255, 255, 255, .08), transparent 72%),
    repeating-linear-gradient(90deg, rgba(255, 255, 255, .045) 0 100px, transparent 100px 200px);
  transition-duration: 1.1s; transition-timing-function: cubic-bezier(.3, .7, .2, 1);
}
.vban__campo { position: absolute; left: 0; top: 0; width: 1600px; height: 700px; overflow: visible; pointer-events: none; }
.vban__campo rect, .vban__campo path, .vban__campo circle { fill: none; stroke: rgba(255, 255, 255, .55); stroke-width: 4; }
.vban__mundo[data-cena="futebol"] .vban__titulo { font: 700 46px/1.2 'Oswald', Impact, sans-serif; letter-spacing: .01em; text-transform: uppercase; color: #fff; text-shadow: 0 3px 12px rgba(0, 0, 0, .35); }
.vban__mundo[data-cena="futebol"] .vban__cursor { height: 48px; vertical-align: -7px; background: #ffdf00; }
.vban__mundo[data-cena="futebol"] .vban__peca { box-shadow: 0 16px 30px rgba(0, 30, 10, .45); }
.vban__mundo[data-cena="futebol"] .vban__risco { stroke: #ffdf00; stroke-width: 7; }
.vban__mundo[data-cena="futebol"] [data-acesa] { --brilho: drop-shadow(0 0 28px rgba(255, 223, 0, .8)); }
/* a súmula do jogo */
.vban__sumula { width: 280px; height: 230px; padding: 18px 20px; border-radius: 4px; background: #fbfaf5; color: #17241a; font: 400 15px/1.4 'Roboto', system-ui, sans-serif; transform: rotate(-2deg); }
.vban__sumula small { display: block; font: 500 12px 'Oswald', sans-serif; letter-spacing: .2em; text-transform: uppercase; color: #1d6b37; }
.vban__sumula b { display: block; margin: 6px 0 8px; font: 700 34px/1 'Oswald', Impact, sans-serif; text-transform: uppercase; }
.vban__sumula span { display: block; color: #4a574d; }
.vban__sumula em { display: block; margin-top: 14px; font: 700 22px 'Oswald', Impact, sans-serif; font-style: normal; color: #17241a; }
/* a prancheta, com os ímãs */
.vban__prancheta { width: 470px; height: 300px; padding: 0; border-radius: 10px; border: 6px solid #e9ecef; background: #0f5a2c; overflow: hidden; }
.vban__prancheta svg { display: block; width: 458px; height: 232px; }
.vban__prancheta-linhas rect, .vban__prancheta-linhas path, .vban__prancheta-linhas circle { fill: none; stroke: rgba(255, 255, 255, .7); stroke-width: 2; }
.vban__prancheta-bola { fill: none; stroke: #fff; stroke-width: 2.6; stroke-dasharray: 7 6; stroke-linecap: round; }
.vban__prancheta-italia circle { fill: #2f6bff; stroke: #fff; stroke-width: 2; }
.vban__prancheta-brasil circle { fill: #ffdf00; stroke: #0f7a3a; stroke-width: 3; }
.vban__prancheta-brasil text { fill: #0b3d1d; font: 700 11px 'Oswald', sans-serif; text-anchor: middle; }
.vban__prancheta p { margin: 0; padding: 8px 14px; background: rgba(0, 0, 0, .35); color: #eaf5ec; font: 400 12px/1.35 'Roboto', system-ui, sans-serif; }
/* a escalação, recortada do jornal */
.vban__escalacao { width: 250px; height: 300px; padding: 16px 20px; background: #f1ede2; color: #1d1d1d; font: 400 14px/1.4 'Roboto', system-ui, sans-serif; transform: rotate(1.5deg); }
.vban__escalacao b { display: block; margin-bottom: 10px; padding-bottom: 6px; border-bottom: 3px solid #1d1d1d; font: 700 20px 'Oswald', Impact, sans-serif; text-transform: uppercase; }
.vban__escalacao ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; text-align: center; }
.vban__escalacao li { padding: 5px 0; border-bottom: 1px dotted #9a958a; }
.vban__escalacao small { display: block; margin-top: 12px; text-align: center; font: 500 13px 'Oswald', sans-serif; letter-spacing: .12em; text-transform: uppercase; color: #5a564c; }
/* os gols, num placar */
.vban__gols { width: 420px; height: 190px; padding: 16px 22px; border-radius: 8px; background: #101512; color: #fff; font: 400 16px 'Roboto', system-ui, sans-serif; }
.vban__gols b { display: block; font: 500 14px 'Oswald', sans-serif; letter-spacing: .18em; text-transform: uppercase; color: #9fd8ae; }
.vban__gols ol { list-style: none; margin: 14px 0 0; padding: 0; display: grid; gap: 8px; }
.vban__gols li { display: grid; grid-template-columns: 70px 1fr; align-items: center; }
.vban__gols time { font: 700 28px/1 'Oswald', Impact, sans-serif; color: #ffdf00; }
.vban__gols-lance span { font-weight: 700; color: #ffdf00; }
/* a anotação do lance, em giz na lousinha */
.vban__prancheta-nota { width: 230px; padding: 18px 18px; border-radius: 6px; background: #22302a; color: #f3f3ea; font: 400 24px/1.15 'Indie Flower', cursive; transform: rotate(-3deg); border: 4px solid #8a6a43; }
/* o selo dos Correios, com o picote */
/* o picote: a borda é um padrão de furos, e o miolo branco cobre o meio */
.vban__selo { margin: 0; padding: 14px; width: auto; rotate: -3deg; background: radial-gradient(circle, transparent 0 4.5px, #fff 5px) 0 0 / 13px 13px; }
.vban__selo::before { content: ''; position: absolute; inset: 7px; background: #fff; }
.vban__selo img, .vban__selo figcaption { position: relative; }
.vban__selo img { display: block; width: 270px; height: 183px; }
.vban__selo figcaption { padding: 6px 0 2px; text-align: center; font: 500 12px 'Oswald', sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #3a3a3a; }
.vban__polaroid--chute, .vban__polaroid--craques { width: auto; padding: 10px 10px 0; background: #f7f6f2; }
.vban__polaroid--chute { rotate: 2deg; }
.vban__polaroid--chute img { width: 240px; height: 160px; }
.vban__polaroid--craques { rotate: -2deg; }
.vban__polaroid--craques img { width: 240px; height: 160px; }
.vban__polaroid--chute figcaption, .vban__polaroid--craques figcaption { padding: 8px 0 10px; font: 500 15px 'Oswald', sans-serif; letter-spacing: .04em; color: #1d1d1d; }
/* a luz do estádio: o vestiário, o refletor e a torcida verde e amarela */
.vban__mundo[data-cena="futebol"] .vban__luz--softbox::before { mix-blend-mode: screen; background: radial-gradient(circle, rgba(255, 245, 220, .4), rgba(255, 240, 210, .14) 42%, transparent 62%); }
.vban__mundo[data-cena="futebol"] .vban__facho { mix-blend-mode: screen; background: linear-gradient(to bottom, rgba(235, 245, 255, .55), rgba(225, 240, 255, .2) 72%, transparent); }
.vban__mundo[data-cena="futebol"] .vban__luz--cores::before { mix-blend-mode: screen; }
.vban--l3 .vban__mundo[data-cena="futebol"] .vban__luz--cores::before { animation: vban-torcida 1.4s steps(1) infinite; }
.vban__mundo[data-cena="futebol"] .vban__luz--cores .vban__lampada { background: conic-gradient(#ffdf00 0 50%, #19a64a 0); }
@keyframes vban-torcida {
  0%  { background: radial-gradient(circle, rgba(255, 223, 0, .6), rgba(255, 223, 0, .18) 40%, transparent 62%); }
  50% { background: radial-gradient(circle, rgba(40, 200, 90, .55), rgba(40, 200, 90, .16) 40%, transparent 62%); }
}

/* ---------- CENA 8 · a cozinha na noite da moqueca ----------
   O aço escovado da cozinha, o trilho das comandas, o papel da impressora
   de pedidos, o caderno de receitas, o quadro-negro do cardápio e a
   caneta azul de marcar a comanda. A câmera anda como quem passa pelo
   balcão: firme e um pouco inclinada para o lado do prato. */
.vban[data-cena="cozinha"] .vban__janela { background: #9ea4aa; }
.vban .vban__mundo[data-cena="cozinha"] {
  background-color: #c3c8cd;
  background-image:
    radial-gradient(ellipse 70% 55% at 50% 30%, rgba(255, 255, 255, .35), transparent 72%),
    repeating-linear-gradient(90deg, rgba(255, 255, 255, .12) 0 1px, transparent 1px 3px, rgba(0, 0, 0, .04) 3px 4px, transparent 4px 7px);
  transition-duration: 1.2s; transition-timing-function: cubic-bezier(.4, 0, .2, 1);
}
.vban__trilho-comandas {
  position: absolute; left: 80px; right: 80px; top: 114px; height: 10px; border-radius: 5px;
  background: linear-gradient(#f2f4f6, #9aa1a8 60%, #6e757c); box-shadow: 0 3px 6px rgba(0, 0, 0, .25);
}
.vban__mundo[data-cena="cozinha"] .vban__titulo { font: 400 50px/1.15 'Lobster', Georgia, serif; color: #1f2a33; text-shadow: 0 1px 0 rgba(255, 255, 255, .6); }
.vban__mundo[data-cena="cozinha"] .vban__cursor { height: 50px; vertical-align: -9px; background: #1f4fd1; }
.vban__mundo[data-cena="cozinha"] .vban__peca { box-shadow: 0 14px 26px rgba(20, 30, 40, .3); }
.vban__mundo[data-cena="cozinha"] .vban__risco { stroke: #1f4fd1; stroke-width: 6; }
.vban__mundo[data-cena="cozinha"] [data-acesa] { --brilho: drop-shadow(0 0 28px rgba(255, 170, 60, .85)); }
/* a comanda, pendurada no trilho */
.vban__comanda { width: 230px; height: 300px; padding: 22px 18px 16px; background: #fbfbf8; color: #20242a; font: 400 15px/1.45 'Work Sans', system-ui, sans-serif; }
.vban__comanda::before { content: ''; position: absolute; left: 50%; top: -14px; width: 34px; height: 18px; margin-left: -17px; border-radius: 3px; background: linear-gradient(#e3e6e9, #8d949b); }
.vban__comanda b { display: block; margin-bottom: 10px; padding-bottom: 8px; border-bottom: 2px dashed #9aa1a8; font: 700 18px 'Work Sans', system-ui, sans-serif; }
.vban__comanda ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.vban__comanda li::before { content: '· '; color: #9aa1a8; }
.vban__comanda em { display: block; margin-top: 18px; font: italic 400 15px 'Work Sans', system-ui, sans-serif; }
/* as fotos das paneleiras, da moqueca e do peixe */
.vban__polaroid--barro, .vban__polaroid--acoite, .vban__polaroid--moqueca, .vban__polaroid--peixe { width: auto; background: #fbfbf8; }
.vban__polaroid--barro { padding: 12px 12px 0; transform: rotate(-1deg); }
.vban__polaroid--barro img { width: 340px; height: 227px; }
.vban__polaroid--acoite { width: 240px; padding: 10px 10px 0; transform: rotate(1.5deg); }
.vban__polaroid--acoite img { width: 220px; height: 147px; }
.vban__polaroid--moqueca { padding: 10px 10px 0; rotate: 2deg; }
.vban__polaroid--moqueca img { width: 160px; height: 213px; }
.vban__polaroid--peixe { padding: 10px 10px 0; rotate: -2deg; }
.vban__polaroid--peixe img { width: 240px; height: 160px; }
.vban__polaroid--barro figcaption, .vban__polaroid--acoite figcaption, .vban__polaroid--moqueca figcaption, .vban__polaroid--peixe figcaption {
  padding: 8px 0 10px; font: 600 14px/1.25 'Work Sans', system-ui, sans-serif; color: #20242a;
}
.vban__polaroid--barro small, .vban__polaroid--acoite small { display: block; margin-top: 2px; font: 400 10px 'Work Sans', system-ui, sans-serif; color: #6b7178; }
/* a ficha da receita, do caderno */
.vban__receita {
  width: 280px; height: 270px; padding: 18px 22px; transform: rotate(1.5deg); color: #3a2b1d;
  background-color: #fffaf0; background-image: repeating-linear-gradient(transparent 0 27px, rgba(80, 120, 200, .25) 27px 28px); background-position: 0 52px;
  font: 400 16px/28px 'Lora', Georgia, serif;
}
.vban__receita b { display: block; font: 700 22px/28px 'Lora', Georgia, serif; color: #8a3b12; }
.vban__receita ul { margin: 8px 0 0; padding-left: 18px; }
.vban__receita p { margin: 6px 0 0; font-style: italic; color: #8a3b12; }
/* o selo de patrimônio */
.vban__patrimonio { width: 230px; height: 240px; padding: 18px 20px; border-radius: 6px; background: #1f2a33; color: #e8edf1; text-align: center; font: 400 13px/1.4 'Work Sans', system-ui, sans-serif; }
.vban__patrimonio-selo {
  display: grid; place-items: center; width: 86px; height: 86px; margin: 0 auto 12px; border-radius: 50%;
  border: 3px double #e2b65a; color: #e2b65a; font: 700 10px 'Work Sans', system-ui, sans-serif; font-style: normal; letter-spacing: .12em; text-transform: uppercase; transform: rotate(-12deg);
}
.vban__patrimonio b { display: block; margin-bottom: 8px; font: 700 16px/1.25 'Lora', Georgia, serif; color: #fff; }
/* o quadro-negro do cardápio */
.vban__quadro-negro { width: 300px; height: 200px; padding: 16px 22px; border-radius: 6px; border: 8px solid #8a6a43; background: #2a2f2c; color: #f4f1e8; }
.vban__quadro-negro b { display: block; margin-bottom: 6px; font: 400 26px 'Pacifico', cursive; color: #ffd98a; }
.vban__quadro-negro ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; font: 400 15px/1.3 'Work Sans', system-ui, sans-serif; }
.vban__quadro-negro li::before { content: '~ '; color: #ffd98a; }
/* o relógio da panela */
.vban__timer { width: 200px; height: 200px; border-radius: 50%; padding: 0; background: radial-gradient(circle at 40% 35%, #ffffff, #dfe3e7 70%); border: 6px solid #9aa1a8; text-align: center; }
.vban__timer svg:not(.vban__mao) { position: absolute; inset: 8px; width: calc(100% - 16px); height: calc(100% - 16px); }
.vban__timer-fundo { fill: none; stroke: #e5e8eb; stroke-width: 10; }
.vban__timer-falta { fill: none; stroke: #e4572e; stroke-width: 10; stroke-linecap: round; }
.vban__timer strong { position: relative; display: block; margin-top: 64px; font: 700 34px/1 'Work Sans', system-ui, sans-serif; color: #20242a; }
.vban__timer span { position: relative; display: block; margin-top: 4px; font: 500 12px 'Work Sans', system-ui, sans-serif; color: #6b7178; }
/* a luz da cozinha: a coifa, a lâmpada quente do passe e o fogo */
.vban__mundo[data-cena="cozinha"] .vban__facho { background: linear-gradient(to bottom, rgba(255, 214, 150, .6), rgba(255, 200, 130, .22) 72%, transparent); }
.vban__mundo[data-cena="cozinha"] .vban__luz--holofote .vban__lampada { background: radial-gradient(circle at 40% 35%, #fff, #ffe2a8 55%, #f5a63c); box-shadow: 0 0 0 6px rgba(255, 210, 140, .25), 0 0 26px 8px rgba(255, 190, 100, .55); }
.vban--l3 .vban__mundo[data-cena="cozinha"] .vban__luz--cores::before { animation: vban-fogo .9s ease-in-out infinite alternate; }
.vban__mundo[data-cena="cozinha"] .vban__luz--cores .vban__lampada { background: conic-gradient(#ff7a1a, #ffcf3d, #e43d1a, #ff7a1a); }
@keyframes vban-fogo {
  from { background: radial-gradient(circle, rgba(255, 120, 30, .6), transparent 62%); }
  to   { background: radial-gradient(circle, rgba(255, 200, 60, .5), transparent 58%); }
}

/* ---------- CENA 9 · a sala de controle do telescópio James Webb ----------
   O mural é o céu: o preto fundo com as estrelas e uma névoa de nebulosa.
   As peças são as telas da sala de controle (moldura escura, filete
   ciano), a letra é a do painel e a caneta é a dourada do espelho. A
   câmera flutua: devagar e girando um pouco. */
.vban[data-cena="espaco"] .vban__janela { background: #02030a; }
.vban .vban__mundo[data-cena="espaco"] {
  background-color: #04060e;
  background-image:
    radial-gradient(circle, rgba(255, 255, 255, .85) 0 1px, transparent 1.4px),
    radial-gradient(circle, rgba(200, 220, 255, .55) 0 .8px, transparent 1.2px),
    radial-gradient(ellipse 45% 40% at 72% 30%, rgba(120, 60, 160, .22), transparent 70%),
    radial-gradient(ellipse 40% 35% at 20% 75%, rgba(40, 120, 190, .2), transparent 70%);
  background-size: 173px 151px, 67px 59px, 100% 100%, 100% 100%;
  background-position: 0 0, 31px 17px, 0 0, 0 0;
  transition-duration: 1.9s; transition-timing-function: cubic-bezier(.45, .05, .25, 1);
}
.vban__mundo[data-cena="espaco"] .vban__titulo { font: 600 42px/1.25 'Raleway', system-ui, sans-serif; letter-spacing: .02em; color: #eef3ff; }
.vban__mundo[data-cena="espaco"] .vban__cursor { height: 44px; vertical-align: -8px; background: #ffcf5a; }
.vban__mundo[data-cena="espaco"] .vban__peca { box-shadow: 0 0 0 1px rgba(120, 190, 255, .35), 0 18px 40px rgba(0, 0, 0, .7); }
.vban__mundo[data-cena="espaco"] .vban__risco { stroke: #ffcf5a; stroke-width: 6; }
.vban__mundo[data-cena="espaco"] [data-acesa] { --brilho: drop-shadow(0 0 30px rgba(140, 200, 255, .85)); }
/* as telas */
.vban__tela { margin: 0; padding: 8px 8px 0; border-radius: 6px; background: #0b0f1a; }
.vban__tela img { display: block; border-radius: 3px; }
.vban__tela figcaption { padding: 7px 2px 9px; font: 500 12px/1.3 'Raleway', system-ui, sans-serif; letter-spacing: .06em; color: #a9c4ef; }
.vban__tela--penhascos img { width: 420px; height: 243px; }
.vban__tela--pilares { width: 136px; }
.vban__tela--pilares img { width: 120px; height: 208px; }
.vban__tela--espelho { width: 246px; }
.vban__tela--espelho img { width: 230px; height: 153px; }
.vban__tela--anel { width: 216px; }
.vban__tela--anel img { width: 200px; height: 186px; }
.vban__tela--profundo { width: 236px; }
.vban__tela--profundo img { width: 220px; height: 225px; }
.vban__tela--selfie { width: 156px; }
.vban__tela--selfie img { width: 140px; height: 140px; }
/* os dados da missão, no painel */
.vban__missao { width: 280px; height: 255px; padding: 18px 20px; border-radius: 8px; background: rgba(12, 18, 34, .92); color: #dce6ff; font: 500 14px/1.5 'Raleway', system-ui, sans-serif; }
.vban__missao b { display: block; margin-bottom: 12px; font: 400 15px 'Rubik Mono One', ui-monospace, monospace; color: #ffcf5a; }
.vban__missao dl { display: grid; grid-template-columns: 90px 1fr; row-gap: 6px; margin: 0; }
.vban__missao dt { color: #7f95c2; text-transform: uppercase; font-size: 11px; letter-spacing: .14em; line-height: 21px; }
.vban__missao dd { margin: 0; color: #fff; font-weight: 700; }
/* a órbita */
.vban__orbita { width: 400px; height: 200px; padding: 14px 20px; border-radius: 8px; background: rgba(12, 18, 34, .92); color: #dce6ff; }
.vban__orbita b, .vban__espectro b { display: block; font: 400 13px 'Rubik Mono One', ui-monospace, monospace; color: #ffcf5a; }
.vban__orbita svg { display: block; width: 360px; height: 120px; margin-top: 4px; }
.vban__orbita-linha { stroke: rgba(160, 190, 255, .35); stroke-width: 1.5; stroke-dasharray: 4 5; }
.vban__orbita-sol { fill: #ffcf5a; }
.vban__orbita-terra { fill: #4aa3ff; }
.vban__orbita-lua, .vban__orbita-halo { fill: none; stroke: rgba(160, 190, 255, .5); stroke-width: 1.5; }
.vban__orbita-halo { stroke: #ffcf5a; stroke-dasharray: 3 4; }
.vban__orbita-webb { fill: #ffcf5a; }
.vban__orbita text { fill: #a9c4ef; font: 600 11px 'Raleway', system-ui, sans-serif; text-anchor: middle; }
.vban__orbita small { display: block; font: 500 12px 'Raleway', system-ui, sans-serif; color: #8ea4cf; }
/* o espectro */
.vban__espectro { width: 330px; height: 165px; padding: 14px 20px; border-radius: 8px; background: rgba(12, 18, 34, .92); color: #dce6ff; }
.vban__espectro-faixa {
  position: relative; display: block; height: 22px; margin-top: 14px; border-radius: 11px; overflow: hidden;
  background: linear-gradient(90deg, #6a3cff, #2f7bff 8%, #2fd27b 14%, #ffe14d 19%, #ff4d4d 24%, #6b1a1a 30%, #3a1010 100%);
}
.vban__espectro-olho { position: absolute; left: 0; top: 0; bottom: 0; width: 26%; border: 2px solid #fff; border-radius: 11px; box-sizing: border-box; }
.vban__espectro-webb { position: absolute; left: 22%; right: 0; top: 0; bottom: 0; border: 2px dashed #ffcf5a; border-radius: 11px; box-sizing: border-box; }
.vban__espectro p { display: flex; justify-content: space-between; margin: 8px 0 0; font: 600 12px 'Raleway', system-ui, sans-serif; color: #a9c4ef; }
.vban__espectro small { display: block; margin-top: 10px; font: 500 12px 'Raleway', system-ui, sans-serif; color: #8ea4cf; }
/* a luz do espaço: o painel, uma estrela e as cores da nebulosa */
.vban__mundo[data-cena="espaco"] .vban__luz--softbox::before { mix-blend-mode: screen; background: radial-gradient(circle, rgba(140, 180, 255, .35), rgba(140, 180, 255, .12) 42%, transparent 62%); }
.vban__mundo[data-cena="espaco"] .vban__facho { mix-blend-mode: screen; background: linear-gradient(to bottom, rgba(255, 240, 200, .5), rgba(255, 230, 180, .18) 72%, transparent); }
.vban__mundo[data-cena="espaco"] .vban__luz--holofote .vban__lampada { background: radial-gradient(circle at 40% 35%, #fff, #fff4d0 55%, #ffcf5a); box-shadow: 0 0 0 6px rgba(255, 230, 170, .22), 0 0 30px 10px rgba(255, 220, 150, .55); }
.vban__mundo[data-cena="espaco"] .vban__luz--cores::before { mix-blend-mode: screen; }
.vban--l3 .vban__mundo[data-cena="espaco"] .vban__luz--cores::before { animation: vban-nebulosa 5s linear infinite; }
.vban__mundo[data-cena="espaco"] .vban__luz--cores .vban__lampada { background: conic-gradient(#ff7a4d, #b45cff, #4ad8ff, #ff7a4d); }
@keyframes vban-nebulosa {
  0%, 100% { background: radial-gradient(circle, rgba(255, 120, 80, .5), transparent 62%); }
  33%      { background: radial-gradient(circle, rgba(180, 92, 255, .5), transparent 62%); }
  66%      { background: radial-gradient(circle, rgba(74, 216, 255, .48), transparent 62%); }
}

/* ---------- CENA 10 · a aula da queda de Constantinopla ----------
   A lousa verde com o pó do giz e a moldura de madeira; o mapa e as obras
   presos por ímã, o caderno do aluno, a prova impressa; a letra do giz,
   a do caderno e a da prova; a caneta é o giz cor-de-rosa. A câmera é a
   do professor: reta, firme, de ponto em ponto. */
.vban[data-cena="historia"] .vban__janela { background: #233a2f; }
.vban .vban__mundo[data-cena="historia"] {
  background-color: #2f4b3d;
  background-image:
    radial-gradient(ellipse 30% 18% at 22% 82%, rgba(255, 255, 255, .07), transparent 70%),
    radial-gradient(ellipse 34% 20% at 70% 18%, rgba(255, 255, 255, .06), transparent 70%),
    radial-gradient(circle, rgba(255, 255, 255, .05) 0 1px, transparent 1.5px);
  background-size: 100% 100%, 100% 100%, 9px 9px;
  transition-duration: 1.2s; transition-timing-function: cubic-bezier(.5, 0, .3, 1);
}
.vban__lousa-moldura { position: absolute; inset: 0; border: 16px solid #8a6a43; box-shadow: inset 0 0 0 3px #6e5333, inset 0 0 40px rgba(0, 0, 0, .35); pointer-events: none; }
.vban__mundo[data-cena="historia"] .vban__titulo { font: 700 50px/1.2 'Caveat', cursive; color: #f4f4ea; text-shadow: 0 0 1px rgba(255, 255, 255, .5); }
.vban__mundo[data-cena="historia"] .vban__cursor { height: 50px; vertical-align: -10px; background: #ff8fb1; }
.vban__mundo[data-cena="historia"] .vban__peca { box-shadow: 0 14px 28px rgba(0, 0, 0, .4); }
.vban__mundo[data-cena="historia"] .vban__risco { stroke: #ff8fb1; stroke-width: 7; }
.vban__mundo[data-cena="historia"] [data-acesa] { --brilho: drop-shadow(0 0 28px rgba(255, 230, 170, .85)); }
.vban .vban__ima--giz { background: radial-gradient(circle at 35% 30%, #fff 0 2px, #ff6b6b 3px, #c83232 72%); box-shadow: 0 3px 6px rgba(0, 0, 0, .45); }
/* as obras e o mapa presos na lousa */
.vban__polaroid--mapa-antigo, .vban__polaroid--miniatura, .vban__polaroid--retrato, .vban__polaroid--zonaro { width: auto; padding: 10px 10px 0; background: #f6f1e4; }
.vban__polaroid--mapa-antigo { transform: rotate(-2deg); }
.vban__polaroid--mapa-antigo img { width: 200px; height: 290px; }
.vban__polaroid--miniatura { transform: rotate(1.5deg); }
.vban__polaroid--miniatura img { width: 190px; height: 281px; }
.vban__polaroid--retrato { rotate: -1.5deg; }
.vban__polaroid--retrato img { width: 170px; height: 230px; }
.vban__polaroid--zonaro { rotate: 2deg; }
.vban__polaroid--zonaro img { width: 300px; height: 208px; }
.vban__polaroid--mapa-antigo figcaption, .vban__polaroid--miniatura figcaption, .vban__polaroid--retrato figcaption, .vban__polaroid--zonaro figcaption {
  max-width: 210px; margin: 0 auto; padding: 8px 0 10px; font: 600 14px/1.25 'Nunito', system-ui, sans-serif; color: #2a2a22;
}
.vban__polaroid--zonaro figcaption { max-width: none; }
/* o caderno do aluno */
.vban__caderno {
  width: 300px; height: 270px; padding: 20px 22px 0 46px; transform: rotate(-1deg); color: #1f2a4a;
  background-color: #fdfdf8;
  background-image: linear-gradient(90deg, transparent 32px, #f08a8a 32px, #f08a8a 34px, transparent 34px), repeating-linear-gradient(transparent 0 29px, #b9cbe6 29px 30px);
  background-position: 0 0, 0 50px; font: 400 21px/30px 'Caveat', cursive;
}
.vban__caderno b { display: block; font: 700 26px/30px 'Caveat', cursive; color: #1f2a4a; }
.vban__caderno ul { margin: 0; padding-left: 16px; }
/* a linha do tempo, a giz na lousa */
.vban .vban__giz { width: 520px; height: 186px; padding: 14px 18px; box-shadow: none; color: #f4f4ea; font: 400 22px/1.2 'Caveat', cursive; border: 2px dashed rgba(244, 244, 234, .35); border-radius: 10px; }
.vban__giz b { display: block; font: 700 26px 'Caveat', cursive; color: #ffe08a; }
.vban__giz ol { list-style: none; margin: 8px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; border-top: 3px solid rgba(244, 244, 234, .8); padding-top: 10px; }
.vban__giz li span { display: block; font-weight: 700; color: #a6e3ff; }
.vban__giz-dia span { color: #ff8fb1 !important; }
.vban__giz small { display: block; margin-top: 8px; font: 700 22px 'Caveat', cursive; color: #ffe08a; }
/* a prova impressa */
.vban__prova { width: 300px; height: 175px; padding: 16px 20px; background: #fff; color: #1d1d1d; transform: rotate(1deg); font: 400 15px/1.45 'Merriweather', Georgia, serif; }
.vban__prova small { display: block; margin-bottom: 6px; font: 700 11px 'Nunito', system-ui, sans-serif; letter-spacing: .16em; text-transform: uppercase; color: #8a3b3b; }
.vban__prova p { margin: 0 0 12px; font-weight: 700; }
.vban__prova-linha { display: block; height: 1px; margin-top: 18px; background: #c9c9c9; }
/* a régua das idades */
.vban__regua { width: 470px; height: 175px; padding: 16px 20px; border-radius: 6px; background: #f3e7c9; color: #3a2c12; font: 500 13px 'Montserrat', system-ui, sans-serif; transform: rotate(-1deg); }
.vban__regua b { display: block; font: 700 18px 'Merriweather', Georgia, serif; }
.vban__regua-faixa { display: grid; grid-template-columns: 1fr 1.4fr 1fr; margin-top: 12px; border-radius: 4px; overflow: hidden; font: 700 13px 'Montserrat', system-ui, sans-serif; text-align: center; color: #fff; }
.vban__regua-faixa span { padding: 9px 0; background: #8a6a43; }
.vban__regua-faixa span:nth-child(2) { background: #2f4b3d; }
.vban__regua-faixa span:nth-child(3) { background: #3a5a8a; }
.vban__regua p { display: grid; grid-template-columns: 1fr 1.4fr 1fr; margin: 6px 0 0; }
.vban__regua em { font: 700 14px 'Montserrat', system-ui, sans-serif; font-style: normal; text-align: right; }
.vban__regua em:first-child { grid-column: 1; }
.vban__regua em:last-child { grid-column: 2; }
.vban__regua small { display: block; margin-top: 10px; font: italic 400 14px 'Merriweather', Georgia, serif; }
/* a luz da sala de aula: a janela, o retroprojetor e o giz colorido */
.vban__mundo[data-cena="historia"] .vban__luz--softbox::before { mix-blend-mode: screen; background: radial-gradient(circle, rgba(255, 245, 210, .38), rgba(255, 240, 200, .14) 42%, transparent 62%); }
.vban__mundo[data-cena="historia"] .vban__facho { mix-blend-mode: screen; background: linear-gradient(to bottom, rgba(230, 240, 255, .55), rgba(220, 235, 255, .2) 72%, transparent); }
.vban__mundo[data-cena="historia"] .vban__luz--cores::before { mix-blend-mode: screen; }
.vban--l3 .vban__mundo[data-cena="historia"] .vban__luz--cores::before { animation: vban-giz 3s linear infinite; }
.vban__mundo[data-cena="historia"] .vban__luz--cores .vban__lampada { background: conic-gradient(#ff8fb1, #a6e3ff, #ffe08a, #ff8fb1); }
@keyframes vban-giz {
  0%, 100% { background: radial-gradient(circle, rgba(255, 143, 177, .45), transparent 62%); }
  33%      { background: radial-gradient(circle, rgba(166, 227, 255, .45), transparent 62%); }
  66%      { background: radial-gradient(circle, rgba(255, 224, 138, .45), transparent 62%); }
}

/* ---------- CENA 11 · a prancheta da reforma do 302 ----------
   O papel quadriculado da prancheta, as folhas de papel-manteiga presas
   com fita crepe, o traço preto da planta, o vermelho do que sai e o azul
   do que entra; a letra redonda de arquiteto e a técnica; o lápis
   vermelho da revisão. A câmera é a das maquetes: reta e de cima. */
.vban[data-cena="reforma"] .vban__janela { background: #e8ecef; }
.vban .vban__mundo[data-cena="reforma"] {
  background-color: #f4f6f7;
  background-image:
    linear-gradient(rgba(70, 120, 170, .16) 1px, transparent 0), linear-gradient(90deg, rgba(70, 120, 170, .16) 1px, transparent 0),
    linear-gradient(rgba(70, 120, 170, .07) 1px, transparent 0), linear-gradient(90deg, rgba(70, 120, 170, .07) 1px, transparent 0);
  background-size: 100px 100px, 100px 100px, 20px 20px, 20px 20px;
  transition-duration: 1.3s; transition-timing-function: cubic-bezier(.25, .1, .25, 1);
}
.vban__mundo[data-cena="reforma"] .vban__titulo { font: 700 40px/1.25 'Comfortaa', system-ui, sans-serif; letter-spacing: -.01em; color: #1c2b3a; }
.vban__mundo[data-cena="reforma"] .vban__cursor { height: 44px; vertical-align: -8px; background: #d7263d; }
.vban__mundo[data-cena="reforma"] .vban__peca { box-shadow: 0 10px 22px rgba(28, 43, 58, .14); }
.vban__mundo[data-cena="reforma"] .vban__risco { stroke: #d7263d; stroke-width: 6; }
.vban__mundo[data-cena="reforma"] [data-acesa] { --brilho: drop-shadow(0 0 28px rgba(255, 214, 150, .85)); }
.vban__fita--crepe { background-color: rgba(228, 214, 174, .85); background-image: none; }
/* as amostras do piso */
.vban__amostras { width: 280px; height: 280px; padding: 16px 18px; border-radius: 4px; background: #fff; color: #1c2b3a; font: 400 13px/1.3 'Poppins', system-ui, sans-serif; }
.vban__amostras b, .vban__planta-baixa b, .vban__cronograma b, .vban__sol b, .vban__corte b { display: block; font: 700 17px 'Comfortaa', system-ui, sans-serif; color: #1c2b3a; }
.vban__amostras ul { list-style: none; margin: 10px 0 0; padding: 0; display: grid; gap: 8px; }
.vban__amostras li { display: flex; align-items: center; gap: 12px; }
.vban__amostras img { flex: none; width: 66px; height: 66px; border-radius: 4px; box-shadow: 0 2px 5px rgba(0, 0, 0, .2); }
/* a planta, no papel-manteiga */
.vban__planta-baixa { width: 490px; height: 300px; padding: 14px 20px 0; background: rgba(252, 250, 240, .96); color: #1c2b3a; transform: rotate(-.8deg); }
.vban__planta-baixa svg { display: block; width: 450px; height: 220px; margin-top: 6px; }
.vban__planta-parede { fill: none; stroke: #1c2b3a; stroke-width: 6; }
.vban__planta-demolir { fill: none; stroke: #d7263d; stroke-width: 5; stroke-dasharray: 8 6; }
.vban__planta-nova { fill: none; stroke: #2b6cd4; stroke-width: 6; }
.vban__planta-porta { fill: none; stroke: #1c2b3a; stroke-width: 1.5; stroke-dasharray: 3 3; }
.vban__planta-baixa text { fill: #5b6b7b; font: 500 13px 'Poppins', system-ui, sans-serif; text-anchor: middle; }
.vban__planta-baixa p { display: flex; align-items: center; gap: 8px; margin: 4px 0 0; font: 500 12px 'Poppins', system-ui, sans-serif; color: #5b6b7b; }
.vban__planta-chave { display: inline-block; width: 22px; height: 0; border-top: 4px solid #1c2b3a; }
.vban__planta-chave--demolir { border-top: 4px dashed #d7263d; }
.vban__planta-chave--nova { border-top-color: #2b6cd4; margin-left: 10px; }
.vban__planta-baixa em { margin-left: auto; font: 700 16px 'Comfortaa', system-ui, sans-serif; font-style: normal; color: #1c2b3a; }
/* o cronograma da obra */
.vban__cronograma { width: 460px; height: 190px; padding: 14px 20px; border-radius: 4px; background: #fff; }
.vban__cronograma ul { list-style: none; margin: 10px 0 0; padding: 0; display: grid; gap: 7px; }
.vban__cronograma li { display: grid; grid-template-columns: 90px 1fr; align-items: center; font: 500 12px 'Poppins', system-ui, sans-serif; color: #5b6b7b; }
.vban__cronograma li i { position: relative; height: 14px; border-radius: 3px; background: repeating-linear-gradient(90deg, #eef2f5 0 calc(12.5% - 1px), #dfe5ea calc(12.5% - 1px) 12.5%); }
.vban__cronograma li i::after { content: ''; position: absolute; top: 0; bottom: 0; left: var(--de); right: calc(100% - var(--ate)); border-radius: 3px; background: #2b6cd4; }
.vban__cronograma li i.vban__cronograma-fim::after { background: #1f9d55; }
/* o orçamento */
.vban__orcamento { width: 240px; height: 170px; padding: 20px 22px; background: #fffdf3; color: #1c2b3a; transform: rotate(2deg); font: 400 13px/1.4 'Poppins', system-ui, sans-serif; }
.vban__orcamento small { display: block; font: 600 11px 'Poppins', system-ui, sans-serif; letter-spacing: .18em; text-transform: uppercase; color: #8a97a5; }
.vban__orcamento b { display: block; margin: 6px 0; font: 700 40px/1 'Comfortaa', system-ui, sans-serif; color: #1c2b3a; }
/* o estudo do sol */
.vban__sol { width: 250px; height: 230px; padding: 14px 10px 0; border-radius: 4px; background: #fff; text-align: center; font: 500 12px/1.3 'Poppins', system-ui, sans-serif; color: #5b6b7b; }
.vban__sol svg:not(.vban__mao) { display: block; width: 230px; height: 150px; }
.vban__sol-arco { fill: none; stroke: #f2a93b; stroke-width: 2; stroke-dasharray: 5 5; }
.vban__sol-ponto { fill: #f6c95a; }
.vban__sol-ponto--tarde { fill: #f2853b; }
.vban__sol-casa { fill: none; stroke: #1c2b3a; stroke-width: 3; }
.vban__sol text { fill: #5b6b7b; font: 600 11px 'Poppins', system-ui, sans-serif; text-anchor: middle; }
/* o corte */
.vban__corte { width: 360px; height: 185px; padding: 14px 15px 0; border-radius: 4px; background: rgba(252, 250, 240, .96); font: 500 12px 'Poppins', system-ui, sans-serif; color: #5b6b7b; }
.vban__corte svg:not(.vban__mao) { display: block; width: 330px; height: 120px; }
.vban__corte-laje { stroke: #1c2b3a; stroke-width: 8; }
.vban__corte-parede { stroke: #1c2b3a; stroke-width: 5; }
.vban__corte-cota { stroke: #2b6cd4; stroke-width: 1.6; }
.vban__corte text { fill: #2b6cd4; font: 700 13px 'Poppins', system-ui, sans-serif; text-anchor: middle; }
.vban__polaroid--referencia { width: auto; padding: 10px 10px 0; background: #fff; rotate: 1.5deg; }
.vban__polaroid--referencia img { width: 270px; height: 180px; }
.vban__polaroid--referencia figcaption { padding: 8px 0 10px; font: 600 13px 'Poppins', system-ui, sans-serif; color: #1c2b3a; }
/* a luz do estúdio: a luz do dia, a luminária da prancheta e o sol do dia, da manhã à tarde */
.vban__mundo[data-cena="reforma"] .vban__luz--softbox::before { background: radial-gradient(circle, rgba(190, 215, 255, .45), rgba(190, 215, 255, .18) 40%, transparent 62%); }
.vban__mundo[data-cena="reforma"] .vban__facho { background: linear-gradient(to bottom, rgba(255, 230, 170, .6), rgba(255, 220, 150, .22) 72%, transparent); }
.vban__mundo[data-cena="reforma"] .vban__luz--holofote .vban__lampada { background: radial-gradient(circle at 40% 35%, #fff, #fff0c4 55%, #f3c45e); box-shadow: 0 0 0 6px rgba(255, 230, 160, .25), 0 0 26px 8px rgba(255, 214, 130, .55); }
.vban--l3 .vban__mundo[data-cena="reforma"] .vban__luz--cores::before { animation: vban-dia 4.5s ease-in-out infinite; }
.vban__mundo[data-cena="reforma"] .vban__luz--cores .vban__lampada { background: conic-gradient(#ffd9a0, #fff3c4, #ff9d5c, #ffd9a0); }
@keyframes vban-dia {
  0%, 100% { background: radial-gradient(circle, rgba(255, 214, 160, .5), transparent 62%); }
  50%      { background: radial-gradient(circle, rgba(255, 140, 70, .55), transparent 62%); }
}

/* ---------- CENA 12 · os bastidores da turnê ----------
   O chão preto do palco com as marcas de fita colorida, o setlist preso
   com fita prateada, o cartaz serigrafado, o roteiro técnico, a mesa de
   som e a credencial; a caneta é a violeta das luzes. A câmera é a de mão
   de um show: rápida e um pouco torta. */
.vban[data-cena="musica"] .vban__janela { background: #0b0a0d; }
.vban .vban__mundo[data-cena="musica"] {
  background-color: #141318;
  background-image:
    radial-gradient(ellipse 50% 45% at 36% 30%, rgba(255, 170, 80, .12), transparent 70%),
    radial-gradient(ellipse 45% 40% at 80% 75%, rgba(170, 90, 255, .12), transparent 70%),
    repeating-linear-gradient(90deg, rgba(255, 255, 255, .025) 0 2px, transparent 2px 64px);
  transition-duration: .9s; transition-timing-function: cubic-bezier(.2, .8, .3, 1);
}
/* as marcas de fita no chão do palco */
.vban__palco-marcas { position: absolute; inset: 0; pointer-events: none;
  background:
    linear-gradient(45deg, transparent 46%, #ffd23f 46% 54%, transparent 54%) 345px 437px / 30px 30px no-repeat,
    linear-gradient(-45deg, transparent 46%, #ffd23f 46% 54%, transparent 54%) 345px 437px / 30px 30px no-repeat,
    linear-gradient(45deg, transparent 46%, #3ad1ff 46% 54%, transparent 54%) 1515px 426px / 30px 30px no-repeat,
    linear-gradient(-45deg, transparent 46%, #3ad1ff 46% 54%, transparent 54%) 1515px 426px / 30px 30px no-repeat;
}
.vban__mundo[data-cena="musica"] .vban__titulo { font: 400 50px/1.15 'Anton', Impact, sans-serif; letter-spacing: .02em; text-transform: uppercase; color: #f6efe4; }
.vban__mundo[data-cena="musica"] .vban__cursor { height: 52px; vertical-align: -6px; background: #b26bff; }
.vban__mundo[data-cena="musica"] .vban__peca { box-shadow: 0 18px 36px rgba(0, 0, 0, .6); }
.vban__mundo[data-cena="musica"] .vban__risco { stroke: #b26bff; stroke-width: 7; }
.vban__mundo[data-cena="musica"] [data-acesa] { --brilho: drop-shadow(0 0 30px rgba(178, 107, 255, .85)); }
/* o setlist, colado no chão */
.vban__setlist { width: 240px; height: 300px; padding: 26px 22px 0; background: #fbfaf6; color: #151515; transform: rotate(-2.5deg); }
.vban__setlist-fita { position: absolute; left: -10px; right: -10px; top: -10px; height: 28px; background: linear-gradient(#cfd3d8, #a6acb3); opacity: .9; transform: rotate(1deg); }
.vban__setlist b { display: block; margin-bottom: 10px; font: 400 26px 'Anton', Impact, sans-serif; letter-spacing: .04em; text-transform: uppercase; }
.vban__setlist ol { margin: 0; padding-left: 26px; font: 400 23px/1.45 'Permanent Marker', cursive; }
/* as fotos da noite */
.vban__polaroid--plateia, .vban__polaroid--guitarra, .vban__polaroid--refrao { width: auto; padding: 10px 10px 0; background: #f1ece4; }
.vban__polaroid--plateia { transform: rotate(1.5deg); }
.vban__polaroid--plateia img { width: 390px; height: 260px; }
.vban__polaroid--guitarra { rotate: -3deg; }
.vban__polaroid--guitarra img { width: 200px; height: 133px; }
.vban__polaroid--refrao { rotate: 2deg; }
.vban__polaroid--refrao img { width: 230px; height: 153px; }
.vban__polaroid--plateia figcaption, .vban__polaroid--guitarra figcaption, .vban__polaroid--refrao figcaption { padding: 7px 0 9px; font: 400 18px/1.15 'Permanent Marker', cursive; color: #1d1d1d; }
/* o cartaz da turnê, serigrafado */
.vban__cartaz-turne {
  width: 250px; height: 305px; padding: 18px 20px; transform: rotate(-1deg); text-align: center; color: #1b2340;
  background-color: #ff7a3d; background-image: radial-gradient(circle, rgba(27, 35, 64, .18) 0 1.4px, transparent 1.8px); background-size: 7px 7px;
}
.vban__cartaz-turne small { display: block; font: 700 13px 'Roboto', system-ui, sans-serif; letter-spacing: .3em; text-transform: uppercase; }
.vban__cartaz-turne b { display: block; margin-top: 4px; font: 400 44px/1 'Anton', Impact, sans-serif; text-transform: uppercase; color: #fff5e6; text-shadow: 3px 3px 0 #1b2340; }
.vban__cartaz-turne strong { display: block; margin-top: 8px; font: 400 22px 'Anton', Impact, sans-serif; letter-spacing: .1em; text-transform: uppercase; }
.vban__cartaz-turne ul { list-style: none; margin: 12px 0 0; padding: 0; font: 700 15px/1.5 'Roboto', system-ui, sans-serif; text-transform: uppercase; letter-spacing: .08em; }
.vban__cartaz-turne em { display: block; margin-top: 6px; font: 400 26px 'Anton', Impact, sans-serif; font-style: normal; color: #fff5e6; }
/* o mapa do palco */
.vban__mapa-palco { width: 360px; height: 192px; padding: 12px 10px 0; border-radius: 6px; background: #f1f1ee; color: #1d1d1d; }
.vban__mapa-palco b, .vban__mesa-som b { display: block; font: 400 18px 'Anton', Impact, sans-serif; letter-spacing: .06em; text-transform: uppercase; }
.vban__mapa-palco svg { display: block; width: 340px; height: 130px; margin-top: 4px; }
.vban__mapa-palco-chao { fill: #fff; stroke: #1d1d1d; stroke-width: 2; }
.vban__mapa-palco-peca { fill: #e9e3ff; stroke: #1d1d1d; stroke-width: 1.6; }
.vban__mapa-palco-voz { fill: #b26bff; stroke: #1d1d1d; stroke-width: 1.6; }
.vban__mapa-palco-retorno { fill: #1d1d1d; }
.vban__mapa-palco text { fill: #1d1d1d; font: 700 10px 'Roboto', system-ui, sans-serif; text-anchor: middle; }
.vban__mapa-palco small { display: block; margin-top: 2px; text-align: center; font: 500 11px 'Roboto', system-ui, sans-serif; color: #5a5a5a; }
/* a mesa de som */
.vban__mesa-som { width: 360px; height: 190px; padding: 12px 18px; border-radius: 8px; background: #22212a; color: #e8e4f0; }
.vban__mesa-som ul { list-style: none; margin: 10px 0 0; padding: 0; display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; height: 128px; }
.vban__mesa-som li { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.vban__mesa-som li i { position: relative; flex: 1; width: 8px; border-radius: 4px; background: #0e0d12; }
.vban__mesa-som li i::after { content: ''; position: absolute; left: 50%; bottom: var(--nivel); width: 30px; height: 12px; margin: 0 0 -6px -15px; border-radius: 2px; background: linear-gradient(#e8e4f0, #9a96a6); }
.vban__mesa-som li i::before { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: var(--nivel); border-radius: 4px; background: linear-gradient(to top, #3ad17a, #ffd23f 70%, #ff4d4d); opacity: .8; }
.vban__mesa-som span { font: 700 11px 'Roboto', system-ui, sans-serif; text-transform: uppercase; letter-spacing: .06em; color: #b9b4c8; }
.vban__mesa-som-geral span { color: #b26bff; }
/* a credencial, no cordão */
.vban__credencial { width: 190px; height: 300px; padding: 0; box-shadow: none; }
.vban__credencial-cordao { position: absolute; left: 50%; top: 0; width: 70px; height: 70px; margin-left: -35px; border: 6px solid #b26bff; border-bottom: 0; border-radius: 35px 35px 0 0; }
.vban__credencial > div {
  position: absolute; left: 0; right: 0; top: 64px; bottom: 0; padding: 20px 16px; border-radius: 10px; text-align: center;
  background: linear-gradient(160deg, #1b2340, #2c1d4a); color: #fff; box-shadow: 0 18px 36px rgba(0, 0, 0, .6), inset 0 0 0 2px rgba(255, 255, 255, .15);
}
.vban__credencial small { display: block; font: 700 12px 'Roboto', system-ui, sans-serif; letter-spacing: .26em; text-transform: uppercase; color: #ffd23f; }
.vban__credencial b { display: block; margin: 12px 0 8px; font: 400 44px/1 'Anton', Impact, sans-serif; text-transform: uppercase; }
.vban__credencial span { display: block; font: 500 12px 'Roboto', system-ui, sans-serif; color: #c9c3e0; }
.vban__credencial-holograma { display: block; height: 30px; margin-top: 22px; border-radius: 6px; background: linear-gradient(110deg, #3ad1ff, #b26bff 35%, #ffd23f 65%, #3ad17a); opacity: .85; }
/* a luz do show: o camarim, o canhão seguidor e as cores do palco */
.vban__mundo[data-cena="musica"] .vban__luz--softbox::before { mix-blend-mode: screen; background: radial-gradient(circle, rgba(255, 220, 170, .38), rgba(255, 210, 160, .14) 42%, transparent 62%); }
.vban__mundo[data-cena="musica"] .vban__facho { mix-blend-mode: screen; background: linear-gradient(to bottom, rgba(255, 250, 235, .62), rgba(255, 245, 225, .22) 72%, transparent); }
.vban__mundo[data-cena="musica"] .vban__luz--cores::before { mix-blend-mode: screen; }
.vban--l3 .vban__mundo[data-cena="musica"] .vban__luz--cores::before { animation: vban-palco .8s steps(1) infinite; }
.vban__mundo[data-cena="musica"] .vban__luz--cores .vban__lampada { background: conic-gradient(#b26bff, #3ad1ff, #ff4fb0, #b26bff); }
@keyframes vban-palco {
  0%   { background: radial-gradient(circle, rgba(178, 107, 255, .62), rgba(178, 107, 255, .18) 40%, transparent 62%); }
  33%  { background: radial-gradient(circle, rgba(58, 209, 255, .58), rgba(58, 209, 255, .16) 40%, transparent 62%); }
  66%  { background: radial-gradient(circle, rgba(255, 79, 176, .58), rgba(255, 79, 176, .16) 40%, transparent 62%); }
}

@media (max-width: 720px) {
  .vban__janela { aspect-ratio: 16 / 9; }
  .vban__legenda span, .vban__passos span, .vban__voz { display: none; }
  .vban__legenda { left: 8px; top: 8px; padding: .25rem .5rem; border-radius: 8px; }
  .vban__legenda b { font-size: .68rem; }
  .vban__rec { right: 8px; top: 8px; padding: .2rem .45rem; font-size: .62rem; border-radius: 7px; }
  .vban__rec i { width: .42rem; height: .42rem; box-shadow: 0 0 0 2px rgba(255, 10, 43, .25); }
  .vban__pronto { right: 8px; bottom: 8px; padding: .25rem .5rem; font-size: .62rem; border-radius: 7px; }
  .vban__play { left: 8px; bottom: 8px; width: 1.8rem; height: 1.8rem; border-radius: 8px; }
  .vban__play svg { width: .8rem; height: .8rem; }
}
@media (prefers-reduced-motion: reduce) {
  .vban *, .vban *::after, .vban *::before, .vban__mundo { transition: none !important; animation: none !important; }
}
