/* ════════════════════════════════════════════════════════════════
   Hibritech · folha comum às três páginas
   ════════════════════════════════════════════════════════════════

   Extraída do index.html quando o site deixou de ser uma página só. A
   única coisa que NÃO vem para cá é o bloco anti-piscar do tema: folha
   externa chega depois da primeira pintura, e é justamente o quadro que
   ele existe para evitar. Aquilo segue embutido no <head> de cada página. */

/* ════════════════════════════════════════════════════════════════
   Hibritech · site institucional
   ════════════════════════════════════════════════════════════════

   Tema único escuro, sem prefers-color-scheme. Não é economia: é como
   apresentação de arquitetura se lê, e é o que faz a fotografia da obra
   brilhar. Todo fundo e toda cor são pintados explicitamente.

   As cores da marca saíram medidas do lockup oficial
   (assets/logo/lockup-flat-escuro.png), não escolhidas de memória:
   HIBRI é #5FA85F, TECH é #3FA5C9, a tinta de fundo é #16242E. */

:root{
  --breu:#0A1015;        /* o fundo mais fundo */
  --carvao:#111C24;      /* blocos e cartões */
  --tinta:#16242E;       /* tinta da marca */
  --aresta:#25343F;
  --giz:#E8EFF3;
  --bruma:#8296A2;

  --verde:#5FA85F;       /* HIBRI */
  --azul:#3FA5C9;        /* TECH */
  --acao:#0B6B8C;        /* mesma ação da loja, para o azul não brigar */

  --madeira:#C2874A;
  --aluminio:#93A7B3;
  --vidro:#4FB3D4;
  --concreto:#6C7B84;
  --grama:#33543B;
  --creme:#D8CDB0;
  --grafite:#3A464E;

  --env:min(1240px, 100% - 2.6rem);
  --medida:clamp(1rem, .62rem + 1.5vw, 1.32rem);

  --veu-topo:.62; --veu-meio:.55;   /* opacidade do véu sobre o vídeo */
  --sombra-cartao:rgba(17,28,36,.86);
  --borda-cartao:var(--aresta);
}

/* ── tema claro ──────────────────────────────────────────────
   O escuro é o padrão porque é como apresentação de arquitetura se lê e é o
   que faz a fotografia da obra brilhar. O claro existe para quem vai ler a
   ficha técnica com sol na tela, e para impressão.

   As cores da MARCA não mudam entre os dois: verde e azul são os do lockup
   oficial, e trocá-los por causa do fundo seria trocar a marca. O que muda é
   o chão — e o que se apoia nele: as linhas de alumínio do desenho, que em
   fundo claro precisam escurecer para continuar existindo. */
:root[data-tema="claro"]{
  --breu:#F4F6F7;
  --carvao:#E8ECEE;
  --tinta:#DDE3E6;
  --aresta:#C4CFD5;
  --giz:#16242E;
  --bruma:#5A6B76;

  --acao:#0B6B8C;
  --aluminio:#5E7080;
  --concreto:#9AA7AE;
  --grama:#7EA07C;
  --creme:#C9BE9E;
  --grafite:#57646D;

  --veu-topo:.34; --veu-meio:.22;
  --sombra-cartao:rgba(255,255,255,.9);
  --borda-cartao:#B7C4CB;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
/* clip, e não hidden.
   `overflow-x:hidden` faz o body virar um contêiner de rolagem — o overflow-y
   vira `auto` pela regra que emparelha os eixos. Um segundo contêiner de
   rolagem no meio do caminho atrapalha tudo que depende de saber quem rola:
   position:sticky, scroll-snap e qualquer medida de posição. `clip` corta o
   estouro horizontal sem criar contêiner nenhum, que é o que se queria. */
body{margin:0;background:var(--breu);color:var(--giz);overflow-x:clip;
     font:400 17px/1.62 "Saira",system-ui,"Segoe UI",sans-serif}
h1,h2,h3,.rot{font-family:"Rajdhani","Segoe UI",sans-serif;font-weight:700;
     text-transform:uppercase;text-wrap:balance;margin:0;letter-spacing:.015em}
h1{font-size:clamp(2.3rem,1.2rem + 4.2vw,4.6rem);line-height:.94}
h2{font-size:clamp(1.8rem,1.1rem + 2.4vw,3rem);line-height:1}
h3{font-size:1.22rem;line-height:1.14;letter-spacing:.03em}
p{margin:0}
a{color:var(--azul)}
img,svg{max-width:100%}
.rot{font-size:.74rem;letter-spacing:.26em;color:var(--bruma);font-weight:600}
.env{width:var(--env);margin-inline:auto}
/* O cabeçalho é sticky com 66px: sem esta margem, clicar em "Imóveis e
   terrenos" para a rolagem com o título da seção escondido atrás dele. */
section[id],footer[id]{scroll-margin-top:74px}
.secao{padding:clamp(4rem,2rem + 7vw,8.5rem) 0;display:grid;gap:clamp(1.8rem,1rem + 2vw,3rem)}
.corpo{color:var(--bruma);font-size:var(--medida)}
.corpo strong{color:var(--giz);font-weight:500}
.corpo p+p{margin-top:1.1rem}
:focus-visible{outline:2px solid var(--azul);outline-offset:3px}

/* ── botões ─────────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;gap:.55rem;padding:.9rem 1.7rem;
     text-decoration:none;font:600 .84rem/1 "Rajdhani",sans-serif;
     letter-spacing:.14em;text-transform:uppercase;border:1px solid transparent;
     transition:background .18s,border-color .18s,color .18s}
.btn-cheio{background:var(--acao);color:#fff}
.btn-cheio:hover{background:#0A5B78}
.btn-vazio{border-color:var(--aresta);color:var(--giz)}
.btn-vazio:hover{border-color:var(--azul);color:var(--azul)}

/* ── cabeçalho ──────────────────────────────────────────────── */
/* color-mix do fundo do tema, não uma rgba cravada: com a cor fixa o
   cabeçalho continuava azul-escuro por cima da página clara. */
.topo{position:sticky;top:0;z-index:40;
      background:color-mix(in srgb, var(--breu) 84%, transparent);
      backdrop-filter:blur(14px);border-bottom:1px solid var(--aresta)}
/* position:relative aqui, e não no .menu-mob: o painel do menu pende do
   CABEÇALHO, não do botão. Ancorado no botão ele saía pela esquerda da tela,
   porque o botão não fica na borda direita — vêm depois dele o seletor de tema
   e o de orçamento. Os links apareciam cortados pela metade. */
.topo .env{display:flex;align-items:center;gap:1.5rem;min-height:66px;position:relative}
.topo img{height:34px;width:auto;display:block}
.menu{display:none;gap:1.5rem;margin-left:auto;list-style:none;padding:0;margin-block:0}
.menu a{color:var(--bruma);text-decoration:none;font-size:.84rem;
        letter-spacing:.06em;transition:color .18s;white-space:nowrap}
.menu a:hover{color:var(--giz)}
/* ONDE VOCÊ ESTÁ, no menu.
   Faltava por inteiro: as três páginas tinham o mesmo cabeçalho, sem nada
   marcado, e as âncoras da home não marcavam nada nunca. Quem descia a home
   passava por quatro seções sem que o menu se mexesse — daí a sensação de
   não estar preso a nada e de não saber de onde se veio. */
.menu a[aria-current]{color:var(--giz)}
.menu a[aria-current]::after{content:"";display:block;height:2px;margin-top:5px;
     background:var(--verde);border-radius:2px}
.menu a{padding-bottom:2px}

/* A barra de leitura, na base do cabeçalho.
   Responde "quanto falta" sem ocupar espaço nenhum: são 2px colados na borda
   que o cabeçalho já tinha. transform em vez de width porque escala não
   dispara relayout a cada quadro de rolagem. */
.progresso{position:absolute;left:0;right:0;bottom:-1px;height:2px;
     background:linear-gradient(90deg,var(--verde),var(--azul));
     transform:scaleX(0);transform-origin:0 50%;will-change:transform}

/* A migalha: de onde você veio, e como voltar.
   Nas páginas internas o único caminho de volta era o logo, que ninguém lê
   como botão de voltar quando chegou por link direto. */
.migalha{width:var(--env);margin:0 auto;padding-top:1.4rem;
     display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;
     font:600 .74rem/1 "Rajdhani",sans-serif;letter-spacing:.14em;
     text-transform:uppercase;color:var(--bruma)}
.migalha a{color:var(--bruma);text-decoration:none}
.migalha a:hover{color:var(--verde)}
.migalha b{color:var(--giz);font-weight:600}
.migalha svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2.4;
     stroke-linecap:round;stroke-linejoin:round;opacity:.6}

/* Para onde ir agora. Cada página interna termina oferecendo as outras três
   frentes, com a atual marcada — assim o fim de uma página é o começo da
   seguinte, em vez de um beco. */
.adiante{border-top:1px solid var(--aresta);
     padding:clamp(2.4rem,2rem + 2vw,4rem) 0}
.adiante .env{display:grid;gap:1.2rem}
.adiante-grade{display:grid;gap:.9rem;grid-template-columns:1fr}
@media (min-width:52rem){.adiante-grade{grid-template-columns:repeat(3,1fr)}}
.adiante-cartao{display:grid;gap:.35rem;padding:1.1rem 1.2rem;text-decoration:none;
     border:1px solid var(--aresta);border-radius:12px;background:var(--carvao);
     transition:border-color .18s,transform .18s}
.adiante-cartao:hover{border-color:var(--acao);transform:translateY(-2px)}
.adiante-cartao b{color:var(--giz);font-size:1.02rem}
.adiante-cartao span{color:var(--bruma);font-size:.88rem;line-height:1.45}
.adiante-cartao i{color:var(--verde);font-style:normal;font-size:.8rem;
     font-weight:600;letter-spacing:.1em;text-transform:uppercase;margin-top:.3rem}
/* O cartão da própria página fica visível e inerte: some do caminho sem sumir
   da lista, que é o que diz "esta é a que você está lendo". */
.adiante-cartao[aria-current]{opacity:.5;pointer-events:none;border-style:dashed}
.adiante-cartao[aria-current] i{color:var(--bruma)}
.tema{margin-left:auto;background:none;border:1px solid var(--aresta);
      color:var(--bruma);width:38px;height:38px;display:grid;place-items:center;
      cursor:pointer;padding:0;flex:none;transition:color .18s,border-color .18s}
.tema:hover{color:var(--giz);border-color:var(--azul)}
.tema svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;
          stroke-linecap:round;grid-area:1/1}
/* mostra o ícone do tema para onde o botão LEVA, não do tema atual: no escuro
   ele oferece o sol, no claro oferece a lua */
.i-sol{display:block} .i-lua{display:none}
:root[data-tema="claro"] .i-sol{display:none}
:root[data-tema="claro"] .i-lua{display:block}

.topo .btn{padding:.62rem 1.1rem;font-size:.76rem;white-space:nowrap}
.so-largo{display:none}
@media (min-width:34rem){.so-largo{display:inline}.so-estreito{display:none}}
/* 74rem, não 60: em 60 os cinco itens cabiam na largura mas quebravam cada um
   em duas linhas, e o cabeçalho ficava com 110px de altura. Abaixo disso
   quem navega é o .menu-mob. */
@media (min-width:74rem){
  .menu{display:flex}
  .tema{margin-left:0}
  .menu-mob{display:none}
}

/* ── o menu abaixo de 74rem ─────────────────────────────────────
   A régua de links some nessa largura, e por um tempo não havia nada no lugar:
   a justificativa era que os quatro cartões do hero e o rodapé levavam aos
   mesmos destinos. Só que hero com quatro cartões existe na HOME — nas páginas
   modular e de imóveis a única saída era rolar até o rodapé, e isso vale para
   toda janela abaixo de 1184px, o que inclui notebook, não só celular.

   <details> em vez de botão com JS: já vem com estado, foco e teclado prontos,
   e o menu continua funcionando se o script falhar em carregar. */
.menu-mob{margin-left:auto}
.menu-mob>summary{list-style:none;cursor:pointer;width:42px;height:42px;
     display:grid;place-items:center;color:var(--giz);
     border:1px solid var(--borda-cartao);border-radius:10px}
.menu-mob>summary::-webkit-details-marker{display:none}
.menu-mob>summary svg{width:20px;height:20px;fill:none;stroke:currentColor;
     stroke-width:2;stroke-linecap:round}
.menu-mob>summary:focus-visible{outline:2px solid var(--azul);outline-offset:2px}
.menu-mob[open]>summary{background:var(--carvao);border-color:var(--acao)}
/* Ancorado no .topo .env: o painel cai sob o cabeçalho, alinhado à direita da
   mesma coluna do conteúdo. max-width impede que o min-width de 15rem o faça
   estourar em tela de 320px. */
.menu-mob>ul{position:absolute;right:0;top:calc(100% + .5rem);z-index:50;
     margin:0;padding:.45rem;list-style:none;min-width:15rem;max-width:100%;
     background:var(--carvao);border:1px solid var(--borda-cartao);
     border-radius:12px;box-shadow:0 18px 44px rgba(6,11,15,.45)}
.menu-mob a{display:block;padding:.66rem .75rem;border-radius:8px;
     color:var(--giz);text-decoration:none;font-size:.92rem}
.menu-mob a:hover{background:var(--tinta)}
.menu-mob a[aria-current]{color:var(--verde)}

/* ── hero ───────────────────────────────────────────────────────
   O vídeo é fixo atrás de tudo e a primeira dobra passa por cima dele.
   z-index -2 em vez de position:fixed no <video> dentro do fluxo: assim
   ele não briga com o sticky do cabeçalho. */
/* space-between, não center: centralizado, o bloco inteiro cai no meio do
   quadro e os quatro cartões pousam exatamente sobre a casa do vídeo —
   justamente o que o vídeo tem para mostrar. Texto no alto, cartões no pé,
   e o meio fica livre para a obra aparecer. */
.hero{position:relative;isolation:isolate;overflow:hidden;
      min-height:calc(100svh - 66px);display:grid;align-content:space-between;
      gap:1.5rem;padding:clamp(1.8rem,1rem + 2.5vw,3.2rem) 0}
.fundo{position:absolute;inset:0;z-index:-2;overflow:hidden}
.fundo video,.fundo img{width:100%;height:100%;object-fit:cover;display:block}
/* Véu em duas camadas: um escurecimento parelho para o texto ter contraste
   em qualquer quadro do vídeo, e um gradiente que puxa o pé para o breu
   para a próxima seção emendar sem costura visível. */
/* O scrim é escuro nos DOIS temas. Sobre fotografia não existe véu claro que
   sirva: para o texto ler sobre o vídeo em tema claro seria preciso quase
   apagar a imagem, e aí o vídeo deixa de ter função. Só o último ponto do
   gradiente usa --breu, para o hero fundir na página em vez de terminar num
   degrau de cor. */
.veu{position:absolute;inset:0;z-index:-1;background:linear-gradient(to bottom,
     rgba(6,11,15,.60) 0%, rgba(6,11,15,.48) 46%, var(--breu) 100%)}

/* Cores fixas, fora do tema: este texto vive sobre o scrim escuro do vídeo
   nos dois modos, então herdar --giz o deixaria preto sobre preto no claro. */
.hero .pergunta{color:#66C4E4;font-size:.8rem;letter-spacing:.2em;
     text-transform:uppercase;font-weight:600;margin-bottom:1.1rem;display:block}
.hero h1{max-width:19ch;color:#F2F7FA;text-shadow:0 2px 30px rgba(0,0,0,.5)}
.hero .sub{color:#C9D6DD;font-size:var(--medida);max-width:44ch;margin-top:1.2rem;
     text-shadow:0 1px 16px rgba(0,0,0,.6)}

/* ── os quatro pilares ──────────────────────────────────────── */
.portas{display:grid;gap:2px;grid-template-columns:1fr}
@media (min-width:38rem){.portas{grid-template-columns:1fr 1fr}}
@media (min-width:76rem){.portas{grid-template-columns:repeat(4,1fr)}}
.porta{background:var(--sombra-cartao);backdrop-filter:blur(8px);
       border:1px solid var(--borda-cartao);padding:1.1rem 1.15rem 1rem;
       text-decoration:none;color:var(--giz);display:grid;gap:.4rem;
       align-content:start;transition:background .2s,border-color .2s,transform .2s}
.porta:hover{border-color:var(--azul);transform:translateY(-3px)}
.porta svg{width:26px;height:26px;fill:none;stroke:var(--verde);
           stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.porta b{font-family:"Rajdhani",sans-serif;font-size:1.1rem;font-weight:700;
         text-transform:uppercase;letter-spacing:.04em;line-height:1.1}
.porta span{color:var(--bruma);font-size:.87rem;line-height:1.45}
.porta i{font-style:normal;color:var(--azul);font-size:.74rem;letter-spacing:.14em;
         text-transform:uppercase;font-weight:600;margin-top:.15rem}

/* ── vista explodida ────────────────────────────────────────────
   --abre vai de 0 a 1 conforme a seção rola, e cada camada anda
   base + abre × solta. A laje tem solta zero: ela é o chão, e sem uma
   peça parada a explosão vira flutuação sem escala. */
/* A seção não prende mais a rolagem: a explosão é comandada pela barra, então
   ela é uma seção comum. Isso tirou 190svh de corrida da página — quase 1.700px
   de rolagem que existiam só para animar um desenho. */
.abre{position:relative;background:var(--carvao);--abre:0;
      padding:clamp(2rem,1.5rem + 2vw,3.5rem) 0}
.cabeca-abre{display:grid;gap:.6rem;margin-bottom:clamp(1.2rem,.8rem + 1.4vw,2rem)}
.cabeca-abre .corpo{max-width:58ch}
.palco-abre{display:grid;grid-template-columns:1fr;align-items:start;
     width:var(--env);margin-inline:auto;gap:clamp(1.5rem,1rem + 2vw,2.5rem)}
@media (min-width:64rem){.palco-abre{grid-template-columns:minmax(0,1fr) 22rem}}
.desenho{min-width:0;display:grid;gap:1.2rem}
/* 50svh e não 72: o desenho precisa caber na tela JUNTO com o título e a
   barra. Em 72 a barra nascia abaixo da dobra, e controle que não se vê não
   é arrastado — a casa ficaria fechada para quem não rolasse mais um pouco. */
.explodida{width:100%;height:auto;max-height:min(50svh,540px);display:block;
           margin-inline:auto}

/* O conjunto inteiro sobe enquanto está fechado e assenta conforme abre: a
   moldura precisa caber a explosão, então sem isso a casa montada fica
   encostada no rodapé com um terço de vazio em cima. */
.conjunto{transform-box:view-box;transform-origin:0 0;
          transform:translateY(calc((1 - var(--abre)) * var(--sobe)))}
.camada{transform-box:view-box;transform-origin:0 0;
        transform:translate(calc(var(--bx) + var(--abre) * var(--ex)),
                            calc(var(--by) + var(--abre) * var(--ey)));
        transition:opacity .25s ease}
.explodida.mirando .camada{opacity:.22}
.explodida.mirando .camada.alvo{opacity:1}
.camada{cursor:pointer}

/* faces: a mesma cor, escurecida por lado. Uma fonte de luz só, vinda de
   cima e da esquerda, como no desenho de referência. */
.f-esq{filter:brightness(.74)}
.f-dir{filter:brightness(.54)}

.c-telha{fill:#2E373D}
.c-nucleo{fill:var(--creme)}
.c-moldura{fill:#28323A}
.c-piso{fill:#B98A55}
.c-deck{fill:#A9743E}
.c-laje{fill:var(--concreto)}
.c-grama{fill:var(--grama)}
.c-movel{fill:#D6CFBB}          /* almofada */
.c-movel-base{fill:#8A6238}     /* estrutura de madeira da poltrona */
.c-mesa{fill:#4A5058}
.c-vaso{fill:#B9BCB4}
.c-planta{fill:#4E7A46}
.c-ripado,.c-ripado-lado{fill:var(--madeira)}
.c-ripado-lado{filter:brightness(.72)}
.c-janelinha{fill:#0E161C}
.c-porta{fill:var(--grafite)}
/* O miolo escuro serve à casa FECHADA: é o que se vê através do vidro e o que
   dá profundidade à caixa. Na explosão ele vira o contrário — duas chapas de
   12 metros que engolem o piso vinílico e roubam a área de clique dele. Some
   conforme a casa abre.

   E pointer-events:none junto, não só a opacidade: elemento com opacity 0
   continua capturando o ponteiro. Sem os dois, o plano some da vista mas
   segue roubando o hover do piso — que era exatamente a queixa. */
.c-interna,.c-interna-fundo{opacity:clamp(0, calc(1 - var(--abre) * 1.6), 1);
     pointer-events:none}
.c-interna{fill:#3A3A34}
.c-interna-fundo{fill:#2A2C28}
.c-vidro{fill:var(--vidro);opacity:.3}
/* transparent, não none: `fill:none` não é pintura nenhuma e o SVG não deixa
   o ponteiro acertá-lo, então a camada do vidro só captava na linha do
   caixilho. Com transparente a aparência é a mesma e o pano inteiro vira
   área de clique. */
.c-caixilho{fill:transparent;stroke:#1E272D;stroke-width:4}
.puxador{fill:#C9D6DD}

.nervura{stroke:#1D252A;stroke-width:1.4}
.regua{stroke:#8F6335;stroke-width:1;opacity:.55}
.regua-deck{stroke:#7E5730;stroke-width:1;opacity:.6}
.ripa{stroke:#8A5F31;stroke-width:1.2;opacity:.75}
.montante{stroke:#222C33;stroke-width:2.4}
/* ── as chamadas numeradas ──────────────────────────────────
   Só entram quando a explosão termina. Antes disso a casa ainda está se
   abrindo e um número ao lado de cada peça seria ruído; depois, é o que
   transforma o fim da rolagem em prancha técnica em vez de tempo morto.

   A conta ((--abre - 0.82) × 5.5) mantém a opacidade em zero até 82% da
   abertura e chega a 1 no fim. Sem unidade, então calc() aceita. */
.chamada{opacity:clamp(0, calc((var(--abre) - .82) * 5.5), 1);
         transition:opacity .2s ease;pointer-events:none}
.guia{stroke:var(--bruma);stroke-width:1.5;stroke-dasharray:3 3}
.bolha{fill:var(--breu);stroke:var(--verde);stroke-width:1.5}
.num{fill:var(--giz);font:700 13px/1 "Rajdhani",sans-serif;
     text-anchor:middle;dominant-baseline:central;letter-spacing:.04em}
.camada.alvo .bolha{fill:var(--verde);stroke:var(--verde)}
.camada.alvo .num{fill:var(--breu)}
.camada.alvo .guia{stroke:var(--verde)}

.viga{stroke:var(--aluminio);stroke-width:5;stroke-linecap:square}
.pilar{stroke:var(--aluminio);stroke-width:5;stroke-linecap:square}
.pilar-fundo{stroke:var(--aluminio);stroke-width:4;opacity:.6;stroke-linecap:square}
.braco{stroke:var(--aluminio);stroke-width:2.4;opacity:.5}

/* ── a barra que abre a casa ─────────────────────────────────
   Estilo próprio nos dois motores: o range nativo é fino, cinza e some no
   fundo escuro — e uma barra que não se vê não é arrastada por ninguém.
   O trilho pinta o quanto já foi aberto usando a mesma --abre do desenho, então
   barra e casa nunca discordam. */
.controle{display:grid;gap:.5rem;max-width:44rem;width:100%;margin-inline:auto}
.rotulo-abre{font:600 .72rem/1 "Rajdhani",sans-serif;letter-spacing:.22em;
     text-transform:uppercase;color:var(--bruma)}
.abrir{-webkit-appearance:none;appearance:none;width:100%;height:34px;
       background:none;margin:0;cursor:grab;display:block}
.abrir:active{cursor:grabbing}
.abrir::-webkit-slider-runnable-track{height:8px;border-radius:99px;
     background:linear-gradient(to right,var(--verde) calc(var(--abre) * 100%),
                var(--aresta) calc(var(--abre) * 100%))}
.abrir::-moz-range-track{height:8px;border-radius:99px;
     background:linear-gradient(to right,var(--verde) calc(var(--abre) * 100%),
                var(--aresta) calc(var(--abre) * 100%))}
.abrir::-webkit-slider-thumb{-webkit-appearance:none;width:28px;height:28px;
     border-radius:50%;background:var(--verde);border:3px solid var(--carvao);
     margin-top:-10px;box-shadow:0 2px 12px rgba(0,0,0,.45)}
.abrir::-moz-range-thumb{width:28px;height:28px;border-radius:50%;
     background:var(--verde);border:3px solid var(--carvao);
     box-shadow:0 2px 12px rgba(0,0,0,.45)}
.abrir:focus-visible{outline:2px solid var(--azul);outline-offset:6px;border-radius:99px}

/* Pulso até o primeiro toque. É o que faz o olho parar na barra em vez de
   rolar direto por ela — sem isso o controle passa despercebido e a casa
   nunca abre. Some assim que a pessoa interage, porque aí já cumpriu a função. */
.abrir:not(.tocado)::-webkit-slider-thumb{animation:pulsa 2.2s ease-in-out infinite}
.abrir:not(.tocado)::-moz-range-thumb{animation:pulsa 2.2s ease-in-out infinite}
@keyframes pulsa{
  0%,100%{box-shadow:0 2px 12px rgba(0,0,0,.45), 0 0 0 0 rgba(95,168,95,.55)}
  55%{box-shadow:0 2px 12px rgba(0,0,0,.45), 0 0 0 12px rgba(95,168,95,0)}
}

.marcas{display:flex;justify-content:space-between;align-items:baseline;
     font:600 .72rem/1 "Rajdhani",sans-serif;letter-spacing:.16em;
     text-transform:uppercase;color:var(--bruma)}
.conta-abre{color:var(--verde);font-variant-numeric:tabular-nums;font-size:.86rem}
.dica-abre{color:var(--bruma);font-size:.84rem}

.lista-camadas{list-style:none;margin:.7rem 0 0;padding:0;display:grid;gap:1px}
.lc a{display:grid;gap:.15rem;padding:.5rem .75rem;text-decoration:none;
      background:var(--breu);border-left:2px solid transparent;color:var(--giz);
      transition:background .18s,border-color .18s}
.lc a:hover,.lc.alvo a{background:var(--tinta);border-left-color:var(--verde)}
.lc b{font-family:"Rajdhani",sans-serif;font-size:.95rem;font-weight:700;
      text-transform:uppercase;letter-spacing:.03em;line-height:1.15}
.lc b em{font-style:normal;color:var(--madeira);margin-right:.45rem;
      font-variant-numeric:tabular-nums}
.lc span{color:var(--bruma);font-size:.76rem;line-height:1.32}
.lc i{font-style:normal;color:var(--azul);font-size:.69rem;letter-spacing:.1em;
      text-transform:uppercase}
@media (max-width:64rem){
  .lista-camadas{grid-template-columns:1fr 1fr}
  .explodida{max-height:52svh}
}
@media (max-width:38rem){.lista-camadas{grid-template-columns:1fr}}


/* ── a montagem, na horizontal ───────────────────────────────
   A vertical foi removida e a razão vale registrar, porque a tentação de
   voltar é grande: cena presa à rolagem não convida a nada, a tela não
   desliza (o que se lê como "a rolagem travou") e não há como voltar meia
   etapa para conferir uma peça.

   Aqui o scroll-snap é a ferramenta certa, ao contrário da vertical: o
   painel tem a largura do próprio contêiner, então um gesto percorre um
   painel inteiro e o encaixe nunca puxa de volta ao ponto de partida. */
/* O bloco inteiro — título, carrossel e trilha — tem de caber numa tela.
   Não cabia: eram 961px de montagem num vão de 830px, e o que sobrava de fora
   era justamente a trilha de nove pontos. O visitante via a planta parada,
   sem contador, sem trilha e com a seta no meio da foto — daí a leitura de
   que a página não pedia nada e não levava a lugar nenhum.

   Por isso o vão entre carrossel e trilha é curto (.9rem) e o respiro maior
   fica no cabeçalho, via margin-bottom: são duas distâncias com papéis
   opostos, e um `gap` só não sabe distinguir. */
.montagem{--faixa:clamp(340px,58svh,560px);
     background:var(--breu);padding:clamp(2rem,1.5rem + 2vw,3.5rem) 0;
     display:grid;gap:.9rem}
.montagem>.env{margin-bottom:clamp(.4rem,.2rem + .8vw,1rem)}
.mesa{display:grid;grid-auto-flow:column;grid-auto-columns:100%;
     overflow-x:auto;overscroll-behavior-x:contain;
     scroll-snap-type:x mandatory;scrollbar-width:none}
.mesa::-webkit-scrollbar{display:none}
.mesa:focus-visible{outline:2px solid var(--azul);outline-offset:4px}
/* 58svh, não 72: o painel é a parte elástica de um bloco que precisa caber
   inteiro na tela junto com o cabeçalho e a trilha — o resto é texto no
   tamanho natural dele e não tem como ceder. 62% ainda deixava a trilha 20px
   abaixo da dobra num 1366×768, que é a tela de notebook mais comum aqui.
   O piso de 340px é para celular deitado, onde 58% de uma tela baixa não
   daria nem para o texto.

   A medida mora em --faixa, na seção, porque a prancha da planta precisa da
   MESMA altura declarada — `object-fit:contain` com `height:100%` não tem
   contra o que resolver numa trilha `auto`, e a imagem voltava a impor a
   altura intrínseca dela ao painel. */
.painel{scroll-snap-align:start;position:relative;isolation:isolate;
     min-height:var(--faixa);display:grid;align-content:end;
     padding:clamp(1.4rem,1rem + 2vw,2.6rem)}
.painel img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}

/* O VÉU VOLTOU A SER LEVE, e o contraste do texto mudou de lugar.
   Ele tinha subido a .94/.84/.56 para dar conta de dois parágrafos sobre foto,
   e o efeito foi apagar a fotografia: no painel do terreno não dava para ver
   que havia terreno, no da fundação não dava para ver o radier. A foto é
   metade do argumento desta página — escurecê-la para salvar a letra é trocar
   o que se vende pelo que se explica.

   Quem garante a leitura agora é a caixa da legenda, logo abaixo. O véu ficou
   só com o serviço que ainda é dele: assentar a base da imagem para a caixa
   não flutuar no meio do nada. */
.painel::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(
     to top,rgba(6,11,15,.62) 0%,rgba(6,11,15,.34) 34%,rgba(6,11,15,.08) 66%,transparent)}

/* A LEGENDA é uma caixa, não texto solto sobre a foto.
   Texto solto obriga o véu a cobrir tudo que ele possa vir a ocupar, e o texto
   cresceu de duas frases para dois parágrafos. Numa caixa, o escuro fica
   exatamente onde a letra está: a foto aparece nos outros dois terços do
   painel, e o contraste é garantido em vez de negociado. */
.painel .legenda{max-width:min(48ch,92%);
     padding:1.15rem clamp(1.1rem,.8rem + 1vw,1.5rem) 1.25rem;
     background:rgba(8,14,19,.72);backdrop-filter:blur(9px);
     border:1px solid rgba(232,239,243,.1);border-radius:14px}
@supports not (backdrop-filter: blur(2px)){
  .painel .legenda{background:rgba(8,14,19,.88)}
}

.painel .conta{font:700 .78rem/1 "Rajdhani",sans-serif;letter-spacing:.2em;
     color:var(--madeira);font-variant-numeric:tabular-nums}
.painel h3{font-size:clamp(1.3rem,1rem + 1.5vw,2rem);line-height:1.04;
     color:#F2F7FA;margin:.5rem 0 .6rem;max-width:22ch}
.painel p{color:#CBD8DF;max-width:46ch;font-size:.97rem;line-height:1.5}
.painel p + p{margin-top:.65rem}
/* A linha que conduz adiante: convite, não corpo de texto. */
.painel .conduz{color:var(--giz);font-weight:500;margin-top:.9rem}
.painel .conduz .btn{margin-top:.2rem}

/* ── o painel da planta ─────────────────────────────────────
   Ele é o único que não tem fotografia por baixo: é desenho técnico com cota e
   legenda, e desenho técnico não aceita véu. Por isso a prancha fica sobre
   papel branco e a legenda sobre o fundo do tema, sem caixa escura. */
.painel-planta{padding:0;align-content:start;background:var(--breu);gap:0;
     grid-template-rows:min(40svh,360px) auto}
.painel-planta::after{content:none}
/* A prancha é branca, não #EEF1F2. No tema claro o fundo da seção é #F4F6F7 e
   os dois se confundiam: o desenho parecia solto no meio do nada, sem prancha
   nenhuma, e o limite entre desenho e legenda sumia. */
.painel-planta img{position:relative;inset:auto;grid-row:1;min-height:0;
     width:100%;height:100%;object-fit:contain;background:#FFF;padding:1.1rem}
/* Sem caixa escura, e as cores seguem o TEMA — os outros painéis usam claro
   fixo porque estão sobre foto; este está sobre o fundo da página, e o claro
   fixo o deixava branco sobre branco no tema claro.
   `.montagem` na frente para vencer o empate de especificidade com `.painel h3`,
   que vem depois no arquivo. */
.montagem .painel-planta .legenda{max-width:none;background:none;border:0;
     backdrop-filter:none;padding:1.1rem clamp(1.4rem,1rem + 2vw,2.6rem) 1.4rem}
.montagem .painel-planta h3{color:var(--giz);margin:.4rem 0 .5rem}
.montagem .painel-planta p{color:var(--bruma)}

/* Em tela larga a planta vira DUAS COLUNAS: prancha à esquerda, legenda à
   direita. Empilhado numa tela larga, o mesmo conteúdo virava duas faixas sem
   relação — uma clara com um desenho pequeno e perdido no meio, outra escura
   com texto — e era essa costura que se lia como "quebrado".

   Duas colunas e UMA linha, e não uma linha por parágrafo. A versão anterior
   posicionava cada filho numa linha nomeada (`grid-row:2`, `3`, `4`); quando o
   texto ganhou um segundo parágrafo, ele não tinha linha e foi parar em cima
   do primeiro. Com a legenda embrulhada num bloco só, o número de parágrafos
   deixa de importar. */
@media (min-width:68rem){
  .painel-planta{grid-template-columns:minmax(0,1.2fr) minmax(min(31rem,50%),1fr);
       grid-template-rows:var(--faixa);align-content:stretch;align-items:center}
  .painel-planta img{grid-column:1;grid-row:1;height:var(--faixa);
       border-right:1px solid var(--aresta)}
  /* A folga à direita abre caminho para nada, hoje: as setas desceram para a
     linha da trilha. Fica um respiro de coluna, que o texto agradece. */
  .montagem .painel-planta .legenda{grid-column:2;grid-row:1;
       padding-block:0;padding-right:clamp(1.4rem,1rem + 2vw,2.6rem)}
  /* O teto de 22ch dos outros títulos não vale aqui: "12,00 × 4,80 m" é uma
     medida, e medida partida na multiplicação lê como erro de digitação. */
  .montagem .painel-planta h3{max-width:none}
}

/* ── comandos da mesa ───────────────────────────────────────
   As setas ficam SOBRE a mesa, presas às laterais e centradas na altura.
   Ficavam abaixo, e num painel de 620px isso as punha quase 400px fora da
   tela: quem abria a página via a planta e nada indicava que havia oito
   etapas à direita. Controle de carrossel precisa estar onde o carrossel
   está. */
/* min-width:0 é obrigatório aqui.
   Item de grid tem min-width:auto por padrão, o que significa "não encolha
   abaixo do meu conteúdo". Como o conteúdo são nove painéis de 100% cada, a
   caixa esticava para 1.732px dentro de uma janela de 1.095 e o carrossel
   saía pela direita da tela — a planta parecia deslocada quando na verdade
   metade dela estava fora. Quem tem o overflow é a .mesa, não a caixa. */
.mesa-caixa{position:relative;min-width:0}
/* Botões da linha de comando, não bolhas sobre a foto.
   Flutuando no meio do painel eles cobriam o texto da etapa — a seta de voltar
   nasce à esquerda, na vertical do meio, que é onde o texto começa. Aqui em
   baixo, ao lado da trilha, tudo que navega está no mesmo lugar e nada tapa a
   leitura. Desabilitados ficam apagados mas OCUPAM o espaço: se sumissem, a
   trilha pularia de lado ao trocar de painel. */
.mesa-ant,.mesa-prox{flex:none;width:38px;height:38px;border-radius:50%;
     display:grid;place-items:center;cursor:pointer;
     border:1px solid var(--aresta);color:var(--giz);background:none;padding:0;
     transition:background .18s,border-color .18s,color .18s,opacity .18s}
.mesa-ant:hover:not(:disabled),.mesa-prox:hover:not(:disabled){
     background:var(--acao);border-color:var(--acao);color:#F2F7FA}
.mesa-ant:disabled,.mesa-prox:disabled{opacity:.28;pointer-events:none}
.mesa-ant:focus-visible,.mesa-prox:focus-visible{outline:2px solid var(--azul);outline-offset:2px}
.mesa-ant svg,.mesa-prox svg{width:18px;height:18px;fill:none;stroke:currentColor;
     stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}

/* A dica escrita, no canto. Some no primeiro comando, como o pulso. */
.mesa-dica{position:absolute;right:clamp(.6rem,1.5vw,1.4rem);bottom:1rem;z-index:3;
     background:rgba(6,11,15,.7);backdrop-filter:blur(6px);color:#C9D6DD;
     padding:.4rem .8rem;font:600 .7rem/1 "Rajdhani",sans-serif;
     letter-spacing:.14em;text-transform:uppercase;transition:opacity .3s}
.montagem.tocada .mesa-dica{opacity:0}

.comandos{display:flex;align-items:center;gap:.9rem;width:var(--env);margin-inline:auto}
/* A seta pulsa até o primeiro comando. É o que faz o olho notar que existe
   algo para a direita — sem isso a montagem fica parada no primeiro painel,
   que foi exatamente a queixa da versão vertical.

   Quem se move é o GLIFO dentro do botão, não o botão. Animar o botão o
   torna um alvo que nunca para quieto: automação de teste espera o elemento
   estabilizar antes de clicar e trava, e quem tem tremor ou usa apontador de
   precisão sofre o mesmo na prática. */
.montagem:not(.tocada) .mesa-prox{border-color:var(--verde);
     box-shadow:0 0 0 0 rgba(95,168,95,.5);animation:aro 2.1s ease-out infinite}
.montagem:not(.tocada) .mesa-prox svg{animation:chama 1.9s ease-in-out infinite}
@keyframes chama{
  0%,100%{transform:translateX(-2px);opacity:.75}
  50%{transform:translateX(3px);opacity:1}
}
/* O aro cresce a partir da borda, sem mover o botão: alvo que não fica
   quieto é hostil para quem tem tremor — e trava automação de teste. */
@keyframes aro{
  0%{box-shadow:0 0 0 0 rgba(95,168,95,.5)}
  70%{box-shadow:0 0 0 16px rgba(95,168,95,0)}
  100%{box-shadow:0 0 0 0 rgba(95,168,95,0)}
}
.trilho-mesa{display:flex;gap:6px;flex:1}
/* botões de verdade, não <b>: são um controle, então precisam de foco,
   teclado e rótulo. A altura de toque vem do padding, e a linha visível é
   a borda de cima — assim o alvo tem 18px sem a barra ficar grossa. */
.trilho-mesa button{flex:1;height:18px;padding:0;background:none;border:0;
     cursor:pointer;display:grid;align-items:center}
.trilho-mesa button::before{content:"";display:block;height:3px;
     background:var(--aresta);transition:background .25s}
.trilho-mesa button:hover::before{background:var(--bruma)}
.trilho-mesa button.on::before{background:var(--verde)}
.trilho-mesa button:focus-visible{outline:2px solid var(--azul);outline-offset:2px}
.mesa-conta{font:700 .78rem/1 "Rajdhani",sans-serif;letter-spacing:.18em;
     color:var(--bruma);font-variant-numeric:tabular-nums;flex:none}

/* ── faixas de pilar, na home ────────────────────────────────
   Cada pilar ganha uma faixa curta em vez de uma seção inteira. É o que tira
   a home de 46% de construção modular: o assunto continua lá, mas como uma
   porta entre quatro, não como o site todo. */
.pilar{display:grid;gap:clamp(1.4rem,1rem + 2vw,3rem);align-items:center;
     padding:clamp(2.6rem,2rem + 2.5vw,4.5rem) 0}
@media (min-width:60rem){
  .pilar{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .pilar.invertido>*:first-child{order:2}
}
.pilar-arte{position:relative;overflow:hidden;background:var(--carvao);
     aspect-ratio:4/3;display:grid;place-items:center}
/* `cover` corta, e é isso que se quer numa FOTOGRAFIA: sobra paisagem de
   qualquer lado. Num render de produto não sobra nada — o pergolado ficava com
   a viga de cima e o pé decepados, porque o render é quadrado e a moldura é
   4/3. `contain` mostra a peça inteira e sacrifica o preenchimento, que é a
   troca certa quando o conteúdo É o objeto. */
.pilar-arte img{width:100%;height:100%;object-fit:cover;display:block}
.pilar-arte.produto img{object-fit:contain;padding:clamp(1rem,.6rem + 1.6vw,2.2rem)}
.pilar-arte.planta img{object-fit:contain;background:#EEF1F2;padding:1rem}
.pilar-txt{display:grid;gap:.8rem;align-content:center}
.pilar-txt h2{margin-top:.4rem}
.pilar-txt p{color:var(--bruma);font-size:var(--medida);max-width:46ch}
.pilar-txt .acoes{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.7rem}

/* O ponto que pulsa sobre a planta: é o convite que a montagem vertical não
   tinha. Fica sobre a fachada principal, que é por onde a casa se lê. */
.ponto{position:absolute;left:24%;top:38%;width:20px;height:20px;border-radius:50%;
     background:var(--verde);box-shadow:0 0 0 0 rgba(95,168,95,.6);
     animation:bate 2.1s ease-out infinite;pointer-events:none}
@keyframes bate{
  0%{box-shadow:0 0 0 0 rgba(95,168,95,.55);transform:scale(.92)}
  70%{box-shadow:0 0 0 20px rgba(95,168,95,0);transform:scale(1)}
  100%{box-shadow:0 0 0 0 rgba(95,168,95,0);transform:scale(.92)}
}

/* ── imóveis ─────────────────────────────────────────────────
   O selo de demonstração é vermelho e fica no topo da página inteira, de
   propósito. Anúncio inventado com bairro e preço engana de verdade se
   escapar para o ar; ele existe para ninguém publicar sem perceber. */
.selo-demo{background:#8C2F2F;color:#fff;text-align:center;
     font:700 .72rem/1.4 "Rajdhani",sans-serif;letter-spacing:.18em;
     text-transform:uppercase;padding:.6rem 1rem}
.filtros{display:flex;flex-wrap:wrap;gap:2px}
.filtro{background:var(--carvao);border:1px solid var(--aresta);color:var(--bruma);
     padding:.7rem 1.2rem;cursor:pointer;font:600 .78rem/1 "Rajdhani",sans-serif;
     letter-spacing:.14em;text-transform:uppercase;transition:all .18s}
.filtro:hover{color:var(--giz);border-color:var(--azul)}
.filtro[aria-pressed="true"]{background:var(--acao);color:#fff;border-color:var(--acao);
     box-shadow:inset 0 -3px 0 var(--verde)}
.filtro:focus-visible{outline:2px solid var(--azul);outline-offset:2px}
.conta-filtro{margin-left:auto;align-self:center;padding:0 .3rem;
     font:600 .78rem/1 "Rajdhani",sans-serif;letter-spacing:.14em;
     color:var(--bruma);font-variant-numeric:tabular-nums}
.imoveis{display:grid;gap:2px;grid-template-columns:repeat(auto-fit,minmax(17rem,1fr))}
.imovel{background:var(--carvao);display:grid;grid-template-rows:auto 1fr;
     text-decoration:none;color:var(--giz)}
.imovel img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}
.imovel .dados{padding:1.1rem 1.2rem 1.3rem;display:grid;gap:.35rem;align-content:start}
.imovel .tipo{font:600 .68rem/1 "Rajdhani",sans-serif;letter-spacing:.16em;
     text-transform:uppercase;color:var(--verde)}
.imovel h3{font-size:1.12rem}
.imovel .onde{color:var(--bruma);font-size:.86rem}
.imovel .preco{font:700 1.05rem/1 "Rajdhani",sans-serif;letter-spacing:.03em;
     color:var(--azul);margin-top:.3rem}
.imovel .medida{color:var(--bruma);font-size:.8rem}
.sem-resultado{color:var(--bruma);padding:2rem 0}

/* ── grades ─────────────────────────────────────────────────── */
/* 15rem, e a conta mudou em 03/09 junto com o número de cartões.
   São treze categorias — todas as da loja que já têm render — mais o cartão de
   saída, que ocupa DUAS colunas: treze mais dois dão quinze trilhos. Quinze
   fecha exato em 5 colunas (1240px) e exato de novo em 3 (tablet), que são as
   duas larguras onde a grade passa mais tempo. Em 17rem abririam 4 colunas e
   os quinze cairiam em 4+4+4+3, com o buraco de volta. */
.cats{display:grid;gap:2px;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}
/* Cartão claro, porque o render 3D é sobre branco.
   A nota antiga dizia que recortar o fundo não servia. Serve desde que
   site-recortar.mjs passou a fazer flood-fill a partir da borda em vez de
   colorkey: a base cinza da peça sobrevive, só o branco ligado à moldura sai.
   Os img/cat-*.webp são recortes com alfa de verdade, e é justamente por isso
   que o cartão claro continua sendo o fundo certo — a peça pousa nele sem
   emenda. Numa página escura, catorze peças claras leem como caixas de
   produto numa prateleira, que é exatamente o que são. */
.cat{position:relative;text-decoration:none;overflow:hidden;
     background:#F2F4F5;color:#16242E;
     display:grid;grid-template-rows:auto 1fr;gap:0;
     transition:background .2s}
/* contain, não cover: o recorte tem alfa e vem justo na peça, então cover
   cortaria produto — a porta em pé do Kit Portas sai em retrato (720×767) e
   perderia a maçaneta. A caixa 4/3 fixa iguala a altura dos cartões apesar de
   cada recorte ter a sua própria proporção. */
.cat img{width:100%;aspect-ratio:4/3;height:auto;object-fit:contain;display:block;
     padding:.7rem;transition:transform .45s ease}
.cat:hover img{transform:scale(1.04)}
.cat:hover{background:#FFF}
.cat .rot-cat{padding:.85rem 1rem 1rem;display:grid;gap:.15rem;
     border-top:1px solid #DDE2E4}
.cat b{font-family:"Rajdhani",sans-serif;font-size:1.08rem;font-weight:700;
       text-transform:uppercase;letter-spacing:.04em;line-height:1.1}
.cat span{color:#5A6B76;font-size:.82rem;line-height:1.35}
/* O cartão de saída não tem foto: uma imagem ali competiria com as treze
   categorias em vez de encerrá-las. Ocupa duas colunas — é o que fecha a
   última fileira sem buraco, e de quebra dá ao texto a largura de que ele
   precisa para não quebrar em três linhas. Em telefone volta a uma. */
.cat-todos{background:var(--acao);color:#fff;align-content:center;
     grid-template-rows:auto;padding:1.4rem}
/* As duas colunas só a partir de 49rem, que é onde a grade abre a TERCEIRA
   coluna (3×15rem + 2 de gap não cabem antes disso). Em duas colunas o span
   sobraria uma célula vazia na penúltima fileira, que é o buraco que a conta
   de cima existe para evitar. */
@media (min-width:49rem){.cat-todos{grid-column:span 2}}
.cat-todos:hover{background:#0A5B78}
.cat-todos .rot-cat{border-top:0;padding:0}
.cat-todos span{color:#BEE2F0}

.duas{display:grid;gap:clamp(1.6rem,1rem + 3vw,3.5rem)}
@media (min-width:58rem){.duas{grid-template-columns:1.15fr .85fr}}
.tec{display:grid;gap:0;align-content:start}
.tec div{display:flex;justify-content:space-between;gap:1.2rem;
     padding:.72rem 0;border-bottom:1px solid var(--aresta);font-size:.95rem}
.tec dt{color:var(--bruma);margin:0}
.tec dd{margin:0;text-align:right}

.etapas{display:grid;gap:2px;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));
        counter-reset:et}
.et{background:var(--carvao);padding:1.5rem 1.35rem;display:grid;gap:.5rem;align-content:start}
.et::before{counter-increment:et;content:counter(et,decimal-leading-zero);
     font:700 .78rem/1 "Rajdhani",sans-serif;letter-spacing:.2em;color:var(--verde)}
.et p{color:var(--bruma);font-size:.92rem}

/* ── faixa de destaque ──────────────────────────────────────── */
.faixa{background:var(--tinta);padding:clamp(2.6rem,1.5rem + 4vw,4.5rem) 0}
.faixa q{display:block;font-family:"Rajdhani",sans-serif;font-weight:700;
     text-transform:uppercase;font-size:clamp(1.5rem,1rem + 2vw,2.5rem);
     line-height:1.02;quotes:none;max-width:24ch}
.faixa span{display:block;color:var(--bruma);margin-top:.9rem;max-width:52ch}

/* ── formulário ─────────────────────────────────────────────── */
.form{display:grid;gap:2px;max-width:36rem}
.form label{display:grid;gap:.3rem}
.form span{font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;color:var(--bruma)}
.form input,.form select,.form textarea{background:var(--carvao);border:1px solid var(--aresta);
     color:var(--giz);padding:.72rem .85rem;font:400 .96rem/1.4 "Saira",sans-serif;
     border-radius:0;width:100%}
.form input:focus,.form select:focus,.form textarea:focus{border-color:var(--azul);outline:none}
.form textarea{min-height:6.5rem;resize:vertical}
.form .acoes{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.9rem}
.nota{color:var(--bruma);font-size:.82rem;margin-top:.7rem}

/* ── rodapé ─────────────────────────────────────────────────── */
.rodape{background:var(--tinta);padding:clamp(2.6rem,1.5rem + 3vw,4rem) 0 2.5rem;
        margin-top:clamp(3rem,2rem + 3vw,5rem)}
.rodape .env{display:grid;gap:2rem}
@media (min-width:52rem){.rodape .env{grid-template-columns:repeat(3,1fr)}}
.rodape h3{font-size:.78rem;letter-spacing:.2em;color:var(--bruma);margin-bottom:.8rem}
.rodape ul{list-style:none;margin:0;padding:0;display:grid;gap:.4rem}
.rodape a{color:var(--giz);text-decoration:none;font-size:.92rem}
.rodape a:hover{color:var(--azul)}
.rodape p{color:var(--bruma);font-size:.88rem}
.legal{border-top:1px solid var(--aresta);margin-top:2.2rem;padding-top:1.4rem;
       color:var(--bruma);font-size:.8rem;display:flex;flex-wrap:wrap;gap:.5rem 1.8rem}

/* ── quem pediu menos movimento ───────────────────────────────
   A montagem larga a cena presa e mostra as oito etapas de uma vez.

   A explodida NÃO é forçada aberta aqui. Quando ela era comandada pela
   rolagem, abrir tudo era o único jeito de a informação existir sem
   movimento; com a barra, quem manda é a pessoa — forçar o desenho aberto
   deixaria o controle inerte, que é pior. O que sai é o movimento que a
   página faz sozinha: a abertura automática e o pulso da barra. */
@media (prefers-reduced-motion:reduce){
  .montagem:not(.tocada) .mesa-prox svg{animation:none}
  .mesa{scroll-behavior:auto}
  html{scroll-behavior:auto}
  .degrau{height:auto;padding:1rem 0}
  .palco{position:static;height:auto;padding:2rem 0}
  .cena{position:relative;inset:auto;height:60vh}
  .cena img{position:absolute;opacity:1}
  .ficha,.ficha.on{opacity:1;visibility:visible;transform:none;position:relative}
  .fichas{grid-auto-flow:row;gap:2px}
  .ficha{grid-area:auto}
  .camada,.conjunto{transition:none}
  .abrir::-webkit-slider-thumb,.abrir::-moz-range-thumb{animation:none}
  .cat img{transition:none}
}

/* ── quem somos ─────────────────────────────────────────────
   A página existe porque "Quem Somos" era uma âncora que jogava a pessoa no
   rodapé — o único item do menu que não levava a lugar nenhum de verdade.

   As duas metades do nome ganham as duas cores do lockup, que é o único lugar
   do site onde a identidade visual explica alguma coisa em vez de decorar. */
.marca-meia{font:700 clamp(1.6rem,1.2rem + 2vw,2.6rem)/1 "Rajdhani",sans-serif;
     letter-spacing:.06em;display:block}
