/* ============================================================
   REFLEX · PLATFORM — оболочка приложения
   Материал v1c (M1, 14.10.2026; эталон docs/superpowers/specs/2026-10-14-material-mock-now-static.html):
   статичный фон (лаванда → почти белый → персик, три тонкие линии; никакой анимации), на столе — одна белая полупрозрачная плита
   (blur 28, saturate ≤ 115 %, радиус 40), рейл в её левой колонке, контент на белой подложке .main; панели — бумага
   (белые, радиус 26, мягкая тень, без рамок и blur); листы и поповеры — белые с blur 20; действия — тёмные пилюли --pill.
   Бирюза --deep/--mid — только в данных (спарклайны, кольца, полосы, прогресс), тёплый --warm — только «внимание».
   ============================================================ */
*{box-sizing:border-box}
html{background:var(--bg-base)}
/* фон страницы — неподвижный слой под всем (fixed: на iOS background-attachment:fixed не работает); у body своего фона нет */
body{margin:0;color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}
/* v1d R3b‑1 (вариант B): поверх фона M1 — три статичных пятна света (большие, мягкий спад, без анимации): лаванда (тон --bg-lav2, ядро #B9C3F4)
   слева сверху, персик (тон --bg-peach, ядро #F4D3BA) справа сверху, мята rgba(126,242,192,.35) снизу; ядра темнее токенов — сквозь плиту .42
   и подложку .74 пятна в цвет токенов не читались бы */
body::before{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;background-color:var(--bg-base);background-image:
  radial-gradient(42% 52% at 16% 14%,#B9C3F4 0%,rgba(204,212,246,.85) 32%,rgba(204,212,246,0) 100%),
  radial-gradient(40% 50% at 86% 10%,#F4D3BA 0%,rgba(246,228,212,.85) 34%,rgba(246,228,212,0) 100%),
  radial-gradient(60% 42% at 46% 104%,rgba(126,242,192,.35) 0%,rgba(126,242,192,.18) 45%,rgba(126,242,192,0) 100%),
  radial-gradient(55% 60% at 100% 0%,var(--bg-peach) 0%,rgba(246,228,212,.7) 30%,rgba(246,228,212,0) 70%),
  radial-gradient(65% 75% at 0% 100%,var(--bg-lav) 0%,rgba(213,215,245,.75) 35%,rgba(213,215,245,0) 75%),
  radial-gradient(45% 55% at 0% 0%,rgba(213,215,245,.9) 0%,rgba(213,215,245,0) 70%),
  radial-gradient(50% 60% at 100% 100%,rgba(204,212,246,.8) 0%,rgba(204,212,246,0) 70%),
  radial-gradient(45% 45% at 52% 45%,var(--bg-white) 0%,rgba(251,251,254,0) 100%)}
.bg-lines{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.bg-lines path{fill:none;stroke:var(--bg-line);stroke-opacity:var(--bg-line-a);stroke-width:1;vector-effect:non-scaling-stroke}
h1,h2,h3{margin:0;font-weight:700;letter-spacing:-.035em;text-wrap:balance}
.hide{display:none!important}
.kicker{font-family:var(--mono);font-size:var(--fs-cap);letter-spacing:.12em;text-transform:uppercase;color:var(--kicker);font-weight:600;margin-bottom:18px}   /* M2b: заголовки секций темнее (--kicker) */
.ic{width:16px;height:16px;flex:none;display:block;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}

/* ---------- панель‑бумага (класс .glass остаётся — меняется материал): белая непрозрачная, радиус 26, волосяной контур и мягкая тень (M2b), без blur ---------- */
.glass{position:relative;border-radius:var(--panel-radius);overflow:hidden;background:var(--panel-bg);box-shadow:var(--panel-shadow)}
.glass::before,.glass::after{content:none}
.glass>*{position:relative;z-index:1}

/* ---------- оболочка ---------- */
.app{min-height:100dvh;padding:0 16px calc(var(--tab-h) + 24px + env(safe-area-inset-bottom))} /* как у таблетки вкладок: над домашней полосой */
.main{min-width:0}
.screen{max-width:1200px;margin:0 auto;padding-top:28px}
.screen h1{font-size:clamp(28px,3.4vw,42px);line-height:1.05}

/* ---------- вкладки: телефон — нижняя таблетка (белая бумага) ---------- */
.tabs{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:30;height:var(--tab-h);border-radius:99px;display:flex;justify-content:space-around;align-items:center;padding:0 4px}
.tabs .skin,.head .skin{position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:var(--pop-bg);-webkit-backdrop-filter:blur(20px) saturate(110%);backdrop-filter:blur(20px) saturate(110%);box-shadow:var(--pop-shadow)}
@media (max-width:759.98px){   /* B10: клавиатура открыта — таблетка вкладок и «+» Плана уходят вниз, поле ввода не закрыто */
  html.kbd .tabs,html.kbd .plan-fab{visibility:hidden;pointer-events:none}   /* без перехода: клавиатура и так въезжает */
  html.kbd .chat .ct-hint{display:none}
  html.kbd .app{padding-bottom:12px}   /* таблетки нет — и запаса под неё не нужно (чат: страница не прокручивается, только лента) */
}
.tabs button{position:relative;z-index:1;background:none;border:0;font:500 var(--fs-cap)/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);display:flex;flex-direction:column;gap:6px;align-items:center;padding:8px 10px;border-radius:99px;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:color var(--dur) var(--ease),background var(--dur) var(--ease)}
.tabs button.on{color:var(--ink);background:var(--chip-bg)}
.tabs .rail-add,.rail-logo{display:none}
/* шесть подписей моно‑капсом на 390 px занимают ~300 px из 358: кнопки по ширине текста, поля 4 px, без переноса */
@media (max-width:759.98px){.tabs button{padding:8px 4px;white-space:nowrap;min-width:0}}
/* уже 390 px (iPhone mini/SE 375, Android 360, 320): таблетка шире, поля и межбуквенный интервал меньше — подписи не вылезают за кнопки */
@media (max-width:389.98px){.tabs{left:8px;right:8px;padding:0 2px}.tabs button{padding:8px 2px;letter-spacing:.02em}}
@media (max-width:349.98px){.tabs button{letter-spacing:0}}

/* ---------- плита (≥ 760): #app — одна белая полупрозрачная плита; blur — на ::before (backdrop-filter на самой .app сделал бы её
   контейнером для position:fixed потомков — слоя чата, поповеров экранов); внутри — белая подложка .main с шапкой и экраном ---------- */
@media (min-width:760px){
  :root{--plate-in:12px}
  .app{position:relative;z-index:0;margin:var(--plate-in);min-height:calc(100dvh - 2 * var(--plate-in));border-radius:var(--plate-r);padding:calc(24px + 52px + 12px - var(--plate-in)) 12px 12px}
  .app::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:var(--plate-bg);
    -webkit-backdrop-filter:blur(28px) saturate(115%);backdrop-filter:blur(28px) saturate(115%);box-shadow:var(--plate-shadow)}
  .main{min-height:calc(100dvh - 2 * var(--plate-in) - 24px - 52px - 12px);border-radius:var(--main-r);background:var(--main-bg);box-shadow:var(--main-ring);padding:18px 24px 28px}
  /* верхняя таблетка вкладок (760–1023) — над плитой */
  .tabs{top:24px;bottom:auto;left:50%;right:auto;transform:translateX(-50%);width:min(900px,calc(100% - 28px));height:52px}
}
@media (min-width:1024px){:root{--plate-in:16px}}
@media (min-width:1280px){:root{--plate-in:20px}}

/* ============================================================
   ЗАДАЧА 7 — компоненты оболочки
   ============================================================ */
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;-webkit-tap-highlight-color:transparent}
:focus-visible{outline:1.5px solid var(--ink);outline-offset:2px}   /* M2: фокус‑кольцо — --ink 1,5 px */
p{margin:0}

/* ---------- кнопки: белая пилюля с волосяной рамкой; .dark — главная, тёмная пилюля (нажатие — WAAPI scale в press.js, не :active{transform}) ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:13px 22px;border-radius:99px;border:none;font-weight:500;font-size:var(--fs-sm);line-height:1;color:var(--ink);text-decoration:none;cursor:pointer;
  background:#fff;box-shadow:inset 0 0 0 1px var(--line);transition:transform .35s var(--spring),box-shadow .35s var(--spring),background .35s var(--spring)}
.btn.hv{transform:translateY(-1px);box-shadow:inset 0 0 0 1px rgba(18,21,28,.2),0 10px 22px -14px rgba(20,24,40,.4)}
.btn.dark{color:#fff;background:var(--pill);box-shadow:0 10px 22px -14px rgba(20,24,40,.55)}
.btn.dark.hv{background:#262933;box-shadow:0 14px 26px -14px rgba(20,24,40,.6)}
.btn.sm{padding:9px 15px;font-size:var(--fs-meta)}
.btn .ic{width:15px;height:15px}
.btn.dark .ic{stroke-width:1.8}

/* ---------- сегмент: контейнер --chip-bg, выбранный — тёмная пилюля (капля .thumb едет к нему); RU/EN (.seg.lang) — белая, как в эталоне ---------- */
.seg{position:relative;display:inline-flex;flex-wrap:wrap;max-width:100%;gap:2px;padding:4px;border-radius:99px;background:var(--chip-bg);overflow:visible}
.seg .thumb{position:absolute;top:4px;left:4px;height:calc(100% - 8px);border-radius:99px;background:var(--pill);box-shadow:0 4px 10px -6px rgba(20,24,40,.5);transition:left .45s var(--spring),width .45s var(--spring),transform .45s var(--spring);z-index:0}
.seg button{position:relative;z-index:1;border:none;background:none;padding:8px 13px;border-radius:99px;font-size:var(--fs-meta);font-weight:500;color:var(--ink-2);transition:color .25s;white-space:nowrap}
.seg button.on{color:#fff}
.seg.sm button{padding:7px 10px;font-size:var(--fs-cap);font-family:var(--mono);letter-spacing:.06em}
.seg.lang .thumb{background:#fff;box-shadow:0 2px 8px -4px rgba(20,24,40,.3)}
.seg.lang button.on{color:var(--ink)}

/* ---------- шапка экрана ---------- */
.head{max-width:1200px;margin:0 auto;padding-top:calc(16px + env(safe-area-inset-top));display:flex;align-items:center;justify-content:space-between;gap:12px}
.head .who{min-width:0;display:grid;gap:2px}
.head .skin{display:none}
.head-r{display:flex;align-items:center;gap:10px;flex:none}
.head-ev{display:none}
/* название проекта — кнопка меню проекта (B1) */
.co{display:inline-flex;align-items:center;gap:6px;max-width:100%;min-width:0;justify-self:start;padding:2px 4px 2px 0;border:0;border-radius:8px;background:none;font-weight:600;font-size:var(--fs-body);letter-spacing:-.01em;line-height:1.25;color:var(--ink);text-align:left}
.co .co-n{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.co .ic{width:14px;height:14px;color:var(--ink-2);transition:transform var(--dur) var(--ease),color var(--dur) var(--ease)}
.co:hover .ic{color:var(--ink)}
.co[aria-expanded="true"] .ic{transform:rotate(180deg)}
.hsearch{display:none}
.head .dt{font:500 var(--fs-cap)/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
@media (min-width:760px){.head{padding-top:0}}

/* ---------- стол ≥ 1024: рейл в левой колонке плиты, шапка строкой внутри .main (B1, C2, v1c M1) ----------
   Рейл — круглые белые кнопки 44 px без своей капсулы (кожа .skin скрыта), первая — тёмная «+» [data-add] (вне .rail-sc, не уезжает при прокрутке);
   активный раздел — белая кнопка плотнее с тёмной иконкой и лёгкой тенью; подпись — белая плашка с тенью справа при наведении (.hv) и фокусе.
   html.rail-open — колонка с подписями (ширина --rail-w 64 → 224; пружина только пока стоит html.rail-anim; reduced‑motion — без анимации).
   C2: рейл по центру окна по вертикали — top/bottom = отступ плиты + 56 px (внизу колонки — знак логотипа .rail-logo 28 px) + margin:auto +
   height:fit-content (без translateY(-50%): полпикселя мылят иконки на DPR 1); на низком окне — у верха, разделы прокручиваются в .rail-sc
   (без видимой полосы), шеврон остаётся внизу. .rail-sc продлён вправо на 266 px (отрицательное поле + такой же padding, pointer-events только
   у кнопок) — подписи‑плашки не обрезаются его overflow. Колонка рейла в плите — 10 + --rail-w + 10 px. */
:root{--rail-w:64px;--rail-in:calc(var(--plate-in,0px) + 56px);--main-px:28px}
:root.rail-open{--rail-w:224px}
@media (min-width:1024px){
  .app{padding:12px 12px 12px calc(var(--rail-w) + 20px)}
  .main{min-height:calc(100dvh - 2 * var(--plate-in) - 24px);padding:20px var(--main-px) 28px}
  .rail-anim .app{transition:padding-left var(--dur) var(--ease)}   /* анимация — только при нажатии шеврона, не при загрузке страницы */
  .rail-anim .tabs.rail{transition:width var(--dur) var(--ease)}
  .tabs.rail{top:var(--rail-in);bottom:var(--rail-in);left:calc(var(--plate-in) + 10px);right:auto;margin:auto 0;transform:none;width:var(--rail-w);height:fit-content;max-height:calc(100% - 2 * var(--rail-in));flex-direction:column;justify-content:flex-start;align-items:stretch;gap:0;padding:10px;border-radius:32px}
  .tabs.rail .skin{display:none}
  .tabs.rail .rail-sc{position:relative;z-index:1;display:flex;flex-direction:column;gap:8px;flex:0 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;
    margin:-6px -266px -10px -6px;padding:6px 266px 10px 6px;pointer-events:none}   /* поля 6/10 px — кольцо фокуса и тень кнопки не срезаются */
  .tabs.rail .rail-sc::-webkit-scrollbar{display:none}
  .tabs.rail .rail-sc button{pointer-events:auto}
  /* затухание края на низком окне (railFade в app.js ставит .ft/.fb, только когда есть что прокручивать); пока видна подпись‑плашка — без маски */
  .tabs.rail .rail-sc.ft,.tabs.rail .rail-sc.fb{--ft:0px;--fb:0px;
    -webkit-mask-image:linear-gradient(180deg,transparent,#000 var(--ft),#000 calc(100% - var(--fb)),transparent);mask-image:linear-gradient(180deg,transparent,#000 var(--ft),#000 calc(100% - var(--fb)),transparent)}
  .tabs.rail .rail-sc.ft{--ft:28px}
  .tabs.rail .rail-sc.fb{--fb:28px}
  .tabs.rail .rail-sc:has(button.hv,button:focus-visible){-webkit-mask-image:none;mask-image:none}
  .rail-open .tabs.rail .rail-sc:has(button.hv,button:focus-visible){-webkit-mask-image:linear-gradient(180deg,transparent,#000 var(--ft),#000 calc(100% - var(--fb)),transparent);mask-image:linear-gradient(180deg,transparent,#000 var(--ft),#000 calc(100% - var(--fb)),transparent)}   /* колонка: плашек нет — затухание остаётся */
  .rail-open .tabs.rail .rail-sc{margin-right:-6px;padding-right:6px}   /* колонка с подписями: плашек нет — продление не нужно */
  .rail-open .tabs.rail{overflow:hidden}
  .tabs.rail button{flex-direction:row;justify-content:flex-start;gap:12px;width:100%;height:44px;flex:none;padding:0 0 0 13px;border-radius:99px;font:500 var(--fs-sm)/1 var(--font);letter-spacing:-.005em;text-transform:none;white-space:nowrap;
    color:var(--ink-2);background:rgba(255,255,255,.88);box-shadow:0 6px 16px -10px rgba(20,24,40,.35);transition:color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
  .tabs.rail .ic{width:18px;height:18px}
  .tabs.rail button.hv:not(.on){color:var(--ink);background:#fff}
  .tabs.rail button.on{color:var(--ink);background:#fff;box-shadow:0 8px 20px -10px rgba(20,24,40,.5),inset 0 0 0 1px rgba(18,21,28,.08)}
  .tabs.rail .rail-add{display:flex;position:relative;z-index:2;margin-bottom:14px;color:#fff;background:var(--pill);box-shadow:0 10px 22px -12px rgba(20,24,40,.6)}
  .tabs.rail .rail-add .ic{stroke-width:1.8}
  .tabs.rail .rail-add.hv,.tabs.rail .rail-add[aria-expanded="true"]{color:#fff;background:#262933}
  .tabs.rail .lbl{position:absolute;left:calc(100% + 16px);top:50%;transform:translate(-4px,-50%);padding:7px 12px;border-radius:12px;font-size:var(--fs-meta);color:var(--ink);pointer-events:none;opacity:0;
    background:#fff;box-shadow:var(--pop-shadow);transition:opacity var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
  .tabs.rail button.hv .lbl,.tabs.rail button:focus-visible .lbl{opacity:1;transform:translate(0,-50%)}
  .tabs.rail .rail-add[aria-expanded="true"] .lbl{opacity:0}
  .rail-open .tabs.rail .lbl{position:static;transform:none;opacity:1;padding:0;border-radius:0;background:none;box-shadow:none;font-size:var(--fs-sm);color:inherit;overflow:hidden;text-overflow:ellipsis;min-width:0}
  .rail-open .tabs.rail .rail-add .lbl{color:#fff}
  .tabs.rail .rail-tg{margin-top:17px}
  .tabs.rail .rail-tg::before{content:'';position:absolute;top:-9px;left:10px;right:10px;height:1px;background:rgba(18,21,28,.1)}
  .tabs.rail .rail-tg .ic{transition:transform var(--dur) var(--ease)}
  .rail-open .tabs.rail .rail-tg .ic{transform:rotate(180deg)}
  .rail-open .tabs.rail .rail-tg .lbl{font-size:var(--fs-meta)}
  /* знак логотипа — внизу колонки рейла, по оси кнопок; чёрный, 28 px, декоративный */
  .rail-logo{display:block;position:fixed;z-index:29;left:calc(var(--plate-in) + 10px + 10px + 22px - 14px);bottom:calc(var(--plate-in) + 22px);width:28px;height:28px;color:var(--pill);pointer-events:none}
  .rail-logo svg{display:block;width:100%;height:100%;object-fit:contain}
  .head{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,380px) minmax(0,1fr);align-items:center;gap:16px;min-height:52px;padding:0}
  .head-r{justify-self:end}
  .head-ev{display:inline-flex;gap:8px;height:40px;padding:0 18px 0 15px;font-size:var(--fs-meta)}
  .plan-add{display:none}   /* M2: на столе «+ Событие» одна — в шапке оболочки (на «Плане» она открывает диалог экрана) */
  .hsearch{display:block}
  .hsearch .in{height:44px;padding:10px 18px 10px 44px;border-radius:99px;font-size:var(--fs-sm);background:#fff;box-shadow:inset 0 0 0 1px var(--line)}
  .hsearch .in:focus{box-shadow:inset 0 0 0 1.5px var(--ink)}
  .hsearch .search .ic{left:18px}
}
@media (min-width:1024px) and (max-width:1279.98px){:root{--main-px:16px}.main{padding-top:16px;padding-bottom:24px}.head{gap:12px}}

/* ---------- меню проекта (B1): поповер на ≥ 760, лист на телефоне ---------- */
.pop-bd{position:fixed;inset:0;z-index:44}
.pop{position:fixed;z-index:45;width:300px;padding:8px;border-radius:22px;overflow-y:auto;overscroll-behavior:contain;--mx:0px;--my:-8px;animation:materialize var(--dur) var(--ease);
  background:var(--pop-bg);-webkit-backdrop-filter:blur(20px) saturate(110%);backdrop-filter:blur(20px) saturate(110%);box-shadow:var(--pop-shadow)}
/* меню «+» рейла (v1c M1): справа от кнопки */
.add-pop{width:240px;--mx:-8px;--my:0px}
.add-pop .add-k{margin:6px 12px 6px}
.pop.out{animation:dematerialize .2s var(--ease) forwards;pointer-events:none}
.pm-head{padding:10px 12px 12px}
.pm-head .kicker{margin-bottom:6px}
.pm-name{font-weight:600;font-size:var(--fs-title);line-height:1.2;letter-spacing:-.02em;overflow-wrap:anywhere}
.pm-stats{margin-top:4px;font:500 var(--fs-cap)/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}
.pm-list{display:grid;gap:2px}
.pm-item{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;border:0;border-radius:12px;background:none;text-align:left;font-size:var(--fs-sm);line-height:1.3;color:var(--ink);transition:background var(--dur-fast) var(--ease)}
.pm-item .ic{color:var(--ink-2)}
.pm-item:hover,.pm-item:focus-visible{background:var(--chip-bg)}
.pm-item:focus-visible{outline:1.5px solid var(--line);outline-offset:-1.5px}   /* M2: у пунктов поповеров кольцо мягче — фон пункта уже выделяет его */
.pm-item .pm-l{flex:1;min-width:0}
.pm-n{font:500 var(--fs-cap)/1 var(--mono);color:var(--ink-2);padding:4px 7px;border-radius:99px;background:var(--chip-bg)}
.pm-item.warn .pm-l::after{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--warm);margin-left:8px;vertical-align:middle}
.pm-sep{height:1px;margin:6px 12px;background:rgba(18,21,28,.08)}
.pm-sheet .pm-head{padding:0 0 12px}
.pm-sheet .pm-head .kicker{display:none}   /* заголовок листа уже «Меню проекта» */
.pm-sheet .pm-item{padding:13px 8px;font-size:var(--fs-body)}
.pm-sheet .pm-sep{margin:6px 8px}
.sheet.warn-head .sheet-head h2{display:flex;align-items:center;gap:10px}
.sheet.warn-head .sheet-head h2::before{content:'';width:8px;height:8px;border-radius:50%;flex:none;background:var(--warm);box-shadow:0 0 8px rgba(255,138,91,.5)}
.pm-warn{font-size:var(--fs-body);line-height:1.45;color:var(--ink)}
.pm-form .muted{margin-top:-4px}
.pm-hint{margin-bottom:6px}
.pm-projects{display:grid}
.pm-proj{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid rgba(18,21,28,.08)}
.pm-proj:first-child{border-top:0}
.pm-open{flex:1;min-width:0;display:grid;gap:3px;padding:8px 10px;margin-left:-10px;border:0;border-radius:12px;background:none;text-align:left;color:var(--ink);transition:background var(--dur-fast) var(--ease)}
.pm-open:hover{background:var(--chip-bg)}
.pm-pn{font-weight:600;font-size:var(--fs-sm);overflow-wrap:anywhere}
.pm-pm{font-size:var(--fs-meta);color:var(--muted)}
.set-data .link{margin-top:10px}

/* ---------- экран ---------- */
.screen{display:grid;gap:16px;align-content:start}
.screen h1{margin-bottom:6px}
.lead{font-size:var(--fs-body);color:var(--muted);max-width:62ch}
.grid2{display:grid;gap:16px}
@media (min-width:760px){.grid2{grid-template-columns:1fr 1fr}}
.tabs button.hv:not(.on){color:var(--ink)}

/* ---------- панель ---------- */
.panel{padding:18px 20px}
.panel.small{border-radius:18px}   /* M2b: тень и контур — общие у панелей (--panel-shadow) */
.panel .kicker{margin-bottom:10px}
.panel-title{font-size:var(--fs-title);line-height:1.25;letter-spacing:-.02em;margin-bottom:8px}
.panel p{font-size:var(--fs-sm);color:var(--muted)}
.panel p.lead{font-size:var(--fs-body)}
ul.plain{list-style:none;margin:14px 0 0;padding:0}
ul.plain li{display:grid;gap:2px;padding:12px 0;border-top:1px solid rgba(18,21,28,.08)}
ul.plain li strong{font-weight:600;font-size:var(--fs-sm)}
ul.plain li span{font-size:var(--fs-meta);color:var(--muted)}

/* ---------- чип: стекло‑малое одним слоем (чипов на экране бывает десятки — без ::before/::after) ---------- */
.chip{display:inline-flex;align-items:center;gap:10px;padding:10px 14px;border-radius:99px;border:none;color:var(--ink);background:var(--chip-bg);
  transition:transform .35s var(--spring),box-shadow .35s var(--spring),background .35s var(--spring),color .35s var(--spring)}
.chip .n{font-size:var(--fs-title);font-weight:600;line-height:1}
.chip .l{font:500 var(--fs-cap)/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}
.chip.warm .l::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--warm);display:inline-block;margin-right:6px}
.chip.hv{transform:translateY(-1px);background:rgba(18,21,28,.09)}
.chip.on{background:var(--pill);color:#fff}
.chip.on .l,.chip.on .ic,.chip.on .n{color:#fff}
.chip.sm{padding:8px 12px}
.chips{display:flex;flex-wrap:wrap;gap:8px}

/* ---------- строка списка ---------- */
.row{display:flex;gap:12px;padding:12px 0;border-top:1px solid rgba(18,21,28,.08)}
button.row{width:100%;align-items:center;background:none;border-left:0;border-right:0;border-bottom:0;text-align:left;font-size:var(--fs-body);color:var(--ink);border-radius:0;transition:color var(--dur) var(--ease)}
.rows .row:first-child{border-top:0}
.row.on{font-weight:600}
.row .ic{color:var(--muted2)}
.row.on .ic{color:var(--ink)}

/* ---------- пустое состояние ---------- */
.empty{text-align:center;padding:40px 20px;max-width:560px;width:100%;justify-self:center;margin-top:8vh}
.empty .kicker{margin-bottom:12px}
.empty h2{font-size:var(--fs-xl);line-height:1.2;margin-bottom:10px}
.empty p{font-size:var(--fs-body);color:var(--muted);max-width:40ch;margin:0 auto 24px}

/* ---------- заглушка следующей версии ---------- */
.next{opacity:.86}
.next .kicker{color:var(--kicker)}
.next-items{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.next-items li{font:500 var(--fs-cap)/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);padding:7px 10px;border-radius:99px;background:var(--chip-bg)}

/* ---------- лист: телефон — снизу, ≥ 760 px — справа ---------- */
@keyframes materialize{from{opacity:0;transform:translate(var(--mx,0),var(--my,24px)) scale(.98);filter:blur(8px)}}
@keyframes dematerialize{to{opacity:0;transform:translate(var(--mx,0),var(--my,24px)) scale(.98);filter:blur(8px)}}
@keyframes fade{from{opacity:0}}
@keyframes fadeout{to{opacity:0}}
.sheet-open{overflow:hidden}
.sheet-bd{position:fixed;inset:0;z-index:49;background:rgba(20,24,40,.08);animation:fade .35s var(--ease)}
.sheet-bd.out{animation:fadeout .25s var(--ease) forwards;pointer-events:none}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:50;max-height:92dvh;border-radius:var(--sheet-r) var(--sheet-r) 0 0;padding:14px 18px 0;display:flex;flex-direction:column;outline:none;
  background:var(--pop-bg);-webkit-backdrop-filter:blur(20px) saturate(110%);backdrop-filter:blur(20px) saturate(110%);box-shadow:var(--pop-shadow);
  animation:materialize .35s var(--ease)}
.sheet.out{animation:dematerialize .25s var(--ease) forwards;pointer-events:none}
.sheet .grab{width:40px;height:5px;border-radius:99px;background:rgba(18,21,28,.18);margin:0 auto 10px;flex:none}
.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:none;padding-bottom:6px}
.sheet-head h2{font-size:var(--fs-title);letter-spacing:-.02em;line-height:1.25}
.sheet-x{width:34px;height:34px;border-radius:50%;border:none;background:var(--chip-bg);font-size:20px;line-height:1;color:var(--ink);display:grid;place-items:center;flex:none}
.sheet-body{overflow:auto;min-height:0;margin:0 -4px;padding:4px 4px calc(32px + env(safe-area-inset-bottom));overscroll-behavior:contain} /* 4 px: кольцо фокуса полей не обрезается прокруткой */
.sheet.side{left:auto;top:80px;bottom:16px;right:16px;width:440px;max-height:none;border-radius:var(--panel-radius);padding-top:20px;--mx:24px;--my:0px}
@media (min-width:1024px){.sheet.side{top:calc(var(--plate-in) + 12px);bottom:calc(var(--plate-in) + 12px);right:calc(var(--plate-in) + 12px)}}
.sheet.side .grab{display:none}
.sheet.side .sheet-body{padding-bottom:20px}

/* ---------- тост: по центру внизу — на телефоне над таблеткой вкладок, на ≥ 760 px у нижнего края ---------- */
.toasts{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--tab-h) + 24px + env(safe-area-inset-bottom));z-index:60;display:grid;gap:8px;justify-items:center;width:min(440px,calc(100% - 32px));pointer-events:none}
@media (min-width:760px){.toasts{bottom:24px}}
.toast{pointer-events:auto;display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:18px;font-size:var(--fs-sm);color:var(--ink);
  background:var(--pop-bg);-webkit-backdrop-filter:blur(20px) saturate(110%);backdrop-filter:blur(20px) saturate(110%);
  box-shadow:var(--pop-shadow);animation:materialize .35s var(--ease)}
.toast.out{animation:dematerialize .25s var(--ease) forwards}

/* ---------- поля ---------- */
.field{display:grid;gap:6px}
.field .fl{font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}
.field .ctl{display:grid;gap:6px}
.in{width:100%;min-width:0;font-size:16px;line-height:1.4;padding:11px 14px;border-radius:14px;border:0;color:var(--ink);background-color:#fff;
  box-shadow:inset 0 0 0 1px var(--line);transition:box-shadow var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}
.in::placeholder{color:#8A8F9C}
.in:focus{outline:none;background-color:#fff;box-shadow:inset 0 0 0 1.5px var(--ink)}
textarea.in{resize:vertical}
.in.mono{font-family:var(--mono);font-size:var(--fs-meta)}
.in.bad{box-shadow:inset 0 0 0 1.5px var(--warm)}
select.in{appearance:none;-webkit-appearance:none;padding-right:36px;background-image:linear-gradient(45deg,transparent 50%,var(--muted2) 50%),linear-gradient(135deg,var(--muted2) 50%,transparent 50%);background-position:calc(100% - 19px) 50%,calc(100% - 14px) 50%;background-size:5px 5px;background-repeat:no-repeat}
.field .err:not([hidden]){display:flex;align-items:center;gap:6px;font-size:var(--fs-meta);color:var(--muted)}
.field .err::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--warm);flex:none}
.field .pair{display:flex;align-items:center;gap:8px}
.field .dash{color:var(--muted2)}
.field .with-unit{display:flex;align-items:flex-start;gap:8px}
.field .with-unit>:first-child{flex:1;min-width:0}
.field .unit{font:500 var(--fs-meta)/44px var(--mono);color:var(--muted2);white-space:nowrap}
.tokens{display:flex;flex-wrap:wrap;gap:6px}
.tokens:empty{display:none}
.token{display:inline-flex;align-items:center;gap:6px;padding:6px 6px 6px 11px;border-radius:99px;background:var(--chip-bg);font-size:var(--fs-meta)}
.token button{width:20px;height:20px;border-radius:50%;border:none;background:#fff;line-height:1;display:grid;place-items:center;font-size:14px;color:var(--muted)}
.tg{appearance:none;-webkit-appearance:none;width:44px;height:26px;border-radius:99px;margin:0;position:relative;background:rgba(18,21,28,.14);box-shadow:inset 1px 1px 2px rgba(10,14,24,.12);transition:background var(--dur) var(--ease);cursor:pointer}
.tg::after{content:'';position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(10,14,24,.25);transition:transform var(--dur) var(--ease)}
.tg:checked{background:var(--pill)}
.tg:checked::after{transform:translateX(18px)}
.tg:focus-visible{outline:1.5px solid var(--ink);outline-offset:2px}
/* v1d R6+R2 — тумблер (components/toggle.js): label.tgl = .tg + подпись справа моно‑капсом; внешних отступов нет — ритм задаёт контейнер,
   рядом с кнопкой в одной строке — зазор ≥ 12 px (гейт scripts/checks/gaps.js) */
.tgl{display:inline-flex;align-items:center;gap:10px;width:max-content;max-width:100%;min-height:32px;justify-self:start;cursor:pointer;-webkit-tap-highlight-color:transparent}
.tgl .tg{flex:none}
.tgl-l{min-width:0;font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}

/* ---------- reduced‑motion: только кроссфейд, без подъёма ---------- */
@media (prefers-reduced-motion:reduce){
  .sheet,.toast,.sheet-bd{animation:fade .25s ease}
  .sheet.out,.toast.out,.sheet-bd.out{animation:fadeout .2s ease forwards}
  .btn.hv,.chip.hv{transform:none}
  .tg::after{transition:none}
  .pop{animation:fade .25s ease}.pop.out{animation:fadeout .2s ease forwards}
  .rail-anim .app,.rail-anim .tabs.rail,.tabs.rail .rail-tg .ic,.tabs.rail .lbl,.co .ic{transition:none!important}
}

/* ============================================================
   ЗАДАЧА 8 — «Знания», инспектор, редактор связи, «Собрать»
   ============================================================ */
[hidden]{display:none!important}                       /* у блоков с display:flex/grid атрибут hidden иначе не прячет */
.muted{font-size:var(--fs-sm);color:var(--muted)}
.caps{font:500 var(--fs-cap)/1.6 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}
.act-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.btn.quiet{background:var(--chip-bg);box-shadow:none}
.btn.quiet.hv{background:rgba(18,21,28,.09);box-shadow:none}
.btn:disabled{opacity:.45;cursor:default;pointer-events:none}
.link{border:0;background:none;padding:4px 0;font-size:var(--fs-meta);font-weight:500;color:var(--ink);text-decoration:none;text-underline-offset:3px;justify-self:start;cursor:pointer}
.link:hover{text-decoration:underline}

/* ---------- метки (не кнопки): тип, статус, теги — моно‑капс на светлой капсуле ---------- */
.tags{display:flex;flex-wrap:wrap;gap:6px}
.tag{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:99px;background:var(--chip-bg);font:500 var(--fs-cap)/1.1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2);max-width:100%;overflow-wrap:anywhere}
.tag.warm::before,.warm-dot{content:'';width:6px;height:6px;border-radius:50%;background:var(--warm);display:inline-block;flex:none}

/* ---------- полоска уверенности (0..1, цвет --mid) ---------- */
.conf{display:inline-flex;align-items:center;gap:8px;flex:none}
.bar{display:block;width:56px;height:4px;border-radius:99px;background:rgba(18,21,28,.1);overflow:hidden}
.bar>i{display:block;height:100%;border-radius:inherit;background:var(--mid)}
.conf .cv{font:500 var(--fs-cap)/1 var(--mono);color:var(--muted2);min-width:4.5ch;text-align:right;white-space:nowrap}

/* ---------- «Знания»: поиск, фильтры, список ---------- */
.know-top{display:flex;gap:10px;align-items:center}
.search{flex:1;min-width:0;position:relative;display:block}
.search .ic{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--muted2);pointer-events:none}
.search .in{padding-left:40px}
.filters{display:grid;gap:12px}
.frow{display:grid;gap:6px;min-width:0}
.frow .kicker{margin:0}
@media (max-width:759.98px){            /* телефон: каждая группа — одна прокручиваемая строка чипов */
  .chips.scroll{flex-wrap:nowrap;overflow-x:auto;margin:0 -20px;padding:3px 20px 8px;scrollbar-width:none;overscroll-behavior-x:contain}
  .chips.scroll::-webkit-scrollbar{display:none}
  .chips.scroll .chip{flex:none}
}
@media (min-width:760px){.frow{grid-template-columns:170px 1fr;align-items:start}.frow .kicker{padding-top:7px}}
/* M2: фильтры «Знаний» компактнее — меньше поля и межбуквенный, ряды плотнее; выбранный — тёмная пилюля (.chip.on) */
.filters{gap:10px}
.filters .chips{gap:6px}
.filters .chip.sm{padding:6px 10px;gap:6px}
.filters .chip .l{letter-spacing:.05em}
.list .list-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}
.list .list-head .kicker{margin:0}
button.row.item-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px}
.row .who,.rel-row .who{display:grid;gap:3px;min-width:0}
.row .nm{font-weight:600;font-size:var(--fs-sm);line-height:1.3;overflow-wrap:anywhere}
.row .mt{font-size:var(--fs-meta);line-height:1.4;color:var(--muted);display:flex;flex-wrap:wrap;align-items:center;gap:0 4px}
.row .ty{font:500 var(--fs-cap)/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}
.row .warm-dot{margin-left:4px}
.none{padding:12px 0 4px}

/* ---------- инспектор ---------- */
.inspector{display:grid;gap:18px}
.insp-head{display:grid;gap:12px}
.insp-head .desc{font-size:var(--fs-sm);color:var(--muted)}
.insp-back{display:inline-flex;align-items:center;gap:4px;justify-self:start;max-width:100%;border:0;background:none;padding:2px 0;font-size:var(--fs-meta);font-weight:500;color:var(--ink);cursor:pointer;text-align:left;overflow-wrap:anywhere}
.insp-back .ic-w{display:inline-flex;width:14px;height:14px;flex:none}
.insp-back .ic-w svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.insp-back:hover{text-decoration:underline;text-underline-offset:3px}
.kv{display:grid;grid-template-columns:minmax(96px,36%) minmax(0,1fr);gap:9px 14px;margin:0;align-items:baseline}
.kv dt{font:500 var(--fs-cap)/1.5 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}
.kv dd{margin:0;font-size:var(--fs-sm);line-height:1.45;min-width:0;overflow-wrap:anywhere}
.insp-body{display:grid;gap:10px}
.insp-body .kicker{margin:8px 0 0}
.form{display:grid;gap:14px}
.form-err:not([hidden]),.errs:not([hidden]){display:grid;gap:4px;font-size:var(--fs-meta);color:var(--muted)}
.form-err div,.errs div{display:flex;align-items:center;gap:8px}
.form-err div::before,.errs div::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--warm);flex:none}
details.json summary{cursor:pointer;font-size:var(--fs-meta);font-weight:500;color:var(--ink);width:max-content}
details.json pre{margin:8px 0 0;padding:10px 12px;border-radius:12px;background:var(--inset-bg);font:var(--fs-meta)/1.5 var(--mono);white-space:pre-wrap;overflow:auto;max-height:240px}
.links{display:grid;gap:8px;padding-top:14px;border-top:1px solid rgba(18,21,28,.08)}
.links .sec{font-size:var(--fs-sm);font-weight:600;letter-spacing:-.01em;display:flex;align-items:center;gap:8px}
.links .cnt{font:500 var(--fs-cap)/1 var(--mono);padding:4px 7px;border-radius:99px;background:var(--chip-bg);color:var(--ink-2)}
.links>.btn{justify-self:start}
/* B7: связи фразами «A → глагол → B» двумя группами; этот элемент — цветом, имя другого — переход; «изменить» справа */
.rel-g{display:grid;gap:2px}
.rel-g+.rel-g{margin-top:6px}
.rel-gt{display:flex;align-items:center;gap:8px;margin:4px 0 0;font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}
.rel-gt .cnt{letter-spacing:0;text-transform:none}
.rel-list{display:grid}
.rel-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;align-items:start;padding:10px 0;border-top:1px solid rgba(18,21,28,.08);color:var(--ink)}
.rel-row:first-child{border-top:0}
.rr-main{display:grid;gap:4px;min-width:0}
.rr-ph{margin:0;font-size:var(--fs-sm);line-height:1.4;overflow-wrap:anywhere}
.rr-mt{margin:0}
.rel-row[data-status="rejected"] .rphrase{color:var(--muted2)}
.rel-row[data-status="rejected"] .rp-end{color:var(--muted2)}
.rr-edit{display:inline-flex;align-items:center;gap:5px;border:0;background:none;padding:2px 0 2px 6px;font-size:var(--fs-meta);font-weight:500;color:var(--ink);cursor:pointer;white-space:nowrap}
.rr-edit .ic-w{display:inline-flex;width:14px;height:14px}
.rr-edit .ic-w svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.rr-edit:hover .l{text-decoration:underline;text-underline-offset:3px}
@media (max-width:420px){.rr-edit .l{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.rr-edit{padding:6px}}
.rel-none{margin:0;line-height:1.45}
/* фраза связи (rel-phrase.js): концы жирным, этот элемент — --deep, другой — кнопка‑ссылка; глагол и стрелки тише */
.rphrase{overflow-wrap:anywhere}
.rp-end{font-weight:600;color:var(--ink)}
.rp-end.me{color:var(--deep)}
.rp-end.empty{color:var(--muted2);font-weight:500}
button.rp-end{display:inline;border:0;background:none;padding:0;font:inherit;font-weight:600;text-align:left;cursor:pointer;text-decoration:underline;text-decoration-color:rgba(18,21,28,.22);text-underline-offset:3px;transition:text-decoration-color var(--dur) var(--ease),color var(--dur) var(--ease)}
button.rp-end:hover{text-decoration-color:currentColor}
.rp-ar{color:var(--muted2)}
.rp-v{color:var(--muted)}
.rmeta{display:inline-flex;flex-wrap:wrap;align-items:center;gap:2px 7px;font-size:var(--fs-meta);line-height:1.4;color:var(--muted)}
.rmeta .sep,.rlab .sep{color:var(--muted2)}
.rmeta .rw,.rlab .rw{color:var(--ink);font-weight:500}
.rnums{font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.04em;color:var(--muted2);white-space:nowrap;display:inline-flex;gap:8px}
/* статус связи — точка и слово: подтверждено — --mid, вероятно — бледный --deep, предположение — серый контур, отвергнуто — зачёркнуто */
.rs{display:inline-flex;align-items:center;gap:6px;color:var(--ink);white-space:nowrap}
.rs i{width:8px;height:8px;border-radius:50%;flex:none;box-sizing:border-box;background:var(--mid)}
.rs[data-s="supported"] i{background:rgba(30,111,140,.42)}
.rs[data-s="hypothesis"] i,.rs[data-s="hypothesis_ai"] i{background:none;border:1.5px solid rgba(18,21,28,.38)}
.rs[data-s="hypothesis"],.rs[data-s="hypothesis_ai"]{color:var(--muted)}
.rs[data-s="rejected"]{color:var(--muted2);text-decoration:line-through}
.rs[data-s="rejected"] i{background:rgba(18,21,28,.22)}
.rs[data-s="unknown"] i{background:none;border:1.5px dashed var(--muted2)}
.rs.sw{gap:0}
.rs.sw+.rs.sw{margin-left:3px}
.actions{display:grid;gap:8px;padding-top:14px;border-top:1px solid rgba(18,21,28,.08)}

/* ---------- редактор связи ---------- */
.rel-editor{display:grid;gap:18px}
.rel-live{display:grid;gap:6px;padding:14px 16px;border-radius:18px;background:none}
.rel-live .kicker{margin:0}
.rl-ph{margin:0;font-size:var(--fs-body);line-height:1.4;letter-spacing:-.01em}
.rl-mt{margin:0}
.rel-finer{margin-top:2px}
.rel-finer .rf-in{padding-top:10px}
.rel-more{border-top:1px solid rgba(18,21,28,.08);padding-top:12px}
.pair2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
.rel-foot{display:grid;gap:10px}

/* ---------- «Сборка»: чипы областей (мастер «Добавить вручную»); тумблер импорта — .tgl ---------- */
.chip.dom{gap:8px}
.chip.dom .ic{color:var(--ink-2)}

/* ============================================================
   ЗАДАЧА 10 — «Сейчас»: цели, покрытие, внимание, карта 2D
   ============================================================ */
/* ============================================================
   B8 — «Сейчас» как панель управления (bento): приветствие, KPI‑лента, цели кольцами, внимание с фильтром,
   понимание | ближайшее | решения, карта. Панели — светлое стекло с воздухом 16–20 px; первый показ — materialize каскадом.
   ============================================================ */
.now-hero{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:6px 24px}
.screen.now .now-hero h1{margin:0}
.now-state{margin:8px 0 0;font-size:var(--fs-body);line-height:1.4;color:var(--muted);max-width:62ch;text-wrap:pretty}
.now-upd{margin:0 0 4px;font:500 var(--fs-cap)/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}
/* шапка виджета: метка (h2 моно‑капсом), счётчик, действие справа */
.wh{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:28px;margin-bottom:12px}
.wh .kicker{margin:0}
.wt{display:inline-flex;align-items:center;gap:8px;min-width:0}
.cnt{font:500 var(--fs-cap)/1 var(--mono);padding:5px 8px;border-radius:99px;background:var(--chip-bg);color:var(--ink-2)}
.now-w{min-width:0}
.now-w .rows .row:first-child{border-top:0}
.now-w .none{margin:4px 0 0;font-size:var(--fs-sm)}

/* сетка виджетов — v1c D1, раздел «D1» в конце файла (components/widget-grid.js; прежняя bento‑сетка .now-bento снята); герой — раздел «R4» */

/* ---------- лента главных показателей ---------- */
.now-kpi .wh{margin-bottom:10px}
.kpi-set .ic{width:15px;height:15px}
.kpi-row{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:14px;align-items:stretch}
@media (min-width:760px) and (max-width:1279.98px){.kpi-row .kpi:nth-child(n+5){display:none}}   /* 760–1279: четыре плитки, ≥ 1280 — шесть */
@media (max-width:759.98px){
  .kpi-row{grid-auto-columns:minmax(150px,44%);gap:12px;overflow-x:auto;margin:0 -16px;padding:4px 16px 16px;scroll-snap-type:x mandatory;scroll-padding:0 16px;scrollbar-width:none;overscroll-behavior-x:contain}
  .kpi-row::-webkit-scrollbar{display:none}
  .kpi{scroll-snap-align:start}
}
.kpi{display:grid;grid-template-rows:auto auto auto 1fr;align-content:start;gap:6px;min-width:0;padding:14px 16px 12px;border:0;border-radius:20px;--rim:6px;text-align:left;color:var(--ink);font:inherit;cursor:pointer;
  box-shadow:var(--panel-shadow);transition:transform .45s var(--spring),box-shadow .45s var(--spring)}
.kpi.hv{transform:translateY(-3px);box-shadow:var(--panel-shadow-hv)}
.kpi:focus-visible{outline:1.5px solid var(--ink);outline-offset:2px}
.kpi .k-nm{font-size:var(--fs-meta);line-height:1.3;color:var(--muted);min-height:2.6em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.kpi .k-v{display:flex;align-items:baseline;flex-wrap:wrap;font-variant-numeric:tabular-nums;min-width:0}
.kpi .k-v b{font-size:var(--fs-xl);font-weight:700;letter-spacing:-.03em;line-height:1.1}
.kpi .k-v .u{font-size:var(--fs-meta);font-weight:500;color:var(--muted2);white-space:pre}
.kpi .k-v .none{font-size:var(--fs-sm);color:var(--muted2);line-height:1.5}
.k-d{display:inline-flex;align-items:center;gap:5px;justify-self:start;padding:3px 8px 3px 7px;border-radius:99px;font:600 var(--fs-cap)/1.3 var(--font);color:var(--ink);background:var(--chip-bg);font-variant-numeric:tabular-nums;white-space:nowrap}
.k-d .arr{font-size:8px;font-style:normal;line-height:1;color:var(--muted2)}
.k-d[data-tone="good"]{background:rgba(61,213,196,.22)}
.k-d[data-tone="good"] .arr{color:var(--deep)}
.k-d[data-tone="bad"]{background:rgba(255,138,91,.2)}
.k-d[data-tone="bad"] .arr{color:var(--warm)}
.spark{position:relative;display:block;height:34px;margin-top:2px;align-self:end}
.spark svg{display:block;width:100%;height:100%;overflow:visible}
.spark-pt{position:absolute;width:9px;height:9px;margin:-4.5px 0 0 -4.5px;border-radius:50%;background:var(--deep);box-shadow:0 0 0 2px rgba(255,255,255,.95)}
.spark.anim svg{animation:sparkIn 1s var(--ease) both;animation-delay:.2s}
.spark.anim .spark-pt{animation:fade .3s ease both;animation-delay:1.05s}
@keyframes sparkIn{from{clip-path:inset(-4px 100% -4px 0)}to{clip-path:inset(-4px -4px -4px 0)}}

/* ---------- цели: кольца прогресса ---------- */
.goals-list{display:grid;column-gap:20px}
/* две колонки колец — по ширине самого виджета (container query на .wg-item, D1), а не окна; в виджете 2×2 — одной колонкой */
@container (min-width:520px){.wg-item:not([data-h="2"]) .goals-list{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.wg-item:not([data-h="2"]) .goals-list .gring:nth-child(2){border-top:0}}
button.row.gring{display:flex;align-items:center;gap:12px;padding:10px 2px;border-top:1px solid rgba(18,21,28,.07)}
.goals-list .gring:first-child{border-top:0}
.gr{position:relative;width:46px;height:46px;flex:none}
.gr svg{display:block;width:100%;height:100%}
.gr .trk{stroke:rgba(18,21,28,.08)}
.gr.nd .trk{stroke:rgba(18,21,28,.24);stroke-dasharray:3 4}
.gr .gp{position:absolute;inset:0;display:grid;place-items:center;font:600 var(--fs-cap)/1 var(--font);letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--ink)}
.gr.anim .arc{animation:ringIn 1s var(--ease) both;animation-delay:.25s}
@keyframes ringIn{from{stroke-dasharray:0 100}}
.gring .gt{display:grid;gap:2px;min-width:0}
.gring .nm{font-size:var(--fs-sm);font-weight:600;line-height:1.3;letter-spacing:-.01em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gring .v{font-size:var(--fs-meta);line-height:1.35;color:var(--muted)}
.gring .v b{font-weight:600;color:var(--ink)}
.gring .gm{display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;font:500 var(--fs-cap)/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted2)}
.gring .gs{display:inline-flex;align-items:center;gap:6px}
.gring .sd{width:7px;height:7px;border-radius:50%;flex:none;background:rgba(18,21,28,.22)}
.gring.off .sd{background:var(--warm);box-shadow:0 0 8px rgba(255,138,91,.55)}
.gring.reached .sd{background:var(--mid)}
.gring .dl{text-transform:none;letter-spacing:.02em}

/* ---------- покрытие (компактно в bento) ---------- */
.cov-top{display:flex;align-items:center;gap:16px}
.cov-top .panel-title{margin:0;font-size:var(--fs-title)}
.ring-box{position:relative;width:76px;height:76px;flex:none}
.ring{display:block;width:100%;height:100%}
.ring .arc{transition:stroke-dasharray .6s var(--ease)}
.ring-box .pct{position:absolute;inset:0;display:grid;place-items:center;font-weight:700;font-size:var(--fs-title);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.coverage{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:16px;align-content:start}
.coverage>.kicker{grid-column:1/-1;margin:0 0 12px;line-height:28px}
.coverage .cov-top{display:contents}
.coverage .ring-box{grid-row:2/span 3;width:68px;height:68px}
.coverage .ring-box .pct{font-size:var(--fs-sm)}
.coverage .ring .arc{animation:ringIn 1s var(--ease) both;animation-delay:.25s}
.coverage .cov-top .panel-title{grid-column:2;font-size:var(--fs-sm);font-weight:600;line-height:1.35}
.coverage .gaps{grid-column:2;margin-top:6px}
.coverage .row.gap{align-items:center;gap:10px;padding:4px 0;border-top:0;font-size:var(--fs-meta);line-height:1.4;color:var(--muted)}
.coverage .gd{width:6px;height:6px;border-radius:50%;flex:none;background:var(--deep);opacity:.45}
.coverage .link{grid-column:2;justify-self:start;margin-top:6px}

/* ---------- «Требует внимания»: сегмент‑фильтр и компактные строки ---------- */
.att-n{min-width:20px;height:20px;padding:0 6px;border-radius:99px;display:inline-flex;align-items:center;justify-content:center;font:600 var(--fs-cap)/1 var(--mono);color:var(--warm-ink);background:rgba(255,138,91,.16)}
.att-f{flex-wrap:nowrap;margin:0 0 6px;overflow-x:auto;scrollbar-width:none;overscroll-behavior-x:contain}
.att-f::-webkit-scrollbar{display:none}
.att-f button{display:inline-flex;align-items:baseline;gap:6px}
.att-f .sn{font:500 var(--fs-cap)/1 var(--mono);color:var(--muted2)}
.att-f button.on .sn{color:rgba(255,255,255,.72)}   /* счётчик в активном (тёмном) сегменте — светлый */
@media (max-width:759.98px){.att-f button{padding:8px 10px}}
.att-list{display:grid}
button.row.att{display:flex;align-items:flex-start;gap:11px;width:100%;padding:10px 2px;border-top:1px solid rgba(18,21,28,.07);text-align:left;color:var(--ink);background:none}
.row.att .ad{width:8px;height:8px;margin-top:6px;border-radius:50%;flex:none;background:var(--warm);box-shadow:0 0 10px rgba(255,138,91,.6)}
.row.att.low .ad{background:transparent;box-shadow:inset 0 0 0 1.5px var(--warm)}
.row.att .tx{display:grid;gap:3px;min-width:0}
.row.att .tx b{font:500 var(--fs-cap)/1.35 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--muted2)}
.row.att .tx span{font-size:var(--fs-sm);line-height:1.4;overflow-wrap:anywhere}
.attention .link[data-act="all"]{margin-top:12px}   /* R3b‑1: под списком без колодца — зазор ≥ 12 px от последней строки */

/* ---------- «Ближайшее» ---------- */
button.row.up{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:12px;padding:10px 2px;border-top:1px solid rgba(18,21,28,.07)}
.row.up .ud{font:600 var(--fs-cap)/1 var(--mono);letter-spacing:.03em;padding:8px 9px;border-radius:12px;background:var(--inset-bg);color:var(--ink);white-space:nowrap;font-variant-numeric:tabular-nums}
.row.up .ut{display:grid;gap:2px;min-width:0}
.row.up .ut b{font:500 var(--fs-cap)/1.35 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--muted2)}
.row.up .ut span{font-size:var(--fs-sm);line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:anywhere}

/* ---------- «Решения» ---------- */
.row.dm{align-items:center;gap:12px;padding:10px 2px;border-top:1px solid rgba(18,21,28,.07)}
.row.dm .dq{display:grid;gap:3px;min-width:0;flex:1}
.row.dm .dq b{font-size:var(--fs-sm);font-weight:600;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.row.dm .dr{font-size:var(--fs-meta);line-height:1.35;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.row.dm .btn{flex:none}

/* ---------- лист «Настроить» ---------- */
.pins{display:grid;gap:12px}
.pins>p.muted{margin:0;font-size:var(--fs-meta)}
.pins-bar{display:flex;align-items:center;justify-content:space-between;gap:12px}
/* v1d R6: «Раскладка экрана» — тумблер и «Сбросить раскладку» строкой с зазором (раньше кнопка стояла вплотную под тумблером); телефон — кнопка под тумблером */
.pins-layout{display:grid;gap:12px}
.pins-layout .kicker,.pins-layout>p.muted{margin:0}
.pins>h3.kicker{margin:8px 0 0}   /* «Главные показатели» — тот же ритм, что «Раскладка экрана» (было 18 px снизу + 12 gap) */
.pins-layout>p.muted{font-size:var(--fs-meta)}
.pl-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px}
@media (max-width:759.98px){.pl-row{flex-direction:column;align-items:flex-start}}
.pins-bar .pins-n{margin:0;font:500 var(--fs-cap)/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted2)}
button.row.pin{display:flex;align-items:center;gap:12px;padding:10px 2px}
.row.pin .ck{width:20px;height:20px;flex:none;border-radius:6px;box-shadow:inset 0 0 0 1.5px rgba(18,21,28,.3);background:#fff;position:relative;transition:background .2s,box-shadow .2s}
.row.pin.on .ck{background:var(--pill);box-shadow:none}
.row.pin.on .ck::after{content:'';position:absolute;left:7px;top:3px;width:5px;height:10px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.row.pin .who{display:grid;gap:2px;min-width:0;flex:1}
.row.pin .nm{font-size:var(--fs-sm);font-weight:500;line-height:1.3}
.row.pin .mt{font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted2)}
.row.pin .val{font:500 var(--fs-meta)/1.3 var(--mono);color:var(--muted2);white-space:nowrap}
.row.pin:disabled{opacity:.45;cursor:default}

/* ---------- первый показ: materialize каскадом (40 мс на панель) ---------- */
.screen.now .mat{animation:materialize .5s var(--ease) backwards;animation-delay:calc(var(--i,0) * 40ms)}
.screen.now .now-hero{animation:materialize .5s var(--ease) backwards}
@media (prefers-reduced-motion:reduce){
  .screen.now .mat,.screen.now .now-hero{animation:fade .3s ease backwards}
  .gr.anim .arc,.coverage .ring .arc,.spark.anim svg,.spark.anim .spark-pt{animation:none}
  .kpi.hv{transform:none}
}

/* ---------- карта 2D: на подложке .main, без своей панели за SVG ---------- */
.now-map{display:grid;gap:4px;min-width:0;scroll-margin-top:12px}
@media (min-width:760px){.now-map{scroll-margin-top:84px}}   /* под верхней таблеткой вкладок */
.now-map-hd{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:flex-start;gap:4px 12px;margin-bottom:0}
.now-map-hd .kicker{margin:0}
.now-map-hd .hint{font-size:var(--fs-meta)}
.map2d{position:relative;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
.map2d svg{display:block;width:100%;height:auto;overflow:visible}
.map2d svg.flow,.map2d svg.top{position:absolute;inset:0;height:100%}
.map2d svg.flow{will-change:transform;pointer-events:none}           /* свой слой: импульсы не перерисовывают сферы */
.map2d svg.top{pointer-events:none}
.map2d svg.top .area{pointer-events:auto}
.map2d .area{cursor:pointer;outline:none;transition:opacity var(--dur) var(--ease),visibility 0s}
.map2d .area.none .sc{opacity:.55}
.map2d .area.dim{opacity:.35}
.map2d .area.hid{opacity:0;visibility:hidden;transition:opacity var(--dur) var(--ease),visibility 0s var(--dur)}   /* под сферой фокуса или колонкой чипов — убрана совсем */
.map2d svg.top .area.hid{pointer-events:none}
.map2d .area:focus-visible .hit{stroke:var(--ink);stroke-width:1.5}
.map2d .lab{transition:opacity var(--dur) var(--ease)}
.map2d .lab .nm{font-family:var(--mono);font-weight:500;letter-spacing:.06em;fill:var(--ink);paint-order:stroke;stroke:rgba(255,255,255,.5);stroke-width:2px;stroke-linejoin:round}
.map2d .lab .sb{font-family:var(--mono);letter-spacing:.04em;fill:var(--muted2)}
.map2d.phone .lab .sb{fill:var(--muted)}
.map2d .lab .wd{fill:var(--warm)}
.map2d .area.focus .lab,.map2d.focusing .area:not(.focus) .lab{opacity:0}   /* в фокусе подписей нет: контекст — только погашенные сферы */
.map2d .edges{transition:opacity var(--dur) var(--ease),visibility 0s}
.map2d.focusing .edges{opacity:0;visibility:hidden;transition:opacity var(--dur) var(--ease),visibility 0s var(--dur)}   /* скрытые нити не рисуются — импульсы не тратят кадры */
.map2d .gthreads path{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .35s var(--ease)}
.map2d .gthreads.on path{stroke-dashoffset:0}
.map2d .gthreads circle{opacity:0;transition:opacity .2s}
.map2d .gthreads.on circle{opacity:1;transition-delay:.3s}
.map2d .gthreads.instant path,.map2d .gthreads.instant circle{transition:none}
.map-chips{position:absolute;width:300px;z-index:2;display:grid;gap:12px;align-content:start}   /* ширину (≤ 300 / ≤ 520 px, не дальше края карты) ставит layoutChips; по ней же гасятся области под колонкой */
.map-chips[hidden]{display:none!important}
.map-ttl{display:grid;gap:4px;--mx:-10px;--my:0px;animation:materialize .35s var(--ease) backwards}
.map-ttl .kicker{margin:0}
.map-ttl h3{font-size:var(--fs-title);line-height:1.2;letter-spacing:-.02em;text-shadow:0 0 14px rgba(255,255,255,.85)}
.map-ttl .sb{display:flex;align-items:center;gap:7px;font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted2)}
.map-chip-list{display:grid;gap:8px;grid-template-columns:minmax(0,300px)}
.map-chips.two .map-chip-list{grid-template-columns:repeat(2,minmax(0,250px))}
.chip.group{width:100%;justify-content:space-between;text-align:left;--mx:-10px;--my:0px;animation:materialize .35s var(--ease) backwards;animation-delay:calc(.14s + var(--i,0) * .035s)}
.chip.group .l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.map-chips.out .map-ttl,.map-chips.out .chip.group,.map-chips.out .map-none{animation:dematerialize .25s var(--ease) forwards;animation-delay:0s;pointer-events:none}
.map-chips.instant .map-ttl,.map-chips.instant .chip.group{animation:none}
.map-none{font-size:var(--fs-sm)}
.map-back{position:absolute;left:0;top:0;z-index:3;display:inline-flex;align-items:center;gap:6px;padding:9px 13px;border:0;border-radius:99px;font:500 var(--fs-cap)/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);
  background:#fff;box-shadow:var(--shadow-s);--mx:0px;--my:-6px;animation:materialize .35s var(--ease) backwards}
.map2d.phone .map-chips{right:0;width:auto;gap:10px}
.map2d.phone .map-chip-list{grid-template-columns:minmax(0,1fr)}
.group-rows .val{font:500 var(--fs-meta)/1.3 var(--mono);color:var(--muted2);white-space:nowrap}
.row .nm .warm-dot{margin-left:7px;vertical-align:2px}
@media (prefers-reduced-motion:reduce){
  .map-ttl,.chip.group,.map-back{animation:fade .2s ease backwards}
  .map-chips.out .map-ttl,.map-chips.out .chip.group{animation:fadeout .15s ease forwards}
  .map2d .gthreads path{transition:none}
}
/* ---------- карта 3D (задача 15): копия карты сайта (js/map/map3d.js, классы .rxm/.rx-*), главный рендерер на ≥ 760 px ---------- */
.map3d{position:relative;min-width:0}
/* v1d R4: высота холста — окно карты на панели героя «Сейчас» (.now-top .map3d, раздел «R4»); прежние высоты полотна B1/v1c сняты */
.map3d .rx-side{display:none}                                        /* у экрана «Сейчас» своя стопка «Требует внимания» */
.map3d .rx-it small span.m:empty{display:none}                       /* у элементов без показателя — только статус */

/* ============================================================
   ЗАДАЧА 11 — «Почему» (дерево причин) и «Что если» (вмешательства, результат)
   ============================================================ */
/* ---------- выбор показателя ---------- */
.why-body,.wi-out{display:grid;gap:16px;min-width:0}
.wi-out:empty{display:none}
.metric-picker{display:grid;gap:14px;min-width:0}
.mp-recent{display:grid;gap:8px}
.mp-recent .kicker{margin:0}
.mp-list .val,.tree .val,.why-head .val{font:500 var(--fs-meta)/1.3 var(--mono);color:var(--muted2);white-space:nowrap}
.mp-list .val.muted2{opacity:.7}
.mp-list{max-height:min(56vh,560px);overflow:auto;overscroll-behavior:contain;margin:0 -4px;padding:0 4px}
.sheet .mp-list{max-height:none;overflow:visible}

/* ---------- шапка «Почему» ---------- */
.why-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px 16px}
.why-head .who{display:grid;gap:4px;min-width:0}
.why-head .kicker{margin:0}
.why-head h2{font-size:var(--fs-xl);line-height:1.15;overflow-wrap:anywhere}
.why-head .val{font-size:var(--fs-sm)}

/* ---------- дерево причин и следствий ---------- */
.causal{display:grid;gap:14px;min-width:0}
.tree-grid{display:grid;gap:16px;align-items:start}
@media (min-width:960px){.tree-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.tree-panel .kicker{display:flex;align-items:center;gap:8px}
.tree-panel .kicker .cnt{letter-spacing:0}
.tree{display:grid}
.tree .row{--d:0;display:grid;grid-template-columns:minmax(0,1fr);gap:6px;padding:10px 0 10px calc(var(--d) * 22px);position:relative}
.tree .row:first-child{border-top:0}
.tree .row[data-depth="2"]::before,.tree .row[data-depth="3"]::before{content:'';position:absolute;left:calc(var(--d) * 22px - 13px);top:10px;width:7px;height:11px;border-left:1.5px solid rgba(18,21,28,.18);border-bottom:1.5px solid rgba(18,21,28,.18);border-bottom-left-radius:4px}
.tree .tnode{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;padding:0;border:0;background:none;text-align:left;color:var(--ink);min-width:0;width:max-content;max-width:100%}
.tree .tnode .nm{font-weight:600;font-size:var(--fs-sm);line-height:1.3;overflow-wrap:anywhere;transition:color var(--dur) var(--ease)}
.tree .tnode.hv .nm{text-decoration:underline;text-underline-offset:3px}
/* B7: у причин «[узел] → снижает», у следствий «повышает → [узел]»; справа — сила словом и статус точкой (кнопка → редактор связи); числа — по «Показать числа» */
.tree .rph{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;min-width:0}
.tree .rph .rvg{white-space:nowrap}
.tree .rph .rv{font-size:var(--fs-sm);color:var(--muted)}
.tree .rph .rp-ar{font-size:var(--fs-sm)}
.tree .rlab{display:inline-flex;flex-wrap:wrap;align-items:center;gap:2px 7px;justify-self:start;padding:4px 10px;margin-left:-10px;border:0;border-radius:99px;background:none;font-size:var(--fs-meta);color:var(--muted);text-align:left;cursor:pointer;transition:background-color var(--dur) var(--ease)}
.tree .rlab:hover{background:var(--chip-bg)}
.tree .rlab .rw.none{color:var(--muted2);font-weight:400}
.causal:not(.nums) .rnums{display:none}
@media (min-width:760px){.tree .row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 14px}.tree .rlab{justify-self:end;margin:0 -10px 0 0;justify-content:flex-end}}


/* легенда под деревом: висит над фоном, без панели */
.legend{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:0 4px}
.legend .kicker{margin:0}
.legend .why-nums{padding:4px 0}
.lg-items{display:flex;flex-wrap:wrap;align-items:center;gap:6px 0;font-size:var(--fs-meta);color:var(--muted)}
.lg-i{display:inline-flex;align-items:center;gap:7px}
.lg-i+.lg-i::before{content:'·';margin:0 10px 0 4px;color:var(--muted2)}
.lg-i b{font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}

/* ---------- «Что если»: вмешательства ---------- */
.iv-lead{margin-bottom:6px}
.iv-list{display:grid}
.iv{display:grid;gap:10px;padding:12px 0;border-top:1px solid rgba(18,21,28,.08)}
.iv:first-child{border-top:0}
.iv-metric{justify-self:start;max-width:100%;padding:0;border:0;background:none;text-align:left;color:var(--ink);font-weight:600;font-size:var(--fs-body);line-height:1.3;overflow-wrap:anywhere;text-decoration:underline;text-decoration-color:rgba(18,21,28,.25);text-underline-offset:4px;transition:color var(--dur) var(--ease)}
.iv-metric.hv{text-decoration-color:currentColor}
.iv-ctl{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.iv-val{display:flex;align-items:center;gap:8px;flex:1 1 120px;min-width:0;max-width:220px}
.iv-val .in{padding:9px 12px;font-variant-numeric:tabular-nums}
.iv-val .unit{font:500 var(--fs-meta)/1 var(--mono);color:var(--muted2);white-space:nowrap;min-width:1ch}
.iv-x{width:34px;height:34px;border-radius:50%;border:none;background:var(--chip-bg);font-size:20px;line-height:1;color:var(--ink);display:grid;place-items:center;flex:none;margin-left:auto}
.iv-err:not([hidden]){display:flex;align-items:center;gap:8px;margin-top:8px;font-size:var(--fs-meta);color:var(--muted)}
.iv-err::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--warm);flex:none}
.iv-foot{margin-top:12px}
@media (min-width:760px){.iv{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px}.iv-ctl{flex-wrap:nowrap}.iv-val{flex:0 0 180px}}

/* ---------- результат: таблица (на телефоне — прокрутка вбок внутри панели, первый столбец липкий) ---------- */
.results{min-width:0}
.results .kicker,.goals-res .kicker,.cons-res .kicker{display:flex;align-items:center;gap:8px}
.results .tbl{overflow-x:auto;margin:0 -20px;padding:0 0 6px;overscroll-behavior-x:contain;scrollbar-width:thin}
.results .tbl:focus-visible{outline-offset:-2px}
.results table{border-collapse:separate;border-spacing:0;width:100%;min-width:720px;font-size:var(--fs-sm)}
.results th,.results td{padding:11px 10px;text-align:left;vertical-align:top;border-top:1px solid rgba(18,21,28,.08)}
.results thead th{border-top:0;padding-top:4px;font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2);white-space:nowrap}
.results th:last-child,.results td:last-child{padding-right:20px}
.results thead th.first,.results tbody th{position:sticky;left:0;z-index:2;padding-left:20px;
  background:linear-gradient(90deg,#fff 88%,rgba(255,255,255,0))}
.results tbody th{min-width:150px;max-width:220px;font-weight:600;line-height:1.3}
.results tbody th .nm{display:block;overflow-wrap:anywhere}
.results tbody th .tag{margin-top:5px}
.results tbody th .note{display:block;margin-top:4px;font-weight:400;font-size:var(--fs-meta);color:var(--muted)}
.results td.num{white-space:nowrap;font-variant-numeric:tabular-nums}
.results td.num .v{display:block;font-weight:600}
.results td.num .p{display:block;font:500 var(--fs-cap)/1.5 var(--mono);color:var(--muted2)}
.results td.na .v{color:var(--muted2);font-weight:400}
.results td.was{color:var(--muted)}
.results td.lag{font:500 var(--fs-cap)/1.6 var(--mono);color:var(--muted2);white-space:nowrap}
.results td.cf{padding-top:16px}
.results tr.iv-row td.num .v{color:var(--deep)}
@media (min-width:760px){.results .tbl{margin:0;padding:0 0 4px}.results thead th.first,.results tbody th{padding-left:0}.results th:last-child,.results td:last-child{padding-right:0}}
@media (min-width:1024px){.results thead th.first,.results tbody th{background:none;-webkit-backdrop-filter:none;backdrop-filter:none}}   /* стол: таблица помещается, прокрутки нет — липкому столбцу подложка не нужна */

/* ---------- цели и ограничения ---------- */
.wi-gc{align-items:start}
.goals-res .lv-head{display:flex;justify-content:flex-end;gap:0;margin-bottom:2px}
.goals-res .lv-head span,.goals-res .dots .dot{width:58px;flex:none;text-align:center}
.goals-res .lv-head span{font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted2)}
.goals-res .row,.cons-res .row{align-items:center;justify-content:space-between}
.goals-res .row.untouched .nm{font-weight:500;color:var(--muted)}
.goals-res .dots{display:flex;flex:none}
.goals-res .dot{display:grid;place-items:center;height:14px}
.goals-res .dot::before{content:'';width:10px;height:10px;border-radius:50%;box-sizing:border-box}
.goals-res .dot.yes::before{background:var(--mid)}
.goals-res .dot.no::before{border:1.5px solid rgba(18,21,28,.28)}
.goals-res .dot.na::before{border:1.5px dashed rgba(18,21,28,.28)}
@media (max-width:420px){.goals-res .lv-head span,.goals-res .dots .dot{width:50px}.goals-res .lv-head span{letter-spacing:0}}
.cons-res .tag{flex:none}

/* ---------- «Почему только N %» ---------- */
.explain .explain-title{font-size:var(--fs-xl);line-height:1.2}
.explain>p.muted{max-width:62ch}
.ex-cols{display:grid;gap:16px;margin-top:16px}
@media (min-width:960px){.ex-cols{grid-template-columns:repeat(3,minmax(0,1fr))}}
.ex-h{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);font-weight:600;letter-spacing:-.01em;margin-bottom:6px}
.ex-list{list-style:none;margin:0;padding:0;display:grid}
.ex-list li{padding:8px 0;border-top:1px solid rgba(18,21,28,.08);font-size:var(--fs-meta);line-height:1.45;color:var(--muted);overflow-wrap:anywhere}
.ex-list li:first-child{border-top:0}
.ex-list li.none{color:var(--muted2)}
.wi-acts{padding:0 4px}

/* ============================================================
   ЗАДАЧА 12 — «Решения» (Decision Center) и «Результаты» (журнал прогнозов)
   ============================================================ */
/* ---------- список решений + карточка рядом (стол) ---------- */
.dec-body{display:grid;gap:16px;min-width:0}
.dec-top{justify-content:flex-start}
.dec-grid{display:grid;gap:16px;align-items:start;min-width:0}
.dec-side:empty{display:none}
@media (min-width:1024px){.dec-grid{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}.dec-side{position:sticky;top:84px}}
.dec-list .kicker{display:flex;align-items:center;gap:8px}
button.row.dec-row{display:grid;grid-template-columns:minmax(0,1fr);gap:4px;padding:13px 0;transition:color var(--dur) var(--ease)}
button.row.dec-row .nm{font-size:var(--fs-sm)}
button.row.dec-row .mt{gap:4px 10px}
button.row.dec-row .mt.rec{color:var(--ink)}
button.row.dec-row.hv .nm{text-decoration:underline;text-underline-offset:3px}
button.row.dec-row.on .nm{color:var(--ink)}
button.row.dec-row.on{box-shadow:inset 3px 0 0 var(--pill);padding-left:12px}
.dec-pick{padding:24px 4px}

/* ---------- карточка решения ---------- */
.dcard{display:grid;gap:18px;min-width:0}
.dc-head{display:grid;gap:8px}
.dc-kick{display:flex;align-items:center;gap:10px}
.dc-kick .kicker{margin:0}
.dc-q{font-size:var(--fs-xl);line-height:1.2;overflow-wrap:anywhere}
.dc-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;font-size:var(--fs-meta);color:var(--muted)}
.dc-rec{display:grid;gap:4px;padding:14px 16px;border-radius:16px;background:none}
.dc-rec-t{font-size:var(--fs-body);font-weight:600;line-height:1.35;letter-spacing:-.01em}
.dc-rec .muted{font-size:var(--fs-meta)}
.dc-badge{display:grid;gap:4px;padding:12px 16px;border-radius:16px;box-shadow:inset 0 0 0 1.5px var(--ink);background:#fff}
.dc-badge b{font:600 var(--fs-cap)/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}
.dc-badge span{font-size:var(--fs-meta);line-height:1.45;color:var(--muted)}
.dc-sec{display:grid;gap:6px;min-width:0}
.dc-h{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);font-weight:600;letter-spacing:-.01em}
.dc-list{list-style:none;margin:0;padding:0;display:grid}
.dc-list li{padding:8px 0;border-top:1px solid rgba(18,21,28,.08);font-size:var(--fs-meta);line-height:1.45;color:var(--muted);overflow-wrap:anywhere}
.dc-list li:first-child{border-top:0}
.dc-sec .none{padding:2px 0 0;font-size:var(--fs-meta)}
.dc-stakes .kv{margin-top:2px}
.dc-acts{padding-top:14px;border-top:1px solid rgba(18,21,28,.08)}
/* в листе карточка — содержимое листа, не второе стекло поверх стекла; заголовок листа уже «Решение» */
.sheet .dcard{background:none;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none;padding:0;border-radius:0;overflow:visible}
.sheet .dcard::before,.sheet .dcard::after{display:none}
.sheet .dc-kick .kicker{display:none}

/* ---------- варианты ---------- */
.alts{display:grid}
.alt{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;align-items:start;padding:12px 0;border-top:1px solid rgba(18,21,28,.08)}
div.alt{grid-template-columns:minmax(0,1fr)}
.alts .alt:first-child{border-top:0}
label.alt{cursor:pointer}
.alt input[type=radio]{appearance:none;-webkit-appearance:none;width:18px;height:18px;margin:2px 0 0;border-radius:50%;box-shadow:inset 0 0 0 1.5px rgba(18,21,28,.32);background:#fff;cursor:pointer;transition:box-shadow var(--dur) var(--ease)}
.alt input[type=radio]:checked{box-shadow:inset 0 0 0 5px var(--pill)}
.alt input[type=radio]:disabled{opacity:.4;cursor:default}
.alt .who{display:grid;gap:4px;min-width:0}
.alt .nm{font-weight:600;font-size:var(--fs-sm);line-height:1.3;overflow-wrap:anywhere}
.alt .mt{font-size:var(--fs-meta);line-height:1.4;color:var(--muted);overflow-wrap:anywhere}
.alt .tags:empty{display:none}
.alt-num{grid-column:2;display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}
div.alt .alt-num{grid-column:1}
.alt-num .sc{font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.04em;color:var(--muted2);white-space:nowrap}
.alt-num .sc.na{color:var(--muted2);opacity:.8}
.alt.excluded .nm{color:var(--muted)}
@media (min-width:760px){
  .alt{grid-template-columns:auto minmax(0,1fr) auto}
  div.alt{grid-template-columns:minmax(0,1fr) auto}
  .alt-num{grid-column:auto;flex-direction:column;align-items:flex-end;gap:6px}
  div.alt .alt-num{grid-column:auto}
}

/* ---------- форма нового решения и редактор варианта ---------- */
.dec-form{display:grid;gap:14px;min-width:0}
.dec-form .panel-title{margin:0}
.df-grid{display:grid;gap:14px}
@media (min-width:760px){.df-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.df-grid>.field[data-key="question"]{grid-column:1/-1}}
.df-h{margin-top:8px}
.alts-ed{display:grid;gap:12px}
.alt-ed{display:grid;gap:12px;padding:14px 16px;border-radius:16px;background:none}
.alt-ed-hd{display:flex;align-items:center;justify-content:space-between;gap:12px}
.alt-ed-hd .kicker{margin:0}
.alt-ivs{display:grid;gap:8px}
.alt-ed-row{display:grid;gap:12px}
@media (min-width:760px){.alt-ed-row{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}}
.df-acts{padding-top:6px}

/* ---------- журнал прогнозов ---------- */
.ledger{display:grid;gap:16px;min-width:0}
.lg-h{display:flex;align-items:center;gap:8px}
.lrow{display:grid;gap:8px;padding:14px 0;border-top:1px solid rgba(18,21,28,.08);min-width:0}
.lgroup .rows .lrow:first-child{border-top:0;padding-top:4px}
.lr-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:start}
.lr-head .who{display:grid;gap:3px;min-width:0}
.lr-head .nm{font-weight:600;font-size:var(--fs-sm);line-height:1.3;overflow-wrap:anywhere}
.lr-head .mt{display:flex;flex-wrap:wrap;gap:2px 12px;font-size:var(--fs-meta);line-height:1.4;color:var(--muted)}
.lr-head .rg{font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap}
.lr-head .conf{margin-top:3px}
.lr-dec{text-align:left;overflow-wrap:anywhere}
.lr-fact{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px}
.lr-fact .field{flex:1 1 160px;max-width:260px}
.lr-fact .btn{margin-bottom:2px}
.lr-err:not([hidden]){display:flex;align-items:center;gap:8px;font-size:var(--fs-meta);color:var(--muted)}
.lr-err::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--warm);flex:none}
.lr-res{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;font-size:var(--fs-meta);color:var(--muted)}
.lr-res .v{font-variant-numeric:tabular-nums}
.lrow.ok .lr-res .tag::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--mid);display:inline-block;flex:none}
.lr-model{display:grid;gap:4px}
.lr-links{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.lr-links li{font-size:var(--fs-meta);line-height:1.45;color:var(--muted);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.lr-learned{font-size:var(--fs-meta)}
@media (min-width:760px){           /* стол: у открытой строки поле «Факт» справа — строка в две колонки, список короче */
  .lrow.open{grid-template-columns:minmax(0,1fr) auto;column-gap:28px}
  .lrow.open>.lr-head,.lrow.open>.lr-dec{grid-column:1}
  .lrow.open>.lr-fact{grid-column:2;grid-row:1/span 2;align-self:center;flex-wrap:nowrap}
  .lrow.open>.lr-err{grid-column:2}
  .lr-fact .field{flex:0 0 auto;max-width:none}
  .lr-fact .with-unit>:first-child{flex:0 0 150px}
  .lr-fact .field .unit{flex:0 0 10ch}
}

/* ---------- слой ИИ: интервью, предложения, импорт (задача 13) ---------- */
.slot:empty{display:none}
.slot{margin-top:16px;scroll-margin-top:16px}
@media (min-width:760px){.slot{scroll-margin-top:96px}}   /* под верхней таблеткой вкладок */
.screen[data-route="build"] .grid2{align-items:start}
.think{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:var(--fs-meta);justify-self:start}
.dots{display:inline-flex;gap:4px}
.dots i{width:6px;height:6px;border-radius:50%;background:var(--ink-2);opacity:.3;animation:dot 1.2s var(--ease) infinite}
.dots i:nth-child(2){animation-delay:.15s}
.dots i:nth-child(3){animation-delay:.3s}
@keyframes dot{0%,100%{opacity:.25}50%{opacity:1}}
.chat-status:not([hidden]){display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:var(--fs-meta);color:var(--muted)}
.chat-status .err{display:flex;align-items:center;gap:8px}
.chat-status .err::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--warm);flex:none}
.qs .kicker{margin:0 0 4px}
.qs ul{margin:0;padding-left:18px;font-size:var(--fs-meta);color:var(--muted);display:grid;gap:2px}
.imp-out .say{font-size:var(--fs-body);color:var(--ink);max-width:62ch}
/* B3 — интервью как чат: липкий верх (прогресс по 8 темам), лента прокручивается сама, липкий низ (поле ввода). Высоту .chat ставит chat.js (fit) */
.screen.b-mode[data-mode="ai"]>h1{display:none}          /* в чате заголовок экрана — сегмент «Рассказать ИИ»; высота нужна ленте */
.ai-chat{padding:0;overflow:clip}                         /* clip: фокус в поле не сдвигает панель вбок */
.chat{display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;height:max(320px,calc(100dvh - 320px))}
.chat-top{position:relative;z-index:2;display:grid;gap:6px;padding:14px 20px 12px;border-bottom:1px solid var(--line-soft);background:#fff}
.ct-row{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);grid-template-areas:"t d s";align-items:center;gap:8px 18px}
/* узкая панель на столе (1024, планшет): «Понимаю · Дальше · Завершить · ⋯» не помещаются рядом с точками — точки второй строкой (B3‑ревью: наезжали) */
.chat{container-type:inline-size}
@container (min-width:600px) and (max-width:1019.98px){.ct-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"t s" "d d";gap:10px 18px}.ct-dots{justify-self:start}}
.ct-title{grid-area:t;min-width:0;font-size:var(--fs-sm);line-height:1.3;color:var(--muted2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ct-title b{color:var(--ink);font-weight:600}
.ct-n{font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}
.ct-n.s{display:none}
.ct-dots{grid-area:d;display:flex;align-items:center}
.ct-dots .dot{position:relative;width:12px;height:12px;border-radius:50%;flex:none;background:#fff;box-shadow:inset 0 0 0 1.5px rgba(18,21,28,.3);transition:background var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}
.ct-dots .dot::before{content:'';position:absolute;inset:-7px}                    /* шире цель наведения */
.ct-dots .dot.done{background:linear-gradient(135deg,var(--deep),var(--mid));box-shadow:none}
.ct-dots .dot.cur{background:#fff;box-shadow:inset 0 0 0 3px var(--deep),0 0 0 3px rgba(61,213,196,.32);animation:cur-pulse 2.4s var(--ease) infinite}
@keyframes cur-pulse{50%{box-shadow:inset 0 0 0 3px var(--deep),0 0 0 7px rgba(61,213,196,.06)}}
.ct-dots .ln{width:22px;height:2px;border-radius:2px;flex:none;background:rgba(18,21,28,.14)}
.ct-dots .ln.done{background:linear-gradient(90deg,var(--deep),var(--mid))}
/* название темы при наведении — светлая плашка под точкой (точка не двигается) */
.ct-dots .dot::after{content:attr(data-tip);position:absolute;top:calc(100% + 10px);left:50%;translate:-50% 0;white-space:nowrap;padding:6px 10px;border-radius:10px;font-size:var(--fs-meta);line-height:1.2;color:var(--ink);
  background:#fff;box-shadow:var(--pop-shadow);pointer-events:none;display:none;animation:fade var(--dur-fast) ease}
.ct-dots .dot:hover::after{display:block}                                          /* скрытая плашка не расширяет панель (display, не opacity) */
.ct-dots .dot[data-k="0"]::after,.ct-dots .dot[data-k="1"]::after{left:-4px;translate:none}
.ct-dots .dot[data-k="6"]::after,.ct-dots .dot[data-k="7"]::after{left:auto;right:-4px;translate:none}
.ct-side{grid-area:s;justify-self:end;display:flex;align-items:center;gap:8px;min-width:0}
.ct-pct{font-size:var(--fs-meta);color:var(--muted);white-space:nowrap;margin-right:4px}
.ct-pct b{color:var(--ink);font-weight:600}
.ct-side .btn[hidden]{display:none}
.ct-next{gap:4px;padding-right:10px}
.ct-next .ic{width:14px;height:14px}
.ct-more{width:36px;height:36px;padding:0}
.ct-more .ic{width:18px;height:18px}
.chat p.ct-hint{font-size:var(--fs-meta);line-height:1.4;color:var(--muted)}
.chat-pop .pm-item:disabled{opacity:.45;cursor:default}
/* лента */
.chat-mid{position:relative;min-height:0}
.chat-log{position:relative;height:100%;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:14px;padding:18px 20px 22px}
.chat-log>*{flex:none}
.msg{font-size:var(--fs-sm);line-height:1.45;min-width:0;animation:materialize var(--dur) var(--ease) both;--mx:0px;--my:8px}
.msg p{margin:0;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere}
.who-l{display:inline-flex;align-items:center;gap:6px;margin:0 0 6px 6px;font:500 var(--fs-cap)/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
.who-l .ic{width:13px;height:13px}
.msg.ai,.msg.think{align-self:flex-start;display:grid;justify-items:start;width:min(100%,800px)}
.msg .bub{max-width:100%;min-width:0;display:grid;gap:12px;padding:12px 16px;border-radius:6px 18px 18px 18px;
  background:var(--chip-bg)}   /* M2: пузырь ИИ — мягкий серый на белой ленте */
.msg .bub:has(.props){width:100%}
.msg.ai .say{font-size:var(--fs-body);line-height:1.5;max-width:66ch}
.msg.think .bub{padding:15px 18px}
.msg.final .act-row{gap:8px}
.msg.final .act-row[hidden]{display:none}
.msg.me{align-self:flex-end;max-width:min(78%,560px);padding:10px 15px;border-radius:18px 18px 6px 18px;
  background:#fff;color:var(--ink);box-shadow:inset 0 0 0 1px var(--line)}   /* M2: пузырь владельца — белый с волосяной рамкой */
.msg.me p{color:var(--ink)}
.msg.me p{font-size:var(--fs-body);line-height:1.45}
.msg.me.pending{opacity:.62}
.chat .later{margin:6px 0 0 6px;font-size:var(--fs-meta);line-height:1.45;color:var(--muted);max-width:66ch}
.later .lt-k{color:var(--muted2);font-weight:600}
details.later summary{cursor:pointer;list-style:none}
details.later summary::-webkit-details-marker{display:none}
details.later .lt-more{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
details.later ul{margin:4px 0 0;padding-left:18px;display:grid;gap:2px}
.chat-div{display:flex;align-items:center;gap:12px;margin:6px 0 0;font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted2);animation:fade var(--dur) ease both}
.chat-div::before,.chat-div::after{content:'';flex:1;min-width:16px;height:1px;background:rgba(18,21,28,.12)}
.chat-div span{flex:none;max-width:80%;text-align:center}
.chat-new{position:absolute;left:0;right:0;bottom:12px;z-index:2;width:max-content;margin:0 auto;gap:6px;padding:8px 14px 8px 11px}
.chat-new[hidden]{display:none}
.chat-new .ic{width:14px;height:14px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/* статус и низ */
.chat .chat-status:not([hidden]){padding:8px 20px;border-top:1px solid rgba(18,21,28,.06)}
.chat-bot{display:grid;gap:6px;padding:12px 20px 14px;border-top:1px solid var(--line-soft);background:#fff}
.chat-in{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}
.chat-in[hidden],.chat-hint[hidden]{display:none}
textarea.chat-ta{resize:none;min-height:46px;overflow-y:hidden;padding:12px 18px;border-radius:23px}
.chat-send{width:46px;height:46px;flex:none;border-radius:50%;border:0;display:grid;place-items:center;color:var(--ink);cursor:pointer;
  background:var(--pill);color:#fff;box-shadow:0 10px 22px -12px rgba(20,24,40,.55);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}
.chat-send .ic{width:18px;height:18px;stroke-width:1.8}
.chat-send:disabled{background:var(--chip-bg);color:var(--ink-2);box-shadow:none;cursor:default}
/* V1 — микрофон слева от поля: белая круглая кнопка с контуром; слушает — тёплая, пульсирует кольцом; промежуточный текст в поле — серый */
.chat-in.has-mic{grid-template-columns:auto minmax(0,1fr) auto}
.chat-mic{width:46px;height:46px;flex:none;border-radius:50%;border:0;display:grid;place-items:center;cursor:pointer;background:#fff;color:var(--ink);
  box-shadow:var(--field-ring);transition:background var(--dur) var(--ease),color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}
.chat-mic .ic{width:19px;height:19px;stroke-width:1.6}
.chat-mic:focus-visible{outline:1.5px solid var(--ink);outline-offset:2px}
@keyframes mic-ring{0%{box-shadow:0 0 0 0 rgba(255,138,91,.5)}100%{box-shadow:0 0 0 12px rgba(255,138,91,0)}}
.chat-mic.on{background:var(--warm);color:#fff;animation:mic-ring 1.2s ease-out infinite}
textarea.chat-ta.interim{color:var(--ink-2)}
@media (prefers-reduced-motion:reduce){.chat-mic.on{animation:none;box-shadow:0 0 0 4px rgba(255,138,91,.3)}}
.chat-ended{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;font-size:var(--fs-sm);color:var(--ink);min-height:46px}
.chat-ended[hidden]{display:none}
.chat-ended>.ic{width:18px;height:18px;color:var(--ink)}
.chat-ended .ce-t{flex:1;min-width:180px}
.chat-hint{font-size:var(--fs-meta);color:var(--muted2);padding-left:18px}
@media (max-width:759.98px){
  .screen.b-mode[data-mode="ai"] .kp-mini{display:none}   /* телефон: «Понимаю N %» уже в шапке чата — ленте нужна высота */
  .chat-top{padding:12px 14px 10px}
  .ct-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"t s" "d d";gap:10px}
  .ct-n.l,.ct-pl{display:none}
  .ct-n.s{display:inline}
  .ct-side .ct-next,.ct-side .ct-end{display:none}
  .ct-dots{justify-content:space-between}
  .ct-dots .ln{flex:1;width:auto;min-width:6px}
  .chat p.ct-hint{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .chat-log{padding:14px 12px 18px;gap:12px}
  .chat .chat-status:not([hidden]){padding:8px 12px}
  .chat-bot{padding:10px 12px 12px}
  .msg.me{max-width:86%}
  .msg .bub{padding:11px 13px}
  .chat-hint{display:none}
}
@media (prefers-reduced-motion:reduce){.msg{animation:fade var(--dur) ease both}.dots i{animation:none;opacity:.6}.ct-dots .dot.cur{animation:none}}
/* C1 — телефон: интервью полноэкранным слоем. html.chat-full ставит chat.js (onBack, < 760); верх и высота слоя — visualViewport (--vv-top / --vv-h:
   клавиатура iOS/Android уменьшает только его, 100dvh и innerHeight её не видят). Страница под слоем не прокручивается; шапка экрана, таблетка и «+» скрыты. */
.ct-back{display:none}
@media (max-width:759.98px){
  html.chat-full,html.chat-full body{overflow:hidden;overscroll-behavior:none}
  html.chat-full .app{min-height:0}                         /* полотно не длиннее окна: прокручивать нечего */
  html.chat-full .head,html.chat-full .tabs,html.chat-full .plan-fab{visibility:hidden;pointer-events:none}
  html.chat-full .b-top.mat,html.chat-full .b-body.mat{animation:none}   /* transform/filter предка сдвинул бы fixed‑слой на время появления */
  html.chat-full .ai-chat{position:fixed;left:0;right:0;top:var(--vv-top,0px);height:var(--vv-h,100%);z-index:40;border-radius:0;box-shadow:none;
    --mx:0px;--my:14px;animation:materialize var(--dur) var(--ease) backwards}
  html.chat-full .ai-chat::after{display:none}              /* кромка стекла по краям экрана не нужна */
  .chat-full .chat{height:100%}
  .chat-full .chat-top{padding:calc(8px + env(safe-area-inset-top)) 12px 10px;gap:8px}
  .chat-full .ct-row{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"b t s" "d d d";gap:8px 10px}
  .chat-full .ct-back{display:inline-flex;grid-area:b;padding:8px 12px 8px 10px;white-space:nowrap}
  .chat-full .ct-title{display:grid;line-height:1.25;font-size:var(--fs-sm)}   /* «ТЕМА 1/8» над названием: в одну строку с кнопками без обрезки */
  .chat-full .ct-title .ct-sep{display:none}
  .chat-full .ct-title b{overflow:hidden;text-overflow:ellipsis}
  .chat-full .ct-dots{padding:0 4px}
  .chat-full p.ct-hint{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .chat-full .chat-bot{padding:10px 12px calc(10px + env(safe-area-inset-bottom))}
  html.kbd.chat-full .chat-bot{padding-bottom:10px}   /* клавиатура закрывает домашнюю полосу */
  .chat.tight .ct-dots,.chat.tight p.ct-hint{display:none}  /* клавиатура съела больше 60 %: шапка — одна строка */
}
@media (max-width:759.98px) and (prefers-reduced-motion:reduce){html.chat-full .ai-chat{animation:fade var(--dur) ease backwards}}
.props{display:grid;gap:10px;min-width:0}
.props-hd{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px}
.props-hd .kicker{margin:0}
.pr-count{font-size:var(--fs-meta);color:var(--muted)}
.prop-list{display:grid}
.prop-row{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;align-items:center}
.prop-list .prop-row:first-child{border-top:0}
.prop-row .pv{font-size:var(--fs-meta);color:var(--muted);line-height:1.4;overflow-wrap:anywhere}
.prop-row .pv.was{color:var(--muted2)}
.prop-row[data-st="skipped"] .who{opacity:.5}
.pr-side{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px}
@media (min-width:760px){.prop-row{grid-template-columns:minmax(0,1fr) auto;gap:16px}.pr-side{justify-content:flex-end}}
/* предложения внутри сообщения ИИ (B3): карточки нерешённых, строки «Добавлено» / «Пропущено» */
.props.compact .prop-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px}
.prop-row.card{display:grid;grid-template-columns:minmax(0,1fr);align-content:space-between;gap:10px;padding:11px 12px 12px;border-radius:16px;background:var(--panel-bg);box-shadow:var(--panel-shadow)}   /* M2: карточка предложения — бумага на сером пузыре */
.prop-row.card .who{display:grid;gap:3px;min-width:0}
.prop-row.card .mt{font-size:var(--fs-meta);line-height:1.35;color:var(--muted);display:flex;flex-wrap:wrap;align-items:center;gap:0 4px}
.prop-row.card .ty{font:500 var(--fs-cap)/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}
.prop-row.card .nm{font-weight:600;font-size:var(--fs-sm);line-height:1.3;overflow-wrap:anywhere}
.prop-row.card .pr-side{justify-content:flex-start}
.prop-row.card .act-row{gap:6px}
.prop-row.card .btn.sm{padding:7px 12px}
.chat p.pr-done,.chat p.pr-skipped{display:flex;gap:8px;align-items:baseline;font-size:var(--fs-meta);line-height:1.45;white-space:normal}
.chat p.pr-done{color:var(--ink)}
.pr-done .pr-ic{color:var(--ink);font-weight:700}
.chat p.pr-skipped{color:var(--muted2)}
.props.compact .prop-rels{padding-top:8px}
@media (max-width:759.98px){.props.compact .prop-list{grid-template-columns:minmax(0,1fr)}}
.prop-rels{display:grid;padding-top:10px;border-top:1px solid rgba(18,21,28,.08)}
.prop-rels .kicker{margin:0 0 4px}
.prop-rel{display:grid;gap:2px;padding:6px 0;font-size:var(--fs-sm);line-height:1.35}
.prop-rel .nm{overflow-wrap:anywhere}
.prop-rel .pr-rmt{display:block}
.prop-rel .mt{font-size:var(--fs-meta);color:var(--muted)}
.prop-rel .mt.off{color:var(--muted2)}
.panel p.pr-note,.panel p.imp-file{font-size:var(--fs-meta)}
.imp-file{font-family:var(--mono);overflow-wrap:anywhere}
.field.paste{margin-top:0}
.imp-out>.props,.imp-out>.act-row,.imp-out>.imp-sel,.imp-out>.say,.imp-out>.qs,.imp-out>.chat-status,.imp-out>.think,.imp-out>.none{margin-top:12px}
.imp-sel{align-items:end}
@media (max-width:420px){.imp-sel{grid-template-columns:minmax(0,1fr)}}
.imp-progress{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;margin-top:12px}
.imp-progress .think{flex-wrap:wrap}
.imp-out>.imp-stopped{margin-top:12px}

/* ============================================================
   ЗАДАЧА 14 — полировка под телефон, «Устойчивость»
   ============================================================ */
/* «Знания» на телефоне: фильтры свёрнуты под кнопкой «Фильтры · N» (на столе панель всегда открыта, кнопки нет) */
.f-toggle{flex:none}
.f-toggle.on{background:var(--pill);color:#fff;box-shadow:none}
@media (min-width:760px){.f-toggle{display:none}}
@media (max-width:759.98px){.filters.shut{display:none}}
/* узкий телефон: кнопки «Фильтры» и «+ Новый» — первой строкой справа, поиск — своей строкой ниже (подсказка поиска не обрезается) */
@media (max-width:479.98px){.know-top{flex-wrap:wrap;justify-content:flex-end}.know-top .search{order:2;flex:1 0 100%}}
/* результат «что если»: правый край таблицы гаснет, пока есть куда прокручивать (подсказка, что таблица шире экрана) */
@media (max-width:1023.98px){.results .tbl.more{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 44px),rgba(0,0,0,.12));mask-image:linear-gradient(90deg,#000 calc(100% - 44px),rgba(0,0,0,.12))}}

/* «Устойчивость»: пять показателей — пустые дуги */
.res-intro .lead{margin:0 0 8px}
.res-intro p:last-child{margin:0}
.ind-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 14px;margin-top:16px}
.ind-grid .ind:last-child:nth-child(odd){grid-column:1/-1}
@media (min-width:760px){.ind-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.ind-grid .ind:last-child:nth-child(odd){grid-column:auto}}
.ind{display:grid;justify-items:center;align-content:start;text-align:center;gap:4px}
.ind-ring{position:relative;width:64px;height:64px;color:var(--ink-2)}   /* M2: заготовка показателя (данных ещё нет) — пунктир --ink-2, без бирюзы */
.ind-arc{display:block;width:64px;height:64px}
.ind-v{position:absolute;inset:0;display:grid;place-items:center;font:500 var(--fs-meta)/1 var(--mono);color:var(--muted2)}
.ind-nm{margin-top:6px;font-weight:600;font-size:var(--fs-sm)}
.ind-hint{font-size:var(--fs-meta);line-height:1.35;color:var(--muted)}
.ind-later{margin-top:2px;font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}
/* живая часть: элементы с полями антихрупкости */
.res-live>.muted{margin:0}
.res-g{margin-top:18px}
.res-g .sec{font-size:var(--fs-sm);font-weight:600;letter-spacing:-.01em;display:flex;align-items:center;gap:8px;margin:0 0 4px}
.res-row .tags{justify-content:flex-end}
@media (max-width:759.98px){button.row.res-row{grid-template-columns:minmax(0,1fr);gap:8px}.res-row .tags{justify-content:flex-start}}
/* одна панель стресс‑лаборатории: пять под‑экранов строками (название | что будет делать) */
.next-rows{list-style:none;margin:12px 0 0;padding:0}
.next-row{display:grid;gap:2px;padding:10px 0;border-top:1px solid rgba(18,21,28,.08)}
.next-row .nr-t{font-weight:600;font-size:var(--fs-sm)}
.next-row .nr-l{font-size:var(--fs-meta);line-height:1.4;color:var(--muted)}
@media (min-width:760px){.next-row{grid-template-columns:240px minmax(0,1fr);gap:16px;align-items:baseline}}

/* ============================================================
   B2 — «Сборка»: что я уже знаю, три входа, режимы во всю ширину
   ============================================================ */
.b-top,.b-body{display:grid;gap:16px;min-width:0}
.b-top.mat,.b-body.mat{--mx:0px;--my:10px;animation:materialize .5s var(--ease) backwards}
.b-body.mat{animation-delay:.05s}
.screen.b-mode>.lead{display:none}
/* панель «Что я уже знаю о бизнесе»: кольцо и фраза слева, 13 областей полосками справа */
.kp{display:grid;gap:18px 32px}
.kp-sum{display:grid;gap:14px;align-content:start;min-width:0}
.kp .kp-sum .kicker{margin:0}
.kp-head{display:flex;align-items:center;gap:16px}
.ring-box.big{width:84px;height:84px}
.kp-tt{min-width:0}
.kp-tt .panel-title{margin:0 0 4px}
.panel p.kp-note{font-size:var(--fs-meta);line-height:1.4}
.kp .data{display:grid;gap:10px;justify-items:start;padding-top:14px;border-top:1px solid rgba(18,21,28,.08)}
.kp .data[hidden]{display:none}
.kp .data p{font-size:var(--fs-meta);line-height:1.4}
.kp-right{display:grid;gap:6px;min-width:0;align-content:start}
.kp-areas{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 28px}
button.area{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"n m" "b b";gap:7px 10px;align-items:center;width:calc(100% + 20px);margin:0 -10px;padding:8px 10px;
  border:0;border-radius:12px;background:none;text-align:left;color:var(--ink);cursor:pointer;transition:background var(--dur-fast) var(--ease)}
button.area:hover{background:var(--inset-bg)}
button.area:focus-visible{outline:1.5px solid var(--ink);outline-offset:-2px}
.area .an{grid-area:n;min-width:0;font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}
.area .bar{grid-area:b;position:relative;display:block;width:100%;justify-self:stretch;height:8px;border-radius:99px;background:rgba(18,21,28,.08);overflow:hidden}
.area .bar i,.km-bars .mb i{position:absolute;inset:0 auto 0 0;border-radius:inherit;background:linear-gradient(90deg,var(--deep),var(--mid));transition:width .6s var(--ease)}
.area.zero .bar,.km-bars .mb.zero{background:transparent;border:1px dashed rgba(18,21,28,.26)}
.area .am{grid-area:m;font-size:var(--fs-meta);line-height:1.3;color:var(--muted);text-align:right;white-space:nowrap}
@media (min-width:1024px){.area .am{text-align:left}}
.area.full .am{color:var(--ink);font-weight:500}
.kp-all{display:none}
@media (min-width:1024px){
  button.area{grid-template-columns:minmax(0,150px) minmax(48px,1fr) 140px;grid-template-areas:"n b m";gap:12px;padding:9px 10px}
}
@media (min-width:1280px){.kp{grid-template-columns:220px minmax(0,1fr)}button.area{grid-template-columns:minmax(0,164px) minmax(48px,1fr) 140px}.kp-head{flex-direction:column;align-items:flex-start}.ring-box.big{width:96px;height:96px}}
@media (max-width:759.98px){
  .kp-areas{grid-template-columns:minmax(0,1fr)}
  .kp:not(.all) .area.more{display:none}
  .kp-all{display:inline-block;margin-top:6px}   /* v1d R2: 12 px от последней области (было 6) */
}
/* три входа: равные карточки, одна главная кнопка внизу */
.entries{display:grid;gap:16px}
@media (min-width:760px){.entries{grid-template-columns:repeat(3,minmax(0,1fr))}}
.entry{display:flex;flex-direction:column;cursor:pointer}
.entry .panel-title{margin-bottom:6px}
.entry .act-row{margin-top:auto;padding-top:18px}
.en-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px}
.en-ic{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;color:var(--ink);background:var(--inset-bg);transition:background var(--dur) var(--ease)}
.en-ic .ic{width:20px;height:20px}
.entry:hover .en-ic{background:var(--pill);color:#fff}
.badge{display:inline-flex;align-items:center;gap:7px;padding:6px 10px 6px 8px;border-radius:99px;font:500 var(--fs-cap)/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);background:var(--chip-bg)}
.badge::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--mid)}
.badge[hidden]{display:none}
/* заглушка «Интеграции» строкой */
.next.next-line{display:flex;align-items:center;gap:10px;margin:0;padding:0 4px;font-size:var(--fs-meta);color:var(--muted2)}
.next-line .nd{width:6px;height:6px;border-radius:50%;flex:none;background:var(--ink-2);opacity:.55}
/* режим: строка знаний, «‹ К сборке» и сегмент */
.kp-mini{display:flex;align-items:center;gap:12px;padding:10px 16px}
.ring-box.mini{width:28px;height:28px}
.ring-box.mini .pct{display:none}
.ring-box.mini circle{stroke-width:10}
.km-l{font-weight:600;font-size:var(--fs-sm);white-space:nowrap}
.km-bars{flex:1;display:grid;grid-template-columns:repeat(13,minmax(0,1fr));gap:5px;min-width:0}
.km-bars .mb{position:relative;display:block;height:6px;border-radius:99px;background:rgba(18,21,28,.08);overflow:hidden}
.mode-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.mode-seg button{padding:8px 15px;font-size:var(--fs-sm)}
.mode-bar .back{padding:11px 16px}
.imp-cols{display:grid;gap:20px}
@media (min-width:760px){.imp-cols{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:32px}}
.imp-col{display:grid;gap:10px;align-content:start;min-width:0}
.imp-in .imp-col .kicker{margin:0}
.imp-in .act-row{margin-top:2px}
@media (max-width:759.98px){
  .screen.b-mode>h1{display:none}
  .b-mode .mode-bar{order:-1}
  .mode-seg{width:100%}
  .mode-seg button{flex:1;padding:8px 6px;font-size:var(--fs-meta)}
  .kp-mini{padding:9px 14px;gap:10px}
  .en-head{margin-bottom:10px}
  .en-ic{width:40px;height:40px}
  .entry .act-row{padding-top:14px}
}
@media (max-width:479.98px){.km-bars{display:none}}
@media (prefers-reduced-motion:reduce){
  .b-top.mat,.b-body.mat{animation:fade .3s ease backwards}
  .area .bar i,.km-bars .mb i{transition:none}
}

/* ============================================================
   B5 — мастер «Добавить вручную» (components/add-wizard.js)
   Колонки и сводка зависят от ширины самого мастера (container query): в «Сборке» на столе — форма | сводка,
   в листе «Знаний» и на телефоне — одна колонка, сводка свёрнута строкой «Сводка ▾».
   ============================================================ */
.aw{container:aw / inline-size;min-width:0}
.aw-cols{display:grid;gap:16px;align-items:start;min-width:0}
.aw-main{min-width:0;container:awm / inline-size}   /* карточки шага 1 считают ширину своей колонки, не всего мастера (1024: колонка 600 px) */
.aw-sum{display:none}
@container aw (min-width:860px){
  .aw-cols{grid-template-columns:minmax(0,1fr) 300px}
  .aw-sum{display:block;position:sticky;top:16px}
  .aw-sum-tg{display:none!important}
}
@media (max-width:1023.98px){.aw-sum{top:96px}}   /* под верхней таблеткой вкладок */
.sheet .aw-main{padding:0;background:none;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;overflow:visible}
.sheet .aw-main::before,.sheet .aw-main::after{display:none}
/* полоса шагов: «1 Что добавить → 2 Заполнить → Готово» */
.aw-steps{list-style:none;margin:0 0 18px;padding:0 0 12px;display:flex;align-items:center;flex-wrap:wrap;gap:4px;border-bottom:1px solid rgba(18,21,28,.08)}
.aw-st{display:flex;align-items:center;gap:4px;min-width:0}
.aw-st+.aw-st::before{content:'→';color:var(--muted2);opacity:.6;font-size:var(--fs-sm);margin:0 4px}
.aw-st>button,.aw-st>.aw-sx{position:relative;display:flex;align-items:center;gap:8px;padding:6px 8px 9px;border:0;border-radius:10px;background:none;font-size:var(--fs-sm);line-height:1.2;color:var(--muted2);white-space:nowrap}
.aw-st>button{color:var(--ink);transition:background var(--dur-fast) var(--ease)}
.aw-st>button:hover{background:var(--chip-bg)}
.aw-sn{width:24px;height:24px;border-radius:50%;flex:none;display:grid;place-items:center;font:600 var(--fs-meta)/1 var(--mono);background:var(--chip-bg);color:var(--ink-2)}
.aw-sn .ic{width:13px;height:13px;stroke-width:2.2}
.aw-st.on .aw-sn{background:var(--pill);color:#fff}
.aw-st.done .aw-sn{background:var(--chip-bg);color:var(--ink)}
.aw-st.on .aw-sl{color:var(--ink);font-weight:600}
.aw-st.on .aw-sx::after{content:'';position:absolute;left:8px;right:8px;bottom:0;height:2px;border-radius:2px;background:var(--ink)}
@container aw (max-width:479.98px){   /* узко: подпись только у текущего шага (у остальных — для читалки) */
  .aw-st:not(.on) .aw-sl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
}
.aw-main .kicker.aw-kind{margin:0 0 6px;color:var(--ink-2)}
.aw-main .panel-title{margin-bottom:4px}
.panel p.aw-lead,.aw-lead{font-size:var(--fs-sm);color:var(--muted)}
/* шаг 1: восемь карточек и «Другое…» */
.aw-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;gap:10px;margin-top:16px}
@container awm (min-width:720px){.aw-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}}
.aw-card{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0;padding:16px 16px 18px;border:0;border-radius:18px;text-align:left;color:var(--ink);cursor:pointer;
  background:#fff;box-shadow:0 1px 2px rgba(20,24,40,.05),var(--panel-shadow);transition:transform .35s var(--spring),box-shadow .35s var(--spring),background .35s var(--spring)}   /* M2: белая карточка с тенью */
.aw-card.hv{transform:translateY(-2px);box-shadow:0 1px 2px rgba(20,24,40,.05),var(--panel-shadow-hv)}
.aw-ic{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;flex:none;margin-bottom:6px;color:var(--ink);background:var(--inset-bg)}
.aw-ic .ic{width:18px;height:18px}
.aw-cn{font-weight:600;font-size:var(--fs-body);line-height:1.2;letter-spacing:-.01em}
.aw-ch{font-size:var(--fs-meta);line-height:1.35;color:var(--muted)}
@container aw (max-width:479.98px){.aw-card{padding:14px 13px 15px}.aw-ic{width:36px;height:36px;margin-bottom:4px}.aw-cn{font-size:var(--fs-sm)}}
.aw-other{margin-top:16px}
.aw-others{display:grid;gap:14px;margin-top:8px}
.aw-og .kicker{margin:0 0 2px}
button.row.aw-o{display:block;padding:10px 0;font-size:var(--fs-sm);line-height:1.4}
.aw-on{font-weight:600}
.aw-oh{color:var(--muted)}
/* шаг 2: форма главного */
.aw-form{display:grid;gap:20px;margin-top:18px;min-width:0}
.aw-hint,.panel p.aw-hint{font-size:var(--fs-meta);line-height:1.4;color:var(--muted)}
.aw-areas,.aw-choice{display:flex;flex-wrap:wrap;gap:8px}
.aw-areas-all{display:none}
@container aw (max-width:599.98px){
  .aw-areas:not(.all) .chip.dom:not(.sug):not(.on){display:none}
  .aw-areas-all{display:inline-block;margin-top:6px}   /* v1d R2: «Все области» не прилипает к чипам (было 2 px) */
}
.aw .chip.dom.sug{box-shadow:inset 0 0 0 1.5px rgba(18,21,28,.35)}
.aw .chip.on{background:var(--pill);box-shadow:none}
.aw .chip.on .l,.aw .chip.on .ic{color:#fff}
.aw-row2{display:grid;gap:16px;min-width:0}
@container aw (min-width:440px){.aw-row2{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}}
.aw-row2.vu{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.aw-unit-in{display:flex;gap:8px;min-width:0}
.aw-unit-in>*{flex:1;min-width:0}
.aw-ref{min-width:0}
.aw-ref-list{margin-top:2px;padding:0 4px;border-radius:14px;background:none}
.aw-ref-list button.row{padding:10px 8px}
.aw-ref-list .none,.aw-ref-list .aw-more-n{padding:10px 8px;font-size:var(--fs-meta)}
.aw-ref-list .val{font:500 var(--fs-meta)/1.3 var(--mono);color:var(--muted2);white-space:nowrap}
.aw-picked{display:flex;align-items:center;gap:12px;padding:10px 10px 10px 14px;border-radius:14px;background:#fff;box-shadow:inset 0 0 0 1.5px var(--ink)}
.aw-picked .who{flex:1;display:grid;gap:2px;min-width:0}
.aw-picked .nm{font-weight:600;font-size:var(--fs-sm);overflow-wrap:anywhere}
.aw-picked .mt{font-size:var(--fs-meta);color:var(--muted)}
.aw-x{width:30px;height:30px;flex:none;border-radius:50%;border:0;display:grid;place-items:center;font-size:18px;line-height:1;color:var(--ink);background:var(--chip-bg)}
.aw-more{border-top:1px solid rgba(18,21,28,.08);padding-top:4px}
.aw-more>summary{list-style:none;display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;padding:10px 0;cursor:pointer}
.aw-more>summary::-webkit-details-marker{display:none}
.aw-mt{font-weight:600;font-size:var(--fs-sm)}
.aw-mh{font-size:var(--fs-meta);color:var(--muted)}
.aw-car{margin-left:auto;align-self:center;color:var(--muted2)}
.aw-car .ic{transition:transform var(--dur) var(--ease)}
.aw-more[open]>summary .aw-car .ic{transform:rotate(180deg)}
.aw-more-in{display:grid;gap:18px;padding:8px 0 4px}
.aw-foot{display:grid;gap:10px;margin-top:22px;padding-top:16px;border-top:1px solid rgba(18,21,28,.08)}
.aw-btns{justify-content:flex-end}
.aw-btns [data-act="aw-back"]{margin-right:auto}
.aw-btns .btn.dark{padding:11px 22px;font-size:var(--fs-sm)}
.aw-need{font-size:var(--fs-meta);color:var(--muted);text-align:right}
.aw-sum-tg{display:flex;align-items:center;gap:10px;width:100%;min-width:0;padding:11px 14px;border:0;border-radius:14px;text-align:left;color:var(--ink);cursor:pointer;background:#fff;box-shadow:inset 0 0 0 1px var(--line)}
.aw-st-l{font:500 var(--fs-cap)/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted2);flex:none}
.aw-st-v{flex:1;min-width:0;font-size:var(--fs-sm);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.aw-sum-tg .aw-car{margin-left:0}
/* шаг 3: готово */
.aw-done{display:grid;justify-items:start;gap:10px;padding:6px 0 4px}
.aw-ok{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;color:#fff;background:var(--pill);box-shadow:var(--shadow-s)}
.aw-ok .ic{width:24px;height:24px;stroke-width:2.2}
.aw-done .panel-title{margin:6px 0 0;font-size:var(--fs-xl)}
.panel p.aw-done-n,.aw-done-n{font-size:var(--fs-body);color:var(--muted)}
.aw-done-n b{color:var(--ink);font-weight:600}
.aw-done .act-row{margin-top:12px}
.aw-done .btn.dark{padding:11px 22px;font-size:var(--fs-sm)}
/* сводка: панель справа и лист на узком экране */
.aw-s-title{font-size:var(--fs-title);letter-spacing:-.02em;margin-bottom:14px}
.aw-sum .kicker,.aw-sum-sheet .kicker{margin-bottom:6px}
.aw-s-type{font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
.panel p.aw-s-type{font-size:var(--fs-cap);color:var(--ink-2)}
.aw-s-name,.panel p.aw-s-name{margin:4px 0 14px;font-size:var(--fs-title);font-weight:600;line-height:1.25;letter-spacing:-.02em;color:var(--ink);overflow-wrap:anywhere}
.aw-s-name.empty,.panel p.aw-s-name.empty{font-weight:500;font-size:var(--fs-sm);color:var(--muted2)}
.aw-sum .kv,.aw-sum-sheet .kv{grid-template-columns:minmax(84px,40%) minmax(0,1fr);margin-bottom:14px}
.aw-s-where,.panel p.aw-s-where{font-size:var(--fs-meta);line-height:1.45;color:var(--muted);padding-top:12px;border-top:1px solid rgba(18,21,28,.08)}
.aw-s-cov{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid rgba(18,21,28,.08)}
.aw-s-cov .fl{font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}
.aw-s-pct{font-weight:600;font-size:var(--fs-sm);white-space:nowrap}
.aw-s-cov.up .aw-s-pct b{color:var(--deep);font-size:var(--fs-title)}
.aw-s-cov .ar{color:var(--muted2);font-weight:500}
.aw-s-fills,.panel p.aw-s-fills{margin-top:6px;font-size:var(--fs-meta);line-height:1.4;color:var(--ink)}
.aw-sum-sheet{display:grid;padding-bottom:8px}
/* переход между шагами — materialize; reduced‑motion — кроссфейд */
.aw-body.mat{--mx:0px;--my:10px;animation:materialize .45s var(--ease) backwards}
@media (prefers-reduced-motion:reduce){
  .aw-body.mat{animation:fade .3s ease backwards}
  .aw-card.hv{transform:none}
  .aw-car .ic{transition:none}
}

/* ---------- B6: форма элемента — подсказки, чипы, пары, сегмент, уверенность, выбор даты, секции инспектора ---------- */
.field .fh{margin:-2px 0 2px;font-size:var(--fs-meta);line-height:1.4;color:var(--muted)}
.field .fh.rel-th{margin:6px 0 0}                         /* C3: подсказка под полем «Как связано» — после списка, не над ним */
.in.sm{padding:8px 12px;border-radius:10px;font-size:var(--fs-sm)}
/* список строк чипами: «+ добавить», Enter добавляет */
.chips-in{display:grid;gap:8px}
.chips-in .token{padding:6px 6px 6px 12px}
.chips-in .tv{overflow-wrap:anywhere}
.in.chip-add{padding:8px 12px;border-radius:99px;font-size:var(--fs-sm)}
/* пары «ключ: значение» */
.kv-list{display:grid;gap:10px}
.kv-fixed{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.kv-cap{display:grid;gap:4px;padding:8px 10px 10px;border-radius:14px;background:none}
.kv-cap .kv-k{font:500 var(--fs-cap)/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}
.kv-cap .in.sm{padding:6px 10px}
.kv-rows{display:grid;gap:8px}
.kv-rows:empty{display:none}
.kv-row{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr) 30px;gap:8px;align-items:center}
.kv-x{width:30px;height:30px;border-radius:50%;border:0;display:grid;place-items:center;font-size:18px;line-height:1;color:var(--ink);background:var(--chip-bg)}
.kv-add{justify-self:start}
/* сегмент‑радиогруппа формы (вид «капли» без движения: выбранный — белая таблетка) */
.fseg{display:inline-flex;flex-wrap:wrap;max-width:100%;gap:2px;padding:4px;border-radius:99px;background:var(--chip-bg);justify-self:start}
.fseg-b{border:0;background:none;padding:8px 14px;border-radius:99px;font-size:var(--fs-meta);font-weight:500;color:var(--muted);white-space:nowrap;cursor:pointer;
  transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
.fseg-b.on{color:#fff;background:var(--pill);box-shadow:0 4px 10px -6px rgba(20,24,40,.5)}
.fseg-b:focus-visible{outline-offset:-2px}
/* уверенность: три слова и «точнее» */
.conf-ed{display:grid;gap:6px}
.cf-more>summary{list-style:none;display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:var(--fs-meta);font-weight:500;color:var(--ink);text-decoration:underline;text-underline-offset:3px;padding:2px 0}
.cf-more>summary::-webkit-details-marker{display:none}
.cf-fine{display:flex;align-items:center;gap:12px;padding:8px 2px 2px}
.cf-range{flex:1;min-width:0;accent-color:var(--pill)}
.cf-pct{font:500 var(--fs-meta)/1 var(--mono);color:var(--ink);min-width:5ch;text-align:right}
.cf-read{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap}
.cf-w{font-weight:600}
/* один выбор чипами (область) */
.choice{display:flex;flex-wrap:wrap;gap:8px}
.choice .chip.dom .ic{color:var(--ink-2)}
.choice .chip.on,.inspector .choice .chip.on{background:var(--pill);box-shadow:none}
.choice .chip.on .l,.choice .chip.on .ic{color:#fff}
.choice-box{display:grid;gap:8px}
.choice-cur{align-items:center;gap:12px}
.choice-cur .chip{cursor:default}
/* поле даты и календарь */
.dp{position:relative;min-width:0}
.dp .in.dp-in{padding-right:44px}
.dp-btn{position:absolute;right:4px;top:50%;translate:0 -50%;width:36px;height:36px;border-radius:10px;border:0;background:none;color:var(--muted2);display:grid;place-items:center;cursor:pointer}
.dp-btn .ic{width:18px;height:18px}
.dp-btn:hover{color:var(--ink)}
.dp-pop{position:fixed;z-index:60;width:312px;padding:12px;border-radius:22px;--mx:0px;--my:-8px;animation:materialize var(--dur) var(--ease);
  background:var(--pop-bg);-webkit-backdrop-filter:blur(20px) saturate(110%);backdrop-filter:blur(20px) saturate(110%);box-shadow:var(--pop-shadow)}
.dp-pop.out{animation:dematerialize .2s var(--ease) forwards;pointer-events:none}
.dp-cal{display:grid;gap:8px}
.dp-head{display:flex;align-items:center;justify-content:space-between;gap:6px}
.dp-nav{width:34px;height:34px;flex:none;border-radius:50%;border:0;display:grid;place-items:center;color:var(--ink);background:var(--chip-bg);cursor:pointer}
.dp-nav:hover{background:rgba(18,21,28,.1)}
.dp-title{flex:1;min-width:0;border:0;background:none;padding:6px 8px;border-radius:10px;font-weight:600;font-size:var(--fs-sm);color:var(--ink);cursor:pointer}
.dp-title:hover{background:var(--chip-bg)}
.dp-body{min-height:252px}
.dp-grid{display:grid;gap:2px}
.dp-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;justify-items:center}
.dp-w{font:500 var(--fs-cap)/24px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted2)}
.dp-d{width:36px;height:34px;border-radius:12px;border:0;background:none;font:500 var(--fs-sm)/1 var(--font);font-variant-numeric:tabular-nums;color:var(--ink);cursor:pointer;
  transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}
.dp-d:hover{background:var(--chip-bg)}
.dp-d.out{color:var(--muted2);opacity:.45}
.dp-d.today{box-shadow:inset 0 0 0 1.5px var(--ink)}
.dp-d.sel{background:var(--pill);color:#fff;opacity:1;box-shadow:none}
.dp-d[aria-disabled="true"]{opacity:.25;cursor:default;background:none}
.dp-d:focus-visible{outline-offset:1px}
.dp-months{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding-top:6px}
.dp-m{height:44px;border-radius:12px;border:0;background:var(--chip-bg);font-size:var(--fs-sm);color:var(--ink);cursor:pointer;transition:background var(--dur-fast) var(--ease)}
.dp-m:hover{background:rgba(18,21,28,.1)}
.dp-m.today{box-shadow:inset 0 0 0 1.5px var(--ink)}
.dp-m.sel{background:var(--pill);color:#fff}
.dp-quick{display:flex;flex-wrap:wrap;gap:6px;padding-top:8px;border-top:1px solid rgba(18,21,28,.08)}
.dp-quick .chip.sm{padding:7px 10px;border-radius:99px}
.dp-quick .chip .l{font:500 var(--fs-meta)/1 var(--font);letter-spacing:0;text-transform:none;color:var(--ink)}
.dp-quick [data-q="clear"]{margin-left:auto;background:none;box-shadow:none}
.dp-quick [data-q="clear"] .l{color:var(--muted)}
.field.bare>.fl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.dp-sheet .dp-cal{max-width:420px;margin:0 auto;width:100%}
.dp-sheet .dp-d{width:44px;height:42px}
.dp-sheet .dp-body{min-height:300px}
/* инспектор: шапка и секции */
.insp-chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.tag.dom{color:var(--ink)}
.st{display:inline-flex;align-items:center;gap:7px;padding:4px 4px 4px 2px;font-size:var(--fs-meta);color:var(--ink)}
.st i{width:7px;height:7px;border-radius:50%;flex:none;background:var(--mid)}
.st.st-risk i{background:var(--warm);box-shadow:0 0 8px rgba(255,138,91,.5)}
.st.st-watch i{background:var(--violet)}
.st.st-rejected i,.st.st-missed i,.st.st-hypothesis i,.st.st-open i,.st.st-planned i{background:rgba(18,21,28,.28)}
.insp-body,.insp-tail{display:grid;gap:0}
.isec{display:grid;gap:10px;padding:14px 0;border-top:1px solid rgba(18,21,28,.08);min-width:0}
.insp-body>.isec:first-child,.insp-body>.form-err+.isec{border-top:0;padding-top:4px}
.isec-t{font-size:var(--fs-sm);font-weight:600;letter-spacing:-.01em;line-height:1.3;margin:0}
.isec-t.sub{font-size:var(--fs-meta)}
.isec-h,.panel p.isec-h{margin:-6px 0 0;font-size:var(--fs-meta);line-height:1.4;color:var(--muted)}
.isec .desc{font-size:var(--fs-sm);line-height:1.5;color:var(--ink)}
.isec .iv,.isec .notes{font-size:var(--fs-sm);line-height:1.5;white-space:pre-wrap}
details.isec.fold{gap:0;padding:4px 0}
details.isec.fold>summary{list-style:none;display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 10px;padding:10px 0;cursor:pointer}
details.isec.fold>summary::-webkit-details-marker{display:none}
details.isec.fold>summary .isec-h{margin:0}
details.isec.fold>summary .car{margin-left:auto;align-self:center;color:var(--muted2)}
details.isec.fold>summary .car .ic{transition:transform var(--dur) var(--ease)}
details.isec.fold[open]>summary .car .ic{transform:rotate(180deg)}
.fold-in{display:grid;gap:18px;padding:4px 0 10px}
.more-sec{display:grid;gap:10px}
.iv-dates{display:flex;align-items:flex-end;gap:8px;min-width:0}
.iv-dates[hidden]{display:none}
.iv-dates>.field{flex:1;min-width:0}
.iv-dates>.dash{padding-bottom:12px;color:var(--muted2)}
.vchips{display:flex;flex-wrap:wrap;gap:6px}
.vchip{display:inline-flex;align-items:baseline;gap:4px;padding:5px 10px;border-radius:12px;background:var(--chip-bg);font-size:var(--fs-meta);line-height:1.35;overflow-wrap:anywhere}
.vchip.kvp b{font-weight:500;color:var(--muted2)}
.vchip.kvp b::after{content:':'}
.insp-svc{display:flex;flex-wrap:wrap;gap:4px 12px;padding:12px 0 2px;border-top:1px solid rgba(18,21,28,.08);font:500 var(--fs-cap)/1.5 var(--mono);letter-spacing:.04em;color:var(--muted2)}
.insp-svc .id{opacity:.7}
@media (max-width:420px){.iv-dates{flex-direction:column;align-items:stretch}.iv-dates>.dash{display:none}}
@media (prefers-reduced-motion:reduce){
  .dp-pop{animation:fade .25s ease}.dp-pop.out{animation:fadeout .2s ease forwards}
  details.isec.fold>summary .car .ic{transition:none}
}
.inspector{gap:6px}

/* ============================================================
   B9 — «План»: календарь неделя/месяц, свои события и напоминания
   ============================================================ */
/* цвет категории — точка (.cd) и тонкая заливка полосы; тёплый — только «просрочено» */
:is(.ev,.ev-mini,.cm-dot,.ag-r,.pc,.plan-legend li){--cc:#8A909B}
:is(.ev,.ev-mini,.cm-dot,.ag-r,.pc,.plan-legend li)[data-cat="goal"]{--cc:var(--deep)}
:is(.ev,.ev-mini,.cm-dot,.ag-r,.pc,.plan-legend li)[data-cat="prediction"]{--cc:var(--mid)}
:is(.ev,.ev-mini,.cm-dot,.ag-r,.pc,.plan-legend li)[data-cat="action"]{--cc:#5A78A0}
:is(.ev,.ev-mini,.cm-dot,.ag-r,.pc,.plan-legend li)[data-cat="reminder"]{--cc:var(--deep)}
:is(.ev,.ev-mini,.cm-dot,.ag-r,.pc,.plan-legend li)[data-cat="constraint"]{--cc:#9AA0AA}
.cd{width:8px;height:8px;border-radius:50%;flex:none;background:var(--cc)}
.cd.bell{width:14px;height:14px;border-radius:0;background:none;color:var(--cc);display:grid;place-items:center}
.cd.bell .ic{width:13px;height:13px;stroke-width:1.7}
[data-cat="constraint"]>.cd{background:none;box-shadow:inset 0 0 0 1.5px var(--cc)}
.over>.cd{background:var(--warm);box-shadow:0 0 8px rgba(255,138,91,.55)}
.over>.cd.bell{background:none;color:var(--warm);box-shadow:none}

/* шапка */
.screen.plan{gap:14px}
.plan-head{display:grid;gap:12px}
.ph-a{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.screen.plan .ph-a h1{margin:0}
.ph-b{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.ph-nav{display:flex;align-items:center;gap:12px;min-width:0;flex-wrap:wrap}   /* v1d R2: ‹ › и «Сегодня» — 12 px (было 6) */
.pl-nav{width:38px;height:38px;flex:none;border-radius:50%;border:0;display:grid;place-items:center;color:var(--ink);cursor:pointer;
  background:#fff;box-shadow:inset 0 0 0 1px var(--line);transition:transform .35s var(--spring),box-shadow .35s var(--spring)}
.pl-nav.hv{transform:translateY(-1px)}
.plan-title{font-size:var(--fs-title);line-height:1.2;letter-spacing:-.02em;margin-left:4px;white-space:nowrap}
.plan-add .ic{width:14px;height:14px;stroke-width:2}
.plan-legend{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 18px;font-size:var(--fs-meta);color:var(--muted)}
.plan-legend li{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.plan-body{padding:14px 14px 10px;min-width:0}
.plan-hint{font-size:var(--fs-sm);margin:-4px 0 0}
.plan-hint .link{display:inline;font-size:var(--fs-sm);padding:0}
.plan-fab{display:none}

/* полоса пункта */
.ev{display:flex;align-items:center;gap:6px;min-width:0;width:100%;border:0;text-align:left;padding:5px 8px;border-radius:10px;font-size:var(--fs-meta);line-height:1.25;color:var(--ink);cursor:pointer;
  background:#fff;box-shadow:inset 0 0 0 1px var(--line-soft),0 4px 12px -8px rgba(20,24,40,.22);   /* M2: белая полоса, категория — точкой */
  transition:transform .35s var(--spring),box-shadow .35s var(--spring)}
.ev .en{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.ev .et{font:500 var(--fs-cap)/1.25 var(--mono);color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.ev .eo{font:500 var(--fs-cap)/1.2 var(--mono);letter-spacing:.04em;color:var(--ink);white-space:nowrap}
.ev.over{background:color-mix(in srgb,var(--warm) 12%,#fff);flex-wrap:wrap;row-gap:1px}
.ev.over .eo{flex-basis:100%;padding-left:14px}
.ev.done .en{color:var(--muted2)}
.ev.hv{transform:translateY(-1px);box-shadow:inset 0 0 0 1px var(--line-soft),0 10px 22px -12px rgba(20,24,40,.32)}
.ev:focus-visible{outline:1.5px solid var(--ink);outline-offset:1px}

/* неделя (стол) */
.cw{--lab:54px;display:grid;min-width:0}
.cw-head,.cw-all{display:grid;grid-template-columns:var(--lab) repeat(7,minmax(0,1fr))}
.cw-dh{border:0;background:none;display:flex;align-items:center;justify-content:center;gap:7px;padding:4px 0 10px;border-radius:14px;cursor:pointer;color:var(--muted)}
.cw-dh .wd{font:500 var(--fs-cap)/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}
.cw-dh .dn{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;font-size:var(--fs-title);font-weight:600;letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums}
.cw-dh.today .dn{box-shadow:inset 0 0 0 1.5px var(--ink)}   /* M2: сегодня — тёмное кольцо */
.cw-dh:not(.today):hover .dn{background:var(--chip-bg)}
.cw-all{border-top:1px solid rgba(18,21,28,.08);border-bottom:1px solid rgba(18,21,28,.1)}
.cw-lab{font:500 var(--fs-cap)/1.25 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted2);padding:10px 8px 0 0;text-align:right}
.cw-ac{display:grid;gap:3px;align-content:start;padding:8px 3px 5px;min-height:40px;min-width:0;border-left:1px solid rgba(18,21,28,.06)}
.cw-ac.today,.cw-col.today{background-color:rgba(18,21,28,.022)}
.cw-more{border:0;background:none;padding:2px 6px;text-align:left;font:500 var(--fs-cap)/1.3 var(--mono);color:var(--ink);cursor:pointer}
.cw-scroll{max-height:max(320px,calc(100dvh - 380px));overflow-y:auto;overscroll-behavior:contain;padding-top:6px}
.cw-grid{position:relative;display:grid;grid-template-columns:var(--lab) repeat(7,minmax(0,1fr))}
.cw-hours{position:relative}
.cw-hours span{position:absolute;right:8px;transform:translateY(-50%);font:500 var(--fs-cap)/1 var(--mono);color:var(--muted2);font-variant-numeric:tabular-nums}
.cw-col{position:relative;min-width:0;border-left:1px solid rgba(18,21,28,.06);cursor:copy;
  background-image:repeating-linear-gradient(180deg,rgba(18,21,28,.075) 0 1px,transparent 1px var(--hp))}
.cw-col .ev{position:absolute;display:grid;grid-template-columns:auto minmax(0,1fr);align-content:start;column-gap:6px;row-gap:1px;padding:5px 7px 5px 8px;border-radius:10px;overflow:hidden;z-index:1}
.cw-col .ev .et,.cw-col .ev .eo{grid-column:1/-1}
.cw-col .ev.short{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;padding-top:3px;padding-bottom:3px}
.cw-col .ev.short .et{grid-column:auto}
.cw-now{position:absolute;left:-1px;right:0;height:2px;margin-top:-1px;background:var(--warm);border-radius:2px;pointer-events:none;z-index:2}
.cw-now::before{content:'';position:absolute;left:-4px;top:-3px;width:8px;height:8px;border-radius:50%;background:var(--warm)}

/* месяц */
.cm{display:grid;gap:4px;min-width:0}
.cm-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cm-wd span{font:500 var(--fs-cap)/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2);padding:4px 8px 6px}
.cm-d{display:flex;flex-direction:column;align-items:stretch;gap:3px;min-width:0;min-height:90px;padding:6px;border:0;border-radius:14px;text-align:left;color:var(--ink);cursor:pointer;
  background:#fff;box-shadow:inset 0 0 0 1px var(--line-soft);transition:transform .35s var(--spring),background .35s var(--spring)}   /* M2: сетка месяца на белом */
.cm-d.out{opacity:.48}
.cm-d.hv{background:#F7F8FA;transform:translateY(-1px)}
.cm-n{width:28px;height:28px;flex:none;display:grid;place-items:center;border-radius:50%;font-size:var(--fs-sm);font-weight:600;font-variant-numeric:tabular-nums}
.cm-d.today .cm-n{box-shadow:inset 0 0 0 1.5px var(--ink)}
.cm-d.sel .cm-n{background:var(--pill);color:#fff;box-shadow:none}
.cm-evs{display:grid;gap:2px;min-width:0}
.ev-mini{display:flex;align-items:center;gap:5px;min-width:0;padding:2px 5px;border-radius:6px;font-size:var(--fs-cap);line-height:1.35;background:#fff;box-shadow:inset 0 0 0 1px var(--line-soft)}
.ev-mini .en{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.ev-mini .cd{width:6px;height:6px}
.ev-mini .cd.bell{width:11px;height:11px}.ev-mini .cd.bell .ic{width:10px;height:10px}
.ev-mini.over{background:color-mix(in srgb,var(--warm) 12%,#fff)}
.ev-mini.done .en{color:var(--muted2)}
.cm-more{font:500 var(--fs-cap)/1.2 var(--mono);color:var(--muted2);padding-left:5px}
.cm.compact .cm-row{gap:2px}
.cm.compact .cm-wd span{text-align:center;padding:4px 0}
.cm.compact .cm-d{min-height:50px;align-items:center;gap:3px;padding:4px 0 5px;border-radius:12px;background:none;box-shadow:none}
.cm.compact .cm-d.hv{background:var(--chip-bg)}
.cm.compact .cm-evs{display:flex;gap:3px;justify-content:center;align-items:center}
.cm-dot{width:5px;height:5px;border-radius:50%;background:var(--cc)}
.cm-dot.over{background:var(--warm)}
.cm.compact .cm-more{font-size:9px;padding:0}

/* телефон: полоса недели и список дня */
.plan-ph{display:grid;gap:10px;min-width:0}
.cs{display:flex;gap:2px;justify-content:space-between;overflow-x:auto;scrollbar-width:none;overscroll-behavior-x:contain;padding:2px 0 6px}
.cs::-webkit-scrollbar{display:none}
.cs-d{flex:1 0 42px;display:grid;justify-items:center;gap:5px;border:0;background:none;padding:4px 0;border-radius:16px;cursor:pointer}
.cs-d .wd{font:500 var(--fs-cap)/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted2)}
.cs-d .dn{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-size:var(--fs-body);font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;
  background:#fff;box-shadow:inset 0 0 0 1px var(--line-soft);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}
.cs-d.today .dn{box-shadow:inset 0 0 0 1.5px var(--ink)}
.cs-d.sel .dn{background:var(--pill);color:#fff;box-shadow:0 8px 16px -8px rgba(20,24,40,.6)}
.cs-dot{width:5px;height:5px;border-radius:50%}
.cs-dot.on{background:var(--deep);opacity:.5}
.cs-dot.over{background:var(--warm);opacity:1}
.ag{display:grid;gap:4px;min-width:0}
.ag-h{font-size:var(--fs-sm);font-weight:600;letter-spacing:-.01em;margin:2px 0 0}
button.row.ag-r{display:grid;grid-template-columns:50px auto minmax(0,1fr);align-items:center;gap:10px;padding:11px 2px;border-top:1px solid rgba(18,21,28,.07)}
.ag-list .ag-r:first-child{border-top:0}
.ag-t{display:grid;gap:1px;font:500 var(--fs-meta)/1.25 var(--mono);color:var(--muted2);font-variant-numeric:tabular-nums}
.ag-t b{color:var(--ink);font-weight:600}
.ag-x{display:grid;gap:2px;min-width:0}
.ag-k{font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--muted2)}
.ag-over{font-style:normal;color:var(--ink)}
.ag-n{font-size:var(--fs-sm);line-height:1.35;overflow-wrap:anywhere}
.ag-r.done .ag-n{color:var(--muted2)}
.ag-none{padding:8px 0;font-size:var(--fs-sm)}
.ag-none .link{display:inline}

/* карточка пункта, лист дня */
.pc{display:grid;gap:10px}
.pc-cat{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}
.pc-cat em,.pc-done{font-style:normal;padding:3px 8px;border-radius:99px;color:var(--ink);background:var(--chip-bg)}
.pc-cat.over em{background:rgba(255,138,91,.22)}
.pc-cat.over .cd{background:var(--warm);box-shadow:0 0 8px rgba(255,138,91,.55)}
.pc-when{font-size:var(--fs-title);font-weight:600;letter-spacing:-.02em;line-height:1.25}
.pc-rem{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);color:var(--muted)}
.pc-rem .ic{color:var(--ink-2)}
.pc-l{font-size:var(--fs-sm);line-height:1.4}
div.pc-l{display:grid;gap:6px}
.pc-l b{font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}
.pc-notes{font-size:var(--fs-sm);color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere}
.pc-type{font-size:var(--fs-meta)}
.pd{display:grid;gap:12px}
.pd-acts .btn .ic{width:13px;height:13px;stroke-width:2}

/* диалог «Новое событие» */
.pn{gap:16px}
.pn .in.pn-name{font-size:var(--fs-title);font-weight:600;letter-spacing:-.01em}
.pn-when{display:grid;gap:10px}
.pn-times{display:flex;align-items:center;gap:10px}
.tcap{flex:1;min-width:0;display:grid;gap:3px;padding:10px 14px;border-radius:18px;cursor:text;
  background:#fff;box-shadow:inset 0 0 0 1px var(--line)}
.tcap:focus-within{box-shadow:inset 0 0 0 1.5px var(--ink)}
.tc-l{font:500 var(--fs-cap)/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2)}
.tc-in{width:100%;min-width:0;border:0;background:none;padding:0;font:600 var(--fs-xl)/1.15 var(--font);letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums}
.tc-in:focus{outline:none}
.tc-dash{color:var(--muted2);flex:none}
.pn-err:not([hidden]){display:flex;align-items:center;gap:8px;font-size:var(--fs-meta);color:var(--muted)}
.pn-err::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--warm);flex:none}
.pn-link .tokens{margin-bottom:2px}
.pn-hits .row.pn-hit{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 4px}
.pn-hit .nm{font-size:var(--fs-sm);font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pn-hit .ty{font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted2);white-space:nowrap}
.pn-foot{display:flex;justify-content:flex-end;gap:10px;padding-top:4px}
/* поле «дата и время» (инспектор события) */
.dt-row{display:flex;gap:8px;align-items:stretch}
.dt-row .dp{flex:1}
.in.tm-in{width:auto;min-width:112px;font-variant-numeric:tabular-nums}

/* баннер напоминания — вверху по центру, как на iPhone */
.rem-banners{position:fixed;top:calc(12px + env(safe-area-inset-top));left:50%;transform:translateX(-50%);z-index:70;display:grid;gap:8px;width:min(460px,calc(100% - 24px));pointer-events:none}
.rem{pointer-events:auto;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 12px 12px 14px;border-radius:22px;
  background:var(--pop-bg);-webkit-backdrop-filter:blur(20px) saturate(110%);backdrop-filter:blur(20px) saturate(110%);box-shadow:var(--pop-shadow);animation:remIn .45s var(--ease)}
.rem.out{animation:remOut .3s var(--ease) forwards;pointer-events:none}
.rem-ic{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:var(--chip-bg);color:var(--ink)}
.rem-ic .ic{width:18px;height:18px}
.rem-t{display:grid;gap:1px;min-width:0}
.rem-t b{font-size:var(--fs-sm);font-weight:600}
.rem-t span{font-size:var(--fs-sm);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rem-a{display:flex;gap:6px}
@media (max-width:420px){.rem{grid-template-columns:auto minmax(0,1fr)}.rem-a{grid-column:1/-1;justify-content:flex-end}}
@keyframes remIn{from{opacity:0;transform:translateY(-18px) scale(.97);filter:blur(6px)}}
@keyframes remOut{to{opacity:0;transform:translateY(-18px) scale(.97);filter:blur(6px)}}

/* «Ближайшее» на «Сейчас»: «План ›» и просроченные */
.upcoming .up-plan{font-size:var(--fs-meta);padding:2px 0}
.row.up.over .ud{background:rgba(255,138,91,.2);color:var(--ink)}
.row.up .ut b em{font-style:normal;color:var(--ink)}
.row.up.over .ut b em::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--warm);margin:0 5px 1px 2px;vertical-align:middle}

/* «Настройки»: уведомления */
.set-nt .nt-st{display:flex;align-items:center;gap:8px;margin:10px 0;font-size:var(--fs-meta);color:var(--muted)}
.set-nt .nt-st::before{content:'';width:7px;height:7px;border-radius:50%;flex:none;background:rgba(18,21,28,.25)}
.set-nt .nt-st[data-state="on"]::before{background:var(--mid)}
.set-nt .btn{justify-self:start}

/* телефон: плавающая «+», заголовок диапазона строкой, легенда — прокрутка вбок */
@media (max-width:759.98px){
  .screen.plan{padding-bottom:72px}
  .plan-add{display:none}
  .plan-title{order:-1;flex-basis:100%;margin:0 0 2px;font-size:var(--fs-sm);font-weight:600}
  .ph-nav{width:100%}
  .ph-nav [data-act="plan-today"]{margin-left:auto}
  .plan-legend{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;gap:6px 14px;margin:0 -16px;padding:0 16px;
    -webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 40px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 40px),transparent)}   /* B10: край ленты гаснет — видно, что листается */
  .plan-legend::-webkit-scrollbar{display:none}
  .plan-body{padding:12px}
  .plan-fab{display:grid;place-items:center;position:fixed;right:16px;bottom:calc(var(--tab-h) + 24px + env(safe-area-inset-bottom));z-index:31;width:56px;height:56px;border:0;border-radius:50%;cursor:pointer;color:#fff;
    background:var(--pill);box-shadow:0 14px 28px -12px rgba(20,24,40,.6);transition:transform .35s var(--spring)}
  .plan-fab .ic{width:22px;height:22px;stroke-width:2}
  .pn-times{gap:6px}
  .tc-in{font-size:var(--fs-title)}
}
@media (min-width:760px) and (max-width:1023.98px){.cw{--lab:44px}.cw-dh{flex-direction:column;gap:3px}.cm-d{min-height:84px}}

/* рейл на низком окне стола (1024×600): кнопки ниже и плотнее; ещё ниже (< ~500 px) — разделы прокручиваются в .rail-sc (C2) */
@media (min-width:1024px) and (max-height:640px){.tabs.rail{padding:8px}.tabs.rail .rail-sc{gap:4px}.tabs.rail button{height:40px}.tabs.rail .rail-add{margin-bottom:10px}.tabs.rail .rail-tg{margin-top:14px}.tabs.rail .rail-tg::before{top:-8px}}

@media (prefers-reduced-motion:reduce){
  .ev.hv,.cm-d.hv,.pl-nav.hv{transform:none}
  .rem{animation:fade .25s ease}.rem.out{animation:fadeout .2s ease forwards}
}
.cw-col .ev.short .et{display:none}                 /* короткая полоса: время видно по месту в сетке и в подсказке */
.cw-col .ev.tall .en{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:break-word;hyphens:auto}   /* две строки имени — только у полосы от ~1,5 ч */
.cw-col .ev.lane .et{display:none}                  /* полосы рядом (пересечение по времени) — только точка и имя */

/* ============================================================
   M2b — глубина, вариант C «слои и углубления» (15.10.2026; эталон docs/superpowers/specs/2026-10-15-material-depth-variants.html?depth=C).
   Слои снизу вверх: фон → плита → полосы рейла и шапки (светлее) → тонированная подложка .main (--main-bg) → белые панели с волосяным
   контуром (--panel-shadow). R3b‑1 (16.10): колодцев внутри панелей больше нет — карточки со своей тенью, списки на волосяных разделителях,
   таблицы и сетка «Плана» белые (раздел «R3b‑1» в конце). На подложке серые пилюли сливаются — там сегменты и тихие кнопки белые с контуром.
   ============================================================ */
/* полосы: колонка рейла (≥ 1024; ::before у .app — сама плита) и строка шапки (≥ 760) */
@media (min-width:1024px){
  .app::after{content:"";position:absolute;z-index:-1;top:12px;bottom:12px;left:8px;width:calc(var(--rail-w) + 4px);border-radius:30px;pointer-events:none;
    background:var(--strip-rail);box-shadow:inset 0 0 0 1px rgba(255,255,255,.75)}
  .rail-anim .app::after{transition:width var(--dur) var(--ease)}
}
@media (min-width:760px){
  /* шапка — светлая строка на подложке, на 14 px шире экрана с каждой стороны (не шире 1200 + 28); содержимое — по левому краю экрана */
  .head{margin:-8px calc(50% - min(50% + 14px, 614px)) 0;padding:10px 12px 10px 14px;border-radius:24px;background:var(--strip-head);
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.8),0 1px 0 rgba(18,21,28,.06)}
}
/* телефон: плиты нет — подложка --main-bg на всю страницу (под ней фон и линии почти не видны), панели белые с контуром */
@media (max-width:759.98px){
  .app::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:var(--main-bg)}
}

/* поиск и RU/EN в шапке — белые с волосяным контуром */
@media (min-width:1024px){.hsearch .in{box-shadow:var(--field-ring)}}
.seg.lang{background:#fff;box-shadow:var(--field-ring)}
.seg.lang .thumb{background:#fff;box-shadow:0 2px 8px -4px rgba(20,24,40,.3),inset 0 0 0 1px rgba(18,21,28,.08)}

/* сегменты и тихие кнопки: на подложке — белые с контуром; на бумаге (панель, лист, поповер) — заливка --chip-bg (это контролы, не контейнеры;
   R3b‑1: прежде сегменты на бумаге были на --well-bg) */
.seg{background:#fff;box-shadow:var(--field-ring)}
.btn.quiet{background:#fff;box-shadow:var(--field-ring)}
.btn.quiet.hv{background:#fff;box-shadow:inset 0 0 0 1px rgba(18,21,28,.2),0 10px 22px -14px rgba(20,24,40,.4)}
:is(.glass,.sheet,.pop) :is(.seg:not(.lang),.fseg){background:var(--chip-bg);box-shadow:none}
:is(.glass,.sheet,.pop) .btn.quiet{background:var(--chip-bg);box-shadow:none}
:is(.glass,.sheet,.pop) .btn.quiet.hv{background:rgba(18,21,28,.09);box-shadow:none}

/* R3b‑1 (16.10): колодцев больше нет — списки строк лежат прямо на панели (строки разделены волосяной линией --line-soft, первая без
   верхней линии, отступы строк прежние), карточки — со своей тенью (раздел «R3b‑1» в конце файла), таблицы и сетка «Плана» — белые
   с волосяной сеткой. Прежний список колодцев M2b — те же селекторы, теперь без заливки и полей. */
:where(.goals-list,.att-list,.up-list,.dec-mini,.coverage .gaps,
  .mp-list,.tree,
  .results .tbl,.goals-res .rows,.cons-res .rows,.ex-list,
  .dec-list .rows,.alts,.dc-list,
  .lgroup .rows,.list .rows,.res-live .rows,
  .props:not(.compact) .prop-list,.group-rows,.pins-list,
  .plan-body .cw,.plan-body .cm,.ag-list){background:none;padding:0}
:is(.att-list,.coverage .gaps,.mp-list,.tree,.goals-res .rows,.cons-res .rows,.ex-list,.dec-list .rows,.dc-list,.lgroup .rows,.list .rows,.res-live .rows,
  .props:not(.compact) .prop-list,.group-rows,.pins-list,.ag-list)>:is(.row,li,.lrow,.prop-row,.ag-r){border-top-color:var(--line-soft)}
button.row.gring{gap:10px}
.gr{width:44px;height:44px}
.gring .gm{column-gap:8px}
.gring .gs{gap:5px;letter-spacing:.04em}
/* «Понимание бизнеса»: кольцо и заголовок строкой, пробелы — списком во всю ширину панели (в колонке справа от кольца строки переносились) */
.coverage .ring-box{grid-row:2}
.coverage .cov-top .panel-title{grid-row:2;align-self:center}
.coverage .gaps{grid-column:1/-1;margin-top:12px}
.coverage .link{grid-column:1/-1}
.mp-list{margin:0}

/* «Что если» — таблица результата: белая, волосяная сетка --line-soft, шапка — текст --kicker без заливки; на телефоне прокрутка вбок,
   липкий столбец — белый (#fff, градиент к прозрачному у правого края — базовое правило таблицы) */
.results th,.results td{border-top-color:var(--line-soft)}
.results thead th{color:var(--kicker);border-bottom:1px solid var(--line-soft)}
.results tbody tr:first-child>*{border-top:0}

/* «План» — сетка недели и месяца прямо на панели: «Весь день» и часы — белые, волосяная сетка; месяц — белые клетки с волосяным контуром */
.plan-body .cw-all{border-top-color:var(--line-soft);border-bottom-color:var(--line-soft)}
.cw-dh:not(.today):hover .dn{background:var(--chip-bg)}

/* ============================================================
   A1 (v1c) — маскот Reflex: components/mascot.js (SVG из знака логотипа, 10 состояний), угол оболочки .mascot-dock, «Настройки → Reflex»
   Суставы .j стоят в своей точке опоры (translate‑атрибут родителя) — transform-origin 0 0; поза — свойство rotate (пружина --ease),
   движение — transform‑анимации поверх. Состояние — класс .is-<state> на .mascot. reduced‑motion — позы без движения, кроссфейд 200 мс (JS).
   ============================================================ */
.mascot{--m-ga:#FFD9A8;--m-gb:#FFB46B;--m-go:.92;position:relative;width:var(--m-w,88px);aspect-ratio:1;flex:none;line-height:1.35}
.mascot .m-svg{display:block;width:100%;height:100%;overflow:visible}
.mascot .m-ghost{position:absolute;inset:0;pointer-events:none}
.mascot .j,.mascot .m-lid,.mascot .fx-bar,.mascot .fx-sp,.mascot .fx-z0,.mascot .fx-z1{transform-box:view-box;transform-origin:0 0}
.mascot .j{transition:rotate .6s var(--ease),translate .6s var(--ease),scale .6s var(--ease),opacity .3s ease}
.mascot .m-shadow{transform-box:fill-box;transform-origin:50% 50%}
.mascot .m-g0,.mascot .m-g1{stop-color:var(--m-ga);transition:stop-color .4s ease}
.mascot .m-g2{stop-color:var(--m-gb);transition:stop-color .4s ease}
.mascot .m-glow{opacity:var(--m-go);transition:opacity .4s ease}
.mascot .m-glow-halo{transition:stroke-width .4s ease}
.mascot .m-sole,.mascot .m-rim{transition:opacity .4s ease}
.mascot .m-sole-glow{stroke:var(--m-gb);transition:stroke .4s ease,opacity .4s ease}
.mascot .m-face{rotate:calc(var(--m-tilt,0deg) + var(--m-lr,0deg))}
.mascot .m-look{translate:var(--m-lx,0px) var(--m-ly,0px);transition:translate .35s var(--ease)}
.mascot .m-eyes{transition:translate .5s var(--ease)}
.mascot .m-lid{transition:scale .09s ease}
.mascot.blink .m-lid{scale:1 .1}
.mascot .e-wide,.mascot .e-shut,.mascot .e-firm,.mascot .m-brows,.mascot .hf,.mascot .ht,
.mascot .fx-q,.mascot .fx-panel,.mascot .fx-sparks,.mascot .fx-z{opacity:0}
.mascot :is(.e-open,.e-wide,.e-shut,.e-firm,.m-brows,.hp,.hf,.ht,.fx-sparks,.fx-z){transition:opacity .22s ease}
/* idle — поза покоя: передняя рука чуть вперёд, задняя висит; дыхание 3 с, голова покачивается ±2° */
.mascot .aR-s{rotate:-16deg}.mascot .aR-e{rotate:-14deg}
.mascot .aL-s{rotate:18deg}.mascot .aL-e{rotate:-24deg}
@keyframes m-breath{50%{transform:scale(1.015)}}
@keyframes m-breath-slow{50%{transform:scale(1.022)}}
@keyframes m-sway{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}
@keyframes m-nod{50%{transform:rotate(2.5deg)}}
@keyframes m-float{50%{transform:translate(0,-6px)}}
.mascot:is(.is-idle,.is-wave,.is-listen,.is-think,.is-work,.is-puzzled,.is-alert,.is-talk) .m-torso{animation:m-breath 3s ease-in-out infinite}
.mascot.is-idle .m-face{animation:m-sway 6.5s ease-in-out infinite}
/* wave — рука вверх, кисть машет 3 раза (потом JS возвращает idle) */
@keyframes m-wave{50%{transform:rotate(-38deg)}}
.mascot.is-wave{--m-tilt:-3deg}
.mascot.is-wave .aR-s{rotate:-148deg}.mascot.is-wave .aR-e{rotate:-6deg;animation:m-wave .62s ease-in-out .3s 3}.mascot.is-wave .aR-h{rotate:-10deg}
/* listen — корпус к стороне (data-lean), голова навстречу, глаза шире */
.mascot.is-listen{--m-tilt:5deg}
.mascot.is-listen[data-lean="left"]{--m-tilt:-5deg}
.mascot.is-listen .m-torso{rotate:4deg}
.mascot.is-listen[data-lean="left"] .m-torso{rotate:-4deg}
.mascot.is-listen .m-face{animation:m-nod 2.4s ease-in-out infinite}
.mascot.is-listen .aR-s{rotate:-26deg}.mascot.is-listen .aR-e{rotate:-36deg}
.mascot:is(.is-listen,.is-done) .e-open{opacity:0}
.mascot:is(.is-listen,.is-done) .e-wide{opacity:1}
/* think — палец у подбородка, другая рука на бедре, над головой плавает «?» */
@keyframes m-tap{50%{transform:rotate(-8deg)}}
.mascot.is-think{--m-tilt:4deg}
.mascot.is-think .aR-s{rotate:172deg}.mascot.is-think .aR-e{rotate:-52deg}.mascot.is-think .aR-h{rotate:6deg;animation:m-tap 2.6s ease-in-out infinite}
.mascot.is-think .aL-s{rotate:50deg}.mascot.is-think .aL-e{rotate:-110deg}
.mascot.is-think .m-eyes{translate:2px -2px}
.mascot.is-think .fx-q{opacity:1;animation:m-float 2.6s ease-in-out infinite}
/* work — указывает на парящую мини‑панель справа сверху, три полоски заполняются по кругу */
@keyframes m-bar{0%{transform:scaleX(.04);opacity:1}55%,86%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1);opacity:0}}
@keyframes m-point{50%{transform:translate(0,-2px) rotate(-5deg)}}
.mascot.is-work{--m-tilt:-3deg}
.mascot.is-work .aR-s{rotate:-150deg}.mascot.is-work .aR-e{rotate:-6deg}.mascot.is-work .aR-h{rotate:-14deg;animation:m-point 1.8s ease-in-out infinite}
.mascot.is-work .m-eyes{translate:2.4px -1.2px}
.mascot.is-work .fx-panel{opacity:1;animation:m-float 3.2s ease-in-out infinite}
.mascot.is-work .fx-bar{animation:m-bar 1.8s var(--ease) infinite}
.mascot.is-work .fx-b1{animation-delay:.3s}.mascot.is-work .fx-b2{animation-delay:.6s}
.mascot.is-work.has-prog .fx-bar{animation:none;transform:scaleX(var(--b,.04));transition:transform .35s var(--ease)}   /* A3: мини‑панель по доле применённых действий */
:is(.mascot.is-think,.mascot.is-work) .m-handR .hp{opacity:0}
:is(.mascot.is-think,.mascot.is-work) .m-handR .ht{opacity:1}
/* run — бег на месте: ноги и руки вперемежку, корпус наклонён, кромка ярче */
@keyframes m-bob{50%{transform:translate(0,-6px)}}
@keyframes m-thigh{0%,100%{transform:rotate(30deg)}50%{transform:rotate(-34deg)}}
@keyframes m-knee{0%,100%{transform:rotate(25deg)}25%{transform:rotate(75deg)}50%{transform:rotate(10deg)}75%{transform:rotate(15deg)}}
@keyframes m-arm{0%,100%{transform:rotate(34deg)}50%{transform:rotate(-40deg)}}
@keyframes m-shad{50%{transform:scale(.88,.8)}}
.mascot.is-run{--m-go:1}
.mascot.is-run .m-fig{rotate:8deg;animation:m-bob .25s ease-in-out infinite}
.mascot.is-run .lL-h{animation:m-thigh .5s linear infinite}.mascot.is-run .lR-h{animation:m-thigh .5s linear -.25s infinite}
.mascot.is-run .lL-k{animation:m-knee .5s linear infinite}.mascot.is-run .lR-k{animation:m-knee .5s linear -.25s infinite}
.mascot.is-run :is(.aR-s,.aL-s){rotate:0deg}
.mascot.is-run :is(.aR-e,.aL-e){rotate:-80deg}
.mascot.is-run .aR-s{animation:m-arm .5s ease-in-out -.25s infinite}.mascot.is-run .aL-s{animation:m-arm .5s ease-in-out infinite}
.mascot.is-run .m-shadow{animation:m-shad .25s ease-in-out infinite}
.mascot:is(.is-run,.is-done) .m-glow-halo{stroke-width:22px}
/* done — обе руки вверх, прыжок, искры разлетаются (потом JS возвращает idle) */
@keyframes m-hop{30%{transform:translate(0,-14px)}55%{transform:translate(0,0)}72%{transform:translate(0,-4px)}100%{transform:none}}
@keyframes m-spark{0%{opacity:0;transform:scale(.3)}30%{opacity:1}100%{opacity:0;transform:scale(1.3)}}
.mascot.is-done{--m-go:1}
.mascot.is-done .aR-s{rotate:-160deg}.mascot.is-done .aR-e{rotate:18deg}
.mascot.is-done .aL-s{rotate:150deg}.mascot.is-done .aL-e{rotate:-22deg}
.mascot.is-done .m-fig{animation:m-hop .9s var(--ease) 1}
.mascot.is-done .fx-sparks{opacity:1}
.mascot.is-done .fx-sp{animation:m-spark 1.1s var(--ease) both}
.mascot.is-done .fx-s1{animation-delay:.08s}.mascot.is-done .fx-s2{animation-delay:.16s}.mascot.is-done .fx-s3{animation-delay:.04s}.mascot.is-done .fx-s4{animation-delay:.12s}
/* puzzled — голова набок 12°, «?» мигает один раз, ладонь вверх */
@keyframes m-qblink{0%{opacity:0;transform:translate(0,5px)}25%{opacity:1;transform:none}45%{opacity:.12}65%,100%{opacity:1}}
.mascot.is-puzzled{--m-tilt:-12deg}
.mascot.is-puzzled .aR-s{rotate:-36deg}.mascot.is-puzzled .aR-e{rotate:-72deg}.mascot.is-puzzled .aR-h{rotate:-20deg}
.mascot.is-puzzled .aL-s{rotate:26deg}.mascot.is-puzzled .aL-e{rotate:-34deg}
.mascot.is-puzzled .m-eyes{translate:-1.5px -1px}
.mascot.is-puzzled .fx-q{opacity:1;animation:m-qblink 1.4s ease both}
/* alert — брови над глазами, кулаки, стойка шире, кромка тёплая (--warm) и пульсирует */
@keyframes m-pulse{50%{opacity:.62}}
.mascot.is-alert{--m-ga:#FFB59A;--m-gb:var(--warm,#FF8A5B)}
.mascot.is-alert .e-open{opacity:0}.mascot.is-alert .e-firm,.mascot.is-alert .m-brows{opacity:1}
.mascot.is-alert .aR-s{rotate:-96deg}.mascot.is-alert .aR-e{rotate:-64deg}.mascot.is-alert .aR-h{rotate:-10deg}
.mascot.is-alert .aL-s{rotate:24deg}.mascot.is-alert .aL-e{rotate:-36deg}
.mascot.is-alert .lL-h{rotate:10deg}.mascot.is-alert .lL-f{rotate:-10deg}.mascot.is-alert .lR-h{rotate:-10deg}.mascot.is-alert .lR-f{rotate:10deg}
.mascot.is-alert .m-torso{translate:0 3px}
.mascot.is-alert .m-glow{animation:m-pulse 1.1s ease-in-out infinite}
:is(.mascot.is-think .m-handL,.mascot.is-run,.mascot.is-alert) .hp{opacity:0}
:is(.mascot.is-think .m-handL,.mascot.is-run,.mascot.is-alert) .hf{opacity:1}
/* sleep — глаза закрыты, свечение 30 %, медленное дыхание, маленькие «z» */
@keyframes m-z{0%{opacity:0;transform:translate(0,4px) scale(.7)}30%{opacity:.95}100%{opacity:0;transform:translate(8px,-16px) scale(1.1)}}
.mascot.is-sleep{--m-tilt:7deg;--m-go:.3}
.mascot.is-sleep .e-open{opacity:0}.mascot.is-sleep .e-shut{opacity:1}
.mascot.is-sleep .m-torso{animation:m-breath-slow 5s ease-in-out 6}   /* сон: ~30 с движения, потом статичная поза (без вечной перерисовки SVG) */
.mascot.is-sleep .aR-s{rotate:-6deg}.mascot.is-sleep .aR-e{rotate:-4deg}.mascot.is-sleep .aL-s{rotate:8deg}.mascot.is-sleep .aL-e{rotate:-6deg}
.mascot.is-sleep .m-sole{opacity:.3}.mascot.is-sleep .m-rim{opacity:.15}
.mascot.is-sleep .fx-z{opacity:1}
.mascot.is-sleep .fx-z0{animation:m-z 3.2s ease-in-out 9}.mascot.is-sleep .fx-z1{animation:m-z 3.2s ease-in-out 1.6s 9}
/* talk (V1) — говорит: кромка между головой и телом пульсирует в ритме речи (1,8 Гц), глаза‑дуги «говорят» (кривизна дышит), рука объясняет
   ладонью вверх; reduced‑motion — статичная поза, кромка чуть ярче (ореол 20 px, --m-go 1) */
@keyframes m-talk{0%,100%{opacity:.6}50%{opacity:1}}
@keyframes m-talk-halo{0%,100%{stroke-width:13px}50%{stroke-width:22px}}
@keyframes m-talk-eye{0%,100%{transform:scale(1,1)}50%{transform:scale(1.06,.62)}}
@keyframes m-gest{50%{transform:rotate(-9deg)}}
.mascot.is-talk{--m-go:1;--m-tilt:-2deg}
.mascot.is-talk .m-glow{animation:m-talk .56s ease-in-out infinite}
.mascot.is-talk .m-glow-halo{stroke-width:20px;animation:m-talk-halo .56s ease-in-out infinite}
.mascot.is-talk .m-rim{opacity:.9;animation:m-talk .56s ease-in-out infinite}
.mascot.is-talk .e-open{transform-box:fill-box;transform-origin:50% 100%;animation:m-talk-eye .56s ease-in-out infinite}
.mascot.is-talk .aR-s{rotate:-34deg}.mascot.is-talk .aR-e{rotate:-62deg}.mascot.is-talk .aR-h{rotate:-18deg;animation:m-gest 1.12s ease-in-out infinite}
.mascot.is-talk .aL-s{rotate:14deg}.mascot.is-talk .aL-e{rotate:-20deg}
@media (prefers-reduced-motion:reduce){.mascot .m-svg *{animation:none!important;transition:none!important}}

/* пузырь реплики: белый поповер рядом с маскотом (слева — угол оболочки, справа — «Настройки»); role=status, «×», кнопка действия */
.mascot .m-say{position:absolute;bottom:64%;right:calc(100% - 8px);z-index:1;width:max-content;max-width:min(264px,calc(100vw - 100px));display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 6px;align-items:start;
  padding:12px 8px 12px 14px;border-radius:18px 18px 6px 18px;background:var(--pop-bg);-webkit-backdrop-filter:blur(20px) saturate(110%);backdrop-filter:blur(20px) saturate(110%);box-shadow:var(--panel-ring),var(--pop-shadow);
  --mx:10px;--my:6px;animation:materialize var(--dur) var(--ease)}
.mascot[data-side="right"] .m-say{right:auto;left:calc(100% - 8px);border-radius:18px 18px 18px 6px;--mx:-10px}
.mascot .m-say.out{animation:dematerialize .2s var(--ease) forwards;pointer-events:none}
.mascot .m-say-t{grid-column:1;grid-row:1;font-size:var(--fs-sm);line-height:1.35;color:var(--ink);text-wrap:pretty}
.mascot .m-say-x{grid-column:2;grid-row:1;width:24px;height:24px;margin:-4px 0 0;padding:0;border:0;border-radius:50%;background:none;color:var(--ink-2);font-size:18px;line-height:1}
.mascot .m-say-x:hover{background:var(--chip-bg)}
.mascot .m-say-go{grid-column:1/-1;grid-row:2;justify-self:start;padding:9px 14px}
@media (prefers-reduced-motion:reduce){.mascot .m-say{animation:fade .2s ease}.mascot .m-say.out{animation:fadeout .2s ease forwards}}

/* угол оболочки: стол — 88 px, 24 px внутрь от края плиты; телефон — 56 px над таб‑баром справа, «+» Плана левее.
   z 35: над таблеткой (30) и «+» (31), под слоем чата (40), поповерами (44/45), листами (49/50) и тостами (60). Скрыт при html.kbd и в слое чата (C1). */
.mascot-dock{position:fixed;right:calc(var(--plate-in,0px) + 24px);bottom:calc(var(--plate-in,0px) + 24px);z-index:35;pointer-events:none}
.mascot-dock[hidden]{display:none}
.mascot-dock .mascot{--m-w:88px}
.mascot-dock :is(.m-hit,.m-say){pointer-events:auto}
.m-hit{display:block;width:100%;height:100%;padding:0;border:0;border-radius:22px;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
.m-hit:focus-visible{outline:1.5px solid var(--ink);outline-offset:2px}
html.kbd .mascot-dock,html.chat-full .mascot-dock{visibility:hidden;pointer-events:none}
@media (min-width:760px){html.has-mascot .main{padding-bottom:112px}}   /* последний ряд экрана прокручивается выше маскота */
@media (max-width:759.98px){
  .mascot-dock{right:12px;bottom:calc(var(--tab-h) + 24px + env(safe-area-inset-bottom))}
  .mascot-dock .mascot{--m-w:56px}
  html.has-mascot .plan-fab{right:80px}
  html.has-mascot:not(.kbd) .app{padding-bottom:calc(var(--tab-h) + 88px + env(safe-area-inset-bottom))}
}

/* «Настройки → Reflex»: сцена с маскотом 160 px (пунктирный контур), состояния кнопками, переключатели */
.set-rx{grid-column:1/-1}
.set-rx .rx-wrap{display:grid;gap:18px}
@media (min-width:760px){.set-rx .rx-wrap{grid-template-columns:260px minmax(0,1fr);align-items:start;gap:28px}}
.set-rx .rx-stage{display:grid;justify-items:center;gap:6px;padding:22px 12px 14px;border-radius:var(--card-r);background:none;border:1.5px dashed var(--line)}   /* R3b‑1: сцена — пунктирный контур, без заливки */
.set-rx .rx-cap{font:500 var(--fs-cap)/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--kicker)}
.set-rx .rx-text{font-size:var(--fs-sm);color:var(--ink-2);max-width:60ch}
.set-rx .rx-states{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.set-rx .rx-states .chip{padding:9px 13px}
.set-rx .rx-k{margin:20px 0 0}
.set-rx .rx-sw{display:grid;gap:10px;margin-top:12px}

/* A2 — ассистент Reflex (components/assistant.js); v1d R10 — компактное окно по референсу Nixtio.
   Стол и планшет (≥ 760): бумажное окно 380 × 560 px (1024–1279 — 340 px) в правом нижнем углу над маскотом угла: правый край — край дока
   (--plate-in + 24), низ — верх дока − 12 (док 88 px → --plate-in + 124); высота — не больше места до шапки (--asst-top = низ .head в документе + 12,
   assistant.js layout), низкий стол (≤ 700 px) — не выше 60 % плиты. Маскот угла виден над окном (не перекрывается) и «говорит» за него.
   .tall («Развернуть» ↗) — прежняя высокая панель 420 px от --asst-top до низа плиты (380 на 1024–1279), маскот угла встаёт слева от неё (html.asst-tall).
   z 47 — над слоем чата (40) и поповерами (45), под листами (49/50) и тостами (60); .over (открыто поверх листа) — 52. Появление — materialize из угла маскота.
   Телефон: полноэкранный слой (html.asst-full; верх и высота — visualViewport, как C1), шапка «‹ · маскот 40 · Reflex · капсула · ⋯», док скрыт. */
.asst{position:fixed;z-index:47;--asst-dock:calc(var(--plate-in,12px) + 24px);
  right:var(--asst-dock);bottom:calc(var(--asst-dock) + 88px + 12px);
  width:min(380px,calc(100vw - 2 * var(--asst-dock)));
  height:min(560px,calc(100dvh - var(--asst-dock) - 100px - var(--asst-top,calc(var(--plate-in,12px) + 20px))));
  display:grid;grid-template-rows:auto minmax(0,1fr) auto auto auto;overflow:clip;
  border-radius:var(--panel-radius);background:var(--panel-bg);box-shadow:var(--panel-ring),0 2px 6px rgba(20,24,40,.06),0 30px 70px -28px rgba(20,24,40,.38);
  transform-origin:100% 100%;--mx:16px;--my:28px;animation:materialize var(--dur) var(--ease)}
@media (min-width:1024px) and (max-width:1279.98px){.asst{width:340px}}
@media (min-width:760px) and (max-height:700px){.asst:not(.tall){height:min(560px,calc((100dvh - 2 * var(--plate-in,12px)) * .6),calc(100dvh - var(--asst-dock) - 100px - var(--asst-top,calc(var(--plate-in,12px) + 20px))))}}
.asst.tall{top:var(--asst-top,calc(var(--plate-in,12px) + 20px));bottom:calc(var(--plate-in,12px) + 20px);right:calc(var(--plate-in,12px) + 20px);height:auto;
  width:min(420px,calc(100vw - 2 * var(--plate-in,12px) - 40px))}
@media (min-width:1024px) and (max-width:1279.98px){.asst.tall{width:380px}}
.asst[hidden]{display:none}
.asst.over{z-index:52}
.asst.out{animation:dematerialize .25s var(--ease) forwards;pointer-events:none}
/* маскот угла при открытом окне: виден (окно над ним); у высокой панели — слева от неё */
html.asst-open .mascot-dock{transition:right var(--dur) var(--ease)}
@media (min-width:760px){html.asst-tall .mascot-dock{right:calc(var(--plate-in,12px) + 20px + min(420px,calc(100vw - 2 * var(--plate-in,12px) - 40px)) + 12px)}}
@media (min-width:1024px) and (max-width:1279.98px){html.asst-tall .mascot-dock{right:calc(var(--plate-in,12px) + 20px + 380px + 12px)}}
/* шапка одной строкой: [‹ (телефон)] [маскот 40 (телефон) / искра (стол)] Reflex + подпись состояния … [капсула] [⋯] [↗] [×] */
.as-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;min-height:52px;padding:10px 12px 10px 16px;border-bottom:1px solid var(--line-soft);
  background:linear-gradient(180deg,#FAFBFF,#fff 80%)}
.as-id{grid-column:2;display:flex;align-items:center;gap:8px;min-width:0}
.as-spark{width:16px;height:16px;flex:none;color:var(--ink)}
.as-mini{display:none;flex:none}
.as-mini .mascot{--m-w:40px}
.as-tt{display:grid;gap:3px;min-width:0}
.as-name{font-size:var(--fs-sm);font-weight:600;line-height:1.1;color:var(--ink)}
.as-cap{font:500 var(--fs-cap)/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--kicker);min-height:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.as-tools{grid-column:3;display:flex;align-items:center;gap:12px}
.as-ib{display:grid;place-items:center;width:32px;height:32px;flex:none;padding:0;border:0;border-radius:50%;background:var(--chip-bg);color:var(--ink);cursor:pointer;
  font-size:20px;line-height:1;transition:background var(--dur-fast) var(--ease)}
.as-ib .ic{width:16px;height:16px}
.as-ib:hover{background:rgba(18,21,28,.1)}
.as-ib:focus-visible{outline:1.5px solid var(--ink);outline-offset:2px}
.as-ib[aria-expanded="true"],.as-exp[aria-pressed="true"]{background:var(--pill);color:#fff}
.as-back{grid-column:1;display:none}
/* маскот угла выключен — окно у низа плиты, персонаж — маленький в шапке и на столе */
@media (min-width:760px){
  html:not(.has-mascot) .asst:not(.tall){bottom:var(--asst-dock);height:min(560px,calc(100dvh - var(--asst-dock) - var(--asst-top,calc(var(--plate-in,12px) + 20px))))}
  html:not(.has-mascot) .asst .as-mini{display:block}
  html:not(.has-mascot) .asst .as-spark{display:none}
}
.as-mid{position:relative;min-height:0}
.as-log{height:100%;padding:16px 16px 18px;gap:12px}
.as-log .msg.ai{width:100%}
.as-msg .bub{gap:10px;width:100%}
.as-msg .say{font-size:var(--fs-sm)!important;line-height:1.45}
/* строки‑ссылки на элементы и чипы — белые пилюли на сером пузыре (колодец в пузырь не кладём) */
.as-rows{display:grid;gap:6px}
.as-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;padding:9px 10px 9px 12px;border:0;border-radius:12px;
  background:#fff;box-shadow:var(--field-ring);text-align:left;font:inherit;font-size:var(--fs-meta);line-height:1.4;color:var(--ink);cursor:pointer;
  transition:box-shadow var(--dur-fast) var(--ease)}
.as-row:hover{box-shadow:inset 0 0 0 1px rgba(18,21,28,.18)}
.as-row:focus-visible{outline:1.5px solid var(--ink);outline-offset:1px}
.as-row.static{grid-template-columns:auto minmax(0,1fr);cursor:default}
.as-row.static:hover{box-shadow:var(--field-ring)}
.as-dot{width:6px;height:6px;border-radius:50%;background:var(--ink-2);opacity:.4}
.as-row.warm .as-dot{background:var(--warm);opacity:1}
.as-row .ic{width:14px;height:14px;color:var(--ink-2)}
.as-rt{min-width:0;overflow-wrap:anywhere}
.as-chips{display:flex;flex-wrap:wrap;gap:6px}
.as-chip{max-width:100%;padding:8px 12px;font-size:var(--fs-meta);line-height:1.3;text-align:left;white-space:normal;background:#fff;box-shadow:var(--field-ring);cursor:pointer}
.as-chip.hv{background:#fff;box-shadow:inset 0 0 0 1px rgba(18,21,28,.2)}
.as-chip.fill::after{content:'✎';margin-left:2px;color:var(--ink-2);font-size:12px}
.as-status:not([hidden]){padding:8px 16px;border-top:1px solid rgba(18,21,28,.06)}
.as-bot{padding:10px 14px 12px}
/* липкая строка подсказок экрана над полем: одной строкой, листается вбок; в высокой панели на столе — переносом (видны все 3) */
.as-sugg{display:flex;flex-wrap:nowrap;gap:6px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:10px 14px 0;border-top:1px solid var(--line-soft)}
.as-sugg:empty{display:none}
.as-sugg .as-chip{flex:none;max-width:none;white-space:nowrap}
.asst.tall .as-sugg{flex-wrap:wrap}
.as-keys{display:none;padding-left:16px;font-size:var(--fs-cap)}
.asst.tall .as-keys{display:block}
@media (min-width:760px) and (max-height:700px){.asst.tall .as-sugg{flex-wrap:nowrap}.asst.tall .as-keys{display:none}}
/* v1d R10 — композер окна: «+» (белая круглая, как микрофон) · микрофон · поле · «Отправить»; в окне кнопки 42 px, зазор 12 */
.asst .chat-in{gap:12px}
.asst :is(.chat-plus,.chat-mic,.chat-send){width:42px;height:42px}
.asst textarea.chat-ta{min-height:42px;padding:10px 16px;border-radius:21px}
.chat-in.has-lead{grid-template-columns:auto minmax(0,1fr) auto}
.chat-in.has-lead.has-mic{grid-template-columns:auto auto minmax(0,1fr) auto}
.chat-plus{width:46px;height:46px;flex:none;border-radius:50%;border:0;display:grid;place-items:center;cursor:pointer;background:#fff;color:var(--ink);
  box-shadow:var(--field-ring);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}
.chat-plus .ic{width:18px;height:18px;stroke-width:1.7}
.chat-plus:focus-visible{outline:1.5px solid var(--ink);outline-offset:2px}
.chat-plus[aria-expanded="true"]{background:var(--pill);color:#fff;box-shadow:none}
/* приложенное к вопросу — чипы над полем (белые пилюли с контуром, «×» снимает) */
.as-att{display:flex;flex-wrap:wrap;gap:8px 12px;padding:0 0 10px}
.as-att[hidden]{display:none}
.as-att-c{display:inline-flex;align-items:center;gap:6px;max-width:100%;min-width:0;padding:4px 4px 4px 10px;border-radius:99px;background:#fff;box-shadow:var(--field-ring);
  font-size:var(--fs-meta);line-height:1.2;color:var(--ink)}
.as-att-c>.ic{width:13px;height:13px;flex:none;color:var(--ink-2)}
.as-att-n{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.as-att-x{display:grid;place-items:center;width:24px;height:24px;flex:none;padding:0;border:0;border-radius:50%;background:var(--chip-bg);color:var(--ink);font-size:15px;line-height:1;cursor:pointer}
.as-att-x:hover{background:rgba(18,21,28,.12)}
.as-att-x:focus-visible{outline:1.5px solid var(--ink);outline-offset:1px}
.as-me-att{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:6px}
.as-me-a{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-meta);color:var(--ink-2)}
.as-me-a .ic{width:12px;height:12px}
/* поповеры окна («+» снизу вверх, «⋯» сверху вниз) — внутри окна, белое стекло .pop; подложка ловит клик мимо */
.as-pop-bd{position:absolute;inset:0;z-index:4}
.asst .as-pop{position:absolute;z-index:5;width:240px;max-width:calc(100% - 24px)}
.asst .as-plus-pop{--mx:0px;--my:8px}
.asst .as-more-pop{--mx:0px;--my:-8px;width:236px}
.asst .as-ref-pop{width:320px;padding:12px 10px 8px;--mx:0px;--my:8px}
.as-ref-k{margin:0 6px 10px}
.as-ref .metric-picker{display:grid;gap:10px}
.as-ref .search{margin:0}
.as-ref .mp-list{max-height:280px;overflow-y:auto;overscroll-behavior:contain}
/* «История диалогов» — лист: группы «Сегодня / Вчера / Раньше», строки‑кнопки с заголовком первого вопроса и временем */
.as-hist{display:grid;gap:18px}
.as-hist-g .kicker{margin:0 0 8px}
.as-hist-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;text-align:left}
.as-hist-row>.ic{width:16px;height:16px;color:var(--ink-2)}
.as-hist-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-sm)}
.as-hist-m{font:500 var(--fs-cap)/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--kicker)}
.as-hist-row.on .as-hist-t{font-weight:600}
@media (max-width:759.98px){
  .asst,.asst.tall{top:var(--vv-top,0px);left:0;right:0;bottom:auto;width:auto;height:var(--vv-h,100dvh);border-radius:0;box-shadow:none;transform-origin:50% 100%;--mx:0px;--my:14px}
  .as-head{grid-template-columns:auto minmax(0,1fr) auto;padding:calc(8px + env(safe-area-inset-top)) 12px 8px}
  .as-back{display:grid}
  .as-id{justify-content:center}
  .as-mini{display:block}
  .as-spark,.as-exp,.as-x{display:none}
  html.asst-full .mascot-dock{visibility:hidden;pointer-events:none}
  .asst.tight .as-head{padding-top:calc(4px + env(safe-area-inset-top));padding-bottom:4px}
  .asst :is(.chat-plus,.chat-mic,.chat-send){width:44px;height:44px}
  .asst textarea.chat-ta{min-height:44px;border-radius:22px}
  .as-log{padding:14px 12px 16px}
  .as-bot{padding:10px 12px calc(10px + env(safe-area-inset-bottom))}
  html.kbd .as-bot{padding-bottom:10px}
  .as-keys{display:none}
  .as-sugg{flex-wrap:nowrap;padding:8px 12px 0}
  html.asst-full,html.asst-full body{overflow:hidden;overscroll-behavior:none}
  html.asst-full .head,html.asst-full .tabs,html.asst-full .plan-fab{visibility:hidden;pointer-events:none}
}
/* v1d R6 — капсула режимов в шапке панели (вместо двух тумблеров с подписями): белая пилюля с контуром --field-ring, две круглые кнопки 32 px
   role=switch — молния «Делать сразу» и динамик «Голос»; включено — тёмная --pill с белой иконкой, выключено — прозрачная, иконка --ink-2.
   v1d R10: в .as-tools справа в шапке окна (за ней «⋯», ↗, ×; телефон — «⋯»). Нажатие — WAAPI scale (press.js). */
.as-mode{display:inline-flex;flex:none;gap:2px;padding:3px;border-radius:99px;background:#fff;box-shadow:var(--field-ring)}
.as-mb{display:grid;place-items:center;width:32px;height:32px;flex:none;padding:0;border:0;border-radius:50%;background:transparent;color:var(--ink-2);cursor:pointer;
  transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}
.as-mb .ic{width:16px;height:16px}
.as-mb:hover{background:var(--chip-bg);color:var(--ink)}
.as-mb[aria-checked="true"]{background:var(--pill);color:#fff;box-shadow:0 4px 10px -6px rgba(20,24,40,.5)}
.as-mb[aria-checked="true"]:hover{background:#262933;color:#fff}
.as-mb[aria-checked="true"] .ic{stroke-width:1.8}
.as-mb:focus-visible{outline:1.5px solid var(--ink);outline-offset:2px}
/* A3 — действия Reflex: карточки «Сделать» внутри ответа (белые пилюли на сером пузыре, как строки‑ссылки), «Применить все / Отменить всё». */
.as-acts{display:grid;gap:6px}
.as-act{display:grid;gap:8px;padding:10px 12px;border-radius:14px;background:#fff;box-shadow:var(--field-ring);font-size:var(--fs-meta);line-height:1.4;color:var(--ink)}
.as-act-t{margin:0;overflow-wrap:anywhere}
.as-act-why{margin:0;font-size:var(--fs-meta);color:var(--ink-2)}
.as-act-b{display:flex;flex-wrap:wrap;gap:6px}
.as-act-b .btn,.as-acts-foot .btn{padding:8px 14px}
.as-act[data-st="done"]{background:rgba(255,255,255,.72)}
.as-act[data-st="done"] .as-act-t{color:var(--ink-2)}
.as-act[data-st="skipped"]{background:transparent;box-shadow:inset 0 0 0 1px rgba(18,21,28,.08)}
.as-act[data-st="skipped"] .as-act-t{color:var(--ink-2);text-decoration:line-through;text-decoration-color:rgba(18,21,28,.25)}
.as-act[data-st="invalid"],.as-act[data-st="failed"]{background:transparent;box-shadow:inset 0 0 0 1px rgba(18,21,28,.1)}
.as-act[data-st="invalid"] .as-act-t,.as-act[data-st="failed"] .as-act-t{color:var(--ink-2);opacity:.75}
.as-act[data-st="confirm"] .as-act-why{color:var(--warm);font-weight:500}
.as-acts-foot{display:flex;justify-content:flex-end;padding-top:2px}
.as-next{padding-top:4px}
@media (prefers-reduced-motion:reduce){.asst{animation:fade var(--dur) ease}.asst.out{animation:fadeout .2s ease forwards}}
.set-rx .rx-talk{margin-top:12px}
/* V1 — «🔊» у ответа Reflex (справа внизу пузыря; во время озвучки — «⏹») */
.as-spk{justify-self:end;display:grid;place-items:center;width:32px;height:32px;margin:-4px -6px -4px 0;padding:0;border:0;border-radius:50%;background:#fff;color:var(--ink-2);
  box-shadow:var(--field-ring);cursor:pointer;transition:color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}
.as-spk .ic{width:16px;height:16px}
.as-spk:hover{color:var(--ink)}
.as-spk:focus-visible{outline:1.5px solid var(--ink);outline-offset:2px}
.as-spk[aria-pressed="true"]{background:var(--pill);color:#fff;box-shadow:none}
.as-spk[aria-pressed="true"] .ic{width:12px;height:12px}
/* V1 — «Настройки → Reflex → Голос»: список голосов ElevenLabs (строки на волосяных разделителях, R3b‑1) или голоса устройства */
.set-rx .rx-voice{display:grid;gap:10px;margin-top:10px}
.set-rx .rx-vnote{margin:0;font-size:var(--fs-meta);color:var(--ink-2);max-width:60ch}
.set-rx .rx-vpick{justify-self:start}
.rx-voices{display:grid;max-width:640px}
.rx-voices:empty{display:none}
.rx-v{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 2px;border-top:1px solid var(--line-soft)}
.rx-v:first-child{border-top:0}
.rx-v-pick{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;grid-column:1/3;min-width:0;padding:2px 0;border:0;background:none;text-align:left;font:inherit;color:var(--ink);cursor:pointer}
.rx-v-pick:focus-visible{outline:1.5px solid var(--ink);outline-offset:2px;border-radius:8px}
.rx-v-mark{width:18px;height:18px;border-radius:50%;box-shadow:inset 0 0 0 1.5px rgba(18,21,28,.25);display:grid;place-items:center;font-size:11px;line-height:1;color:#fff}
.rx-v.on .rx-v-mark{background:var(--pill);box-shadow:none}
.rx-v-t{display:grid;gap:2px;min-width:0}
.rx-v-n{font-size:var(--fs-sm);font-weight:600}
.rx-v-l{font-size:var(--fs-meta);color:var(--ink-2);overflow-wrap:anywhere}
.rx-v .btn{padding:7px 12px}

/* ============================================================
   D1 — сетка перетаскиваемых виджетов «Сейчас» (15.10.2026; components/widget-grid.js, раскладка — js/ui/grid-layout.js).
   «Сейчас» (D1 review; с v1d R4 лента, «Понимание» и карта — в герое .now-top, раздел «R4» в конце файла): колонки --wg-cols — 6 от 1024
   (цели 3 | внимание 3 · ближайшее 3 | решения 3), 2 на 760–1023 (по одной), 1 на телефоне; строки по содержимому (autoRows: minmax(--wg-row-min 220 px, auto), лента и карта — auto),
   панели ряда — одной высоты (stretch). Квадратные строки --wg-cell — только без autoRows (в grid-layout.js остаются для будущего). Виджет — обёртка .wg-item с grid-column/row; в строке‑ячейке панель во всю высоту, список — колодец с прокруткой.
   Перетаскивание: .wg-hold (касание держим) scale .97 → .wg-drag scale 1.04 + тень, translate — за указателем; .wg-slot — контур слота.
   ============================================================ */
.wg{position:relative;display:grid;grid-template-columns:repeat(var(--wg-cols,1),minmax(0,1fr));gap:16px;align-items:stretch;reading-flow:grid-rows}
@media (min-width:760px){.wg{gap:18px}}
@media (min-width:1024px){.wg{gap:20px}}
.wg-item{position:relative;z-index:1;display:grid;min-width:0;min-height:0;border-radius:var(--panel-radius);container-type:inline-size}
.wg-item>*{min-width:0;min-height:0}
.wg.measure>.wg-item{align-self:start}   /* замер собственной высоты виджета (widget-grid measureNatural) — на один синхронный кадр */
.wg-item:focus{outline:none}
.wg-item:focus-visible{outline:1.5px solid var(--ink);outline-offset:4px}
/* в строке‑ячейке: панель во всю высоту, длинный список прокручивается внутри себя */
.wg-item:not([data-auto])>.glass{height:100%;display:flex;flex-direction:column;overflow:hidden}
.wg-item:not([data-auto]) :is(.goals-list,.att-list,.up-list,.dec-mini){flex:0 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;align-content:start}
.wg-item:not([data-auto]) .att-f{flex:none}
.wg-item:not([data-auto]) .attention .link[data-act="all"]{flex:none;align-self:flex-start}
.wg-item:not([data-auto])>.coverage{display:grid;grid-template-rows:auto auto 12px minmax(0,1fr) auto}
.wg-item:not([data-auto]) .coverage .gaps{grid-row:4;margin-top:0;min-height:0;max-height:100%;overflow-y:auto;overscroll-behavior:contain;align-self:start}
.wg-item:not([data-auto]) .coverage .link{grid-row:5}
/* «Понимание» во всю строку: кольцо и заголовок слева, пробелы — списком справа */
@container (min-width:640px){
  .coverage{grid-template-columns:auto minmax(0,1fr) minmax(0,1.25fr)}
  .coverage>.kicker{grid-column:1/-1}
  .coverage .gaps{grid-column:3;grid-row:2/span 2;margin-top:0;align-self:start}
  .coverage .link{grid-column:1/3}
  .wg-item:not([data-auto])>.coverage{grid-template-rows:auto auto minmax(0,1fr)}
  .wg-item:not([data-auto]) .coverage .gaps{grid-row:2/span 2}
  .wg-item:not([data-auto]) .coverage .link{grid-row:3}
}
/* ручка: на столе — весь заголовок (курсор grab), на телефоне — иконка ⋮⋮ справа в заголовке */
.wg.edit:not(.one) .wg-item:not(.pinned) .wg-h{cursor:grab;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.wg.edit:not(.one) .wg-item:not(.pinned) .wg-h :is(button,a){cursor:pointer}
.wg-grip{display:none}
.wg.edit.one .wg-grip{display:inline-flex;align-items:center;justify-content:center;flex:none;width:36px;height:36px;margin:-6px -8px -6px 0;padding:0;border:0;border-radius:12px;background:none;color:var(--ink-2);
  cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.wg.edit.one .wg-grip[hidden]{display:none}
.wg-grip svg{width:16px;height:16px}
.wg.edit.one .wg-h{display:flex;align-items:center;justify-content:flex-start;gap:10px}
.wg.edit.one .wg-h>:is(.kicker,.wt){margin-right:auto}
.wg.edit.one .kicker.wg-h>.wg-grip{margin-left:auto}
/* жест */
.wg-item.wg-hold{scale:.97;transition:scale .35s var(--ease)}
.wg-item.wg-drag{z-index:20;scale:1.04;box-shadow:0 28px 60px -16px rgba(20,24,40,.35);transition:scale .3s var(--ease),box-shadow .3s var(--ease);will-change:translate}
.wg-item.wg-drag.rm{scale:1;transition:none}
.wg-item.wg-settle{z-index:19}
.wg-item.wg-drag>:not(.glass),.wg-item.wg-settle>:not(.glass){background:var(--main-bg);border-radius:var(--panel-radius)}   /* виджет без своей панели — на подложке, чтобы под ним не просвечивало */
html.wg-dragging,html.wg-dragging *{cursor:grabbing!important;-webkit-user-select:none!important;user-select:none!important}
.wg-slot{position:relative;z-index:0;border-radius:var(--panel-radius);background:none;box-shadow:none;border:1.5px dashed var(--line);pointer-events:none;transition:box-shadow .3s var(--ease),opacity .3s ease}
.wg-slot.flash{box-shadow:inset 0 0 0 2px var(--ink);background:rgba(18,21,28,.02);animation:wgFlash .6s ease forwards}
@keyframes wgFlash{0%{opacity:1}70%{opacity:1}100%{opacity:0}}
.wg-slot[hidden]{display:none}
@media (prefers-reduced-motion:reduce){
  .wg-item.wg-hold,.wg-item.wg-drag{scale:1;transition:none}
  .wg-slot.flash{animation:none}
}
/* узкая ячейка (≈ 245–300 px на столе): дата «Ближайшего» над названием, «Открыть» решения — под вопросом (имена не режутся до «Дегуста…») */
@container (max-width:340px){
  button.row.up{grid-template-columns:minmax(0,1fr);gap:4px;padding:9px 2px}
  .row.up .ud{justify-self:start;padding:5px 8px}
  .row.dm{flex-direction:column;align-items:flex-start;gap:8px}
  .row.dm .dq{flex:none;width:100%}
}

/* A4 — вопрос перед удалением в инспекторе: что уйдёт вместе с элементом (связи, ссылки других элементов) — до подтверждения */
.insp-del{display:grid;gap:6px;padding:12px 14px;border-radius:var(--card-r);background:none;box-shadow:inset 0 0 0 1px var(--line)}   /* R3b‑1: форма — волосяной контур, без заливки */
.insp-del-q{margin:0;font-weight:600;color:var(--ink)}
.insp-del-i{margin:0;font-size:var(--fs-meta);color:var(--ink);overflow-wrap:anywhere}
.insp-del-n{margin:0;font-size:var(--fs-meta);color:var(--ink-2)}
.insp-del .act-row{margin-top:6px}
/* A4: на телефоне тост встаёт над таб‑баром там же, где маскот, — пока тост виден, маскот уходит (не теснит текст тоста) */
@media (max-width:759.98px){
  .mascot-dock{transition:opacity var(--dur-fast,.18s) ease}
  html:has(.toast:not(.out)) .mascot-dock{opacity:0;pointer-events:none}
}
/* A4: «Отмена / Сохранить» диалога «Новое событие» — липкий низ листа: на 1024×768 кнопки уходили за край боковой панели */
.pn-foot{position:sticky;bottom:0;z-index:2;margin:0 -4px;padding:10px 4px 2px;background:linear-gradient(180deg,rgba(255,255,255,0),#fff 14px)}

/* ============================================================
   F1 (v1c, 15.10) — папки‑«стекло»: components/folder.js, «Знания → Документы», «Решения → Материалы»
   Система папки 340×272 (+72 px воздуха сверху для поднятых листов), масштаб --s = ширина / 340; задник — градиент бренда,
   листы — бумага, фронт — светлое матовое стекло (белый 55 %, blur 14, saturate 115 %), петля внизу.
   ============================================================ */
.fd{--s:1;position:relative;width:100%;max-width:var(--w,340px);min-width:0}
.fd.open{z-index:6}
.fd-box{position:relative;height:calc(344px * var(--s))}
.fd-stage{position:absolute;left:0;top:0;width:340px;height:344px;transform:scale(var(--s));transform-origin:0 0;pointer-events:none}   /* воздух над папкой не ловит касания — только кнопка папки, листы, стекло открытой папки и ключи */
.fd-tilt{position:absolute;inset:0;transform:perspective(1200px) rotateY(calc(var(--px,0) * 4deg)) rotateX(calc(var(--py,0) * -4deg));transition:transform .5s var(--ease)}
.fd-back{position:absolute;left:0;top:72px;width:340px;height:272px;overflow:visible;pointer-events:none;filter:drop-shadow(0 18px 26px rgba(20,24,40,.13))}
.fd-hit{position:absolute;left:0;top:78px;width:340px;height:266px;z-index:3;padding:0;border:0;border-radius:22px;background:none;cursor:pointer;pointer-events:auto}
.fd-hit:focus-visible{outline:1.5px solid var(--ink);outline-offset:5px}
.fd.open:not(.lm) .fd-hit{pointer-events:none}   /* веер: листы над кнопкой папки; в режиме списка повторное касание папки её закрывает */
.fd-files{position:absolute;left:0;top:72px;width:340px;height:272px;z-index:2;pointer-events:none}
.fd-file{position:absolute;left:34px;top:0;width:272px;height:184px;display:grid;align-content:start;gap:7px;padding:14px 16px;border:0;border-radius:14px;
  background:#fff;color:var(--ink);text-align:left;font:inherit;cursor:pointer;pointer-events:auto;
  box-shadow:0 0 0 1px rgba(18,21,28,.07),0 1px 2px rgba(20,24,40,.05),0 10px 22px -14px rgba(20,24,40,.3);
  transform:translate(var(--rx),var(--ry)) rotate(var(--rr));transition:transform .55s var(--ease) calc(var(--i,0) * 28ms),translate .3s var(--ease),box-shadow .3s var(--ease)}
.fd-file[inert]{pointer-events:none}
.fd.hv:not(.open) .fd-file,.fd:focus-within:not(.open) .fd-file,.fd.open.lm .fd-file{transform:translate(var(--hx),var(--hy)) rotate(var(--hr))}
.fd.open:not(.lm) .fd-file{transform:translate(var(--ox),var(--oy)) rotate(var(--or))}
.fd.open:not(.lm) .fd-file.hv{translate:0 -6px;box-shadow:0 0 0 1px rgba(18,21,28,.1),0 2px 4px rgba(20,24,40,.06),0 18px 30px -16px rgba(20,24,40,.38)}
.fd-file:focus-visible{outline:1.5px solid var(--ink);outline-offset:2px}
.fd-ft{display:flex;align-items:center;gap:8px;min-width:0}
.fd-fk{flex:none;padding:3px 7px;border-radius:99px;background:var(--chip-bg);font:500 var(--fs-cap)/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--kicker)}
.fd-fn{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-sm);font-weight:600;letter-spacing:-.01em}
.fd-fm{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:var(--fs-meta);line-height:1.35;color:var(--ink-2);overflow-wrap:anywhere}
.fd-lines{display:grid;gap:7px;margin-top:4px}
.fd-lines i{display:block;height:6px;border-radius:3px;background:rgba(18,21,28,.06)}
.fd-lines i:nth-child(1){width:92%}.fd-lines i:nth-child(2){width:78%}.fd-lines i:nth-child(3){width:56%}
.fd-front{position:absolute;left:0;top:168px;width:340px;height:176px;z-index:4;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:18px 18px 18px 22px;
  border-radius:22px;background:rgba(255,255,255,.55);-webkit-backdrop-filter:blur(14px) saturate(115%);backdrop-filter:blur(14px) saturate(115%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),inset 0 0 0 1px rgba(255,255,255,.6),0 0 0 1px rgba(18,21,28,.06),0 18px 34px -22px rgba(20,24,40,.35);
  transform-origin:50% 100%;transform:perspective(900px) rotateX(0deg);transition:transform .55s var(--ease);pointer-events:none}
.fd.hv:not(.open) .fd-front,.fd:focus-within:not(.open) .fd-front,.fd.open.lm .fd-front{transform:perspective(900px) rotateX(-11deg)}
.fd.open:not(.lm) .fd-front{transform:perspective(900px) rotateX(-24deg);pointer-events:auto;cursor:pointer}
.fd-lab{display:grid;gap:3px;min-width:0}
.fd-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-title);font-weight:600;letter-spacing:-.015em;color:var(--ink)}
.fd-count{display:inline-grid;overflow:hidden;font-size:var(--fs-meta);line-height:1.4;color:var(--ink-2)}
.fd-count>span{grid-area:1/1}
.fd-count>.in{animation:fdRollIn .45s var(--ease) both}
.fd-count>.gone{animation:fdRollOut .45s var(--ease) both}
@keyframes fdRollIn{from{transform:translateY(100%);opacity:0}}
@keyframes fdRollOut{to{transform:translateY(-100%);opacity:0}}
.fd-keys{display:flex;align-items:center;gap:8px;flex:none;pointer-events:auto}
.fd-add{display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:var(--pill);color:#fff;cursor:pointer;box-shadow:0 10px 22px -12px rgba(20,24,40,.6);transition:transform .3s var(--ease),background .2s}
.fd-add svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.fd-add.hv{background:#262933;transform:translateY(-1px)}
.fd-more{display:flex;align-items:center;justify-content:center;gap:3px;width:36px;height:36px;padding:0;border:0;border-radius:50%;background:#fff;color:var(--ink);cursor:pointer;box-shadow:var(--field-ring),0 4px 10px -6px rgba(20,24,40,.3);transition:transform .3s var(--ease)}
.fd-more i{width:4px;height:4px;border-radius:50%;background:currentColor}
.fd-more.hv{transform:translateY(-1px)}
.fd-add:focus-visible,.fd-more:focus-visible{outline:1.5px solid var(--ink);outline-offset:3px}
.fd-all{display:block;margin:8px auto 0;font-size:var(--fs-meta)}
.fd-list{display:grid;gap:8px;margin-top:10px;padding:2px 2px 6px;animation:materialize var(--dur) var(--ease);--my:-8px}
.fd-list[hidden]{display:none}
.fd-row{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:4px 10px;width:100%;padding:10px 12px;border:0;border-radius:var(--card-r);background:#fff;box-shadow:var(--card-shadow);text-align:left;font:inherit;color:var(--ink);cursor:pointer;transition:box-shadow var(--dur-fast) var(--ease)}
.fd-row:hover,.fd-row:focus-visible{box-shadow:var(--card-shadow-hv)}   /* R3b‑1: документ — карточка со своей тенью; тень плотнее, без сдвига */
.fd-row:focus-visible{outline:1.5px solid var(--ink);outline-offset:-1.5px}
.fd-rk{font:500 var(--fs-cap)/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--kicker)}
.fd-rn{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-sm);font-weight:500}
.fd-rm{grid-column:2;font-size:var(--fs-meta);color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fd-none{margin:0;padding:10px 12px;font-size:var(--fs-meta)}
.fd-pop{width:240px}
.fd-pop .pm-item.danger .pm-l{color:var(--warm-ink)}
@media (prefers-reduced-motion:reduce){
  .fd-tilt,.fd-file,.fd-front{transition:opacity .25s ease}
  .fd .fd-front{transform:none!important}
  .fd .fd-file{transform:translate(var(--rx),var(--ry)) rotate(var(--rr))!important;translate:none!important}
  .fd-tilt{transform:none!important}
  .fd-list{animation:fade .25s ease}
  .fd-count>.in,.fd-count>.gone{animation:none}
}

/* «Знания → Документы»: сегмент «Элементы · Документы», сетка папок (3 · 2 · 1), появление с задержкой 140 мс */
.know-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.know-head h1{margin:0}
.know-docs{display:grid;gap:18px}
.docs-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.docs-top .muted{margin:0;font-size:var(--fs-meta);max-width:62ch}
.fd-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:22px 28px;justify-items:center;padding-top:6px}
@media (min-width:760px){.fd-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1024px){.fd-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.fd-cell{position:relative;width:100%;max-width:340px;min-width:0;animation:materialize var(--dur) var(--ease) backwards;animation-delay:calc(var(--k,0) * 140ms)}
.fd-cell:has(.fd.open){z-index:6}
.fd-new{position:relative;display:block;width:100%;max-width:340px;aspect-ratio:340/344;padding:0;border:0;background:none;color:var(--ink-2);cursor:pointer;font:inherit}
.fd-new svg{position:absolute;left:0;bottom:0;width:100%;height:auto;overflow:visible}
.fd-new path{fill:rgba(255,255,255,.35);stroke:rgba(18,21,28,.22);stroke-width:1.5;stroke-dasharray:6 6;transition:fill .3s var(--ease),stroke .3s var(--ease)}
.fd-new .l{position:absolute;left:0;right:0;top:58%;text-align:center;font-size:var(--fs-sm);font-weight:500;color:var(--ink)}
.fd-new.hv path,.fd-new:focus-visible path{fill:rgba(255,255,255,.7);stroke:rgba(18,21,28,.4)}
.fd-new:focus-visible{outline:none}
@media (prefers-reduced-motion:reduce){.fd-cell{animation:fade .25s ease backwards;animation-delay:calc(var(--k,0) * 140ms)}}
.doc-form .form{display:grid;gap:16px}
.doc-form .doc-del{display:grid;gap:6px;padding:12px 14px;border-radius:var(--card-r);background:none;box-shadow:inset 0 0 0 1px var(--line)}

/* «Решения»: папка «Материалы» рядом с «Почему» (≥ 620 px карточки — две колонки) */
.dcard{container-type:inline-size}
.dc-why-row{display:grid;gap:18px;min-width:0}
.dc-mat{display:grid;justify-items:start;min-width:0}
@container (min-width:620px){.dc-why-row{grid-template-columns:minmax(0,1fr) 260px;align-items:start}}
/* режим списка (телефон, reduced‑motion): воздух над папкой не нужен — листы не поднимаются веером */
.fd.lm .fd-box{height:calc(272px * var(--s))}
.fd.lm .fd-stage{top:calc(-72px * var(--s))}
/* v1d R10 — «Упомянуть элемент»: строки поиска компактнее, без «нет значения» */
.as-ref .item-row{padding:9px 12px;gap:10px}
.as-ref .item-row .nm{font-size:var(--fs-sm)}
.as-ref .item-row .val.muted2{display:none}
.as-ref .item-row .val{font-size:var(--fs-meta)}

/* ============================================================
   v1d R4 + R3 (16.10) — герой «Сейчас» .now-top: карта по центру, вокруг — профиль бизнеса и главные показатели; ниже — сетка D1 (4 виджета).
   Стол ≥ 1280: «Профиль» 260 | карта на своей панели | «Главные показатели» 260, высота ряда clamp(440, 60vh, 640); показатели — вертикальный
   список компактных плиток‑карточек (~76–80 px), лишние — прокрутка внутри колонки без видимой полосы.
   760–1279: карта во всю ширину (окно clamp(400, 52vh, 560)), под ней «Профиль» 300 | лента показателей (4 плитки, узко — вбок).
   Телефон: карта 2D на панели clamp(320, 50vh, 460) → компактный профиль → лента вбок (как раньше).
   Карта: панель‑бумага (шапка: кикер «Карта бизнеса» + подсказка у 2D) → окно на аврору (R3b‑1, --aurora-window) радиус 16 → холст 3D/2D на всю его высоту
   (2D вписывается раскладкой: min(100cqw, 100cqh · --ar), map2d.js сам выбирает крупнее вписанную раскладку).
   ============================================================ */
.now-top{display:grid;gap:16px;min-width:0}
.now-top>*{min-width:0}
/* обновлено: относительное время и пульсирующая точка (2 с; reduced‑motion — без пульса) */
.now-upd{display:inline-flex;align-items:center;gap:8px}
.now-upd[hidden]{display:none}
.upd-dot{width:7px;height:7px;flex:none;border-radius:50%;background:var(--mid);animation:updPulse 2s ease-out infinite}
@keyframes updPulse{0%{box-shadow:0 0 0 0 rgba(61,213,196,.55)}70%,100%{box-shadow:0 0 0 7px rgba(61,213,196,0)}}
@media (prefers-reduced-motion:reduce){.upd-dot{animation:none}}

/* карта на своей панели */
.now-top .now-map{grid-area:map;display:flex;flex-direction:column;gap:0;padding:14px 10px 10px}
.now-top .now-map-hd{justify-content:flex-start;gap:4px 12px;min-height:28px;margin:0 8px 10px}
.map-well{position:relative;flex:1 1 auto;min-height:0;display:grid;place-items:center;border-radius:var(--card-r);background:var(--aurora-window);overflow:hidden;container-type:size}
.map-well>.map-host{min-width:0}
.now-top .map3d,.now-top .map-well>.map3d{align-self:stretch;justify-self:stretch;width:100%;height:100%;margin-inline:0}
/* 3D на холсте героя: подпись области — до двух строк по 92 px (одной строкой соседние пилюли ряда наезжают друг на друга и на 1440 — 627 px, и на 1024 — 844 px);
   холст < 560 (рейл развёрнут на 1440) — одной строкой мельче: двухстрочная выше и ложилась бы на шары среднего ряда */
@container (min-width:560px){.now-top .rxm .rx-lbl{white-space:normal;width:max-content;max-width:92px;padding:5px 9px;border-radius:12px;font-size:11px;line-height:1.15;text-align:center}}
@container (max-width:559.98px){.now-top .rxm .rx-lbl{padding:4px 7px;font-size:10px}}
.map-well>.map2d{width:min(100cqw,calc(100cqh * var(--ar,1.6)));height:auto}
.map-well>.map2d svg.base{display:block}
/* компактная 2D (v1d R4): заголовок области — справа от сферы фокуса, чипы групп — двумя колонками под ней */
.map2d.phone .map-ttl{position:absolute;gap:2px}
.map2d.phone .map-ttl h3{font-size:var(--fs-sm);line-height:1.25}
.map2d.phone .map-chip-list{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px}
.map2d.phone .chip.group{padding:8px 12px;font-size:var(--fs-meta)}

/* профиль бизнеса */
.now-prof{grid-area:prof;display:flex;flex-direction:column;padding:16px 18px 16px}
.now-prof .wh{margin-bottom:10px}
.pf-id{display:grid;gap:6px}
.now-prof p.pf-name{margin:0;font-size:var(--fs-title);font-weight:700;line-height:1.2;letter-spacing:-.02em;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.now-prof p.pf-n{margin:0;font:500 var(--fs-cap)/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}
.pf-cov{display:flex;align-items:center;gap:14px;margin-top:20px}
.pf-ring.ring-box{width:84px;height:84px}
.pf-ring .arc{animation:ringIn 1s var(--ease) both;animation-delay:.25s}
.pf-ct{display:grid;gap:4px;min-width:0}
.now-prof p.pf-cap{margin:0;font-size:var(--fs-sm);font-weight:600;line-height:1.3;color:var(--ink)}
.now-prof p.pf-note{margin:14px 0 0;font-size:var(--fs-sm);line-height:1.4;color:var(--ink-2)}
.pf-gaps{margin-top:16px;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none}
.pf-gaps::-webkit-scrollbar{display:none}
.pf-gaps .row.gap{display:flex;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--line-soft);font-size:var(--fs-meta);line-height:1.4;color:var(--ink-2)}
.pf-gaps .row.gap:first-child{border-top:0}
.pf-gaps .gd{width:6px;height:6px;border-radius:50%;flex:none;background:var(--deep);opacity:.45}
.pf-build{align-self:flex-start;margin-top:16px}
@media (prefers-reduced-motion:reduce){.pf-ring .arc{animation:none}}

/* главные показатели */
.now-top .now-kpi{grid-area:kpi;display:flex;flex-direction:column;min-height:0}
.now-top .now-kpi .kpi-row{flex:1 1 auto}

/* стол ≥ 1280: три колонки, высота ряда фиксирована — профиль и показатели прокручиваются внутри себя */
@media (min-width:1280px){
  .now-top{grid-template-columns:260px minmax(0,1fr) 260px;grid-template-areas:"prof map kpi";height:clamp(440px,60vh,640px)}
  .now-top>*{min-height:0}
  .now-prof .pf-gaps{flex:0 1 auto}
  .now-prof .pf-build{margin-top:auto}
  .now-top .now-kpi{padding:14px 10px 10px;border-radius:var(--panel-radius);background:var(--panel-bg);box-shadow:var(--panel-shadow)}
  .now-top .now-kpi .wh{margin:0 8px 10px}
  .now-top .kpi-set{width:36px;height:36px;padding:0;gap:0}
  .now-top .kpi-set .l{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}   /* подпись — для чтения с экрана, видна в title */
  .now-top .kpi-row{display:flex;flex-direction:column;gap:8px;min-height:0;margin:0 -8px -10px;padding:2px 8px 12px;
    overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;scroll-padding:8px}
  .now-top .kpi-row::-webkit-scrollbar{display:none}
  .now-top .kpi-row>.none{margin:6px}
  .now-top .kpi-row:has(>.none:only-child){background:none;padding:0 8px}
  .now-top .kpi{flex:none;grid-template-columns:minmax(0,1fr) 64px;grid-template-rows:auto auto auto;grid-template-areas:"nm nm" "v sp" "d sp";
    align-items:center;column-gap:10px;row-gap:3px;min-height:76px;padding:10px 12px;border-radius:16px;box-shadow:0 1px 2px rgba(20,24,40,.06),inset 0 0 0 1px var(--line-soft)}
  .now-top .kpi.hv{transform:translateY(-1px);box-shadow:0 1px 2px rgba(20,24,40,.06),inset 0 0 0 1px rgba(18,21,28,.14),0 10px 22px -16px rgba(20,24,40,.35)}
  .now-top .kpi .k-nm{grid-area:nm;display:block;min-height:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25}
  .now-top .kpi .k-v{grid-area:v;flex-wrap:nowrap;min-width:0;overflow:hidden}
  .now-top .kpi .k-v b{font-size:var(--fs-title)}
  .now-top .kpi .k-v .u{overflow:hidden;text-overflow:ellipsis}
  .now-top .kpi .k-d{grid-area:d}
  .now-top .kpi .spark{grid-area:sp;width:64px;height:30px;margin:0;align-self:center}
}
/* 760–1279: карта во всю ширину, под ней профиль 300 | лента */
@media (min-width:760px) and (max-width:1279.98px){
  .now-top{grid-template-columns:300px minmax(0,1fr);grid-template-areas:"map map" "prof kpi";align-items:stretch}
  .now-top .map-well{flex:none;height:clamp(400px,52vh,560px)}
  .now-top .kpi-row{grid-auto-columns:minmax(120px,1fr);gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;margin:-4px -4px 0;padding:4px 4px 6px}
  .now-top .kpi-row::-webkit-scrollbar{display:none}
  .now-top .kpi{scroll-snap-align:start;padding:12px 12px 10px}
  .now-top .now-kpi{justify-content:flex-start}
  .now-top .now-kpi .kpi-row{flex:0 0 auto}
}
/* < 1280: профиль компактной карточкой — название и счёт слева, кольцо справа, один пробел, «Сборка ›» (по высоте — как лента рядом) */
@media (max-width:1279.98px){
  .now-prof{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"hd hd" "id cov" "gaps gaps" "btn btn";column-gap:14px;padding:14px 16px}
  .now-prof>.wh{grid-area:hd;margin-bottom:8px}
  .now-prof .pf-id{grid-area:id;align-self:center}
  .now-prof p.pf-name{font-size:var(--fs-body)}
  .now-prof .pf-cov{grid-area:cov;flex-direction:column;gap:6px;margin:0}
  .now-prof .pf-ring.ring-box{width:60px;height:60px}
  .now-prof .pf-ring .pct{font-size:var(--fs-sm)}
  .now-prof .pf-ct{justify-items:center;text-align:center;max-width:110px}
  .now-prof p.pf-cap{font:500 var(--fs-cap)/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}
  .now-prof.empty-m{grid-template-areas:"hd hd" "id cov" "note note" "btn btn"}
  .now-prof .pf-note{grid-area:note;margin-top:10px}
  .now-prof .pf-gaps{grid-area:gaps;margin-top:12px}
  .now-prof .pf-gaps .row.gap:nth-child(n+2){display:none}
  .now-prof .pf-build{grid-area:btn;justify-self:start;margin-top:12px}
}
/* телефон: стопка — карта 2D на панели, компактный профиль, лента вбок */
@media (max-width:759.98px){
  .now-top{gap:14px}
  .now-top>.now-map,.now-top>.now-prof,.now-top>.now-kpi{grid-area:auto}
  .now-top .now-map{height:clamp(300px,46vh,420px);padding:12px 8px 8px}   /* ревью R5: 46vh — счёт «Профиля» на первом экране над таб‑баром */
  .now-top .now-map-hd{margin:0 8px 8px}
}

/* ============================================================
   v1d R5 (16.10) — пустые состояния виджетов «Сейчас» (components/empty-state.js): вместо строки текста на белой панели — сцена
   (inline SVG: как виджет выглядел бы с данными — кольца, волна, неделя, карточка решения, плитки, пробелы), под ней строка --fs-sm --ink-2 и
   действие (белая пилюля .btn.sm с «+» или ссылка). Бирюза/мята — только в «данных» сцены, альфа ≤ .35 (цвета — в самом компоненте);
   панели без тёмных плашек и градиентов. Движение: materialize при первом показе (.es-in), у волны «Внимания» — дыхание 8 с;
   reduced‑motion — кроссфейд, без дыхания.
   ============================================================ */
.es{display:grid;justify-items:center;align-content:center;gap:12px;grid-column:1/-1;min-width:0;padding:10px 4px 6px;text-align:center}
.es-art{width:100%;max-width:300px;line-height:0}
.es-svg{display:block;width:100%;height:auto;overflow:visible}
.es p.es-tx{margin:0;max-width:34ch;font-size:var(--fs-sm);line-height:1.4;color:var(--ink-2)}
.es .es-act{justify-self:center;margin-top:2px}
.es .btn.sm{gap:8px;padding:9px 16px 9px 13px}
.es .btn.sm .ic{width:14px;height:14px;stroke-width:1.8}
/* виджет сетки: список с одной сценой — без контейнера, сцена по центру высоты ряда (сосед может быть выше) */
.wg-item>.now-w:has(>.rows>.es:only-child){display:flex;flex-direction:column}
:is(.goals-list,.att-list,.up-list,.dec-mini):has(>.es:only-child){flex:1 1 auto;display:grid;align-content:center;padding:0;background:none;overflow:visible}
.es.es-in{--mx:0px;--my:8px;animation:materialize .5s var(--ease) backwards;animation-delay:.16s}
.es-wave{transform-box:fill-box;transform-origin:50% 100%;animation:esBreath 8s ease-in-out infinite}
@keyframes esBreath{0%,100%{opacity:.85;transform:translateY(0) scaleY(1)}50%{opacity:1;transform:translateY(-2px) scaleY(1.06)}}
@media (prefers-reduced-motion:reduce){.es.es-in{animation:fade .3s ease backwards}.es-wave{animation:none}}
/* главные показатели: в ряд (лента 760–1279 и телефон) — горизонтальная сцена; колонка героя ≥ 1280 — столбиком */
.now-kpi>.es{padding:6px 0 2px}
.now-kpi .es-art{max-width:380px}
.now-kpi .es-art .es-v{display:none}
@media (min-width:1280px){
  .now-top .now-kpi>.es{flex:1 1 auto;padding:4px 8px 8px}
  .now-top .now-kpi .es-art{max-width:200px}
  .now-top .now-kpi .es-art .es-v{display:block}
  .now-top .now-kpi .es-art .es-h{display:none}
}
/* профиль: пустая модель — три пунктирных строки‑пробела на карточке‑скелете и подпись слева */
.now-prof>.pf-note{margin-top:16px}
@media (max-width:1279.98px){.now-prof>.pf-note{margin-top:12px}}
.now-prof .pf-note .es{justify-items:start;gap:10px;padding:0;text-align:left}
.now-prof .pf-note .es-art{max-width:none;padding:12px 14px;border-radius:var(--card-r);background:#fff;box-shadow:var(--card-shadow)}   /* R3b‑1: скелет — карточка */
.now-prof .pf-note p.es-tx{font-size:var(--fs-meta)}
/* телефон: маскот угла (56 px над таб‑баром справа) не закрывает кольцо «Профиля» на первом экране — кольцо левее дока */
@media (max-width:759.98px){html.has-mascot .now-top .now-prof .pf-cov{margin-right:40px}html.has-mascot .now-top .now-prof .pf-ct{max-width:96px}}

/* ============================================================
   v1d R3b‑1 (16.10) — материал «свет + аврора» без колодцев (вариант B, docs/superpowers/specs/2026-10-16-depth-light-variants.css;
   токены — css/tokens.css). Лестница: фон со светом (три статичных пятна, body::before) → плита (блик кромки) → панель (градиент, лавандовая
   тень) → карточка (белая, радиус 16, --card-shadow). Средних бледных подложек нет: карточки и плитки лежат прямо на панели, списки строк —
   волосяные разделители, таблицы и сетка «Плана» — белые с волосяной сеткой, формы — волосяной контур --line, сцены и слоты — пунктир.
   Контейнерами с заливкой остаются только сегменты‑переключатели (--chip-bg) и окно карты (аврора). Фон статичный, saturate ≤ 125 %,
   бирюза — только в данных и в окне карты, текст --ink.
   ============================================================ */
/* плита: верх светлее — блик кромки читается (было ровное --plate-bg .42) */
@media (min-width:760px){.app::before{background:linear-gradient(180deg,rgba(255,255,255,.60) 0,rgba(255,255,255,.42) 180px)}}

/* окно карты: углублённый край (тень сверху), светлая кромка снизу; поверх авроры — бирюзовое свечение по краям (--mid 20 %) */
.now-top .map-well{background:radial-gradient(78% 82% at 50% 46%,rgba(61,213,196,0) 58%,rgba(61,213,196,.20) 100%),var(--aurora-window);
  box-shadow:inset 0 2px 4px rgba(18,21,28,.07),inset 0 0 0 1px rgba(255,255,255,.55),inset 0 -1px 0 rgba(255,255,255,.8)}

/* герой «Сейчас» (стол ≥ 1280, три колонки): «Профиль» и «Главные показатели» — стекло пилюль (лёгкий blur над светом), плитки показателей
   остаются бумагой; под стеклом — лаванда за «Профилем» и персик за «Показателями», статично. < 1280 (раскладка другая, света под героем нет)
   и на телефоне — обычные панели‑бумага, без backdrop-filter */
.now-top{position:relative;isolation:isolate}
@media (min-width:1280px){
  .now-top::before{content:"";position:absolute;inset:-28px -40px;z-index:-1;pointer-events:none;background:
    radial-gradient(300px 340px at 230px 50%,rgba(176,188,243,.95) 0%,rgba(204,212,246,0) 72%),
    radial-gradient(300px 340px at calc(100% - 230px) 50%,rgba(244,206,178,.95) 0%,rgba(246,228,212,0) 72%)}
  .now-top>.now-prof,.now-top .now-kpi{background:linear-gradient(180deg,rgba(255,255,255,.68),rgba(255,255,255,.44));
    -webkit-backdrop-filter:blur(16px) saturate(125%);backdrop-filter:blur(16px) saturate(125%);
    box-shadow:var(--glass-edge),0 18px 40px -22px rgba(91,108,240,.22),0 24px 48px -30px rgba(20,24,40,.20)}
}

/* карточки на панели: белые, радиус 16, своя тень; наведение (.hv из press.js) — тень чуть выше */
:is(.goals-list .gring,.up-list .row.up,.dec-mini .row.dm,.alts .alt,.dc-rec,.prop-row.card,.now-top .kpi),
.kpi{background:#fff;border-radius:var(--card-r);box-shadow:var(--card-shadow)}
:is(.goals-list .gring,.up-list .row.up,.dec-mini .row.dm,.alts .alt,.now-top .kpi,.kpi).hv{box-shadow:var(--card-shadow-hv)}
.kpi.hv{transform:translateY(-2px)}
@media (min-width:1280px){.now-top .kpi.hv{transform:translateY(-1px)}}
@media (prefers-reduced-motion:reduce){.kpi.hv,.now-top .kpi.hv{transform:none}}
/* «Сейчас»: цели, «Ближайшее», «Решения» — карточки с зазором 8 px (были строки в колодце); первая карточка без верхней линии — линий нет вовсе */
.goals-list{gap:8px;padding:2px 0 4px}
.up-list,.dec-mini{display:grid;gap:8px;padding:2px 0 4px}
.goals-list button.row.gring,.up-list button.row.up,.dec-mini .row.dm{border-top:0;padding:10px 12px}
/* цели в две колонки на 1440: строка «статус · срок» в одну строку (карточка 270 px — поля 10, зазор кольца 8, зазор статуса 6) */
.goals-list button.row.gring{padding:10px;gap:8px}
.goals-list .gring .gm{column-gap:6px}
.goals-list .gring.hv,.up-list .row.up.hv,.dec-mini .row.dm.hv{transform:translateY(-1px)}
@media (prefers-reduced-motion:reduce){.goals-list .gring.hv,.up-list .row.up.hv,.dec-mini .row.dm.hv{transform:none}}
button.row.gring,button.row.up,.row.dm{transition:color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}
.up-list .row.up.over .ud{background:color-mix(in srgb,var(--warm) 18%,#fff)}
@container (max-width:340px){.up-list button.row.up{padding:9px 12px}}
/* «Решения» — варианты: карточки с зазором 8 px (были строки в колодце) */
.alts{gap:8px;padding:2px 0 4px}
.alts .alt{padding:12px 14px;border-top:0}
/* рекомендация в карточке решения — карточка (была бледная подложка --inset-bg) */
.dc-rec{background:#fff}
/* предложения импорта — карточки на панели (прежде «бумага на сером пузыре» с тенью панели) */
.prop-row.card{background:#fff}

/* формы и сводки внутри форм — волосяной контур --line без заливки (были бледные подложки --inset-bg) */
:is(.alt-ed,.rel-live,.kv-cap){background:none;box-shadow:inset 0 0 0 1px var(--line)}
.alt-ed,.rel-live{border-radius:var(--card-r)}
.aw-ref-list{background:none;box-shadow:inset 0 0 0 1px var(--line)}
.aw-ref-list button.row{border-top-color:var(--line-soft)}

/* скелеты пустых состояний (R5): плитки показателей и карточка решения в сцене — со своей тенью */
.es-svg .es-card{filter:drop-shadow(0 1px 1px rgba(20,24,40,.05)) drop-shadow(0 8px 9px rgba(20,24,40,.10))}


/* ============================================================
   v1d R3b‑2 (16.10) — карта как на сайте: стеклянные шары и статичная аврора (js/map/map3d.js); фокус области раскрывает героя.
   .now-top.map-wide ставит now.js, пока 3D‑карта в фокусе (state > 0). Стол ≥ 1280: колонки «Профиль» и «Главные показатели» схлопываются
   (grid-template-columns 260 → 0 и зазор 16 → 0 за .4 s --ease; содержимое гаснет, по окончании visibility hidden) — панель карты на весь ряд,
   высота героя та же; холст растёт, карта пересчитывает камеру фокуса своим ResizeObserver. Обзор — тем же путём обратно (колонки, потом проявление).
   760–1279 карта и так во всю ширину — класс ничего не меняет. Бюджет backdrop-filter на «Сейчас» ≤ 4: плита, профиль, показатели (≥ 1280), деталь карты
   (только в фокусе — профиль и показатели к этому времени скрыты); подписи, чипы и «Назад» карты — стекло без blur.
   ============================================================ */
@media (min-width:1280px){
  .now-top{transition:grid-template-columns .4s var(--ease),column-gap .4s var(--ease)}
  .now-top>.now-prof,.now-top>.now-kpi{transition:opacity .3s var(--ease) .15s,visibility 0s 0s}
  .now-top.map-wide{grid-template-columns:0px minmax(0,1fr) 0px;column-gap:0}
  .now-top.map-wide>.now-prof,.now-top.map-wide>.now-kpi{opacity:0;visibility:hidden;overflow:hidden;pointer-events:none;transition:opacity .2s var(--ease),visibility 0s .4s}
}
@media (prefers-reduced-motion:reduce){.now-top,.now-top>.now-prof,.now-top>.now-kpi,.now-top.map-wide>.now-prof,.now-top.map-wide>.now-kpi{transition:none}}
