/**
 * variables.css — Tokens de design.
 *
 * O sistema tem duas camadas propositalmente:
 *
 *   1. PALETA BRUTA (--navy-800, --teal-600...) — nomes de cor, sem opinião.
 *   2. TOKENS DE PAPEL (--surface-1, --text-strong...) — o que a cor faz.
 *
 * O CSS de componente só usa a camada 2. Assim o tema escuro e as seções
 * invertidas trocam a camada de papel e nada mais precisa ser reescrito.
 * Para mudar a identidade do projeto, mexa na camada 1.
 */

:root {
  /* ============================================================
     1. PALETA BRUTA
     ============================================================ */

  /* Azul institucional — credibilidade, profundidade */
  --navy-950: #050E1C;
  --navy-900: #071426;
  --navy-800: #0B1F3A;
  --navy-700: #123056;
  --navy-600: #1B4374;
  --navy-500: #2A5C96;

  /* Turquesa — ciência, saúde, inovação */
  --teal-800: #084655;
  --teal-700: #0A5B6E;
  --teal-600: #0E7490;
  --teal-500: #1195B4;
  --teal-400: #22C1D6;
  --teal-300: #7DE3EF;

  /* Âmbar — energia, movimento, sinalização */
  --amber-800: #92400E;
  --amber-700: #B45309;
  --amber-600: #D97706;
  --amber-500: #F59E0B;
  --amber-400: #FBBF24;

  /* Neutros frios */
  --n-0: #FFFFFF;
  --n-25: #FAFBFD;
  --n-50: #F6F8FB;
  --n-100: #EDF1F7;
  --n-200: #DCE3EC;
  --n-300: #C3CDDB;
  --n-400: #94A3B8;
  --n-500: #5B6B7F;
  --n-600: #475569;
  --n-700: #334155;
  --n-800: #1E293B;
  --n-900: #172033;

  /* Semânticas de estado */
  --green-600: #15803D;
  --green-400: #4ADE80;
  --red-600: #B91C1C;
  --red-400: #F87171;

  /* ============================================================
     2. TOKENS DE PAPEL — tema claro (padrão)
     ============================================================ */
  --surface-page: var(--n-50);
  --surface-1: var(--n-0);
  --surface-2: var(--n-100);
  --surface-3: var(--n-200);
  --surface-sunken: var(--n-25);

  --text-strong: var(--n-900);
  --text-body: var(--n-700);
  --text-muted: var(--n-500);
  --text-on-brand: var(--n-0);

  --border: var(--n-200);
  --border-strong: var(--n-300);
  --border-subtle: var(--n-100);

  --brand: var(--navy-800);
  --brand-hover: var(--navy-700);
  --brand-tint: rgba(11, 31, 58, 0.06);

  /* Turquesa: cor de link e de tudo que sinaliza ciência/inovação */
  --cool: var(--teal-600);
  --cool-strong: var(--teal-700);
  --cool-tint: rgba(14, 116, 144, 0.10);

  /* Âmbar: reprovado em contraste como texto sobre fundo claro.
     Por isso existem dois tokens — o de superfície e o de texto. */
  --warm: var(--amber-500);
  --warm-text: var(--amber-700);
  --warm-tint: rgba(245, 158, 11, 0.14);

  --positive: var(--green-600);
  --negative: var(--red-600);

  --focus-ring: var(--teal-600);
  --selection-bg: rgba(14, 116, 144, 0.20);

  /* Malha técnica usada nos fundos — evoca papel milimetrado e plano cartesiano */
  --grid-line: rgba(11, 31, 58, 0.055);

  --shadow-sm: 0 1px 2px rgba(11, 31, 58, 0.06),
               0 1px 3px rgba(11, 31, 58, 0.04);
  --shadow-md: 0 4px 6px -2px rgba(11, 31, 58, 0.06),
               0 12px 24px -6px rgba(11, 31, 58, 0.10);
  --shadow-lg: 0 8px 12px -4px rgba(11, 31, 58, 0.08),
               0 28px 56px -12px rgba(11, 31, 58, 0.18);
  --shadow-inset: inset 0 1px 0 rgba(255, 255, 255, 0.6);

  /* ============================================================
     3. TIPOGRAFIA
     ============================================================ */
  --font-display: 'Sora', 'Segoe UI', system-ui, -apple-system, sans-serif;
  --font-body: 'Manrope', 'Segoe UI', system-ui, -apple-system, sans-serif;
  --font-mono: ui-monospace, 'SFMono-Regular', 'Cascadia Mono', Menlo, monospace;

  /* Escala fluida. O salto entre display-1 e body é grande de propósito:
     hierarquia forte é o que impede o layout de virar folheto. */
  --fs-display-1: clamp(2.5rem, 1.35rem + 5.1vw, 5.25rem);
  --fs-display-2: clamp(2rem, 1.25rem + 3.3vw, 3.75rem);
  --fs-h2: clamp(1.75rem, 1.2rem + 2.4vw, 3rem);
  --fs-h3: clamp(1.25rem, 1.05rem + 0.9vw, 1.75rem);
  --fs-h4: clamp(1.0625rem, 0.99rem + 0.34vw, 1.25rem);
  --fs-lead: clamp(1.0625rem, 0.98rem + 0.42vw, 1.3125rem);
  --fs-body: 1rem;
  --fs-sm: 0.9375rem;
  --fs-xs: 0.8125rem;
  --fs-kicker: 0.75rem;

  --lh-tight: 1.06;
  --lh-snug: 1.22;
  --lh-normal: 1.6;
  --lh-relaxed: 1.72;

  --tracking-display: -0.035em;
  --tracking-heading: -0.02em;
  --tracking-kicker: 0.16em;

  /* ============================================================
     4. ESPAÇAMENTO E MEDIDA
     ============================================================ */
  --sp-1: 0.25rem;
  --sp-2: 0.5rem;
  --sp-3: 0.75rem;
  --sp-4: 1rem;
  --sp-5: 1.5rem;
  --sp-6: 2rem;
  --sp-7: 2.5rem;
  --sp-8: 3rem;
  --sp-9: 4rem;
  --sp-10: 5rem;
  --sp-11: 6.5rem;

  --section-pad: clamp(4rem, 2.5rem + 6vw, 8rem);
  --container: 76rem;
  --container-narrow: 48rem;
  --gutter: clamp(1.25rem, 0.9rem + 1.6vw, 2.5rem);
  --measure: 66ch;

  /* ============================================================
     5. FORMA
     Raios deliberadamente diferentes por família de componente.
     Arredondamento uniforme em tudo é a assinatura visual de template.
     ============================================================ */
  --radius-xs: 4px;
  --radius-sm: 8px;
  --radius-md: 14px;
  --radius-lg: 22px;
  --radius-pill: 999px;

  /* Gesto de assinatura do projeto: canto cortado na diagonal.
     Referência ao vetor de movimento e ao recorte de dado em gráfico. */
  --notch: 20px;
  --notch-sm: 12px;

  --border-w: 1px;
  --rule-w: 3px;

  /* ============================================================
     6. MOVIMENTO
     Curvas com leve overshoot na entrada, saída seca. Nada de bounce.
     ============================================================ */
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --dur-fast: 140ms;
  --dur-base: 260ms;
  --dur-slow: 620ms;

  /* ============================================================
     7. CAMADAS
     ============================================================ */
  --z-base: 1;
  --z-sticky: 100;
  --z-header: 200;
  --z-drawer: 300;
  --z-modal: 400;
  --z-skip: 500;

  color-scheme: light;
}

/* ==============================================================
   TEMA ESCURO
   Aplicado por [data-theme="dark"] no <html>. O script em
   accessibility.js define esse atributo a partir da escolha do
   visitante ou da preferência do sistema.
   ============================================================== */
:root[data-theme='dark'] {
  --surface-page: var(--navy-950);
  --surface-1: #0A1729;
  --surface-2: #0F2138;
  --surface-3: #16304C;
  --surface-sunken: #071322;

  --text-strong: #EEF3F9;
  --text-body: #C2D0E0;
  --text-muted: #8FA2B8;
  --text-on-brand: var(--navy-950);

  --border: rgba(148, 176, 210, 0.16);
  --border-strong: rgba(148, 176, 210, 0.30);
  --border-subtle: rgba(148, 176, 210, 0.09);

  --brand: #DCE7F5;
  --brand-hover: var(--n-0);
  --brand-tint: rgba(125, 227, 239, 0.09);

  --cool: var(--teal-400);
  --cool-strong: var(--teal-300);
  --cool-tint: rgba(34, 193, 214, 0.13);

  --warm: var(--amber-400);
  --warm-text: var(--amber-400);
  --warm-tint: rgba(251, 191, 36, 0.15);

  --positive: var(--green-400);
  --negative: var(--red-400);

  --focus-ring: var(--teal-300);
  --selection-bg: rgba(34, 193, 214, 0.28);
  --grid-line: rgba(148, 197, 255, 0.06);

  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
  --shadow-md: 0 4px 8px rgba(0, 0, 0, 0.42), 0 16px 32px -8px rgba(0, 0, 0, 0.5);
  --shadow-lg: 0 12px 24px rgba(0, 0, 0, 0.45), 0 36px 64px -16px rgba(0, 0, 0, 0.6);
  --shadow-inset: inset 0 1px 0 rgba(255, 255, 255, 0.05);

  color-scheme: dark;
}

/* ==============================================================
   SEÇÃO INVERTIDA
   Blocos escuros dentro do tema claro. Como redefinem os tokens de
   papel no próprio escopo, todo componente interno funciona sem
   nenhuma regra específica de "versão escura".
   ============================================================== */
.is-inverse {
  --surface-page: var(--navy-900);
  --surface-1: var(--navy-800);
  --surface-2: var(--navy-700);
  --surface-3: var(--navy-600);
  --surface-sunken: var(--navy-950);

  --text-strong: #F2F6FB;
  --text-body: #BFD0E4;
  --text-muted: #93A9C4;
  --text-on-brand: var(--navy-900);

  --border: rgba(160, 196, 240, 0.18);
  --border-strong: rgba(160, 196, 240, 0.34);
  --border-subtle: rgba(160, 196, 240, 0.10);

  --brand: #E7EFF9;
  --brand-hover: var(--n-0);
  --brand-tint: rgba(125, 227, 239, 0.10);

  --cool: var(--teal-400);
  --cool-strong: var(--teal-300);
  --cool-tint: rgba(34, 193, 214, 0.14);

  --warm: var(--amber-400);
  --warm-text: var(--amber-400);
  --warm-tint: rgba(251, 191, 36, 0.16);

  --positive: var(--green-400);
  --focus-ring: var(--teal-300);
  --grid-line: rgba(148, 197, 255, 0.07);

  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.35);
  --shadow-md: 0 8px 20px -6px rgba(0, 0, 0, 0.45);
  --shadow-lg: 0 24px 56px -16px rgba(0, 0, 0, 0.55);
  --shadow-inset: inset 0 1px 0 rgba(255, 255, 255, 0.06);

  color-scheme: dark;
}

/* No tema escuro a seção invertida não pode ficar mais escura que a
   página, senão a alternância de ritmo some. Aqui ela sobe um degrau. */
:root[data-theme='dark'] .is-inverse {
  --surface-page: #0D1E33;
  --surface-1: #12263E;
  --surface-2: #17304C;
  --surface-3: #1E3C5E;
}
