/* ------------------------------------------------------------------
   Palettes and canvas backgrounds. The admin picks one for everyone
   (Theme button in the workspace); site.js sets <html data-palette data-canvas>.
   Generated token blocks: keep in sync with VALID_THEME_PALETTES in models.py
   and PALETTES in static/site.js.
------------------------------------------------------------------- */
/* Graphite & emerald */
html[data-palette="graphite"] {
  --bg: #f4f4f2;
  --surface: #ffffff;
  --sub: #f5f5f4;
  --border: #e4e4e2;
  --border-strong: #a8a8a3;
  --fg: #171717;
  --fg-2: #3f3f3c;
  --muted: #66665f;
  --accent-bg: #171717;
  --accent-fg: #ffffff;
  --dot: #d9d9d5;
  --edge: #b0b0aa;
  --hover: #ececea;
  --glow: rgba(0,0,0,0.035);
  --ok: #16a34a;
  --ok-fg: #ffffff;
  --warn: #d97706;
  --danger: #dc2626;
  --info: #0284c7;
  --brand: #059669;
  --code-bg: var(--sub);
}
html.dark[data-palette="graphite"] {
  --bg: #0f0f0f;
  --surface: #1a1a1a;
  --sub: #202020;
  --border: #2a2a2a;
  --border-strong: #525252;
  --fg: #ededed;
  --fg-2: #d4d4d4;
  --muted: #a3a3a3;
  --accent-bg: #fafafa;
  --accent-fg: #111111;
  --dot: #222222;
  --edge: #525252;
  --hover: #242424;
  --glow: rgba(255,255,255,0.03);
  --ok: #22c55e;
  --ok-fg: #052e16;
  --warn: #f59e0b;
  --danger: #ef4444;
  --info: #38bdf8;
  --brand: #34d399;
  --code-bg: var(--sub);
}

/* Sand & terracotta */
html[data-palette="sand"] {
  --bg: #f5f0e8;
  --surface: #fffdf9;
  --sub: #f8f3eb;
  --border: #e8dfd1;
  --border-strong: #b5a68f;
  --fg: #2b2118;
  --fg-2: #4a3d30;
  --muted: #7a6a58;
  --accent-bg: #c2410c;
  --accent-fg: #ffffff;
  --dot: #e2d7c5;
  --edge: #c2b39c;
  --hover: #efe7da;
  --glow: rgba(194,65,12,0.07);
  --ok: #15803d;
  --ok-fg: #ffffff;
  --warn: #b45309;
  --danger: #b91c1c;
  --info: #0e7490;
  --brand: #c2410c;
  --code-bg: var(--sub);
}
html.dark[data-palette="sand"] {
  --bg: #1a1612;
  --surface: #24201b;
  --sub: #2a251f;
  --border: #3a332a;
  --border-strong: #6b5d4b;
  --fg: #f2ebe1;
  --fg-2: #dcd2c4;
  --muted: #a8998a;
  --accent-bg: #ea580c;
  --accent-fg: #ffffff;
  --dot: #2c261f;
  --edge: #6b5d4b;
  --hover: #2f2923;
  --glow: rgba(234,88,12,0.10);
  --ok: #22c55e;
  --ok-fg: #052e16;
  --warn: #f59e0b;
  --danger: #f87171;
  --info: #22d3ee;
  --brand: #fb923c;
  --code-bg: var(--sub);
}

/* Sage & forest */
html[data-palette="sage"] {
  --bg: #eef2ec;
  --surface: #fbfcfa;
  --sub: #f3f6f1;
  --border: #dbe3d7;
  --border-strong: #9fb09a;
  --fg: #18231a;
  --fg-2: #33432f;
  --muted: #5e6e5a;
  --accent-bg: #166534;
  --accent-fg: #ffffff;
  --dot: #d3ddcf;
  --edge: #a9b8a4;
  --hover: #e5ece2;
  --glow: rgba(22,101,52,0.07);
  --ok: #16a34a;
  --ok-fg: #ffffff;
  --warn: #ca8a04;
  --danger: #dc2626;
  --info: #0e7490;
  --brand: #166534;
  --code-bg: var(--sub);
}
html.dark[data-palette="sage"] {
  --bg: #0e1410;
  --surface: #151d17;
  --sub: #1a231c;
  --border: #26332a;
  --border-strong: #4b5f4f;
  --fg: #e6eee7;
  --fg-2: #cbd8cd;
  --muted: #93a596;
  --accent-bg: #4ade80;
  --accent-fg: #052e16;
  --dot: #1b251e;
  --edge: #4b5f4f;
  --hover: #1d2820;
  --glow: rgba(74,222,128,0.07);
  --ok: #22c55e;
  --ok-fg: #052e16;
  --warn: #eab308;
  --danger: #f87171;
  --info: #22d3ee;
  --brand: #4ade80;
  --code-bg: var(--sub);
}

/* Stone & plum */
html[data-palette="plum"] {
  --bg: #f4f1f3;
  --surface: #fffdfe;
  --sub: #f7f3f6;
  --border: #e6dfe4;
  --border-strong: #ad9fa9;
  --fg: #22161f;
  --fg-2: #42323e;
  --muted: #6f5f6b;
  --accent-bg: #86198f;
  --accent-fg: #ffffff;
  --dot: #e0d6dd;
  --edge: #b8a9b4;
  --hover: #ede6eb;
  --glow: rgba(134,25,143,0.07);
  --ok: #059669;
  --ok-fg: #ffffff;
  --warn: #d97706;
  --danger: #e11d48;
  --info: #0891b2;
  --brand: #86198f;
  --code-bg: var(--sub);
}
html.dark[data-palette="plum"] {
  --bg: #141015;
  --surface: #1e1820;
  --sub: #231c25;
  --border: #332a35;
  --border-strong: #5f5063;
  --fg: #f1e9f2;
  --fg-2: #d9cddb;
  --muted: #a596a8;
  --accent-bg: #d946ef;
  --accent-fg: #1e0322;
  --dot: #241d26;
  --edge: #5f5063;
  --hover: #2a222c;
  --glow: rgba(217,70,239,0.09);
  --ok: #10b981;
  --ok-fg: #022c22;
  --warn: #f59e0b;
  --danger: #fb7185;
  --info: #22d3ee;
  --brand: #e879f9;
  --code-bg: var(--sub);
}

/* Charcoal & amber */
html[data-palette="amber"] {
  --bg: #f5f5f4;
  --surface: #ffffff;
  --sub: #f7f6f4;
  --border: #e7e5e4;
  --border-strong: #a8a29e;
  --fg: #1c1917;
  --fg-2: #44403c;
  --muted: #6b6560;
  --accent-bg: #d97706;
  --accent-fg: #ffffff;
  --dot: #dedbd8;
  --edge: #b3ada8;
  --hover: #eeedeb;
  --glow: rgba(217,119,6,0.07);
  --ok: #16a34a;
  --ok-fg: #ffffff;
  --warn: #ea580c;
  --danger: #dc2626;
  --info: #0891b2;
  --brand: #d97706;
  --code-bg: var(--sub);
}
html.dark[data-palette="amber"] {
  --bg: #0c0a09;
  --surface: #1c1917;
  --sub: #211d1b;
  --border: #292524;
  --border-strong: #57534e;
  --fg: #f5f5f4;
  --fg-2: #d6d3d1;
  --muted: #a8a29e;
  --accent-bg: #fbbf24;
  --accent-fg: #1c1917;
  --dot: #1f1b19;
  --edge: #57534e;
  --hover: #26221f;
  --glow: rgba(251,191,36,0.06);
  --ok: #22c55e;
  --ok-fg: #052e16;
  --warn: #fb923c;
  --danger: #f87171;
  --info: #22d3ee;
  --brand: #fbbf24;
  --code-bg: var(--sub);
}

/* Linen & coral */
html[data-palette="coral"] {
  --bg: #faf7f5;
  --surface: #ffffff;
  --sub: #fbf8f6;
  --border: #ede6e2;
  --border-strong: #b8aaa3;
  --fg: #261a18;
  --fg-2: #463733;
  --muted: #75645f;
  --accent-bg: #e11d48;
  --accent-fg: #ffffff;
  --dot: #e8dfda;
  --edge: #bfb1aa;
  --hover: #f2ece8;
  --glow: rgba(225,29,72,0.06);
  --ok: #059669;
  --ok-fg: #ffffff;
  --warn: #f59e0b;
  --danger: #9f1239;
  --info: #0891b2;
  --brand: #e11d48;
  --code-bg: var(--sub);
}
html.dark[data-palette="coral"] {
  --bg: #160f10;
  --surface: #211718;
  --sub: #261b1c;
  --border: #372729;
  --border-strong: #64494c;
  --fg: #f6ecec;
  --fg-2: #e0d1d1;
  --muted: #ae9a9b;
  --accent-bg: #fb7185;
  --accent-fg: #2a0a10;
  --dot: #251a1b;
  --edge: #64494c;
  --hover: #2b1f20;
  --glow: rgba(251,113,133,0.08);
  --ok: #34d399;
  --ok-fg: #022c22;
  --warn: #fbbf24;
  --danger: #f43f5e;
  --info: #22d3ee;
  --brand: #fb7185;
  --code-bg: var(--sub);
}

/* Slate & indigo */
html[data-palette="indigo"] {
  --bg: #eef1f6;
  --surface: #ffffff;
  --sub: #f3f5f9;
  --border: #dfe4ec;
  --border-strong: #9aa4b8;
  --fg: #111827;
  --fg-2: #374151;
  --muted: #5d6779;
  --accent-bg: #4f46e5;
  --accent-fg: #ffffff;
  --dot: #d2d8e3;
  --edge: #a3adc2;
  --hover: #e9edf4;
  --glow: rgba(99,102,241,0.12);
  --ok: #16a34a;
  --ok-fg: #ffffff;
  --warn: #e09b1a;
  --danger: #e5484d;
  --info: #2f6fed;
  --brand: #4f46e5;
  --code-bg: var(--sub);
}
html.dark[data-palette="indigo"] {
  --bg: #0b1020;
  --surface: #121a2e;
  --sub: #18213a;
  --border: #243052;
  --border-strong: #4a5884;
  --fg: #e8ebf5;
  --fg-2: #c9cfe2;
  --muted: #93a0c0;
  --accent-bg: #6366f1;
  --accent-fg: #ffffff;
  --dot: #1c2645;
  --edge: #4a5884;
  --hover: #1b2542;
  --glow: rgba(99,102,241,0.18);
  --ok: #22c55e;
  --ok-fg: #052e16;
  --warn: #f0b84a;
  --danger: #f16a6e;
  --info: #60a5fa;
  --brand: #818cf8;
  --code-bg: var(--sub);
}

/* Canvas backgrounds (workspace canvas, sign-in page) */
html[data-canvas="dots"] .geist-dot-grid {
  background-image: radial-gradient(var(--dot) 1px, transparent 1px);
  background-size: 22px 22px;
}
html[data-canvas="lines"] .geist-dot-grid {
  background-image:
    linear-gradient(var(--dot) 1px, transparent 1px),
    linear-gradient(90deg, var(--dot) 1px, transparent 1px);
  background-size: 24px 24px;
  background-position: -1px -1px;
}
html[data-canvas="plain"] .geist-dot-grid { background-image: none; }
html[data-canvas="tint"] .geist-dot-grid {
  background-image:
    radial-gradient(ellipse 70% 50% at 25% -10%, var(--glow), transparent 70%),
    radial-gradient(ellipse 60% 50% at 100% 110%, var(--glow), transparent 70%);
  background-size: 100% 100%;
}
