/* ============================================================================
   DAILY MENU v2 — SKIN TOKENS (the color layer)
   Companion to ./tokens.css (structural tokens) and docs/DESIGN.md §1/§9.4
   ("SKIN token contract"). A **skin** is a named palette — surfaces, ink
   tiers, the person A/B "two light sources" hues + their derived tints/rails,
   the now-ember/semantic accents, and elevation-shadow tint — selected with
   `[data-skin="<name>"]` on <html>, composed WITH the existing dark/light
   `[data-theme]` attribute (skin picks the palette, theme picks the variant).
   No JS color math anywhere: every value below is a literal, hand-tuned
   custom property. Component CSS must never hardcode a color — reference one
   of the tokens documented here.

   ----------------------------------------------------------------------------
   THE CONTRACT — every skin block below (and any new one) must define ALL of:

     Surfaces (elevation ramp, warm-neutral):
       --bg --frame --surface --row-empty --row --chip --sheet --overlay

     Ink (text tiers, never pure black/white):
       --ink --ink-dim --ink-faint --ink-ghost --line --line-strong

     The "now" ember (belongs to neither person; DESIGN §0/§2):
       --now --now-glow --now-wash

     Semantic accents:
       --over --due --ok --busy-hatch

     Person A / person B — the "two light sources" (DESIGN §1.2). Each is a
     hue trio (core / tint / tint-hi / glow) plus an ink-on-tint:
       --pA --pA-tint --pA-tint-hi --pA-glow --pA-ink
       --pB --pB-tint --pB-tint-hi --pB-glow --pB-ink

     Elevation shadows (color-tinted, so they belong here not in tokens.css):
       --elev-sheet --elev-ghost

   Each skin defines the block twice: once under `[data-skin="<name>"]` (dark
   — the default variant, always present and self-sufficient) and once under
   `[data-skin="<name>"][data-theme="light"]` (the light variant, layered on
   top of the household's existing light-theme switch). A skin is incomplete
   without both variants.

   HOW TO ADD A 4TH SKIN
     1. Pick a name (lowercase, e.g. "forest").
     2. Copy one `[data-skin="..."]` block + its `[data-theme="light"]` pair,
        rename the attribute selector, and redesign every token above —
        keeping person A vs B distinguishable by hue *and* lightness (not
        color alone, DESIGN §1.2/§8), keeping done-state legible (chip.done
        drops to --p-tint and dims the label to --ink-dim — verify that still
        reads), and keeping the now-ember visibly warm/amber-family so "act
        now" keeps its cross-skin meaning.
     3. Register the name in the server-side skin registry
        (src/DailyMenu/Domain/Skins.cs) so it validates + persists — this is
        the ONLY non-CSS change required.
     4. Add the name to the settings page's skin <select> (wwwroot/js/config.js).
     5. Bump service-worker.js CACHE_VERSION (any wwwroot change requires it).
   No JS color math ever — every token is authored by hand in this file.
   ========================================================================== */

/* ============================================================================
   SKIN: default — "Daily Menu classic". Byte-for-byte the original v1/v2
   palette (DESIGN §1.1/§1.2). This is the skin applied when no
   `data-skin` attribute is present at all (see the bare `:root` fallback
   at the bottom of this file), so an unset/unknown skin always renders
   identically to pre-skin-system Daily Menu.
   ========================================================================== */
:root,
[data-skin="default"] {
  /* --- surfaces: warm near-black, layered by elevation --- */
  --bg:         #060504;
  --frame:      #0c0b09;
  --surface:    #100e0b;
  --row-empty:  #0a0908;
  --row:        #131110;
  --chip:       #1c1915;
  --sheet:      #14120e;
  --overlay:    rgba(0,0,0,.72);

  /* --- ink: aged paper, never pure white --- */
  --ink:        #f4efe6;
  --ink-dim:    rgba(244,239,230,.52);
  --ink-faint:  rgba(244,239,230,.24);
  --ink-ghost:  rgba(244,239,230,.12);
  --line:       rgba(244,239,230,.09);
  --line-strong:rgba(244,239,230,.20);

  /* --- the "now" ember: belongs to no person --- */
  --now:        #e8b34a;
  --now-glow:   rgba(232,179,74,.55);
  --now-wash:   #17120a;

  /* --- semantic --- */
  --over:       #e0664f;
  --due:        #e8b34a;
  --ok:         #6fbf8f;
  --busy-hatch: rgba(244,239,230,.10);

  /* --- Person A / B defaults — overridden at runtime from bootstrap person
     colors (DESIGN §1.2 derivation: tint = 14% alpha, tint-hi = 22%, glow =
     45%) --- */
  --pA:         #37c7c0;
  --pA-tint:    rgba(55,199,192,.14);
  --pA-tint-hi: rgba(55,199,192,.22);
  --pA-glow:    rgba(55,199,192,.45);
  --pA-ink:     #bff0ec;

  --pB:         #ff8b6b;
  --pB-tint:    rgba(255,139,107,.14);
  --pB-tint-hi: rgba(255,139,107,.22);
  --pB-glow:    rgba(255,139,107,.45);
  --pB-ink:     #ffd4c6;

  --elev-sheet: 0 -8px 40px rgba(0,0,0,.6);
  --elev-ghost: 0 12px 34px rgba(0,0,0,.7);
}

/* LIGHT theme of the default skin (SPEC §11 stretch #8) — same identity as
   dark: warm "aged-paper" field, the two person hues unchanged in hue (teal/
   coral are non-text signal so the raw core hex carries over), tints/glows
   re-derived against a light surface, amber "now" ember unchanged. Contrast
   floor (DESIGN §1.2/§8): --ink on any surface/tint stays >= 7:1. */
[data-skin="default"][data-theme="light"] {
  --bg:         #f3ede0;
  --frame:      #faf6ec;
  --surface:    #ffffff;
  --row-empty:  #f7f2e6;
  --row:        #ffffff;
  --chip:       #efe8d8;
  --sheet:      #ffffff;
  --overlay:    rgba(38,32,20,.42);

  --ink:        #2a2318;
  --ink-dim:    rgba(42,35,24,.62);
  --ink-faint:  rgba(42,35,24,.36);
  --ink-ghost:  rgba(42,35,24,.16);
  --line:       rgba(42,35,24,.14);
  --line-strong:rgba(42,35,24,.28);

  --now:        #b9720a;
  --now-glow:   rgba(185,114,10,.4);
  --now-wash:   #fdecc9;

  --over:       #c33c26;
  --due:        #b9720a;
  --ok:         #2f8f5b;
  --busy-hatch: rgba(42,35,24,.08);

  --pA:         #128e88;
  --pA-tint:    rgba(18,142,136,.12);
  --pA-tint-hi: rgba(18,142,136,.20);
  --pA-glow:    rgba(18,142,136,.35);
  --pA-ink:     #0d5f5b;

  --pB:         #d9583a;
  --pB-tint:    rgba(217,88,58,.12);
  --pB-tint-hi: rgba(217,88,58,.20);
  --pB-glow:    rgba(217,88,58,.35);
  --pB-ink:     #a3391f;

  --elev-sheet: 0 -8px 30px rgba(38,32,20,.16);
  --elev-ghost: 0 12px 26px rgba(38,32,20,.22);
}

/* ============================================================================
   SKIN: paper — a warmer, sepia/manuscript take. Field shifts from near-black
   to a deep warm umber (dark) / cream manuscript (light); ink shifts toward a
   cream-parchment white / iron-gall brown. Person A becomes a muted
   pine/verdigris green (cooler + darker than B, echoing old ledger-ink),
   Person B stays in the warm family but shifts toward a deeper terracotta/
   rust so it reads distinctly from the now-ember's gold rather than
   competing with it. Now-ember stays gold/amber (identity token, DESIGN §0)
   but warms slightly toward the sepia field.
   ========================================================================== */
[data-skin="paper"] {
  --bg:         #1c140d;
  --frame:      #241a11;
  --surface:    #2a1f15;
  --row-empty:  #221808;
  --row:        #33261a;
  --chip:       #3c2c1e;
  --sheet:      #2e2116;
  --overlay:    rgba(10,6,2,.74);

  --ink:        #f2e6d3;
  --ink-dim:    rgba(242,230,211,.54);
  --ink-faint:  rgba(242,230,211,.26);
  --ink-ghost:  rgba(242,230,211,.13);
  --line:       rgba(242,230,211,.10);
  --line-strong:rgba(242,230,211,.22);

  --now:        #e2a53e;
  --now-glow:   rgba(226,165,62,.55);
  --now-wash:   #241705;

  --over:       #d9694a;
  --due:        #e2a53e;
  --ok:         #7fae6c;
  --busy-hatch: rgba(242,230,211,.10);

  /* Person A — muted pine/verdigris (cool-of-the-warm-field, still reads
     clearly against the sepia surfaces; distinct hue AND lightness from B). */
  --pA:         #5fa88a;
  --pA-tint:    rgba(95,168,138,.16);
  --pA-tint-hi: rgba(95,168,138,.25);
  --pA-glow:    rgba(95,168,138,.45);
  --pA-ink:     #c9ecdc;

  /* Person B — deep terracotta/rust (warm but darker/more saturated than the
     now-ember gold, so the two never collide even though both are "warm"). */
  --pB:         #d9663f;
  --pB-tint:    rgba(217,102,63,.16);
  --pB-tint-hi: rgba(217,102,63,.25);
  --pB-glow:    rgba(217,102,63,.45);
  --pB-ink:     #f5c7ae;

  --elev-sheet: 0 -8px 40px rgba(10,6,2,.6);
  --elev-ghost: 0 12px 34px rgba(10,6,2,.7);
}

/* Light variant: cream manuscript page, iron-gall-brown ink. */
[data-skin="paper"][data-theme="light"] {
  --bg:         #efe3c8;
  --frame:      #f7eeda;
  --surface:    #fbf5e6;
  --row-empty:  #f3e9cf;
  --row:        #fbf5e6;
  --chip:       #ecdfc0;
  --sheet:      #fbf5e6;
  --overlay:    rgba(60,44,20,.40);

  --ink:        #3a2a17;
  --ink-dim:    rgba(58,42,23,.64);
  --ink-faint:  rgba(58,42,23,.38);
  --ink-ghost:  rgba(58,42,23,.18);
  --line:       rgba(58,42,23,.16);
  --line-strong:rgba(58,42,23,.30);

  --now:        #a06a10;
  --now-glow:   rgba(160,106,16,.4);
  --now-wash:   #f6e4b8;

  --over:       #b34a2c;
  --due:        #a06a10;
  --ok:         #3f7a4c;
  --busy-hatch: rgba(58,42,23,.09);

  --pA:         #2f7a5e;
  --pA-tint:    rgba(47,122,94,.14);
  --pA-tint-hi: rgba(47,122,94,.22);
  --pA-glow:    rgba(47,122,94,.35);
  --pA-ink:     #164632;

  --pB:         #b5502d;
  --pB-tint:    rgba(181,80,45,.14);
  --pB-tint-hi: rgba(181,80,45,.22);
  --pB-glow:    rgba(181,80,45,.35);
  --pB-ink:     #7a2f16;

  --elev-sheet: 0 -8px 30px rgba(60,44,20,.16);
  --elev-ghost: 0 12px 26px rgba(60,44,20,.22);
}

/* ============================================================================
   SKIN: mono — a higher-contrast, near-monochrome "ink" take. Field goes
   true near-black / near-white with almost no warm cast; the only saturated
   hues left in the whole UI are the two person lights and the now-ember, so
   they read even more vividly against the flatter neutral field. Person A is
   a cool electric blue, Person B a vivid magenta-rose — chosen for maximum
   simultaneous hue AND lightness separation (protanopia/deuteranopia-safe,
   same redundancy rule as the default skin, DESIGN §1.2/§8). Now-ember stays
   amber/gold so "act now" keeps its cross-skin identity, rendered slightly
   hotter for contrast against the colder neutrals.
   ========================================================================== */
[data-skin="mono"] {
  --bg:         #050505;
  --frame:      #0a0a0a;
  --surface:    #101010;
  --row-empty:  #0c0c0c;
  --row:        #161616;
  --chip:       #1e1e1e;
  --sheet:      #131313;
  --overlay:    rgba(0,0,0,.78);

  --ink:        #f5f5f5;
  --ink-dim:    rgba(245,245,245,.58);
  --ink-faint:  rgba(245,245,245,.30);
  --ink-ghost:  rgba(245,245,245,.14);
  --line:       rgba(245,245,245,.11);
  --line-strong:rgba(245,245,245,.24);

  --now:        #f2b13a;
  --now-glow:   rgba(242,177,58,.6);
  --now-wash:   #191204;

  --over:       #ff5c4d;
  --due:        #f2b13a;
  --ok:         #4fd68a;
  --busy-hatch: rgba(245,245,245,.12);

  /* Person A — electric blue: cool, high-chroma, unmistakably distinct from
     B's magenta both in hue and in perceived lightness. */
  --pA:         #4d8dff;
  --pA-tint:    rgba(77,141,255,.16);
  --pA-tint-hi: rgba(77,141,255,.26);
  --pA-glow:    rgba(77,141,255,.5);
  --pA-ink:     #c8dcff;

  /* Person B — vivid magenta-rose: warm-of-the-cool-field, high chroma,
     clearly lighter-reading than A's blue at equal size (redundant with hue). */
  --pB:         #ff5da2;
  --pB-tint:    rgba(255,93,162,.16);
  --pB-tint-hi: rgba(255,93,162,.26);
  --pB-glow:    rgba(255,93,162,.5);
  --pB-ink:     #ffd0e6;

  --elev-sheet: 0 -8px 40px rgba(0,0,0,.7);
  --elev-ghost: 0 12px 34px rgba(0,0,0,.8);
}

/* Light variant: true near-white field, near-black ink — the highest
   contrast option of the shipped skins. */
[data-skin="mono"][data-theme="light"] {
  --bg:         #f7f7f7;
  --frame:      #ffffff;
  --surface:    #ffffff;
  --row-empty:  #f0f0f0;
  --row:        #ffffff;
  --chip:       #e9e9e9;
  --sheet:      #ffffff;
  --overlay:    rgba(10,10,10,.45);

  --ink:        #111111;
  --ink-dim:    rgba(17,17,17,.64);
  --ink-faint:  rgba(17,17,17,.38);
  --ink-ghost:  rgba(17,17,17,.16);
  --line:       rgba(17,17,17,.13);
  --line-strong:rgba(17,17,17,.28);

  --now:        #a6650a;
  --now-glow:   rgba(166,101,10,.4);
  --now-wash:   #fbe9c8;

  --over:       #c2311f;
  --due:        #a6650a;
  --ok:         #1f8a53;
  --busy-hatch: rgba(17,17,17,.09);

  --pA:         #1f5fd6;
  --pA-tint:    rgba(31,95,214,.13);
  --pA-tint-hi: rgba(31,95,214,.21);
  --pA-glow:    rgba(31,95,214,.35);
  --pA-ink:     #0d3a8c;

  --pB:         #d81b74;
  --pB-tint:    rgba(216,27,116,.13);
  --pB-tint-hi: rgba(216,27,116,.21);
  --pB-glow:    rgba(216,27,116,.35);
  --pB-ink:     #8c0f4a;

  --elev-sheet: 0 -8px 30px rgba(10,10,10,.14);
  --elev-ghost: 0 12px 26px rgba(10,10,10,.2);
}

/* ============================================================================
   SKIN: forest — deep-woodland greens. Field is a green-cast near-black
   (dark) / pale sage (light); ink is a cool sage-white / fir-bark green.
   Person A is a fresh leaf green (the forest's own hue, mid lightness),
   Person B a warm apricot — the one warm light under the canopy — clearly
   lighter than A and redder than the now-ember's gold so the three warm/
   green signals never collide. All text pairs computed >= 4.5:1, UI accents
   >= 3:1 (WCAG AA), both variants.
   ========================================================================== */
[data-skin="forest"] {
  /* CX round-2 P3-6: dark surfaces carry a clearly-green cast (not a
     few-RGB-point nudge off default dark) and the "now" ember shifts to a
     mossy gold — a dark-theme user picking forest must SEE the change. */
  --bg:         #071008;
  --frame:      #0d1810;
  --surface:    #111d13;
  --row-empty:  #0b130c;
  --row:        #142216;
  --chip:       #1e2d20;
  --sheet:      #131f15;
  --overlay:    rgba(2,8,2,.74);

  --ink:        #edf3e6;
  --ink-dim:    rgba(237,243,230,.63);
  --ink-faint:  rgba(237,243,230,.27);
  --ink-ghost:  rgba(237,243,230,.13);
  --line:       rgba(237,243,230,.10);
  --line-strong:rgba(237,243,230,.22);

  --now:        #d6c355;
  --now-glow:   rgba(214,195,85,.55);
  --now-wash:   #151705;

  --over:       #e06a4f;
  --due:        #e6b048;
  --ok:         #79c993;
  --busy-hatch: rgba(237,243,230,.10);

  /* Person A — fresh leaf green: the skin's own hue, mid lightness. */
  --pA:         #62c87d;
  --pA-tint:    rgba(98,200,125,.16);
  --pA-tint-hi: rgba(98,200,125,.25);
  --pA-glow:    rgba(98,200,125,.45);
  --pA-ink:     #c6ecd2;

  /* Person B — warm apricot: lighter than A, redder than the ember gold. */
  --pB:         #ff9d70;
  --pB-tint:    rgba(255,157,112,.16);
  --pB-tint-hi: rgba(255,157,112,.25);
  --pB-glow:    rgba(255,157,112,.45);
  --pB-ink:     #ffd8bf;

  --elev-sheet: 0 -8px 40px rgba(2,8,2,.6);
  --elev-ghost: 0 12px 34px rgba(2,8,2,.7);
}

/* Light variant: pale sage field, fir-bark ink. */
[data-skin="forest"][data-theme="light"] {
  --bg:         #e8efdf;
  --frame:      #f2f6ea;
  --surface:    #ffffff;
  --row-empty:  #ecf2e2;
  --row:        #ffffff;
  --chip:       #e0e9d4;
  --sheet:      #ffffff;
  --overlay:    rgba(24,34,18,.42);

  --ink:        #22301d;
  --ink-dim:    rgba(34,48,29,.68);
  --ink-faint:  rgba(34,48,29,.38);
  --ink-ghost:  rgba(34,48,29,.17);
  --line:       rgba(34,48,29,.15);
  --line-strong:rgba(34,48,29,.29);

  --now:        #8a5a06;
  --now-glow:   rgba(138,90,6,.4);
  --now-wash:   #f2e8c2;

  --over:       #b83a24;
  --due:        #8a5a06;
  --ok:         #2c7a4b;
  --busy-hatch: rgba(34,48,29,.09);

  --pA:         #256e38;
  --pA-tint:    rgba(37,110,56,.13);
  --pA-tint-hi: rgba(37,110,56,.21);
  --pA-glow:    rgba(37,110,56,.35);
  --pA-ink:     #123c1e;

  --pB:         #b4512a;
  --pB-tint:    rgba(180,81,42,.13);
  --pB-tint-hi: rgba(180,81,42,.21);
  --pB-glow:    rgba(180,81,42,.35);
  --pB-ink:     #79341a;

  --elev-sheet: 0 -8px 30px rgba(24,34,18,.16);
  --elev-ghost: 0 12px 26px rgba(24,34,18,.22);
}

/* ============================================================================
   SKIN: ocean — open-water blues and teals. Field is a blue-cast near-black
   (dark, "night sea") / pale sea-mist (light); ink is foam white / deep
   slate. Person A is a clear azure (the water hue), Person B a warm coral —
   the classic reef counterpoint — lighter than A and clearly redder than the
   now-ember so warm signals stay distinct. All text pairs computed >= 4.5:1,
   UI accents >= 3:1 (WCAG AA), both variants.
   ========================================================================== */
[data-skin="ocean"] {
  /* CX round-2 P3-6: deeper blue cast on every dark surface + a cyan "now"
     accent so ocean-dark is unmistakably not default-dark. */
  --bg:         #051019;
  --frame:      #0a1826;
  --surface:    #0e1d2c;
  --row-empty:  #081119;
  --row:        #122234;
  --chip:       #1b2f42;
  --sheet:      #101c29;
  --overlay:    rgba(0,6,14,.76);

  --ink:        #e9f1f6;
  --ink-dim:    rgba(233,241,246,.63);
  --ink-faint:  rgba(233,241,246,.27);
  --ink-ghost:  rgba(233,241,246,.13);
  --line:       rgba(233,241,246,.10);
  --line-strong:rgba(233,241,246,.22);

  --now:        #55cfe0;
  --now-glow:   rgba(85,207,224,.5);
  --now-wash:   #081821;

  --over:       #ff6f58;
  --due:        #f0b246;
  --ok:         #4fd0a0;
  --busy-hatch: rgba(233,241,246,.10);

  /* Person A — clear azure: the water's own hue, mid lightness. */
  --pA:         #4fb3e8;
  --pA-tint:    rgba(79,179,232,.16);
  --pA-tint-hi: rgba(79,179,232,.25);
  --pA-glow:    rgba(79,179,232,.45);
  --pA-ink:     #c9e6fa;

  /* Person B — warm coral: the reef counterpoint, lighter than A. */
  --pB:         #ff8f7d;
  --pB-tint:    rgba(255,143,125,.16);
  --pB-tint-hi: rgba(255,143,125,.25);
  --pB-glow:    rgba(255,143,125,.45);
  --pB-ink:     #ffd6cc;

  --elev-sheet: 0 -8px 40px rgba(0,6,14,.6);
  --elev-ghost: 0 12px 34px rgba(0,6,14,.7);
}

/* Light variant: pale sea-mist field, deep-slate ink. */
[data-skin="ocean"][data-theme="light"] {
  --bg:         #e5edf3;
  --frame:      #f1f6fa;
  --surface:    #ffffff;
  --row-empty:  #e9f0f5;
  --row:        #ffffff;
  --chip:       #dce7ee;
  --sheet:      #ffffff;
  --overlay:    rgba(14,28,40,.44);

  --ink:        #1c2a35;
  --ink-dim:    rgba(28,42,53,.68);
  --ink-faint:  rgba(28,42,53,.38);
  --ink-ghost:  rgba(28,42,53,.17);
  --line:       rgba(28,42,53,.15);
  --line-strong:rgba(28,42,53,.29);

  --now:        #8f5c08;
  --now-glow:   rgba(143,92,8,.4);
  --now-wash:   #f0e6c0;

  --over:       #bd3722;
  --due:        #8f5c08;
  --ok:         #1e7d56;
  --busy-hatch: rgba(28,42,53,.09);

  --pA:         #135e93;
  --pA-tint:    rgba(19,94,147,.13);
  --pA-tint-hi: rgba(19,94,147,.21);
  --pA-glow:    rgba(19,94,147,.35);
  --pA-ink:     #0a3a5e;

  --pB:         #bc4433;
  --pB-tint:    rgba(188,68,51,.13);
  --pB-tint-hi: rgba(188,68,51,.21);
  --pB-glow:    rgba(188,68,51,.35);
  --pB-ink:     #7d2a1c;

  --elev-sheet: 0 -8px 30px rgba(14,28,40,.16);
  --elev-ghost: 0 12px 26px rgba(14,28,40,.22);
}

/* ============================================================================
   SKIN: sunset — dusk oranges and corals. Field is a deep maroon-brown dusk
   (dark) / peach cream (light); ink is warm peach-white / burnt umber. The
   warm axis is crowded here (field, ember, coral), so Person A deliberately
   takes the cool counterpoint — a twilight periwinkle, the sky opposite the
   sun — while Person B is the vivid sunset coral, lighter/warmer than the
   over-red and clearly redder than the ember gold. All text pairs computed
   >= 4.5:1, UI accents >= 3:1 (WCAG AA), both variants.
   ========================================================================== */
[data-skin="sunset"] {
  /* CX round-2 P3-6: warmer, redder dark surfaces + a hot-orange "now"
     ember (vs default's amber) so sunset-dark reads as its own skin. */
  --bg:         #170a0b;
  --frame:      #1f0f0f;
  --surface:    #261412;
  --row-empty:  #180d0d;
  --row:        #2c1815;
  --chip:       #38211b;
  --sheet:      #281613;
  --overlay:    rgba(16,4,4,.76);

  --ink:        #f7ead9;
  --ink-dim:    rgba(247,234,217,.63);
  --ink-faint:  rgba(247,234,217,.27);
  --ink-ghost:  rgba(247,234,217,.13);
  --line:       rgba(247,234,217,.10);
  --line-strong:rgba(247,234,217,.22);

  --now:        #ff9838;
  --now-glow:   rgba(255,152,56,.5);
  --now-wash:   #201005;

  --over:       #ff6a4e;
  --due:        #f0a844;
  --ok:         #6fbf8f;
  --busy-hatch: rgba(247,234,217,.10);

  /* Person A — twilight periwinkle: the cool sky opposite the sun. */
  --pA:         #9aa5f5;
  --pA-tint:    rgba(154,165,245,.16);
  --pA-tint-hi: rgba(154,165,245,.25);
  --pA-glow:    rgba(154,165,245,.45);
  --pA-ink:     #d9ddfd;

  /* Person B — vivid sunset coral: warmer and lighter than A, redder than
     the ember gold. */
  --pB:         #ff8058;
  --pB-tint:    rgba(255,128,88,.16);
  --pB-tint-hi: rgba(255,128,88,.25);
  --pB-glow:    rgba(255,128,88,.45);
  --pB-ink:     #ffd2c0;

  --elev-sheet: 0 -8px 40px rgba(16,4,4,.6);
  --elev-ghost: 0 12px 34px rgba(16,4,4,.7);
}

/* Light variant: peach-cream field, burnt-umber ink. */
[data-skin="sunset"][data-theme="light"] {
  --bg:         #f7e9da;
  --frame:      #fbf2e8;
  --surface:    #ffffff;
  --row-empty:  #f6ecdd;
  --row:        #ffffff;
  --chip:       #f0dfc9;
  --sheet:      #ffffff;
  --overlay:    rgba(52,26,14,.42);

  --ink:        #33221a;
  --ink-dim:    rgba(51,34,26,.68);
  --ink-faint:  rgba(51,34,26,.38);
  --ink-ghost:  rgba(51,34,26,.17);
  --line:       rgba(51,34,26,.15);
  --line-strong:rgba(51,34,26,.29);

  --now:        #93550a;
  --now-glow:   rgba(147,85,10,.4);
  --now-wash:   #f8e5bb;

  --over:       #b53318;
  --due:        #93550a;
  --ok:         #2f7d4e;
  --busy-hatch: rgba(51,34,26,.09);

  --pA:         #4a51b8;
  --pA-tint:    rgba(74,81,184,.13);
  --pA-tint-hi: rgba(74,81,184,.21);
  --pA-glow:    rgba(74,81,184,.35);
  --pA-ink:     #2b2f77;

  --pB:         #b8431f;
  --pB-tint:    rgba(184,67,31,.13);
  --pB-tint-hi: rgba(184,67,31,.21);
  --pB-glow:    rgba(184,67,31,.35);
  --pB-ink:     #7c2a10;

  --elev-sheet: 0 -8px 30px rgba(52,26,14,.16);
  --elev-ghost: 0 12px 26px rgba(52,26,14,.22);
}

/* ============================================================================
   SKIN: berry — bramble purples and magentas. Field is a violet-cast
   near-black (dark) / pale lilac (light); ink is lilac-white / blackcurrant.
   Person A is a soft orchid violet (cooler, bluer), Person B a raspberry
   rose (warmer, pinker) — ~80 degrees of hue apart plus a lightness step,
   same redundancy rule as mono's blue/magenta pair. Now-ember stays gold so
   "act now" keeps its cross-skin meaning against the purple field. All text
   pairs computed >= 4.5:1, UI accents >= 3:1 (WCAG AA), both variants.
   ========================================================================== */
[data-skin="berry"] {
  /* CX round-2 P3-6: stronger violet cast on dark surfaces + a fuchsia
     "now" accent (distinct from A's violet and B's raspberry) so
     berry-dark is visibly not default-dark. */
  --bg:         #100816;
  --frame:      #170e1e;
  --surface:    #1c1224;
  --row-empty:  #110a15;
  --row:        #22162c;
  --chip:       #2e1f38;
  --sheet:      #1e1426;
  --overlay:    rgba(10,2,14,.78);

  --ink:        #f3ecf6;
  --ink-dim:    rgba(243,236,246,.63);
  --ink-faint:  rgba(243,236,246,.27);
  --ink-ghost:  rgba(243,236,246,.13);
  --line:       rgba(243,236,246,.10);
  --line-strong:rgba(243,236,246,.22);

  --now:        #e06fd6;
  --now-glow:   rgba(224,111,214,.5);
  --now-wash:   #1c0d1a;

  --over:       #f25c4e;
  --due:        #eaae46;
  --ok:         #5cc793;
  --busy-hatch: rgba(243,236,246,.10);

  /* Person A — soft orchid violet: the cooler, bluer light. */
  --pA:         #b18af5;
  --pA-tint:    rgba(177,138,245,.16);
  --pA-tint-hi: rgba(177,138,245,.25);
  --pA-glow:    rgba(177,138,245,.45);
  --pA-ink:     #e0d1fc;

  /* Person B — raspberry rose: the warmer, pinker light. */
  --pB:         #ff6f96;
  --pB-tint:    rgba(255,111,150,.16);
  --pB-tint-hi: rgba(255,111,150,.25);
  --pB-glow:    rgba(255,111,150,.45);
  --pB-ink:     #ffccd9;

  --elev-sheet: 0 -8px 40px rgba(10,2,14,.6);
  --elev-ghost: 0 12px 34px rgba(10,2,14,.7);
}

/* Light variant: pale lilac field, blackcurrant ink. */
[data-skin="berry"][data-theme="light"] {
  --bg:         #efe6f0;
  --frame:      #f6f0f7;
  --surface:    #ffffff;
  --row-empty:  #f0e9f2;
  --row:        #ffffff;
  --chip:       #e6daea;
  --sheet:      #ffffff;
  --overlay:    rgba(34,18,40,.44);

  --ink:        #2b1d31;
  --ink-dim:    rgba(43,29,49,.68);
  --ink-faint:  rgba(43,29,49,.38);
  --ink-ghost:  rgba(43,29,49,.17);
  --line:       rgba(43,29,49,.15);
  --line-strong:rgba(43,29,49,.29);

  --now:        #8f5a06;
  --now-glow:   rgba(143,90,6,.4);
  --now-wash:   #f4e5c0;

  --over:       #bd2f20;
  --due:        #8f5a06;
  --ok:         #237a4f;
  --busy-hatch: rgba(43,29,49,.09);

  --pA:         #6a3fbf;
  --pA-tint:    rgba(106,63,191,.13);
  --pA-tint-hi: rgba(106,63,191,.21);
  --pA-glow:    rgba(106,63,191,.35);
  --pA-ink:     #46287f;

  --pB:         #b02460;
  --pB-tint:    rgba(176,36,96,.13);
  --pB-tint-hi: rgba(176,36,96,.21);
  --pB-glow:    rgba(176,36,96,.35);
  --pB-ink:     #75173f;

  --elev-sheet: 0 -8px 30px rgba(34,18,40,.16);
  --elev-ghost: 0 12px 26px rgba(34,18,40,.22);
}
