/* The member's chosen look, picked in the chat window's header and saved on the server (so it follows them to
 * other devices). The server puts it on <html data-theme="..."> before the page is sent, so the first paint is
 * already right. "dark" is the default look and has no rules here: desk.css and app.css are the dark theme.
 * The login and the preorder page never load this file, so they always look the same. */

/* ---------- light: same layout, light background, the same purple ---------- */
[data-theme="light"] {
  --bg: #f5f3f9; --glass: #ffffffe8; --glass-2: #f0ecf8; --line: #ddd6ea; --text: #1d1929; --muted: #574f69; --faint: #6e6784;
  --accent: #6a4be0; --accent-2: #6a4be0; --accent-soft: #6a4be01f; --good: #1a8a55; --error: #c43b3b;
  --sky-glow: radial-gradient(120% 90% at 70% 10%, #ffffff, #efebf7 60%); --rune: #7c5cff; --glass-solid: #fbfaff;
  --win-shadow: 0 1px 0 #ffffff inset, 0 18px 50px #2a1f5522; --win-shadow-focus: 0 1px 0 #ffffff inset, 0 20px 60px #2a1f5530, 0 0 36px #7c5cff22;
  --bar-shadow: 0 10px 30px #2a1f5522;
  --accent-44: #6a4be044; --accent-55: #6a4be055; --accent-66: #6a4be066; --accent-88: #6a4be088;
  --bubble: #ece7f8; --field: #ffffff; --link: #4a2fc0; --soft: #3b2596; --you-text: #ffffff; --on-accent: #ffffff; --code-bg: #6a4be014;
  --fail-bg: #fde8ea; --fail-text: #8a1c2b; --close-bg: #e5484d1f; --close-text: #b4232a;
  --stop-bg: #ece7f8; --stop-hover: #e0d8f5;
  --pane-bg: #fbfaff; --viewer-bg: #f3f0f9; --row-bg: #f7f5fb; --hover: #6a4be00d; --tree-line: #ddd6ea;
  --label: #5a3fc8; --label-2: #4a2fc0; --tag-bg: #6a4be014; --warn: #b35a00; --warn-2: #9a5a1c;
  --code-text: #2b2638; --code-num: #9b94ad;
  --qbox-bg: #ffffff; --qbox-shadow: 0 -8px 30px #2a1f5522, 0 0 30px #7c5cff1a;
  --overlay: #1d1929e6; --media-open-bg: #ffffffe0; --mic-ring: #6a4be033;
  color-scheme: light;
}

/* ---------- simple: no floating lights (app.js stops the sky), no glass, plain solid panels ---------- */
/* The "you" bubble a shade deeper than dark's (#7c5cff, 4.35:1 with white), so its text passes WCAG AA (5.3:1). */
[data-theme="simple"], [data-theme="adhd"] { --accent-2: #6d4df0; }
[data-theme="simple"] {
  --bg: #121017; --sky-glow: none; --glass: #17141f; --glass-solid: #17141f;
  --win-shadow: none; --win-shadow-focus: none; --bar-shadow: none; --qbox-shadow: none;
}

/* ---------- terminal: monospace, flat near-black, the chat as lines; what she makes still opens in a window ---------- */
[data-theme="terminal"] {
  --bg: #0c0c0c; --glass: #111111; --glass-2: #1a1a1a; --line: #2b2b2b; --text: #e4e4e4; --muted: #9a9a9a; --faint: #7a7a7a;
  --accent: #b39dff; --accent-2: #b39dff; --accent-soft: #b39dff1f; --good: #7ee2a8; --error: #ff8f8f;
  --sans: var(--mono); --serif: var(--mono);
  --sky-glow: none; --glass-solid: #111111;
  --win-shadow: none; --win-shadow-focus: none; --bar-shadow: none;
  --accent-44: #b39dff44; --accent-55: #b39dff55; --accent-66: #b39dff66; --accent-88: #b39dff88;
  --bubble: transparent; --field: #0c0c0c; --link: #c9b8ff; --soft: #e4e4e4; --you-text: #e4e4e4; --on-accent: #0c0c0c; --code-bg: #ffffff12;
  --fail-bg: transparent; --stop-bg: #1a1a1a; --stop-hover: #242424;
  --pane-bg: #111111; --viewer-bg: #0c0c0c; --row-bg: #151515; --hover: #ffffff0a; --tree-line: #2b2b2b;
  --label: #b8b8b8; --label-2: #d0d0d0; --tag-bg: #ffffff12; --code-text: #d4d4d4; --code-num: #5a5a5a;
  --qbox-bg: #111111; --qbox-shadow: none; --overlay: #0c0c0cf2; --media-open-bg: #0c0c0ce0; --mic-ring: #b39dff33;
}
[data-theme="terminal"] body, [data-theme="terminal"] button, [data-theme="terminal"] input, [data-theme="terminal"] textarea { font-family: var(--mono); }
[data-theme="terminal"] .win { border-radius: 6px; }
[data-theme="terminal"] .taskbar { border-radius: 6px; }
[data-theme="terminal"] .msgs { gap: 3px; font-size: 14px; }
/* Each message is a line with who said it in front; a reply's later paragraphs hang under the first. */
[data-theme="terminal"] .m { position: relative; align-self: stretch; max-width: 100%; padding: 0 0 0 7ch; border-radius: 0; background: none; animation: none; }
[data-theme="terminal"] .m::before { position: absolute; left: 0; top: 0; }
[data-theme="terminal"] .m.you { margin-top: 10px; color: var(--text); }
[data-theme="terminal"] .m.you::before { content: "you >"; color: var(--accent); }
[data-theme="terminal"] .m.rune::before { content: "rune >"; color: var(--good); }
[data-theme="terminal"] .m.rune + .m.rune::before { content: ""; }
[data-theme="terminal"] .m.fail::before { content: "rune !"; color: var(--error); }
[data-theme="terminal"] .m.media-bubble, [data-theme="terminal"] .m.connect-bubble { padding: 0 0 0 7ch; }
[data-theme="terminal"] .connect-card { border-radius: 4px; }
[data-theme="terminal"] .m pre, [data-theme="terminal"] .m code { border-radius: 3px; }
/* Her working step: one compact line, no bubble, a cursor instead of the carving rune. */
[data-theme="terminal"] .thinking { position: relative; align-self: stretch; padding: 0 0 0 7ch; background: none; border-radius: 0; }
[data-theme="terminal"] .thinking .rn { display: none; }
[data-theme="terminal"] .thinking::before { content: "rune ~"; position: absolute; left: 0; color: var(--good); }
[data-theme="terminal"] .thinking span::after { content: " \258D"; color: var(--accent); animation: term-cursor 1.1s steps(1) infinite; }
@keyframes term-cursor { 50% { opacity: 0; } }
[data-theme="terminal"] .made-card { align-self: stretch; max-width: 100%; padding-left: 7ch; }
[data-theme="terminal"] .file { background: none; border-style: dashed; border-radius: 3px; }
[data-theme="terminal"] .speak { margin-left: 7ch; }
[data-theme="terminal"] .stopped-note { padding-left: 7ch; }
[data-theme="terminal"] .chat-note, [data-theme="terminal"] .earlier { border-radius: 3px; }
[data-theme="terminal"] .compose textarea, [data-theme="terminal"] .compose input { border-radius: 3px; }
[data-theme="terminal"] .compose button { border-radius: 3px; }
[data-theme="terminal"] .qbox, [data-theme="terminal"] .qbox .qopt, [data-theme="terminal"] .qbox input { border-radius: 4px; }
[data-theme="terminal"] .needs button { border-radius: 3px; }
[data-theme="terminal"] .needs .dot { border-radius: 1px; }

/* ---------- dyslexia: an easy-to-read font (Atkinson Hyperlegible, in fonts/), more space, cream background ---------- */
@font-face { font-family: "Atkinson Hyperlegible"; src: url("/fonts/atkinson-hyperlegible-400.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Atkinson Hyperlegible"; src: url("/fonts/atkinson-hyperlegible-700.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; }
[data-theme="dyslexia"] {
  --bg: #fbf6e9; --glass: #fffaf0; --glass-2: #f3ecdb; --line: #e2d7bf; --text: #1f1a14; --muted: #4f4638; --faint: #6b6152;
  --accent: #5b3fd0; --accent-2: #5b3fd0; --accent-soft: #5b3fd01a; --good: #1f7a4a; --error: #b3261e;
  --sans: "Atkinson Hyperlegible", system-ui, sans-serif; --serif: var(--sans);
  --sky-glow: none; --rune: #5b3fd0; --glass-solid: #fffaf0;
  --win-shadow: 0 10px 30px #3a2f1a1a; --win-shadow-focus: 0 12px 36px #3a2f1a26; --bar-shadow: 0 8px 24px #3a2f1a1a;
  --accent-44: #5b3fd044; --accent-55: #5b3fd055; --accent-66: #5b3fd066; --accent-88: #5b3fd088;
  --bubble: #f1e8d3; --field: #fffdf7; --link: #3d27a6; --soft: #2e1f80; --you-text: #ffffff; --on-accent: #ffffff; --code-bg: #0000000d;
  --fail-bg: #fbe3df; --fail-text: #7a1a12; --close-bg: #b3261e1a; --close-text: #8f1d17;
  --stop-bg: #f1e8d3; --stop-hover: #e8dcc2;
  --pane-bg: #fffaf0; --viewer-bg: #f7f0e0; --row-bg: #fdf8ec; --hover: #0000000a; --tree-line: #e2d7bf;
  --label: #4a3aa0; --label-2: #3d27a6; --tag-bg: #5b3fd014; --warn: #9a4d00; --warn-2: #8a5418;
  --code-text: #2a241c; --code-num: #9a907e;
  --qbox-bg: #fffaf0; --qbox-shadow: 0 -6px 24px #3a2f1a1f; --overlay: #1f1a14e6; --media-open-bg: #fffaf0e6; --mic-ring: #5b3fd033;
  color-scheme: light;
}
[data-theme^="dyslexia"] body, [data-theme^="dyslexia"] button, [data-theme^="dyslexia"] input, [data-theme^="dyslexia"] textarea { font-family: var(--sans); letter-spacing: .05em; word-spacing: .1em; }
[data-theme^="dyslexia"] body, [data-theme^="dyslexia"] .m, [data-theme^="dyslexia"] .compose textarea, [data-theme^="dyslexia"] .compose input { line-height: 1.7; }
[data-theme^="dyslexia"] *, [data-theme^="dyslexia"] *::before, [data-theme^="dyslexia"] *::after { font-style: normal !important; }

/* ---------- dyslexia dark (Helgi, 2026-09-27): the same font and spacing on a soft dark background. Not black
   and not pure white text: softer contrast is easier to read for long. ---------- */
[data-theme="dyslexia-dark"] {
  --bg: #1b1a20; --glass: #232229; --glass-2: #2b2a32; --line: #3a3842; --text: #e9e5dc; --muted: #bdb6a8; --faint: #9a9385;
  --accent: #a898ff; --accent-2: #a898ff; --accent-soft: #a898ff1f; --good: #7fcf9f; --error: #ff8a80;
  --sans: "Atkinson Hyperlegible", system-ui, sans-serif; --serif: var(--sans);
  --sky-glow: none; --rune: #a898ff; --glass-solid: #232229;
  --win-shadow: 0 10px 30px #0006; --win-shadow-focus: 0 12px 36px #0008; --bar-shadow: 0 8px 24px #0006;
  --accent-44: #a898ff44; --accent-55: #a898ff55; --accent-66: #a898ff66; --accent-88: #a898ff88;
  --bubble: #2d2c35; --field: #1f1e25; --link: #c4b8ff; --soft: #d6ccff; --you-text: #16151b; --on-accent: #16151b; --code-bg: #ffffff0f;
  --fail-bg: #3a2020; --fail-text: #ffb4ab; --close-bg: #ff8a801a; --close-text: #ffb4ab;
  --stop-bg: #2d2c35; --stop-hover: #36353f;
  --pane-bg: #232229; --viewer-bg: #1f1e25; --row-bg: #26252c; --hover: #ffffff0d; --tree-line: #3a3842;
  --label: #c4b8ff; --label-2: #d6ccff; --tag-bg: #a898ff1a; --warn: #f0b060; --warn-2: #e0a860;
  --code-text: #e9e5dc; --code-num: #8a8478;
  --qbox-bg: #232229; --qbox-shadow: 0 -6px 24px #0008; --overlay: #16151be6; --media-open-bg: #232229e6; --mic-ring: #a898ff33;
  color-scheme: dark;
}

/* ---------- no frosted glass in the flat themes ---------- */
[data-theme="simple"] .win, [data-theme="simple"] .taskbar,
[data-theme="terminal"] .win, [data-theme="terminal"] .taskbar,
[data-theme^="dyslexia"] .win, [data-theme^="dyslexia"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }

/* ---------- adhd: nothing moves, one thing on screen at a time (her short replies are the server's job) ---------- */
[data-theme="adhd"] { --bg: #15131b; --sky-glow: none; }
[data-theme="adhd"] *, [data-theme="adhd"] *::before, [data-theme="adhd"] *::after { animation: none !important; transition: none !important; }
/* The working rune stays, fully carved and still, next to what she's doing. */
[data-theme="adhd"] .carving .stone, [data-theme="adhd"] .carving .aura { stroke-dashoffset: 0; }
/* On a computer the chat sits alone in the middle, and anything opened fills the desk on its own (app.js closes
   the other windows and doesn't open new work by itself), like the phone layout. The taskbar stays reachable. */
@media (min-width: 900px) {
  [data-theme="adhd"] #chat { left: calc(50% - 195px) !important; }
  [data-theme="adhd"] .made-win:not(.docked), [data-theme="adhd"] .ws-win, [data-theme="adhd"] .files-win, [data-theme="adhd"] .side-win {
    left: 16px !important; top: 16px !important; width: calc(100% - 32px) !important; height: calc(100% - 96px) !important; z-index: 3000 !important; }
  [data-theme="adhd"] .bar { cursor: default; }
  [data-theme="adhd"] .ftabs, [data-theme="adhd"] #filesPop { display: none; } /* one file at a time here, so no tabs to choose between */
  [data-theme="adhd"] .win > .rz { display: none; } /* and no resizing either */
}

/* ---------- the theme picker in the chat window's header ---------- */
.theme-menu { position: absolute; top: 48px; right: 8px; z-index: 20; display: grid; gap: 2px; min-width: 220px; padding: 6px; background: var(--glass-2);
  border: 1px solid var(--line); border-radius: 12px; box-shadow: var(--bar-shadow); }
.theme-menu button { display: grid; gap: 1px; text-align: left; font: 14px var(--sans); color: var(--text); background: transparent; border: 0; border-radius: 8px; padding: 7px 10px; cursor: pointer; }
.theme-menu button small { color: var(--muted); font-size: 12px; }
/* seventeen looks are a long list: it scrolls inside the chat window instead of running off the screen */
.theme-menu { max-height: calc(100vh - 130px); overflow-y: auto; }
.theme-menu button:hover { background: var(--accent-soft); }
.theme-menu button[aria-checked="true"] { background: var(--accent-soft); box-shadow: inset 3px 0 0 var(--accent); }

/* ===== ten more looks: generated by member/tools/make-themes.mjs, do not edit by hand ===== */
/* Paper */
[data-theme="paper"] {
  --bg: #e9ecef;
  --glass: #fbfbf9;
  --glass-2: #eeeeed;
  --line: #cfd4dc;
  --text: #1b2230;
  --muted: #59627a;
  --faint: #7d8597;
  --accent: #1d3f9c;
  --accent-2: #1d3f9c;
  --accent-soft: #1d3f9c1f;
  --good: #2f7d4f;
  --error: #b3261e;
  --sky-glow: none;
  --rune: #1d3f9c;
  --glass-solid: #fbfbf9;
  --win-shadow: 0 10px 30px #3a3a4a1a;
  --win-shadow-focus: 0 12px 36px #3a3a4a26;
  --bar-shadow: 0 8px 24px #3a3a4a1a;
  --accent-44: #1d3f9c44;
  --accent-55: #1d3f9c55;
  --accent-66: #1d3f9c66;
  --accent-88: #1d3f9c88;
  --bubble: #eef0f3;
  --field: #fdfdfd;
  --link: #17327d;
  --soft: #11265e;
  --you-text: #ffffff;
  --on-accent: #ffffff;
  --code-bg: #0000000d;
  --fail-bg: #fbe3df;
  --fail-text: #7a1a12;
  --close-bg: #b3261e1a;
  --close-text: #8f1d17;
  --stop-bg: #eef0f3;
  --stop-hover: #dde0e3;
  --pane-bg: #fbfbf9;
  --viewer-bg: #f2f4f4;
  --row-bg: #f4f4f3;
  --hover: #0000000a;
  --tree-line: #cfd4dc;
  --label: #162f75;
  --label-2: #11265e;
  --tag-bg: #1d3f9c14;
  --warn: #9a4d00;
  --warn-2: #8a5418;
  --code-text: #252c3a;
  --code-num: #9399a9;
  --qbox-bg: #fbfbf9;
  --qbox-shadow: 0 -6px 24px #3a3a4a1f;
  --overlay: #1b2230e6;
  --media-open-bg: #fbfbf9e6;
  --mic-ring: #1d3f9c33;
  --sans: "Iowan Old Style", "Palatino Linotype", Georgia, serif;
  --serif: "Iowan Old Style", "Palatino Linotype", Georgia, serif;
  color-scheme: light;
}
[data-theme="paper"] .win, [data-theme="paper"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }
[data-theme="paper"] .win, [data-theme="paper"] .taskbar { border-radius: 6px; }
[data-theme="paper"] body, [data-theme="paper"] button, [data-theme="paper"] input, [data-theme="paper"] textarea { font-family: var(--sans); }

/* Ocean */
[data-theme="ocean"] {
  --bg: #051826;
  --glass: #0a2438;
  --glass-2: #173044;
  --line: #17405a;
  --text: #e6f3f8;
  --muted: #8fb1c2;
  --faint: #6d8b9b;
  --accent: #3ad1c4;
  --accent-2: #117789;
  --accent-soft: #3ad1c41f;
  --good: #3ad1c4;
  --error: #ff8a80;
  --sky-glow: none;
  --rune: #3ad1c4;
  --glass-solid: #0a2438;
  --win-shadow: 0 10px 30px #0006;
  --win-shadow-focus: 0 12px 36px #0008;
  --bar-shadow: 0 8px 24px #0006;
  --accent-44: #3ad1c444;
  --accent-55: #3ad1c455;
  --accent-66: #3ad1c466;
  --accent-88: #3ad1c488;
  --bubble: #123249;
  --field: #081b2a;
  --link: #6bddd3;
  --soft: #9de8e2;
  --you-text: #ffffff;
  --on-accent: #04202a;
  --code-bg: #ffffff0f;
  --fail-bg: #3a2020;
  --fail-text: #ffb4ab;
  --close-bg: #ff8a801a;
  --close-text: #ffb4ab;
  --stop-bg: #123249;
  --stop-hover: #234157;
  --pane-bg: #0a2438;
  --viewer-bg: #081d2d;
  --row-bg: #112a3e;
  --hover: #ffffff0d;
  --tree-line: #17405a;
  --label: #6bddd3;
  --label-2: #89e3dc;
  --tag-bg: #3ad1c414;
  --warn: #f0b060;
  --warn-2: #e0a860;
  --code-text: #d0dde3;
  --code-num: #587484;
  --qbox-bg: #0a2438;
  --qbox-shadow: 0 -6px 24px #0008;
  --overlay: #000000e6;
  --media-open-bg: #0a2438e6;
  --mic-ring: #3ad1c433;
  color-scheme: dark;
}
[data-theme="ocean"] .win, [data-theme="ocean"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }

/* Forest */
[data-theme="forest"] {
  --bg: #0b1710;
  --glass: #112219;
  --glass-2: #1e2e25;
  --line: #24402f;
  --text: #e8f0e4;
  --muted: #9db59c;
  --faint: #798e79;
  --accent: #a4d96c;
  --accent-2: #3d7a45;
  --accent-soft: #a4d96c1f;
  --good: #a4d96c;
  --error: #ff8a80;
  --sky-glow: none;
  --rune: #a4d96c;
  --glass-solid: #112219;
  --win-shadow: 0 10px 30px #0006;
  --win-shadow-focus: 0 12px 36px #0008;
  --bar-shadow: 0 8px 24px #0006;
  --accent-44: #a4d96c44;
  --accent-55: #a4d96c55;
  --accent-66: #a4d96c66;
  --accent-88: #a4d96c88;
  --bubble: #182d20;
  --field: #0d1a13;
  --link: #bbe391;
  --soft: #d2ecb6;
  --you-text: #ffffff;
  --on-accent: #10200f;
  --code-bg: #ffffff0f;
  --fail-bg: #3a2020;
  --fail-text: #ffb4ab;
  --close-bg: #ff8a801a;
  --close-text: #ffb4ab;
  --stop-bg: #182d20;
  --stop-hover: #293d30;
  --pane-bg: #112219;
  --viewer-bg: #0e1b14;
  --row-bg: #17281f;
  --hover: #ffffff0d;
  --tree-line: #24402f;
  --label: #bbe391;
  --label-2: #c8e8a7;
  --tag-bg: #a4d96c14;
  --warn: #f0b060;
  --warn-2: #e0a860;
  --code-text: #d2dacf;
  --code-num: #637664;
  --qbox-bg: #112219;
  --qbox-shadow: 0 -6px 24px #0008;
  --overlay: #000000e6;
  --media-open-bg: #112219e6;
  --mic-ring: #a4d96c33;
  color-scheme: dark;
}
[data-theme="forest"] .win, [data-theme="forest"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }

/* Sunset */
[data-theme="sunset"] {
  --bg: #190c1f;
  --glass: #241230;
  --glass-2: #311f3b;
  --line: #4a2a55;
  --text: #f8ece6;
  --muted: #c4a4b8;
  --faint: #997e92;
  --accent: #ff8a4c;
  --accent-2: #c2410c;
  --accent-soft: #ff8a4c1f;
  --good: #ffb36b;
  --error: #ff8a80;
  --sky-glow: none;
  --rune: #ff8a4c;
  --glass-solid: #241230;
  --win-shadow: 0 10px 30px #0006;
  --win-shadow-focus: 0 12px 36px #0008;
  --bar-shadow: 0 8px 24px #0006;
  --accent-44: #ff8a4c44;
  --accent-55: #ff8a4c55;
  --accent-66: #ff8a4c66;
  --accent-88: #ff8a4c88;
  --bubble: #33193f;
  --field: #1b0e24;
  --link: #ffa779;
  --soft: #ffc5a6;
  --you-text: #ffffff;
  --on-accent: #2a0d05;
  --code-bg: #ffffff0f;
  --fail-bg: #3a2020;
  --fail-text: #ffb4ab;
  --close-bg: #ff8a801a;
  --close-text: #ffb4ab;
  --stop-bg: #33193f;
  --stop-hover: #432a4c;
  --pane-bg: #241230;
  --viewer-bg: #1d0e26;
  --row-bg: #2a1935;
  --hover: #ffffff0d;
  --tree-line: #4a2a55;
  --label: #ffa779;
  --label-2: #ffb994;
  --tag-bg: #ff8a4c14;
  --warn: #f0b060;
  --warn-2: #e0a860;
  --code-text: #e2d6d2;
  --code-num: #80677b;
  --qbox-bg: #241230;
  --qbox-shadow: 0 -6px 24px #0008;
  --overlay: #000000e6;
  --media-open-bg: #241230e6;
  --mic-ring: #ff8a4c33;
  color-scheme: dark;
}
[data-theme="sunset"] .win, [data-theme="sunset"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }

/* Aurora */
[data-theme="aurora"] {
  --bg: #060812;
  --glass: #0d1120;
  --glass-2: #1a1e2d;
  --line: #1f2c40;
  --text: #e8f1f1;
  --muted: #90a6b3;
  --faint: #6e7f8b;
  --accent: #62f0b5;
  --accent-2: #5b3fc4;
  --accent-soft: #62f0b51f;
  --good: #62f0b5;
  --error: #ff8a80;
  --sky-glow: none;
  --rune: #62f0b5;
  --glass-solid: #0d1120;
  --win-shadow: 0 10px 30px #0008, 0 0 40px #62f0b514;
  --win-shadow-focus: 0 12px 36px #0008, 0 0 50px #62f0b514;
  --bar-shadow: 0 8px 24px #0006;
  --accent-44: #62f0b544;
  --accent-55: #62f0b555;
  --accent-66: #62f0b566;
  --accent-88: #62f0b588;
  --bubble: #141b2e;
  --field: #0a0d18;
  --link: #89f4c8;
  --soft: #b1f8da;
  --you-text: #ffffff;
  --on-accent: #04231a;
  --code-bg: #ffffff0f;
  --fail-bg: #3a2020;
  --fail-text: #ffb4ab;
  --close-bg: #ff8a801a;
  --close-text: #ffb4ab;
  --stop-bg: #141b2e;
  --stop-hover: #252c3e;
  --pane-bg: #0d1120;
  --viewer-bg: #0a0e1a;
  --row-bg: #141826;
  --hover: #ffffff0d;
  --tree-line: #1f2c40;
  --label: #89f4c8;
  --label-2: #a1f6d3;
  --tag-bg: #62f0b514;
  --warn: #f0b060;
  --warn-2: #e0a860;
  --code-text: #d1dadb;
  --code-num: #596773;
  --qbox-bg: #0d1120;
  --qbox-shadow: 0 -6px 24px #0008;
  --overlay: #000000e6;
  --media-open-bg: #0d1120e6;
  --mic-ring: #62f0b533;
  color-scheme: dark;
}
[data-theme="aurora"] .win, [data-theme="aurora"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }

/* Glacier */
[data-theme="glacier"] {
  --bg: #dde7ef;
  --glass: #f4f8fb;
  --glass-2: #e7ebef;
  --line: #c3d1dd;
  --text: #14212e;
  --muted: #526577;
  --faint: #758695;
  --accent: #1c5f9e;
  --accent-2: #1c5f9e;
  --accent-soft: #1c5f9e1f;
  --good: #23805a;
  --error: #b3261e;
  --sky-glow: none;
  --rune: #1c5f9e;
  --glass-solid: #f4f8fb;
  --win-shadow: 0 10px 30px #3a3a4a1a;
  --win-shadow-focus: 0 12px 36px #3a3a4a26;
  --bar-shadow: 0 8px 24px #3a3a4a1a;
  --accent-44: #1c5f9e44;
  --accent-55: #1c5f9e55;
  --accent-66: #1c5f9e66;
  --accent-88: #1c5f9e88;
  --bubble: #e6eef4;
  --field: #fbfcfd;
  --link: #164c7e;
  --soft: #11395f;
  --you-text: #ffffff;
  --on-accent: #ffffff;
  --code-bg: #0000000d;
  --fail-bg: #fbe3df;
  --fail-text: #7a1a12;
  --close-bg: #b3261e1a;
  --close-text: #8f1d17;
  --stop-bg: #e6eef4;
  --stop-hover: #d5dee4;
  --pane-bg: #f4f8fb;
  --viewer-bg: #e9f0f5;
  --row-bg: #edf2f5;
  --hover: #0000000a;
  --tree-line: #c3d1dd;
  --label: #154777;
  --label-2: #11395f;
  --tag-bg: #1c5f9e14;
  --warn: #9a4d00;
  --warn-2: #8a5418;
  --code-text: #1e2b38;
  --code-num: #8a99a7;
  --qbox-bg: #f4f8fb;
  --qbox-shadow: 0 -6px 24px #3a3a4a1f;
  --overlay: #14212ee6;
  --media-open-bg: #f4f8fbe6;
  --mic-ring: #1c5f9e33;
  color-scheme: light;
}
[data-theme="glacier"] .win, [data-theme="glacier"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }

/* Rose */
[data-theme="rose"] {
  --bg: #f4dfe4;
  --glass: #fdf3f5;
  --glass-2: #f0e6e8;
  --line: #e6c6cf;
  --text: #2c1620;
  --muted: #765866;
  --faint: #967a86;
  --accent: #b2325d;
  --accent-2: #b2325d;
  --accent-soft: #b2325d1f;
  --good: #2b7a55;
  --error: #b3261e;
  --sky-glow: none;
  --rune: #b2325d;
  --glass-solid: #fdf3f5;
  --win-shadow: 0 10px 30px #3a3a4a1a;
  --win-shadow-focus: 0 12px 36px #3a3a4a26;
  --bar-shadow: 0 8px 24px #3a3a4a1a;
  --accent-44: #b2325d44;
  --accent-55: #b2325d55;
  --accent-66: #b2325d66;
  --accent-88: #b2325d88;
  --bubble: #f8e4e9;
  --field: #fefafb;
  --link: #8e284a;
  --soft: #6b1e38;
  --you-text: #ffffff;
  --on-accent: #ffffff;
  --code-bg: #0000000d;
  --fail-bg: #fbe3df;
  --fail-text: #7a1a12;
  --close-bg: #b3261e1a;
  --close-text: #8f1d17;
  --stop-bg: #f8e4e9;
  --stop-hover: #e8d4d9;
  --pane-bg: #fdf3f5;
  --viewer-bg: #f9e9ed;
  --row-bg: #f7ecef;
  --hover: #0000000a;
  --tree-line: #e6c6cf;
  --label: #862646;
  --label-2: #6b1e38;
  --tag-bg: #b2325d14;
  --warn: #9a4d00;
  --warn-2: #8a5418;
  --code-text: #36202a;
  --code-num: #a88e98;
  --qbox-bg: #fdf3f5;
  --qbox-shadow: 0 -6px 24px #3a3a4a1f;
  --overlay: #2c1620e6;
  --media-open-bg: #fdf3f5e6;
  --mic-ring: #b2325d33;
  color-scheme: light;
}
[data-theme="rose"] .win, [data-theme="rose"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }
[data-theme="rose"] .win, [data-theme="rose"] .taskbar { border-radius: 20px; }

/* Ink and gold */
[data-theme="gold"] {
  --bg: #070706;
  --glass: #100f0c;
  --glass-2: #1e1c18;
  --line: #332e22;
  --text: #f1eadb;
  --muted: #a79f8c;
  --faint: #7f796b;
  --accent: #d9b25a;
  --accent-2: #8a6a1f;
  --accent-soft: #d9b25a1f;
  --good: #d9b25a;
  --error: #ff8a80;
  --sky-glow: none;
  --rune: #d9b25a;
  --glass-solid: #100f0c;
  --win-shadow: 0 10px 30px #0006;
  --win-shadow-focus: 0 12px 36px #0008;
  --bar-shadow: 0 8px 24px #0006;
  --accent-44: #d9b25a44;
  --accent-55: #d9b25a55;
  --accent-66: #d9b25a66;
  --accent-88: #d9b25a88;
  --bubble: #1a1812;
  --field: #0c0b09;
  --link: #e3c583;
  --soft: #ecd9ad;
  --you-text: #ffffff;
  --on-accent: #1b1405;
  --code-bg: #ffffff0f;
  --fail-bg: #3a2020;
  --fail-text: #ffb4ab;
  --close-bg: #ff8a801a;
  --close-text: #ffb4ab;
  --stop-bg: #1a1812;
  --stop-hover: #2b2922;
  --pane-bg: #100f0c;
  --viewer-bg: #0d0c0a;
  --row-bg: #171612;
  --hover: #ffffff0d;
  --tree-line: #332e22;
  --label: #e3c583;
  --label-2: #e8d19c;
  --tag-bg: #d9b25a14;
  --warn: #f0b060;
  --warn-2: #e0a860;
  --code-text: #dad3c6;
  --code-num: #676256;
  --qbox-bg: #100f0c;
  --qbox-shadow: 0 -6px 24px #0008;
  --overlay: #000000e6;
  --media-open-bg: #100f0ce6;
  --mic-ring: #d9b25a33;
  --sans: "Iowan Old Style", "Palatino Linotype", Georgia, serif;
  --serif: "Iowan Old Style", "Palatino Linotype", Georgia, serif;
  color-scheme: dark;
}
[data-theme="gold"] .win, [data-theme="gold"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }
[data-theme="gold"] .win, [data-theme="gold"] .taskbar { border-radius: 4px; }
[data-theme="gold"] body, [data-theme="gold"] button, [data-theme="gold"] input, [data-theme="gold"] textarea { font-family: var(--sans); }

/* High contrast */
[data-theme="contrast"] {
  --bg: #000000;
  --glass: #000000;
  --glass-2: #0f0f0f;
  --line: #ffffff;
  --text: #ffffff;
  --muted: #e0e0e0;
  --faint: #a8a8a8;
  --accent: #ffe600;
  --accent-2: #ffe600;
  --accent-soft: #ffe6001f;
  --good: #5dff8a;
  --error: #ff8a80;
  --sky-glow: none;
  --rune: #ffe600;
  --glass-solid: #000000;
  --win-shadow: 0 10px 30px #0006;
  --win-shadow-focus: 0 12px 36px #0008;
  --bar-shadow: 0 8px 24px #0006;
  --accent-44: #ffe60044;
  --accent-55: #ffe60055;
  --accent-66: #ffe60066;
  --accent-88: #ffe60088;
  --bubble: #1a1a1a;
  --field: #000000;
  --link: #ffec40;
  --soft: #fff380;
  --you-text: #000000;
  --on-accent: #000000;
  --code-bg: #ffffff0f;
  --fail-bg: #3a2020;
  --fail-text: #ffb4ab;
  --close-bg: #ff8a801a;
  --close-text: #ffb4ab;
  --stop-bg: #1a1a1a;
  --stop-hover: #2c2c2c;
  --pane-bg: #000000;
  --viewer-bg: #000000;
  --row-bg: #080808;
  --hover: #ffffff0d;
  --tree-line: #ffffff;
  --label: #ffec40;
  --label-2: #fff066;
  --tag-bg: #ffe60014;
  --warn: #f0b060;
  --warn-2: #e0a860;
  --code-text: #e6e6e6;
  --code-num: #868686;
  --qbox-bg: #000000;
  --qbox-shadow: 0 -6px 24px #0008;
  --overlay: #000000e6;
  --media-open-bg: #000000e6;
  --mic-ring: #ffe60033;
  --sans: "Atkinson Hyperlegible", system-ui, sans-serif;
  --serif: "Atkinson Hyperlegible", system-ui, sans-serif;
  color-scheme: dark;
}
[data-theme="contrast"] .win, [data-theme="contrast"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }
[data-theme="contrast"] .win, [data-theme="contrast"] .taskbar { border-radius: 10px; }
[data-theme="contrast"] body, [data-theme="contrast"] button, [data-theme="contrast"] input, [data-theme="contrast"] textarea { font-family: var(--sans); }
[data-theme="contrast"] .win, [data-theme="contrast"] .bar, [data-theme="contrast"] .compose, [data-theme="contrast"] .taskbar { border-width: 2px; }
[data-theme="contrast"] .m, [data-theme="contrast"] .qbox, [data-theme="contrast"] .connect-card { border: 2px solid var(--line); }
[data-theme="contrast"] button:focus-visible, [data-theme="contrast"] textarea:focus-visible, [data-theme="contrast"] input:focus-visible, [data-theme="contrast"] a:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }

/* Large and clear */
[data-theme="large"] {
  --bg: #dfe7f5;
  --glass: #ffffff;
  --glass-2: #f1f1f2;
  --line: #b7c4dc;
  --text: #101828;
  --muted: #3f4a5e;
  --faint: #677184;
  --accent: #0b4fb8;
  --accent-2: #0b4fb8;
  --accent-soft: #0b4fb81f;
  --good: #167a48;
  --error: #b3261e;
  --sky-glow: none;
  --rune: #0b4fb8;
  --glass-solid: #ffffff;
  --win-shadow: 0 10px 30px #3a3a4a1a;
  --win-shadow-focus: 0 12px 36px #3a3a4a26;
  --bar-shadow: 0 8px 24px #3a3a4a1a;
  --accent-44: #0b4fb844;
  --accent-55: #0b4fb855;
  --accent-66: #0b4fb866;
  --accent-88: #0b4fb888;
  --bubble: #eaf0fb;
  --field: #ffffff;
  --link: #093f93;
  --soft: #072f6e;
  --you-text: #ffffff;
  --on-accent: #ffffff;
  --code-bg: #0000000d;
  --fail-bg: #fbe3df;
  --fail-text: #7a1a12;
  --close-bg: #b3261e1a;
  --close-text: #8f1d17;
  --stop-bg: #eaf0fb;
  --stop-hover: #d9dfea;
  --pane-bg: #ffffff;
  --viewer-bg: #eff3fa;
  --row-bg: #f8f8f9;
  --hover: #0000000a;
  --tree-line: #b7c4dc;
  --label: #083b8a;
  --label-2: #072f6e;
  --tag-bg: #0b4fb814;
  --warn: #9a4d00;
  --warn-2: #8a5418;
  --code-text: #1a2232;
  --code-num: #7f899a;
  --qbox-bg: #ffffff;
  --qbox-shadow: 0 -6px 24px #3a3a4a1f;
  --overlay: #101828e6;
  --media-open-bg: #ffffffe6;
  --mic-ring: #0b4fb833;
  --sans: "Atkinson Hyperlegible", system-ui, sans-serif;
  --serif: "Atkinson Hyperlegible", system-ui, sans-serif;
  color-scheme: light;
}
[data-theme="large"] .win, [data-theme="large"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }
[data-theme="large"] .win, [data-theme="large"] .taskbar { border-radius: 18px; }
[data-theme="large"] body, [data-theme="large"] button, [data-theme="large"] input, [data-theme="large"] textarea { font-family: var(--sans); }
[data-theme="large"] body, [data-theme="large"] .m, [data-theme="large"] .compose textarea, [data-theme="large"] .compose input, [data-theme="large"] .msgs { font-size: 18.5px; line-height: 1.5; }
[data-theme="large"] .x { width: 36px; height: 36px; font-size: 18px; }
[data-theme="large"] .bar { gap: 4px; }
[data-theme="large"] .compose button { min-width: 48px; min-height: 48px; }
[data-theme="large"] .m { padding: 11px 15px; }
[data-theme="large"] button:focus-visible, [data-theme="large"] textarea:focus-visible, [data-theme="large"] input:focus-visible, [data-theme="large"] a:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }

/* Stone */
[data-theme="stone"] {
  --bg: #b9b4ab;
  --glass: #e3dfd8;
  --glass-2: #d7d3cd;
  --line: #cdc7bd;
  --text: #17151a;
  --muted: #3e3a44;
  --faint: #5d595e;
  --accent: #4b33b5;
  --accent-2: #4b33b5;
  --accent-soft: #4b33b51f;
  --good: #2f6e48;
  --error: #b3261e;
  --sky-glow: radial-gradient(1100px 620px at 8% -10%, #d9d2c4, transparent 70%), radial-gradient(900px 600px at 105% 5%, #c7bdd6, transparent 70%);
  --rune: #4b33b5;
  --glass-solid: #e3dfd8;
  --win-shadow: 0 1px 2px #1d16261a, 0 30px 60px -24px #1d162659;
  --win-shadow-focus: 0 1px 2px #1d16261f, 0 36px 70px -24px #1d162666;
  --bar-shadow: 0 8px 24px #3a3a4a1a;
  --accent-44: #4b33b544;
  --accent-55: #4b33b555;
  --accent-66: #4b33b566;
  --accent-88: #4b33b588;
  --bubble: #d3cec6;
  --field: #f4f2ef;
  --link: #3c2991;
  --soft: #2d1f6d;
  --you-text: #ffffff;
  --on-accent: #ffffff;
  --code-bg: #0000000d;
  --fail-bg: #fbe3df;
  --fail-text: #7a1a12;
  --close-bg: #b3261e1a;
  --close-text: #8f1d17;
  --stop-bg: #d3cec6;
  --stop-hover: #c4bfb8;
  --pane-bg: #e3dfd8;
  --viewer-bg: #cecac2;
  --row-bg: #ddd9d2;
  --hover: #0000000a;
  --tree-line: #cdc7bd;
  --label: #382688;
  --label-2: #2d1f6d;
  --tag-bg: #4b33b514;
  --warn: #9a4d00;
  --warn-2: #8a5418;
  --code-text: #1f1d21;
  --code-num: #6f6b6d;
  --qbox-bg: #e3dfd8;
  --qbox-shadow: 0 -6px 24px #3a3a4a1f;
  --overlay: #17151ae6;
  --media-open-bg: #e3dfd8e6;
  --mic-ring: #4b33b533;
  --sans: "Atkinson Hyperlegible", system-ui, sans-serif;
  --serif: "Atkinson Hyperlegible", system-ui, sans-serif;
  color-scheme: light;
}
[data-theme="stone"] .win, [data-theme="stone"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }
[data-theme="stone"] .win, [data-theme="stone"] .taskbar { border-radius: 24px; }
[data-theme="stone"] body, [data-theme="stone"] button, [data-theme="stone"] input, [data-theme="stone"] textarea { font-family: var(--sans); }

/* Sage */
[data-theme="sage"] {
  --bg: #a8b5aa;
  --glass: #dfe5df;
  --glass-2: #d3d9d3;
  --line: #c3cdc4;
  --text: #17151a;
  --muted: #3a423c;
  --faint: #565f58;
  --accent: #2b5c45;
  --accent-2: #2b5c45;
  --accent-soft: #2b5c451f;
  --good: #2b5c45;
  --error: #b3261e;
  --sky-glow: radial-gradient(1100px 620px at 8% -10%, #cfd9c9, transparent 70%), radial-gradient(900px 600px at 105% 5%, #b3c4cf, transparent 70%);
  --rune: #2b5c45;
  --glass-solid: #dfe5df;
  --win-shadow: 0 1px 2px #1d16261a, 0 30px 60px -24px #1d162659;
  --win-shadow-focus: 0 1px 2px #1d16261f, 0 36px 70px -24px #1d162666;
  --bar-shadow: 0 8px 24px #3a3a4a1a;
  --accent-44: #2b5c4544;
  --accent-55: #2b5c4555;
  --accent-66: #2b5c4566;
  --accent-88: #2b5c4588;
  --bubble: #ccd5cd;
  --field: #f2f5f2;
  --link: #224a37;
  --soft: #1a3729;
  --you-text: #ffffff;
  --on-accent: #ffffff;
  --code-bg: #0000000d;
  --fail-bg: #fbe3df;
  --fail-text: #7a1a12;
  --close-bg: #b3261e1a;
  --close-text: #8f1d17;
  --stop-bg: #ccd5cd;
  --stop-hover: #bec6bf;
  --pane-bg: #dfe5df;
  --viewer-bg: #c4cdc5;
  --row-bg: #d9dfd9;
  --hover: #0000000a;
  --tree-line: #c3cdc4;
  --label: #204534;
  --label-2: #1a3729;
  --tag-bg: #2b5c4514;
  --warn: #9a4d00;
  --warn-2: #8a5418;
  --code-text: #1e1d21;
  --code-num: #667068;
  --qbox-bg: #dfe5df;
  --qbox-shadow: 0 -6px 24px #3a3a4a1f;
  --overlay: #17151ae6;
  --media-open-bg: #dfe5dfe6;
  --mic-ring: #2b5c4533;
  --sans: "Atkinson Hyperlegible", system-ui, sans-serif;
  --serif: "Atkinson Hyperlegible", system-ui, sans-serif;
  color-scheme: light;
}
[data-theme="sage"] .win, [data-theme="sage"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }
[data-theme="sage"] .win, [data-theme="sage"] .taskbar { border-radius: 24px; }
[data-theme="sage"] body, [data-theme="sage"] button, [data-theme="sage"] input, [data-theme="sage"] textarea { font-family: var(--sans); }

/* Sky */
[data-theme="sky"] {
  --bg: #a9b3c1;
  --glass: #e0e5ec;
  --glass-2: #d4d9df;
  --line: #c3ccd8;
  --text: #17151a;
  --muted: #3a404c;
  --faint: #565d69;
  --accent: #2a4c9c;
  --accent-2: #2a4c9c;
  --accent-soft: #2a4c9c1f;
  --good: #2f6e48;
  --error: #b3261e;
  --sky-glow: radial-gradient(1100px 620px at 8% -10%, #cbd6e4, transparent 70%), radial-gradient(900px 600px at 105% 5%, #c4bdd9, transparent 70%);
  --rune: #2a4c9c;
  --glass-solid: #e0e5ec;
  --win-shadow: 0 1px 2px #1d16261a, 0 30px 60px -24px #1d162659;
  --win-shadow-focus: 0 1px 2px #1d16261f, 0 36px 70px -24px #1d162666;
  --bar-shadow: 0 8px 24px #3a3a4a1a;
  --accent-44: #2a4c9c44;
  --accent-55: #2a4c9c55;
  --accent-66: #2a4c9c66;
  --accent-88: #2a4c9c88;
  --bubble: #ccd4df;
  --field: #f3f5f7;
  --link: #223d7d;
  --soft: #192e5e;
  --you-text: #ffffff;
  --on-accent: #ffffff;
  --code-bg: #0000000d;
  --fail-bg: #fbe3df;
  --fail-text: #7a1a12;
  --close-bg: #b3261e1a;
  --close-text: #8f1d17;
  --stop-bg: #ccd4df;
  --stop-hover: #bec5cf;
  --pane-bg: #e0e5ec;
  --viewer-bg: #c5ccd7;
  --row-bg: #dadfe6;
  --hover: #0000000a;
  --tree-line: #c3ccd8;
  --label: #203975;
  --label-2: #192e5e;
  --tag-bg: #2a4c9c14;
  --warn: #9a4d00;
  --warn-2: #8a5418;
  --code-text: #1e1d22;
  --code-num: #666e7b;
  --qbox-bg: #e0e5ec;
  --qbox-shadow: 0 -6px 24px #3a3a4a1f;
  --overlay: #17151ae6;
  --media-open-bg: #e0e5ece6;
  --mic-ring: #2a4c9c33;
  --sans: "Atkinson Hyperlegible", system-ui, sans-serif;
  --serif: "Atkinson Hyperlegible", system-ui, sans-serif;
  color-scheme: light;
}
[data-theme="sky"] .win, [data-theme="sky"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }
[data-theme="sky"] .win, [data-theme="sky"] .taskbar { border-radius: 24px; }
[data-theme="sky"] body, [data-theme="sky"] button, [data-theme="sky"] input, [data-theme="sky"] textarea { font-family: var(--sans); }

/* Lilac */
[data-theme="lilac"] {
  --bg: #b4adc2;
  --glass: #e3dfeb;
  --glass-2: #d7d3de;
  --line: #cbc4d8;
  --text: #17151a;
  --muted: #3f3a48;
  --faint: #5c5767;
  --accent: #5a3db8;
  --accent-2: #5a3db8;
  --accent-soft: #5a3db81f;
  --good: #2f6e48;
  --error: #b3261e;
  --sky-glow: radial-gradient(1100px 620px at 8% -10%, #d6cfe2, transparent 70%), radial-gradient(900px 600px at 105% 5%, #e0c9cf, transparent 70%);
  --rune: #5a3db8;
  --glass-solid: #e3dfeb;
  --win-shadow: 0 1px 2px #1d16261a, 0 30px 60px -24px #1d162659;
  --win-shadow-focus: 0 1px 2px #1d16261f, 0 36px 70px -24px #1d162666;
  --bar-shadow: 0 8px 24px #3a3a4a1a;
  --accent-44: #5a3db844;
  --accent-55: #5a3db855;
  --accent-66: #5a3db866;
  --accent-88: #5a3db888;
  --bubble: #d2cbdd;
  --field: #f4f2f7;
  --link: #483193;
  --soft: #36256e;
  --you-text: #ffffff;
  --on-accent: #ffffff;
  --code-bg: #0000000d;
  --fail-bg: #fbe3df;
  --fail-text: #7a1a12;
  --close-bg: #b3261e1a;
  --close-text: #8f1d17;
  --stop-bg: #d2cbdd;
  --stop-hover: #c3bccd;
  --pane-bg: #e3dfeb;
  --viewer-bg: #ccc6d7;
  --row-bg: #ddd9e5;
  --hover: #0000000a;
  --tree-line: #cbc4d8;
  --label: #442e8a;
  --label-2: #36256e;
  --tag-bg: #5a3db814;
  --warn: #9a4d00;
  --warn-2: #8a5418;
  --code-text: #1f1d22;
  --code-num: #6e6879;
  --qbox-bg: #e3dfeb;
  --qbox-shadow: 0 -6px 24px #3a3a4a1f;
  --overlay: #17151ae6;
  --media-open-bg: #e3dfebe6;
  --mic-ring: #5a3db833;
  --sans: "Atkinson Hyperlegible", system-ui, sans-serif;
  --serif: "Atkinson Hyperlegible", system-ui, sans-serif;
  color-scheme: light;
}
[data-theme="lilac"] .win, [data-theme="lilac"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }
[data-theme="lilac"] .win, [data-theme="lilac"] .taskbar { border-radius: 24px; }
[data-theme="lilac"] body, [data-theme="lilac"] button, [data-theme="lilac"] input, [data-theme="lilac"] textarea { font-family: var(--sans); }

/* Clay */
[data-theme="clay"] {
  --bg: #c0afa4;
  --glass: #e8ddd5;
  --glass-2: #dbd1ca;
  --line: #d3c5ba;
  --text: #17151a;
  --muted: #463b35;
  --faint: #655851;
  --accent: #973f25;
  --accent-2: #973f25;
  --accent-soft: #973f251f;
  --good: #2f6e48;
  --error: #b3261e;
  --sky-glow: radial-gradient(1100px 620px at 8% -10%, #e0cfc1, transparent 70%), radial-gradient(900px 600px at 105% 5%, #cdb7bf, transparent 70%);
  --rune: #973f25;
  --glass-solid: #e8ddd5;
  --win-shadow: 0 1px 2px #1d16261a, 0 30px 60px -24px #1d162659;
  --win-shadow-focus: 0 1px 2px #1d16261f, 0 36px 70px -24px #1d162666;
  --bar-shadow: 0 8px 24px #3a3a4a1a;
  --accent-44: #973f2544;
  --accent-55: #973f2555;
  --accent-66: #973f2566;
  --accent-88: #973f2588;
  --bubble: #d8cbc1;
  --field: #f6f1ee;
  --link: #79321e;
  --soft: #5b2616;
  --you-text: #ffffff;
  --on-accent: #ffffff;
  --code-bg: #0000000d;
  --fail-bg: #fbe3df;
  --fail-text: #7a1a12;
  --close-bg: #b3261e1a;
  --close-text: #8f1d17;
  --stop-bg: #d8cbc1;
  --stop-hover: #c9bcb4;
  --pane-bg: #e8ddd5;
  --viewer-bg: #d4c6bd;
  --row-bg: #e2d7cf;
  --hover: #0000000a;
  --tree-line: #d3c5ba;
  --label: #712f1c;
  --label-2: #5b2616;
  --tag-bg: #973f2514;
  --warn: #9a4d00;
  --warn-2: #8a5418;
  --code-text: #1f1d21;
  --code-num: #776961;
  --qbox-bg: #e8ddd5;
  --qbox-shadow: 0 -6px 24px #3a3a4a1f;
  --overlay: #17151ae6;
  --media-open-bg: #e8ddd5e6;
  --mic-ring: #973f2533;
  --sans: "Atkinson Hyperlegible", system-ui, sans-serif;
  --serif: "Atkinson Hyperlegible", system-ui, sans-serif;
  color-scheme: light;
}
[data-theme="clay"] .win, [data-theme="clay"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }
[data-theme="clay"] .win, [data-theme="clay"] .taskbar { border-radius: 24px; }
[data-theme="clay"] body, [data-theme="clay"] button, [data-theme="clay"] input, [data-theme="clay"] textarea { font-family: var(--sans); }
/* ===== end of the ten more looks ===== */

/* ===== Bifrost looks: generated by member/tools/make-themes.mjs from tools/bifrost-looks.mjs, do not edit by hand ===== */
/* Bifrost */
[data-theme="bifrost"] {
  --bg: #05070b;
  --glass: #090c13;
  --glass-2: #0e121b;
  --line: #263044;
  --text: #d9dfeb;
  --muted: #8b95a9;
  --faint: #5a6579;
  --accent: #22d3ee;
  --accent-2: #151a26;
  --accent-soft: #22d3ee1f;
  --good: #34d399;
  --error: #fb4b6a;
  --sky-glow: radial-gradient(ellipse 80% 70% at 50% 40%, transparent 40%, rgba(0, 0, 0, 0.45) 100%), radial-gradient(circle at 1px 1px, rgba(120, 140, 175, 0.11) 1px, transparent 1.4px) 0 0 / 22px 22px;
  --rune: #22d3ee;
  --glass-solid: #090c13;
  --win-shadow: 0 18px 50px rgba(0, 0, 0, 0.6), 0 0 0 1px #22d3ee10;
  --win-shadow-focus: 0 18px 50px rgba(0, 0, 0, 0.6), 0 0 0 1px #22d3ee73, 0 0 18px #22d3ee2e;
  --bar-shadow: 0 18px 50px rgba(0, 0, 0, 0.6);
  --accent-44: #22d3ee44;
  --accent-55: #22d3ee55;
  --accent-66: #22d3ee66;
  --accent-88: #22d3ee88;
  --bubble: #0e121b;
  --field: #05070b;
  --link: #67e8f9;
  --soft: #67e8f9;
  --you-text: #d9dfeb;
  --on-accent: #02161a;
  --code-bg: #ffffff0f;
  --fail-bg: #21121c;
  --fail-text: #fb4b6a;
  --close-bg: #fb4b6a1a;
  --close-text: #fb4b6a;
  --stop-bg: #151a26;
  --stop-hover: #1d2433;
  --pane-bg: #090c13;
  --viewer-bg: #05070b;
  --row-bg: #0e121b;
  --hover: #22d3ee10;
  --tree-line: #263044;
  --label: #a78bfa;
  --label-2: #67e8f9;
  --tag-bg: #22d3ee14;
  --warn: #fbbf24;
  --warn-2: #fcd34d;
  --code-text: #d9dfeb;
  --code-num: #5a6579;
  --qbox-bg: #0e121b;
  --qbox-shadow: 0 -8px 30px rgba(0, 0, 0, 0.6), 0 0 0 1px #22d3ee10;
  --overlay: #020408b8;
  --media-open-bg: #090c13e6;
  --mic-ring: #22d3ee33;
  --sans: "Cascadia Code", "Cascadia Mono", Consolas, "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;
  --serif: "Cascadia Code", "Cascadia Mono", Consolas, "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;
  color-scheme: dark;
}
[data-theme="bifrost"] .win, [data-theme="bifrost"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }
[data-theme="bifrost"] body, [data-theme="bifrost"] button, [data-theme="bifrost"] input, [data-theme="bifrost"] textarea { font-family: var(--sans); }

/* Bifrost Light */
[data-theme="bifrost-light"] {
  --bg: #eceff4;
  --glass: #f9fafc;
  --glass-2: #eef1f6;
  --line: #bcc5d4;
  --text: #141a24;
  --muted: #566074;
  --faint: #7c8494;
  --accent: #0e7490;
  --accent-2: #e3e8f0;
  --accent-soft: #0e74901f;
  --good: #059669;
  --error: #dc2646;
  --sky-glow: radial-gradient(circle at 1px 1px, rgba(40, 60, 100, 0.1) 1px, transparent 1.4px) 0 0 / 22px 22px;
  --rune: #0891b2;
  --glass-solid: #f9fafc;
  --win-shadow: 0 18px 50px rgba(20, 30, 60, 0.2), 0 0 0 1px #0891b214;
  --win-shadow-focus: 0 18px 50px rgba(20, 30, 60, 0.2), 0 0 0 1px #0891b280, 0 0 14px #0891b229;
  --bar-shadow: 0 18px 50px rgba(20, 30, 60, 0.2);
  --accent-44: #0e749044;
  --accent-55: #0e749055;
  --accent-66: #0e749066;
  --accent-88: #0e749088;
  --bubble: #eef1f6;
  --field: #eceff4;
  --link: #0e7490;
  --soft: #0e7490;
  --you-text: #141a24;
  --on-accent: #ffffff;
  --code-bg: #0000000d;
  --fail-bg: #f6e5ea;
  --fail-text: #a8132f;
  --close-bg: #dc26461a;
  --close-text: #a8132f;
  --stop-bg: #e3e8f0;
  --stop-hover: #d6dce7;
  --pane-bg: #f9fafc;
  --viewer-bg: #eef1f6;
  --row-bg: #eef1f6;
  --hover: #0891b214;
  --tree-line: #bcc5d4;
  --label: #5b30c9;
  --label-2: #0e7490;
  --tag-bg: #0e749014;
  --warn: #a35f08;
  --warn-2: #a35f08;
  --code-text: #141a24;
  --code-num: #6e788b;
  --qbox-bg: #eef1f6;
  --qbox-shadow: 0 -8px 30px rgba(20, 30, 60, 0.2);
  --overlay: #141a2866;
  --media-open-bg: #f9fafce6;
  --mic-ring: #0e749033;
  --sans: "Cascadia Code", "Cascadia Mono", Consolas, "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;
  --serif: "Cascadia Code", "Cascadia Mono", Consolas, "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;
  color-scheme: light;
}
[data-theme="bifrost-light"] .win, [data-theme="bifrost-light"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }
[data-theme="bifrost-light"] body, [data-theme="bifrost-light"] button, [data-theme="bifrost-light"] input, [data-theme="bifrost-light"] textarea { font-family: var(--sans); }

/* Bifrost Violet */
[data-theme="bifrost-violet"] {
  --bg: #05070b;
  --glass: #090c13;
  --glass-2: #0e121b;
  --line: #263044;
  --text: #d9dfeb;
  --muted: #8b95a9;
  --faint: #5a6579;
  --accent: #8b5cf6;
  --accent-2: #151a26;
  --accent-soft: #8b5cf61f;
  --good: #34d399;
  --error: #fb4b6a;
  --sky-glow: radial-gradient(ellipse 80% 70% at 50% 40%, transparent 40%, rgba(0, 0, 0, 0.45) 100%), radial-gradient(circle at 1px 1px, rgba(120, 140, 175, 0.11) 1px, transparent 1.4px) 0 0 / 22px 22px;
  --rune: #a78bfa;
  --glass-solid: #090c13;
  --win-shadow: 0 18px 50px rgba(0, 0, 0, 0.6), 0 0 0 1px #8b5cf610;
  --win-shadow-focus: 0 18px 50px rgba(0, 0, 0, 0.6), 0 0 0 1px #8b5cf673, 0 0 18px #8b5cf62e;
  --bar-shadow: 0 18px 50px rgba(0, 0, 0, 0.6);
  --accent-44: #8b5cf644;
  --accent-55: #8b5cf655;
  --accent-66: #8b5cf666;
  --accent-88: #8b5cf688;
  --bubble: #0e121b;
  --field: #05070b;
  --link: #a78bfa;
  --soft: #a78bfa;
  --you-text: #d9dfeb;
  --on-accent: #05070b;
  --code-bg: #ffffff0f;
  --fail-bg: #21121c;
  --fail-text: #fb4b6a;
  --close-bg: #fb4b6a1a;
  --close-text: #fb4b6a;
  --stop-bg: #151a26;
  --stop-hover: #1d2433;
  --pane-bg: #090c13;
  --viewer-bg: #05070b;
  --row-bg: #0e121b;
  --hover: #8b5cf610;
  --tree-line: #263044;
  --label: #a78bfa;
  --label-2: #a78bfa;
  --tag-bg: #8b5cf614;
  --warn: #fbbf24;
  --warn-2: #fcd34d;
  --code-text: #d9dfeb;
  --code-num: #5a6579;
  --qbox-bg: #0e121b;
  --qbox-shadow: 0 -8px 30px rgba(0, 0, 0, 0.6), 0 0 0 1px #8b5cf610;
  --overlay: #020408b8;
  --media-open-bg: #090c13e6;
  --mic-ring: #8b5cf633;
  --sans: "Cascadia Code", "Cascadia Mono", Consolas, "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;
  --serif: "Cascadia Code", "Cascadia Mono", Consolas, "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;
  color-scheme: dark;
}
[data-theme="bifrost-violet"] .win, [data-theme="bifrost-violet"] .taskbar { backdrop-filter: none; -webkit-backdrop-filter: none; }
[data-theme="bifrost-violet"] body, [data-theme="bifrost-violet"] button, [data-theme="bifrost-violet"] input, [data-theme="bifrost-violet"] textarea { font-family: var(--sans); }

/* Bifrost: the same in all three */
html[data-theme^="bifrost"] body { font-size: 14px; }
/* Sharp corners, 2 to 4px, on everything but the small round LEDs. The little pictures of the other looks keep their own. */
html[data-theme^="bifrost"] :not(.dot) { border-radius: 3px !important; }
html[data-theme^="bifrost"] .win, html[data-theme^="bifrost"] .taskbar, html[data-theme^="bifrost"] .looks-card { border-radius: 4px !important; }
html[data-theme^="bifrost"] .look-card .lc-frame:not([data-theme^="bifrost"]) { border-radius: 14px !important; }
html[data-theme^="bifrost"] .lc-frame:not([data-theme^="bifrost"]) .lc-win { border-radius: var(--lc-r, 10px) !important; }
html[data-theme^="bifrost"] .lc-frame:not([data-theme^="bifrost"]) .lc-b, html[data-theme^="bifrost"] .lc-frame:not([data-theme^="bifrost"]) .lc-you { border-radius: 9px !important; }
html[data-theme^="bifrost"] .lc-frame:not([data-theme^="bifrost"]) .lc-in { border-radius: 99px !important; }
/* Long reading text in chat is the one place for a plain sans; everything else is monospace (--sans is the mono stack here). */
html[data-theme^="bifrost"] .m, html[data-theme^="bifrost"] .compose textarea { font-family: system-ui, "Segoe UI", -apple-system, "Helvetica Neue", Arial, sans-serif; }
html[data-theme^="bifrost"] .m { font-size: 14.5px; line-height: 1.6; }
html[data-theme^="bifrost"] .m code, html[data-theme^="bifrost"] .m pre { font-family: "Cascadia Code", "Cascadia Mono", Consolas, "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace; }
/* Her words are plain text on the page; yours sit in a bordered panel. */
html[data-theme^="bifrost"] .m.rune { background: transparent; padding-left: 0; padding-right: 0; }
html[data-theme^="bifrost"] .m.you { border: 1px solid var(--line); }
html[data-theme^="bifrost"] .thinking { background: transparent; padding-left: 0; }
html[data-theme^="bifrost"] .thinking span::after { content: " \2588"; color: var(--accent); animation: bifrost-cursor 1.1s steps(1) infinite; }
@keyframes bifrost-cursor { 50% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { html[data-theme^="bifrost"] .thinking span::after { animation: none; } }
/* Tiny UPPERCASE letter-spaced labels for section titles. */
html[data-theme^="bifrost"] .bar small, html[data-theme^="bifrost"] .looks-card h3 { text-transform: uppercase; letter-spacing: .12em; font-size: 10.5px; font-weight: 600; }
/* An edge glow on the focused window, on hover, and on the box you are typing in. */
html[data-theme^="bifrost"] .compose textarea:focus, html[data-theme^="bifrost"] .compose input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent-66), 0 0 18px var(--accent-44); }
html[data-theme^="bifrost"] .compose button { border: 1px solid var(--accent); }
html[data-theme^="bifrost"] .compose button:not(:disabled):hover, html[data-theme^="bifrost"] .btn:hover, html[data-theme^="bifrost"] .looks-done:hover { box-shadow: 0 0 16px var(--accent-88); }
html[data-theme^="bifrost"] .x:hover, html[data-theme^="bifrost"] .taskbar button:hover { box-shadow: 0 0 0 1px var(--accent-66), 0 0 12px var(--accent-44); }
html[data-theme^="bifrost"] .compose .mic.on { background: var(--accent); color: var(--on-accent); }
html[data-theme^="bifrost"] :focus-visible { outline: 1px solid var(--accent); outline-offset: 2px; }
html[data-theme^="bifrost"] ::selection { background: var(--accent-55); }
html[data-theme^="bifrost"] * { scrollbar-width: thin; scrollbar-color: var(--line) transparent; }
/* The little pictures in the Looks panel: sharp, with your message in a panel edged in the accent. */
.look-card .lc-frame[data-theme^="bifrost"] { --lc-r: 2px; border-radius: 3px; }
.lc-frame[data-theme^="bifrost"] .lc-b, .lc-frame[data-theme^="bifrost"] .lc-you, .lc-frame[data-theme^="bifrost"] .lc-in { border-radius: 2px; }
.lc-frame[data-theme^="bifrost"] .lc-you { border: 1px solid var(--accent); }
.lc-frame[data-theme^="bifrost"] .lc-in { border-color: var(--accent-66); }
.lc-frame[data-theme^="bifrost"] .lc-b { background: transparent; padding-left: 0; }
/* On a Bifrost page the other looks' pictures keep the normal font (it is Bifrost's monospace that they would inherit). */
html[data-theme^="bifrost"] .lc-frame[data-theme="dark"],
html[data-theme^="bifrost"] .lc-frame[data-theme="light"],
html[data-theme^="bifrost"] .lc-frame[data-theme="simple"],
html[data-theme^="bifrost"] .lc-frame[data-theme="adhd"],
html[data-theme^="bifrost"] .lc-frame[data-theme="ocean"],
html[data-theme^="bifrost"] .lc-frame[data-theme="forest"],
html[data-theme^="bifrost"] .lc-frame[data-theme="sunset"],
html[data-theme^="bifrost"] .lc-frame[data-theme="aurora"],
html[data-theme^="bifrost"] .lc-frame[data-theme="glacier"],
html[data-theme^="bifrost"] .lc-frame[data-theme="rose"] { --sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; }
/* ===== end of the Bifrost looks ===== */
