/*
 * ╔══════════════════════════════════════════════════════════════╗
 * ║   ODISEA DESIGN SYSTEM — Master Token File                  ║
 * ║   Auto-generated from tokens.json on 2026-09-25          ║
 * ║   Do not edit manually — run: node generate-tokens.js       ║
 * ║   Tier 1 primitives: primitive-tokens.css (shared, --p-*)   ║
 * ╚══════════════════════════════════════════════════════════════╝
 */

@import './primitive-tokens.css';

/* ─── Global Primitives ───────────────────────────────────────────────────── */
:root {
  --radius-none: var(--p-radius-0);
  --radius-xs: var(--p-radius-4);
  --radius-sm: var(--p-radius-8);
  --radius-md: var(--p-radius-16);
  --radius-lg: var(--p-radius-24);
  --radius-pill: var(--p-radius-pill);
  --radius-control: var(--p-shape-radius-control);
  --radius-card: var(--p-shape-radius-card);
  --radius-surface: var(--p-shape-radius-surface);
  --radius-marker: var(--p-shape-radius-marker);
  --stroke-xs: var(--p-stroke-1);
  --stroke-sm: var(--p-stroke-2);
  --stroke-md: var(--p-stroke-4);
  --stroke-lg: var(--p-stroke-8);
  --size-9: var(--p-size-36);
  --font-family-display: 'Anton', sans-serif;
  --size-36: var(--p-size-144);
  --size-6: var(--p-size-24);
  --case-header: var(--p-text-case-none);
  --font-size-base: var(--p-text-size-16);
  --font-size-4xl: var(--p-text-size-32);
  --case-number: var(--p-text-case-none);
  --font-light: var(--p-text-weight-light);
  --size-14: var(--p-size-56);
  --tracking-tighter: var(--p-text-tracking-tighter);
  --lh-xs: var(--p-leading-tightest);
  --size-20: var(--p-size-80);
  --opacity-10: var(--p-opacity-10);
  --tracking-tight: var(--p-text-tracking-tight);
  --font-thin: 100;
  --case-link: var(--p-text-case-none);
  --size-1: var(--p-size-4);
  --font-size-8xl: var(--p-text-size-72);
  --size-64: var(--p-size-256);
  --opacity-100: var(--p-opacity-100);
  --hub-100: #F7F2E4;
  --hub-200: #EBDFBC;
  --hub-300: #D4C18A;
  --hub-400: #AD9753;
  --hub-500: #806A29;
  --hub-600: #6E5A1F;
  --hub-700: #5C4A17;
  --hub-800: #473910;
  --hub-900: #33290A;
  --size-60: 240px;
  --font-size-5xl: var(--p-text-size-36);
  --size-4: var(--p-size-16);
  --case-caption: var(--p-text-case-none);
  --font-size-sm: var(--p-text-size-14);
  --lh-xl: var(--p-leading-relaxed);
  --opacity-0: var(--p-opacity-0);
  --size-48: var(--p-size-192);
  --size-32: var(--p-size-128);
  --size-11: var(--p-size-44);
  --opacity-95: var(--p-opacity-95);
  --size-0p5: var(--p-size-2);
  --gray-warm-50: var(--p-gray-fig-50);
  --gray-warm-100: var(--p-gray-fig-100);
  --gray-warm-200: var(--p-gray-fig-200);
  --gray-warm-300: var(--p-gray-fig-300);
  --gray-warm-400: var(--p-gray-fig-400);
  --gray-warm-500: var(--p-gray-fig-500);
  --gray-warm-600: var(--p-gray-fig-600);
  --gray-warm-700: var(--p-gray-fig-700);
  --gray-warm-800: var(--p-gray-fig-800);
  --gray-warm-900: var(--p-gray-fig-900);
  --gray-cool-50: var(--p-gray-adriatic-50);
  --gray-cool-100: var(--p-gray-adriatic-100);
  --gray-cool-200: var(--p-gray-adriatic-200);
  --gray-cool-300: var(--p-gray-adriatic-300);
  --gray-cool-400: var(--p-gray-adriatic-400);
  --gray-cool-500: var(--p-gray-adriatic-500);
  --gray-cool-600: var(--p-gray-adriatic-600);
  --gray-cool-700: var(--p-gray-adriatic-700);
  --gray-cool-800: var(--p-gray-adriatic-800);
  --gray-cool-900: var(--p-gray-adriatic-900);
  --case-label: var(--p-text-case-capitalize);
  --size-1p5: var(--p-size-6);
  --base-white: var(--p-white);
  --base-black: var(--p-black);
  --size-8: var(--p-size-32);
  --font-extrabold: var(--p-text-weight-extrabold);
  --font-medium: var(--p-text-weight-medium);
  --size-3p5: var(--p-size-14);
  --document-card-radius-sm: var(--p-radius-4);
  --document-card-radius-md: var(--p-radius-8);
  --document-card-radius-lg: var(--p-radius-16);
  --document-card-stroke-sm: var(--p-stroke-2);
  --document-card-stroke-md: var(--p-stroke-4);
  --document-card-stroke-lg: var(--p-stroke-8);
  --document-card-gap-sm: var(--p-size-4);
  --document-card-gap-md: var(--p-size-8);
  --document-card-gap-lg: var(--p-size-12);
  --document-card-margin-x: var(--p-size-12);
  --document-card-margin-y: var(--p-size-8);
  --document-card-padding-x-sm: var(--p-size-12);
  --document-card-padding-x: var(--p-size-20);
  --document-card-padding-x-lg: var(--p-size-28);
  --document-card-padding-y-sm: var(--p-size-8);
  --document-card-padding-y: var(--p-size-16);
  --document-card-padding-y-lg: var(--p-size-24);
  --document-h: var(--p-document-a4-h);
  --document-w: var(--p-document-a4-w);
  --document-content-w: 642px;
  --document-section-gap-sm: var(--p-size-8);
  --document-section-gap-md: var(--p-size-16);
  --document-section-gap-lg: var(--p-size-24);
  --document-section-margin-y-sm: var(--p-size-16);
  --document-section-margin-y: var(--p-size-32);
  --document-section-margin-y-lg: var(--p-size-64);
  --document-section-padding-x-sm: var(--p-size-16);
  --document-section-padding-x: var(--p-size-24);
  --document-section-padding-x-lg: var(--p-size-32);
  --document-section-padding-y-sm: var(--p-size-12);
  --document-section-padding-y: var(--p-size-20);
  --document-section-padding-y-lg: var(--p-size-28);
  --document-margin-x: 38px;
  --document-margin-y: 47px;
  --document-header-gap-md: var(--p-size-24);
  --document-header-gap-sm: var(--p-size-16);
  --document-header-padding-x: var(--p-size-8);
  --document-header-padding-y: var(--p-size-4);
  --font-size-xl: var(--p-text-size-20);
  --size-3: var(--p-size-12);
  --academy-100: #E4F3F7;
  --academy-200: #BCE1EB;
  --academy-300: #8AC5D4;
  --academy-400: #539BAD;
  --academy-500: #296E80;
  --academy-600: #1F5E6E;
  --academy-700: #174E5C;
  --academy-800: #103C47;
  --academy-900: #0A2B33;
  --osm-100: #E4F7ED;
  --osm-200: #BCEBD1;
  --osm-300: #8AD4AB;
  --osm-400: #53AD7C;
  --osm-500: #298050;
  --osm-600: #1F6E43;
  --osm-700: #175C36;
  --osm-800: #104729;
  --osm-900: #0A331D;
  --size-72: var(--p-size-288);
  --font-smibold: var(--p-text-weight-semibold);
  --tracking-normal: var(--p-text-tracking-normal);
  --font-family-caption: 'Inter Variable', sans-serif;
  --size-44: var(--p-size-176);
  --lh-none: var(--p-leading-none);
  --font-size-lg: var(--p-text-size-18);
  --size-52: 208px;
  --size-0: var(--p-size-0);
  --study-100: #F7EDE4;
  --study-200: #EBD3BC;
  --study-300: #D4AE8A;
  --study-400: #AD8053;
  --study-500: #805429;
  --study-600: #6E461F;
  --study-700: #5C3917;
  --study-800: #472B10;
  --study-900: #331E0A;
  --opacity-25: var(--p-opacity-25);
  --opacity-50: var(--p-opacity-50);
  --size-px: var(--p-size-1);
  --font-bold: var(--p-text-weight-bold);
  --size-10: var(--p-size-40);
  --font-family-number: 'IBM Plex Mono', monospace;
  --size-40: var(--p-size-160);
  --size-2p5: var(--p-size-10);
  --size-80: var(--p-size-320);
  --size-96: 384px;
  --size-2: var(--p-size-8);
  --size-16: var(--p-size-64);
  --font-family-body: 'Inter Variable', sans-serif;
  --font-family-link: 'Inter Variable', sans-serif;
  --case-body: var(--p-text-case-none);
  --case-hero: var(--p-text-case-uppercase);
  --font-size-2xl: var(--p-text-size-24);
  --size-28: var(--p-size-112);
  --shop-100: #F7E4EF;
  --shop-200: #EBBCD7;
  --shop-300: #D48AB5;
  --shop-400: #AD5388;
  --shop-500: #80295C;
  --shop-600: #6E1F4D;
  --shop-700: #5C173F;
  --shop-800: #471030;
  --shop-900: #330A22;
  --tracking-wider: var(--p-text-tracking-wider);
  --opacity-90: var(--p-opacity-90);
  --font-size-6xl: var(--p-text-size-48);
  --opacity-75: var(--p-opacity-75);
  --font-size-3xl: var(--p-text-size-28);
  --size-12: var(--p-size-48);
  --font-size-xs: var(--p-text-size-12);
  --informative-success-100: var(--p-success-100);
  --informative-success-200: var(--p-success-200);
  --informative-success-300: var(--p-success-300);
  --informative-success-400: var(--p-success-400);
  --informative-success-500: var(--p-success-500);
  --informative-success-600: var(--p-success-600);
  --informative-success-700: var(--p-success-700);
  --informative-success-800: var(--p-success-800);
  --informative-success-900: var(--p-success-900);
  --informative-error-100: var(--p-error-100);
  --informative-error-200: var(--p-error-200);
  --informative-error-300: var(--p-error-300);
  --informative-error-400: var(--p-error-400);
  --informative-error-500: var(--p-error-500);
  --informative-error-600: var(--p-error-600);
  --informative-error-700: var(--p-error-700);
  --informative-error-800: var(--p-error-800);
  --informative-error-900: var(--p-error-900);
  --informative-warning-100: var(--p-warning-100);
  --informative-warning-200: var(--p-warning-200);
  --informative-warning-300: var(--p-warning-300);
  --informative-warning-400: var(--p-warning-400);
  --informative-warning-500: var(--p-warning-500);
  --informative-warning-600: var(--p-warning-600);
  --informative-warning-700: var(--p-warning-700);
  --informative-warning-800: var(--p-warning-800);
  --informative-warning-900: var(--p-warning-900);
  --informative-info-100: var(--p-info-100);
  --informative-info-200: var(--p-info-200);
  --informative-info-300: var(--p-info-300);
  --informative-info-400: var(--p-info-400);
  --informative-info-500: var(--p-info-500);
  --informative-info-600: var(--p-info-600);
  --informative-info-700: var(--p-info-700);
  --informative-info-800: var(--p-info-800);
  --informative-info-900: var(--p-info-900);
  --font-black: var(--p-text-weight-black);
  --case-eyebrow: var(--p-text-case-uppercase);
  --size-5: var(--p-size-20);
  --size-56: var(--p-size-224);
  --font-size-7xl: var(--p-text-size-60);
  --font-family-eyebrow: 'IBM Plex Mono', monospace;
  --opacity-5: var(--p-opacity-5);
  --font-extralight: 200;
  --lh-md: var(--p-leading-tight);
  --tracking-wide: var(--p-text-tracking-wide);
  --font-normal: var(--p-text-weight-normal);
  --lh-lg: var(--p-leading-normal);
  --opacity-85: var(--p-opacity-85);
  --font-family-label: 'Inter Variable', sans-serif;
  --size-7: var(--p-size-28);
  --font-size-9xl: var(--p-text-size-96);
  --font-size-10xl: var(--p-text-size-120);
  --font-size-11xl: var(--p-text-size-144);
  --lh-sm: var(--p-leading-tighter);
  --size-24: var(--p-size-96);
  --basic-button-radius-sm: var(--p-radius-4);
  --basic-button-radius-md: var(--p-radius-8);
  --basic-button-radius-pill: var(--p-radius-pill);
  --basic-button-stroke-sm: var(--p-stroke-1);
  --basic-button-stroke-md: var(--p-stroke-2);
  --basic-button-gap-sm: var(--p-size-4);
  --basic-button-gap-md: var(--p-size-8);
  --basic-button-gap-lg: var(--p-size-12);
  --basic-button-padding-x-lg: var(--p-size-32);
  --basic-button-padding-x: var(--p-size-24);
  --basic-button-padding-x-sm: var(--p-size-16);
  --basic-button-padding-y-sm: var(--p-size-8);
  --basic-button-padding-y: var(--p-size-12);
  --basic-button-padding-y-lg: var(--p-size-16);
  --basic-tag-radius-sm: var(--p-radius-4);
  --basic-tag-radius-md: var(--p-radius-8);
  --basic-tag-radius-pill: var(--p-radius-pill);
  --basic-tag-stroke-sm: var(--p-stroke-1);
  --basic-tag-stroke-md: var(--p-stroke-2);
  --basic-tag-gap-sm: var(--p-size-4);
  --basic-tag-gap-md: var(--p-size-8);
  --basic-tag-gap-lg: var(--p-size-12);
  --basic-tag-padding-x: var(--p-size-12);
  --basic-tag-padding-x-sm: var(--p-size-8);
  --basic-tag-padding-x-lg: var(--p-size-16);
  --basic-tag-padding-y: var(--p-size-4);
  --basic-tag-padding-y-sm: var(--p-size-2);
  --basic-tag-padding-y-lg: var(--p-size-8);
  --font-family-reading: 'Newsreader Variable', serif;
  --dur-micro: var(--p-dur-micro);
  --dur-panel: var(--p-dur-panel);
  --dur-entrance: var(--p-dur-entrance);
  --dur-sheen: var(--p-dur-sheen);
  --ease-default: var(--p-ease-default);
  --ease-out: var(--p-ease-out);
  --ease-in-out: var(--p-ease-in-out);
  --rise-sm: var(--p-size-12);
  --rise-md: var(--p-size-24);
  --rise-lg: var(--p-size-48);
  --font-family-heading: 'Inter Variable', sans-serif;
}

/* ─── Semantic: Academy / Light ──────────────────────────────────────────── */
[data-theme="academy-light"], .theme-academy-light {
  --background-page: var(--gray-warm-50);
  --background-section-light: var(--base-white);
  --background-section-light-inverse: var(--gray-warm-900);
  --background-card-light: var(--gray-warm-50);
  --background-card-dark: var(--gray-warm-200);
  --background-card-inverse: var(--gray-warm-800);
  --background-card-softer: var(--base-white);
  --background-card-soft: var(--gray-warm-100);
  --background-card-strong: var(--gray-warm-700);
  --background-card-stronger: var(--gray-warm-800);
  --background-card-icon-softer: var(--background-accent-softer);
  --background-card-icon-strong: var(--background-accent-strong);
  --background-tag-neutral-soft: var(--gray-warm-100);
  --background-tag-neutral-strong: var(--gray-warm-900);
  --background-success-soft: var(--informative-success-100);
  --background-warning-soft: var(--informative-warning-100);
  --background-error-soft: var(--informative-error-100);
  --background-info-soft: var(--informative-info-100);
  --border-card-soft: var(--gray-warm-100);
  --border-card-default: var(--gray-warm-200);
  --border-card-strong: var(--gray-warm-700);
  --border-tag-neutral-soft: var(--gray-warm-100);
  --border-tag-neutral-strong: var(--gray-warm-900);
  --border-divider: var(--gray-warm-200);
  --border-success-default: var(--informative-success-500);
  --border-warning-default: var(--informative-warning-500);
  --border-error-default: var(--informative-error-500);
  --border-info-default: var(--informative-info-500);
  --text-hero: var(--gray-cool-900);
  --text-heading: var(--gray-cool-800);
  --text-body: var(--gray-cool-700);
  --text-caption: var(--gray-cool-500);
  --text-muted: var(--gray-cool-400);
  --text-card-icon-softer: var(--background-accent-default);
  --text-card-icon-strong: var(--background-accent-soft);
  --text-hero-inverse: var(--base-white);
  --text-heading-inverse: var(--gray-cool-50);
  --text-body-inverse: var(--gray-cool-100);
  --text-on-accent: var(--base-white);
  --text-tag-accent-default: var(--base-white);
  --text-tag-neutral-default: var(--gray-cool-900);
  --text-success-default: var(--informative-success-700);
  --text-warning-default: var(--informative-warning-700);
  --text-error-default: var(--informative-error-700);
  --text-info-default: var(--informative-info-700);
  --background-accent-softer: var(--academy-100);
  --background-accent-soft: var(--academy-300);
  --background-accent-default: var(--academy-500);
  --background-accent-strong: var(--academy-700);
  --background-accent-stronger: var(--academy-800);
  --background-tag-accent-soft: var(--academy-100);
  --background-tag-accent-default: var(--academy-600);
  --background-tag-accent-strong: var(--academy-800);
  --background-tag-accent-2-soft: var(--hub-100);
  --background-tag-accent-2-default: var(--hub-600);
  --background-tag-accent-2-strong: var(--hub-700);
  --border-accent-softer: var(--academy-200);
  --border-accent-soft: var(--academy-300);
  --border-accent-default: var(--academy-500);
  --border-accent-strong: var(--academy-700);
  --border-accent-stronger: var(--academy-800);
  --border-tag-accent-soft: var(--academy-300);
  --border-tag-accent-default: var(--academy-500);
  --border-tag-accent-strong: var(--academy-700);
  --border-tag-accent-2-soft: var(--hub-300);
  --border-tag-accent-2-default: var(--hub-500);
  --border-tag-accent-2-strong: var(--hub-700);
  --border-focus: var(--academy-500);
  --text-accent-soft: var(--academy-300);
  --text-accent-default: var(--academy-500);
  --text-accent-strong: var(--academy-700);
  --text-accent-2: var(--hub-500);
  --text-tag-accent-soft: var(--academy-100);
  --text-tag-accent-strong: var(--academy-700);
  --text-tag-accent-2-soft: var(--hub-100);
  --text-tag-accent-2-strong: var(--hub-700);
}

/* ─── Semantic: Academy / Dark ───────────────────────────────────────────── */
[data-theme="academy-dark"], .theme-academy-dark {
  --background-page: var(--gray-warm-900);
  --background-section-light: var(--base-black);
  --background-section-light-inverse: var(--gray-warm-50);
  --background-card-light: var(--gray-warm-900);
  --background-card-dark: var(--gray-warm-700);
  --background-card-inverse: var(--gray-warm-100);
  --background-card-softer: var(--gray-warm-800);
  --background-card-soft: var(--gray-warm-700);
  --background-card-strong: var(--gray-warm-100);
  --background-card-stronger: var(--base-white);
  --background-card-icon-softer: var(--background-accent-strong);
  --background-card-icon-strong: var(--background-accent-softer);
  --background-tag-neutral-soft: var(--gray-warm-800);
  --background-tag-neutral-strong: var(--base-white);
  --background-success-soft: var(--informative-success-800);
  --background-warning-soft: var(--informative-warning-800);
  --background-error-soft: var(--informative-error-800);
  --background-info-soft: var(--informative-info-800);
  --border-card-soft: var(--gray-warm-800);
  --border-card-default: var(--gray-warm-700);
  --border-card-strong: var(--gray-warm-200);
  --border-tag-neutral-soft: var(--gray-warm-700);
  --border-tag-neutral-strong: var(--gray-warm-200);
  --border-divider: var(--gray-warm-700);
  --border-success-default: var(--informative-success-400);
  --border-warning-default: var(--informative-warning-400);
  --border-error-default: var(--informative-error-400);
  --border-info-default: var(--informative-info-400);
  --text-hero: var(--base-white);
  --text-heading: var(--gray-cool-100);
  --text-body: var(--gray-cool-200);
  --text-caption: var(--gray-cool-400);
  --text-muted: var(--gray-cool-600);
  --text-card-icon-softer: var(--background-accent-soft);
  --text-card-icon-strong: var(--background-accent-default);
  --text-hero-inverse: var(--gray-cool-900);
  --text-heading-inverse: var(--gray-cool-800);
  --text-body-inverse: var(--gray-cool-700);
  --text-on-accent: var(--base-white);
  --text-tag-accent-default: var(--gray-cool-900);
  --text-tag-neutral-default: var(--gray-cool-200);
  --text-success-default: var(--informative-success-300);
  --text-warning-default: var(--informative-warning-400);
  --text-error-default: var(--informative-error-300);
  --text-info-default: var(--informative-info-300);
  --background-accent-softer: var(--academy-100);
  --background-accent-soft: var(--academy-300);
  --background-accent-default: var(--academy-500);
  --background-accent-strong: var(--academy-700);
  --background-accent-stronger: var(--academy-800);
  --background-tag-accent-soft: var(--academy-800);
  --background-tag-accent-default: var(--academy-500);
  --background-tag-accent-strong: var(--academy-200);
  --background-tag-accent-2-soft: var(--hub-800);
  --background-tag-accent-2-default: var(--hub-500);
  --background-tag-accent-2-strong: var(--hub-200);
  --border-accent-softer: var(--academy-200);
  --border-accent-soft: var(--academy-300);
  --border-accent-default: var(--academy-500);
  --border-accent-strong: var(--academy-400);
  --border-accent-stronger: var(--academy-800);
  --border-tag-accent-soft: var(--academy-700);
  --border-tag-accent-default: var(--academy-500);
  --border-tag-accent-strong: var(--academy-300);
  --border-tag-accent-2-soft: var(--hub-700);
  --border-tag-accent-2-default: var(--hub-500);
  --border-tag-accent-2-strong: var(--hub-300);
  --border-focus: var(--academy-400);
  --text-accent-soft: var(--academy-400);
  --text-accent-default: var(--academy-500);
  --text-accent-strong: var(--academy-200);
  --text-accent-2: var(--hub-500);
  --text-tag-accent-soft: var(--academy-700);
  --text-tag-accent-strong: var(--academy-300);
  --text-tag-accent-2-soft: var(--hub-700);
  --text-tag-accent-2-strong: var(--hub-300);
}

/* ─── Semantic: Hub / Light ──────────────────────────────────────────────── */
[data-theme="hub-light"], .theme-hub-light {
  --background-page: var(--gray-warm-50);
  --background-section-light: var(--base-white);
  --background-section-light-inverse: var(--gray-warm-900);
  --background-card-light: var(--gray-warm-50);
  --background-card-dark: var(--gray-warm-200);
  --background-card-inverse: var(--gray-warm-800);
  --background-card-softer: var(--base-white);
  --background-card-soft: var(--gray-warm-100);
  --background-card-strong: var(--gray-warm-700);
  --background-card-stronger: var(--gray-warm-800);
  --background-card-icon-softer: var(--background-accent-softer);
  --background-card-icon-strong: var(--background-accent-strong);
  --background-tag-neutral-soft: var(--gray-warm-100);
  --background-tag-neutral-strong: var(--gray-warm-900);
  --background-success-soft: var(--informative-success-100);
  --background-warning-soft: var(--informative-warning-100);
  --background-error-soft: var(--informative-error-100);
  --background-info-soft: var(--informative-info-100);
  --border-card-soft: var(--gray-warm-100);
  --border-card-default: var(--gray-warm-200);
  --border-card-strong: var(--gray-warm-700);
  --border-tag-neutral-soft: var(--gray-warm-100);
  --border-tag-neutral-strong: var(--gray-warm-900);
  --border-divider: var(--gray-warm-200);
  --border-success-default: var(--informative-success-500);
  --border-warning-default: var(--informative-warning-500);
  --border-error-default: var(--informative-error-500);
  --border-info-default: var(--informative-info-500);
  --text-hero: var(--gray-cool-900);
  --text-heading: var(--gray-cool-800);
  --text-body: var(--gray-cool-700);
  --text-caption: var(--gray-cool-500);
  --text-muted: var(--gray-cool-400);
  --text-card-icon-softer: var(--background-accent-default);
  --text-card-icon-strong: var(--background-accent-soft);
  --text-hero-inverse: var(--base-white);
  --text-heading-inverse: var(--gray-cool-50);
  --text-body-inverse: var(--gray-cool-100);
  --text-on-accent: var(--base-white);
  --text-tag-accent-default: var(--base-white);
  --text-tag-neutral-default: var(--gray-cool-900);
  --text-success-default: var(--informative-success-700);
  --text-warning-default: var(--informative-warning-700);
  --text-error-default: var(--informative-error-700);
  --text-info-default: var(--informative-info-700);
  --background-accent-softer: var(--hub-100);
  --background-accent-soft: var(--hub-300);
  --background-accent-default: var(--hub-500);
  --background-accent-strong: var(--hub-700);
  --background-accent-stronger: var(--hub-800);
  --background-tag-accent-soft: var(--hub-100);
  --background-tag-accent-default: var(--hub-600);
  --background-tag-accent-strong: var(--hub-800);
  --background-tag-accent-2-soft: var(--gray-cool-100);
  --background-tag-accent-2-default: var(--gray-cool-600);
  --background-tag-accent-2-strong: var(--gray-cool-700);
  --border-accent-softer: var(--hub-200);
  --border-accent-soft: var(--hub-300);
  --border-accent-default: var(--hub-500);
  --border-accent-strong: var(--hub-700);
  --border-accent-stronger: var(--hub-800);
  --border-tag-accent-soft: var(--hub-300);
  --border-tag-accent-default: var(--hub-500);
  --border-tag-accent-strong: var(--hub-700);
  --border-tag-accent-2-soft: var(--gray-cool-300);
  --border-tag-accent-2-default: var(--gray-cool-500);
  --border-tag-accent-2-strong: var(--gray-cool-700);
  --border-focus: var(--hub-500);
  --text-accent-soft: var(--hub-300);
  --text-accent-default: var(--hub-500);
  --text-accent-strong: var(--hub-700);
  --text-accent-2: var(--gray-cool-500);
  --text-tag-accent-soft: var(--hub-100);
  --text-tag-accent-strong: var(--hub-700);
  --text-tag-accent-2-soft: var(--gray-cool-100);
  --text-tag-accent-2-strong: var(--gray-cool-700);
}

/* ─── Semantic: Hub / Dark ───────────────────────────────────────────────── */
[data-theme="hub-dark"], .theme-hub-dark {
  --background-page: var(--gray-warm-900);
  --background-section-light: var(--base-black);
  --background-section-light-inverse: var(--gray-warm-50);
  --background-card-light: var(--gray-warm-900);
  --background-card-dark: var(--gray-warm-700);
  --background-card-inverse: var(--gray-warm-100);
  --background-card-softer: var(--gray-warm-800);
  --background-card-soft: var(--gray-warm-700);
  --background-card-strong: var(--gray-warm-100);
  --background-card-stronger: var(--base-white);
  --background-card-icon-softer: var(--background-accent-strong);
  --background-card-icon-strong: var(--background-accent-softer);
  --background-tag-neutral-soft: var(--gray-warm-800);
  --background-tag-neutral-strong: var(--base-white);
  --background-success-soft: var(--informative-success-800);
  --background-warning-soft: var(--informative-warning-800);
  --background-error-soft: var(--informative-error-800);
  --background-info-soft: var(--informative-info-800);
  --border-card-soft: var(--gray-warm-800);
  --border-card-default: var(--gray-warm-700);
  --border-card-strong: var(--gray-warm-200);
  --border-tag-neutral-soft: var(--gray-warm-700);
  --border-tag-neutral-strong: var(--gray-warm-200);
  --border-divider: var(--gray-warm-700);
  --border-success-default: var(--informative-success-400);
  --border-warning-default: var(--informative-warning-400);
  --border-error-default: var(--informative-error-400);
  --border-info-default: var(--informative-info-400);
  --text-hero: var(--base-white);
  --text-heading: var(--gray-cool-100);
  --text-body: var(--gray-cool-200);
  --text-caption: var(--gray-cool-400);
  --text-muted: var(--gray-cool-600);
  --text-card-icon-softer: var(--background-accent-soft);
  --text-card-icon-strong: var(--background-accent-default);
  --text-hero-inverse: var(--gray-cool-900);
  --text-heading-inverse: var(--gray-cool-800);
  --text-body-inverse: var(--gray-cool-700);
  --text-on-accent: var(--base-white);
  --text-tag-accent-default: var(--gray-cool-900);
  --text-tag-neutral-default: var(--gray-cool-200);
  --text-success-default: var(--informative-success-300);
  --text-warning-default: var(--informative-warning-400);
  --text-error-default: var(--informative-error-300);
  --text-info-default: var(--informative-info-300);
  --background-accent-softer: var(--hub-100);
  --background-accent-soft: var(--hub-300);
  --background-accent-default: var(--hub-500);
  --background-accent-strong: var(--hub-700);
  --background-accent-stronger: var(--hub-800);
  --background-tag-accent-soft: var(--hub-800);
  --background-tag-accent-default: var(--hub-500);
  --background-tag-accent-strong: var(--hub-200);
  --background-tag-accent-2-soft: var(--gray-cool-800);
  --background-tag-accent-2-default: var(--gray-cool-500);
  --background-tag-accent-2-strong: var(--gray-cool-200);
  --border-accent-softer: var(--hub-200);
  --border-accent-soft: var(--hub-300);
  --border-accent-default: var(--hub-500);
  --border-accent-strong: var(--hub-400);
  --border-accent-stronger: var(--hub-800);
  --border-tag-accent-soft: var(--hub-700);
  --border-tag-accent-default: var(--hub-500);
  --border-tag-accent-strong: var(--hub-300);
  --border-tag-accent-2-soft: var(--gray-cool-700);
  --border-tag-accent-2-default: var(--gray-cool-500);
  --border-tag-accent-2-strong: var(--gray-cool-300);
  --border-focus: var(--hub-400);
  --text-accent-soft: var(--hub-400);
  --text-accent-default: var(--hub-500);
  --text-accent-strong: var(--hub-200);
  --text-accent-2: var(--gray-cool-500);
  --text-tag-accent-soft: var(--hub-700);
  --text-tag-accent-strong: var(--hub-300);
  --text-tag-accent-2-soft: var(--gray-cool-700);
  --text-tag-accent-2-strong: var(--gray-cool-300);
}

/* ─── Semantic: Shop / Light ─────────────────────────────────────────────── */
[data-theme="shop-light"], .theme-shop-light {
  --background-page: var(--gray-warm-50);
  --background-section-light: var(--base-white);
  --background-section-light-inverse: var(--gray-warm-900);
  --background-card-light: var(--gray-warm-50);
  --background-card-dark: var(--gray-warm-200);
  --background-card-inverse: var(--gray-warm-800);
  --background-card-softer: var(--base-white);
  --background-card-soft: var(--gray-warm-100);
  --background-card-strong: var(--gray-warm-700);
  --background-card-stronger: var(--gray-warm-800);
  --background-card-icon-softer: var(--background-accent-softer);
  --background-card-icon-strong: var(--background-accent-strong);
  --background-tag-neutral-soft: var(--gray-warm-100);
  --background-tag-neutral-strong: var(--gray-warm-900);
  --background-success-soft: var(--informative-success-100);
  --background-warning-soft: var(--informative-warning-100);
  --background-error-soft: var(--informative-error-100);
  --background-info-soft: var(--informative-info-100);
  --border-card-soft: var(--gray-warm-100);
  --border-card-default: var(--gray-warm-200);
  --border-card-strong: var(--gray-warm-700);
  --border-tag-neutral-soft: var(--gray-warm-100);
  --border-tag-neutral-strong: var(--gray-warm-900);
  --border-divider: var(--gray-warm-200);
  --border-success-default: var(--informative-success-500);
  --border-warning-default: var(--informative-warning-500);
  --border-error-default: var(--informative-error-500);
  --border-info-default: var(--informative-info-500);
  --text-hero: var(--gray-cool-900);
  --text-heading: var(--gray-cool-800);
  --text-body: var(--gray-cool-700);
  --text-caption: var(--gray-cool-500);
  --text-muted: var(--gray-cool-400);
  --text-card-icon-softer: var(--background-accent-default);
  --text-card-icon-strong: var(--background-accent-soft);
  --text-hero-inverse: var(--base-white);
  --text-heading-inverse: var(--gray-cool-50);
  --text-body-inverse: var(--gray-cool-100);
  --text-on-accent: var(--base-white);
  --text-tag-accent-default: var(--base-white);
  --text-tag-neutral-default: var(--gray-cool-900);
  --text-success-default: var(--informative-success-700);
  --text-warning-default: var(--informative-warning-700);
  --text-error-default: var(--informative-error-700);
  --text-info-default: var(--informative-info-700);
  --background-accent-softer: var(--shop-100);
  --background-accent-soft: var(--shop-300);
  --background-accent-default: var(--shop-500);
  --background-accent-strong: var(--shop-700);
  --background-accent-stronger: var(--shop-800);
  --background-tag-accent-soft: var(--shop-100);
  --background-tag-accent-default: var(--shop-600);
  --background-tag-accent-strong: var(--shop-800);
  --background-tag-accent-2-soft: var(--hub-100);
  --background-tag-accent-2-default: var(--hub-600);
  --background-tag-accent-2-strong: var(--hub-700);
  --border-accent-softer: var(--shop-200);
  --border-accent-soft: var(--shop-300);
  --border-accent-default: var(--shop-500);
  --border-accent-strong: var(--shop-700);
  --border-accent-stronger: var(--shop-800);
  --border-tag-accent-soft: var(--shop-300);
  --border-tag-accent-default: var(--shop-500);
  --border-tag-accent-strong: var(--shop-700);
  --border-tag-accent-2-soft: var(--hub-300);
  --border-tag-accent-2-default: var(--hub-500);
  --border-tag-accent-2-strong: var(--hub-700);
  --border-focus: var(--shop-500);
  --text-accent-soft: var(--shop-300);
  --text-accent-default: var(--shop-500);
  --text-accent-strong: var(--shop-700);
  --text-accent-2: var(--hub-500);
  --text-tag-accent-soft: var(--shop-100);
  --text-tag-accent-strong: var(--shop-700);
  --text-tag-accent-2-soft: var(--hub-100);
  --text-tag-accent-2-strong: var(--hub-700);
}

/* ─── Semantic: Shop / Dark ──────────────────────────────────────────────── */
[data-theme="shop-dark"], .theme-shop-dark {
  --background-page: var(--gray-warm-900);
  --background-section-light: var(--base-black);
  --background-section-light-inverse: var(--gray-warm-50);
  --background-card-light: var(--gray-warm-900);
  --background-card-dark: var(--gray-warm-700);
  --background-card-inverse: var(--gray-warm-100);
  --background-card-softer: var(--gray-warm-800);
  --background-card-soft: var(--gray-warm-700);
  --background-card-strong: var(--gray-warm-100);
  --background-card-stronger: var(--base-white);
  --background-card-icon-softer: var(--background-accent-strong);
  --background-card-icon-strong: var(--background-accent-softer);
  --background-tag-neutral-soft: var(--gray-warm-800);
  --background-tag-neutral-strong: var(--base-white);
  --background-success-soft: var(--informative-success-800);
  --background-warning-soft: var(--informative-warning-800);
  --background-error-soft: var(--informative-error-800);
  --background-info-soft: var(--informative-info-800);
  --border-card-soft: var(--gray-warm-800);
  --border-card-default: var(--gray-warm-700);
  --border-card-strong: var(--gray-warm-200);
  --border-tag-neutral-soft: var(--gray-warm-700);
  --border-tag-neutral-strong: var(--gray-warm-200);
  --border-divider: var(--gray-warm-700);
  --border-success-default: var(--informative-success-400);
  --border-warning-default: var(--informative-warning-400);
  --border-error-default: var(--informative-error-400);
  --border-info-default: var(--informative-info-400);
  --text-hero: var(--base-white);
  --text-heading: var(--gray-cool-100);
  --text-body: var(--gray-cool-200);
  --text-caption: var(--gray-cool-400);
  --text-muted: var(--gray-cool-600);
  --text-card-icon-softer: var(--background-accent-soft);
  --text-card-icon-strong: var(--background-accent-default);
  --text-hero-inverse: var(--gray-cool-900);
  --text-heading-inverse: var(--gray-cool-800);
  --text-body-inverse: var(--gray-cool-700);
  --text-on-accent: var(--base-white);
  --text-tag-accent-default: var(--gray-cool-900);
  --text-tag-neutral-default: var(--gray-cool-200);
  --text-success-default: var(--informative-success-300);
  --text-warning-default: var(--informative-warning-400);
  --text-error-default: var(--informative-error-300);
  --text-info-default: var(--informative-info-300);
  --background-accent-softer: var(--shop-100);
  --background-accent-soft: var(--shop-300);
  --background-accent-default: var(--shop-500);
  --background-accent-strong: var(--shop-700);
  --background-accent-stronger: var(--shop-800);
  --background-tag-accent-soft: var(--shop-800);
  --background-tag-accent-default: var(--shop-500);
  --background-tag-accent-strong: var(--shop-200);
  --background-tag-accent-2-soft: var(--hub-800);
  --background-tag-accent-2-default: var(--hub-500);
  --background-tag-accent-2-strong: var(--hub-200);
  --border-accent-softer: var(--shop-200);
  --border-accent-soft: var(--shop-300);
  --border-accent-default: var(--shop-500);
  --border-accent-strong: var(--shop-400);
  --border-accent-stronger: var(--shop-800);
  --border-tag-accent-soft: var(--shop-700);
  --border-tag-accent-default: var(--shop-500);
  --border-tag-accent-strong: var(--shop-300);
  --border-tag-accent-2-soft: var(--hub-700);
  --border-tag-accent-2-default: var(--hub-500);
  --border-tag-accent-2-strong: var(--hub-300);
  --border-focus: var(--shop-400);
  --text-accent-soft: var(--shop-400);
  --text-accent-default: var(--shop-500);
  --text-accent-strong: var(--shop-200);
  --text-accent-2: var(--hub-500);
  --text-tag-accent-soft: var(--shop-700);
  --text-tag-accent-strong: var(--shop-300);
  --text-tag-accent-2-soft: var(--hub-700);
  --text-tag-accent-2-strong: var(--hub-300);
}

/* ─── Semantic: OSM / Light ──────────────────────────────────────────────── */
[data-theme="osm-light"], .theme-osm-light {
  --background-page: var(--gray-warm-50);
  --background-section-light: var(--base-white);
  --background-section-light-inverse: var(--gray-warm-900);
  --background-card-light: var(--gray-warm-50);
  --background-card-dark: var(--gray-warm-200);
  --background-card-inverse: var(--gray-warm-800);
  --background-card-softer: var(--base-white);
  --background-card-soft: var(--gray-warm-100);
  --background-card-strong: var(--gray-warm-700);
  --background-card-stronger: var(--gray-warm-800);
  --background-card-icon-softer: var(--background-accent-softer);
  --background-card-icon-strong: var(--background-accent-strong);
  --background-tag-neutral-soft: var(--gray-warm-100);
  --background-tag-neutral-strong: var(--gray-warm-900);
  --background-success-soft: var(--informative-success-100);
  --background-warning-soft: var(--informative-warning-100);
  --background-error-soft: var(--informative-error-100);
  --background-info-soft: var(--informative-info-100);
  --border-card-soft: var(--gray-warm-100);
  --border-card-default: var(--gray-warm-200);
  --border-card-strong: var(--gray-warm-700);
  --border-tag-neutral-soft: var(--gray-warm-100);
  --border-tag-neutral-strong: var(--gray-warm-900);
  --border-divider: var(--gray-warm-200);
  --border-success-default: var(--informative-success-500);
  --border-warning-default: var(--informative-warning-500);
  --border-error-default: var(--informative-error-500);
  --border-info-default: var(--informative-info-500);
  --text-hero: var(--gray-cool-900);
  --text-heading: var(--gray-cool-800);
  --text-body: var(--gray-cool-700);
  --text-caption: var(--gray-cool-500);
  --text-muted: var(--gray-cool-400);
  --text-card-icon-softer: var(--background-accent-default);
  --text-card-icon-strong: var(--background-accent-soft);
  --text-hero-inverse: var(--base-white);
  --text-heading-inverse: var(--gray-cool-50);
  --text-body-inverse: var(--gray-cool-100);
  --text-on-accent: var(--base-white);
  --text-tag-accent-default: var(--base-white);
  --text-tag-neutral-default: var(--gray-cool-900);
  --text-success-default: var(--informative-success-700);
  --text-warning-default: var(--informative-warning-700);
  --text-error-default: var(--informative-error-700);
  --text-info-default: var(--informative-info-700);
  --background-accent-softer: var(--osm-100);
  --background-accent-soft: var(--osm-300);
  --background-accent-default: var(--osm-500);
  --background-accent-strong: var(--osm-700);
  --background-accent-stronger: var(--osm-800);
  --background-tag-accent-soft: var(--osm-100);
  --background-tag-accent-default: var(--osm-600);
  --background-tag-accent-strong: var(--osm-800);
  --background-tag-accent-2-soft: var(--hub-100);
  --background-tag-accent-2-default: var(--hub-600);
  --background-tag-accent-2-strong: var(--hub-700);
  --border-accent-softer: var(--osm-200);
  --border-accent-soft: var(--osm-300);
  --border-accent-default: var(--osm-500);
  --border-accent-strong: var(--osm-700);
  --border-accent-stronger: var(--osm-800);
  --border-tag-accent-soft: var(--osm-300);
  --border-tag-accent-default: var(--osm-500);
  --border-tag-accent-strong: var(--osm-700);
  --border-tag-accent-2-soft: var(--hub-300);
  --border-tag-accent-2-default: var(--hub-500);
  --border-tag-accent-2-strong: var(--hub-700);
  --border-focus: var(--osm-500);
  --text-accent-soft: var(--osm-300);
  --text-accent-default: var(--osm-500);
  --text-accent-strong: var(--osm-700);
  --text-accent-2: var(--hub-500);
  --text-tag-accent-soft: var(--osm-100);
  --text-tag-accent-strong: var(--osm-700);
  --text-tag-accent-2-soft: var(--hub-100);
  --text-tag-accent-2-strong: var(--hub-700);
}

/* ─── Semantic: OSM / Dark ───────────────────────────────────────────────── */
[data-theme="osm-dark"], .theme-osm-dark {
  --background-page: var(--gray-warm-900);
  --background-section-light: var(--base-black);
  --background-section-light-inverse: var(--gray-warm-50);
  --background-card-light: var(--gray-warm-900);
  --background-card-dark: var(--gray-warm-700);
  --background-card-inverse: var(--gray-warm-100);
  --background-card-softer: var(--gray-warm-800);
  --background-card-soft: var(--gray-warm-700);
  --background-card-strong: var(--gray-warm-100);
  --background-card-stronger: var(--base-white);
  --background-card-icon-softer: var(--background-accent-strong);
  --background-card-icon-strong: var(--background-accent-softer);
  --background-tag-neutral-soft: var(--gray-warm-800);
  --background-tag-neutral-strong: var(--base-white);
  --background-success-soft: var(--informative-success-800);
  --background-warning-soft: var(--informative-warning-800);
  --background-error-soft: var(--informative-error-800);
  --background-info-soft: var(--informative-info-800);
  --border-card-soft: var(--gray-warm-800);
  --border-card-default: var(--gray-warm-700);
  --border-card-strong: var(--gray-warm-200);
  --border-tag-neutral-soft: var(--gray-warm-700);
  --border-tag-neutral-strong: var(--gray-warm-200);
  --border-divider: var(--gray-warm-700);
  --border-success-default: var(--informative-success-400);
  --border-warning-default: var(--informative-warning-400);
  --border-error-default: var(--informative-error-400);
  --border-info-default: var(--informative-info-400);
  --text-hero: var(--base-white);
  --text-heading: var(--gray-cool-100);
  --text-body: var(--gray-cool-200);
  --text-caption: var(--gray-cool-400);
  --text-muted: var(--gray-cool-600);
  --text-card-icon-softer: var(--background-accent-soft);
  --text-card-icon-strong: var(--background-accent-default);
  --text-hero-inverse: var(--gray-cool-900);
  --text-heading-inverse: var(--gray-cool-800);
  --text-body-inverse: var(--gray-cool-700);
  --text-on-accent: var(--base-white);
  --text-tag-accent-default: var(--gray-cool-900);
  --text-tag-neutral-default: var(--gray-cool-200);
  --text-success-default: var(--informative-success-300);
  --text-warning-default: var(--informative-warning-400);
  --text-error-default: var(--informative-error-300);
  --text-info-default: var(--informative-info-300);
  --background-accent-softer: var(--osm-100);
  --background-accent-soft: var(--osm-300);
  --background-accent-default: var(--osm-500);
  --background-accent-strong: var(--osm-700);
  --background-accent-stronger: var(--osm-800);
  --background-tag-accent-soft: var(--osm-800);
  --background-tag-accent-default: var(--osm-500);
  --background-tag-accent-strong: var(--osm-200);
  --background-tag-accent-2-soft: var(--hub-800);
  --background-tag-accent-2-default: var(--hub-500);
  --background-tag-accent-2-strong: var(--hub-200);
  --border-accent-softer: var(--osm-200);
  --border-accent-soft: var(--osm-300);
  --border-accent-default: var(--osm-500);
  --border-accent-strong: var(--osm-400);
  --border-accent-stronger: var(--osm-800);
  --border-tag-accent-soft: var(--osm-700);
  --border-tag-accent-default: var(--osm-500);
  --border-tag-accent-strong: var(--osm-300);
  --border-tag-accent-2-soft: var(--hub-700);
  --border-tag-accent-2-default: var(--hub-500);
  --border-tag-accent-2-strong: var(--hub-300);
  --border-focus: var(--osm-400);
  --text-accent-soft: var(--osm-400);
  --text-accent-default: var(--osm-500);
  --text-accent-strong: var(--osm-200);
  --text-accent-2: var(--hub-500);
  --text-tag-accent-soft: var(--osm-700);
  --text-tag-accent-strong: var(--osm-300);
  --text-tag-accent-2-soft: var(--hub-700);
  --text-tag-accent-2-strong: var(--hub-300);
}

/* ─── Semantic: Study / Light ────────────────────────────────────────────── */
[data-theme="study-light"], .theme-study-light {
  --background-page: var(--gray-warm-50);
  --background-section-light: var(--base-white);
  --background-section-light-inverse: var(--gray-warm-900);
  --background-card-light: var(--gray-warm-50);
  --background-card-dark: var(--gray-warm-200);
  --background-card-inverse: var(--gray-warm-800);
  --background-card-softer: var(--base-white);
  --background-card-soft: var(--gray-warm-100);
  --background-card-strong: var(--gray-warm-700);
  --background-card-stronger: var(--gray-warm-800);
  --background-card-icon-softer: var(--background-accent-softer);
  --background-card-icon-strong: var(--background-accent-strong);
  --background-tag-neutral-soft: var(--gray-warm-100);
  --background-tag-neutral-strong: var(--gray-warm-900);
  --background-success-soft: var(--informative-success-100);
  --background-warning-soft: var(--informative-warning-100);
  --background-error-soft: var(--informative-error-100);
  --background-info-soft: var(--informative-info-100);
  --border-card-soft: var(--gray-warm-100);
  --border-card-default: var(--gray-warm-200);
  --border-card-strong: var(--gray-warm-700);
  --border-tag-neutral-soft: var(--gray-warm-100);
  --border-tag-neutral-strong: var(--gray-warm-900);
  --border-divider: var(--gray-warm-200);
  --border-success-default: var(--informative-success-500);
  --border-warning-default: var(--informative-warning-500);
  --border-error-default: var(--informative-error-500);
  --border-info-default: var(--informative-info-500);
  --text-hero: var(--gray-cool-900);
  --text-heading: var(--gray-cool-800);
  --text-body: var(--gray-cool-700);
  --text-caption: var(--gray-cool-500);
  --text-muted: var(--gray-cool-400);
  --text-card-icon-softer: var(--background-accent-default);
  --text-card-icon-strong: var(--background-accent-soft);
  --text-hero-inverse: var(--base-white);
  --text-heading-inverse: var(--gray-cool-50);
  --text-body-inverse: var(--gray-cool-100);
  --text-on-accent: var(--base-white);
  --text-tag-accent-default: var(--base-white);
  --text-tag-neutral-default: var(--gray-cool-900);
  --text-success-default: var(--informative-success-700);
  --text-warning-default: var(--informative-warning-700);
  --text-error-default: var(--informative-error-700);
  --text-info-default: var(--informative-info-700);
  --background-accent-softer: var(--study-100);
  --background-accent-soft: var(--study-300);
  --background-accent-default: var(--study-500);
  --background-accent-strong: var(--study-700);
  --background-accent-stronger: var(--study-800);
  --background-tag-accent-soft: var(--study-100);
  --background-tag-accent-default: var(--study-600);
  --background-tag-accent-strong: var(--study-800);
  --background-tag-accent-2-soft: var(--hub-100);
  --background-tag-accent-2-default: var(--hub-600);
  --background-tag-accent-2-strong: var(--hub-700);
  --border-accent-softer: var(--study-200);
  --border-accent-soft: var(--study-300);
  --border-accent-default: var(--study-500);
  --border-accent-strong: var(--study-700);
  --border-accent-stronger: var(--study-800);
  --border-tag-accent-soft: var(--study-300);
  --border-tag-accent-default: var(--study-500);
  --border-tag-accent-strong: var(--study-700);
  --border-tag-accent-2-soft: var(--hub-300);
  --border-tag-accent-2-default: var(--hub-500);
  --border-tag-accent-2-strong: var(--hub-700);
  --border-focus: var(--study-500);
  --text-accent-soft: var(--study-300);
  --text-accent-default: var(--study-500);
  --text-accent-strong: var(--study-700);
  --text-accent-2: var(--hub-500);
  --text-tag-accent-soft: var(--study-100);
  --text-tag-accent-strong: var(--study-700);
  --text-tag-accent-2-soft: var(--hub-100);
  --text-tag-accent-2-strong: var(--hub-700);
}

/* ─── Semantic: Study / Dark ─────────────────────────────────────────────── */
[data-theme="study-dark"], .theme-study-dark {
  --background-page: var(--gray-warm-900);
  --background-section-light: var(--base-black);
  --background-section-light-inverse: var(--gray-warm-50);
  --background-card-light: var(--gray-warm-900);
  --background-card-dark: var(--gray-warm-700);
  --background-card-inverse: var(--gray-warm-100);
  --background-card-softer: var(--gray-warm-800);
  --background-card-soft: var(--gray-warm-700);
  --background-card-strong: var(--gray-warm-100);
  --background-card-stronger: var(--base-white);
  --background-card-icon-softer: var(--background-accent-strong);
  --background-card-icon-strong: var(--background-accent-softer);
  --background-tag-neutral-soft: var(--gray-warm-800);
  --background-tag-neutral-strong: var(--base-white);
  --background-success-soft: var(--informative-success-800);
  --background-warning-soft: var(--informative-warning-800);
  --background-error-soft: var(--informative-error-800);
  --background-info-soft: var(--informative-info-800);
  --border-card-soft: var(--gray-warm-800);
  --border-card-default: var(--gray-warm-700);
  --border-card-strong: var(--gray-warm-200);
  --border-tag-neutral-soft: var(--gray-warm-700);
  --border-tag-neutral-strong: var(--gray-warm-200);
  --border-divider: var(--gray-warm-700);
  --border-success-default: var(--informative-success-400);
  --border-warning-default: var(--informative-warning-400);
  --border-error-default: var(--informative-error-400);
  --border-info-default: var(--informative-info-400);
  --text-hero: var(--base-white);
  --text-heading: var(--gray-cool-100);
  --text-body: var(--gray-cool-200);
  --text-caption: var(--gray-cool-400);
  --text-muted: var(--gray-cool-600);
  --text-card-icon-softer: var(--background-accent-soft);
  --text-card-icon-strong: var(--background-accent-default);
  --text-hero-inverse: var(--gray-cool-900);
  --text-heading-inverse: var(--gray-cool-800);
  --text-body-inverse: var(--gray-cool-700);
  --text-on-accent: var(--base-white);
  --text-tag-accent-default: var(--gray-cool-900);
  --text-tag-neutral-default: var(--gray-cool-200);
  --text-success-default: var(--informative-success-300);
  --text-warning-default: var(--informative-warning-400);
  --text-error-default: var(--informative-error-300);
  --text-info-default: var(--informative-info-300);
  --background-accent-softer: var(--study-100);
  --background-accent-soft: var(--study-300);
  --background-accent-default: var(--study-500);
  --background-accent-strong: var(--study-700);
  --background-accent-stronger: var(--study-800);
  --background-tag-accent-soft: var(--study-800);
  --background-tag-accent-default: var(--study-500);
  --background-tag-accent-strong: var(--study-200);
  --background-tag-accent-2-soft: var(--hub-800);
  --background-tag-accent-2-default: var(--hub-500);
  --background-tag-accent-2-strong: var(--hub-200);
  --border-accent-softer: var(--study-200);
  --border-accent-soft: var(--study-300);
  --border-accent-default: var(--study-500);
  --border-accent-strong: var(--study-400);
  --border-accent-stronger: var(--study-800);
  --border-tag-accent-soft: var(--study-700);
  --border-tag-accent-default: var(--study-500);
  --border-tag-accent-strong: var(--study-300);
  --border-tag-accent-2-soft: var(--hub-700);
  --border-tag-accent-2-default: var(--hub-500);
  --border-tag-accent-2-strong: var(--hub-300);
  --border-focus: var(--study-400);
  --text-accent-soft: var(--study-400);
  --text-accent-default: var(--study-500);
  --text-accent-strong: var(--study-200);
  --text-accent-2: var(--hub-500);
  --text-tag-accent-soft: var(--study-700);
  --text-tag-accent-strong: var(--study-300);
  --text-tag-accent-2-soft: var(--hub-700);
  --text-tag-accent-2-strong: var(--hub-300);
}
