/* =========================================================================
   Tokens de design do painel admin (produção).
   Origem: docs/design/admin/colors_and_type.css (Claude Design "Painel
   Translation Proxy", importado 17/07/2026) + <style> inline de
   docs/design/admin/design.dc.html (brand/ok/warn).
   shadcn/ui neutral base + Tailwind v4 style, oklch, light+dark.

   Diferenças em relação ao arquivo de referência (docs/design/admin/):
   - Bradesco Sans (proprietária, do starter do design-system) trocada por
     Inter (open, SIL OFL) — ver docs/design/admin/README.md decisão 1.
   - @import de Geist Mono via Google Fonts (CDN) REMOVIDO — ver README.md
     decisão 2. --font-mono usa stack de sistema.
   - Zero requisição externa em runtime: fontes .woff2 locais em
     internal/adminweb/static/fonts/, servidas via embed.FS.
   ========================================================================= */

/* --- Inter (open, SIL OFL) — pesos 400/500/600/700, arquivos locais ------- */
@font-face { font-family: "Inter"; font-weight: 400; font-style: normal; font-display: swap; src: url("/static/fonts/Inter-Regular.woff2")  format("woff2"); }
@font-face { font-family: "Inter"; font-weight: 500; font-style: normal; font-display: swap; src: url("/static/fonts/Inter-Medium.woff2")   format("woff2"); }
@font-face { font-family: "Inter"; font-weight: 600; font-style: normal; font-display: swap; src: url("/static/fonts/Inter-SemiBold.woff2") format("woff2"); }
@font-face { font-family: "Inter"; font-weight: 700; font-style: normal; font-display: swap; src: url("/static/fonts/Inter-Bold.woff2")     format("woff2"); }

:root {
  --font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-heading: var(--font-sans);
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

  --text-xs: 0.75rem;   --text-sm: 0.875rem; --text-base: 1rem;   --text-lg: 1.125rem;
  --text-xl: 1.25rem;   --text-2xl: 1.5rem;  --text-3xl: 1.875rem; --text-4xl: 2.25rem; --text-5xl: 3rem;
  --leading-tight: 1.2; --leading-snug: 1.35; --leading-normal: 1.5; --leading-loose: 1.75;
  --tracking-tight: -0.02em; --tracking-normal: 0; --tracking-wide: 0.02em;

  --radius: 0.625rem;
  --radius-sm: calc(var(--radius) * 0.6); --radius-md: calc(var(--radius) * 0.8);
  --radius-lg: var(--radius); --radius-xl: calc(var(--radius) * 1.4); --radius-2xl: calc(var(--radius) * 1.8);

  --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem; --space-4: 1rem; --space-5: 1.25rem;
  --space-6: 1.5rem; --space-8: 2rem; --space-10: 2.5rem; --space-12: 3rem; --space-16: 4rem;

  --shadow-xs: 0 1px 2px 0 oklch(0 0 0 / 0.05);
  --shadow-sm: 0 1px 3px 0 oklch(0 0 0 / 0.08), 0 1px 2px -1px oklch(0 0 0 / 0.08);
  --shadow-md: 0 4px 6px -1px oklch(0 0 0 / 0.08), 0 2px 4px -2px oklch(0 0 0 / 0.06);
  --shadow-lg: 0 10px 15px -3px oklch(0 0 0 / 0.08), 0 4px 6px -4px oklch(0 0 0 / 0.04);
  --shadow-xl: 0 20px 25px -5px oklch(0 0 0 / 0.10), 0 8px 10px -6px oklch(0 0 0 / 0.05);

  /* Light theme (shadcn neutral) */
  --background: oklch(1 0 0); --foreground: oklch(0.145 0 0);
  --card: oklch(1 0 0); --card-foreground: oklch(0.145 0 0);
  --popover: oklch(1 0 0); --popover-foreground: oklch(0.145 0 0);
  --primary: oklch(0.205 0 0); --primary-foreground: oklch(0.985 0 0);
  --secondary: oklch(0.97 0 0); --secondary-foreground: oklch(0.205 0 0);
  --muted: oklch(0.97 0 0); --muted-foreground: oklch(0.556 0 0);
  --accent: oklch(0.97 0 0); --accent-foreground: oklch(0.205 0 0);
  --destructive: oklch(0.577 0.245 27.325);
  --border: oklch(0.922 0 0); --input: oklch(0.922 0 0); --ring: oklch(0.708 0 0);
  --chart-1: oklch(0.87 0 0); --chart-2: oklch(0.556 0 0); --chart-3: oklch(0.439 0 0);
  --chart-4: oklch(0.371 0 0); --chart-5: oklch(0.269 0 0);
  --sidebar: oklch(0.985 0 0); --sidebar-foreground: oklch(0.145 0 0);
  --sidebar-border: oklch(0.922 0 0);
}

.dark {
  --background: oklch(0.145 0 0); --foreground: oklch(0.985 0 0);
  --card: oklch(0.205 0 0); --card-foreground: oklch(0.985 0 0);
  --popover: oklch(0.205 0 0); --popover-foreground: oklch(0.985 0 0);
  --primary: oklch(0.922 0 0); --primary-foreground: oklch(0.205 0 0);
  --secondary: oklch(0.269 0 0); --secondary-foreground: oklch(0.985 0 0);
  --muted: oklch(0.269 0 0); --muted-foreground: oklch(0.708 0 0);
  --accent: oklch(0.269 0 0); --accent-foreground: oklch(0.985 0 0);
  --destructive: oklch(0.704 0.191 22.216);
  --border: oklch(1 0 0 / 10%); --input: oklch(1 0 0 / 15%); --ring: oklch(0.556 0 0);
  --sidebar: oklch(0.205 0 0); --sidebar-foreground: oklch(0.985 0 0);
  --sidebar-border: oklch(1 0 0 / 10%);
}

/* Brand + semânticas (do <style> inline do mockup) */
:root {
  --brand: #6d28d9; --brand-fg: #fff;
  --brand-weak: color-mix(in oklch, var(--brand) 14%, transparent);
  --brand-ring: color-mix(in oklch, var(--brand) 40%, transparent);
  --brand-strong: color-mix(in oklch, var(--brand) 84%, #000);
  --ok: oklch(0.56 0.13 155); --ok-weak: color-mix(in oklch, var(--ok) 15%, transparent);
  --warn: oklch(0.62 0.13 66); --warn-weak: color-mix(in oklch, var(--warn) 16%, transparent);
  /* Scrim de sobreposição (backdrop de modal <dialog> e da sidebar mobile). */
  --overlay: color-mix(in oklch, #000 48%, transparent);

  /* --- Variantes "-contrast" (Task 10, passe de a11y) --------------------
     --ok/--warn/--destructive/--brand são ótimos como base de badges/links,
     mas usados como TEXTO sobre seu próprio fundo "fraco" (badge-active,
     badge-degraded, alert-error/success, btn-danger, stat-tile-delta) caem
     abaixo de 4.5:1 (WCAG AA texto normal) no tema claro — verificado por
     cálculo manual (oklch -> linear sRGB -> luminância relativa) na Task 10.
     --brand não tem variante escura (permanece #6d28d9 em .dark), então
     texto brand sobre fundo escuro
     (nav-item-active, badge-planned) cai para ~2.3:1. As variantes abaixo
     só valem para TEXTO nesses contextos; fundos (--ok-weak/--warn-weak/
     --brand-weak) continuam com a cor base, inalterados. */
  --ok-contrast: oklch(0.46 0.13 155);
  --warn-contrast: oklch(0.5 0.13 66);
  --destructive-contrast: oklch(0.48 0.245 27.325);
  --brand-contrast: var(--brand);
}
.dark {
  --ok: oklch(0.74 0.15 158); --ok-weak: color-mix(in oklch, var(--ok) 20%, transparent);
  --warn: oklch(0.8 0.14 78); --warn-weak: color-mix(in oklch, var(--warn) 20%, transparent);
  /* Scrim um pouco mais forte no escuro (fundo já escuro precisa de mais
     contraste para o conteúdo elevado se destacar). */
  --overlay: color-mix(in oklch, #000 60%, transparent);

  /* No escuro, --ok/--warn/--destructive já têm luminância alta o bastante
     (>=5:1 medido) — a variante "-contrast" só repete o valor normal. Só
     --brand precisa de um valor próprio aqui: não tem override de tema
     escuro (fica em #6d28d9 os dois temas) e como TEXTO sobre fundo escuro
     (puro ou o brand-weak 14%) isso mede ~2.3-2.8:1; a versão mais clara
     abaixo mede >=6:1 nos mesmos fundos. */
  --ok-contrast: var(--ok);
  --warn-contrast: var(--warn);
  --destructive-contrast: var(--destructive);
  --brand-contrast: oklch(0.72 0.16 293);
}
