@font-face{font-family:Onest;font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/onest-cyrillic.woff2) format("woff2");
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:Onest;font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/onest-latin.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* Палитра: холодный туман + индиго и фиолет как единственные акценты */
:root{
  --bg:#F3F4FA;--surface:#FFFFFF;--raised:#F7F8FD;--ink:#151935;--ink-2:#3B4063;--muted:#6B7093;--line:#E3E5F1;
  --indigo:#4352D3;--violet:#7558E8;--soft:#EEF0FD;--soft-v:#F2EEFE;
  --exp:#D9475A;--exp-soft:#FCEEF0;--warn:#B7791F;--warn-soft:#FBF3E4;--date:#7558E8;--std:#6B7093;--vec:#4352D3;--ok:#2F8F7A;
  --hero-a:#1D2257;--hero-b:#3A2F86;--hero-c:#4352D3;
  --shadow:0 1px 2px rgba(21,25,53,.05),0 4px 14px -6px rgba(21,25,53,.10);
  --m-exp:#FF8D9B;--m-date:#B8A6FF;--m-std:rgba(255,255,255,.45);--m-vec:#8FA0FF;
  --p1:#D9475A;--p2:#E3733F;--p3:#C99A2E;--p4:#4352D3;--p5:#8A90B8;
  --r:16px;--ease:cubic-bezier(.22,.8,.24,1);
}
:root[data-theme="dark"]{
  --bg:#0B0D1C;--surface:#141731;--raised:#191D3B;--ink:#E7E9F8;--ink-2:#C0C4E3;--muted:#8A8FB6;--line:#23284A;
  --indigo:#7D89FF;--violet:#A390FF;--soft:#1C2148;--soft-v:#221D49;
  --exp:#F0707F;--exp-soft:#2A1730;--warn:#E2B04F;--warn-soft:#2A2416;--date:#A390FF;--std:#8A8FB6;--vec:#7D89FF;--ok:#5CC2A9;
  --hero-a:#151A47;--hero-b:#2A2170;--hero-c:#3A46B8;
  --p1:#F0707F;--p2:#F2955F;--p3:#E2BA55;--p4:#7D89FF;--p5:#8A90B8;
  --shadow:0 1px 0 rgba(255,255,255,.03) inset,0 6px 18px -8px rgba(0,0,0,.6);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{background:var(--bg)}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.45 Onest,-apple-system,"Segoe UI",Roboto,sans-serif;
  font-feature-settings:"tnum" 1;padding:0 0 calc(92px + env(safe-area-inset-bottom));-webkit-font-smoothing:antialiased}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--violet);outline-offset:2px;border-radius:10px}

/* Шапка — единственное «громкое» место */
.hero{position:relative;overflow:hidden;margin:10px 12px 4px;padding:14px 16px 16px;border-radius:22px;color:#fff;
  background:linear-gradient(135deg,var(--hero-a) 0%,var(--hero-b) 55%,var(--hero-c) 100%);isolation:isolate}
.hero::before{content:"";position:absolute;inset:-40%;z-index:-1;opacity:.55;
  background:radial-gradient(40% 35% at 30% 30%,rgba(140,120,255,.55),transparent 70%),
             radial-gradient(35% 30% at 75% 70%,rgba(90,130,255,.45),transparent 70%);
  animation:drift 18s ease-in-out infinite alternate}
.hero::after{content:"";position:absolute;inset:0;z-index:-1;opacity:.35;
  background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);
  background-size:22px 22px;mask-image:linear-gradient(180deg,transparent,#000 40%,transparent)}
@keyframes drift{to{transform:translate3d(8%,-6%,0) rotate(8deg)}}
.hero-top{display:flex;align-items:center;gap:8px;font-size:12.5px;color:rgba(255,255,255,.72)}
.mark{display:inline-flex;gap:2px;align-items:flex-end;height:14px}
.mark i{display:block;width:3px;border-radius:2px;background:rgba(255,255,255,.9)}
.mark i:nth-child(1){height:6px}.mark i:nth-child(2){height:10px;opacity:.8}.mark i:nth-child(3){height:14px;opacity:.6}
.who{font-weight:600;color:rgba(255,255,255,.92)}
.fresh{margin-left:auto;display:inline-flex;align-items:center;gap:6px}
.fresh::before{content:"";width:6px;height:6px;border-radius:50%;background:#7CE0C3;box-shadow:0 0 0 0 rgba(124,224,195,.6);animation:ping 2.6s var(--ease) infinite}
.fresh.stale::before{background:#FF9AA6;animation:none}
.fresh:empty::before{display:none}
@keyframes ping{0%{box-shadow:0 0 0 0 rgba(124,224,195,.55)}70%,100%{box-shadow:0 0 0 7px rgba(124,224,195,0)}}
.hero-title{margin:14px 0 2px;font-size:26px;line-height:1.1;font-weight:650;letter-spacing:-.02em}
.hero-sub{margin:0;font-size:13.5px;color:rgba(255,255,255,.72);min-height:1.45em}
.hero-title,.hero-sub{transition:opacity .25s var(--ease),transform .25s var(--ease)}
.hero.swap .hero-title,.hero.swap .hero-sub{opacity:0;transform:translateY(4px)}
.meter{display:flex;gap:3px;height:6px;margin-top:14px;border-radius:3px}
.meter:empty{display:none}
.meter i{display:block;height:100%;border-radius:3px;transform-origin:left;animation:grow .7s var(--ease) both}
.meter i.exp{background:var(--m-exp)}.meter i.date{background:var(--m-date)}.meter i.std{background:var(--m-std)}.meter i.vec{background:var(--m-vec)}
.legend{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:8px;font-size:12px;color:rgba(255,255,255,.75)}
.legend span::before{content:"";display:inline-block;width:7px;height:7px;border-radius:2px;margin-right:5px;background:var(--c);vertical-align:1px}
@keyframes grow{from{transform:scaleX(0)}}
.legend:empty{display:none}
.lims{flex-basis:100%;display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.lim{font-weight:600;font-size:11.5px;padding:2px 8px;border-radius:999px;background:rgba(255,255,255,.12);color:rgba(255,255,255,.85)}
.lim.over{background:rgba(255,141,155,.25);color:#FFD0D6;box-shadow:0 0 0 1px rgba(255,141,155,.5)}

/* Приоритет, трудоёмкость, процент */
.pb{display:inline-flex;align-items:center;gap:2px;height:20px;padding:0 6px 0 3px;border-radius:6px;font-size:11.5px;font-weight:700;
  color:var(--c);background:color-mix(in srgb,var(--c) 13%,transparent)}
.pb svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.pb.p1{--c:var(--p1)}.pb.p2{--c:var(--p2)}.pb.p3{--c:var(--p3)}.pb.p4{--c:var(--p4)}.pb.p5{--c:var(--p5)}
.pb.p0{--c:var(--muted);padding:0 7px;font-weight:500;background:var(--raised);box-shadow:inset 0 0 0 1px var(--line)}
.eb{display:inline-flex;align-items:center;gap:3px;height:20px;padding:0 6px 0 4px;border-radius:6px;font-size:11.5px;font-weight:650;
  color:var(--ink-2);background:var(--raised);box-shadow:inset 0 0 0 1px var(--line)}
.eb svg{width:13px;height:13px;color:var(--indigo)}
.eb .ring{fill:none;stroke:currentColor;stroke-width:1.5}.eb .fill{fill:currentColor}
.pct{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;color:var(--ink-2)}
.pct svg{width:15px;height:15px;transform:rotate(-90deg)}
.pct circle{fill:none;stroke:var(--line);stroke-width:2.6}
.pct circle.v{stroke:var(--violet);stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:calc(100 - var(--v));
  animation:ring .9s .2s var(--ease) both}
.pct.full circle.v{stroke:var(--ok)}
@keyframes ring{from{stroke-dashoffset:100}}
.vec-h h2 .pb{margin-right:2px}
.run-h .pb{align-self:center}
.ph .m{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:7px;font-size:12px;color:var(--muted)}

main{padding:4px 12px 0}
.view-in>*{animation:rise .42s var(--ease) both;animation-delay:calc(var(--i,0) * 32ms)}
@keyframes rise{from{opacity:0;transform:translateY(8px)}}

.sec{display:flex;align-items:baseline;gap:8px;margin:20px 4px 8px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.sec b{font-weight:600;color:var(--ink-2)}
.sec .n{margin-left:auto;font-weight:500;letter-spacing:0;text-transform:none}
.sec.alert{color:var(--exp)}
.note{font-size:12.5px;color:var(--muted);margin:8px 4px}
.empty{margin:18px 0;padding:22px 16px;text-align:center;color:var(--muted);font-size:14px;border:1px dashed var(--line);border-radius:var(--r)}

/* Задача */
.task{position:relative;margin:6px 0;background:var(--surface);border-radius:14px;box-shadow:var(--shadow);overflow:hidden;
  transition:transform .18s var(--ease),box-shadow .2s}
.task::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:0 3px 3px 0;background:var(--c,var(--line))}
.task.exp{--c:var(--exp)}.task.date{--c:var(--date)}.task.std{--c:var(--line)}.task.vec{--c:var(--vec)}
.task.red{background:linear-gradient(90deg,var(--exp-soft),var(--surface) 55%)}
.task.red::before{--c:var(--exp)}
.task>.head{display:block;width:100%;text-align:left;border:0;background:none;padding:11px 40px 11px 15px;cursor:pointer}
.task>.head:active{transform:scale(.99)}
.task .t{font-weight:550;line-height:1.35}
.task .m{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:5px;font-size:12px;color:var(--muted)}
.chip{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:999px;font-size:11.5px;font-weight:550;
  background:var(--soft);color:var(--indigo)}
.chip.exp{background:var(--exp-soft);color:var(--exp)}.chip.date{background:var(--soft-v);color:var(--date)}
.chip.std{background:var(--raised);color:var(--muted)}.chip.vec{background:var(--soft);color:var(--vec)}
.why{color:var(--exp);font-weight:550}
.chev{position:absolute;right:12px;top:13px;width:18px;height:18px;fill:none;stroke:var(--muted);stroke-width:2;stroke-linecap:round;
  transition:transform .3s var(--ease)}
.open>.head .chev,.open>.ph .chev{transform:rotate(180deg)}
.fold{display:grid;grid-template-rows:0fr;transition:grid-template-rows .32s var(--ease)}
.open>.fold{grid-template-rows:1fr}
.fold>div{overflow:hidden;min-height:0}
.desc{margin:0 15px;padding:10px 0 4px;border-top:1px solid var(--line);font-size:13.5px;color:var(--ink-2);white-space:pre-line;
  max-height:260px;overflow:auto;overscroll-behavior:contain}
.go{display:flex;align-items:center;justify-content:center;gap:6px;margin:8px 15px 12px;height:38px;border-radius:11px;
  background:var(--soft);color:var(--indigo);font-size:13.5px;font-weight:600;text-decoration:none;transition:background .2s}
.go:active{background:var(--soft-v)}
.go svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.sub{margin:2px 0 8px 10px;padding-left:8px;border-left:2px solid var(--line)}

/* Проект */
.proj{margin:8px 0;background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.ph{position:relative;display:block;width:100%;text-align:left;border:0;background:none;padding:13px 42px 13px 15px;cursor:pointer}
.ph b{display:block;font-weight:600;line-height:1.3}
.ph .chev{top:14px}
.prog{display:flex;align-items:center;gap:10px;margin-top:9px;font-size:12px;color:var(--muted)}
.bar{flex:1;height:6px;border-radius:3px;background:var(--raised);box-shadow:inset 0 0 0 1px var(--line);overflow:hidden}
.bar i{display:block;height:100%;width:var(--p);border-radius:3px;background:linear-gradient(90deg,var(--indigo),var(--violet));
  transform-origin:left;animation:grow .9s .15s var(--ease) both}
.proj .fold>div{padding:0 8px}
.proj .fold .task{box-shadow:none;background:var(--raised)}
.proj .fold>div>:last-child{margin-bottom:8px}

/* Вектор */
.vec-h{margin:22px 4px 6px}
.vec-h h2{display:flex;align-items:center;gap:9px;margin:0;font-size:17px;font-weight:650;letter-spacing:-.01em}
.vec-h p{margin:3px 0 0 2px;font-size:13px;color:var(--muted)}
.vec-h .n{margin-left:auto;font-size:12px;font-weight:500;color:var(--muted)}
.draft{display:flex;gap:10px;align-items:flex-start;margin:10px 0 0;padding:11px 13px;border-radius:14px;background:var(--soft-v);
  color:var(--ink-2);font-size:13px}
.draft::before{content:"";flex:none;width:6px;height:6px;margin-top:6px;border-radius:50%;background:var(--violet)}

/* Run */
.run{margin:8px 0;padding:13px 15px 6px;background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow)}
.run-h{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 12px}
.run-h b{font-size:16px;font-weight:650}
.run-h .kpi{margin-left:auto;max-width:100%;font-size:12.5px;color:var(--indigo);font-weight:550;text-align:right}
.run .task{background:var(--raised);box-shadow:none}
.run .nil{margin:6px 0 8px;font-size:12.5px;color:var(--muted)}

/* Входящие */
.compose{margin:10px 0 4px;padding:4px;background:var(--surface);border-radius:18px;box-shadow:var(--shadow);
  transition:box-shadow .25s}
.compose:focus-within{box-shadow:var(--shadow),0 0 0 2px color-mix(in srgb,var(--violet) 45%,transparent)}
textarea{display:block;width:100%;min-height:92px;max-height:40vh;resize:none;border:0;outline:0;background:none;color:var(--ink);
  font:inherit;padding:12px 12px 6px}
textarea::placeholder{color:var(--muted)}
.compose-f{display:flex;align-items:center;gap:10px;padding:4px 4px 4px 12px}
.count{font-size:11.5px;color:var(--muted)}
.send{position:relative;margin-left:auto;display:inline-flex;align-items:center;gap:8px;height:42px;padding:0 18px;border:0;border-radius:13px;
  color:#fff;font-weight:600;background:linear-gradient(135deg,var(--indigo),var(--violet));cursor:pointer;
  transition:transform .15s var(--ease),opacity .2s,filter .2s}
.send:active{transform:scale(.97)}
.send:disabled{opacity:.55;cursor:default}
.send.busy{opacity:1;filter:saturate(.7)}
.send svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.send.busy svg{animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.sent-note{min-height:1.4em;margin:8px 4px 0;font-size:12.5px;color:var(--muted);transition:color .2s}
.sent-note.ok{color:var(--ok)}.sent-note.err{color:var(--exp)}
.idea{margin:6px 0;padding:12px 15px;background:var(--surface);border-radius:14px;box-shadow:var(--shadow)}
.idea .w{line-height:1.4}
.idea .m{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;margin-top:8px;font-size:12px;color:var(--muted)}
.idea.fresh-in{animation:flash 1.6s var(--ease)}
@keyframes flash{0%{box-shadow:var(--shadow),0 0 0 2px var(--violet)}100%{box-shadow:var(--shadow),0 0 0 2px transparent}}
.chip.st-new{background:var(--soft-v);color:var(--violet)}
.chip.st-task{background:color-mix(in srgb,var(--ok) 14%,transparent);color:var(--ok)}
.chip.st-no{background:var(--raised);color:var(--muted)}

/* Скелетон */
.skel{height:74px;margin:8px 0;border-radius:14px;background:linear-gradient(100deg,var(--surface) 30%,var(--raised) 50%,var(--surface) 70%);
  background-size:300% 100%;animation:shine 1.3s linear infinite}
.skel.short{height:48px;width:70%}
@keyframes shine{from{background-position:100% 0}to{background-position:-50% 0}}
.err-box{margin:18px 0;padding:18px 16px;border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow);color:var(--ink-2)}
.err-box button{margin-top:12px;height:38px;padding:0 16px;border:0;border-radius:11px;background:var(--soft);color:var(--indigo);font-weight:600}

/* Нижняя навигация с плавающим индикатором */
.tabs{position:fixed;left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(var(--n,4),1fr);
  padding:5px;border-radius:20px;z-index:5;
  background:color-mix(in srgb,var(--surface) 82%,transparent);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);
  box-shadow:0 0 0 1px var(--line),0 10px 30px -12px rgba(21,25,53,.35)}
.tabs button{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 0 6px;border:0;background:none;
  color:var(--muted);font-size:11.5px;font-weight:550;cursor:pointer;transition:color .25s}
.tabs svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .3s var(--ease)}
.tabs button.on{color:var(--indigo)}
.tabs,.tabs button{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none}
.tabs button{transition:color .25s,transform .22s var(--ease)}
.tabs.sorting .tab-ink{opacity:0}
.tabs button.lift{z-index:3;transition:none;color:var(--indigo);border-radius:15px;background:var(--surface);box-shadow:0 8px 22px -8px rgba(21,25,53,.45),0 0 0 1px var(--line)}
.tabs button.on svg{transform:translateY(-1px)}
.tab-ink{position:absolute;z-index:0;top:5px;bottom:5px;left:5px;width:calc((100% - 10px)/var(--n,4));border-radius:15px;background:var(--soft);
  transform:translateX(calc(var(--k,0) * 100%));transition:transform .38s var(--ease)}

/* Показатели уровня 1 — плитки в шапке */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:14px}
.kpis:empty{display:none}
.kpi{display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:0;padding:8px 8px 7px;border:0;border-radius:12px;
  text-align:left;color:#fff;background:rgba(255,255,255,.10);box-shadow:inset 0 0 0 1px rgba(255,255,255,.10);cursor:pointer;
  animation:rise .5s var(--ease) both;transition:background .2s,transform .15s var(--ease)}
.kpi:nth-child(2){animation-delay:50ms}.kpi:nth-child(3){animation-delay:100ms}.kpi:nth-child(4){animation-delay:150ms}
.kpi:disabled{cursor:default;opacity:1}
.kpi:not(:disabled):active{transform:scale(.97);background:rgba(255,255,255,.16)}
.kpi b{font-size:20px;line-height:1.15;font-weight:650;letter-spacing:-.02em}
.kpi span{font-size:11px;line-height:1.25;color:rgba(255,255,255,.72);hyphens:auto;-webkit-hyphens:auto}
.kpi.r b{color:#FFB3BD}.kpi.a b{color:#FFD99A}.kpi.g b{color:#9FEBD5}.kpi.v b{color:#D3C8FF}
.kpi.r{box-shadow:inset 0 0 0 1px rgba(255,141,155,.45)}

/* Строка верхнего уровня: вектор, программа, человек, очередь */
.row{margin:8px 0;background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.rh{position:relative;display:grid;grid-template-columns:14px 1fr auto;column-gap:10px;align-items:start;width:100%;text-align:left;
  border:0;background:none;padding:13px 40px 12px 14px;cursor:pointer}
.rh .chev{top:14px}
.open>.rh .chev{transform:rotate(180deg)}
.rh:active{background:var(--raised)}
.dot{width:10px;height:10px;margin-top:5px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px color-mix(in srgb,var(--ok) 18%,transparent)}
.dot.d-red{background:var(--exp);box-shadow:0 0 0 3px color-mix(in srgb,var(--exp) 20%,transparent);animation:pulse 2.4s var(--ease) infinite}
.dot.d-warn{background:var(--warn);box-shadow:0 0 0 3px color-mix(in srgb,var(--warn) 20%,transparent)}
.dot.d-empty{background:none;box-shadow:inset 0 0 0 2px var(--line)}
.dot.d-mute{background:var(--muted);box-shadow:none;opacity:.5}
.dot.d-vio{background:var(--violet);box-shadow:0 0 0 3px color-mix(in srgb,var(--violet) 20%,transparent)}
@keyframes pulse{50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--exp) 0%,transparent)}}
.rt{min-width:0}
.rt b{display:flex;align-items:center;gap:7px;font-weight:620;line-height:1.3}
.rt i{display:block;margin-top:2px;font-style:normal;font-size:12.5px;color:var(--muted);line-height:1.35}
.rc{font-size:12.5px;font-weight:600;color:var(--ink-2);white-space:nowrap;padding-top:1px}
.rm{grid-column:2/4;margin-top:6px;font-size:12px;color:var(--muted);line-height:1.5}
.rm:empty{display:none}
.rh>.prog,.rh>.split{grid-column:2/4}
em{font-style:normal;font-weight:550}em.r{color:var(--exp)}em.a{color:var(--warn)}em.g{color:var(--ok)}em.v{color:var(--violet)}
.split{display:flex;gap:2px;height:5px;margin-top:9px;border-radius:3px;overflow:hidden;background:var(--raised)}
.split i{display:block;height:100%;transform-origin:left;animation:grow .8s .1s var(--ease) both}
.split .s-run{background:var(--p1)}.split .s-vec{background:var(--indigo)}.split .s-oth{background:color-mix(in srgb,var(--muted) 35%,transparent)}
.rb{padding:0 8px 8px}
.rb>.sec:first-child{margin-top:4px}
.row .rb .task,.row .rb .proj,.row .rb .idea{box-shadow:none;background:var(--raised)}
.row .rb .proj .task{background:var(--surface)}
.nil{margin:4px 6px 10px;font-size:12.5px;color:var(--muted)}
.tag{margin-left:8px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--muted)}
.sec .tag+.n,.sec .n+.tag{margin-left:8px}

/* Деталь задачи — уровень 3 */
.facts{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;margin:0 15px;padding:10px 0 6px;border-top:1px solid var(--line);font-size:12.5px}
.facts dt{color:var(--muted)}.facts dd{margin:0;color:var(--ink-2)}
.facts+.desc{border-top:0;padding-top:4px}
.who-c{font-weight:550;color:var(--ink-2)}
.nobody,.late{color:var(--warn);font-weight:550}
.task.lt::before{--c:var(--warn)}
.pb.inh{background:none;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--c) 45%,transparent)}

/* «Сейчас» */
.now{margin:12px 0 4px;padding:10px 8px 4px;border-radius:18px;background:linear-gradient(135deg,var(--soft),var(--soft-v));
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--violet) 25%,transparent)}
.now-h{display:flex;align-items:baseline;gap:8px;padding:0 6px 6px}
.now-h span{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--violet)}
.now-h i{font-style:normal;font-size:12.5px;color:var(--ink-2)}
.hint{margin:6px 8px 8px;font-size:12px;color:var(--muted);line-height:1.4}

/* Решения и поручения */
.acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.acts button,.ask{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 13px;border:0;border-radius:10px;font-weight:600;font-size:13px;
  background:var(--surface);color:var(--ink-2);box-shadow:inset 0 0 0 1px var(--line);cursor:pointer;transition:transform .15s var(--ease),opacity .2s}
.acts button:active,.ask:active{transform:scale(.97)}
.acts button:disabled{opacity:.5}
.acts .yes{background:linear-gradient(135deg,var(--indigo),var(--violet));color:#fff;box-shadow:none}
.acts .no{color:var(--exp)}
.acts button.busy{animation:breathe 1s ease-in-out infinite}
@keyframes breathe{50%{opacity:.6}}
.ask{width:calc(100% - 12px);justify-content:center;margin:8px 6px 0;height:40px;background:var(--soft);color:var(--indigo);box-shadow:none}
.ask svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.idea.gone{animation:gone .26s var(--ease) both}
@keyframes gone{to{opacity:0;transform:translateX(24px)}}
.toast{position:fixed;left:50%;bottom:calc(88px + env(safe-area-inset-bottom));z-index:9;max-width:calc(100% - 32px);padding:10px 14px;border-radius:12px;
  background:var(--ink);color:var(--bg);font-size:13px;box-shadow:0 10px 30px -10px rgba(0,0,0,.4);
  transform:translate(-50%,12px);opacity:0;pointer-events:none;transition:opacity .25s,transform .25s var(--ease)}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* Заморозка и вехи */
.freeze{margin:12px 0 0;padding:11px 13px;border-radius:14px;background:var(--exp-soft);color:var(--ink-2);font-size:13px}
.freeze b{color:var(--exp)}
.miles{background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow);padding:4px 14px}
.miles div{display:grid;grid-template-columns:56px 1fr auto;gap:10px;padding:9px 0;font-size:13px;border-bottom:1px solid var(--line)}
.miles div:last-child{border-bottom:0}
.miles b{font-weight:650;color:var(--indigo)}.miles i{font-style:normal;color:var(--muted);font-size:12px}
.tabs .badge{position:absolute;top:3px;left:calc(50% + 6px);min-width:16px;height:16px;padding:0 4px;border-radius:8px;font-size:10px;line-height:16px;
  font-weight:700;color:#fff;background:var(--violet)}
.tabs .badge:empty{display:none}

@media (max-width:360px){.kpis{grid-template-columns:repeat(2,1fr)}}
@media (min-width:640px){main,.hero{max-width:620px;margin-left:auto;margin-right:auto}.hero{margin-top:14px}.tabs{max-width:460px;margin:0 auto}}
@media (hover:hover){.task:hover,.proj:hover{box-shadow:var(--shadow),0 0 0 1px var(--line)}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* Микрофон у пункта: тихий, пока не нужен; рядом со стрелкой раскрытия */
.row,.proj,.idea{position:relative}
.task>.head{padding-right:76px}.ph{padding-right:78px}.rh{padding-right:76px}.idea{padding-right:50px}
.mic{position:absolute;z-index:2;top:7px;right:36px;width:32px;height:32px;display:grid;place-items:center;padding:0;border:0;border-radius:50%;
  background:none;color:var(--muted);cursor:pointer;transition:background .2s,color .2s,transform .15s var(--ease)}
.mic svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.mic:hover,.mic:focus-visible{background:var(--soft);color:var(--indigo)}
.mic:active{transform:scale(.9)}
.mic.sent{color:var(--indigo)}
.mic.sent::after{content:"";position:absolute;top:5px;right:5px;width:6px;height:6px;border-radius:50%;background:var(--indigo)}
.ph~.mic{top:9px}.rh~.mic{top:8px}
.idea>.mic{top:6px;right:8px}

/* Панель записи — как голосовое в Telegram */
.rec{position:fixed;inset:0;z-index:20;pointer-events:none}
.rec.on{pointer-events:auto}
.rec-bg{position:absolute;inset:0;background:rgba(11,13,28,.42);opacity:0;transition:opacity .25s}
.rec.on .rec-bg{opacity:1}
.rec-card{position:absolute;left:0;right:0;bottom:0;padding:16px 16px calc(18px + env(safe-area-inset-bottom));
  background:var(--surface);border-radius:22px 22px 0 0;box-shadow:0 -12px 40px -16px rgba(21,25,53,.45);
  transform:translateY(105%);transition:transform .32s var(--ease)}
.rec.on .rec-card{transform:none}
@media (min-width:640px){.rec-card{max-width:520px;margin:0 auto;bottom:16px;border-radius:22px}}
.rec-h{position:relative;padding-right:36px}
.rec-k{display:block;font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.rec-h b{display:block;margin-top:3px;font-weight:600;line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.rec-x{position:absolute;top:-4px;right:-6px;width:36px;height:36px;border:0;border-radius:50%;background:none;color:var(--muted);font-size:24px;line-height:1;cursor:pointer}
.rec-live{display:flex;align-items:center;gap:12px;margin-top:16px;padding:12px 14px;border-radius:16px;background:var(--raised)}
.rec-dot{flex:none;width:10px;height:10px;border-radius:50%;background:var(--exp);animation:recp 1.2s ease-in-out infinite}
@keyframes recp{50%{opacity:.25}}
.rec-time{flex:none;min-width:38px;font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink-2)}
.rec-time.warn{color:var(--exp)}
.rec-wave{flex:1;display:flex;align-items:center;gap:2px;height:34px;min-width:0}
.rec-wave i{flex:1;max-width:4px;height:var(--h);min-height:3px;border-radius:2px;background:var(--muted);opacity:.55;transition:height .09s linear}
.rec-wave.live i{background:var(--indigo);opacity:.85}
.rec-wave i.on{background:var(--indigo);opacity:1}
.rec-play{flex:none;width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:50%;background:var(--indigo);color:#fff;cursor:pointer}
.rec-play svg{width:16px;height:16px;fill:currentColor;stroke:currentColor;stroke-width:2;stroke-linejoin:round}
.rec-hint,.rec-note{margin:10px 2px 0;font-size:12.5px;line-height:1.4;color:var(--muted)}
.rec-note{margin:14px 0 10px;padding:10px 12px;border-radius:12px;background:var(--warn-soft);color:var(--ink-2)}
#rec-text{display:block;width:100%;margin-top:14px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--raised);
  color:var(--ink);font:inherit;line-height:1.4;resize:vertical;min-height:96px}
#rec-text:focus{outline:2px solid var(--indigo);outline-offset:-1px}
.rec-acts{display:flex;align-items:center;gap:10px;margin-top:14px}
.rec-b{width:48px;height:48px;display:grid;place-items:center;border:0;border-radius:50%;background:var(--soft);color:var(--ink-2);cursor:pointer;font:inherit;font-weight:600}
.rec-b.wide{width:auto;flex:1;display:flex;justify-content:center;gap:8px;align-items:center;border-radius:14px;padding:0 16px;color:var(--indigo)}
.rec-b svg,.rec-send svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.rec-acts .rec-send{margin-left:auto;width:56px;height:56px;display:grid;place-items:center;border:0;border-radius:50%;
  background:linear-gradient(135deg,var(--indigo),var(--violet));color:#fff;cursor:pointer;box-shadow:0 8px 20px -8px var(--indigo)}
.rec-send.busy{opacity:.6;pointer-events:none;animation:recp 1s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){.rec-card,.rec-bg{transition:none}.rec-dot,.rec-send.busy{animation:none}}

/* ——— Добби: тот же язык, что у SAT, но свой цвет — тёплый сине-зелёный «дом» ——— */
:root{--bg:#F1F5F3;--raised:#F5F9F7;--indigo:#23786A;--violet:#3B8F7C;--soft:#E6F2EE;--soft-v:#EAF4F0;--vec:#23786A;
  --hero-a:#10302B;--hero-b:#1C4A42;--hero-c:#2C6B5C}
:root[data-theme="dark"]{--bg:#09130F;--surface:#111E1A;--raised:#16241F;--line:#20322C;--indigo:#5CC4A8;--violet:#7AD3BB;--soft:#16302B;--soft-v:#183530;--vec:#5CC4A8;
  --hero-a:#0B201D;--hero-b:#133730;--hero-c:#1F5248}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--indigo:#5CC4A8;--violet:#7AD3BB;--soft:#16302B;--soft-v:#183530}}

.hid{font-weight:600;color:var(--indigo);font-variant-numeric:tabular-nums}
.shift{display:inline-flex;align-items:center;gap:2px;color:var(--warn);font-weight:550}
.shift svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.ok{color:var(--ok);font-weight:550}
.task.done .t{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--line)}
.facts s{color:var(--muted)}
.tag.r{color:var(--exp)}

/* строка внутри раскрытия: дело, лампа, датчик */
.li{position:relative;display:grid;grid-template-columns:22px auto 1fr auto;align-items:center;gap:8px;min-height:44px;padding:6px 44px 6px 10px;
  margin:4px 0;border-radius:12px;background:var(--raised)}
.li:not(:has(.mic)){padding-right:12px}
.li .em{font-size:16px;text-align:center;line-height:1}
.li .tm{font-size:12.5px;font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums;min-width:0}
.li .tm:empty{display:none}
.li .tm:empty+.tx{grid-column:2/4}
.li .tx{line-height:1.35;min-width:0}
.li .st{font-size:12.5px;color:var(--muted);white-space:nowrap}
.li>.mic{top:50%;right:6px;transform:translateY(-50%)}
.li>.mic:active{transform:translateY(-50%) scale(.9)}
.li.once{box-shadow:inset 3px 0 0 var(--violet)}
.li.dev .tx{grid-column:2/4}
.li.off .tx{color:var(--muted)}
.lamp{width:10px;height:10px;margin:0 auto;border-radius:50%;background:var(--line)}
.li.on .lamp{background:#F5B83D;box-shadow:0 0 0 4px rgba(245,184,61,.22)}
.li.on .st{color:var(--ink-2);font-weight:550}
.bat{position:relative;width:18px;height:10px;margin:0 auto;border:1.5px solid var(--muted);border-radius:3px}
.bat::after{content:"";position:absolute;left:1px;top:1px;bottom:1px;width:calc((100% - 2px) * var(--v) / 100%);max-width:calc(100% - 2px);border-radius:1px;background:var(--ok)}
.bat.low{border-color:var(--exp)}.bat.low::after{background:var(--exp)}
.plan{margin:0 0 4px}
.plan .li{background:var(--surface);box-shadow:var(--shadow)}
.alert{margin:6px 0;padding:11px 14px;border-radius:14px;background:var(--exp-soft);color:var(--ink);font-weight:550}

/* «Сказать Добби» — одна большая кнопка вверху Сводки */
.say{display:flex;align-items:center;gap:14px;width:100%;margin:14px 0 4px;padding:14px 16px;border:0;border-radius:var(--r);text-align:left;cursor:pointer;
  background:linear-gradient(135deg,var(--indigo),var(--violet));color:#fff;box-shadow:0 10px 24px -14px var(--indigo)}
.say svg{flex:none;width:26px;height:26px;padding:9px;box-sizing:content-box;border-radius:50%;background:rgba(255,255,255,.16);
  fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.say b{display:block;font-size:16px;font-weight:650}
.say i{display:block;font-style:normal;font-size:12.5px;opacity:.82}
.say:active{transform:scale(.99)}
