/* =========================================================
   RAS DESIGN — Marcenaria & Decoração
   Identidade: brutalista-industrial, madeira quente + creme + tinta
   Tipografia: Anton (títulos) + Work Sans (texto) + Space Mono itálica (destaques/técnico)
   ========================================================= */

:root{
  --ink:        #1d1814;   /* tinta quase preta (do logo) */
  --ink-soft:   #2c2620;
  --cream:      #f3ecdf;   /* creme / osso */
  --cream-2:    #ece2d1;
  --paper:      #f7f1e6;   /* fundo principal */
  --caramel:    #a86b3c;   /* madeira / acento */
  --caramel-d:  #8c5630;
  --caramel-l:  #c89263;
  --sand:       #d9c8ac;
  --muted:      #6f655a;
  --line:       rgba(29,24,20,.14);
  --line-light: rgba(243,236,223,.18);

  /* ---- tokens de tema (claro por padrão; invertidos no [data-theme="dark"]) ---- */
  --text:       var(--ink);     /* texto principal nas seções claras */
  --surface:    var(--cream);   /* fundo de cards/elevações claras */
  --header-bg:  rgba(247,241,230,.86);
  color-scheme: light;

  --wa:         #1fa25b;
  --wa-d:       #128c4a;
  --wa-neon:    #25d366;   /* verde WhatsApp mais vivo p/ o glow neon */

  --maxw: 1200px;
  --gut: clamp(20px, 5vw, 64px);
  --radius: 6px;

  --mono:    "Special Elite", "Courier New", monospace;   /* carimbo/máquina de escrever envelhecida p/ destaques, citações e números */
  --sans:    "Oswald", system-ui, sans-serif;             /* condensada de placa/sinalização p/ texto corrido, menu e botões */
  --display: "Rubik Distressed", "Anton", "Impact", "Arial Narrow", sans-serif;   /* display texturizada/desgastada p/ títulos (item 1 do moodboard) */

  --ease: cubic-bezier(.22,.61,.36,1);
}

/* ---- TEMA ESCURO: redefine só os tokens de "página"; as seções escuras
   por design (.section.dark, footer, marquee, btn-primary) seguem usando
   --ink/--cream e permanecem escuras nos dois modos ---- */
[data-theme="dark"]{
  --paper:      #13100c;   /* fundo da página */
  --text:       #efe7d9;   /* texto principal */
  --surface:    #1f1812;   /* fundo de cards */
  --muted:      #a99a86;   /* texto secundário */
  --line:       rgba(243,236,223,.13);
  --cream-2:    #251d15;   /* parada clara do gradiente das mídias */
  --sand:       #34291e;   /* parada escura das mídias / brilho do hero */
  --header-bg:  rgba(19,16,12,.85);
  color-scheme: dark;
}

/* ---------- base ---------- */
*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  margin:0;
  font-family:var(--sans);
  font-weight:400;
  color:var(--text);
  background:var(--paper);
  transition:background .45s var(--ease), color .45s var(--ease);
  line-height:1.6;
  font-size:clamp(16px,1.05vw,17px);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }

h1,h2,h3,h4{
  font-family:var(--display);
  font-weight:400;
  line-height:1.18;   /* Rubik Distressed não é condensada — precisa de mais respiro vertical que a Anton */
  letter-spacing:.01em;
  text-transform:uppercase;   /* reforça a textura "carimbada" nos blocos de letra */
  margin:0;
  position:relative;   /* referência p/ o grão (::after) */
}
h1 em,h2 em,h3 em{ font-style:normal; color:var(--caramel-d); }   /* Alfa Slab One não tem itálico */

/* grão sutil "jateado" atrás de títulos e labels — usa currentColor mascarado pelo ruído,
   então se adapta sozinho ao contraste (escuro em seção clara, claro em seção escura) sem
   precisar de mix-blend-mode (que teve efeitos imprevisíveis com a borda animada dos botões) */
h1::after,h2::after,h3::after,h4::after,.eyebrow::after{
  content:"";
  position:absolute; inset:-10px;
  background:currentColor;
  opacity:.13;
  -webkit-mask:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>") 0 0/140px 140px repeat,
    radial-gradient(ellipse at center, #fff 35%, transparent 72%);
  -webkit-mask-composite:source-in;
          mask:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>") 0 0/140px 140px repeat,
    radial-gradient(ellipse at center, #fff 35%, transparent 72%);
          mask-composite:intersect;   /* funde o ruído com um degradê radial p/ a borda não ficar "caixa" */
  pointer-events:none;
}

.container{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--gut); }
.center{ text-align:center; }
.hide-mobile{ display:inline; }

.eyebrow{
  display:inline-block;
  font-family:var(--sans);
  font-size:.74rem;
  font-weight:600;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--caramel-d);
  margin-bottom:1.1rem;
  position:relative;   /* referência p/ o grão (::after) */
}
.eyebrow.light{ color:var(--caramel-l); }
.lead{ font-size:1.18rem; color:var(--muted); max-width:60ch; }

/* ---------- buttons ---------- */
.btn{
  --pad-y:.72em; --pad-x:1.3em;
  display:inline-flex; align-items:center; gap:.55em;
  font-family:var(--sans); font-weight:600; font-size:.93rem;
  letter-spacing:.01em;
  padding:var(--pad-y) var(--pad-x);
  border-radius:100px;
  border:1.5px solid transparent;
  cursor:pointer;
  transition:transform .35s var(--ease), background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease);
  will-change:transform;
}
.btn:active{ transform:translateY(1px) scale(.99); }
.btn-primary:active{ transform:none; background:var(--caramel-d); } /* sem transform/filter: não quebra a borda animada */
.btn-lg{ --pad-y:.95em; --pad-x:1.7em; font-size:1rem; }

.btn-primary{
  background:var(--ink); color:var(--cream);
  position:relative;   /* referência p/ ::before e ::after; sem z-index/transform/opacity (quebraria a borda) */
  isolation:isolate;    /* cria stacking context próprio p/ os pseudo-elementos (z-index:-1) ficarem
                            SEMPRE atrás só do fundo do botão — sem isso eles escapavam e ficavam
                            atrás do fundo da seção, fazendo a borda girada sumir/reaparecer */
  will-change:auto;    /* anula o will-change:transform herdado de .btn — ele também cria stacking context
                           e prendia a borda animada, fazendo o degradê preencher o botão inteiro */
}
.btn-primary:hover{ background:var(--caramel-d); }

/* Borda animada (conic-gradient girando + glow), nas cores da marca */
.btn-primary::before,
.btn-primary::after{
  content:""; position:absolute; inset:-2px; z-index:-1;
  border-radius:inherit;
  background-image:conic-gradient(
    from var(--angle),
    var(--caramel-d),
    var(--caramel-l),
    #ecd6b0,
    var(--caramel),
    var(--caramel-d)              /* repete a 1ª cor → emenda suave */
  );
  /* própria camada de composição: evita o navegador "soltar" um frame (pisca)
     ao repintar o conic-gradient + blur a cada tick da animação */
  transform:translateZ(0);
  backface-visibility:hidden;
  animation:gira-borda 5s linear infinite;
}
/* ::before vira o glow: cópia borrada e mais clara (mesmos parâmetros dos cards) */
.btn-primary::before{
  filter:blur(1.2rem);
  opacity:.4;
  transition:opacity .45s var(--ease);
}
/* ::after vira um ANEL de verdade (não um retângulo cheio): a máscara "vaza" só a
   faixa entre o padding-box e o content-box, então o degradê girando sempre aparece
   como contorno, mesmo com o botão isolado (isolation:isolate) e em seções escuras —
   nos cards isso não era preciso pq a própria seção deles tem fundo transparente */
.btn-primary::after{
  padding:2px;
  -webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
          mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;
          mask-composite:exclude;
}
.btn-primary:hover::before{ opacity:.75; }                       /* brilho mais forte no hover, igual aos cards */
.btn-primary:hover::before,
.btn-primary:hover::after{ animation-duration:2.6s; }             /* gira mais rápido no hover */

.btn-ghost{ background:transparent; color:var(--text); border-color:var(--line); }
.btn-ghost:hover{ border-color:var(--text); transform:translateY(-2px); }

/* ---- Botão WhatsApp com efeito NEON (brilho + reflexo + hover suave) ---- */
.btn-wa{
  position:relative;                 /* referência p/ ::before e ::after; sem z-index = sem stacking context */
  background:var(--wa); color:#fff;
  border-color:var(--wa-neon);
  text-shadow:
    0 0 .35em hsl(0 0% 100% / .45),   /* núcleo branco do texto */
    0 0 .9em var(--wa-neon);          /* halo verde */
  box-shadow:
    0 0 1.1em .02em rgba(37,211,102,.5),
    inset 0 0 .7em -.1em hsl(0 0% 100% / .35);
}
/* reflexo luminoso no "chão" */
.btn-wa::before{
  content:""; position:absolute; left:0; top:118%; width:100%; height:100%;
  border-radius:inherit; background:var(--wa-neon);
  transform:perspective(1em) rotateX(40deg) scale(1,.4);
  filter:blur(1.05em); opacity:.32;
  pointer-events:none; transition:opacity .3s linear;
}
/* camada de hover: acende via opacity (roda na GPU, sem janks) */
.btn-wa::after{
  content:""; position:absolute; inset:0; z-index:-1;
  border-radius:inherit; background:var(--wa);
  box-shadow:
    0 0 2.2em .45em rgba(37,211,102,.8),
    inset 0 0 1em .1em hsl(0 0% 100% / .4);
  opacity:0; transition:opacity .12s linear;
}
.btn-wa:hover, .btn-wa:focus-visible{
  background:var(--wa); color:#fff;
  text-shadow:0 0 .4em hsl(0 0% 100% / .6), 0 0 1.15em var(--wa-neon);
}
.btn-wa:hover::after, .btn-wa:focus-visible::after{ opacity:1; }
.btn-wa:hover::before, .btn-wa:focus-visible::before{ opacity:.7; }

/* No menu (header e dropdown mobile) sem o reflexo no chão, que vazava para baixo */
.nav-cta::before,
.mobile-menu .btn-wa::before{ display:none; }

/* ícone WhatsApp (CSS mask, sem imagem externa) */
.wa-ico{
  width:1.05em; height:1.05em; display:inline-block;
  background:currentColor;
  -webkit-mask:var(--wa-svg) center/contain no-repeat;
          mask:var(--wa-svg) center/contain no-repeat;
}
.wa-ico.lg{ width:1.7em; height:1.7em; }
:root{ --wa-svg:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M.057 24l1.687-6.163a11.867 11.867 0 0 1-1.587-5.945C.16 5.335 5.495 0 12.05 0a11.817 11.817 0 0 1 8.413 3.488 11.824 11.824 0 0 1 3.48 8.414c-.003 6.557-5.338 11.892-11.893 11.892a11.9 11.9 0 0 1-5.688-1.448L.057 24zm6.597-3.807c1.676.995 3.276 1.591 5.392 1.592 5.448 0 9.886-4.434 9.889-9.885.002-5.462-4.415-9.89-9.881-9.892-5.452 0-9.887 4.434-9.889 9.884-.001 2.225.651 3.891 1.746 5.634l-.999 3.648 3.742-.981zm11.387-5.464c-.074-.124-.272-.198-.57-.347-.297-.149-1.758-.868-2.031-.967-.272-.099-.47-.149-.669.149-.198.297-.768.967-.941 1.165-.173.198-.347.223-.644.074-.297-.149-1.255-.462-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.521.151-.172.2-.296.3-.495.099-.198.05-.372-.025-.521-.075-.148-.669-1.611-.916-2.206-.242-.579-.487-.501-.669-.51l-.57-.01c-.198 0-.52.074-.792.372s-1.04 1.016-1.04 2.479 1.065 2.876 1.213 3.074c.149.198 2.095 3.2 5.076 4.487.709.306 1.263.489 1.694.626.712.226 1.36.194 1.872.118.571-.085 1.758-.719 2.006-1.413.248-.695.248-1.29.173-1.414z'/></svg>"); }

/* =========================================================
   HEADER / NAV
   ========================================================= */
.site-header{
  position:fixed; inset:0 0 auto 0; z-index:60;
  transition:background .4s var(--ease), box-shadow .4s var(--ease), border-color .4s var(--ease);
  border-bottom:1px solid transparent;
}
.site-header.scrolled{
  background:var(--header-bg);
  backdrop-filter:blur(14px);
  border-bottom-color:var(--line);
  box-shadow:0 8px 30px -22px rgba(29,24,20,.5);
}
/* páginas cujo topo já é uma seção escura (sem foto de fundo no hero) não precisam
   do header transparente — sem isso os ícones (cor --text, escura) ficavam invisíveis
   sobre o fundo quase preto até o usuário rolar a página */
.solid-header .site-header{
  background:var(--header-bg);
  backdrop-filter:blur(14px);
  border-bottom-color:var(--line);
}
.nav-inner{ display:flex; align-items:center; gap:1.5rem; height:74px; }
.brand{ display:flex; align-items:center; gap:.7rem; margin-right:auto; }
.brand-badge-img{
  width:46px; height:46px; border-radius:50%;
  object-fit:cover; object-position:center; transform:scale(1.06);
  display:block; flex:0 0 auto;
}
.brand-badge-img.lg{ width:68px; height:68px; }
.brand-word{ font-family:var(--mono); font-size:1.3rem; font-weight:400; letter-spacing:-.01em; }   /* Special Elite só tem peso 400 — evita negrito sintético */
.brand-word.lg{ font-size:1.9rem; }
.footer-brand{ display:flex; flex-direction:column; align-items:flex-start; }
.footer-brand .brand-badge-img.lg{ margin-bottom:.7rem; }

.nav-links{ display:flex; gap:2rem; }
.nav-links a{ font-size:.92rem; font-weight:500; color:var(--text); position:relative; padding:.2em 0; }
.nav-links a::after{
  content:""; position:absolute; left:0; bottom:-2px; height:1.5px; width:0; background:var(--caramel-d);
  transition:width .35s var(--ease);
}
.nav-links a:hover::after{ width:100%; }
.nav-cta{ padding:.55em 1.1em; }

/* ---- Botão de tema (claro/escuro) ---- */
.theme-toggle{
  width:40px; height:40px; flex:0 0 auto;
  display:inline-flex; align-items:center; justify-content:center;
  border:1.5px solid var(--line); border-radius:50%;
  background:transparent; color:var(--text); cursor:pointer;
  transition:border-color .3s var(--ease), color .3s var(--ease),
             background .3s var(--ease), transform .4s var(--ease);
}
.theme-toggle:hover{ border-color:var(--caramel); color:var(--caramel-d); transform:rotate(-18deg); }
.theme-toggle:focus-visible{ outline:2px solid var(--caramel); outline-offset:2px; }
.theme-toggle svg{ width:18px; height:18px; display:block; }
.theme-toggle .ti-sun{ display:none; }
[data-theme="dark"] .theme-toggle .ti-sun{ display:block; }
[data-theme="dark"] .theme-toggle .ti-moon{ display:none; }

.nav-toggle{ display:none; flex-direction:column; gap:5px; background:none; border:0; cursor:pointer; padding:8px; }
.nav-toggle span{ width:24px; height:2px; background:var(--text); transition:transform .3s var(--ease), opacity .3s; }
.nav-toggle[aria-expanded="true"] span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.nav-toggle[aria-expanded="true"] span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

.mobile-menu{
  display:none; flex-direction:column; gap:.3rem;
  background:var(--header-bg); backdrop-filter:blur(14px) saturate(1.2);
  padding:1rem var(--gut) 1.6rem; border-bottom:1px solid var(--line);
}
.mobile-menu a{ padding:.85rem 0; font-size:1.05rem; font-weight:500; border-bottom:1px solid var(--line); }
.mobile-menu .btn{ margin-top:.8rem; justify-content:center; border:0; }
.mobile-menu.open{ display:flex; }

/* =========================================================
   HERO
   ========================================================= */
.hero{
  position:relative;
  min-height:100vh;
  display:flex;
  align-items:center;
  padding:calc(74px + clamp(20px,3vw,40px)) 0 clamp(48px,7vw,88px);
  overflow:hidden;
}
.hero-bg{
  position:absolute; top:-18%; left:0; right:0; bottom:-18%; z-index:0;
  background-size:cover; background-position:center; background-repeat:no-repeat;
  will-change:transform;
}
.hero-bg::after{
  content:""; position:absolute; inset:0;
  background:
    radial-gradient(70% 60% at 50% 42%, rgba(12,9,7,.72), rgba(12,9,7,.5) 60%, transparent 85%),
    linear-gradient(180deg, rgba(12,9,7,.6), rgba(12,9,7,.42) 40%, rgba(12,9,7,.62) 78%, rgba(12,9,7,.8));
}
.hero-grain{ position:absolute; inset:0; opacity:.5; pointer-events:none; z-index:1;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='.05'/></svg>");
  mix-blend-mode:multiply;
}
.hero-grid{ display:flex; justify-content:center; position:relative; z-index:2; }
.hero-copy{
  max-width:min(880px,92vw); margin:0 auto; text-align:center;
}
.hero-copy .eyebrow{ color:var(--caramel-l); text-shadow:0 2px 18px rgba(0,0,0,.55); }
.hero-title{
  font-size:clamp(2.5rem,6.2vw,5rem);
  font-weight:380;
  margin:.2em 0 .55em;
  color:#fff;
  text-shadow:0 4px 28px rgba(0,0,0,.65), 0 1px 3px rgba(0,0,0,.5);
}
.hero-title em{ color:var(--caramel-l); }
.hero-sub{ font-size:1.18rem; color:rgba(255,255,255,.94); max-width:46ch; margin:0 auto 2rem; text-shadow:0 2px 16px rgba(0,0,0,.6); }
.hero-sub strong{ color:#fff; font-weight:700; }
.hero-actions{ display:flex; flex-wrap:wrap; gap:.9rem; margin-bottom:2.4rem; justify-content:center; }
.hero .btn-ghost{
  background:rgba(20,16,12,.35); backdrop-filter:blur(6px);
  color:#fff; border-color:rgba(255,255,255,.55);
}
.hero .btn-ghost:hover{ background:#fff; color:var(--ink); border-color:#fff; }
.hero-trust{
  display:flex; flex-wrap:wrap; justify-content:center; gap:1.6rem; list-style:none; margin:0; padding-top:1.5rem;
  border-top:1px solid rgba(255,255,255,.3);
}
.hero-trust li{ font-size:.9rem; color:rgba(255,255,255,.88); text-shadow:0 2px 10px rgba(0,0,0,.55); }
.hero-trust strong{ display:block; font-family:var(--mono); font-style:normal; font-size:1.5rem; color:#fff; line-height:1; text-shadow:0 2px 14px rgba(0,0,0,.6); }

.scroll-cue{
  position:absolute; left:50%; bottom:18px; transform:translateX(-50%); z-index:2;
  display:flex; flex-direction:column; align-items:center; gap:.5rem;
  font-size:.68rem; letter-spacing:.2em; text-transform:uppercase; color:rgba(255,255,255,.75);
  text-shadow:0 2px 10px rgba(0,0,0,.6);
}
.scroll-cue span{ width:1px; height:34px; background:linear-gradient(var(--caramel),transparent); animation:cue 2s var(--ease) infinite; }
@keyframes cue{ 0%{transform:scaleY(0);transform-origin:top} 45%{transform:scaleY(1);transform-origin:top} 55%{transform:scaleY(1);transform-origin:bottom} 100%{transform:scaleY(0);transform-origin:bottom} }

/* =========================================================
   MEDIA PLACEHOLDERS (locais para upload)
   ========================================================= */
.media{
  position:relative;
  border-radius:var(--radius);
  background:
    linear-gradient(135deg, var(--cream-2), var(--sand));
  border:1.5px dashed rgba(168,107,60,.5);
  overflow:hidden;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; gap:.45rem; padding:1.5rem;
  color:var(--caramel-d);
}
.media::before{
  content:""; position:absolute; inset:0; opacity:.4; pointer-events:none;
  background-image:repeating-linear-gradient(135deg, rgba(168,107,60,.07) 0 14px, transparent 14px 28px);
}
.media-tag{
  font-family:var(--mono); font-style:normal; font-size:1.15rem; color:var(--text); z-index:1;
}
.media-hint{ font-size:.78rem; letter-spacing:.04em; color:var(--muted); max-width:30ch; z-index:1; }
.media::after{
  content:"📷 imagem"; position:absolute; top:12px; left:12px;
  font-family:var(--sans); font-size:.64rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--caramel-d); background:rgba(247,241,230,.7); padding:.25em .6em; border-radius:100px; z-index:1;
}

/* variante com foto real: some com a moldura tracejada/textura de rascunho e o
   selo "imagem" — a foto preenche o card e a legenda vira uma etiqueta no rodapé */
.media.has-photo{
  border-style:solid; border-color:transparent; padding:0;
  justify-content:flex-end; align-items:flex-start; gap:0;
}
.media.has-photo::before,
.media.has-photo::after{ content:none; }
.media.has-photo img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0;
}
.media.has-photo .media-tag{
  position:relative; z-index:1;
  margin:0 1rem 1rem;
  color:#fff; font-size:.95rem;
  padding:.45em .9em; border-radius:100px;
  background:rgba(20,16,12,.55); backdrop-filter:blur(3px);
}
.media.has-photo .media-hint{ display:none; }
.media.on-dark{ background:linear-gradient(135deg,#2c2620,#37302a); border-color:rgba(200,146,99,.45); color:var(--caramel-l); }
.media.on-dark .media-tag{ color:var(--cream); }
.media.on-dark .media-hint{ color:rgba(243,236,223,.6); }
.media.on-dark::after{ background:rgba(29,24,20,.6); color:var(--caramel-l); }

.media-hero{ aspect-ratio:4/3.4; box-shadow:0 40px 80px -40px rgba(29,24,20,.55); }
.media-tall{ aspect-ratio:4/5; }
.media-wide{ aspect-ratio:16/11; }

/* =========================================================
   MARQUEE
   ========================================================= */
.marquee{ background:var(--ink); color:var(--cream); padding:.95rem 0; overflow:hidden; }
.marquee-track{ display:flex; gap:1.4rem; white-space:nowrap; width:max-content; animation:scrollx 26s linear infinite; }
.marquee-track span{ font-family:var(--mono); font-style:normal; font-size:1.3rem; }
.marquee-track .dot{ color:var(--caramel-l); }
@keyframes scrollx{ to{ transform:translateX(-50%); } }

/* =========================================================
   SECTIONS
   ========================================================= */
.section{ padding:clamp(44px,6vw,80px) 0; position:relative; }
.section.dark{ background:var(--ink); color:var(--cream); }
.section.dark h1,.section.dark h2,.section.dark h3{ color:var(--cream); }
.section.dark h1 em,.section.dark h2 em{ color:var(--caramel-l); }
.section.dark .lead{ color:rgba(243,236,223,.62); }

/* sem max-width em ch aqui: esse valor era calibrado pro corpo de texto (Oswald, condensada)
   e deixava o h2 — que usa a Rubik Distressed, bem mais larga — espremido em várias linhas
   com um vão enorme ao lado; o .lead já tem seu próprio max-width:60ch p/ manter a leitura boa */
.section-head{ max-width:100%; margin-bottom:clamp(2.5rem,5vw,4rem); }
.section-head.center{ margin-inline:auto; text-align:center; }
.section-head h2{ font-size:clamp(2rem,4.4vw,3.4rem); }
.section-head .lead{ margin-top:1.2rem; }

.two-col{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px,5vw,72px); }
.two-col.align-center{ align-items:center; }
.section-head + .two-col{ margin-top:0; }

/* PROBLEM */
.pain-list{ list-style:none; margin:1.5rem 0; padding:0; display:flex; flex-direction:column; gap:.7rem; }
.pain-list li{
  font-family:var(--mono); font-style:normal; font-size:1.25rem; color:var(--text);
  padding-left:1.6rem; position:relative;
}
.pain-list li::before{ content:""; position:absolute; left:0; top:.65em; width:.7rem; height:1.5px; background:var(--caramel); }

/* SOLUTION steps */
.solution-block{ margin-top:1rem; }
.solution-steps{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:2rem; }
.solution-steps li{ display:flex; gap:1.3rem; align-items:flex-start; }
.step-no{
  font-family:var(--mono); font-style:normal; font-size:1.5rem; color:var(--caramel-l);
  line-height:1; padding-top:.15rem; min-width:2.4rem;
  border-right:1px solid var(--line-light); padding-right:1.1rem;
}
.solution-steps h3{ font-size:1.4rem; margin-bottom:.35rem; }
.solution-steps p{ color:rgba(243,236,223,.66); margin:0; max-width:42ch; }

/* PROCESS cards */
.process-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.6rem; }

/* Registra --angle para que o ângulo do gradiente seja ANIMÁVEL */
@property --angle{
  syntax:"<angle>";
  initial-value:0deg;
  inherits:false;
}

.process-card{
  background:var(--surface); border-radius:var(--radius);
  padding:2.2rem 1.8rem; position:relative; /* sem transform/overflow/opacity: não quebra a borda */
  transition:box-shadow .45s var(--ease);
}
/* Borda colorida girando + brilho (glow), em tons de madeira/caramelo */
.process-card::before,
.process-card::after{
  content:""; position:absolute; inset:-2px; z-index:-1;
  border-radius:inherit;
  background-image:conic-gradient(
    from var(--angle),
    var(--caramel-d),
    var(--caramel-l),
    #ecd6b0,
    var(--caramel),
    var(--caramel-d)            /* repete a 1ª cor → emenda suave */
  );
  transform:translateZ(0);
  backface-visibility:hidden;
  animation:gira-borda 5s linear infinite;
}
/* ::before vira o glow: cópia borrada e mais clara */
.process-card::before{
  filter:blur(1.2rem);
  opacity:.4;
  transition:opacity .45s var(--ease);
}
.process-card:hover{ box-shadow:0 26px 60px -34px rgba(140,86,48,.55); }
.process-card:hover::before{ opacity:.75; }                    /* brilho mais forte ao passar o mouse */
.process-card:hover::before,
.process-card:hover::after{ animation-duration:2.6s; }          /* gira mais rápido no hover */

@keyframes gira-borda{ to{ --angle:360deg; } }
.pc-no{ font-family:var(--mono); font-style:normal; font-size:2.6rem; color:var(--caramel); display:block; line-height:1; margin-bottom:1.2rem; }
.process-card h3{ font-size:1.45rem; margin-bottom:.5rem; }
.process-card p{ color:var(--muted); margin:0; }

/* FEATURES */
.feature{ padding:clamp(2rem,4vw,3.5rem) 0; }
.feature + .feature{ border-top:1px solid var(--line); }
.feature.reverse .col-media{ order:2; }
.feature.reverse .col-copy{ order:1; }
.feature-kicker{
  display:inline-block; font-size:.75rem; letter-spacing:.18em; text-transform:uppercase;
  color:var(--caramel-d); font-weight:600; margin-bottom:.9rem;
}
.feature h3{ font-size:clamp(1.7rem,3.2vw,2.6rem); margin-bottom:1rem; }
.feature p{ color:var(--muted); max-width:48ch; }
@media(min-width:861px){
  .feature.reverse .col-media{ order:1; }
  .feature.reverse .col-copy{ order:2; }
}

/* GALLERY */
.gallery-grid{
  display:grid; gap:1rem;
  grid-template-columns:repeat(6,1fr);
  grid-auto-rows:170px;
}
.gal{ width:100%; height:100%; }
.gal-a{ grid-column:span 3; grid-row:span 2; }
.gal-b{ grid-column:span 3; grid-row:span 1; }
.gal-c{ grid-column:span 3; grid-row:span 1; }
.gal-d{ grid-column:span 3; grid-row:span 1; }   /* sem o slot "Render 3D" no meio, ocupa metade da linha */
.gal-f{ grid-column:span 3; grid-row:span 1; }
.gallery-actions{ margin-top:1.8rem; }
.gallery-actions .btn-ghost{ border-color:var(--line-light); color:var(--cream); }
.gallery-actions .btn-ghost:hover{ border-color:var(--caramel-l); color:var(--caramel-l); }
.gallery-note{ text-align:center; color:rgba(243,236,223,.6); max-width:60ch; margin:2.5rem auto 2rem; font-style:normal; font-family:var(--mono); font-size:1.15rem; }

/* CTA */
.section-cta{ background:linear-gradient(180deg, var(--surface), var(--paper)); }
.cta-fine{ font-size:.86rem; color:var(--muted); margin-top:1.1rem; }
.section-cta h2{ font-size:clamp(2rem,4.6vw,3.6rem); }
.section-cta .col-copy .btn{ margin-top:1.6rem; }

/* FAQ */
.faq-list{ max-width:820px; }
.faq-item{ border-bottom:1px solid var(--line); }
.faq-item summary{
  list-style:none; cursor:pointer; padding:1.4rem 0; padding-right:2.5rem;
  font-family:var(--mono); font-size:clamp(1.15rem,2vw,1.5rem); position:relative;
  transition:color .3s var(--ease);
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::after{
  content:"+"; position:absolute; right:0; top:50%; transform:translateY(-50%);
  font-family:var(--sans); font-weight:300; font-size:1.7rem; color:var(--caramel-d);
  transition:transform .35s var(--ease);
}
.faq-item[open] summary{ color:var(--caramel-d); }
.faq-item[open] summary::after{ transform:translateY(-50%) rotate(45deg); }
.faq-body{ overflow:hidden; }
.faq-body p{ margin:0 0 1.4rem; color:var(--muted); max-width:62ch; }

/* =========================================================
   FOOTER
   ========================================================= */
.site-footer{ background:var(--ink); color:var(--cream); padding:clamp(48px,7vw,90px) 0 2rem; }
.footer-grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:2.5rem; padding-bottom:3rem; border-bottom:1px solid var(--line-light); }
.footer-tag{ color:rgba(243,236,223,.6); margin:.8rem 0 1.6rem; }
.footer-col h4{ font-family:var(--sans); font-size:.78rem; letter-spacing:.16em; text-transform:uppercase; color:var(--caramel-l); margin-bottom:1rem; }
.footer-col a{ display:block; padding:.35rem 0; color:rgba(243,236,223,.78); transition:color .3s; }
.footer-col a:hover{ color:var(--cream); }
.footer-col p{ color:rgba(243,236,223,.7); margin:.2rem 0; }
.footer-col .muted{ color:rgba(243,236,223,.45); font-size:.85rem; margin-top:1rem; }
.footer-bottom{ display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap; padding-top:1.6rem; font-size:.82rem; color:rgba(243,236,223,.5); }

/* =========================================================
   WHATSAPP FLOAT
   ========================================================= */
.wa-float{
  position:fixed; right:20px; bottom:20px; z-index:70;
  display:inline-flex; align-items:center; gap:.6rem;
  background:var(--wa); color:#fff; padding:.85rem 1.1rem; border-radius:100px;
  box-shadow:
    0 0 1.4em .04em rgba(37,211,102,.6),
    0 12px 30px -12px rgba(18,140,74,.7);
  transition:transform .35s var(--ease), background .3s;
}
/* glow neon que "respira" (pulsa a opacidade de uma camada pronta, não o box-shadow) */
.wa-float::before{
  content:""; position:absolute; inset:0; z-index:-1; border-radius:inherit;
  box-shadow:0 0 2em .25em rgba(37,211,102,.7);
  opacity:.45; pointer-events:none;
  animation:waBreathe 2.8s ease-in-out infinite;
}
/* camada de hover acesa via opacity */
.wa-float::after{
  content:""; position:absolute; inset:0; z-index:-1; border-radius:inherit;
  background:var(--wa);
  box-shadow:
    0 0 2.8em .6em rgba(37,211,102,.85),
    inset 0 0 1.2em .1em hsl(0 0% 100% / .45);
  opacity:0; transition:opacity .12s linear; pointer-events:none;
}
.wa-float:hover, .wa-float:focus-visible{ background:var(--wa); transform:translateY(-3px); }
.wa-float:hover::after, .wa-float:focus-visible::after{ opacity:1; }
.wa-float-label{ font-weight:600; font-size:.92rem; text-shadow:0 0 .5em hsl(0 0% 100% / .4), 0 0 1em var(--wa-neon); }
@keyframes waBreathe{ 0%,100%{ opacity:.35; } 50%{ opacity:.8; } }

/* =========================================================
   REVEAL ANIMATION
   ========================================================= */
.reveal{ opacity:0; transform:translateY(26px); transition:opacity .9s var(--ease), transform .9s var(--ease); }
.reveal[data-delay="1"]{ transition-delay:.12s; }
.reveal[data-delay="2"]{ transition-delay:.24s; }
.reveal.in{ opacity:1; transform:none; }

/* =========================================================
   GALERIA COMPLETA (galeria.html)
   ========================================================= */
.gallery-hero{ padding-top:calc(74px + clamp(20px,3vw,40px)); }
.gallery-hero .lead{ margin-top:1rem; }
.gallery-crumb{
  display:inline-flex; align-items:center; gap:.4em;
  font-family:var(--sans); font-size:.82rem; font-weight:500; color:var(--muted);
  margin-bottom:1.4rem; transition:color .25s var(--ease);
}
.gallery-crumb:hover{ color:var(--caramel-d); }
.section.dark .gallery-crumb{ color:rgba(243,236,223,.6); }
.section.dark .gallery-crumb:hover{ color:var(--caramel-l); }

.filters-bar{
  display:flex; flex-wrap:wrap; gap:.6rem;
  margin:2.2rem 0 2.6rem;
}
.filter-chip{
  font-family:var(--sans); font-weight:600; font-size:.78rem;
  letter-spacing:.08em; text-transform:uppercase;
  padding:.6em 1.2em; border-radius:100px;
  border:1.5px solid var(--line); background:transparent; color:inherit;
  cursor:pointer;
  transition:background .25s var(--ease), color .25s var(--ease),
             border-color .25s var(--ease), transform .25s var(--ease);
}
.filter-chip:hover{ border-color:var(--caramel); color:var(--caramel-d); transform:translateY(-1px); }
.filter-chip.active{ background:var(--ink); color:var(--cream); border-color:var(--ink); }
/* em seção escura o chip ativo precisa de outra cor — "ink" sobre "ink" ficaria invisível */
.section.dark .filter-chip{ border-color:var(--line-light); }
.section.dark .filter-chip:hover{ border-color:var(--caramel-l); color:var(--caramel-l); }
.section.dark .filter-chip.active{ background:var(--caramel-l); color:var(--ink); border-color:var(--caramel-l); }

.gallery-full-grid{
  display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr));
  gap:1.2rem;
}
.gallery-full-grid .media{ aspect-ratio:4/3.1; }
.gallery-full-grid .media.is-hidden{ display:none; }

.gallery-empty{
  display:none; text-align:center; padding:3rem 0; color:var(--muted);
  font-family:var(--mono); font-size:1.05rem;
}
.section.dark .gallery-empty{ color:rgba(243,236,223,.6); }
.gallery-empty.show{ display:block; }

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media(max-width:980px){
  .nav-links{ display:none; }
  .nav-cta{ display:none; }
  .nav-toggle{ display:flex; }
  .footer-grid{ grid-template-columns:1fr 1fr; }
}
@media(max-width:860px){
  .hide-mobile{ display:none; }
  .two-col{ grid-template-columns:1fr; }
  .feature.reverse .col-media{ order:0; }
  .process-grid{ grid-template-columns:1fr; }
  .gallery-grid{ grid-template-columns:repeat(2,1fr); grid-auto-rows:150px; }
  .gal-a,.gal-b,.gal-c,.gal-d,.gal-f{ grid-column:span 1; grid-row:span 1; }
  .gal-a{ grid-column:span 2; grid-row:span 2; }
  .wa-float-label{ display:none; }
  /* aspect-ratio fixo deixava os cards baixos demais p/ caber tag + hint sem
     colidir com o selo "IMAGEM" (absolute, canto superior) — usa altura mínima
     e mais respiro no topo em vez de proporção fixa */
  .gallery-full-grid{ grid-template-columns:repeat(auto-fill,minmax(46%,1fr)); }
  .gallery-full-grid .media{ aspect-ratio:auto; min-height:190px; padding-top:2.6rem; }
}
@media(max-width:560px){
  .footer-grid{ grid-template-columns:1fr; }
  .hero-trust{ gap:1.1rem; }
}

@media(prefers-reduced-motion:reduce){
  *{ animation:none !important; }
  .reveal{ opacity:1; transform:none; transition:none; }
  html{ scroll-behavior:auto; }
}
