/* YOUR WORKSPACE THEME — the designs of the facilitator's own pages (config/themes.php, scope 'workspace'), and of
   Platform Administration for the ones marked 'admin'. Linked by ThemeService::links() only on a page carrying one
   (ThemeComposer's reaches), so the default look and every other page load none of this. Values: docs/facilitator-area-design-target-2026-10-08.html,
   each theme's own block; wording and widths stay the platform's. A value both sides of a design share is declared once, in
   public/css/themes/<slug>.css on :root:is([data-theme="<slug>"],[data-theme="ws-<slug>"]), linked after this file
   (ThemeService::links); a ws- block below holds only what the working pages set for themselves.

   A theme sets ROLES, never a --brand-* or --site-nav-* name and never --destructive: the top bar, the footer
   band, the cookie banner and the credit block do not change (Tests\Feature\ThemeMechanismTest). The --app-*
   names are read by the app's shared heading, kicker, label and button rules with today's value as fallback,
   and no participant theme sets them, so they cannot move a participant page. */

:root[data-theme^="ws-"]{
  /* Derived the same way in every theme: the rail is the ink laid into the ground, its panels lighter steps. */
  --rail:color-mix(in srgb, var(--ink) 92%, var(--page-bg));
  --rail-panel:color-mix(in srgb, #FFFFFF 6%, var(--rail));
  --rail-hover:color-mix(in srgb, #FFFFFF 10%, var(--rail));
  --rail-active:color-mix(in srgb, #FFFFFF 14%, var(--rail));
  --on-rail:#FFFFFF;
  --on-rail-rgb:255, 255, 255;
  --on-ink-warm:#FFFFFF;
  --on-red-warm:#FFFFFF;
  --card-bg-inset:color-mix(in srgb, var(--card-bg) 55%, var(--page-bg));
  --toggle-bg:color-mix(in srgb, var(--ink) 6%, var(--surface-field));
  --surface-field:#FFFFFF;
  --surface-panel:#FFFFFF;
  --surface-raised:#FFFFFF;
  --color-text-secondary:var(--muted);
  --color-text-tertiary:var(--muted);
  --action-ink:var(--kicker-ink);
  --title-rule:var(--kicker-ink);
  --red:var(--kicker-ink);
  --red-dark:var(--accent);
  --rail-surface:var(--card-bg);
  --card-rule-top:var(--card-edge);
  --radius-field:var(--radius-control);
  --radius-entry:var(--radius-control);
  --radius-chip:var(--radius-control);
  --radius-panel:var(--radius-card);
  --font-body:var(--font-ui);
  --font-mono:var(--font-label);
  --font-code:var(--font-label);
  --font-kicker:var(--font-label);
  --font-button:var(--font-label);
  --font-numeral:var(--font-heading);
  --font-result-heading:var(--font-heading);
  --font-result-body:var(--font-ui);
  --font-result-label:var(--font-label);
  --font-result-ui:var(--font-ui);
  --font-result-figure:var(--font-numeral);
  --tpl-heading:var(--type-card-title);
  --type-section-title:var(--type-card-title);
  --app-title-case:var(--title-case);
  --app-kicker-case:var(--kicker-case);
  --app-button-font:var(--font-button);
  --app-label-font:var(--font-kicker);
  --app-label-ink:var(--kicker-ink);
  --app-label-case:var(--kicker-case);
  --app-label-tracking:var(--app-kicker-tracking);
  --app-label-weight:var(--app-kicker-weight);
}

/* ── Consultancy ── */
:root[data-theme="ws-consultancy"]{
  --surface-card:#FFFFFF;
  --card-edge:1px solid #DDE3EC;
  --app-button-radius:4px;
  --muted:#5C6B82;
  --accent:#14213D; --primary-fill:#14213D;
  --font-ui:'IBM Plex Sans', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:28px; --type-card-title:17px; --type-card-kicker:11px; --tpl-kicker-size:11px;
  --app-title-weight:600; --app-title-tracking:0;
  --app-kicker-weight:600; --app-kicker-tracking:.16em;
  --app-button-weight:600; --app-button-case:none; --app-button-tracking:.04em;
  --app-lead-rule:3px solid #2F5D9E;
}

/* ── Editorial ── */
:root[data-theme="ws-editorial"]{
  --surface-card:transparent;
  --card-border:transparent; --card-edge:0 solid transparent;
  --card-rule-top:2px solid #111111; --section-rule-top:var(--card-rule-top);
  --app-button-radius:0;
  --muted:#6F6A60;
  --accent:#9C2A1E; --primary-fill:#111111;
  --font-ui:'Source Serif 4', var(--brand-font-fallback, serif), serif;
  --type-page-title:36px; --type-card-title:22px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:600; --app-title-tracking:-.01em;
  --app-kicker-weight:600; --app-kicker-tracking:.2em;
  --app-button-weight:600; --app-button-case:uppercase; --app-button-tracking:.14em;
  --rail-surface:#FFFFFF; --rail-edge:1px solid #DED8CB;
}

/* ── Slate ── */
:root[data-theme="ws-slate"]{
  --surface-card:#FFFFFF;
  --card-edge:1px solid #E2E8F0;
  --radius-control:10px; --app-button-radius:8px;
  --muted:#64748B;
  --accent:#0F8B8D; --primary-fill:#0F8B8D;
  --font-ui:'Manrope', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:26px; --type-card-title:16px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:700; --app-kicker-tracking:.06em;
  --app-button-weight:700; --app-button-case:none; --app-button-tracking:.04em;
}

/* ── Office: Open Sans in every role ── */
:root[data-theme="ws-office"]{
  --surface-card:#FFFFFF;
  --card-edge:1px solid #E0DFDC;
  --radius-control:4px; --app-button-radius:999px;
  --muted:#5E5E5E;
  --accent:#0A66C2; --primary-fill:#0A66C2;
  --font-heading:'Open Sans', var(--brand-font-fallback, sans-serif), sans-serif; --font-ui:'Open Sans', var(--brand-font-fallback, sans-serif), sans-serif; --font-label:'Open Sans', var(--brand-font-fallback, sans-serif), sans-serif;
  --font-serif-display:'Open Sans', var(--brand-font-fallback, sans-serif), sans-serif; --font-result-exit:'Open Sans', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:22px; --type-card-title:14px; --type-card-kicker:13px; --tpl-kicker-size:13px;
  --app-title-weight:600; --app-title-tracking:0;
  --app-kicker-weight:600; --app-kicker-tracking:0;
  --app-button-weight:600; --app-button-case:none; --app-button-tracking:0;
}

/* ── Black & Red ── */
:root[data-theme="ws-black-red"]{
  --surface-card:#FFFFFF;
  --card-border:#111111; --card-border-width:2px; --card-edge:2px solid #111111;
  --app-button-radius:0;
  --muted:#555555;
  --accent:#D13B3E; --primary-fill:#111111;
  --font-ui:'Barlow', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:48px; --type-card-title:30px; --type-card-kicker:16px; --tpl-kicker-size:16px;
  --app-title-weight:400; --app-title-tracking:.01em;
  --app-kicker-weight:600; --app-kicker-tracking:.06em;
  --app-button-weight:600; --app-button-case:uppercase; --app-button-tracking:.04em;
  --rail-edge:2px solid #111111;
  --app-title-rule:8px solid #D13B3E; --app-title-rule-gap:4px; --app-title-display:inline-block;
}

/* ── Studio ── */
:root[data-theme="ws-studio"]{
  --surface-card:#F4F4F5;
  --card-edge:1px solid #CACBCE;
  --app-button-radius:10px;
  --muted:#66676B;
  --accent:#2EC4F0; --primary-fill:#3A3B3E; --mode-selected:#3A3B3E;
  --font-ui:'Rubik', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:20px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:.03em;
  --app-kicker-weight:700; --app-kicker-tracking:.14em;
  --app-button-weight:700; --app-button-case:uppercase; --app-button-tracking:.08em;
}

/* ── Airy: the pale sky, frosted glass cards, ink pills (docs/new-theme-candidates-2026-10-09.html) ── */
:root[data-theme="ws-airy"]{
  --card-bg:#FFFFFFB3; --surface-card:#FFFFFFB3;
  --card-edge:1px solid #FFFFFFF2; --card-shadow:0 18px 44px rgba(40,90,140,.08);
  --radius-card:24px; --radius-control:12px; --app-button-radius:999px;
  --muted:#4A5B70;
  --accent:#0F1B2D; --primary-fill:#0F1B2D;
  --font-ui:'Hanken Grotesk', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:44px; --type-card-title:22px; --type-card-kicker:14px; --tpl-kicker-size:14px;
  --title-tracking:-.035em; --app-title-weight:600; --app-title-tracking:-.035em;
  --app-kicker-weight:500; --app-kicker-tracking:.01em;
  --app-button-weight:600; --app-button-case:none; --app-button-tracking:0;
  --rail:#FFFFFF8C; --rail-panel:#FFFFFFB3; --rail-hover:#FFFFFFD9; --rail-active:#0F1B2D; --on-rail:#0F1B2D; --on-rail-rgb:15, 27, 45;
  --rail-edge:1px solid #FFFFFFE6;
  --page-ground:linear-gradient(180deg,#B9D9F2 0%,#D8EBF8 32%,#F4F9FD 100%) no-repeat #F4F9FD; --rail-initials-ink:#FFFFFF; --rail-plan-ink:var(--on-rail);
  --app-card-backdrop:blur(18px);
}

/* ── Airy Deep Blue: white titles on the deep sky, solid white cards with ink text ── */
:root[data-theme="ws-airy-deep-blue"]{
  --card-bg:#FFFFFF; --surface-card:#FFFFFF;
  --card-border:#FFFFFF; --card-border-width:1px; --card-edge:1px solid #FFFFFF; --card-shadow:0 18px 44px rgba(5,25,55,.22);
  --radius-card:24px; --radius-control:12px; --app-button-radius:999px;
  --ink:#0F1B2D; --ink-rgb:15, 27, 45; --muted:#5A6B80;
  --kicker-ink:#2F6FB0; --accent:#0F1B2D; --primary-fill:#0F1B2D;
  --font-ui:'Hanken Grotesk', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:44px; --type-card-title:22px; --type-card-kicker:14px; --tpl-kicker-size:14px;
  --title-tracking:-.035em; --app-title-weight:600; --app-title-tracking:-.035em;
  --app-kicker-weight:500; --app-kicker-tracking:.01em;
  --app-button-weight:600; --app-button-case:none; --app-button-tracking:0;
  --app-title-ink:#FFFFFF; --app-ground-ink:#FFFFFF;
  --rail:#0B2D5A99; --rail-panel:#FFFFFF1F; --rail-hover:#FFFFFF29; --rail-active:#FFFFFF24; --on-rail:#FFFFFF; --on-rail-rgb:255, 255, 255;
  --on-rail-soft-alpha:.9; --on-rail-quiet-alpha:.8;
  --rail-edge:1px solid #FFFFFF38;
  --page-ground:radial-gradient(900px 260px at 78% 3%,rgba(255,255,255,.10),transparent 70%) no-repeat,linear-gradient(180deg,#2E78C2 0%,#2766A8 30%,#235E9E 100%) no-repeat #235E9E;
  --app-ground-rule:#FFFFFF66; --app-ground-rule-on:#FFFFFF; --tab-rule:var(--app-ground-rule);
}
/* The text that sits on the deep sky rather than on a card: the page's sub-line and date, the tabs and the set-up intro's tags. */
:root[data-theme="ws-airy-deep-blue"] :is(.page-heading .page-sub, .tpl-manage-date-created, .page-tabs a){--ground-text-ink:var(--app-ground-ink);}
:root[data-theme="ws-airy-deep-blue"] .page-tabs a{--tab-rule-on:var(--app-ground-rule-on);}
:root[data-theme="ws-airy-deep-blue"] .tpl-start-intro{--intro-tag-ink:var(--app-ground-ink);}

/* ── Signature: the home page's look, with a dark side menu ── */
:root[data-theme="ws-signature"]{
  --surface-card:#FFFFFF;
  --card-border:#FFFFFF; --card-border-width:1px; --card-edge:1px solid #FFFFFF;
  --radius-control:14px; --app-button-radius:999px;
  --muted:#6E6960;
  --accent:#A85A33; --primary-fill:#A85A33;
  --font-ui:'DM Sans', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:44px; --type-card-title:22px; --type-card-kicker:11px; --tpl-kicker-size:11px;
  --title-tracking:-.025em; --app-title-weight:700; --app-title-tracking:-.025em;
  --app-kicker-weight:500; --app-kicker-tracking:.16em;
  --app-button-weight:600; --app-button-case:none; --app-button-tracking:0;
  --rail:#1F1B16; --on-rail:#F6F4EF; --on-rail-rgb:246, 244, 239;
}

/* ── Graphite: brushed-graphite panels on the charcoal ground, recessed fields, mono labels, white pills, the
   magenta-to-electric-blue sweep on selected states and switches ── */
:root[data-theme="ws-graphite"]{
  --surface-card:#3B3B43;
  --card-edge:0 solid transparent;
  --radius-control:6px; --app-button-radius:999px;
  --muted:#A8A8B2;
  --accent:#6A2BDB; --primary-fill:#FFFFFF; --on-ink:#111114; --on-ink-warm:#111114;
  --font-ui:'Albert Sans', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:44px; --type-card-title:22px; --type-card-kicker:11px; --tpl-kicker-size:11px;
  --title-tracking:-.03em; --app-title-weight:500; --app-title-tracking:-.03em;
  --kicker-case:uppercase; --app-kicker-weight:500; --app-kicker-tracking:.16em;
  --app-button-weight:600; --app-button-case:none; --app-button-tracking:0;
  --surface-panel:#2E2E34; --surface-raised:#2E2E34; --toggle-bg:#0D0D0F;
  --bg:#141417; --surface-warm:#2E2E34; --surface-warm-hover:#2E2E34; --color-background-secondary:#141417;
  --tpl-ph-color:#9A9AA4; --link:#C4B5FD;
  --rail:#0000004D; --rail-panel:#FFFFFF0F; --rail-hover:#FFFFFF1A; --rail-active:#FFFFFF; --on-rail:#FFFFFF; --on-rail-rgb:255, 255, 255;
  --rail-edge:1px solid #FFFFFF1A;
  --page-ground:linear-gradient(155deg,rgba(255,255,255,0) 30%,rgba(255,255,255,.06) 46%,rgba(255,255,255,0) 60%) no-repeat,linear-gradient(180deg,#121214 0%,#1C1C20 45%,#29292E 100%) no-repeat #29292E;
  --field-inset-shadow:inset 0 2px 4px rgba(0,0,0,.4);
  --on-sweep:#FFFFFF;
  --delete-ground:#FFFFFF; --rail-initials-ink:#111114; --rail-plan-ink:#FFFFFF;
  --app-card-ground:var(--brushed-graphite) var(--card-bg);
  --active-pill-fill:var(--accent-sweep); --active-pill-ink:var(--on-sweep);
}

:root[data-theme="ws-graphite"] .tpl-start{--tpl-ph-color:#9A9AA4;}

/* ══ EVERY OTHER PARTICIPANT THEME, AS A WORKSPACE THEME (docs/participant-theme-artwork-proposal-2026-10-12.md, Decision 17): its colours,
   faces, card, inputs and button are its participant version's, without the artwork. The sizes are the working pages', not the respondent's. ══ */
/* ── art-nouveau: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-art-nouveau"]{
  --surface-card:#F8F3E6;
  --card-edge:1px solid #A5802F;
  --app-button-radius:2px;
  --muted:#6E7A6C;
  --accent:#3F6B5A; --primary-fill:#3F6B5A;
  --on-ink:#F8F3E6; --on-ink-warm:#F8F3E6;
  --font-ui:'Cormorant Garamond', var(--brand-font-fallback, serif), serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:400; --app-title-tracking:.06em;
  --app-kicker-weight:600; --app-kicker-tracking:.06em;
  --app-button-weight:600; --app-button-case:none; --app-button-tracking:.08em;
}
/* ── autumn: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-autumn"]{
  --surface-card:#FFFDF9;
  --card-edge:0 solid transparent;
  --radius-control:10px; --app-button-radius:999px;
  --muted:#6A4E3C;
  --accent:#A44A1F; --primary-fill:#A44A1F;
  --font-ui:'Nunito', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:700; --app-kicker-tracking:.18em;
  --app-button-weight:700; --app-button-case:none; --app-button-tracking:0;
  --tpl-ph-color:#6E5444;
}
/* ── beach-hut: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-beach-hut"]{
  --surface-card:#FFFFFF;
  --card-edge:1px solid #E2D4B5;
  --radius-control:6px; --app-button-radius:4px;
  --muted:#163E5C;
  --accent:#1F5F8B; --primary-fill:#1F5F8B;
  --font-ui:'Nunito', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:800; --app-title-tracking:0;
  --app-kicker-weight:700; --app-kicker-tracking:.16em;
  --app-button-weight:700; --app-button-case:none; --app-button-tracking:0;
  --tpl-ph-color:#506E82;
}
/* ── blue: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-blue"]{
  --surface-card:#FFFFFF;
  --card-border:transparent; --card-edge:0 solid transparent;
  --app-button-radius:6px;
  --muted:#4A6A84;
  --accent:#0E3550; --primary-fill:#0E3550;
  --font-ui:'Barlow', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:800; --app-title-tracking:.01em;
  --app-kicker-weight:600; --app-kicker-tracking:.12em;
  --app-button-weight:700; --app-button-case:uppercase; --app-button-tracking:.03em;
  --app-title-ink:#082335;
}
/* ── blueprint: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-blueprint"]{
  --surface-card:#18457F;
  --card-edge:1.5px solid #DCEBFF;
  --app-button-radius:0px;
  --muted:#C4D8F5;
  --accent:#FFFFFF; --primary-fill:#FFFFFF;
  --on-ink:#123A6B; --on-ink-warm:#123A6B;
  --font-ui:'IBM Plex Sans', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:500; --app-kicker-tracking:.18em;
  --app-button-weight:500; --app-button-case:uppercase; --app-button-tracking:.08em;
  --tpl-ph-color:#B3C9E8;
  --surface-panel:#285288; --surface-raised:#285288; --toggle-bg:#143C70;
  --bg:#143766; --surface-warm:#285288; --surface-warm-hover:#285288; --color-background-secondary:#143766;
  --link:#FFD27A;
  --rail:#112F57; --rail-panel:#FFFFFF0F; --rail-hover:#FFFFFF1A; --rail-active:#FFFFFF24; --on-rail:#FFFFFF; --on-rail-rgb:255, 255, 255;
  --rail-edge:1px solid #FFFFFF1A;
}
/* ── celebration: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-celebration"]{
  --surface-card:#FFFFFF;
  --card-edge:0 solid transparent;
  --radius-control:12px; --app-button-radius:999px;
  --muted:#5E4E5F;
  --accent:#B0174F; --primary-fill:#B0174F;
  --font-ui:'DM Sans', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:500; --app-kicker-tracking:.18em;
  --app-button-weight:500; --app-button-case:none; --app-button-tracking:0;
  --tpl-ph-color:#6E5E6F;
}
/* ── chalkboard: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-chalkboard"]{
  --surface-card:#FFFEFA;
  --card-edge:0 solid transparent;
  --radius-control:0px; --app-button-radius:6px;
  --ink:#1E2A22; --ink-rgb:30, 42, 34; --muted:#4E5A50;
  --accent:#F4D58D; --primary-fill:#F4D58D;
  --on-ink:#1E2A22; --on-ink-warm:#1E2A22;
  --font-ui:'Nunito', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:700; --app-kicker-tracking:.18em;
  --app-button-weight:700; --app-button-case:none; --app-button-tracking:0;
  --tpl-ph-color:#5E6A60;
  --app-title-ink:#F3F1E8; --app-ground-ink:#F3F1E8; --app-ground-rule:#F3F1E866; --app-ground-rule-on:#F3F1E8;
  --rail:#1F3328; --rail-panel:#FFFFFF0F; --rail-hover:#FFFFFF1A; --rail-active:#FFFFFF24; --on-rail:#FFFFFF; --on-rail-rgb:255, 255, 255;
}
/* ── classical-gallery: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-classical-gallery"]{
  --surface-card:#FBF6EA;
  --card-edge:10px solid #C9A24B;
  --app-button-radius:0px;
  --ink:#2A1E14; --ink-rgb:42, 30, 20; --muted:#5A4634;
  --accent:#7A1F2B; --primary-fill:#7A1F2B;
  --on-ink:#FFF4DA; --on-ink-warm:#FFF4DA;
  --font-ui:'Source Serif 4', var(--brand-font-fallback, serif), serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:600; --app-kicker-tracking:.22em;
  --app-button-weight:700; --app-button-case:none; --app-button-tracking:.06em;
  --tpl-ph-color:#6E5A44;
  --app-title-ink:#F3E7C9; --app-ground-ink:#F3E7C9; --app-ground-rule:#F3E7C966; --app-ground-rule-on:#F3E7C9;
  --rail:#182621; --rail-panel:#FFFFFF0F; --rail-hover:#FFFFFF1A; --rail-active:#FFFFFF24; --on-rail:#FFFFFF; --on-rail-rgb:255, 255, 255;
}
/* ── dark: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-dark"]{
  --surface-card:#1C1F24;
  --card-edge:1px solid #2B3038;
  --app-button-radius:8px;
  --muted:#A6ADB8;
  --accent:#8AB4FF; --primary-fill:#8AB4FF;
  --on-ink:#0E1622; --on-ink-warm:#0E1622;
  --font-ui:'Hanken Grotesk', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:700; --app-kicker-tracking:.18em;
  --app-button-weight:700; --app-button-case:none; --app-button-tracking:0;
  --tpl-ph-color:#9AA1AC;
  --surface-panel:#2C2F33; --surface-raised:#2C2F33; --toggle-bg:#15181C;
  --bg:#0D0E10; --surface-warm:#2C2F33; --surface-warm-hover:#2C2F33; --color-background-secondary:#0D0E10;
  --link:#8AB4FF;
  --rail:#0B0C0E; --rail-panel:#FFFFFF0F; --rail-hover:#FFFFFF1A; --rail-active:#FFFFFF24; --on-rail:#FFFFFF; --on-rail-rgb:255, 255, 255;
  --rail-edge:1px solid #FFFFFF1A;
}
/* ── forest: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-forest"]{
  --surface-card:#FFFFFF;
  --card-edge:0 solid transparent;
  --radius-control:10px; --app-button-radius:999px;
  --muted:#4A5E4E;
  --accent:#3E6B48; --primary-fill:#3E6B48;
  --font-ui:'Open Sans', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:700; --app-kicker-tracking:.18em;
  --app-button-weight:700; --app-button-case:none; --app-button-tracking:0;
  --tpl-ph-color:#5A6E5E;
}
/* ── garden: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-garden"]{
  --surface-card:#FEFCF6;
  --card-border:transparent; --card-edge:0 solid transparent;
  --radius-control:14px; --app-button-radius:999px;
  --muted:#4E5C48;
  --accent:#4F7F3E; --primary-fill:#4F7F3E;
  --font-ui:'Nunito', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:700; --app-kicker-tracking:.16em;
  --app-button-weight:700; --app-button-case:none; --app-button-tracking:0;
  --tpl-ph-color:#6C7865;
}
/* ── high-contrast: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-high-contrast"]{
  --surface-card:#000000;
  --card-edge:3px solid #FFFFFF;
  --app-button-radius:0px;
  --muted:#FFFFFF;
  --accent:#FFE600; --primary-fill:#FFE600;
  --on-ink:#000000; --on-ink-warm:#000000;
  --font-ui:'Atkinson Hyperlegible', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:700; --app-kicker-tracking:.18em;
  --app-button-weight:700; --app-button-case:none; --app-button-tracking:0;
  --tpl-ph-color:#E0E0E0;
  --surface-panel:#121212; --surface-raised:#121212; --toggle-bg:#000000;
  --bg:#000000; --surface-warm:#121212; --surface-warm-hover:#121212; --color-background-secondary:#000000;
  --link:#FFE600;
  --rail:#000000; --rail-panel:#FFFFFF0F; --rail-hover:#FFFFFF1A; --rail-active:#FFFFFF24; --on-rail:#FFFFFF; --on-rail-rgb:255, 255, 255;
  --rail-edge:1px solid #FFFFFF1A;
}
/* ── high-tech: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-high-tech"]{
  --surface-card:#121820;
  --card-edge:1px solid #2A3441;
  --app-button-radius:4px;
  --muted:#94A3B8;
  --accent:#22D3EE; --primary-fill:#22D3EE;
  --on-ink:#062028; --on-ink-warm:#062028;
  --font-ui:'Hanken Grotesk', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:500; --app-kicker-tracking:.2em;
  --app-button-weight:500; --app-button-case:uppercase; --app-button-tracking:.08em;
  --tpl-ph-color:#8796A8;
  --surface-panel:#232830; --surface-raised:#232830; --toggle-bg:#0B0F14;
  --bg:#0A0C0F; --surface-warm:#232830; --surface-warm-hover:#232830; --color-background-secondary:#0A0C0F;
  --link:#22D3EE;
  --rail:#080A0D; --rail-panel:#FFFFFF0F; --rail-hover:#FFFFFF1A; --rail-active:#FFFFFF24; --on-rail:#FFFFFF; --on-rail-rgb:255, 255, 255;
  --rail-edge:1px solid #FFFFFF1A;
}
/* ── mission: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-mission"]{
  --surface-card:#FAFAF7;
  --card-edge:1px solid #CFCFC8;
  --app-button-radius:2px;
  --muted:#55554F;
  --accent:#111; --primary-fill:#111;
  --font-ui:'Space Grotesk', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:400; --app-title-tracking:.06em;
  --app-kicker-weight:700; --app-kicker-tracking:.14em;
  --app-button-weight:700; --app-button-case:uppercase; --app-button-tracking:.06em;
}
/* ── mountain-retreat: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-mountain-retreat"]{
  --surface-card:#FFFFFF;
  --card-edge:0 solid transparent;
  --radius-control:10px; --app-button-radius:999px;
  --muted:#4E6372;
  --accent:#2F6B5A; --primary-fill:#2F6B5A;
  --font-ui:'Hanken Grotesk', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:600; --app-kicker-tracking:.18em;
  --app-button-weight:700; --app-button-case:none; --app-button-tracking:0;
  --tpl-ph-color:#5E7280;
}
/* ── notebook: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-notebook"]{
  --surface-card:transparent;
  --card-border:transparent; --card-edge:0 solid transparent;
  --app-button-radius:3px;
  --muted:#6B7591;
  --accent:#1F4E9C; --primary-fill:#1F4E9C;
  --font-ui:'Kalam', var(--brand-font-fallback, cursive), cursive;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:700; --app-kicker-tracking:0;
  --app-button-weight:700; --app-button-case:none; --app-button-tracking:0;
}
/* ── pastel: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-pastel"]{
  --surface-card:#fff;
  --card-border:transparent; --card-edge:0 solid transparent;
  --radius-control:14px; --app-button-radius:999px;
  --muted:#8A84A6;
  --accent:#8E6BD8; --primary-fill:#8E6BD8;
  --font-ui:'Quicksand', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:700; --app-kicker-tracking:.16em;
  --app-button-weight:600; --app-button-case:none; --app-button-tracking:0;
}
/* ── retro: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-retro"]{
  --surface-card:#FFF7E6;
  --card-edge:2px solid #4A2C17;
  --radius-control:12px; --app-button-radius:999px;
  --muted:#8A6A4E;
  --accent:#C8572A; --primary-fill:#C8572A;
  --on-ink:#FFF7E6; --on-ink-warm:#FFF7E6;
  --font-ui:'Rubik', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:400; --app-title-tracking:0;
  --app-kicker-weight:700; --app-kicker-tracking:.2em;
  --app-button-weight:700; --app-button-case:uppercase; --app-button-tracking:.1em;
}
/* ── sea-glass: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-sea-glass"]{
  --surface-card:#FFFFFF;
  --card-border:transparent; --card-edge:0 solid transparent;
  --radius-control:12px; --app-button-radius:999px;
  --muted:#12403F;
  --accent:#2A7F7A; --primary-fill:#2A7F7A;
  --font-ui:'Nunito', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:800; --app-title-tracking:0;
  --app-kicker-weight:700; --app-kicker-tracking:.16em;
  --app-button-weight:700; --app-button-case:none; --app-button-tracking:0;
  --tpl-ph-color:#4B6F6E;
}
/* ── seaside: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-seaside"]{
  --surface-card:#FFFFFF;
  --card-border:transparent; --card-edge:0 solid transparent;
  --radius-control:6px; --app-button-radius:999px;
  --muted:#0B3A53;
  --accent:#0B6E8A; --primary-fill:#0B6E8A;
  --font-ui:'Nunito', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:800; --app-title-tracking:0;
  --app-kicker-weight:700; --app-kicker-tracking:.16em;
  --app-button-weight:700; --app-button-case:none; --app-button-tracking:0;
  --tpl-ph-color:#476B7E;
}
/* ── space: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-space"]{
  --surface-card:#141B3A;
  --card-edge:1px solid #2E3A78;
  --radius-control:14px; --app-button-radius:999px;
  --muted:#AEB8E6;
  --accent:#7C8CFF; --primary-fill:#7C8CFF;
  --on-ink:#0B1026; --on-ink-warm:#0B1026;
  --font-ui:'Manrope', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:700; --app-kicker-tracking:.18em;
  --app-button-weight:700; --app-button-case:none; --app-button-tracking:0;
  --tpl-ph-color:#9AA5D6;
  --surface-panel:#242B48; --surface-raised:#242B48; --toggle-bg:#0E1430;
  --bg:#0D122D; --surface-warm:#242B48; --surface-warm-hover:#242B48; --color-background-secondary:#0D122D;
  --link:#FFB38A;
  --rail:#0B1026; --rail-panel:#FFFFFF0F; --rail-hover:#FFFFFF1A; --rail-active:#FFFFFF24; --on-rail:#FFFFFF; --on-rail-rgb:255, 255, 255;
  --rail-edge:1px solid #FFFFFF1A;
}
/* ── splash: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-splash"]{
  --surface-card:#FFFFFF;
  --card-edge:2px solid #1E1E1E;
  --app-button-radius:10px;
  --muted:#5A5A5A;
  --accent:#2A9BD8; --primary-fill:#2A9BD8;
  --font-ui:'Nunito Sans', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:900; --app-title-tracking:-.01em;
  --app-kicker-weight:800; --app-kicker-tracking:.1em;
  --app-button-weight:800; --app-button-case:none; --app-button-tracking:0;
}
/* ── spring: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-spring"]{
  --surface-card:#FFFFFF;
  --card-edge:0 solid transparent;
  --radius-control:12px; --app-button-radius:999px;
  --muted:#5E5560;
  --accent:#3F7D5A; --primary-fill:#3F7D5A;
  --font-ui:'Nunito', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:700; --app-kicker-tracking:.18em;
  --app-button-weight:700; --app-button-case:none; --app-button-tracking:0;
  --tpl-ph-color:#6E6470;
}
/* ── winter: the participant look's colours, faces, card, inputs and button; no artwork ── */
:root[data-theme="ws-winter"]{
  --surface-card:#FFFFFF;
  --card-edge:0 solid transparent;
  --radius-control:10px; --app-button-radius:999px;
  --muted:#4A5E70;
  --accent:#2B5A8A; --primary-fill:#2B5A8A;
  --font-ui:'Albert Sans', var(--brand-font-fallback, sans-serif), sans-serif;
  --type-page-title:32px; --type-card-title:18px; --type-card-kicker:12px; --tpl-kicker-size:12px;
  --app-title-weight:700; --app-title-tracking:0;
  --app-kicker-weight:600; --app-kicker-tracking:.18em;
  --app-button-weight:700; --app-button-case:none; --app-button-tracking:0;
  --tpl-ph-color:#5A6E80;
}
