/* cores amostradas das imagens da identidade (fonte/imagens.py) */
:root { /* mesmos valores de marca/tokens.css */ --papel: #EDE5D3; --tinta: #29313A; --ouro: #B97B30; --ouro-texto: #7E5219; --laranja: #F2814A; --gema: #EAA81A;
  --serif: 'Alegreya', Georgia, serif; --sans: 'Alegreya Sans', 'Segoe UI', system-ui, sans-serif; color-scheme: light; }
* { box-sizing: border-box; }
html { background: var(--papel); }
body { margin: 0; background: var(--papel); color: var(--tinta); font: 400 18px/1.55 var(--sans); }
.pular { position: fixed; top: 12px; left: 12px; z-index: 5; padding: 10px 14px; background: var(--tinta); color: var(--papel);
  border-radius: 3px; text-decoration: none; font-size: 15px; transform: translateY(-160%); transition: transform .2s; }
.pular:focus-visible { transform: none; outline: 3px solid var(--ouro); outline-offset: 2px; }
h1, h2 { font-family: var(--serif); text-wrap: balance; margin: 0; }
h1 { font-weight: 800; font-size: clamp(40px, 5.4vw, 72px); line-height: 1; }
h2 { font-weight: 500; font-size: clamp(26px, 3vw, 40px); line-height: 1.12; }
p { margin: 0; }
.rotulo { font: 700 13px/1 var(--sans); letter-spacing: .14em; text-transform: uppercase; color: var(--ouro-texto); }
.ouro { color: var(--ouro-texto); font-family: var(--serif); font-weight: 500; font-size: 1.15em; }

/* com movimento: cada cena é um palco preso enquanto a rolagem conduz a linha */
.anima .cena { height: 320svh; position: relative; }
.anima .palco { position: sticky; top: 0; height: 100svh; overflow: hidden; }
.anima .palco img { display: none; }
.anima canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.anima .texto { position: absolute; opacity: var(--t, 0); transform: translateY(calc((1 - var(--t, 0)) * 14px)); }
.anima .texto-abertura { left: 16px; right: 16px; bottom: 7svh; text-align: center; display: grid; gap: 8px; justify-items: center; }
.anima .cartao { left: max(16px, 4vw); bottom: 6svh; max-width: min(34rem, calc(100% - 32px)); display: grid; gap: 10px;
  padding: 20px 22px; background: rgb(237 229 211 / .93); border-top: 2px solid var(--ouro); }

/* sem movimento ou sem JS: a cena parada, inteira, e o texto embaixo */
html:not(.anima) .palco { display: grid; gap: 20px; padding-block: 24px 48px; padding-inline: 16px; max-width: 1200px; margin: 0 auto; }
html:not(.anima) .palco img { width: 100%; height: auto; display: block; }
html:not(.anima) canvas { display: none; }
html:not(.anima) .texto { display: grid; gap: 10px; max-width: 40rem; }
@media (max-width: 700px) {
  .anima .cartao { left: 16px; right: 16px; bottom: 4svh; padding: 16px; }
  body { font-size: 17px; }
}

.lista { margin: 0; padding-left: 1.1em; display: grid; gap: 4px; }
.nota { font-size: 15px; color: var(--ouro-texto); }
a { color: var(--tinta); text-decoration-color: var(--ouro); text-underline-offset: 3px; }
a:focus-visible { outline: 3px solid var(--ouro); outline-offset: 2px; }
.botao { display: inline-block; padding: 12px 18px; background: var(--tinta); color: var(--papel); text-decoration: none; border-radius: 2px; font-weight: 700; }
.anima .cartao.largo { max-width: min(46rem, calc(100% - 32px)); }
@media (max-width: 700px) {
}

/* níveis: uma escada, do menor ao maior */
.niveis { margin: 0; padding: 0; list-style: none; display: grid; gap: 8px; }
.niveis li { display: grid; grid-template-columns: minmax(0, 11rem) auto; gap: 2px 12px; align-items: baseline; border-top: 1px solid var(--ouro); padding-top: 6px; }
.niveis b { font: 500 19px/1.2 var(--serif); }
.niveis .preco { font: 700 16px/1.3 var(--sans); color: var(--ouro-texto); font-variant-numeric: tabular-nums; text-align: right; }
.niveis li > span:last-child { grid-column: 1 / -1; font-size: 15px; }
/* missão: a 2ª frase é batida palavra a palavra; "vivo" acende como brasa */
.internet { font: 500 clamp(22px, 2.4vw, 32px)/1.15 var(--serif); margin: 0; min-height: 2.3em; }
.anima .internet .p { display: inline-block; opacity: 0; transform: translateY(-.35em) scale(1.15); }
.anima .internet .p.batida { opacity: 1; transform: none; transition: transform .12s cubic-bezier(.3, 1.6, .5, 1), opacity .05s; }
.vivo { transition: color .3s, text-shadow .3s; }
.vivo:hover { color: var(--laranja-texto, #A8431A); text-shadow: 0 0 10px rgb(242 129 74 / .8), 0 0 22px rgb(234 168 26 / .55); }
.rua { font: 800 clamp(30px, 3.6vw, 52px)/1.02 var(--serif); }
/* WhatsApp fixo em todas as telas (spec §8) */
.whats { position: fixed; right: 16px; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); z-index: 6; min-height: 48px; display: inline-flex; align-items: center;
  padding: 0 18px; background: var(--tinta); color: var(--papel); border-radius: 999px; text-decoration: none; font: 700 15px/1 var(--sans); box-shadow: 0 2px 10px rgb(41 49 58 / .25); }
.whats:focus-visible { outline: 3px solid var(--ouro); outline-offset: 2px; }

/* personagem à esquerda: o cartão vai para a direita, acima do botão do WhatsApp */
.anima .cartao.direita { left: auto; right: max(16px, 4vw); bottom: calc(6svh + 56px); }
@media (max-width: 700px) { .anima .cartao.direita { left: 16px; right: 16px; } }

.paleta { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; min-height: 34px; font-size: 15px; }
.paleta i { width: 34px; height: 34px; border-radius: 2px; box-shadow: inset 0 0 0 1px rgb(41 49 58 / .2); }
.paleta code { font: 500 12px/1 ui-monospace, monospace; color: var(--tinta-suave, #5B6169); }
.niveis li.ativo b { color: var(--ouro-texto); }
.niveis li.ativo { border-top-width: 3px; }
.niveis li { cursor: default; }

/* vitrine viva: as peças correm para o lado dentro do cartão */
.anima .cartao.largo { max-width: min(52rem, calc(100% - 32px)); }
.vitrine { margin: 0; padding: 0 0 6px; list-style: none; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(200px, 230px); gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; }
.peca { scroll-snap-align: start; display: grid; gap: 6px; align-content: start; border-top: 2px solid var(--ouro); padding-top: 8px; }
.objeto { min-height: 104px; display: grid; align-content: center; gap: 6px; }
.problema { font: 500 16px/1.25 var(--serif); }
.origem { font-size: 13.5px; color: var(--tinta-suave, #5B6169); }
.aviso { font-size: 13px; color: var(--ouro-texto); }
.casa { display: flex; gap: 6px; align-items: baseline; font-size: 14px; }
.casa i { width: 9px; height: 9px; border-radius: 50%; background: #9aa0a6; flex: none; align-self: center; }
.casa i.on { background: #3d8b5a; box-shadow: 0 0 0 3px rgb(61 139 90 / .2); }
.item-preco { display: flex; justify-content: space-between; gap: 8px; font-size: 14.5px; }
.editavel { font-weight: 700; color: var(--ouro-texto); border-bottom: 1px dashed var(--ouro); padding: 2px 4px; min-width: 3.5em; text-align: right; }
.editavel:focus { outline: 2px solid var(--ouro); outline-offset: 2px; background: #fff; }
.letreiro { font: 800 22px/1 'Alegreya Sans', sans-serif; letter-spacing: .18em; padding: 12px 14px; background: #fbf7ee; color: #111; border: 3px solid #111; box-shadow: 0 0 0 3px #fbf7ee, 0 0 0 5px #111; cursor: pointer; transition: background .4s, color .4s, text-shadow .4s; }
.letreiro[aria-pressed="true"] { background: #141414; color: #ffe9a8; text-shadow: 0 0 8px #ffcc4d, 0 0 18px #ff9f1a; }
.letreiro:focus-visible { outline: 3px solid var(--ouro); outline-offset: 6px; }
.faixa { overflow-x: auto; white-space: nowrap; cursor: grab; scrollbar-width: none; mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); touch-action: pan-x; }
.faixa .trilho { display: inline-flex; gap: 22px; padding: 8px 0; animation: correr 18s linear infinite; }
.faixa:hover .trilho, .faixa:active .trilho { animation-play-state: paused; }
.faixa span { font-size: 14.5px; } .faixa b { color: var(--ouro-texto); }
@keyframes correr { to { transform: translateX(-50%); } }
.peca video { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; background: #141414; border-radius: 2px; }
@media (prefers-reduced-motion: reduce) { .faixa .trilho { animation: none; } }

/* passagem contínua entre a história e /precos (View Transition entre páginas; sem suporte, troca normal) */
@view-transition { navigation: auto; }
.anima .niveis { view-transition-name: niveis; }

/* missão: o cartão fica no canto das ferramentas penduradas, fora do ferreiro e da forja (onde nascem as faíscas) */
.anima .cartao.martelo { left: auto; right: max(16px, 3vw); top: 10svh; bottom: auto; max-width: min(26rem, 34vw); }
/* no 1º golpe a frase da rua sai e a da internet toma o lugar dela, no tamanho de título */
.anima .cartao.martelo.batendo .rua { display: none; }
.anima .cartao.martelo.batendo .internet { font: 800 clamp(26px, 2.8vw, 40px)/1.08 var(--serif); }
@media (max-width: 700px) { .anima .cartao.martelo { left: 16px; right: 16px; top: auto; bottom: calc(4svh + 56px); max-width: none; } }

@media (max-width: 700px) {
  /* no celular o cartão não passa de metade da tela: o que sobra rola dentro dele, e a pintura continua à vista */
  .anima .cartao { max-height: 48svh; overflow-y: auto; overscroll-behavior: contain; }
  .niveis li > span:last-child { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }   /* só nome e preço à vista; o leitor de tela continua lendo */
  .niveis li { position: relative; }
}

.vitrine:focus-visible, .faixa:focus-visible, .cartao:focus-visible { outline: 3px solid var(--ouro); outline-offset: 3px; }
