/* Design-Tokens ITanDerHavel — Single Source of Truth der Blazor-Admin-UI.
   Geladen in Components/App.razor VOR app.css.

   Aufbau:
   1. :root — theme-neutrale Tokens (Geometrie, Typografie, Z-Skala, Timing)
   2. :root, [data-theme="dark"] — Dark ist der Default und gilt OHNE Attribut,
      damit ohne JavaScript (und vor dem Theme-Bootstrap) nichts aufblitzt.
   3. [data-theme="light"] — Light-Overrides, von wwwroot/theme.js gesetzt.

   Beim Ergänzen von Farben IMMER beide Themes bedienen und den Kontrast prüfen
   (Text ≥ 4.5:1 auf der jeweiligen Fläche). */

:root {
    /* ---- Geometrie ---- */
    --radius-sm: 6px;
    --radius: 10px;
    --radius-lg: 14px;
    --radius-full: 999px;

    /* ---- Spacing ----
       4-px-Grundraster; bestehende rem-Werte bleiben kompatibel und können
       schrittweise auf diese semantische Skala umgestellt werden. */
    --space-0: 0;
    --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-section: clamp(1rem, 2vw, 1.5rem);
    --space-page-inline: clamp(0.85rem, 2.2vw, 2rem);

    /* ---- Timing & Easing ---- */
    --ease: cubic-bezier(0.16, 1, 0.3, 1);
    --ease-standard: cubic-bezier(0.2, 0, 0, 1);
    --ease-emphasized: var(--ease);
    --motion-instant: 80ms;
    --motion-fast: 120ms;
    --motion-base: 180ms;
    --motion-slow: 320ms;
    --transition: var(--motion-base) var(--ease-emphasized);
    --transition-fast: var(--motion-fast) var(--ease-standard);
    --transition-slow: var(--motion-slow) var(--ease-emphasized);

    /* ---- Typografie ----
       Kein Webfont: der Stack nutzt Inter, wenn es lokal installiert ist, und
       fällt sonst auf die beste System-Schrift der Plattform zurück (0 KB,
       kein CSP-/Lizenzthema). */
    font-family: "Inter var", Inter, "Segoe UI Variable Text", "Segoe UI",
        system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
    font-feature-settings: "cv02", "cv03", "cv04", "cv11";
    --font-mono: ui-monospace, "Cascadia Mono", SFMono-Regular, Menlo, Consolas, monospace;
    /* Zahlen in Tabellen/Kennzahlen sollen untereinander fluchten. */
    --font-numeric: tabular-nums;
    --text-xs: 0.72rem;
    --text-sm: 0.82rem;
    --text-base: 0.9375rem;
    --text-md: 1rem;
    --text-lg: 1.125rem;
    --text-xl: clamp(1.35rem, 2vw, 1.65rem);
    --text-display: clamp(1.75rem, 3vw, 2.35rem);
    --leading-tight: 1.2;
    --leading-normal: 1.55;
    --leading-relaxed: 1.7;
    --weight-medium: 550;
    --weight-semibold: 650;
    --weight-bold: 720;
    --tracking-tight: -0.025em;
    --tracking-eyebrow: 0.09em;

    /* ---- Semantische Surface- und Elevation-Aliasse ----
       Die bestehenden Farbtokens bleiben die Quelle; diese Namen beschreiben
       die Rolle einer Fläche und brechen daher keine vorhandene Verwendung. */
    --surface-canvas: var(--bg);
    --surface-primary: var(--panel);
    --surface-secondary: var(--panel-2);
    --surface-interactive: var(--panel-hover);
    --surface-input: var(--input-bg);
    --surface-glass: var(--panel-glass);
    --elevation-flat: none;
    --elevation-low: var(--shadow-1);
    --elevation-raised: var(--shadow-2);
    --elevation-accent: var(--glow-accent);

    /* ---- Z-Index-Skala ---- */
    --z-nav: 40;
    --z-modal: 50;
    --z-palette: 55;
    --z-toast: 60;
}

/* ============================================================
   Dark (Default) — „Linear"-Anmutung: tiefe, leicht blaustichige
   Flächen, hauchdünne Borders aus Weiß-Alpha, Indigo-Akzent.
   ============================================================ */
:root,
[data-theme="dark"] {
    color-scheme: dark;

    /* Flächen */
    --bg: #0b0c10;
    --bg-glow: radial-gradient(1100px 620px at 82% -12%, rgba(94, 106, 210, 0.14), transparent 62%);
    --panel: #14151b;
    --panel-2: #191a21;
    --panel-hover: #1c1d25;
    --panel-glass: rgba(24, 25, 32, 0.72);
    --input-bg: #0f1015;
    --surface-highlight: rgba(255, 255, 255, 0.035);
    --surface-accent: linear-gradient(135deg, rgba(124, 134, 232, 0.14), rgba(167, 139, 250, 0.06));
    --surface-accent-strong: linear-gradient(135deg, rgba(94, 106, 210, 0.22), rgba(167, 139, 250, 0.10));

    /* Text */
    --text: #e9eaf0;
    --text-strong: #f7f8fb;
    --muted: #9aa1b3; /* 7.2:1 auf --panel */

    /* Marke: Indigo → Violett */
    --accent: #7c86e8;          /* Flächen/Rahmen/Icons */
    --accent-strong: #5e6ad2;   /* gefüllte Buttons */
    --accent-2: #a78bfa;
    --accent-text: #a5adf5;     /* Links & Text auf dunklem Grund, 7.5:1 */
    --accent-grad: linear-gradient(135deg, var(--accent-strong) 0%, var(--accent-2) 100%);
    --accent-button-grad: linear-gradient(135deg, #505cae 0%, #7054bd 100%);
    --on-accent: #ffffff;
    --accent-soft: rgba(124, 134, 232, 0.12);
    --accent-softer: rgba(124, 134, 232, 0.07);
    --accent-ring: rgba(124, 134, 232, 0.28);

    /* Severity — einheitliches Vokabular: ok | warn | danger | info | neutral */
    --ok: #3ddc97;
    --ok-text: #6ee7b7;
    --ok-bg: rgba(61, 220, 151, 0.10);
    --ok-border: rgba(61, 220, 151, 0.32);
    --warn: #f5a524;
    --warn-text: #fbbf24;
    --warn-bg: rgba(245, 165, 36, 0.10);
    --warn-border: rgba(245, 165, 36, 0.36);
    --danger: #f2555a;
    /* Gefuellte Danger-Flaeche mit weisser Schrift: --danger selbst ist zu hell
       (nur 3.4:1), deshalb ein abgedunkelter Ton fuer Buttons (4.9:1). */
    --danger-solid: #cc3a41;
    --danger-text: #ff8a90;
    --danger-bg: rgba(242, 85, 90, 0.12);
    --danger-border: rgba(242, 85, 90, 0.40);
    --info: var(--accent);
    --info-text: var(--accent-text);
    --info-bg: var(--accent-soft);
    --info-border: rgba(124, 134, 232, 0.26);
    --neutral: #5b6478;
    --neutral-bg: var(--panel-2);
    --neutral-border: var(--border);

    /* Rahmen & Schatten — Hairlines aus Weiß-Alpha statt Vollton */
    --border: rgba(255, 255, 255, 0.09);
    --border-strong: rgba(255, 255, 255, 0.16);
    --shadow-1: 0 1px 2px rgba(0, 0, 0, 0.5);
    --shadow-2: 0 12px 34px rgba(0, 0, 0, 0.55), 0 2px 8px rgba(0, 0, 0, 0.35);
    --shadow-inset: inset 0 1px rgba(255, 255, 255, 0.035);
    --glow-accent: 0 0 0 1px var(--accent-ring), 0 6px 22px rgba(94, 106, 210, 0.22);
    --backdrop: rgba(6, 7, 11, 0.7);
    --scrollbar: rgba(255, 255, 255, 0.14);
    --scrollbar-hover: rgba(255, 255, 255, 0.24);
    /* Aufhellung für Hover/Innenflächen, in beiden Themes „nach vorne" */
    --overlay-1: rgba(255, 255, 255, 0.04);
    --overlay-2: rgba(255, 255, 255, 0.07);
}

/* ============================================================
   Light — gleiche Semantik, kühles Neutralgrau, kräftigeres Indigo,
   damit Text und Rahmen auf Weiß AA-konform bleiben.
   ============================================================ */
[data-theme="light"] {
    --accent-button-grad: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);
    color-scheme: light;

    --bg: #f6f7f9;
    --bg-glow: radial-gradient(1100px 620px at 82% -12%, rgba(94, 106, 210, 0.10), transparent 62%);
    --panel: #ffffff;
    --panel-2: #f2f4f8;
    --panel-hover: #eef1f6;
    --panel-glass: rgba(255, 255, 255, 0.78);
    --input-bg: #ffffff;
    --surface-highlight: rgba(255, 255, 255, 0.72);
    --surface-accent: linear-gradient(135deg, rgba(79, 70, 229, 0.09), rgba(124, 58, 237, 0.035));
    --surface-accent-strong: linear-gradient(135deg, rgba(79, 70, 229, 0.14), rgba(124, 58, 237, 0.07));

    --text: #16181f;
    --text-strong: #0a0c12;
    --muted: #5b6478; /* 5.9:1 auf Weiß */

    --accent: #4f46e5;
    --accent-strong: #4f46e5;
    --accent-2: #7c3aed;
    --accent-text: #4338ca; /* 7.4:1 auf Weiß */
    --accent-grad: linear-gradient(135deg, var(--accent-strong) 0%, var(--accent-2) 100%);
    --on-accent: #ffffff;
    --accent-soft: rgba(79, 70, 229, 0.09);
    --accent-softer: rgba(79, 70, 229, 0.05);
    --accent-ring: rgba(79, 70, 229, 0.32);

    --ok: #0f9d63;
    --ok-text: #06744a; /* 4.9:1 auf Weiß */
    --ok-bg: rgba(15, 157, 99, 0.10);
    --ok-border: rgba(15, 157, 99, 0.38);
    --warn: #d97706;
    --warn-text: #94510a; /* 5.3:1 auf Weiß */
    --warn-bg: rgba(217, 119, 6, 0.11);
    --warn-border: rgba(217, 119, 6, 0.40);
    --danger: #dc2626;
    --danger-solid: #c81e1e; /* weisse Schrift: 5.8:1 */
    --danger-text: #b42318; /* 5.9:1 auf Weiß */
    --danger-bg: rgba(220, 38, 38, 0.09);
    --danger-border: rgba(220, 38, 38, 0.36);
    --info: var(--accent);
    --info-text: var(--accent-text);
    --info-bg: var(--accent-soft);
    --info-border: rgba(79, 70, 229, 0.26);
    --neutral: #6b7280;
    --neutral-bg: var(--panel-2);
    --neutral-border: var(--border);

    --border: rgba(14, 18, 28, 0.11);
    --border-strong: rgba(14, 18, 28, 0.20);
    --shadow-1: 0 1px 2px rgba(14, 18, 28, 0.06);
    --shadow-2: 0 12px 30px rgba(14, 18, 28, 0.12), 0 2px 6px rgba(14, 18, 28, 0.06);
    --shadow-inset: inset 0 1px rgba(255, 255, 255, 0.75);
    --glow-accent: 0 0 0 1px var(--accent-ring), 0 6px 20px rgba(79, 70, 229, 0.16);
    --backdrop: rgba(20, 24, 33, 0.42);
    --scrollbar: rgba(14, 18, 28, 0.20);
    --scrollbar-hover: rgba(14, 18, 28, 0.32);
    --overlay-1: rgba(14, 18, 28, 0.03);
    --overlay-2: rgba(14, 18, 28, 0.06);
}
