/* tokens.css — мост между брендом AI Mindset и лендингами лабы.
 *
 * Слой --bs-* приходит из brand-tokens.css бренд-кита AIM — копия среза 2026-08-06,
 * оригинал собирается скриптом на стороне AIM и руками не правится. Здесь он переводится в рабочие переменные лендинга --l-*.
 * Правило: в блоках и base.css нет ни одного литерального цвета, кегля или отступа —
 * только var(--l-*). Открытые решения помечены ВОПРОС и меняются одной строкой.
 */

:root {
  /* ── сырьё бренда (копия значений brand-tokens.css, срез 2026-08-06) ── */
  --bs-color-accent-primary: #D92027;   /* фирменный красный, одна доза на экран */
  --bs-color-accent-field: #e9b400;
  --bs-core-color-green-coding: #00A95C; /* зелёный Coding Lab, он же status.success */
  --bs-core-color-teal-teams: #0FA3B1;
  --bs-color-ink: #111111;
  --bs-color-ink-secondary: #333333;
  --bs-color-ink-mute: #8a8a8a;
  --bs-color-surface-page: #f5f5f5;
  --bs-color-surface-card: #fbfbfb;
  --bs-color-line: #d9d9d9;
  --bs-color-line-hair: #ececec;
  --bs-core-color-night: #0a0a0a;
  --bs-core-color-night-card: #131313;
  --bs-core-color-night-ink: #f2f2f2;
  --bs-core-color-night-line: #2a2a2a;
  --bs-core-color-night-hair: #1e1e1e;
  --bs-core-color-white: #ffffff;
  --bs-type-display: "Space Grotesk", sans-serif;
  --bs-type-mono: "IBM Plex Mono", SFMono-Regular, monospace;

  /* ── гарнитуры ── */
  /* Предварительное решение Кирилла 14.09.2026: Martian Grotesk – заголовки и бирки,
     Martian Mono – тексты и надписи. Файлы подключает css/fonts.css.
     Бирка называет кусок страницы: кикер, номер и метка секции, бейдж, шапка таблицы, чип.
     Надпись подписывает данные и экран: источник, подпись фигуры, ключ метрики, статусбар, терминал.
     Возврат к бренд-киту AIM: display и label = var(--bs-type-display), mono = var(--bs-type-mono),
     body = "Inter Tight" по прецеденту s26, плюс ссылка Google Fonts в shell.html и og.html.
     Панель ручек (js/dials.js): семейство, ширина и вес – «общее › все заголовки» и папки ролей
     в «стилях» (текст, надпись); подобранное переносится сюда кнопкой «скопировать в tokens.css». */
  /* Кирилл, 30.09: на странице только Martian – заголовки и бирки узким Martian Grotesk,
     текст и надписи – стандартным, Martian Mono – пластины кода (.spec) через --l-font-code.
     Lebowski и семейства Google Fonts сняты; Lebowski-заголовки 22.09–30.09 – в истории git.
     Вернуть пару 14.09: body и mono = "Martian Mono", ширины – 100%. */
  --l-font-display: "Martian Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;
  --l-font-label: var(--l-font-display);
  --l-font-body: "Martian Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;
  --l-font-mono: "Martian Mono", ui-monospace, "SF Mono", Menlo, monospace;   /* надписи: своя ручка, от текста не зависят (22.09); Кирилл, 30.09 (панель): Martian Mono */
  --l-font-code: "Martian Mono", ui-monospace, "SF Mono", Menlo, monospace;            /* пластины кода: моноширинный держит колонки терминала */
  /* ширина – ось wdth вариативных файлов через font-stretch: у Grotesk 25–400 % (за 75 и 200 продлена
     экстраполяцией, css/fonts.css), у Mono 75–112.5 %, сверх диапазона браузер прижимает к краю.
     Именованные ширины: 75 Condensed · 87.5 Narrow · 100 Standard · 112.5 Semi Wide · 125 Wide ·
     150 Extra Wide · 200 Ultra Wide */
  --l-stretch-display: 57.5%;   /* Кирилл, 06.10 (панель): было 65 % (05.10, возвращена после 270 % в 7741713); 01.10 – 75 Condensed, до того 62.5 и 87.5 */
  --l-stretch-label: var(--l-stretch-display);
  --l-stretch-body: 100%;
  --l-stretch-mono: 100%;
  --l-stretch-code: 100%;

  /* ── шкала: шесть ступеней, у каждой кегль и интерлиньяж (Кирилл, 30.09: «ещё более системно, есть лишние варианты») ──
     Кегль и интерлиньяж текста задаются только здесь; стиль ниже выбирает ступень. По громкости:
     мелкий · текст · пункт · секция · главная · цена. Соседние ступени отличаются не меньше чем в 1.12 раза на любой
     ширине (scripts/type-audit.mjs --roles), самый тесный шаг – мелкий/текст на телефоне, 15 / 12.8 = 1.17.
     Флюидные ступени – clamp(); верх – значение с экрана Кирилла 1440px при k = 1 (панель, 01.10; 06.10 окно ~1280px – верх
     «главной» стоит с этой ширины), низ – телефон 390px,
     шкала T1 (Кирилл, 04.10: на телефоне на ступень мельче, чтобы на экран входило больше; только здесь, без исключений
     по секциям): прямая от значения на 390 до значения на 1440, шире – верх.
     Вся шкала на один множитель – «масштаб шкалы» в панели (Кирилл, 22.09: 0.9 = на десятую мельче) */
  --l-type-k: 1;   /* Кирилл, 30.09 (панель): было 0.85 */
  /* мелкий: описания второго плана, надписи. Интерлиньяж – текста. Один на всех ширинах (до 04.10 на телефоне 0.875rem
     отдельным правилом в css/human.css) */
  --l-text-small: calc(0.8rem * var(--l-type-k));   /* Кирилл, 01.10 (панель): было 0.75, до того 0.78 и 0.85 */
  /* текст: тексты и лиды, бирки, кнопки */
  --l-text-body: calc(clamp(0.9375rem, 0.914286rem + 0.095238vw, 1rem) * var(--l-type-k));   /* Кирилл, 01.10 (панель): 1 сверху; 04.10 (T1): 15px на 390, было 16 */
  --l-leading-body: 1.45;    /* Кирилл, 01.10 (панель): было 1.65, до того 1.45, 1.4 и 1.6 */
  /* кегль полей ввода – правило платформы (04.10): iOS Safari приближает страницу к полю мельче 16 px при фокусе,
     а «текст» на узком экране меньше 16. Поле – текст, но не мельче 16 px; читают base.css и поле переписки */
  --l-field-size: max(1rem, var(--l-text-body));
  /* пункт: заголовки пунктов и выводы, крупный текст ударных цитат */
  --l-text-h3: calc(clamp(1.125rem, 0.8929rem + 0.9524vw, 1.75rem) * var(--l-type-k));   /* Кирилл, 01.10: 1.75 сверху (28px) – с панели было 2, «предприниматель» не влезал в колонку ролей; 30.09 – 1.6; 04.10 (T1): 18px на 390, было 20.3 */
  --l-leading-h3: 1.3;       /* Кирилл, 30.09 (панель): было 1.15, до того 1.28 */
  /* секция: h2. На телефоне заголовок секции крупнее пункта (до 30.09 был 20px против 20.3) */
  --l-text-h2: calc(clamp(1.35rem, 0.96rem + 1.6vw, 2.4rem) * var(--l-type-k));   /* Кирилл, 01.10 (панель, 1440px): 2.4 сверху, было 2; 04.10 (T1): 21.6px на 390, было 24 */
  --l-leading-h2: 1.3;       /* Кирилл, 01.10 (панель): было 1.2, до того 1.15 и 1.07 */
  /* главная: одна фраза на экран и цифры карточек */
  --l-text-display: calc(clamp(2.375rem, 0.805618rem + 3.617978vw, 3.7rem) * var(--l-type-k));   /* Кирилл, 06.10 вечер (панель, окно ~1280px): 3.7 с 1280 и шире, было 4.2 (утро 06.10), до того 3.3 на 1440 (30.09); 06.10: на телефоне заголовок крупнее – низ 38px, теперь до ~694px; кривая – прямая от 27px на 390 к верху; 04.10 (T1): 27px на 390, было 30.4 */
  --l-leading-display: 0.92; /* Кирилл, 06.10 (панель): было 1.04 (29.09: строки плотно) */
  /* цена: сумма в блоке цены, одна строка */
  --l-text-price: calc(clamp(4.5rem, 3.055rem + 4.051vw, 6.7rem) * var(--l-type-k));   /* Кирилл, 01.10 (панель, 1440px): 6.7 сверху, было 8.3 на 1440 и 9 на 2290+; низ 4.5 до 571px, как было */
  --l-leading-price: 0.95;

  /* вне шкалы: инициалы в аватарах отзывов (.wall__ava) и подписи блоков страниц v1 */
  --l-text-label: calc(1rem * var(--l-type-k));
  /* только страницы v1 (core-konveyer, core-otgruzka, l1-spiral): их блоки читают эти имена, панель их не двигает */
  --l-text-lead: var(--l-text-body);
  --l-text-hero: calc(clamp(2.04rem, 1.26rem + 3.46vw, 4.4rem) * var(--l-type-k));   /* .closing__title */
  --l-leading-flat: 1.15;  --l-leading-tight: 1.2;  --l-leading-snug: 1.3;

  --l-weight-head: 360;   /* начертание заголовочных стилей и цифр; Кирилл, 06.10 (панель): было 570 (7741713, 05.10), 01.10 – 240, до того 260 и 700 */
  --l-weight-body: 300;   /* текст страницы (body); Кирилл, 30.09 (панель): было 400 */
  --l-tracking-hero: -0.045em;   /* Кирилл, 30.09 (панель): было -0.04em */
  --l-tracking-tight: -0.02em;   /* было -0.015em */
  --l-tracking-body: 0em;
  --l-tracking-label: 0em;       /* Кирилл, 30.09 (панель): было 0.15em, до того 0 и 0.1em */

  /* ── стили текста: семь (Кирилл, 30.09; до того десять ролей, до 30.09 – 41 сочетание) ──
     Стиль – место текста в смысловой иерархии: семейство, ширина, вес, трекинг, регистр и ступень шкалы. У каждого
     текста core-human один стиль; внутри стиля всё одинаковое, кроме объявленной второй и третьей ступени.
     Кегль, вес и интерлиньяж в правилах элементов не пишутся: новому элементу выбирается стиль и ступень.
     Правила – css/base.css (h1–h3, .label, .lead, .mono, .src, .btn) и css/human.css, раздел «стили текста»;
     карта «стиль → ступень → участники» – js/type-roles.js; ручки – js/dials.js, папки «шкала» и «стили».
     По громкости: главная фраза · заголовок секции · заголовок пункта · текст · бирка · надпись · действие.
     Вне шкалы – логотип, пластины кода и терминал, инициалы в аватарах, буквы иконок.
     Заголовочные стили идут за --l-font-display, --l-stretch-display, --l-weight-head; бирка и надпись – за весом
     текста. Строки --l-*-size и --l-*-leading ниже только привязывают стиль к ступени */
  /* главная фраза: h1, заголовок героя и финала, цифры карточек; вторая ступень – цена */
  --l-display-font: var(--l-font-display);  --l-display-stretch: var(--l-stretch-display);  --l-display-weight: var(--l-weight-head);
  --l-display-size: var(--l-text-display);  --l-display-leading: var(--l-leading-display);  --l-display-tracking: var(--l-tracking-hero);
  /* заголовок секции: h2 */
  --l-h2-font: var(--l-font-display);  --l-h2-stretch: var(--l-stretch-display);  --l-h2-weight: var(--l-weight-head);
  --l-h2-size: var(--l-text-h2);       --l-h2-leading: var(--l-leading-h2);       --l-h2-tracking: var(--l-tracking-tight);
  /* заголовок пункта: h3, пункт каталога и сделки, слой анатомии, «чего не будет», вопрос FAQ и выводы – последняя
     строка секции, строка у кнопки, формула подвала (до 30.09 вывод был своей ролью, отличался только трекингом 0) */
  --l-h3-font: var(--l-font-display);  --l-h3-stretch: var(--l-stretch-display);  --l-h3-weight: var(--l-weight-head);
  --l-h3-size: var(--l-text-h3);       --l-h3-leading: var(--l-leading-h3);       --l-h3-tracking: var(--l-tracking-tight);
  /* текст: --l-font-body, --l-stretch-body, --l-weight-body, --l-tracking-body; ступени текст, мелкий и пункт
     («крупный» – ударные цитаты, Кирилл, 25.09: «текстовым шрифтом, но крупно»). Лиды – тот же текст: до 30.09 лид
     отличался от него только интерлиньяжем; бледность лиду даёт цвет --l-ink-2 */
  /* выделение: один модификатор веса на всю систему – итог недели, автор отзыва, правило «да кирилла», номер секции */
  --l-strong-add: 300;  --l-weight-strong: calc(var(--l-weight-body) + var(--l-strong-add));
  /* волосяной пробел между «€» и ценой (Кирилл, 01.10): отступ у знака валюты (span.cur ставит сборка, build.mjs cur),
     1/16 кегля того текста, где стоит цена */
  --l-cur-gap: 0.0625em;
  /* бирка: называет кусок страницы – метка секции, кикер, подпись группы. Семейство и ширина – --l-font-label,
     --l-stretch-label, трекинг – --l-tracking-label выше; ступень – текст */
  --l-label-weight: var(--l-weight-body);  --l-label-size: var(--l-text-body);  --l-label-leading: var(--l-leading-body);
  --l-label-case: none;
  /* надпись: подписывает данные – источник, номер пункта, дата, строка фактов, меню, подвал. Семейство и ширина –
     --l-font-mono, --l-stretch-mono выше; ступень – мелкий */
  --l-note-weight: var(--l-weight-body);  --l-note-size: var(--l-text-small);  --l-note-leading: var(--l-leading-body);  --l-note-tracking: 0em;
  /* действие: кнопка – раздел «кнопки» ниже */
  /* логотип в шапке сайта (.topbar__name), вне шкалы; на core-human вес идёт за заголовками (css/human.css) */
  --l-logo-font: var(--l-font-display);  --l-logo-stretch: var(--l-stretch-display);  --l-logo-weight: 700;
  --l-logo-size: 1em;                    --l-logo-tracking: var(--l-tracking-tight);

  /* ── ритм и сетка (шкала отступов бренда 0/4/8/12/16/24/40/56 + две ступени для секций) ── */
  --l-s1: 4px;  --l-s2: 8px;  --l-s3: 12px; --l-s4: 16px;
  --l-s5: 24px; --l-s6: 40px; --l-s7: 56px; --l-s8: 88px; --l-s9: 128px;
  --l-section-y: clamp(52px, 5.4927vw + 0.9808rem, 120px);  /* Кирилл, 06.10 (панель, окно ~1280px): 86px на 1280, низ 52 до 661px, как был; 01.10 – 82px на 1440 (3.851vw + 1.659rem); 30.09 – clamp(52px, 5.3vw + 1.06rem, 136px), 93px на 1440; 20.09 – clamp(52px, 4.6vw + 0.92rem, 118px) */
  --l-gutter: 12px;      /* Кирилл, 20.09: поля узкие, полоса шире */
  --l-max: 1300px;      /* полоса страницы (Кирилл, 20.09: было 1380) */
  --l-measure: 50.5rem;   /* полоса набора: длинный текст не шире; Кирилл, 01.10 (панель): было 48.5 */
  --l-grid-step: 24px;  /* шаг фоновой сетки бренда (Кирилл, 20.09: было 64) */

  /* ── геометрия ── */
  --l-radius: 0px;      /* прямой угол бренда; скругления – шкала ниже */
  /* шкала скругления бренда AIM. Кривая угла – суперэллипс k=2.4 дизайн-системы Интуиции,
     маской в css/base.css (раздел «суперэллипс»), одинаково в Chromium, Safari и Firefox */
  --l-radius-s: 4px;    /* контролы: кнопки, чипы, чекбоксы */
  --l-radius-m: 8px;    /* поверхности: карточки, панели, код */
  --l-radius-l: 16px;   /* рамки тула и терминала */
  --l-corner-k: 1.263;  /* corner-shape контролов: log2(2.4), та же кривая, что у маски (см. css/base.css) */
  --l-hair: 1px;
  --l-focus: 2px;

  /* ── кнопки (.btn в css/base.css): обычная и большая (.btn--lg); стиль «действие» ── */
  --l-btn-h: 48px;                     --l-btn-lg-h: 48px;   /* Кирилл, 01.10 (панель): большая той же высоты, было 56; отличается отступом */
  --l-btn-pad-y: var(--l-s3);          --l-btn-lg-pad-y: var(--l-s4);
  --l-btn-pad-x: var(--l-s5);          --l-btn-lg-pad-x: var(--l-s6);
  --l-btn-font: var(--l-font-mono);    --l-btn-stretch: var(--l-stretch-mono);   /* семейство и ширина – как у надписи */
  --l-btn-text: var(--l-text-body);    /* ступень текст у обеих кнопок; большая отличается геометрией (30.09; 20.09 – 0.9rem, большая – текст) */
  --l-btn-weight: 500;                 /* у всех кнопок один; +100 у primary снято 30.09 (у стиля один вес) */
  --l-btn-tracking: 0.02em;
  --l-btn-radius: var(--l-radius-m);    /* Кирилл, 21.09: 8px через панель ручек, было --l-radius-s */
  --l-btn-lift: -1px;                  /* подъём при наведении */
  --l-btn-press: 0.96;                 /* сжатие при нажатии */

  /* ── терминальный реплей: буквальный экран, одинаков в обоих тонах ── */
  --l-term-bg: #0d0d0d; --l-term-bar: #131313; --l-term-line: #262626;
  --l-term-ink: #f2f2f2; --l-term-out: #cfcfcf; --l-term-mute: #7a7a7a;
  --l-term-ok: #2fd07f; --l-term-err: #ff6b6b;

  /* ── движение (длительности и кривые бренда; ease-in не используется) ── */
  --l-t-node: 100ms;
  --l-t-hover: 120ms;
  --l-t-card: 140ms;
  --l-t-base: 240ms;
  --l-t-slow: 480ms;
  --l-ease: cubic-bezier(0.25, 0.1, 0.25, 1);
  --l-ease-out: cubic-bezier(0.2, 0, 0, 1);
}

/* ── тон «бумага»: продакт-лендинг AIM, светлый (Я0, Л3, Л4, служебные) ── */
:root,
[data-tone="paper"] {
  --l-bg: var(--bs-color-surface-page);
  --l-bg-card: var(--bs-color-surface-card);
  --l-bg-sunk: #efefee;
  --l-ink: var(--bs-color-ink);
  --l-ink-2: var(--bs-color-ink-secondary);
  --l-ink-mute: var(--bs-color-ink-mute);
  --l-ink-invert: var(--bs-core-color-white);
  --l-line: var(--bs-color-line);
  --l-hairline: var(--bs-color-line-hair);
  --l-grid: rgba(17, 17, 17, 0.04);
  /* правило цвета (09.09): красный = момент выхода к людям — primary CTA, порог в hero/финале,
     err-строки терминала как буквальный вывод; больше нигде. зелёный = «прошло проверку» — галки,
     ok-строки, активная вкладка, отмеченный чекбокс, пройденное расстояние. номера секций,
     ID слоёв и недель — чернила: это структура, а не состояние. */
  /* два акцента лабы (Кирилл, 20.09), как у его каналов: зелёный и оранжевый. Правило IDS
     kirill.green «green is the person, orange is the building»: зелёный – человек, его дело
     и путь к людям (кнопки, «прошло», «люди», demo day, ранняя цена); оранжевый – система
     и инструмент (выбранный слой харнеса, номера частей и систем). Каждый цвет в двух
     ступенях: заливка (иллюстрации, плашки, кнопки) и текст на бумаге (AA ≥ 4.5:1) */
  --l-accent: #28B04D;        /* зелёный каналов Кирилла, точный код (20.09); заливка, чернила на нём 6.7:1 */
  --l-accent-text: #1c7b36;   /* тот же тон текстом на бумаге: 4.9:1, на утопленной 4.6:1 */
  --l-accent-ink: #ffffff;    /* правило Кирилла 20.09: на зелёном и оранжевом текст белый. 2.8:1 – ниже AA, принято осознанно */
  --l-accent-2: #F36923;      /* оранжевый каналов Кирилла, точный код (20.09); чернила на нём 6.2:1 */
  --l-accent-2-text: #b14d1a; /* тот же тон текстом на бумаге: 4.9:1, на утопленной 4.6:1 */
  --l-accent-2-ink: #ffffff;  /* 3.1:1 */
  /* ВОПРОС 3: акцент лабы не назначен; зелёный Coding Lab из токенов бренда служит цветом «прошло». */
  --l-ok: var(--bs-core-color-green-coding);
  --l-cta-bg: var(--l-accent);
  --l-cta-ink: var(--l-accent-ink);
  --l-shadow: none;
  color-scheme: light;
}

/* мягкая тёмная версия «бумаги» для системной темы */
@media (prefers-color-scheme: dark) {
  :root:not([data-tone="terminal"]):not([data-force="light"]),
  [data-tone="paper"]:not([data-force="light"]) {
    --l-bg: #141413;
    --l-bg-card: #1c1c1a;
    --l-bg-sunk: #100f0e;
    --l-ink: #f0efec;
    /* инверсия следует за тёмными чернилами: иначе белое на светлой полосе; текст на акцентах белый в обеих темах */
    --l-ink-invert: #141413;
    --l-accent-ink: #ffffff;
    --l-ink-2: #c9c7c1;
    --l-ink-mute: #8d8b85;
    --l-line: #302f2c;
    --l-hairline: #24231f;
    --l-grid: rgba(255, 255, 255, 0.035);
    --l-ok: #22c47a;
    --l-accent: #28B04D;      /* на тёмном точные цвета каналов держат AA и текстом: зелёный 6.5:1 */
    --l-accent-text: #28B04D;
    --l-accent-2: #F36923;    /* оранжевый 6.0:1 текстом, чернила на нём те же 6.0:1 */
    --l-accent-2-text: #F36923;
    --l-accent-2-ink: #ffffff;
    color-scheme: dark;
  }
}

/* ── тёмный островок в любой теме: секция с data-force="dark" (Кирилл, 22.09: «кто приходит»
   в светлой теме тёмная). Значения те же, что у тёмной «бумаги» выше; менять парой ── */
[data-force="dark"] {
  --l-bg: #141413;
  --l-bg-card: #1c1c1a;
  --l-bg-sunk: #100f0e;
  --l-ink: #f0efec;
  --l-ink-invert: #141413;
  --l-accent-ink: #ffffff;
  --l-ink-2: #c9c7c1;
  --l-ink-mute: #8d8b85;
  --l-line: #302f2c;
  --l-hairline: #24231f;
  --l-grid: rgba(255, 255, 255, 0.035);
  --l-ok: #22c47a;
  --l-accent: #28B04D;
  --l-accent-text: #28B04D;
  --l-accent-2: #F36923;
  --l-accent-2-text: #F36923;
  --l-accent-2-ink: #ffffff;
  color-scheme: dark;
}

/* ── тон «терминал»: тёмный инженерный (Л1, Л2, Л7) ── */
[data-tone="terminal"] {
  --l-bg: var(--bs-core-color-night);
  --l-bg-card: var(--bs-core-color-night-card);
  --l-bg-sunk: #060606;
  --l-ink: var(--bs-core-color-night-ink);
  --l-ink-2: #b9b9b9;
  --l-ink-mute: #7c7c7c;
  --l-ink-invert: var(--bs-core-color-night);
  --l-line: var(--bs-core-color-night-line);
  --l-hairline: var(--bs-core-color-night-hair);
  --l-grid: rgba(255, 255, 255, 0.035);
  --l-accent: #ff4b4b;
  --l-accent-text: #ff4b4b;
  --l-accent-ink: var(--bs-core-color-night);
  --l-accent-2: #f0894f;
  --l-accent-2-text: #f0894f;
  --l-accent-2-ink: var(--bs-core-color-night);
  --l-ok: #2fd07f;               /* зелёный гейта, поднят по светлоте для AA на #0a0a0a */
  --l-cta-bg: var(--l-ok);       /* на терминале решение подсвечивает зелёный гейт, красный держит срыв */
  --l-cta-ink: var(--bs-core-color-night);
  /* гарнитуры у обеих тем общие (раздел «гарнитуры» выше); решение 09.09 держать абзацы
     гротеском снято парой Martian 14.09: тело набрано Martian Mono на бумаге и на терминале */
  --l-leading-body: 1.5;         /* светлый текст на тёмном: +0.05 к интерлиньяжу бумаги (01.10: бумага 1.45) */
  --l-shadow: none;
  color-scheme: dark;
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --l-t-node: 0.001ms; --l-t-hover: 0.001ms; --l-t-card: 0.001ms;
    --l-t-base: 0.001ms; --l-t-slow: 0.001ms;
  }
}
