/* ============================================================================
   tokens.css — Camada de tokens da aplicação (docs/redesign-ux/04-SISTEMA-VISUAL.md)
   Origem: Manual da Marca Grupo Pulse Vida v2.0 (out/2026) e pacote
   04-Cores-e-Tipografia/tokens.css. Carregado em base.html ANTES de pulse.css
   e de /brand.css (que sobrescreve a camada semântica por Organization).

   Três camadas:
   1) --pv-*          valores da marca (claro/escuro)        — fixos por marca
   2) --color-*/--font-*/--radius-*  camada semântica       — /brand.css sobrescreve por Organization
   3) aliases legados (--blue, --green, --ink, ...)         — mantêm os 99 CSS atuais funcionando
   Cores de ESTADO (--color-success/warning/error/info) nunca são sobrescritas por clínica.
   Pares verificados (texto/fundo): grafite/branco 16,9 · cinza/branco 6,0 · azul/branco 5,4 ·
   índigo/branco 5,6 · sucesso/branco 5,3 · atenção/branco 5,0 · erro/branco 5,2 ·
   branco/marinho 10,8 · limão/marinho 8,6 · tema escuro ≥ 6,6 em todos os pares de texto.
   ========================================================================== */

/* Fontes locais (copiar de 04-Cores-e-Tipografia/fontes/ para static/fonts/) */
@font-face{font-family:"Quicksand";font-weight:400;font-display:swap;src:url("../fonts/quicksand-400.fe13b76807cc.woff2") format("woff2")}
@font-face{font-family:"Quicksand";font-weight:500;font-display:swap;src:url("../fonts/quicksand-500.a227ded7064f.woff2") format("woff2")}
@font-face{font-family:"Quicksand";font-weight:600;font-display:swap;src:url("../fonts/quicksand-600.8dc6514fff29.woff2") format("woff2")}
@font-face{font-family:"Quicksand";font-weight:700;font-display:swap;src:url("../fonts/quicksand-700.f5f4fc785bfb.woff2") format("woff2")}
@font-face{font-family:"Nunito";font-weight:400;font-display:swap;src:url("../fonts/nunito-400.54ef89211626.woff2") format("woff2")}
@font-face{font-family:"Nunito";font-weight:600;font-display:swap;src:url("../fonts/nunito-600.b770df7528a1.woff2") format("woff2")}
@font-face{font-family:"Nunito";font-weight:700;font-display:swap;src:url("../fonts/nunito-700.28a2cf182b19.woff2") format("woff2")}

:root{
  /* 1) Marca — tema claro */
  --pv-branco:#ffffff; --pv-gelo:#f3f6fb; --pv-grafite:#1d1d1b; --pv-cinza:#5c6470; --pv-linha:#d8dfea;
  --pv-azul:#2358ff; --pv-on-azul:#ffffff; --pv-azul-escuro:#1a44c9; --pv-azul-claro:#dbe6ff;
  --pv-indigo:#5065aa; --pv-marinho:#123f68; --pv-on-marinho:#ffffff; --pv-limao:#9bff24;
  --pv-turquesa:#19c3b1; --pv-turquesa-texto:#0b7d73; --pv-laranja:#ff8a1f; --pv-laranja-texto:#c24f00;
  --pv-violeta:#b185ff; --pv-violeta-texto:#5f3fd1; --pv-erro:#c6382f; --pv-foco:#2358ff;

  /* 2) Camada semântica (sobrescrita por /brand.css conforme a Organization) */
  --color-action:var(--pv-azul);            --color-on-action:var(--pv-on-azul);   --color-action-hover:var(--pv-azul-escuro);
  --color-action-soft:var(--pv-azul-claro);
  --color-brand:var(--pv-indigo);           /* marca: subtítulos, ícones, descritores */
  --color-institutional:var(--pv-marinho);  --color-on-institutional:var(--pv-on-marinho); /* barra lateral, capas, rodapés */
  --color-accent:var(--pv-limao);           --color-accent-text:var(--pv-grafite);          /* acento: nunca como texto pequeno */
  --color-bg:var(--pv-gelo); --color-surface:var(--pv-branco); --color-surface-raised:var(--pv-branco);
  --color-text:var(--pv-grafite); --color-text-muted:var(--pv-cinza); --color-line:var(--pv-linha);
  --color-focus:var(--pv-foco);

  /* Estados — NÃO configuráveis por clínica */
  --color-success:#1e7b4f; --color-success-soft:#e9f6ef;
  --color-warning:#b45309; --color-warning-soft:#fdf4e9;
  --color-error:#c6382f;   --color-error-soft:#fcecea;
  --color-info:#5065aa;    --color-info-soft:#eceff9;
  --color-neutral:#5c6470; --color-neutral-soft:#eef1f5;

  /* Tipografia */
  --font-brand:"Quicksand","Nunito",system-ui,sans-serif;
  --font-text:"Nunito","Segoe UI",system-ui,sans-serif;
  --text-page:700 28px/34px var(--font-brand);     /* título de página */
  --text-section:600 20px/26px var(--font-brand);  /* título de seção/cartão */
  --text-number:700 32px/36px var(--font-brand);   /* valor em destaque */
  --text-body:400 16px/24px var(--font-text);
  --text-body-strong:700 16px/24px var(--font-text);
  --text-small:400 14px/20px var(--font-text);     /* tabelas densas, metadados */
  --text-caption:600 12px/16px var(--font-text);   /* legendas; só em grafite/cinza */
  --text-descriptor:700 14px/18px var(--font-brand);   /* descritor: espaçamento .2em e minúsculas no uso */

  /* Espaço, raio, sombra, movimento */
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px; --space-6:24px; --space-8:32px; --space-12:48px; --space-16:64px;
  --radius-sm:4px; --radius-md:8px; --radius-lg:16px; --radius-pill:999px; --radius-icon:21%;
  --shadow-float:0 8px 24px rgba(18,63,104,.16); --shadow-card:0 1px 2px rgba(18,63,104,.06);
  --motion-fast:120ms; --motion-base:200ms; --motion-ease:cubic-bezier(.2,.7,.2,1);
  --control-height:44px; --row-height:44px; --sidebar-width:240px; --sidebar-collapsed:64px; --topbar-height:64px; --drawer-width:480px;

  /* 3) Aliases legados — mantêm pulse.css e os 99 CSS por página funcionando durante a migração */
  --blue:var(--color-action); --blue-dark:var(--color-action-hover);
  --green:var(--color-brand);           /* era texto verde (.eyebrow, .status-dot); passa a índigo (5,6:1) */
  --mint:var(--color-action-soft); --lime:var(--color-accent);
  --ink:var(--color-text); --muted:var(--color-text-muted); --line:var(--color-line);
  --surface:var(--color-surface); --bg:var(--color-bg); --radius:var(--radius-lg); --shadow:var(--shadow-float);

  font-family:var(--font-text); color:var(--color-text); background:var(--color-bg); font-size:16px; line-height:1.5;
  color-scheme:light;
}

/* Tema escuro: somente por escolha explícita (data-theme="dark"); a troca automática pelo sistema fica para quando houver alternância na interface, para não surpreender painel e totem. */
:root[data-theme="dark"]{
  --pv-branco:#182637; --pv-gelo:#0f1b2b; --pv-grafite:#f3f6fb; --pv-cinza:#aab3c2; --pv-linha:#2a3a50;
  --pv-azul:#7fa3ff; --pv-on-azul:#0f1b2b; --pv-azul-escuro:#5f8bff; --pv-azul-claro:#1c2f52;
  --pv-indigo:#aeb9e6; --pv-marinho:#9fb8d8; --pv-on-marinho:#0f1b2b; --pv-limao:#9bff24;
  --pv-turquesa-texto:#5fe0cf; --pv-laranja-texto:#ffab63; --pv-violeta-texto:#c9b2ff; --pv-erro:#f08a7d; --pv-foco:#7fa3ff;
  --color-success:#5fd39a; --color-success-soft:#15302a;
  --color-warning:#ffb45e; --color-warning-soft:#33250f;
  --color-error:#f08a7d;   --color-error-soft:#331b19;
  --color-info:#aeb9e6;    --color-info-soft:#1f2a4a;
  --color-neutral:#aab3c2; --color-neutral-soft:#1f2a3a;
  --color-institutional:#0b1a2c; --color-on-institutional:#f3f6fb;
  --shadow-float:0 8px 24px rgba(0,0,0,.5); color-scheme:dark;
}

/* Foco visível uniforme (WCAG 2.2 — 2.4.11/2.4.13) */
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:var(--radius-sm)}

/* Movimento reduzido */
@media (prefers-reduced-motion:reduce){:root{--motion-fast:0ms;--motion-base:0ms}*{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}

/* Impressão: cartões e recibos não herdam o tema escuro */
@media print{:root{color-scheme:light;--color-bg:#fff;--color-surface:#fff;--color-text:#1d1d1b}}
