/* GENERATED FILE — do not edit by hand.
 *
 * Built from themes/*.json by scripts/build-palettes.mjs (`npm run palettes:build`).
 *
 * Each palette overrides the ported handoff tokens only while it is selected. With no
 * data-palette attribute the app uses the Factorium palette from tokens/colors.css,
 * which stays the default and the source of truth (UI-2).
 *
 * The shadcn layer is each theme's own; the surface scale, text, borders and brand
 * accents are derived from it, because a registry item does not define them.
 */

/* amber-minimal */
html[data-palette="amber-minimal"] {
  --background: oklch(0.2046 0 0);
  --foreground: oklch(0.9219 0 0);
  --card: oklch(0.2686 0 0);
  --card-foreground: oklch(0.9219 0 0);
  --popover: oklch(0.2686 0 0);
  --popover-foreground: oklch(0.9219 0 0);
  --primary: oklch(0.7686 0.1647 70.0804);
  --primary-foreground: oklch(0 0 0);
  --secondary: oklch(0.2686 0 0);
  --secondary-foreground: oklch(0.9219 0 0);
  --muted: oklch(0.2393 0 0);
  --muted-foreground: oklch(0.7155 0 0);
  --accent: oklch(0.4732 0.1247 46.2007);
  --accent-foreground: oklch(0.9243 0.1151 95.7459);
  --destructive: oklch(0.6368 0.2078 25.3313);
  --destructive-foreground: oklch(1.0000 0 0);
  --border: oklch(0.3715 0 0);
  --input: oklch(0.3715 0 0);
  --ring: oklch(0.7686 0.1647 70.0804);
  --sidebar: oklch(0.1684 0 0);
  --sidebar-foreground: oklch(0.9219 0 0);
  --sidebar-primary: oklch(0.7686 0.1647 70.0804);
  --sidebar-primary-foreground: oklch(1.0000 0 0);
  --sidebar-accent: oklch(0.4732 0.1247 46.2007);
  --sidebar-accent-foreground: oklch(0.9243 0.1151 95.7459);
  --sidebar-border: oklch(0.3715 0 0);
  --sidebar-ring: oklch(0.7686 0.1647 70.0804);
  --surface-0: oklch(0.2046 0 0);
  --surface-1: oklch(0.1684 0 0);
  --surface-2: oklch(0.2686 0 0);
  --surface-3: oklch(0.3286 0 0);
  --surface-glass: oklch(0.2686 0 0 / 0.1);
  --surface-glass-md: oklch(0.2686 0 0 / 0.4);
  --surface-glass-heavy: oklch(0.2686 0 0 / 0.8);
  --text-primary: oklch(0.9219 0 0);
  --text-secondary: oklch(0.7155 0 0);
  --text-muted: oklch(0.5622 0 0);
  --text-inverse: oklch(0.2046 0 0);
  --border-default: oklch(1 0 0 / 0.1);
  --border-subtle: oklch(1 0 0 / 0.06);
  --border-strong: oklch(1 0 0 / 0.2);
  --vl-life: oklch(0.7686 0.1647 220.08);
  --vl-life-soft: oklch(0.9186 0.0988 220.08);
  --vl-life-muted: oklch(0.5686 0.0824 220.08);
  --vl-virtual: oklch(0.7686 0.1647 70.08);
  --vl-virtual-soft: oklch(0.9186 0.0988 70.08);
  --vl-virtual-muted: oklch(0.5686 0.0824 70.08);
  --vl-bridge: oklch(0.7686 0.1647 10.08);
  --vl-bridge-soft: oklch(0.9186 0.0988 10.08);
  --vl-accent-warm: oklch(0.7686 0.1647 130.08);
  --gradient-brand: linear-gradient(120deg, oklch(0.7686 0.1647 10.08) 0%, oklch(0.7686 0.1647 130.08) 50%, oklch(0.7686 0.1647 220.08) 100%);
  --success: oklch(0.723 0.219 150);
  --warning: oklch(0.828 0.189 84);
  --info: oklch(0.6 0.2 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}
html[data-palette="amber-minimal"].light {
  --background: oklch(1.0000 0 0);
  --foreground: oklch(0.2686 0 0);
  --card: oklch(1.0000 0 0);
  --card-foreground: oklch(0.2686 0 0);
  --popover: oklch(1.0000 0 0);
  --popover-foreground: oklch(0.2686 0 0);
  --primary: oklch(0.7686 0.1647 70.0804);
  --primary-foreground: oklch(0 0 0);
  --secondary: oklch(0.9670 0.0029 264.5419);
  --secondary-foreground: oklch(0.4461 0.0263 256.8018);
  --muted: oklch(0.9846 0.0017 247.8389);
  --muted-foreground: oklch(0.5510 0.0234 264.3637);
  --accent: oklch(0.9869 0.0214 95.2774);
  --accent-foreground: oklch(0.4732 0.1247 46.2007);
  --destructive: oklch(0.6368 0.2078 25.3313);
  --destructive-foreground: oklch(1.0000 0 0);
  --border: oklch(0.9276 0.0058 264.5313);
  --input: oklch(0.9276 0.0058 264.5313);
  --ring: oklch(0.7686 0.1647 70.0804);
  --sidebar: oklch(0.9846 0.0017 247.8389);
  --sidebar-foreground: oklch(0.2686 0 0);
  --sidebar-primary: oklch(0.7686 0.1647 70.0804);
  --sidebar-primary-foreground: oklch(1.0000 0 0);
  --sidebar-accent: oklch(0.9869 0.0214 95.2774);
  --sidebar-accent-foreground: oklch(0.4732 0.1247 46.2007);
  --sidebar-border: oklch(0.9276 0.0058 264.5313);
  --sidebar-ring: oklch(0.7686 0.1647 70.0804);
  --surface-0: oklch(1 0 0);
  --surface-1: oklch(0.9846 0.0017 247.84);
  --surface-2: oklch(1 0 0);
  --surface-3: oklch(0.96 0 0);
  --surface-glass: oklch(1 0 0 / 0.6);
  --surface-glass-md: oklch(1 0 0 / 0.55);
  --surface-glass-heavy: oklch(1 0 0 / 0.8);
  --text-primary: oklch(0.2686 0 0);
  --text-secondary: oklch(0.551 0.0234 264.36);
  --text-muted: oklch(0.6857 0.0164 185.05);
  --text-inverse: oklch(1 0 0);
  --border-default: oklch(0 0 0 / 0.12);
  --border-subtle: oklch(0 0 0 / 0.07);
  --border-strong: oklch(0 0 0 / 0.22);
  --vl-life: oklch(0.62 0.1647 220.08);
  --vl-life-soft: oklch(0.77 0.112 220.08);
  --vl-life-muted: oklch(0.57 0.0741 220.08);
  --vl-virtual: oklch(0.62 0.1647 70.08);
  --vl-virtual-soft: oklch(0.77 0.112 70.08);
  --vl-virtual-muted: oklch(0.57 0.0741 70.08);
  --vl-bridge: oklch(0.62 0.1647 10.08);
  --vl-bridge-soft: oklch(0.77 0.112 10.08);
  --vl-accent-warm: oklch(0.62 0.1647 130.08);
  --gradient-brand: linear-gradient(120deg, oklch(0.62 0.1647 10.08) 0%, oklch(0.62 0.1647 130.08) 50%, oklch(0.62 0.1647 220.08) 100%);
  --success: oklch(0.45 0.18 150);
  --warning: oklch(0.65 0.18 84);
  --info: oklch(0.48 0.22 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}

/* caffeine */
html[data-palette="caffeine"] {
  --background: oklch(0.1776 0 0);
  --foreground: oklch(0.9491 0 0);
  --card: oklch(0.2134 0 0);
  --card-foreground: oklch(0.9491 0 0);
  --popover: oklch(0.2134 0 0);
  --popover-foreground: oklch(0.9491 0 0);
  --primary: oklch(0.9247 0.0524 66.1732);
  --primary-foreground: oklch(0.2029 0.0240 200.1962);
  --secondary: oklch(0.3163 0.0190 63.6992);
  --secondary-foreground: oklch(0.9247 0.0524 66.1732);
  --muted: oklch(0.2520 0 0);
  --muted-foreground: oklch(0.7699 0 0);
  --accent: oklch(0.2850 0 0);
  --accent-foreground: oklch(0.9491 0 0);
  --destructive: oklch(0.6271 0.1936 33.3390);
  --destructive-foreground: oklch(1.0000 0 0);
  --border: oklch(0.2351 0.0115 91.7467);
  --input: oklch(0.4017 0 0);
  --ring: oklch(0.9247 0.0524 66.1732);
  --sidebar: oklch(0.2103 0.0059 285.8852);
  --sidebar-foreground: oklch(0.9674 0.0013 286.3752);
  --sidebar-primary: oklch(0.4882 0.2172 264.3763);
  --sidebar-primary-foreground: oklch(1.0000 0 0);
  --sidebar-accent: oklch(0.2739 0.0055 286.0326);
  --sidebar-accent-foreground: oklch(0.9674 0.0013 286.3752);
  --sidebar-border: oklch(0.2739 0.0055 286.0326);
  --sidebar-ring: oklch(0.8711 0.0055 286.2860);
  --surface-0: oklch(0.1776 0 0);
  --surface-1: oklch(0.2103 0.0059 285.89);
  --surface-2: oklch(0.2134 0 0);
  --surface-3: oklch(0.2734 0 0);
  --surface-glass: oklch(0.2134 0 0 / 0.1);
  --surface-glass-md: oklch(0.2134 0 0 / 0.4);
  --surface-glass-heavy: oklch(0.2134 0 0 / 0.8);
  --text-primary: oklch(0.9491 0 0);
  --text-secondary: oklch(0.7699 0 0);
  --text-muted: oklch(0.5922 0 0);
  --text-inverse: oklch(0.1776 0 0);
  --border-default: oklch(1 0 0 / 0.1);
  --border-subtle: oklch(1 0 0 / 0.06);
  --border-strong: oklch(1 0 0 / 0.2);
  --vl-life: oklch(0.78 0.12 216.17);
  --vl-life-soft: oklch(0.93 0.072 216.17);
  --vl-life-muted: oklch(0.58 0.06 216.17);
  --vl-virtual: oklch(0.78 0.12 66.17);
  --vl-virtual-soft: oklch(0.93 0.072 66.17);
  --vl-virtual-muted: oklch(0.58 0.06 66.17);
  --vl-bridge: oklch(0.78 0.12 6.17);
  --vl-bridge-soft: oklch(0.93 0.072 6.17);
  --vl-accent-warm: oklch(0.78 0.12 126.17);
  --gradient-brand: linear-gradient(120deg, oklch(0.78 0.12 6.17) 0%, oklch(0.78 0.12 126.17) 50%, oklch(0.78 0.12 216.17) 100%);
  --success: oklch(0.723 0.219 150);
  --warning: oklch(0.828 0.189 84);
  --info: oklch(0.6 0.2 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}
html[data-palette="caffeine"].light {
  --background: oklch(0.9821 0 0);
  --foreground: oklch(0.2435 0 0);
  --card: oklch(0.9911 0 0);
  --card-foreground: oklch(0.2435 0 0);
  --popover: oklch(0.9911 0 0);
  --popover-foreground: oklch(0.2435 0 0);
  --primary: oklch(0.4341 0.0392 41.9938);
  --primary-foreground: oklch(1.0000 0 0);
  --secondary: oklch(0.9200 0.0651 74.3695);
  --secondary-foreground: oklch(0.3499 0.0685 40.8288);
  --muted: oklch(0.9521 0 0);
  --muted-foreground: oklch(0.5032 0 0);
  --accent: oklch(0.9310 0 0);
  --accent-foreground: oklch(0.2435 0 0);
  --destructive: oklch(0.6271 0.1936 33.3390);
  --destructive-foreground: oklch(1.0000 0 0);
  --border: oklch(0.8822 0 0);
  --input: oklch(0.8822 0 0);
  --ring: oklch(0.4341 0.0392 41.9938);
  --sidebar: oklch(0.9881 0 0);
  --sidebar-foreground: oklch(0.2645 0 0);
  --sidebar-primary: oklch(0.3250 0 0);
  --sidebar-primary-foreground: oklch(0.9881 0 0);
  --sidebar-accent: oklch(0.9761 0 0);
  --sidebar-accent-foreground: oklch(0.3250 0 0);
  --sidebar-border: oklch(0.9401 0 0);
  --sidebar-ring: oklch(0.7731 0 0);
  --surface-0: oklch(0.9821 0 0);
  --surface-1: oklch(0.9881 0 0);
  --surface-2: oklch(0.9911 0 0);
  --surface-3: oklch(0.9511 0 0);
  --surface-glass: oklch(1 0 0 / 0.6);
  --surface-glass-md: oklch(1 0 0 / 0.55);
  --surface-glass-heavy: oklch(1 0 0 / 0.8);
  --text-primary: oklch(0.2435 0 0);
  --text-secondary: oklch(0.5032 0 0);
  --text-muted: oklch(0.6469 0 0);
  --text-inverse: oklch(0.9821 0 0);
  --border-default: oklch(0 0 0 / 0.12);
  --border-subtle: oklch(0 0 0 / 0.07);
  --border-strong: oklch(0 0 0 / 0.22);
  --vl-life: oklch(0.4341 0.12 191.99);
  --vl-life-soft: oklch(0.5841 0.0816 191.99);
  --vl-life-muted: oklch(0.3841 0.054 191.99);
  --vl-virtual: oklch(0.4341 0.12 41.99);
  --vl-virtual-soft: oklch(0.5841 0.0816 41.99);
  --vl-virtual-muted: oklch(0.3841 0.054 41.99);
  --vl-bridge: oklch(0.4341 0.12 341.99);
  --vl-bridge-soft: oklch(0.5841 0.0816 341.99);
  --vl-accent-warm: oklch(0.4341 0.12 101.99);
  --gradient-brand: linear-gradient(120deg, oklch(0.4341 0.12 341.99) 0%, oklch(0.4341 0.12 101.99) 50%, oklch(0.4341 0.12 191.99) 100%);
  --success: oklch(0.45 0.18 150);
  --warning: oklch(0.65 0.18 84);
  --info: oklch(0.48 0.22 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}

/* clean-slate */
html[data-palette="clean-slate"] {
  --background: oklch(0.2077 0.0398 265.7549);
  --foreground: oklch(0.9288 0.0126 255.5078);
  --card: oklch(0.2795 0.0368 260.0310);
  --card-foreground: oklch(0.9288 0.0126 255.5078);
  --popover: oklch(0.2795 0.0368 260.0310);
  --popover-foreground: oklch(0.9288 0.0126 255.5078);
  --primary: oklch(0.6801 0.1583 276.9349);
  --primary-foreground: oklch(0.2077 0.0398 265.7549);
  --secondary: oklch(0.3351 0.0331 260.9120);
  --secondary-foreground: oklch(0.8717 0.0093 258.3382);
  --muted: oklch(0.2427 0.0381 259.9437);
  --muted-foreground: oklch(0.7137 0.0192 261.3246);
  --accent: oklch(0.3729 0.0306 259.7328);
  --accent-foreground: oklch(0.8717 0.0093 258.3382);
  --destructive: oklch(0.6368 0.2078 25.3313);
  --destructive-foreground: oklch(0.2077 0.0398 265.7549);
  --border: oklch(0.4461 0.0263 256.8018);
  --input: oklch(0.4461 0.0263 256.8018);
  --ring: oklch(0.6801 0.1583 276.9349);
  --sidebar: oklch(0.2795 0.0368 260.0310);
  --sidebar-foreground: oklch(0.9288 0.0126 255.5078);
  --sidebar-primary: oklch(0.6801 0.1583 276.9349);
  --sidebar-primary-foreground: oklch(0.2077 0.0398 265.7549);
  --sidebar-accent: oklch(0.3729 0.0306 259.7328);
  --sidebar-accent-foreground: oklch(0.8717 0.0093 258.3382);
  --sidebar-border: oklch(0.4461 0.0263 256.8018);
  --sidebar-ring: oklch(0.6801 0.1583 276.9349);
  --surface-0: oklch(0.2077 0.0398 265.75);
  --surface-1: oklch(0.2795 0.0368 260.03);
  --surface-2: oklch(0.2795 0.0368 260.03);
  --surface-3: oklch(0.3395 0.0368 260.03);
  --surface-glass: oklch(0.2795 0.0368 260.03 / 0.1);
  --surface-glass-md: oklch(0.2795 0.0368 260.03 / 0.4);
  --surface-glass-heavy: oklch(0.2795 0.0368 260.03 / 0.8);
  --text-primary: oklch(0.9288 0.0126 255.51);
  --text-secondary: oklch(0.7137 0.0192 261.32);
  --text-muted: oklch(0.5619 0.0254 262.65);
  --text-inverse: oklch(0.2077 0.0398 265.75);
  --border-default: oklch(1 0 0 / 0.1);
  --border-subtle: oklch(1 0 0 / 0.06);
  --border-strong: oklch(1 0 0 / 0.2);
  --vl-life: oklch(0.6801 0.1583 66.93);
  --vl-life-soft: oklch(0.8301 0.095 66.93);
  --vl-life-muted: oklch(0.4801 0.0791 66.93);
  --vl-virtual: oklch(0.6801 0.1583 276.93);
  --vl-virtual-soft: oklch(0.8301 0.095 276.93);
  --vl-virtual-muted: oklch(0.4801 0.0791 276.93);
  --vl-bridge: oklch(0.6801 0.1583 216.93);
  --vl-bridge-soft: oklch(0.8301 0.095 216.93);
  --vl-accent-warm: oklch(0.6801 0.1583 336.93);
  --gradient-brand: linear-gradient(120deg, oklch(0.6801 0.1583 216.93) 0%, oklch(0.6801 0.1583 336.93) 50%, oklch(0.6801 0.1583 66.93) 100%);
  --success: oklch(0.723 0.219 150);
  --warning: oklch(0.828 0.189 84);
  --info: oklch(0.6 0.2 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}
html[data-palette="clean-slate"].light {
  --background: oklch(0.9842 0.0034 247.8575);
  --foreground: oklch(0.2795 0.0368 260.0310);
  --card: oklch(1.0000 0 0);
  --card-foreground: oklch(0.2795 0.0368 260.0310);
  --popover: oklch(1.0000 0 0);
  --popover-foreground: oklch(0.2795 0.0368 260.0310);
  --primary: oklch(0.5854 0.2041 277.1173);
  --primary-foreground: oklch(1.0000 0 0);
  --secondary: oklch(0.9276 0.0058 264.5313);
  --secondary-foreground: oklch(0.3729 0.0306 259.7328);
  --muted: oklch(0.9670 0.0029 264.5419);
  --muted-foreground: oklch(0.5510 0.0234 264.3637);
  --accent: oklch(0.9299 0.0334 272.7879);
  --accent-foreground: oklch(0.3729 0.0306 259.7328);
  --destructive: oklch(0.6368 0.2078 25.3313);
  --destructive-foreground: oklch(1.0000 0 0);
  --border: oklch(0.8717 0.0093 258.3382);
  --input: oklch(0.8717 0.0093 258.3382);
  --ring: oklch(0.5854 0.2041 277.1173);
  --sidebar: oklch(0.9670 0.0029 264.5419);
  --sidebar-foreground: oklch(0.2795 0.0368 260.0310);
  --sidebar-primary: oklch(0.5854 0.2041 277.1173);
  --sidebar-primary-foreground: oklch(1.0000 0 0);
  --sidebar-accent: oklch(0.9299 0.0334 272.7879);
  --sidebar-accent-foreground: oklch(0.3729 0.0306 259.7328);
  --sidebar-border: oklch(0.8717 0.0093 258.3382);
  --sidebar-ring: oklch(0.5854 0.2041 277.1173);
  --surface-0: oklch(0.9842 0.0034 247.86);
  --surface-1: oklch(0.967 0.0029 264.54);
  --surface-2: oklch(1 0 0);
  --surface-3: oklch(0.96 0 0);
  --surface-glass: oklch(1 0 0 / 0.6);
  --surface-glass-md: oklch(1 0 0 / 0.55);
  --surface-glass-heavy: oklch(1 0 0 / 0.8);
  --text-primary: oklch(0.2795 0.0368 260.03);
  --text-secondary: oklch(0.551 0.0234 264.36);
  --text-muted: oklch(0.681 0.0174 259.41);
  --text-inverse: oklch(0.9842 0.0034 247.86);
  --border-default: oklch(0 0 0 / 0.12);
  --border-subtle: oklch(0 0 0 / 0.07);
  --border-strong: oklch(0 0 0 / 0.22);
  --vl-life: oklch(0.5854 0.2041 67.12);
  --vl-life-soft: oklch(0.7354 0.1388 67.12);
  --vl-life-muted: oklch(0.5354 0.0918 67.12);
  --vl-virtual: oklch(0.5854 0.2041 277.12);
  --vl-virtual-soft: oklch(0.7354 0.1388 277.12);
  --vl-virtual-muted: oklch(0.5354 0.0918 277.12);
  --vl-bridge: oklch(0.5854 0.2041 217.12);
  --vl-bridge-soft: oklch(0.7354 0.1388 217.12);
  --vl-accent-warm: oklch(0.5854 0.2041 337.12);
  --gradient-brand: linear-gradient(120deg, oklch(0.5854 0.2041 217.12) 0%, oklch(0.5854 0.2041 337.12) 50%, oklch(0.5854 0.2041 67.12) 100%);
  --success: oklch(0.45 0.18 150);
  --warning: oklch(0.65 0.18 84);
  --info: oklch(0.48 0.22 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}

/* crimson */
html[data-palette="crimson"] {
  --background: oklch(0.16 0.01 275.16);
  --foreground: oklch(0.90 0 264.68);
  --card: oklch(0.20 0.02 273.29);
  --card-foreground: oklch(0.90 0 264.68);
  --popover: oklch(0.16 0.01 275.16);
  --popover-foreground: oklch(0.90 0 264.68);
  --primary: oklch(0.59 0.09 239.95);
  --primary-foreground: oklch(0.92 0.03 231.59);
  --secondary: oklch(0.55 0.21 19.55);
  --secondary-foreground: oklch(0.88 0.05 4.44);
  --muted: oklch(0.28 0.03 276.09);
  --muted-foreground: oklch(0.69 0.01 271.26);
  --accent: oklch(0.28 0.03 276.09);
  --accent-foreground: oklch(0.90 0 264.68);
  --destructive: oklch(0.64 0.21 25);
  --destructive-foreground: oklch(0.95 0.01 17.52);
  --border: oklch(0.31 0.03 277.05);
  --input: oklch(0.31 0.03 277.05);
  --ring: oklch(0.59 0.09 239.95);
  --sidebar: oklch(0.24 0.03 274.9);
  --sidebar-foreground: oklch(0.90 0 264.68);
  --sidebar-primary: oklch(0.59 0.09 239.95);
  --sidebar-primary-foreground: oklch(0.92 0.03 231.59);
  --sidebar-accent: oklch(0.28 0.03 276.09);
  --sidebar-accent-foreground: oklch(0.90 0 264.68);
  --sidebar-border: oklch(0.31 0.03 277.05);
  --sidebar-ring: oklch(0.59 0.09 239.95);
  --surface-0: oklch(0.16 0.01 275.16);
  --surface-1: oklch(0.24 0.03 274.9);
  --surface-2: oklch(0.2 0.02 273.29);
  --surface-3: oklch(0.22 0.01 275.16);
  --surface-glass: oklch(0.2 0.02 273.29 / 0.1);
  --surface-glass-md: oklch(0.2 0.02 273.29 / 0.4);
  --surface-glass-heavy: oklch(0.2 0.02 273.29 / 0.8);
  --text-primary: oklch(0.9 0 264.68);
  --text-secondary: oklch(0.69 0.01 271.26);
  --text-muted: oklch(0.531 0.01 272.43);
  --text-inverse: oklch(0.16 0.01 275.16);
  --border-default: oklch(1 0 0 / 0.1);
  --border-subtle: oklch(1 0 0 / 0.06);
  --border-strong: oklch(1 0 0 / 0.2);
  --vl-life: oklch(0.78 0.12 126.06);
  --vl-life-soft: oklch(0.93 0.072 126.06);
  --vl-life-muted: oklch(0.58 0.06 126.06);
  --vl-virtual: oklch(0.55 0.21 19.55);
  --vl-virtual-soft: oklch(0.7 0.126 19.55);
  --vl-virtual-muted: oklch(0.35 0.105 19.55);
  --vl-bridge: oklch(0.59 0.12 239.95);
  --vl-bridge-soft: oklch(0.74 0.072 239.95);
  --vl-accent-warm: oklch(0.68 0.12 18.56);
  --gradient-brand: linear-gradient(120deg, oklch(0.59 0.12 239.95) 0%, oklch(0.68 0.12 18.56) 50%, oklch(0.78 0.12 126.06) 100%);
  --success: oklch(0.723 0.219 150);
  --warning: oklch(0.828 0.189 84);
  --info: oklch(0.6 0.2 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}
html[data-palette="crimson"].light {
  --background: oklch(1 0 0 / 1);
  --foreground: oklch(0.16 0.01 264.68);
  --card: oklch(0.97 0.005 265);
  --card-foreground: oklch(0.16 0.01 264.68);
  --popover: oklch(1 0 0 / 1);
  --popover-foreground: oklch(0.16 0.01 264.68);
  --primary: oklch(0.55 0.21 240);
  --primary-foreground: oklch(0.95 0.01 231.59);
  --secondary: oklch(0.55 0.21 19.55);
  --secondary-foreground: oklch(0.95 0.05 4.44);
  --muted: oklch(0.94 0 49.04);
  --muted-foreground: oklch(0.46 0.01 31.17);
  --accent: oklch(0.94 0 49.04);
  --accent-foreground: oklch(0.46 0.01 31.17);
  --destructive: oklch(0.55 0.22 25);
  --destructive-foreground: oklch(0.95 0.01 17.52);
  --border: oklch(0.78 0.01 32.61);
  --input: oklch(0.78 0.01 32.61);
  --ring: oklch(0.55 0.21 240);
  --sidebar: oklch(0.97 0.005 265);
  --sidebar-foreground: oklch(0.16 0.01 264.68);
  --sidebar-primary: oklch(0.55 0.21 240);
  --sidebar-primary-foreground: oklch(0.95 0.01 231.59);
  --sidebar-accent: oklch(0.94 0 49.04);
  --sidebar-accent-foreground: oklch(0.46 0.01 31.17);
  --sidebar-border: oklch(0.78 0.01 32.61);
  --sidebar-ring: oklch(0.55 0.21 240);
  --surface-0: oklch(1 0 0);
  --surface-1: oklch(0.97 0.005 265);
  --surface-2: oklch(0.97 0.005 265);
  --surface-3: oklch(0.96 0 0);
  --surface-glass: oklch(1 0 0 / 0.6);
  --surface-glass-md: oklch(1 0 0 / 0.55);
  --surface-glass-heavy: oklch(1 0 0 / 0.8);
  --text-primary: oklch(0.16 0.01 264.68);
  --text-secondary: oklch(0.46 0.01 31.17);
  --text-muted: oklch(0.622 0.007 21.82);
  --text-inverse: oklch(1 0 0);
  --border-default: oklch(0 0 0 / 0.12);
  --border-subtle: oklch(0 0 0 / 0.07);
  --border-strong: oklch(0 0 0 / 0.22);
  --vl-life: oklch(0.62 0.12 126.06);
  --vl-life-soft: oklch(0.77 0.0816 126.06);
  --vl-life-muted: oklch(0.57 0.054 126.06);
  --vl-virtual: oklch(0.55 0.21 19.55);
  --vl-virtual-soft: oklch(0.7 0.1428 19.55);
  --vl-virtual-muted: oklch(0.5 0.0945 19.55);
  --vl-bridge: oklch(0.59 0.12 239.95);
  --vl-bridge-soft: oklch(0.74 0.0816 239.95);
  --vl-accent-warm: oklch(0.62 0.12 18.56);
  --gradient-brand: linear-gradient(120deg, oklch(0.59 0.12 239.95) 0%, oklch(0.62 0.12 18.56) 50%, oklch(0.62 0.12 126.06) 100%);
  --success: oklch(0.45 0.18 150);
  --warning: oklch(0.65 0.18 84);
  --info: oklch(0.48 0.22 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}

/* modern-minimal */
html[data-palette="modern-minimal"] {
  --background: oklch(0.2046 0 0);
  --foreground: oklch(0.9219 0 0);
  --card: oklch(0.2686 0 0);
  --card-foreground: oklch(0.9219 0 0);
  --popover: oklch(0.2686 0 0);
  --popover-foreground: oklch(0.9219 0 0);
  --primary: oklch(0.6231 0.1880 259.8145);
  --primary-foreground: oklch(1.0000 0 0);
  --secondary: oklch(0.2686 0 0);
  --secondary-foreground: oklch(0.9219 0 0);
  --muted: oklch(0.2393 0 0);
  --muted-foreground: oklch(0.7155 0 0);
  --accent: oklch(0.3791 0.1378 265.5222);
  --accent-foreground: oklch(0.8823 0.0571 254.1284);
  --destructive: oklch(0.6368 0.2078 25.3313);
  --destructive-foreground: oklch(1.0000 0 0);
  --border: oklch(0.3715 0 0);
  --input: oklch(0.3715 0 0);
  --ring: oklch(0.6231 0.1880 259.8145);
  --sidebar: oklch(0.2046 0 0);
  --sidebar-foreground: oklch(0.9219 0 0);
  --sidebar-primary: oklch(0.6231 0.1880 259.8145);
  --sidebar-primary-foreground: oklch(1.0000 0 0);
  --sidebar-accent: oklch(0.3791 0.1378 265.5222);
  --sidebar-accent-foreground: oklch(0.8823 0.0571 254.1284);
  --sidebar-border: oklch(0.3715 0 0);
  --sidebar-ring: oklch(0.6231 0.1880 259.8145);
  --surface-0: oklch(0.2046 0 0);
  --surface-1: oklch(0.2046 0 0);
  --surface-2: oklch(0.2686 0 0);
  --surface-3: oklch(0.3286 0 0);
  --surface-glass: oklch(0.2686 0 0 / 0.1);
  --surface-glass-md: oklch(0.2686 0 0 / 0.4);
  --surface-glass-heavy: oklch(0.2686 0 0 / 0.8);
  --text-primary: oklch(0.9219 0 0);
  --text-secondary: oklch(0.7155 0 0);
  --text-muted: oklch(0.5622 0 0);
  --text-inverse: oklch(0.2046 0 0);
  --border-default: oklch(1 0 0 / 0.1);
  --border-subtle: oklch(1 0 0 / 0.06);
  --border-strong: oklch(1 0 0 / 0.2);
  --vl-life: oklch(0.6231 0.188 49.81);
  --vl-life-soft: oklch(0.7731 0.1128 49.81);
  --vl-life-muted: oklch(0.4231 0.094 49.81);
  --vl-virtual: oklch(0.6231 0.188 259.81);
  --vl-virtual-soft: oklch(0.7731 0.1128 259.81);
  --vl-virtual-muted: oklch(0.4231 0.094 259.81);
  --vl-bridge: oklch(0.6231 0.188 199.81);
  --vl-bridge-soft: oklch(0.7731 0.1128 199.81);
  --vl-accent-warm: oklch(0.6231 0.188 319.81);
  --gradient-brand: linear-gradient(120deg, oklch(0.6231 0.188 199.81) 0%, oklch(0.6231 0.188 319.81) 50%, oklch(0.6231 0.188 49.81) 100%);
  --success: oklch(0.723 0.219 150);
  --warning: oklch(0.828 0.189 84);
  --info: oklch(0.6 0.2 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}
html[data-palette="modern-minimal"].light {
  --background: oklch(1.0000 0 0);
  --foreground: oklch(0.3211 0 0);
  --card: oklch(1.0000 0 0);
  --card-foreground: oklch(0.3211 0 0);
  --popover: oklch(1.0000 0 0);
  --popover-foreground: oklch(0.3211 0 0);
  --primary: oklch(0.6231 0.1880 259.8145);
  --primary-foreground: oklch(1.0000 0 0);
  --secondary: oklch(0.9670 0.0029 264.5419);
  --secondary-foreground: oklch(0.4461 0.0263 256.8018);
  --muted: oklch(0.9846 0.0017 247.8389);
  --muted-foreground: oklch(0.5510 0.0234 264.3637);
  --accent: oklch(0.9514 0.0250 236.8242);
  --accent-foreground: oklch(0.3791 0.1378 265.5222);
  --destructive: oklch(0.6368 0.2078 25.3313);
  --destructive-foreground: oklch(1.0000 0 0);
  --border: oklch(0.9276 0.0058 264.5313);
  --input: oklch(0.9276 0.0058 264.5313);
  --ring: oklch(0.6231 0.1880 259.8145);
  --sidebar: oklch(0.9846 0.0017 247.8389);
  --sidebar-foreground: oklch(0.3211 0 0);
  --sidebar-primary: oklch(0.6231 0.1880 259.8145);
  --sidebar-primary-foreground: oklch(1.0000 0 0);
  --sidebar-accent: oklch(0.9514 0.0250 236.8242);
  --sidebar-accent-foreground: oklch(0.3791 0.1378 265.5222);
  --sidebar-border: oklch(0.9276 0.0058 264.5313);
  --sidebar-ring: oklch(0.6231 0.1880 259.8145);
  --surface-0: oklch(1 0 0);
  --surface-1: oklch(0.9846 0.0017 247.84);
  --surface-2: oklch(1 0 0);
  --surface-3: oklch(0.96 0 0);
  --surface-glass: oklch(1 0 0 / 0.6);
  --surface-glass-md: oklch(1 0 0 / 0.55);
  --surface-glass-heavy: oklch(1 0 0 / 0.8);
  --text-primary: oklch(0.3211 0 0);
  --text-secondary: oklch(0.551 0.0234 264.36);
  --text-muted: oklch(0.6857 0.0164 185.05);
  --text-inverse: oklch(1 0 0);
  --border-default: oklch(0 0 0 / 0.12);
  --border-subtle: oklch(0 0 0 / 0.07);
  --border-strong: oklch(0 0 0 / 0.22);
  --vl-life: oklch(0.62 0.188 49.81);
  --vl-life-soft: oklch(0.77 0.1278 49.81);
  --vl-life-muted: oklch(0.57 0.0846 49.81);
  --vl-virtual: oklch(0.62 0.188 259.81);
  --vl-virtual-soft: oklch(0.77 0.1278 259.81);
  --vl-virtual-muted: oklch(0.57 0.0846 259.81);
  --vl-bridge: oklch(0.62 0.188 199.81);
  --vl-bridge-soft: oklch(0.77 0.1278 199.81);
  --vl-accent-warm: oklch(0.62 0.188 319.81);
  --gradient-brand: linear-gradient(120deg, oklch(0.62 0.188 199.81) 0%, oklch(0.62 0.188 319.81) 50%, oklch(0.62 0.188 49.81) 100%);
  --success: oklch(0.45 0.18 150);
  --warning: oklch(0.65 0.18 84);
  --info: oklch(0.48 0.22 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}

/* northern-lights */
html[data-palette="northern-lights"] {
  --background: oklch(0.2303 0.0125 264.2926);
  --foreground: oklch(0.9219 0 0);
  --card: oklch(0.3210 0.0078 223.6661);
  --card-foreground: oklch(0.9219 0 0);
  --popover: oklch(0.3210 0.0078 223.6661);
  --popover-foreground: oklch(0.9219 0 0);
  --primary: oklch(0.6487 0.1538 150.3071);
  --primary-foreground: oklch(1.0000 0 0);
  --secondary: oklch(0.5880 0.0993 245.7394);
  --secondary-foreground: oklch(0.9219 0 0);
  --muted: oklch(0.3867 0 0);
  --muted-foreground: oklch(0.7155 0 0);
  --accent: oklch(0.6746 0.1414 261.3380);
  --accent-foreground: oklch(0.9219 0 0);
  --destructive: oklch(0.6368 0.2078 25.3313);
  --destructive-foreground: oklch(1.0000 0 0);
  --border: oklch(0.3867 0 0);
  --input: oklch(0.3867 0 0);
  --ring: oklch(0.6487 0.1538 150.3071);
  --sidebar: oklch(0.1803 0.0125 264.2926);
  --sidebar-foreground: oklch(0.9219 0 0);
  --sidebar-primary: oklch(0.6487 0.1538 150.3071);
  --sidebar-primary-foreground: oklch(1.0000 0 0);
  --sidebar-accent: oklch(0.6746 0.1414 261.3380);
  --sidebar-accent-foreground: oklch(0.9219 0 0);
  --sidebar-border: oklch(0.3867 0 0);
  --sidebar-ring: oklch(0.6487 0.1538 150.3071);
  --surface-0: oklch(0.2303 0.0125 264.29);
  --surface-1: oklch(0.1803 0.0125 264.29);
  --surface-2: oklch(0.321 0.0078 223.67);
  --surface-3: oklch(0.381 0.0078 223.67);
  --surface-glass: oklch(0.321 0.0078 223.67 / 0.1);
  --surface-glass-md: oklch(0.321 0.0078 223.67 / 0.4);
  --surface-glass-heavy: oklch(0.321 0.0078 223.67 / 0.8);
  --text-primary: oklch(0.9219 0 0);
  --text-secondary: oklch(0.7155 0 0);
  --text-muted: oklch(0.5699 0.0037 79.29);
  --text-inverse: oklch(0.2303 0.0125 264.29);
  --border-default: oklch(1 0 0 / 0.1);
  --border-subtle: oklch(1 0 0 / 0.06);
  --border-strong: oklch(1 0 0 / 0.2);
  --vl-life: oklch(0.6487 0.1538 300.31);
  --vl-life-soft: oklch(0.7987 0.0923 300.31);
  --vl-life-muted: oklch(0.4487 0.0769 300.31);
  --vl-virtual: oklch(0.6487 0.1538 150.31);
  --vl-virtual-soft: oklch(0.7987 0.0923 150.31);
  --vl-virtual-muted: oklch(0.4487 0.0769 150.31);
  --vl-bridge: oklch(0.6487 0.1538 90.31);
  --vl-bridge-soft: oklch(0.7987 0.0923 90.31);
  --vl-accent-warm: oklch(0.6487 0.1538 210.31);
  --gradient-brand: linear-gradient(120deg, oklch(0.6487 0.1538 90.31) 0%, oklch(0.6487 0.1538 210.31) 50%, oklch(0.6487 0.1538 300.31) 100%);
  --success: oklch(0.723 0.219 150);
  --warning: oklch(0.828 0.189 84);
  --info: oklch(0.6 0.2 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}
html[data-palette="northern-lights"].light {
  --background: oklch(0.9824 0.0013 286.3757);
  --foreground: oklch(0.3211 0 0);
  --card: oklch(1.0000 0 0);
  --card-foreground: oklch(0.3211 0 0);
  --popover: oklch(1.0000 0 0);
  --popover-foreground: oklch(0.3211 0 0);
  --primary: oklch(0.6487 0.1538 150.3071);
  --primary-foreground: oklch(1.0000 0 0);
  --secondary: oklch(0.6746 0.1414 261.3380);
  --secondary-foreground: oklch(1.0000 0 0);
  --muted: oklch(0.8828 0.0285 98.1033);
  --muted-foreground: oklch(0.5382 0 0);
  --accent: oklch(0.8269 0.1080 211.9627);
  --accent-foreground: oklch(0.3211 0 0);
  --destructive: oklch(0.6368 0.2078 25.3313);
  --destructive-foreground: oklch(1.0000 0 0);
  --border: oklch(0.8699 0 0);
  --input: oklch(0.8699 0 0);
  --ring: oklch(0.6487 0.1538 150.3071);
  --sidebar: oklch(0.9824 0.0013 286.3757);
  --sidebar-foreground: oklch(0.3211 0 0);
  --sidebar-primary: oklch(0.6487 0.1538 150.3071);
  --sidebar-primary-foreground: oklch(1.0000 0 0);
  --sidebar-accent: oklch(0.8269 0.1080 211.9627);
  --sidebar-accent-foreground: oklch(0.3211 0 0);
  --sidebar-border: oklch(0.8699 0 0);
  --sidebar-ring: oklch(0.6487 0.1538 150.3071);
  --surface-0: oklch(0.9824 0.0013 286.38);
  --surface-1: oklch(0.9824 0.0013 286.38);
  --surface-2: oklch(1 0 0);
  --surface-3: oklch(0.96 0 0);
  --surface-glass: oklch(1 0 0 / 0.6);
  --surface-glass-md: oklch(1 0 0 / 0.55);
  --surface-glass-heavy: oklch(1 0 0 / 0.8);
  --text-primary: oklch(0.3211 0 0);
  --text-secondary: oklch(0.5382 0 0);
  --text-muted: oklch(0.6715 0.0004 85.91);
  --text-inverse: oklch(0.9824 0.0013 286.38);
  --border-default: oklch(0 0 0 / 0.12);
  --border-subtle: oklch(0 0 0 / 0.07);
  --border-strong: oklch(0 0 0 / 0.22);
  --vl-life: oklch(0.62 0.1538 300.31);
  --vl-life-soft: oklch(0.77 0.1046 300.31);
  --vl-life-muted: oklch(0.57 0.0692 300.31);
  --vl-virtual: oklch(0.62 0.1538 150.31);
  --vl-virtual-soft: oklch(0.77 0.1046 150.31);
  --vl-virtual-muted: oklch(0.57 0.0692 150.31);
  --vl-bridge: oklch(0.62 0.1538 90.31);
  --vl-bridge-soft: oklch(0.77 0.1046 90.31);
  --vl-accent-warm: oklch(0.62 0.1538 210.31);
  --gradient-brand: linear-gradient(120deg, oklch(0.62 0.1538 90.31) 0%, oklch(0.62 0.1538 210.31) 50%, oklch(0.62 0.1538 300.31) 100%);
  --success: oklch(0.45 0.18 150);
  --warning: oklch(0.65 0.18 84);
  --info: oklch(0.48 0.22 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}

/* solar-dusk */
html[data-palette="solar-dusk"] {
  --background: oklch(0.2161 0.0061 56.0434);
  --foreground: oklch(0.9699 0.0013 106.4238);
  --card: oklch(0.2685 0.0063 34.2976);
  --card-foreground: oklch(0.9699 0.0013 106.4238);
  --popover: oklch(0.2685 0.0063 34.2976);
  --popover-foreground: oklch(0.9699 0.0013 106.4238);
  --primary: oklch(0.7049 0.1867 47.6044);
  --primary-foreground: oklch(1.0000 0 0);
  --secondary: oklch(0.4444 0.0096 73.6390);
  --secondary-foreground: oklch(0.9232 0.0026 48.7171);
  --muted: oklch(0.2330 0.0073 67.4563);
  --muted-foreground: oklch(0.7161 0.0091 56.2590);
  --accent: oklch(0.3598 0.0497 229.3202);
  --accent-foreground: oklch(0.9232 0.0026 48.7171);
  --destructive: oklch(0.5771 0.2152 27.3250);
  --destructive-foreground: oklch(1.0000 0 0);
  --border: oklch(0.3741 0.0087 67.5582);
  --input: oklch(0.3741 0.0087 67.5582);
  --ring: oklch(0.7049 0.1867 47.6044);
  --sidebar: oklch(0.2685 0.0063 34.2976);
  --sidebar-foreground: oklch(0.9699 0.0013 106.4238);
  --sidebar-primary: oklch(0.7049 0.1867 47.6044);
  --sidebar-primary-foreground: oklch(1.0000 0 0);
  --sidebar-accent: oklch(0.6847 0.1479 237.3225);
  --sidebar-accent-foreground: oklch(0.2839 0.0734 254.5378);
  --sidebar-border: oklch(0.3741 0.0087 67.5582);
  --sidebar-ring: oklch(0.7049 0.1867 47.6044);
  --surface-0: oklch(0.2161 0.0061 56.04);
  --surface-1: oklch(0.2685 0.0063 34.3);
  --surface-2: oklch(0.2685 0.0063 34.3);
  --surface-3: oklch(0.3285 0.0063 34.3);
  --surface-glass: oklch(0.2685 0.0063 34.3 / 0.1);
  --surface-glass-md: oklch(0.2685 0.0063 34.3 / 0.4);
  --surface-glass-heavy: oklch(0.2685 0.0063 34.3 / 0.8);
  --text-primary: oklch(0.9699 0.0013 106.42);
  --text-secondary: oklch(0.7161 0.0091 56.26);
  --text-muted: oklch(0.5661 0.0082 56.19);
  --text-inverse: oklch(0.2161 0.0061 56.04);
  --border-default: oklch(1 0 0 / 0.1);
  --border-subtle: oklch(1 0 0 / 0.06);
  --border-strong: oklch(1 0 0 / 0.2);
  --vl-life: oklch(0.7049 0.1867 197.6);
  --vl-life-soft: oklch(0.8549 0.112 197.6);
  --vl-life-muted: oklch(0.5049 0.0934 197.6);
  --vl-virtual: oklch(0.7049 0.1867 47.6);
  --vl-virtual-soft: oklch(0.8549 0.112 47.6);
  --vl-virtual-muted: oklch(0.5049 0.0934 47.6);
  --vl-bridge: oklch(0.7049 0.1867 347.6);
  --vl-bridge-soft: oklch(0.8549 0.112 347.6);
  --vl-accent-warm: oklch(0.7049 0.1867 107.6);
  --gradient-brand: linear-gradient(120deg, oklch(0.7049 0.1867 347.6) 0%, oklch(0.7049 0.1867 107.6) 50%, oklch(0.7049 0.1867 197.6) 100%);
  --success: oklch(0.723 0.219 150);
  --warning: oklch(0.828 0.189 84);
  --info: oklch(0.6 0.2 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}
html[data-palette="solar-dusk"].light {
  --background: oklch(0.9885 0.0057 84.5659);
  --foreground: oklch(0.3660 0.0251 49.6085);
  --card: oklch(0.9686 0.0091 78.2818);
  --card-foreground: oklch(0.3660 0.0251 49.6085);
  --popover: oklch(0.9686 0.0091 78.2818);
  --popover-foreground: oklch(0.3660 0.0251 49.6085);
  --primary: oklch(0.5553 0.1455 48.9975);
  --primary-foreground: oklch(1.0000 0 0);
  --secondary: oklch(0.8276 0.0752 74.4400);
  --secondary-foreground: oklch(0.4444 0.0096 73.6390);
  --muted: oklch(0.9363 0.0218 83.2637);
  --muted-foreground: oklch(0.5534 0.0116 58.0708);
  --accent: oklch(0.9000 0.0500 74.9889);
  --accent-foreground: oklch(0.4444 0.0096 73.6390);
  --destructive: oklch(0.4437 0.1613 26.8994);
  --destructive-foreground: oklch(1.0000 0 0);
  --border: oklch(0.8866 0.0404 89.6994);
  --input: oklch(0.8866 0.0404 89.6994);
  --ring: oklch(0.5553 0.1455 48.9975);
  --sidebar: oklch(0.9363 0.0218 83.2637);
  --sidebar-foreground: oklch(0.3660 0.0251 49.6085);
  --sidebar-primary: oklch(0.5553 0.1455 48.9975);
  --sidebar-primary-foreground: oklch(1.0000 0 0);
  --sidebar-accent: oklch(0.5538 0.1207 66.4416);
  --sidebar-accent-foreground: oklch(1.0000 0 0);
  --sidebar-border: oklch(0.8866 0.0404 89.6994);
  --sidebar-ring: oklch(0.5553 0.1455 48.9975);
  --surface-0: oklch(0.9885 0.0057 84.57);
  --surface-1: oklch(0.9363 0.0218 83.26);
  --surface-2: oklch(0.9686 0.0091 78.28);
  --surface-3: oklch(0.9286 0.0091 78.28);
  --surface-glass: oklch(1 0 0 / 0.6);
  --surface-glass-md: oklch(1 0 0 / 0.55);
  --surface-glass-heavy: oklch(1 0 0 / 0.8);
  --text-primary: oklch(0.366 0.0251 49.61);
  --text-secondary: oklch(0.5534 0.0116 58.07);
  --text-muted: oklch(0.6839 0.0098 66.02);
  --text-inverse: oklch(0.9885 0.0057 84.57);
  --border-default: oklch(0 0 0 / 0.12);
  --border-subtle: oklch(0 0 0 / 0.07);
  --border-strong: oklch(0 0 0 / 0.22);
  --vl-life: oklch(0.5553 0.1455 199);
  --vl-life-soft: oklch(0.7053 0.0989 199);
  --vl-life-muted: oklch(0.5053 0.0655 199);
  --vl-virtual: oklch(0.5553 0.1455 49);
  --vl-virtual-soft: oklch(0.7053 0.0989 49);
  --vl-virtual-muted: oklch(0.5053 0.0655 49);
  --vl-bridge: oklch(0.5553 0.1455 349);
  --vl-bridge-soft: oklch(0.7053 0.0989 349);
  --vl-accent-warm: oklch(0.5553 0.1455 109);
  --gradient-brand: linear-gradient(120deg, oklch(0.5553 0.1455 349) 0%, oklch(0.5553 0.1455 109) 50%, oklch(0.5553 0.1455 199) 100%);
  --success: oklch(0.45 0.18 150);
  --warning: oklch(0.65 0.18 84);
  --info: oklch(0.48 0.22 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}

/* virtuallife-dimmed */
html[data-palette="virtuallife-dimmed"] {
  --background: oklch(0.13 0.04 265);
  --foreground: oklch(0.82 0.01 250);
  --card: oklch(0.21 0.04 266);
  --card-foreground: oklch(0.82 0.01 250);
  --popover: oklch(0.21 0.04 266);
  --popover-foreground: oklch(0.82 0.01 250);
  --primary: oklch(0.55 0.19 300);
  --primary-foreground: oklch(0.13 0.04 265);
  --secondary: oklch(0.28 0.04 260);
  --secondary-foreground: oklch(0.78 0.01 258);
  --muted: oklch(0.24 0.038 260);
  --muted-foreground: oklch(0.58 0.03 257);
  --accent: oklch(0.34 0.03 261);
  --accent-foreground: oklch(0.78 0.01 258);
  --destructive: oklch(0.55 0.18 25);
  --destructive-foreground: oklch(0.13 0.04 265);
  --border: oklch(1 0 0 / 8%);
  --input: oklch(1 0 0 / 12%);
  --ring: oklch(0.55 0.19 300);
  --sidebar: oklch(0.21 0.04 266);
  --sidebar-foreground: oklch(0.82 0.01 250);
  --sidebar-primary: oklch(0.55 0.19 300);
  --sidebar-primary-foreground: oklch(0.82 0.01 250);
  --sidebar-accent: oklch(0.34 0.03 261);
  --sidebar-accent-foreground: oklch(0.78 0.01 258);
  --sidebar-border: oklch(1 0 0 / 8%);
  --sidebar-ring: oklch(0.55 0.19 300);
  --surface-0: oklch(0.13 0.04 265);
  --surface-1: oklch(0.21 0.04 266);
  --surface-2: oklch(0.21 0.04 266);
  --surface-3: oklch(0.27 0.04 266);
  --surface-glass: oklch(0.21 0.04 266 / 0.1);
  --surface-glass-md: oklch(0.21 0.04 266 / 0.4);
  --surface-glass-heavy: oklch(0.21 0.04 266 / 0.8);
  --text-primary: oklch(0.82 0.01 250);
  --text-secondary: oklch(0.58 0.03 257);
  --text-muted: oklch(0.445 0.033 259.4);
  --text-inverse: oklch(0.13 0.04 265);
  --border-default: oklch(1 0 0 / 0.1);
  --border-subtle: oklch(1 0 0 / 0.06);
  --border-strong: oklch(1 0 0 / 0.2);
  --vl-life: oklch(0.55 0.17 145);
  --vl-life-soft: oklch(0.7 0.102 145);
  --vl-life-muted: oklch(0.35 0.085 145);
  --vl-virtual: oklch(0.55 0.19 300);
  --vl-virtual-soft: oklch(0.7 0.114 300);
  --vl-virtual-muted: oklch(0.35 0.095 300);
  --vl-bridge: oklch(0.55 0.17 220);
  --vl-bridge-soft: oklch(0.7 0.102 220);
  --vl-accent-warm: oklch(0.6 0.16 340);
  --gradient-brand: linear-gradient(120deg, oklch(0.55 0.17 220) 0%, oklch(0.6 0.16 340) 50%, oklch(0.55 0.17 145) 100%);
  --success: oklch(0.723 0.219 150);
  --warning: oklch(0.828 0.189 84);
  --info: oklch(0.6 0.2 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}
html[data-palette="virtuallife-dimmed"].light {
  --background: oklch(0.97 0.005 265);
  --foreground: oklch(0.18 0.04 265);
  --card: oklch(1.0 0 0);
  --card-foreground: oklch(0.18 0.04 265);
  --popover: oklch(1.0 0 0);
  --popover-foreground: oklch(0.18 0.04 265);
  --primary: oklch(0.48 0.22 300);
  --primary-foreground: oklch(1.0 0 0);
  --secondary: oklch(0.94 0.008 266);
  --secondary-foreground: oklch(0.30 0.04 260);
  --muted: oklch(0.94 0.008 260);
  --muted-foreground: oklch(0.55 0.03 257);
  --accent: oklch(0.92 0.025 275);
  --accent-foreground: oklch(0.30 0.04 260);
  --destructive: oklch(0.637 0.208 25);
  --destructive-foreground: oklch(1.0 0 0);
  --border: oklch(0.88 0.012 258);
  --input: oklch(0.88 0.012 258);
  --ring: oklch(0.48 0.22 300);
  --sidebar: oklch(0.94 0.008 266);
  --sidebar-foreground: oklch(0.18 0.04 265);
  --sidebar-primary: oklch(0.48 0.22 300);
  --sidebar-primary-foreground: oklch(1.0 0 0);
  --sidebar-accent: oklch(0.92 0.025 275);
  --sidebar-accent-foreground: oklch(0.30 0.04 260);
  --sidebar-border: oklch(0.88 0.012 258);
  --sidebar-ring: oklch(0.48 0.22 300);
  --surface-0: oklch(0.97 0.005 265);
  --surface-1: oklch(0.94 0.008 266);
  --surface-2: oklch(1 0 0);
  --surface-3: oklch(0.96 0 0);
  --surface-glass: oklch(1 0 0 / 0.6);
  --surface-glass-md: oklch(1 0 0 / 0.55);
  --surface-glass-heavy: oklch(1 0 0 / 0.8);
  --text-primary: oklch(0.18 0.04 265);
  --text-secondary: oklch(0.55 0.03 257);
  --text-muted: oklch(0.676 0.0225 259.4);
  --text-inverse: oklch(0.97 0.005 265);
  --border-default: oklch(0 0 0 / 0.12);
  --border-subtle: oklch(0 0 0 / 0.07);
  --border-strong: oklch(0 0 0 / 0.22);
  --vl-life: oklch(0.5 0.22 145);
  --vl-life-soft: oklch(0.65 0.1496 145);
  --vl-life-muted: oklch(0.45 0.099 145);
  --vl-virtual: oklch(0.48 0.22 300);
  --vl-virtual-soft: oklch(0.63 0.1496 300);
  --vl-virtual-muted: oklch(0.43 0.099 300);
  --vl-bridge: oklch(0.48 0.22 220);
  --vl-bridge-soft: oklch(0.63 0.1496 220);
  --vl-accent-warm: oklch(0.58 0.22 340);
  --gradient-brand: linear-gradient(120deg, oklch(0.48 0.22 220) 0%, oklch(0.58 0.22 340) 50%, oklch(0.5 0.22 145) 100%);
  --success: oklch(0.45 0.18 150);
  --warning: oklch(0.65 0.18 84);
  --info: oklch(0.48 0.22 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}

/* virtuallife-v2 */
html[data-palette="virtuallife-v2"] {
  --background: oklch(0.21 0.035 265);
  --foreground: oklch(0.98 0.003 248);
  --card: oklch(0.27 0.035 266);
  --card-foreground: oklch(0.98 0.003 248);
  --popover: oklch(0.27 0.035 266);
  --popover-foreground: oklch(0.98 0.003 248);
  --primary: oklch(0.60 0.22 300);
  --primary-foreground: oklch(0.13 0.04 265);
  --secondary: oklch(0.34 0.035 260);
  --secondary-foreground: oklch(0.90 0.01 258);
  --muted: oklch(0.30 0.033 260);
  --muted-foreground: oklch(0.71 0.04 257);
  --accent: oklch(0.38 0.028 261);
  --accent-foreground: oklch(0.90 0.01 258);
  --destructive: oklch(0.637 0.208 25);
  --destructive-foreground: oklch(0.13 0.04 265);
  --border: oklch(1 0 0 / 10%);
  --input: oklch(1 0 0 / 15%);
  --ring: oklch(0.60 0.22 300);
  --sidebar: oklch(0.27 0.035 266);
  --sidebar-foreground: oklch(0.98 0.003 248);
  --sidebar-primary: oklch(0.60 0.22 300);
  --sidebar-primary-foreground: oklch(0.98 0.003 248);
  --sidebar-accent: oklch(0.38 0.028 261);
  --sidebar-accent-foreground: oklch(0.90 0.01 258);
  --sidebar-border: oklch(1 0 0 / 10%);
  --sidebar-ring: oklch(0.60 0.22 300);
  --surface-0: oklch(0.21 0.035 265);
  --surface-1: oklch(0.27 0.035 266);
  --surface-2: oklch(0.27 0.035 266);
  --surface-3: oklch(0.33 0.035 266);
  --surface-glass: oklch(0.27 0.035 266 / 0.1);
  --surface-glass-md: oklch(0.27 0.035 266 / 0.4);
  --surface-glass-heavy: oklch(0.27 0.035 266 / 0.8);
  --text-primary: oklch(0.98 0.003 248);
  --text-secondary: oklch(0.71 0.04 257);
  --text-muted: oklch(0.56 0.0385 259.4);
  --text-inverse: oklch(0.21 0.035 265);
  --border-default: oklch(1 0 0 / 0.1);
  --border-subtle: oklch(1 0 0 / 0.06);
  --border-strong: oklch(1 0 0 / 0.2);
  --vl-life: oklch(0.65 0.2 145);
  --vl-life-soft: oklch(0.8 0.12 145);
  --vl-life-muted: oklch(0.45 0.1 145);
  --vl-virtual: oklch(0.6 0.22 300);
  --vl-virtual-soft: oklch(0.75 0.132 300);
  --vl-virtual-muted: oklch(0.4 0.11 300);
  --vl-bridge: oklch(0.6 0.2 220);
  --vl-bridge-soft: oklch(0.75 0.12 220);
  --vl-accent-warm: oklch(0.7 0.19 340);
  --gradient-brand: linear-gradient(120deg, oklch(0.6 0.2 220) 0%, oklch(0.7 0.19 340) 50%, oklch(0.65 0.2 145) 100%);
  --success: oklch(0.723 0.219 150);
  --warning: oklch(0.828 0.189 84);
  --info: oklch(0.6 0.2 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}
html[data-palette="virtuallife-v2"].light {
  --background: oklch(0.97 0.005 265);
  --foreground: oklch(0.18 0.04 265);
  --card: oklch(1.0 0 0);
  --card-foreground: oklch(0.18 0.04 265);
  --popover: oklch(1.0 0 0);
  --popover-foreground: oklch(0.18 0.04 265);
  --primary: oklch(0.48 0.22 300);
  --primary-foreground: oklch(1.0 0 0);
  --secondary: oklch(0.94 0.008 266);
  --secondary-foreground: oklch(0.30 0.04 260);
  --muted: oklch(0.94 0.008 260);
  --muted-foreground: oklch(0.55 0.03 257);
  --accent: oklch(0.92 0.025 275);
  --accent-foreground: oklch(0.30 0.04 260);
  --destructive: oklch(0.637 0.208 25);
  --destructive-foreground: oklch(1.0 0 0);
  --border: oklch(0.88 0.012 258);
  --input: oklch(0.88 0.012 258);
  --ring: oklch(0.48 0.22 300);
  --sidebar: oklch(0.94 0.008 266);
  --sidebar-foreground: oklch(0.18 0.04 265);
  --sidebar-primary: oklch(0.48 0.22 300);
  --sidebar-primary-foreground: oklch(1.0 0 0);
  --sidebar-accent: oklch(0.92 0.025 275);
  --sidebar-accent-foreground: oklch(0.30 0.04 260);
  --sidebar-border: oklch(0.88 0.012 258);
  --sidebar-ring: oklch(0.48 0.22 300);
  --surface-0: oklch(0.97 0.005 265);
  --surface-1: oklch(0.94 0.008 266);
  --surface-2: oklch(1 0 0);
  --surface-3: oklch(0.96 0 0);
  --surface-glass: oklch(1 0 0 / 0.6);
  --surface-glass-md: oklch(1 0 0 / 0.55);
  --surface-glass-heavy: oklch(1 0 0 / 0.8);
  --text-primary: oklch(0.18 0.04 265);
  --text-secondary: oklch(0.55 0.03 257);
  --text-muted: oklch(0.676 0.0225 259.4);
  --text-inverse: oklch(0.97 0.005 265);
  --border-default: oklch(0 0 0 / 0.12);
  --border-subtle: oklch(0 0 0 / 0.07);
  --border-strong: oklch(0 0 0 / 0.22);
  --vl-life: oklch(0.5 0.22 145);
  --vl-life-soft: oklch(0.65 0.1496 145);
  --vl-life-muted: oklch(0.45 0.099 145);
  --vl-virtual: oklch(0.48 0.22 300);
  --vl-virtual-soft: oklch(0.63 0.1496 300);
  --vl-virtual-muted: oklch(0.43 0.099 300);
  --vl-bridge: oklch(0.48 0.22 220);
  --vl-bridge-soft: oklch(0.63 0.1496 220);
  --vl-accent-warm: oklch(0.58 0.22 340);
  --gradient-brand: linear-gradient(120deg, oklch(0.48 0.22 220) 0%, oklch(0.58 0.22 340) 50%, oklch(0.5 0.22 145) 100%);
  --success: oklch(0.45 0.18 150);
  --warning: oklch(0.65 0.18 84);
  --info: oklch(0.48 0.22 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}

/* virtuallife */
html[data-palette="virtuallife"] {
  --background: oklch(0.13 0.04 265);
  --foreground: oklch(0.98 0.003 248);
  --card: oklch(0.21 0.04 266);
  --card-foreground: oklch(0.98 0.003 248);
  --popover: oklch(0.21 0.04 266);
  --popover-foreground: oklch(0.98 0.003 248);
  --primary: oklch(0.60 0.22 300);
  --primary-foreground: oklch(0.13 0.04 265);
  --secondary: oklch(0.28 0.04 260);
  --secondary-foreground: oklch(0.90 0.01 258);
  --muted: oklch(0.24 0.038 260);
  --muted-foreground: oklch(0.71 0.04 257);
  --accent: oklch(0.34 0.03 261);
  --accent-foreground: oklch(0.90 0.01 258);
  --destructive: oklch(0.637 0.208 25);
  --destructive-foreground: oklch(0.13 0.04 265);
  --border: oklch(1 0 0 / 10%);
  --input: oklch(1 0 0 / 15%);
  --ring: oklch(0.60 0.22 300);
  --sidebar: oklch(0.21 0.04 266);
  --sidebar-foreground: oklch(0.98 0.003 248);
  --sidebar-primary: oklch(0.60 0.22 300);
  --sidebar-primary-foreground: oklch(0.98 0.003 248);
  --sidebar-accent: oklch(0.34 0.03 261);
  --sidebar-accent-foreground: oklch(0.90 0.01 258);
  --sidebar-border: oklch(1 0 0 / 10%);
  --sidebar-ring: oklch(0.60 0.22 300);
  --surface-0: oklch(0.13 0.04 265);
  --surface-1: oklch(0.21 0.04 266);
  --surface-2: oklch(0.21 0.04 266);
  --surface-3: oklch(0.27 0.04 266);
  --surface-glass: oklch(0.21 0.04 266 / 0.1);
  --surface-glass-md: oklch(0.21 0.04 266 / 0.4);
  --surface-glass-heavy: oklch(0.21 0.04 266 / 0.8);
  --text-primary: oklch(0.98 0.003 248);
  --text-secondary: oklch(0.71 0.04 257);
  --text-muted: oklch(0.536 0.04 259.4);
  --text-inverse: oklch(0.13 0.04 265);
  --border-default: oklch(1 0 0 / 0.1);
  --border-subtle: oklch(1 0 0 / 0.06);
  --border-strong: oklch(1 0 0 / 0.2);
  --vl-life: oklch(0.65 0.2 145);
  --vl-life-soft: oklch(0.8 0.12 145);
  --vl-life-muted: oklch(0.45 0.1 145);
  --vl-virtual: oklch(0.6 0.22 300);
  --vl-virtual-soft: oklch(0.75 0.132 300);
  --vl-virtual-muted: oklch(0.4 0.11 300);
  --vl-bridge: oklch(0.6 0.2 220);
  --vl-bridge-soft: oklch(0.75 0.12 220);
  --vl-accent-warm: oklch(0.7 0.19 340);
  --gradient-brand: linear-gradient(120deg, oklch(0.6 0.2 220) 0%, oklch(0.7 0.19 340) 50%, oklch(0.65 0.2 145) 100%);
  --success: oklch(0.723 0.219 150);
  --warning: oklch(0.828 0.189 84);
  --info: oklch(0.6 0.2 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}
html[data-palette="virtuallife"].light {
  --background: oklch(0.97 0.005 265);
  --foreground: oklch(0.18 0.04 265);
  --card: oklch(1.0 0 0);
  --card-foreground: oklch(0.18 0.04 265);
  --popover: oklch(1.0 0 0);
  --popover-foreground: oklch(0.18 0.04 265);
  --primary: oklch(0.48 0.22 300);
  --primary-foreground: oklch(1.0 0 0);
  --secondary: oklch(0.94 0.008 266);
  --secondary-foreground: oklch(0.30 0.04 260);
  --muted: oklch(0.94 0.008 260);
  --muted-foreground: oklch(0.55 0.03 257);
  --accent: oklch(0.92 0.025 275);
  --accent-foreground: oklch(0.30 0.04 260);
  --destructive: oklch(0.637 0.208 25);
  --destructive-foreground: oklch(1.0 0 0);
  --border: oklch(0.88 0.012 258);
  --input: oklch(0.88 0.012 258);
  --ring: oklch(0.48 0.22 300);
  --sidebar: oklch(0.94 0.008 266);
  --sidebar-foreground: oklch(0.18 0.04 265);
  --sidebar-primary: oklch(0.48 0.22 300);
  --sidebar-primary-foreground: oklch(1.0 0 0);
  --sidebar-accent: oklch(0.92 0.025 275);
  --sidebar-accent-foreground: oklch(0.30 0.04 260);
  --sidebar-border: oklch(0.88 0.012 258);
  --sidebar-ring: oklch(0.48 0.22 300);
  --surface-0: oklch(0.97 0.005 265);
  --surface-1: oklch(0.94 0.008 266);
  --surface-2: oklch(1 0 0);
  --surface-3: oklch(0.96 0 0);
  --surface-glass: oklch(1 0 0 / 0.6);
  --surface-glass-md: oklch(1 0 0 / 0.55);
  --surface-glass-heavy: oklch(1 0 0 / 0.8);
  --text-primary: oklch(0.18 0.04 265);
  --text-secondary: oklch(0.55 0.03 257);
  --text-muted: oklch(0.676 0.0225 259.4);
  --text-inverse: oklch(0.97 0.005 265);
  --border-default: oklch(0 0 0 / 0.12);
  --border-subtle: oklch(0 0 0 / 0.07);
  --border-strong: oklch(0 0 0 / 0.22);
  --vl-life: oklch(0.5 0.22 145);
  --vl-life-soft: oklch(0.65 0.1496 145);
  --vl-life-muted: oklch(0.45 0.099 145);
  --vl-virtual: oklch(0.48 0.22 300);
  --vl-virtual-soft: oklch(0.63 0.1496 300);
  --vl-virtual-muted: oklch(0.43 0.099 300);
  --vl-bridge: oklch(0.48 0.22 220);
  --vl-bridge-soft: oklch(0.63 0.1496 220);
  --vl-accent-warm: oklch(0.58 0.22 340);
  --gradient-brand: linear-gradient(120deg, oklch(0.48 0.22 220) 0%, oklch(0.58 0.22 340) 50%, oklch(0.5 0.22 145) 100%);
  --success: oklch(0.45 0.18 150);
  --warning: oklch(0.65 0.18 84);
  --info: oklch(0.48 0.22 220);
  --surface-card: var(--surface-glass);
  --surface-canvas: var(--surface-0);
  --surface-chrome: var(--surface-1);
}
