/* ═══════════════════════════════════════════════════════════
   НОРМА · ДИЗАЙН-ТОКЕНЫ — ЕДИНЫЙ ИСТОЧНИК (source of truth)
   Правки цвета/шрифтов/длительностей — ТОЛЬКО здесь.
   norma-app-basic.html подключает этот файл через <link>;
   остальные моки несут синхронную inline-копию примитивов —
   при правке сверять с этим файлом (diff токен-блоков пуст).
   Слой 1 — примитивы (палитра). Слой 2 — роли. Темизация —
   переопределением примитивов в [data-theme="light"].
   ═══════════════════════════════════════════════════════════ */

/* ── РАЗМЕР ТЕКСТА — настройка пользователя (v1.1 · 04.08.2026) ──
   Вся типо-шкала в rem, поэтому размер = корневой кегль html.
   Ступени соответствуют основному тексту (--fs-400) 17/18/19/20 px;
   ПО УМОЛЧАНИЮ 19 (решение владельца по тесту на iPhone 14: исходные
   15px признаны мелкими; диапазон настройки — бывшие +2…+5).
   Атрибут data-fs ставит JS (localStorage norma-fs); без атрибута — 19. */
html{font-size:126.6667%}
html[data-fs="17"]{font-size:113.3334%}
html[data-fs="18"]{font-size:120%}
html[data-fs="19"]{font-size:126.6667%}
html[data-fs="20"]{font-size:133.3334%}

:root{
  --ink-900:#070A0F; --ink-850:#0A0E15; --ink-800:#0D121A; --ink-750:#111823;
  --ink-700:#161E2A; --ink-650:#1C2532;
  --line:#202836; --line-soft:#161D28;
  --tx-1:#EAEFF6; --tx-2:#97A3B4; --tx-3:#727E8D; --tx-4:#616E7D;
  --paper:#E4E2D8; --paper-2:#DBD8CC; --paper-ink:#12161C; --paper-tx2:#565A5E; --paper-line:#C9C5B8;
  --au-tax:#3FE0C6; --au-work:#8B7CF6; --au-consumer:#43D9A3; --au-contract:#4DA6FF;
  --au-debt:#F2766B; --au-dispute:#F0B429; --au-family:#E288C8; --au-car:#C9B27A;
  --au-utility:#57C7E3; --au-road:#9DC162;
  /* svc — «Доп. услуги и страховки» (Базовый), v1.1: отделён от consumer,
     т.к. зелёный щит путался с бирюзовыми весами «Жалоб» (--au-tax) */
  --au-svc:#ED6FB8;
  --v-bad:#FF8073; --v-warn:#F0B429; --v-ok:#4CC38A; --lbl-w:600;
  --au:var(--au-tax); --au-hi:#FFFFFF;
  --solid:#EFEEE9; --solid-tx:#12161C; --solid-hi:#FFFFFF;
  --desk:#070A0F; --paper-pad:0px; --paper-r:0px; --paper-sh:none;
  --stage:#04060A; --stage-glow:rgba(63,224,198,.06);
  --frame-b:#1A222E; --frame-sh:0 30px 80px -24px rgba(0,0,0,.9),0 0 0 7px #0A0E14;
  --bar-fade:rgba(7,10,15,.88); --bar-solid:rgba(7,10,15,.9);
  --scrim:rgba(3,5,9,.72);
  --pop-sh:0 24px 50px -14px rgba(0,0,0,.85);
  --dock-glow:13%;
  --seg-bg:#0D121A; --seg-on:#161E2A; --seg-sh:none;
  --au-op1:.30; --au-op2:.22; --au-op3:.20;
  --f-ui:'Golos Text',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  --f-doc:'Spectral',Georgia,'Times New Roman',serif;
  --f-mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --gut:22px; --r-sm:10px; --r-md:14px; --r-lg:20px;
  --e:cubic-bezier(.22,1,.36,1); --t-fast:150ms; --t:240ms; --t-slow:340ms;
}

[data-theme="light"]{
  --ink-900:#FFFFFF; --ink-850:#F7F9FB; --ink-800:#FFFFFF; --ink-750:#EFF2F6;
  --ink-700:#E7EBF1; --ink-650:#D6DCE5;
  --line:#CFD7E1; --line-soft:#E2E7EE;
  --tx-1:#0F141B; --tx-2:#44505E; --tx-3:#59636F; --tx-4:#6B7581;
  --au-tax:#0A8270; --au-work:#5940CB; --au-consumer:#0E7E4F; --au-contract:#1263B4;
  --au-debt:#BE382F; --au-dispute:#8F5E00; --au-family:#A63583; --au-car:#6C561B;
  --au-svc:#AC2C7C;
  --au-utility:#0B7590; --au-road:#4F7420;
  --v-bad:#B3362A; --v-warn:#8A5A00; --v-ok:#137347; --lbl-w:500;
  --paper:#EFEEE9; --paper-2:#E6E4DC; --paper-line:#D3D0C6;
  --au-hi:#0F141B;
  --solid:#111823; --solid-tx:#F7F8FA; --solid-hi:#1D2733;
  --desk:#DFE3E9; --paper-pad:10px 10px 16px; --paper-r:6px;
  --paper-sh:0 1px 2px rgba(16,21,28,.07),0 16px 34px -16px rgba(16,21,28,.32);
  --stage:#DCE0E6; --stage-glow:rgba(107,79,224,.07);
  --frame-b:#C9D0DA; --frame-sh:0 16px 40px -22px rgba(28,38,54,.18),0 0 0 7px #EDEFF3;
  --bar-fade:rgba(255,255,255,.88); --bar-solid:rgba(255,255,255,.94);
  --scrim:rgba(20,26,36,.34);
  --pop-sh:0 20px 44px -16px rgba(30,40,56,.26);
  --dock-glow:6%;
  --seg-bg:#E9EDF3; --seg-on:#FFFFFF; --seg-sh:0 1px 2px rgba(20,28,40,.12);
  --au-op1:.17; --au-op2:.13; --au-op3:.11;
}

/* ═══ РОЛЕВОЙ СЛОЙ (использовать в новых компонентах вместо примитивов) ═══ */
:root{
  /* поверхности */
  --bg-page:var(--ink-900);        /* фон страницы */
  --bg-card:var(--ink-800);        /* карточка на странице */
  --bg-inset:var(--ink-850);       /* вложенная/утопленная зона (расчёт, лист) */
  --bg-raised:var(--ink-750);      /* приподнятая строка (итог расчёта, шапка нормы) */
  --border-default:var(--line);
  --border-soft:var(--line-soft);
  /* текст */
  --text-primary:var(--tx-1);
  --text-secondary:var(--tx-2);
  --text-tertiary:var(--tx-3);     /* подписи; НЕ для смысловых значений */
  --text-disabled:var(--tx-4);     /* ТОЛЬКО неактивные элементы */
  /* акценты */
  --accent-area:var(--au);         /* цвет области права = навигация («где ты») */
  --verdict-bad:var(--v-bad);      /* вердикт = семантика («что у тебя») */
  --verdict-warn:var(--v-warn);
  --verdict-ok:var(--v-ok);
  /* длительности анимаций (magic numbers запрещены) */
  --dur-fast:var(--t-fast);        /* 150ms — hover/мелочи */
  --dur-base:var(--t);             /* 240ms — базовые переходы */
  --dur-screen:300ms;              /* вход экрана (fade + подъём 6px) */
  --dur-press:340ms;               /* пружина нажатия */
  --dur-ripple:550ms;              /* волна */
  --dur-glint:600ms;               /* блик */
  --dur-meter:750ms;               /* дорастание прогресс-линии */
  --dur-flare:1600ms;              /* всполох вердикта (1 раз, финал в центре) */
  --dur-think:700ms;               /* пауза «Норма думает» перед раскрытием шага */
}

/* ═══ ТИПОГРАФИЧЕСКАЯ ШКАЛА (7 ступеней + display) ═══
   Все font-size макета приведены к этим значениям (аудит: «22 кегля → 7»).
   Исключения: display-заголовки интро/hero и графика печати документа. */
:root{
  --fs-100:0.6875rem;  /* 11px — метки, подписи, сервисные строки */
  --fs-200:0.75rem;    /* 12px — вторичные подписи, дисклеймеры */
  --fs-300:0.8438rem;  /* 13.5px — вторичный текст, чипы, кнопки списков */
  --fs-400:0.9375rem;  /* 15px — основной текст, реплики, кнопки */
  --fs-500:1.0625rem;  /* 17px — подзаголовки листов */
  --fs-600:1.1875rem;  /* 19px — заголовок блока (h-md) */
  --fs-700:1.4375rem;  /* 23px — заголовок экрана, документ h1 */
  --fs-display-1:1.6875rem; /* 27px — интро */
  --fs-display-2:1.8125rem; /* 29px — hero главной */
}

/* ═══ ШКАЛА ОТСТУПОВ (шаг 4) ═══
   Реперные значения: 4 / 8 / 12 / 16 / 20 / 24 / 28 / 32 / 40.
   Фирменный ритм ленты диалога — 28 (7×4, принят пользователем).
   Правило: новые компоненты берут отступы ТОЛЬКО из шкалы. */
:root{
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px;
  --sp-6:24px; --sp-7:28px; --sp-8:32px; --sp-10:40px;
  --thread-gap:var(--sp-7); /* ритм ленты диалога */
}
