/* ==========================================================================
   FARB-TEMPLATES (Paletten)
   --------------------------------------------------------------------------
   Nur Farb-Tokens, keine Bauteile. Eigene Datei, weil login.html das grosse
   style.css bewusst nicht lädt (eigenständige Gestaltung) und die Templates
   dort trotzdem greifen sollen. Jede Seite bindet die Datei NACH ihrem
   Haupt-Stylesheet ein — die Paletten müssen dessen :root- und
   [data-theme="dark"]-Werte überschreiben können.

   Die bewegte Himmel-Szene (Wolken, Sterne, Sternschnuppen) steht in
   css/style.css; sie hängt an <body> und ist nur in der App sinnvoll.

   Zwei unabhängige Achsen am <html>-Element:

     data-theme   = light | dark      -> der aufgelöste Hell-/Dunkel-Modus
     data-palette = default | sepia | forest | slate | plum | sky

   `data-theme` bleibt bewusst light/dark - sämtliche bestehenden
   `[data-theme="dark"]`-Regeln in allen Stylesheets gelten damit unverändert
   für JEDE Palette. Eine Palette überschreibt nur die Farb-Tokens.

   Reihenfolge & Spezifität: `[data-palette="x"]` (0,1,0) steht NACH
   `[data-theme="dark"]` (0,1,0) und würde dessen Werte im Dunkelmodus
   überstimmen. Deshalb gilt die Regel: jede Palette definiert im Dark-Block
   (0,2,0) exakt dieselbe Token-Liste wie im Light-Block. Tokens ausserhalb
   dieser Liste (--shadow*, --bg-hover, --app-bg) bleiben dem Basis-Dark-Block
   überlassen; ihre `var()`-Verweise lösen sich automatisch auf die
   Paletten-Farben auf.

   Die vier --map-*-Tokens stimmen die Grundkarte der Leaflet-Karten auf das
   Template ab (js/basemap.js, css/map-marker.css): Helligkeit und Kontrast
   der Kacheln und eine Einfärbung im Farbton des Templates — beim Standard
   ein warmes Braun statt seines Blaugraus. Im Dunkelmodus liegt darunter
   Esri Dark Gray statt Light Gray.

   Helligkeit und Kontrast sind an den Kacheln ausgemessen, nicht geschätzt:
   Esri zeichnet Land und Strassen fast gleich (dunkel 68 gegen 76–96 von 255,
   hell 236 gegen 240–252). `contrast()` dreht um das mittlere Grau — die
   Helligkeit davor schiebt das Land so, dass die Spreizung die Strassen trifft
   und nichts ins Schwarze oder Weisse abschneidet. Dunkel: Land 54, Strassen
   bis 109. Hell: Land 233, Strassen bis 255, Wasser 191. Wer eine Zahl
   ändert, rechnet die andere nach.

   Gemessen wird auf BEIDEN Enden des Zooms. Weit weg (bis Stufe 5) zeichnet
   Esri das dunkle Land mit 60 statt 68 und die Grenzen dunkler als das Land
   (52–56), Wasser mit 32. Die früheren Werte (1.21 / 2.07) waren nur an den
   nahen Stufen ausgemessen: von weitem fiel das Land auf 14 und Grenzen wie
   Wasser auf 0 — eine schwarze Fläche. Jetzt: Land 40, Grenzen 26–33,
   Wasser 0.
   ========================================================================== */

/* --- Standard ------------------------------------------------------------
   Wiederholt die Werte aus :root bzw. [data-theme="dark"] unter dem
   Paletten-Selektor. Nötig, damit ein Element MITTEN im Baum (z.B. eine
   Vorschau-Kachel in den Einstellungen) das Standard-Template zeigen kann —
   `:root` greift nur am <html>, geerbte Tokens würden sonst durchschlagen. */
[data-palette="default"] {
  --primary: #4a6fa5;
  --primary-dark: #3a5a8a;
  --primary-light: #6a8fc5;
  --accent: #e8a838;
  --accent-dark: #c88a20;
  --bg: #f5f6fa;
  --bg-card: #ffffff;
  --bg-dark: #2c3e50;
  --text: #2c3e50;
  --text-light: #7f8c8d;
  --text-inverse: #ffffff;
  --on-brand: #ffffff;
  --border: #dce1e8;
  --border-light: #eef0f4;
  --success: #27ae60;
  --danger: #e74c3c;
  --danger-dark: #c0392b;
  --warning: #f39c12;
  --reading: #9c6ec4;
  --map-tint: #8a6440;
  --map-tint-strength: 0.2;
  --map-brightness: 0.77;
  --map-contrast: 1.95;
}
[data-palette="default"][data-theme="dark"] {
  --primary: #8a9bb5;
  --primary-dark: #7a8ba5;
  --primary-light: #a0b0c8;
  --accent: #e8a838;
  --accent-dark: #c88a20;
  --bg: #1a1816;
  --bg-card: #262220;
  --bg-dark: #151311;
  --text: #e0dcd8;
  --text-light: #a09890;
  --text-inverse: #ffffff;
  --on-brand: #ffffff;
  --border: #3d3632;
  --border-light: #302a26;
  --success: #2ecc71;
  --danger: #e74c3c;
  --danger-dark: #c0392b;
  --warning: #f39c12;
  --reading: #b18fd6;
  --map-tint: #b08560;
  --map-tint-strength: 0.35;
  --map-brightness: 1.15;
  --map-contrast: 1.5;
}

/* --- Sepia / Pergament ---------------------------------------------------
   Warmes Papier, Tinten-Braun, Rubrik-Rot als Akzent - die klassische
   Anmutung einer Studienbibel. Dark = Kerzenlicht auf dunklem Leder. */
[data-palette="sepia"] {
  --primary: #7a5230;
  --primary-dark: #5f3f24;
  --primary-light: #a3734b;
  --accent: #b0413e;
  --accent-dark: #8e3230;
  --bg: #f4ecdc;
  --bg-card: #fdf8ee;
  --bg-dark: #3b2f22;
  --text: #3b2f22;
  --text-light: #8a7a63;
  --text-inverse: #ffffff;
  --on-brand: #ffffff;
  --border: #ddcfb4;
  --border-light: #ece2cd;
  --success: #4e7a48;
  --danger: #b0413e;
  --danger-dark: #8e3230;
  --warning: #c8862a;
  --reading: #8a6aa8;
  --map-tint: #7a5230;
  --map-tint-strength: 0.2;
  --map-brightness: 0.77;
  --map-contrast: 1.95;
}
[data-palette="sepia"][data-theme="dark"] {
  --primary: #d9a76c;
  --primary-dark: #c29257;
  --primary-light: #e8bf8d;
  --accent: #d4756e;
  --accent-dark: #b45a54;
  --bg: #1f1a13;
  --bg-card: #2a231a;
  --bg-dark: #171209;
  --text: #ece1cd;
  --text-light: #a8977c;
  --text-inverse: #ffffff;
  --on-brand: #1f1a13;
  --border: #453a2a;
  --border-light: #362d21;
  --success: #7fb872;
  --danger: #e07a72;
  --danger-dark: #c25e56;
  --warning: #e0a94a;
  --reading: #c0a0dc;
  --map-tint: #d9a76c;
  --map-tint-strength: 0.35;
  --map-brightness: 1.15;
  --map-contrast: 1.5;
}

/* --- Wald (Sommer) ------------------------------------------------------
   Tiefes Tannengrün mit Messing-Akzent. Dark = fast schwarzes Nadelwald-Grün.
   Die übrigen Jahreszeiten stehen gleich darunter. */
[data-palette="forest"] {
  --primary: #2f6b4f;
  --primary-dark: #23543d;
  --primary-light: #4c8c6c;
  --accent: #b08d3f;
  --accent-dark: #8e7030;
  --bg: #f1f5f0;
  --bg-card: #ffffff;
  --bg-dark: #22352b;
  --text: #22352b;
  --text-light: #6b7f72;
  --text-inverse: #ffffff;
  --on-brand: #ffffff;
  --border: #ccd9cf;
  --border-light: #e3ebe4;
  --success: #2f8f5b;
  --danger: #c0483c;
  --danger-dark: #9c3830;
  --warning: #c8912f;
  --reading: #7d6ab8;
  --map-tint: #2f6b4f;
  --map-tint-strength: 0.2;
  --map-brightness: 0.77;
  --map-contrast: 1.95;
}
[data-palette="forest"][data-theme="dark"] {
  --primary: #6fb891;
  --primary-dark: #5aa47d;
  --primary-light: #93cfae;
  --accent: #d9b45c;
  --accent-dark: #b8963f;
  --bg: #101713;
  --bg-card: #18211b;
  --bg-dark: #0b110d;
  --text: #dfe9e1;
  --text-light: #93a89a;
  --text-inverse: #ffffff;
  --on-brand: #101713;
  --border: #2d3a32;
  --border-light: #222d26;
  --success: #63c48c;
  --danger: #e0776a;
  --danger-dark: #c25c50;
  --warning: #e0b45c;
  --reading: #a894e0;
  --map-tint: #6fb891;
  --map-tint-strength: 0.35;
  --map-brightness: 1.15;
  --map-contrast: 1.5;
}

/* --- Wald: die übrigen Jahreszeiten --------------------------------------
   «Wald» (forest) wechselt mit der Jahreszeit (data-season, gesetzt von
   js/theme-boot.js); der Sommer sind die beiden Blöcke oben. Die zweite
   Hälfte jedes Selektors gilt für die Vorschau-Kacheln der Einstellungen,
   die data-palette selbst tragen und die Jahreszeit vom <html> erben.
   Jeder Dark-Block setzt exakt dieselbe Liste wie sein Light-Block. */
/* Frühling: Moosgrün mit Türkis */
[data-season="spring"][data-palette="forest"],
[data-season="spring"] [data-palette="forest"] {
  --primary: #2d5b3c;
  --primary-dark: #22472f;
  --primary-light: #4b7b5a;
  --accent: #1a8f88;
  --accent-dark: #137069;
  --bg: #eef3ef;
  --bg-card: #fbfdfb;
  --bg-dark: #1a2c22;
  --text: #1a2c22;
  --text-light: #607669;
  --text-inverse: #ffffff;
  --on-brand: #ffffff;
  --border: #c8d7cc;
  --border-light: #dfe9e2;
  --success: #2f8f5b;
  --danger: #c0483c;
  --danger-dark: #9c3830;
  --warning: #c8912f;
  --reading: #7d6ab8;
  --map-tint: #2d5b3c;
  --map-tint-strength: 0.22;
  --map-brightness: 0.8;
  --map-contrast: 1.9;
}
[data-season="spring"][data-palette="forest"][data-theme="dark"],
[data-season="spring"] [data-palette="forest"][data-theme="dark"] {
  --primary: #74bd8c;
  --primary-dark: #5ea877;
  --primary-light: #98d4ab;
  --accent: #4fcfc3;
  --accent-dark: #36b1a6;
  --bg: #0b1410;
  --bg-card: #121f18;
  --bg-dark: #070e0a;
  --text: #dbeae0;
  --text-light: #8da795;
  --text-inverse: #ffffff;
  --on-brand: #0b1410;
  --border: #25392d;
  --border-light: #1a2a21;
  --success: #63c48c;
  --danger: #e0776a;
  --danger-dark: #c25c50;
  --warning: #e0b45c;
  --reading: #a894e0;
  --map-tint: #74bd8c;
  --map-tint-strength: 0.35;
  --map-brightness: 1.15;
  --map-contrast: 1.5;
}
/* Herbst: Rost und Gold */
[data-season="autumn"][data-palette="forest"],
[data-season="autumn"] [data-palette="forest"] {
  --primary: #9c4a22;
  --primary-dark: #7d3a1a;
  --primary-light: #bf6a3c;
  --accent: #c4952b;
  --accent-dark: #9d7720;
  --bg: #f7efe4;
  --bg-card: #fffcf8;
  --bg-dark: #3b2519;
  --text: #3b2519;
  --text-light: #7f6655;
  --text-inverse: #ffffff;
  --on-brand: #ffffff;
  --border: #e5d3bf;
  --border-light: #f0e4d6;
  --success: #5d8a39;
  --danger: #b8392b;
  --danger-dark: #922c20;
  --warning: #c98320;
  --reading: #6f6aa8;
  --map-tint: #9c4a22;
  --map-tint-strength: 0.2;
  --map-brightness: 0.8;
  --map-contrast: 1.8;
}
[data-season="autumn"][data-palette="forest"][data-theme="dark"],
[data-season="autumn"] [data-palette="forest"][data-theme="dark"] {
  --primary: #e08a58;
  --primary-dark: #cb7444;
  --primary-light: #f0a87c;
  --accent: #e4bc58;
  --accent-dark: #c79f3e;
  --bg: #16100c;
  --bg-card: #211811;
  --bg-dark: #0f0a07;
  --text: #efe1d2;
  --text-light: #ac9684;
  --text-inverse: #ffffff;
  --on-brand: #16100c;
  --border: #3a2b20;
  --border-light: #2a1f17;
  --success: #8bbf68;
  --danger: #e5806d;
  --danger-dark: #c86552;
  --warning: #e6b257;
  --reading: #a9a2e6;
  --map-tint: #e08a58;
  --map-tint-strength: 0.35;
  --map-brightness: 1.15;
  --map-contrast: 1.5;
}
/* Winter: Stahlblau mit Preiselbeere */
[data-season="winter"][data-palette="forest"],
[data-season="winter"] [data-palette="forest"] {
  --primary: #2e5d84;
  --primary-dark: #224868;
  --primary-light: #5582a8;
  --accent: #b03f3b;
  --accent-dark: #8d302d;
  --bg: #eff4f8;
  --bg-card: #ffffff;
  --bg-dark: #1e2e3c;
  --text: #1e2e3c;
  --text-light: #65788a;
  --text-inverse: #ffffff;
  --on-brand: #ffffff;
  --border: #cddae5;
  --border-light: #e3ebf2;
  --success: #2e8768;
  --danger: #c0483c;
  --danger-dark: #9c3830;
  --warning: #c8912f;
  --reading: #7d6ab8;
  --map-tint: #2e5d84;
  --map-tint-strength: 0.2;
  --map-brightness: 0.85;
  --map-contrast: 1.7;
}
[data-season="winter"][data-palette="forest"][data-theme="dark"],
[data-season="winter"] [data-palette="forest"][data-theme="dark"] {
  --primary: #8db9de;
  --primary-dark: #72a2ca;
  --primary-light: #b2d2ec;
  --accent: #e47c74;
  --accent-dark: #c6615a;
  --bg: #0c121a;
  --bg-card: #141d27;
  --bg-dark: #080d13;
  --text: #e0e8f0;
  --text-light: #91a2b3;
  --text-inverse: #ffffff;
  --on-brand: #0c121a;
  --border: #27333f;
  --border-light: #1c2631;
  --success: #5cc49a;
  --danger: #e0776a;
  --danger-dark: #c25c50;
  --warning: #e0b45c;
  --reading: #a894e0;
  --map-tint: #8db9de;
  --map-tint-strength: 0.35;
  --map-brightness: 1.15;
  --map-contrast: 1.5;
}

/* --- Schiefer / Monochrom ------------------------------------------------
   Neutrale Graustufen, ein einziger kühler Akzent (Teal). Maximal
   zurückhaltend - der Text trägt die Seite. Dark = echtes Neutralgrau. */
[data-palette="slate"] {
  --primary: #4b5563;
  --primary-dark: #374151;
  --primary-light: #6b7280;
  --accent: #0f766e;
  --accent-dark: #0b5b55;
  --bg: #f4f5f7;
  --bg-card: #ffffff;
  --bg-dark: #1f2430;
  --text: #1f2430;
  --text-light: #6b7280;
  --text-inverse: #ffffff;
  --on-brand: #ffffff;
  --border: #d8dbe0;
  --border-light: #eceef1;
  --success: #3f7d54;
  --danger: #b3423a;
  --danger-dark: #92352e;
  --warning: #b7791f;
  --reading: #6b6f9c;
  --map-tint: #4b5563;
  --map-tint-strength: 0.2;
  --map-brightness: 0.77;
  --map-contrast: 1.95;
}
[data-palette="slate"][data-theme="dark"] {
  --primary: #a3adbb;
  --primary-dark: #8f9aa8;
  --primary-light: #c0c8d2;
  --accent: #4fd1c5;
  --accent-dark: #38b2ac;
  --bg: #16181c;
  --bg-card: #1f2226;
  --bg-dark: #101215;
  --text: #e4e6e9;
  --text-light: #9aa0a8;
  --text-inverse: #ffffff;
  --on-brand: #16181c;
  --border: #34383e;
  --border-light: #26292e;
  --success: #5cb47a;
  --danger: #dd6a60;
  --danger-dark: #bd5449;
  --warning: #d8a03e;
  --reading: #9a9ede;
  --map-tint: #a3adbb;
  --map-tint-strength: 0.35;
  --map-brightness: 1.15;
  --map-contrast: 1.5;
}

/* --- Aubergine / Königsviolett ------------------------------------------
   Gedämpftes Violett mit warmem Roségold. Feierlich, liturgisch.
   Dark = tiefes Pflaumen-Schwarz. */
[data-palette="plum"] {
  --primary: #6b4a7d;
  --primary-dark: #543a63;
  --primary-light: #8b68a0;
  --accent: #c48b70;
  --accent-dark: #a56f56;
  --bg: #f6f2f7;
  --bg-card: #ffffff;
  --bg-dark: #2e2136;
  --text: #2e2136;
  --text-light: #7c6d85;
  --text-inverse: #ffffff;
  --on-brand: #ffffff;
  --border: #ded3e3;
  --border-light: #ece5ef;
  --success: #3f8760;
  --danger: #bb4358;
  --danger-dark: #983546;
  --warning: #c1892e;
  --reading: #8f5fb0;
  --map-tint: #6b4a7d;
  --map-tint-strength: 0.2;
  --map-brightness: 0.77;
  --map-contrast: 1.95;
}
[data-palette="plum"][data-theme="dark"] {
  --primary: #b795d1;
  --primary-dark: #a17fbd;
  --primary-light: #cbb0e0;
  --accent: #e0a98c;
  --accent-dark: #c28e72;
  --bg: #17111b;
  --bg-card: #211826;
  --bg-dark: #100b13;
  --text: #e9e0ee;
  --text-light: #a998b3;
  --text-inverse: #ffffff;
  --on-brand: #17111b;
  --border: #3a2c42;
  --border-light: #2b2032;
  --success: #63bd88;
  --danger: #e0708a;
  --danger-dark: #c25972;
  --warning: #dfa646;
  --reading: #c79ae6;
  --map-tint: #b795d1;
  --map-tint-strength: 0.35;
  --map-brightness: 1.15;
  --map-contrast: 1.5;
}

/* --- Himmel --------------------------------------------------------------
   Hell: heller Wolkenhimmel. Dunkel: Sternenhimmel mit gelegentlicher
   Sternschnuppe. Standard-Palette der VisionMap. Die bewegten Ebenen stehen
   weiter unten im Abschnitt "Himmel-Szene". */
[data-palette="sky"] {
  --primary: #2f7fc4;
  --primary-dark: #1f649f;
  --primary-light: #5da3dd;
  --accent: #f0a93c;
  --accent-dark: #d08c22;
  --bg: #e8f2fb;
  --bg-card: #ffffff;
  --bg-dark: #1e3a5f;
  --text: #1e3a5f;
  --text-light: #6b8299;
  --text-inverse: #ffffff;
  --on-brand: #ffffff;
  --border: #cadff1;
  --border-light: #e2eef9;
  --success: #2f9e6e;
  --danger: #d9534f;
  --danger-dark: #b5403c;
  --warning: #e8a838;
  --reading: #7f6bd0;
  --map-tint: #2f7fc4;
  --map-tint-strength: 0.2;
  --map-brightness: 0.77;
  --map-contrast: 1.95;
}
[data-palette="sky"][data-theme="dark"] {
  --primary: #7fb0e8;
  --primary-dark: #6b9bd4;
  --primary-light: #a3c9f2;
  --accent: #f5d76e;
  --accent-dark: #d9bb4f;
  --bg: #070b18;
  --bg-card: #111a2e;
  --bg-dark: #04070f;
  --text: #dfe7f5;
  --text-light: #93a3c0;
  --text-inverse: #ffffff;
  --on-brand: #070b18;
  --border: #26314c;
  --border-light: #1a2338;
  --success: #55c793;
  --danger: #e8746f;
  --danger-dark: #c95c58;
  --warning: #f0c05a;
  --reading: #a596ea;
  --map-tint: #7fb0e8;
  --map-tint-strength: 0.35;
  --map-brightness: 1.15;
  --map-contrast: 1.5;
}
