/* ==========================================================================
   CW tool themes — COLOR ONLY.
   Three legacy-inspired skins x light/dark. Nothing here may set layout,
   spacing, size, font-family, border-width, radius, or display properties.
   Theme ids must match cwtools_common/themes.py THEMES exactly.
   Must be linked in base.html AFTER bootstrap.min.css and site.css.
   ========================================================================== */

/* ── Bootstrap 5.3 bridge. Ties on specificity with the theme blocks and with
      Bootstrap's own [data-bs-theme=dark]; source order decides. ───────── */
[data-cw-theme] {
    --bs-body-bg: var(--cw-body-bg);
    --bs-body-color: var(--cw-body-text);
    --bs-emphasis-color: var(--cw-heading-text);
    --bs-secondary-color: var(--cw-text-muted);
    --bs-border-color: var(--cw-border);
    --bs-primary: var(--cw-primary);
    --bs-primary-rgb: var(--cw-primary-rgb);
    --bs-success-rgb: var(--cw-success-rgb);
    --bs-warning-rgb: var(--cw-warning-rgb);
    --bs-danger-rgb: var(--cw-danger-rgb);
    --bs-info-rgb: var(--cw-info-rgb);
}

/* ══ 1a. CWPanel (cw_2014) — LIGHT.  Also the :root default. ═══════════
   navbar-bg CORRECTED to the actual public-site mockup's --cw-blue (#4a77b4,
   D:\webdev\cw-2026\Mock Ups\index.html:13,31 -- a flat .navbar-cw background,
   never a gradient) rather than a shade sampled from the legacy cwpanel_client
   app's own gradient (#487ec4), which had drifted from --cw-primary/--cw-link
   below (both already #4a77b4) and was the true source of the mismatch once
   the shared gradient mechanism was removed -- not the removal itself.
   ═════════════════════════════════════════════════════════════════════ */
:root,
[data-cw-theme="cwpanel"] {
    --cw-body-bg: #f4f5f6;
    --cw-surface: #ffffff;
    --cw-surface-alt: #ffffff;
    --cw-body-text: #3c4147;
    --cw-heading-text: #23272b;
    --cw-text-muted: #7a8088;
    --cw-border: #e2e4e7;
    --cw-border-light: #eef0f2;
    /* Was equal to --cw-primary (#4a77b4, 4.19:1 against --cw-body-bg) -- reuses --cw-link-hover's
       already-darker value instead, clearing 4.5:1. Applied the same way to every theme below whose
       --cw-link equalled its own --cw-primary and fell short. */
    --cw-link: #345e8c;
    --cw-link-hover: #345e8c;
    --cw-primary: #4a77b4;
    --cw-primary-rgb: 74, 119, 180;
    --cw-primary-dark: #345e8c;
    --cw-primary-light: #6f9bd4;
    --cw-primary-contrast: #ffffff;
    --cw-accent: #428bca;
    --cw-accent-soft: #eef3fa;
    --cw-navbar-bg: #4a77b4;
    --cw-navbar-border: #345e8c;
    /* Was translucent rgba(255,255,255,.92) -- alpha-composited over this bg that only measures
       4.15:1, short of 4.5:1. Opaque white (already this block's --cw-navbar-text-hover) clears it
       at 4.58:1 without inventing a new color. */
    --cw-navbar-text: #ffffff;
    --cw-navbar-text-hover: #ffffff;
    --cw-brand-text: #ffffff;
    --cw-brand-accent: #ffffff;
    --cw-dropdown-bg: #042942;
    --cw-dropdown-text: #dbe7f2;
    --cw-sidebar-bg: #ffffff;
    --cw-sidebar-text: #3c4147;
    --cw-sidebar-link-hover: #4a77b4;
    --cw-sidebar-header-bg: #eef3fa;
    /* Reuses this block's own --cw-primary-dark/--cw-table-header-text value (#345e8c) rather than
       --cw-text-muted (#7a8088), which only measured 3.57:1 against this near-white bg --
       table-header already established the same near-white-bg + primary-dark-text pattern this
       mirrors. Applied the same way across every light-mode theme block below. */
    --cw-sidebar-header-text: #345e8c;
    --cw-footer-bg: #252528;
    --cw-footer-text: #9aa0a6;
    --cw-footer-heading: #ffffff;
    --cw-footer-bottom-bg: #111114;
    --cw-footer-bottom-text: #7a7f85;
    --cw-table-stripe: #f6f8fb;
    --cw-table-header-bg: #eef3fa;
    --cw-table-header-text: #345e8c;
    --cw-success: #5cb85c;
    --cw-success-rgb: 92, 184, 92;
    --cw-warning: #f0ad4e;
    --cw-warning-rgb: 240, 173, 78;
    --cw-danger: #d9534f;
    --cw-danger-rgb: 217, 83, 79;
    --cw-info: #5bc0de;
    --cw-info-rgb: 91, 192, 222;
}

/* ══ 1b. CWPanel (cw_2014) — DARK ══════════════════════════════════════
   navbar-bg intentionally stays its own darker, bespoke navy (#24486f) rather
   than reusing 1a's --cw-blue-dark (#345e8c) verbatim -- dark mode here is
   meant to read darker overall, not just recolor the light navbar. ═══════ */
[data-cw-theme="cwpanel"][data-bs-theme="dark"] {
    --cw-body-bg: #14181d;
    --cw-surface: #1c2229;
    --cw-surface-alt: #222933;
    --cw-body-text: #d5dae0;
    --cw-heading-text: #eef1f4;
    --cw-text-muted: #8b939c;
    --cw-border: #2b333c;
    --cw-border-light: #232a32;
    --cw-link: #7fa9dc;
    --cw-link-hover: #a5c4e8;
    --cw-primary: #6f9bd4;
    --cw-primary-rgb: 111, 155, 212;
    --cw-primary-dark: #90b5dc;
    --cw-primary-light: #a8c6e6;
    --cw-primary-contrast: #10161c;
    --cw-accent: #6f9bd4;
    --cw-accent-soft: #1b2a3c;
    --cw-navbar-bg: #24486f;
    --cw-navbar-border: #16293f;
    --cw-navbar-text: rgba(255, 255, 255, .85);
    --cw-navbar-text-hover: #ffffff;
    --cw-brand-text: #ffffff;
    --cw-brand-accent: #ffffff;
    --cw-dropdown-bg: #021a2b;
    --cw-dropdown-text: #cfe0ef;
    --cw-sidebar-bg: #1c2229;
    --cw-sidebar-text: #d5dae0;
    --cw-sidebar-link-hover: #90b5dc;
    --cw-sidebar-header-bg: #232b34;
    --cw-sidebar-header-text: #8b939c;
    --cw-footer-bg: #0f1216;
    --cw-footer-text: #868d95;
    --cw-footer-heading: #e8ecef;
    --cw-footer-bottom-bg: #090b0e;
    /* Reuses this block's own --cw-footer-text (#868d95) -- the bottom strip's bg is always darker
       than the main footer's, so the main footer's text color reads with MORE headroom here, not
       less. Applied the same way to every theme block below whose footer-bottom-text fell short. */
    --cw-footer-bottom-text: #868d95;
    --cw-table-stripe: #222a33;
    --cw-table-header-bg: #232e3b;
    --cw-table-header-text: #a9c4e4;
    --cw-success: #62c462;
    --cw-success-rgb: 98, 196, 98;
    --cw-warning: #f5c26b;
    --cw-warning-rgb: 245, 194, 107;
    --cw-danger: #e46b67;
    --cw-danger-rgb: 228, 107, 103;
    --cw-info: #6fcfe8;
    --cw-info-rgb: 111, 207, 232;
}

/* ══ 2a. CWMonitor (cw_2009) — LIGHT ═══════════════════════════════════
   Re-sampled directly from the legacy theme's own image assets (not just its
   CSS) to correct an earlier flat-orange/near-black approximation:
   - images/bg-head.gif, bg-head.jpg, bg-head1.jpg (the striped header banner)
     sample as a warm dark BROWN, not black -- dominant pixels cluster in the
     #211c16-#33302b range with a lighter tan/khaki diagonal highlight around
     #7a6a53. navbar-bg below is drawn from that same range; the navbar no
     longer gradients top-to-bottom (site.css .navbar-cw is flat-color now),
     and footer-bg is set equal to navbar-bg so the header/footer chrome
     bracketing the page reads as one solid color.
   - images/logo.png and images/banner-login.jpg (the actual "Cyber Wurx"
     wordmark) render in a metallic GOLD/BRONZE gradient -- dark bronze
     ~#6c590c through mid gold ~#ae9e53 to a pale cream highlight ~#e5db9e --
     not the bright flat orange (#ff9900/#f78d1d) the previous pass used.
     All primary/link/accent tokens below are rebuilt from that gradient.
   ═════════════════════════════════════════════════════════════════════ */
[data-cw-theme="cwmonitor"] {
    --cw-body-bg: #efefef;
    --cw-surface: #ffffff;
    --cw-surface-alt: #faf7f2;
    --cw-body-text: #33302b;
    --cw-heading-text: #1f1d19;
    --cw-text-muted: #7d786f;
    --cw-border: #d8d4cc;
    --cw-border-light: #e8e5df;
    /* Was #8a6a1f (4.39:1 against --cw-body-bg, short of 4.5:1) -- already deliberately darker than
       --cw-primary, just not quite enough; reuses this block's own --cw-primary-dark instead. */
    --cw-link: #7a5f1e;
    --cw-link-hover: #6b5218;
    --cw-primary: #a9832a;
    --cw-primary-rgb: 169, 131, 42;
    --cw-primary-dark: #7a5f1e;
    --cw-primary-light: #d1af52;
    /* Deliberately lighter than a strict-contrast reading would pick (which favored the original
       #241d0f dark brown) -- matches --cw-brand-text so Amber's buttons/dropdown-hover read the
       same as its badges instead of flipping to dark text on this one theme. */
    --cw-primary-contrast: #f0ede8;
    --cw-accent: #c9a227;
    --cw-accent-soft: #f6efd9;
    --cw-navbar-bg: #332f2a;
    --cw-navbar-border: #a9832a;
    --cw-navbar-text: #b0a68f;
    --cw-navbar-text-hover: #d1af52;
    --cw-brand-text: #f0ede8;
    --cw-brand-accent: #d1af52;
    --cw-dropdown-bg: #241f19;
    --cw-dropdown-text: #d8d3c9;
    --cw-sidebar-bg: #ffffff;
    --cw-sidebar-text: #33302b;
    --cw-sidebar-link-hover: #8a6a1f;
    --cw-sidebar-header-bg: #f5efe4;
    --cw-sidebar-header-text: #7a5f1e;
    --cw-footer-bg: #332f2a;
    --cw-footer-text: #a49b8c;
    --cw-footer-heading: #c9a227;
    --cw-footer-bottom-bg: #1a150f;
    --cw-footer-bottom-text: #a49b8c;
    --cw-table-stripe: #faf6ef;
    --cw-table-header-bg: #f5efe4;
    --cw-table-header-text: #7a5f1e;
    --cw-success: #7ba428;
    --cw-success-rgb: 123, 164, 40;
    --cw-warning: #a9832a;
    --cw-warning-rgb: 169, 131, 42;
    --cw-danger: #c0392b;
    --cw-danger-rgb: 192, 57, 43;
    --cw-info: #3d8fa8;
    --cw-info-rgb: 61, 143, 168;
}

/* ══ 2b. CWMonitor (cw_2009) — DARK ════════════════════════════════════
   Same brown/gold family as 2a, shifted lighter/brighter where needed so gold
   text and borders still read against a dark brown (not black) body. ══════ */
[data-cw-theme="cwmonitor"][data-bs-theme="dark"] {
    --cw-body-bg: #17140f;
    --cw-surface: #201c16;
    --cw-surface-alt: #272219;
    --cw-body-text: #ded8cd;
    --cw-heading-text: #f4efe6;
    --cw-text-muted: #948c7d;
    --cw-border: #322c22;
    --cw-border-light: #29241c;
    --cw-link: #d9b65a;
    --cw-link-hover: #e6c878;
    --cw-primary: #d1af52;
    --cw-primary-rgb: 209, 175, 82;
    /* Brightened from the light-mode value (#a9832a) to this block's own --cw-primary-light --
       --cw-primary-dark feeds .calendar-event's chip text (on --cw-accent-soft, a dark bg in this
       mode) and .stat-tile's numeral (on --cw-surface, also dark), both of which want a BRIGHT
       foreground here, unlike light mode where the same token sits on light backgrounds and wants
       to stay dark. The old value only cleared 4.02:1 on the calendar chip, short of 4.5:1. */
    --cw-primary-dark: #e6d9a0;
    --cw-primary-light: #e6d9a0;
    /* NOT --cw-brand-text here, unlike the light-mode block above -- dark mode's --cw-primary
       (#d1af52) is a noticeably brighter gold than light mode's (#a9832a), the same brightening
       every theme's dark block applies to its own primary, and light text on that brighter gold
       measures ~1.8:1 (a real accessibility failure, not just a stylistic quibble) -- back to the
       original dark, on-theme #1a1206, which reads at ~8.8:1. */
    --cw-primary-contrast: #1a1206;
    --cw-accent: #d1af52;
    --cw-accent-soft: #332a18;
    --cw-navbar-bg: #241f19;
    --cw-navbar-border: #a9832a;
    --cw-navbar-text: #b0a68f;
    --cw-navbar-text-hover: #d1af52;
    --cw-brand-text: #f0ede8;
    --cw-brand-accent: #d1af52;
    --cw-dropdown-bg: #1a1610;
    --cw-dropdown-text: #cfc7b8;
    --cw-sidebar-bg: #201c16;
    --cw-sidebar-text: #ded8cd;
    --cw-sidebar-link-hover: #d1af52;
    --cw-sidebar-header-bg: #2a251c;
    --cw-sidebar-header-text: #948c7d;
    --cw-footer-bg: #241f19;
    --cw-footer-text: #8f8779;
    --cw-footer-heading: #d1af52;
    --cw-footer-bottom-bg: #110e0a;
    --cw-footer-bottom-text: #8f8779;
    --cw-table-stripe: #262119;
    --cw-table-header-bg: #2e281e;
    --cw-table-header-text: #d1af52;
    --cw-success: #8fbc3c;
    --cw-success-rgb: 143, 188, 60;
    --cw-warning: #d1af52;
    --cw-warning-rgb: 209, 175, 82;
    --cw-danger: #e05c4a;
    --cw-danger-rgb: 224, 92, 74;
    --cw-info: #4fa8c4;
    --cw-info-rgb: 79, 168, 196;
}

/* ══ 3a. CWTicket (cw_2003) — LIGHT ════════════════════════════════════
   JUDGMENT CALL: the legacy tool had no single strong brand accent (white /
   #f8f8f8 panels, #A5ACB2 / #e1e1d9 borders, #FFFFFF / #F3F3F3 zebra, #fff8ee
   cream tooltips, pastel per-priority chips). Chosen accent: muted maroon
   #8b3a3a for primary/links, antique gold #a8863c as secondary accent. This
   part of the palette drives the parchment content area (cards/sidebar/
   tables) and is unchanged below.
   Header/footer chrome CORRECTED after checking the legacy theme's own image
   assets, not just its stylesheet: images/top_back.gif and images/menu_back.gif
   (confirmed against a screenshot of the live legacy app) are vertical
   gradient strips in a slate LAVENDER/PURPLE family -- dominant band
   #8787a8-#9393b2, darkest edge ~#4c4c71-#5e5e82 -- not the neutral taupe/gray
   (#5a5550) the first pass used. footer-bg/footer-bottom-bg below are kept as
   previously tuned (left alone by request); the rest of the palette
   (parchment surfaces, maroon accent) is untouched since the legacy
   screenshot confirms the content area stays warm/neutral.
   navbar-bg is the literal pixel at images/top_back.gif row 6 of 30 (#8787a8,
   the darker edge of that same dominant band) -- row 11's band-average pixel
   (#8d8dae) read as slightly washed-out in practice, so this steps to a
   somewhat darker real pixel from the same band rather than inventing a tint.
   Dark mode's navbar-bg (#4e4e62) is intentionally NOT re-derived from this
   value -- it was already tuned and confirmed to look right independently,
   so light and dark are no longer required to stay proportionally linked.
   brand-accent (the "Ticket" half of the navbar wordmark) matches brand-text
   exactly -- both halves of the logo render as one solid color, same as
   CWPanel's "CW"+"Panel" lockup. --cw-accent (#a8863c antique gold) is kept
   defined but currently unused by the shell CSS -- reserved for a future
   theme/element that wants it, per explicit request.
   The pastel priority chips are deliberately NOT tokenized: they are CWTicket
   business semantics (priority levels), not shell chrome, so they belong in
   that app's own CSS when CWTicket is actually rebuilt. Two do survive where
   they fit naturally: cream #fff8ee as --cw-accent-soft, neutral zebra #f3f3f3
   as --cw-table-stripe.
   ═════════════════════════════════════════════════════════════════════ */
[data-cw-theme="cwticket"] {
    --cw-body-bg: #efeee8;
    --cw-surface: #ffffff;
    --cw-surface-alt: #f8f8f8;
    --cw-body-text: #33373b;
    --cw-heading-text: #1f2225;
    --cw-text-muted: #79808a;
    --cw-border: #c9ccd0;
    --cw-border-light: #e1e1d9;
    --cw-link: #8b3a3a;
    --cw-link-hover: #6d2c2c;
    --cw-primary: #8b3a3a;
    --cw-primary-rgb: 139, 58, 58;
    --cw-primary-dark: #6d2c2c;
    --cw-primary-light: #b06a6a;
    --cw-primary-contrast: #ffffff;
    --cw-accent: #a8863c;
    --cw-accent-soft: #fff8ee;
    --cw-navbar-bg: #8787a8;
    --cw-navbar-border: #4c4c71;
    /* Deliberately set to this block's own --cw-brand-accent (#f5f2ea) rather than a darker,
       higher-contrast neutral, so the navbar's app links read the same cream tone as the brand
       lockup -- ratio against --cw-navbar-bg is ~3.10:1 (below the 4.5:1 UI-text floor; even fully
       opaque white only reaches ~3.47:1 on this medium-lightness lavender bg), see
       ACCEPTED_EXCEPTIONS in contrast.py. */
    --cw-navbar-text: #f5f2ea;
    --cw-navbar-text-hover: #ffffff;
    --cw-brand-text: #f5f2ea;
    --cw-brand-accent: #f5f2ea;
    --cw-dropdown-bg: #4c4c71;
    --cw-dropdown-text: #e1e1d9;
    --cw-sidebar-bg: #ffffff;
    --cw-sidebar-text: #33373b;
    --cw-sidebar-link-hover: #8b3a3a;
    --cw-sidebar-header-bg: #ece9e1;
    --cw-sidebar-header-text: #4a4640;
    --cw-footer-bg: #67668b;
    --cw-footer-text: #f0f0f6;
    --cw-footer-heading: #ffffff;
    --cw-footer-bottom-bg: #43426a;
    --cw-footer-bottom-text: #c7c6dd;
    --cw-table-stripe: #f3f3f3;
    --cw-table-header-bg: #e1e1d9;
    --cw-table-header-text: #4a4640;
    --cw-success: #4e8a4e;
    --cw-success-rgb: 78, 138, 78;
    --cw-warning: #c58a2e;
    --cw-warning-rgb: 197, 138, 46;
    --cw-danger: #b34747;
    --cw-danger-rgb: 179, 71, 71;
    --cw-info: #4a7d99;
    --cw-info-rgb: 74, 125, 153;
}

/* ══ 3b. CWTicket (cw_2003) — DARK ═════════════════════════════════════
   Same purple-chrome correction as 3a (see that block's comment), shifted
   darker/desaturated to sit behind the dark parchment surfaces below.
   navbar-bg (#4e4e62) was already tuned and confirmed to look right on its
   own -- it does NOT track 3a's navbar-bg value and shouldn't be re-derived
   from it if 3a changes again. */
[data-cw-theme="cwticket"][data-bs-theme="dark"] {
    --cw-body-bg: #1a1917;
    --cw-surface: #232120;
    --cw-surface-alt: #2a2725;
    --cw-body-text: #dcd8d1;
    --cw-heading-text: #f2eee7;
    --cw-text-muted: #90897f;
    --cw-border: #34312d;
    --cw-border-light: #2b2825;
    --cw-link: #c98686;
    --cw-link-hover: #e0a8a8;
    --cw-primary: #c47a7a;
    --cw-primary-rgb: 196, 122, 122;
    /* Brightened to this block's own --cw-primary-light -- the old #a35d5d only cleared 2.82:1 as
       .calendar-event's chip text (on the dark --cw-accent-soft bg, a real failure) and 3.80:1 as
       .btn-primary's hover/active background against --cw-primary-contrast (also short of 4.5:1). */
    --cw-primary-dark: #dda0a0;
    --cw-primary-light: #dda0a0;
    --cw-primary-contrast: #1a1010;
    --cw-accent: #d9b45f;
    --cw-accent-soft: #362a26;
    --cw-navbar-bg: #4e4e62;
    --cw-navbar-border: #201f30;
    --cw-navbar-text: rgba(255, 255, 255, .85);
    --cw-navbar-text-hover: #ffffff;
    --cw-brand-text: #efeae1;
    --cw-brand-accent: #efeae1;
    --cw-dropdown-bg: #201f30;
    --cw-dropdown-text: #d6d1c7;
    --cw-sidebar-bg: #232120;
    --cw-sidebar-text: #dcd8d1;
    --cw-sidebar-link-hover: #c47a7a;
    --cw-sidebar-header-bg: #2b2926;
    /* Reuses this block's own --cw-body-text -- the usual dark-mode --cw-text-muted duplicate only
       measured 4.19:1 here, short of 4.5:1. */
    --cw-sidebar-header-text: #dcd8d1;
    --cw-footer-bg: #27263a;
    --cw-footer-text: #d6d5e6;
    --cw-footer-heading: #ffffff;
    --cw-footer-bottom-bg: #1a1929;
    --cw-footer-bottom-text: #a3a2bd;
    --cw-table-stripe: #292725;
    --cw-table-header-bg: #312e2a;
    --cw-table-header-text: #d9b45f;
    --cw-success: #66a866;
    --cw-success-rgb: 102, 168, 102;
    --cw-warning: #d9a441;
    --cw-warning-rgb: 217, 164, 65;
    --cw-danger: #cf6b6b;
    --cw-danger-rgb: 207, 107, 107;
    --cw-info: #6a9fbd;
    --cw-info-rgb: 106, 159, 189;
}

/* ══ 4a. CW Maroon — LIGHT ══════════════════════════════════════════════
   A maroon/red recolor of CWPanel's structure (same shape, warm accent).
   --cw-danger is deliberately shifted brighter/more orange than the muted
   oxblood --cw-primary so alert red stays visually distinct from the brand
   maroon rather than blending into it. ═══════════════════════════════════ */
[data-cw-theme="cwmaroon"] {
    --cw-body-bg: #f6f4f4;
    --cw-surface: #ffffff;
    --cw-surface-alt: #ffffff;
    --cw-body-text: #423638;
    --cw-heading-text: #241a1c;
    --cw-text-muted: #8a7a7c;
    --cw-border: #e6dfe0;
    --cw-border-light: #f0eaea;
    --cw-link: #8c2b3a;
    --cw-link-hover: #6c2029;
    --cw-primary: #8c2b3a;
    --cw-primary-rgb: 140, 43, 58;
    --cw-primary-dark: #6c2029;
    --cw-primary-light: #b8636f;
    --cw-primary-contrast: #ffffff;
    --cw-accent: #b5583f;
    --cw-accent-soft: #f7ece7;
    --cw-navbar-bg: #8c2b3a;
    --cw-navbar-border: #6c2029;
    --cw-navbar-text: rgba(255, 255, 255, .92);
    --cw-navbar-text-hover: #ffffff;
    --cw-brand-text: #ffffff;
    --cw-brand-accent: #ffffff;
    --cw-dropdown-bg: #350f15;
    --cw-dropdown-text: #f0d9dc;
    --cw-sidebar-bg: #ffffff;
    --cw-sidebar-text: #423638;
    --cw-sidebar-link-hover: #8c2b3a;
    --cw-sidebar-header-bg: #f7ece7;
    --cw-sidebar-header-text: #6c2029;
    --cw-footer-bg: #2a1418;
    --cw-footer-text: #a89194;
    --cw-footer-heading: #ffffff;
    --cw-footer-bottom-bg: #160a0c;
    --cw-footer-bottom-text: #a89194;
    --cw-table-stripe: #faf5f5;
    --cw-table-header-bg: #f7ece7;
    --cw-table-header-text: #6c2029;
    --cw-success: #5cb85c;
    --cw-success-rgb: 92, 184, 92;
    --cw-warning: #e0a940;
    --cw-warning-rgb: 224, 169, 64;
    --cw-danger: #d9484f;
    --cw-danger-rgb: 217, 72, 79;
    --cw-info: #4a90b8;
    --cw-info-rgb: 74, 144, 184;
}

/* ══ 4b. CW Maroon — DARK ═══════════════════════════════════════════════ */
[data-cw-theme="cwmaroon"][data-bs-theme="dark"] {
    --cw-body-bg: #191314;
    --cw-surface: #221a1c;
    --cw-surface-alt: #291f21;
    --cw-body-text: #ddd2d3;
    --cw-heading-text: #f2e8e9;
    --cw-text-muted: #988688;
    --cw-border: #362a2c;
    --cw-border-light: #2c2224;
    --cw-link: #d68a94;
    --cw-link-hover: #e3aab1;
    --cw-primary: #c26c78;
    --cw-primary-rgb: 194, 108, 120;
    --cw-primary-dark: #d68a94;
    --cw-primary-light: #e3aab1;
    --cw-primary-contrast: #200f12;
    --cw-accent: #cf8867;
    --cw-accent-soft: #2f211c;
    --cw-navbar-bg: #5c1f29;
    --cw-navbar-border: #3c1319;
    --cw-navbar-text: rgba(255, 255, 255, .85);
    --cw-navbar-text-hover: #ffffff;
    --cw-brand-text: #ffffff;
    --cw-brand-accent: #ffffff;
    --cw-dropdown-bg: #1c0a0d;
    --cw-dropdown-text: #ecd3d6;
    --cw-sidebar-bg: #221a1c;
    --cw-sidebar-text: #ddd2d3;
    --cw-sidebar-link-hover: #d68a94;
    --cw-sidebar-header-bg: #2a2022;
    --cw-sidebar-header-text: #988688;
    --cw-footer-bg: #170c0e;
    --cw-footer-text: #9c898b;
    --cw-footer-heading: #f0dfe1;
    --cw-footer-bottom-bg: #0c0607;
    --cw-footer-bottom-text: #9c898b;
    --cw-table-stripe: #251c1e;
    --cw-table-header-bg: #2b2123;
    --cw-table-header-text: #e3aab1;
    --cw-success: #6fc46f;
    --cw-success-rgb: 111, 196, 111;
    --cw-warning: #eec06b;
    --cw-warning-rgb: 238, 192, 107;
    --cw-danger: #e46b72;
    --cw-danger-rgb: 228, 107, 114;
    --cw-info: #6cabd1;
    --cw-info-rgb: 108, 171, 209;
}

/* ══ 5a. CW Purple (Amethyst) — LIGHT ═══════════════════════════════════
   Recolored (2026-08) in two follow-up passes from the original
   indigo-violet (blue-leaning, ~252 deg hue): first rotated to ~290 deg
   (a warmer purple that still read a bit too close to magenta/rose), then
   pulled cooler to ~265 deg and desaturated to ~62% of its original
   saturation for a calmer, more muted slate-violet. Every token's own HSL
   lightness is kept exactly as the original in both passes -- each value
   below is the original CWPurple hex with only its hue rotated and
   saturation scaled, not a literal pick from any fixed ramp. White/
   near-white/near-black tokens have no saturation, so they're unaffected
   by either change and stay pure white/near-black exactly as before --
   contrast ratios are effectively identical to the original theme.
   --cw-success/--cw-warning/--cw-danger/--cw-info are untouched -- shared
   semantic status colors, not part of this theme's own hue. ══════════════ */
[data-cw-theme="cwpurple"] {
    --cw-body-bg: #f6f5f7;
    --cw-surface: #ffffff;
    --cw-surface-alt: #ffffff;
    --cw-body-text: #3d3a42;
    --cw-heading-text: #242129;
    --cw-text-muted: #85808c;
    --cw-border: #e3e1e7;
    --cw-border-light: #efedf2;
    --cw-link: #705b8e;
    --cw-link-hover: #54446a;
    --cw-primary: #705b8e;
    --cw-primary-rgb: 112, 91, 142;
    --cw-primary-dark: #54446a;
    --cw-primary-light: #9c8ab6;
    --cw-primary-contrast: #ffffff;
    --cw-accent: #937cb3;
    --cw-accent-soft: #f1edf7;
    --cw-navbar-bg: #705b8e;
    --cw-navbar-border: #54446a;
    --cw-navbar-text: rgba(255, 255, 255, .92);
    --cw-navbar-text-hover: #ffffff;
    --cw-brand-text: #ffffff;
    --cw-brand-accent: #ffffff;
    --cw-dropdown-bg: #281c38;
    --cw-dropdown-text: #e3dbed;
    --cw-sidebar-bg: #ffffff;
    --cw-sidebar-text: #3d3a42;
    --cw-sidebar-link-hover: #705b8e;
    --cw-sidebar-header-bg: #f1edf7;
    --cw-sidebar-header-text: #54446a;
    --cw-footer-bg: #26202f;
    --cw-footer-text: #aaa4b3;
    --cw-footer-heading: #ffffff;
    --cw-footer-bottom-bg: #141119;
    --cw-footer-bottom-text: #aaa4b3;
    --cw-table-stripe: #f8f6fa;
    --cw-table-header-bg: #f1edf7;
    --cw-table-header-text: #54446a;
    --cw-success: #5cb85c;
    --cw-success-rgb: 92, 184, 92;
    --cw-warning: #e0a940;
    --cw-warning-rgb: 224, 169, 64;
    --cw-danger: #d9534f;
    --cw-danger-rgb: 217, 83, 79;
    --cw-info: #5bc0de;
    --cw-info-rgb: 91, 192, 222;
}

/* ══ 5b. CW Purple (Amethyst) — DARK ═════════════════════════════════════
   Same cooler/desaturated hue rotation as 5a (see that block's comment)
   applied to the original dark-mode values, lightness unchanged. ══════ */
[data-cw-theme="cwpurple"][data-bs-theme="dark"] {
    --cw-body-bg: #18161b;
    --cw-surface: #211d26;
    --cw-surface-alt: #27232d;
    --cw-body-text: #dcd8e1;
    --cw-heading-text: #f1eff4;
    --cw-text-muted: #97919f;
    --cw-border: #332e39;
    --cw-border-light: #2c2732;
    --cw-link: #b39ed0;
    --cw-link-hover: #c9badf;
    --cw-primary: #9c8ab6;
    --cw-primary-rgb: 156, 138, 182;
    --cw-primary-dark: #b4a5ca;
    --cw-primary-light: #cdc0df;
    --cw-primary-contrast: #181320;
    --cw-accent: #9c8ab6;
    --cw-accent-soft: #2b2335;
    --cw-navbar-bg: #4a3a60;
    --cw-navbar-border: #2f243f;
    --cw-navbar-text: rgba(255, 255, 255, .85);
    --cw-navbar-text-hover: #ffffff;
    --cw-brand-text: #ffffff;
    --cw-brand-accent: #ffffff;
    --cw-dropdown-bg: #181121;
    --cw-dropdown-text: #dad3e4;
    --cw-sidebar-bg: #211d26;
    --cw-sidebar-text: #dcd8e1;
    --cw-sidebar-link-hover: #b4a5ca;
    --cw-sidebar-header-bg: #27242c;
    --cw-sidebar-header-text: #97919f;
    --cw-footer-bg: #18131e;
    --cw-footer-text: #8e8995;
    --cw-footer-heading: #eae7ef;
    --cw-footer-bottom-bg: #0d0912;
    --cw-footer-bottom-text: #8e8995;
    --cw-table-stripe: #25222a;
    --cw-table-header-bg: #2d2834;
    --cw-table-header-text: #c9badf;
    --cw-success: #62c462;
    --cw-success-rgb: 98, 196, 98;
    --cw-warning: #f0c060;
    --cw-warning-rgb: 240, 192, 96;
    --cw-danger: #e46b67;
    --cw-danger-rgb: 228, 107, 103;
    --cw-info: #6fcfe8;
    --cw-info-rgb: 111, 207, 232;
}

/* ══ 6a. CW Eggplant — LIGHT ═════════════════════════════════════════════
   Deep aubergine/plum chrome paired with a sage-green secondary accent, in
   the spirit of the classic Windows "Eggplant" desktop theme (plum active
   title bar, sage-green desktop). ═══════════════════════════════════════ */
[data-cw-theme="cweggplant"] {
    --cw-body-bg: #f3f5f0;
    --cw-surface: #ffffff;
    --cw-surface-alt: #f8faf6;
    --cw-body-text: #363a34;
    --cw-heading-text: #1f221d;
    --cw-text-muted: #7c8177;
    --cw-border: #dde3d7;
    --cw-border-light: #eaf0e4;
    --cw-link: #5c2a4d;
    --cw-link-hover: #431d38;
    --cw-primary: #5c2a4d;
    --cw-primary-rgb: 92, 42, 77;
    --cw-primary-dark: #431d38;
    --cw-primary-light: #875a78;
    --cw-primary-contrast: #ffffff;
    --cw-accent: #6f8f5b;
    --cw-accent-soft: #eef3e8;
    --cw-navbar-bg: #5c2a4d;
    --cw-navbar-border: #431d38;
    --cw-navbar-text: rgba(255, 255, 255, .92);
    --cw-navbar-text-hover: #ffffff;
    --cw-brand-text: #ffffff;
    --cw-brand-accent: #ffffff;
    --cw-dropdown-bg: #24101e;
    --cw-dropdown-text: #e8d5e2;
    --cw-sidebar-bg: #ffffff;
    --cw-sidebar-text: #363a34;
    --cw-sidebar-link-hover: #5c2a4d;
    --cw-sidebar-header-bg: #eef3e8;
    --cw-sidebar-header-text: #431d38;
    --cw-footer-bg: #24101e;
    --cw-footer-text: #9c8b96;
    --cw-footer-heading: #ffffff;
    --cw-footer-bottom-bg: #160a12;
    --cw-footer-bottom-text: #9c8b96;
    --cw-table-stripe: #f6f9f3;
    --cw-table-header-bg: #eef3e8;
    --cw-table-header-text: #431d38;
    --cw-success: #5c9c4f;
    --cw-success-rgb: 92, 156, 79;
    --cw-warning: #c99a3e;
    --cw-warning-rgb: 201, 154, 62;
    --cw-danger: #c0392b;
    --cw-danger-rgb: 192, 57, 43;
    --cw-info: #4a7d99;
    --cw-info-rgb: 74, 125, 153;
}

/* ══ 6b. CW Eggplant — DARK ══════════════════════════════════════════════ */
[data-cw-theme="cweggplant"][data-bs-theme="dark"] {
    --cw-body-bg: #151713;
    --cw-surface: #1d201a;
    --cw-surface-alt: #232620;
    --cw-body-text: #d7dbd1;
    --cw-heading-text: #eef1ea;
    --cw-text-muted: #8d9288;
    --cw-border: #2c3027;
    --cw-border-light: #262a21;
    --cw-link: #c090b5;
    --cw-link-hover: #d4b0c9;
    --cw-primary: #a06d95;
    --cw-primary-rgb: 160, 109, 149;
    --cw-primary-dark: #c090b5;
    --cw-primary-light: #d4b0c9;
    /* Precise recompute of the prior session's rounded 4.50:1 confirmed this still falls just short
       (4.498:1) -- reuses this block's own --cw-footer-bottom-bg (already the darkest, near-black
       tone in the block) in place of the previous #1c1019, which is itself already very dark and had
       little headroom left to darken further without going off-palette. */
    --cw-primary-contrast: #0a0509;
    --cw-accent: #8fae7a;
    --cw-accent-soft: #20291c;
    --cw-navbar-bg: #3a1a30;
    --cw-navbar-border: #24101e;
    --cw-navbar-text: rgba(255, 255, 255, .85);
    --cw-navbar-text-hover: #ffffff;
    --cw-brand-text: #ffffff;
    --cw-brand-accent: #ffffff;
    --cw-dropdown-bg: #170b13;
    --cw-dropdown-text: #e3cdda;
    --cw-sidebar-bg: #1d201a;
    --cw-sidebar-text: #d7dbd1;
    --cw-sidebar-link-hover: #c090b5;
    --cw-sidebar-header-bg: #252a1f;
    --cw-sidebar-header-text: #8d9288;
    --cw-footer-bg: #120a10;
    --cw-footer-text: #8f8289;
    --cw-footer-heading: #ecdde7;
    --cw-footer-bottom-bg: #0a0509;
    --cw-footer-bottom-text: #8f8289;
    --cw-table-stripe: #20241b;
    --cw-table-header-bg: #262b20;
    --cw-table-header-text: #d4b0c9;
    --cw-success: #7cb86a;
    --cw-success-rgb: 124, 184, 106;
    --cw-warning: #dab35c;
    --cw-warning-rgb: 218, 179, 92;
    --cw-danger: #e2685a;
    --cw-danger-rgb: 226, 104, 90;
    --cw-info: #5fa0bd;
    --cw-info-rgb: 95, 160, 189;
}

/* ══ 7a. CW Desert — LIGHT ═══════════════════════════════════════════════
   Classic pink-and-green Southwest desert palette: dusty cactus-flower rose
   chrome, sage-green secondary accent, warm sandy page. ═══════════════════ */
[data-cw-theme="cwdesert"] {
    --cw-body-bg: #f7f3ee;
    --cw-surface: #fffdfb;
    --cw-surface-alt: #fdf8f3;
    --cw-body-text: #463b35;
    --cw-heading-text: #2a221e;
    --cw-text-muted: #8a7d73;
    --cw-border: #e6ddd2;
    --cw-border-light: #f0e9e0;
    --cw-link: #a24f5c;
    --cw-link-hover: #a24f5c;
    /* Previewed two reuse-first options for this theme's 3.63:1 primary/primary-contrast failure:
       (A) darken the effective button/badge accent to this block's own --cw-primary-dark, keeping
       white text (5.51:1) -- or (B) keep --cw-primary as-is and flip to a dark in-family text color
       (e.g. this block's own --cw-footer-bg). Computed precisely rather than eyeballed: B tops out at
       only 3.84:1 even with the darkest reusable token in this block, since --cw-primary itself isn't
       dark enough for ANY reused dark text to clear 4.5:1 -- only A is achievable via reuse-first, so
       A is applied. --cw-primary-dark keeps its own value (now equal to the new --cw-primary), so the
       hover/active button state no longer visually darkens further -- a minor, accepted cosmetic
       trade-off, not an accessibility one. */
    --cw-primary: #a24f5c;
    --cw-primary-rgb: 162, 79, 92;
    --cw-primary-dark: #a24f5c;
    --cw-primary-light: #dd97a3;
    --cw-primary-contrast: #ffffff;
    --cw-accent: #7a9471;
    --cw-accent-soft: #f2f6ee;
    /* Darkened from --cw-primary (#c66b7a, too light for readable nav text at any reasonable alpha --
       even opaque white only cleared 3.63:1) to this block's own --cw-footer-bg, a dark in-family
       dusty-rose-brown already used elsewhere in this palette. --cw-primary itself stays untouched
       so links/badges/the primary swatch keep their original rose. */
    --cw-navbar-bg: #3a2822;
    --cw-navbar-border: #a24f5c;
    --cw-navbar-text: #ffffff;
    --cw-navbar-text-hover: #ffffff;
    --cw-brand-text: #ffffff;
    --cw-brand-accent: #ffffff;
    --cw-dropdown-bg: #3a1f22;
    --cw-dropdown-text: #f0dbdf;
    --cw-sidebar-bg: #fffdfb;
    --cw-sidebar-text: #463b35;
    --cw-sidebar-link-hover: #a24f5c;
    --cw-sidebar-header-bg: #f2f6ee;
    --cw-sidebar-header-text: #a24f5c;
    --cw-footer-bg: #3a2822;
    --cw-footer-text: #b0a196;
    --cw-footer-heading: #ffffff;
    --cw-footer-bottom-bg: #211611;
    --cw-footer-bottom-text: #b0a196;
    --cw-table-stripe: #faf6f1;
    --cw-table-header-bg: #f2f6ee;
    --cw-table-header-text: #a24f5c;
    --cw-success: #6f9c5c;
    --cw-success-rgb: 111, 156, 92;
    --cw-warning: #c99a4a;
    --cw-warning-rgb: 201, 154, 74;
    --cw-danger: #c1503f;
    --cw-danger-rgb: 193, 80, 63;
    --cw-info: #5a93a8;
    --cw-info-rgb: 90, 147, 168;
}

/* ══ 7b. CW Desert — DARK ════════════════════════════════════════════════ */
[data-cw-theme="cwdesert"][data-bs-theme="dark"] {
    --cw-body-bg: #1a1512;
    --cw-surface: #231c18;
    --cw-surface-alt: #29221d;
    --cw-body-text: #ddd3ca;
    --cw-heading-text: #f2ece5;
    --cw-text-muted: #948779;
    --cw-border: #332a23;
    --cw-border-light: #2b241f;
    --cw-link: #e2adb6;
    --cw-link-hover: #eecbd1;
    --cw-primary: #d99aa5;
    --cw-primary-rgb: 217, 154, 165;
    --cw-primary-dark: #e2adb6;
    --cw-primary-light: #eecbd1;
    --cw-primary-contrast: #2a1418;
    --cw-accent: #9fbd8f;
    --cw-accent-soft: #232920;
    --cw-navbar-bg: #6e3742;
    --cw-navbar-border: #4a232b;
    --cw-navbar-text: rgba(255, 255, 255, .85);
    --cw-navbar-text-hover: #ffffff;
    --cw-brand-text: #ffffff;
    --cw-brand-accent: #ffffff;
    --cw-dropdown-bg: #26161a;
    --cw-dropdown-text: #ecd3d8;
    --cw-sidebar-bg: #231c18;
    --cw-sidebar-text: #ddd3ca;
    --cw-sidebar-link-hover: #e2adb6;
    --cw-sidebar-header-bg: #2b2419;
    --cw-sidebar-header-text: #ddd3ca;
    --cw-footer-bg: #1c1310;
    --cw-footer-text: #a09385;
    --cw-footer-heading: #f0ddd0;
    --cw-footer-bottom-bg: #100a08;
    --cw-footer-bottom-text: #a09385;
    --cw-table-stripe: #251e19;
    --cw-table-header-bg: #2c241d;
    --cw-table-header-text: #eecbd1;
    --cw-success: #8fc27a;
    --cw-success-rgb: 143, 194, 122;
    --cw-warning: #dab35f;
    --cw-warning-rgb: 218, 179, 95;
    --cw-danger: #d97966;
    --cw-danger-rgb: 217, 121, 102;
    --cw-info: #6cb0c4;
    --cw-info-rgb: 108, 176, 196;
}

/* ══ 8a. Steampowered — LIGHT ════════════════════════════════════════════
   Rebuilt from two authentic reference implementations rather than
   interpolated guesses: D:\webdev\hl2gen\styles.css (a live Steam-era-styled
   tool: body #282E22, card #4C5844, label/link gold #BFBA50, body text
   Alabaster #D8DED3, footer #3E4637/#75806F) and
   D:\webdev\twp\static\css\twp-steampowered.css (a full Bootstrap skin:
   navbar/masthead #1A1C19 with a gold border-bottom, --bs-danger #D55252,
   --bs-success #7EA55B, button-active gold #B5A44A/#D2C16B, gold-tinted
   "distinguished" panel #342E0E). Confirmed against archived
   steampowered.com captures too: the real site was never a pale/white UI --
   Alabaster is a TEXT color here, not a background, and that holds even in
   this LIGHT block, per explicit instruction: "even light mode is fairly
   dark, which is expected." Dark mode below intensifies the same family one
   tier further using TWP's near-black masthead tone as the floor. ═══════ */
[data-cw-theme="steampowered"] {
    --cw-body-bg: #282e22;
    --cw-surface: #4c5844;
    --cw-surface-alt: #3e4637;
    /* Reuses --cw-surface-alt (already the next tier darker than --cw-surface in this theme's
       three-tier ramp) rather than a new one-off hex -- matches the reference
       twp-steampowered.css .card-body textarea (#3B4234, essentially identical) sitting visibly
       darker than its card. Every other theme falls back to --cw-input-bg's --cw-surface default
       (input == card), which is why this needs an explicit override here and not everywhere. */
    --cw-input-bg: #3e4637;
    --cw-body-text: #d8ded3;
    --cw-heading-text: #d8ded3;
    --cw-text-muted: #75806f;
    --cw-border: #818d7c;
    --cw-border-light: #3e4637;
    --cw-link: #bfba50;
    --cw-link-hover: #ffffff;
    --cw-primary: #bfba50;
    --cw-primary-rgb: 191, 186, 80;
    --cw-primary-dark: #b5a44a;
    --cw-primary-light: #d2c16b;
    --cw-primary-contrast: #1a1c19;
    --cw-accent: #bfba50;
    --cw-accent-soft: #342e0e;
    --cw-navbar-bg: #1a1c19;
    --cw-navbar-border: #bfba50;
    --cw-navbar-text: rgba(216, 222, 211, .92);
    --cw-navbar-text-hover: #bfba50;
    --cw-brand-text: #d8ded3;
    --cw-brand-accent: #bfba50;
    --cw-dropdown-bg: #1a1c19;
    --cw-dropdown-text: #d8ded3;
    --cw-sidebar-bg: #4c5844;
    --cw-sidebar-text: #d8ded3;
    --cw-sidebar-link-hover: #bfba50;
    --cw-sidebar-header-bg: #1a1c19;
    --cw-sidebar-header-text: #bfba50;
    --cw-footer-bg: #3e4637;
    /* Was --cw-text-muted's #75806f, which only cleared 2.38:1 against this footer bg (a real
       failure) and 3.35:1 against the even-darker footer-bottom bg -- reuses this block's own
       --cw-body-text (already used for exactly this "readable text on a dark surface" role
       elsewhere, e.g. --cw-sidebar-text) instead. */
    --cw-footer-text: #d8ded3;
    --cw-footer-heading: #bfba50;
    --cw-footer-bottom-bg: #272f20;
    --cw-footer-bottom-text: #d8ded3;
    --cw-table-stripe: #424b3b;
    --cw-table-header-bg: #1a1c19;
    --cw-table-header-text: #bfba50;
    --cw-success: #7ea55b;
    --cw-success-rgb: 126, 165, 91;
    --cw-warning: #bfba50;
    --cw-warning-rgb: 191, 186, 80;
    --cw-danger: #d55252;
    --cw-danger-rgb: 213, 82, 82;
    --cw-info: #4f7a7a;
    --cw-info-rgb: 79, 122, 122;
}

/* ══ 8b. Steampowered — DARK ═════════════════════════════════════════════
   One tier darker than 8a across the board, still built from the same two
   reference files: body/surface step down through the family
   (#1A1C19 -> #282E22 -> #3E4637), navbar/dropdown/table-header/sidebar-
   header drop to TWP's masthead floor tone #111 (D:\webdev\twp\static\css\
   twp-steampowered.css .twp-masthead { background:#111 }), and
   --cw-accent-soft uses TWP's --twp-dist-body-bg (#2A250A), one tier below
   8a's --twp-dist-header-bg (#342E0E). Gold/danger/success stay the same
   hue family as light mode -- old-gold and #D55252 red don't need to shift
   for dark-surface legibility, they already read clearly against both
   tiers. ══════════════════════════════════════════════════════════════ */
[data-cw-theme="steampowered"][data-bs-theme="dark"] {
    --cw-body-bg: #1a1c19;
    --cw-surface: #282e22;
    --cw-surface-alt: #3e4637;
    /* Unlike the light block, --cw-surface-alt is LIGHTER than --cw-surface here (this theme's
       ramp inverts direction between modes), so it can't be reused for "darker than the card" --
       --cw-body-bg is the one token that's still reliably darker than --cw-surface in this mode. */
    --cw-input-bg: #1a1c19;
    --cw-body-text: #d8ded3;
    --cw-heading-text: #ffffff;
    --cw-text-muted: #75806f;
    --cw-border: #717c69;
    --cw-border-light: #272f20;
    --cw-link: #bfba50;
    --cw-link-hover: #ffffff;
    --cw-primary: #bfba50;
    --cw-primary-rgb: 191, 186, 80;
    --cw-primary-dark: #b5a44a;
    --cw-primary-light: #d2c16b;
    --cw-primary-contrast: #111111;
    --cw-accent: #bfba50;
    --cw-accent-soft: #2a250a;
    --cw-navbar-bg: #111111;
    --cw-navbar-border: #bfba50;
    --cw-navbar-text: rgba(216, 222, 211, .85);
    --cw-navbar-text-hover: #bfba50;
    --cw-brand-text: #d8ded3;
    --cw-brand-accent: #bfba50;
    --cw-dropdown-bg: #111111;
    --cw-dropdown-text: #d8ded3;
    --cw-sidebar-bg: #282e22;
    --cw-sidebar-text: #d8ded3;
    --cw-sidebar-link-hover: #bfba50;
    --cw-sidebar-header-bg: #111111;
    --cw-sidebar-header-text: #bfba50;
    --cw-footer-bg: #272f20;
    --cw-footer-text: #d8ded3;
    --cw-footer-heading: #bfba50;
    --cw-footer-bottom-bg: #111111;
    --cw-footer-bottom-text: #75806f;
    --cw-table-stripe: #353c2f;
    --cw-table-header-bg: #111111;
    --cw-table-header-text: #bfba50;
    --cw-success: #7ea55b;
    --cw-success-rgb: 126, 165, 91;
    --cw-warning: #bfba50;
    --cw-warning-rgb: 191, 186, 80;
    --cw-danger: #d55252;
    --cw-danger-rgb: 213, 82, 82;
    --cw-info: #5c9090;
    --cw-info-rgb: 92, 144, 144;
}

/* ══ 9a. CW Alloc — LIGHT ════════════════════════════════════════════════
   Colors sourced from the legacy CWAlloc stylesheet (cwalloc_style.css),
   placed the same way CW Maroon/CW Purple place their colors on CWPanel's
   structure. Legacy panel/header blue #7CAFC2 was too pale for direct use
   as link/button text (~1.9:1 against white), so it's deepened here into
   --cw-primary/--cw-navbar-bg (#3F7F96) and the original #7CAFC2 is reused
   verbatim as --cw-primary-light instead. --cw-accent-soft and
   --cw-table-header-bg reuse the legacy panel fill #C1D9E2 exactly (the
   color every "inner" panel -- loginprompt, pooltable, adminsearchinner --
   used). --cw-accent is the legacy image-hover border color #823400 (burnt
   orange), the only warm color in the source file, promoted to a real
   accent role. --cw-table-stripe is a near-white tint of the legacy
   button/input fill #DDDDFF. Status colors are deepened versions of the
   legacy status-message pastels (.statusmessageinnere #DDBBBB dusty pink,
   .statusmessageinners #BBDDBB mint green, .statusmessageinneri #C1D9E2
   pale blue) -- the pastels themselves are too washed out for a status
   badge/text role, so hue is preserved and saturation/value raised to match
   the other themes' status-color weight. warning has no legacy source (the
   original only had error/success/info), so it reuses the muted-gold
   warning already established across CW Maroon/Purple/Eggplant/Desert.
   ═════════════════════════════════════════════════════════════════════ */
[data-cw-theme="cwalloc"] {
    --cw-body-bg: #f4f6f7;
    --cw-surface: #ffffff;
    --cw-surface-alt: #ffffff;
    --cw-body-text: #333a3d;
    --cw-heading-text: #1c2224;
    --cw-text-muted: #798488;
    --cw-border: #dde6ea;
    --cw-border-light: #eef4f6;
    --cw-link: #2f6377;
    --cw-link-hover: #2f6377;
    /* Precise recompute of the prior session's rounded 4.48:1 confirmed white against --cw-primary
       genuinely falls short (4.480:1). No existing token in this block works as a substitute
       background for just the resting .btn-primary state without also breaking the hover/active
       state (bg --cw-primary-dark, already fine with white) -- reusing a darker existing token here
       would either be too dark (collapsing hover and resting to the same look) or reintroduce the
       button_hover failure a first attempt at this ran into. A minimal, same-hue nudge darker
       (#3f7f96 -> #3a7790, ~3% per channel) is the smallest change that clears 4.5:1 with white
       while leaving --cw-primary-dark/link/navbar (already fixed separately) untouched. */
    --cw-primary: #3a7790;
    --cw-primary-rgb: 58, 119, 144;
    --cw-primary-dark: #2f6377;
    --cw-primary-light: #7cafc2;
    --cw-primary-contrast: #ffffff;
    --cw-accent: #823400;
    --cw-accent-soft: #c1d9e2;
    /* Darkened from --cw-primary (#3f7f96, too light for readable nav text -- even opaque white only
       cleared 4.48:1) to this block's own --cw-footer-bg, the same dark navy-teal reused above.
       --cw-primary itself stays untouched so links/badges/the primary swatch keep their original
       teal. */
    --cw-navbar-bg: #1c2b30;
    --cw-navbar-border: #2f6377;
    --cw-navbar-text: #ffffff;
    --cw-navbar-text-hover: #ffffff;
    --cw-brand-text: #ffffff;
    --cw-brand-accent: #ffffff;
    --cw-dropdown-bg: #17323c;
    --cw-dropdown-text: #d5e6ea;
    --cw-sidebar-bg: #ffffff;
    --cw-sidebar-text: #333a3d;
    --cw-sidebar-link-hover: #3a7790;
    --cw-sidebar-header-bg: #c1d9e2;
    --cw-sidebar-header-text: #2f6377;
    --cw-footer-bg: #1c2b30;
    --cw-footer-text: #92a3a8;
    --cw-footer-heading: #ffffff;
    --cw-footer-bottom-bg: #0c1417;
    --cw-footer-bottom-text: #92a3a8;
    --cw-table-stripe: #f2f2ff;
    --cw-table-header-bg: #c1d9e2;
    --cw-table-header-text: #2f6377;
    --cw-success: #5fa25f;
    --cw-success-rgb: 95, 162, 95;
    --cw-warning: #c99a3e;
    --cw-warning-rgb: 201, 154, 62;
    --cw-danger: #c15f5f;
    --cw-danger-rgb: 193, 95, 95;
    --cw-info: #5aa0ab;
    --cw-info-rgb: 90, 160, 171;
}

/* ══ 9b. CW Alloc — DARK ═════════════════════════════════════════════════
   --cw-link/--cw-primary-dark reuse light mode's --cw-primary-light
   (#7CAFC2, the literal legacy header blue) as the brighter dark-mode tone,
   same convention as every other theme's dark block. --cw-navbar-bg is a
   bespoke deeper teal-navy rather than a mechanical darkening of primary,
   matching CWPanel dark's own precedent (see 1b's comment) that navbar
   chrome reads darker overall in dark mode, not just a recolored light
   navbar. --cw-accent brightens the legacy burnt-orange (#823400 is too
   dark/near-black-brown to read against a dark background on its own).
   ═════════════════════════════════════════════════════════════════════ */
[data-cw-theme="cwalloc"][data-bs-theme="dark"] {
    --cw-body-bg: #12191c;
    --cw-surface: #1a2226;
    --cw-surface-alt: #20292d;
    --cw-body-text: #d3dcdf;
    --cw-heading-text: #eef3f4;
    --cw-text-muted: #8a969a;
    --cw-border: #2a3438;
    --cw-border-light: #232d31;
    --cw-link: #7cafc2;
    --cw-link-hover: #a3c9d6;
    --cw-primary: #6ea8bd;
    --cw-primary-rgb: 110, 168, 189;
    --cw-primary-dark: #7cafc2;
    --cw-primary-light: #a3c9d6;
    --cw-primary-contrast: #0c1a1f;
    --cw-accent: #d97b3f;
    --cw-accent-soft: #1f2e33;
    --cw-navbar-bg: #1c3e4a;
    --cw-navbar-border: #0f242b;
    --cw-navbar-text: rgba(255, 255, 255, .85);
    --cw-navbar-text-hover: #ffffff;
    --cw-brand-text: #ffffff;
    --cw-brand-accent: #ffffff;
    --cw-dropdown-bg: #081418;
    --cw-dropdown-text: #c9dde2;
    --cw-sidebar-bg: #1a2226;
    --cw-sidebar-text: #d3dcdf;
    --cw-sidebar-link-hover: #7cafc2;
    --cw-sidebar-header-bg: #212b2f;
    --cw-sidebar-header-text: #8a969a;
    --cw-footer-bg: #0c1417;
    --cw-footer-text: #859498;
    --cw-footer-heading: #e5eef0;
    --cw-footer-bottom-bg: #060b0d;
    --cw-footer-bottom-text: #859498;
    --cw-table-stripe: #212b2f;
    --cw-table-header-bg: #23323a;
    --cw-table-header-text: #a3c9d6;
    --cw-success: #74bb74;
    --cw-success-rgb: 116, 187, 116;
    --cw-warning: #dab35c;
    --cw-warning-rgb: 218, 179, 92;
    --cw-danger: #d97e7e;
    --cw-danger-rgb: 217, 126, 126;
    --cw-info: #72b8c2;
    --cw-info-rgb: 114, 184, 194;
}

/* ══ 10a. Win95 — LIGHT ══════════════════════════════════════════════════
   Classic Windows 95/98 desktop, built from the standard 16-color VGA/
   system palette: Navy #000080 (active titlebar), Silver #C0C0C0 (window/
   dialog face -- NOT white; Win95 chrome was always grey, white was
   reserved for text fields/list boxes), Gray #808080 (3D shadow bevel and
   status-bar/column-header bands), Teal #008080 (desktop background --
   the ONLY place color other than grey/navy appears, per the "mostly
   neutral grey, teal as the main page background" brief), plus Maroon
   #800000 for --cw-accent and the classic pure Red/Green/Blue/Olive quartet
   for status colors. --cw-dropdown-bg is deliberately the SAME light grey
   as every other surface here (#C0C0C0 face, black text) -- real Win95
   context/Start menus were light grey, not dark, unlike every other theme
   in this file. --cw-border-light is pure white and --cw-border is mid
   gray, recreating the classic "outset" 3D bevel (white top/left highlight,
   gray bottom/right shadow) against the grey #C0C0C0 surface.
   --cw-input-bg is the one token that isn't consumed by any Bootstrap
   bridge above -- site.css reads it (with a --cw-surface fallback for
   every other theme) so that real edit controls/dropdowns render authentic
   white, distinct from the grey #C0C0C0 dialog-face --cw-surface used for
   card/panel chrome, instead of inheriting the page's teal --cw-body-bg.
   --cw-card-header-bg/--cw-card-header-text (site.css, --cw-surface-alt/
   --cw-body-text fallback for every other theme) make .card-header render
   as a navy titlebar with white text -- same navy as --cw-navbar-bg -- so
   cards read as miniature Win95 windows, not flat panels. --cw-heading-text
   is white (not black like --cw-body-text) specifically so bare page-title
   <h1>-<h6> tags stand out against the teal --cw-body-bg; --cw-table-header
   -bg/--cw-sidebar-header-bg get the same navy titlebar treatment as
   --cw-card-header-bg for consistency across every "head" in the shell.
   ═════════════════════════════════════════════════════════════════════ */
[data-cw-theme="win95"] {
    --cw-body-bg: #008080;
    --cw-surface: #c0c0c0;
    --cw-surface-alt: #dfdfdf;
    --cw-input-bg: #ffffff;
    --cw-card-header-bg: #000080;
    --cw-card-header-text: #ffffff;
    --cw-body-text: #000000;
    --cw-heading-text: #ffffff;
    --cw-text-muted: #808080;
    --cw-border: #808080;
    --cw-border-light: #ffffff;
    /* Classic old-school hyperlink blue (#0000ff, the literal early-web/Win95 default) -- kept, not
       "fixed" away, because --cw-surface/--cw-input-bg (the grey dialog face and white fields most
       link text actually renders on -- table cells, list items, card content) is the real dominant
       context, and #0000ff reads great there (4.72:1 / 8.59:1). It only measures 1.80:1 against the
       teal --cw-body-bg -- a much rarer context (link text floating directly on the desktop backdrop,
       outside any card) -- and no color satisfies both a light-grey/white surface AND a mid-tone teal
       backdrop at once (dark text needs low luminance for the former, which tanks contrast against
       the latter). An earlier pass over-corrected for the rare teal case with translucent/near-white
       text and made the common grey-surface case nearly illegible (1.82:1) -- reverted. The teal
       shortfall is tracked as a documented exception in contrast.py's ACCEPTED_EXCEPTIONS rather than
       silently ignored. */
    --cw-link: #0000ff;
    --cw-link-hover: #000080;
    --cw-primary: #000080;
    --cw-primary-rgb: 0, 0, 128;
    --cw-primary-dark: #000058;
    --cw-primary-light: #1084d0;
    --cw-primary-contrast: #ffffff;
    --cw-accent: #800000;
    --cw-accent-soft: #e8ecf0;
    --cw-navbar-bg: #000080;
    --cw-navbar-border: #000058;
    --cw-navbar-text: rgba(255, 255, 255, .95);
    --cw-navbar-text-hover: #ffffff;
    --cw-brand-text: #ffffff;
    --cw-brand-accent: #ffffff;
    --cw-dropdown-bg: #c0c0c0;
    --cw-dropdown-text: #000000;
    --cw-sidebar-bg: #c0c0c0;
    --cw-sidebar-text: #000000;
    --cw-sidebar-link-hover: #000080;
    --cw-sidebar-header-bg: #000080;
    --cw-sidebar-header-text: #ffffff;
    --cw-footer-bg: #c0c0c0;
    --cw-footer-text: #000000;
    --cw-footer-heading: #000080;
    --cw-footer-bottom-bg: #808080;
    /* Was white (3.95:1 against this mid-grey bevel bg, short of 4.5:1) -- reuses this block's own
       --cw-footer-text black instead, which clears 5.32:1 against the same grey. */
    --cw-footer-bottom-text: #000000;
    --cw-table-stripe: #dfdfdf;
    --cw-table-header-bg: #000080;
    --cw-table-header-text: #ffffff;
    --cw-success: #008000;
    --cw-success-rgb: 0, 128, 0;
    --cw-warning: #808000;
    --cw-warning-rgb: 128, 128, 0;
    --cw-danger: #ff0000;
    --cw-danger-rgb: 255, 0, 0;
    --cw-info: #0000ff;
    --cw-info-rgb: 0, 0, 255;
}

/* ══ 10b. Win95 — DARK ═══════════════════════════════════════════════════
   Deliberately NOT the "High Contrast Black" accessibility scheme this
   block used to be built from -- that was authentic but looked bad in
   practice. Per explicit direction: this is 10a with exactly two changes,
   everything else (navy #000080 primary/card-header/table-header/sidebar-
   header, grey #C0C0C0 surface, maroon accent, white input fields, status
   colors) stays identical to light mode --
   1. --cw-body-bg goes black instead of teal.
   2. --cw-navbar-bg/--cw-navbar-border and --cw-footer-bg/--cw-footer-
      bottom-bg get darkened versions of their 10a values, rather than
      staying the same teal/grey chrome as light mode.
   --cw-footer-text/--cw-footer-heading/--cw-footer-bottom-text are the
   only other values that had to change from 10a, purely because the
   footer's own background got darker -- black-on-grey (10a) had to become
   light-on-dark to stay legible, not a stylistic choice. Every property
   still needs an explicit value here even where it matches 10a -- custom
   properties don't reset between selector blocks that both match the same
   element, so anything left undeclared would still resolve correctly via
   the leak-through from 10a's identical value, but it's spelled out
   explicitly below for clarity rather than relying on that. ═══════════ */
[data-cw-theme="win95"][data-bs-theme="dark"] {
    --cw-body-bg: #000000;
    --cw-surface: #c0c0c0;
    --cw-surface-alt: #dfdfdf;
    --cw-input-bg: #ffffff;
    --cw-card-header-bg: #000080;
    --cw-card-header-text: #ffffff;
    --cw-body-text: #000000;
    --cw-heading-text: #ffffff;
    --cw-text-muted: #808080;
    --cw-border: #808080;
    --cw-border-light: #ffffff;
    /* Same classic #0000ff as the light-mode block above, same reasoning: --cw-surface/--cw-input-bg
       stay identical grey/white in this mode (this theme's whole "authentic Win95" design never
       recolors dialog chrome for dark mode), so the dominant real context is unchanged and this
       reads just as well there (4.72:1 / 8.59:1). A brighter cyan (--cw-primary-light) was tried
       instead to chase this mode's pure-black --cw-body-bg (2.44:1 with classic blue) but only
       measured 2.21:1/4.01:1 against the actually-common grey/white surfaces -- reverted for the
       same reason as the light-mode block. Tracked as a documented exception in contrast.py. */
    --cw-link: #0000ff;
    --cw-link-hover: #000080;
    --cw-primary: #000080;
    --cw-primary-rgb: 0, 0, 128;
    --cw-primary-dark: #000058;
    --cw-primary-light: #1084d0;
    --cw-primary-contrast: #ffffff;
    --cw-accent: #800000;
    --cw-accent-soft: #e8ecf0;
    --cw-navbar-bg: #000040;
    --cw-navbar-border: #000030;
    --cw-navbar-text: rgba(255, 255, 255, .95);
    --cw-navbar-text-hover: #ffffff;
    --cw-brand-text: #ffffff;
    --cw-brand-accent: #ffffff;
    --cw-dropdown-bg: #c0c0c0;
    --cw-dropdown-text: #000000;
    --cw-sidebar-bg: #c0c0c0;
    --cw-sidebar-text: #000000;
    --cw-sidebar-link-hover: #000080;
    --cw-sidebar-header-bg: #000080;
    --cw-sidebar-header-text: #ffffff;
    --cw-footer-bg: #404040;
    --cw-footer-text: #d0d0d0;
    --cw-footer-heading: #1084d0;
    --cw-footer-bottom-bg: #202020;
    --cw-footer-bottom-text: #a0a0a0;
    --cw-table-stripe: #dfdfdf;
    --cw-table-header-bg: #000080;
    --cw-table-header-text: #ffffff;
    --cw-success: #008000;
    --cw-success-rgb: 0, 128, 0;
    --cw-warning: #808000;
    --cw-warning-rgb: 128, 128, 0;
    --cw-danger: #ff0000;
    --cw-danger-rgb: 255, 0, 0;
    --cw-info: #0000ff;
    --cw-info-rgb: 0, 0, 255;
}

/* ══ 11a. CW Verdigris — LIGHT ═══════════════════════════════════════════
   Broadly modeled on CWMonitor/Amber's structure (2a/2b) -- dark chrome
   navbar/dropdown/footer, a primary/accent split doing double duty as the
   theme's two "families" -- but recolored: Amber's brown/gold family becomes
   a verdigris-emerald green family (body/surface/navbar/primary/links all
   sit in that one hue range, per "pale green theme made up of verdigris and
   emerald shades"), and Amber's gold accent/cream-soft pairing becomes
   copper (--cw-accent, --cw-brand-accent, --cw-footer-heading, --cw-warning)
   and pale yellow (--cw-accent-soft, --cw-surface-alt) as the two highlight
   colors called out separately from the green base. --cw-success is
   deliberately shifted toward an olive-lime rather than reusing the
   teal-emerald primary hue, so a success state still reads as visually
   distinct from ordinary brand chrome -- same reasoning Amber applies (its
   own olive-green success #7ba428 sits apart from its gold primary).
   ═════════════════════════════════════════════════════════════════════ */
[data-cw-theme="cwverdigris"] {
    --cw-body-bg: #f3f8f4;
    --cw-surface: #ffffff;
    --cw-surface-alt: #f8f7ec;
    --cw-body-text: #2b352f;
    --cw-heading-text: #17201a;
    --cw-text-muted: #72847a;
    --cw-border: #d3e2da;
    --cw-border-light: #e8f1ec;
    --cw-link: #1f7a63;
    --cw-link-hover: #175e4c;
    /* Previewed two reuse-first options for this theme's 3.96:1 primary/primary-contrast failure:
       (A) darken the effective button/badge accent to this block's own --cw-primary-dark, keeping
       white text (6.46:1) -- or (B) keep --cw-primary as-is and flip to a dark in-family text color
       (e.g. this block's own --cw-navbar-bg/--cw-footer-bg). Computed precisely: B tops out at only
       3.08:1 even with the darkest reusable token in this block -- --cw-primary isn't dark enough
       for ANY reused dark text to clear 4.5:1 -- so only A is achievable via reuse-first. See
       cwdesert-L's identical fix above for the same reasoning. --cw-primary-dark keeps its own
       value, so the hover/active button state no longer visually darkens further -- an accepted
       cosmetic trade-off, not an accessibility one. */
    --cw-primary: #1f6a55;
    --cw-primary-rgb: 31, 106, 85;
    --cw-primary-dark: #1f6a55;
    --cw-primary-light: #5cbfa2;
    --cw-primary-contrast: #ffffff;
    --cw-accent: #b5723c;
    --cw-accent-soft: #faf3d6;
    --cw-navbar-bg: #1c3b32;
    --cw-navbar-border: #1f6a55;
    --cw-navbar-text: #a9c4ba;
    --cw-navbar-text-hover: #7fd6b8;
    --cw-brand-text: #eef7f1;
    --cw-brand-accent: #d9a25c;
    --cw-dropdown-bg: #14261f;
    --cw-dropdown-text: #d3e6dc;
    --cw-sidebar-bg: #ffffff;
    --cw-sidebar-text: #2b352f;
    --cw-sidebar-link-hover: #1f7a63;
    --cw-sidebar-header-bg: #eef7f0;
    --cw-sidebar-header-text: #1f6a55;
    --cw-footer-bg: #1c3b32;
    --cw-footer-text: #a2bdb0;
    --cw-footer-heading: #c9975a;
    --cw-footer-bottom-bg: #0e1f19;
    --cw-footer-bottom-text: #83988c;
    /* Table row/header backgrounds shifted from a plain green tint to pale-yellow/copper-family
       tints -- per "copper and pale-yellow highlights", this theme's two highlight colors were
       barely used anywhere; tables are the highest-visibility place to bring them in. --cw-table-
       stripe reuses a paler cousin of --cw-accent-soft's yellow (kept distinct from --cw-accent-
       soft itself since site.css also uses --cw-accent-soft for row hover -- an identical stripe/
       hover color would make hovering a striped row show no visible change). --cw-table-header-bg
       is a pale copper tint; --cw-table-header-text (--cw-primary) still clears 4.5:1 against it. */
    --cw-table-stripe: #faf6e2;
    --cw-table-header-bg: #f6ead9;
    --cw-table-header-text: #1f6a55;
    --cw-success: #6a9c3f;
    --cw-success-rgb: 106, 156, 63;
    --cw-warning: #c17f3e;
    --cw-warning-rgb: 193, 127, 62;
    --cw-danger: #c0392b;
    --cw-danger-rgb: 192, 57, 43;
    --cw-info: #3d8fa8;
    --cw-info-rgb: 61, 143, 168;
}

/* ══ 11b. CW Verdigris — DARK ════════════════════════════════════════════
   Per explicit direction, dark mode leans further into deep emerald rather
   than just darkening 11a proportionally: body/surface/navbar/sidebar all
   sit in the same near-black emerald family, and primary/link brighten into
   a clear emerald-verdigris green (not amber's usual "brighten the gold"
   move) so the dominant read in dark mode is emerald first, verdigris/
   copper second. Copper (--cw-accent/--cw-brand-accent/--cw-footer-heading/
   --cw-warning) brightens the same way every other theme's dark accent
   does, so it still reads as a warm highlight against the cooler green
   body rather than washing out. ═══════════════════════════════════════ */
[data-cw-theme="cwverdigris"][data-bs-theme="dark"] {
    --cw-body-bg: #0e1913;
    --cw-surface: #142219;
    --cw-surface-alt: #1a2b20;
    --cw-body-text: #d7e5db;
    --cw-heading-text: #eef6f0;
    --cw-text-muted: #8ea395;
    --cw-border: #263a2d;
    --cw-border-light: #203327;
    --cw-link: #6fd6ac;
    --cw-link-hover: #93e3c2;
    --cw-primary: #4dbf94;
    --cw-primary-rgb: 77, 191, 148;
    /* Brightened to this block's own --cw-primary-light -- the old #3a9c78 only cleared 4.25:1 as
       .calendar-event's chip text (on the dark --cw-accent-soft bg), short of 4.5:1. */
    --cw-primary-dark: #8fdcc0;
    --cw-primary-light: #8fdcc0;
    --cw-primary-contrast: #0a1712;
    --cw-accent: #d99a5c;
    --cw-accent-soft: #2e2a18;
    --cw-navbar-bg: #16281f;
    --cw-navbar-border: #4dbf94;
    --cw-navbar-text: #a9c4ba;
    --cw-navbar-text-hover: #8fdcc0;
    --cw-brand-text: #eef7f1;
    --cw-brand-accent: #d9a25c;
    --cw-dropdown-bg: #0f1c15;
    --cw-dropdown-text: #cfe3d6;
    --cw-sidebar-bg: #142219;
    --cw-sidebar-text: #d7e5db;
    --cw-sidebar-link-hover: #4dbf94;
    --cw-sidebar-header-bg: #1c2f24;
    --cw-sidebar-header-text: #8ea395;
    --cw-footer-bg: #16281f;
    --cw-footer-text: #94aa9c;
    --cw-footer-heading: #d9a25c;
    --cw-footer-bottom-bg: #081310;
    --cw-footer-bottom-text: #6f8478;
    /* Same copper/pale-yellow shift as 11a's light-mode table tokens, darkened -- --cw-table-
       header-bg reuses this block's own --cw-accent-soft value directly (a muted dark copper/gold,
       already proven at ~9:1 against --cw-table-header-text below); --cw-table-stripe is a subtler,
       less-saturated warm-dark tint so it stays distinct from the hover state, which also uses
       --cw-accent-soft (see 11a's comment for why stripe and hover must not match). */
    --cw-table-stripe: #2a2418;
    --cw-table-header-bg: #2e2a18;
    --cw-table-header-text: #8fdcc0;
    --cw-success: #8fc25e;
    --cw-success-rgb: 143, 194, 94;
    --cw-warning: #d9a25c;
    --cw-warning-rgb: 217, 162, 92;
    --cw-danger: #e0665a;
    --cw-danger-rgb: 224, 102, 90;
    --cw-info: #4fa8c4;
    --cw-info-rgb: 79, 168, 196;
}
