/* ── LibreDesk · Adwaita-Tokens ─────────────────────────────────────────────
   Eine Quelle für alle eigenen Oberflächen (Portal, PM, Roost, Startseiten).
   Regeln und Begründungen: DESIGN.md im Repo-Wurzelverzeichnis.

   Werte aus libadwaita 1.10 (GNOME 49), ausgelesen aus der Ressource
   /org/gnome/Adwaita/styles/gtk.css. Namen = libadwaita-Namen mit Vorsatz
   `--ld-`, also `--ld-accent-bg-color` entspricht `--accent-bg-color`.

   Die Datei definiert NUR Variablen, keine Regeln für Elemente. Eingebunden
   ändert sie nichts Sichtbares, bis eine Seite die Variablen benutzt.

   Hell/Dunkel:
   - ohne Attribut folgt sie dem System (prefers-color-scheme),
   - data-bs-theme="light|dark" (Portal) oder data-theme="light|dark"
     (PM, Roost) auf <html> erzwingen die Wahl des Nutzers.
   ───────────────────────────────────────────────────────────────────────── */

/* ── Hell (Grundwerte) und alles, was nicht vom Farbschema abhängt ───────── */
:root {
    /* GNOME-Akzentfarben (Einstellungen › Darstellung). Standard ist Blau. */
    --ld-accent-blue:   #3584e4;
    --ld-accent-teal:   #2190a4;
    --ld-accent-green:  #3a944a;
    --ld-accent-yellow: #c88800;
    --ld-accent-orange: #ed5b00;
    --ld-accent-red:    #e62d42;
    --ld-accent-pink:   #d56199;
    --ld-accent-purple: #9141ac;
    --ld-accent-slate:  #6f8396;

    /* Akzent: -bg für gefüllte Flächen (Knopf, Auswahl), -color für Text und
       Symbole auf normalem Grund. -color wird wie in libadwaita aus -bg
       abgeleitet (Oklab-Helligkeit begrenzt). Der Hexwert davor ist der
       Rückfall für Browser ohne relative Farbsyntax. */
    --ld-accent-bg-color: var(--ld-accent-blue);
    --ld-accent-fg-color: #ffffff;

    --ld-destructive-bg-color: #e01b24;
    --ld-destructive-fg-color: #ffffff;
    --ld-success-bg-color:     #2ec27e;
    --ld-success-fg-color:     #ffffff;
    --ld-warning-bg-color:     #e5a50a;
    --ld-warning-fg-color:     rgb(0 0 0 / 80%);
    --ld-error-bg-color:       #e01b24;
    --ld-error-fg-color:       #ffffff;

    --ld-accent-color:      #0461be;
    --ld-destructive-color: #c30000;
    --ld-success-color:     #007c3d;
    --ld-warning-color:     #905400;
    --ld-error-color:       #c30000;

    /* Flächen */
    --ld-window-bg-color:    #fafafb;
    --ld-window-fg-color:    rgb(0 0 6 / 80%);
    --ld-view-bg-color:      #ffffff;
    --ld-view-fg-color:      rgb(0 0 6 / 80%);
    --ld-headerbar-bg-color: #ffffff;
    --ld-headerbar-fg-color: rgb(0 0 6 / 80%);
    --ld-headerbar-shade-color: rgb(0 0 6 / 12%);
    --ld-sidebar-bg-color:   #ebebed;
    --ld-sidebar-fg-color:   rgb(0 0 6 / 80%);
    --ld-sidebar-border-color: rgb(0 0 6 / 7%);
    --ld-secondary-sidebar-bg-color: #f3f3f5;
    --ld-card-bg-color:      #ffffff;
    --ld-card-fg-color:      rgb(0 0 6 / 80%);
    --ld-card-shade-color:   rgb(0 0 6 / 7%);
    --ld-dialog-bg-color:    #fafafb;
    --ld-dialog-fg-color:    rgb(0 0 6 / 80%);
    --ld-popover-bg-color:   #ffffff;
    --ld-popover-fg-color:   rgb(0 0 6 / 80%);
    --ld-thumbnail-bg-color: #ffffff;
    --ld-shade-color:        rgb(0 0 6 / 7%);
    --ld-toast-bg-color:     #505053;   /* in Hell und Dunkel gleich */
    --ld-active-toggle-bg-color: #ffffff;   /* gewählter Teil eines Umschalters */
    --ld-toast-fg-color:     #ffffff;

    /* Linien, gedämpfter und gesperrter Inhalt: wie libadwaita als Deckkraft
       der aktuellen Schriftfarbe, damit sie auf jeder Fläche stimmen. */
    --ld-border-opacity:   15%;
    --ld-dim-opacity:      55%;
    --ld-disabled-opacity: 50%;
    --ld-border-color: color-mix(in srgb, currentColor var(--ld-border-opacity), transparent);

    /* Zustände für flache Knöpfe und aktivierbare Zeilen */
    --ld-hover-mix:  7%;    /* Zeile unter dem Zeiger */
    --ld-active-mix: 13%;   /* Zeile gedrückt */
    --ld-button-mix: 10%;   /* normaler Knopf (Grund) */
    --ld-button-hover-mix:  15%;
    --ld-button-active-mix: 30%;
    --ld-selected-mix: 32%; /* Akzent-Anteil einer gewählten Zeile */

    /* Schrift (Regel: docs/LIBREDESK_MASTER.md → „Schrift") */
    --ld-font-family: 'Inter', 'Adwaita Sans', system-ui, sans-serif;
    --ld-monospace-font-family: ui-monospace, 'Adwaita Mono', monospace;
    --ld-font-size: 11pt;           /* GNOME-Grundgröße, Entscheidung HKS 21.10.2026 */
    --ld-line-height: 1.4;          /* .body und .caption in libadwaita: 140 % */
    /* Typostufen relativ zur Grundgröße, Werte aus libadwaita */
    --ld-large-title-size: 300%;    /* 24pt bei 11pt Grund, Gewicht 800 */
    --ld-title-1-size: 181%;        /* Gewicht 800 */
    --ld-title-2-size: 136%;        /* Gewicht 800 */
    --ld-title-3-size: 136%;        /* Gewicht 700 */
    --ld-title-4-size: 118%;        /* Gewicht 700 */
    --ld-heading-size: 100%;        /* Gewicht 700 */
    --ld-caption-size: 82%;         /* Gewicht 400, .caption-heading 700 */

    /* Abstände: Raster aus 6 px wie in libadwaita */
    --ld-space-1: 3px;
    --ld-space-2: 6px;
    --ld-space-3: 12px;
    --ld-space-4: 18px;
    --ld-space-5: 24px;
    --ld-space-6: 36px;
    --ld-space-7: 48px;

    /* Maße */
    --ld-headerbar-height: 47px;
    --ld-row-min-height:   50px;    /* AdwActionRow */
    --ld-button-min-height: 34px;   /* Knopf mit Text; Symbolknopf 34×34 */
    --ld-clamp-width:      600px;   /* AdwClamp: Inhaltsbreite für Listen/Einstellungen */
    --ld-clamp-wide:       1000px;  /* breite Seiten (Kalender, Tabellen) */
    --ld-sidebar-width:    260px;

    /* Radien aus libadwaita 1.10 */
    --ld-radius-small:   6px;       /* Kontrollkästchen, kleine Marken */
    --ld-radius-button:  9px;       /* Knopf, Eingabefeld */
    --ld-radius-card:   12px;       /* Karte, gerahmte Liste, Dialog-Knöpfe */
    --ld-radius-popover: 15px;      /* Popover, Dialog, Fenster */
    --ld-radius-alert:  18px;       /* Rückfrage-Dialog (AdwAlertDialog) */
    --ld-radius-pill: 9999px;       /* .pill, Toast */

    /* Tiefe: Karten und gerahmte Listen haben in Hell einen weichen Schatten
       statt einer Linie. In Dunkel trägt die hellere Fläche die Kante. */
    --ld-card-shadow: 0 0 0 1px rgb(0 0 6 / 3%), 0 1px 3px 1px rgb(0 0 6 / 7%), 0 2px 6px 2px rgb(0 0 6 / 3%);
    --ld-popover-shadow: 0 0 0 1px rgb(0 0 0 / 5%), 0 1px 5px 1px rgb(0 0 0 / 9%), 0 2px 14px 3px rgb(0 0 0 / 5%);
    --ld-dialog-shadow: 0 0 14px 2px rgb(0 0 6 / 3%), 0 0 5px 2px rgb(0 0 6 / 10%), 0 0 0 1px rgb(0 0 0 / 5%);
    --ld-toast-shadow: 0 1px 3px 1px rgb(0 0 6 / 7%), 0 2px 6px 2px rgb(0 0 6 / 3%);
    --ld-backdrop-color: rgb(0 0 6 / 14%);   /* Abdunkelung hinter Dialogen */

    /* Fokus */
    --ld-focus-ring-width: 2px;
    --ld-focus-ring-offset: -2px;   /* innen liegend wie in GTK */

    /* Bewegung: libadwaita nutzt ease-out-quad mit 200 ms */
    --ld-ease: cubic-bezier(0.25, 0.46, 0.45, 0.94);
    --ld-duration: 200ms;
    --ld-duration-fast: 100ms;

    /* Umbruchpunkte (nur Doku, in @media nicht als var() nutzbar):
       schmal < 400px · mittel < 600px (Seitenleiste klappt ein) · breit ≥ 900px */
}

/* Akzent und Statusfarben wie libadwaita aus der Fläche ableiten, wenn der
   Browser relative Farben kann. Dann folgt -color jeder Akzentwahl. Die
   Dunkel-Blöcke unten setzen nur --ld-standalone-oklab um (hell: höchstens
   0.5, dunkel: mindestens 0.85), die Formel bleibt hier. */
@supports (color: oklab(from red l a b)) {
    :root {
        --ld-standalone-oklab: min(l, 0.5) a b;
        --ld-accent-color:      oklab(from var(--ld-accent-bg-color) var(--ld-standalone-oklab));
        --ld-destructive-color: oklab(from var(--ld-destructive-bg-color) var(--ld-standalone-oklab));
        --ld-success-color:     oklab(from var(--ld-success-bg-color) var(--ld-standalone-oklab));
        --ld-warning-color:     oklab(from var(--ld-warning-bg-color) var(--ld-standalone-oklab));
        --ld-error-color:       oklab(from var(--ld-error-bg-color) var(--ld-standalone-oklab));
    }
}

/* ── Dunkel ─────────────────────────────────────────────────────────────────
   Gleicher Block zweimal: einmal für „System ist dunkel und der Nutzer hat
   nichts anderes gewählt", einmal für „Nutzer hat Dunkel gewählt". */
@media (prefers-color-scheme: dark) {
    :root:not([data-bs-theme="light"]):not([data-theme="light"]) {
        --ld-destructive-bg-color: #c01c28;
        --ld-success-bg-color:     #26a269;
        --ld-warning-bg-color:     #cd9309;
        --ld-error-bg-color:       #c01c28;
        --ld-standalone-oklab: max(l, 0.85) a b;

        --ld-window-bg-color:    #222226;
        --ld-window-fg-color:    #ffffff;
        --ld-view-bg-color:      #1d1d20;
        --ld-view-fg-color:      #ffffff;
        --ld-headerbar-bg-color: #2e2e32;
        --ld-headerbar-fg-color: #ffffff;
        --ld-headerbar-shade-color: rgb(0 0 6 / 36%);
        --ld-sidebar-bg-color:   #2e2e32;
        --ld-sidebar-fg-color:   #ffffff;
        --ld-sidebar-border-color: rgb(0 0 6 / 36%);
        --ld-secondary-sidebar-bg-color: #28282c;
        --ld-card-bg-color:      rgb(255 255 255 / 8%);
        --ld-card-fg-color:      #ffffff;
        --ld-card-shade-color:   rgb(0 0 6 / 36%);
        --ld-dialog-bg-color:    #36363a;
        --ld-dialog-fg-color:    #ffffff;
        --ld-popover-bg-color:   #36363a;
        --ld-popover-fg-color:   #ffffff;
        --ld-thumbnail-bg-color: #39393d;
        --ld-shade-color:        rgb(0 0 6 / 25%);
        --ld-card-shadow: none;
        --ld-backdrop-color: rgb(0 0 6 / 36%);
        --ld-active-toggle-bg-color: rgb(255 255 255 / 20%);
    }
}
:root[data-bs-theme="dark"],
:root[data-theme="dark"] {
    --ld-destructive-bg-color: #c01c28;
    --ld-success-bg-color:     #26a269;
    --ld-warning-bg-color:     #cd9309;
    --ld-error-bg-color:       #c01c28;
    --ld-standalone-oklab: max(l, 0.85) a b;

    --ld-window-bg-color:    #222226;
    --ld-window-fg-color:    #ffffff;
    --ld-view-bg-color:      #1d1d20;
    --ld-view-fg-color:      #ffffff;
    --ld-headerbar-bg-color: #2e2e32;
    --ld-headerbar-fg-color: #ffffff;
    --ld-headerbar-shade-color: rgb(0 0 6 / 36%);
    --ld-sidebar-bg-color:   #2e2e32;
    --ld-sidebar-fg-color:   #ffffff;
    --ld-sidebar-border-color: rgb(0 0 6 / 36%);
    --ld-secondary-sidebar-bg-color: #28282c;
    --ld-card-bg-color:      rgb(255 255 255 / 8%);
    --ld-card-fg-color:      #ffffff;
    --ld-card-shade-color:   rgb(0 0 6 / 36%);
    --ld-dialog-bg-color:    #36363a;
    --ld-dialog-fg-color:    #ffffff;
    --ld-popover-bg-color:   #36363a;
    --ld-popover-fg-color:   #ffffff;
    --ld-thumbnail-bg-color: #39393d;
    --ld-shade-color:        rgb(0 0 6 / 25%);
    --ld-card-shadow: none;
    --ld-backdrop-color: rgb(0 0 6 / 36%);
    --ld-active-toggle-bg-color: rgb(255 255 255 / 20%);
}

/* Rückfall Dunkel für Browser ohne relative Farbsyntax (feste Werte für Blau) */
@supports not (color: oklab(from red l a b)) {
    @media (prefers-color-scheme: dark) {
        :root:not([data-bs-theme="light"]):not([data-theme="light"]) {
            --ld-accent-color:      #81d0ff;
            --ld-destructive-color: #ff938c;
            --ld-success-color:     #78e9ab;
            --ld-warning-color:     #ffc252;
            --ld-error-color:       #ff938c;
        }
    }
    :root[data-bs-theme="dark"],
    :root[data-theme="dark"] {
        --ld-accent-color:      #81d0ff;
        --ld-destructive-color: #ff938c;
        --ld-success-color:     #78e9ab;
        --ld-warning-color:     #ffc252;
        --ld-error-color:       #ff938c;
    }
}

/* ── Hoher Kontrast (System-Einstellung), wie libadwaita ─────────────────── */
@media (prefers-contrast: more) {
    :root {
        --ld-border-opacity:   50%;
        --ld-dim-opacity:      90%;
        --ld-disabled-opacity: 40%;
    }
}
