/* =============================================================================
   FILE:     branding.css
   SCOPE:    Warenwirtschaft v5.35.0 — Auto-Dark-Mode & Semantische Aliasse.
             Muss als ERSTES Stylesheet in <head> geladen werden, damit
             @media (prefers-color-scheme) vor dem ersten Paint greift.

   STRATEGIE:
     1. Semantische Aliasse (--primary, --border, --success, --danger, --warning)
        werden fuer alle Theme-Klassen definiert — neue Module wie import-wizard
        verwenden diese Bezeichnungen.
     2. Auto-Dark-Mode: @media (prefers-color-scheme: dark) greift,
        wenn html KEIN explizites theme-* Klasse traegt (= kein gespeichertes
        Nutzer-Praeference). Setzt alle Dark-Mode-Variablen direkt.
     3. FOUC-Praevention: Dieses Stylesheet ist render-blockierend (sync <link>).
        Das theme-init.js Inline-Skript in <head> setzt das html-Klassen-Attribut
        BEVOR diese Datei angewendet wird — erster Paint erfolgt immer
        mit dem korrekten Theme.

   VARIABLEN-HIERARCHIE (hoechste Prioritaet zuerst):
     1. Inline-Styles via _applyBranding() (style.setProperty)
     2. html.theme-dark / html.theme-modern (in app-v579.css)
     3. @media (prefers-color-scheme: dark) fuer html ohne Klasse (HIER)
     4. html-Default-Variablen in app-v579.css (Light-Mode)

   POLICY: Zero-Emoji | Kein externer CDN
   ============================================================================= */

/* ── Semantische Aliasse fuer den Light-Mode (Basis) ──────────────────────── */
/* Neue Module verwenden --primary, --border usw.                              */
/* Diese Aliasse delegieren an die bestehenden app-v579.css Variablen.         */

html {
  --primary:         var(--accent, #3b82f6);
  --primary-hover:   var(--accent-hover, #2563eb);
  --border:          var(--card-border, #e2e8f0);
  --success:         #16a34a;
  --success-bg:      rgba(22, 163, 74, 0.10);
  --success-border:  rgba(22, 163, 74, 0.30);
  --danger:          #dc2626;
  --danger-bg:       rgba(220, 38, 38, 0.10);
  --danger-border:   rgba(220, 38, 38, 0.30);
  --warning:         #d97706;
  --warning-bg:      rgba(217, 119, 6, 0.10);
  --warning-border:  rgba(217, 119, 6, 0.30);
  --info:            #0284c7;
  --info-bg:         rgba(2, 132, 199, 0.10);
  --info-border:     rgba(2, 132, 199, 0.30);
  --focus-ring:      rgba(59, 130, 246, 0.35);

  /* Onboarding-Overlay-Farben */
  --onboarding-bg:      #ffffff;
  --onboarding-border:  #e2e8f0;
  --onboarding-shadow:  0 8px 32px rgba(0,0,0,0.12);
  --onboarding-step-done: #16a34a;
  --onboarding-step-pending: #94a3b8;
}

/* ── Semantische Aliasse fuer Dark-Mode (html.theme-dark) ─────────────────── */

html.theme-dark {
  --primary:         var(--accent, #388bfd);
  --primary-hover:   var(--accent-hover, #58a6ff);
  --border:          var(--card-border, rgba(48,54,61,0.8));
  --success:         #22c55e;
  --success-bg:      rgba(34, 197, 94, 0.12);
  --success-border:  rgba(34, 197, 94, 0.30);
  --danger:          #ef4444;
  --danger-bg:       rgba(239, 68, 68, 0.12);
  --danger-border:   rgba(239, 68, 68, 0.30);
  --warning:         #f59e0b;
  --warning-bg:      rgba(245, 158, 11, 0.12);
  --warning-border:  rgba(245, 158, 11, 0.30);
  --info:            #38bdf8;
  --info-bg:         rgba(56, 189, 248, 0.10);
  --info-border:     rgba(56, 189, 248, 0.30);
  --focus-ring:      rgba(56, 139, 253, 0.35);

  --onboarding-bg:      #1c2333;
  --onboarding-border:  rgba(48,54,61,0.8);
  --onboarding-shadow:  0 8px 32px rgba(0,0,0,0.5);
  --onboarding-step-done: #22c55e;
  --onboarding-step-pending: #484f58;
}

/* ── Semantische Aliasse fuer Modern-Mode (html.theme-modern) ─────────────── */

html.theme-modern {
  --primary:         var(--accent, #818cf8);
  --primary-hover:   var(--accent-hover, #a5b4fc);
  --border:          var(--card-border, rgba(255,255,255,0.09));
  --success:         #4ade80;
  --success-bg:      rgba(74, 222, 128, 0.10);
  --success-border:  rgba(74, 222, 128, 0.25);
  --danger:          #f87171;
  --danger-bg:       rgba(248, 113, 113, 0.10);
  --danger-border:   rgba(248, 113, 113, 0.25);
  --warning:         #fbbf24;
  --warning-bg:      rgba(251, 191, 36, 0.10);
  --warning-border:  rgba(251, 191, 36, 0.25);
  --info:            #7dd3fc;
  --info-bg:         rgba(125, 211, 252, 0.08);
  --info-border:     rgba(125, 211, 252, 0.25);
  --focus-ring:      rgba(129, 140, 248, 0.40);

  --onboarding-bg:      rgba(255,255,255,0.06);
  --onboarding-border:  rgba(255,255,255,0.12);
  --onboarding-shadow:  0 8px 40px rgba(0,0,0,0.6);
  --onboarding-step-done: #4ade80;
  --onboarding-step-pending: #4f46e5;
}

/* ── AUTO-DARK-MODE: System-Praeferenz ───────────────────────────────────── */
/* Greift NUR wenn kein explizites Theme-Klasse gesetzt wurde.                */
/* Selektor html:not([class*="theme-"]) deckt folgende Faelle ab:             */
/*   - html ohne Klasse (frischer Browser, JS deaktiviert)                    */
/*   - html mit class="" (leerer String nach theme-init.js)                   */
/* FOUC-frei: render-blocking <link> in <head> — wird vor erstem Paint gesetzt*/

@media (prefers-color-scheme: dark) {
  html:not([class*="theme-"]) {
    /* Alle Dark-Mode-Tokens aus app-v579.css html.theme-dark — gespiegelt */
    --bg:            #0d1117;
    --surface:       #161b22;
    --card:          #21262d;
    --card-border:   rgba(48,54,61,0.8);
    --sidebar:       #161b22;
    --sidebar-text:  #8b949e;
    --sidebar-active-bg:   rgba(56,139,253,0.15);
    --sidebar-active-text: #58a6ff;
    --sidebar-hover-bg:    rgba(177,186,196,0.06);
    --topbar:        #161b22;
    --topbar-border: rgba(48,54,61,0.8);
    --text:          #e6edf3;
    --text-muted:    #8b949e;
    --text-faint:    #484f58;
    --accent:        #388bfd;
    --accent-hover:  #58a6ff;
    --th-bg:         rgba(22,27,34,0.95);
    --row-hover:     rgba(33,38,45,0.8);
    --input-bg:      #0d1117;
    --input-border:  rgba(48,54,61,0.8);
    --scrollbar-thumb: #30363d;
    --shadow:        rgba(0,0,0,0.4);
    /* Semantische Aliasse */
    --primary:         #388bfd;
    --primary-hover:   #58a6ff;
    --border:          rgba(48,54,61,0.8);
    --success:         #22c55e;
    --success-bg:      rgba(34, 197, 94, 0.12);
    --success-border:  rgba(34, 197, 94, 0.30);
    --danger:          #ef4444;
    --danger-bg:       rgba(239, 68, 68, 0.12);
    --danger-border:   rgba(239, 68, 68, 0.30);
    --warning:         #f59e0b;
    --warning-bg:      rgba(245, 158, 11, 0.12);
    --warning-border:  rgba(245, 158, 11, 0.30);
    --focus-ring:      rgba(56, 139, 253, 0.35);
    --onboarding-bg:      #1c2333;
    --onboarding-border:  rgba(48,54,61,0.8);
    --onboarding-shadow:  0 8px 32px rgba(0,0,0,0.5);
    --onboarding-step-done: #22c55e;
    --onboarding-step-pending: #484f58;
    color-scheme: dark;
  }
}

/* ── Globale Fokus-Stile ─────────────────────────────────────────────────── */
/* Verbessert Barrierefreiheit fuer alle Themes                               */

:focus-visible {
  outline: 2px solid var(--primary, #3b82f6);
  outline-offset: 2px;
}

/* ── Transitions fuer Theme-Wechsel ─────────────────────────────────────── */
/* Sanfter Uebergang wenn der Nutzer manuell zwischen Themes wechselt.       */
/* KEIN Transition beim ersten Paint (verhindert FOUC-Seiteneffekte).        */

html.theme-transitioning,
html.theme-transitioning * {
  transition:
    background-color 0.20s ease,
    color            0.20s ease,
    border-color     0.20s ease !important;
}
