/* ОБОЛОЧКА ЭКЗЕМПЛЯРА FARN — ядро, наряд FRN-46 (01.10.2026).
   ⛔ HEX — только в определениях переменных этого блока, каждый цвет ОДИН раз
      (`--s-acc-akt` #906518 — FRN-46, в светлой колонке; FRN-81 — заливка и золотой текст в «Светлой» и «Комбинированной»).
   Всё ниже — var(...). Страж: python3 -m farn.obolochka <папка> (HEX вне переменных 0).
   Палитра — ФИРСТИЛЬ §5.1 · статусы — сквозное 04 · ТГ-1 · СХ-2 · ЛК-1 · ГЛ-Д · СВ-1 — §5.2. */

:root {
  /* тёмная колонка §5.1 — экран; она же «чернила» панели в комбинированной теме (СВ-1) */
  --t-bg: #0d1b2a; --t-card: #16283c; --t-tx: #eaf0f6; --t-mu: #93a4b6;
  --t-acc: #d4a23a; --t-acc2: #4aa3a0; --t-ln: #24384f;
  /* светлая колонка §5.1 */
  --s-bg: #ffffff; --s-card: #f4f1ea; --s-tx: #1a2634; --s-mu: #55616e;
  --s-acc: #a8761d; --s-acc2: #2f6f6c; --s-ln: #dcd6c8;
  /* светлой колонке --s-acc под белым текстом и как текст не хватает 4,5 (3,98 · 3,53 на card): заливка и
     золотой текст светлого поля — эта переменная, 5,17 · 4,58 (FRN-46, FRN-81). --s-acc не меняется. */
  --s-acc-akt: #906518;
  /* статусы 04 — одни во всех трёх темах, фирстилю не подчиняются */
  --st-done: #2E7D32; --st-prog: #1565C0; --st-wait: #CC6A1A; --st-late: #C00000;
  /* МАСШТАБ ШРИФТА (FRN-64, слово Bob 02.10 11:0x «18px», заменено словом Bob 03.10 «шрифт поменьше» → 15 px): текст страницы 15 px = 14 × 15/14.
     Одно число на всё ядро; дробь, а не округлённая десятичная. Иконки, отступы, панель — не за ним. */
  --f-masshtab: calc(15 / 14);
  /* ШКАЛА Ш-5 «узкая» (выпуск 43, FRN-66; слово Bob 02.10 17:1x «Ш-5 узкая» на «размеры надо ближе
     к друг другу»; была Ш-2 11…32): база px × --f-masshtab, max/min 22/12 = 1,83.
     Размер шрифта в ядре и в системах — ТОЛЬКО ступенью; ниже --fs-melkiy размеров нет.
     На экране при 15/14: 12,86 · 13,93 · 15 · 17,14 · 19,29 · 23,57. Страж — «размер вне шкалы N». */
  --fs-melkiy: calc(12px * var(--f-masshtab)); --fs-sluzh: calc(13px * var(--f-masshtab));
  --fs-tekst: calc(14px * var(--f-masshtab)); --fs-krupnyy: calc(16px * var(--f-masshtab));
  --fs-zag: calc(18px * var(--f-masshtab)); --fs-zag-bolshoy: calc(22px * var(--f-masshtab));
  /* ТГ-1: кегль — ступень «текст», строка 20 × масштаб */
  --tg-kegl: var(--fs-tekst); --tg-stroka: calc(20px * var(--f-masshtab)); --tg-kolonka: 72ch; --tg-tablica: 32px;
  /* размер иконки меню и шапки (слово Bob 01.10 22:0x, вариант 1: 16 → 20) */
  --ik-razmer: 20px;
  /* СХ-2 */
  --sx-liniya: 1.5px; --sx-skrug: 4px;
  /* шрифты экрана (выпуск 45, FRN-67 — выбор Bob 02.10 22:1x «1 · Дела как было»: шрифт Дел, dela.css:27,
     системный без засечек; был TNR FRN-65). Имя шрифта ОДНО, текст и моноширинный — ссылки на него
     (имена переменных остаются для экземпляров). Бумага (PDF, договоры) — не здесь, у экземпляра. */
  --f-zag: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  --f-tekst: var(--f-zag);
  --f-mono: var(--f-zag);

  /* три темы (слово Bob 01.10 13:2x): «Светлая» · «Комбинированная» (СВ-1) · «Тёмная».
     Тема по умолчанию — тёмная; без выбора при светлой системе — комбинированная (слово Bob 01.10). */
  --bg: var(--t-bg); --card: var(--t-card); --tx: var(--t-tx); --mu: var(--t-mu);
  --acc: var(--t-acc); --acc2: var(--t-acc2); --ln: var(--t-ln);
  /* ТЕКСТ ЦВЕТОМ (FRN-81, ≥ 4,5 к --bg и --card каждой темы): --acc-tx — золото текстом · --st-late-tx —
     «просрочено» текстом (рамка и заливка остаются --st-late) · --n-dolya — доля цвета роли в тексте статуса
     (f-n-st, f-n-soob b) · --n-dolya-kn — то же у опасной кнопки. В тёмной #C00000 на card 2,31 → смесь 50 % 4,85. */
  --acc-tx: var(--t-acc); --st-late-tx: color-mix(in srgb, var(--st-late) var(--n-dolya), var(--tx));
  --n-dolya: 50%; --n-dolya-kn: 50%;
  color-scheme: dark;
}
/* поле и шапка светлые: «Светлая» и «Комбинированная», без выбора — по системе */
:root[data-theme="light"], :root[data-theme="kombi"] {
  --acc-akt: var(--s-acc-akt); --acc-tx: var(--s-acc-akt); --st-late-tx: var(--st-late);
  --n-dolya: 62%; --n-dolya-kn: 70%;
  --bg: var(--s-bg); --card: var(--s-card); --tx: var(--s-tx); --mu: var(--s-mu);
  --acc: var(--s-acc); --acc2: var(--s-acc2); --ln: var(--s-ln);
  color-scheme: light;
}
/* --acc-akt — заливка под текстом --bg (активный пункт, основная кнопка, нажатый чип, кнопка темы): белый на
   --s-acc 3,98 → 5,17 (слово Bob 01.10 16:2x «б», Q-2026-10-01-06; FRN-81 — и в «Комбинированной»). В тёмной
   переменной нет — заливка остаётся --acc; в панели «Комбинированной» снята (initial): там текст тёмный. */
@media (prefers-color-scheme: light) {
  :root:not([data-theme]) {
    --acc-akt: var(--s-acc-akt); --acc-tx: var(--s-acc-akt); --st-late-tx: var(--st-late);
    --n-dolya: 62%; --n-dolya-kn: 70%;
    --bg: var(--s-bg); --card: var(--s-card); --tx: var(--s-tx); --mu: var(--s-mu);
    --acc: var(--s-acc); --acc2: var(--s-acc2); --ln: var(--s-ln);
    color-scheme: light;
  }
}
/* «Комбинированная» = СВ-1: панель чернилами (тёмная колонка). В «Светлой» и «Тёмной» панель — как корень. */
:root[data-theme="kombi"] .f-panel {
  --bg: var(--t-bg); --card: var(--t-card); --tx: var(--t-tx); --mu: var(--t-mu);
  --acc: var(--t-acc); --acc2: var(--t-acc2); --ln: var(--t-ln);
  --acc-akt: initial; --acc-tx: var(--t-acc); --st-late-tx: color-mix(in srgb, var(--st-late) var(--n-dolya), var(--tx));
  --n-dolya: 50%; --n-dolya-kn: 50%;
  color-scheme: dark;
}
@media (prefers-color-scheme: light) {
  :root:not([data-theme]) .f-panel {
    --bg: var(--t-bg); --card: var(--t-card); --tx: var(--t-tx); --mu: var(--t-mu);
    --acc: var(--t-acc); --acc2: var(--t-acc2); --ln: var(--t-ln);
    --acc-akt: initial; --acc-tx: var(--t-acc); --st-late-tx: color-mix(in srgb, var(--st-late) var(--n-dolya), var(--tx));
    --n-dolya: 50%; --n-dolya-kn: 50%;
    color-scheme: dark;
  }
}

/* ── каркас ─────────────────────────────────────────────────────────────── */
html, body { margin: 0; }
body.f-telo {
  background: var(--bg); color: var(--tx);
  font: var(--tg-kegl)/var(--tg-stroka) var(--f-tekst);
}
.f-karkas { display: flex; min-height: 100vh; }
.f-glavnoe { flex: 1; min-width: 0; padding: 14px 20px 24px; }
.f-soderzhimoe { margin-top: 10px; }
.f-tekst { max-width: var(--tg-kolonka); }
.f-mono { font-family: var(--f-mono); }
.f-mu { color: var(--mu); }
a { color: inherit; }

/* ── панель ГЛ-Д ────────────────────────────────────────────────────────── */
.f-panel {
  width: 200px; flex: none; box-sizing: border-box; padding: 10px 6px;
  background: var(--bg); color: var(--tx); border-right: 1px solid var(--ln);
  display: flex; flex-direction: column;
}
.f-brend { display: flex; align-items: center; gap: 8px; padding: 2px 8px 10px;
  border-bottom: 1px solid var(--ln); margin-bottom: 4px; }
.f-brend b { display: block; letter-spacing: .1em; }
.f-brend span { font-size: var(--fs-melkiy); color: var(--mu); }
.f-znak { color: var(--acc); flex: none; }
.f-razdel { font: 700 var(--fs-tekst) var(--f-zag); letter-spacing: .12em; text-transform: uppercase; color: var(--mu);
  margin: 14px 10px 5px; }
.f-punkt { display: flex; align-items: center; gap: 10px; padding: 4px 8px; margin-bottom: 1px;
  border-radius: 6px; color: var(--tx); text-decoration: none; font-size: var(--fs-tekst); position: relative; }
.f-punkt:hover { background: var(--card); }
.f-punkt[aria-current="page"] { background: var(--acc-akt, var(--acc)); color: var(--bg); }
.f-punkt[aria-current="page"] .f-bejdzh { color: var(--bg); }
.f-punkt[aria-current="page"] .f-schyot { color: var(--bg); }
.f-schyot { font: 700 var(--fs-sluzh) var(--f-mono); color: var(--acc-tx); margin-left: auto; }
/* FRN-91 (05.10, ГБ-86 п.5; 03 §4-кватер.15 «Rule» — «Замок + подсказка»): бейдж ограничения — только замок,
   без рамки и текста; подпись («только владелец») — в title + aria-label компонента _znachok.html. */
.f-bejdzh { display: inline-flex; align-items: center; font-size: var(--fs-melkiy); color: var(--mu);
  margin-left: 6px; white-space: nowrap; line-height: 1.2; vertical-align: middle; }
/* выпуск 43: подпись не шире своего места — длинное слово переносится, а не вылезает за панель
   и плитку: перенос по слогам со знаком «-» (`hyphens: auto`, язык страницы ru). Без него WebKit
   режет слово без знака и оставляет букву на строке («обеспечени / е»). */
.f-punkt > span { min-width: 0; overflow-wrap: anywhere; hyphens: auto; }
/* FRN-84 (вопрос ночи 11): в плитке главной переносов «-» нет — подпись берёт всё место между иконкой и точкой
   (flex: 1, иначе бейдж сжат до ширины имени и режется «ад-министратор»), слово рвётся, только если длиннее строки. */
.f-plitka > span { flex: 1; min-width: 0; overflow-wrap: break-word; }
/* FRN-92 (05.10, вариант А): значки строки задачи — {% farn_znachok_zadachi "…" %}, подпись в подсказке.
   Цвет — линия --mu, деталь золотом (ИК-В); «просрочено» — цветом просрочки 04 в мере контраста (--st-late-tx, FRN-81). */
.f-znachok-zadachi { display: inline-flex; align-items: center; vertical-align: middle; margin-left: 4px; }
.f-znachok-prosrocheno .f-ik { color: var(--st-late-tx); --f-ik-zoloto: var(--st-late-tx); }
.f-panel-niz { margin-top: auto; padding: 12px 8px 4px; border-top: 1px solid var(--ln); }
/* «скоро» (FRN-52): модуль не сделан — не ссылка, приглушён; пометка — своё слово, без замка */
.f-punkt-skoro { color: var(--mu); cursor: default; }
.f-punkt-skoro:hover { background: none; }
.f-skoro { font-size: var(--fs-melkiy); color: var(--mu); margin-left: 6px; white-space: nowrap; }

/* ── ИК-В (FRN-47): sprite.svg, линия 1,5 px и non-scaling-stroke — в символе, одна деталь золотом.
   Внешний <use> классов страницы не видит — цвет детали идёт переменной (она наследуется). ── */
.f-ik { flex: none; color: var(--mu); --f-ik-zoloto: var(--acc); --f-ik-fon: var(--bg); }
.f-punkt:hover .f-ik, .f-plitka:hover .f-ik, .f-knopka-ik:hover .f-ik { --f-ik-fon: var(--card); }
/* активный пункт залит --acc: золото на золоте пропало бы — деталь и линия цветом текста пункта */
.f-punkt[aria-current="page"] .f-ik { color: var(--bg); --f-ik-zoloto: var(--bg); --f-ik-fon: var(--acc-akt, var(--acc)); }
/* запасной вид пункта без иконки (FRN-55, слово Bob «33. б»): пунктирная рамка размером с иконку */
.f-ik-net { display: inline-block; flex: none; box-sizing: border-box; width: var(--ik-razmer);
  height: var(--ik-razmer); border: 1px dashed var(--mu); border-radius: 3px; }
.f-punkt .f-ik, .f-knopka-ik .f-ik { width: var(--ik-razmer); height: var(--ik-razmer); }
.f-knopka-ik { display: inline-flex; align-items: center; padding: 5px; border-radius: 6px;
  color: var(--mu); background: none; border: 0; cursor: pointer; text-decoration: none; position: relative; }
.f-knopka-ik:hover { background: var(--card); }
.f-knopka-ik .f-schyot { position: absolute; top: -3px; right: -4px; font-size: var(--fs-melkiy); }

/* ── бургер без JS (FRN-53): галочка перед каркасом, метка — полоса над ним. Порог узкой ширины —
   ОДНО число ядра: 720 px (как у Смесей, SMS-23; «дальше» Bob 01.10). Скрипт панель не открывает. ── */
.f-burger-flag { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.f-burger { display: none; }
.f-burger-polosy, .f-burger-polosy::before, .f-burger-polosy::after { display: block; width: 18px; height: 2px;
  border-radius: 1px; background: var(--tx); }
.f-burger-polosy { position: relative; }
.f-burger-polosy::before, .f-burger-polosy::after { content: ""; position: absolute; left: 0; }
.f-burger-polosy::before { top: -6px; }
.f-burger-polosy::after { top: 6px; }
.f-burger-flag:focus-visible + .f-burger { outline: 2px solid var(--acc); outline-offset: -2px; }

/* ── ЛК-1: знак слева, слово по центру высоты знака; поле ≥ высоты буквы ── */
.f-lockup { display: inline-flex; align-items: center; gap: 1em; padding: .5em 0; }
.f-lockup .f-slovo { font: 400 var(--fs-tekst)/1 var(--f-zag); letter-spacing: .32em; color: var(--tx); }

/* ── шапка ГЛ-Д ─────────────────────────────────────────────────────────── */
.f-shapka { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px;
  flex-wrap: wrap; padding-bottom: 10px; border-bottom: 1px solid var(--ln); }
.f-kroshka { font-size: var(--fs-melkiy); letter-spacing: .14em; text-transform: uppercase; color: var(--mu); }
.f-zagolovok { font: 700 var(--fs-zag)/1.2 var(--f-zag); margin: 2px 0 0; }
.f-knopki { display: flex; align-items: center; gap: 4px; color: var(--mu); font-size: var(--fs-sluzh); flex-wrap: wrap; }
.f-knopka { display: inline-flex; align-items: center; gap: 6px;
  border: 1px solid var(--ln); border-radius: 6px; padding: 4px 10px; color: var(--tx);
  background: none; font: var(--fs-sluzh) var(--f-tekst); text-decoration: none; cursor: pointer; }
.f-polzovatel { margin-left: 6px; color: var(--tx); }

/* переключатель темы: три позиции, без выбора — как в системе */
.f-tema { display: inline-flex; border: 1px solid var(--ln); border-radius: 20px; padding: 2px; }
.f-tema button { background: none; border: 0; color: var(--mu); padding: 3px 12px; border-radius: 16px;
  cursor: pointer; font: var(--fs-sluzh) var(--f-tekst); }
.f-tema button[aria-pressed="true"] { background: var(--acc-akt, var(--acc)); color: var(--bg); }

/* ── главная ГЛ-Д «Сегодня и модули» ────────────────────────────────────── */
.f-kolonki { display: grid; grid-template-columns: minmax(200px, .9fr) 1.6fr; gap: 14px; margin-top: 10px; }
.f-blok-t { font-size: var(--fs-melkiy); letter-spacing: .12em; text-transform: uppercase; color: var(--acc-tx);
  font-weight: 700; margin-bottom: 6px; }
.f-stroka { display: grid; grid-template-columns: 1fr auto; gap: 8px; align-items: center;
  padding: 6px 0; border-bottom: 1px solid var(--ln); color: var(--tx); text-decoration: none; }
.f-stroka-imya { font-size: var(--fs-sluzh); font-weight: 700; }
.f-stroka-poyasn { font-size: var(--fs-melkiy); color: var(--mu); }
.f-stroka b { font: 700 var(--fs-krupnyy) var(--f-mono); }
.f-stroka b.f-vnimanie { color: var(--acc-tx); }
.f-stroka b.f-prosrocheno { color: var(--st-late-tx); }
.f-gruppa { margin-bottom: 8px; }
.f-gruppa-t { font-size: var(--fs-melkiy); color: var(--mu); margin-bottom: 4px; }
/* FRN-84: ряды одной высоты (1fr) — плитка с бейджем не делает свой ряд выше соседних */
.f-plitki { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); grid-auto-rows: 1fr; gap: 5px; }
.f-plitka { display: flex; align-items: center; gap: 7px; border: 1px solid var(--ln); border-radius: 8px;
  padding: 6px 8px; font-size: var(--fs-sluzh); line-height: 1.25; color: var(--tx); text-decoration: none; }
.f-plitka:hover { background: var(--card); }
.f-tochka { display: inline-block; width: 6px; height: 6px; border-radius: 50%; flex: none; margin-left: auto; }
.f-s-otkryt { background: var(--st-done); }
.f-s-razrabotka { background: var(--st-prog); }
.f-s-utochnyaetsya { background: var(--st-wait); }
.f-s-plan { border: 1px solid var(--mu); box-sizing: border-box; }
.f-legenda { font-size: var(--fs-melkiy); color: var(--mu); display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin-top: 6px; }
.f-legenda .f-tochka { margin-left: 6px; }

/* ── ТГ-1: таблица, строка 32 px ────────────────────────────────────────── */
.f-tablica { border-collapse: collapse; width: 100%; }
/* FRN-90 (05.10, ГБ-86 п.2 «задачи слились в один большой лист»): строка отделена отступом в ячейке
   (6 px сверху и снизу; 32 px остаётся минимумом высоты) и заметной границей — линия --ln, подмешанная к тексту. */
.f-tablica th, .f-tablica td { height: var(--tg-tablica); padding: 6px 10px; text-align: left;
  border-bottom: 1px solid var(--ln); }
.f-tablica td { border-bottom-color: color-mix(in srgb, var(--tx) 22%, var(--ln)); }
.f-tablica th { border-bottom-color: var(--acc); font-size: var(--fs-sluzh); }

/* ── СХ-2: линия 1,5 px · скругление 4 · стрелка залитая ────────────────── */
.f-sx { fill: none; stroke: var(--tx); stroke-width: var(--sx-liniya); }
.f-sx-uzel { rx: var(--sx-skrug); ry: var(--sx-skrug); }
.f-sx-strelka { fill: var(--tx); stroke: none; }

/* ══ НАЧИНКА (выпуск 45, FRN-68 — вариант 1 «Дела как было», выбор Bob 02.10 22:1x) ═════════════════
   Правило двух: каждый из 9 элементов своей реализацией есть в 2–5 системах (Контур 02.10 «единый стиль
   с начинкой» §2). Показатель · карточка · фильтр · поле и форма · кнопки 4 вида · статус-«таблетка» ·
   таблица (ТГ-1 + числа) · пустое · лист печати. Классы — только f-n-* (36, NACHINKA_KLASSY); значения —
   только var() ядра: HEX 0, размер шрифта — ступенью --fs-*. Своё у экземпляра — только e-* (календарь
   GISH, витрина Магазина). Страж: «свой класс начинки вне ядра N» (python3 -m farn.obolochka). */
:root { --n-r-kart: 12px; --n-r-kn: 9px; --n-r-pole: 8px;
  /* бумага листа печати — светлая колонка §5.1 в ЛЮБОЙ теме (лист не меняется от темы; исключение названо
     правилом, как статусы 04): ссылки на колонку — только здесь, в определениях */
  --n-bumaga: var(--s-bg); --n-bumaga-tx: var(--s-tx); --n-bumaga-ln: var(--s-ln); --n-ten: var(--t-bg);
  /* FRN-79: шаг сетки времени — две строки текста (запись на одну клетку читается целиком, GSH-07 23.08) */
  --n-setka-shag: calc(2 * var(--tg-stroka) + 6px); }
.f-n-ryad { display: grid; gap: 14px; margin-bottom: 14px; }
.f-n-2 { grid-template-columns: 1.55fr 1fr; }
.f-n-2r { grid-template-columns: 240px 1fr; }
/* показатель: число + подпись */
.f-n-pokazateli { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 14px; }
.f-n-pokazatel { background: var(--card); border: 1px solid var(--ln); border-radius: var(--n-r-kart); padding: 10px 14px; }
.f-n-pokazatel b { display: block; font: 700 var(--fs-zag-bolshoy)/1.15 var(--f-mono); font-variant-numeric: tabular-nums; }
.f-n-pokazatel span { font-size: var(--fs-sluzh); color: var(--mu); }
.f-n-pokazatel.f-n-trevoga { border-color: var(--st-late); }
.f-n-pokazatel.f-n-trevoga b { color: var(--st-late-tx); }
.f-n-pokazatel.f-n-vnimanie b { color: var(--acc-tx); }
/* карточка: залита, скругление 12 */
.f-n-kart { background: var(--card); border: 1px solid var(--ln); border-radius: var(--n-r-kart); padding: 12px 14px; min-width: 0; }
.f-n-kart > h2 { font: 700 var(--fs-krupnyy)/1.25 var(--f-zag); margin: 0 0 8px; display: flex; gap: 8px; align-items: baseline; }
.f-n-kart > h2 small { font: 400 var(--fs-sluzh) var(--f-tekst); color: var(--mu); }
/* фильтр */
.f-n-filtr { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 14px; }
.f-n-chip { border: 1px solid var(--ln); border-radius: 20px; padding: 2px 12px; font-size: var(--fs-sluzh); color: var(--tx); background: none; }
.f-n-chip[aria-pressed="true"] { background: var(--acc-akt, var(--acc)); border-color: var(--acc-akt, var(--acc)); color: var(--bg); }
.f-n-chip i { font-style: normal; color: var(--mu); margin-left: 4px; }
.f-n-chip[aria-pressed="true"] i { color: var(--bg); }
/* поле и форма */
.f-n-pole, .f-n-filtr input, .f-n-filtr select { font: var(--fs-tekst) var(--f-tekst); color: var(--tx); background: var(--bg);
  border: 1px solid var(--ln); border-radius: var(--n-r-pole); padding: 5px 10px; box-sizing: border-box; }
.f-n-filtr input[type=search] { min-width: 240px; flex: 1; }
.f-n-forma { display: grid; gap: 9px; }
.f-n-forma label { display: grid; gap: 3px; font-size: var(--fs-sluzh); color: var(--mu); }
.f-n-forma .f-n-pole { width: 100%; }
.f-n-forma .f-n-dva { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.f-n-oshibka .f-n-pole { border-color: var(--st-late); }
.f-n-oshibka em { font-style: normal; font-size: var(--fs-melkiy); color: var(--st-late-tx); }
.f-n-podskazka { font-size: var(--fs-melkiy); color: var(--mu); }
.f-n-gal { display: flex; align-items: center; gap: 8px; font-size: var(--fs-sluzh); color: var(--tx); margin: 3px 0; }
/* кнопки — 4 вида: основная · вторичная · опасная · малая; скругление 9 */
.f-n-knopki { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.f-n-kn { display: inline-flex; align-items: center; gap: 6px; border-radius: var(--n-r-kn); padding: 6px 16px;
  font: 700 var(--fs-tekst) var(--f-tekst); cursor: pointer; border: 1px solid transparent; text-decoration: none; }
.f-n-osn { background: var(--acc-akt, var(--acc)); color: var(--bg); }
.f-n-vtor { background: none; border-color: var(--ln); color: var(--tx); }
.f-n-opas { background: none; border-color: var(--st-late); color: color-mix(in srgb, var(--st-late) var(--n-dolya-kn), var(--tx)); }
.f-n-mal { padding: 2px 10px; font-size: var(--fs-sluzh); }
/* статус: цвет по смыслу (6 ролей), слово — из системы (у задач 5 слов §12.3, у записи и партии — свои) */
.f-n-gotovo { --c: var(--st-done); }
.f-n-rabota { --c: var(--st-prog); }
.f-n-zhdyot { --c: var(--st-wait); }
.f-n-pros { --c: var(--st-late); }
.f-n-neytr { --c: var(--mu); }
.f-n-otl { --c: var(--acc2); }
.f-n-st { display: inline-flex; align-items: center; border-radius: 20px; padding: 1px 9px;
  font-size: var(--fs-melkiy); font-weight: 700; white-space: nowrap; line-height: 1.5;
  background: color-mix(in srgb, var(--c) 16%, transparent); color: color-mix(in srgb, var(--c) var(--n-dolya), var(--tx)); }
/* таблица — .f-tablica ТГ-1 + числа справа */
.f-tablica td.f-n-ch, .f-tablica th.f-n-ch { text-align: right; font-family: var(--f-mono); font-variant-numeric: tabular-nums; }
.f-tablica td { font-size: var(--fs-sluzh); }
/* FRN-81: ссылка-кнопка (a.f-n-kn) в таблице — своим цветом вида, а не золотом ссылки (было 3,53 у a.f-n-vtor) */
.f-tablica a:not(.f-n-kn) { color: var(--acc-tx); text-decoration: none; }
.f-tablica tr:hover td { background: color-mix(in srgb, var(--acc) 6%, transparent); }
.f-n-kod { font-family: var(--f-mono); color: var(--mu); white-space: nowrap; }   /* FRN-90: номер без переноса */
/* пустое состояние */
.f-n-pusto { text-align: center; padding: 18px 10px; color: var(--mu); border: 1px dashed var(--ln); border-radius: var(--n-r-kart); }
.f-n-pusto b { display: block; color: var(--tx); font: 700 var(--fs-tekst) var(--f-zag); margin: 6px 0 2px; }
.f-n-pusto .f-ik { width: 28px; height: 28px; }
.f-n-pusto p { margin: 0 0 10px; font-size: var(--fs-sluzh); }
/* лист печати — бумага одна в любой теме: светлая колонка ядра */
.f-n-list { background: var(--n-bumaga); color: var(--n-bumaga-tx); border: 1px solid var(--n-bumaga-ln); border-radius: 2px;
  padding: 18px 22px; box-shadow: 0 2px 10px color-mix(in srgb, var(--n-ten) 30%, transparent); font-family: var(--f-tekst); }
.f-n-list h3 { font: 700 var(--fs-krupnyy) var(--f-zag); text-align: center; margin: 0 0 2px; }
.f-n-list .f-n-rek { text-align: center; font-size: var(--fs-melkiy); margin-bottom: 10px; }
.f-n-list table { width: 100%; border-collapse: collapse; font-size: var(--fs-melkiy); }
.f-n-list th, .f-n-list td { border: 1px solid var(--n-bumaga-tx); padding: 3px 6px; text-align: left; }
.f-n-list .f-n-podpisi { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; margin-top: 18px; font-size: var(--fs-melkiy); }
.f-n-list .f-n-podpisi span { border-top: 1px solid var(--n-bumaga-tx); padding-top: 3px; }
.f-n-metka { font-size: var(--fs-melkiy); letter-spacing: .12em; text-transform: uppercase; color: var(--acc-tx); font-weight: 700; margin: 0 0 6px; }
/* ── FRN-78: пять компонентов, которых не было (правило двух — Контур 03.10 «раскладка экранов как ПРОБА» §2;
   слово Bob 03.10 17:5x, 02 §33.8). Цвет по смыслу — та же роль, что у статуса: --c от f-n-gotovo · f-n-pros · … */
/* сообщение (успех · ошибка · внимание · сведение): роль рядом — f-n-gotovo · f-n-pros · f-n-zhdyot · f-n-rabota */
.f-n-soob { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; margin: 0 0 14px; padding: 9px 14px;
  border: 1px solid color-mix(in srgb, var(--c, var(--st-prog)) 40%, var(--ln)); border-left: 4px solid var(--c, var(--st-prog));
  border-radius: var(--n-r-pole); background: color-mix(in srgb, var(--c, var(--st-prog)) 9%, var(--card));
  color: var(--tx); font-size: var(--fs-tekst); }
.f-n-soob b { color: color-mix(in srgb, var(--c, var(--st-prog)) var(--n-dolya), var(--tx)); }   /* FRN-81: dark 3,85 → 4,91 */
/* реквизиты «ключ — значение»: <dl class="f-n-rekv"><dt>…<dd>… (f-n-rek — строка листа печати, не это) */
.f-n-rekv { display: grid; grid-template-columns: fit-content(40%) 1fr; gap: 5px 18px; margin: 0; font-size: var(--fs-sluzh); }
.f-n-rekv dt { color: var(--mu); }
.f-n-rekv dd { margin: 0; color: var(--tx); min-width: 0; overflow-wrap: anywhere; }
/* пояснение под заголовком шапки: {% block poyasnenie %} в baza.html — счётчики словами, легенда; пусто — не видно */
.f-n-poyasnenie { font-size: var(--fs-sluzh); color: var(--mu); margin-top: 3px; }
.f-n-poyasnenie:empty { display: none; }
.f-n-poyasnenie b { color: var(--tx); }
/* показатель-ссылка: <a class="f-n-pokazatel f-n-ssylka">, выбранный — aria-current="true" */
.f-n-ssylka { color: inherit; text-decoration: none; cursor: pointer; }
.f-n-ssylka:hover, .f-n-ssylka[aria-current="true"] { border-color: var(--acc); }
.f-n-ssylka[aria-current="true"] { box-shadow: inset 0 0 0 1px var(--acc); }
/* обязательное поле: подпись поля — <span class="f-n-obyaz">Название</span>, звезда ставится ядром */
.f-n-obyaz::after { content: " *"; color: var(--st-late-tx); font-weight: 700; }
/* ── FRN-79: компоненты одной системы — и они в одной концепции (02 §33.8: второй системы не ждут, e-* не убежище) */
/* сетка времени (календарь GISH): столбец времени · столбцы ресурсов · шаг строки — одна клетка; высоту записи
   задаёт rowspan, его считает экземпляр (style= 0) */
.f-n-prokrutka { overflow-x: auto; }
.f-n-setka { border-collapse: collapse; width: 100%; table-layout: fixed; font-size: var(--fs-sluzh); }
.f-n-setka th, .f-n-setka td { height: var(--n-setka-shag); padding: 0 6px; border: 1px solid var(--ln); vertical-align: top; text-align: left; }
.f-n-setka thead th { height: auto; padding: 6px 8px; font: 700 var(--fs-sluzh) var(--f-zag); border-bottom: 2px solid var(--acc); }
.f-n-setka thead th small { display: block; font: 400 var(--fs-melkiy) var(--f-tekst); color: var(--mu); }
.f-n-vr { width: 64px; color: var(--mu); font: var(--fs-melkiy) var(--f-mono); }
.f-n-vne { background: color-mix(in srgb, var(--mu) 10%, transparent); }
.f-n-svob a { display: block; height: 100%; color: transparent; text-align: center; text-decoration: none; }
.f-n-svob:hover { background: color-mix(in srgb, var(--acc) 8%, transparent); }
.f-n-svob:hover a { color: var(--acc-tx); }
.f-n-zan { position: relative; padding: 0; }
.f-n-zapis { position: absolute; inset: 2px; overflow: hidden; box-sizing: border-box; padding: 3px 8px; line-height: 1.35;
  border-left: 3px solid var(--c, var(--acc2)); border-radius: var(--n-r-pole);
  background: color-mix(in srgb, var(--c, var(--acc2)) 16%, var(--card)); color: var(--tx); font-size: var(--fs-melkiy); }
.f-n-zapis b { font-size: var(--fs-sluzh); }
.f-n-pereryv { --c: var(--mu); background: repeating-linear-gradient(45deg, color-mix(in srgb, var(--mu) 14%, var(--card)) 0 6px, var(--card) 6px 12px); }
/* витрина (Магазин): баннер · выгоды · плитки товаров — фото, имя, подпись, цена */
.f-n-banner { margin-bottom: 14px; padding: 40px 24px; text-align: center; background: var(--card); border: 1px solid var(--ln); border-radius: var(--n-r-kart); }
.f-n-banner h2 { font: 800 var(--fs-zag-bolshoy)/1.15 var(--f-zag); margin: 0 0 8px; }
.f-n-banner p { margin: 0 0 18px; color: var(--mu); font-size: var(--fs-krupnyy); }
.f-n-vygody { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px; margin-bottom: 14px; }
.f-n-vygoda { display: flex; align-items: center; gap: 10px; padding: 12px 14px; background: var(--card); border: 1px solid var(--ln);
  border-radius: var(--n-r-kart); font-size: var(--fs-sluzh); }
.f-n-vygoda .f-ik { flex: none; color: var(--acc); }
.f-n-vitrina { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 14px; }
.f-n-tovar { display: flex; flex-direction: column; gap: 4px; padding: 12px; background: var(--card); border: 1px solid var(--ln);
  border-radius: var(--n-r-kart); color: var(--tx); text-decoration: none; }
a.f-n-tovar:hover { border-color: var(--acc); }
.f-n-tovar .f-n-st { align-self: flex-start; }   /* метка наличия — по слову, не во всю ширину */
.f-n-tovar h3 { font: 700 var(--fs-tekst)/1.3 var(--f-zag); margin: 0; }
.f-n-foto { display: grid; place-items: center; aspect-ratio: 1 / 1; overflow: hidden; margin-bottom: 6px;
  background: var(--bg); border-radius: var(--n-r-pole); }
.f-n-foto img { width: 100%; height: 100%; object-fit: contain; }
.f-n-foto .f-ik { width: 40px; height: 40px; color: var(--mu); }
.f-n-tsena { margin-top: auto; font: 700 var(--fs-krupnyy) var(--f-mono); font-variant-numeric: tabular-nums; }
/* узкий экран начинки (+2 к 59 образца — слово Bob 03.10 11:1x «дальше») — в ОБЩЕМ @media 720 px ниже:
   порог узкой ширины — одно правило ядра (FRN-53) */
/* ══ конец НАЧИНКИ ══ */

@media (max-width: 720px) {
  .f-burger { display: flex; align-items: center; height: 44px; padding: 0 16px; cursor: pointer;
    background: var(--bg); border-bottom: 1px solid var(--ln); }
  .f-karkas { flex-direction: column; }
  .f-panel { display: none; width: auto; border-right: 0; border-bottom: 1px solid var(--ln); }
  .f-burger-flag:checked ~ .f-karkas .f-panel { display: flex; }
  .f-kolonki { grid-template-columns: 1fr; }
  .f-glavnoe { padding: 12px 16px 20px; }
  /* начинка (выпуск 45, FRN-68): образец снят на 1280 px, системы открывают и с телефона */
  .f-n-pokazateli { grid-template-columns: repeat(2, 1fr); }
  .f-n-2, .f-n-2r { grid-template-columns: 1fr; }
  .f-n-forma .f-n-dva { grid-template-columns: 1fr; }   /* FRN-73: два поля в ряд на узком — в столбец */
  .f-n-rekv { grid-template-columns: 1fr; gap: 0 0; }   /* FRN-78: ключ над значением */
  .f-n-rekv dd { margin-bottom: 6px; }
  .f-n-banner { padding: 24px 14px; }                     /* FRN-79 */
}

/* ── Печать (FRN-59, выпуск 41): на бумагу идёт экран, а не оболочка. Шапка, панель и бургер —
   элементы ядра, поэтому и правило ядра: до 41 его держали Смеси в своём mb.css (SMS-76 з3).
   !important — чтобы перебить открытую панель бургера (≤ 720 px, `:checked ~ … .f-panel`). ── */
@media print {
  .f-shapka, .f-panel, .f-burger, .f-burger-flag { display: none !important; }
  .f-karkas { display: block; }
  .f-n-kn, .f-n-knopki { display: none !important; }   /* FRN-73: кнопки начинки на бумагу не идут */
}
