/* Fluxo Barber — site institucional (fluxobarber.com)
   Estático de propósito: a landing vive na RAIZ do domínio, enquanto os apps
   Angular vivem em <slug>.fluxobarber.com. São hosts diferentes, então não há
   conflito de rota — e evitar um framework aqui mantém o LCP baixo. */

/* ─────────────── Tokens ─────────────── */

:root {
  --bg:              #0D0D0C;
  --superficie:      #191815;
  --superficie-2:    #11110F;
  --ouro:            #D8B45B;
  --ouro-claro:      #EBD9A4;
  --texto:           #F5F1E8;
  --texto-2:         #AAA69D;
  --borda:           #302D27;
  --sucesso:         #4DAA78;
  --erro:            #D9705E;

  --fonte-titulo: 'Playfair Display', Georgia, serif;
  --fonte-texto:  'Inter', -apple-system, BlinkMacSystemFont, sans-serif;

  --raio:    12px;
  --raio-sm: 10px;
  --raio-lg: 14px;

  --sombra:    0 12px 32px rgba(0,0,0,.36);
  --sombra-lg: 0 26px 64px rgba(0,0,0,.52);

  --px: 20px;
  --largura: 1160px;
  --transicao: .18s ease;
}

@media (min-width: 768px) { :root { --px: 32px; } }

/* ─────────────── Base ─────────────── */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; scroll-padding-top: 84px; }

body {
  background: var(--bg);
  color: var(--texto);
  font-family: var(--fonte-texto);
  font-size: 16px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
body.menu-aberto { overflow: hidden; }

a { color: inherit; text-decoration: none; }
img, svg { display: block; max-width: 100%; }
button { font: inherit; color: inherit; background: none; border: none; cursor: pointer; }
input { font: inherit; }

/* Foco visível em tudo que é interativo — requisito de acessibilidade */
:focus-visible {
  outline: 2px solid var(--ouro);
  outline-offset: 3px;
  border-radius: 4px;
}

.container { width: 100%; max-width: var(--largura); margin: 0 auto; padding: 0 var(--px); }

.pular-para-conteudo {
  position: absolute; left: -9999px; top: 0; z-index: 200;
  background: var(--ouro); color: #1a1508; padding: 12px 20px;
  border-radius: 0 0 var(--raio-sm) 0; font-weight: 600;
}
.pular-para-conteudo:focus { left: 0; }

/* ─────────────── Tipografia ─────────────── */

.titulo { font-family: var(--fonte-titulo); font-weight: 700; line-height: 1.18; letter-spacing: -.4px; }

/* Salto grande de propósito: o display precisa dominar, não conversar de
   igual para igual com o corpo do texto. Tracking negativo aumenta com o
   tamanho, como em letreiro de vitrine. */
h1.titulo { font-size: clamp(2.05rem, 5.6vw, 3.9rem); letter-spacing: -1.2px; }
h2.titulo { font-size: clamp(1.55rem, 3.4vw, 2.3rem); letter-spacing: -.7px; }
h3         { font-size: 1.05rem; font-weight: 600; line-height: 1.4; letter-spacing: -.1px; }

.ouro {
  background: linear-gradient(135deg, var(--ouro-claro), var(--ouro));
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}

.selo-secao {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: .72rem; font-weight: 600; letter-spacing: 1.5px; text-transform: uppercase;
  color: var(--ouro); margin-bottom: 16px;
}
.selo-secao::before { content: ''; width: 18px; height: 1px; background: var(--ouro); }

.apoio { color: var(--texto-2); font-size: 1rem; max-width: 62ch; }
@media (min-width: 768px) { .apoio { font-size: 1.08rem; } }

.secao { padding: 64px 0; }
@media (min-width: 768px) { .secao { padding: 92px 0; } }
.secao-alt { background: var(--superficie-2); }

.secao-topo { max-width: 66ch; margin-bottom: 44px; }
.secao-topo h2 { margin-bottom: 14px; }

/* ─────────────── Botões ─────────────── */

.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 9px;
  min-height: 52px; padding: 14px 26px;
  border-radius: var(--raio-sm); font-size: 1rem; font-weight: 600;
  transition: background var(--transicao), border-color var(--transicao),
              transform var(--transicao), box-shadow var(--transicao);
  text-align: center;
}
.btn:disabled { opacity: .55; cursor: not-allowed; }
.btn:not(:disabled):hover { transform: translateY(-1px); }

.btn-ouro { background: var(--ouro); color: #1a1508; font-weight: 700; }
.btn-ouro:not(:disabled):hover { background: var(--ouro-claro); box-shadow: 0 10px 28px rgba(216,180,91,.22); }

.btn-vazado { border: 1px solid var(--borda); color: var(--texto); background: rgba(255,255,255,.02); }
.btn-vazado:not(:disabled):hover { border-color: var(--ouro); color: var(--ouro); }

.btn-largo { width: 100%; }
@media (min-width: 480px) { .btn-auto { width: auto; } }

.microcopy { color: var(--texto-2); font-size: .85rem; margin-top: 14px; }

/* ─────────────── Cabeçalho ─────────────── */

.cabecalho {
  position: sticky; top: 0; z-index: 100;
  background: rgba(13,13,12,.86);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--borda);
}
.cabecalho-interno {
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px; height: 68px;
}
.marca { display: flex; align-items: center; gap: 9px; font-family: var(--fonte-titulo); font-size: 1.24rem; font-weight: 700; flex-shrink: 0; }
.marca svg { width: 22px; height: 22px; color: var(--ouro); flex-shrink: 0; }

.nav-desktop { display: none; }
@media (min-width: 1024px) {
  .nav-desktop { display: flex; align-items: center; gap: 28px; }
  .nav-desktop a { color: var(--texto-2); font-size: .92rem; transition: color var(--transicao); }
  .nav-desktop a:hover { color: var(--texto); }
}

.cabecalho-acoes { display: flex; align-items: center; gap: 10px; }
.cabecalho-acoes .btn { min-height: 42px; padding: 9px 18px; font-size: .9rem; }
.entrar-desktop { display: none; }
@media (min-width: 1024px) { .entrar-desktop { display: inline-flex; } }
.cta-cabecalho span { display: none; }
@media (min-width: 480px) { .cta-cabecalho span { display: inline; } }

.botao-menu {
  display: flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: var(--raio-sm); border: 1px solid var(--borda);
  color: var(--texto);
}
@media (min-width: 1024px) { .botao-menu { display: none; } }
.botao-menu svg { width: 20px; height: 20px; }

/* Menu mobile */
.menu-mobile {
  position: fixed; inset: 68px 0 0; z-index: 99;
  background: var(--bg); padding: 24px var(--px) 40px;
  overflow-y: auto;
  transform: translateY(-8px); opacity: 0; pointer-events: none;
  transition: opacity var(--transicao), transform var(--transicao);
}
.menu-mobile[data-aberto="true"] { transform: none; opacity: 1; pointer-events: auto; }
.menu-mobile nav { display: grid; gap: 4px; margin-bottom: 24px; }
.menu-mobile nav a {
  padding: 15px 4px; font-size: 1.05rem; border-bottom: 1px solid var(--borda);
}
.menu-mobile .btn { margin-bottom: 10px; }
@media (min-width: 1024px) { .menu-mobile { display: none; } }

/* ─────────────── Hero ─────────────── */

.hero { position: relative; padding: 52px 0 20px; overflow: hidden; }
@media (min-width: 900px) { .hero { padding: 84px 0 64px; } }

/* Ambiente sugerido por gradiente, não por foto: a primeira dobra precisa
   carregar rápido (meta de LCP), e imagem grande aqui é o custo mais caro. */
.hero::before {
  content: ''; position: absolute; inset: 0; z-index: -1;
  background:
    radial-gradient(ellipse 820px 520px at 18% -8%, rgba(216,180,91,.11), transparent 68%),
    radial-gradient(ellipse 620px 420px at 88% 8%, rgba(216,180,91,.055), transparent 70%);
}

@media (min-width: 980px) {
  .hero-grid { display: grid; grid-template-columns: 1.02fr .98fr; gap: 52px; align-items: center; }
}
.hero h1 { margin-bottom: 20px; }
.hero .apoio { margin-bottom: 30px; }
.hero-acoes { display: flex; flex-direction: column; gap: 12px; }
@media (min-width: 480px) { .hero-acoes { flex-direction: row; flex-wrap: wrap; } }

/* ═══════════ O DIA — elemento-assinatura ═══════════
   O objeto central de uma barbearia não é um painel de métricas: é o dia,
   hora a hora, cheio ou vazio. Toda a promessa do produto ("mais horários
   preenchidos") cabe nesta coluna, então é aqui que a página gasta sua
   ousadia — e o resto fica quieto. */

.dia {
  background: var(--superficie); border: 1px solid var(--borda);
  border-radius: var(--raio-lg); box-shadow: var(--sombra-lg); overflow: hidden;
}
.dia-cabecalho {
  display: flex; align-items: baseline; justify-content: space-between;
  padding: 18px 20px 14px; border-bottom: 1px solid var(--borda);
}
.dia-data { font-family: var(--fonte-titulo); font-size: 1.05rem; }
.dia-ocupacao { font-size: .72rem; letter-spacing: 1.2px; text-transform: uppercase; color: var(--texto-2); }
.dia-ocupacao b { color: var(--ouro); font-size: .95rem; letter-spacing: 0; }

.dia-linhas { padding: 6px 0 10px; }
.dia-linha {
  display: grid; grid-template-columns: 58px 1fr; align-items: center;
  gap: 14px; padding: 9px 20px; position: relative;
}
/* A marca à esquerda é o estado do horário: sólida quando ocupado,
   tracejada quando livre. Não é enfeite — é a informação. */
.dia-linha::before {
  content: ''; position: absolute; left: 0; top: 6px; bottom: 6px; width: 3px;
  border-radius: 0 3px 3px 0;
}
.dia-linha[data-estado="ocupado"]::before { background: var(--ouro); }
.dia-linha[data-estado="livre"]::before {
  background: repeating-linear-gradient(to bottom, var(--borda) 0 4px, transparent 4px 8px);
}
.dia-hora {
  font-variant-numeric: tabular-nums; font-size: .82rem; font-weight: 600;
  color: var(--texto-2); letter-spacing: .3px;
}
.dia-linha[data-estado="ocupado"] .dia-hora { color: var(--texto); }
.dia-conteudo { display: grid; gap: 1px; min-width: 0; }
.dia-cliente { font-size: .88rem; font-weight: 500; line-height: 1.3; }
.dia-servico { font-size: .74rem; color: var(--texto-2); }
.dia-livre { font-size: .82rem; color: var(--texto-2); font-style: italic; opacity: .65; }

/* Um único momento orquestrado: dois horários vazios se preenchem ao carregar.
   Mostra o produto trabalhando, sem animação ambiente competindo por atenção. */
.dia-linha .dia-conteudo > * { transition: opacity .34s ease, transform .34s ease; }
.dia-linha[data-preenchendo="true"] .dia-livre { opacity: 0; transform: translateY(-4px); }
.dia-linha[data-preenchendo="true"] .dia-cliente,
.dia-linha[data-preenchendo="true"] .dia-servico { animation: entrar-horario .34s ease both; }
@keyframes entrar-horario { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

.dia-rodape {
  display: flex; align-items: center; gap: 9px;
  padding: 13px 20px; border-top: 1px solid var(--borda); background: var(--superficie-2);
  font-size: .76rem; color: var(--texto-2);
}
.dia-rodape .ponto-vivo {
  width: 7px; height: 7px; border-radius: 50%; background: var(--sucesso); flex-shrink: 0;
}

/* ─────────────── Composição do produto (CSS puro) ─────────────── */

.composicao { display: none; }
@media (min-width: 980px) { .composicao { display: block; position: relative; padding-bottom: 30px; } }

.janela {
  background: var(--superficie); border: 1px solid var(--borda);
  border-radius: var(--raio-lg); box-shadow: var(--sombra-lg); overflow: hidden;
}
.janela-barra {
  display: flex; align-items: center; gap: 6px;
  padding: 10px 14px; border-bottom: 1px solid var(--borda); background: var(--superficie-2);
}
.janela-ponto { width: 9px; height: 9px; border-radius: 50%; background: var(--borda); }
.janela-url {
  margin-left: 10px; font-size: .68rem; color: var(--texto-2);
  font-family: ui-monospace, Consolas, monospace;
}
.janela-corpo { padding: 18px; }

.demo-topo { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.demo-titulo { font-family: var(--fonte-titulo); font-size: .98rem; }
.demo-etiqueta {
  font-size: .6rem; letter-spacing: .8px; text-transform: uppercase;
  color: var(--texto-2); border: 1px solid var(--borda); border-radius: 999px; padding: 3px 9px;
}

.indicadores { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; margin-bottom: 16px; }
.indicador { background: var(--superficie-2); border: 1px solid var(--borda); border-radius: var(--raio-sm); padding: 11px 12px; }
.indicador-rotulo { font-size: .62rem; text-transform: uppercase; letter-spacing: .7px; color: var(--texto-2); }
.indicador-valor { font-size: 1.02rem; font-weight: 700; margin-top: 3px; }
.indicador-valor.ouro-solido { color: var(--ouro); }

.linha-agenda {
  display: flex; align-items: center; gap: 11px; padding: 9px 0;
  border-bottom: 1px solid var(--borda); font-size: .78rem;
}
.linha-agenda:last-child { border-bottom: none; }
.hora-agenda { color: var(--ouro); font-weight: 600; min-width: 42px; font-variant-numeric: tabular-nums; }
.cliente-agenda { flex: 1; }
.servico-agenda { color: var(--texto-2); font-size: .72rem; }
.tag-agenda {
  font-size: .6rem; padding: 2px 8px; border-radius: 999px;
  background: rgba(77,170,120,.14); color: var(--sucesso); border: 1px solid rgba(77,170,120,.28);
}

/* Painel sem cromo de navegador. A moldura só se justifica quando a URL É a
   mensagem (o endereço próprio da barbearia); repetida em todo mockup, virava
   papel de parede. */
.painel {
  background: var(--superficie); border: 1px solid var(--borda);
  border-radius: var(--raio); overflow: hidden;
}
.painel-titulo {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px; border-bottom: 1px solid var(--borda);
  font-size: .8rem; letter-spacing: 1.1px; text-transform: uppercase; color: var(--texto-2);
}

/* Celular sobreposto */
.celular {
  position: absolute; right: -14px; bottom: -18px; width: 188px;
  background: linear-gradient(160deg,#26231d,#0f0e0c);
  border: 1px solid var(--borda); border-radius: 26px; padding: 9px;
  box-shadow: var(--sombra-lg);
}
.celular-tela { background: var(--bg); border-radius: 19px; padding: 14px 12px; }
.celular-marca { font-family: var(--fonte-titulo); font-size: .74rem; text-align: center; margin-bottom: 11px; color: var(--ouro); }
.opcao-mock {
  display: flex; align-items: center; gap: 8px; padding: 7px 8px; margin-bottom: 6px;
  border: 1px solid var(--borda); border-radius: 8px; font-size: .64rem;
}
.opcao-mock.ativa { border-color: var(--ouro); background: rgba(216,180,91,.09); }
.opcao-bola { width: 20px; height: 20px; border-radius: 50%; background: rgba(216,180,91,.14); flex-shrink: 0; }
.opcao-meta { color: var(--texto-2); font-size: .56rem; }
.mock-cta { margin-top: 9px; padding: 8px; border-radius: 7px; background: var(--ouro); color: #1a1508; font-size: .64rem; font-weight: 700; text-align: center; }

/* Notificação flutuante */
.notificacao {
  position: absolute; left: -18px; bottom: 62px;
  display: flex; align-items: center; gap: 10px;
  background: var(--superficie); border: 1px solid var(--borda);
  border-left: 3px solid var(--sucesso);
  border-radius: var(--raio-sm); padding: 11px 14px; box-shadow: var(--sombra);
  animation: flutuar 5s ease-in-out infinite;
}
.notificacao-icone {
  width: 30px; height: 30px; border-radius: 50%; flex-shrink: 0;
  background: rgba(77,170,120,.14); color: var(--sucesso);
  display: flex; align-items: center; justify-content: center;
}
.notificacao-icone svg { width: 15px; height: 15px; }
.notificacao-titulo { font-size: .74rem; font-weight: 600; }
.notificacao-texto { font-size: .66rem; color: var(--texto-2); }
@keyframes flutuar { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-7px); } }

/* ─────────────── Cards ─────────────── */

.grade { display: grid; gap: 16px; }
@media (min-width: 640px) { .grade-2 { grid-template-columns: repeat(2,1fr); } }
@media (min-width: 900px) { .grade-3 { grid-template-columns: repeat(3,1fr); } }

.card {
  background: var(--superficie); border: 1px solid var(--borda);
  border-radius: var(--raio); padding: 26px 24px;
  transition: border-color var(--transicao), transform var(--transicao);
}
.card:hover { border-color: rgba(216,180,91,.32); transform: translateY(-2px); }
.card h3 { margin-bottom: 8px; }
.card p { color: var(--texto-2); font-size: .94rem; }

.card-icone {
  width: 42px; height: 42px; border-radius: var(--raio-sm); margin-bottom: 16px;
  background: rgba(216,180,91,.09); border: 1px solid rgba(216,180,91,.2); color: var(--ouro);
  display: flex; align-items: center; justify-content: center;
}
.card-icone svg { width: 20px; height: 20px; }

/* Problemas: primeiro card ocupa mais espaço para quebrar a repetição visual */
.grade-problemas { display: grid; gap: 16px; }
@media (min-width: 760px) {
  .grade-problemas { grid-template-columns: repeat(2,1fr); }
  .grade-problemas .card:first-child { grid-column: 1 / -1; display: flex; gap: 22px; align-items: flex-start; }
  .grade-problemas .card:first-child .card-icone { margin-bottom: 0; }
}

.fecho-secao {
  margin-top: 26px; padding: 20px 22px;
  background: rgba(216,180,91,.05); border: 1px solid rgba(216,180,91,.18);
  border-radius: var(--raio); color: var(--texto); font-size: .98rem;
}

/* ─────────────── Demonstração personalizada ─────────────── */

@media (min-width: 980px) {
  .demo-grid { display: grid; grid-template-columns: .82fr 1.18fr; gap: 44px; align-items: start; }
}

.form-demo { display: grid; gap: 16px; }
.campo { display: grid; gap: 7px; }
.campo label { font-size: .86rem; font-weight: 500; }
.campo input, .campo select {
  min-height: 50px; padding: 12px 14px;
  background: var(--superficie-2); border: 1px solid var(--borda);
  border-radius: var(--raio-sm); color: var(--texto);
  font-size: 16px; /* nunca menor: abaixo disso o iOS Safari dá zoom ao focar */
  transition: border-color var(--transicao);
  width: 100%;
}
.campo input:focus, .campo select:focus { outline: none; border-color: var(--ouro); }
.campo input[aria-invalid="true"] { border-color: var(--erro); }
.campo-erro { color: var(--erro); font-size: .82rem; min-height: 1.2em; }
.campo-dica { color: var(--texto-2); font-size: .8rem; }

.abas { display: flex; gap: 6px; padding: 5px; background: var(--superficie-2); border: 1px solid var(--borda); border-radius: var(--raio-sm); margin-bottom: 16px; }
.aba {
  flex: 1; padding: 10px 8px; border-radius: 7px; font-size: .84rem; font-weight: 500;
  color: var(--texto-2); transition: background var(--transicao), color var(--transicao);
  min-height: 44px;
}
.aba[aria-selected="true"] { background: var(--ouro); color: #1a1508; font-weight: 600; }
.aba:not([aria-selected="true"]):hover { color: var(--texto); }

.painel-demo { display: none; }
.painel-demo[data-ativo="true"] { display: block; animation: aparecer .22s ease; }
@keyframes aparecer { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: none; } }

.aviso-simulacao {
  display: inline-flex; align-items: center; gap: 7px; margin-top: 14px;
  font-size: .76rem; color: var(--texto-2);
}
.aviso-simulacao::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--ouro); }

/* ─────────────── Benefícios alternados ─────────────── */

.beneficio { display: grid; gap: 26px; align-items: center; padding: 34px 0; border-bottom: 1px solid var(--borda); }
.beneficio:last-child { border-bottom: none; }
@media (min-width: 900px) {
  .beneficio { grid-template-columns: 1fr 1fr; gap: 56px; padding: 48px 0; }
  .beneficio:nth-child(even) .beneficio-texto { order: 2; }
}
.beneficio-texto h3 { font-family: var(--fonte-titulo); font-size: 1.4rem; font-weight: 700; margin-bottom: 12px; }
.beneficio-texto p { color: var(--texto-2); }
.beneficio-lista { list-style: none; margin-top: 16px; display: grid; gap: 9px; }
.beneficio-lista li { display: flex; gap: 10px; align-items: flex-start; font-size: .92rem; color: var(--texto-2); }
.beneficio-lista svg { width: 17px; height: 17px; color: var(--ouro); flex-shrink: 0; margin-top: 3px; }

/* ─────────────── Como funciona ─────────────── */

.etapas { display: grid; gap: 28px; counter-reset: etapa; }
@media (min-width: 900px) { .etapas { grid-template-columns: repeat(3,1fr); gap: 36px; } }
.etapa { position: relative; padding-left: 60px; }
.etapa::before {
  counter-increment: etapa; content: counter(etapa, decimal-leading-zero);
  position: absolute; left: 0; top: -6px;
  font-family: var(--fonte-titulo); font-size: 1.7rem; font-weight: 700; color: var(--ouro);
  opacity: .85;
}
.etapa h3 { margin-bottom: 7px; }
.etapa p { color: var(--texto-2); font-size: .94rem; }

/* ─────────────── Calculadora ─────────────── */

.calculadora {
  background: var(--superficie); border: 1px solid var(--borda);
  border-radius: var(--raio-lg); padding: 28px 24px;
}
@media (min-width: 768px) { .calculadora { padding: 40px 36px; } }
@media (min-width: 900px) { .calculadora-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 44px; align-items: center; } }

.resultado {
  background: var(--superficie-2); border: 1px solid rgba(216,180,91,.22);
  border-radius: var(--raio); padding: 26px 22px; text-align: center;
}
.resultado-rotulo { font-size: .78rem; text-transform: uppercase; letter-spacing: 1px; color: var(--texto-2); }
.resultado-valor {
  font-family: var(--fonte-titulo); font-weight: 700; color: var(--ouro);
  font-size: clamp(2rem, 6vw, 2.9rem); line-height: 1.1; margin: 10px 0 8px;
}
.resultado-frase { color: var(--texto-2); font-size: .9rem; }
.resultado-nota { color: var(--texto-2); font-size: .78rem; margin-top: 16px; font-style: italic; }

/* ─────────────── Planos ─────────────── */

.planos { display: grid; gap: 18px; }
@media (min-width: 860px) { .planos { grid-template-columns: repeat(2,1fr); align-items: start; } }

.plano {
  position: relative; background: var(--superficie); border: 1px solid var(--borda);
  border-radius: var(--raio-lg); padding: 30px 26px;
}
.plano-destaque { border-color: rgba(216,180,91,.42); background: linear-gradient(165deg, rgba(216,180,91,.07), var(--superficie) 58%); }
.plano-selo {
  position: absolute; top: -11px; left: 26px;
  background: var(--ouro); color: #1a1508; font-size: .7rem; font-weight: 700;
  padding: 4px 12px; border-radius: 999px; letter-spacing: .3px;
}
.plano h3 { font-family: var(--fonte-titulo); font-size: 1.35rem; font-weight: 700; }
.plano-para { color: var(--texto-2); font-size: .88rem; margin-top: 4px; }
.plano-preco { margin: 20px 0; padding: 16px 0; border-top: 1px solid var(--borda); border-bottom: 1px solid var(--borda); }
.plano-valor { font-family: var(--fonte-titulo); font-size: 1.6rem; font-weight: 700; color: var(--ouro); }
.plano-periodo { color: var(--texto-2); font-size: .84rem; }
.plano ul { list-style: none; display: grid; gap: 10px; margin-bottom: 24px; }
.plano li { display: flex; gap: 10px; align-items: flex-start; font-size: .92rem; }
.plano li svg { width: 17px; height: 17px; color: var(--ouro); flex-shrink: 0; margin-top: 3px; }

/* ─────────────── FAQ ─────────────── */

.faq { max-width: 780px; margin: 0 auto; }
.faq-item { border-bottom: 1px solid var(--borda); }
.faq-pergunta {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  width: 100%; text-align: left; padding: 20px 2px; min-height: 60px;
  font-size: 1rem; font-weight: 500; transition: color var(--transicao);
}
.faq-pergunta:hover { color: var(--ouro); }
.faq-pergunta svg { width: 18px; height: 18px; color: var(--ouro); flex-shrink: 0; transition: transform var(--transicao); }
.faq-pergunta[aria-expanded="true"] svg { transform: rotate(45deg); }
.faq-resposta { display: none; padding: 0 2px 22px; color: var(--texto-2); font-size: .95rem; max-width: 68ch; }
.faq-resposta[data-aberto="true"] { display: block; }

/* ─────────────── Chamada final ─────────────── */

.chamada-final {
  background: linear-gradient(165deg, rgba(216,180,91,.09), var(--superficie) 62%);
  border: 1px solid rgba(216,180,91,.24); border-radius: var(--raio-lg);
  padding: 44px 26px; text-align: center;
}
@media (min-width: 768px) { .chamada-final { padding: 68px 48px; } }
.chamada-final h2 { margin-bottom: 14px; }
.chamada-final .apoio { margin: 0 auto 28px; }
.chamada-final .hero-acoes { justify-content: center; }

/* ─────────────── Rodapé ─────────────── */

.rodape { border-top: 1px solid var(--borda); padding: 48px 0 40px; background: var(--superficie-2); }
.rodape-grid { display: grid; gap: 30px; }
@media (min-width: 700px) { .rodape-grid { grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: 36px; } }
.rodape h4 { font-size: .76rem; text-transform: uppercase; letter-spacing: 1.2px; margin-bottom: 14px; }
.rodape ul { list-style: none; display: grid; gap: 10px; }
.rodape a, .rodape p { color: var(--texto-2); font-size: .9rem; }
.rodape a:hover { color: var(--ouro); }
.rodape-final {
  margin-top: 36px; padding-top: 22px; border-top: 1px solid var(--borda);
  display: flex; flex-wrap: wrap; gap: 10px; justify-content: space-between;
  color: var(--texto-2); font-size: .82rem;
}

/* ─────────────── Diálogos ─────────────── */

.overlay {
  position: fixed; inset: 0; z-index: 200; display: none;
  align-items: center; justify-content: center; padding: 20px;
  background: rgba(0,0,0,.72); backdrop-filter: blur(4px);
}
.overlay[data-aberto="true"] { display: flex; }
.dialogo {
  background: var(--superficie); border: 1px solid var(--borda);
  border-radius: var(--raio-lg); padding: 28px 24px;
  width: 100%; max-width: 420px; max-height: calc(100vh - 40px); overflow-y: auto;
  box-shadow: var(--sombra-lg);
}
.dialogo h2 { font-family: var(--fonte-titulo); font-size: 1.35rem; margin-bottom: 6px; }
.dialogo > p { color: var(--texto-2); font-size: .9rem; margin-bottom: 20px; }
.dialogo-cabecalho { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.fechar-dialogo { width: 36px; height: 36px; border-radius: 8px; color: var(--texto-2); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.fechar-dialogo:hover { color: var(--texto); background: rgba(255,255,255,.05); }
.fechar-dialogo svg { width: 18px; height: 18px; }
.form-dialogo { display: grid; gap: 15px; }

.mensagem-sucesso {
  display: flex; gap: 11px; align-items: flex-start; margin-top: 16px; padding: 14px 16px;
  background: rgba(77,170,120,.09); border: 1px solid rgba(77,170,120,.26);
  border-radius: var(--raio-sm); color: var(--texto); font-size: .9rem;
}
.mensagem-sucesso svg { width: 18px; height: 18px; color: var(--sucesso); flex-shrink: 0; margin-top: 2px; }

.girando { animation: girar .7s linear infinite; width: 17px; height: 17px; }
@keyframes girar { to { transform: rotate(360deg); } }

/* ─────────────── Páginas de conteúdo (privacidade / termos) ─────────────── */

.doc { padding: 44px 0 20px; max-width: 780px; }
.doc h1 { margin-bottom: 10px; }
.doc .atualizado { color: var(--texto-2); font-size: .86rem; margin-bottom: 38px; }
.doc h2 { font-family: var(--fonte-titulo); font-size: 1.32rem; font-weight: 700; margin: 38px 0 13px; }
.doc h3 { margin: 22px 0 8px; }
.doc p, .doc li { color: var(--texto-2); font-size: .95rem; margin-bottom: 12px; }
.doc ul { padding-left: 22px; margin-bottom: 18px; }
.doc li { margin-bottom: 7px; }
.doc strong { color: var(--texto); font-weight: 600; }
.doc a { color: var(--ouro); text-decoration: underline; text-underline-offset: 3px; }
.doc .aviso { background: rgba(216,180,91,.06); border: 1px solid rgba(216,180,91,.2); border-radius: var(--raio); padding: 18px 20px; margin: 24px 0; }
.doc .aviso p:last-child { margin-bottom: 0; }
.doc table { width: 100%; border-collapse: collapse; margin: 16px 0 22px; font-size: .9rem; }
.doc th, .doc td { text-align: left; padding: 11px 12px; border-bottom: 1px solid var(--borda); vertical-align: top; }
.doc th { color: var(--texto); font-weight: 600; font-size: .78rem; text-transform: uppercase; letter-spacing: .6px; }
.doc td { color: var(--texto-2); }
.doc .tabela-rolagem { overflow-x: auto; }
.voltar { display: inline-flex; align-items: center; gap: 7px; color: var(--ouro); font-size: .9rem; margin-bottom: 26px; }

/* ─────────────── Barra fixa de CTA (só mobile) ─────────────── */

.cta-fixo {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 90;
  padding: 12px var(--px) calc(12px + env(safe-area-inset-bottom));
  background: rgba(13,13,12,.94); backdrop-filter: blur(12px);
  border-top: 1px solid var(--borda);
  transform: translateY(110%); transition: transform .24s ease;
}
.cta-fixo[data-visivel="true"] { transform: none; }
@media (min-width: 1024px) { .cta-fixo { display: none; } }
body:has(.menu-mobile[data-aberto="true"]) .cta-fixo { transform: translateY(110%); }

/* ─────────────── Movimento reduzido ─────────────── */

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }
  .btn:not(:disabled):hover, .card:hover { transform: none; }
}
