/* app.css — дом7я.рф. Цвета, шрифты, размеры — ТОЛЬКО из tokens.css.
   Фаза 4 (13.10.2026): каркас и компоненты — из макета дизайнера волны 2 (app-v2.css), ниже — карточки волн 1–3 и свои части
   (без старых правил каркаса, которые макет заменил), в конце — части фазы 4 для живого сайта (полоса, панель записи, настройки). */
:root{
  --muted:var(--fg-2); --f-body:var(--font-body); --f-display:var(--font-display); --f-mono:var(--font-mono);
  --r:var(--r-m); --c-bolt:var(--ctx-bolt); --c-kart:var(--ctx-kart); --c-none:var(--ctx-none);
  --c-lich:#C0507E; --c-sys:var(--info); --sec:var(--accent);
}

/* ═══ 1. каркас и компоненты макета (app-v2.css) ═══ */
/* app-v2.css — каркас и компоненты «Дом, семья», фаза 4 (макет 13.10.2026).
   Имена классов совпадают с pult_site/static/app.css, где компонент уже есть (.top, .brand-logo, .bnav, .card, .q-card,
   .chip, .composer, .b-card, .sheet …). Новое помечено «НОВОЕ». Цвета/шрифты — только var(--…) из tokens-v2.css. */


*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;overflow-x:clip;max-width:100%}
body{margin:0;background:var(--bg);color:var(--fg);font:400 var(--fs-m)/1.5 var(--font-body);min-height:100vh;overflow-x:clip;max-width:100%;
  transition:background-color var(--dur)}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer;-webkit-tap-highlight-color:transparent}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--r-xs)}
[hidden]{display:none!important}
.mono,.when{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.when{font-size:var(--fs-xs);color:var(--fg-2)}
svg.i{width:22px;height:22px;flex:0 0 auto}

/* ═══ НОВОЕ: фон — «пиксели» и свет, как на панели G580. Неподвижно (G580: анимации под стеклом съедают ядро) ═══ */
.px-bg{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.px-bg .b1,.px-bg .b2,.px-bg .b3{position:absolute;border-radius:50%}
.px-bg .b1{width:120vmax;height:120vmax;left:-55vmax;top:-70vmax;background:radial-gradient(circle,var(--g1),transparent 60%)}
.px-bg .b2{width:130vmax;height:130vmax;right:-70vmax;top:-30vmax;background:radial-gradient(circle,var(--g2),transparent 60%)}
.px-bg .b3{width:100vmax;height:100vmax;left:10vmax;bottom:-75vmax;background:radial-gradient(circle,var(--g3),transparent 60%)}
.px-bg .d1{position:absolute;inset:0;opacity:var(--dots-op);background-image:radial-gradient(circle,var(--dot) 1.6px,transparent 2.2px);background-size:16px 16px;background-position:center top;
  -webkit-mask-image:radial-gradient(ellipse 85% 55% at 50% 0%,#000 0,rgba(0,0,0,.55) 45%,transparent 100%);mask-image:radial-gradient(ellipse 85% 55% at 50% 0%,#000 0,rgba(0,0,0,.55) 45%,transparent 100%)}
.px-bg .d2{position:absolute;inset:0;opacity:var(--dots-op);background-image:radial-gradient(circle,var(--dot2) 1.3px,transparent 2px);background-size:48px 48px;background-position:center top;
  -webkit-mask-image:radial-gradient(ellipse 70% 60% at 85% 100%,#000 0,transparent 100%);mask-image:radial-gradient(ellipse 70% 60% at 85% 100%,#000 0,transparent 100%)}
[data-px="off"] .px-bg .d1,[data-px="off"] .px-bg .d2{display:none}

.app{position:relative;z-index:1;min-height:100vh}
.side{display:none}

/* ═══ Шапка: логотип — кнопка выбора ПРОЕКТА (B). Рамка логотипа 40×40 одна для всех проектов — ничего не ездит (Д-1) ═══ */
.top{position:relative;z-index:22;height:calc(var(--top-h) + var(--safe-t));padding:var(--safe-t) 12px 0 8px;display:flex;align-items:center;gap:6px}
.brand-logo{display:flex;align-items:center;gap:10px;min-width:0;height:52px;padding:0 10px 0 4px;border:0;border-radius:var(--r-l);background:none;color:var(--fg);text-align:left;flex:0 1 auto}
.brand-logo:active{background:var(--surface-2)}
.brand-logo .mk{width:40px;height:40px;flex:0 0 40px;border-radius:12px;display:grid;place-items:center;overflow:hidden}
.brand-logo .mk svg,.brand-logo .mk img{display:block}
.brand-logo .t{display:grid;line-height:1.15;min-width:0}
.brand-logo .t b{font:var(--fw-strong) 15.5px var(--font-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand-logo .t small{font:400 11.5px var(--font-mono);color:var(--fg-2);white-space:nowrap;display:flex;align-items:center;gap:4px}
.brand-logo .chev{width:14px;height:14px;color:var(--fg-3);transition:transform var(--dur)}
.brand-logo[aria-expanded="true"] .chev{transform:rotate(180deg)}
.top .sp{flex:1}
.ib{width:var(--tap);height:var(--tap);flex:0 0 var(--tap);border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--fg);display:grid;place-items:center;padding:0}
.ib svg{width:20px;height:20px}

/* знаки проектов в рамке 40×40 */
.mk.bolt{background:#FFD019;position:relative} .mk.bolt .m{width:31px;height:36px;margin-top:8px}   /* как значок-талисман панели G580: жёлтый круг/квадрат с талисманом */
.mk.kart{background:#24221F;box-shadow:inset 0 0 0 1px var(--line-2)} .mk.kart img{width:30px;height:27px}
.mk.home{background:var(--p-home);color:#1D2029} .mk.home svg{width:24px;height:24px}
.mk.none{background:var(--p-none);color:#1D2029}   /* R01: свой цвет, не цвет текущего проекта */ .mk.none svg{width:22px;height:22px}
.mk.all{background:conic-gradient(var(--p-bolt) 0 25%,var(--p-kart) 0 50%,var(--p-home) 0 75%,var(--p-none) 0)} .mk.all svg{width:20px;height:20px;color:#1D2029}

/* ═══ НОВОЕ: выбор проекта — шторка (телефон) / выпадающая панель (ПК) ═══ */
.proj-sheet .in{gap:6px}
.pj{display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:64px;padding:10px 12px;border:1.5px solid var(--line);border-radius:var(--r-l);background:var(--surface);text-align:left;color:var(--fg)}
.pj b{display:block;font-weight:600;font-size:16px}
.pj small{display:block;color:var(--fg-2);font-size:13px;line-height:1.35}
.pj .n{font:600 12px var(--font-mono);min-width:26px;height:26px;padding:0 8px;border-radius:13px;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center}
.pj[aria-current="true"]{border-color:var(--fg);box-shadow:0 0 0 1px var(--fg)}
.pj .mk{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;overflow:hidden}
.pj-all{min-height:52px;grid-template-columns:40px minmax(0,1fr) auto;border-style:dashed}

/* ═══ НОВОЕ: прилипающая полоса проекта (C). Одна высота на всех экранах (Д-2). Листается только она. ═══ */
.strip{position:sticky;top:0;z-index:21;height:calc(var(--strip-h) + var(--safe-t)*0);display:flex;align-items:center;gap:6px;
  padding:0 0 0 8px;background:var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.4);backdrop-filter:blur(var(--glass-blur)) saturate(1.4);
  border-bottom:1px solid var(--line)}
.strip.stuck{padding-top:var(--safe-t);height:calc(var(--strip-h) + var(--safe-t))}
.strip .all{flex:0 0 var(--tap);height:var(--tap);border-radius:var(--r-m);border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;padding:0;color:var(--fg)}
.strip .all svg{width:20px;height:20px}
.strip .rail{flex:1;min-width:0;height:100%;display:flex;align-items:center;gap:6px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;
  scrollbar-width:none;padding:0 12px 0 2px;scroll-padding-inline:56px;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent)}
.strip .rail::-webkit-scrollbar{display:none}
/* Дом №1667 (владелец: «пролистать за раз… но не более 2»): полоса встаёт таблеткой по центру, каждая вторая — обязательная
   остановка, так один свайп сдвигает не больше двух таблеток; то же у полос таблеток доски и «Нового» в пульте */
.strip .rail .pill:nth-child(2n),.b-tabs .b-tab:nth-child(2n),.nw-pills .nw-pill:nth-child(2n){scroll-snap-stop:always}
.nw-pills{scroll-snap-type:x mandatory} .nw-pills .nw-pill{scroll-snap-align:center}
.pill{flex:0 0 auto;scroll-snap-align:center;display:inline-flex;align-items:center;gap:7px;height:var(--tap);padding:0 14px;border-radius:var(--r-pill);border:1px solid var(--line);
  background:var(--surface);color:var(--fg-2);font-weight:600;font-size:14px;white-space:nowrap;transition:background var(--dur),color var(--dur)}
.pill .e{font-size:15px}
.pill .n{font:600 11.5px var(--font-mono);min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--sunk);color:var(--fg-2);display:grid;place-items:center}
.pill .n.hot{background:var(--accent);color:var(--accent-ink)}
.pill[aria-selected="true"]{background:var(--ink);border-color:var(--ink);color:var(--ink-fg)}
.pill[aria-selected="true"] .n{background:var(--accent);color:var(--accent-ink)}
/* F07 (аудит тёмной темы, владелец одобрил): в тёмной «чернильные» плашки не белые — мягкий акцент + край акцента */
[data-theme="dark"] .pill[aria-selected="true"],[data-theme="dark"] .chip[aria-pressed="true"],[data-theme="dark"] .b-tab[aria-selected="true"],
[data-theme="dark"] .b-ib[aria-pressed="true"],[data-theme="dark"] .b-head .b-ib[aria-pressed="true"],
[data-theme="dark"] .b-dlg .opts .chip[aria-pressed="true"],[data-theme="dark"] .g-assign .opts .chip[aria-pressed="true"],
[data-theme="dark"] .kd-fbtn[aria-pressed="true"]{background:var(--surface-2);border-color:var(--line-strong);color:var(--fg)}   /* R06: жёлтый край — только у главного */
[data-theme="dark"] .pill[aria-selected="true"]{background:var(--accent-soft);border-color:var(--accent);color:var(--fg)}
[data-theme="dark"] .kd-wform .send,[data-theme="dark"] .b-cancel{background:var(--surface-2);color:var(--fg);box-shadow:inset 0 0 0 1px var(--line-strong)}   /* R03 */
[data-theme="dark"] .btn.ink{background:var(--surface-2);border-color:var(--line-strong);color:var(--fg)}
[data-theme="dark"] .toast,[data-theme="dark"] .fresh-pill{background:var(--surface-2);color:var(--fg);box-shadow:inset 0 0 0 1px var(--line-strong),var(--shadow-2)}
/* F11 (аудит тёмной 19.10): выключенные кнопки — не «мутная» полупрозрачная плита, а тихая плашка; :root — чтобы перебить .qsend / .q-foot */
:root[data-theme="dark"] .btn[disabled],:root[data-theme="dark"] .q-card .q-foot .btn.ink[disabled]{opacity:1;background:var(--surface-2);border-color:var(--line);color:var(--fg-3);box-shadow:none}
:root[data-theme="dark"] .set .row[aria-disabled="true"]{opacity:1;color:var(--fg-3)}
.strip .prog{position:absolute;left:0;right:0;bottom:-1px;height:3px;background:transparent}
.strip .prog i{display:block;height:100%;width:0;background:var(--accent);transition:width .4s var(--ease)}
.strip-sub{font:600 11px var(--font-body);letter-spacing:.07em;text-transform:uppercase;color:var(--fg-3)}

/* ═══ Основная колонка: без горизонтальной прокрутки; свайп по содержимому переключает соседнюю таблетку ═══ */
main.main{position:relative;z-index:1;padding:14px 16px calc(var(--bar-h) + var(--safe-b) + 28px);max-width:var(--content-max);margin:0 auto;touch-action:pan-y;zoom:var(--fs-scale)}
.swipe-area{touch-action:pan-y}
.swipe-area.go-l{animation:goL .22s var(--ease)} .swipe-area.go-r{animation:goR .22s var(--ease)}
/* владелец 13.10: содержимое вбок не ездит — смена колонки/раздела только короткой сменой прозрачности */
@keyframes goL{from{opacity:.35}to{opacity:1}}
@keyframes goR{from{opacity:.35}to{opacity:1}}
.swipe-hint{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;margin:0 0 10px;font-size:12.5px;font-weight:600;color:var(--fg-2)}
.swipe-hint span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.swipe-hint span:last-child{text-align:right}
.swipe-hint .mid{font-weight:500;color:var(--fg-3);padding:2px 8px;border-radius:var(--r-pill);background:var(--sunk)}
.page-h{display:grid;gap:4px;margin:4px 0 14px}
.page-h h1{font:var(--fw-display) var(--fs-h1)/1.15 var(--font-display);letter-spacing:var(--ls-display);text-transform:var(--tt-display);margin:0;text-wrap:balance}
.page-h p{margin:0;color:var(--fg-2);font-size:var(--fs-s);max-width:62ch}

/* ═══ Нижнее меню: «＋» — обычная ячейка ряда (Д-6); подпись «Ещё» не меняется (Д-12) ═══ */
.bnav{position:fixed;left:10px;right:10px;bottom:calc(var(--safe-b) + 10px);z-index:20;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:center;height:var(--bar-h);padding:6px;border-radius:var(--r-xl);
  background:var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.4);backdrop-filter:blur(var(--glass-blur)) saturate(1.4);border:1px solid var(--glass-line);box-shadow:var(--shadow-2)}
.bnav button{position:relative;height:52px;display:grid;justify-items:center;align-content:center;gap:2px;border:0;background:none;border-radius:var(--r-l);color:var(--fg-2);font-size:11px;font-weight:600;padding:0 2px;min-width:0}
.bnav .ico{position:relative;width:26px;height:24px;display:grid;place-items:center}
.bnav .ico svg{width:22px;height:22px}
.bnav button>span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.bnav button[aria-current="page"]{color:var(--fg);background:var(--surface-2)}
.bnav button[aria-current="page"] .ico::after{content:"";position:absolute;left:50%;bottom:-6px;width:18px;height:3px;margin-left:-9px;border-radius:2px;background:var(--accent)}
/* Дом №2238: черта — у низа кнопки, под подписью («Ещё» она перечёркивала); bottom:0, не 2px — иначе вплотную к подписи */
.bnav button[aria-current="page"] .ico::after{content:none}
.bnav button[aria-current="page"]{position:relative}
.bnav button[aria-current="page"]::after{content:"";position:absolute;left:50%;bottom:0;width:18px;height:3px;margin-left:-9px;border-radius:2px;background:var(--accent)}
[data-theme="dark"] .bnav button[aria-current="page"]{background:var(--hover)}
.bnav .badge{position:absolute;top:-6px;left:16px;font:600 10px var(--font-mono);min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;border:2px solid var(--surface)}
.bnav .plus{color:var(--accent-ink)}
.bnav .plus .ico{width:50px;height:30px;border-radius:12px;background:var(--accent);color:var(--accent-ink)}
.bnav .plus .ico svg{width:24px;height:24px}
.bnav .plus>span:last-child{color:var(--fg-2)}
.bnav .plus:active .ico{transform:scale(.94)}
html.kb .bnav{display:none}                                  /* клавиатура открыта — меню прячется (Д-5) */

/* ═══ Карточки и общие части ═══ */
.lbl{font:600 11px var(--font-body);letter-spacing:.07em;text-transform:uppercase;color:var(--fg-3)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,440px),1fr));gap:12px;align-items:start}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);padding:16px;display:flex;flex-direction:column;gap:12px;min-width:0;box-shadow:var(--shadow-1);overflow-wrap:anywhere}
.card h3{font:var(--fw-strong) 16.5px/1.3 var(--font-body);margin:0;text-wrap:balance}
.meta{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:var(--fs-xs);color:var(--fg-2)}
.proj{font:600 11px var(--font-mono);padding:2px 7px;border-radius:6px;border:1px solid var(--line-2);color:var(--fg);white-space:nowrap}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--tap);padding:6px 16px;border-radius:var(--r-m);border:1px solid var(--line-2);background:var(--surface);color:var(--fg);
  font-weight:600;font-size:14.5px;text-decoration:none;text-align:center;white-space:normal;max-width:100%;overflow-wrap:anywhere;line-height:1.25}
.btn:active{transform:scale(.97)}
.btn.main{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.yes{background:var(--yes);border-color:var(--yes);color:var(--yes-ink)}
.btn.no{color:var(--crit)}
.btn.ghost{border-color:transparent;background:none;color:var(--fg-2)}
.btn.ink{background:var(--ink);border-color:var(--ink);color:var(--ink-fg)}
[data-proj="kart"] .btn{border-radius:var(--r-pill)}
[data-proj="kart"] .btn.main{padding-right:6px;gap:12px}
[data-proj="kart"] .btn.main .arr{width:32px;height:32px;border-radius:50%;background:var(--accent-ink);color:var(--accent);display:grid;place-items:center}
.act{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.empty{display:grid;justify-items:center;gap:8px;text-align:center;padding:40px 20px;color:var(--fg-2);border:1.5px dashed var(--line-2);border-radius:var(--r-xl);background:var(--surface-2);position:relative;overflow:hidden}
.empty b{color:var(--fg);font-size:var(--fs-l)}
.empty::before{content:"";position:absolute;inset:0;opacity:.07;background:var(--fg);-webkit-mask:var(--motif) center/160px repeat;mask:var(--motif) center/160px repeat}
[data-proj="bolt"]{--motif:url(img/bolt-tools.svg)} [data-proj="kart"]{--motif:url(kart/kart-pattern-mask.svg)} [data-proj="home"]{--motif:url(img/home-pattern.svg)} [data-proj="none"],[data-proj="all"]{--motif:url(img/none-pattern.svg)}
.empty>*{position:relative}
.steps{display:grid;grid-template-columns:repeat(6,1fr);gap:3px}
.steps s{height:5px;border-radius:3px;background:var(--line)}
.steps s.on{background:var(--c,var(--s-work))}
.st{display:inline-flex;align-items:center;gap:6px;font:700 11px var(--font-body);letter-spacing:.05em;text-transform:uppercase;padding:4px 9px;border-radius:var(--r-xs);color:var(--c);background:color-mix(in srgb,var(--c) 15%,transparent)}

/* ═══ Книжка (чат с собой) ═══ */
.msgs{display:flex;flex-direction:column;gap:8px;max-width:720px;margin:0 auto}
.dsep{align-self:center;margin:10px 0 2px;padding:4px 12px;border-radius:var(--r-pill);background:var(--surface);border:1px solid var(--line);font-size:12.5px;font-weight:600;color:var(--fg-2)}
.bub{align-self:flex-end;max-width:min(86%,520px);display:grid;gap:6px;padding:9px 12px 7px;border-radius:var(--r-l) var(--r-l) 6px var(--r-l);background:var(--accent-soft);border:1px solid var(--line);min-width:0;overflow-wrap:anywhere}
.bub .q{margin:0;font-size:15px;white-space:pre-wrap}
.bub .foot{display:flex;align-items:center;justify-content:flex-end;gap:6px;font:400 11.5px var(--font-mono);color:var(--fg-2)}
.bub .foot i{width:7px;height:7px;border-radius:50%;background:var(--c)}
.bub .to{justify-self:end;font-size:12.5px;color:var(--info);font-weight:600;border:0;background:none;padding:0;min-height:32px}

/* ═══ Строка ввода: ФИКСИРОВАННАЯ высота ряда 56 px при записи/диктовке (Д-3); текст диктовки — над рядом, поверх ленты ═══ */
.composer{position:fixed;left:10px;right:10px;bottom:calc(var(--safe-b) + var(--bar-h) + 18px);z-index:19;display:flex;align-items:center;gap:6px;min-height:58px;padding:6px;border-radius:var(--r-xl);
  background:var(--surface);border:1px solid var(--line-strong);box-shadow:var(--shadow-2)}   /* F06 */
.composer .ib{border:0;background:none;color:var(--fg-2)}
.composer textarea{flex:1;min-width:0;height:44px;max-height:110px;resize:none;border:0;background:none;padding:11px 4px;font-size:15px;line-height:1.4;outline-offset:2px}
.composer .mic,.composer .dk{flex:0 0 var(--tap);height:var(--tap);border-radius:50%;display:grid;place-items:center;padding:0}
.composer .mic{border:0;background:var(--accent);color:var(--accent-ink)}
.composer .dk{border:1.5px solid var(--line-2);background:var(--surface);color:var(--fg)}
.composer .tab{position:absolute;right:14px;top:-30px;height:30px;display:flex;align-items:center;gap:6px;padding:0 12px;border-radius:12px 12px 0 0;background:var(--surface);border:1px solid var(--line);border-bottom:0;font:600 12.5px var(--font-body);color:var(--fg-2)}
.composer .tab i{width:8px;height:8px;border-radius:50%;background:var(--c)}
/* ═══ НОВОЕ: панель записи — одна для 🎤 диктовки и 🎙 голосового (образец: приложение Claude, владелец 13.10 18:15) ═══
   ✕ отмена · волна во всю ширину · [＋ дописать — только голосовое] · ■ стоп · ↑ отправить. Ряд той же высоты (Д-3);
   распознанный текст — над панелью, поверх ленты, ленту не двигает. Волна — живая: высоты столбиков из AnalyserNode
   (getByteTimeDomainData раз в кадр, 44 столбика), в макете — CSS-анимация. */
.composer .vpanel{display:none;flex:1;min-width:0;align-items:center;gap:6px;height:44px}
.composer.is-voice{border-color:var(--line-2);background:var(--surface)}
.composer.is-voice>.ib,.composer.is-voice>textarea,.composer.is-voice>.dk,.composer.is-voice>.mic,.composer.is-voice>.tab{display:none}
.composer.is-voice .vpanel{display:flex}
.vpanel button{flex:0 0 var(--tap);height:var(--tap);border-radius:50%;border:0;display:grid;place-items:center;padding:0}
.vpanel .vx,.vpanel .vstop,.vpanel .vplus{background:var(--sunk);color:var(--fg)}
.vpanel .vx svg,.vpanel .vplus svg{width:20px;height:20px}
.vpanel .vstop i{width:16px;height:16px;border-radius:3px;background:var(--fg)}
.vpanel .vsend{background:var(--accent);color:var(--accent-ink)}
.vpanel .vsend svg{width:22px;height:22px}
.vwave{flex:1;min-width:0;height:36px;display:flex;align-items:center;justify-content:center;gap:3px;overflow:hidden;padding:0 4px}
.vwave s{flex:0 0 3px;height:var(--h);border-radius:2px;background:var(--fg);opacity:.9;animation:wv 1.1s ease-in-out infinite alternate;animation-delay:calc(var(--k)*-73ms)}
@keyframes wv{from{transform:scaleY(.35)}to{transform:scaleY(1)}}
.composer .live{display:none;position:absolute;left:4px;right:4px;bottom:calc(100% + 10px);padding:10px 14px;border-radius:var(--r-l);
  background:color-mix(in srgb,var(--surface) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  box-shadow:var(--shadow-2);font-size:16px;line-height:1.45;font-style:italic;color:var(--fg)}
.composer .live .fresh{opacity:.5}
.composer .live .vt{font:600 12.5px var(--font-mono);font-style:normal;color:var(--crit);display:block;margin-bottom:2px}
.composer.is-voice .live{display:block}
@keyframes pulse{50%{opacity:.35}}
[data-tab-cur="feed"] main.main{padding-bottom:calc(var(--bar-h) + var(--safe-b) + 120px)}
html.kb .composer{bottom:calc(var(--safe-b) + 8px)}

/* ═══ Вопросы — как лист вопросов ⚡💎-🔩-BOLT-BOSS (E) ═══ */
.qgroup{display:grid;gap:10px;margin-bottom:22px}
.qgroup>h2{margin:4px 0 0;font:600 12.5px var(--font-body);letter-spacing:.07em;text-transform:uppercase;color:var(--fg-3);display:flex;gap:8px;align-items:baseline}
.qgroup>h2 b{font:600 12px var(--font-mono);color:var(--fg-2)}
.q-card{gap:12px}
.q-card .head{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:start}
.q-card .num{font:700 13px var(--font-mono);min-width:38px;height:28px;padding:0 8px;border-radius:8px;background:var(--sunk);color:var(--fg);display:grid;place-items:center}
.q-card .ttl{font:var(--fw-strong) 16.5px/1.35 var(--font-body);margin:0;text-wrap:pretty}
.q-card .detail{margin:0;color:var(--fg-2);font-size:14.5px}
.q-card .src{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.doc{display:inline-flex;align-items:center;gap:6px;max-width:100%;min-height:32px;padding:4px 10px;border-radius:var(--r-s);background:var(--sunk);font:500 12.5px var(--font-mono);color:var(--fg-2);overflow:hidden}
.doc span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.opts{display:flex;flex-wrap:wrap;gap:8px}
.opt{min-height:var(--tap);padding:8px 16px;border-radius:22px;border:1.5px solid var(--line-2);background:var(--surface-2);color:var(--fg);font:600 14.5px/1.3 var(--font-body);text-align:left;max-width:100%;overflow-wrap:anywhere}
.opt.rec::after{content:" · советую";color:var(--fg-3);font-weight:500;font-size:12.5px}
.opt[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.opt[aria-pressed="true"].rec::after{color:var(--accent-ink)}
.q-say{position:relative;display:flex;align-items:center;gap:6px;padding:6px;border-radius:var(--r-l);background:var(--sunk);min-height:56px}
.q-say textarea{flex:1;min-width:0;height:44px;resize:none;border:0;background:none;padding:11px 8px;font-size:15px}
.q-say .mic,.q-say .dk{flex:0 0 var(--tap);height:var(--tap);border-radius:50%;display:grid;place-items:center;padding:0}
.q-say .mic{border:0;background:var(--accent);color:var(--accent-ink)}
.q-say .dk{border:1.5px solid var(--line-2);background:var(--surface);color:var(--fg)}
.q-foot{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.q-foot .sp{flex:1}
.q-card.done{border-color:var(--ok);box-shadow:0 0 0 1px var(--ok)}
.q-card.done .num{background:var(--ok);color:var(--surface)}
.q-card .ans{display:flex;gap:8px;align-items:center;font-weight:600;color:var(--ok);font-size:14.5px}
details.solved{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);padding:4px 16px}
details.solved summary{min-height:var(--tap);display:flex;align-items:center;font-weight:600;cursor:pointer}
details.solved ul{margin:0 0 12px;padding-left:18px;color:var(--fg-2);display:grid;gap:4px}

/* ═══ Задачи (доска) ═══ */
.b-card{position:relative;display:grid;gap:8px;padding:12px 14px;border-radius:var(--r-l);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-1);min-width:0;overflow-wrap:anywhere}
.b-card h3{margin:0;font:600 15px/1.35 var(--font-body);padding-right:36px}
.b-card .b-wait{margin:-12px -14px 0;padding:8px 14px;border-radius:var(--r-l) var(--r-l) 0 0;background:var(--accent-soft);font-size:13px;color:var(--fg)}
.b-card .b-wait+h3{padding-right:0}
.b-card .b-wait b{color:var(--accent-text)}
.b-card .b-more{position:absolute;top:4px;right:4px;width:var(--tap);height:var(--tap);border:0;border-radius:50%;background:none;color:var(--fg-3);font-size:18px}
.b-card .b-wait~.b-more{top:auto;bottom:4px}
.b-meta{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;font-size:12.5px;color:var(--fg-2);min-width:0}
.b-meta .who{display:inline-flex;align-items:center;gap:4px;min-width:0;max-width:100%}
.b-meta .who span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.b-tbadge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:6px;background:var(--sunk);font-size:12px;color:var(--fg-2);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.b-foot{display:flex;justify-content:space-between;gap:8px;font:400 12px var(--font-mono);color:var(--fg-3)}
.b-sec{display:grid;gap:8px;margin-bottom:18px}
.b-sec>h2{display:flex;align-items:center;gap:8px;margin:4px 0 2px;font:600 14px var(--font-body)}
.b-sec>h2 .n{font:600 12px var(--font-mono);color:var(--fg-2)}
.b-sec>h2 .dot{width:9px;height:9px;border-radius:50%;background:var(--c)}
.b-list{display:grid;gap:8px}
.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(270px,1fr);gap:12px;overflow-x:auto;padding-bottom:8px;align-items:start;overscroll-behavior-x:contain}
.kanban .col{display:grid;gap:8px;padding:10px;border-radius:var(--r-xl);background:color-mix(in srgb,var(--surface) 55%,transparent);border:1px solid var(--line)}
.kanban .col.is-on{border-color:var(--fg);box-shadow:0 0 0 1px var(--fg)}
.kanban .col>h2{display:flex;align-items:center;gap:8px;margin:2px 4px 4px;font:600 14px var(--font-body)}
.kanban .col>h2 .n{margin-left:auto;font:600 12px var(--font-mono);color:var(--fg-2)}
.seg{display:inline-flex;padding:3px;gap:3px;border-radius:var(--r-pill);background:var(--sunk);box-shadow:inset 0 0 0 1px var(--line-strong)}
.seg button{min-height:40px;padding:0 16px;border:0;border-radius:var(--r-pill);background:none;font-weight:600;color:var(--fg-2)}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--fg);box-shadow:var(--shadow-1)}
.tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}
.tools .sp{flex:1}

/* ═══ Мои дела, Готовые, Хронология, Фото, Новое ═══ */
.todo{display:grid;grid-template-columns:var(--tap) minmax(0,1fr) var(--tap);align-items:center;gap:6px;padding:6px 8px;border-radius:var(--r-l);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-1)}
.todo .ck{width:var(--tap);height:var(--tap);border:0;background:none;display:grid;place-items:center;padding:0}
.todo .ck span{width:24px;height:24px;border-radius:50%;border:2px solid var(--line-2);display:grid;place-items:center;font-size:14px;color:var(--yes-ink)}
.todo .ck[aria-pressed="true"] span{background:var(--yes);border-color:var(--yes)}
.todo .tt{font-size:15px}
.todo .dd{font:400 12px var(--font-mono);color:var(--fg-2)}
.todo .dd.late{color:var(--crit);font-weight:600}
.todo .bell{width:var(--tap);height:var(--tap);border:0;border-radius:50%;background:none;font-size:18px}
.todo-add{display:flex;align-items:center;gap:6px;padding:6px 6px 6px 14px;border-radius:var(--r-l);border:1.5px solid var(--line-2);background:var(--surface);margin-bottom:12px;min-height:58px}
.todo-add input{flex:1;min-width:0;border:0;background:none;height:44px;font-size:15px;text-overflow:ellipsis}
.list{display:grid;gap:8px;max-width:760px}
.g-card .g-top{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:center}
.g-card[data-s="done"]{border-color:var(--s-done);box-shadow:0 0 0 1.5px var(--s-done),var(--shadow-1)}
.res{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-m);padding:12px;display:grid;gap:6px;font-size:14px}
.day{font:var(--fw-display) 15px var(--font-display);text-transform:var(--tt-display);letter-spacing:var(--ls-display);margin:16px 0 8px}
.gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(46%,180px),1fr));gap:8px}
.gi{position:relative;border-radius:var(--r-l);overflow:hidden;aspect-ratio:4/5;border:0;padding:0;background:var(--sunk)}
.gi i{position:absolute;inset:0}
.gi .cap{position:absolute;left:0;right:0;bottom:0;padding:18px 8px 6px;font:500 11px var(--font-mono);color:var(--on-media);background:linear-gradient(transparent,var(--media-shade));text-align:left}
.nrow{display:grid;gap:3px;text-align:left;width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-xl);background:var(--surface);color:var(--fg);min-height:var(--tap)}
.nrow.fresh{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.nrow .t{font-weight:600}
.nrow .b{font-size:14px;color:var(--fg-2)}

/* ═══ Устройства, Приложение ═══ */
.dev{display:grid;grid-template-columns:40px minmax(0,1fr);gap:10px;align-items:center;padding:12px 14px;border-radius:var(--r-l);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-1)}
.dev .ic{width:40px;height:40px;border-radius:12px;background:var(--sunk);display:grid;place-items:center}
.dev b{font-weight:600}
.dev small{display:block;color:var(--fg-2);font-size:12.5px}
.dev .act{grid-column:1/-1;justify-content:flex-end}
.dev.me{border-color:var(--fg);box-shadow:0 0 0 1px var(--fg)}
.appbox{display:grid;gap:12px;max-width:640px}
.ver{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 14px;font-size:14px}
.ver dt{color:var(--fg-2)} .ver dd{margin:0;font-family:var(--font-mono)}
.steps-ol{margin:0;padding-left:20px;display:grid;gap:6px;font-size:14.5px}

/* ═══ НОВОЕ: Настройки (F) ═══ */
.set{display:grid;gap:18px;max-width:720px}
.set section{display:grid;gap:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--shadow-1);scroll-margin-top:80px}
.set h2{margin:0;padding:14px 16px 6px;font:600 12px var(--font-body);letter-spacing:.07em;text-transform:uppercase;color:var(--fg-3)}
.row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 12px;min-height:60px;padding:10px 16px;border-top:1px solid var(--line)}
.set h2+.row{border-top:0}
.row b{font-weight:600;display:block}
.row small{display:block;color:var(--fg-2);font-size:13px;line-height:1.35}
.row.wide{grid-template-columns:minmax(0,1fr)}
/* круг 1, Т-8: ничего в строке настроек не шире карточки (WebView 109) */
.row>*{min-width:0}
.set .btn{white-space:normal;text-align:center;max-width:100%;height:auto;line-height:1.25;padding-top:8px;padding-bottom:8px}
.set .ok-pill,.set .warn-pill{white-space:normal}
.seg3 button{min-width:0;overflow-wrap:anywhere}
/* круг 1, Т-16: зона касания переключателя 56×44 (сама кнопка), дорожка 52×32 рисуется ::before */
.sw{position:relative;width:56px;height:var(--tap);border-radius:16px;border:0;background:none;padding:0;flex:0 0 auto}
.sw::before{content:"";position:absolute;left:2px;top:calc(50% - 16px);width:52px;height:32px;border-radius:16px;background:var(--line-2);box-shadow:inset 0 0 0 1px var(--line-strong);transition:background var(--dur) var(--ease)}
.sw::after{content:"";position:absolute;top:calc(50% - 13px);left:5px;width:26px;height:26px;border-radius:50%;background:var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform var(--dur) var(--ease)}
.sw[aria-checked="true"]::before{background:var(--yes)}
.sw[aria-checked="true"]::after{transform:translateX(20px)}
.sw[aria-checked="true"]::before{box-shadow:none}   /* R04 */
[data-theme="dark"] .sw:not([aria-checked="true"])::after{background:var(--fg-2)}   /* F06: выключенный переключатель виден */
.ok-pill{display:inline-flex;align-items:center;gap:6px;font:600 13px var(--font-body);padding:4px 10px;border-radius:var(--r-pill);background:var(--ok-bg);color:var(--ok);white-space:nowrap}
.warn-pill{display:inline-flex;align-items:center;gap:6px;font:600 13px var(--font-body);padding:4px 10px;border-radius:var(--r-pill);background:var(--warn-bg);color:var(--warn);white-space:nowrap}
.fs-scale{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.fs-scale button{min-height:52px;border-radius:var(--r-m);border:1.5px solid var(--line-2);background:var(--surface-2);font-weight:600}
.fs-scale button[aria-pressed="true"]{border-color:var(--fg);background:var(--surface);box-shadow:0 0 0 1px var(--fg)}
.theme3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.theme3 button{display:grid;gap:6px;justify-items:center;padding:10px 6px;border-radius:var(--r-m);border:1.5px solid var(--line-2);background:var(--surface-2);font-weight:600;font-size:13.5px}
.theme3 button[aria-pressed="true"]{border-color:var(--fg);box-shadow:0 0 0 1px var(--fg)}
.theme3 .sw3{width:100%;max-width:92px;aspect-ratio:16/10;border-radius:8px;border:1px solid var(--line);background-image:radial-gradient(circle,rgba(65,70,96,.45) 1px,transparent 1.6px);background-size:8px 8px}
.theme3 .sw3.l{background-color:#ECEDF1} .theme3 .sw3.d{background-color:#0E1014;background-image:radial-gradient(circle,rgba(255,208,25,.6) 1px,transparent 1.6px)}
.theme3 .sw3.a{background:linear-gradient(110deg,#ECEDF1 50%,#0E1014 50%)}
.quiet{display:flex;gap:8px;align-items:center;font:600 15px var(--font-mono)}
.quiet span{padding:6px 10px;border-radius:var(--r-s);background:var(--sunk)}

/* ═══ Шторки ═══ */
.sheet{position:fixed;inset:0;z-index:40;background:var(--scrim);display:flex;align-items:flex-end;justify-content:center}
.sheet .in{width:100%;max-width:560px;max-height:calc(100% - var(--safe-t) - 24px);overflow:auto;background:var(--bg);border-radius:var(--r-xl) var(--r-xl) 0 0;padding:10px 14px calc(var(--safe-b) + 18px);display:grid;gap:8px;animation:up .28s var(--ease)}
.sheet .grab{width:40px;height:4px;border-radius:2px;background:var(--line-2);justify-self:center;margin-bottom:4px}
.sheet h2{margin:2px 4px 4px;font:var(--fw-display) var(--fs-xl)/1.2 var(--font-display);text-transform:var(--tt-display);letter-spacing:var(--ls-display)}
.sheet .it{display:flex;align-items:center;gap:12px;min-height:56px;padding:0 14px;border:1px solid var(--line);border-radius:var(--r-m);background:var(--surface);font-weight:600;text-align:left;color:var(--fg)}
.sheet .it svg{width:22px;height:22px;color:var(--fg-2)}
.sheet .it .n{margin-left:auto;font:600 12px var(--font-mono);padding:2px 8px;border-radius:10px;background:var(--accent);color:var(--accent-ink)}
.sheet .grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
@keyframes up{from{transform:translateY(30px);opacity:0}to{transform:none;opacity:1}}
.qrec{display:grid;justify-items:center;gap:10px;padding:18px 12px;border-radius:var(--r-xl);background:var(--surface);border:1px solid var(--line)}
.qrec .big{width:96px;height:96px;border-radius:50%;border:0;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;box-shadow:var(--shadow-2)}
.qrec .big svg{width:40px;height:40px}
.qrec .hint{color:var(--fg-2);font-size:var(--fs-s);text-align:center}
.qtext{width:100%;min-height:88px;resize:vertical;border:1px solid var(--line);border-radius:var(--r-l);background:var(--surface);padding:12px 14px;font-size:15px}
.where{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.where button{display:flex;align-items:center;gap:8px;min-height:var(--tap);padding:0 12px;border-radius:var(--r-m);border:1.5px solid var(--line-2);background:var(--surface);font-weight:600;font-size:14px;text-align:left}
.where button i{width:9px;height:9px;border-radius:50%;background:var(--c)}
.where button[aria-pressed="true"]{border-color:var(--fg);box-shadow:0 0 0 1px var(--fg)}
.attach-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.attach-row button{display:grid;justify-items:center;gap:6px;padding:14px 6px;border-radius:var(--r-l);border:1px solid var(--line);background:var(--surface);font-weight:600;font-size:14px}
.attach-row i{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink)}
.attach-row i svg{width:24px;height:24px}
.recent{display:flex;gap:6px;overflow-x:auto;overscroll-behavior-x:contain}
.recent i{flex:0 0 88px;height:110px;border-radius:var(--r-s)}

/* камера: кнопка съёмки всегда в центре, слоты слева/справа зарезервированы (Д-4) */
.cam .ctop{position:absolute;left:0;right:0;top:0;display:flex;justify-content:space-between;padding:calc(var(--safe-t) + 8px) 8px;background:linear-gradient(rgba(0,0,0,.5),transparent)}
.cam .ctop button{width:var(--tap);height:var(--tap);border:0;border-radius:50%;background:rgba(0,0,0,.35);color:#fff;font-size:18px}
.cam .shots{display:flex;gap:6px;overflow-x:auto;padding:8px 12px 0;min-height:60px}
.cam .ctl{display:grid;grid-template-columns:1fr 84px 1fr;align-items:center;padding:14px 20px calc(var(--safe-b) + 20px)}
.cam .shut{width:80px;height:80px;border-radius:50%;border:5px solid #fff;background:#fff;background-clip:content-box;padding:4px;justify-self:center}
.cam .send{justify-self:start;min-width:60px;height:52px;border-radius:26px;border:0;background:var(--accent);color:var(--accent-ink);font-weight:800;padding:0 16px}
.cam .flip{justify-self:end;width:52px;height:52px;border-radius:50%;border:0;background:rgba(255,255,255,.16);color:#fff;display:grid;place-items:center}
.cam .flip svg{width:26px;height:26px}
.cam .hint{text-align:center;font-size:13px;opacity:.8;padding-top:6px}

/* ═══ ПК ≥1024: боковая колонка, полоса прилипает к верху основной колонки ═══ */
@media (min-width:1024px){
  .app{display:grid;grid-template-columns:var(--side-w) minmax(0,1fr)}
  .side{display:flex;flex-direction:column;gap:12px;position:sticky;top:0;height:100vh;overflow:auto;padding:14px 12px;background:var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));border-right:1px solid var(--line);z-index:23}
  .side .brand-logo{width:100%;height:60px;border:1px solid var(--line);background:var(--surface);padding:0 10px}
  .side .brand-logo .chev{margin-left:auto}
  .snav{display:grid;gap:2px}
  .snav button{display:flex;align-items:center;gap:10px;min-height:var(--tap);padding:0 12px;border:0;border-radius:var(--r-m);background:none;color:var(--fg-2);font-weight:600;text-align:left}
  .snav button:hover{background:var(--surface-2);color:var(--fg)}
  .snav button[aria-current="page"]{background:var(--ink);color:var(--ink-fg)}
  .snav .n{margin-left:auto;font:600 11px var(--font-mono);min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center}
  .side-foot{margin-top:auto;display:grid;gap:6px}
  .top,.bnav{display:none}
  .colmain{min-width:0;position:relative}
  .strip{padding:0 16px 0 32px}
  .strip.stuck{padding-top:0;height:var(--strip-h)}
  main.main{padding:22px 32px 48px;width:100%}
  .composer{position:sticky;left:auto;right:auto;bottom:16px;max-width:720px;margin:12px auto 0;width:100%}
  [data-tab-cur="feed"] main.main{padding-bottom:24px}
  .sheet{align-items:center}
  .sheet .in{border-radius:var(--r-xl);max-width:520px}
  .proj-pop{position:fixed;inset:0;z-index:40;background:transparent;display:block}
  .proj-pop .in{position:absolute;left:12px;top:80px;width:360px;max-width:none;border:1px solid var(--line);box-shadow:var(--shadow-2);border-radius:var(--r-xl);animation:none}
  .proj-pop .grab{display:none}
}

/* ═══ Альбомная ориентация телефона (Д-7): шапка ниже, меню — колонкой слева, строка ввода короче ═══ */
@media (orientation:landscape) and (max-height:520px) and (max-width:1023px){
  :root{--top-h:48px; --strip-h:52px}
  .brand-logo{height:44px} .brand-logo .mk{width:34px;height:34px;flex-basis:34px}
  .bnav{left:calc(var(--safe-l,0px) + 8px);right:auto;top:8px;bottom:8px;width:68px;height:auto;grid-template-columns:1fr;grid-template-rows:repeat(5,1fr);padding:4px}
  .bnav button{height:auto}
  .bnav button>span:last-child{display:none}
  .app{padding-left:84px}
  main.main{padding-bottom:24px}
  [data-tab-cur="feed"] main.main{padding-bottom:90px}
  .composer{left:92px;bottom:8px;min-height:52px}
}


/* панель записи в строке ответа под вопросом — тот же вид */
.q-say .vpanel{display:none;flex:1;min-width:0;align-items:center;gap:6px;height:44px}
.q-say.is-voice>.ib,.q-say.is-voice>textarea,.q-say.is-voice>.dk,.q-say.is-voice>.mic{display:none}
.q-say.is-voice{background:var(--surface);box-shadow:0 0 0 1.5px var(--line-2)}
.q-say.is-voice .vpanel{display:flex}
.q-say .live{position:absolute;left:0;right:0;bottom:calc(100% + 8px);z-index:2;padding:10px 14px;border-radius:var(--r-l);background:color-mix(in srgb,var(--surface) 92%,transparent);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--shadow-2);font-size:15.5px;font-style:italic;line-height:1.45}
.q-say .live .fresh{opacity:.5}
.q-say .live .vt{font:600 12.5px var(--font-mono);font-style:normal;color:var(--crit);display:block;margin-bottom:2px}


/* ═══ 2. карточки волн 1–3 и свои части (прежний app.css без заменённого каркаса) ═══ */


/* ---------- Быстрый ввод «＋» ---------- */
.qsheet{position:fixed;inset:0;z-index:48;background:var(--scrim);display:flex;align-items:flex-end;justify-content:center}   /* Дом №1646: над карточкой (.b-panel 45) и «Фокусом» (47), под всплывашкой (50) */
.qsheet .in{width:100%;max-width:560px;height:calc(100% - var(--safe-t) - 28px);background:var(--surface);border-radius:var(--r-xl) var(--r-xl) 0 0;padding:10px 16px calc(var(--safe-b) + 16px);display:flex;flex-direction:column;gap:14px;overflow:auto;animation:up var(--dur-in) var(--ease)}
.qsheet .grab{width:40px;height:4px;border-radius:2px;background:var(--line-2);align-self:center;flex:0 0 auto}
.qhead{display:flex;align-items:center;justify-content:space-between;gap:8px}
.qhead h2{margin:0;font:var(--fw-display) var(--fs-xl)/1.2 var(--font-display);letter-spacing:var(--ls-display)}
.qrec.on{background:var(--crit-bg);border-color:var(--crit-solid)}
.qrec .timer{font:600 32px var(--font-mono);font-variant-numeric:tabular-nums;color:var(--fg);display:flex;align-items:center;gap:10px}
.qrec .timer::before{content:"";width:12px;height:12px;border-radius:50%;background:var(--crit-solid);animation:pulse 1s infinite}
.qrec .wave{display:flex;align-items:center;gap:3px;height:44px;width:100%;justify-content:center;overflow:hidden}
.qrec .wave s{flex:0 0 4px;border-radius:2px;background:var(--crit-solid);opacity:.85}
.qrec .row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.qvoice{display:flex;align-items:center;gap:8px}
.qvoice .voice{flex:1}
.qmedia{display:flex;gap:8px;flex-wrap:wrap}
.qmedia .add svg{width:20px;height:20px;flex:0 0 20px}
.qmedia .add{display:inline-flex;align-items:center;gap:8px;flex:1 1 140px;justify-content:center}
.qthumbs{display:flex;gap:8px;overflow-x:auto;padding-top:6px}
.qthumbs figure{position:relative;margin:0;flex:0 0 auto}
.qthumbs img{width:84px;height:110px;object-fit:cover;border-radius:var(--r-s);border:1px solid var(--line);display:block}
.qthumbs .x{position:absolute;top:-6px;right:-6px;width:28px;height:28px;border-radius:50%;border:2px solid var(--surface);background:var(--ink);color:var(--ink-fg);display:grid;place-items:center;font-size:13px;line-height:1;padding:0}
.qthumbs .x::after{content:"";position:absolute;inset:-8px}
.qctx{display:flex;gap:6px;flex-wrap:wrap}
.qctx .chip[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.qsend{margin-top:auto;display:grid;gap:6px}
.qsend .btn{width:100%;min-height:52px;font-size:16px;border-radius:var(--r-l)}
.qsend .btn[disabled]{opacity:.45;cursor:default}
.toast{position:fixed;left:16px;right:16px;margin:0 auto;width:max-content;bottom:calc(var(--bar-h) + var(--safe-b) + 28px);z-index:50;display:flex;align-items:center;gap:10px;max-width:calc(100% - 32px);padding:12px 16px;border-radius:var(--r-l);background:var(--ink);color:var(--ink-fg);font-weight:600;box-shadow:var(--shadow-2);animation:up var(--dur-in) var(--ease)}
.toast button{border:0;background:none;color:inherit;text-decoration:underline;font-weight:600;min-height:var(--tap)}
@media (min-width:1024px){.qsheet{align-items:center}.qsheet .in{height:auto;max-height:90vh;border-radius:var(--r-xl)}.toast{bottom:28px}}
.side .addbtn{min-height:48px;border-radius:var(--r-l)}
.login .box{position:relative}

.attach{position:fixed;inset:0;z-index:46;background:var(--scrim);display:flex;align-items:flex-end;justify-content:center}
.attach .in{width:100%;max-width:560px;background:var(--surface);border-radius:var(--r-xl) var(--r-xl) 0 0;padding:10px 16px calc(var(--safe-b) + 18px);display:grid;gap:8px;animation:up var(--dur-in) var(--ease)}
.attach .grab{width:40px;height:4px;border-radius:2px;background:var(--line-2);justify-self:center}
.attach .row3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.attach .opt3{display:grid;justify-items:center;gap:6px;padding:16px 6px;border-radius:var(--r-l);border:1px solid var(--line);background:var(--surface-2);font-weight:600;font-size:14px}
.attach .opt3 i{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink);font-style:normal}
.attach .opt3 i svg{width:26px;height:26px}
.attach .opt3 small{font-weight:400;color:var(--fg-2);font-size:12px;text-align:center}
.attach .recent{display:flex;gap:6px;overflow-x:auto}
.attach .recent img{width:78px;height:78px;object-fit:cover;border-radius:var(--r-s);flex:0 0 auto}
.pv{position:fixed;inset:0;z-index:47;background:var(--bg-2);display:flex;flex-direction:column}
.pv .bar{display:flex;align-items:center;justify-content:space-between;padding:calc(var(--safe-t) + 8px) 12px 8px;gap:8px}
.pv .stage{flex:1;min-height:0;display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;padding:0 16px}
.pv .stage img{height:100%;max-height:52vh;width:auto;max-width:86%;object-fit:contain;border-radius:var(--r-l);scroll-snap-align:center;background:var(--sunk)}
.pv .bottom{display:grid;gap:10px;padding:12px 16px calc(var(--safe-b) + 16px);background:var(--surface);border-radius:var(--r-xl) var(--r-xl) 0 0;box-shadow:var(--shadow-2)}
.pv .cap{display:flex;gap:8px;align-items:flex-end}
.pv .cap textarea{flex:1;min-height:var(--tap);resize:none;border:1px solid var(--line);border-radius:var(--r-l);background:var(--surface-2);padding:10px 12px}
.pv .send{flex:0 0 52px;height:52px;border-radius:50%;border:0;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;font-size:22px;font-weight:700}

.attach .recent{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}
.attach .ri{position:relative;flex:0 0 96px;height:120px;border:0;padding:0;border-radius:var(--r-s);overflow:hidden;background:var(--sunk)}
.attach .ri img{width:100%;height:100%;object-fit:cover;display:block}
.attach .ri .ck{position:absolute;top:6px;right:6px;width:26px;height:26px;border-radius:50%;border:2px solid var(--on-media);background:var(--media-shade);color:var(--accent-ink);display:grid;place-items:center;font:700 12px var(--font-mono)}
.attach .ri[aria-pressed="true"] .ck{background:var(--accent);border-color:var(--accent)}
.attach .ri[aria-pressed="true"] img{transform:scale(.9);border-radius:var(--r-xs)}
.attach .ri .du{position:absolute;left:6px;bottom:6px;font:600 11px var(--font-mono);color:var(--on-media);background:var(--media-shade);padding:2px 6px;border-radius:6px}
.attach .selbar .btn{min-height:40px;height:40px;flex:0 0 auto}
.attach .selbar{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:8px}
/* камера */
.cam{position:fixed;inset:0;z-index:48;background:#000;color:var(--on-media);display:flex;flex-direction:column}
.cam .vf{flex:1;min-height:0;position:relative;overflow:hidden}
.cam .vf img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.92}
.cam .ctop{position:absolute;left:0;right:0;top:0;display:flex;justify-content:space-between;align-items:center;padding:calc(var(--safe-t) + 10px) 12px;background:linear-gradient(var(--media-shade),transparent)}
.cam .ctop button{min-width:var(--tap);min-height:var(--tap);border:0;background:none;color:var(--on-media);font-size:20px}
.cam .rtm{display:none;align-items:center;gap:8px;font:600 16px var(--font-mono);background:var(--crit-solid);padding:4px 12px;border-radius:var(--r-pill)}
.cam.recv .rtm{display:flex}
.cam .ctl{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:18px 24px calc(var(--safe-b) + 22px);gap:12px}
.cam .ctl .cth{width:52px;height:52px;border-radius:var(--r-s);object-fit:cover;border:2px solid var(--on-media)}
.cam .shut{width:82px;height:82px;border-radius:50%;border:5px solid var(--on-media);background:var(--on-media);background-clip:content-box;padding:4px}
.cam.recv .shut{background:var(--crit-solid);background-clip:content-box;transform:scale(1.12)}
.cam .flip{justify-self:end;width:var(--tap);height:var(--tap);border-radius:50%;border:0;background:var(--media-shade);color:var(--on-media);font-size:20px}
.cam .hint{text-align:center;font-size:13px;opacity:.85;padding-top:4px}

/* ---------- Книжка = чат с собой ---------- */
.bub .q{font-size:15px}
.bub .tr{font-size:14px;color:var(--fg);border-left:2px solid var(--line-2);padding-left:8px}
.bub .ph{width:220px;max-width:100%;height:auto;aspect-ratio:3/4;object-fit:cover}
.bub .sb figure{flex-basis:70px}.bub .sb img{width:70px;height:124px}
.bub .lcard{display:grid;gap:4px;padding:8px 10px;border-radius:var(--r-s);background:var(--surface);border:1px solid var(--line)}
.bub .foot{display:flex;align-items:center;justify-content:flex-end;gap:6px;font:400 11.5px var(--font-mono);color:var(--fg-2)}
.bub .foot i{width:7px;height:7px;border-radius:50%;background:var(--c)}
.bub .stt{font-family:var(--font-body);font-weight:600;white-space:nowrap}
.bub .stt.ok{color:var(--ok)}.bub .stt.q{color:var(--fg-3)}
.bub .to{justify-self:end;font-size:12.5px;color:var(--info);text-decoration:none;font-weight:600;border:0;background:none;padding:0;min-height:28px;text-align:right}
.bub.queued{opacity:.75;border-style:dashed}
.ctxchip{align-self:flex-end;display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border-radius:var(--r-pill);border:1px solid var(--line);background:var(--surface);font-size:13px;font-weight:600;color:var(--fg-2)}
.composer.inline{display:none}
/* ---------- Мои дела ---------- */
.seg{display:inline-flex;padding:3px;gap:3px;border-radius:var(--r-pill);background:var(--sunk);margin-bottom:14px;box-shadow:inset 0 0 0 1px var(--line-strong)}
.seg button{min-height:40px;padding:0 16px;border:0;border-radius:var(--r-pill);background:none;font-weight:600;color:var(--fg-2)}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--fg);box-shadow:var(--shadow-1)}
.todo-add{display:flex;align-items:center;gap:8px;padding:6px 6px 6px 14px;border-radius:var(--r-l);border:1.5px solid var(--line-2);background:var(--surface);margin-bottom:12px}
.todo-add input{flex:1;min-width:0;border:0;background:none;min-height:var(--tap);font-size:15px}
.todo-add .mic{flex:0 0 var(--tap);height:var(--tap)}
.todos{display:grid;gap:8px;max-width:720px}
.todo{display:grid;grid-template-columns:var(--tap) minmax(0,1fr) var(--tap);align-items:center;gap:6px;padding:6px 8px;border-radius:var(--r-l);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-1)}
.todo .ck{width:var(--tap);height:var(--tap);border:0;background:none;display:grid;place-items:center;padding:0}
.todo .ck span{width:24px;height:24px;border-radius:50%;border:2px solid var(--line-2);display:grid;place-items:center;font-size:14px;color:var(--yes-ink)}
.todo .ck[aria-pressed="true"] span{background:var(--yes);border-color:var(--yes)}
.todo .tt{font-size:15px;overflow-wrap:anywhere}
.todo .dd{font:400 12px var(--font-mono);color:var(--fg-2)}
.todo .dd.late{color:var(--crit);font-weight:600}
.todo.is-done .tt{text-decoration:line-through;color:var(--fg-3)}
.todo .bell{width:var(--tap);height:var(--tap);border:0;border-radius:50%;background:none;color:var(--fg-3);font-size:18px}
.todo .bell[aria-pressed="true"]{color:var(--accent-text);background:var(--accent-soft)}

.snav-mob{display:none}

/* ---------- общие части ---------- */
.lbl{font:600 11px var(--font-body);letter-spacing:.07em;text-transform:uppercase;color:var(--fg-3)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,460px),1fr));gap:12px;align-items:start}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);padding:16px;display:flex;flex-direction:column;gap:12px;min-width:0;box-shadow:var(--shadow-1);animation:rise var(--dur-in) var(--ease) both;animation-delay:calc(var(--i,0)*45ms)}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.card h3{font:var(--fw-strong) 16.5px/1.3 var(--font-body);margin:0;text-wrap:balance;overflow-wrap:anywhere}
.meta{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:var(--fs-xs);color:var(--fg-2)}
.proj{font:600 11px var(--font-mono);padding:2px 7px;border-radius:6px;border:1px solid var(--line-2);color:var(--fg);white-space:nowrap}
.chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 -16px 14px;padding:2px 16px}
.chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 13px;border-radius:var(--r-pill);border:1px solid var(--line);background:var(--surface);font-size:13px;font-weight:500;white-space:nowrap}
.chip b{font:600 12px var(--font-mono)}
.chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--ink-fg)}
.chip .dot{width:9px;height:9px;border-radius:50%}
@media (min-width:1024px){.chips{flex-wrap:wrap;margin:0 0 14px;padding:0}}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--tap);padding:0 16px;border-radius:var(--r-m);border:1px solid var(--line-2);background:var(--surface);color:var(--fg);font-weight:600;font-size:14.5px;white-space:nowrap;text-decoration:none;transition:transform var(--dur) var(--ease)}
.btn:active{transform:scale(.97)}
.btn.yes{background:var(--yes);border-color:var(--yes);color:var(--yes-ink)}
.btn.main{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.no{color:var(--crit)}
.btn.ghost{border-color:transparent;background:none;color:var(--fg-2);padding:0 10px}
.btn.tg{background:var(--tg);border-color:var(--tg);color:var(--tg-ink)}
.act{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.act .sp{flex:1}
@media (max-width:480px){.act.stack .btn{flex:1 1 auto}}
.empty{display:grid;justify-items:center;gap:8px;text-align:center;padding:40px 20px;color:var(--fg-2);border:1.5px dashed var(--line-2);border-radius:var(--r-xl);background:var(--surface-2)}
.empty b{color:var(--fg);font-size:var(--fs-l)}
.empty svg{width:40px;height:40px;color:var(--fg-3)}
.banner{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--r-l);margin-bottom:14px;font-size:var(--fs-s)}
.banner.err{background:var(--crit-bg);color:var(--crit)}
.banner.off{background:var(--warn-bg);color:var(--warn)}
.banner b{display:block;color:var(--fg)}
.sk{border-radius:var(--r-xl);background:var(--surface);border:1px solid var(--line);padding:16px;display:grid;gap:10px}
.sk i{display:block;height:12px;border-radius:6px;background:var(--skeleton);animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{50%{opacity:.45}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* голос — капсула */
.voice{display:flex;align-items:center;gap:10px;background:var(--sunk);border-radius:var(--r-pill);padding:4px 14px 4px 4px;max-width:100%;min-width:0}
.voice button{flex:0 0 36px;height:36px;border-radius:50%;border:0;background:var(--ink);color:var(--ink-fg);display:grid;place-items:center}
.voice button svg{width:14px;height:14px;fill:currentColor}
.voice .w{display:flex;align-items:center;gap:2px;height:24px;flex:1;min-width:50px;overflow:hidden}
.voice .w s{flex:0 0 3px;border-radius:2px;background:var(--fg-3);opacity:.6}
.voice .w s.p{background:var(--accent-text);opacity:1}
.voice .t{font:400 12px var(--font-mono);color:var(--fg-2);white-space:nowrap}
.q{margin:0;font-size:14.5px;overflow-wrap:anywhere}
.clamp{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.more{justify-self:start;border:0;background:none;padding:0;color:var(--accent-text);font-weight:600;font-size:13px;min-height:28px}
.ph{width:76px;height:76px;border-radius:var(--r-s);object-fit:cover;background:var(--sunk);cursor:zoom-in;border:1px solid var(--line)}
.ph.big{width:100%;height:auto;max-height:260px;aspect-ratio:auto}
/* раскадровка */
.sb{display:grid;gap:6px;min-width:0}
.sb .frames{display:flex;gap:6px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:4px;scrollbar-width:thin}
.sb figure{margin:0;flex:0 0 84px;scroll-snap-align:start;display:grid;gap:3px}
.sb img{width:84px;height:150px;object-fit:cover;border-radius:var(--r-xs);background:var(--sunk);display:block;cursor:zoom-in}
.sb figcaption{font:400 11px var(--font-mono);color:var(--fg-2);text-align:center}
.sb .bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:var(--fs-xs);color:var(--fg-2)}

/* запись (источник) */
.src{display:grid;gap:8px;border-top:1px dashed var(--line);padding-top:12px;min-width:0}
.rec{display:grid;grid-template-columns:30px minmax(0,1fr);gap:4px 10px;align-items:start;min-width:0}
.rec .k{width:30px;height:30px;border-radius:var(--r-xs);background:var(--sunk);display:grid;place-items:center;font-size:14px}
.rec .body{display:grid;gap:6px;min-width:0}
.link{font:400 13px var(--font-mono);color:var(--info);overflow-wrap:anywhere;text-decoration:none}

/* ---------- Разобрать ---------- */
.sum{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 16px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);padding:16px;margin-bottom:14px;box-shadow:var(--shadow-1)}
.sum h2{margin:0;font:var(--fw-strong) 16px/1.3 var(--font-body)}
.nums{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:13.5px;color:var(--fg-2);margin-top:4px}
.nums b{font:600 14px var(--font-mono);color:var(--fg)}
.nums .ask b{color:var(--accent-text)}
@media (max-width:560px){.sum{grid-template-columns:minmax(0,1fr)}}
.type{display:inline-flex;align-items:center;gap:6px;font:700 11.5px var(--font-body);letter-spacing:.05em;text-transform:uppercase;padding:4px 9px;border-radius:var(--r-xs)}
.t-new{background:var(--warn-bg);color:var(--warn)} .t-att{background:var(--info-bg);color:var(--info)} .t-mrg{background:var(--mrg-bg);color:var(--mrg)}
.t-add{background:var(--ok-bg);color:var(--ok)} .t-q{background:var(--sunk);color:var(--fg-2)} .t-auto{background:var(--sunk);color:var(--fg)}
.head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.conf{display:inline-flex;align-items:center;gap:7px;font-size:var(--fs-xs);color:var(--fg-2)}
.conf i{display:inline-flex;gap:2px}
.conf i s{width:7px;height:10px;border-radius:2px;background:var(--line-2)}
.conf i s.on{background:var(--fg)}
.conf b{font:600 12px var(--font-mono);color:var(--fg)}
.fields{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 12px;margin:0;font-size:14px}
.fields dt{color:var(--fg-2);font-size:13px}
.fields dd{margin:0;overflow-wrap:anywhere}
@media (max-width:560px){.fields{grid-template-columns:minmax(0,1fr)}.fields dd{margin-bottom:6px}}
.target{display:flex;align-items:center;gap:10px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-m);padding:10px 12px;font-size:14px}
.target>span:first-child{flex:1;min-width:0}
.why{font-size:13.5px;color:var(--fg-2);margin:0}
.why b{color:var(--fg)}
.newbox{background:var(--accent-soft);border-radius:var(--r-m);padding:10px 12px;font-size:14px}
.arrow{justify-self:center;color:var(--fg-2);font-size:13px}
.merge{display:grid;gap:6px}
.decided{background:transparent;border-style:dashed;box-shadow:none;padding-block:12px}
.decided h3{font-size:14.5px;color:var(--fg-2)}
.okline{color:var(--ok);font-weight:600}

/* ---------- Готовые задачи / Задачи ---------- */
.steps{display:grid;grid-template-columns:repeat(6,1fr);gap:3px}
.steps s{height:5px;border-radius:3px;background:var(--line)}
.steps s.on{background:var(--c,var(--s-work))}
.st{display:inline-flex;align-items:center;gap:6px;font:700 11.5px var(--font-body);letter-spacing:.05em;text-transform:uppercase;padding:4px 9px;border-radius:var(--r-xs);color:var(--c);background:color-mix(in srgb,var(--c) 15%,transparent)}
.st::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--c)}
.tk,.b-card .steps{--c:var(--s-prop)}
.tk[data-s="appr"],.b-card[data-s="appr"] .steps{--c:var(--s-appr)} .tk[data-s="form"],.b-card[data-s="form"] .steps{--c:var(--s-form)} .tk[data-s="sent"],.b-card[data-s="sent"] .steps{--c:var(--s-sent)}
.tk[data-s="work"],.b-card[data-s="work"] .steps{--c:var(--s-work)} .tk[data-s="done"],.b-card[data-s="done"] .steps{--c:var(--s-done)} .tk[data-s="acc"],.b-card[data-s="acc"] .steps{--c:var(--s-acc)}   /* F02: полоса шагов карточки доски — цвет статуса */
.tk[data-s="done"]{border-color:var(--s-done);box-shadow:0 0 0 1.5px var(--s-done),var(--shadow-1)}
.tk[data-s="acc"]{background:var(--ok-bg);border-color:transparent}
.wait{font:600 12.5px var(--font-body);color:var(--accent-text)}
.ex{display:flex;align-items:center;gap:10px;font-size:14px;flex-wrap:wrap}
.ex .av{width:32px;height:32px;border-radius:10px;background:var(--sunk);display:grid;place-items:center}
.crit{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.crit li{display:grid;grid-template-columns:20px minmax(0,1fr);gap:8px;font-size:14px;overflow-wrap:anywhere}
.crit li::before{content:"";width:16px;height:16px;margin-top:2px;border-radius:5px;border:1.5px solid var(--line-2);background:var(--surface)}
.crit li.ok::before{background:var(--ok);border-color:var(--ok);box-shadow:inset 0 0 0 3px var(--surface)}
.res{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-m);padding:12px;display:grid;gap:8px}
.res .shots{display:flex;gap:6px;overflow-x:auto}
.res .shots img{width:80px;height:142px;object-fit:cover;border-radius:var(--r-xs);flex:0 0 auto;cursor:zoom-in}
.assign .opts{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}

/* ---------- Вопросы ---------- */
.qa{border-left:0}
.qa .ask{font:var(--fw-strong) 17.5px/1.35 var(--font-body);margin:0;text-wrap:pretty}
.opts-q{display:grid;gap:8px}
.pending{font-size:13.5px;padding:10px 12px;border-radius:var(--r-m);background:var(--info-bg);color:var(--info)}
.qmeta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

/* ---------- Книжка, Фото, Хронология, Переписка ---------- */
.day{font:var(--fw-display) 15px var(--font-display);margin:18px 0 10px;display:flex;gap:10px;align-items:baseline}
.day small{font:400 13px var(--font-body);color:var(--fg-2)}
.gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(46%,170px),1fr));gap:8px}
.gi{position:relative;border-radius:var(--r-l);overflow:hidden;background:var(--sunk);aspect-ratio:4/5;border:0;padding:0;cursor:zoom-in}
.gi img{width:100%;height:100%;object-fit:cover;display:block}
.gi .cap{position:absolute;left:0;right:0;bottom:0;padding:18px 8px 6px;font:500 11px var(--font-mono);color:var(--on-media);background:linear-gradient(transparent,var(--media-shade));text-align:left}
.gi .kind{position:absolute;top:6px;left:6px;font:600 10.5px var(--font-body);letter-spacing:.05em;text-transform:uppercase;color:var(--on-media);background:var(--media-shade);padding:3px 7px;border-radius:6px}
.tl{list-style:none;margin:0;padding:0 0 0 18px;border-left:2px solid var(--line);display:grid;gap:14px}
.tl li{position:relative;display:grid;gap:3px;font-size:14px}
.tl li::before{content:"";position:absolute;left:-25px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--line-2);border:2px solid var(--bg)}
.tl li.own::before{background:var(--accent)} .tl li.team::before{background:var(--s-work)} .tl li.res::before{background:var(--s-done)}
.tl .h{font:400 12px var(--font-mono);color:var(--fg-2)} .tl .h b{font-family:var(--font-body);color:var(--fg);font-weight:600}
.tl .x{overflow-wrap:anywhere}
.tl li.own .x{background:var(--accent-soft);padding:8px 10px;border-radius:var(--r-s)}
.tl .z{font-size:12.5px;color:var(--fg-2)}
.threads{display:grid;gap:8px}
.th{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;text-align:left;padding:12px 14px;border-radius:var(--r-l);border:1px solid var(--line);background:var(--surface);min-height:var(--tap)}
.th[aria-current="true"]{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.th b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.th span{grid-column:1/-1;color:var(--fg-2);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat{display:grid;gap:8px}
.msg{display:grid;gap:2px;max-width:88%;padding:9px 12px;border-radius:var(--r-l);font-size:14.5px;overflow-wrap:anywhere}
.msg.own{justify-self:end;background:var(--accent-soft);border-bottom-right-radius:6px}
.msg.team{justify-self:start;background:var(--surface-2);border:1px solid var(--line);border-bottom-left-radius:6px}
.msg .who{font:600 12px var(--font-body);color:var(--fg-2)}

/* ---------- Вход ---------- */
.login{position:relative;z-index:1;min-height:100vh;display:grid;place-items:center;padding:24px 16px}
.login .box{width:min(420px,100%);background:var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-line);border-radius:28px;box-shadow:var(--shadow-2);padding:28px 22px;display:grid;gap:16px;text-align:center;justify-items:center}
.login h1{font:var(--fw-display) var(--fs-hero)/1.05 var(--font-display);letter-spacing:var(--ls-display);margin:0}
.login p{margin:0;color:var(--fg-2)}
.login .btn.tg{width:100%;min-height:56px;font-size:16px;border-radius:var(--r-l)}
.login .btn.tg svg{width:22px;height:22px;fill:currentColor}
.login .fine{font-size:12.5px;color:var(--fg-3)}
.login .fine .mono{white-space:nowrap}   /* DESIGN 14.10: «/вход» не рвётся после слеша на 360 */
/* фаза 5, 1.1 + DESIGN 14.10: картинки сверки — две плитки со словами, шаги 1-2-3, предупреждение */
.login .match{display:flex;gap:12px;justify-content:center;margin:2px 0}
.login .match .pic{width:112px;height:112px;display:grid;place-items:center;align-content:center;gap:4px;border-radius:var(--r-l);
  background:var(--surface);border:1.5px solid var(--line-2);box-shadow:var(--shadow-1)}
.login .match .pic b{font:400 56px/1 "Noto Color Emoji","Apple Color Emoji","Segoe UI Emoji",sans-serif}
.login .match .pic span{font:600 15px var(--font-body);color:var(--fg-2)}
.login .match-h{font:600 var(--fs-l) var(--font-body);color:var(--fg);margin:0;text-align:center}
.login-steps{display:grid;gap:8px;width:100%;text-align:left;margin:0;padding:0;list-style:none;font-size:var(--fs-m);color:var(--fg)}
.login-steps li{display:grid;grid-template-columns:24px 1fr;gap:10px;align-items:start}
.login-steps .n{width:24px;height:24px;border-radius:50%;background:var(--accent);color:var(--accent-ink);font:700 13px/24px var(--font-body);text-align:center}
.login-steps li.done{color:var(--fg-2)} .login-steps li.done .n{background:var(--ok-bg);color:var(--ok)}
.login .warn-n{display:flex;gap:8px;align-items:flex-start;text-align:left;font-size:var(--fs-s);color:var(--fg-2);background:var(--warn-bg);border-radius:var(--r-m);padding:10px 12px;margin:0}
.login .warn-n svg{width:18px;height:18px;flex:none;color:var(--warn)}
.login-steps .n{display:grid;place-items:center} .login-steps .n svg{width:14px;height:14px}
.login .ttl-n{font:400 13px var(--font-mono);color:var(--fg-3);text-align:center;margin:0}
@media (max-width:360px){.login .match .pic{width:96px;height:96px}.login .match .pic b{font-size:48px}}
.login .logos{display:flex;gap:14px;align-items:center;justify-content:center}
.login .state{width:100%}

/* ---------- Telegram Mini App (data-shell="tg") ---------- */
[data-shell="tg"]{--safe-t:0px;--safe-b:18px}
[data-shell="tg"] .top{top:0}
[data-shell="tg"] .top [data-themebtn]{display:none}
[data-shell="tg"] .app{max-width:480px;margin:0 auto;display:block}
[data-shell="tg"] .side{display:none}
[data-shell="tg"] .top{display:block}
[data-shell="tg"] .bnav{display:grid!important;left:max(10px,calc(50% - 230px));right:max(10px,calc(50% - 230px))}
[data-shell="tg"] main.main{padding:14px 12px calc(var(--bar-h) + var(--safe-b) + 28px)}
[data-shell="tg"] .two{display:block}
[data-shell="tg"] .two>.aside{display:none}

/* лайтбокс */
dialog{border:0;padding:0;background:var(--surface);color:var(--fg);border-radius:var(--r-xl);width:min(560px,94vw);max-height:92vh}
dialog::backdrop{background:var(--scrim)}
.lb{display:grid;gap:10px;padding:12px}
.lb img{width:100%;max-height:70vh;object-fit:contain;border-radius:var(--r-s);background:var(--bg-2)}
.lb .bar{display:flex;justify-content:space-between;align-items:center;gap:8px}

/* ── 3. карточки волн 1–3 ── */
/* app.css — раскладка и компоненты пульта (перенесены из артефакта pult-zadach.html). Цвета — только var(--…) из tokens.css. */
.stats{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.stat{display:flex;align-items:baseline;gap:6px;padding:4px 10px;border-radius:999px;background:var(--surface);border:1px solid var(--line);font-size:13px}
.stat b{font:600 15px var(--f-mono);font-variant-numeric:tabular-nums}
.filters{display:flex;flex-wrap:wrap;gap:6px;margin-block:14px}
.spill{font:600 11.5px var(--f-body);letter-spacing:.04em;text-transform:uppercase;padding:2px 8px;border-radius:5px}
.st-done{background:var(--ok-bg);color:var(--ok)} .st-work{background:var(--info-bg);color:var(--info)}
.st-choice{background:var(--warn-bg);color:var(--warn)} .st-new{background:var(--sunk);color:var(--muted)} .st-block{background:var(--crit-bg);color:var(--crit)}
.desc{margin:0;white-space:pre-line;overflow-wrap:anywhere}
.result{background:var(--sunk);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:6px}
.result .lbl{font:600 11.5px var(--f-body);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.links{display:flex;flex-wrap:wrap;gap:6px}
.links a{font:500 13px var(--f-body);color:var(--fg);text-decoration:none;padding:5px 10px;border-radius:7px;border:1px solid var(--line);background:var(--surface);cursor:pointer;overflow-wrap:anywhere}
.links a.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.src{display:flex;flex-direction:column;gap:6px}
.srcitem{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13px}
audio{width:100%;max-width:100%;height:36px}
.text{font-size:14px;color:var(--fg);overflow-wrap:anywhere}
.text.clamp{display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}
.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px}
.thumbs img,.thumbs video{width:100%;aspect-ratio:1;object-fit:cover;border-radius:7px;background:var(--sunk);cursor:zoom-in;max-width:100%}
.note{display:flex;flex-direction:column;gap:6px}
.note textarea{width:100%;min-height:58px;resize:vertical;font:14px/1.4 var(--f-body);padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--fg)}
.note .saved{font-size:12px;color:var(--muted)}
.skip{opacity:.55}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(46%,200px),1fr));gap:8px}
.gitem{position:relative;border-radius:9px;overflow:hidden;background:var(--sunk);aspect-ratio:4/5;max-width:100%;cursor:zoom-in;border:0;padding:0}
.gitem img,.gitem video{width:100%;height:100%;object-fit:cover;display:block}
.gitem .cap{position:absolute;left:0;right:0;bottom:0;padding:6px 8px;font:500 11.5px var(--f-mono);color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.72))}
.gitem .kind{position:absolute;top:6px;left:6px;font:600 10.5px var(--f-body);letter-spacing:.05em;text-transform:uppercase;color:#fff;background:rgba(0,0,0,.55);padding:2px 6px;border-radius:4px}
.status{font-size:12.5px;color:var(--muted);margin-top:6px}
.who{font:600 12.5px var(--f-body);color:var(--fg)} .who b{color:var(--accent)}
.thread{display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--line);padding-top:10px}
.thread .lbl{font:600 11.5px var(--f-body);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.cmt{padding:8px 11px;border-radius:9px;background:var(--sunk);max-width:92%;display:flex;flex-direction:column;gap:2px}
.cmt.owner{background:var(--warn-bg);align-self:flex-end}
.cmt .by{font:600 12px var(--f-body);color:var(--muted)} .cmt .by .when{margin-left:6px}
.cmt .tx{white-space:pre-line;overflow-wrap:anywhere;font-size:14px}
.compose{display:flex;flex-direction:column;gap:6px}
.compose textarea{width:100%;min-height:52px;resize:vertical;font:14px/1.4 var(--f-body);padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--fg)}
.compose .row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.btn.primary,.links a.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.linkbox{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.linkbox input{flex:1 1 220px;min-width:0;font:12.5px var(--f-mono);padding:5px 8px;border-radius:7px;border:1px solid var(--line);background:var(--bg);color:var(--fg)}
.focusbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-block:14px;padding:10px 12px;border-radius:9px;background:var(--info-bg);color:var(--info);font-size:14px}
.card.hl{outline:2px solid var(--accent);outline-offset:2px}
.card.done{background:var(--ok-bg);border-color:var(--ok)}
.card.done h3::before{content:"✓ ";color:var(--ok)}
.donebox{display:inline-flex;align-items:center;gap:5px;font:600 12.5px var(--f-body);color:var(--fg);cursor:pointer;padding:2px 8px;border:1px solid var(--line);border-radius:999px;background:var(--surface)}
.donebox input{accent-color:var(--ok);margin:0}
.selbox{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--accent);cursor:pointer}
.card.picked{outline:2px dashed var(--accent);outline-offset:2px}
.card.group{border:2px solid var(--accent)}
.subs{display:flex;flex-direction:column;gap:6px}
.subs details{border:1px solid var(--line);border-radius:8px;background:var(--bg)}
.subs summary{cursor:pointer;padding:8px 10px;display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:14px}
.subs summary .sum{flex-basis:100%;color:var(--muted);font-size:13px}
.subs details>.card{border:0;border-top:1px solid var(--line);border-radius:0 0 8px 8px}
.subs .ok{color:var(--ok);font-weight:700}
.teamlast{border-left:3px solid var(--info);background:var(--info-bg);padding:7px 10px;border-radius:0 8px 8px 0;font-size:14px;white-space:pre-line;overflow-wrap:anywhere}
.teamlast b{font-size:12px;color:var(--info)}
.selbar{display:flex;flex-direction:column;gap:8px;margin-block:10px;padding:10px 12px;border-radius:9px;border:1px solid var(--accent);background:var(--surface)}
.selbar input,.selbar textarea,.assignbox select{font:14px var(--f-body);padding:6px 9px;border-radius:7px;border:1px solid var(--line);background:var(--bg);color:var(--fg);width:100%}
.assignbox{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.assignbox select{flex:1 1 220px;width:auto}
.cmt .thumbs{max-width:320px}
.cmt audio{max-width:320px}
.cmt .links a{font-size:12px;padding:3px 8px}
/* ===== волна 3: вкладки «Разобрать» (r-) и «Готовые задачи» (g-) — по макету ⚡-🔩-BOLT-DESIGN 11.10 ===== */
.r-act{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.r-act .sp{flex:1}
.r-act .btn,.g-assign .btn,.r-sum .btn{font:600 14px var(--f-body);min-height:40px;padding:0 14px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}
.btn[disabled]{opacity:.55;cursor:default}
.r-sum{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 16px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin-top:14px}
.r-sum h2{margin:0;font:700 16px/1.3 var(--f-display)}
.r-sum .nums{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13.5px;color:var(--muted);margin-top:4px}
.r-sum .nums b{font:600 14px var(--f-mono);color:var(--fg)}
.r-sum .nums .ask b{color:var(--accent)}
@media (max-width:560px){.r-sum{grid-template-columns:minmax(0,1fr)} .r-fields{grid-template-columns:minmax(0,1fr)} .r-fields dd{margin-bottom:6px}}
.r-type{display:inline-flex;align-items:center;gap:6px;font:700 12px var(--f-body);letter-spacing:.04em;text-transform:uppercase;padding:3px 9px 3px 7px;border-radius:6px}
.t-new{background:var(--warn-bg);color:var(--warn)} .t-att{background:var(--info-bg);color:var(--info)} .t-mrg{background:var(--mrg-bg);color:var(--mrg)}
.t-add{background:var(--ok-bg);color:var(--ok)} .t-q{background:var(--sunk);color:var(--muted)} .t-auto{background:var(--sunk);color:var(--fg)}
.r-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.r-conf{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted)}
.r-conf i{display:inline-flex;gap:2px}
.r-conf i s{width:8px;height:10px;border-radius:2px;background:var(--line)}
.r-conf i s.on{background:var(--fg)}
.r-conf b{font:600 12.5px var(--f-mono);color:var(--fg)}
.r-fields{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 12px;margin:0;font-size:14px}
.r-fields dt{color:var(--muted);font-size:13px}
.r-fields dd{margin:0;overflow-wrap:anywhere;white-space:pre-line}
.r-target{display:flex;align-items:center;gap:10px;background:var(--sunk);border-radius:8px;padding:10px 12px;font-size:14px}
.r-target>span:first-child{flex:1;min-width:0}.r-target .proj{flex:0 0 auto}
.r-target b{font-weight:600}
.r-merge{display:grid;gap:6px}
.r-arrow{justify-self:center;color:var(--muted);font-size:13px}
.r-new{background:var(--warn-bg);color:var(--fg);border-radius:8px;padding:10px 12px;font-size:14px;white-space:pre-line;overflow-wrap:anywhere}
.r-why{font-size:13.5px;color:var(--muted);margin:0;overflow-wrap:anywhere}
.r-why b{color:var(--fg);font-weight:600}
.r-src{display:grid;gap:8px;border-top:1px dashed var(--line);padding-top:12px;min-width:0}
.r-rec{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 10px;align-items:start;min-width:0}
.r-rec .k{width:28px;height:28px;border-radius:8px;background:var(--sunk);display:grid;place-items:center;font-size:14px;grid-row:span 2}
.r-rec .q{font-size:14px;overflow-wrap:anywhere;margin:0}
.r-rec .q.clamp{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.r-rec .bot{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0}
.r-ph{width:72px;height:72px;border-radius:8px;object-fit:cover;background:var(--sunk);cursor:zoom-in}
.r-pick{border:1px solid var(--line);border-radius:9px;overflow:hidden}
.r-pick .s{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--sunk)}
.r-pick .s input{flex:1;min-width:0;font:14px var(--f-body);padding:6px 8px;border-radius:7px;border:1px solid var(--line);background:var(--bg);color:var(--fg)}
.r-pick button{display:flex;width:100%;align-items:center;gap:10px;padding:10px 12px;border:0;border-top:1px solid var(--line);background:var(--surface);color:var(--fg);font:14px var(--f-body);text-align:left;cursor:pointer}
.r-pick button span:first-child{flex:1;min-width:0}.r-pick .proj{flex:0 0 auto}
.r-pick button em{font-style:normal;color:var(--accent);font-weight:600}
.r-done{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:14px}
.r-done .ok{color:var(--ok);font-weight:600} .r-done .x{color:var(--crit);font-weight:600} .r-done .rp{color:var(--muted);font-weight:600}
.card.decided{background:transparent;border-style:dashed;padding-block:10px}
.card.decided h3{font-size:14.5px;color:var(--muted)}
.r-wait{font-size:13.5px;padding:8px 12px;border-radius:8px;background:var(--info-bg);color:var(--info)}
.r-err{font-size:13.5px;padding:8px 12px;border-radius:8px;background:var(--crit-bg);color:var(--crit);overflow-wrap:anywhere}
.g-flow{display:flex;flex-wrap:wrap;gap:6px;margin-block:14px}
.g-flow .dot{width:9px;height:9px;border-radius:50%}
.g-flow .arr{color:var(--muted);align-self:center;font-size:12px}
.g-steps{display:grid;grid-template-columns:repeat(6,1fr);gap:3px}
.g-steps s{height:5px;border-radius:3px;background:var(--line)}
.g-steps s.on{background:var(--c)}
.g-st{display:inline-flex;align-items:center;gap:6px;font:700 12px var(--f-body);letter-spacing:.04em;text-transform:uppercase;padding:3px 9px;border-radius:6px;color:var(--c);background:color-mix(in srgb,var(--c) 14%,transparent)}
.g-st::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--c)}
.g-card{--c:var(--s-prop)}
.g-card[data-s="appr"]{--c:var(--s-appr)} .g-card[data-s="form"]{--c:var(--s-form)} .g-card[data-s="sent"]{--c:var(--s-sent)}
.g-card[data-s="work"]{--c:var(--s-work)} .g-card[data-s="done"]{--c:var(--s-done)} .g-card[data-s="acc"]{--c:var(--s-acc)}
.g-card[data-s="done"]{border-color:var(--s-done);box-shadow:0 0 0 1px var(--s-done)}
.g-card[data-s="acc"]{background:var(--ok-bg);border-color:transparent}
.g-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.g-wait{font:600 12.5px var(--f-body);color:var(--accent)}
.g-ex{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:14px}
.g-ex .av{width:30px;height:30px;border-radius:9px;background:var(--sunk);display:grid;place-items:center;font-size:15px}
.g-ex b{font-weight:600}
.g-ex .none{color:var(--accent);font-weight:600}
.g-crit{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.g-crit li{display:grid;grid-template-columns:20px minmax(0,1fr);gap:8px;font-size:14px;align-items:start;overflow-wrap:anywhere}
.g-crit li::before{content:"";width:16px;height:16px;margin-top:2px;border-radius:5px;border:1.5px solid var(--line);background:var(--surface)}
.g-crit li.ok::before{background:var(--ok);border-color:var(--ok);box-shadow:inset 0 0 0 3px var(--surface)}
.g-chat{display:grid;gap:8px;border-top:1px dashed var(--line);padding-top:12px}
.g-msg{display:grid;gap:2px;max-width:92%;padding:8px 12px;border-radius:12px;font-size:14px;white-space:pre-line;overflow-wrap:anywhere}
.g-msg.own{justify-self:end;background:var(--warn-bg);border-bottom-right-radius:4px}
.g-msg.team{justify-self:start;background:var(--sunk);border-bottom-left-radius:4px}
.g-msg .who{font:600 12px var(--f-body);color:var(--muted);white-space:normal}
.g-res{background:var(--sunk);border-radius:9px;padding:12px;display:grid;gap:8px}
.g-res p{margin:0;font-size:14px;white-space:pre-line;overflow-wrap:anywhere}
.g-assign{display:grid;gap:6px}
.g-assign .opts{display:flex;flex-wrap:wrap;gap:6px}
.g-assign .opts .chip[aria-pressed="true"]{background:var(--fg);border-color:var(--fg);color:var(--bg)}
.g-ans{display:grid;gap:6px}
.g-ans textarea{width:100%;min-height:48px;resize:vertical;font:14px/1.4 var(--f-body);padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--fg)}
.tlx{border-top:1px dashed var(--line);padding-top:10px}
.tlx summary{cursor:pointer;font:600 13px var(--f-body);color:var(--muted);list-style-position:inside}
.tlx ol{list-style:none;margin:10px 0 0;padding:0 0 0 14px;border-left:2px solid var(--line);display:grid;gap:10px}
.tlx li{position:relative;display:grid;gap:2px;font-size:13.5px;overflow-wrap:anywhere}
.tlx li::before{content:"";position:absolute;left:-20px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--line);border:2px solid var(--surface)}
.tlx li.own::before{background:var(--accent)} .tlx li.team::before{background:var(--info)} .tlx li.res::before{background:var(--ok)}
.tlx .h{font:400 12px var(--f-mono);color:var(--muted)} .tlx .h b{font-family:var(--f-body);color:var(--fg);font-weight:600}
.tlx .x{white-space:pre-line}
.tlx .x.why,.ch-list .x.why{color:var(--muted);font-size:12.5px;font-style:italic;background:none;padding:0}
.tlx li.own .x{background:var(--warn-bg);padding:6px 9px;border-radius:8px}

/* ═══ сайт дом7я.рф: оболочка, две раскладки ═══════════════════════════════════════════════════════════
                                 нижняя панель вкладок с «Ещё», отступы под вырезы экрана, крупные касания. */


/* контекст на карточке: одно касание — меню из 5 вариантов */

/* вопросы */
.q-text{font:600 16px/1.35 var(--f-body);margin:0;white-space:pre-line;overflow-wrap:anywhere}
.q-opts{display:flex;flex-wrap:wrap;gap:8px}
.q-opts .btn{min-height:42px;padding:0 14px;font:600 14px var(--f-body);border-radius:10px}
.q-ans{display:grid;gap:6px}
.q-ans textarea{width:100%;min-height:52px;resize:vertical;font:14px/1.4 var(--f-body);padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--fg)}

/* хронология (лента событий всех задач) */
.ch-day{font:700 14px var(--f-display);margin:20px 0 8px;color:var(--fg)}
.ch-list{list-style:none;margin:0;padding:0 0 0 16px;border-left:2px solid var(--line);display:grid;gap:10px}
.ch-list li{position:relative;display:grid;gap:3px;font-size:14px;background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:9px 12px;overflow-wrap:anywhere}
.ch-list li::before{content:"";position:absolute;left:-23px;top:14px;width:10px;height:10px;border-radius:50%;background:var(--line);border:2px solid var(--bg)}
.ch-list li.own::before{background:var(--accent)} .ch-list li.team::before{background:var(--info)} .ch-list li.res::before{background:var(--ok)}
.ch-list li.own .x{background:var(--warn-bg);padding:6px 9px;border-radius:8px}
.ch-list .h{font:400 12px var(--f-mono);color:var(--muted);display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center}
.ch-list .h b{font-family:var(--f-body);color:var(--fg)}
.ch-list .task{font:600 13px var(--f-body);color:var(--fg);background:none;border:0;padding:0;cursor:pointer;text-align:left;text-decoration:underline;text-decoration-color:var(--line)}
.ch-list .x{white-space:pre-line}
.pending{font-size:12px;color:var(--info)}
.cmt.wait,.g-msg.wait{outline:1px dashed var(--info)}
.mo{font-size:12.5px;color:var(--muted)}

/* ── десктоп ── */

/* ── мобильная (оболочка приложения) ── */
.q-ans .r-act{align-items:center}
.q-ans .btn{min-height:40px;height:auto;align-self:center}
/* ═══ сайт дом7я.рф — свои части поверх макета дизайнеров (волна Б) ═══ */
.sprite{position:absolute;width:0;height:0;overflow:hidden}
#composer-host{display:none}
.view{min-width:0}
.status{font-size:12.5px;color:var(--fg-3);margin:18px 0 0}
.sub,.mo{color:var(--fg-2);font-size:13px}
.pending{font-size:13px}
.login .state:empty{display:none}
.login .state{padding:12px 14px;border-radius:var(--r-l);background:var(--surface-2);border:1px solid var(--line);font-size:14px;text-align:left}
.login .state.err{background:var(--crit-bg);color:var(--crit);border-color:transparent}
.login .state.ok{background:var(--info-bg);color:var(--info);border-color:transparent}
.login-wait{display:grid;gap:10px;width:100%}
.login-wait .code{font:600 22px var(--font-mono);letter-spacing:.08em}
.login-wait .btn{width:100%}
.spin{display:inline-block;width:14px;height:14px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:spin .9s linear infinite;vertical-align:-2px;margin-right:6px}
@keyframes spin{to{transform:rotate(360deg)}}

/* раздел (контекст) на карточке — одно касание */
.cxb{display:inline-flex;align-items:center;gap:6px;font:600 12px var(--font-body);padding:3px 10px;min-height:28px;border-radius:var(--r-pill);border:1px solid var(--line-2);color:var(--fg);background:var(--surface);cursor:pointer}
.cxb::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--c,var(--fg-3))}
.cxb.wait{border-style:dashed}
.ctx-menu{position:fixed;z-index:60;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--shadow-2);padding:6px;display:grid;gap:2px;min-width:220px}
.ctx-menu button{display:flex;align-items:center;gap:10px;min-height:var(--tap);padding:0 12px;border:0;border-radius:var(--r-s);background:none;color:var(--fg);font:500 14.5px var(--font-body);text-align:left}
.ctx-menu button:hover,.ctx-menu button:focus-visible{background:var(--surface-2)}
.ctx-menu button i{width:10px;height:10px;border-radius:50%;background:var(--c)}
.ctx-menu .t{font:600 11px var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:var(--fg-3);padding:6px 12px 2px}

/* книжка = чат */
.feed-top{display:flex;justify-content:center;margin:4px 0 6px}
.bub{position:relative;touch-action:pan-y;user-select:text;transition:transform .15s var(--ease)}
.bub.tg{border-style:solid}
.bub.hl{box-shadow:0 0 0 2px var(--accent)}
.bub .qt{display:grid;gap:1px;border-left:3px solid var(--accent-text);background:var(--surface);border-radius:var(--r-xs);padding:4px 8px;font-size:12.5px;color:var(--fg-2);cursor:pointer;text-align:left;border-top:0;border-right:0;border-bottom:0;min-height:var(--tap)}
.bub .qt b{color:var(--fg);font-weight:600}
.bub .ph{width:220px;max-width:100%;height:auto;aspect-ratio:auto;max-height:320px;object-fit:cover;border-radius:var(--r-s);cursor:zoom-in}
.bub .alb{display:grid;grid-template-columns:repeat(2,minmax(0,110px));gap:4px}
.bub .alb .ph{width:100%;height:110px;aspect-ratio:1}
.bub .alb .more{position:relative}
.bub .fileline{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--r-s);background:var(--surface);border:1px solid var(--line);font-size:14px;overflow-wrap:anywhere}
.bub .prog{height:4px;border-radius:2px;background:var(--line);overflow:hidden}
.bub .prog i{display:block;height:100%;background:var(--accent-text);width:0}
.bub .stline{justify-self:end;font-size:12px;color:var(--fg-2);text-align:right}
.bub .warn{font-size:12.5px;color:var(--warn);font-weight:600}
.bub .err{font-size:12.5px;color:var(--crit);font-weight:600}
.bub .btn.mini{min-height:34px;padding:0 12px;font-size:13px;justify-self:end}
.bub .via{font-size:11px}
.bub .q{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}
.bub .q.clamp12{display:-webkit-box;-webkit-line-clamp:12;-webkit-box-orient:vertical;overflow:hidden}
.bub.reply{border-radius:var(--r-l) var(--r-l) 6px var(--r-l)}
.side .addbtn svg{width:20px;height:20px;flex:0 0 20px}
.msgs{padding-bottom:8px}
.msgmenu{position:fixed;z-index:61;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--shadow-2);padding:6px;display:grid;gap:2px;min-width:230px}
.msgmenu button{display:flex;align-items:center;gap:10px;min-height:var(--tap);padding:0 12px;border:0;border-radius:var(--r-s);background:none;color:var(--fg);font:500 14.5px var(--font-body);text-align:left}
.msgmenu button:hover{background:var(--surface-2)}
.msgmenu .det{font:400 12px var(--font-mono);color:var(--fg-2);padding:6px 12px;white-space:pre-line}
.replybar{flex:1 1 100%;order:-2;display:flex;align-items:center;gap:8px;padding:4px 6px 4px 10px;border-left:3px solid var(--accent-text);border-radius:var(--r-xs);background:var(--surface-2);font-size:13px;color:var(--fg-2);min-width:0}
.replybar span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.replybar button{flex:0 0 var(--tap);height:var(--tap);border:0;background:none;color:var(--fg-2);font-size:16px}
.composer textarea{overflow-y:auto;scrollbar-width:none}
.composer .snd{flex:0 0 var(--tap);height:var(--tap);border-radius:50%;border:0;background:var(--accent);color:var(--accent-ink);font-size:20px;font-weight:800;display:grid;place-items:center}
.sheet-items{display:grid;gap:6px}

/* шторка «＋», скрепка, превью, камера — живые части */
.qrec .big svg{stroke:currentColor}
.attach .recent:empty{display:none}
.pv .stage img,.pv .stage video{height:100%;max-height:52vh;width:auto;max-width:86%;object-fit:contain;border-radius:var(--r-l);scroll-snap-align:center;background:var(--sunk)}
.pv .stage .fcard{flex:0 0 auto;align-self:center;display:grid;gap:6px;padding:16px;border-radius:var(--r-l);background:var(--surface);border:1px solid var(--line);max-width:80%}
.pv .bar b{font-weight:600}
.cam video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#000}
.cam .shots{position:absolute;right:12px;bottom:12px;display:flex;gap:4px}
.cam .shots img{width:44px;height:44px;object-fit:cover;border-radius:var(--r-xs);border:2px solid var(--on-media)}
.cam .ctl .send{justify-self:start;min-width:52px;height:52px;border-radius:26px;border:0;background:var(--accent);color:var(--accent-ink);font-weight:800;padding:0 14px}
.cam .ctl .ph0{width:52px}
.cam .msg{position:absolute;inset:auto 16px 16px 16px;text-align:center;font-size:14px}
.toast{max-width:min(560px,calc(100% - 32px))}

/* Мои дела, устройства, приложение */
.todo .tt{cursor:text}
/* «Когда?» (Дом №1431, макет дом7я-дела-дата): дата словами — кнопка, панель выбора даты и времени. Префикс dt- (у .when/.parsed есть общие правила) */
.todo .dt-when{display:inline-flex;align-items:center;gap:6px;min-height:32px;margin:2px 0 0 -8px;padding:0 10px 0 8px;border:0;border-radius:999px;background:none;color:var(--fg-2);font:500 13px var(--font-body);cursor:pointer;max-width:100%}
.todo .dt-when svg{width:16px;height:16px;flex:none}
.todo .dt-when:hover{background:var(--sunk)}
.todo .dt-when.set{color:var(--fg)}
.todo .dt-when.set b{font-weight:700}
.todo .dt-when.late{color:var(--crit);font-weight:600}
.todo .dt-when .bel{color:var(--accent-text,var(--fg-2))}
.todo .dt-when .bel svg{width:14px;height:14px;vertical-align:-2px}
.todo .dt-when.none{border:1px dashed var(--line-2)}
.todo .bell{display:grid;place-items:center}
.todo .bell svg{width:22px;height:22px}
.dt-parsed{display:flex;align-items:center;gap:10px;margin:-4px 2px 12px;padding:10px 12px;border-radius:14px;background:var(--accent-soft);color:var(--fg)}
.dt-parsed svg{width:18px;height:18px;flex:none}
.dt-parsed b{font-weight:700}.dt-parsed>span{flex:1;min-width:0}
.dt-parsed .dt-fix{margin-left:auto;min-height:36px;padding:0 14px;border-radius:999px;border:1px solid var(--line-2);background:var(--surface);color:var(--fg);font:600 13px var(--font-body)}
.sheet.dt .sheet-items{gap:14px}
.dt-title{margin:-4px 4px 0;color:var(--fg-2);font-size:14px;overflow-wrap:anywhere}
.dt-sec{display:grid;gap:8px;min-width:0}
.dt-sec>h3{margin:0 4px;font:700 12px var(--font-body);letter-spacing:.04em;text-transform:uppercase;color:var(--fg-3)}
.dt-quick{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.dt-chip{display:grid;align-content:center;gap:1px;min-height:56px;padding:6px 14px;border:1.5px solid var(--line);border-radius:16px;background:var(--surface);color:var(--fg);text-align:left;font:600 15px var(--font-body);cursor:pointer;transition:transform .1s,border-color .15s}
.dt-chip small{font:500 12px var(--font-mono);color:var(--fg-3)}
.dt-chip:active{transform:scale(.97)}
.dt-chip[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft);color:var(--fg)}
.dt-chip[aria-pressed="true"] small{color:var(--fg-2)}
.dt-chip.off{color:var(--fg-2)}
.dt-days{display:flex;gap:6px;overflow-x:auto;scroll-snap-type:x mandatory;padding:2px 2px 6px;margin:0 -2px;scrollbar-width:none}
.dt-days::-webkit-scrollbar{display:none}
.dt-day{position:relative;flex:0 0 52px;height:64px;scroll-snap-align:start;display:grid;place-items:center;align-content:center;gap:0;border:1.5px solid var(--line);border-radius:14px;background:var(--surface);color:var(--fg);cursor:pointer;font:inherit;padding:0}
.dt-day small{font:600 11px var(--font-body);color:var(--fg-3);text-transform:uppercase}
.dt-day b{font:700 20px/1.1 var(--font-display)}
.dt-day.we small{color:var(--crit)}
.dt-day[aria-pressed="true"],.dt-day.more.picked{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.dt-day[aria-pressed="true"] small,.dt-day.more.picked small{color:var(--accent-ink)}
.dt-day.more{flex-basis:64px}
.dt-day.more svg{width:22px;height:22px}
.dt-times{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.dt-tm{position:relative;min-height:48px;border:1.5px solid var(--line);border-radius:14px;background:var(--surface);color:var(--fg);font:600 16px var(--font-mono);cursor:pointer;padding:0}
.dt-tm[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.dt-tm.own{font:600 14px var(--font-body);grid-column:span 2;display:flex;align-items:center;justify-content:center;gap:6px}
.dt-tm.own svg{width:18px;height:18px}
.dt-tm.nt{font:600 14px var(--font-body);grid-column:span 2;color:var(--fg-2)}
.dt-tm.nt[aria-pressed="true"]{color:var(--accent-ink)}
.dt-native{position:absolute;left:0;bottom:0;width:1px;height:1px;opacity:0;pointer-events:none;border:0;padding:0}
.dt-bell{display:flex;align-items:center;gap:12px;min-height:60px;padding:6px 8px 6px 14px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.dt-bell>svg{width:22px;height:22px;color:var(--fg-2);flex:none}
.dt-bell>span:not(.dt-swh){flex:1;display:grid;min-width:0}
.dt-bell b{font-weight:600}
.dt-bell small{color:var(--fg-3);font-size:12px}
.dt-foot{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:center;position:sticky;bottom:calc(-18px - var(--safe-b,0px));background:var(--bg);padding:10px 0 4px;margin-top:2px}
.dt-sum{grid-column:1/-1;margin:0 4px;font-size:14px;color:var(--fg-2)}
.dt-sum b{color:var(--fg)}
.dt-clear{min-height:52px;padding:0 16px;border-radius:999px;border:1px solid var(--line-2);background:none;color:var(--fg-2);font:600 15px var(--font-body)}
.dt-ok{min-height:52px;border-radius:999px;border:0;background:var(--accent);color:var(--accent-ink);font:700 16px var(--font-body)}
@media (min-width:900px){.sheet.dt{align-items:center}.sheet.dt .in{max-width:520px;border-radius:var(--r-xl)}}
.todo.wait{opacity:.8;border-style:dashed}
.devs{display:grid;gap:8px;max-width:720px}
.page-h .act{margin-top:6px}
.appbox{display:grid;gap:12px;max-width:640px}
.appbox .btn{justify-self:start}
.linkout{font:13px var(--font-mono);padding:8px 10px;border-radius:var(--r-s);background:var(--surface-2);border:1px solid var(--line);overflow-wrap:anywhere}

/* старые карточки на новых токенах */
.card.hl{outline:2px solid var(--accent);outline-offset:2px}
.thumbs img{border:1px solid var(--line)}
.cmt.owner,.g-msg.own{background:var(--accent-soft)}
.teamlast{border-left-color:var(--s-work)}
details.tlx summary{min-height:var(--tap);display:flex;align-items:center}
.gallery .gitem{border-radius:var(--r-l)}
.lb #lb-media img{width:100%;max-height:70vh;object-fit:contain;border-radius:var(--r-s);background:var(--bg-2)}
.lb .text{white-space:pre-line;font-size:14px}
@media (max-width:1023px){dialog{width:100vw;max-width:100vw;height:100vh;max-height:100vh;border-radius:0}}

/* ═══ 1.0.2 (фаза 2–3): переход по уведомлению, «Новое для вас», поиск, ответы команды в книжке, клавиатура.
   Только функциональный минимум на токенах темы — внешний вид доводит дизайнер в фазе 4. ═══ */
.nf-hl{outline:3px solid var(--accent);outline-offset:3px;animation:nfhl 1s ease 3}
@keyframes nfhl{50%{outline-color:transparent}}
.teamrep{margin-top:8px;display:grid;gap:6px}
.teamrep .tr1{border-left:3px solid var(--info);background:var(--info-bg);border-radius:8px;padding:6px 8px;font-size:14px;color:var(--fg)}
.teamrep .tr1 .by{font-size:12px;color:var(--fg-2);margin-bottom:2px}
.teamrep .tr1 .btn.mini{margin-top:4px;min-height:32px}
.newlist,.slist{display:grid;gap:8px;padding-bottom:120px}
.nrow,.srow{display:grid;gap:3px;text-align:left;width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-xl);background:var(--surface);color:var(--fg);font:inherit;cursor:pointer}
.nrow.fresh{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.nrow .t,.srow .t{font-weight:600;overflow-wrap:anywhere}
.nrow .b,.srow .b{font-size:14px;color:var(--fg-2);overflow-wrap:anywhere}
.nrow .when,.srow .k{font-size:12px;color:var(--fg-2)}
.srow mark{background:var(--accent-soft);color:var(--fg);border-radius:3px;padding:0 1px}
.search{position:fixed;inset:0;z-index:60;background:var(--bg);overflow-y:auto;padding:calc(var(--safe-t) + 10px) 12px 16px}
.search .in{max-width:760px;margin:0 auto}
.search .sbar{position:sticky;top:0;z-index:1;display:flex;gap:8px;align-items:center;background:var(--bg);padding:4px 0 8px}
.search .sbar input{flex:1;min-width:0;min-height:var(--tap);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);color:var(--fg);padding:0 14px;font-size:16px}
.search-side{width:100%;justify-content:flex-start;margin-bottom:8px}
.search-btn{font-size:17px;padding:0}
.top-row .search-btn{margin-left:auto}
.top-row .search-btn + .theme-btn{margin-left:6px}
/* Видео владельца 13.10 17:08 («Вопросы», Redmi): при прокрутке пальцем страница уезжала вбок на пустое место на 3–5 с.
   Причина — длинная кнопка-вариант ответа не переносилась (391 px в карточке) → страница шире экрана (426 > 412) и
   прокручивалась по горизонтали. Варианты переносятся, а горизонтальной прокрутки у страницы нет вообще (clip — sticky не ломает). */
html,body{overflow-x:clip;max-width:100%}
.q-opts .btn,.r-act .btn,.card .btn{white-space:normal;max-width:100%;height:auto;min-height:var(--tap);text-align:left;overflow-wrap:anywhere}
.card,.q-card{min-width:0;overflow-wrap:anywhere}


/* ═══ 3. фаза 4 — живой сайт ═══ */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.colmain{position:relative;min-width:0}
.view{min-width:0}
.main>.view.go-l{animation:goL .22s var(--ease)} .main>.view.go-r{animation:goR .22s var(--ease)}
.page-h>div{display:grid;gap:4px}
.page-h h1{text-transform:var(--tt-display);font-weight:var(--fw-display)}
.top .ib svg{width:20px;height:20px}

/* полоса: таблетки — цели переноса карточки доски (режим Б) */
.strip .pill.is-target{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:var(--accent-soft);color:var(--fg)}
.strip .pill.is-deny{border-color:var(--crit);background:var(--crit-bg);color:var(--crit)}
.strip .pill .e{line-height:1}
.strip:empty{display:none}
.strip-list .it[aria-current="true"]{border-color:var(--fg);box-shadow:0 0 0 1px var(--fg)}
.sheet h2{margin:2px 4px 4px}

/* нижнее меню: значок + подпись, счётчик у угла значка */
.bnav .ico .badge:empty{display:none}
.bnav button{min-height:var(--tap)}

/* знаки проектов: талисман Болтовского и вензель Кузарта в рамке 40×40 */
.mk.bolt svg.m{width:31px;height:36px;margin-top:8px;color:#1D2029}
.mk.kart img{display:block}
.mk svg.i{width:22px;height:22px}
.brand-logo{cursor:pointer}
.brand-logo .t b{text-transform:none}
.side .brand-row{flex-wrap:wrap} .side .brand-row .brand-slot{flex:1 1 100%}   /* F08 (перепроверка): название своей строкой, ⟳ и 🔔 — под ним */

/* ═══ строка ввода и панель записи (живые) ═══ */
.composer .snd{flex:0 0 var(--tap);height:var(--tap);border-radius:50%;border:0;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;padding:0}
.composer .snd svg{width:22px;height:22px}
.composer .ib svg{width:22px;height:22px}
.composer .mic svg,.composer .dk svg{width:22px;height:22px}
.composer .mic{touch-action:manipulation;user-select:none;-webkit-user-select:none}
.composer.is-voice>.snd,.composer.is-voice>.replybar{display:none}
.composer textarea{overflow-y:auto;scrollbar-width:none}
.composer .tab{cursor:pointer;color:var(--fg-2)}
.composer .tab:active{background:var(--surface-2)}
.composer .replybar{position:absolute;left:10px;right:150px;bottom:calc(100% - 1px);height:30px;display:flex;align-items:center;gap:6px;padding:0 4px 0 10px;border-radius:12px 12px 0 0;background:var(--surface);border:1px solid var(--line);border-bottom:0;font-size:12.5px;color:var(--fg-2);min-width:0}
.composer .replybar span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.composer .replybar button{flex:0 0 30px;height:28px;border:0;background:none;color:var(--fg-2);padding:0}
.composer .replybar .rp-go{flex:1 1 auto;min-width:0;height:auto;min-height:28px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:0;background:none;padding:0;text-align:left;font:inherit;color:inherit;cursor:pointer}
/* Дом №1435: запись, на которую отвечаю, — цветом, пока ответ не ушёл */
.bub.rp-target{box-shadow:0 0 0 2px var(--accent-text);background:color-mix(in srgb,var(--accent) 22%,var(--surface))}
.composer .live:empty{display:none!important}
.composer .live .wait{font-style:normal;color:var(--fg-2);font-size:14px}
::placeholder{color:var(--fg-2);opacity:1}   /* R02: в светлой ≥ 4.5 (серый браузера был 4.04) */
[data-theme="dark"] ::placeholder{color:var(--fg-3)}   /* F04: в тёмной --fg-3 (5.4+) */
.composer.is-wait textarea::placeholder{color:var(--accent-text);font-style:italic}
.vwave s{transition:height .07s linear}
.vwave.on s{animation:none}
.vpanel .vstop.play i{width:0;height:0;border-radius:0;background:none;border-style:solid;border-width:8px 0 8px 14px;border-color:transparent transparent transparent var(--fg);margin-left:4px}
.vpanel .vstop.pause i{width:14px;height:16px;border-radius:0;background:none;border-left:4px solid var(--fg);border-right:4px solid var(--fg)}
.vpanel .vplus[hidden]{display:none}
.vpanel .vt{font:600 12.5px var(--font-mono);color:var(--crit);white-space:nowrap}
/* строка ответа внутри карточки (вопрос, задача, переписка): тот же ряд, только не плавает над экраном */
.composer.card-c{position:relative;left:auto;right:auto;bottom:auto;z-index:auto;box-shadow:none;background:var(--sunk);border-color:var(--line-strong);min-height:56px}   /* F06: край поля виден в тёмной */
.composer.is-voice:where(.card-c){background:var(--surface);box-shadow:0 0 0 1.5px var(--line-2)}   /* :where — rec-wait/live/paused (html.rec-* :is(.composer.is-voice…)) must win on every tab (Дом №1707) */
.composer.card-c .live{left:0;right:0;bottom:calc(100% + 8px);z-index:3;background:var(--surface);box-shadow:var(--shadow-2)}   /* непрозрачная — текст страницы не просвечивает (DESIGN LOW, Дом №1707) */
.composer.card-c textarea{height:44px}
.composer.dlgc{background:var(--surface-2)}
/* запись идёт — нижнее меню остаётся на месте, панель записи стоит над ним, где была строка ввода
   (Дом №1661, владелец: «Меню нижнее»); «Записать» (.bfab) на время записи — индикатор «● 0:12 Запись» */
@media (hover:hover) and (pointer:fine){.enter-hint{display:inline}}
.enter-hint{display:none}

/* ═══ «Вопросы» (живые данные) ═══ */
.q-card .head .ttlbox{display:grid;gap:6px;min-width:0}
.q-card .ttl{white-space:pre-line;overflow-wrap:anywhere}
.q-card .r-src{border-top:1px dashed var(--line);padding-top:10px}
.q-card .composer{margin-top:2px}
.q-card .q-foot .btn.ink[disabled]{opacity:.45}
.q-card .ans{flex-wrap:wrap}
.q-card .ans span{color:var(--fg);font-weight:500}
.q-other{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 14px;padding:10px 12px;border-radius:var(--r-l);background:var(--info-bg);color:var(--info);font-size:14px}
details.solved li{overflow-wrap:anywhere}

/* ═══ Задачи: телефон — вертикальный список выбранной колонки/темы; ПК — канбан, выбранная колонка в рамке ═══ */
.b-col.is-on{border-color:var(--fg);box-shadow:0 0 0 1px var(--fg)}
.b-vlist{display:grid;gap:10px}
.b-vlist>.b-card{max-width:none}
.b-sec>h2 .dot{background:var(--k,var(--c))}
.swipe-hint{display:grid}
@media (min-width:1024px){.swipe-hint{display:none}}

/* ═══ Настройки ═══ */
.set .row .btn{justify-self:start}
.set .row.wide .act{display:flex;gap:8px;flex-wrap:wrap}
.set .row .quiet input{font:600 15px var(--font-mono);padding:6px 8px;border-radius:var(--r-s);border:1px solid var(--line-2);background:var(--sunk);color:var(--fg);min-height:40px}
.set .row[aria-disabled="true"]{opacity:.5}
.set .note{padding:0 16px 14px;color:var(--fg-2);font-size:13px;margin:0}
.set .mtest{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.set .mtest .vwave{flex:1 1 160px;min-width:120px;height:32px;border-radius:var(--r-s);background:var(--sunk)}
.set .camprev{width:100%;max-width:320px;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r-m);background:#000}
.seg3{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.seg3 button{min-height:var(--tap);border-radius:var(--r-m);border:1.5px solid var(--line-2);background:var(--surface-2);font-weight:600;font-size:13.5px;padding:4px 6px}
.seg3 button[aria-pressed="true"]{border-color:var(--fg);background:var(--surface);box-shadow:0 0 0 1px var(--fg)}

/* ═══ «＋»: один большой микрофон, «Куда» сеткой 2×2 (Д-15) ═══ */
.qsheet .in{gap:12px}
.qsheet .qrec{background:var(--surface)}
.qsheet .qrec.on{background:var(--crit-bg);border-color:var(--crit-solid)}
.qsheet .qrec .vwave{width:100%;height:40px}
.qsheet .where button{color:var(--fg)}
.qsheet .attach-row button{color:var(--fg)}
.qsheet .attach-row i{font-style:normal}

/* ═══ скрепка (Д-14): три одинаковых круга, «Недавние» подписью ═══ */
.attach .row3{grid-template-columns:repeat(3,1fr)}
.attach .opt3 i{width:52px;height:52px}
.attach .opt3 i svg{width:24px;height:24px}

/* ═══ камера (Д-4): лента снимков отдельной строкой, спуск по центру, слоты слева/справа всегда ═══ */
.cam .shots{position:static;display:flex;gap:6px;overflow-x:auto;padding:8px 12px 0;min-height:60px}
.cam .shots img{flex:0 0 48px;width:48px;height:48px}
.cam .ctl{grid-template-columns:1fr 84px 1fr}
.cam .ctl .send[hidden]{display:block!important;visibility:hidden}
.cam .flip{width:52px;height:52px;display:grid;place-items:center;padding:0}
.cam .flip svg{width:26px;height:26px}

/* ═══ Устройства и Приложение ═══ */
.dev .act .btn{min-height:var(--tap)}
.appbox .card .ver{margin:0}
.appbox .ok-pill,.appbox .warn-pill{justify-self:start}

/* ═══ ПК ═══ */
@media (min-width:1024px){
  .side .search-side,.side .addbtn{width:100%;justify-content:flex-start}
  .side .btn svg{width:20px;height:20px}
  .side-foot .btn{justify-content:flex-start;width:100%}
  .who-me{display:flex;align-items:center;gap:10px;font-size:var(--fs-xs);color:var(--fg-2);padding:0 4px}
  .who-me i{width:32px;height:32px;border-radius:50%;background:var(--tg);color:var(--tg-ink);display:grid;place-items:center;font-style:normal;font-weight:700}
  .composer.feedc{position:sticky;left:auto;right:auto;bottom:16px;max-width:720px;margin:12px auto 0;width:100%}
  .two{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,1fr);gap:16px;align-items:start}
  .two>.aside{position:sticky;top:20px;display:grid;gap:12px}
  .sheet.proj-pop{background:transparent;align-items:flex-start;justify-content:flex-start}
  .sheet.proj-pop .in{margin:80px 0 0 12px;width:360px;border:1px solid var(--line);box-shadow:var(--shadow-2);border-radius:var(--r-xl);animation:none}
  .sheet.proj-pop .grab{display:none}
  html.recording .composer.feedc{bottom:16px}
}
/* альбомная: системная навигация телефона слева/справа — отступ безопасной зоны */
@media (orientation:landscape) and (max-height:520px) and (max-width:1023px){
  .bnav .ico .badge{left:calc(100% - 6px);right:auto;top:-10px;font-size:9.5px;padding:0 4px;min-width:16px;height:17px}   /* круг 1, Т-9: счётчик справа от значка, растёт вправо и значок не закрывает */
  .bnav{overflow:visible}
  .composer.feedc{right:10px}
}

/* ═══ фаза 4 · дополнения (13.10, вечер): каркас живых экранов, узоры проектов, касания ═══ */
.strip-sentinel{height:1px;margin-bottom:-1px}
/* двойное касание не масштабирует и не выделяет фон («точки исчезают» — владелец 13.10); точки — только фон, касаний не ловят */
html{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.px-bg,.px-bg *{pointer-events:none;user-select:none;-webkit-user-select:none}
.px-bg{transform:translateZ(0)}
/* рекомендованный вариант вопроса: без сетки старого «.rec» (источник записи) */
.opt.rec{display:inline-block;grid-template-columns:none;gap:0}
/* точка проекта (шторки, «Куда») */
.pdot{flex:0 0 9px;width:9px;height:9px;border-radius:50%;background:var(--p-none);display:inline-block;font-style:normal}
.pdot[data-p="bolt"]{background:var(--p-bolt)} .pdot[data-p="kart"]{background:var(--p-kart)} .pdot[data-p="home"]{background:var(--p-home)}
.pdot[data-p="all"]{background:conic-gradient(var(--p-bolt) 0 25%,var(--p-kart) 0 50%,var(--p-home) 0 75%,var(--p-none) 0)}
.sheet .it[aria-current="true"]{border-color:var(--fg);box-shadow:0 0 0 1px var(--fg)}
.sheet .it .e{width:22px;text-align:center;font-size:16px}
.sheet .it .n.cold{background:var(--sunk);color:var(--fg-2)}
.sheet .lbl{margin:8px 4px 0}
.sheet .grid2 .it{min-height:48px;gap:8px}
.ok-pill.muted{background:var(--sunk);color:var(--fg-2)}
.btn.wrap{white-space:normal;text-align:center;line-height:1.3;padding-top:8px;padding-bottom:8px}
.qsheet .composer .mic{display:none!important}           /* «＋»: один большой микрофон (Д-15) */
.qsheet .in>*{flex-shrink:0}       /* Дом №1490 (снимок 16.10 19:20): много фото — шторка листается, строки не сжимаются; иначе поле текста вылезало из строки */
.qsheet .qrec .vwave{width:100%;height:40px}
.qsheet .qgo{min-height:52px}
.login .mk.big{width:76px;height:76px;border-radius:22px;display:grid;place-items:center;overflow:hidden}
.login .mk.big .m{width:58px;height:66px;margin-top:14px}
/* ── узоры брендбука (владелец 13.10: «паттерн… можно где-то использовать»): вход, шторка проекта, карточки проектов ── */
:root{--motif-op:.07} [data-theme="dark"]{--motif-op:.09}
.login{overflow:hidden}
.login::before{content:"";position:absolute;inset:0;background:var(--accent-text);opacity:var(--motif-op);-webkit-mask:var(--motif) center/180px repeat;mask:var(--motif) center/180px repeat;pointer-events:none}
.proj-sheet .in{position:relative}
.proj-sheet .in::before{content:"";position:absolute;left:0;right:0;top:0;height:110px;background:var(--accent-text);opacity:calc(var(--motif-op) * 1.3);-webkit-mask:var(--motif) 0 0/120px repeat;mask:var(--motif) 0 0/120px repeat;pointer-events:none;border-radius:inherit}
.proj-sheet .in>*{position:relative}
.pj{position:relative;overflow:hidden;isolation:isolate}
.pj::after{content:"";position:absolute;inset:0;z-index:-1;background:var(--pc,var(--fg));opacity:.05;-webkit-mask:var(--pm) right center/110px repeat;mask:var(--pm) right center/110px repeat;pointer-events:none}
.pj[aria-current="true"]::after{opacity:.16}
.pj[data-pj="bolt"]{--pm:url(img/bolt-tools.svg);--pc:#B38F00} .pj[data-pj="kart"]{--pm:url(kart/kart-pattern-mask.svg);--pc:var(--p-kart)}
.pj[data-pj="home"]{--pm:url(img/home-pattern.svg);--pc:var(--p-home)} .pj[data-pj="none"],.pj[data-pj="all"]{--pm:url(img/none-pattern.svg);--pc:var(--p-none)}
[data-theme="dark"] .pj[data-pj="bolt"]{--pc:var(--p-bolt)}
/* шапка: тонкий узор проекта у логотипа (ПК — в боковой колонке под знаком) */
.side .brand-slot{position:relative}
/* ── задачи: место под номер Б-12 / К-5 (фаза 4в), пока пусто ── */
.b-ttl{display:flex;gap:8px;align-items:flex-start;min-width:0}
.b-num{flex:0 0 auto;font:700 12.5px var(--font-mono);min-width:38px;height:24px;padding:0 7px;border-radius:7px;background:var(--sunk);color:var(--fg);display:grid;place-items:center;margin-top:1px}
.b-num:empty{display:none}
/* «Задачи» — телефон: вертикальный список выбранной колонки (вариант Б); ПК — канбан, выбранная колонка в рамке */
.b-vlist{display:grid;gap:10px}
.b-vhead{display:flex;align-items:baseline;gap:8px;margin:2px 2px 8px;font-weight:600}
.b-vhead .sub{font-weight:400;color:var(--fg-2);font-size:13px}
.b-col.is-on{border-color:var(--fg);box-shadow:0 0 0 1px var(--fg)}
.strip .pill.is-target{transform:scale(1.06)}
html.is-dragging .strip{z-index:60}
/* «Новое для вас», «Устройства» */
.newlist{display:grid;gap:8px}
.dev .act{display:flex;justify-content:flex-end}
.devs .dev{grid-template-columns:40px minmax(0,1fr) auto}
@media (max-width:560px){.devs .dev{grid-template-columns:40px minmax(0,1fr)}.dev .act{grid-column:1/-1}.dev .act .btn{width:100%}}
.b-vwrap .b-col{flex:none;border-radius:0}
.b-vwrap .b-list{overflow:visible;padding:2px 0 16px;min-height:120px}
.is-dragging .b-edge{display:none!important}
.snav button svg,.side-foot .btn svg,.search-side svg,.addbtn svg{width:20px;height:20px;flex:0 0 20px}
.sheet .it>svg{flex:0 0 22px}
.composer.card-c{max-width:none;margin-left:0;margin-right:0;width:auto}
.q-other{background:var(--accent-soft);color:var(--fg)}
.gl{display:inline-grid;place-items:center;min-width:1.1em;font-style:normal;line-height:1}
/* ── обновление: «⟳ обновлено ЧЧ:ММ» в полосе, «потянуть вниз», плашка «Новое: N — показать» ── */
html,body{overscroll-behavior-y:contain}                     /* свой «потянуть — обновить», без перезагрузки страницы браузером */
.strip .upd{flex:0 0 auto;display:flex;align-items:center;gap:5px;height:var(--tap);padding:0 6px;border:0;background:none;color:var(--fg-3);font:500 10.5px/1.1 var(--font-body);text-align:left;cursor:pointer}
.strip .upd .t{max-width:58px;white-space:normal}
.strip .upd .spin{width:14px;height:14px;flex:0 0 14px;border-radius:50%;border:2px solid var(--line-2);border-top-color:var(--accent)}
.strip .upd.is-busy .spin{animation:ptr-rot .8s linear infinite}
@media (min-width:1024px){.strip .upd .t{max-width:none;white-space:nowrap;font-size:12px}}
.ptr{position:fixed;left:50%;top:calc(var(--safe-t) + 4px);z-index:70;width:38px;height:38px;margin-top:-46px;border-radius:50%;background:var(--surface);box-shadow:var(--shadow-2);display:grid;place-items:center;opacity:0;transform:translate(-50%,0);transition:opacity .15s;pointer-events:none}
.ptr i{width:20px;height:20px;border-radius:50%;border:2.5px solid var(--line-2);border-top-color:var(--accent)}
.ptr.on{opacity:1} .ptr.ready i{border-color:var(--accent);border-top-color:transparent} .ptr.spin i{animation:ptr-rot .8s linear infinite}
@keyframes ptr-rot{to{transform:rotate(360deg)}}
.fresh-pill{position:fixed;left:50%;transform:translateX(-50%);top:calc(var(--safe-t) + var(--strip-h) + 10px);z-index:30;padding:8px 16px;border-radius:var(--r-pill);border:0;background:var(--ink);color:var(--ink-fg);font-weight:600;font-size:13.5px;box-shadow:var(--shadow-2);min-height:40px}
[data-tab-cur="feed"] .fresh-pill{top:auto;bottom:calc(var(--safe-b) + var(--bar-h) + 90px)}
.bnav{grid-template-columns:repeat(var(--nav-n,5),minmax(0,1fr))}
@media (orientation:landscape) and (max-height:520px) and (max-width:1023px){.bnav{grid-template-columns:1fr;grid-template-rows:repeat(var(--nav-n,5),1fr)}}
/* «потянуть»: кружок заполняется по пути (--p 0..1), подпись под ним */
.ptr{width:auto;height:auto;padding:8px 14px 8px 8px;border-radius:24px;display:flex;align-items:center;gap:8px;margin-top:-56px}
.ptr i{width:24px;height:24px;border:0;border-radius:50%;background:conic-gradient(var(--accent) calc(var(--p,0) * 360deg), var(--line-2) 0);-webkit-mask:radial-gradient(circle,transparent 7px,#000 7.5px);mask:radial-gradient(circle,transparent 7px,#000 7.5px)}
.ptr.ready i{background:var(--accent)}
.ptr.spin i{background:conic-gradient(var(--accent) 0 70%, var(--line-2) 0)}
.ptr .lab{font:600 13px var(--font-body);color:var(--fg);white-space:nowrap}
/* значок обновления — справа от проекта в шапке; крутится, пока обновляется; время мелко под ним */
.upd-slot{display:flex;align-items:center}
.upd{display:grid;justify-items:center;align-content:center;gap:0;min-width:var(--tap);height:var(--tap);padding:0 4px;border:0;background:none;color:var(--fg-2);border-radius:var(--r-m)}
.upd .ar{width:20px;height:20px}
.upd.is-busy .ar{animation:ptr-rot .9s linear infinite}
.upd .t{font:500 9.5px/1 var(--font-mono);color:var(--fg-3);margin-top:2px;white-space:nowrap}
.upd .t:empty{display:none}
.brand-row{display:flex;align-items:center;gap:4px}
.brand-row .brand-slot{flex:1;min-width:0}
/* этапы в карточке задачи: сегменты цветов колонок, пройденные закрашены, текущий выделен и подписан */
.b-stagebox{display:grid;gap:10px;margin:2px 0 6px}
/* Дом №1703 (владелец: «с иконками и можно немного меньше»): одна строка 44 px — у остальных полоска + иконка, у текущей ещё название жирным; класс .stg, не .st (занят плашкой статуса) */
.b-stages{display:flex;gap:3px}
.b-stages .stg{flex:1 1 0;min-width:44px;min-height:44px;display:grid;grid-template-rows:8px 1fr;gap:5px;padding:3px 0 0;border:0;background:none;color:var(--fg-3);cursor:pointer;font:inherit;text-transform:none;letter-spacing:0}
.b-stages .seg{display:block;align-self:center;height:6px;border-radius:4px;background:var(--c);opacity:.28}
.b-stages .stg.past .seg{opacity:.6}
.b-stages .stg.cur .seg{opacity:1;height:8px;box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--c)}
.b-stages.is-marked .stg.cur .seg{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--fg-3)}
.b-stages .stg .lab{display:flex;align-items:center;justify-content:center;gap:5px;font-size:0;line-height:0;padding:0;overflow:visible}
.b-stages .stg .lab .gl{display:inline-block;font-size:17px;line-height:1;opacity:.5;filter:grayscale(.5)}
.b-stages .stg.past .lab .gl{opacity:.8;filter:none}
.b-stages .stg.cur{flex:0 0 auto;padding-inline:4px}
.b-stages .stg.cur .lab{font:700 11.5px/1.15 var(--font-body);color:var(--fg);text-align:left;max-width:96px}
.b-stages .stg.cur .lab .gl{opacity:1;filter:none}
@media (min-width:600px){.b-stages .stg.cur .lab{max-width:none;white-space:nowrap}}
.b-marks{display:flex;flex-wrap:wrap;gap:6px}
.b-marks .chip{min-height:var(--tap)}
.b-marks .chip[aria-pressed="true"]{border-color:var(--c,var(--accent));background:color-mix(in srgb,var(--c,var(--accent)) 18%,var(--surface));color:var(--fg)}
.b-marks .mk-flag[aria-pressed="true"]{--c:var(--accent)}
/* ═══ карточка задачи (владелец 13.10 вечер): текст крупно, «Что сделано», «Что ждёт вас», переписка, «Кто ведёт ▾» свёрнуто ═══ */
.b-phead{display:flex;align-items:flex-start;gap:10px}
.b-phead h2{margin:0}
.b-text{font:400 16.5px/1.55 var(--font-body);color:var(--fg)}
.b-text p{margin:0 0 10px}
.b-text.own p{font-style:normal}
.b-sec{display:grid;gap:8px;padding-top:14px;border-top:1px solid var(--line)}
.b-sec h3{margin:0;font:700 12px/1.2 var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-2)}
.b-ask h3{color:var(--accent-text)}
.b-done .res{margin:0}
.b-doneln{margin:0;font-size:14px;line-height:1.45}
.b-ask .q-card{margin:0}
.b-who-box{border-top:1px solid var(--line);padding-top:6px}
.b-who-box>summary{list-style:none;display:flex;align-items:center;gap:10px;min-height:var(--tap,44px);cursor:pointer;font-weight:600}
.b-who-box>summary::-webkit-details-marker{display:none}
.b-who-box>summary small{color:var(--fg-2);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}
.b-who-box>summary::after{content:"▾";color:var(--fg-2);transition:transform .15s}
.b-who-box[open]>summary::after{transform:rotate(180deg)}
.b-who-box .b-people{margin-top:4px}
.b-who-box .b-waitbox{margin-top:10px}
.b-text .text{white-space:pre-line;overflow-wrap:anywhere}
.devs .dev .ic{width:40px;height:40px;border-radius:12px;background:var(--sunk);display:grid;place-items:center;color:var(--fg-2)}.devs .dev .ic svg{width:22px;height:22px}

/* ═══ круг 1, Т-7/Т-8: WebView 109 (Android-телефоны без обновлений) не знает color-mix(): объявление с var() в нём
   становится «пустым» при расчёте (прозрачный фон, нет рамки). Здесь — запасные цвета без color-mix, только для таких WebView. ═══ */
@supports not (color: color-mix(in srgb, red 50%, blue)) {
  .st,.g-st{background:var(--sunk);box-shadow:inset 0 0 0 1px var(--c)}
  .composer .live,.q-say .live{background:var(--surface)}
  .kanban .col{background:var(--surface)}
  .b-marks .chip[aria-pressed="true"]{background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--c,var(--accent))}
}

/* круг 1, Т-3: голосовой ответ под вопросом — сразу «🎙 Ваш ответ голосом · …», потом текст расшифровки */
.q-card .voice-ans{display:grid;gap:8px;justify-items:start;padding:10px 12px;border-radius:var(--r-m);background:var(--ok-bg)}
.q-card .voice-ans .vh{font-weight:700;color:var(--ok)}
.q-card .voice-ans .vh .when{font-weight:500;color:var(--fg-2)}
.q-card .voice-ans .vtx{color:var(--fg);font-weight:500;font-style:italic;line-height:1.45}
/* Т-13: строка ответа под вопросом — одной высоты, текст прокручивается внутри */
.q-card .composer textarea{max-height:44px;overflow-y:auto}

/* круг 1, Т-6: фото в книжке — с заранее известной высотой (лента не прыгает, пока они грузятся) */
.bub .ph{width:220px;height:260px;max-height:none;aspect-ratio:auto;background:var(--sunk)}
.bub .alb .ph{width:100%;height:110px}
/* круг 1, Т-16: касание ≥ 44 px у «ещё», «→ задача», чипа раздела — зона больше, место в ленте то же (отрицательные поля) */
.more,.bub .to{min-height:var(--tap);margin-top:-8px;margin-bottom:-8px}
.cxb{min-height:var(--tap);margin-top:-8px;margin-bottom:-8px}
.card .meta .cxb,.b-pbar .cxb{margin-top:0;margin-bottom:0}

/* круг 1, Т-10: просмотр фото — горизонтальный свайп листает (вертикальная прокрутка не мешает), шапка в одну строку */
#lb-media{touch-action:pinch-zoom;overflow:hidden}   /* 14.10: вниз — свернуть (наш жест), влево/вправо — листать; щипок — браузеру */
#lb-media img{will-change:transform}
.lb .bar{flex-wrap:nowrap}
.lb .bar .when{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;font:600 13px var(--font-mono)}
.lb .bar .act{display:flex;gap:6px;flex:0 0 auto;margin-left:auto}
.lb .bar .act .btn{padding:0 12px}

/* владелец 13.10 (Redmi): лента и списки пальцем по горизонтали не смещаются — только вертикальная прокрутка */
#main,.main>.view{touch-action:pan-y pinch-zoom}
.bub:not(.swiping){transform:none!important}            /* 14.10: двигается только при свайпе «ответить» пальцем */

/* владелец 13.10 «работает медленно» (Redmi): на телефоне без размытия под полосой и меню — каждый кадр прокрутки
   иначе заново размывает фон. Стекло заменено почти непрозрачной заливкой; фон с точками — один готовый слой. */
@media (pointer:coarse){
  .strip,.bnav,.composer .live,.q-say .live{-webkit-backdrop-filter:none;backdrop-filter:none}
  .strip{background:var(--bg)}
  .bnav{background:var(--surface)}
}
.px-bg{contain:strict;will-change:transform;transform:translateZ(0)}
/* круг 1, Т-8/Т-11: шторка не шире экрана — длинный <select> (исполнитель, проект) раздувал сетку шторки в WebView 109 */
.sheet .in{grid-template-columns:minmax(0,1fr)}
.sheet .in>*{min-width:0;max-width:100%}
.sheet select{min-width:0;max-width:100%;text-overflow:ellipsis}
/* круг 1, Т-16: «ещё» в книжке — касание 44×44 и по ширине (текст на месте: поля съедают отступы) */
.more{min-width:var(--tap);padding:0 9px;margin-left:-9px;margin-right:-9px}
/* срочно 13.10: строка ввода никогда не шире своего места — волна записи гибкая (ширина 0 + flex:1), кнопки фиксированные */
.composer,.q-say{min-width:0;max-width:100%}
.vpanel .vwave,.composer .vwave,.q-say .vwave{flex:1 1 0;width:0;min-width:0}
.vpanel>button{flex:0 0 var(--tap)}
.composer .live,.q-say .live{overflow-wrap:anywhere;white-space:normal}

/* ═══ 1.0.5 · голос как в Телеграме: ✕ · ● 0:07 волна · ⏸ / ● · ↑ (системной диктовки нет) ═══ */
.vpanel .vtime{flex:0 0 auto;display:flex;align-items:center;gap:6px;padding:0 2px 0 4px;font:600 13px var(--font-mono);color:var(--fg);white-space:nowrap}
.vpanel .vtime i{width:9px;height:9px;border-radius:50%;background:var(--crit);animation:vrec 1s ease-in-out infinite alternate}
.composer.v-paused .vtime i{animation:none;background:var(--fg-3)}
.composer.v-start .vtime i{animation:none;background:var(--fg-3)}   /* №1490: красный — с настоящего начала записи */
.qrec.starting .big{opacity:.6}
/* Дом №1490 (DESIGN 21.10): ждём микрофон → запись идёт; вспышка — в тот же кадр, что вибрация. Состояния на <html> (JS recUi) */
html.rec-wait :is(.composer.is-voice,.qrec,.search .srec){background:var(--surface-2);outline:1.5px dashed var(--line-2);outline-offset:-1.5px}
html.rec-wait :is(.composer.is-voice,.search .srec) .vtime i{animation:none;background:var(--fg-3)}
html.rec-wait .rec-wait-t{color:var(--fg-2)}
html.rec-mute :is(.composer.is-voice,.qrec,.search .srec){background:var(--warn-bg);outline-color:var(--warn)}
html.rec-mute .rec-wait-t{color:var(--warn)}
/* DESIGN сверка 21.10 (MED-1, LOW-2/3): в книжке .composer .live .vt красный перебивал — ждём серым, «не отвечает» — warn */
html.rec-wait .composer .live .rec-wait-t{color:var(--fg-2)}
html.rec-mute .composer .live .rec-wait-t{color:var(--warn)}
html.rec-mute .qsheet .qrec .hint{white-space:normal;height:auto}
html.rec-mute .search .srec .vwave{display:none}
html.rec-mute .search .srec .vtime{flex:1 1 0;min-width:0;font-size:12px;line-height:16px}
html.rec-live :is(.composer.is-voice,.qrec.on,.search .srec){background:var(--crit-bg);box-shadow:inset 0 0 0 2px var(--crit-solid)}
html.rec-live :is(.composer.is-voice,.search .srec) .vtime{color:var(--crit)}
html.rec-live :is(.composer.is-voice,.search .srec) .vtime i{width:10px;height:10px;background:var(--crit-solid)}
html.rec-paused :is(.composer.is-voice,.qrec.on){background:var(--surface-2);border-color:var(--line);box-shadow:inset 0 0 0 2px var(--line-2)}
html.rec-flash :is(.composer.is-voice,.qrec.on,.search .srec){animation:recflash 700ms cubic-bezier(.2,.7,.3,1) 1}
@keyframes recflash{0%,18%{background:color-mix(in srgb,var(--crit-solid) 55%,var(--surface));box-shadow:inset 0 0 0 2px var(--crit-solid),0 0 0 6px color-mix(in srgb,var(--crit-solid) 40%,transparent)}100%{background:var(--crit-bg);box-shadow:inset 0 0 0 2px var(--crit-solid),0 0 0 0 transparent}}
.cam.recv .vf::after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 0 4px var(--crit-solid)}
.cam.recv .rtm{color:#fff}
html.rec-flash .cam.recv .vf::after{animation:camflash 700ms cubic-bezier(.2,.7,.3,1) 1}
@keyframes camflash{0%,18%{box-shadow:inset 0 0 0 4px var(--crit-solid),inset 0 0 28px 8px color-mix(in srgb,var(--crit-solid) 55%,transparent)}100%{box-shadow:inset 0 0 0 4px var(--crit-solid)}}
@media (prefers-reduced-motion:reduce){html.rec-flash :is(.composer.is-voice,.qrec.on,.search .srec),html.rec-flash .cam.recv .vf::after,html.rec-live :is(.composer.is-voice,.search .srec) .vtime i{animation:none}}
@keyframes vrec{from{opacity:1}to{opacity:.25}}
.vpanel .vwave[hidden],.vpanel .vlisten[hidden]{display:none}
.vpanel .vlisten{flex:1 1 0;width:0;min-width:0;height:40px;border-radius:var(--r-pill);display:flex;align-items:center;justify-content:center;gap:8px;padding:0 12px;background:var(--sunk);color:var(--fg);font:600 13.5px var(--font-body)}
.vpanel .vlisten .pl{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--fg);color:var(--bg)}
.vpanel .vlisten .pl svg{width:12px;height:12px;fill:currentColor}
.vpanel .vlisten.on{box-shadow:0 0 0 1.5px var(--accent) inset}
.vpanel .vlisten .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vpanel .vpause{background:var(--sunk);color:var(--fg)}
.vpanel .vpause svg{width:18px;height:18px}
.vpanel .vpause.go{background:color-mix(in srgb,var(--crit) 16%,var(--sunk));color:var(--crit)}
.vpanel .vpause.go svg{width:16px;height:16px}
@media (max-width:359px){.vpanel .vlisten .t{display:none}.vpanel{gap:4px}}
.composer.vtt .mic{background:var(--surface);color:var(--fg);border:1.5px solid var(--line-2)}
/* поиск: 🎙 → слова через наш распознаватель */
.search .smic,.search .scls{flex:0 0 48px;height:48px;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--fg);display:grid;place-items:center;cursor:pointer}
/* t-…-11, макет «дом7я-поиск»: лупа и ⊗ внутри поля 48, круглые 48 микрофон и ✕; с 900 px ✕ — пилюля с «Esc» */
.search .sfield{flex:1;min-width:0;height:48px;display:flex;align-items:center;gap:2px;border:1.5px solid var(--line-2);border-radius:999px;background:var(--surface);padding:0 4px 0 14px;transition:border-color .15s,box-shadow .15s}
.search .sfield .lens{width:20px;height:20px;flex:0 0 20px;color:var(--fg-3)}
.search .sbar .sfield input{flex:1;min-width:0;height:100%;min-height:0;border:0;outline:0;background:none;border-radius:0;color:var(--fg);font-size:16px;padding:0 6px 0 8px}
.search .sfield input:focus-visible{outline:0;box-shadow:none}
.search .sfield input::-webkit-search-cancel-button,.search .sfield input::-webkit-search-decoration{-webkit-appearance:none;appearance:none}
.search .sfield:focus-within{border-color:var(--fg-2);box-shadow:0 0 0 4px var(--accent-soft)}
.search .sclr{flex:0 0 40px;height:40px;border:0;background:none;padding:0;display:grid;place-items:center;color:var(--fg-2);border-radius:50%;cursor:pointer}
.search .sclr i{width:24px;height:24px;border-radius:50%;background:var(--line);display:grid;place-items:center;transition:background .15s,transform .1s}
.search .sclr svg{width:13px;height:13px;stroke-width:3}
.search .sclr:hover i{background:var(--line-2)}
.search .sclr:active i{transform:scale(.88)}
.search .sclr[hidden]{display:none}
.search .scls svg{width:22px;height:22px;stroke-width:2.4}
.search .scls .esc{display:none}
.search .smic:hover,.search .scls:hover{background:var(--surface-2)}
@media (min-width:900px){
  .search .scls{width:auto;flex:0 0 auto;border-radius:999px;padding:0 14px 0 12px;gap:6px;display:flex;align-items:center}
  .search .scls .esc{display:inline;font:600 11px var(--font-mono);color:var(--fg-3);border:1px solid var(--line-2);border-radius:6px;padding:1px 5px}
}
.search .smic svg{width:20px;height:20px}
.search .sbar[hidden]{display:none}
.search .srec{gap:8px}
.search .srec .ib{flex:0 0 48px;height:48px;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--fg);display:grid;place-items:center}
.search .srec .ib svg{width:20px;height:20px}
.search .srec .vtime{display:flex;align-items:center;gap:6px;font:600 13px var(--font-mono)}
.search .srec .vtime i{width:9px;height:9px;border-radius:50%;background:var(--crit);animation:vrec 1s ease-in-out infinite alternate}
.search .srec .vwave{flex:1 1 0;width:0;min-width:0}
.search .srec .vsend{flex:0 0 48px;height:48px;border:0;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center}
.search .srec .vsend svg{width:22px;height:22px}

/* ═══ 1.0.5 · «потянуть вниз»: строго вертикально, по центру, под шапкой (владелец: «обновление идёт в диагональ») ═══ */
.ptr{left:0;right:0;margin:0 auto;width:max-content;min-width:196px;justify-content:center;transform:translateY(0);top:0;margin-top:0;z-index:25}
.ptr:not(.on){visibility:hidden}

/* ═══ 1.0.5 · 🔔 колокольчик и «Новое» ═══ */
.bellbtn{position:relative}
.bellbtn .badge{position:absolute;top:4px;right:2px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--crit-solid);color:#fff;font:700 11px/18px var(--font-body);text-align:center;pointer-events:none}
.bellbtn .badge:empty{display:none}
.bellbtn.has svg{color:var(--fg)}
.brand-row .bellbtn{flex:0 0 var(--tap);height:var(--tap);border:0;background:none;color:var(--fg-2);display:grid;place-items:center;border-radius:var(--r-m)}
.brand-row .bellbtn svg{width:20px;height:20px}
#v-new .page-h{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}
#v-new .page-h>div{flex:1 1 260px;min-width:0}
#v-new .page-h .btn{display:inline-flex;align-items:center;gap:6px}
#v-new .page-h .btn .i{width:18px;height:18px}
.nrow2{display:flex;align-items:stretch;gap:6px;border:1px solid var(--line);border-radius:var(--r-xl);background:var(--surface);min-width:0}
.nrow2.unread{border-color:color-mix(in srgb,var(--accent) 70%,var(--line));box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 55%,transparent)}
.nrow2.seen{opacity:.62;background:var(--sunk)}
.nrow2 .nmain{flex:1;min-width:0;display:grid;gap:4px;text-align:left;padding:12px 4px 12px 14px;border:0;background:none;color:var(--fg);font:inherit;cursor:pointer}
.nrow2 .nk{font-weight:650;display:flex;align-items:center;gap:6px;flex-wrap:wrap;overflow-wrap:anywhere}
.nrow2 .nk .pdot{width:8px;height:8px;border-radius:50%;flex:0 0 8px}
.nrow2 .nk .when{font-weight:400;font-size:12px;color:var(--fg-2);flex-basis:100%}   /* F10: дата своей строкой */
.nrow2 .na{font-size:13px;color:var(--fg-2);overflow-wrap:anywhere}
.nrow2 .b{font-size:14.5px;line-height:1.4;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.nrow2 .nst{font-size:12px;color:var(--fg-3)}
.nrow2 .nst.new{color:var(--accent-text);font-weight:600}
.nrow2 .nst.ok{color:var(--s-done,var(--ok))}
.nrow2 .nst.q{color:var(--fg-2)}
.nrow2 .nst.bad{color:var(--crit);font-weight:600}
.nrow2 .nst.ans{color:var(--accent-text);font-weight:600}
/* Дом №1342 «Я ответил» (DESIGN MED-1): список не гаснет; не ушло — красная кромка, ещё в пути — пунктир */
.nrow2.nsent{opacity:1;background:var(--surface)}
.nrow2.nsent[data-st="bad"],.nrow2.nsent[data-st="err"]{border-color:var(--crit);box-shadow:inset 3px 0 0 var(--crit)}
.nrow2.nsent[data-st="phone"],.nrow2.nsent[data-st="retry"],.nrow2.nsent[data-st="server"]{border-style:dashed}
.nrow2 .neye{flex:0 0 var(--tap);align-self:center;height:var(--tap);margin-right:6px;border:0;border-radius:50%;background:var(--sunk);color:var(--fg);display:grid;place-items:center}
.nrow2 .neye svg{width:20px;height:20px}

/* ═══ 1.0.5 нижнее меню — вариант Б (владелец 14.10, макет BOLT-DESIGN дальше-14-10 §2): пять разделов в ряд + жёлтая «Записать» справа ═══ */
:root{--fab:64px;--fab-gap:8px}
.bnav{right:calc(10px + var(--fab) + var(--fab-gap))}
.bfab{position:fixed;right:10px;bottom:calc(var(--safe-b) + 10px + (var(--bar-h) - var(--fab)) / 2);z-index:21;width:var(--fab);height:var(--fab);border-radius:22px;border:0;
  background:var(--accent);color:var(--accent-ink);display:grid;justify-items:center;align-content:center;gap:1px;padding:0;
  box-shadow:0 10px 24px color-mix(in srgb,var(--accent) 45%,transparent),var(--shadow-2);font:700 10.5px var(--font-body);-webkit-tap-highlight-color:transparent}
.bfab svg{width:26px;height:26px;stroke-width:2.4}
.bfab:active{transform:scale(.95)}
html.kb .bfab{display:none}
/* Дом №1661: идёт запись — «Записать» остаётся на месте индикатором «● 0:12 Запись» (дизайн), нажатие — к панели записи */
.bfab.is-rec{background:var(--surface-2);color:var(--fg);box-shadow:var(--shadow-2)}   /* no red ring before rec-live (Дом №1707) */   /* is-rec: не .rec — тот у строк записей (DESIGN HIGH-1) */
.bfab.is-rec .rt{display:inline-flex;align-items:center;justify-content:center;gap:4px;font:700 12px var(--font-mono);font-variant-numeric:tabular-nums}
.bfab.is-rec .rd{width:7px;height:7px;border-radius:50%;background:var(--crit);animation:pulse 1.2s infinite}
html.rec-wait .bfab.is-rec .rd{animation:none;background:var(--fg-3)}
/* Дом №1707 вариант A: кнопка светится вместе с рамкой строки и только с настоящего старта */
html.rec-wait .bfab.is-rec{outline:1.5px dashed var(--line-2);outline-offset:-1.5px}
html.rec-live .bfab.is-rec{background:var(--crit-bg);box-shadow:inset 0 0 0 2px var(--crit-solid),var(--shadow-2)}
html.rec-live .bfab.is-rec .rt{color:var(--crit)}
html.rec-paused .bfab.is-rec{box-shadow:inset 0 0 0 2px var(--line-2),var(--shadow-2)}
html.rec-paused .bfab.is-rec .rd{animation:none;background:var(--fg-3)}
html.rec-flash .bfab.is-rec{animation:recflash 700ms cubic-bezier(.2,.7,.3,1) 1}
@media (prefers-reduced-motion:reduce){.bfab.is-rec .rd,html.rec-flash .bfab.is-rec{animation:none}}
@media (max-width:420px){
  :root{--fab:58px;--fab-gap:6px}
  .bnav{padding:6px 3px}
  .bnav button{font-size:10.5px;letter-spacing:-.015em;padding:0}
  .bfab{font-size:10px}
}
@media (max-width:340px){                 /* 320 (STATE: «Мои дела» чуть обрезалась): поуже края и «Записать», подписи плотнее */
  :root{--fab:54px;--fab-gap:4px}
  .bnav{left:6px;right:calc(6px + var(--fab) + var(--fab-gap));padding:6px 2px}
  .bfab{right:6px}
  .bnav button{font-size:10px;letter-spacing:-.03em}
}
@media (min-width:1024px){ .bfab{display:none} }
@media (orientation:landscape) and (max-height:520px) and (max-width:1023px){
  .bnav{right:auto;bottom:calc(8px + var(--fab) + 8px)}
  .bfab{left:calc(var(--safe-l,0px) + 8px + (68px - var(--fab)) / 2);right:auto;bottom:8px}
}
[data-shell="tg"] .bnav{right:calc(max(10px,calc(50% - 230px)) + var(--fab) + var(--fab-gap))}
[data-shell="tg"] .bfab{display:grid!important;right:max(10px,calc(50% - 230px))}
/* ПК: «Записать» — большая жёлтая сверху колонки, ниже 5 пунктов; у текущего — полоска акцента слева */
@media (min-width:1024px){
  .side .addbtn{min-height:52px;font-size:16px;border-radius:var(--r-l);box-shadow:0 8px 20px color-mix(in srgb,var(--accent) 35%,transparent)}
  .snav button{position:relative}
  .snav button[aria-current="page"]{background:var(--surface-2);color:var(--fg)}
  [data-theme="dark"] .snav button[aria-current="page"]{background:var(--hover)}
  .snav button[aria-current="page"]::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:2px;background:var(--accent)}
}

/* 13.10 (владелец: «задний экран бегает с передним»): пока открыта шторка или слой — фон не прокручивается,
   жест внутри шторки до фона не доходит */
@media (max-width:1023px){
  html.ovl,html.ovl body{overflow:hidden;overscroll-behavior:none}
  .sheet,.qsheet,.search,.attach,.pv,.b-panel,.cam{overscroll-behavior:contain}
  .sheet .in,.qsheet .in,.search .in,.attach .in,.b-panel .in,.b-panel .b-pbody{overscroll-behavior:contain}
}
.qrec.paused .timer{opacity:.75}
.qvoice .qpart{display:flex;align-items:center;gap:8px}
/* ═══ фаза 4г — линейные иконки (BOLT-DESIGN дальше-14-10, Lucide ISC) вместо эмодзи ═══ */
svg.ic{width:1.15em;height:1.15em;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.2em}
svg.ic.on{fill:currentColor}
.btn svg.ic,.chip svg.ic,.pill svg.ic{width:18px;height:18px}
.strip svg.ic{width:18px;height:18px}
.bnav .ico svg.ic{width:22px;height:22px}
.top svg.ic,.ib svg.ic{width:20px;height:20px}
.gl svg.ic{width:1.1em;height:1.1em}
.bfab svg.ic{width:26px;height:26px;stroke-width:2.4}
.toast svg.ic{width:18px;height:18px}
:root{--ic-check:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
  --ic-down:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  --ic-right:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}
.card.done h3::before{content:"";display:inline-block;width:1em;height:1em;margin-right:.3em;vertical-align:-.12em;background:var(--ok);-webkit-mask:var(--ic-check) center/contain no-repeat;mask:var(--ic-check) center/contain no-repeat}
.b-who-box>summary::after{content:"";display:inline-block;width:16px;height:16px;background:currentColor;-webkit-mask:var(--ic-down) center/contain no-repeat;mask:var(--ic-down) center/contain no-repeat}

/* 14.10 (владелец: «должен быть плавный переход как справа»): полоса этапов прокручена — левый край у ⊞ гаснет так же плавно */
.strip .rail.sl{-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 28px,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(90deg,transparent 0,#000 28px,#000 calc(100% - 28px),transparent)}

/* ═══ срочно 14.10 (видео и скрины владельца): шторка «Записать мысль» ═══
   Блок записи ОДНОЙ высоты в покое, записи и паузе — ниже ничего не прыгает («из-за того, что верхний экран дёргается, она
   ездит»). Цифры 32 px, кнопки 40 px в один ряд, подсказка в одну строку. Полоса «Прикреплено» над полем ввода — голос
   плашкой и фото 64 px с чтением и галочкой, ничего не обрезано. «Отправить в книжку» прилипает к низу шторки. */
.qsheet .in{padding-bottom:0}
.qsheet .qrec{flex:none;box-sizing:border-box;height:132px;padding:10px 12px;gap:8px;display:grid;grid-template-columns:minmax(0,1fr);justify-items:stretch;align-content:center;overflow:hidden}
.qsheet .qrec .big{width:64px;height:64px;justify-self:center;box-shadow:none}
.qsheet .qrec .big svg{width:28px;height:28px}
.qsheet .qrec .hint{display:block;min-width:0;line-height:18px;height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}
.qsheet .qrec .top{display:flex;align-items:center;gap:10px;height:40px;min-width:0}
.qsheet .qrec .timer{flex:none;font-size:32px;line-height:40px;gap:8px}
.qsheet .qrec .timer::before{width:10px;height:10px}
.qsheet .qrec.paused .timer::before{animation:none;opacity:.5}
.qsheet .qrec .top .vwave{flex:1 1 0;width:0;min-width:0;height:36px}
.qsheet .qrec.paused .top .vwave{opacity:.35}
.qsheet .qrec .row{display:flex;flex-wrap:nowrap;gap:6px;justify-content:stretch;height:40px;min-height:0;min-width:0;padding:0;border:0}
.qsheet .qrec .row .btn{flex:1 1 auto;min-width:0;min-height:40px;height:40px;padding:0 8px;gap:4px;font-size:14px;overflow:hidden}
.qsheet .qrec .row .btn svg.ic{width:16px;height:16px}
.qsheet .qrec.paused .row .btn.no{flex:0 0 40px;padding:0}
.qsheet .attach-row{flex:none}
.qsheet .attach-row button{padding:8px 6px;gap:4px}
.qsheet .attach-row i{width:40px;height:40px}
.qsheet .attach-row i svg{width:20px;height:20px}
.qatt{flex:none;display:grid;gap:6px;min-width:0}
.qatt[hidden]{display:none}
.qatt-h{font-size:13px;font-weight:600;color:var(--fg-2)}
.qatt .qthumbs{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:12px 12px;padding:8px 8px 4px 0;min-height:76px}
.qatt .qthumbs figure{flex:0 0 64px;width:64px;height:64px;position:relative;margin:0;border-radius:var(--r-s);background:var(--sunk);--p:0}
.qatt .qthumbs figure img{width:64px;height:64px;object-fit:cover;border-radius:var(--r-s);border:1px solid var(--line);display:block}
.qatt .qthumbs figure .fileline{display:block;padding:6px;font-size:11px;line-height:1.2;overflow:hidden;height:64px;box-sizing:border-box;word-break:break-all}
.qatt .qthumbs figure .bar{position:absolute;left:6px;right:6px;bottom:6px;height:4px;border-radius:2px;background:rgba(0,0,0,.35);overflow:hidden}
.qatt .qthumbs figure .bar b{display:block;height:100%;width:calc(var(--p) * 100%);background:var(--yes);transition:width .2s linear}
.qatt .qthumbs figure.ok .bar{display:none}
.qatt .qthumbs figure .okm{position:absolute;left:4px;bottom:4px;width:20px;height:20px;border-radius:50%;background:var(--yes);color:var(--yes-ink);display:none;place-items:center}
.qatt .qthumbs figure .okm svg{width:13px;height:13px}
.qatt .qthumbs figure.ok .okm{display:grid}
.qatt .qthumbs figure.bad{outline:2px solid var(--crit-solid)}
.qatt .qthumbs .x{position:absolute;top:-6px;right:-6px;width:26px;height:26px;border-radius:50%;border:2px solid var(--surface);background:var(--ink);color:var(--ink-fg);display:grid;place-items:center;padding:0}
.qatt .qthumbs .x svg{width:13px;height:13px}
.qatt .qthumbs .x::after{content:"";position:absolute;inset:-8px}
.qatt .qvc{flex:none;position:relative;display:flex;align-items:center;gap:6px;height:44px;padding:0 6px 0 12px;border-radius:22px;background:var(--crit-bg);border:1px solid var(--crit-solid);color:var(--fg);font:600 15px var(--font-mono);font-variant-numeric:tabular-nums}
.qatt .qvc .pl{width:32px;height:32px;border-radius:50%;border:0;background:var(--fg);color:var(--surface);display:grid;place-items:center;padding:0}
.qatt .qvc .pl svg{width:14px;height:14px}
.qatt .qvc.cur{background:var(--surface-2);border-color:var(--line)}   /* Дом №1346: красная — только панель записи, не плашка */
.qatt .qvc .lbl{margin:0 8px 0 2px;font:500 12px var(--font-body);color:var(--fg-3)}
.qatt .qvc .dot{width:10px;height:10px;margin:0 10px 0 4px;border-radius:50%;background:var(--crit-solid);animation:pulse 1s infinite}
.qatt .qvc .x{position:static;width:28px;height:28px;border:0;background:none;color:var(--fg-2)}
/* Дом №2116 F1 (прогон покр-быстро): у static-✕ поле касания .qthumbs .x::after (inset:-8px) растягивалось на всю плашку голоса
   и накрывало ▶ — «Прослушать» убирал часть. Поле касания — вокруг самого ✕, высота 44 px. */
.qatt .qvc:not(.vl-vd) .x{position:relative}
.qatt .qvc:not(.vl-vd) .x::after{inset:-8px -2px}
.qsheet .qsend{position:sticky;bottom:0;z-index:2;margin-top:auto;padding:10px 0 calc(var(--safe-b) + 14px);background:var(--surface);box-shadow:0 -10px 12px -10px rgba(0,0,0,.25)}

/* ═══ черновики голоса (владелец 14.10: «Где черновики?») — плашка там, где запись начата, и «Ещё → Черновики» ═══ */
.cdrafts{display:grid;gap:6px;min-width:0}
.cdrafts[hidden]{display:none}
.draft{display:flex;align-items:center;gap:8px;min-height:44px;padding:4px 4px 4px 12px;border-radius:22px;background:var(--crit-bg);border:1px solid var(--crit-solid);color:var(--fg);min-width:0}
.draft{gap:6px}
.draft .t{flex:1 1 auto;min-width:0;display:flex;gap:5px;align-items:baseline;font-weight:600;font-size:14px;white-space:nowrap}
.draft .t .lab{min-width:0;overflow:hidden;text-overflow:ellipsis}
.draft .t b{flex:none;font:600 14px var(--font-mono);font-variant-numeric:tabular-nums}
.draft .pl{flex:none;width:34px;height:34px;border-radius:50%;border:0;background:var(--fg);color:var(--surface);display:grid;place-items:center;padding:0}
.draft .pl svg{width:14px;height:14px}
.draft .go{flex:none;min-height:34px;height:34px;padding:0 10px;font-size:13.5px}
.draft .x{flex:none;width:34px;height:34px;border:0;background:none;color:var(--fg-2);display:grid;place-items:center;padding:0}
.qsheet .cdrafts{flex:none}
.cabove{display:grid;gap:6px;min-width:0}
.cabove:not(:has(>:not([hidden]))){display:none}
.composer.card-c:has(>.cabove>:not([hidden])){flex-wrap:wrap}
.composer.card-c>.cabove{flex:1 1 100%;order:-3}
.composer.feedc>.cabove{position:absolute;left:4px;right:4px;bottom:calc(100% + 10px)}
.composer.feedc:has(>.replybar)>.cabove{bottom:calc(100% + 36px)}
.composer.is-voice .cdrafts{display:none}
.composer .qatt{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);padding:8px 10px;box-shadow:var(--shadow-1, none)}
.composer.feedc:has(.qatt:not([hidden])) .live{display:none!important}
.vpanel .vclip{background:var(--sunk);color:var(--fg)}
.vpanel .vclip svg{width:20px;height:20px}
.vpanel .vclip[hidden]{display:none}
.sheet .drow{display:grid;gap:4px}
.sheet .drow small{color:var(--fg-2);padding-left:6px}
.composer.feedc:has(>.tab)>.cabove{bottom:calc(100% + 40px)}
@media (max-width:419px){.composer .vpanel:has(>.vclip:not([hidden])) .vlisten .t{display:none}}

/* книжка: свайп влево по сообщению — «↩ Ответить», как в Telegram (владелец 14.10). Значок — внутри пузыря справа, без прокрутки вбок */
.bub.swiping{transition:none}
.bub.swiping::after{content:"↩";position:absolute;right:8px;top:50%;transform:translateY(-50%);width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:var(--surface);color:var(--fg-2);border:1px solid var(--line);font-size:16px;opacity:.5;pointer-events:none}
.bub.sw-ready::after{opacity:1;color:var(--accent-text);border-color:var(--accent)}
/* книжка 14.10 (t-…-12, владелец: «Раньше было так и было красивей»): «Ответ на: …» — внутри поля ввода, над строкой,
   во всю ширину, как в Telegram; ярлык «куда» остаётся над полем справа */
.composer.feedc:has(>.replybar){flex-wrap:wrap;row-gap:4px}
.composer.feedc>.replybar{position:static;flex:1 1 100%;order:-1;height:auto;min-height:32px;padding:2px 2px 2px 10px;border:0;border-left:3px solid var(--accent-text);border-radius:var(--r-xs);background:var(--surface-2)}
.composer.feedc:has(>.replybar)>.cabove{bottom:calc(100% + 10px)}
.composer.feedc:has(>.tab):has(>.replybar)>.cabove{bottom:calc(100% + 40px)}
[data-tab-cur="feed"]:has(.composer.feedc>.replybar) main.main{padding-bottom:calc(var(--bar-h) + var(--safe-b) + 160px)}

/* t-…-13 (владелец 14.10, «серая полоска справа у Записать»): лента не просвечивает вокруг нижней панели — под панелью
   полоса фона во всю ширину (внутри .app — z-index:1 у .app: ниже строки ввода и панели по слою, нажатия по скрытой ленте не проходят) */
.app::after{content:"";position:fixed;left:0;right:0;bottom:0;height:calc(var(--safe-b) + var(--bar-h) + 18px);z-index:18;
  background:linear-gradient(to top,var(--bg) 0,var(--bg) calc(100% - 12px),color-mix(in srgb,var(--bg) 0%,transparent) 100%)}
html.kb .app::after{display:none}   /* Дом №1661: при записи меню на месте — полоса под строкой ввода как обычно */
@media (min-width:1024px){.app::after{display:none}}
/* t-…-13: свежее голосовое (файл ещё едет домой) — «плеер» сразу: ▶ неактивна, волна, «загружается…» */
.voice.loading button{opacity:.45;cursor:default}
.voice.loading .w{opacity:.45}
/* прогон владельца 14.10 (t-…-13): на телефоне полоса прокрутки страницы торчала серым у правого края рядом с «Записать» */
@media (max-width:1023px){html,body{scrollbar-width:none}html::-webkit-scrollbar,body::-webkit-scrollbar{display:none}}

/* Дом №1444 «ничего не пропадает»: отменяемое действие — тост 10 с с обратным отсчётом, «Где?» и «Отменить» (макет дом7я-недавние) */
.toast.rc{width:min(560px,calc(100% - 20px));display:grid;grid-template-columns:1fr auto auto;gap:8px;padding:12px 10px 14px 14px;overflow:hidden;border-radius:18px}
.toast.rc>span{font:500 14px/1.3 var(--font-body);min-width:0}
.toast.rc button{text-decoration:none;min-height:40px;padding:0 12px;border-radius:999px;font:700 14px var(--font-body)}
.toast.rc .rc-where{opacity:.85}
.toast.rc .rc-undo{background:var(--accent);color:var(--accent-ink)}
.toast.rc .rc-cd{position:absolute;left:0;bottom:0;height:3px;width:100%;background:var(--accent);transform-origin:left;animation:rc-cd linear forwards}
.toast.rc .rc-sec{position:absolute;right:14px;top:2px;font:600 10.5px var(--font-mono);font-style:normal;opacity:.6}
@keyframes rc-cd{to{transform:scaleX(0)}}
@media (prefers-reduced-motion:reduce){.toast.rc .rc-cd{animation:none}}
/* Дом №1448: уточняющий вопрос владельца — не ответ; «Это ответ» засчитывает его ответом */
.ask-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px;font-size:13px;color:var(--muted)}
.ask-line .ask-st{display:inline-flex;align-items:center;gap:4px}
.ask-line .ask-fix{min-height:36px;padding:4px 12px;font-size:13px}

/* Дом №1489: плеер голосовых как в Telegram — перемотка по волне, скорость 1× / 1,5× / 2× (одна на все, запоминается) */
.voice .w{cursor:pointer;touch-action:none}
.voice button.sp{flex:0 0 auto;width:auto;height:26px;min-width:40px;padding:0 8px;border-radius:13px;background:var(--surface);color:var(--fg);border:1px solid var(--line);font:600 12px var(--font-mono)}
.voice.on .t{color:var(--fg)}
/* Дом №2049 (макет BOLT-DESIGN дом7я-голос-загрузка, стиль №1963): загрузка / не загрузилось / нет связи; поле касания 44 px */
.voice{min-height:44px}
.voice button{position:relative}
.voice button::after{content:"";position:absolute;inset:-4px}
.voice button.sp::after{inset:-9px -2px}
.voice .ring,.vp-mini .ring{width:18px;height:18px;box-sizing:border-box;border-radius:50%;border:2px solid var(--line-2);border-top-color:var(--accent-text);animation:vp-spin .9s linear infinite}
.vp-mini .ring{border-color:color-mix(in srgb,var(--ink) 30%,transparent);border-top-color:var(--ink)}
.voice.loading button:not(.rt){opacity:1;background:var(--surface-2);color:var(--fg-2);cursor:default}
.voice.loading .t{color:var(--fg)}
.voice.loading .w s{animation:vp-breathe 1.4s ease-in-out infinite}
@keyframes vp-spin{to{transform:rotate(360deg)}}
@keyframes vp-breathe{50%{opacity:.25}}
.voice .msg{flex:1;min-width:0;display:grid;line-height:1.25}
.voice .msg b{font-size:14px;color:var(--fg)}
.voice .msg span{font-size:12px;color:var(--fg-2)}
.voice .msg[hidden],.voice .rt[hidden],.voice [hidden]{display:none}
.voice button.rt{flex:0 0 auto;width:auto;height:auto;min-height:36px;padding:0 14px;border-radius:var(--r-pill);border:1px solid var(--line-2);background:var(--surface);color:var(--fg);font:600 14.5px var(--font)}
.voice button.rt::after{inset:-4px 0}
.voice.fail{background:var(--crit-bg);padding-right:4px}
.voice.fail button:not(.rt){background:transparent;color:var(--crit);cursor:default}
.voice.fail button:not(.rt) svg{width:20px;height:20px}
.voice.fail.offl{background:var(--warn-bg)}
.voice.fail.offl button:not(.rt){color:var(--warn)}
@media (prefers-reduced-motion:reduce){
  .voice .ring,.vp-mini .ring{animation:none;border-right-color:var(--accent-text)}
  .voice.loading .w s{animation:none}
}
/* Дом №1514: запись Книжки, которую забрали в работу — зелёная рамка как у отвеченного вопроса (.q-card.done) */
.bub.taken{border-color:var(--ok);box-shadow:0 0 0 1px var(--ok)}
.bub .tk-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.bub.taken .tk-tag{display:inline-flex;align-items:center;gap:5px;padding:2px 9px 2px 6px;border-radius:var(--r-pill);background:var(--ok-bg);color:var(--ok);font:700 12px var(--font-body)}
.bub.taken .tk-tag svg{width:15px;height:15px}
.bub .tk-st{font:600 11.5px var(--font-body);padding:2px 8px;border-radius:var(--r-pill);white-space:nowrap}
.bub .tk-st.w{background:var(--info-bg);color:var(--info)} .bub .tk-st.d{background:var(--ok-bg);color:var(--ok)}
.bub .tk-st.q{background:var(--sunk);color:var(--fg-2)} .bub .tk-st.t{background:var(--think-bg,var(--sunk));color:var(--think,var(--fg-2))}
.bub.taken .to{color:var(--ok)} .bub .to.think,.bub.taken .to.think{color:var(--think,var(--fg-2))}
.bub > .to .tk-st{margin-left:8px}
.bub .tk-q{display:grid;gap:6px;justify-items:end}
.bub .tk-tos{display:grid;gap:10px;justify-items:end}
.bub .tk-tos .to{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;height:auto;min-height:0;margin:0;padding:3px 0;text-align:right;line-height:1.3}
/* Дом №1542 «Путь идеи»: телефон — шторка снизу от 56px, ПК — панель справа 520px (макет ⚡-🔩-BOLT-DESIGN/дом7я-путь-идеи) */
.bub.taken{cursor:pointer}
.bub.taken.pi-sel{box-shadow:0 0 0 1px var(--ok),0 0 0 5px color-mix(in srgb,var(--ok) 25%,transparent)}
.pi-dim{position:fixed;inset:0;background:var(--scrim);z-index:41}
.pi-sheet{position:fixed;left:0;right:0;bottom:0;top:calc(var(--safe-t, 0px) + 56px);z-index:42;background:var(--bg);border-radius:22px 22px 0 0;box-shadow:var(--shadow-2);overflow:auto;overscroll-behavior:contain;animation:up .28s var(--ease)}
@media (min-width:1024px){ .pi-sheet{left:auto;top:0;width:520px;border-radius:22px 0 0 22px} .pi-sh-h .grab{display:none} }
.pi-sh-h{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--surface);border-bottom:1px solid var(--line)}
.pi-sh-h .grab{position:absolute;top:6px;left:50%;transform:translateX(-50%);width:40px;height:4px;border-radius:2px;background:var(--line-2)}
.pi-sh-h h2{margin:8px 0 0;font:700 20px var(--font-display);flex:1}
.pi-x{width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--fg);display:grid;place-items:center;margin-top:6px;padding:0}
.pi-x svg{width:20px;height:20px}
.pi-body{padding:6px 14px calc(var(--safe-b, 0px) + 28px)}
.pi-sec{margin:16px 2px 8px;display:flex;align-items:center;gap:8px;font:700 12px var(--font-body);letter-spacing:.05em;text-transform:uppercase;color:var(--fg-3)}
.pi-sec em{font-style:normal;font-family:var(--font-mono);color:var(--fg-2);text-transform:none;letter-spacing:0}
.pi-sec svg.ic{width:15px;height:15px}
.pi-words{padding:12px 14px;border-radius:18px 18px 6px 18px;background:var(--accent-soft);border:1px solid var(--line);display:grid;gap:6px;min-width:0;overflow-wrap:anywhere}
.pi-words .v{display:flex;align-items:center;gap:6px;font:500 13px var(--font-mono);color:var(--fg-2)}
.pi-words p{margin:0;font-size:15px;line-height:1.45;white-space:pre-wrap}
.pi-words small{justify-self:end;font:500 11.5px var(--font-mono);color:var(--fg-3)}
.pi-ans{padding:11px 13px;border-radius:18px 18px 18px 6px;background:var(--surface);border:1px solid var(--line);display:grid;gap:4px;font-size:14.5px;line-height:1.4;margin-bottom:8px;overflow-wrap:anywhere}
.pi-ans .by{display:flex;align-items:center;gap:7px;font:600 12.5px var(--font-body);color:var(--fg-2)}
.pi-ans p{margin:0}
.pi-q{display:grid;gap:8px;padding:11px 13px;border-radius:16px;border:1px solid var(--line);background:var(--surface);margin-bottom:8px;overflow-wrap:anywhere}
.pi-q b{font:600 14.5px/1.35 var(--font-body)}
.pi-q small{display:block;font-size:12.5px;color:var(--fg-3);margin-top:2px}
.pi-q .qs{justify-self:start;font:600 12px var(--font-body);padding:4px 10px;border-radius:999px;white-space:nowrap;border:0}
.pi-q .qs.wait{background:var(--accent);color:var(--accent-ink);min-height:32px}
.pi-q .qs.done{background:var(--ok-bg);color:var(--ok)}
.pi-tasks{display:grid;border:1px solid var(--line);border-radius:16px;background:var(--surface);overflow:hidden}
.pi-t{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:11px 12px;border-top:1px solid var(--line);font:inherit;color:inherit;min-width:0}
.pi-t:first-child{border-top:0}
button.pi-t{grid-template-columns:auto 1fr auto;text-align:left;background:none;border-left:0;border-right:0;border-bottom:0;width:100%}
.pi-go{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center;min-width:0;text-align:left;font:inherit;color:inherit;background:none;border:0;padding:0}
.pi-t .n{font:700 12px var(--font-mono);color:var(--fg-3);min-width:44px}
.pi-t .tx{min-width:0;display:grid;gap:3px}
.pi-t .tx b{font:600 14.5px/1.3 var(--font-body);overflow-wrap:anywhere}
.pi-t .tx small{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--fg-2);min-width:0}
.pi-t .tx small span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pi-t .rt{display:grid;justify-items:end;gap:6px}
.pi-sp{font:600 11.5px var(--font-body);padding:3px 9px;border-radius:999px;white-space:nowrap}
.pi-sp.w{background:var(--info-bg);color:var(--info)} .pi-sp.d{background:var(--ok-bg);color:var(--ok)} .pi-sp.q{background:var(--sunk);color:var(--fg-2)} .pi-sp.t{background:var(--think-bg,var(--sunk));color:var(--think,var(--fg-2))}
.pi-fk{display:inline-flex;align-items:center;gap:4px;min-height:34px;padding:0 10px;border-radius:999px;border:1px solid var(--line-2);background:none;color:var(--fg);font:700 12.5px var(--font-body);white-space:nowrap}
.pi-fk svg.ic{width:14px;height:14px}
.pi-t.gone .tx b{color:var(--fg-3);text-decoration:line-through}
.pi-t.gone .tx small{color:var(--fg-3)}
.pi-tl{list-style:none;margin:0;padding:0 0 0 6px}
.pi-tl li{position:relative;display:grid;grid-template-columns:84px 1fr;gap:8px;padding:0 0 12px 14px;border-left:2px solid var(--line)}
.pi-tl li::before{content:"";position:absolute;left:-6px;top:3px;width:10px;height:10px;border-radius:50%;background:var(--c,var(--fg-3));box-shadow:0 0 0 2px var(--bg)}
.pi-tl li:last-child{border-left-color:transparent}
.pi-tl .t{font:600 11.5px var(--font-mono);color:var(--fg-3);padding-top:1px}
.pi-tl .x{font-size:13.5px;line-height:1.4;min-width:0;overflow-wrap:anywhere}
.pi-tl .x .no{font:700 11.5px var(--font-mono);padding:1px 6px;border-radius:6px;background:var(--sunk);color:var(--fg-2);margin-right:4px}
.pi-tl li.sep .x{color:var(--fg-3);font-style:italic}

/* ═══ «Мои дела → ⏰ Напоминания» (ТЗ-напоминания, макет ⚡-🔩-BOLT-DESIGN дом7я-напоминания): телефон — блок сверху, ПК — колонка 420 px справа ═══ */

/* ── the section «⏰ Напоминания» ── */
.np-sec{display:grid;gap:10px;margin:0 0 16px;padding:10px;border:1px solid var(--line);border-radius:var(--r-xl);background:var(--bg-2);min-width:0}
.np-hd{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}
.np-tg{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;min-height:48px;padding:2px 8px 2px 2px;border:0;border-radius:var(--r-m);background:none;color:var(--fg);text-align:left;cursor:pointer;font:inherit}
.np-ti{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent-text)}
.np-ti svg.ic{width:21px;height:21px}
.np-tg b{display:block;font:700 16px/1.2 var(--font-display)}
.np-tg small{display:block;font-size:12.5px;color:var(--fg-2);overflow-wrap:anywhere}
.np-tg small em{font:600 12px var(--font-mono);font-style:normal;color:var(--fg)}
.np-tg > svg.ic{color:var(--fg-3)}
.np-add{width:44px;height:44px;border-radius:50%;border:1px solid var(--line-2);background:var(--surface);color:var(--fg);display:grid;place-items:center;padding:0;cursor:pointer}
.np-gl{display:flex;align-items:baseline;gap:8px;margin:6px 4px 0;font:700 11.5px var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:var(--fg-3)}
.np-gl em{font:600 11.5px var(--font-mono);font-style:normal}
.np-gl span{font:500 12px var(--font-body);letter-spacing:0;text-transform:none;color:var(--fg-3);margin-left:auto;text-align:right}
.np-gl.np-glf{color:var(--warn)}
.np-list{display:grid;gap:6px;min-width:0}

/* row = one upcoming reminder */
.np-r{display:grid;grid-template-columns:44px minmax(0,1fr);gap:4px;align-items:start;padding:4px 10px 4px 4px;border:1px solid var(--line);border-radius:var(--r-l);background:var(--surface);min-width:0}
.np-ck{width:44px;height:44px;border:0;background:none;display:grid;place-items:center;padding:0;cursor:pointer;color:var(--yes-ink)}
.np-ck span{width:22px;height:22px;border-radius:50%;border:2px solid var(--line-2);display:grid;place-items:center}
.np-ck svg.ic{width:14px;height:14px;stroke-width:3}
.np-ck[aria-pressed="true"] span{background:var(--yes);border-color:var(--yes)}
.np-b{display:grid;gap:3px;min-width:0;min-height:44px;padding:8px 0 6px;border:0;background:none;color:var(--fg);text-align:left;font:inherit;cursor:pointer}
.np-t{font:600 15px/1.3 var(--font-body);overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.np-m{font-size:12.5px;line-height:1.45;color:var(--fg-2);overflow-wrap:anywhere}
.np-m b{font-weight:600;color:var(--fg)}
.np-m .np-tm{font:700 12.5px var(--font-mono);color:var(--fg)}
.np-m .np-no{font:600 12px var(--font-mono)}
.np-m .np-was{font:500 12px var(--font-mono);color:var(--fg-3)}
.np-cs{display:flex;flex-wrap:wrap;gap:4px 6px;margin-top:2px}
.np-ch{display:inline-flex;align-items:center;gap:4px;min-height:22px;padding:0 8px;border-radius:var(--r-pill);background:var(--sunk);color:var(--fg-2);font:600 11.5px var(--font-body);max-width:100%;overflow-wrap:anywhere}
.np-ch svg.ic{width:13px;height:13px}
.np-ch.np-by{background:none;padding:0 2px;color:var(--fg-3);font-weight:500}
.np-ch.np-q{background:var(--info-bg);color:var(--info)}
.np-ch.np-cl{background:var(--warn-bg);color:var(--warn)}
.np-ch.np-ok{background:var(--ok-bg);color:var(--ok)}
.np-ch.np-tm2{background:var(--sunk);color:var(--fg-3)}
.np-mask{display:inline-flex;align-items:center;gap:6px;color:var(--fg-2);font-style:italic}
.np-mask svg.ic{width:16px;height:16px}
.np-r.np-dn{background:var(--sunk);border-style:dashed}
.np-r.np-dn .np-t{color:var(--fg-2);text-decoration:line-through;text-decoration-color:var(--line-2)}
.np-r.np-hl{outline:2px solid var(--accent);outline-offset:1px}

/* fired card */
.np-f{display:grid;gap:8px;padding:12px 12px 0;border:1.5px solid color-mix(in srgb,var(--accent) 70%,var(--line));border-radius:var(--r-l);background:color-mix(in srgb,var(--accent) 7%,var(--surface));box-shadow:inset 4px 0 0 var(--accent);overflow:hidden;min-width:0}
.np-f.np-late{border-color:color-mix(in srgb,var(--crit) 55%,var(--line));box-shadow:inset 4px 0 0 var(--crit-solid);background:color-mix(in srgb,var(--crit) 5%,var(--surface))}
.np-fh{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.np-fi{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink)}
.np-fi svg.ic{width:17px;height:17px}
.np-late .np-fi{background:var(--crit-solid);color:var(--on-media)}
.np-fs{font:600 13px var(--font-body);color:var(--fg-2)}
.np-fs b{font:700 13.5px var(--font-mono);color:var(--fg)}
.np-lt{display:inline-flex;align-items:center;min-height:24px;padding:0 9px;border-radius:var(--r-pill);background:var(--crit-bg);color:var(--crit);font:700 12px var(--font-body)}
.np-who-tag{margin-left:auto;font:600 11.5px var(--font-body);color:var(--fg-3)}
.np-ft{font:700 16px/1.3 var(--font-body);overflow-wrap:anywhere}
.np-acts{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}
.np-acts .btn{min-height:48px;font-size:15px;padding:0 10px}
.np-acts .btn svg.ic{width:18px;height:18px}
.np-acts .btn.np-on{box-shadow:0 0 0 2px var(--accent)}
.np-open{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;width:calc(100% + 24px);min-height:48px;margin:0 -12px;padding:6px 12px 6px 14px;border:0;border-top:1px solid var(--line);background:color-mix(in srgb,var(--sunk) 45%,var(--surface));color:var(--fg);font:600 13.5px/1.3 var(--font-body);text-align:left;cursor:pointer;box-sizing:border-box}
.np-open span{min-width:0;overflow-wrap:anywhere}
.np-open b{font:700 12.5px var(--font-mono)}
.np-open > svg.ic{color:var(--fg-3)}
.np-f > :last-child:not(.np-open){margin-bottom:12px}

/* folded line, missed summary, empty, toast */
.np-next{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;align-items:center;min-height:44px;padding:6px 12px;border:1px solid var(--line);border-radius:var(--r-l);background:var(--surface);color:var(--fg-2);font:500 13.5px/1.35 var(--font-body);text-align:left;cursor:pointer;width:100%;box-sizing:border-box}
.np-next b{font:700 13px var(--font-mono);color:var(--fg)}
.np-next span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.np-miss{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;min-height:56px;padding:8px 12px;border:1.5px solid color-mix(in srgb,var(--crit) 45%,var(--line));border-radius:var(--r-l);background:var(--crit-bg);color:var(--crit);text-align:left;font:inherit;cursor:pointer;box-sizing:border-box}
.np-miss > span:nth-child(2){min-width:0;display:grid;gap:2px}
.np-miss b{font:700 15px/1.25 var(--font-body);overflow-wrap:anywhere}
.np-miss small{font-size:12.5px;color:var(--fg-2)}
.np-miss .np-mo{display:inline-flex;align-items:center;gap:2px;font:700 13.5px var(--font-body)}
.np-empty{display:grid;justify-items:center;gap:6px;text-align:center;padding:22px 16px 18px;border:1.5px dashed var(--line-2);border-radius:var(--r-l);color:var(--fg-2)}
.np-empty > svg.ic{width:30px;height:30px;color:var(--fg-3)}
.np-empty b{font:700 16px var(--font-display);color:var(--fg)}
.np-empty span{font-size:13.5px;line-height:1.4;max-width:40ch}
.np-empty .btn{margin-top:6px}
.np-toast{display:flex;align-items:center;gap:10px;margin:4px 0 0;padding:12px 14px;border-radius:var(--r-l);background:var(--ink);color:var(--ink-fg);font:600 14px/1.35 var(--font-body)}
.np-toast span{flex:1;min-width:0}
.np-toast button{min-height:44px;border:0;background:none;color:inherit;text-decoration:underline;font:600 14px var(--font-body);padding:0 4px}

/* ── sheets (real .sheet / .sheet.dt; ours add np-) ── */
.np-in{width:100%;box-sizing:border-box;min-height:72px;padding:12px 14px;border:1.5px solid var(--line);border-radius:16px;background:var(--surface);color:var(--fg);font:500 15.5px/1.4 var(--font-body);resize:none}
.np-in::placeholder{color:var(--fg-3)}
.np-opts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.np-o{display:flex;align-items:center;gap:8px;min-height:48px;padding:0 12px;border:1.5px solid var(--line);border-radius:14px;background:var(--surface);color:var(--fg);font:600 14.5px var(--font-body);text-align:left;cursor:pointer}
.np-o svg.ic{width:18px;height:18px;color:var(--fg-3)}
.np-o[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft)}
.np-o[aria-pressed="true"] svg.ic{color:var(--fg)}
.np-o > span{display:grid;min-width:0}
.np-o small{font:500 12px var(--font-body);color:var(--fg-3)}
.np-pick,.np-fld{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;min-height:56px;padding:6px 12px;border:1.5px solid var(--line);border-radius:14px;background:var(--surface);color:var(--fg);text-align:left;font:inherit;cursor:pointer;box-sizing:border-box}
.np-pick > span:nth-child(2),.np-fld > span:nth-child(2){min-width:0;display:grid;gap:1px;overflow-wrap:anywhere}
.np-pick b{font:700 14.5px var(--font-body)}
.np-pick small,.np-fld small{font-size:12.5px;color:var(--fg-3)}
.np-pick em,.np-fld em{font:600 13px var(--font-body);font-style:normal;color:var(--accent-text)}
.np-pick > svg.ic,.np-fld > svg.ic{color:var(--fg-3)}
.np-fld.np-bad{border-color:var(--crit);background:color-mix(in srgb,var(--crit) 6%,var(--surface))}
.np-fld.np-bad > svg.ic{color:var(--crit)}
.np-err{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;align-items:start;margin:0 4px;color:var(--crit);font:600 13px/1.4 var(--font-body)}
.np-err svg.ic{width:17px;height:17px;margin-top:1px}
.np-quiet{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start;padding:10px 12px;border-radius:14px;background:var(--info-bg);color:var(--info);font:600 13.5px/1.4 var(--font-body)}
.np-quiet span{color:var(--fg-2);font-weight:500}
.np-quiet span b{color:var(--info);font-weight:700}
.np-sub2{margin:-2px 4px 0;font-size:12.5px;color:var(--fg-3)}
.np-pc{display:grid;gap:0;min-width:0}
@media (min-width:1024px){.np-pc{grid-template-columns:minmax(0,1fr) minmax(0,420px);gap:24px;align-items:start}.np-pc > .np-sec{grid-column:2;grid-row:1;position:sticky;top:16px}.np-pc > .np-main{grid-column:1;grid-row:1;min-width:0}}
.np-sec[data-fold="1"] .np-list:not(.np-fired),.np-sec[data-fold="1"] .np-gl:not(.np-glf){display:none}
/* Дом №1569: играющее голосовое — плашка сверху поверх ленты (как в ChatGPT): ⏸, время, волна для перемотки, ✕ */
.vp-mini{position:fixed;left:0;right:0;margin:0 auto;top:calc(var(--safe-t, 0px) + var(--strip-h, 0px) + 8px);z-index:35;width:min(560px,calc(100% - 32px));box-sizing:border-box;display:flex;align-items:center;gap:10px;padding:6px 6px 6px 6px;border-radius:var(--r-pill);background:var(--ink);color:var(--ink-fg);box-shadow:var(--shadow-2);animation:up var(--dur-in) var(--ease)}
.vp-mini[hidden]{display:none}
.vp-mini .pp{flex:0 0 40px;width:40px;height:40px;border-radius:50%;border:0;background:var(--ink-fg);color:var(--ink);display:grid;place-items:center;padding:0}
.vp-mini .pp svg{width:16px;height:16px;fill:currentColor}
.vp-mini .t{font:600 13px var(--font-mono);font-variant-numeric:tabular-nums;min-width:36px}
.vp-mini .w{display:flex;align-items:center;gap:2px;height:36px;flex:1;min-width:60px;overflow:hidden;cursor:pointer;touch-action:none}
.vp-mini .w s{flex:1 1 3px;max-width:3px;border-radius:2px;background:currentColor;opacity:.35}
.vp-mini .w s.p{opacity:1}
.vp-mini .x{flex:0 0 40px;width:40px;height:40px;border:0;background:none;color:inherit;display:grid;place-items:center;padding:0}
.vp-mini .x svg{width:20px;height:20px}

/* Дом №1542 (ANALYST LOW 9): значок исполнителя у «ведёт» (22 px) и у «Что мы ответили» (30 px), точка — состояние агента в фокусе */
.pi-av{position:relative;flex:none;display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--sunk);border:1px solid var(--line);font-size:12px;line-height:1;vertical-align:middle;margin:0 4px 0 2px}
.pi-av.big{width:30px;height:30px;font-size:15px;margin:0}
.pi-av svg.ic{width:13px;height:13px}
.pi-av .dot{position:absolute;right:-3px;bottom:-3px;width:10px;height:10px;border-radius:50%;border:2px solid var(--surface);background:var(--fg-3)}
.pi-av .dot.d-busy{background:var(--ok)}   /* d-free «ждёт задачу» — серая (по умолчанию --fg-3), как у собеседника в фокусе */ .pi-av .dot.d-bg{background:var(--info)}
.pi-av .dot.d-perm{background:var(--perm)} .pi-av .dot.d-off{background:var(--crit)}

/* ── Дом №1583 «⭐ Важно» и «Кому отдать» (макет ⚡-🔩-BOLT-DESIGN дом7я-важно): классы vk-, цвета — токены --star* ── */
.vk-two{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:8px}
.vk-impb,.vk-komu{min-height:56px;border-radius:var(--r-m);border:1.5px solid var(--line-2);background:var(--surface);color:var(--fg);display:inline-flex;align-items:center;gap:8px;padding:8px 14px;font:inherit;font-weight:600;text-align:left}
.vk-impb[aria-pressed="true"]{background:var(--star-bg);border-color:var(--star-line);color:var(--star)}
.vk-impb .vk-star{width:20px;height:20px;flex:0 0 20px;display:inline-flex;align-items:center;justify-content:center;font-size:0;line-height:0}
.vk-komu{display:grid;grid-template-columns:22px minmax(0,1fr) 16px}
.vk-komu .chev{width:16px;height:16px;color:var(--fg-3);font-size:0;line-height:0;display:inline-flex}
.vk-komu .chev svg{width:16px;height:16px}.vk-impb .vk-star svg{width:20px;height:20px}
.vk-komu .tx{display:grid;min-width:0}
.vk-komu small{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--fg-3)}
.vk-komu b{font-size:14px;line-height:1.25;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.vk-komu.set{box-shadow:0 0 0 2px var(--ink);border-color:var(--ink)}
dialog.vk-dlg{width:min(560px,94vw)}
@media (max-width:1023px){dialog.vk-dlg{width:100vw;max-width:100vw;margin:auto 0 0;border-radius:var(--r-xl) var(--r-xl) 0 0}}
.in.vk-sheet{display:grid;gap:10px;padding:14px 16px calc(14px + var(--safe-b,0px))}
.vk-hd{display:flex;align-items:center;gap:8px}.vk-hd h2{margin:0}
.vk-hd .ib{width:var(--tap);height:var(--tap);transform:rotate(90deg)}
.vk-opts{display:grid;gap:8px;max-height:min(62vh,560px);overflow:auto;grid-auto-rows:max-content;align-content:start}
.vk-opt{display:grid;grid-template-columns:40px minmax(0,1fr) 22px;align-items:center;gap:12px;min-height:64px;padding:12px 16px 12px 12px;border-radius:var(--r-l);border:1.5px solid var(--line);background:var(--surface);color:var(--fg);text-align:left;font:inherit}
.vk-opt .ic{width:40px;height:40px;border-radius:var(--r-m);display:grid;place-items:center;background:var(--sunk)}
.vk-opt.vk-queue .ic{background:var(--info-bg,var(--sunk));color:var(--info)}
.vk-opt.vk-focus .ic{background:var(--run-bg,var(--sunk));color:var(--run,var(--info))}
.vk-opt.vk-think{border-style:dashed;border-color:var(--think-line,var(--line))}.vk-opt.vk-think .ic{color:var(--think,var(--fg-2))}
.vk-opt .tx{display:grid;gap:2px;min-width:0}.vk-opt small{color:var(--fg-3);font-size:12.5px;line-height:1.35;text-wrap:pretty}
.vk-opt .rd{width:22px;height:22px;box-sizing:border-box;justify-self:end;border-radius:50%;border:2px solid var(--line-2)}
.vk-opt[aria-checked="true"]{box-shadow:inset 0 0 0 1px var(--ink);border-color:var(--ink)}   /* inset: внешнее кольцо обрезал overflow .vk-opts (Дом №1708) */
.vk-opt[aria-checked="true"] .rd{border:7px solid var(--ink)}
.vk-list{display:grid;gap:6px;padding:8px;border-radius:var(--r-l);background:var(--sunk)}
.vk-grp{font-size:12px;font-weight:600;color:var(--fg-3);padding:6px 4px 0}
.vk-ses{display:grid;grid-template-columns:1fr auto;grid-template-areas:"nm st" "rl st";gap:2px 8px;align-items:center;min-height:52px;padding:6px 12px;border-radius:var(--r-m);border:1.5px solid var(--line);background:var(--surface);color:var(--fg);text-align:left;font:inherit}
.vk-ses .nm{grid-area:nm;font-weight:600;min-width:0;overflow-wrap:anywhere}.vk-ses .rl{grid-area:rl;font-size:12px;color:var(--fg-3)}
.vk-ses .vk-st{grid-area:st;font-size:12px;font-weight:600;padding:2px 8px;border-radius:var(--r-pill);background:var(--sunk);color:var(--fg-2)}
.vk-ses .vk-st.st-free{background:var(--ok-bg);color:var(--ok)}.vk-ses .vk-st.st-busy,.vk-ses .vk-st.st-perm{background:var(--warn-bg);color:var(--warn)}
.vk-ses.off{opacity:.55;cursor:not-allowed}
.vk-ses[aria-checked="true"]{box-shadow:inset 0 0 0 1px var(--ink);border-color:var(--ink)}
.vk-note{margin:4px 2px 0;font-size:12.5px;color:var(--fg-3);line-height:1.35}
.vk-sheet .act{display:flex}.vk-go{flex:1;min-height:var(--tap)}
.bub.vk-imp{position:relative;padding-left:18px}
.bub.vk-imp::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:5px;border-radius:3px;background:var(--star-line)}
.vk-head{display:flex;align-items:center;gap:6px;justify-content:flex-end;margin:-2px 0 2px}
.vk-tag{margin-right:auto;font-size:12px;font-weight:600;padding:2px 8px;border-radius:var(--r-pill);background:var(--star-bg);color:var(--star)}
.vk-starb{position:relative;width:32px;height:32px;border-radius:50%;border:0;background:transparent;color:var(--fg-3);display:grid;place-items:center;padding:0}
.vk-starb::after{content:"";position:absolute;inset:-6px}
.vk-starb[aria-pressed="true"]{color:var(--star)}
.vk-who{display:grid;gap:2px;width:100%;margin-top:6px;padding:8px 10px;border-radius:var(--r-m);border:1px solid var(--line);background:var(--sunk);color:var(--fg);text-align:left;font:inherit;min-height:var(--tap)}
.vk-who .l1{font-weight:600;font-size:13.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vk-who .l2{font-size:12.5px;color:var(--fg-3)}
.vk-who.wait .l2{color:var(--warn)}
.vk-who.done{background:var(--ok-bg)}.vk-who.done .l2{color:var(--ok)}
.vk-who.foc{background:var(--run-bg,var(--sunk))}
.vk-adv{margin-top:6px;padding:10px 12px;border-radius:var(--r-m);border:1px solid var(--line);background:var(--surface)}
.vk-adv b{color:var(--warn);font-size:13px}.vk-adv p{margin:4px 0 8px;font-size:13.5px}
.vk-adv .act{display:flex;gap:8px;flex-wrap:wrap}.vk-adv .btn{min-height:var(--tap)}
.vk-who,.vk-adv{box-sizing:border-box;max-width:100%;min-width:0}
.vk-adv .btn{flex:1 1 140px;min-width:0;white-space:normal;overflow-wrap:anywhere;text-align:center}
.vk-who .l2{overflow-wrap:anywhere}
.vk-opt .ic svg,.vk-komu .ic svg{width:22px;height:22px}
/* Дом №1583: ⭐ в строке ленты — тот же размер касания, что у скрепки; включена — янтарная; подпись — ярлык над левым краем строки */
.composer .vk-fst{flex:0 0 var(--tap);height:var(--tap);display:grid;place-items:center;padding:0;border-radius:50%}
.composer .vk-fst.vk-on{background:var(--star-bg);color:var(--star)}.composer .vk-fst.vk-on svg{fill:currentColor}
.composer .vk-fhint{display:none;position:absolute;left:14px;top:-30px;height:30px;align-items:center;gap:6px;padding:0 12px;border-radius:12px 12px 0 0;
  background:var(--star-bg);border:1px solid var(--star-line);border-bottom:0;font:600 12.5px var(--font-body);color:var(--star);white-space:nowrap}
.composer.vk-starred .vk-fhint{display:flex}
.composer.is-voice .vk-fst{display:none}
.vk-oerr{margin-top:6px;padding:8px 10px;border-radius:var(--r-m);background:var(--warn-bg,var(--sunk));color:var(--warn);font-size:12.5px;line-height:1.4;overflow-wrap:anywhere}
/* ═══ Дом №1580 «Длинные сообщения и прокрутка» (макет ⚡-🔩-BOLT-DESIGN дом7я-показать-ещё); кнопка .vl-more — общая с №1581 ═══ */
.bub .lm-c6{display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden;
  -webkit-mask-image:linear-gradient(to bottom,#000 62%,transparent);mask-image:linear-gradient(to bottom,#000 62%,transparent)}
.bub .vl-c3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.bub .vl-c3.lm-fade{-webkit-mask-image:linear-gradient(to bottom,#000 55%,transparent);mask-image:linear-gradient(to bottom,#000 55%,transparent)}
.vl-more{position:relative;justify-self:start;display:inline-flex;align-items:center;gap:5px;border:0;background:none;padding:0;min-height:28px;font:600 13px var(--font-body);color:var(--accent-text)}
.vl-more::after{content:"";position:absolute;inset:-8px -6px}
.vl-more svg.ic,.lm-fold svg.ic{width:16px;height:16px;transition:transform var(--dur) var(--ease)}
.vl-more[aria-expanded="true"] svg.ic,.lm-fold svg.ic{transform:rotate(180deg)}
.vl-more[hidden],.lm-fold[hidden]{display:none}
.lm-fold{position:relative;justify-self:end;display:inline-flex;align-items:center;gap:4px;border:0;background:none;padding:0 2px;min-height:24px;font:600 12.5px var(--font-body);color:var(--accent-text)}
.lm-fold::after{content:"";position:absolute;inset:-10px -8px}
.lm-fold svg.ic{width:15px;height:15px}
.bub.lm-flash{box-shadow:0 0 0 2px var(--accent)}
.bub.taken.lm-flash{box-shadow:0 0 0 1px var(--ok),0 0 0 3px var(--accent)}
.lm-jump{position:fixed;z-index:18;display:inline-flex;align-items:center;gap:6px;height:44px;padding:0 16px 0 12px;border-radius:var(--r-pill);
  border:1px solid var(--line-2);background:var(--surface);color:var(--fg);font:600 14px var(--font-body);box-shadow:var(--lm-float);white-space:nowrap;animation:up var(--dur-in) var(--ease)}
.lm-jump[hidden]{display:none}
.lm-jump.out{opacity:0;transform:translateY(6px);transition:opacity .15s var(--ease),transform .15s var(--ease)}
.lm-jump svg.ic{width:19px;height:19px}
.lm-jump.new{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.lm-jump .n{font:700 13px var(--font-mono)}

/* ═══ Дом №1581 «Вложения»: запись тремя частями, состояние каждого файла, голос во «Прикреплено», просмотр (макет дом7я-вложения) ═══ */
.bub.vl-b{gap:8px;width:min(86%,520px);box-sizing:border-box}
.vl-part{display:grid;gap:6px;min-width:0}
.vl-part+.vl-part{padding-top:8px;border-top:1px dashed var(--line-2)}
.vl-ph{display:flex;align-items:center;gap:6px;font:700 11.5px/1 var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:var(--fg-2)}
.vl-ph svg.ic{width:15px;height:15px}
.vl-ph em{font:600 11.5px var(--font-mono);font-style:normal;letter-spacing:0;text-transform:none;color:var(--fg-2)}
.bub .vl-c3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.bub .vl-cap{font-size:15px}
.bub.vl-b .voice{width:100%;box-sizing:border-box}
.vl-alb{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}
.vl-alb.n3{grid-template-columns:repeat(3,minmax(0,1fr))}
.vl-alb.n1{grid-template-columns:minmax(0,180px)}
@media (min-width:1024px){ .vl-alb{grid-template-columns:repeat(3,minmax(0,1fr))} .vl-alb.n1{grid-template-columns:minmax(0,180px)} }
.vl-fig{position:relative;margin:0;border-radius:var(--r-s);overflow:hidden;background:var(--sunk);aspect-ratio:1;cursor:zoom-in}
.vl-alb.n1 .vl-fig{aspect-ratio:3/4}
.vl-fig img,.vl-fig video{display:block;width:100%;height:100%;object-fit:cover}
.vl-fig .vl-none{position:absolute;inset:0;display:grid;place-items:center;color:var(--fg-3)}
.vl-fig .vl-none svg.ic{width:28px;height:28px}
.vl-fig .vl-st{display:contents}
.vl-fig .vl-play{position:absolute;inset:0;margin:auto;width:48px;height:48px;border-radius:50%;background:var(--media-shade);color:var(--on-media);display:grid;place-items:center}
.vl-fig .vl-play svg{width:20px;height:20px;margin-left:3px}
.vl-fig .vl-dur{position:absolute;left:6px;bottom:6px;padding:2px 7px;border-radius:var(--r-pill);background:var(--media-shade);color:var(--on-media);font:600 11.5px var(--font-mono);display:inline-flex;align-items:center;gap:4px}
.vl-fig .vl-dur svg{width:13px;height:13px}
.vl-fig .vl-plus{position:absolute;inset:0;display:grid;place-items:center;background:var(--media-shade);color:var(--on-media);font:700 18px var(--font-mono)}
.vl-file{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:10px;width:100%;min-height:52px;padding:6px 6px 6px 10px;border-radius:var(--r-s);background:var(--surface);border:1px solid var(--line);color:var(--fg);font:inherit;text-align:left;cursor:pointer;box-sizing:border-box}
.vl-file .vl-fi{width:36px;height:40px;border-radius:7px;background:var(--info-bg);color:var(--info);display:grid;place-items:center;font:700 9.5px var(--font-mono)}
.vl-file .vl-fn{min-width:0}
.vl-file b{display:block;font:600 14px/1.3 var(--font-body);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vl-file small{display:block;font:500 12px var(--font-mono);color:var(--fg-3)}
.vl-file .vl-fst.sent{color:var(--ok)}.vl-file .vl-fst.bad{color:var(--crit)}
.vl-file .vl-open{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;color:var(--fg-2)}
.vl-up{position:absolute;left:5px;right:5px;bottom:5px;display:flex;align-items:center;gap:4px;padding:3px 7px;border-radius:var(--r-pill);background:var(--media-shade);color:var(--on-media);font:600 11.5px/1.25 var(--font-body);white-space:nowrap;overflow:hidden}
.vl-up svg.ic{width:13px;height:13px}
.vl-up.home{background:var(--yes);color:var(--yes-ink)}
.vl-fig .vl-bar{position:absolute;left:0;right:0;bottom:0;height:4px;background:var(--media-shade)}
.vl-fig .vl-bar i{display:block;height:100%;width:var(--p);background:var(--accent)}
.vl-fig.sending img{opacity:.7}
.vl-fig.bad{outline:2px solid var(--crit-solid);outline-offset:-2px}
.vl-fig.bad img{opacity:.6}
.vl-fig .vl-pct{position:absolute;inset:0;margin:auto;width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:var(--media-shade);color:var(--on-media);font:700 14px var(--font-mono)}
.vl-fig .vl-err{position:absolute;inset:0;display:grid;align-content:center;justify-items:center;gap:6px;padding:6px;text-align:center;color:var(--on-media);font:700 12.5px/1.2 var(--font-body);background:var(--media-shade)}
.vl-fig .vl-err button{display:inline-flex;align-items:center;gap:5px;min-height:36px;padding:0 12px;border-radius:var(--r-pill);border:0;background:var(--on-media);color:var(--crit-solid);font:700 13px var(--font-body);position:relative}
.vl-fig .vl-err button::after{content:"";position:absolute;inset:-4px}
.vl-fig .vl-err svg.ic{width:15px;height:15px}
.vl-cnt{display:flex;flex-wrap:wrap;gap:4px 10px;font:600 12.5px var(--font-body);color:var(--fg-2)}
.vl-cnt .ok{color:var(--ok)}.vl-cnt .bad{color:var(--crit)}
.vl-vst{display:inline-flex;align-items:center;gap:4px;font:600 12px var(--font-body);color:var(--ok)}
.vl-vst svg.ic{width:14px;height:14px}
.bub.vl-q{border-style:dashed}
/* «Прикреплено»: подсказка, нажатие — крупно, сохранённый голос плашкой */
.qatt-h{display:flex;align-items:center;gap:8px}
.qatt-h .vl-hint{margin-left:auto;font-weight:500;color:var(--fg-3);font-size:12px;white-space:nowrap}
.qatt .qthumbs figure{cursor:zoom-in}
.qatt .qvc.vl-vd{flex:0 0 100%;box-sizing:border-box;background:var(--surface-2);border-color:var(--line-2);padding:0 4px;gap:4px}
.qatt .qvc.vl-vd .pl{position:relative;width:36px;height:36px;background:var(--ink);color:var(--ink-fg)}
.qatt .qvc.vl-vd .pl::after,.qatt .qvc.vl-vd .x::after{content:"";position:absolute;inset:-4px}
.qatt .qvc.vl-vd .x{position:relative}
.qatt .qvc.vl-vd .t{font:600 14px var(--font-mono)}
.qatt .qvc.vl-vd .vl-lbl{flex:1;margin:0 2px 0 4px;font:500 12.5px var(--font-body);color:var(--fg-2)}
.qatt .qvc.vl-vd .x{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;padding:0}
.qatt .qvc.vl-vd .x svg{width:16px;height:16px}
/* просмотр: видео, файл, миниатюры, «Убрать» */
#lb-media .vl-lbv{display:block;width:100%;max-height:70vh;border-radius:var(--r-s);background:var(--bg-2)}
.vl-doc{width:min(100% - 32px,360px);margin:0 auto;display:grid;justify-items:center;gap:10px;padding:28px 20px;border-radius:var(--r-l);background:var(--surface-2);text-align:center;box-sizing:border-box}
.vl-doc .vl-big{width:84px;height:100px;border-radius:12px;background:var(--info-bg);color:var(--info);display:grid;place-items:center;font:800 18px var(--font-mono)}
.vl-doc b{font:700 17px/1.35 var(--font-body);overflow-wrap:anywhere}
.vl-doc small{font:500 13px var(--font-mono);color:var(--fg-2)}
.vl-doc p{margin:0;font:500 13.5px/1.45 var(--font-body);color:var(--fg-2)}
.vl-doc p:empty{display:none}
.vl-thumbs{display:flex;gap:6px;justify-content:center;overflow-x:auto;padding:4px 2px}
.vl-thumbs button{position:relative;flex:0 0 52px;height:52px;padding:0;border:0;border-radius:8px;overflow:hidden;opacity:.55;background:var(--surface-2);color:var(--fg);cursor:pointer}
.vl-thumbs button.on{opacity:1;box-shadow:0 0 0 2px var(--fg)}
.vl-thumbs img{width:100%;height:100%;object-fit:cover;display:block}
.vl-thumbs .k{position:absolute;inset:0;display:grid;place-items:center}
.vl-thumbs .k svg.ic{width:20px;height:20px}
.vl-hint{text-align:center;font:500 12.5px var(--font-body);color:var(--fg-3)}
.vl-acts{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.vl-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 18px;border-radius:var(--r-pill);border:1px solid var(--line-strong);background:none;color:var(--fg);font:600 15px var(--font-body)}
.vl-btn.del{border-color:transparent;background:var(--crit-solid);color:var(--on-media)}
.vl-btn svg.ic{width:19px;height:19px}
#lb-note{display:grid;gap:10px}
.qatt .qthumbs figure .vl-tf{display:grid;place-items:center;align-content:center;gap:2px;width:64px;height:64px;color:var(--fg-2)}
.qatt .qthumbs figure .vl-tf svg.ic{width:22px;height:22px}
.qatt .qthumbs figure .vl-tf b{font:700 10.5px var(--font-mono)}
.lb #lb-text:has(+ #lb-note .vl-thumbs){display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}   /* DESIGN №1581: длинная подпись не выталкивает миниатюры */

/* ═══ Дом №1444 ч. 2–5 «ничего не пропадает» (макет ⚡-🔩-BOLT-DESIGN/дом7я-недавние): закрытые в поиске, «Недавние», «Закрытые», карточка закрытой ═══ */
.rc-seg{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 -2px 10px;padding:0 2px}
.rc-seg[hidden]{display:none}
.rc-seg button{flex:none;min-height:44px;padding:0 14px;border-radius:var(--r-pill);border:1px solid var(--line);background:var(--surface);color:var(--fg-2);font:600 14px var(--font-body);display:flex;align-items:center;gap:6px}
.rc-seg button[aria-pressed="true"]{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.rc-seg em{font:600 12px var(--font-mono);font-style:normal;opacity:.75}
.rc-closed{justify-self:start;display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:var(--r-pill);font:600 11.5px var(--font-body);background:color-mix(in srgb,var(--sc) 16%,var(--surface));color:var(--sc);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rc-closed svg.ic{width:12px;height:12px}
.srow.rc-isclosed{background:var(--sunk);border-style:dashed}
.rc-list{display:grid;gap:8px;min-width:0}
.rc-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 12px;border-radius:16px;border:1px solid var(--line);background:var(--surface);min-width:0}
.rc-item.isclosed{background:var(--sunk);border-style:dashed}
.rc-item .ico{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,var(--sc,var(--fg-3)) 16%,var(--surface));color:var(--sc,var(--fg-2))}
.rc-item .ico svg.ic{width:20px;height:20px}
.rc-item .tx{min-width:0;display:grid;gap:2px}
.rc-item .tx b{font:600 15px/1.3 var(--font-body);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}
.rc-item .tx small{font-size:12.5px;color:var(--fg-2);min-width:0}
.rc-item .num{font:600 12px var(--font-mono);color:var(--fg-3)}
.rc-back{min-height:44px;padding:0 12px;border-radius:var(--r-pill);border:1px solid var(--line-2);background:none;color:var(--fg);font:600 13px var(--font-body);display:flex;align-items:center;gap:5px;white-space:nowrap}
.rc-back svg.ic{width:16px;height:16px}
.rc-day{margin:10px 4px 2px;font:700 12px var(--font-body);letter-spacing:.04em;text-transform:uppercase;color:var(--fg-3)}
.rc-ban{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:14px;border:1.5px dashed var(--sc);background:color-mix(in srgb,var(--sc) 9%,var(--surface));font-size:14px;line-height:1.4;color:var(--fg-2)}
.rc-ban svg.ic{flex:none;width:20px;height:20px;color:var(--sc);margin-top:1px}
.rc-ban b{color:var(--fg)}
/* Дом №1444: часы «Недавние» в верхней полосе — на 360–390 бренд уступает место кнопкам (название сокращается «…») */
.top .brand-slot{min-width:0;flex:0 1 auto;display:flex}
@media (max-width:400px){.top .brand-logo .t{display:none}}   /* сверка DESIGN: на узком — только знак проекта, без обрезанного имени */
/* ПК: часы — рядом с «Поиск по всему», бренд-строка не сжимается */
.search-row{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.search-row .search-side,.side .search-row .search-side{flex:1 1 auto;width:auto;min-width:0;margin-bottom:0}
.search-row .ib{flex:0 0 var(--tap)}
/* строка «Недавних/Закрытых»: одна кнопка, вся строка открывает */
.rc-item.go{cursor:pointer}
.rc-item .tx small b{font-weight:600;color:var(--fg)}
.rc-ret{margin-top:10px}
/* Дом №1634 п.6 (макет BOLT-DESIGN «верхняя полоса»): «Пульт» в шапке телефона после значка синхронизации; тема и лупа из шапки ушли;
   лупа — в полосе сразу за ⊞ и прилипает вместе с ней; на ПК — строка «Пульт» под «Поиск по всему», лупы в полосе нет */
.top .pult-btn{flex:0 0 auto;position:relative;height:var(--tap);display:inline-flex;align-items:center;gap:6px;padding:0 14px 0 11px;
  border-radius:var(--r-pill);border:1px solid var(--line);background:var(--surface);color:var(--fg);font:600 14px var(--font-body);cursor:pointer}
.top .pult-btn svg.ic{width:20px;height:20px}
.top .pult-btn[aria-current="page"]{background:var(--accent-soft);border-color:var(--accent);color:var(--fg)}
.top .pult-btn .pp-alarm{top:-2px;right:-2px}
.top .top-find[hidden]{display:none}
.strip .find{flex:0 0 var(--tap);height:var(--tap);border-radius:var(--r-m);border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;padding:0;color:var(--fg)}
.strip .find svg{width:20px;height:20px}
.side .pult-row{display:flex;align-items:center;gap:10px;width:100%;min-height:var(--tap);margin:0 0 8px;padding:0 12px;border-radius:var(--r-m);
  border:1px solid var(--line);background:var(--surface);color:var(--fg);font:600 14px var(--font-body);position:relative;cursor:pointer}
.side .pult-row svg.ic{width:20px;height:20px}
.side .pult-row[aria-current="page"]{background:var(--accent-soft);border-color:var(--accent)}
.side .pult-row .pp-alarm{position:static;margin-left:auto;box-shadow:none}
@media (min-width:1024px){.strip .find{display:none}}
@media (max-width:1023px){.side .pult-row{display:none}}
/* Дом №1634 (DESIGN LOW): 360 на «Пульте»/«Картине дел» полоса полная — логотип не сжимается под значок обновления */
@media (max-width:370px){ .top{gap:4px} .top .brand-slot{flex-shrink:0} .top .pult-btn{padding:0 10px 0 8px;gap:5px} }
/* Дом №1634 «А и В»: ответ/добавка в ленте — полоса слева (зелёная = забрали, как рамка) и «Добавлено к Дом №N» над подвалом */
.bub.reply.att{box-shadow:inset 3px 0 0 var(--att-c)}
.bub.reply.att.on{--att-c:var(--ok)}
.bub.reply.att.off{--att-c:var(--line-strong)}
.bub .att-cap{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:10px 6px;margin-top:8px;font:600 13px/1.3 var(--font-body);color:var(--fg-2);min-width:0}
.bub .att-cap svg.ic{width:15px;height:15px;flex:none}
.bub .att-cap .att-n{position:relative;min-height:32px;padding:0 2px;border:0;background:none;font:700 13px var(--font-body);color:var(--fg);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.bub .att-cap .att-n::after{content:"";position:absolute;left:-4px;right:-4px;top:50%;height:44px;transform:translateY(-50%)}
.bub.reply.att.on .att-cap .att-n{color:var(--ok)}
.bub .att-cap.wait{color:var(--fg-3);font-weight:500}

.bub .att-cap .att-t{display:inline-flex;align-items:center;gap:6px}   /* Дом №1634 (DESIGN LOW): задача — один кусок, без висящей запятой */

/* Дом №2116 (K3, ARCHITECT): правило контейнера Cytoscape 3.30.4 — своим файлом, а не встроенным <style>. Библиотека вставляет свой
   <style>, только если на странице нет элемента #__________cytoscape_stylesheet; этот id стоит на <link> к app.css в index.html.
   Так CSP style-src остаётся 'self', без хеша и без правки vendored-файла. */
.__________cytoscape_container{position:relative}

/* p20, dom-part-23 (заметки BOLT-DESIGN дом7я-стол-команда-2232 §2): мини-плеер голосового на телефоне лежал поверх первой строки под
   полосой и забирал касания (заголовки, чипы, «Ответ на Дом №»). Пока он виден — место под него оставлено: экраны (main#main — в нём
   все section.view) начинаются ниже, scrollIntoView / фокус — тоже под ним. 60 = кнопка 40 + 2×6 + 8 зазор. */
:root{--vp-h:0px}
html:has(.vp-mini:not([hidden])){--vp-h:60px;scroll-padding-top:calc(var(--safe-t,0px) + var(--strip-h,0px) + var(--vp-h))}
@media (max-width:1023px){html:has(.vp-mini:not([hidden])) main#main{padding-top:calc(14px + var(--vp-h))}}
