/* Revelar Luz — tokens da marca + reset mínimo.
   Fonte única de verdade das cores/tipos; a LP e o checkout herdam daqui. */

/* ===== OPTIMA (ajustes finais 2026-08-03, §1) =====
   O cliente pediu Optima em todo o site (títulos Bold, corpo Regular).
   ⚠️ Dos 4 TTFs disponíveis, OPTIMA.TTF e OPTIMA_B.TTF têm o cmap CORROMPIDO:
   ç/é/ã viram glifos cirílicos ("criaзго") — inutilizáveis em pt-BR. Apenas
   Medium e Itálico são íntegros (testado glifo a glifo em 2026-08-03).
   Arranjo até chegar a família licenciada completa: a MEDIUM é a única face
   normal, declarada só no peso 400 — pedidos de 500/600/700 (títulos, botões)
   caem nela e o navegador aplica NEGRITO SINTÉTICO, o que preserva os acentos.
   Quando os arquivos corretos chegarem: registrar Regular (100–450) e Bold
   (451–900) e apagar esta gambiarra documentada.
   Os TTFs são COMERCIAIS: gitignorados (repo público), sobem no deploy manual.
   Cormorant/Montserrat (fonts.css) ficam registradas mas sem uso — fonte só
   baixa quando algum seletor a referencia. E-mails seguem Georgia/Helvetica
   (webfont não funciona em e-mail). */
@font-face{font-family:"Optima";src:url("../font/optima/optima-medium.ttf") format("truetype");
  font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Optima";src:url("../font/optima/optima-italic.ttf") format("truetype");
  font-weight:400;font-style:italic;font-display:swap}

:root{
  --rc-bg:#1A1A1A; --rc-fg:#FFFFFF; --rc-muted:rgba(255,255,255,.72); --rc-accent:#B89A4E;
  --rc-line:rgba(255,255,255,.12); --rc-field:rgba(255,255,255,.045); --rc-radius:12px;
  --rc-ease:cubic-bezier(.22,.61,.36,1);
  /* Optima é humanista SEM serifa — o fallback dos dois tokens é sans, senão a
     falha da fonte trocaria a página inteira de personalidade. Os nomes dos
     tokens ficam (todo o CSS os referencia). */
  --rc-serif:"Optima","Segoe UI",system-ui,sans-serif;
  --rc-sans:"Optima","Segoe UI",system-ui,-apple-system,sans-serif;

  /* três tempos para o site inteiro andar no mesmo compasso */
  --t-fast:.15s; --t:.24s; --t-slow:.38s;

  /* LARGURA PADRÃO DO SITE — fonte única. Antes a LP usava 1160px e o checkout
     1120px, então "padrão do site" não existia de fato como valor. Mudar aqui
     move todos os containers juntos (.wrap, .rl-main, .rl-obg, barra fixa). */
  --rc-wrap:1160px;
}

*{box-sizing:border-box}
html,body{margin:0}
/* O atributo `hidden` vale `display:none` pelo navegador, mas QUALQUER `display`
   no nosso CSS o sobrepõe — foi assim que o aviso "aguardando pagamento"
   (display:flex) continuava visível depois de escondido por JS. Aqui ele passa a
   vencer sempre. */
[hidden]{display:none!important}
body{background:var(--rc-bg);color:var(--rc-fg);font-family:var(--rc-sans);-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto}

/* ===== utilitários de animação (usados pelo checkout) =====
   `.collapse` anima altura sem saber a altura do conteúdo, via grid 0fr→1fr.
   ATENÇÃO: são TRÊS camadas — .collapse > .clip > (conteúdo com padding).
   A camada .clip NÃO pode ter padding: com box-sizing:border-box um elemento
   nunca renderiza mais baixo que o próprio padding, e o "fechado" viraria um
   fantasma invisível empurrando o resto. */
.collapse{display:grid;grid-template-rows:0fr;opacity:0;
  transition:grid-template-rows var(--t-slow) var(--rc-ease),opacity var(--t-slow) var(--rc-ease)}
.collapse.is-open{grid-template-rows:1fr;opacity:1}
.collapse>.clip{overflow:hidden;min-height:0;padding:0;visibility:hidden;
  transition:visibility 0s linear var(--t-slow)}
.collapse.is-open>.clip{visibility:visible;transition-delay:0s}

@keyframes rcIn{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}

.rl-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;
    animation-iteration-count:1!important;scroll-behavior:auto!important}
  html{scroll-behavior:auto}
}
