/* Инбокс PO — экраны «Сегодня · Я обещал · Мне обещали · Заметки» (ADR 0002; дизайн-язык PWA «Утро»). */
  :root{
    /* старые имена — псевдонимы токенов poh-ds (poh-ds.css): ими ещё пользуются стили в JS (daily-card.js) */
    --bg:var(--ds-bg); --card:var(--ds-surface); --sep:var(--ds-line); --text:var(--ds-text); --text2:var(--ds-text-2); --text3:var(--ds-text-3);
    --amber:var(--ds-warning); --red:var(--ds-danger); --green:var(--ds-success);
    --rose:var(--ds-accent); --rose2:var(--ds-accent);
  }
  /* сброс — в слое: правила вне слоёв сильнее слоёв, и иначе он обнулял бы отступы утилит чата (widget/chat, Tailwind) */
  @layer reset { *{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent} }
  html,body{height:100%;overscroll-behavior-x:none}
  html{overflow-x:hidden}body{overflow-x:clip}   /* страница не ездит вбок (ADR 0009, п. 5); clip — body не становится прокруткой */
  body{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Inter,system-ui,sans-serif;
    background:var(--ds-bg);color:var(--ds-text);-webkit-font-smoothing:antialiased}
  main{height:100dvh;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;
    padding:max(10px, env(safe-area-inset-top)) 14px calc(150px + env(safe-area-inset-bottom))}
  main::-webkit-scrollbar{display:none}

  /* шапка */
  .daynav{padding:10px 4px 12px}
  .daynav .d1{font-size:var(--ds-fs-display);font-weight:var(--ds-fw-bold);letter-spacing:-.5px}
  .daynav .d2{font-size:var(--ds-fs-caption);color:var(--ds-text-2);font-weight:var(--ds-fw-regular);margin-top:1px}

  /* недельный свип-календарь */
  .weekstrip{display:flex;gap:4px;padding:2px 0 14px}
  .wd{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;
    text-decoration:none;color:inherit;padding:2px 0}
  .wd .dw{font-size:var(--ds-fs-label);font-weight:var(--ds-fw-bold);color:var(--ds-text-2);letter-spacing:.3px;text-transform:uppercase}
  .wd .cap{width:100%;max-width:44px;aspect-ratio:1;border-radius:var(--ds-r-md);flex:none;
    display:flex;align-items:center;justify-content:center;
    font-size:var(--ds-fs-title);font-weight:var(--ds-fw-bold);font-variant-numeric:tabular-nums;letter-spacing:-.3px}
  .wd .dots{display:flex;gap:2.5px;height:5px}
  .wd .dots i{width:4.5px;height:4.5px;border-radius:50%;background:var(--ds-accent)}
  .wd.today .dw{color:var(--ds-accent)}
  .wd.today .cap{background:var(--ds-accent);color:var(--ds-on-accent);
    box-shadow:var(--ds-shadow-2)}
  .wd.today .dots i{background:var(--ds-accent)}
  .wd.other .cap{color:var(--ds-text-3)}
  .wd.other .dots i{background:var(--ds-line)}

  /* карточки */
  .card{background:var(--ds-surface);border-radius:var(--ds-r-lg);padding:14px 16px;margin-bottom:12px;box-shadow:var(--ds-shadow-1)}

  /* повестка; #agenda — опора линии «сейчас»: без неё линия считалась от окна и не ехала с прокруткой main */
  #agenda{position:relative}
  .ev{display:flex;align-items:center;gap:10px;min-height:44px;text-decoration:none;color:inherit;position:relative}
  .ev + .ev{border-top:1px solid var(--ds-line)}
  .ev .time{font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-bold);color:var(--ds-text-2);width:42px;flex:none;font-variant-numeric:tabular-nums}
  .ev .t{flex:1;font-size:var(--ds-fs-body);font-weight:var(--ds-fw-medium);letter-spacing:-.15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
  .ev .t .x{color:var(--ds-text-3);font-weight:var(--ds-fw-regular);padding:0 3px}
  .ev .m{flex:none;font-size:var(--ds-fs-caption);line-height:1;display:flex;gap:5px}
  .m .warn{color:var(--ds-warning)} .m .star{color:var(--ds-warning)}
  .ev.past{opacity:.4}
  #agenda-card{cursor:pointer}
  #agenda .quiet .go{color:var(--ds-accent);font-weight:var(--ds-fw-medium)}
  .ev .evjoin{display:none} .ev.soon .evjoin{display:flex}
  .ev .evjoin{align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:var(--ds-accent-soft);margin-right:-4px}
  .ev .evjoin svg{width:17px;height:17px;stroke:var(--ds-accent);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
  .nowline{position:absolute;left:54px;right:2px;height:2px;background:var(--ds-danger);border-radius:var(--ds-r-sm);pointer-events:none}
  .nowline::before{content:"";position:absolute;left:-4px;top:-2.5px;width:7px;height:7px;border-radius:50%;background:var(--ds-danger)}

  /* спринт */
  /* спринты команд — как титул бизнес-колоды: команда, спринт, % историй, полоса, SP / в блоке / не закрыто */
  .sprints{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;
    margin:0 -14px 12px;padding:0 14px 2px;scroll-padding:0 14px}
  .sprints::-webkit-scrollbar{display:none}
  .spc{flex:0 0 80%;scroll-snap-align:start;background:var(--ds-surface);border-radius:var(--ds-r-lg);padding:16px 18px 14px;
    box-shadow:var(--ds-shadow-1);text-decoration:none;color:inherit;display:block}
  @media (min-width:640px){ .sprints{overflow:visible;margin:0 0 12px;padding:0} .spc{flex:1 1 0} }
  .spc:active{transform:scale(.985)}
  .spc .top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
  .spc .who{min-width:0}
  .spc .tm{font-size:var(--ds-fs-title);font-weight:var(--ds-fw-bold);letter-spacing:-.2px}
  .spc .sn{display:flex;font-size:var(--ds-fs-caption);color:var(--ds-text-2);font-weight:var(--ds-fw-medium);margin-top:1px;white-space:pre}
  .spc .sn .nm{min-width:0;overflow:hidden;text-overflow:ellipsis}
  .spc .sn .old{flex:none}
  .spc .stale{display:flex;align-items:center;gap:6px;flex:none;color:var(--ds-text-2)}
  .spc .stale b{font-size:var(--ds-fs-display);font-weight:var(--ds-fw-bold);letter-spacing:-1px;line-height:1;font-variant-numeric:tabular-nums;color:var(--ds-text-3)}
  .spc .stale.bad b{color:var(--ds-danger)}
  .spc .stale span{font-size:var(--ds-fs-label);font-weight:var(--ds-fw-medium);line-height:1.2}
  .spc .burn{display:block;width:100%;height:auto;margin:8px 0 6px;overflow:visible}
  .spc .burn .bv{font-size:var(--ds-fs-label);font-weight:var(--ds-fw-bold);font-variant-numeric:tabular-nums}
  .spc .burn .ax{font-size:var(--ds-fs-label);fill:var(--ds-text-3);font-weight:var(--ds-fw-medium)}
  .spc .seg{display:flex;gap:2px;height:16px;border-radius:var(--ds-r-pill);overflow:hidden}
  .spc .seg i{display:flex;align-items:center;justify-content:center;font-style:normal;font-size:var(--ds-fs-label);font-weight:var(--ds-fw-bold);color:var(--ds-on-accent);min-width:4px}
  .spc .seg .s-done{background:var(--ds-success)} .spc .seg .s-review{background:var(--ds-warning)} .spc .seg .s-progress{background:var(--ds-text-2)}   /* синего в системе нет: «в работе» нейтральный, чтобы не спорить с розой «блока» */
  .spc .seg .s-blocked{background:var(--ds-danger)} .spc .seg .s-open{background:var(--ds-line);color:var(--ds-text-2)}
  .spc .legend{display:flex;flex-wrap:wrap;gap:2px 8px;margin-top:6px;font-size:var(--ds-fs-label);color:var(--ds-text-2);font-weight:var(--ds-fw-medium)}
  .spc .legend span::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:3px;background:currentColor}
  .spc .legend .s-done::before{background:var(--ds-success)} .spc .legend .s-review::before{background:var(--ds-warning)}
  .spc .legend .s-progress::before{background:var(--ds-text-2)} .spc .legend .s-blocked::before{background:var(--ds-danger)}
  .spc .legend .s-open::before{background:var(--ds-text-3)}
  .spc .cap{font-size:var(--ds-fs-caption);color:var(--ds-text-2);margin-top:8px}
  .spc .cap b{color:var(--ds-text);font-weight:var(--ds-fw-bold);font-variant-numeric:tabular-nums}
  .spc.err .cap{color:var(--ds-danger)}

  /* заметки (появляются, только если есть) */
  .note{display:flex;gap:10px;padding:8px 0;border-top:1px solid var(--ds-line);font-size:var(--ds-fs-caption);line-height:1.45}
  .note:first-of-type{border-top:none}
  .note .tm{flex:none;color:var(--ds-text-3);font-weight:var(--ds-fw-bold);font-size:var(--ds-fs-caption);padding-top:2px}

  /* микрофон */
  .micfab{position:fixed;right:18px;
    bottom:calc(76px + env(safe-area-inset-bottom));z-index:12;
    width:58px;height:58px;border-radius:50%;border:none;cursor:pointer;
    background:var(--ds-accent);
    box-shadow:var(--ds-shadow-2);
    display:flex;align-items:center;justify-content:center;transition:transform .15s}
  .micfab:active{transform:scale(.92)}
  .micfab{touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
  .micfab.rec{animation:micpulse 1.4s infinite}
  @keyframes micpulse{0%{box-shadow:var(--ds-shadow-2)}
    70%{box-shadow:var(--ds-shadow-2)}
    100%{box-shadow:var(--ds-shadow-2)}}
  .micfab svg{width:25px;height:25px;stroke:var(--ds-on-accent);stroke-width:2;fill:none;stroke-linecap:round}

  /* панель голосового ввода */
  .veil{position:fixed;inset:0;background:var(--ds-scrim);opacity:0;pointer-events:none;transition:.25s;z-index:20}
  .veil.on{opacity:1;pointer-events:auto}
  .sheet{position:fixed;left:0;right:0;bottom:0;z-index:21;background:var(--ds-surface);border-radius:var(--ds-r-lg) var(--ds-r-lg) 0 0;
    padding:10px 18px calc(16px + env(safe-area-inset-bottom));
    transform:translateY(105%);transition:transform .3s cubic-bezier(.32,.72,.33,1)}
  .sheet.on{transform:translateY(0)}
  .grab{width:38px;height:5px;border-radius:var(--ds-r-pill);background:var(--ds-line);margin:2px auto 12px}
  .sheet .sh{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
  .sheet .sh .t{font-size:var(--ds-fs-title);font-weight:var(--ds-fw-bold);letter-spacing:-.3px}
  .shbtn{border:none;background:none;font-family:inherit;font-size:var(--ds-fs-body);font-weight:var(--ds-fw-medium);color:var(--ds-text-2);padding:6px 2px}
  .shbtn.primary{color:var(--ds-accent)}
  .wave{display:flex;align-items:center;justify-content:center;gap:3px;height:54px;margin:4px 0 12px}
  .wave i{width:4px;border-radius:var(--ds-r-pill);background:var(--ds-accent);height:8px}
  .sheet.rec .wave i{animation:wv .9s ease-in-out infinite alternate}
  .sheet.rec .wave i:nth-child(2n){animation-delay:.15s}
  .sheet.rec .wave i:nth-child(3n){animation-delay:.3s}
  @keyframes wv{from{height:6px}to{height:46px}}
  .transcript{min-height:48px;background:var(--ds-surface-2);border-radius:var(--ds-r-md);padding:12px 14px;font-size:var(--ds-fs-body);line-height:1.45}
  .transcript .ph{color:var(--ds-text-3)}
  .transcript textarea{width:100%;border:none;background:none;font:inherit;color:inherit;outline:none;resize:none}

  /* тост */
  .toast{position:fixed;left:50%;transform:translateX(-50%) translateY(20px);
    bottom:calc(146px + env(safe-area-inset-bottom));background:var(--ds-text);color:var(--ds-on-accent);
    font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-medium);border-radius:var(--ds-r-pill);padding:10px 16px;opacity:0;transition:.3s;
    z-index:30;pointer-events:none;width:max-content;max-width:86vw;text-align:center}
  .toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

  /* нижнее меню: три вкладки; микрофон — плавающая кнопка справа над меню */
  .tabbar{position:fixed;left:0;right:0;bottom:0;z-index:11;display:flex;justify-content:space-around;
    padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:var(--ds-surface);
    border-top:1px solid var(--ds-line)}
  .tab{flex:1;border:none;background:none;font-family:inherit;cursor:pointer;color:var(--ds-text-2);
    display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 0;font-size:var(--ds-fs-label);font-weight:var(--ds-fw-bold)}
  .tab svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
  .tab.on{color:var(--ds-accent)}
  .tab .badge{position:absolute;margin-left:22px;margin-top:-3px;min-width:16px;height:16px;border-radius:var(--ds-r-pill);
    background:var(--ds-danger);color:var(--ds-on-accent);font-size:var(--ds-fs-label);line-height:16px;padding:0 4px}
  .tab .ic{position:relative;display:flex}
  [hidden]{display:none!important}

  /* коммитменты — структура списка как «Сегодня» в Todoist: календарный фильтр → «Просрочено» → дни */
  :root{--p1:var(--ds-danger);--p2:var(--ds-warning);--p3:var(--ds-text-2);--p4:var(--ds-text-3)}   /* приоритеты: синего в системе нет — P3 нейтральный */
  .daynav.row{display:flex;align-items:center;justify-content:space-between}
  .wd.sel .cap{box-shadow:inset 0 0 0 2px var(--ds-accent)}
  .wd.today.sel .cap{box-shadow:var(--ds-shadow-2)}
  .sec{display:flex;align-items:center;justify-content:space-between;padding:12px 4px 8px;min-height:44px}
  .sec .h{font-size:var(--ds-fs-title);font-weight:var(--ds-fw-bold);letter-spacing:-.2px}
  .sec .h .n{font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-regular);color:var(--ds-text-3);letter-spacing:0}
  .sec .more{border:none;background:none;width:44px;height:44px;margin:-10px -10px -10px 0;border-radius:50%;cursor:pointer;display:grid;place-items:center}
  .sec .more svg{width:22px;height:22px;fill:var(--ds-text-2)}
  .list{background:var(--ds-surface);border-radius:var(--ds-r-lg);padding:0 16px;margin-bottom:4px;box-shadow:var(--ds-shadow-1)}
  .it{display:flex;gap:12px;align-items:flex-start;padding-top:12px;transition:opacity .25s,transform .25s}
  .it .body{flex:1;min-width:0;padding-bottom:12px;border-bottom:1px solid var(--ds-line);cursor:pointer}
  .it:last-child .body{border-bottom:none}
  .it.gone{opacity:0;transform:translateX(24px)}
  .chk{flex:none;width:23px;height:23px;border-radius:50%;border:2px solid var(--p4);background:none;cursor:pointer;
    display:flex;align-items:center;justify-content:center;padding:0;margin-top:1px}
  .chk svg{width:13px;height:13px;stroke:var(--ds-on-accent);stroke-width:3;fill:none;stroke-linecap:round;stroke-linejoin:round;opacity:0}
  .chk.p1{border-color:var(--p1);background:color-mix(in srgb,var(--ds-danger) 8%,transparent)}
  .chk.p2{border-color:var(--p2);background:color-mix(in srgb,var(--ds-warning) 8%,transparent)}
  .chk.p3{border-color:var(--p3);background:color-mix(in srgb,var(--ds-text-2) 8%,transparent)}
  .chk.on{background:var(--ds-text-3);border-color:var(--ds-text-3)}
  .chk.on.p1{background:var(--p1)} .chk.on.p2{background:var(--p2)} .chk.on.p3{background:var(--p3)}
  .chk.on svg{opacity:1}
  .it .tt{font-size:var(--ds-fs-body);font-weight:var(--ds-fw-regular);line-height:1.3;letter-spacing:-.1px;word-break:break-word}
  .it .meta{display:flex;align-items:center;gap:10px;margin-top:5px;font-size:var(--ds-fs-caption);color:var(--ds-text-2);font-weight:var(--ds-fw-medium)}
  .meta .dt{display:flex;align-items:center;gap:4px;flex:none}
  .meta .dt.late{color:var(--ds-danger)}
  .meta .who{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:var(--ds-fw-regular)}
  .meta .who + .dt::before{content:"·";margin-right:6px;color:var(--ds-text-3)}
  #c-list .it .tt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}   /* список обещаний: название в одну строку, целиком — в экране обещания */
  #c-list .it .meta{gap:6px}
  .meta svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
  /* индикатор синхронизации строки (t_c420c6a3): pending — часики, syncing — облако, конфликт — ⚠ */
  .meta .sync-ic{display:inline-flex;align-items:center;flex:none;color:var(--ds-text-3)}
  .meta .sync-ic svg{width:14px;height:14px}
  .meta .sync-ic.sync-syncing{color:var(--ds-accent)}
  .meta .sync-ic.sync-conflict{color:var(--ds-danger);font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-bold)}
  .card.sync-b{padding:8px 16px;margin-bottom:8px}
  .card.sync-b.offline .quiet{color:var(--ds-text-2)}
  .card.sync-b.memory .quiet,.card.sync-b.stuck .quiet,.card.sync-b.conflict .quiet{color:var(--ds-danger)}
  .quiet{font-size:var(--ds-fs-caption);color:var(--ds-text-2);padding:4px 0;line-height:1.45}
  .quiet a{color:var(--ds-accent);font-weight:var(--ds-fw-medium);text-decoration:none}
  .err{color:var(--ds-danger)}
  .toast.undo{white-space:nowrap;display:flex;align-items:center}
  .toast button{border:none;background:none;font:inherit;color:var(--ds-accent);font-weight:var(--ds-fw-bold);margin-left:10px;cursor:pointer;padding:0}

  /* новое обещание — как быстрое добавление в TickTick: только название; дата, «!» приоритет и «@» исполнитель
     распознаются в тексте и показываются чипами под ним; внизу — чипы и кнопка «Добавить» */
  .tsheet{display:flex;flex-direction:column;max-height:92dvh;padding:8px 0 0;overflow:hidden;
    transition:transform .3s cubic-bezier(.32,.72,.33,1)}
  .tsheet .grab{margin-bottom:6px}
  .nt-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:8px 20px 4px}
  .nt-in{position:relative}
  .nt-hl,.nt-title{font-family:inherit;font-size:var(--ds-fs-title);font-weight:var(--ds-fw-bold);letter-spacing:-.3px;line-height:1.3;
    padding:0;margin:0;border:0;width:100%;white-space:pre-wrap;overflow-wrap:anywhere;word-break:normal}
  .nt-hl{position:absolute;inset:0;color:transparent;pointer-events:none;overflow:hidden}
  .nt-hl mark{color:transparent;border-radius:5px;box-shadow:0 0 0 2px var(--hl);background:var(--hl)}
  .nt-hl .k-date{--hl:var(--ds-accent-soft)} .nt-hl .k-prio{--hl:var(--ds-accent-soft)} .nt-hl .k-who{--hl:var(--ds-surface-2)}
  .nt-title{position:relative;display:block;background:none;resize:none;outline:none;overflow:hidden;color:var(--ds-text)}
  .nt-note{display:block;width:100%;border:none;background:none;font-family:inherit;font-size:var(--ds-fs-body);line-height:1.45;color:var(--ds-text);
    outline:none;resize:none;padding:6px 0 0;overflow:hidden}
  .nt-bar{flex:none;display:flex;align-items:center;gap:8px;padding:8px 14px calc(10px + env(safe-area-inset-bottom));position:relative}
  .tsheet.kb .nt-bar{padding-bottom:10px}
  .nt-chip{flex:none;display:inline-flex;align-items:center;gap:6px;max-width:42%;min-width:0;height:36px;padding:0 12px;border:1px solid var(--ds-line);
    border-radius:var(--ds-r-pill);background:var(--ds-surface);font-family:inherit;font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-medium);
    color:var(--ds-text-2);cursor:pointer}
  .nt-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .nt-chip svg{flex:none;width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
  .nt-chip.set{color:var(--ds-accent-soft-text);background:var(--ds-accent-soft);border-color:transparent}
  .nt-chip.late{color:var(--ds-danger)}
  .nt-chip:active{background:var(--ds-surface-2)}
  .nt-chip span:empty{display:none}
  .nt-x{display:none;position:absolute;top:0;right:0;width:36px;height:36px;border:none;border-radius:50%;background:var(--ds-surface-2);cursor:pointer;align-items:center;justify-content:center}
  .nt-x svg{width:17px;height:17px;stroke:var(--ds-text);fill:none;stroke-width:2.2;stroke-linecap:round}
  .nt-send{margin-left:auto;flex:none;width:40px;height:40px;border:none;border-radius:50%;background:var(--ds-accent);color:var(--ds-on-accent);cursor:pointer;
    display:flex;align-items:center;justify-content:center}
  .nt-send svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round}
  .nt-send:disabled{opacity:.4;cursor:default}
  /* всплывающий список над панелью: люди после «@», приоритеты после «!», даты */
  .nt-pop{position:absolute;left:14px;right:14px;bottom:calc(100% - 2px);background:var(--ds-surface);border-radius:var(--ds-r-md);
    box-shadow:var(--ds-shadow-1),0 0 0 1px var(--ds-line);padding:6px;max-height:min(40dvh,280px);overflow-y:auto;z-index:2}
  .nt-pop[hidden]{display:none}
  .nt-pop .opt{display:flex;align-items:center;gap:10px;width:100%;border:none;background:none;border-radius:var(--ds-r-sm);padding:10px;font-family:inherit;
    font-size:var(--ds-fs-body);color:var(--ds-text);text-align:left;cursor:pointer}
  .nt-pop .opt.on{background:var(--ds-surface-2)}
  .nt-pop .opt svg{flex:none;width:20px;height:20px;fill:none;stroke:var(--ds-text-2);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
  .nt-pop .chips{flex-wrap:wrap;padding:4px 4px 2px}
  .nt-pop .duedate{padding:4px 6px 6px}
  .prio{display:flex;gap:8px;padding-top:10px}
  .prio button{flex:1;border:1px solid var(--ds-line);background:var(--ds-surface);border-radius:var(--ds-r-md);padding:8px 0;font-family:inherit;font-weight:var(--ds-fw-bold);font-size:var(--ds-fs-caption);cursor:pointer;
    display:flex;align-items:center;justify-content:center;gap:5px}
  .prio button svg{width:16px;height:16px;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
  .prio button.on{box-shadow:inset 0 0 0 2px var(--ds-accent)}
  .chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding:4px 0 2px}
  .chips::-webkit-scrollbar{display:none}
  .chip{flex:none;border:none;border-radius:var(--ds-r-pill);background:var(--ds-surface);font-family:inherit;font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-medium);
    padding:7px 11px;color:var(--ds-text);cursor:pointer;box-shadow:0 0 0 1px var(--ds-line)}
  .chip.on{background:var(--ds-accent);color:var(--ds-on-accent);box-shadow:none}
  .duedate{font-size:var(--ds-fs-caption);color:var(--ds-text-2);margin-top:6px;display:flex;align-items:center;gap:8px}
  .duedate input{width:auto;font-size:var(--ds-fs-caption);padding:0;border:none;background:none;font-family:inherit;color:var(--ds-text)}
  .msheet .chips{flex-wrap:wrap;padding:4px 0 8px}

  /* четыре вкладки */
  .tab{font-size:var(--ds-fs-label)}

  /* «Заметки» */
  .ncomp{display:flex;gap:10px;align-items:flex-end;padding:10px 10px 10px 14px}
  .ncomp textarea{flex:1;border:none;background:none;font-family:inherit;font-size:var(--ds-fs-body);line-height:1.45;color:var(--ds-text);
    outline:none;resize:none;min-height:66px}
  .nsend{flex:none;width:36px;height:36px;border-radius:50%;border:none;cursor:pointer;
    background:var(--ds-accent);display:flex;align-items:center;justify-content:center}
  .nsend svg{width:18px;height:18px;stroke:var(--ds-on-accent);stroke-width:2.6;fill:none;stroke-linecap:round;stroke-linejoin:round}
  .note-it{cursor:pointer}
  .nmeta{font-size:var(--ds-fs-caption);color:var(--ds-text-3);font-weight:var(--ds-fw-medium)}
  .ntext{font-size:var(--ds-fs-body);line-height:1.45;margin-top:4px;white-space:pre-wrap;word-break:break-word;
    display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
  .nres{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;align-items:center}
  .nchip{font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-bold);color:var(--ds-accent);background:color-mix(in srgb,var(--ds-accent) 10%,transparent);border-radius:var(--ds-r-pill);padding:4px 10px}
  .nst{font-size:var(--ds-fs-caption);color:var(--ds-text-2);font-weight:var(--ds-fw-medium)}
  .nst.wait::before{content:"";display:inline-block;width:9px;height:9px;margin-right:6px;border-radius:50%;
    border:2px solid var(--ds-accent);border-right-color:transparent;animation:spin .8s linear infinite;vertical-align:-1px}
  @keyframes spin{to{transform:rotate(360deg)}}
  .nst.err{color:var(--ds-danger)}
  .nretry{border:none;background:none;font-family:inherit;font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-bold);color:var(--ds-accent);cursor:pointer;padding:4px}

  /* вход */
  #login{position:fixed;inset:0;z-index:40;background:var(--ds-bg);padding:max(20px, env(safe-area-inset-top)) 16px 20px;
    display:flex;flex-direction:column;gap:10px;align-items:center}
  #login[hidden]{display:none}
  #login p{font-size:var(--ds-fs-caption);color:var(--ds-text-2)}
  #login iframe{width:100%;max-width:420px;flex:1;max-height:560px;border:none;border-radius:var(--ds-r-md);background:var(--ds-surface);
    box-shadow:var(--ds-shadow-1)}
  [role="button"]{cursor:pointer}

  /* поле заметки: текст, ряд превью вложений, одна строка кнопок (ADR 0004) */
  .ncomp{display:block;padding:12px 12px 10px 16px}
  .ncomp textarea{width:100%;min-height:48px}
  .ncomp.drop{outline:2px dashed var(--ds-accent);outline-offset:-6px}
  .nfiles{display:flex;gap:8px;overflow-x:auto;padding:6px 0 2px;scrollbar-width:none}
  .nfiles:empty{display:none}
  .tile{position:relative;flex:none;width:44px;height:44px;border-radius:var(--ds-r-md);background:var(--ds-surface-2);
    display:flex;align-items:center;justify-content:center;overflow:visible}
  .tile img{width:100%;height:100%;object-fit:cover;border-radius:var(--ds-r-md)}
  .tile .fi{font-size:var(--ds-fs-title)}
  .tile .tn{position:absolute;left:4px;bottom:3px;font-size:var(--ds-fs-label);font-weight:var(--ds-fw-bold);color:var(--ds-text-2)}
  .tile button{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border-radius:50%;border:2px solid var(--ds-surface);
    background:var(--ds-text-3);color:var(--ds-on-accent);font-size:var(--ds-fs-caption);line-height:13px;padding:0;cursor:pointer}
  .tile.up::after{content:"";position:absolute;inset:0;border-radius:var(--ds-r-md);background:var(--ds-surface) center/16px no-repeat;
    box-shadow:inset 0 0 0 2px var(--ds-accent);animation:pulse 1s ease-in-out infinite alternate}
  .tile.err{box-shadow:inset 0 0 0 2px var(--ds-danger);cursor:pointer}
  @keyframes pulse{from{opacity:.4}to{opacity:1}}
  .nbar{display:flex;align-items:center;gap:4px;margin-top:6px}
  .nbtn{flex:none;width:34px;height:34px;border-radius:50%;border:none;background:none;cursor:pointer;
    display:flex;align-items:center;justify-content:center}
  .nbtn svg{width:20px;height:20px;stroke:var(--ds-text-2);stroke-width:1.9;fill:none;stroke-linecap:round;stroke-linejoin:round}
  .nbtn.rec{background:var(--ds-danger);width:auto;padding:0 12px;gap:6px;border-radius:var(--ds-r-pill)}
  .nbtn.rec svg{stroke:var(--ds-on-accent)}
  .nbtn.rec::after{content:attr(data-t);color:var(--ds-on-accent);font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-bold);font-variant-numeric:tabular-nums}
  .nai{display:flex;align-items:center;gap:5px;height:30px;padding:0 11px 0 8px;margin-left:2px;border-radius:var(--ds-r-pill);
    border:1px solid var(--ds-line);background:none;font-family:inherit;font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-medium);color:var(--ds-text-2);cursor:pointer}
  .nai svg{width:17px;height:17px;stroke:currentColor;stroke-width:1.9;fill:none;stroke-linecap:round;stroke-linejoin:round}
  .nai[aria-pressed="true"]{border-color:transparent;background:color-mix(in srgb,var(--ds-accent) 12%,transparent);color:var(--ds-accent)}
  .nbar .nsend{margin-left:auto}
  .nsend:disabled{opacity:.35}

  /* карточка заметки: подпись под текстом — одной серой строкой */
  .nfoot{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:8px;font-size:var(--ds-fs-caption);color:var(--ds-text-2);font-weight:var(--ds-fw-medium)}
  .nfoot .ai{color:var(--ds-accent);border:none;background:none;font:inherit;padding:0;cursor:pointer}
  .nfoot .err{color:var(--ds-danger)}

  /* вкладка «ИИ»: список — заголовок и строка статуса */
  .tab{font-size:var(--ds-fs-label)}
  .ai-it{background:var(--ds-surface);border-radius:var(--ds-r-md);padding:12px 14px;margin-bottom:8px;cursor:pointer}
  .aname{font-size:var(--ds-fs-body);font-weight:var(--ds-fw-medium);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .ameta{display:flex;align-items:center;gap:6px;margin-top:5px;font-size:var(--ds-fs-caption);color:var(--ds-text-2);font-weight:var(--ds-fw-medium)}
  .ameta span{margin-left:auto;color:var(--ds-text-3);font-weight:var(--ds-fw-regular)}
  .dot{display:inline-block;flex:none;width:7px;height:7px;border-radius:50%;background:var(--ds-text-3);margin-right:1px}
  .dot.c-run{background:var(--ds-success)}
  .dot.c-blk{background:var(--ds-danger)}
  .dot.c-rev{background:var(--ds-warning)}
  .dot.c-done{background:var(--ds-success);opacity:.5}
  .empty{text-align:center;color:var(--ds-text-3);font-size:var(--ds-fs-caption);line-height:1.5;padding:48px 20px}
  .empty.small{padding:24px 12px;font-size:var(--ds-fs-caption)}

  /* задача: шторка с чатом (содержимое — widget/chat/, ADR 0005) */
  .asheet{height:min(94dvh,920px);display:flex;flex-direction:column;padding:6px 0 0}
  .asheet .grab{margin:2px auto 6px}
  .achat-host{position:relative;flex:1;min-height:0;overflow:hidden}

  /* «ИИ-аналитика» — widget/review.css (подключает review.js) */
  /* заметка — мини-чат (ADR 0006): вход в «Заметках», экран на весь экран поверх всего */
  .nnew{display:flex;align-items:center;gap:10px;width:100%;border:none;cursor:pointer;text-align:left;font:inherit;
    padding:16px 12px 16px 16px;min-height:76px}
  .nnew-ph{flex:1;color:var(--ds-text-3);font-size:var(--ds-fs-body);line-height:1.4}
  .nnew-mic{flex:none;width:40px;height:40px;border-radius:50%;background:var(--ds-accent);display:grid;place-items:center}
  .nnew-mic svg{width:20px;height:20px;stroke:var(--ds-on-accent);stroke-width:2;fill:none;stroke-linecap:round}
  .ndraft{display:flex;flex-direction:column;gap:3px;width:100%;border:none;cursor:pointer;text-align:left;font:inherit;
    padding:12px 16px}
  .ndraft-k{font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-bold);color:var(--ds-warning);text-transform:uppercase;letter-spacing:.3px}
  .ndraft-t{font-size:var(--ds-fs-body);color:var(--ds-text);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .ndraft-go{font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-medium);color:var(--ds-text-2)}
  .nscreen{position:fixed;inset:0;z-index:40;background:var(--ds-surface)}
  .cscreen{position:fixed;inset:0;z-index:41;background:var(--ds-surface);transform:translateY(100%);transition:transform .28s ease-out}
  .cscreen.on{transform:none}
  @media (prefers-reduced-motion: reduce){.cscreen{transition:none}}
  body.nlock{overflow:hidden}
  body.nlock .micfab,body.nlock .fabmenu{display:none}
  .kbkeeper{position:fixed;top:0;left:0;width:1px;height:1px;opacity:0;font-size:var(--ds-fs-title);border:0;padding:0;pointer-events:none}

  /* ═══ «ИИ»: сессии как в Claude Code (ADR 0009) ═══ */
  .ss-head{padding-bottom:8px}
  .ss-tools{display:flex;gap:8px}
  .ss-tool{position:relative;width:38px;height:38px;border-radius:50%;border:none;background:var(--ds-surface);display:grid;place-items:center;cursor:pointer;color:var(--ds-text)}
  .ss-tool svg,.ss-ic svg,.ss-arch svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  .ss-tool-dot{position:absolute;top:7px;right:7px;width:7px;height:7px;border-radius:50%;background:var(--ds-accent)}
  .ss-channels{display:flex;gap:4px;background:var(--ds-surface-2);border-radius:var(--ds-r-md);padding:3px;margin:0 2px 10px}
  .ss-channels button{flex:1;border:none;background:none;font:inherit;font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-medium);color:var(--ds-text-2);padding:7px 0;border-radius:var(--ds-r-sm);cursor:pointer}
  .ss-channels button[aria-selected=true]{background:var(--ds-surface);color:var(--ds-text);box-shadow:var(--ds-shadow-1)}
  .ss-search{margin:0 2px 10px}
  .ss-search input{width:100%;border:none;border-radius:var(--ds-r-md);background:var(--ds-surface);padding:10px 14px;font:inherit;font-size:var(--ds-fs-input);outline:none}
  .ss-filtered{display:inline-flex;align-items:center;gap:6px;margin:0 2px 10px;padding:5px 6px 5px 10px;border-radius:var(--ds-r-pill);background:var(--ds-surface);font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-medium)}
  .ss-filtered[hidden]{display:none}
  .ss-filtered .ss-ic{width:18px;height:18px}.ss-filtered .ss-ic svg{width:16px;height:16px}
  .ss-filtered button{border:none;background:var(--ds-surface-2);width:22px;height:22px;border-radius:50%;font-size:var(--ds-fs-body);line-height:1;color:var(--ds-text-2);cursor:pointer}

  .ss-row{position:relative;overflow:hidden;border-radius:var(--ds-r-md);margin-bottom:8px}
  .ss-face{position:relative;z-index:1;display:flex;gap:12px;align-items:flex-start;background:var(--ds-surface);border-radius:var(--ds-r-md);padding:12px 14px;cursor:pointer;
    transform:translateX(var(--dx,0));transition:transform .25s cubic-bezier(.32,.72,.33,1)}
  .ss-row.drag .ss-face{transition:none}
  .ss-row.open .ss-face{transform:translateX(calc(-64px * var(--acts, 1) - 12px))}
  /* действия свайпа — круглые кнопки справа, как в Claude: ✏ переименовать, 🗄 в архив / ↩ вернуть */
  .ss-acts{position:absolute;right:6px;top:0;bottom:0;display:flex;align-items:center;gap:8px}
  .ss-act{width:56px;height:56px;border-radius:50%;border:none;background:var(--ds-surface-2);color:var(--ds-text);display:grid;place-items:center;cursor:pointer}
  .ss-act svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  .ss-act[data-act=archive]{background:var(--ds-accent-soft);color:var(--ds-accent)}
  .ss-row:not(.drag):not(.open) .ss-acts{visibility:hidden}
  .ss-ic{flex:none;width:24px;height:24px;display:grid;place-items:center;margin-top:1px;color:var(--ds-text-3)}
  .ss-ic.s-needs_input{color:var(--ds-warning)}
  .ss-ic.s-review{color:var(--ds-accent)}   /* «на приёмке» — ход за PO; янтарь занят «нужен ответ» */
  .ss-ic.s-working{color:var(--ds-accent)}
  .ss-ic.s-completed{color:var(--ds-success)}
  .ss-ic.s-archived{color:var(--ds-text-2)}
  /* этапы 💬-диалога (ADR 0013 PO-Harness): ✅ черновику — как «нужен ответ», проверка итога — как приёмка */
  .ss-ic.s-approval{color:var(--ds-warning)}
  .ss-ic.s-talking{color:var(--ds-accent)}
  .ss-ic.s-sending{color:var(--ds-text-2)}
  .ss-ic.s-done{color:var(--ds-success)}
  .ss-spin{animation:ss-spin 1s linear infinite;transform-origin:50% 50%}
  @keyframes ss-spin{to{transform:rotate(360deg)}}
  .ss-main{flex:1;min-width:0}
  .ss-title{font-size:var(--ds-fs-body);font-weight:var(--ds-fw-medium);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
  .ss-sub{margin-top:3px;font-size:var(--ds-fs-caption);color:var(--ds-text-2);font-weight:var(--ds-fw-medium);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ss-row[data-state=needs_input] .ss-sub{color:var(--ds-warning)}

  .ss-skel i{display:block;height:64px;border-radius:var(--ds-r-md);margin-bottom:8px;background:var(--ds-surface-2);animation:ss-shine 1.2s ease-in-out infinite alternate}
  @keyframes ss-shine{to{opacity:.45}}

  .ss-menu{margin:auto auto 0;width:100%;max-width:520px;border:none;border-radius:var(--ds-r-lg) var(--ds-r-lg) 0 0;padding:8px 8px calc(14px + env(safe-area-inset-bottom));
    background:var(--ds-surface);color:var(--ds-text);box-shadow:var(--ds-shadow-2)}
  .ss-menu[open]{animation:ss-up .25s cubic-bezier(.32,.72,.33,1)}
  .ss-menu::backdrop{background:var(--ds-scrim)}
  @keyframes ss-up{from{transform:translateY(100%)}}
  .ss-mi{display:flex;align-items:center;gap:12px;width:100%;border:none;background:none;font:inherit;font-size:var(--ds-fs-title);font-weight:var(--ds-fw-medium);padding:12px 10px;border-radius:var(--ds-r-md);cursor:pointer;text-align:left;color:var(--ds-text)}
  .ss-mi.on{background:var(--ds-surface-2)}
  .ss-mi:focus{outline:none}.ss-mi:focus-visible{box-shadow:inset 0 0 0 2px var(--ds-line)}
  .ss-check{width:16px;font-weight:var(--ds-fw-bold);color:var(--ds-text)}
  .ss-mt{flex:1}
  .ss-mn{color:var(--ds-text-3);font-size:var(--ds-fs-caption)}

  /* экран сессии — на весь экран, въезжает справа (как в Claude Code), а не шторка снизу */
  .asheet{top:0;height:auto;border-radius:0;padding:0;transform:translateX(100%)}
  .asheet.on{transform:translateX(0)}
  .asheet .grab{display:none}
  .ic-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;
    color:var(--ds-text-2);font-size:var(--ds-fs-body);font-weight:var(--ds-fw-medium);background:var(--ds-surface)}
  .ic-bot{width:64px;height:48px;fill:var(--ds-accent);shape-rendering:crispEdges;animation:ic-hop .9s ease-in-out infinite}
  .ic-bot .ic-eye{fill:var(--ds-on-accent);animation:ic-blink-eye 3s infinite}
  @keyframes ic-hop{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
  @keyframes ic-blink-eye{0%,92%,100%{opacity:1}95%{opacity:0}}

  /* обещание ↔ задачи ИИ-агентов ↔ сессии Hermes (ADR 0010) */
  .meta .pai{width:auto;height:auto;margin:0;display:inline-flex;align-items:center;gap:2px;flex:none}
  .meta .pai svg{width:15px;height:15px;stroke-width:2}
  .meta .pai b{font-size:var(--ds-fs-label);font-weight:var(--ds-fw-bold)}
  /* подзадачи и задачи агентов в «Мне обещали» (ADR 0017) */
  .meta .psub{display:inline-flex;align-items:center;gap:3px;flex:none}
  .it .ppar{margin-top:2px;font-size:var(--ds-fs-caption);color:var(--ds-text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ss-ic.s-failed{color:var(--ds-danger)}
  .tai-err{color:var(--ds-danger);font-size:var(--ds-fs-caption);margin:4px 0}

  /* карточка у верхнего края: лист снизу на iPhone закрыла бы клавиатура */
  .ss-menu.ss-rename{margin:max(16px, env(safe-area-inset-top)) auto auto;width:calc(100% - 24px);border-radius:var(--ds-r-lg);padding:8px;
    box-shadow:var(--ds-shadow-2)}
  .ss-menu.ss-rename[open]{animation:ss-down .22s cubic-bezier(.32,.72,.33,1)}
  @keyframes ss-down{from{transform:translateY(-24px);opacity:0}}
  .ss-rename form{padding:8px 10px 2px}
  .ss-rename-h{font-size:var(--ds-fs-title);font-weight:var(--ds-fw-bold);margin:4px 2px 12px}
  .ss-rename input{width:100%;border:1px solid var(--ds-line);border-radius:var(--ds-r-md);background:var(--ds-surface-2);padding:12px 14px;font:inherit;font-size:var(--ds-fs-input);outline:none}
  .ss-rename-orig{display:block;margin:10px 2px 0;border:none;background:none;font:inherit;font-size:var(--ds-fs-caption);color:var(--ds-accent);text-align:left;cursor:pointer;padding:0}
  .ss-rename-orig[hidden]{display:none}
  .ss-rename-btns{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
  .ss-rename-btns button{border:none;border-radius:var(--ds-r-pill);padding:10px 18px;font:inherit;font-size:var(--ds-fs-body);font-weight:var(--ds-fw-medium);background:var(--ds-surface-2);color:var(--ds-text);cursor:pointer}
  .ss-rename-btns .main{background:var(--ds-text);color:var(--ds-on-accent)}
  /* окно «Связать с ИИ-сессией» — поверх карточки обещания */
  .lveil{z-index:30}
  .lsheet{z-index:31;max-height:86vh;display:flex;flex-direction:column}
  .lsheet .ss-search{margin:4px 0 8px}
  .lsheet #l-ok{white-space:nowrap}
  .l-list{flex:1;min-height:120px;overflow-y:auto;overscroll-behavior:contain;margin:0 -4px}
  .l-row{width:100%;display:flex;gap:10px;align-items:flex-start;text-align:left;border:none;background:none;font:inherit;color:inherit;
    padding:9px 4px;border-bottom:1px solid var(--ds-line);cursor:pointer;min-width:0}
  .l-row .ss-main{display:block;min-width:0}.l-row .ss-title{display:block}.l-row .ss-sub{display:block}
  .l-box{flex:none;width:22px;height:22px;margin-top:1px;border-radius:50%;border:2px solid var(--ds-text-3);display:grid;place-items:center;
    font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-bold);color:var(--ds-on-accent)}
  .l-row.on .l-box{background:var(--p3,var(--ds-warning));border-color:var(--p3,var(--ds-warning))}
  .l-manual{border:none;background:none;font:inherit;font-size:var(--ds-fs-caption);color:var(--ds-text-2);padding:12px 0 calc(8px + env(safe-area-inset-bottom));cursor:pointer}

  /* веер быстрых действий по удержанию кнопки с микрофоном (как в Pinterest): затемнение, тёмные круглые иконки дугой, белая — под пальцем */
  .fabmenu{position:fixed;inset:0;z-index:40;pointer-events:none}
  .fabmenu[hidden]{display:none}
  .fabmenu.on{pointer-events:auto}
  .fm-scrim{position:absolute;inset:0;background:var(--ds-scrim-strong);opacity:0;transition:opacity .18s}
  .fabmenu.on .fm-scrim{opacity:1}
  body.fabopen .micfab{z-index:42;transform:scale(1.06)}
  .fm-items{position:absolute;right:18px;bottom:calc(76px + env(safe-area-inset-bottom));width:58px;height:58px;z-index:41;pointer-events:none}
  .fm-item{position:absolute;left:50%;top:50%;width:58px;height:58px;margin:-29px 0 0 -29px;border-radius:50%;border:none;cursor:pointer;
    background:var(--ds-text);box-shadow:var(--ds-shadow-2);display:grid;place-items:center;pointer-events:auto;
    touch-action:none;-webkit-touch-callout:none;
    opacity:0;transform:translate(0,0) scale(.3);
    transition:transform .32s cubic-bezier(.2,1.5,.4,1) calc(var(--i)*40ms),opacity .15s calc(var(--i)*40ms),background .12s}
  .fabmenu.on .fm-item{opacity:1;transform:translate(var(--dx),var(--dy)) scale(1)}
  .fabmenu.on .fm-item.hot{transform:translate(var(--dx),var(--dy)) scale(1.28);background:var(--ds-surface);transition-delay:0s}
  .fm-item svg{width:26px;height:26px;stroke:var(--ds-on-accent);stroke-width:1.9;fill:none;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
  .fm-item.hot svg{stroke:var(--ds-text)}
  .fm-label{position:absolute;left:24px;right:24px;bottom:calc(76px + 29px + 150px + env(safe-area-inset-bottom));
    z-index:41;color:#fff;font-size:34px;font-weight:var(--ds-fw-bold);letter-spacing:-.8px;line-height:1.1;pointer-events:none;  /* ds-lint: ignore подпись веера поверх тёмной подложки: белая и крупная (34px) в обеих темах, как у iOS */
    opacity:0;transition:opacity .1s}
  .fm-label.on{opacity:1}
  @media (prefers-reduced-motion:reduce){.fm-item,.fm-scrim,.fm-label{transition:none}}

  /* «Заметки» и «Настройки» — слева вверху веера */
  .fm-links{position:absolute;left:16px;top:calc(env(safe-area-inset-top) + 18px);z-index:41;display:flex;flex-direction:column;gap:10px;align-items:flex-start}
  .fm-link{display:flex;align-items:center;gap:10px;height:48px;padding:0 18px 0 14px;border-radius:var(--ds-r-lg);border:none;cursor:pointer;
    background:var(--ds-text);color:var(--ds-on-accent);font:inherit;font-size:var(--ds-fs-title);font-weight:var(--ds-fw-bold);box-shadow:var(--ds-shadow-2);
    opacity:0;transform:translateY(-8px) scale(.9);transition:transform .25s cubic-bezier(.2,1.4,.4,1),opacity .15s,background .12s;touch-action:none;-webkit-touch-callout:none}
  .fm-link:nth-child(2){transition-delay:40ms}
  .fm-link svg{width:22px;height:22px;stroke:var(--ds-on-accent);stroke-width:1.9;fill:none;stroke-linecap:round;stroke-linejoin:round}
  .fabmenu.on .fm-link{opacity:1;transform:none}
  .fabmenu.on .fm-link.hot{background:var(--ds-surface);color:var(--ds-text);transform:scale(1.06);transition-delay:0s}
  .fm-link.hot svg{stroke:var(--ds-text)}
  @media (prefers-reduced-motion:reduce){.fm-link{transition:none}}

  /* настройки */
  .set .set-h{font-size:var(--ds-fs-body);font-weight:var(--ds-fw-bold);margin-bottom:10px}
  .set .set-note{font-size:var(--ds-fs-caption);color:var(--ds-text-2);line-height:1.4;margin-top:10px}
  .set .seg{display:flex;flex-wrap:wrap;gap:8px}
  .set .seg button{border:none;cursor:pointer;font:inherit;font-size:var(--ds-fs-body);font-weight:var(--ds-fw-medium);padding:9px 14px;border-radius:var(--ds-r-lg);background:var(--ds-surface-2);color:var(--ds-text)}
  .set .seg button[aria-checked="true"]{background:var(--ds-accent);color:var(--ds-on-accent)}
  .set .set-row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:var(--ds-fs-title);font-weight:var(--ds-fw-medium)}
  .set .set-row input{width:22px;height:22px;accent-color:var(--ds-accent)}

/* Дейли открывает экран заметки во фрейме (ADR 0013): всё, кроме чата, скрыто */
html.embed-note body>*:not(.nscreen):not(.toast){visibility:hidden}

  /* фильтры «Я обещал / Мне обещали» (ADR 0019): ответственный — кнопка «Кто» → лист, период — лист с календарём (Cally, как в «Дейли») */
  #c-head{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  /* одна строка фильтров: «👤 Все ▾» · «📅 До завтра ▾» · справа «+N позже»; слов — только подпись выбранного */
  .pf{display:flex;align-items:center;gap:var(--ds-sp-2);padding:0 0 10px}
  .wsel{flex:none;display:flex;align-items:center;max-width:100%;height:36px;padding:4px 2px;box-sizing:border-box;border-radius:var(--ds-r-pill);background:var(--ds-surface);box-shadow:0 0 0 1px var(--ds-line)}
  .wsel[hidden]{display:none}
  .wbtn{display:flex;align-items:center;gap:4px;min-width:0;height:100%;padding:0 8px 0 12px;border:none;border-radius:var(--ds-r-pill);background:none;
    font:inherit;font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-medium);color:var(--ds-text);cursor:pointer}
  .wbtn .wt{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .wbtn:disabled{opacity:.45;cursor:progress}   /* «Кто» до прихода обещаний: видно, что пока нельзя */
  .wbtn svg{flex:none;width:16px;height:16px;stroke:var(--ds-text-2);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
  .wclr{flex:none;display:grid;place-items:center;width:32px;height:100%;margin-left:-6px;padding:0 4px 0 0;border:none;border-radius:var(--ds-r-pill);background:none;color:inherit;cursor:pointer}
  .wclr[hidden]{display:none}
  .wclr svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.4;stroke-linecap:round}
  .wsel.set{background:var(--ds-accent-soft);box-shadow:none;color:var(--ds-accent-soft-text)}
  .wsel.set .wbtn{color:var(--ds-accent-soft-text)} .wsel.set .wbtn svg{stroke:currentColor} .wsel.set .wv{display:none}
  .pmore{flex:none;margin-left:auto;height:36px;padding:0 4px;border:none;background:none;font:inherit;font-size:var(--ds-fs-caption);
    color:var(--ds-text-2);cursor:pointer;white-space:nowrap;font-variant-numeric:tabular-nums}
  .pmore[hidden]{display:none}
  .pmore:focus-visible{outline:2px solid var(--ds-accent);outline-offset:2px;border-radius:var(--ds-r-sm)}
  .wbtn:focus-visible,.wclr:focus-visible{outline:2px solid var(--ds-accent);outline-offset:2px}
  #c-who-h{color:var(--ds-text-2)}   /* заголовок листа «Кто»: --ds-text-3 на тёмной поверхности даёт 4.1:1 */
  #c-who-menu{max-height:80vh;overflow-y:auto;padding-top:12px}
  .ss-mi--sub{padding-left:38px;font-size:var(--ds-fs-body);font-weight:var(--ds-fw-regular)}   /* человек или агент под своей группой */
  .ss-mh{padding:14px 10px 4px;font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-medium);color:var(--ds-text-3)}
  .pchips{padding:0 0 2px;margin-bottom:2px}
  .psheet{max-height:92vh;overflow-y:auto;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 16px)}
  .psheet .pchips{flex-wrap:wrap;padding:4px 0 10px}
  .psheet calendar-range{display:block;width:100%;box-sizing:border-box;background:var(--ds-surface-2);border-radius:var(--ds-r-lg);padding:10px 8px 6px}
  .psheet calendar-range::part(header){display:flex;align-items:center;justify-content:space-between;padding:0 4px 6px}
  .psheet calendar-range::part(button){border:0;background:none;padding:0}
  .psheet .pnav{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--ds-surface);font-size:var(--ds-fs-title);color:var(--ds-text)}
  #p-calh{font-size:var(--ds-fs-title);font-weight:var(--ds-fw-bold)}
  .psheet calendar-month{display:block;width:100%}
  .psheet calendar-month::part(heading){display:none}
  .psheet calendar-month::part(table){width:100%;border-collapse:collapse}
  .psheet calendar-month::part(th){font-size:var(--ds-fs-caption);font-weight:var(--ds-fw-medium);color:var(--ds-text-2);padding-bottom:4px}
  .psheet calendar-month::part(td){padding:1px 0}
  .psheet calendar-month::part(button){width:100%;height:42px;border:0;border-radius:var(--ds-r-md);background:transparent;font:inherit;font-size:var(--ds-fs-title);color:var(--ds-text)}
  .psheet calendar-month::part(day-0),.psheet calendar-month::part(day-6){color:var(--ds-text-2)}
  .psheet calendar-month::part(today){font-weight:var(--ds-fw-bold);box-shadow:inset 0 0 0 1.5px var(--ds-text-3)}
  .psheet calendar-month::part(has){background-image:radial-gradient(circle,var(--ds-accent) 2.5px,transparent 3px);background-repeat:no-repeat;background-size:8px 8px;background-position:center calc(100% - 3px)}  /* ds-lint: ignore точка «есть обещания» под днём календаря cally — рисуется фоном ::part */
  .psheet calendar-month::part(range-inner){background-color:color-mix(in srgb,var(--ds-accent) 16%,transparent);border-radius:0}
  .psheet calendar-month::part(range-start),.psheet calendar-month::part(range-end){background-color:var(--ds-accent);color:var(--ds-on-accent);font-weight:var(--ds-fw-bold)}
  .psheet calendar-month::part(range-start){border-radius:var(--ds-r-md) 0 0 var(--ds-r-md)}
  .psheet calendar-month::part(range-end){border-radius:0 var(--ds-r-md) var(--ds-r-md) 0}
  .psheet calendar-month::part(range-start range-end){border-radius:var(--ds-r-md)}
  .prange{display:flex;align-items:center;gap:10px;margin:12px 2px 0}
  .prange div{flex:1;background:var(--ds-surface-2);border-radius:var(--ds-r-md);padding:8px 12px}
  .prange small{display:block;font-size:var(--ds-fs-caption);color:var(--ds-text-2)} .prange b{font-size:var(--ds-fs-body)}
  .prange span{color:var(--ds-text-2)}
  .papply{width:100%;margin-top:12px;padding:14px;border:none;border-radius:var(--ds-r-md);background:var(--ds-accent);color:var(--ds-on-accent);font:inherit;font-size:var(--ds-fs-title);font-weight:var(--ds-fw-bold);cursor:pointer}
  .papply:disabled{opacity:.35}
  .pnote2{font-size:var(--ds-fs-caption);color:var(--ds-text-2);margin-top:10px;line-height:1.4}
  .pnote2 i{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ds-accent);margin-right:3px}
