/* ============================================================
   DESIGN TOKENS — FerruciSegMed SST SaaS
   Fonte canônica de variáveis. Nunca usar valores diretos nas views.
   Modificado: 2026-03-18
   ============================================================ */

/* ── Paleta de Cores ── */
:root {
  /* Primary (Indigo) */
  --color-primary-50:  #eef2ff;
  --color-primary-100: #e0e7ff;
  --color-primary-200: #c7d2fe;
  --color-primary-300: #a5b4fc;
  --color-primary-400: #818cf8;
  --color-primary-500: #6366f1;
  --color-primary-600: #4f46e5;
  --color-primary-700: #4338ca;
  --color-primary-800: #3730a3;
  --color-primary-900: #312e81;

  /* Success (Emerald) */
  --color-success-50:  #ecfdf5;
  --color-success-100: #d1fae5;
  --color-success-500: #10b981;
  --color-success-600: #059669;
  --color-success-700: #047857;

  /* Danger (Red) */
  --color-danger-50:   #fef2f2;
  --color-danger-100:  #fee2e2;
  --color-danger-500:  #ef4444;
  --color-danger-600:  #dc2626;
  --color-danger-700:  #b91c1c;

  /* Warning (Amber) */
  --color-warning-50:  #fffbeb;
  --color-warning-100: #fef3c7;
  --color-warning-500: #f59e0b;
  --color-warning-600: #d97706;

  /* Info (Sky) */
  --color-info-50:     #f0f9ff;
  --color-info-100:    #e0f2fe;
  --color-info-500:    #0ea5e9;
  --color-info-600:    #0284c7;

  /* Neutral (Slate) */
  --color-gray-50:     #f8fafc;
  --color-gray-100:    #f1f5f9;
  --color-gray-200:    #e2e8f0;
  --color-gray-300:    #cbd5e1;
  --color-gray-400:    #94a3b8;
  --color-gray-500:    #64748b;
  --color-gray-600:    #475569;
  --color-gray-700:    #334155;
  --color-gray-800:    #1e293b;
  --color-gray-900:    #0f172a;
  --color-gray-950:    #020617;

  /* ── Tokens Semânticos (Light Mode) ── */
  --color-bg:          #f8fafc;
  --color-bg-card:     #ffffff;
  --color-bg-secondary:#f1f5f9;
  --color-bg-hover:    #f8fafc;
  --color-bg-muted:    #f1f5f9;
  --color-bg-subtle:   #e2e8f0;

  --color-text:        #1e293b;
  --color-text-secondary: #475569;
  --color-text-muted:  #64748b;   /* slate-500 — contraste AA em fundo claro (~4.6:1) */
  --color-text-disabled:#94a3b8;
  --color-text-label:  #374151;

  --color-border:      #e2e8f0;
  --color-border-input:#cbd5e1;
  --color-divide:      #f1f5f9;

  --color-primary:     var(--color-primary-500);
  --color-primary-hover: var(--color-primary-600);
  --color-success:     var(--color-success-500);
  --color-danger:      var(--color-danger-500);
  --color-warning:     var(--color-warning-500);
  --color-info:        var(--color-info-500);

  /* Aliases de compatibilidade (legado — usados em app.css layout) */
  --primary:           var(--color-primary-500);
  --primary-dark:      var(--color-primary-600);
  --primary-light:     var(--color-primary-50);
  --secondary:         var(--color-text-secondary);
  --success:           var(--color-success-500);
  --danger:            var(--color-danger-500);
  --warning:           var(--color-warning-500);
  --info:              var(--color-info-500);
  --bg:                var(--color-bg);
  --bg-card:           var(--color-bg-card);
  --text:              var(--color-text);
  --text-primary:      var(--color-text);
  --dark:              var(--color-gray-900);
  --white:             #ffffff;
  --border:            var(--color-border);
  --border-light:      var(--color-divide);
  --font:              var(--font-family);
  --transition:        var(--transition-base);
  --radius:            var(--radius-md);

  /* ── Tipografia ── */
  /* 'Inter' é preferida quando disponível (ver scaffold @font-face no fim deste arquivo);
     fallback seguro para a stack de sistema — sem CDN, sem quebra se a fonte não existir. */
  --font-family:       'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --font-mono:         'JetBrains Mono', 'Fira Code', 'Courier New', monospace;
  --font-size-xs:      0.75rem;
  --font-size-sm:      0.875rem;
  --font-size-base:    1rem;
  --font-size-lg:      1.125rem;
  --font-size-xl:      1.25rem;
  --font-size-2xl:     1.5rem;
  --font-size-3xl:     1.875rem;
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold:  700;
  --font-weight-extrabold: 800;
  --line-height-tight: 1.25;
  --line-height-base:  1.5;
  --line-height-relaxed: 1.625;

  /* ── Espaçamento ── */
  --spacing-1:  0.25rem;
  --spacing-2:  0.5rem;
  --spacing-3:  0.75rem;
  --spacing-4:  1rem;
  --spacing-5:  1.25rem;
  --spacing-6:  1.5rem;
  --spacing-8:  2rem;
  --spacing-10: 2.5rem;
  --spacing-12: 3rem;
  --spacing-16: 4rem;

  /* ── Border Radius ── */
  --radius-sm:   4px;
  --radius-md:   8px;
  --radius-lg:   12px;
  --radius-xl:   16px;
  --radius-2xl:  24px;
  --radius-full: 9999px;
  --radius-input: 8px;
  --radius-card:  12px;
  --radius-badge: 100px;

  /* ── Sombras ── */
  --shadow-xs:         0 0 1px rgba(0,0,0,.05);
  --shadow-sm:         0 1px 2px rgba(0,0,0,.05);
  --shadow-md:         0 4px 6px rgba(0,0,0,.07);
  --shadow-lg:         0 10px 15px rgba(0,0,0,.1);
  --shadow-xl:         0 20px 25px rgba(0,0,0,.1);
  --shadow-card:       0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);
  --shadow-card-hover: 0 4px 12px rgba(0,0,0,.1);
  --shadow-modal:      0 20px 60px rgba(0,0,0,.2);
  --shadow-focus:      0 0 0 3px rgba(99,102,241,.18);
  --shadow-focus-sm:   0 0 0 3px rgba(99,102,241,.1);
  --shadow-focus-dark: 0 0 0 3px rgba(99,102,241,.2);
  --shadow-primary-sm: 0 2px 8px rgba(99,102,241,.12);
  --shadow-primary-md: 0 2px 8px rgba(99,102,241,.15);
  --shadow-primary-lg: 0 8px 20px rgba(99,102,241,.35);
  --shadow:            var(--shadow-md);

  /* ── Transições ── */
  --transition-fast:   150ms ease;
  --transition-base:   200ms ease;
  --transition-slow:   300ms ease;

  /* ── Z-index ── */
  --z-dropdown:  1010;
  --z-sticky:    200;
  --z-fixed:     1000;
  --z-overlay:   999;
  --z-modal:     1200;
  --z-toast:     1300;
  --z-tooltip:   1400;

  /* ── Layout ── */
  --sidebar-width: 248px;
  --header-height: 60px;
  --container:     1200px;
  --content-max:   1600px;   /* largura máx. do conteúdo admin — evita "sprawl" em telas largas */

  /* ── Risk score colors ── */
  --risk-critical: #dc3545;
  --risk-high:     #fd7e14;
  --risk-medium:   #ffc107;
  --risk-low:      #20c997;
  --risk-minimal:  #198754;

  /* ── Extended palette (violet, pink — usados em KPIs financeiros) ── */
  --color-violet-500: #8b5cf6;
  --color-violet-300: #a78bfa;
  --color-pink-500:   #ec4899;
  --color-pink-300:   #f472b6;

  /* ── Sidebar / Layout extras ── */
  --sidebar-collapsed: 64px;
  --topbar-height:     var(--header-height);
  /* Sidebar SEMPRE escura (nos dois temas). A .sidebar deve usar este token,
     não var(--dark) — que inverte para claro no [data-theme="dark"] e quebrava o dark mode. */
  --color-sidebar-bg:  #0f172a;

  /* ── Focus ring ── */
  --focus-ring:        0 0 0 3px rgba(99,102,241,.25);
  --focus-ring-danger: 0 0 0 3px rgba(239,68,68,.2);

  /* ── Site / Public palette (tokens para site.css) ── */
  --site-primary:        #1e3a5f;
  --site-primary-dark:   #152c4a;
  --site-primary-light:  #e8eef5;
  --site-accent:         #3ba4a4;
  --site-accent-hover:   #2e8a8a;
  --site-accent-light:   #e6f5f5;

  /* ── Toast colors (usado por app.css) ── */
  --color-toast-success-bg: #064e3b;
  --color-toast-error-bg:   #7f1d1d;
  --color-toast-warning-bg: #78350f;
  --color-toast-info-bg:    #075985;

  /* ── Gradientes (light — definidos aqui para override no dark) ── */
  --gradient-primary:       linear-gradient(135deg, var(--color-primary-600) 0%, var(--color-primary-400) 100%);
  --gradient-primary-hover: linear-gradient(135deg, var(--color-primary-700) 0%, var(--color-primary-500) 100%);
  --gradient-indigo-purple:       linear-gradient(135deg, #6366f1, #8b5cf6);
  --gradient-indigo-purple-hover: linear-gradient(135deg, #4f46e5, #7c3aed);

  /* ── Tokens de interação (light) ── */
  --color-bg-interactive:       rgba(255,255,255,.07);
  --color-bg-interactive-hover: rgba(99,102,241,.10);
  --color-bg-danger-hover:      rgba(239,68,68,.10);
  --color-bg-module-active:     rgba(99,102,241,.08);

  /* ── Auth light ── */
  --color-auth-section-label:    var(--color-text-muted);
  --color-auth-section-border:   var(--color-border);
  --color-auth-card-bg:          var(--color-bg-card);
  --color-auth-card-border:      rgba(226,232,240,.6);
  --color-auth-input-bg:         var(--color-bg-card);
  --color-auth-input-border:     var(--color-border-input);
  --color-auth-input-text:       var(--color-text);
  --color-auth-placeholder:      var(--color-text-muted);
  --color-auth-link:             var(--color-primary);
  --color-auth-link-hover:       var(--color-primary-hover);

  /* ── Badge light ── */
  --color-badge-success-bg:  var(--color-success-100);
  --color-badge-success-text: var(--color-success-700);
  --color-badge-danger-bg:   var(--color-danger-100);
  --color-badge-danger-text:  var(--color-danger-700);
  --color-badge-warning-bg:  var(--color-warning-100);
  --color-badge-warning-text: var(--color-warning-600);
  --color-badge-primary-bg:  var(--color-primary-100);
  --color-badge-primary-text: var(--color-primary-700);
  --color-badge-info-bg:     var(--color-info-100);
  --color-badge-info-text:    var(--color-info-600);

  /* ── Alert light ── */
  --color-alert-success-bg:     var(--color-success-50);
  --color-alert-success-text:   var(--color-success-700);
  --color-alert-success-border: var(--color-success-100);
  --color-alert-danger-bg:      var(--color-danger-50);
  --color-alert-danger-text:    var(--color-danger-700);
  --color-alert-danger-border:  var(--color-danger-100);
  --color-alert-warning-bg:     var(--color-warning-50);
  --color-alert-warning-text:   var(--color-warning-600);
  --color-alert-warning-border: var(--color-warning-100);
  --color-alert-info-bg:        var(--color-info-50);
  --color-alert-info-text:      var(--color-info-600);
  --color-alert-info-border:    var(--color-info-100);

  /* ── Icon background light ── */
  --color-icon-primary-bg:   var(--color-primary-100);
  --color-icon-primary-text: var(--color-primary-600);
  --color-icon-success-bg:   var(--color-success-100);
  --color-icon-success-text: var(--color-success-600);
  --color-icon-danger-bg:    var(--color-danger-100);
  --color-icon-danger-text:  var(--color-danger-600);
  --color-icon-warning-bg:   var(--color-warning-100);
  --color-icon-warning-text: var(--color-warning-600);
  --color-icon-info-bg:      var(--color-info-100);
  --color-icon-info-text:    var(--color-info-600);

  /* ── AI Agent light ── */
  --color-ai-agent-header-bg: var(--gradient-indigo-purple);
  --color-ai-agent-error-bg:  #fff5f5;
  --color-ai-agent-error-bdr: #fcc;
  --color-ai-result-link:     var(--color-primary-600);

  /* ── Bulk bar light ── */
  --color-bulk-bar-bg:    #eff6ff;
  --color-bulk-bar-bdr:   #bfdbfe;

  /* ── Cron log colors ── */
  --color-log-error:  var(--color-danger-600);
  --color-log-warn:   var(--color-warning-600);
  --color-log-ok:     var(--color-success-600);

  /* ── Questionnaire drag-and-drop ── */
  --q-bg-header:     #f3f4f6;
  --q-text-header:   #4b5563;
  --q-border:        #e5e7eb;
  --q-bg-row:        #ffffff;
  --q-bg-row-hover:  #f9fafb;
  --q-text-row:      #374151;
  --q-drag-over-bg:  #dbeafe;
  --q-drag-over-bdr: #3b82f6;
  --q-drag-handle:   #9ca3af;
  --q-toggle-off:    #d1d5db;
  --q-toggle-on:     #2563eb;
}


/* ── Dark Mode ── */
[data-theme="dark"] {
  /* Site palette — dark */
  --site-primary:       #5b7fc7;
  --site-primary-dark:  #4a6ab0;
  --site-primary-light: rgba(91,127,199,.15);
  --site-accent:        #4fbdbd;
  --site-accent-hover:  #3da8a8;
  --site-accent-light:  rgba(79,189,189,.15);

  /* Questionnaire drag-and-drop — dark */
  --q-bg-header:    #1e293b;
  --q-text-header:  #94a3b8;
  --q-border:       #334155;
  --q-bg-row:       #1e293b;
  --q-bg-row-hover: #0f172a;
  --q-text-row:     #e2e8f0;
  --color-bg:          #0f172a;
  --color-bg-card:     #1e293b;
  --color-bg-secondary:#1e293b;
  --color-bg-hover:    #1e293b;
  --color-bg-muted:    #334155;
  --color-bg-subtle:   #334155;

  --color-text:        #e2e8f0;
  --color-text-secondary: #cbd5e1;   /* slate-300 — secundário mais legível no escuro (~9:1) */
  --color-text-muted:  #94a3b8;       /* slate-400 — muted legível no escuro (~5:1), antes #475569 falhava (2.3:1) */
  --color-text-disabled:#64748b;
  --color-text-label:  #e2e8f0;

  --color-border:      #334155;
  --color-border-input:#475569;
  --color-divide:      #1e293b;

  --color-primary:     var(--color-primary-400);
  --color-primary-hover: var(--color-primary-300);

  /* Aliases legado */
  --primary:           var(--color-primary-400);
  --primary-dark:      var(--color-primary-300);
  --primary-light:     var(--color-primary-800);
  --secondary:         var(--color-text-secondary);
  --bg:                var(--color-bg);
  --bg-card:           var(--color-bg-card);
  --text:              var(--color-text);
  --text-primary:      var(--color-text);
  --dark:              var(--color-gray-100);
  --white:             var(--color-bg-card);
  --border:            var(--color-border);
  --border-light:      var(--color-divide);

  /* ── Tokens de interação dark (substitui hardcodes em app.css) ── */
  --color-bg-interactive:       #1e293b;  /* hover padrão (sidebar, topbar, dropdown) */
  --color-bg-interactive-hover: rgba(99,102,241,.12); /* hover com tom primário */
  --color-bg-danger-hover:      rgba(239,68,68,.12);  /* hover em item perigoso */
  --color-bg-module-active:     rgba(99,102,241,.08); /* módulo ativo (toggle) */
  --color-sidebar-bg:           #0f172a;  /* fundo fixo da sidebar dark */

  /* ── Gradientes (vars para eliminar hardcodes repetidos) ── */
  --gradient-primary:        linear-gradient(135deg, var(--color-primary-600) 0%, var(--color-primary-400) 100%);
  --gradient-primary-hover:  linear-gradient(135deg, var(--color-primary-700) 0%, var(--color-primary-500) 100%);
  --gradient-indigo-purple:  linear-gradient(135deg, #6366f1, #8b5cf6);
  --gradient-indigo-purple-hover: linear-gradient(135deg, #4f46e5, #7c3aed);
  --gradient-auth-bg:        linear-gradient(135deg, #0b1120 0%, #1e2a42 50%, #0b1120 100%);
  --gradient-auth-bg-light:  linear-gradient(135deg, #0f172a 0%, #1e1b4b 50%, #0f172a 100%);

  /* ── Toast colors dark ── */
  --color-toast-success-bg: rgba(6,78,59,.9);
  --color-toast-error-bg:   rgba(127,29,29,.9);
  --color-toast-warning-bg: rgba(120,53,15,.9);
  --color-toast-info-bg:    rgba(7,89,133,.9);

  /* ── Auth dark ── */
  --color-auth-section-label:    #475569;
  --color-auth-section-border:   #1e293b;
  --color-auth-card-bg:          #0f172a;
  --color-auth-card-border:      #1e293b;
  --color-auth-input-bg:         #1e293b;
  --color-auth-input-border:     #334155;
  --color-auth-input-text:       #e2e8f0;
  --color-auth-placeholder:      #64748b;
  --color-auth-link:             #7b9de0;
  --color-auth-link-hover:       #a5b4fc;

  /* ── Badge dark ── */
  --color-badge-success-bg:  rgba(16,185,129,.15);
  --color-badge-success-text: #34d399;
  --color-badge-danger-bg:   rgba(239,68,68,.15);
  --color-badge-danger-text:  #f87171;
  --color-badge-warning-bg:  rgba(245,158,11,.15);
  --color-badge-warning-text: #fbbf24;
  --color-badge-primary-bg:  rgba(99,102,241,.18);
  --color-badge-primary-text: #a5b4fc;
  --color-badge-info-bg:     rgba(14,165,233,.15);
  --color-badge-info-text:    #38bdf8;

  /* ── Alert dark ── */
  --color-alert-success-bg:     rgba(16,185,129,.12);
  --color-alert-success-text:   #34d399;
  --color-alert-success-border: rgba(16,185,129,.3);
  --color-alert-danger-bg:      rgba(239,68,68,.12);
  --color-alert-danger-text:    #f87171;
  --color-alert-danger-border:  rgba(239,68,68,.3);
  --color-alert-warning-bg:     rgba(245,158,11,.12);
  --color-alert-warning-text:   #fbbf24;
  --color-alert-warning-border: rgba(245,158,11,.3);
  --color-alert-info-bg:        rgba(14,165,233,.12);
  --color-alert-info-text:      #38bdf8;
  --color-alert-info-border:    rgba(14,165,233,.3);

  /* ── Icon background dark ── */
  --color-icon-primary-bg:   rgba(99,102,241,.15);
  --color-icon-primary-text: #a5b4fc;
  --color-icon-success-bg:   rgba(16,185,129,.15);
  --color-icon-success-text: #34d399;
  --color-icon-danger-bg:    rgba(239,68,68,.15);
  --color-icon-danger-text:  #f87171;
  --color-icon-warning-bg:   rgba(245,158,11,.15);
  --color-icon-warning-text: #fbbf24;
  --color-icon-info-bg:      rgba(14,165,233,.15);
  --color-icon-info-text:    #38bdf8;

  /* ── AI Agent dark ── */
  --color-ai-agent-header-bg: linear-gradient(135deg, #1e1b4b, #222);
  --color-ai-agent-error-bg:  #2a1a1a;
  --color-ai-agent-error-bdr: #5a2020;
  --color-ai-result-link:     #7da6e8;

  /* ── Bulk bar dark ── */
  --color-bulk-bar-bg:    #1e1b4b;
  --color-bulk-bar-bdr:   #3730a3;

  /* ── Cron log colors (legíveis no dark) ── */
  --color-log-error:  #f87171;
  --color-log-warn:   #fbbf24;
  --color-log-ok:     #34d399;
}

/* ── Fonte enterprise opcional (Inter) — ATIVAÇÃO PELO OPERADOR ──────────────────
   Sem CDN (regra do projeto). Para ativar a Inter:
   1) Baixe os .woff2 da Inter (SIL OFL, livre) e coloque em:  public/assets/fonts/
        inter-400.woff2  inter-500.woff2  inter-600.woff2  inter-700.woff2
   2) Descomente o bloco abaixo. A stack já prefere 'Inter' com fallback de sistema,
      então NADA quebra enquanto os arquivos não existirem.
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/inter-400.woff2') format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/inter-500.woff2') format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/inter-600.woff2') format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/inter-700.woff2') format('woff2');}
   ─────────────────────────────────────────────────────────────────────────────── */
