/* GENERATED by design/build-palettes.mjs from design/palettes.json. Do not edit by hand.
   <html data-palette="KEY"> picks the colour palette; data-theme (light|dark, absent = system) picks the mode.
   Clay (the base palette) only adds the derived readability tokens; its other values are the base tokens.
   Obsidian Lime is the default palette (set by theme-init.js / prefs.ts when nothing is saved).
   --accent is the fill colour; --accent-text is the accent used as text, links, outlines and icons (>= 4.5:1).
   .theme-scope[data-theme] panels follow the active palette; .theme-scope.pal-fixed[data-pal=KEY] panels
   always show KEY (used by the comparison grid). */

/* Clay: Warm editorial · current system */
/* base palette: base tokens + derived readability tokens */
:root[data-palette="clay"],
[data-palette="clay"] .theme-scope:not(.pal-fixed)[data-theme="dark"],
.theme-scope.pal-fixed[data-pal="clay"][data-theme="dark"] {
  --accent-text: #e58a5f;
  --text-3: #9c9c99;
}
@media (prefers-color-scheme: light) {
  :root[data-palette="clay"]:not([data-theme="dark"]) {
    --accent-text: #9e4d2c;
    --text-3: #69645e;
    --on-accent: #161412;
  }
}
:root[data-palette="clay"][data-theme="light"],
[data-palette="clay"] .theme-scope:not(.pal-fixed)[data-theme="light"],
.theme-scope.pal-fixed[data-pal="clay"][data-theme="light"] {
  --accent-text: #9e4d2c;
  --text-3: #69645e;
  --on-accent: #161412;
}

/* Emerald: Trust · growth · finance */
:root[data-palette="emerald"],
[data-palette="emerald"] .theme-scope:not(.pal-fixed)[data-theme="dark"],
.theme-scope.pal-fixed[data-pal="emerald"][data-theme="dark"] {
  --bg: #0d1511;
  --bg-elev: #141f19;
  --bg-elev-2: #1c2a22;
  --bg-elev-3: #24322a;
  --bg-glass: rgba(13, 21, 17, 0.72);
  --text: #eef8f1;
  --text-2: #a4b9ad;
  --text-3: #9cada4;
  --accent: #5ee3a2;
  --accent-text: #5ee3a2;
  --accent-hover: #78ecb2;
  --accent-soft: rgba(94,227,162,.14);
  --on-accent: #06150e;
  --up: #57d99a;
  --up-soft: rgba(87,217,154,.13);
  --down: #ff7474;
  --down-soft: rgba(255,116,116,.13);
  --warn: #f2bd59;
  --warn-soft: rgba(242,189,89,.13);
  --info: #80adff;
  --info-soft: rgba(128,173,255,.13);
  --hairline: rgba(255,255,255,.08);
  --hairline-strong: rgba(255,255,255,.14);
  --card-shadow: none;
}
@media (prefers-color-scheme: light) {
  :root[data-palette="emerald"]:not([data-theme="dark"]) {
    --bg: #f8fbf8;
    --bg-elev: #f1f7f2;
    --bg-elev-2: #e5efe8;
    --bg-elev-3: #dce7e0;
    --bg-glass: rgba(248, 251, 248, 0.78);
    --text: #102018;
    --text-2: #495d53;
    --text-3: #56645d;
    --accent: #138a58;
    --accent-text: #106f47;
    --accent-hover: #0e7048;
    --accent-soft: rgba(19,138,88,.11);
    --on-accent: #060c09;
    --up: #10623d;
    --up-soft: rgba(22,138,85,.10);
    --down: #a52323;
    --down-soft: rgba(214,60,60,.09);
    --warn: #784c00;
    --warn-soft: rgba(168,107,0,.10);
    --info: #234fb4;
    --info-soft: rgba(47,98,214,.09);
    --hairline: rgba(40,30,20,.08);
    --hairline-strong: rgba(40,30,20,.14);
    --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
  }
}
:root[data-palette="emerald"][data-theme="light"],
[data-palette="emerald"] .theme-scope:not(.pal-fixed)[data-theme="light"],
.theme-scope.pal-fixed[data-pal="emerald"][data-theme="light"] {
  --bg: #f8fbf8;
  --bg-elev: #f1f7f2;
  --bg-elev-2: #e5efe8;
  --bg-elev-3: #dce7e0;
  --bg-glass: rgba(248, 251, 248, 0.78);
  --text: #102018;
  --text-2: #495d53;
  --text-3: #56645d;
  --accent: #138a58;
  --accent-text: #106f47;
  --accent-hover: #0e7048;
  --accent-soft: rgba(19,138,88,.11);
  --on-accent: #060c09;
  --up: #10623d;
  --up-soft: rgba(22,138,85,.10);
  --down: #a52323;
  --down-soft: rgba(214,60,60,.09);
  --warn: #784c00;
  --warn-soft: rgba(168,107,0,.10);
  --info: #234fb4;
  --info-soft: rgba(47,98,214,.09);
  --hairline: rgba(40,30,20,.08);
  --hairline-strong: rgba(40,30,20,.14);
  --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
}

/* Electric Blue: Technology · infrastructure · speed */
:root[data-palette="electric"],
[data-palette="electric"] .theme-scope:not(.pal-fixed)[data-theme="dark"],
.theme-scope.pal-fixed[data-pal="electric"][data-theme="dark"] {
  --bg: #0c111b;
  --bg-elev: #141b28;
  --bg-elev-2: #1c2636;
  --bg-elev-3: #242e3e;
  --bg-glass: rgba(12, 17, 27, 0.72);
  --text: #f0f5ff;
  --text-2: #9eacc1;
  --text-3: #96a1b0;
  --accent: #67a2ff;
  --accent-text: #67a2ff;
  --accent-hover: #82b3ff;
  --accent-soft: rgba(103,162,255,.14);
  --on-accent: #07111f;
  --up: #57d99a;
  --up-soft: rgba(87,217,154,.13);
  --down: #ff7474;
  --down-soft: rgba(255,116,116,.13);
  --warn: #f2bd59;
  --warn-soft: rgba(242,189,89,.13);
  --info: #80adff;
  --info-soft: rgba(128,173,255,.13);
  --hairline: rgba(255,255,255,.08);
  --hairline-strong: rgba(255,255,255,.14);
  --card-shadow: none;
}
@media (prefers-color-scheme: light) {
  :root[data-palette="electric"]:not([data-theme="dark"]) {
    --bg: #f7faff;
    --bg-elev: #eff4fc;
    --bg-elev-2: #e2eafa;
    --bg-elev-3: #dae2f2;
    --bg-glass: rgba(247, 250, 255, 0.78);
    --text: #101827;
    --text-2: #4b586b;
    --text-3: #566173;
    --accent: #246bdb;
    --accent-text: #1f5cbc;
    --accent-hover: #1857bd;
    --accent-soft: rgba(36,107,219,.10);
    --on-accent: #fff;
    --up: #0f603b;
    --up-soft: rgba(22,138,85,.10);
    --down: #a32222;
    --down-soft: rgba(214,60,60,.09);
    --warn: #784c00;
    --warn-soft: rgba(168,107,0,.10);
    --info: #234fb2;
    --info-soft: rgba(47,98,214,.09);
    --hairline: rgba(40,30,20,.08);
    --hairline-strong: rgba(40,30,20,.14);
    --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
  }
}
:root[data-palette="electric"][data-theme="light"],
[data-palette="electric"] .theme-scope:not(.pal-fixed)[data-theme="light"],
.theme-scope.pal-fixed[data-pal="electric"][data-theme="light"] {
  --bg: #f7faff;
  --bg-elev: #eff4fc;
  --bg-elev-2: #e2eafa;
  --bg-elev-3: #dae2f2;
  --bg-glass: rgba(247, 250, 255, 0.78);
  --text: #101827;
  --text-2: #4b586b;
  --text-3: #566173;
  --accent: #246bdb;
  --accent-text: #1f5cbc;
  --accent-hover: #1857bd;
  --accent-soft: rgba(36,107,219,.10);
  --on-accent: #fff;
  --up: #0f603b;
  --up-soft: rgba(22,138,85,.10);
  --down: #a32222;
  --down-soft: rgba(214,60,60,.09);
  --warn: #784c00;
  --warn-soft: rgba(168,107,0,.10);
  --info: #234fb2;
  --info-soft: rgba(47,98,214,.09);
  --hairline: rgba(40,30,20,.08);
  --hairline-strong: rgba(40,30,20,.14);
  --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
}

/* Violet: Crypto-native · creative · premium */
:root[data-palette="violet"],
[data-palette="violet"] .theme-scope:not(.pal-fixed)[data-theme="dark"],
.theme-scope.pal-fixed[data-pal="violet"][data-theme="dark"] {
  --bg: #110f17;
  --bg-elev: #191621;
  --bg-elev-2: #24202e;
  --bg-elev-3: #2c2836;
  --bg-glass: rgba(17, 15, 23, 0.72);
  --text: #f7f3ff;
  --text-2: #ada4bb;
  --text-3: #9f99aa;
  --accent: #a98cff;
  --accent-text: #a98cff;
  --accent-hover: #b99fff;
  --accent-soft: rgba(169,140,255,.14);
  --on-accent: #120b20;
  --up: #57d99a;
  --up-soft: rgba(87,217,154,.13);
  --down: #ff7474;
  --down-soft: rgba(255,116,116,.13);
  --warn: #f2bd59;
  --warn-soft: rgba(242,189,89,.13);
  --info: #80adff;
  --info-soft: rgba(128,173,255,.13);
  --hairline: rgba(255,255,255,.08);
  --hairline-strong: rgba(255,255,255,.14);
  --card-shadow: none;
}
@media (prefers-color-scheme: light) {
  :root[data-palette="violet"]:not([data-theme="dark"]) {
    --bg: #faf9fd;
    --bg-elev: #f3f0f9;
    --bg-elev-2: #e9e4f2;
    --bg-elev-3: #e1dcea;
    --bg-glass: rgba(250, 249, 253, 0.78);
    --text: #191421;
    --text-2: #5a5265;
    --text-3: #635b6d;
    --accent: #7655d9;
    --accent-text: #6540d4;
    --accent-hover: #6141c4;
    --accent-soft: rgba(118,85,217,.10);
    --on-accent: #fff;
    --up: #0f603b;
    --up-soft: rgba(22,138,85,.10);
    --down: #9f2121;
    --down-soft: rgba(214,60,60,.09);
    --warn: #754b00;
    --warn-soft: rgba(168,107,0,.10);
    --info: #224dad;
    --info-soft: rgba(47,98,214,.09);
    --hairline: rgba(40,30,20,.08);
    --hairline-strong: rgba(40,30,20,.14);
    --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
  }
}
:root[data-palette="violet"][data-theme="light"],
[data-palette="violet"] .theme-scope:not(.pal-fixed)[data-theme="light"],
.theme-scope.pal-fixed[data-pal="violet"][data-theme="light"] {
  --bg: #faf9fd;
  --bg-elev: #f3f0f9;
  --bg-elev-2: #e9e4f2;
  --bg-elev-3: #e1dcea;
  --bg-glass: rgba(250, 249, 253, 0.78);
  --text: #191421;
  --text-2: #5a5265;
  --text-3: #635b6d;
  --accent: #7655d9;
  --accent-text: #6540d4;
  --accent-hover: #6141c4;
  --accent-soft: rgba(118,85,217,.10);
  --on-accent: #fff;
  --up: #0f603b;
  --up-soft: rgba(22,138,85,.10);
  --down: #9f2121;
  --down-soft: rgba(214,60,60,.09);
  --warn: #754b00;
  --warn-soft: rgba(168,107,0,.10);
  --info: #224dad;
  --info-soft: rgba(47,98,214,.09);
  --hairline: rgba(40,30,20,.08);
  --hairline-strong: rgba(40,30,20,.14);
  --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
}

/* Cobalt Cyan: Protocol · network · Web3 */
:root[data-palette="cobalt"],
[data-palette="cobalt"] .theme-scope:not(.pal-fixed)[data-theme="dark"],
.theme-scope.pal-fixed[data-pal="cobalt"][data-theme="dark"] {
  --bg: #091318;
  --bg-elev: #101d23;
  --bg-elev-2: #172831;
  --bg-elev-3: #203039;
  --bg-glass: rgba(9, 19, 24, 0.72);
  --text: #edfaff;
  --text-2: #9db4be;
  --text-3: #94a8b0;
  --accent: #39c8ee;
  --accent-text: #39c8ee;
  --accent-hover: #5bd4f3;
  --accent-soft: rgba(57,200,238,.14);
  --on-accent: #03141a;
  --up: #57d99a;
  --up-soft: rgba(87,217,154,.13);
  --down: #ff7474;
  --down-soft: rgba(255,116,116,.13);
  --warn: #f2bd59;
  --warn-soft: rgba(242,189,89,.13);
  --info: #80adff;
  --info-soft: rgba(128,173,255,.13);
  --hairline: rgba(255,255,255,.08);
  --hairline-strong: rgba(255,255,255,.14);
  --card-shadow: none;
}
@media (prefers-color-scheme: light) {
  :root[data-palette="cobalt"]:not([data-theme="dark"]) {
    --bg: #f7fbfc;
    --bg-elev: #eef6f8;
    --bg-elev-2: #e1eef2;
    --bg-elev-3: #d9e6ea;
    --bg-glass: rgba(247, 251, 252, 0.78);
    --text: #0e1b20;
    --text-2: #485d64;
    --text-3: #55656a;
    --accent: #087eae;
    --accent-text: #076891;
    --accent-hover: #066789;
    --accent-soft: rgba(8,126,174,.10);
    --on-accent: #fff;
    --up: #10623d;
    --up-soft: rgba(22,138,85,.10);
    --down: #a52323;
    --down-soft: rgba(214,60,60,.09);
    --warn: #784c00;
    --warn-soft: rgba(168,107,0,.10);
    --info: #2450b6;
    --info-soft: rgba(47,98,214,.09);
    --hairline: rgba(40,30,20,.08);
    --hairline-strong: rgba(40,30,20,.14);
    --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
  }
}
:root[data-palette="cobalt"][data-theme="light"],
[data-palette="cobalt"] .theme-scope:not(.pal-fixed)[data-theme="light"],
.theme-scope.pal-fixed[data-pal="cobalt"][data-theme="light"] {
  --bg: #f7fbfc;
  --bg-elev: #eef6f8;
  --bg-elev-2: #e1eef2;
  --bg-elev-3: #d9e6ea;
  --bg-glass: rgba(247, 251, 252, 0.78);
  --text: #0e1b20;
  --text-2: #485d64;
  --text-3: #55656a;
  --accent: #087eae;
  --accent-text: #076891;
  --accent-hover: #066789;
  --accent-soft: rgba(8,126,174,.10);
  --on-accent: #fff;
  --up: #10623d;
  --up-soft: rgba(22,138,85,.10);
  --down: #a52323;
  --down-soft: rgba(214,60,60,.09);
  --warn: #784c00;
  --warn-soft: rgba(168,107,0,.10);
  --info: #2450b6;
  --info-soft: rgba(47,98,214,.09);
  --hairline: rgba(40,30,20,.08);
  --hairline-strong: rgba(40,30,20,.14);
  --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
}

/* Amber: Value · treasury · conviction */
:root[data-palette="amber"],
[data-palette="amber"] .theme-scope:not(.pal-fixed)[data-theme="dark"],
.theme-scope.pal-fixed[data-pal="amber"][data-theme="dark"] {
  --bg: #151209;
  --bg-elev: #211c10;
  --bg-elev-2: #2c2516;
  --bg-elev-3: #342d1e;
  --bg-glass: rgba(21, 18, 9, 0.72);
  --text: #fff8e9;
  --text-2: #bfb193;
  --text-3: #b1a68f;
  --accent: #f0bd55;
  --accent-text: #f0bd55;
  --accent-hover: #f5c96e;
  --accent-soft: rgba(240,189,85,.14);
  --on-accent: #201503;
  --up: #57d99a;
  --up-soft: rgba(87,217,154,.13);
  --down: #ff7474;
  --down-soft: rgba(255,116,116,.13);
  --warn: #f2bd59;
  --warn-soft: rgba(242,189,89,.13);
  --info: #80adff;
  --info-soft: rgba(128,173,255,.13);
  --hairline: rgba(255,255,255,.08);
  --hairline-strong: rgba(255,255,255,.14);
  --card-shadow: none;
}
@media (prefers-color-scheme: light) {
  :root[data-palette="amber"]:not([data-theme="dark"]) {
    --bg: #fcfaf5;
    --bg-elev: #f7f2e7;
    --bg-elev-2: #eee7d8;
    --bg-elev-3: #e6dfd0;
    --bg-glass: rgba(252, 250, 245, 0.78);
    --text: #1d1910;
    --text-2: #5d5547;
    --text-3: #645d51;
    --accent: #a86b00;
    --accent-text: #845500;
    --accent-hover: #8b5800;
    --accent-soft: rgba(168,107,0,.11);
    --on-accent: #090805;
    --up: #0f603b;
    --up-soft: rgba(22,138,85,.10);
    --down: #a12222;
    --down-soft: rgba(214,60,60,.09);
    --warn: #754b00;
    --warn-soft: rgba(168,107,0,.10);
    --info: #224dad;
    --info-soft: rgba(47,98,214,.09);
    --hairline: rgba(40,30,20,.08);
    --hairline-strong: rgba(40,30,20,.14);
    --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
  }
}
:root[data-palette="amber"][data-theme="light"],
[data-palette="amber"] .theme-scope:not(.pal-fixed)[data-theme="light"],
.theme-scope.pal-fixed[data-pal="amber"][data-theme="light"] {
  --bg: #fcfaf5;
  --bg-elev: #f7f2e7;
  --bg-elev-2: #eee7d8;
  --bg-elev-3: #e6dfd0;
  --bg-glass: rgba(252, 250, 245, 0.78);
  --text: #1d1910;
  --text-2: #5d5547;
  --text-3: #645d51;
  --accent: #a86b00;
  --accent-text: #845500;
  --accent-hover: #8b5800;
  --accent-soft: rgba(168,107,0,.11);
  --on-accent: #090805;
  --up: #0f603b;
  --up-soft: rgba(22,138,85,.10);
  --down: #a12222;
  --down-soft: rgba(214,60,60,.09);
  --warn: #754b00;
  --warn-soft: rgba(168,107,0,.10);
  --info: #224dad;
  --info-soft: rgba(47,98,214,.09);
  --hairline: rgba(40,30,20,.08);
  --hairline-strong: rgba(40,30,20,.14);
  --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
}

/* Forest: Collective · organic · grounded */
:root[data-palette="forest"],
[data-palette="forest"] .theme-scope:not(.pal-fixed)[data-theme="dark"],
.theme-scope.pal-fixed[data-pal="forest"][data-theme="dark"] {
  --bg: #0d130f;
  --bg-elev: #151e17;
  --bg-elev-2: #1e2a21;
  --bg-elev-3: #263229;
  --bg-glass: rgba(13, 19, 15, 0.72);
  --text: #eef7ef;
  --text-2: #a4b5a6;
  --text-3: #9ca99f;
  --accent: #7bc889;
  --accent-text: #7bc889;
  --accent-hover: #91d49d;
  --accent-soft: rgba(123,200,137,.14);
  --on-accent: #09140b;
  --up: #57d99a;
  --up-soft: rgba(87,217,154,.13);
  --down: #ff7474;
  --down-soft: rgba(255,116,116,.13);
  --warn: #f2bd59;
  --warn-soft: rgba(242,189,89,.13);
  --info: #80adff;
  --info-soft: rgba(128,173,255,.13);
  --hairline: rgba(255,255,255,.08);
  --hairline-strong: rgba(255,255,255,.14);
  --card-shadow: none;
}
@media (prefers-color-scheme: light) {
  :root[data-palette="forest"]:not([data-theme="dark"]) {
    --bg: #f7faf7;
    --bg-elev: #eef5ef;
    --bg-elev-2: #e0ebe1;
    --bg-elev-3: #d8e3d9;
    --bg-glass: rgba(247, 250, 247, 0.78);
    --text: #132018;
    --text-2: #4b5a4f;
    --text-3: #57625a;
    --accent: #3d7d4c;
    --accent-text: #346a41;
    --accent-hover: #31653d;
    --accent-soft: rgba(61,125,76,.11);
    --on-accent: #fff;
    --up: #0f603b;
    --up-soft: rgba(22,138,85,.10);
    --down: #a12222;
    --down-soft: rgba(214,60,60,.09);
    --warn: #754b00;
    --warn-soft: rgba(168,107,0,.10);
    --info: #224dad;
    --info-soft: rgba(47,98,214,.09);
    --hairline: rgba(40,30,20,.08);
    --hairline-strong: rgba(40,30,20,.14);
    --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
  }
}
:root[data-palette="forest"][data-theme="light"],
[data-palette="forest"] .theme-scope:not(.pal-fixed)[data-theme="light"],
.theme-scope.pal-fixed[data-pal="forest"][data-theme="light"] {
  --bg: #f7faf7;
  --bg-elev: #eef5ef;
  --bg-elev-2: #e0ebe1;
  --bg-elev-3: #d8e3d9;
  --bg-glass: rgba(247, 250, 247, 0.78);
  --text: #132018;
  --text-2: #4b5a4f;
  --text-3: #57625a;
  --accent: #3d7d4c;
  --accent-text: #346a41;
  --accent-hover: #31653d;
  --accent-soft: rgba(61,125,76,.11);
  --on-accent: #fff;
  --up: #0f603b;
  --up-soft: rgba(22,138,85,.10);
  --down: #a12222;
  --down-soft: rgba(214,60,60,.09);
  --warn: #754b00;
  --warn-soft: rgba(168,107,0,.10);
  --info: #224dad;
  --info-soft: rgba(47,98,214,.09);
  --hairline: rgba(40,30,20,.08);
  --hairline-strong: rgba(40,30,20,.14);
  --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
}

/* Obsidian Lime: Experimental · high energy · crypto */
:root[data-palette="lime"],
[data-palette="lime"] .theme-scope:not(.pal-fixed)[data-theme="dark"],
.theme-scope.pal-fixed[data-pal="lime"][data-theme="dark"] {
  --bg: #0d1008;
  --bg-elev: #171b0e;
  --bg-elev-2: #222916;
  --bg-elev-3: #2b311f;
  --bg-glass: rgba(13, 16, 8, 0.72);
  --text: #f7faef;
  --text-2: #d9dfcb;
  --text-3: #a9b296;
  --accent: #b6ed3f;
  --accent-text: #b6ed3f;
  --accent-hover: #c4f65a;
  --accent-soft: rgba(182,237,63,.14);
  --on-accent: #111704;
  --up: #3fd1b0;
  --up-soft: rgba(63,209,176,.13);
  --down: #ff7474;
  --down-soft: rgba(255,116,116,.13);
  --warn: #f2bd59;
  --warn-soft: rgba(242,189,89,.13);
  --info: #80adff;
  --info-soft: rgba(128,173,255,.13);
  --hairline: rgba(255,255,255,.08);
  --hairline-strong: rgba(255,255,255,.14);
  --card-shadow: none;
}
@media (prefers-color-scheme: light) {
  :root[data-palette="lime"]:not([data-theme="dark"]) {
    --bg: #fafcf5;
    --bg-elev: #f3f6e8;
    --bg-elev-2: #e8edda;
    --bg-elev-3: #e0e5d2;
    --bg-glass: rgba(250, 252, 245, 0.78);
    --text: #151a0b;
    --text-2: #565d43;
    --text-3: #616652;
    --accent: #75a900;
    --accent-text: #4c6d00;
    --accent-hover: #5f8b00;
    --accent-soft: rgba(117,169,0,.11);
    --on-accent: #111500;
    --up: #0a634e;
    --up-soft: rgba(13,127,100,.10);
    --down: #a72323;
    --down-soft: rgba(214,60,60,.09);
    --warn: #7a4e00;
    --warn-soft: rgba(168,107,0,.10);
    --info: #2451b8;
    --info-soft: rgba(47,98,214,.09);
    --hairline: rgba(40,30,20,.08);
    --hairline-strong: rgba(40,30,20,.14);
    --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
  }
}
:root[data-palette="lime"][data-theme="light"],
[data-palette="lime"] .theme-scope:not(.pal-fixed)[data-theme="light"],
.theme-scope.pal-fixed[data-pal="lime"][data-theme="light"] {
  --bg: #fafcf5;
  --bg-elev: #f3f6e8;
  --bg-elev-2: #e8edda;
  --bg-elev-3: #e0e5d2;
  --bg-glass: rgba(250, 252, 245, 0.78);
  --text: #151a0b;
  --text-2: #565d43;
  --text-3: #616652;
  --accent: #75a900;
  --accent-text: #4c6d00;
  --accent-hover: #5f8b00;
  --accent-soft: rgba(117,169,0,.11);
  --on-accent: #111500;
  --up: #0a634e;
  --up-soft: rgba(13,127,100,.10);
  --down: #a72323;
  --down-soft: rgba(214,60,60,.09);
  --warn: #7a4e00;
  --warn-soft: rgba(168,107,0,.10);
  --info: #2451b8;
  --info-soft: rgba(47,98,214,.09);
  --hairline: rgba(40,30,20,.08);
  --hairline-strong: rgba(40,30,20,.14);
  --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
}

/* Indigo: Governance · institutional · serious */
:root[data-palette="indigo"],
[data-palette="indigo"] .theme-scope:not(.pal-fixed)[data-theme="dark"],
.theme-scope.pal-fixed[data-pal="indigo"][data-theme="dark"] {
  --bg: #0d1019;
  --bg-elev: #151a27;
  --bg-elev-2: #1e2535;
  --bg-elev-3: #262d3d;
  --bg-glass: rgba(13, 16, 25, 0.72);
  --text: #f1f3ff;
  --text-2: #a3a9bf;
  --text-3: #999faf;
  --accent: #8797ff;
  --accent-text: #8a99ff;
  --accent-hover: #9ba9ff;
  --accent-soft: rgba(135,151,255,.14);
  --on-accent: #0a0d19;
  --up: #57d99a;
  --up-soft: rgba(87,217,154,.13);
  --down: #ff7474;
  --down-soft: rgba(255,116,116,.13);
  --warn: #f2bd59;
  --warn-soft: rgba(242,189,89,.13);
  --info: #80adff;
  --info-soft: rgba(128,173,255,.13);
  --hairline: rgba(255,255,255,.08);
  --hairline-strong: rgba(255,255,255,.14);
  --card-shadow: none;
}
@media (prefers-color-scheme: light) {
  :root[data-palette="indigo"]:not([data-theme="dark"]) {
    --bg: #f8f9fd;
    --bg-elev: #f0f2f9;
    --bg-elev-2: #e3e7f2;
    --bg-elev-3: #dbdfea;
    --bg-glass: rgba(248, 249, 253, 0.78);
    --text: #131625;
    --text-2: #4f5567;
    --text-3: #585e6e;
    --accent: #4659b8;
    --accent-text: #4557b4;
    --accent-hover: #38499a;
    --accent-soft: rgba(70,89,184,.10);
    --on-accent: #fff;
    --up: #0f603b;
    --up-soft: rgba(22,138,85,.10);
    --down: #9f2121;
    --down-soft: rgba(214,60,60,.09);
    --warn: #754b00;
    --warn-soft: rgba(168,107,0,.10);
    --info: #224dad;
    --info-soft: rgba(47,98,214,.09);
    --hairline: rgba(40,30,20,.08);
    --hairline-strong: rgba(40,30,20,.14);
    --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
  }
}
:root[data-palette="indigo"][data-theme="light"],
[data-palette="indigo"] .theme-scope:not(.pal-fixed)[data-theme="light"],
.theme-scope.pal-fixed[data-pal="indigo"][data-theme="light"] {
  --bg: #f8f9fd;
  --bg-elev: #f0f2f9;
  --bg-elev-2: #e3e7f2;
  --bg-elev-3: #dbdfea;
  --bg-glass: rgba(248, 249, 253, 0.78);
  --text: #131625;
  --text-2: #4f5567;
  --text-3: #585e6e;
  --accent: #4659b8;
  --accent-text: #4557b4;
  --accent-hover: #38499a;
  --accent-soft: rgba(70,89,184,.10);
  --on-accent: #fff;
  --up: #0f603b;
  --up-soft: rgba(22,138,85,.10);
  --down: #9f2121;
  --down-soft: rgba(214,60,60,.09);
  --warn: #754b00;
  --warn-soft: rgba(168,107,0,.10);
  --info: #224dad;
  --info-soft: rgba(47,98,214,.09);
  --hairline: rgba(40,30,20,.08);
  --hairline-strong: rgba(40,30,20,.14);
  --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
}

/* Rose: Human · expressive · social */
:root[data-palette="rose"],
[data-palette="rose"] .theme-scope:not(.pal-fixed)[data-theme="dark"],
.theme-scope.pal-fixed[data-pal="rose"][data-theme="dark"] {
  --bg: #160d10;
  --bg-elev: #211419;
  --bg-elev-2: #2c1b22;
  --bg-elev-3: #34242a;
  --bg-glass: rgba(22, 13, 16, 0.72);
  --text: #fff1f5;
  --text-2: #bda0a9;
  --text-3: #a7969c;
  --accent: #f0809f;
  --accent-text: #f0809f;
  --accent-hover: #f694ae;
  --accent-soft: rgba(240,128,159,.14);
  --on-accent: #220a12;
  --up: #57d99a;
  --up-soft: rgba(87,217,154,.13);
  --down: #ff7474;
  --down-soft: rgba(255,116,116,.13);
  --warn: #f2bd59;
  --warn-soft: rgba(242,189,89,.13);
  --info: #80adff;
  --info-soft: rgba(128,173,255,.13);
  --hairline: rgba(255,255,255,.08);
  --hairline-strong: rgba(255,255,255,.14);
  --card-shadow: none;
}
@media (prefers-color-scheme: light) {
  :root[data-palette="rose"]:not([data-theme="dark"]) {
    --bg: #fdf9fa;
    --bg-elev: #f8f0f2;
    --bg-elev-2: #f0e3e6;
    --bg-elev-3: #e8dbde;
    --bg-glass: rgba(253, 249, 250, 0.78);
    --text: #211417;
    --text-2: #635156;
    --text-3: #6b5a5f;
    --accent: #c24f6d;
    --accent-text: #a23855;
    --accent-hover: #a93f5b;
    --accent-soft: rgba(194,79,109,.10);
    --on-accent: #fff;
    --up: #0f603b;
    --up-soft: rgba(22,138,85,.10);
    --down: #a12222;
    --down-soft: rgba(214,60,60,.09);
    --warn: #754b00;
    --warn-soft: rgba(168,107,0,.10);
    --info: #224dad;
    --info-soft: rgba(47,98,214,.09);
    --hairline: rgba(40,30,20,.08);
    --hairline-strong: rgba(40,30,20,.14);
    --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
  }
}
:root[data-palette="rose"][data-theme="light"],
[data-palette="rose"] .theme-scope:not(.pal-fixed)[data-theme="light"],
.theme-scope.pal-fixed[data-pal="rose"][data-theme="light"] {
  --bg: #fdf9fa;
  --bg-elev: #f8f0f2;
  --bg-elev-2: #f0e3e6;
  --bg-elev-3: #e8dbde;
  --bg-glass: rgba(253, 249, 250, 0.78);
  --text: #211417;
  --text-2: #635156;
  --text-3: #6b5a5f;
  --accent: #c24f6d;
  --accent-text: #a23855;
  --accent-hover: #a93f5b;
  --accent-soft: rgba(194,79,109,.10);
  --on-accent: #fff;
  --up: #0f603b;
  --up-soft: rgba(22,138,85,.10);
  --down: #a12222;
  --down-soft: rgba(214,60,60,.09);
  --warn: #754b00;
  --warn-soft: rgba(168,107,0,.10);
  --info: #224dad;
  --info-soft: rgba(47,98,214,.09);
  --hairline: rgba(40,30,20,.08);
  --hairline-strong: rgba(40,30,20,.14);
  --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
}

/* Ocean: Calm · open · global */
:root[data-palette="ocean"],
[data-palette="ocean"] .theme-scope:not(.pal-fixed)[data-theme="dark"],
.theme-scope.pal-fixed[data-pal="ocean"][data-theme="dark"] {
  --bg: #091417;
  --bg-elev: #102024;
  --bg-elev-2: #172d32;
  --bg-elev-3: #20353a;
  --bg-glass: rgba(9, 20, 23, 0.72);
  --text: #edfbfd;
  --text-2: #a5bcc0;
  --text-3: #9bb0b3;
  --accent: #58d5df;
  --accent-text: #58d5df;
  --accent-hover: #73dfe7;
  --accent-soft: rgba(88,213,223,.14);
  --on-accent: #061719;
  --up: #57d99a;
  --up-soft: rgba(87,217,154,.13);
  --down: #ff7474;
  --down-soft: rgba(255,116,116,.13);
  --warn: #f2bd59;
  --warn-soft: rgba(242,189,89,.13);
  --info: #80adff;
  --info-soft: rgba(128,173,255,.13);
  --hairline: rgba(255,255,255,.08);
  --hairline-strong: rgba(255,255,255,.14);
  --card-shadow: none;
}
@media (prefers-color-scheme: light) {
  :root[data-palette="ocean"]:not([data-theme="dark"]) {
    --bg: #f6fbfc;
    --bg-elev: #edf7f9;
    --bg-elev-2: #dfedf0;
    --bg-elev-3: #d7e5e8;
    --bg-glass: rgba(246, 251, 252, 0.78);
    --text: #102024;
    --text-2: #485b61;
    --text-3: #546469;
    --accent: #168da0;
    --accent-text: #116b7a;
    --accent-hover: #117583;
    --accent-soft: rgba(22,141,160,.10);
    --on-accent: #0d1a1d;
    --up: #10623d;
    --up-soft: rgba(22,138,85,.10);
    --down: #a52323;
    --down-soft: rgba(214,60,60,.09);
    --warn: #784c00;
    --warn-soft: rgba(168,107,0,.10);
    --info: #2450b6;
    --info-soft: rgba(47,98,214,.09);
    --hairline: rgba(40,30,20,.08);
    --hairline-strong: rgba(40,30,20,.14);
    --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
  }
}
:root[data-palette="ocean"][data-theme="light"],
[data-palette="ocean"] .theme-scope:not(.pal-fixed)[data-theme="light"],
.theme-scope.pal-fixed[data-pal="ocean"][data-theme="light"] {
  --bg: #f6fbfc;
  --bg-elev: #edf7f9;
  --bg-elev-2: #dfedf0;
  --bg-elev-3: #d7e5e8;
  --bg-glass: rgba(246, 251, 252, 0.78);
  --text: #102024;
  --text-2: #485b61;
  --text-3: #546469;
  --accent: #168da0;
  --accent-text: #116b7a;
  --accent-hover: #117583;
  --accent-soft: rgba(22,141,160,.10);
  --on-accent: #0d1a1d;
  --up: #10623d;
  --up-soft: rgba(22,138,85,.10);
  --down: #a52323;
  --down-soft: rgba(214,60,60,.09);
  --warn: #784c00;
  --warn-soft: rgba(168,107,0,.10);
  --info: #2450b6;
  --info-soft: rgba(47,98,214,.09);
  --hairline: rgba(40,30,20,.08);
  --hairline-strong: rgba(40,30,20,.14);
  --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
}

/* Solar: Optimistic · bright · accessible */
:root[data-palette="solar"],
[data-palette="solar"] .theme-scope:not(.pal-fixed)[data-theme="dark"],
.theme-scope.pal-fixed[data-pal="solar"][data-theme="dark"] {
  --bg: #15120a;
  --bg-elev: #211d10;
  --bg-elev-2: #2c2717;
  --bg-elev-3: #342f1f;
  --bg-glass: rgba(21, 18, 10, 0.72);
  --text: #fff8dd;
  --text-2: #bfb595;
  --text-3: #b3aa8f;
  --accent: #f3ca4d;
  --accent-text: #f3ca4d;
  --accent-hover: #f7d263;
  --accent-soft: rgba(243,202,77,.14);
  --on-accent: #201800;
  --up: #57d99a;
  --up-soft: rgba(87,217,154,.13);
  --down: #ff7474;
  --down-soft: rgba(255,116,116,.13);
  --warn: #f2bd59;
  --warn-soft: rgba(242,189,89,.13);
  --info: #80adff;
  --info-soft: rgba(128,173,255,.13);
  --hairline: rgba(255,255,255,.08);
  --hairline-strong: rgba(255,255,255,.14);
  --card-shadow: none;
}
@media (prefers-color-scheme: light) {
  :root[data-palette="solar"]:not([data-theme="dark"]) {
    --bg: #fffdf5;
    --bg-elev: #faf6e7;
    --bg-elev-2: #f2ead0;
    --bg-elev-3: #eae2c8;
    --bg-glass: rgba(255, 253, 245, 0.78);
    --text: #211d0d;
    --text-2: #605a42;
    --text-3: #69624d;
    --accent: #b88700;
    --accent-text: #7d5c00;
    --accent-hover: #966f00;
    --accent-soft: rgba(184,135,0,.11);
    --on-accent: #211d0d;
    --up: #10623d;
    --up-soft: rgba(22,138,85,.10);
    --down: #a72323;
    --down-soft: rgba(214,60,60,.09);
    --warn: #7a4e00;
    --warn-soft: rgba(168,107,0,.10);
    --info: #2450b6;
    --info-soft: rgba(47,98,214,.09);
    --hairline: rgba(40,30,20,.08);
    --hairline-strong: rgba(40,30,20,.14);
    --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
  }
}
:root[data-palette="solar"][data-theme="light"],
[data-palette="solar"] .theme-scope:not(.pal-fixed)[data-theme="light"],
.theme-scope.pal-fixed[data-pal="solar"][data-theme="light"] {
  --bg: #fffdf5;
  --bg-elev: #faf6e7;
  --bg-elev-2: #f2ead0;
  --bg-elev-3: #eae2c8;
  --bg-glass: rgba(255, 253, 245, 0.78);
  --text: #211d0d;
  --text-2: #605a42;
  --text-3: #69624d;
  --accent: #b88700;
  --accent-text: #7d5c00;
  --accent-hover: #966f00;
  --accent-soft: rgba(184,135,0,.11);
  --on-accent: #211d0d;
  --up: #10623d;
  --up-soft: rgba(22,138,85,.10);
  --down: #a72323;
  --down-soft: rgba(214,60,60,.09);
  --warn: #7a4e00;
  --warn-soft: rgba(168,107,0,.10);
  --info: #2450b6;
  --info-soft: rgba(47,98,214,.09);
  --hairline: rgba(40,30,20,.08);
  --hairline-strong: rgba(40,30,20,.14);
  --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
}

/* Ruby: Bold · conviction · premium */
:root[data-palette="ruby"],
[data-palette="ruby"] .theme-scope:not(.pal-fixed)[data-theme="dark"],
.theme-scope.pal-fixed[data-pal="ruby"][data-theme="dark"] {
  --bg: #160b0d;
  --bg-elev: #211315;
  --bg-elev-2: #2c1b1e;
  --bg-elev-3: #342426;
  --bg-glass: rgba(22, 11, 13, 0.72);
  --text: #fff1f2;
  --text-2: #bfa0a4;
  --text-3: #a69397;
  --accent: #ed6878;
  --accent-text: #ee6f7e;
  --accent-hover: #f27c8b;
  --accent-soft: rgba(237,104,120,.14);
  --on-accent: #21070b;
  --up: #57d99a;
  --up-soft: rgba(87,217,154,.13);
  --down: #ff7474;
  --down-soft: rgba(255,116,116,.13);
  --warn: #f2bd59;
  --warn-soft: rgba(242,189,89,.13);
  --info: #80adff;
  --info-soft: rgba(128,173,255,.13);
  --hairline: rgba(255,255,255,.08);
  --hairline-strong: rgba(255,255,255,.14);
  --card-shadow: none;
}
@media (prefers-color-scheme: light) {
  :root[data-palette="ruby"]:not([data-theme="dark"]) {
    --bg: #fdf8f8;
    --bg-elev: #f8eeee;
    --bg-elev-2: #f0e1e1;
    --bg-elev-3: #e8d9d9;
    --bg-glass: rgba(253, 248, 248, 0.78);
    --text: #211314;
    --text-2: #624e50;
    --text-3: #6a5758;
    --accent: #b83d4f;
    --accent-text: #a33646;
    --accent-hover: #9b2e3f;
    --accent-soft: rgba(184,61,79,.10);
    --on-accent: #fff;
    --up: #0f5e3a;
    --up-soft: rgba(22,138,85,.10);
    --down: #9d2121;
    --down-soft: rgba(214,60,60,.09);
    --warn: #724900;
    --warn-soft: rgba(168,107,0,.10);
    --info: #214ba9;
    --info-soft: rgba(47,98,214,.09);
    --hairline: rgba(40,30,20,.08);
    --hairline-strong: rgba(40,30,20,.14);
    --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
  }
}
:root[data-palette="ruby"][data-theme="light"],
[data-palette="ruby"] .theme-scope:not(.pal-fixed)[data-theme="light"],
.theme-scope.pal-fixed[data-pal="ruby"][data-theme="light"] {
  --bg: #fdf8f8;
  --bg-elev: #f8eeee;
  --bg-elev-2: #f0e1e1;
  --bg-elev-3: #e8d9d9;
  --bg-glass: rgba(253, 248, 248, 0.78);
  --text: #211314;
  --text-2: #624e50;
  --text-3: #6a5758;
  --accent: #b83d4f;
  --accent-text: #a33646;
  --accent-hover: #9b2e3f;
  --accent-soft: rgba(184,61,79,.10);
  --on-accent: #fff;
  --up: #0f5e3a;
  --up-soft: rgba(22,138,85,.10);
  --down: #9d2121;
  --down-soft: rgba(214,60,60,.09);
  --warn: #724900;
  --warn-soft: rgba(168,107,0,.10);
  --info: #214ba9;
  --info-soft: rgba(47,98,214,.09);
  --hairline: rgba(40,30,20,.08);
  --hairline-strong: rgba(40,30,20,.14);
  --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
}

/* Mint: Clean · modern · optimistic */
:root[data-palette="mint"],
[data-palette="mint"] .theme-scope:not(.pal-fixed)[data-theme="dark"],
.theme-scope.pal-fixed[data-pal="mint"][data-theme="dark"] {
  --bg: #0a1410;
  --bg-elev: #122019;
  --bg-elev-2: #1a2b23;
  --bg-elev-3: #22332b;
  --bg-glass: rgba(10, 20, 16, 0.72);
  --text: #edf9f3;
  --text-2: #a4bbb0;
  --text-3: #9cafa6;
  --accent: #65e2b2;
  --accent-text: #65e2b2;
  --accent-hover: #7be9be;
  --accent-soft: rgba(101,226,178,.14);
  --on-accent: #06150f;
  --up: #57d99a;
  --up-soft: rgba(87,217,154,.13);
  --down: #ff7474;
  --down-soft: rgba(255,116,116,.13);
  --warn: #f2bd59;
  --warn-soft: rgba(242,189,89,.13);
  --info: #80adff;
  --info-soft: rgba(128,173,255,.13);
  --hairline: rgba(255,255,255,.08);
  --hairline-strong: rgba(255,255,255,.14);
  --card-shadow: none;
}
@media (prefers-color-scheme: light) {
  :root[data-palette="mint"]:not([data-theme="dark"]) {
    --bg: #f7fcfa;
    --bg-elev: #eff8f4;
    --bg-elev-2: #e2f0ea;
    --bg-elev-3: #dae8e2;
    --bg-glass: rgba(247, 252, 250, 0.78);
    --text: #112019;
    --text-2: #4c6057;
    --text-3: #596860;
    --accent: #20a77a;
    --accent-text: #167153;
    --accent-hover: #168a63;
    --accent-soft: rgba(32,167,122,.10);
    --on-accent: #112019;
    --up: #10653e;
    --up-soft: rgba(22,138,85,.10);
    --down: #aa2424;
    --down-soft: rgba(214,60,60,.09);
    --warn: #7d4f00;
    --warn-soft: rgba(168,107,0,.10);
    --info: #2552ba;
    --info-soft: rgba(47,98,214,.09);
    --hairline: rgba(40,30,20,.08);
    --hairline-strong: rgba(40,30,20,.14);
    --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
  }
}
:root[data-palette="mint"][data-theme="light"],
[data-palette="mint"] .theme-scope:not(.pal-fixed)[data-theme="light"],
.theme-scope.pal-fixed[data-pal="mint"][data-theme="light"] {
  --bg: #f7fcfa;
  --bg-elev: #eff8f4;
  --bg-elev-2: #e2f0ea;
  --bg-elev-3: #dae8e2;
  --bg-glass: rgba(247, 252, 250, 0.78);
  --text: #112019;
  --text-2: #4c6057;
  --text-3: #596860;
  --accent: #20a77a;
  --accent-text: #167153;
  --accent-hover: #168a63;
  --accent-soft: rgba(32,167,122,.10);
  --on-accent: #112019;
  --up: #10653e;
  --up-soft: rgba(22,138,85,.10);
  --down: #aa2424;
  --down-soft: rgba(214,60,60,.09);
  --warn: #7d4f00;
  --warn-soft: rgba(168,107,0,.10);
  --info: #2552ba;
  --info-soft: rgba(47,98,214,.09);
  --hairline: rgba(40,30,20,.08);
  --hairline-strong: rgba(40,30,20,.14);
  --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
}

/* Monochrome: Ultra-minimal · neutral · timeless */
:root[data-palette="mono"],
[data-palette="mono"] .theme-scope:not(.pal-fixed)[data-theme="dark"],
.theme-scope.pal-fixed[data-pal="mono"][data-theme="dark"] {
  --bg: #0d0d0d;
  --bg-elev: #171717;
  --bg-elev-2: #222222;
  --bg-elev-3: #2a2a2a;
  --bg-glass: rgba(13, 13, 13, 0.72);
  --text: #f5f5f5;
  --text-2: #b1b1b1;
  --text-3: #a6a6a6;
  --accent: #f5f5f5;
  --accent-text: #f5f5f5;
  --accent-hover: #ffffff;
  --accent-soft: rgba(245,245,245,.12);
  --on-accent: #111;
  --up: #57d99a;
  --up-soft: rgba(87,217,154,.13);
  --down: #ff7474;
  --down-soft: rgba(255,116,116,.13);
  --warn: #f2bd59;
  --warn-soft: rgba(242,189,89,.13);
  --info: #80adff;
  --info-soft: rgba(128,173,255,.13);
  --hairline: rgba(255,255,255,.08);
  --hairline-strong: rgba(255,255,255,.14);
  --card-shadow: none;
}
@media (prefers-color-scheme: light) {
  :root[data-palette="mono"]:not([data-theme="dark"]) {
    --bg: #fafafa;
    --bg-elev: #f3f3f3;
    --bg-elev-2: #e9e9e9;
    --bg-elev-3: #e0e0e0;
    --bg-glass: rgba(250, 250, 250, 0.78);
    --text: #111111;
    --text-2: #555555;
    --text-3: #5d5d5d;
    --accent: #111111;
    --accent-text: #111111;
    --accent-hover: #2a2a2a;
    --accent-soft: rgba(17,17,17,.08);
    --on-accent: #fff;
    --up: #0f5e3a;
    --up-soft: rgba(22,138,85,.10);
    --down: #9d2121;
    --down-soft: rgba(214,60,60,.09);
    --warn: #724900;
    --warn-soft: rgba(168,107,0,.10);
    --info: #214ba9;
    --info-soft: rgba(47,98,214,.09);
    --hairline: rgba(40,30,20,.08);
    --hairline-strong: rgba(40,30,20,.14);
    --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
  }
}
:root[data-palette="mono"][data-theme="light"],
[data-palette="mono"] .theme-scope:not(.pal-fixed)[data-theme="light"],
.theme-scope.pal-fixed[data-pal="mono"][data-theme="light"] {
  --bg: #fafafa;
  --bg-elev: #f3f3f3;
  --bg-elev-2: #e9e9e9;
  --bg-elev-3: #e0e0e0;
  --bg-glass: rgba(250, 250, 250, 0.78);
  --text: #111111;
  --text-2: #555555;
  --text-3: #5d5d5d;
  --accent: #111111;
  --accent-text: #111111;
  --accent-hover: #2a2a2a;
  --accent-soft: rgba(17,17,17,.08);
  --on-accent: #fff;
  --up: #0f5e3a;
  --up-soft: rgba(22,138,85,.10);
  --down: #9d2121;
  --down-soft: rgba(214,60,60,.09);
  --warn: #724900;
  --warn-soft: rgba(168,107,0,.10);
  --info: #214ba9;
  --info-soft: rgba(47,98,214,.09);
  --hairline: rgba(40,30,20,.08);
  --hairline-strong: rgba(40,30,20,.14);
  --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
}

/* Infrared: Signal · urgency · frontier */
:root[data-palette="infrared"],
[data-palette="infrared"] .theme-scope:not(.pal-fixed)[data-theme="dark"],
.theme-scope.pal-fixed[data-pal="infrared"][data-theme="dark"] {
  --bg: #160c09;
  --bg-elev: #211411;
  --bg-elev-2: #2c1b17;
  --bg-elev-3: #342420;
  --bg-glass: rgba(22, 12, 9, 0.72);
  --text: #fff2ed;
  --text-2: #bca39a;
  --text-3: #a69690;
  --accent: #ff7a58;
  --accent-text: #ff7a58;
  --accent-hover: #ff8d70;
  --accent-soft: rgba(255,122,88,.14);
  --on-accent: #250a04;
  --up: #57d99a;
  --up-soft: rgba(87,217,154,.13);
  --down: #ff7474;
  --down-soft: rgba(255,116,116,.13);
  --warn: #f2bd59;
  --warn-soft: rgba(242,189,89,.13);
  --info: #80adff;
  --info-soft: rgba(128,173,255,.13);
  --hairline: rgba(255,255,255,.08);
  --hairline-strong: rgba(255,255,255,.14);
  --card-shadow: none;
}
@media (prefers-color-scheme: light) {
  :root[data-palette="infrared"]:not([data-theme="dark"]) {
    --bg: #fdf9f7;
    --bg-elev: #f8efeb;
    --bg-elev-2: #f0e1dc;
    --bg-elev-3: #e8d9d4;
    --bg-glass: rgba(253, 249, 247, 0.78);
    --text: #211512;
    --text-2: #64504b;
    --text-3: #6b5954;
    --accent: #df4d2e;
    --accent-text: #a9331a;
    --accent-hover: #be3d22;
    --accent-soft: rgba(223,77,46,.10);
    --on-accent: #1e1310;
    --up: #0f5e3a;
    --up-soft: rgba(22,138,85,.10);
    --down: #9f2121;
    --down-soft: rgba(214,60,60,.09);
    --warn: #724900;
    --warn-soft: rgba(168,107,0,.10);
    --info: #224cab;
    --info-soft: rgba(47,98,214,.09);
    --hairline: rgba(40,30,20,.08);
    --hairline-strong: rgba(40,30,20,.14);
    --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
  }
}
:root[data-palette="infrared"][data-theme="light"],
[data-palette="infrared"] .theme-scope:not(.pal-fixed)[data-theme="light"],
.theme-scope.pal-fixed[data-pal="infrared"][data-theme="light"] {
  --bg: #fdf9f7;
  --bg-elev: #f8efeb;
  --bg-elev-2: #f0e1dc;
  --bg-elev-3: #e8d9d4;
  --bg-glass: rgba(253, 249, 247, 0.78);
  --text: #211512;
  --text-2: #64504b;
  --text-3: #6b5954;
  --accent: #df4d2e;
  --accent-text: #a9331a;
  --accent-hover: #be3d22;
  --accent-soft: rgba(223,77,46,.10);
  --on-accent: #1e1310;
  --up: #0f5e3a;
  --up-soft: rgba(22,138,85,.10);
  --down: #9f2121;
  --down-soft: rgba(214,60,60,.09);
  --warn: #724900;
  --warn-soft: rgba(168,107,0,.10);
  --info: #224cab;
  --info-soft: rgba(47,98,214,.09);
  --hairline: rgba(40,30,20,.08);
  --hairline-strong: rgba(40,30,20,.14);
  --card-shadow: 0 1px 2px rgba(60,40,20,.04),0 6px 20px rgba(60,40,20,.05);
}

/* swatches (preferences popover): day accent / night accent */
.pal-sw[data-pal="clay"] { background: linear-gradient(135deg, #c8643a 0 50%, #e58a5f 50% 100%); }
.pal-sw[data-pal="emerald"] { background: linear-gradient(135deg, #138a58 0 50%, #5ee3a2 50% 100%); }
.pal-sw[data-pal="electric"] { background: linear-gradient(135deg, #246bdb 0 50%, #67a2ff 50% 100%); }
.pal-sw[data-pal="violet"] { background: linear-gradient(135deg, #7655d9 0 50%, #a98cff 50% 100%); }
.pal-sw[data-pal="cobalt"] { background: linear-gradient(135deg, #087eae 0 50%, #39c8ee 50% 100%); }
.pal-sw[data-pal="amber"] { background: linear-gradient(135deg, #a86b00 0 50%, #f0bd55 50% 100%); }
.pal-sw[data-pal="forest"] { background: linear-gradient(135deg, #3d7d4c 0 50%, #7bc889 50% 100%); }
.pal-sw[data-pal="lime"] { background: linear-gradient(135deg, #75a900 0 50%, #b6ed3f 50% 100%); }
.pal-sw[data-pal="indigo"] { background: linear-gradient(135deg, #4659b8 0 50%, #8797ff 50% 100%); }
.pal-sw[data-pal="rose"] { background: linear-gradient(135deg, #c24f6d 0 50%, #f0809f 50% 100%); }
.pal-sw[data-pal="ocean"] { background: linear-gradient(135deg, #168da0 0 50%, #58d5df 50% 100%); }
.pal-sw[data-pal="solar"] { background: linear-gradient(135deg, #b88700 0 50%, #f3ca4d 50% 100%); }
.pal-sw[data-pal="ruby"] { background: linear-gradient(135deg, #b83d4f 0 50%, #ed6878 50% 100%); }
.pal-sw[data-pal="mint"] { background: linear-gradient(135deg, #20a77a 0 50%, #65e2b2 50% 100%); }
.pal-sw[data-pal="mono"] { background: linear-gradient(135deg, #111111 0 50%, #f5f5f5 50% 100%); }
.pal-sw[data-pal="infrared"] { background: linear-gradient(135deg, #df4d2e 0 50%, #ff7a58 50% 100%); }

/* shared palette UI (same in both sites) */
.pal-swatches { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 6px; }
.pal-sw { width: 100%; max-width: 30px; aspect-ratio: 1; height: auto; justify-self: center; border-radius: 50%; border: 0; padding: 0; cursor: pointer;
  box-shadow: inset 0 0 0 1px var(--hairline-strong); transition: transform var(--dur-1) var(--ease); }
.pal-sw:hover { transform: scale(1.08); }
.pal-sw[aria-checked="true"] { box-shadow: 0 0 0 2px var(--bg-elev), 0 0 0 4px var(--text); }
.pal-sw:focus-visible { outline: 2px solid var(--accent-text); outline-offset: 3px; }
.pal-current { margin-top: 6px; font-size: var(--fs-xs); color: var(--text-3); }

.pal-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: var(--s4); }
.pal-card { display: flex; flex-direction: column; gap: var(--s3); min-width: 0; padding: var(--s3); text-align: left;
  font: inherit; color: var(--text); background: var(--bg-elev); border: 1px solid var(--hairline); border-radius: var(--r-lg);
  cursor: pointer; transition: border-color var(--dur-2) var(--ease), transform var(--dur-2) var(--ease); }
.pal-card:hover { border-color: var(--hairline-strong); transform: translateY(-1px); }
.pal-card[aria-pressed="true"] { border-color: var(--accent-text); box-shadow: 0 0 0 1px var(--accent-text); }
.pal-card:focus-visible { outline: 2px solid var(--accent-text); outline-offset: 2px; }
.pal-card-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s2); padding: 0 var(--s1); }
.pal-card-head b { font-size: var(--fs-sm); font-weight: 650; }
.pal-card-head small { font-size: 12px; color: var(--text-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pal-card-on { display: none; font-size: 12px; font-weight: 650; color: var(--accent-text); }
.pal-card[aria-pressed="true"] .pal-card-on { display: inline; }
.pal-duo { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s2); }
.pal-mini { display: flex; flex-direction: column; gap: 7px; min-width: 0; padding: 10px; border-radius: var(--r-sm);
  background: var(--bg); color: var(--text); border: 1px solid var(--hairline); }
.pal-mini-k { font-size: 12px; font-weight: 650; letter-spacing: .06em; text-transform: uppercase; color: var(--text-3); }
.pal-mini-h { font-size: 15px; font-weight: 650; letter-spacing: var(--ls-snug); color: var(--text); }
.pal-mini-p { font-size: 12px; line-height: 1.35; color: var(--text-2); }
.pal-mini-card { display: flex; flex-direction: column; gap: 6px; padding: 7px; border-radius: 8px; background: var(--bg-elev); border: 1px solid var(--hairline); }
.pal-mini-row { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; }
.pal-mini-btn { display: inline-block; padding: 3px 8px; border-radius: 999px; font-size: 12px; font-weight: 650; background: var(--accent); color: var(--on-accent); }
.pal-mini-soft { display: inline-block; padding: 3px 8px; border-radius: 999px; font-size: 12px; font-weight: 650; background: var(--accent-soft); color: var(--accent-text); }
.pal-mini-bar { display: block; height: 4px; border-radius: 99px; background: var(--bg-elev-3); overflow: hidden; }
.pal-mini-bar i { display: block; width: 62%; height: 100%; background: var(--accent); }
.pal-mini-dot { width: 8px; height: 8px; border-radius: 50%; }
.pal-mini-dot.up { background: var(--up); } .pal-mini-dot.down { background: var(--down); } .pal-mini-dot.warn { background: var(--warn); } .pal-mini-dot.info { background: var(--info); }
.pal-tokens { margin: 0; padding: var(--s4); border-radius: var(--r-md); background: var(--bg-elev-2); color: var(--text-2);
  font-family: var(--font-mono); font-size: var(--fs-xs); line-height: 1.55; overflow-x: auto; white-space: pre; }
