/* =============================================================================
   themes.css — GENERATED from the studio's own artwork pack. Do not hand-edit.
   Rebuild with: node scratchpad/themegen.mjs
   -----------------------------------------------------------------------------
   A theme is selected by one attribute on <html>: data-theme="christmas". PHP
   decides that word and nothing else, so there is still no CSS anywhere in this
   app generated from stored data.

   THE MODEL IS A WALLPAPER AND PANELS. The seamless tile is the page ground,
   fixed and repeating; cards, dialogs and rails are opaque panels floating on
   it. Content is always on a panel, never directly on the pattern — which is
   what keeps text readable over a busy ground, and is also what lets a dark
   wallpaper ship without touching the ~145 literal hex values in app.css that
   assume a light card.

   Every colour here is SAMPLED from the wallpaper it belongs to (see
   assets.mjs) and then pushed until it clears its contrast target, so a theme
   cannot be both on-brand and unreadable. The numbers are asserted in
   tools/tests/themes.php.

   Nothing in this file may set layout, position, display, spacing or the
   safe-area insets. A theme is colour and texture.
   ============================================================================= */


/* ---------- classic ---------- */
[data-theme="classic"] {
  --wallpaper: url("../themes/classic-bg.png");
  --wallpaper-size: 320px;
  --theme-art: url("../themes/classic-art.webp");
  --canvas: #f1e6d9;
  --canvas-tint: #f3e9de;
  --surface: #ffffff;
  --surface-2: #fafaf8;
  --surface-3: #fcfcfb;
  --mix-base: #ffffff;
  --ink: #17181a;
  --ink-soft: #2a2c2f;
  --muted: #5f6469;
  --muted-2: #5f6469;
  --line: #e4e1dc;
  --line-strong: #d2cec7;
  --neutral-bg: #efede9;
  --accent: #7a7167;
  --accent-dark: #655e56;
  --link: #7a7167;
  --btn-primary-bg: #7a7167;
  --btn-primary-ink: #ffffff;
  --sidebar-bg: #2f2213;
  --sidebar-ink: #fdfcfa;
  --sidebar-muted: #a09a92;
  --header-ink: #17181a;
  --header-ink-soft: #646464;
  --header-btn-bg: rgba(0,0,0,.07);
  --header-btn-line: rgba(0,0,0,.14);
  --header-btn-ink: #17181a;
  --header-slab: rgba(255,255,255,.66);
  --header-slab-line: #e5d9cb;
  --header-wash: none;
  --atmosphere: none;
  --motif: none;
  --motif-opacity: 0;
  --header-motif-opacity: 0;
  --card-accent: linear-gradient(90deg, #7a7167, transparent 72%);
  --card-accent-h: 2px;
  --shadow-on-paper: 0;
  --elev-1: 0 1px 2px rgba(28,24,18,.07), 0 2px 8px -2px rgba(28,24,18,.10);
  --elev-2: 0 2px 6px rgba(28,24,18,.08), 0 14px 32px -10px rgba(28,24,18,.20);
  --elev-3: 0 4px 12px rgba(28,24,18,.10), 0 30px 60px -18px rgba(28,24,18,.32);
}

/* ---------- christmas  (dark paper) ---------- */
[data-theme="christmas"] {
  --wallpaper: url("../themes/christmas-bg.png");
  --wallpaper-size: 300px;
  --theme-art: url("../themes/christmas-art.webp");
  --canvas: #517958;
  --canvas-tint: #476a4d;
  --surface: #ffffff;
  --surface-2: #fafaf8;
  --surface-3: #fcfcfb;
  --mix-base: #ffffff;
  --ink: #17181a;
  --ink-soft: #2a2c2f;
  --muted: #5f6469;
  --muted-2: #5f6469;
  --line: #e4e1dc;
  --line-strong: #d2cec7;
  --neutral-bg: #efede9;
  --accent: #35593f;
  --accent-dark: #35593f;
  --link: #35593f;
  --btn-primary-bg: #35593f;
  --btn-primary-ink: #ffffff;
  --sidebar-bg: #1f2e21;
  --sidebar-ink: #e7ece8;
  --sidebar-muted: #8d978e;
  --header-ink: #ffffff;
  --header-ink-soft: #c4cac5;
  --header-btn-bg: rgba(255,255,255,.14);
  --header-btn-line: rgba(255,255,255,.24);
  --header-btn-ink: #ffffff;
  --header-slab: rgba(0,0,0,.42);
  --header-slab-line: #709176;
  --header-wash: none;
  --atmosphere: none;
  --motif: none;
  --motif-opacity: 0;
  --header-motif-opacity: 0;
  --card-accent: linear-gradient(90deg, #35593f, transparent 72%);
  --card-accent-h: 2px;
  --shadow-on-paper: 1;
  --elev-1: 0 1px 2px rgba(0,0,0,.20), 0 2px 8px -2px rgba(0,0,0,.24);
  --elev-2: 0 2px 6px rgba(0,0,0,.24), 0 14px 32px -10px rgba(0,0,0,.42);
  --elev-3: 0 4px 12px rgba(0,0,0,.32), 0 30px 60px -18px rgba(0,0,0,.58);
}

/* ---------- newyear  (dark paper) ---------- */
[data-theme="newyear"] {
  --wallpaper: url("../themes/newyear-bg.png");
  --wallpaper-size: 300px;
  --theme-art: url("../themes/newyear-art.webp");
  --canvas: #0b295d;
  --canvas-tint: #0a2452;
  --surface: #ffffff;
  --surface-2: #fafaf8;
  --surface-3: #fcfcfb;
  --mix-base: #ffffff;
  --ink: #17181a;
  --ink-soft: #2a2c2f;
  --muted: #5f6469;
  --muted-2: #5f6469;
  --line: #e4e1dc;
  --line-strong: #d2cec7;
  --neutral-bg: #efede9;
  --accent: #274988;
  --accent-dark: #274988;
  --link: #274988;
  --btn-primary-bg: #274988;
  --btn-primary-ink: #ffffff;
  --sidebar-bg: #162236;
  --sidebar-ink: #dde1e8;
  --sidebar-muted: #838b98;
  --header-ink: #ffffff;
  --header-ink-soft: #b9bec6;
  --header-btn-bg: rgba(255,255,255,.14);
  --header-btn-line: rgba(255,255,255,.24);
  --header-btn-ink: #ffffff;
  --header-slab: rgba(0,0,0,.42);
  --header-slab-line: #37507a;
  --header-wash: none;
  --atmosphere: none;
  --motif: none;
  --motif-opacity: 0;
  --header-motif-opacity: 0;
  --card-accent: linear-gradient(90deg, #274988, transparent 72%);
  --card-accent-h: 2px;
  --shadow-on-paper: 1;
  --elev-1: 0 1px 2px rgba(0,0,0,.20), 0 2px 8px -2px rgba(0,0,0,.24);
  --elev-2: 0 2px 6px rgba(0,0,0,.24), 0 14px 32px -10px rgba(0,0,0,.42);
  --elev-3: 0 4px 12px rgba(0,0,0,.32), 0 30px 60px -18px rgba(0,0,0,.58);
}

/* ---------- halloween  (dark paper) ---------- */
[data-theme="halloween"] {
  --wallpaper: url("../themes/halloween-bg.png");
  --wallpaper-size: 300px;
  --theme-art: url("../themes/halloween-art.webp");
  --canvas: #433449;
  --canvas-tint: #3b2e40;
  --surface: #ffffff;
  --surface-2: #fafaf8;
  --surface-3: #fcfcfb;
  --mix-base: #ffffff;
  --ink: #17181a;
  --ink-soft: #2a2c2f;
  --muted: #5f6469;
  --muted-2: #5f6469;
  --line: #e4e1dc;
  --line-strong: #d2cec7;
  --neutral-bg: #efede9;
  --accent: #64516a;
  --accent-dark: #64516a;
  --link: #64516a;
  --btn-primary-bg: #64516a;
  --btn-primary-ink: #ffffff;
  --sidebar-bg: #29202d;
  --sidebar-ink: #e5e3e6;
  --sidebar-muted: #908b92;
  --header-ink: #ffffff;
  --header-ink-soft: #c2bfc3;
  --header-btn-bg: rgba(255,255,255,.14);
  --header-btn-line: rgba(255,255,255,.24);
  --header-btn-ink: #ffffff;
  --header-slab: rgba(0,0,0,.42);
  --header-slab-line: #65596a;
  --header-wash: none;
  --atmosphere: none;
  --motif: none;
  --motif-opacity: 0;
  --header-motif-opacity: 0;
  --card-accent: linear-gradient(90deg, #64516a, transparent 72%);
  --card-accent-h: 2px;
  --shadow-on-paper: 1;
  --elev-1: 0 1px 2px rgba(0,0,0,.20), 0 2px 8px -2px rgba(0,0,0,.24);
  --elev-2: 0 2px 6px rgba(0,0,0,.24), 0 14px 32px -10px rgba(0,0,0,.42);
  --elev-3: 0 4px 12px rgba(0,0,0,.32), 0 30px 60px -18px rgba(0,0,0,.58);
}

/* ---------- valentines ---------- */
[data-theme="valentines"] {
  --wallpaper: url("../themes/valentines-bg.png");
  --wallpaper-size: 320px;
  --theme-art: url("../themes/valentines-art.webp");
  --canvas: #fddede;
  --canvas-tint: #fde2e2;
  --surface: #ffffff;
  --surface-2: #fafaf8;
  --surface-3: #fcfcfb;
  --mix-base: #ffffff;
  --ink: #17181a;
  --ink-soft: #2a2c2f;
  --muted: #5f6469;
  --muted-2: #5f6469;
  --line: #e4e1dc;
  --line-strong: #d2cec7;
  --neutral-bg: #efede9;
  --accent: #8a6668;
  --accent-dark: #725557;
  --link: #8a6668;
  --btn-primary-bg: #8a6668;
  --btn-primary-ink: #ffffff;
  --sidebar-bg: #2f1313;
  --sidebar-ink: #fffafa;
  --sidebar-muted: #a19292;
  --header-ink: #17181a;
  --header-ink-soft: #666364;
  --header-btn-bg: rgba(0,0,0,.07);
  --header-btn-line: rgba(0,0,0,.14);
  --header-btn-ink: #17181a;
  --header-slab: rgba(255,255,255,.66);
  --header-slab-line: #f5cecf;
  --header-wash: none;
  --atmosphere: none;
  --motif: none;
  --motif-opacity: 0;
  --header-motif-opacity: 0;
  --card-accent: linear-gradient(90deg, #8a6668, transparent 72%);
  --card-accent-h: 2px;
  --shadow-on-paper: 0;
  --elev-1: 0 1px 2px rgba(28,24,18,.07), 0 2px 8px -2px rgba(28,24,18,.10);
  --elev-2: 0 2px 6px rgba(28,24,18,.08), 0 14px 32px -10px rgba(28,24,18,.20);
  --elev-3: 0 4px 12px rgba(28,24,18,.10), 0 30px 60px -18px rgba(28,24,18,.32);
}

/* ---------- spring ---------- */
[data-theme="spring"] {
  --wallpaper: url("../themes/spring-bg.png");
  --wallpaper-size: 320px;
  --theme-art: url("../themes/spring-art.webp");
  --canvas: #cde2bf;
  --canvas-tint: #d3e5c7;
  --surface: #ffffff;
  --surface-2: #fafaf8;
  --surface-3: #fcfcfb;
  --mix-base: #ffffff;
  --ink: #17181a;
  --ink-soft: #2a2c2f;
  --muted: #5f6469;
  --muted-2: #5f6469;
  --line: #e4e1dc;
  --line-strong: #d2cec7;
  --neutral-bg: #efede9;
  --accent: #64775a;
  --accent-dark: #53634b;
  --link: #64775a;
  --btn-primary-bg: #64775a;
  --btn-primary-ink: #ffffff;
  --sidebar-bg: #1f2e15;
  --sidebar-ink: #f8fbf6;
  --sidebar-muted: #969f91;
  --header-ink: #17181a;
  --header-ink-soft: #616461;
  --header-btn-bg: rgba(0,0,0,.07);
  --header-btn-line: rgba(0,0,0,.14);
  --header-btn-ink: #17181a;
  --header-slab: rgba(255,255,255,.66);
  --header-slab-line: #bed5af;
  --header-wash: none;
  --atmosphere: none;
  --motif: none;
  --motif-opacity: 0;
  --header-motif-opacity: 0;
  --card-accent: linear-gradient(90deg, #64775a, transparent 72%);
  --card-accent-h: 2px;
  --shadow-on-paper: 0;
  --elev-1: 0 1px 2px rgba(28,24,18,.07), 0 2px 8px -2px rgba(28,24,18,.10);
  --elev-2: 0 2px 6px rgba(28,24,18,.08), 0 14px 32px -10px rgba(28,24,18,.20);
  --elev-3: 0 4px 12px rgba(28,24,18,.10), 0 30px 60px -18px rgba(28,24,18,.32);
}

/* ---------- summer ---------- */
[data-theme="summer"] {
  --wallpaper: url("../themes/summer-bg.png");
  --wallpaper-size: 320px;
  --theme-art: url("../themes/summer-art.webp");
  --canvas: #7ae1fd;
  --canvas-tint: #8ae5fd;
  --surface: #ffffff;
  --surface-2: #fafaf8;
  --surface-3: #fcfcfb;
  --mix-base: #ffffff;
  --ink: #17181a;
  --ink-soft: #2a2c2f;
  --muted: #5f6469;
  --muted-2: #5f6469;
  --line: #e4e1dc;
  --line-strong: #d2cec7;
  --neutral-bg: #efede9;
  --accent: #2c7d94;
  --accent-dark: #25687b;
  --link: #2c7d94;
  --btn-primary-bg: #2c7d94;
  --btn-primary-ink: #ffffff;
  --sidebar-bg: #13292f;
  --sidebar-ink: #ecfbff;
  --sidebar-muted: #8b9ca1;
  --header-ink: #17181a;
  --header-ink-soft: #586368;
  --header-btn-bg: rgba(0,0,0,.07);
  --header-btn-line: rgba(0,0,0,.14);
  --header-btn-ink: #17181a;
  --header-slab: rgba(255,255,255,.66);
  --header-slab-line: #69d4f2;
  --header-wash: none;
  --atmosphere: none;
  --motif: none;
  --motif-opacity: 0;
  --header-motif-opacity: 0;
  --card-accent: linear-gradient(90deg, #2c7d94, transparent 72%);
  --card-accent-h: 2px;
  --shadow-on-paper: 0;
  --elev-1: 0 1px 2px rgba(28,24,18,.07), 0 2px 8px -2px rgba(28,24,18,.10);
  --elev-2: 0 2px 6px rgba(28,24,18,.08), 0 14px 32px -10px rgba(28,24,18,.20);
  --elev-3: 0 4px 12px rgba(28,24,18,.10), 0 30px 60px -18px rgba(28,24,18,.32);
}

/* ---------- autumn  (dark paper) ---------- */
[data-theme="autumn"] {
  --wallpaper: url("../themes/autumn-bg.png");
  --wallpaper-size: 300px;
  --theme-art: url("../themes/autumn-art.webp");
  --canvas: #b46b46;
  --canvas-tint: #9e5e3e;
  --surface: #ffffff;
  --surface-2: #fafaf8;
  --surface-3: #fcfcfb;
  --mix-base: #ffffff;
  --ink: #17181a;
  --ink-soft: #2a2c2f;
  --muted: #5f6469;
  --muted-2: #5f6469;
  --line: #e4e1dc;
  --line-strong: #d2cec7;
  --neutral-bg: #efede9;
  --accent: #8c4d2e;
  --accent-dark: #8c4d2e;
  --link: #8c4d2e;
  --btn-primary-bg: #8c4d2e;
  --btn-primary-ink: #ffffff;
  --sidebar-bg: #362116;
  --sidebar-ink: #f5eae5;
  --sidebar-muted: #9f9088;
  --header-ink: #ffffff;
  --header-ink-soft: #d3c8c2;
  --header-btn-bg: rgba(255,255,255,.14);
  --header-btn-line: rgba(255,255,255,.24);
  --header-btn-ink: #ffffff;
  --header-slab: rgba(0,0,0,.42);
  --header-slab-line: #c28667;
  --header-wash: none;
  --atmosphere: none;
  --motif: none;
  --motif-opacity: 0;
  --header-motif-opacity: 0;
  --card-accent: linear-gradient(90deg, #8c4d2e, transparent 72%);
  --card-accent-h: 2px;
  --shadow-on-paper: 1;
  --elev-1: 0 1px 2px rgba(0,0,0,.20), 0 2px 8px -2px rgba(0,0,0,.24);
  --elev-2: 0 2px 6px rgba(0,0,0,.24), 0 14px 32px -10px rgba(0,0,0,.42);
  --elev-3: 0 4px 12px rgba(0,0,0,.32), 0 30px 60px -18px rgba(0,0,0,.58);
}

/* ---------- winter  (dark paper) ---------- */
[data-theme="winter"] {
  --wallpaper: url("../themes/winter-bg.png");
  --wallpaper-size: 300px;
  --theme-art: url("../themes/winter-art.webp");
  --canvas: #2b4359;
  --canvas-tint: #263b4e;
  --surface: #ffffff;
  --surface-2: #fafaf8;
  --surface-3: #fcfcfb;
  --mix-base: #ffffff;
  --ink: #17181a;
  --ink-soft: #2a2c2f;
  --muted: #5f6469;
  --muted-2: #5f6469;
  --line: #e4e1dc;
  --line-strong: #d2cec7;
  --neutral-bg: #efede9;
  --accent: #49617a;
  --accent-dark: #49617a;
  --link: #49617a;
  --btn-primary-bg: #49617a;
  --btn-primary-ink: #ffffff;
  --sidebar-bg: #192734;
  --sidebar-ink: #e1e5e8;
  --sidebar-muted: #878f97;
  --header-ink: #ffffff;
  --header-ink-soft: #bec2c5;
  --header-btn-bg: rgba(255,255,255,.14);
  --header-btn-line: rgba(255,255,255,.24);
  --header-btn-ink: #ffffff;
  --header-slab: rgba(0,0,0,.42);
  --header-slab-line: #516577;
  --header-wash: none;
  --atmosphere: none;
  --motif: none;
  --motif-opacity: 0;
  --header-motif-opacity: 0;
  --card-accent: linear-gradient(90deg, #49617a, transparent 72%);
  --card-accent-h: 2px;
  --shadow-on-paper: 1;
  --elev-1: 0 1px 2px rgba(0,0,0,.20), 0 2px 8px -2px rgba(0,0,0,.24);
  --elev-2: 0 2px 6px rgba(0,0,0,.24), 0 14px 32px -10px rgba(0,0,0,.42);
  --elev-3: 0 4px 12px rgba(0,0,0,.32), 0 30px 60px -18px rgba(0,0,0,.58);
}

/* ---------- ink ---------- */
[data-theme="ink"] {
  --wallpaper: url("../themes/ink-bg.png");
  --wallpaper-size: 320px;
  --theme-art: url("../themes/ink-art.webp");
  --canvas: #e3dfdb;
  --canvas-tint: #e6e3df;
  --surface: #ffffff;
  --surface-2: #fafaf8;
  --surface-3: #fcfcfb;
  --mix-base: #ffffff;
  --ink: #17181a;
  --ink-soft: #2a2c2f;
  --muted: #5f6469;
  --muted-2: #5f6469;
  --line: #e4e1dc;
  --line-strong: #d2cec7;
  --neutral-bg: #efede9;
  --accent: #757370;
  --accent-dark: #615f5d;
  --link: #757370;
  --btn-primary-bg: #757370;
  --btn-primary-ink: #ffffff;
  --sidebar-bg: #26211c;
  --sidebar-ink: #fbfbfa;
  --sidebar-muted: #9b9996;
  --header-ink: #17181a;
  --header-ink-soft: #636364;
  --header-btn-bg: rgba(0,0,0,.07);
  --header-btn-line: rgba(0,0,0,.14);
  --header-btn-ink: #17181a;
  --header-slab: rgba(255,255,255,.66);
  --header-slab-line: #d5d1cd;
  --header-wash: none;
  --atmosphere: none;
  --motif: none;
  --motif-opacity: 0;
  --header-motif-opacity: 0;
  --card-accent: linear-gradient(90deg, #757370, transparent 72%);
  --card-accent-h: 2px;
  --shadow-on-paper: 0;
  --elev-1: 0 1px 2px rgba(28,24,18,.07), 0 2px 8px -2px rgba(28,24,18,.10);
  --elev-2: 0 2px 6px rgba(28,24,18,.08), 0 14px 32px -10px rgba(28,24,18,.20);
  --elev-3: 0 4px 12px rgba(28,24,18,.10), 0 30px 60px -18px rgba(28,24,18,.32);
}

/* ---------- ocean  (dark paper) ---------- */
[data-theme="ocean"] {
  --wallpaper: url("../themes/ocean-bg.png");
  --wallpaper-size: 300px;
  --theme-art: url("../themes/ocean-art.webp");
  --canvas: #024555;
  --canvas-tint: #023d4b;
  --surface: #ffffff;
  --surface-2: #fafaf8;
  --surface-3: #fcfcfb;
  --mix-base: #ffffff;
  --ink: #17181a;
  --ink-soft: #2a2c2f;
  --muted: #5f6469;
  --muted-2: #5f6469;
  --line: #e4e1dc;
  --line-strong: #d2cec7;
  --neutral-bg: #efede9;
  --accent: #1d6675;
  --accent-dark: #1d6675;
  --link: #1d6675;
  --btn-primary-bg: #1d6675;
  --btn-primary-ink: #ffffff;
  --sidebar-bg: #163036;
  --sidebar-ink: #dce5e7;
  --sidebar-muted: #8a9a9e;
  --header-ink: #ffffff;
  --header-ink-soft: #b8c2c4;
  --header-btn-bg: rgba(255,255,255,.14);
  --header-btn-line: rgba(255,255,255,.24);
  --header-btn-ink: #ffffff;
  --header-slab: rgba(0,0,0,.42);
  --header-slab-line: #306674;
  --header-wash: none;
  --atmosphere: none;
  --motif: none;
  --motif-opacity: 0;
  --header-motif-opacity: 0;
  --card-accent: linear-gradient(90deg, #1d6675, transparent 72%);
  --card-accent-h: 2px;
  --shadow-on-paper: 1;
  --elev-1: 0 1px 2px rgba(0,0,0,.20), 0 2px 8px -2px rgba(0,0,0,.24);
  --elev-2: 0 2px 6px rgba(0,0,0,.24), 0 14px 32px -10px rgba(0,0,0,.42);
  --elev-3: 0 4px 12px rgba(0,0,0,.32), 0 30px 60px -18px rgba(0,0,0,.58);
}

/* ---------- forest  (dark paper) ---------- */
[data-theme="forest"] {
  --wallpaper: url("../themes/forest-bg.png");
  --wallpaper-size: 300px;
  --theme-art: url("../themes/forest-art.webp");
  --canvas: #293e29;
  --canvas-tint: #243724;
  --surface: #ffffff;
  --surface-2: #fafaf8;
  --surface-3: #fcfcfb;
  --mix-base: #ffffff;
  --ink: #17181a;
  --ink-soft: #2a2c2f;
  --muted: #5f6469;
  --muted-2: #5f6469;
  --line: #e4e1dc;
  --line-strong: #d2cec7;
  --neutral-bg: #efede9;
  --accent: #485d44;
  --accent-dark: #485d44;
  --link: #485d44;
  --btn-primary-bg: #485d44;
  --btn-primary-ink: #ffffff;
  --sidebar-bg: #1e2e1e;
  --sidebar-ink: #e1e4e1;
  --sidebar-muted: #919991;
  --header-ink: #ffffff;
  --header-ink-soft: #bec1be;
  --header-btn-bg: rgba(255,255,255,.14);
  --header-btn-line: rgba(255,255,255,.24);
  --header-btn-ink: #ffffff;
  --header-slab: rgba(0,0,0,.42);
  --header-slab-line: #506150;
  --header-wash: none;
  --atmosphere: none;
  --motif: none;
  --motif-opacity: 0;
  --header-motif-opacity: 0;
  --card-accent: linear-gradient(90deg, #485d44, transparent 72%);
  --card-accent-h: 2px;
  --shadow-on-paper: 1;
  --elev-1: 0 1px 2px rgba(0,0,0,.20), 0 2px 8px -2px rgba(0,0,0,.24);
  --elev-2: 0 2px 6px rgba(0,0,0,.24), 0 14px 32px -10px rgba(0,0,0,.42);
  --elev-3: 0 4px 12px rgba(0,0,0,.32), 0 30px 60px -18px rgba(0,0,0,.58);
}

/* ---------- sand ---------- */
[data-theme="sand"] {
  --wallpaper: url("../themes/sand-bg.png");
  --wallpaper-size: 320px;
  --theme-art: url("../themes/sand-art.webp");
  --canvas: #f4e5d3;
  --canvas-tint: #f5e8d8;
  --surface: #ffffff;
  --surface-2: #fafaf8;
  --surface-3: #fcfcfb;
  --mix-base: #ffffff;
  --ink: #17181a;
  --ink-soft: #2a2c2f;
  --muted: #5f6469;
  --muted-2: #5f6469;
  --line: #e4e1dc;
  --line-strong: #d2cec7;
  --neutral-bg: #efede9;
  --accent: #796c5f;
  --accent-dark: #645a4f;
  --link: #796c5f;
  --btn-primary-bg: #796c5f;
  --btn-primary-ink: #ffffff;
  --sidebar-bg: #2f2213;
  --sidebar-ink: #fdfbf9;
  --sidebar-muted: #a19a92;
  --header-ink: #17181a;
  --header-ink-soft: #656463;
  --header-btn-bg: rgba(0,0,0,.07);
  --header-btn-line: rgba(0,0,0,.14);
  --header-btn-ink: #17181a;
  --header-slab: rgba(255,255,255,.66);
  --header-slab-line: #ead9c5;
  --header-wash: none;
  --atmosphere: none;
  --motif: none;
  --motif-opacity: 0;
  --header-motif-opacity: 0;
  --card-accent: linear-gradient(90deg, #796c5f, transparent 72%);
  --card-accent-h: 2px;
  --shadow-on-paper: 0;
  --elev-1: 0 1px 2px rgba(28,24,18,.07), 0 2px 8px -2px rgba(28,24,18,.10);
  --elev-2: 0 2px 6px rgba(28,24,18,.08), 0 14px 32px -10px rgba(28,24,18,.20);
  --elev-3: 0 4px 12px rgba(28,24,18,.10), 0 30px 60px -18px rgba(28,24,18,.32);
}

/* ---------- plum  (dark paper) ---------- */
[data-theme="plum"] {
  --wallpaper: url("../themes/plum-bg.png");
  --wallpaper-size: 300px;
  --theme-art: url("../themes/plum-art.webp");
  --canvas: #512642;
  --canvas-tint: #47213a;
  --surface: #ffffff;
  --surface-2: #fafaf8;
  --surface-3: #fcfcfb;
  --mix-base: #ffffff;
  --ink: #17181a;
  --ink-soft: #2a2c2f;
  --muted: #5f6469;
  --muted-2: #5f6469;
  --line: #e4e1dc;
  --line-strong: #d2cec7;
  --neutral-bg: #efede9;
  --accent: #754363;
  --accent-dark: #754363;
  --link: #754363;
  --btn-primary-bg: #754363;
  --btn-primary-ink: #ffffff;
  --sidebar-bg: #34182a;
  --sidebar-ink: #e7e1e5;
  --sidebar-muted: #968791;
  --header-ink: #ffffff;
  --header-ink-soft: #c4bdc2;
  --header-btn-bg: rgba(255,255,255,.14);
  --header-btn-line: rgba(255,255,255,.24);
  --header-btn-ink: #ffffff;
  --header-slab: rgba(0,0,0,.42);
  --header-slab-line: #704d64;
  --header-wash: none;
  --atmosphere: none;
  --motif: none;
  --motif-opacity: 0;
  --header-motif-opacity: 0;
  --card-accent: linear-gradient(90deg, #754363, transparent 72%);
  --card-accent-h: 2px;
  --shadow-on-paper: 1;
  --elev-1: 0 1px 2px rgba(0,0,0,.20), 0 2px 8px -2px rgba(0,0,0,.24);
  --elev-2: 0 2px 6px rgba(0,0,0,.24), 0 14px 32px -10px rgba(0,0,0,.42);
  --elev-3: 0 4px 12px rgba(0,0,0,.32), 0 30px 60px -18px rgba(0,0,0,.58);
}

/* ---------- rose ---------- */
[data-theme="rose"] {
  --wallpaper: url("../themes/rose-bg.png");
  --wallpaper-size: 320px;
  --theme-art: url("../themes/rose-art.webp");
  --canvas: #ecb9b7;
  --canvas-tint: #eec1c0;
  --surface: #ffffff;
  --surface-2: #fafaf8;
  --surface-3: #fcfcfb;
  --mix-base: #ffffff;
  --ink: #17181a;
  --ink-soft: #2a2c2f;
  --muted: #5f6469;
  --muted-2: #5f6469;
  --line: #e4e1dc;
  --line-strong: #d2cec7;
  --neutral-bg: #efede9;
  --accent: #926767;
  --accent-dark: #795656;
  --link: #926767;
  --btn-primary-bg: #926767;
  --btn-primary-ink: #ffffff;
  --sidebar-bg: #2f1413;
  --sidebar-ink: #fcf5f5;
  --sidebar-muted: #a0908f;
  --header-ink: #17181a;
  --header-ink-soft: #645f61;
  --header-btn-bg: rgba(0,0,0,.07);
  --header-btn-line: rgba(0,0,0,.14);
  --header-btn-ink: #17181a;
  --header-slab: rgba(255,255,255,.66);
  --header-slab-line: #e1acaa;
  --header-wash: none;
  --atmosphere: none;
  --motif: none;
  --motif-opacity: 0;
  --header-motif-opacity: 0;
  --card-accent: linear-gradient(90deg, #926767, transparent 72%);
  --card-accent-h: 2px;
  --shadow-on-paper: 0;
  --elev-1: 0 1px 2px rgba(28,24,18,.07), 0 2px 8px -2px rgba(28,24,18,.10);
  --elev-2: 0 2px 6px rgba(28,24,18,.08), 0 14px 32px -10px rgba(28,24,18,.20);
  --elev-3: 0 4px 12px rgba(28,24,18,.10), 0 30px 60px -18px rgba(28,24,18,.32);
}
