/* ЗГЕНЕРОВАНО — не редагувати руками.
 *
 * Джерело: App\Core\Appearance\AppearanceCatalog (схеми, акценти, onAccent)
 *          + LayoutScale (ширини, геометрія колонок)
 *          + DesignTokens (поверхні, семантика, типографіка, ритм, радіуси,
 *            тіні, рух, шари, геометрія взаємодії)
 * Покоління: clean-202609-001
 * Команда:   php bin/generate_theme_tokens.php --generation=clean-202609-001
 *
 * DD-02: словник нової теми — тільки `--kp-*`. Легасі `--n-*` і голі
 * імена (`--accent`, `--text`, `--radius`) у цьому пакеті заборонені, як і
 * будь-які постійні аліаси на кшталт `--n-accent: var(--kp-accent)` —
 * інакше легасі-словник знову протече в чистий пакет.
 *
 * DD-01: ідентифікатори стабільні, значення — на покоління.
 * `onAccent` обчислений за контрастом WCAG, а не припущений білим.
 */

:root {
  /* Ширини ВМІСТУ. Сторінка отримує одну з них через PagePresentation. */
  --kp-layout-content-max: 760px;
  --kp-layout-wide-max: 1080px;
  --kp-layout-xl-max: 1200px;
  --kp-layout-full-max: 100%;

  /* Зовнішнє обмеження оболонки: навігація + вміст + опційна колонка.
     НЕ ContentWidth — сторінка його не запитує. */
  --kp-layout-shell-max: 1380px;

  /* Колонки сітки. Оголошені тут, бо `shell.css` на них спирається:
     токен, на який посилаються і якого немає, дає мовчазний провал —
     браузер підставляє порожнє значення, і колонка зникає без помилки. */
  --kp-layout-sidebar:  240px;
  --kp-layout-rail-min: 300px;

  /* Спільні для схем: ритм, типографіка, радіуси, тіні, рух, шари.
     Джерело — App\Core\Appearance\DesignTokens. Значення НЕ залежать від
     схеми: 8 пікселів однакові у світлій і темній. */

  /* ритм */
  --kp-space-0: 0;
  --kp-space-1: 0.25rem;
  --kp-space-2: 0.5rem;
  --kp-space-3: 0.75rem;
  --kp-space-4: 1rem;
  --kp-space-5: 1.5rem;
  --kp-space-6: 2rem;
  --kp-space-7: 3rem;
  --kp-space-8: 4rem;
  --kp-space-gutter: 1.5rem;

  /* типографіка */
  --kp-font-body: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --kp-font-display: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --kp-font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
  --kp-text-xs: 0.75rem;
  --kp-text-sm: 0.875rem;
  --kp-text-md: 1rem;
  --kp-text-lg: 1.125rem;
  --kp-text-xl: 1.5rem;
  --kp-text-2xl: 2rem;
  --kp-leading-tight: 1.2;
  --kp-leading-normal: 1.5;
  --kp-leading-loose: 1.75;
  --kp-weight-normal: 400;
  --kp-weight-medium: 500;
  --kp-weight-bold: 700;

  /* геометрія взаємодії */
  --kp-control-height-sm: 32px;
  --kp-control-height-md: 40px;
  --kp-control-height-lg: 48px;
  --kp-target-min: 44px;
  --kp-focus-ring-width: 2px;
  --kp-focus-ring-offset: 2px;
  --kp-border-width: 1px;

  /* дотик */
  --kp-tap-min: 44px;

  /* радіуси */
  --kp-radius-xs: 2px;
  --kp-radius-sm: 4px;
  --kp-radius-md: 8px;
  --kp-radius-lg: 12px;
  --kp-radius-xl: 20px;
  --kp-radius-pill: 999px;

  /* тіні */
  --kp-shadow-none: none;
  --kp-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.08);
  --kp-shadow-md: 0 4px 12px rgb(0 0 0 / 0.12);
  --kp-shadow-lg: 0 12px 32px rgb(0 0 0 / 0.18);
  --kp-shadow-overlay: 0 24px 64px rgb(0 0 0 / 0.28);

  /* рух */
  --kp-motion-fast: 120ms;
  --kp-motion-normal: 200ms;
  --kp-motion-slow: 320ms;
  --kp-ease-standard: cubic-bezier(0.2, 0, 0, 1);
  --kp-ease-emphasis: cubic-bezier(0.3, 0, 0, 1);

  /* шари */
  --kp-z-base: 0;
  --kp-z-dropdown: 1000;
  --kp-z-sticky: 1100;
  --kp-z-modal: 1300;
  --kp-z-toast: 1400;
}

/* Поверхні: light */
:root, [data-kp-scheme="light"] {
  --kp-color-page: #f3f6fb;
  --kp-color-surface: #ffffff;
  --kp-color-surface-raised: #ffffff;
  --kp-color-surface-muted: #eaeff7;
  --kp-color-text: #11213a;
  --kp-color-text-muted: #5b6b84;
  --kp-color-border: #dfe6f0;
  --kp-color-control-border: #7d8b9f;
  --kp-color-focus-ring: #1f5f8b;
  --kp-color-scrim: rgb(9 14 26 / 0.55);
  --kp-color-success: #187a4b;
  --kp-color-on-success: #ffffff;
  --kp-color-warning: #8a5a06;
  --kp-color-on-warning: #ffffff;
  --kp-color-warning-bg: #fdf3e0;
  --kp-color-danger: #b3261e;
  --kp-color-on-danger: #ffffff;
  --kp-color-info: #1f5f8b;
  --kp-color-on-info: #ffffff;
}

/* Поверхні: dark */
[data-kp-scheme="dark"] {
  --kp-color-page: #0c1220;
  --kp-color-surface: #121b2b;
  --kp-color-surface-raised: #1a2436;
  --kp-color-surface-muted: #0f1726;
  --kp-color-text: #f3f7ff;
  --kp-color-text-muted: #9aa9c2;
  --kp-color-border: #273650;
  --kp-color-control-border: #5a739c;
  --kp-color-focus-ring: #9ccbf2;
  --kp-color-scrim: rgb(3 6 12 / 0.62);
  --kp-color-success: #4ec38a;
  --kp-color-on-success: #08251a;
  --kp-color-warning: #f0b95c;
  --kp-color-on-warning: #2a1c05;
  --kp-color-warning-bg: #3a2c10;
  --kp-color-danger: #f2857e;
  --kp-color-on-danger: #2b0b09;
  --kp-color-info: #6fb2e0;
  --kp-color-on-info: #08202f;
}


/* Схема: light */
:root, [data-kp-scheme="light"] {
  --kp-accent: #e45f3a;
  --kp-on-accent: #11213a;
  --kp-accent-soft: color-mix(in srgb, var(--kp-accent) 14%, var(--kp-color-surface));
}

:root[data-kp-accent="clay"], [data-kp-scheme="light"][data-kp-accent="clay"], :root:not([data-kp-scheme="dark"]) [data-kp-accent="clay"], [data-kp-scheme="light"] [data-kp-accent="clay"] {
  --kp-accent: #e45f3a;
  --kp-on-accent: #11213a; /* контраст 4.60:1 */
}
:root[data-kp-accent="coral"], [data-kp-scheme="light"][data-kp-accent="coral"], :root:not([data-kp-scheme="dark"]) [data-kp-accent="coral"], [data-kp-scheme="light"] [data-kp-accent="coral"] {
  --kp-accent: #ef6d58;
  --kp-on-accent: #11213a; /* контраст 5.37:1 */
}
:root[data-kp-accent="sage"], [data-kp-scheme="light"][data-kp-accent="sage"], :root:not([data-kp-scheme="dark"]) [data-kp-accent="sage"], [data-kp-scheme="light"] [data-kp-accent="sage"] {
  --kp-accent: #64926d;
  --kp-on-accent: #11213a; /* контраст 4.51:1 */
}
:root[data-kp-accent="amber"], [data-kp-scheme="light"][data-kp-accent="amber"], :root:not([data-kp-scheme="dark"]) [data-kp-accent="amber"], [data-kp-scheme="light"] [data-kp-accent="amber"] {
  --kp-accent: #d99614;
  --kp-on-accent: #11213a; /* контраст 6.39:1 */
}
:root[data-kp-accent="plum"], [data-kp-scheme="light"][data-kp-accent="plum"], :root:not([data-kp-scheme="dark"]) [data-kp-accent="plum"], [data-kp-scheme="light"] [data-kp-accent="plum"] {
  --kp-accent: #9a4d8c;
  --kp-on-accent: #ffffff; /* контраст 5.51:1 */
}
:root[data-kp-accent="blue"], [data-kp-scheme="light"][data-kp-accent="blue"], :root:not([data-kp-scheme="dark"]) [data-kp-accent="blue"], [data-kp-scheme="light"] [data-kp-accent="blue"] {
  --kp-accent: #2369ff;
  --kp-on-accent: #ffffff; /* контраст 4.63:1 */
}
:root[data-kp-accent="emerald"], [data-kp-scheme="light"][data-kp-accent="emerald"], :root:not([data-kp-scheme="dark"]) [data-kp-accent="emerald"], [data-kp-scheme="light"] [data-kp-accent="emerald"] {
  --kp-accent: #18a66d;
  --kp-on-accent: #11213a; /* контраст 5.15:1 */
}
:root[data-kp-accent="violet"], [data-kp-scheme="light"][data-kp-accent="violet"], :root:not([data-kp-scheme="dark"]) [data-kp-accent="violet"], [data-kp-scheme="light"] [data-kp-accent="violet"] {
  --kp-accent: #7653f6;
  --kp-on-accent: #ffffff; /* контраст 4.84:1 */
}
:root[data-kp-accent="rose"], [data-kp-scheme="light"][data-kp-accent="rose"], :root:not([data-kp-scheme="dark"]) [data-kp-accent="rose"], [data-kp-scheme="light"] [data-kp-accent="rose"] {
  --kp-accent: #e0568c;
  --kp-on-accent: #11213a; /* контраст 4.51:1 */
}
:root[data-kp-accent="cyan"], [data-kp-scheme="light"][data-kp-accent="cyan"], :root:not([data-kp-scheme="dark"]) [data-kp-accent="cyan"], [data-kp-scheme="light"] [data-kp-accent="cyan"] {
  --kp-accent: #149cb8;
  --kp-on-accent: #11213a; /* контраст 4.97:1 */
}

/* Схема: dark */
[data-kp-scheme="dark"] {
  --kp-accent: #ff7a55;
  --kp-on-accent: #11213a;
  --kp-accent-soft: color-mix(in srgb, var(--kp-accent) 14%, var(--kp-color-surface));
}

[data-kp-scheme="dark"][data-kp-accent="clay"], [data-kp-scheme="dark"] [data-kp-accent="clay"] {
  --kp-accent: #ff7a55;
  --kp-on-accent: #11213a; /* контраст 6.27:1 */
}
[data-kp-scheme="dark"][data-kp-accent="coral"], [data-kp-scheme="dark"] [data-kp-accent="coral"] {
  --kp-accent: #ff8b78;
  --kp-on-accent: #11213a; /* контраст 7.08:1 */
}
[data-kp-scheme="dark"][data-kp-accent="sage"], [data-kp-scheme="dark"] [data-kp-accent="sage"] {
  --kp-accent: #86b88e;
  --kp-on-accent: #11213a; /* контраст 7.11:1 */
}
[data-kp-scheme="dark"][data-kp-accent="amber"], [data-kp-scheme="dark"] [data-kp-accent="amber"] {
  --kp-accent: #f6bf4a;
  --kp-on-accent: #11213a; /* контраст 9.57:1 */
}
[data-kp-scheme="dark"][data-kp-accent="plum"], [data-kp-scheme="dark"] [data-kp-accent="plum"] {
  --kp-accent: #c47ab5;
  --kp-on-accent: #11213a; /* контраст 5.22:1 */
}
[data-kp-scheme="dark"][data-kp-accent="blue"], [data-kp-scheme="dark"] [data-kp-accent="blue"] {
  --kp-accent: #6ea0ff;
  --kp-on-accent: #11213a; /* контраст 6.25:1 */
}
[data-kp-scheme="dark"][data-kp-accent="emerald"], [data-kp-scheme="dark"] [data-kp-accent="emerald"] {
  --kp-accent: #45c98b;
  --kp-on-accent: #11213a; /* контраст 7.66:1 */
}
[data-kp-scheme="dark"][data-kp-accent="violet"], [data-kp-scheme="dark"] [data-kp-accent="violet"] {
  --kp-accent: #a68af8;
  --kp-on-accent: #11213a; /* контраст 5.84:1 */
}
[data-kp-scheme="dark"][data-kp-accent="rose"], [data-kp-scheme="dark"] [data-kp-accent="rose"] {
  --kp-accent: #f279a8;
  --kp-on-accent: #11213a; /* контраст 6.20:1 */
}
[data-kp-scheme="dark"][data-kp-accent="cyan"], [data-kp-scheme="dark"] [data-kp-accent="cyan"] {
  --kp-accent: #38c8e4;
  --kp-on-accent: #11213a; /* контраст 8.10:1 */
}

