/* ============================================================================
   TEMA ESCURO - páginas de leitura (blog, cases)
   ============================================================================

   POR QUE SÓ AQUI, E NÃO NO SITE INTEIRO.
   A pesquisa de legibilidade é contra fundo escuro em página de venda: no
   estudo de Piepenbrock (2013) o modo claro venceu em acuidade visual e em
   revisão de texto, nas duas faixas etárias testadas, e a vantagem do claro
   CRESCE conforme a fonte diminui - que é exatamente o caso de home, planos e
   FAQ. A NN/g recomenda escuro justamente onde há leitura longa, e o único
   case forte publicado (Terra, web.dev: bounce -60%, páginas/sessão +170%) é
   um portal de notícias. Blog e cases são o nosso equivalente disso.

   E há a razão de composição: a home usa escuro como RECURSO (hero navy,
   seção Suporte navy, dois CTAs em azul cheio). O ritmo claro-escuro-claro é
   o que faz o "Testar Grátis" saltar. Inverter tudo apagaria esse mecanismo.
   Aqui não: página de artigo é uma coluna de texto contínua, sem esse ritmo.

   ESCOPO REAL DESTE ARQUIVO. Ele é carregado SÓ pelas 10 páginas de leitura.
   Não entra no main.css e não toca a home. Isso é de propósito: o custo fica
   onde o benefício está, e um rebuild do Tailwind não pode apagá-lo (o
   main.css é gerado, e CSS colado à mão nele já sumiu num rebuild antes).

   COMO ELE FUNCIONA, E POR QUE NÃO HÁ REGRA DUPLICADA AQUI.
   O caminho ingênuo é escrever cada regra duas vezes, uma sob
   `@media(prefers-color-scheme:dark)` e outra sob `[data-tema="escuro"]`.
   Isso dobra o arquivo e garante que um dia alguém corrija um lado só.
   Em vez disso, **todo valor de cor vira token**, e os tokens são declarados
   três vezes: uma com os valores CLAROS de hoje, e duas com os escuros (uma
   por porta de entrada). As regras aparecem uma vez só e não sabem em que
   tema estão. No claro elas repõem exatamente a cor que o template já usava,
   então ligar este arquivo com o tema claro ativo não muda um pixel.

   Três estados, e a ordem das declarações é o que faz o botão vencer o
   sistema: sem escolha gravada manda a media query; com escolha manda o
   atributo em <html>, que vem depois e por isso ganha.

   CONTRASTE MEDIDO, não estimado (o toggle do Cé nasceu em 1,7:1 porque
   ninguém tinha medido):
     título   #dde5ee sobre #0f1720 = 14,19:1
     corpo    #c2ccd8 sobre #0f1720 = 11,10:1
     2º nível #93a1b1 sobre #0f1720 =  6,85:1
     3º nível #7e8c9c sobre #0f1720 =  5,26:1
     link     #5cb6ea sobre #0f1720 =  8,03:1
     ícone do botão de tema sobre a barra = 8,14:1
   Nada aqui usa branco puro sobre preto puro: passa com 21:1 na tabela e
   causa halation (texto "brilhando") para quem tem astigmatismo.
   ========================================================================== */

/* ---------------------------------------------------------------------------
   1. OS TOKENS NO TEMA CLARO
   Os valores que o template já usa hoje, escritos à mão a partir do <style>
   de cada página. Nenhuma invenção: se um destes divergir do original, o tema
   claro muda de cara, e ninguém pediu isso.
   ------------------------------------------------------------------------- */
:root {
  --pagina:      #f8fafc;
  --superficie:  #ffffff;   /* card, rodapé, barra do WhatsApp, faixa cookie */
  --superficie2: #f1f6fb;   /* métrica dentro do card */
  --placeholder: #eef4f9;   /* fundo de imagem enquanto ela não chega */
  --barra:       255, 255, 255;  /* header fixo, em RGB por causa do alpha */
  --linha:       #e2e8f0;
  --linha-2:     #cbd5e1;   /* borda do Login, um degrau mais visível */
  --linha-forte: #cbd8e6;   /* borda de card em hover */
  --titulo:      #0a2740;
  --corpo:       #334155;
  --slate-600:   #475569;
  --slate-500:   #64748b;
  --slate-400:   #94a3b8;
  --link:        #1488d6;
  --chip-bg:     #e6f4fc;
  --sombra:      0 14px 40px rgba(14, 58, 92, .06);
  --sombra-alta: 0 24px 55px rgba(14, 58, 92, .15);
  --hero-grad:   linear-gradient(135deg, #0e3a5c, #145b82);
  --cta-grad:    #0e3a5c;
  --cta-sub:     #cbd5e1;
  /* O botão DENTRO do bloco de CTA. No claro ele é azul sobre navy e salta.
     No escuro o bloco também vira azul, e azul sobre azul faz o botão sumir -
     defeito visto na foto, não previsto no papel. Sobre superfície colorida a
     saída é inverter, que é o que a home já faz nos botões sobre o hero. */
  --cta-btn-bg:  #1488d6;
  --cta-btn-fg:  #ffffff;
  --btn-ic:      #64748b;   /* ícone do botão de tema */
  --btn-ic-on:   #0e3a5c;
  --btn-borda:   #cbd5e1;
  --btn-fundo:   transparent;
}

/* ---------------------------------------------------------------------------
   2. OS MESMOS TOKENS NO ESCURO, PELAS DUAS PORTAS
   Este é o único bloco duplicado do arquivo, e é duplicado porque CSS não
   deixa reaproveitar um conjunto de variáveis. A alternativa seria acender
   uma classe por JS, e aí o tema passaria a depender de JavaScript ter
   rodado - que é exatamente o que produz o flash branco no carregamento.
   Mexeu num, mexa no outro.
   ------------------------------------------------------------------------- */
@media (prefers-color-scheme: dark) {
  :root:not([data-tema="claro"]) {
    --pagina:      #0f1720;
    --superficie:  #161f2a;
    --superficie2: #1b2530;
    --placeholder: #1b2530;
    --barra:       19, 28, 38;
    --linha:       #26323f;
    --linha-2:     #3d4b5a;
    --linha-forte: #3d4b5a;
    --titulo:      #dde5ee;
    --corpo:       #c2ccd8;
    --slate-600:   #c2ccd8;
    --slate-500:   #93a1b1;
    --slate-400:   #7e8c9c;
    --link:        #5cb6ea;
    --chip-bg:     rgba(92, 182, 234, .14);
    /* Tokens do <style> da PÁGINA, redefinidos aqui porque este arquivo é
       carregado depois dele e vence o empate. Pegam de uma vez todo seletor do
       template que usa var(--ink) e var(--accent-soft) sem eu ter que listá-lo. */
    --ink:         #dde5ee;
    --accent-soft: rgba(92, 182, 234, .14);
    /* A sombra clara é azul-escura sobre branco: no escuro ela some no fundo
       e o card fica sem separação. Preto puro devolve a profundidade. */
    --sombra:      0 14px 40px rgba(0, 0, 0, .38);
    --sombra-alta: 0 24px 55px rgba(0, 0, 0, .5);
    --hero-grad:   linear-gradient(135deg, #0c1d2e, #10314a);
    --cta-grad:    linear-gradient(135deg, #0e6fae, #1488d6);
    --cta-sub:     rgba(255, 255, 255, .88);
    --cta-btn-bg:  #ffffff;
    --cta-btn-fg:  #0e3a5c;
    --btn-ic:      #a7b4c2;
    --btn-ic-on:   #dde5ee;
    --btn-borda:   #3d4b5a;
    --btn-fundo:   #161f2a;
  }
}
:root[data-tema="escuro"] {
  --pagina:      #0f1720;
  --superficie:  #161f2a;
  --superficie2: #1b2530;
  --placeholder: #1b2530;
  --barra:       19, 28, 38;
  --linha:       #26323f;
  --linha-2:     #3d4b5a;
  --linha-forte: #3d4b5a;
  --titulo:      #dde5ee;
  --corpo:       #c2ccd8;
  --slate-600:   #c2ccd8;
  --slate-500:   #93a1b1;
  --slate-400:   #7e8c9c;
  --link:        #5cb6ea;
  --chip-bg:     rgba(92, 182, 234, .14);
  --ink:         #dde5ee;
  --accent-soft: rgba(92, 182, 234, .14);
  --sombra:      0 14px 40px rgba(0, 0, 0, .38);
  --sombra-alta: 0 24px 55px rgba(0, 0, 0, .5);
  --hero-grad:   linear-gradient(135deg, #0c1d2e, #10314a);
  --cta-grad:    linear-gradient(135deg, #0e6fae, #1488d6);
  --cta-sub:     rgba(255, 255, 255, .88);
  --cta-btn-bg:  #ffffff;
  --cta-btn-fg:  #0e3a5c;
  --btn-ic:      #a7b4c2;
  --btn-ic-on:   #dde5ee;
  --btn-borda:   #3d4b5a;
  --btn-fundo:   #161f2a;
}

/* Sem isto, o navegador continua pintando de branco a barra de rolagem, o
   fundo atrás do elástico do scroll e os campos nativos. É uma linha, e é a
   diferença entre "site escuro" e "site escuro com molduras brancas". */
:root[data-tema="escuro"] { color-scheme: dark; }
@media (prefers-color-scheme: dark) {
  :root:not([data-tema="claro"]) { color-scheme: dark; }
}

/* ---------------------------------------------------------------------------
   3. O BOTÃO
   Mora no HTML de cada página, e não é inserido por JS: um controle de 40px
   entrando no header depois da primeira pintura empurraria o Login e o
   "Testar Grátis" para o lado, que é layout shift medido em CLS.

   Discreto de propósito - é ajuste de conforto, não função da página. Mas a
   lição do Cé é que discreto não é invisível: lá o ícone nasceu em 1,7:1
   contra a barra, menos da metade do que a WCAG 1.4.11 pede para componente
   de interface, e "mal consigo enxergar" era medível. Aqui o ícone dá 8,14:1
   no escuro, e o botão ganha superfície e borda, que é o que diz "isto se
   clica".

   Fica à ESQUERDA do Login, na ponta de menos atenção do bloco de ações: o
   olho vai para o botão azul na outra extremidade. Visível, sem competir.
   ------------------------------------------------------------------------- */
.tema-btn {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  padding: 0;                 /* sem isto o ícone sai do centro do botão */
  flex-shrink: 0;
  border: 1px solid var(--btn-borda);
  border-radius: .75rem;      /* mesmo raio do Login e do Testar Grátis */
  background: var(--btn-fundo);
  color: var(--btn-ic);
  cursor: pointer;
  transition: color .15s ease, border-color .15s ease, background-color .15s ease;
}
/* Um <svg> inline se apoia na linha de base do texto, o que empurra o ícone
   alguns pixels para cima dentro de um botão de bloco. */
.tema-btn svg { display: block; width: 18px; height: 18px; }
.tema-btn:hover { color: var(--btn-ic-on); border-color: var(--btn-ic-on); }
.tema-btn:focus-visible { outline: 2px solid #1488d6; outline-offset: 2px; }

/* Sol no claro, lua no escuro: o ícone mostra o estado ATUAL, não o destino.
   As duas portas precisam trocar o ícone, senão o botão mente sobre onde
   você está - foi um dos defeitos que a logo do Cé teve. */
.tema-btn .lua { display: none; }
@media (prefers-color-scheme: dark) {
  :root:not([data-tema="claro"]) .tema-btn .sol { display: none; }
  :root:not([data-tema="claro"]) .tema-btn .lua { display: block; }
}
:root[data-tema="escuro"] .tema-btn .sol { display: none; }
:root[data-tema="escuro"] .tema-btn .lua { display: block; }

/* ---------------------------------------------------------------------------
   4. AS REGRAS
   Uma vez cada, sem saber em que tema estão. Tudo que muda de cor foi
   substituído por token na seção 1.
   ------------------------------------------------------------------------- */

/* --- 4.1 base do template ----------------------------------------------- */
body { background: var(--pagina); color: var(--corpo); }

/* --- 4.2 header, rodapé, WhatsApp e faixa de cookie ----------------------
   Estas quatro peças são as MESMAS nas 10 páginas, e vêm em utilitários do
   Tailwind (bg-white, border-slate-200, text-slate-600...), não do <style> da
   página. Por isso o override é por classe utilitária: ~15 regras cobrem
   header + rodapé + barra do WhatsApp + faixa de cookie de todas elas de uma
   vez, sem editar HTML.
   `[data-tema]` não é necessário aqui porque o token já carrega o tema; o que
   importa é a especificidade contra o próprio Tailwind, e uma classe simples
   declarada depois no cascade já ganha por ordem. */
.bg-white,
.bg-white\/90,
.bg-white\/95         { background-color: var(--superficie); }
header.sticky         { background-color: rgba(var(--barra), .9); }
#cookieBar            { background-color: rgba(var(--barra), .95); }
.border-slate-200     { border-color: var(--linha); }
.border-slate-300     { border-color: var(--linha-2); }
.text-slate-400       { color: var(--slate-400); }
.text-slate-500       { color: var(--slate-500); }
.text-slate-600       { color: var(--slate-600); }
.text-slate-700       { color: var(--corpo); }
.text-ink, .text-navy { color: var(--titulo); }
.hover\:text-navy:hover,
.hover\:text-ink:hover     { color: var(--link); }
.hover\:border-navy:hover  { border-color: var(--linha-forte); }

/* --- 4.3 cabeçalho e corpo do artigo ------------------------------------ */
.post-title, .post-body h2, .post-body h3, .post-body strong,
.section-title, .case-name,
.case-body h2, .case-body h3, .case-body strong { color: var(--titulo); }
.breadcrumb, .post-meta,
.section-sub, .blog-empty         { color: var(--slate-500); }
.breadcrumb a, .post-body a, .post-link,
.case-link, .eyebrow, .metric b   { color: var(--link); }
.post-body blockquote { color: var(--slate-600); border-left-color: var(--link); }
.post-cat, .post-tag, .case-tag   { background: var(--chip-bg); color: var(--link); }

/* Imagem de artigo: a moldura acompanha o tema, e o fundo do placeholder
   deixa de ser um retângulo claro esperando a imagem carregar. */
.post-hero, .post-thumb  { background: var(--placeholder); }
.post-body img           { border-color: var(--linha); }
.post-body figcaption    { color: var(--slate-500); }

/* --- 4.4 cards ---------------------------------------------------------- */
.post-card, .case-card, .tcard {
  background: var(--superficie);
  border-color: var(--linha);
  box-shadow: var(--sombra);
}
.post-card:hover, .case-card:hover {
  border-color: var(--linha-forte);
  box-shadow: var(--sombra-alta);
}
.tcard { background: var(--superficie2); }   /* depoimento é um degrau abaixo */
.post-excerpt, .case-result,
.tcard blockquote      { color: var(--slate-600); }
.tcard .who b          { color: var(--titulo); }
.tcard .who span,
.metric span           { color: var(--slate-500); }
.metric                { background: var(--superficie2); border-color: var(--linha); }
.section.alt           { background: var(--superficie); border-top-color: var(--linha); }

/* O depoimento da página de case é um card branco com filete azul à esquerda.
   Só a auditoria pegou: `.case-body` e `.case-quote` são classes exclusivas
   dessa página, e nenhuma delas cai nos seletores do template do blog. */
.case-quote {
  background: var(--superficie);
  border-color: var(--linha);
  border-left-color: var(--link);
  box-shadow: var(--sombra);
}
.case-quote p, .case-quote .who b { color: var(--titulo); }
.case-quote .who span             { color: var(--slate-500); }

/* --- 4.5 chips de categoria --------------------------------------------- */
.cat-chip {
  background: var(--superficie);
  border-color: var(--linha);
  color: var(--slate-600);
}
.cat-chip:hover  { border-color: var(--link); color: var(--link); }
.cat-chip.active { background: #1488d6; border-color: #1488d6; color: #fff; }

/* --- 4.6 hero e blocos de CTA -------------------------------------------
   Aqui está a decisão de composição do arquivo, e ela não é cosmética.
   No tema claro, .post-cta e .midcta são blocos NAVY numa página clara: eles
   saltam por contraste. Repetir navy sobre fundo escuro faria o CTA virar
   fundo - o bloco sumiria justamente onde o artigo pede a ação. Então no
   escuro eles trocam de papel e viram o único bloco COLORIDO da página, que é
   o mesmo recurso que a home usa com os CTAs em azul cheio.
   O hero, ao contrário, escurece: ele é abertura, não chamada. */
.hero, .case-hero         { background: var(--hero-grad); }
.post-cta, .midcta        { background: var(--cta-grad); }
.post-cta p, .midcta p    { color: var(--cta-sub); }

/* E o botão DENTRO desses blocos. Este é o defeito que só a foto pegou: no
   claro ele é azul sobre navy e salta; quando o bloco virou azul no escuro,
   azul sobre azul apagou o botão justamente no ponto em que o artigo pede a
   ação. Sobre superfície colorida a saída é inverter - branco com texto navy,
   que é o mesmo recurso que a home usa nos botões sobre o hero.
   `.btn-ghost` não entra aqui: ele já é branco translúcido com borda branca,
   e funciona sobre os dois fundos. */
.post-cta a,
.midcta .btn-primary {
  background: var(--cta-btn-bg);
  color: var(--cta-btn-fg);
  box-shadow: none;
}

/* ---------------------------------------------------------------------------
   5. TRANSIÇÃO
   Só nas cores, e curta. Animar `all` num documento longo obriga o navegador
   a interpolar propriedade que não muda, e a troca fica arrastada justamente
   nas páginas com mais conteúdo - que são estas. Quem pediu menos movimento
   no sistema não recebe nenhum.
   ------------------------------------------------------------------------- */
@media (prefers-reduced-motion: no-preference) {
  body, .post-card, .case-card, .tcard, .metric, .cat-chip, .tema-btn,
  header.sticky, footer, #waFloat, #cookieBar {
    transition: background-color .2s ease, border-color .2s ease, color .2s ease;
  }
}
