/* PracticeKit themes — shared color-token vocabulary for the mobile-apps monorepo.
 *
 * The single source of truth for every app's palette. Lifted from
 * sports-officiating (the richest theme set: 12 themes, value-for-value) so the
 * apps can't drift apart. `:root` (no data-theme attribute) is Classic — the
 * light baseline; every other theme overrides ONLY tokens. Component CSS in each
 * app consumes these via var(--token); pair with js/theme.js for the switcher.
 *
 * Canonical source: packages/practice-kit/css/; each app symlinks it into
 * static/css/ (and, for the inline-template apps, @imports or inlines it).
 * Add an app-specific theme (e.g. Fretsy's "fretboard") by appending one more
 * [data-theme="…"] block — do not fork this file.
 */
    /* ── Theme tokens — the single source of truth for every page ──────────
       Default (:root, no data-theme attribute) is Classic: the original light
       green/blue look, value-for-value. Each theme overrides only tokens.
       Component styles in portal.html / quiz.html consume these via var(). */
    :root {
        --page-a: #e8f5e9;  --page-b: #e3f2fd;   /* body gradient ends */
        --surface: #ffffff;                       /* cards */
        --ink: #212121;      --ink-mid: #424242;  /* text, strongest -> softest */
        --ink-dim: #555;     --ink-soft: #666;
        --ink-faint: #8e8e8e; --ink-mute: #757575;
        --line: #e0e0e0;
        --accent: #2e7d32;   --accent-strong: #1b5e20;
        --accent-hover: #1b5e20; --on-accent: #ffffff;
        --info: #1976d2;     --info-strong: #1565c0;
        --q-bg: #e3f2fd;                          /* question box */
        --a-bg: #e8f5e9;     --a-border: #4caf50; /* answer box / drill banner */
        --opt-bg: #ffffff;   --opt-border: #cfd8dc;
        --opt-ink: #263238;  --opt-hover-bg: #f5faff;
        --warn-bg: #fff3e0;  --warn-border: #ffb74d; --warn-ink: #e65100;
        --danger: #c62828;
        --miss-bg: #fff8f8;  --miss-border: #ffcdd2;
        --chip-bg: rgba(255,255,255,.8); --chip-ink: #4a5b64;
        --panel: #ffffff;    --btn-soft: #eceff1;  /* feedback widget */
    }

    /* Powder Blue — the umpire's shirt: cool blue light, navy accent. */
    [data-theme="powder"] {
        --page-a: #e8f1f8;   --page-b: #dce9f4;
        --line: #dbe4ec;
        --accent: #1d5c96;   --accent-strong: #123f6a;
        --accent-hover: #174d80; --on-accent: #ffffff;
        --info: #2f74b8;     --info-strong: #275f99;
        --q-bg: #e4eef8;
        --a-bg: #e7f2ea;     --a-border: #58a06a;
        --opt-hover-bg: #eef5fb;
        --chip-bg: rgba(244,249,253,.85); --chip-ink: #4a5f74;
    }

    /* Dark — the evening field: green-cast charcoal, field-green accent. */
    [data-theme="dark"] {
        --page-a: #151b18;   --page-b: #111722;
        --surface: #1e2622;
        --ink: #e8eee9;      --ink-mid: #cfd8d1;
        --ink-dim: #adbab1;  --ink-soft: #a0aea5;
        --ink-faint: #7f8d85; --ink-mute: #8b9a91;
        --line: #33403a;
        --accent: #6abf6e;   --accent-strong: #8fd694;
        --accent-hover: #7ccb80; --on-accent: #0b150e;
        --info: #6fb3f2;     --info-strong: #9cc9f7;
        --q-bg: #17222f;
        --a-bg: #192a1e;     --a-border: #42794a;
        --opt-bg: #242d28;   --opt-border: #3b4841;
        --opt-ink: #dfe7e1;  --opt-hover-bg: #283845;
        --warn-bg: #2c2313;  --warn-border: #8a6420; --warn-ink: #f0b45c;
        --danger: #ef6a5f;
        --miss-bg: #2a1b1b;  --miss-border: #5c3434;
        --chip-bg: rgba(22,28,24,.85); --chip-ink: #a9b6ad;
        --panel: #242d28;    --btn-soft: #33403a;
    }

    /* Scoreboard — night game: deep navy, incandescent amber lettering. */
    [data-theme="scoreboard"] {
        --page-a: #101830;   --page-b: #0a101f;
        --surface: #161f38;
        --ink: #eef1fa;      --ink-mid: #d2d9ea;
        --ink-dim: #a8b3cc;  --ink-soft: #9aa6c1;
        --ink-faint: #7e8aa8; --ink-mute: #8c9ab8;
        --line: #2b3654;
        --accent: #ffb52e;   --accent-strong: #ffcf70;
        --accent-hover: #ffc24f; --on-accent: #241703;
        --info: #82aaff;     --info-strong: #a8c3ff;
        --q-bg: #121c33;
        --a-bg: #231d0d;     --a-border: #93701f;
        --opt-bg: #1b2540;   --opt-border: #33406a;
        --opt-ink: #e6eaf6;  --opt-hover-bg: #22304f;
        --warn-bg: #241d0f;  --warn-border: #8a6420; --warn-ink: #ffc94d;
        --danger: #ff7a70;
        --miss-bg: #2b1a20;  --miss-border: #5e3441;
        --chip-bg: rgba(13,19,38,.85); --chip-ink: #a7b2cc;
        --panel: #1b2540;    --btn-soft: #2b3654;
    }

    /* Midnight — plain dark, no tint: neutral charcoal, blue accent. */
    [data-theme="midnight"] {
        --page-a: #16181d;   --page-b: #101318;
        --surface: #1e2127;
        --ink: #e8eaee;      --ink-mid: #cdd2d9;
        --ink-dim: #aab1bb;  --ink-soft: #9aa2ad;
        --ink-faint: #7c8592; --ink-mute: #8b95a2;
        --line: #343a44;
        --accent: #5c9ce6;   --accent-strong: #8ebdf2;
        --accent-hover: #74acec; --on-accent: #0a1522;
        --info: #64b5f6;     --info-strong: #90caf9;
        --q-bg: #1a2230;
        --a-bg: #1c2a24;     --a-border: #4a7c59;
        --opt-bg: #262a31;   --opt-border: #3d434e;
        --opt-ink: #dfe3e9;  --opt-hover-bg: #2b3542;
        --warn-bg: #2b2413;  --warn-border: #8a6420; --warn-ink: #f0b45c;
        --danger: #ef6a5f;
        --miss-bg: #2a1d1f;  --miss-border: #5c3438;
        --chip-bg: rgba(18,20,25,.85); --chip-ink: #a9b0bb;
        --panel: #262a31;    --btn-soft: #343a44;
    }

    /* Stripes — the zebra: black and white, red only when it matters. */
    [data-theme="stripes"] {
        --page-a: #0f0f0f;   --page-b: #0a0a0a;
        --surface: #171717;
        --ink: #f2f2f2;      --ink-mid: #d8d8d8;
        --ink-dim: #b5b5b5;  --ink-soft: #a6a6a6;
        --ink-faint: #8a8a8a; --ink-mute: #969696;
        --line: #3a3a3a;
        --accent: #f2f2f2;   --accent-strong: #ffffff;
        --accent-hover: #ffffff; --on-accent: #111111;
        --info: #cfcfcf;     --info-strong: #e6e6e6;
        --q-bg: #141414;
        --a-bg: #1a231a;     --a-border: #6a8f6a;
        --opt-bg: #1c1c1c;   --opt-border: #444444;
        --opt-ink: #ededed;  --opt-hover-bg: #262626;
        --warn-bg: #262010;  --warn-border: #8a7a20; --warn-ink: #e8d44d;
        --danger: #ff6b6b;
        --miss-bg: #241416;  --miss-border: #5c3434;
        --chip-bg: rgba(15,15,15,.85); --chip-ink: #bdbdbd;
        --panel: #1c1c1c;    --btn-soft: #2b2b2b;
    }




    /* Sea Glass — cool mint light, deep teal accent. */
    [data-theme="seaglass"] {
        --page-a: #e7f5f2;   --page-b: #dbeff0;
        --surface: #fbfffe;
        --ink: #14302c;      --ink-mid: #2c4f4a;
        --ink-dim: #446662;  --ink-soft: #547471;
        --ink-faint: #789a96; --ink-mute: #688a86;
        --line: #d8eae7;
        --accent: #0e7c6b;   --accent-strong: #095a4d;
        --accent-hover: #0b6d5d; --on-accent: #ffffff;
        --info: #3a78b0;     --info-strong: #316495;
        --q-bg: #e4f0f8;
        --a-bg: #e2f2ec;     --a-border: #4faa93;
        --opt-bg: #fbfffe;   --opt-border: #cfe4e0;
        --opt-ink: #1c3833;  --opt-hover-bg: #eef8f5;
        --chip-bg: rgba(247,253,252,.85); --chip-ink: #446662;
        --panel: #fbfffe;    --btn-soft: #dfeeeb;
    }

    /* Sepia — the old scorebook: browns on parchment, olive second. */
    [data-theme="sepia"] {
        --page-a: #f2e9da;   --page-b: #e9dcc6;
        --surface: #faf4e8;
        --ink: #2e2417;      --ink-mid: #4c3f2c;
        --ink-dim: #675a44;  --ink-soft: #766952;
        --ink-faint: #968a72; --ink-mute: #867a62;
        --line: #e3d6bd;
        --accent: #6b4f2a;   --accent-strong: #4d3719;
        --accent-hover: #5c4321; --on-accent: #ffffff;
        --info: #706e30;     --info-strong: #5c5a26;
        --q-bg: #efe6cf;
        --a-bg: #ece4cd;     --a-border: #a08a52;
        --opt-bg: #faf4e8;   --opt-border: #d9ccae;
        --opt-ink: #352b1c;  --opt-hover-bg: #f3ecd9;
        --danger: #a33a2a;
        --miss-bg: #f2e2d8;  --miss-border: #d0a894;
        --chip-bg: rgba(248,242,230,.85); --chip-ink: #675a44;
        --panel: #faf4e8;    --btn-soft: #e7dcc4;
    }

    /* Rose — blush light, raspberry accent, violet second. */
    [data-theme="rose"] {
        --page-a: #fbecf2;   --page-b: #f7dde8;
        --surface: #fffafc;
        --ink: #331723;      --ink-mid: #55283c;
        --ink-dim: #744158;  --ink-soft: #825168;
        --ink-faint: #a3768c; --ink-mute: #93667c;
        --line: #efd9e2;
        --accent: #ad2a63;   --accent-strong: #811d49;
        --accent-hover: #9a2456; --on-accent: #ffffff;
        --info: #6a4ca8;     --info-strong: #584092;
        --q-bg: #f1eaf8;
        --a-bg: #f4e6ee;     --a-border: #a84a7f;
        --opt-bg: #fffafc;   --opt-border: #ecd3de;
        --opt-ink: #3a2230;  --opt-hover-bg: #fbeff5;
        --miss-bg: #fbe6e6;  --miss-border: #e0a8a8;
        --chip-bg: rgba(255,250,252,.85); --chip-ink: #744158;
        --panel: #fffafc;    --btn-soft: #f2dfe8;
    }

    /* Violet — purple night, magenta second. */
    [data-theme="violet"] {
        --page-a: #191227;   --page-b: #120d1d;
        --surface: #221836;
        --ink: #ece6f8;      --ink-mid: #d4cbe8;
        --ink-dim: #b0a4cc;  --ink-soft: #a296c0;
        --ink-faint: #8478a4; --ink-mute: #9186b0;
        --line: #382b52;
        --accent: #a678f0;   --accent-strong: #c2a0f8;
        --accent-hover: #b58cf4; --on-accent: #180d2c;
        --info: #e678c0;     --info-strong: #f0a0d8;
        --q-bg: #201a38;
        --a-bg: #281f42;     --a-border: #7a5ab8;
        --opt-bg: #2a2145;   --opt-border: #443868;
        --opt-ink: #e2daf2;  --opt-hover-bg: #332856;
        --warn-bg: #2c2313;  --warn-border: #8a6420; --warn-ink: #f0b45c;
        --danger: #f07070;
        --miss-bg: #2e1a26;  --miss-border: #5e3450;
        --chip-bg: rgba(20,14,36,.85); --chip-ink: #aba0c8;
        --panel: #2a2145;    --btn-soft: #382b52;
    }

    /* Ember — charcoal and fire: warm dark, glowing orange. */
    [data-theme="ember"] {
        --page-a: #1c1210;   --page-b: #140c0a;
        --surface: #261815;
        --ink: #f4e8e2;      --ink-mid: #e0cfc6;
        --ink-dim: #c0a89c;  --ink-soft: #b2998c;
        --ink-faint: #94796c; --ink-mute: #a28a7c;
        --line: #45302a;
        --accent: #ff6b35;   --accent-strong: #ff8f60;
        --accent-hover: #ff7d4a; --on-accent: #2a0f00;
        --info: #ffb454;     --info-strong: #ffc87e;
        --q-bg: #281c11;
        --a-bg: #2a1c14;     --a-border: #a85a30;
        --opt-bg: #2e1f1a;   --opt-border: #4c352c;
        --opt-ink: #ecdcd4;  --opt-hover-bg: #38251e;
        --warn-bg: #2c2313;  --warn-border: #8a6420; --warn-ink: #f0b45c;
        --danger: #f43f5e;
        --miss-bg: #331418;  --miss-border: #63303a;
        --chip-bg: rgba(24,14,11,.85); --chip-ink: #c0a89c;
        --panel: #2e1f1a;    --btn-soft: #45302a;
    }

    /* Neon — blacktop and electric cyan, magenta second. */
    [data-theme="neon"] {
        --page-a: #0c1116;   --page-b: #07090d;
        --surface: #12181f;
        --ink: #e6f6f8;      --ink-mid: #c4dee2;
        --ink-dim: #9cc0c6;  --ink-soft: #8cb2b8;
        --ink-faint: #6e9298; --ink-mute: #7ea4aa;
        --line: #24343c;
        --accent: #00e5cc;   --accent-strong: #5ff2e2;
        --accent-hover: #2eeed8; --on-accent: #002a24;
        --info: #ff4fa0;     --info-strong: #ff7fba;
        --q-bg: #101a24;
        --a-bg: #0f211d;     --a-border: #0a8a78;
        --opt-bg: #16212a;   --opt-border: #2c4048;
        --opt-ink: #d8ecef;  --opt-hover-bg: #1b2c36;
        --warn-bg: #262010;  --warn-border: #8a7a20; --warn-ink: #e8d44d;
        --danger: #ff5470;
        --miss-bg: #241218;  --miss-border: #5c2c3c;
        --chip-bg: rgba(9,13,17,.85); --chip-ink: #9cc0c6;
        --panel: #16212a;    --btn-soft: #24343c;
    }


/* Fretboard — Fretsy's identity: deep navy neck, cream-gold accent, indigo
   reveal. Added when Fretsy joined the monorepo; expressed in the shared
   token vocabulary above. */
[data-theme="fretboard"] {
    --page-a: #0e1a2b;   --page-b: #14263a;
    --surface: #16263a;
    --ink: #eaf1f8;      --ink-mid: #a9bccf;
    --ink-dim: #93a7ba;  --ink-soft: #8397a9;
    --ink-faint: #6f869b; --ink-mute: #7d8fa0;
    --line: #274056;
    --accent: #f6c453;   --accent-strong: #e7b23c;
    --accent-hover: #ffd465; --on-accent: #0b1120;
    --info: #6672f0;     --info-strong: #5560e0;
    --q-bg: #16263a;
    --a-bg: #163527;     --a-border: #2f8f5b;
    --opt-bg: #16263a;   --opt-border: #274056;
    --opt-ink: #eaf1f8;  --opt-hover-bg: #1b3049;
    --warn-bg: #33261a;  --warn-border: #eaa46a; --warn-ink: #eaa46a;
    --danger: #ef5a5a;
    --miss-bg: #2a1a1a;  --miss-border: #5b2b2b;
    --chip-bg: rgba(20,38,58,.8); --chip-ink: #a9bccf;
    --panel: #16263a;    --btn-soft: #1b3049;
}

/* Felt — Blackjack's identity: green casino baize, chip-gold accent. Added when
   blackjack became the first app to consume the shared theme picker. */
[data-theme="felt"] {
    --page-a: #12513c;   --page-b: #0a2c22;
    --surface: #10493768; --panel: #10493768;
    --ink: #eaf5ee;      --ink-mid: #cfe3d7;
    --ink-dim: #b6d3c3;  --ink-soft: #9ec4b2;
    --ink-faint: #7fae99; --ink-mute: #8fbaa6;
    --line: #1f5c47;
    --accent: #f5c451;   --accent-strong: #ffd674;
    --accent-hover: #ffd674; --on-accent: #2a2000;
    --info: #6fd0b0;     --info-strong: #9fe3cc;
    --q-bg: #0e3d2e;
    --a-bg: #123f30;     --a-border: #43d17e;
    --opt-bg: #0e3d2e;   --opt-border: #1f5c47;
    --opt-ink: #eaf5ee;  --opt-hover-bg: #14513c;
    --warn-bg: #34301a;  --warn-border: #a98a3a; --warn-ink: #f5c451;
    --danger: #f8746b;
    --miss-bg: #351f1f;  --miss-border: #5c3232;
    --chip-bg: rgba(14,61,46,.8); --chip-ink: #9ec4b2;
    --btn-soft: #14513c;
}

/* Baize — Bridge Quiz's identity: classic card-table green, warm brass accent.
   Added when bridge joined the monorepo; a touch lighter and cooler than
   blackjack's "felt" so the two sibling apps read distinctly. */
[data-theme="baize"] {
    --page-a: #14614a;   --page-b: #0c3d2e;
    --surface: #0f4a3768; --panel: #0f4a3768;
    --ink: #ecf6f0;      --ink-mid: #d0e5d9;
    --ink-dim: #b4d3c5;  --ink-soft: #9cc6b3;
    --ink-faint: #7cae99; --ink-mute: #8dbaa6;
    --line: #226a52;
    --accent: #e7b84e;   --accent-strong: #f6cd6e;
    --accent-hover: #f2c860; --on-accent: #2a2000;
    --info: #6fd0b0;     --info-strong: #9fe3cc;
    --q-bg: #0e4535;
    --a-bg: #124a39;     --a-border: #3fbf7e;
    --opt-bg: #0e4535;   --opt-border: #226a52;
    --opt-ink: #ecf6f0;  --opt-hover-bg: #145a45;
    --warn-bg: #34301a;  --warn-border: #a98a3a; --warn-ink: #e7b84e;
    --danger: #f8746b;
    --miss-bg: #351f1f;  --miss-border: #5c3232;
    --chip-bg: rgba(15,74,55,.8); --chip-ink: #9cc6b3;
    --btn-soft: #145a45;
}

/* Slate — Notary Quiz's identity: deep navy, blue primary. Added when notary
   became a shared-theme consumer. */
[data-theme="slate"] {
    --page-a: #0b1120;   --page-b: #0b1120;
    --surface: #131c31;  --panel: #131c31;
    --ink: #e6edf7;      --ink-mid: #cdd8ea;
    --ink-dim: #aebdd6;  --ink-soft: #93a4c3;
    --ink-faint: #6f819c; --ink-mute: #8091ad;
    --line: #223154;
    --accent: #3b82f6;   --accent-strong: #5a97f8;
    --accent-hover: #2f6fe0; --on-accent: #ffffff;
    --info: #60a5fa;     --info-strong: #93c5fd;
    --q-bg: #0e1626;
    --a-bg: #10241a;     --a-border: #16a34a;
    --opt-bg: #0e1626;   --opt-border: #223154;
    --opt-ink: #e6edf7;  --opt-hover-bg: #14203a;
    --warn-bg: #2c2413;  --warn-border: #8a6a20; --warn-ink: #f0c05c;
    --danger: #dc2626;
    --miss-bg: #2a1717;  --miss-border: #5c2b2b;
    --chip-bg: rgba(14,22,38,.85); --chip-ink: #93a4c3;
    --btn-soft: #14203a;
}

/* ===== Shared page footer (single source for every app) =====================
   The theme picker sits at the bottom of the page, just above the About/Privacy/
   Terms links, centered. Rendered by the shell (footerHTML) and by standalone
   apps via PracticeKit.mountFooter — same markup, same look everywhere. */
.pk-footer { margin: 30px auto 8px; text-align: center; color: var(--ink-faint); font-size: 13px; }
.pk-foot-theme { display: flex; gap: 8px; align-items: center; justify-content: center; margin-bottom: 12px; }
.pk-foot-theme label { color: var(--ink-mid); font-size: 13px; }
.pk-foot-theme select, .pk-theme-home { font: inherit; font-size: 13px; padding: 6px 10px; border-radius: 8px;
    color: var(--ink); background: var(--surface); border: 1px solid var(--line); cursor: pointer; }
.pk-foot-links a { color: var(--ink-soft); text-decoration: none; }
.pk-foot-links a:hover { color: var(--accent-strong, var(--ink)); text-decoration: underline; }
.pk-foot-sep { margin: 0 8px; color: var(--ink-faint); }


/* ── knowitall high-contrast themes (owner 2026-08-20) ─────────────────── */

[data-theme="cloud"] {
    --page-a: #e4e8ef;   --page-b: #d9dfe9;
    --surface: #ffffff;
    --ink: #17202e;      --ink-mid: #535a64;
    --ink-dim: #666c75;  --ink-soft: #787e86;
    --ink-faint: #979ba1; --ink-mute: #868b92;
    --line: #e1e2e4;
    --accent: #2f62a8;   --accent-strong: #285490;
    --accent-hover: #507bb6; --on-accent: #ffffff;
    --info: #5b83e0;     --info-strong: #4d6fbe;
    --q-bg: #ffffff;
    --a-bg: #e6f3ea;     --a-border: #2f8f5b;
    --opt-bg: #ffffff;   --opt-border: #e1e2e4;
    --opt-ink: #17202e;  --opt-hover-bg: #eaebec;
    --warn-bg: #fdf1dd;  --warn-border: #eaa46a; --warn-ink: #eaa46a;
    --danger: #e0503f;
    --miss-bg: #fbe9e6;  --miss-border: #eecac2;
    --chip-bg: color-mix(in srgb, #2f62a8 16%, transparent); --chip-ink: #285490;
    --panel: #ffffff;    --btn-soft: #eaebec;
}

[data-theme="sky"] {
    --page-a: #dcebfb;   --page-b: #cde0f4;
    --surface: #ffffff;
    --ink: #12233a;      --ink-mid: #505c6d;
    --ink-dim: #636e7d;  --ink-soft: #767f8d;
    --ink-faint: #949ca6; --ink-mute: #848d99;
    --line: #e0e2e5;
    --accent: #1a6fb2;   --accent-strong: #165f99;
    --accent-hover: #3f86be; --on-accent: #ffffff;
    --info: #5b83e0;     --info-strong: #4d6fbe;
    --q-bg: #ffffff;
    --a-bg: #e6f3ea;     --a-border: #2f8f5b;
    --opt-bg: #ffffff;   --opt-border: #e0e2e5;
    --opt-ink: #12233a;  --opt-hover-bg: #eaebed;
    --warn-bg: #fdf1dd;  --warn-border: #eaa46a; --warn-ink: #eaa46a;
    --danger: #e0503f;
    --miss-bg: #fbe9e6;  --miss-border: #eecac2;
    --chip-bg: color-mix(in srgb, #1a6fb2 16%, transparent); --chip-ink: #165f99;
    --panel: #ffffff;    --btn-soft: #eaebed;
}

[data-theme="meadow"] {
    --page-a: #dcecdd;   --page-b: #cee5d0;
    --surface: #ffffff;
    --ink: #14301e;      --ink-mid: #516658;
    --ink-dim: #64766a;  --ink-soft: #77877c;
    --ink-faint: #95a29a; --ink-mute: #85938a;
    --line: #e0e4e2;
    --accent: #2e8b57;   --accent-strong: #28784b;
    --accent-hover: #4f9e72; --on-accent: #ffffff;
    --info: #5b83e0;     --info-strong: #4d6fbe;
    --q-bg: #ffffff;
    --a-bg: #e6f3ea;     --a-border: #2f8f5b;
    --opt-bg: #ffffff;   --opt-border: #e0e4e2;
    --opt-ink: #14301e;  --opt-hover-bg: #eaeceb;
    --warn-bg: #fdf1dd;  --warn-border: #eaa46a; --warn-ink: #eaa46a;
    --danger: #e0503f;
    --miss-bg: #fbe9e6;  --miss-border: #eecac2;
    --chip-bg: color-mix(in srgb, #2e8b57 16%, transparent); --chip-ink: #28784b;
    --panel: #ffffff;    --btn-soft: #eaeceb;
}

[data-theme="onyx"] {
    --page-a: #0a0c10;   --page-b: #0f131a;
    --surface: #242935;
    --ink: #f2f4f8;      --ink-mid: #bcbfc5;
    --ink-dim: #acafb6;  --ink-soft: #9b9fa6;
    --ink-faint: #81848d; --ink-mute: #8f939a;
    --line: #4d525c;
    --accent: #4a9eff;   --accent-strong: #4088db;
    --accent-hover: #67aeff; --on-accent: #06101c;
    --info: #5b83e0;     --info-strong: #4d6fbe;
    --q-bg: #242935;
    --a-bg: #274640;     --a-border: #2f8f5b;
    --opt-bg: #242935;   --opt-border: #4d525c;
    --opt-ink: #f2f4f8;  --opt-hover-bg: #373b47;
    --warn-bg: #40362a;  --warn-border: #eaa46a; --warn-ink: #eaa46a;
    --danger: #e07a6f;
    --miss-bg: #482a31;  --miss-border: #592a2f;
    --chip-bg: color-mix(in srgb, #4a9eff 16%, transparent); --chip-ink: #4088db;
    --panel: #242935;    --btn-soft: #373b47;
}

[data-theme="cobalt"] {
    --page-a: #08101f;   --page-b: #0d1830;
    --surface: #1e2d4e;
    --ink: #eef3fb;      --ink-mid: #b8c0ce;
    --ink-dim: #a7b0c0;  --ink-soft: #97a0b2;
    --ink-faint: #7c869c; --ink-mute: #8a94a8;
    --line: #485571;
    --accent: #f6c453;   --accent-strong: #d4a947;
    --accent-hover: #f7cd6f; --on-accent: #17120a;
    --info: #5b83e0;     --info-strong: #4d6fbe;
    --q-bg: #1e2d4e;
    --a-bg: #234852;     --a-border: #2f8f5b;
    --opt-bg: #1e2d4e;   --opt-border: #485571;
    --opt-ink: #eef3fb;  --opt-hover-bg: #313f5e;
    --warn-bg: #3c3939;  --warn-border: #eaa46a; --warn-ink: #eaa46a;
    --danger: #e07a6f;
    --miss-bg: #452c3f;  --miss-border: #572c38;
    --chip-bg: color-mix(in srgb, #f6c453 16%, transparent); --chip-ink: #d4a947;
    --panel: #1e2d4e;    --btn-soft: #313f5e;
}

[data-theme="emerald"] {
    --page-a: #071710;   --page-b: #0b2016;
    --surface: #173f2a;
    --ink: #eaf6ee;      --ink-mid: #b3c6bb;
    --ink-dim: #a2b8ab;  --ink-soft: #91a99c;
    --ink-faint: #769182; --ink-mute: #859e90;
    --line: #416451;
    --accent: #35d17f;   --accent-strong: #2eb46d;
    --accent-hover: #55d893; --on-accent: #04200f;
    --info: #5b83e0;     --info-strong: #4d6fbe;
    --q-bg: #173f2a;
    --a-bg: #1e5538;     --a-border: #2f8f5b;
    --opt-bg: #173f2a;   --opt-border: #416451;
    --opt-ink: #eaf6ee;  --opt-hover-bg: #2a4f3c;
    --warn-bg: #384324;  --warn-border: #eaa46a; --warn-ink: #eaa46a;
    --danger: #e07a6f;
    --miss-bg: #41372a;  --miss-border: #54332b;
    --chip-bg: color-mix(in srgb, #35d17f 16%, transparent); --chip-ink: #2eb46d;
    --panel: #173f2a;    --btn-soft: #2a4f3c;
}

[data-theme="merlot"] {
    --page-a: #160a10;   --page-b: #1e0e16;
    --surface: #38202c;
    --ink: #f7eaef;      --ink-mid: #c5b5bc;
    --ink-dim: #b6a5ad;  --ink-soft: #a7959d;
    --ink-faint: #8e7b84; --ink-mute: #9b8991;
    --line: #5e4853;
    --accent: #e5628a;   --accent-strong: #c55477;
    --accent-hover: #e97b9d; --on-accent: #1c0a10;
    --info: #5b83e0;     --info-strong: #4d6fbe;
    --q-bg: #38202c;
    --a-bg: #353f39;     --a-border: #2f8f5b;
    --opt-bg: #38202c;   --opt-border: #5e4853;
    --opt-ink: #f7eaef;  --opt-hover-bg: #49323e;
    --warn-bg: #4c3125;  --warn-border: #eaa46a; --warn-ink: #eaa46a;
    --danger: #e07a6f;
    --miss-bg: #54252c;  --miss-border: #61272b;
    --chip-bg: color-mix(in srgb, #e5628a 16%, transparent); --chip-ink: #c55477;
    --panel: #38202c;    --btn-soft: #49323e;
}
