/* =====================================================================
   LEARNAURELLE — Palettes

   GENERATED FILE. Do not hand-edit: run `node tools/build-themes.js`,
   which regenerates this and refuses to write if any text/background
   pair fails WCAG AA.

   A palette is chosen with  <html data-palette="...">  and the light or
   dark side with  <html data-theme="light|dark">.  js/theme.js writes
   both and persists them. The defaults live in css/styles.css so the
   app still renders if this file fails to load.

   6 palettes x 2 modes, 300 contrast pairs verified.
   ===================================================================== */

/* ---------------------------------------------------------------------
   Aurelle — Warm ink and old gold. The house colours — quiet, scholarly, a little expensive.
   --------------------------------------------------------------------- */
[data-palette="aurelle"] {
  --bg-0: #0c0b10;
  --bg-1: #141219;
  --bg-2: #1a1821;
  --bg-3: #23202c;
  --bg-4: #2e2a39;
  --bg-inset: #08070b;
  --line: #2a2634;
  --line-soft: #201d28;
  --line-hard: #594f6b;
  --text: #f2eee9;
  --text-dim: #b5aca3;
  --text-mute: #898078;
  --text-ink: #06090f;
  --up: #5fc9a0;
  --up-soft: rgba(95,201,160,0.14);
  --up-line: rgba(95,201,160,0.45);
  --down: #f2735f;
  --down-soft: rgba(242,115,95,0.14);
  --down-line: rgba(242,115,95,0.45);
  --blue: #e8b765;
  --blue-soft: rgba(232,183,101,0.14);
  --blue-line: rgba(232,183,101,0.45);
  --amber: #f0c674;
  --amber-soft: rgba(240,198,116,0.14);
  --amber-line: rgba(240,198,116,0.42000000000000004);
  --violet: #b79bf0;
  --violet-soft: rgba(183,155,240,0.14);
  --violet-line: rgba(183,155,240,0.42000000000000004);
  --rose: #f0a088;
  --rose-soft: rgba(240,160,136,0.14);
  --accent: var(--blue);
  --accent-text: #241a06;
  --shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
}

[data-palette="aurelle"][data-theme="light"] {
  --bg-0: #faf7f2;
  --bg-1: #ffffff;
  --bg-2: #ffffff;
  --bg-3: #f1ece3;
  --bg-4: #e6dfd3;
  --bg-inset: #fdfbf7;
  --line: #e4ddd1;
  --line-soft: #efe9df;
  --line-hard: #b4a58d;
  --text: #1d1a16;
  --text-dim: #4d453c;
  --text-mute: #726a60;
  --text-ink: #ffffff;
  --up: #0a7a5c;
  --up-soft: rgba(10,122,92,0.12);
  --up-line: rgba(10,122,92,0.5);
  --down: #c2452c;
  --down-soft: rgba(194,69,44,0.12);
  --down-line: rgba(194,69,44,0.5);
  --blue: #8a6414;
  --blue-soft: rgba(138,100,20,0.12);
  --blue-line: rgba(138,100,20,0.5);
  --amber: #875c0c;
  --amber-soft: rgba(135,92,12,0.12);
  --amber-line: rgba(135,92,12,0.47);
  --violet: #6a4bbf;
  --violet-soft: rgba(106,75,191,0.12);
  --violet-line: rgba(106,75,191,0.47);
  --rose: #b35236;
  --rose-soft: rgba(179,82,54,0.12);
  --accent: var(--blue);
  --accent-text: #fdf8ee;
  --shadow: 0 1px 2px rgba(16,24,40,.06), 0 8px 24px -16px rgba(20,26,51,.24);
}

/* ---------------------------------------------------------------------
   Odile — The black swan. True black, crimson and cold silver — maximum drama, minimum glare.
   --------------------------------------------------------------------- */
[data-palette="odile"] {
  --bg-0: #000000;
  --bg-1: #0a0a0c;
  --bg-2: #101013;
  --bg-3: #18181d;
  --bg-4: #222228;
  --bg-inset: #000000;
  --line: #1e1e24;
  --line-soft: #151519;
  --line-hard: #4e4e5c;
  --text: #f4f4f7;
  --text-dim: #aeaeba;
  --text-mute: #7c7c88;
  --text-ink: #06090f;
  --up: #54cf9a;
  --up-soft: rgba(84,207,154,0.14);
  --up-line: rgba(84,207,154,0.45);
  --down: #ff4d6d;
  --down-soft: rgba(255,77,109,0.14);
  --down-line: rgba(255,77,109,0.45);
  --blue: #ff6b85;
  --blue-soft: rgba(255,107,133,0.14);
  --blue-line: rgba(255,107,133,0.45);
  --amber: #e4c56a;
  --amber-soft: rgba(228,197,106,0.14);
  --amber-line: rgba(228,197,106,0.42000000000000004);
  --violet: #c0c6d6;
  --violet-soft: rgba(192,198,214,0.14);
  --violet-line: rgba(192,198,214,0.42000000000000004);
  --rose: #ff9ab0;
  --rose-soft: rgba(255,154,176,0.14);
  --accent: var(--blue);
  --accent-text: #1d0309;
  --shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
}

[data-palette="odile"][data-theme="light"] {
  --bg-0: #f4f4f6;
  --bg-1: #ffffff;
  --bg-2: #ffffff;
  --bg-3: #eaeaee;
  --bg-4: #dedee4;
  --bg-inset: #fafafb;
  --line: #dcdce2;
  --line-soft: #e9e9ee;
  --line-hard: #a6a6b3;
  --text: #121216;
  --text-dim: #42424d;
  --text-mute: #6a6a76;
  --text-ink: #ffffff;
  --up: #07795b;
  --up-soft: rgba(7,121,91,0.12);
  --up-line: rgba(7,121,91,0.5);
  --down: #c81540;
  --down-soft: rgba(200,21,64,0.12);
  --down-line: rgba(200,21,64,0.5);
  --blue: #b01333;
  --blue-soft: rgba(176,19,51,0.12);
  --blue-line: rgba(176,19,51,0.5);
  --amber: #8a6508;
  --amber-soft: rgba(138,101,8,0.12);
  --amber-line: rgba(138,101,8,0.47);
  --violet: #4e5466;
  --violet-soft: rgba(78,84,102,0.12);
  --violet-line: rgba(78,84,102,0.47);
  --rose: #b0405c;
  --rose-soft: rgba(176,64,92,0.12);
  --accent: var(--blue);
  --accent-text: #fff3f5;
  --shadow: 0 1px 2px rgba(16,24,40,.06), 0 8px 24px -16px rgba(20,26,51,.24);
}

/* ---------------------------------------------------------------------
   Swan Lake — The original Odette palette — pale ice, violet and rose over midnight indigo.
   --------------------------------------------------------------------- */
[data-palette="swanlake"] {
  --bg-0: #0a0c16;
  --bg-1: #10141f;
  --bg-2: #151a28;
  --bg-3: #1c2234;
  --bg-4: #252c42;
  --bg-inset: #070911;
  --line: #232a40;
  --line-soft: #1a2032;
  --line-hard: #455181;
  --text: #e9ecfb;
  --text-dim: #a3adcf;
  --text-mute: #7783a1;
  --text-ink: #06090f;
  --up: #4fd6c0;
  --up-soft: rgba(79,214,192,0.14);
  --up-line: rgba(79,214,192,0.45);
  --down: #f2718f;
  --down-soft: rgba(242,113,143,0.14);
  --down-line: rgba(242,113,143,0.45);
  --blue: #7fd4f5;
  --blue-soft: rgba(127,212,245,0.14);
  --blue-line: rgba(127,212,245,0.45);
  --amber: #e9c877;
  --amber-soft: rgba(233,200,119,0.14);
  --amber-line: rgba(233,200,119,0.42000000000000004);
  --violet: #a98cf5;
  --violet-soft: rgba(169,140,245,0.14);
  --violet-line: rgba(169,140,245,0.42000000000000004);
  --rose: #f2a0c4;
  --rose-soft: rgba(242,160,196,0.14);
  --accent: var(--blue);
  --accent-text: #061520;
  --shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
}

[data-palette="swanlake"][data-theme="light"] {
  --bg-0: #f5f7fd;
  --bg-1: #ffffff;
  --bg-2: #ffffff;
  --bg-3: #eceff9;
  --bg-4: #e1e6f4;
  --bg-inset: #f8faff;
  --line: #dbe1f0;
  --line-soft: #e8ecf7;
  --line-hard: #98a7cc;
  --text: #141a33;
  --text-dim: #45506f;
  --text-mute: #687190;
  --text-ink: #ffffff;
  --up: #0c8376;
  --up-soft: rgba(12,131,118,0.12);
  --up-line: rgba(12,131,118,0.5);
  --down: #cf3c63;
  --down-soft: rgba(207,60,99,0.12);
  --down-line: rgba(207,60,99,0.5);
  --blue: #1b7fa8;
  --blue-soft: rgba(27,127,168,0.12);
  --blue-line: rgba(27,127,168,0.5);
  --amber: #996e18;
  --amber-soft: rgba(153,110,24,0.12);
  --amber-line: rgba(153,110,24,0.47);
  --violet: #6950c6;
  --violet-soft: rgba(105,80,198,0.12);
  --violet-line: rgba(105,80,198,0.47);
  --rose: #c24b7b;
  --rose-soft: rgba(194,75,123,0.12);
  --accent: var(--blue);
  --accent-text: #010608;
  --shadow: 0 1px 2px rgba(16,24,40,.06), 0 8px 24px -16px rgba(20,26,51,.24);
}

/* ---------------------------------------------------------------------
   Graphite — Neutral slate with one electric blue. No personality, maximum legibility — the long-study choice.
   --------------------------------------------------------------------- */
[data-palette="graphite"] {
  --bg-0: #0d0f12;
  --bg-1: #14171b;
  --bg-2: #191d22;
  --bg-3: #21262d;
  --bg-4: #2b3138;
  --bg-inset: #090b0d;
  --line: #262b32;
  --line-soft: #1d2127;
  --line-hard: #4c5663;
  --text: #eceff3;
  --text-dim: #a8b1bd;
  --text-mute: #7b8591;
  --text-ink: #06090f;
  --up: #3fd17f;
  --up-soft: rgba(63,209,127,0.14);
  --up-line: rgba(63,209,127,0.45);
  --down: #ff6b6b;
  --down-soft: rgba(255,107,107,0.14);
  --down-line: rgba(255,107,107,0.45);
  --blue: #5aaaff;
  --blue-soft: rgba(90,170,255,0.14);
  --blue-line: rgba(90,170,255,0.45);
  --amber: #f0b429;
  --amber-soft: rgba(240,180,41,0.14);
  --amber-line: rgba(240,180,41,0.42000000000000004);
  --violet: #9d8dfb;
  --violet-soft: rgba(157,141,251,0.14);
  --violet-line: rgba(157,141,251,0.42000000000000004);
  --rose: #ff8fab;
  --rose-soft: rgba(255,143,171,0.14);
  --accent: var(--blue);
  --accent-text: #04142b;
  --shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
}

[data-palette="graphite"][data-theme="light"] {
  --bg-0: #f6f7f9;
  --bg-1: #ffffff;
  --bg-2: #ffffff;
  --bg-3: #eceef2;
  --bg-4: #e0e3e9;
  --bg-inset: #fafbfc;
  --line: #dde0e6;
  --line-soft: #e9ebf0;
  --line-hard: #a0a6b4;
  --text: #11151a;
  --text-dim: #414954;
  --text-mute: #69717c;
  --text-ink: #ffffff;
  --up: #07794a;
  --up-soft: rgba(7,121,74,0.12);
  --up-line: rgba(7,121,74,0.5);
  --down: #c5303a;
  --down-soft: rgba(197,48,58,0.12);
  --down-line: rgba(197,48,58,0.5);
  --blue: #1668c4;
  --blue-soft: rgba(22,104,196,0.12);
  --blue-line: rgba(22,104,196,0.5);
  --amber: #8a5d05;
  --amber-soft: rgba(138,93,5,0.12);
  --amber-line: rgba(138,93,5,0.47);
  --violet: #5945c9;
  --violet-soft: rgba(89,69,201,0.12);
  --violet-line: rgba(89,69,201,0.47);
  --rose: #b24063;
  --rose-soft: rgba(178,64,99,0.12);
  --accent: var(--blue);
  --accent-text: #f2f8ff;
  --shadow: 0 1px 2px rgba(16,24,40,.06), 0 8px 24px -16px rgba(20,26,51,.24);
}

/* ---------------------------------------------------------------------
   Meadow — Deep forest and warm clay. Softer and less clinical — built for the ninth-grade end of the building.
   --------------------------------------------------------------------- */
[data-palette="meadow"] {
  --bg-0: #0a1110;
  --bg-1: #111a18;
  --bg-2: #16201e;
  --bg-3: #1e2a27;
  --bg-4: #273633;
  --bg-inset: #060d0c;
  --line: #243330;
  --line-soft: #1b2725;
  --line-hard: #435c56;
  --text: #eaf2ee;
  --text-dim: #a4b5ae;
  --text-mute: #798982;
  --text-ink: #06090f;
  --up: #5ed69b;
  --up-soft: rgba(94,214,155,0.14);
  --up-line: rgba(94,214,155,0.45);
  --down: #f27a6a;
  --down-soft: rgba(242,122,106,0.14);
  --down-line: rgba(242,122,106,0.45);
  --blue: #6fd4b8;
  --blue-soft: rgba(111,212,184,0.14);
  --blue-line: rgba(111,212,184,0.45);
  --amber: #f2c572;
  --amber-soft: rgba(242,197,114,0.14);
  --amber-line: rgba(242,197,114,0.42000000000000004);
  --violet: #a5c97a;
  --violet-soft: rgba(165,201,122,0.14);
  --violet-line: rgba(165,201,122,0.42000000000000004);
  --rose: #f0a37f;
  --rose-soft: rgba(240,163,127,0.14);
  --accent: var(--blue);
  --accent-text: #041a13;
  --shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
}

[data-palette="meadow"][data-theme="light"] {
  --bg-0: #f4f8f5;
  --bg-1: #ffffff;
  --bg-2: #ffffff;
  --bg-3: #e9f0eb;
  --bg-4: #dce7e0;
  --bg-inset: #f9fcfa;
  --line: #d9e3dc;
  --line-soft: #e7eee9;
  --line-hard: #98aca0;
  --text: #101b17;
  --text-dim: #3f504a;
  --text-mute: #66756e;
  --text-ink: #ffffff;
  --up: #07774f;
  --up-soft: rgba(7,119,79,0.12);
  --up-line: rgba(7,119,79,0.5);
  --down: #c24433;
  --down-soft: rgba(194,68,51,0.12);
  --down-line: rgba(194,68,51,0.5);
  --blue: #0f7a62;
  --blue-soft: rgba(15,122,98,0.12);
  --blue-line: rgba(15,122,98,0.5);
  --amber: #87600c;
  --amber-soft: rgba(135,96,12,0.12);
  --amber-line: rgba(135,96,12,0.47);
  --violet: #4f7324;
  --violet-soft: rgba(79,115,36,0.12);
  --violet-line: rgba(79,115,36,0.47);
  --rose: #ab5230;
  --rose-soft: rgba(171,82,48,0.12);
  --accent: var(--blue);
  --accent-text: #eafaf3;
  --shadow: 0 1px 2px rgba(16,24,40,.06), 0 8px 24px -16px rgba(20,26,51,.24);
}

/* ---------------------------------------------------------------------
   High Contrast — Pure black or pure white, hard borders, no tinted surfaces. Built for low vision and bright rooms.
   --------------------------------------------------------------------- */
[data-palette="contrast"] {
  --bg-0: #000000;
  --bg-1: #000000;
  --bg-2: #0a0a0a;
  --bg-3: #171717;
  --bg-4: #222222;
  --bg-inset: #000000;
  --line: #5a5a5a;
  --line-soft: #3a3a3a;
  --line-hard: #9a9a9a;
  --text: #ffffff;
  --text-dim: #e4e4e4;
  --text-mute: #bdbdbd;
  --text-ink: #06090f;
  --up: #4ce67f;
  --up-soft: rgba(76,230,127,0.14);
  --up-line: rgba(76,230,127,0.45);
  --down: #ff7a7a;
  --down-soft: rgba(255,122,122,0.14);
  --down-line: rgba(255,122,122,0.45);
  --blue: #5fd8ff;
  --blue-soft: rgba(95,216,255,0.14);
  --blue-line: rgba(95,216,255,0.45);
  --amber: #ffd84d;
  --amber-soft: rgba(255,216,77,0.14);
  --amber-line: rgba(255,216,77,0.42000000000000004);
  --violet: #d2a8ff;
  --violet-soft: rgba(210,168,255,0.14);
  --violet-line: rgba(210,168,255,0.42000000000000004);
  --rose: #ff9ec4;
  --rose-soft: rgba(255,158,196,0.14);
  --accent: var(--blue);
  --accent-text: #000000;
  --shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
}

[data-palette="contrast"][data-theme="light"] {
  --bg-0: #ffffff;
  --bg-1: #ffffff;
  --bg-2: #ffffff;
  --bg-3: #f0f0f0;
  --bg-4: #e2e2e2;
  --bg-inset: #ffffff;
  --line: #8a8a8a;
  --line-soft: #bbbbbb;
  --line-hard: #4a4a4a;
  --text: #000000;
  --text-dim: #1f1f1f;
  --text-mute: #424242;
  --text-ink: #ffffff;
  --up: #006234;
  --up-soft: rgba(0,98,52,0.12);
  --up-line: rgba(0,98,52,0.5);
  --down: #a3001c;
  --down-soft: rgba(163,0,28,0.12);
  --down-line: rgba(163,0,28,0.5);
  --blue: #00497a;
  --blue-soft: rgba(0,73,122,0.12);
  --blue-line: rgba(0,73,122,0.5);
  --amber: #6b4500;
  --amber-soft: rgba(107,69,0,0.12);
  --amber-line: rgba(107,69,0,0.47);
  --violet: #4b1c9c;
  --violet-soft: rgba(75,28,156,0.12);
  --violet-line: rgba(75,28,156,0.47);
  --rose: #8c1348;
  --rose-soft: rgba(140,19,72,0.12);
  --accent: var(--blue);
  --accent-text: #ffffff;
  --shadow: 0 1px 2px rgba(16,24,40,.06), 0 8px 24px -16px rgba(20,26,51,.24);
}

/* Reduced motion: the swan mark and any decorative animation stop. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }
}
