/* ============================================================
   МОЗГ — cockpit_next.css  ·  direction C "тихий графит + яркий мозг"
   Preview build served at /glava/next. Live /glava/ uses cockpit.css.
   Tokens: 2-layer (primitives + semantic aliases). Inter + JetBrains Mono.
   ============================================================ */

/* ---------- Layer 1: primitives ---------- */
:root{
  /* charcoal ladder — near-black neutral, no violet undertone */
  --c-base:#0a0b0d; --c-900:#0d0e11; --c-850:#111317; --c-800:#15171c;
  --c-750:#191c22; --c-700:#1f232a; --c-650:#262b33; --c-600:#30363f; --c-500:#3c434d;

  /* hairlines */
  --line-100:rgba(255,255,255,.045); --line-200:rgba(255,255,255,.075); --line-300:rgba(255,255,255,.11);

  /* near-monochrome text ramp */
  --ink-100:#f4f6f8; --ink-200:#cbd0d7; --ink-300:#9aa1ab; --ink-400:#6f7681; --ink-500:#565d67;

  /* status hues */
  --s-active:#4ea1ff; --s-live:#2fd0a0; --s-warn:#ffc857; --s-cold:#6f7681; --s-blocked:#ff5d6e;

  /* radii / spacing / motion */
  --r-sm:8px; --r-md:12px; --r-lg:16px; --r-xl:22px; --r-pill:999px;
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px; --sp-6:28px; --sp-7:40px;
  --ease:cubic-bezier(.22,.61,.36,1);
}
/* ---------- Layer 2: semantic aliases ---------- */
:root{
  --bg-app:var(--c-base); --bg-chrome:rgba(13,14,17,.82);
  --bg-surface:var(--c-850); --bg-surface-2:var(--c-800); --bg-raised:var(--c-750); --bg-inset:var(--c-900);
  --border-soft:var(--line-100); --border:var(--line-200); --border-strong:var(--line-300);
  --text-strong:var(--ink-100); --text:var(--ink-200); --text-muted:var(--ink-300);
  --text-faint:var(--ink-400); --text-ghost:var(--ink-500);
  --shadow-float:0 18px 50px -16px rgba(0,0,0,.78), 0 2px 8px -2px rgba(0,0,0,.55);
  --shadow-tile:0 1px 0 rgba(255,255,255,.025) inset;
  --maxw:1240px;
}

*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
body{
  background:radial-gradient(1100px 520px at 50% -8%, rgba(94,120,200,.05), transparent 60%), var(--bg-app);
  color:var(--text);
  font-family:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  font-size:14px; line-height:1.45;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  font-feature-settings:"cv05","ss01"; min-height:100dvh;
  padding-bottom:env(safe-area-inset-bottom);
}
.tnum,time,.num,.hb-count,.feed-ago,.ts{ font-variant-numeric:tabular-nums; }
.mono{ font-family:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace; font-variant-numeric:tabular-nums; }
svg{ display:block; }
a{ color:inherit; }

.wrap{ max-width:var(--maxw); margin:0 auto; padding:0 var(--sp-4) 64px; }
.empty{ color:var(--text-faint); font-size:13px; text-align:center; padding:22px 8px; }
.b-loading{ color:var(--text-faint); font-size:12.5px; padding:16px; text-align:center; }

/* ============================================================ HEADER / CHROME */
.topbar{
  position:sticky; top:0; z-index:40;
  backdrop-filter:saturate(140%) blur(16px); -webkit-backdrop-filter:saturate(140%) blur(16px);
  background:var(--bg-chrome); border-bottom:1px solid var(--border-soft);
}
.topbar-inner{ max-width:var(--maxw); margin:0 auto; display:flex; align-items:center; gap:var(--sp-3); padding:11px var(--sp-4); }
.brand{ display:flex; align-items:center; gap:10px; min-width:0; }
.brand-mark{ width:30px;height:30px;border-radius:9px; display:grid; place-items:center; flex:0 0 auto;
  background:linear-gradient(160deg,var(--c-750),var(--c-850)); border:1px solid var(--border); color:var(--ink-200); }
.brand-name{ font-weight:700; letter-spacing:.14em; font-size:13.5px; color:var(--text-strong); white-space:nowrap; }
.brand-sub{ display:flex; align-items:center; gap:8px; margin-left:2px; }
.ts{ color:var(--text-faint); font-size:12px; white-space:nowrap; }
.dot{ width:5px;height:5px;border-radius:50%; background:var(--text-ghost); flex:0 0 auto; }
.live{ display:inline-flex; align-items:center; gap:7px; font-size:11.5px; font-weight:600; letter-spacing:.06em;
  color:var(--s-live); padding:4px 9px 4px 8px; border-radius:var(--r-pill);
  background:color-mix(in srgb,var(--s-live) 9%,transparent); border:1px solid color-mix(in srgb,var(--s-live) 22%,transparent); }
.live .pulse{ width:6px;height:6px;border-radius:50%; background:var(--s-live);
  box-shadow:0 0 0 0 color-mix(in srgb,var(--s-live) 60%,transparent); animation:hpulse 2.4s var(--ease) infinite; }
@keyframes hpulse{ 0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--s-live) 55%,transparent);} 70%{box-shadow:0 0 0 7px transparent;} 100%{box-shadow:0 0 0 0 transparent;} }
.spacer{ flex:1 1 auto; }
.pill-btn{ display:inline-flex; align-items:center; gap:8px; font-family:inherit; font-size:12.5px; font-weight:500;
  color:var(--text); cursor:pointer; padding:7px 12px; border-radius:var(--r-pill);
  background:var(--bg-raised); border:1px solid var(--border);
  transition:border-color .18s var(--ease), background .18s var(--ease), color .18s var(--ease); }
.pill-btn:hover{ border-color:var(--border-strong); color:var(--text-strong); }
.pill-btn svg{ color:var(--text-muted); }
.search-pill{ color:var(--text-muted); }
.search-pill .kbd{ font-family:"JetBrains Mono",monospace; font-size:10.5px; font-weight:500; color:var(--text-faint);
  padding:2px 6px; border-radius:6px; background:var(--c-800); border:1px solid var(--border); line-height:1; }
.room-btn{ color:var(--text-strong); background:var(--c-800); text-decoration:none; }
.icon-btn{ display:none; place-items:center; cursor:pointer; width:34px;height:34px;border-radius:10px;
  background:var(--bg-raised); border:1px solid var(--border); color:var(--text-muted); }

/* ============================================================ SECTION HEADINGS */
.sec{ margin-top:var(--sp-6); }
.sec-head{ display:flex; align-items:center; gap:10px; margin:0 0 var(--sp-3); }
.sec-title{ font-size:11px; font-weight:600; letter-spacing:.16em; text-transform:uppercase; color:var(--text-faint); margin:0; }
.sec-rule{ flex:1 1 auto; height:1px; background:var(--border-soft); }
.sec-meta{ font-size:11.5px; color:var(--text-ghost); white-space:nowrap; }

/* ============================================================ HERO — vivid neon brain (live force-graph) */
.hero{ margin-top:var(--sp-5); position:relative; border-radius:var(--r-xl);
  background:
    radial-gradient(38% 50% at 50% 47%, rgba(255,80,95,.07), transparent 70%),
    radial-gradient(60% 70% at 50% 47%, rgba(70,120,210,.10), transparent 65%),
    linear-gradient(180deg,#080a0e,#05070a);
  border:1px solid var(--border); overflow:hidden; }
.b-neural-wrap{ position:relative; }
.hero .hero-graph, .b-neural-wrap svg.bg-svg{ width:100%; height:auto; display:block; aspect-ratio:1280/717; touch-action:manipulation; }
.b-live-badge{ position:absolute; top:12px; right:14px; font-size:10px; font-weight:700; letter-spacing:.12em;
  text-transform:uppercase; color:var(--s-live); padding:3px 8px; border-radius:var(--r-pill);
  background:color-mix(in srgb,var(--s-live) 10%,transparent); border:1px solid color-mix(in srgb,var(--s-live) 24%,transparent); }
.b-live-badge.beat{ animation:beat .9s var(--ease); }
@keyframes beat{ 0%{transform:scale(1);} 30%{transform:scale(1.14);} 100%{transform:scale(1);} }
.hero-summary{ display:flex; align-items:center; flex-wrap:wrap; gap:7px; padding:14px var(--sp-5) 16px;
  border-top:1px solid var(--border-soft); font-size:13px; color:var(--text-muted);
  background:linear-gradient(180deg,transparent,rgba(0,0,0,.18)); }
.hero-summary b{ color:var(--text-strong); font-weight:600; }
.hero-summary .sep{ color:var(--text-ghost); }
.hero-summary .activechip{ display:inline-flex; align-items:center; gap:6px; color:var(--text); font-weight:500;
  padding:2px 9px 2px 7px; border-radius:var(--r-pill);
  background:color-mix(in srgb,var(--ac,#4ea1ff) 9%,transparent); border:1px solid color-mix(in srgb,var(--ac,#4ea1ff) 26%,transparent); }
.hero-summary .activechip .d{ width:6px;height:6px;border-radius:50%; background:var(--ac,#4ea1ff); box-shadow:0 0 7px var(--ac,#4ea1ff); }

/* ---- hero: мозг-плата, проекты на чипах (по раскадровке) ---- */
.bg-svg text{ font-family:"Inter",sans-serif; }
.bg-mark{ cursor:pointer; }

/* живое свечение мозга */
.bg-brain-aura{ transform-box:fill-box; transform-origin:center; animation:aura 3.6s var(--ease) infinite; }
@keyframes aura{ 0%,100%{ transform:scale(.9); opacity:.6; } 50%{ transform:scale(1.08); opacity:1; } }

/* синие дорожки по контактам + бегущий ток (пульс) */
.bg-beam{ animation:beam 3s var(--ease) infinite; }
@keyframes beam{ 0%,100%{ opacity:.85; } 50%{ opacity:1; } }
.bg-flow{ stroke-dasharray:2 13; opacity:.9; animation:flow 1.5s linear infinite; }
@keyframes flow{ to{ stroke-dashoffset:-15; } }

/* красная рамка «работает» */
.bg-mark-frame{ stroke-linejoin:round; animation:work 2.6s var(--ease) infinite; }
@keyframes work{ 0%,100%{ opacity:.85; } 50%{ opacity:1; } }
.node-active .bg-mark-frame{ animation-duration:1.5s; }
.bg-working .bg-mark-frame{ stroke-width:3.6; }
.bg-flare .bg-mark-frame{ animation:flare .9s var(--ease); }
@keyframes flare{ 0%{ filter:brightness(1); } 25%{ filter:brightness(2.3); } 100%{ filter:brightness(1); } }
.bg-mark-fill{ animation:workfill 2.6s var(--ease) infinite; }
@keyframes workfill{ 0%,100%{ opacity:.5; } 50%{ opacity:1; } }
.bg-mark-pulse{ transform-box:fill-box; transform-origin:center; animation:markpulse 2.6s var(--ease) infinite; }
@keyframes markpulse{ 0%{ transform:scale(1); opacity:.7; } 70%{ transform:scale(1.22); opacity:0; } 100%{ opacity:0; } }
.bg-led{ animation:ledblink 1.7s var(--ease) infinite; }
@keyframes ledblink{ 0%,100%{ opacity:1; } 50%{ opacity:.4; } }
.node-active .bg-led{ animation-duration:1s; }
.bg-mark-label{ font-size:16.5px; font-weight:700; letter-spacing:.04em; }

.bg-pulse-dot{ pointer-events:none; }

/* ============================================================ HEARTBEAT */
.hb-card{ border:1px solid var(--border); border-radius:var(--r-lg); background:var(--bg-surface); overflow:hidden; }
.hb-row{ display:grid; grid-template-columns:122px 1fr auto; align-items:center; gap:var(--sp-3); padding:11px var(--sp-4); cursor:default; }
.hb-row + .hb-row{ border-top:1px solid var(--border-soft); }
.hb-name{ display:flex; align-items:center; gap:8px; min-width:0; }
.hb-name .d{ width:7px;height:7px;border-radius:2px; flex:0 0 auto; }
.hb-name span{ font-size:12.5px; color:var(--text); font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.hb-cells{ display:flex; gap:2px; min-width:0; }
.hb-cell{ flex:1 1 0; height:18px; border-radius:2.5px; background:var(--c-750); transition:background .2s var(--ease); }
.hb-cell.today{ outline:1.5px solid var(--ink-100); outline-offset:-1px; }
.hb-count{ font-size:11.5px; color:var(--text-faint); white-space:nowrap; }
.hb-count b{ color:var(--text); font-weight:600; }
.hb-foot{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:9px var(--sp-4);
  border-top:1px solid var(--border-soft); font-size:11px; color:var(--text-ghost); }
.hb-legend{ display:inline-flex; align-items:center; gap:5px; }
.hb-legend i{ width:11px;height:11px;border-radius:2px; display:inline-block; }

/* ============================================================ PROJECT BENTO */
.bento{ display:grid; grid-template-columns:1fr; gap:var(--sp-3); }
.card{ position:relative; border:1px solid var(--border); border-radius:var(--r-lg);
  background:linear-gradient(180deg,var(--c-850),var(--c-900));
  padding:var(--sp-4) var(--sp-4) var(--sp-4) calc(var(--sp-4) + 3px); box-shadow:var(--shadow-tile);
  transition:border-color .2s var(--ease), transform .2s var(--ease); overflow:hidden; cursor:pointer; }
.card:hover{ border-color:var(--border-strong); }
.card:active{ transform:scale(.992); }
.card.active::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:linear-gradient(180deg,var(--acc),color-mix(in srgb,var(--acc) 35%,transparent)); box-shadow:0 0 14px -2px var(--acc); }
.card-top{ display:flex; align-items:flex-start; justify-content:space-between; gap:var(--sp-3); }
.card-id{ display:flex; align-items:center; gap:9px; min-width:0; }
.card-glyph{ width:30px;height:30px;border-radius:9px; flex:0 0 auto; display:grid; place-items:center;
  background:color-mix(in srgb,var(--acc) 12%,var(--c-800)); border:1px solid color-mix(in srgb,var(--acc) 28%,transparent); color:var(--acc); }
.card-titles{ min-width:0; }
.card-name{ font-size:15px; font-weight:600; color:var(--text-strong); line-height:1.2; }
.card-tag{ font-size:12px; color:var(--text-muted); margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.status-pill{ display:inline-flex; align-items:center; gap:6px; flex:0 0 auto; font-size:11px; font-weight:600;
  letter-spacing:.04em; padding:4px 9px; border-radius:var(--r-pill); text-transform:uppercase; white-space:nowrap; }
.status-pill .sd{ width:6px;height:6px;border-radius:50%; }
.st-active{ color:var(--s-active); background:color-mix(in srgb,var(--s-active) 10%,transparent); border:1px solid color-mix(in srgb,var(--s-active) 24%,transparent); }
.st-active .sd{ background:var(--s-active); box-shadow:0 0 6px var(--s-active); }
.st-live{ color:var(--s-live); background:color-mix(in srgb,var(--s-live) 10%,transparent); border:1px solid color-mix(in srgb,var(--s-live) 24%,transparent); }
.st-live .sd{ background:var(--s-live); box-shadow:0 0 6px var(--s-live); }
.st-idle,.st-cold{ color:var(--s-cold); background:color-mix(in srgb,var(--s-cold) 12%,transparent); border:1px solid color-mix(in srgb,var(--s-cold) 24%,transparent); }
.st-idle .sd,.st-cold .sd{ background:var(--s-cold); }
.st-blocked{ color:var(--s-blocked); background:color-mix(in srgb,var(--s-blocked) 10%,transparent); border:1px solid color-mix(in srgb,var(--s-blocked) 24%,transparent); }
.st-blocked .sd{ background:var(--s-blocked); box-shadow:0 0 6px var(--s-blocked); }
.card-mid{ display:flex; align-items:center; justify-content:space-between; gap:var(--sp-3); margin-top:var(--sp-4); }
.spark{ flex:0 0 auto; max-width:62%; height:40px; }
.spark .area{ fill:color-mix(in srgb,var(--acc) 18%,transparent); }
.spark .line{ fill:none; stroke:var(--acc); stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.metric-30d{ text-align:right; }
.metric-30d .num{ font-size:18px; font-weight:700; color:var(--text-strong); line-height:1; }
.metric-30d .lbl{ font-size:10.5px; color:var(--text-ghost); letter-spacing:.04em; margin-top:3px; }
.progress-wrap{ margin-top:var(--sp-4); }
.progress-meta{ display:flex; align-items:center; justify-content:space-between; margin-bottom:7px; }
.progress-meta .k{ font-size:11px; color:var(--text-faint); letter-spacing:.05em; text-transform:uppercase; }
.progress-meta .v{ font-size:12px; font-weight:600; color:var(--text); }
.track{ height:6px; border-radius:var(--r-pill); background:var(--c-750); overflow:hidden; }
.track > i{ display:block; height:100%; border-radius:var(--r-pill);
  background:linear-gradient(90deg,color-mix(in srgb,var(--acc) 70%,#888),var(--acc)); transition:width .5s var(--ease); }
.card-foot{ display:flex; align-items:center; justify-content:space-between; gap:var(--sp-2);
  margin-top:var(--sp-4); padding-top:var(--sp-3); border-top:1px solid var(--border-soft); }
.mb-badge{ display:inline-flex; align-items:center; gap:7px; font-size:11.5px; color:var(--text-muted); }
.mb-badge .mbd{ width:7px;height:7px;border-radius:50%; flex:0 0 auto; background:var(--text-ghost); }
.mb-fresh .mbd{ background:var(--s-live); box-shadow:0 0 6px color-mix(in srgb,var(--s-live) 70%,transparent); }
.mb-staling .mbd,.mb-stale .mbd,.mb-stale_hot .mbd{ background:var(--s-warn); box-shadow:0 0 6px color-mix(in srgb,var(--s-warn) 70%,transparent); }
.mb-no_active .mbd{ background:var(--s-cold); }
.mb-no_bank .mbd{ background:var(--s-blocked); box-shadow:0 0 6px color-mix(in srgb,var(--s-blocked) 70%,transparent); }
.card-open{ display:inline-flex; align-items:center; gap:5px; font-size:11.5px; color:var(--text-faint); }
.card:hover .card-open{ color:var(--text-muted); }

/* ============================================================ EVENTS FEED */
.feed{ border:1px solid var(--border); border-radius:var(--r-lg); background:var(--bg-surface); overflow:hidden; }
.feed-row{ display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:var(--sp-3); padding:13px var(--sp-4); }
.feed-row + .feed-row{ border-top:1px solid var(--border-soft); }
.feed-glyph{ width:28px;height:28px;border-radius:8px; flex:0 0 auto; display:grid; place-items:center;
  background:var(--c-800); border:1px solid var(--border); color:var(--text-faint); }
.feed-main{ min-width:0; }
.feed-title{ font-family:"JetBrains Mono",monospace; font-size:12px; color:var(--text); line-height:1.4; word-break:break-word; }
.feed-sub{ display:flex; align-items:center; gap:8px; margin-top:5px; }
.chip{ display:inline-flex; align-items:center; gap:6px; font-size:10.5px; font-weight:600; color:var(--text-muted);
  padding:2px 8px 2px 7px; border-radius:var(--r-pill); background:var(--c-800); border:1px solid var(--border); }
.chip .cd{ width:6px;height:6px;border-radius:50%; }
.feed-ago{ font-size:11.5px; color:var(--text-ghost); white-space:nowrap; align-self:flex-start; padding-top:1px; }

/* ============================================================ ЖУРНАЛ (вкладки по дням) */
.jrnl{ border:1px solid var(--border); border-radius:var(--r-lg); background:var(--bg-surface); overflow:hidden; }
.jrnl-tabs{ display:flex; gap:6px; padding:10px var(--sp-3); overflow-x:auto; scrollbar-width:thin;
  border-bottom:1px solid var(--border-soft); -webkit-overflow-scrolling:touch; }
.jrnl-tabs::-webkit-scrollbar{ height:0; }
.jrnl-tab{ flex:0 0 auto; cursor:pointer; display:flex; align-items:center; gap:7px; white-space:nowrap;
  font-family:inherit; font-size:12.5px; font-weight:500; color:var(--text-muted);
  padding:7px 12px; border-radius:var(--r-pill); background:transparent; border:1px solid transparent;
  transition:background .15s var(--ease), color .15s var(--ease), border-color .15s var(--ease); }
.jrnl-tab:hover{ color:var(--text); background:var(--bg-raised); }
.jrnl-tab.sel{ color:var(--text-strong); background:var(--bg-raised); border-color:var(--border-strong); }
.jrnl-tab .cnt{ font-size:10.5px; font-weight:600; color:var(--text-faint); font-variant-numeric:tabular-nums;
  padding:1px 6px; border-radius:var(--r-pill); background:var(--c-800); border:1px solid var(--border); }
.jrnl-tab.sel .cnt{ color:var(--text); }
.jrnl-day{ padding:var(--sp-2) 0; max-height:560px; overflow-y:auto; }
.jrnl-empty{ padding:28px; text-align:center; color:var(--text-faint); font-size:13px; }
.jrnl-item{ display:grid; grid-template-columns:auto 1fr auto; align-items:start; gap:var(--sp-3); padding:11px var(--sp-4); }
.jrnl-item + .jrnl-item{ border-top:1px solid var(--border-soft); }
.jrnl-cat{ flex:0 0 auto; font-size:10px; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
  padding:3px 8px; border-radius:var(--r-pill); white-space:nowrap; margin-top:1px;
  color:var(--text-muted); background:var(--c-800); border:1px solid var(--border); min-width:54px; text-align:center; }
.jrnl-main{ min-width:0; }
.jrnl-text{ font-size:13px; color:var(--text); line-height:1.45; word-break:break-word; }
.jrnl-text .orig{ display:block; font-family:"JetBrains Mono",monospace; font-size:10.5px; color:var(--text-ghost); margin-top:3px; }
.jrnl-sub{ display:flex; align-items:center; gap:8px; margin-top:6px; }
.jrnl-proj{ display:inline-flex; align-items:center; gap:6px; font-size:10.5px; font-weight:600; color:var(--text-muted);
  padding:2px 8px 2px 7px; border-radius:var(--r-pill); background:var(--c-800); border:1px solid var(--border); }
.jrnl-proj .cd{ width:6px;height:6px;border-radius:50%; }
.jrnl-time{ font-size:11px; color:var(--text-ghost); white-space:nowrap; margin-top:2px; }
.jrnl-foot{ display:flex; align-items:center; gap:8px; padding:9px var(--sp-4); border-top:1px solid var(--border-soft);
  font-size:11px; color:var(--text-ghost); }
@media (max-width:560px){ .jrnl-cat{ min-width:46px; font-size:9px; } .jrnl-item{ gap:var(--sp-2); padding:11px var(--sp-3); } }

/* ============================================================ COLLAPSIBLE — Карта системы */
.collapse{ margin-top:var(--sp-5); border:1px solid var(--border); border-radius:var(--r-lg); background:var(--bg-surface); overflow:hidden; }
.collapse-head{ width:100%; cursor:pointer; text-align:left; display:flex; align-items:center; gap:var(--sp-3);
  padding:14px var(--sp-4); font-family:inherit; color:var(--text-strong); font-size:13.5px; font-weight:600; background:transparent; border:0; }
.collapse-head .lead{ display:flex; align-items:center; gap:10px; flex:1; }
.collapse-head .lead svg{ color:var(--text-muted); }
.chev{ color:var(--text-faint); transition:transform .26s var(--ease); flex:0 0 auto; }
.collapse.open .chev{ transform:rotate(90deg); }
.collapse-body{ padding:0; }
.collapse-body.hidden{ display:none; }
.m-sysmap-frame{ width:100%; height:560px; border:0; display:block; background:var(--bg-inset); }
.m-sysmap-bar{ display:flex; align-items:center; gap:10px; padding:10px var(--sp-4); border-top:1px solid var(--border-soft);
  font-size:11.5px; color:var(--text-ghost); }
.m-sysmap-full{ margin-left:auto; color:var(--text-muted); text-decoration:none; }

/* ============================================================ BOTTOM SHEET (restyled charcoal) */
.b-sheet{ position:fixed; inset:0; z-index:80; pointer-events:none; }
.b-sheet.open{ pointer-events:auto; }
.b-sheet-backdrop{ position:absolute; inset:0; background:rgba(0,0,0,.5); opacity:0; transition:opacity .28s var(--ease);
  backdrop-filter:blur(2px); }
.b-sheet.open .b-sheet-backdrop{ opacity:1; }
.b-sheet-panel{ position:absolute; left:0; right:0; bottom:0; margin:0 auto; max-width:760px; max-height:94vh;
  display:flex; flex-direction:column; background:var(--c-850); border:1px solid var(--border-strong);
  border-bottom:0; border-radius:var(--r-xl) var(--r-xl) 0 0; box-shadow:var(--shadow-float);
  transform:translateY(102%); transition:transform .34s var(--ease); }
.b-sheet.open .b-sheet-panel{ transform:translateY(0); }
.b-sheet-handle{ width:42px; height:4px; border-radius:var(--r-pill); background:var(--c-600);
  margin:10px auto 4px; flex:0 0 auto; cursor:grab; touch-action:none; }
.b-sheet-header{ display:flex; align-items:center; gap:var(--sp-3); padding:8px var(--sp-5) 12px;
  border-bottom:1px solid var(--border-soft); }
.b-sheet-title{ display:flex; align-items:center; gap:10px; min-width:0; flex:1; }
.b-sheet-emoji{ font-size:18px; }
.b-sheet-name{ font-size:16px; font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.b-sheet-dot{ width:8px;height:8px;border-radius:50%; background:var(--s-cold); flex:0 0 auto; }
.s-dot-active{ background:var(--s-active); box-shadow:0 0 7px var(--s-active); }
.s-dot-live{ background:var(--s-live); box-shadow:0 0 7px var(--s-live); }
.s-dot-idle,.s-dot-cold{ background:var(--s-cold); }
.b-sheet-ago{ font-size:11.5px; color:var(--text-faint); white-space:nowrap; }
.b-sheet-close{ width:30px;height:30px;border-radius:8px; flex:0 0 auto; cursor:pointer; font-size:15px;
  color:var(--text-muted); background:var(--c-800); border:1px solid var(--border); }
.b-sheet-scroll{ overflow-y:auto; -webkit-overflow-scrolling:touch; padding:var(--sp-4) var(--sp-5) calc(var(--sp-6) + env(safe-area-inset-bottom)); }
body.b-sheet-open{ overflow:hidden; }

.sh-desc{ color:var(--text); font-size:13.5px; line-height:1.55; }
.sh-goal{ color:var(--text-strong); font-size:13px; margin-top:10px; padding:10px 12px; border-radius:var(--r-md);
  background:var(--bg-inset); border:1px solid var(--border-soft); }
.sh-obs{ color:var(--text-muted); font-size:12.5px; margin-top:10px; font-style:italic; }
.sh-sec{ font-size:11px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--text-faint);
  margin:var(--sp-5) 0 var(--sp-3); }
.sh-about{ color:var(--text-muted); font-size:12.5px; line-height:1.6; }
.sh-collapse{ margin-top:10px; border:1px solid var(--border-soft); border-radius:var(--r-md); overflow:hidden; background:var(--bg-inset); }
.sh-collapse-btn{ width:100%; text-align:left; cursor:pointer; display:flex; align-items:center; justify-content:space-between;
  gap:10px; padding:11px 13px; font-family:inherit; font-size:12.5px; font-weight:600; color:var(--text);
  background:transparent; border:0; }
.sh-collapse-arrow{ color:var(--text-faint); }
.sh-collapse-body{ padding:0 13px 13px; }
.sh-collapse-body.hidden{ display:none; }
.sh-embed{ margin-top:var(--sp-4); }
.sh-embed-none{ color:var(--text-faint); font-size:12px; padding:12px; text-align:center; border:1px dashed var(--border); border-radius:var(--r-md); }
.sh-embed-link{ display:inline-flex; align-items:center; gap:6px; font-size:12.5px; font-weight:600; color:var(--text-strong);
  padding:9px 14px; border-radius:var(--r-pill); border:1px solid var(--border-strong); background:var(--c-800); text-decoration:none; }
.sh-embed-bar{ display:flex; align-items:center; gap:10px; font-size:12px; color:var(--text-muted); margin-bottom:8px; }
.sh-embed-full{ margin-left:auto; color:var(--text-muted); text-decoration:none; }
.sh-frame-wrap{ position:relative; border-radius:var(--r-md); overflow:hidden; border:1px solid var(--border); background:var(--bg-inset); }
.sh-frame{ width:100%; height:420px; border:0; display:block; }
.sh-frame-ph{ position:absolute; inset:0; display:grid; place-items:center; gap:8px; color:var(--text-faint); font-size:12px; }
.sh-group{ border:1px solid var(--border-soft); border-radius:var(--r-md); margin-top:8px; overflow:hidden; }
.sh-group-head{ width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:10px 12px; font-family:inherit; font-size:12.5px; font-weight:600; color:var(--text); background:var(--bg-inset); border:0; }
.sh-group-prog{ font-size:11px; color:var(--text-faint); font-variant-numeric:tabular-nums; }
.sh-group.collapsed .sh-group-list{ display:none; }
.sh-group-list{ padding:4px 0; }
.sh-phase{ display:flex; align-items:flex-start; gap:10px; padding:7px 12px; }
.sh-mark{ width:8px;height:8px;border-radius:50%; margin-top:5px; flex:0 0 auto; background:var(--s-cold); }
.s-mark-done{ background:var(--s-live); } .s-mark-in_progress{ background:var(--s-active); }
.s-mark-queued{ background:var(--s-cold); } .s-mark-blocked{ background:var(--s-blocked); } .s-mark-idea{ background:#a78bfa; }
.sh-phase-title{ font-size:12.5px; color:var(--text); line-height:1.4; }
.sh-phase-acc{ font-size:11px; color:var(--text-faint); margin-top:2px; }
/* ROADMAP 2.0 — фаза с раскрывающимися подфазами */
.sh-phase2{ border-bottom:1px solid var(--border-soft); }
.sh-phase2:last-child{ border-bottom:0; }
.sh-phase2-head{ width:100%; text-align:left; cursor:pointer; display:flex; align-items:flex-start; gap:10px;
  padding:7px 12px; font-family:inherit; font-size:inherit; color:inherit; background:none; border:0; }
.sh-phase2-main{ flex:1; min-width:0; }
.sh-phase2-caret{ flex:0 0 auto; color:var(--text-faint); font-size:11px; padding-top:2px; }
.sh-phase2-tasks{ padding:0 12px 8px 30px; }
.sh-phase2-tasks.hidden{ display:none; }
.sh-task2{ display:flex; align-items:flex-start; gap:8px; padding:5px 0; }
.sh-task2 .sh-mark{ width:6px; height:6px; }
.sh-task2-title{ font-size:12px; color:var(--text); line-height:1.4; }
.sh-moves{ display:flex; flex-direction:column; gap:4px; }
.sh-move{ display:flex; gap:10px; font-size:12px; }
.sh-move-d{ color:var(--text-ghost); font-family:"JetBrains Mono",monospace; flex:0 0 auto; }
.sh-move-m{ color:var(--text-muted); }
.sh-lesson{ border-left:2px solid var(--c-600); padding:6px 0 6px 11px; margin-top:8px; }
.sh-lesson-t{ font-size:12.5px; font-weight:600; color:var(--text); }
.sh-lesson-b{ font-size:11.5px; color:var(--text-faint); margin-top:3px; line-height:1.5; }
.sh-stale{ border:1px solid color-mix(in srgb,var(--s-warn) 30%,transparent); background:color-mix(in srgb,var(--s-warn) 6%,transparent);
  border-radius:var(--r-md); padding:9px 11px; margin-top:8px; }
.sh-stale-t{ font-size:12px; font-weight:600; color:var(--text); }
.sh-stale-r{ font-size:11px; color:var(--text-muted); margin-top:3px; }
.sh-path{ font-family:"JetBrains Mono",monospace; font-size:11px; color:var(--text-ghost); margin-top:10px; }

/* ---- заявки Анны (сворачиваемый блок, только у wife) ---- */
.sh-tasks{ margin-top:var(--sp-4); border:1px solid var(--border-soft); border-radius:var(--r-md); overflow:hidden; background:var(--bg-inset); }
.sh-tasks-head{ width:100%; text-align:left; cursor:pointer; display:flex; align-items:center; gap:10px;
  padding:11px 13px; font-family:inherit; font-size:12.5px; font-weight:600; color:var(--text); background:transparent; border:0; }
.sh-tasks-caret{ color:var(--text-faint); font-size:11px; transition:transform .26s var(--ease); flex:0 0 auto; }
.sh-tasks.open .sh-tasks-caret{ transform:rotate(90deg); }
.sh-tasks-t{ flex:1; }
.sh-tasks-badge{ flex:0 0 auto; font-size:11px; font-weight:700; font-variant-numeric:tabular-nums; line-height:1;
  padding:3px 7px; border-radius:var(--r-pill); color:#ff6b9d;
  background:color-mix(in srgb,#ff6b9d 12%,transparent); border:1px solid color-mix(in srgb,#ff6b9d 28%,transparent); }
.sh-tasks-list{ display:none; }
.sh-tasks.open .sh-tasks-list{ display:flex; flex-direction:column; padding:2px 13px 11px; }
.sh-task{ display:flex; align-items:center; gap:9px; padding:7px 0; }
.sh-task + .sh-task{ border-top:1px solid var(--border-soft); }
.sh-task-st{ flex:0 0 auto; font-size:9.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; white-space:nowrap;
  padding:2px 7px; border-radius:var(--r-pill); }
.sh-task-st-done{ color:var(--s-live); background:color-mix(in srgb,var(--s-live) 12%,transparent); border:1px solid color-mix(in srgb,var(--s-live) 26%,transparent); }
.sh-task-st-wip{ color:var(--s-active); background:color-mix(in srgb,var(--s-active) 12%,transparent); border:1px solid color-mix(in srgb,var(--s-active) 26%,transparent); }
.sh-task-st-new{ color:var(--s-warn); background:color-mix(in srgb,var(--s-warn) 12%,transparent); border:1px solid color-mix(in srgb,var(--s-warn) 26%,transparent); }
.sh-task-title{ flex:1; min-width:0; font-size:12.5px; color:var(--text); line-height:1.4; word-break:break-word; }
.sh-task-date{ flex:0 0 auto; font-size:10.5px; color:var(--text-ghost); font-variant-numeric:tabular-nums; white-space:nowrap; }
.sh-tasks-foot{ font-size:11px; color:var(--text-faint); padding-top:8px; margin-top:2px; border-top:1px solid var(--border-soft); }

/* — каналы YouTube-цеха: сворачиваемая карточка с живыми итогами — */
.sh-chan{ margin-top:8px; border:1px solid var(--border-soft); border-radius:var(--r-md); overflow:hidden; background:var(--bg-inset); }
.sh-chan-off{ opacity:.55; }
.sh-chan-head{ width:100%; text-align:left; cursor:pointer; display:flex; align-items:flex-start; gap:10px; padding:11px 13px; background:none; border:0; color:var(--text); }
.sh-chan-caret{ flex:0 0 auto; color:var(--text-faint); font-size:11px; padding-top:3px; transition:transform .26s var(--ease); }
.sh-chan.open .sh-chan-caret{ transform:rotate(90deg); }
.sh-chan-main{ flex:1; min-width:0; }
.sh-chan-name{ font-size:13px; font-weight:600; color:var(--text-strong); }
.sh-chan-sum{ font-size:11.5px; color:var(--text-faint); margin-top:2px; font-variant-numeric:tabular-nums; }
.sh-chan-body{ display:none; padding:0 13px 12px 34px; }
.sh-chan.open .sh-chan-body{ display:block; }
.sh-chan-purpose{ font-size:11.5px; color:var(--text-muted); line-height:1.5; padding-bottom:4px; }
.sh-chan-grp-t{ font-size:10px; font-weight:600; letter-spacing:.12em; text-transform:uppercase; color:var(--text-ghost); margin:10px 0 3px; }
.sh-chan-row{ display:flex; align-items:baseline; justify-content:space-between; gap:12px; padding:3px 0; font-size:12px; }
.sh-chan-k{ color:var(--text-faint); white-space:pre; }
.sh-chan-v{ color:var(--text); text-align:right; font-variant-numeric:tabular-nums; }
.sh-chan-v-good{ color:var(--s-live); }
.sh-chan-v-bad{ color:var(--s-blocked); }
.sh-chan-link{ display:inline-block; margin-top:10px; font-size:11.5px; color:var(--s-active); text-decoration:none; }

/* ============================================================ COMMAND PALETTE (⌘K) */
.cmdk{ position:fixed; inset:0; z-index:90; display:none; }
.cmdk.open{ display:block; }
.cmdk-back{ position:absolute; inset:0; background:rgba(0,0,0,.55); backdrop-filter:blur(3px); }
.cmdk-panel{ position:absolute; left:50%; top:84px; transform:translateX(-50%); width:min(560px,calc(100vw - 28px));
  background:var(--c-850); border:1px solid var(--border-strong); border-radius:var(--r-lg); box-shadow:var(--shadow-float); overflow:hidden;
  animation:cmdkin .2s var(--ease); }
@keyframes cmdkin{ from{ opacity:0; transform:translate(-50%,-8px); } to{ opacity:1; transform:translate(-50%,0); } }
.cmdk-inputwrap{ display:flex; align-items:center; gap:10px; padding:13px 16px; border-bottom:1px solid var(--border-soft); }
.cmdk-inputwrap svg{ color:var(--text-faint); flex:0 0 auto; }
.cmdk-input{ flex:1; background:transparent; border:0; outline:0; color:var(--text-strong); font-family:inherit; font-size:15px; }
.cmdk-input::placeholder{ color:var(--text-ghost); }
.cmdk-list{ max-height:min(56vh,420px); overflow-y:auto; padding:6px; }
.cmdk-item{ display:flex; align-items:center; gap:11px; padding:10px 11px; border-radius:var(--r-md); cursor:pointer; }
.cmdk-item.sel,.cmdk-item:hover{ background:var(--bg-raised); }
.cmdk-glyph{ width:26px;height:26px;border-radius:7px; flex:0 0 auto; display:grid; place-items:center;
  background:color-mix(in srgb,var(--acc,#888) 14%,var(--c-800)); border:1px solid color-mix(in srgb,var(--acc,#888) 26%,transparent); color:var(--acc,#aaa); }
.cmdk-label{ flex:1; min-width:0; font-size:13.5px; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cmdk-sub{ font-size:11px; color:var(--text-ghost); white-space:nowrap; }
.cmdk-dot{ width:7px;height:7px;border-radius:50%; flex:0 0 auto; }
.cmdk-empty{ padding:22px; text-align:center; color:var(--text-faint); font-size:12.5px; }

/* ============================================================ TOAST */
.b-toast{ position:fixed; left:50%; bottom:calc(22px + env(safe-area-inset-bottom)); transform:translate(-50%,16px);
  z-index:95; padding:9px 15px; border-radius:var(--r-pill); background:var(--c-800); border:1px solid var(--border-strong);
  color:var(--text); font-size:12.5px; box-shadow:var(--shadow-float); opacity:0; pointer-events:none; transition:opacity .2s,transform .2s; }
.b-toast.show{ opacity:1; transform:translate(-50%,0); }

/* ============================================================ RESPONSIVE */
@media (max-width:560px){
  .search-pill{ display:none; } .icon-btn{ display:grid; } .brand-sub{ display:none; }
  .hb-row{ grid-template-columns:90px 1fr auto; gap:var(--sp-2); }
  .hb-name span{ font-size:11.5px; }
  .room-btn .lbl-txt{ display:inline; }
}
@media (min-width:900px){
  .wrap{ padding-left:var(--sp-6); padding-right:var(--sp-6); }
  .bento{ grid-template-columns:repeat(3,1fr); }
  .card.span2{ grid-column:span 2; }
  .feed-bento{ display:grid; }
}
@media (prefers-reduced-motion:reduce){
  *{ animation:none !important; transition:none !important; }
}
