/* Until the app scripts have applied the theme (index.html <head>): no transitions, so nothing animates from the default colours. */
.td-boot *,.td-boot *::before,.td-boot *::after{transition:none!important;}
/* ── CSS vars (overridden per theme) ── */
:root{
  --bg:#0b0f14;--grid:#101820;--panel:#121a23;--panel-2:#0e151d;
  --line:#1f2c39;--line-soft:#17222d;--text:#c9d4de;--muted:#7a8b9b;
  --accent:#4fd6be;--accent-dim:#2b7d70;--accent-text:#4fd6be;   /* --accent-text: --accent lifted to 4.5:1 where it colours text (applyUITheme) */
  --head-a:#16212c;--head-b:#111b24;
  --chip-bg:#16212c;--chip-active:#1a2a33;--btn-bg:#16212c;
  --win-body:#05090d;--ptab-hover:#131c25;
  --live:#46d17f;--demo:#e0a94e;--dead:#e0655f;
  --shadow:0 18px 40px -12px rgba(0,0,0,.7),0 0 0 1px var(--line);
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box;}
html,body{height:100%;margin:0;}
body{background:var(--bg);color:var(--text);font-family:var(--mono);overflow:hidden;user-select:none;}

/* ── top bar ── */
.bar{height:46px;display:flex;align-items:center;gap:8px;padding:0 14px;
  background:linear-gradient(180deg,var(--panel),var(--panel-2));
  border-bottom:1px solid var(--line);position:relative;z-index:5000;}
.brand{display:flex;align-items:baseline;gap:8px;font-size:13px;letter-spacing:.22em;
  text-transform:uppercase;font-weight:600;}
.brand .dot{color:var(--accent-text);}
.brand small{letter-spacing:.12em;color:var(--muted);font-size:10px;}
.bar .spacer{flex:1;}
.status{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--muted);letter-spacing:.06em;
  flex:0 0 auto;white-space:nowrap;}
.status #conn-text{white-space:nowrap;}
.led{width:8px;height:8px;border-radius:50%;background:var(--muted);display:inline-block;flex:0 0 auto;}
.led.live{background:var(--live);box-shadow:0 0 8px var(--live);}
.led.dead{background:var(--dead);box-shadow:0 0 8px var(--dead);}
.status.live .led{background:var(--live);box-shadow:0 0 8px var(--live);}
.status.demo .led{background:var(--demo);box-shadow:0 0 8px var(--demo);}
.bar-actions{display:flex;align-items:center;gap:8px;}
/* Layout split button: main part tiles, the caret opens presets / restore / fullscreen */
.split{display:inline-flex;}
.split>.btn:first-child{border-top-right-radius:0;border-bottom-right-radius:0;}
.split>.split-caret{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0;padding:6px 5px;}
.btn.menu-btn{display:none;font-size:15px;line-height:1;padding:6px 10px;}
@media (max-width:1260px){ /* full inline toolbar needs ~1215px; collapse before it overflows */
  .btn.menu-btn{display:inline-flex;align-items:center;}
  .bar-actions{position:absolute;top:calc(100% + 6px);right:10px;z-index:6000;
    flex-direction:column;align-items:stretch;gap:4px;min-width:190px;padding:6px;
    background:var(--panel);border:1px solid var(--line);border-radius:10px;
    box-shadow:0 12px 30px rgba(0,0,0,.5);display:none;}
  .bar-actions.open{display:flex;}
  .bar-actions .btn{width:100%;justify-content:flex-start;text-align:left;}
  .bar-actions .btn.ico::after{content:attr(data-label);margin-left:6px;}
  .bar-actions .split>.btn:first-child{flex:1;}
  .bar-actions .split>.split-caret{width:auto;}
}
.btn{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--text);
  background:var(--btn-bg);border:1px solid var(--line);border-radius:6px;padding:6px 11px;
  cursor:pointer;display:inline-flex;align-items:center;gap:6px;
  transition:border-color .15s,background .15s,transform .05s;white-space:nowrap;}
.btn:hover{border-color:var(--accent-dim);filter:brightness(1.15);}
.btn:active{transform:translateY(1px);}
/* Inline Lucide icons (MIT) — monochrome via currentColor, no library/CDN. */
.bar .btn svg{width:15px;height:15px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.cm-btn{border-radius:8px;padding:9px 16px;min-width:92px;text-align:center;cursor:pointer;font:inherit;transition:filter .12s,background .12s,border-color .12s,color .12s;}
.cm-btn:active{transform:translateY(1px);}
.cm-cancel{background:transparent;color:var(--muted);border:1px solid var(--line);}
.cm-cancel:hover{border-color:var(--muted);color:var(--text);background:rgba(255,255,255,.05);}
.cm-ok{border:1px solid var(--accent-dim);box-shadow:0 1px 2px rgba(0,0,0,.25);font-weight:600;color:var(--on-accent,#08120f);}  /* darker-accent edge + depth — matches the danger button's polish, keeps the theme accent */
.cm-ok:hover{filter:brightness(1.1);}
.cm-ok.danger{background:#c94b46;border:1px solid #9e3a36;box-shadow:0 1px 2px rgba(0,0,0,.25);}  /* deeper restrained red + darker-red edge, not the candy --dead LED tint */
.cm-ok.danger:hover{filter:brightness(.93);}  /* darken red on hover — brightening pushes it toward pink */
/* Keyboard focus is always visible. :where() keeps this at zero specificity, so a component's own focus style wins. */
:where(button,a[href],[role="button"],[role="tab"],summary,select,[tabindex]:not([tabindex="-1"])):focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.cm-btn:focus{outline:none;}
.cm-btn:focus-visible{outline:none;box-shadow:0 0 0 2px var(--panel),0 0 0 4px var(--accent);}
.ctxmenu{position:fixed;z-index:9990;min-width:158px;max-height:min(60vh,420px);overflow-y:auto;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:5px;box-shadow:0 12px 34px rgba(0,0,0,.5);font:13px/1.4 system-ui,sans-serif;color:var(--text);user-select:none;scrollbar-width:thin;scrollbar-color:var(--line) transparent;}
.ctxmenu::-webkit-scrollbar{width:10px;}
.ctxmenu::-webkit-scrollbar-track{background:transparent;}
.ctxmenu::-webkit-scrollbar-thumb{background:var(--line);border-radius:6px;border:2px solid transparent;background-clip:padding-box;min-height:24px;}
.ctxmenu::-webkit-scrollbar-thumb:hover{background:var(--muted);}
.ctx-item{display:flex;justify-content:space-between;gap:18px;padding:7px 11px;border-radius:5px;cursor:pointer;}
.ctx-item .ctx-key{color:var(--muted);font-size:11px;}
.ctx-item:hover{background:var(--accent);color:var(--on-accent,#08120f);}
.ctx-item:hover .ctx-key{color:var(--on-accent,#08120f);}
.ctx-item.disabled{opacity:.36;cursor:default;}
.ctx-item.disabled:hover{background:transparent;color:var(--text);}
.ctx-item.disabled:hover .ctx-key{color:var(--muted);}
.ctx-sep{height:1px;background:var(--line);margin:4px 6px;}
.ctx-item.sticky{position:sticky;bottom:-5px;background:var(--panel);border-top:1px solid var(--line);margin-top:2px;font-weight:600;}
.ctx-item.sticky:hover{background:var(--accent);}   /* keep accent bg on hover so the dark hover text stays readable */
.ctx-lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ctx-ico{display:inline-flex;vertical-align:-3px;margin-right:9px;}
.ctx-ico svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.6;}
.ctx-actions{display:inline-flex;gap:2px;margin-left:8px;flex:0 0 auto;}
.ctx-act{border:0;background:transparent;color:var(--muted);cursor:pointer;width:22px;height:22px;border-radius:4px;display:grid;place-items:center;opacity:0;transition:opacity .12s,background .12s,color .12s;}
.ctx-act svg{width:13px;height:13px;display:block;}
.ctx-item:hover .ctx-act{opacity:.75;color:var(--on-accent,#08120f);}       /* row hover paints accent → dark icons for contrast */
.ctx-act:hover{opacity:1;background:rgba(0,0,0,.16);}
.findbar{position:fixed;top:56px;right:18px;z-index:9992;display:none;align-items:center;gap:6px;
  background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:5px 6px 5px 10px;
  box-shadow:0 12px 34px rgba(0,0,0,.5);}
.findbar.open{display:flex;}
.find-inp{width:180px;background:var(--bg);border:1px solid var(--line);border-radius:5px;color:var(--text);
  font:12.5px system-ui,sans-serif;padding:5px 8px;outline:none;}
.find-inp:focus{border-color:var(--accent-dim,var(--accent));}
.find-count{min-width:40px;text-align:center;color:var(--muted);font:11px ui-monospace,monospace;}
.find-btn{width:24px;height:24px;border:0;background:transparent;color:var(--muted);border-radius:5px;
  cursor:pointer;display:grid;place-items:center;font-size:12px;padding:0;}
.find-btn:hover{background:var(--btn-bg);color:var(--text);}
/* Inline SVG icons in small controls: inherit button font-size, monochrome. */
.find-btn svg,.in-clear svg,.pi-del svg,.sc-x svg,.t-close svg,.ss-close svg,.tn-caret svg,.tn-act svg,.tpop-clear svg,.pdel svg,.wt-x svg,.t-close svg,.paddbtn svg{width:1em;height:1em;display:inline-block;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;}
.tn-caret svg{width:1.3em;height:1.3em;}
.btn:disabled{opacity:.4;cursor:default;pointer-events:none;}
#bcast.active{background:var(--dead);border-color:var(--dead);color:#fff;animation:bcastpulse 1.4s ease-in-out infinite;}
@keyframes bcastpulse{0%,100%{box-shadow:0 0 0 0 rgba(224,101,95,.5);}50%{box-shadow:0 0 0 4px rgba(224,101,95,0);}}
.btn.primary{border-color:var(--accent-dim);color:var(--accent-text);}
.btn .plus{color:var(--accent-text);font-weight:700;font-size:15px;line-height:15px;}
.btn .plus,.bar .btn svg{pointer-events:none;}   /* keep the button a single hover target so its title tooltip doesn't reset on child boundaries */
.hint-kbd{color:var(--accent-text);font-weight:600;}
.hint-kbd:empty{display:none;}
html.is-mac .hint-kbd{letter-spacing:.22em;}   /* inner gap only for mac glyph labels; Windows shows "Ctrl+Alt+T" unspaced */
.kbdhint{font-size:12px;color:var(--text);border:1px solid var(--line);border-radius:6px;
  padding:6px 9px;cursor:pointer;background:var(--btn-bg);white-space:nowrap;}
.kbdhint:hover{border-color:var(--accent-dim);color:var(--text);}

/* ── popovers ── */
.popover{position:fixed;background:var(--panel);border:1px solid var(--line);
  border-radius:10px;padding:14px;z-index:9000;box-shadow:var(--shadow);display:none;}
.popover.open{display:block;}
.popover label{display:block;font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted);margin-bottom:9px;}
.popover .row{display:flex;gap:8px;}
.popover input{flex:1;font-family:var(--mono);font-size:12px;color:var(--text);
  background:var(--win-body);border:1px solid var(--line);border-radius:6px;padding:8px 10px;outline:none;}
.popover input:focus{border-color:var(--accent-dim);}
.popover select{width:100%;font-family:var(--mono);font-size:12px;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:7px 9px;outline:none;}
.popover select:focus{border-color:var(--accent-dim);}
.in-wrap{position:relative;flex:1;display:flex;}
#cwd-input{padding-right:28px;}
.in-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:18px;height:18px;
  border:0;background:transparent;color:var(--muted);border-radius:4px;cursor:pointer;
  display:none;place-items:center;font-size:10px;padding:0;line-height:1;}
.in-clear:hover{background:var(--btn-bg);color:var(--text);}
.in-wrap.has-val .in-clear{display:grid;}
.in-wrap.ok #cwd-input{border-color:var(--accent-dim);}
.in-wrap.bad #cwd-input{border-color:#e5675f;}
.cwd-ac{position:absolute;top:calc(100% + 3px);left:0;right:0;z-index:9100;max-height:180px;overflow-y:auto;
  background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow);
  display:none;scrollbar-width:thin;scrollbar-color:var(--line) transparent;}
.cwd-ac.open{display:block;}
.cwd-ac .ac-item{display:flex;align-items:center;gap:7px;padding:6px 9px;font-family:var(--mono);
  font-size:11.5px;color:var(--text);cursor:pointer;white-space:nowrap;overflow:hidden;}
.cwd-ac .ac-item .ac-ic{flex:0 0 auto;font-size:12px;}
.cwd-ac .ac-item .ac-nm{overflow:hidden;text-overflow:ellipsis;}
.cwd-ac .ac-item:hover,.cwd-ac .ac-item.sel{background:var(--btn-bg);}
.popover .hintline{margin:8px 0 0;font-size:10px;color:var(--muted);}
.popover .plist{display:flex;flex-direction:column;gap:4px;max-height:200px;overflow:auto;}
.popover .pitem{display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:8px 10px;border-radius:6px;border:1px solid transparent;cursor:pointer;font-size:12px;}
.popover .pitem:hover,.popover .pitem.hi{background:var(--btn-bg);border-color:var(--line);}
.popover .pitem.current{border-color:var(--accent-dim);color:var(--accent-text);}
.popover .pcount{color:var(--muted);font-size:10px;}

/* ── agent overview popover ── */
#agent-btn{position:relative;}
.agent-badge{display:none;position:absolute;top:4px;right:4px;width:7px;height:7px;border-radius:50%;pointer-events:none;}
.agent-badge.working{display:block;background:var(--accent);opacity:.7;}
.agent-badge.waiting{display:block;background:#e6a23c;box-shadow:0 0 6px #e6a23c;animation:wtwait 1.4s ease-in-out infinite;}
.agent-badge.approval{display:block;background:#e5484d;box-shadow:0 0 7px #e5484d;animation:wtappr 0.9s ease-in-out infinite;}
.agent-pop-inner{width:340px;max-width:calc(100vw - 24px);padding:12px;}
.agent-pop-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.agent-pop-head label{margin-bottom:0;}
/* Queue | Grid toggle shared by the agent queue popover and the live overview (one Sessions home) */
.seg{display:inline-flex;border:1px solid var(--line);border-radius:6px;overflow:hidden;font-size:11px;letter-spacing:.04em;text-transform:none;font-weight:400;}
.seg button{font:inherit;color:var(--muted);background:transparent;border:0;padding:4px 10px;cursor:pointer;}
.seg button+button{border-left:1px solid var(--line);}
.seg button{transition:background-color .12s,color .12s;}
.seg button:hover:not(.on){color:var(--text);background:color-mix(in srgb,var(--text) 10%,transparent);}
.seg button.on{background:var(--accent);color:var(--on-accent,#08120f);font-weight:600;cursor:default;}
.agent-pop-count{font-size:10px;color:var(--muted);letter-spacing:.06em;}
.agent-list{display:flex;flex-direction:column;gap:3px;max-height:280px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--line) transparent;}
.agent-list::-webkit-scrollbar{width:8px;}
.agent-list::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px;}
.agent-row{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:6px;border:1px solid transparent;cursor:pointer;font-size:12px;transition:background .12s,border-color .12s;}
.agent-row:hover{background:var(--btn-bg);border-color:var(--line);}
.agent-row-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;}
.agent-row.approval .agent-row-dot{background:#e5484d;box-shadow:0 0 7px #e5484d;animation:wtappr 0.9s ease-in-out infinite;}
.agent-row.waiting .agent-row-dot{background:#e6a23c;box-shadow:0 0 6px #e6a23c;animation:wtwait 1.4s ease-in-out infinite;}
.agent-row.working .agent-row-dot{background:var(--muted);opacity:.7;}
.agent-row-info{display:flex;flex-direction:column;min-width:0;flex:1;}
.agent-row-path{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;}
.agent-row-evt{text-transform:none;letter-spacing:0;}
.agent-row-ask{font-size:11px;font-family:ui-monospace,Menlo,Consolas,monospace;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.agent-row-btns{display:flex;gap:6px;margin-top:5px;}
.agent-btn{font:inherit;font-size:11px;padding:3px 10px;border-radius:5px;border:1px solid var(--line);background:var(--btn-bg);color:inherit;cursor:pointer;}
.agent-btn.allow{border-color:#2e9d5b;color:#43c077;}
.agent-btn.deny{border-color:#e5484d;color:#ff9b93;}
.agent-btn:hover{filter:brightness(1.25);}
.agent-risk{font-size:10.5px;color:#d9822b;margin-top:3px;}
.agent-rule-x{font:inherit;font-size:11px;background:none;border:0;color:var(--muted);cursor:pointer;padding:0 4px;}
.agent-rule-x:hover{color:#ff9b93;}
.agent-audit{border-top:1px solid var(--line);margin-top:6px;padding:6px 10px 2px;font-size:10.5px;color:var(--muted);}
.agent-audit-row{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:1px 0;}
.agent-audit-row b{font-weight:600;}
.agent-row-warn{font-size:10.5px;color:#d9822b;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.agent-row-state{font-size:10px;text-transform:uppercase;letter-spacing:.08em;margin-top:1px;}
.agent-row.approval .agent-row-state{color:#ff9b93;}
.agent-row.waiting .agent-row-state{color:#e6a23c;}
.agent-row.working .agent-row-state{color:var(--muted);}
.agent-empty{padding:18px 10px;text-align:center;font-size:12px;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:6px;}
.agent-empty-sub{font-size:11px;}
.agent-start{display:inline-flex;align-items:center;gap:6px;margin-top:6px;padding:5px 12px;font-size:12px;}
.agent-start svg{width:13px;height:13px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;}
.agent-start-kbd{font:inherit;font-size:10.5px;color:var(--muted);margin-left:2px;}

/* ── mini-game overlay ── */
.game-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:9991;display:none;align-items:center;justify-content:center;}
.game-overlay.open{display:flex;}
.game-card{background:var(--panel,#151515);border:1px solid var(--line,#2a2a2a);border-radius:12px;padding:14px;box-shadow:0 20px 60px rgba(0,0,0,.5);}
.game-head{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.game-title{font-weight:600;font-size:13px;}
.game-watch{flex:1;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.game-scope{background:var(--bg,#0c0c0c);color:var(--text,#e6e6e6);border:1px solid var(--line,#2a2a2a);border-radius:6px;font-size:11px;padding:2px 4px;cursor:pointer;outline:none;}
.game-scope:focus,.game-scope:focus-visible{outline:none;border-color:var(--live,#4fd6be);}
.game-pick{font-size:13px;font-weight:600;padding:3px 6px;}
.game-elapsed{font-size:11px;color:var(--live,#4fd6be);white-space:nowrap;font-variant-numeric:tabular-nums;}
.game-close{background:none;border:none;color:var(--muted);cursor:pointer;font-size:15px;padding:2px 6px;border-radius:6px;}
.game-close:hover{color:var(--text);background:var(--line,#2a2a2a);}
#game-canvas{display:block;background:var(--bg,#0c0c0c);border:1px solid var(--line,#2a2a2a);border-radius:8px;image-rendering:pixelated;max-width:90vw;outline:none;}
.game-stage{position:relative;line-height:0;}
.game-banner{display:none;position:absolute;top:8px;left:50%;transform:translateX(-50%);
  padding:6px 12px;border-radius:8px;font-size:12px;font-weight:600;line-height:1.3;white-space:nowrap;
  background:rgba(10,16,14,.7);border:1px solid rgba(45,180,120,.6);color:var(--live,#4fd6be);
  text-shadow:-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000;}
.game-banner.show{display:block;}
.game-hint{position:absolute;bottom:8px;left:0;right:0;font-size:11px;color:var(--text);text-align:center;line-height:1.3;
  text-shadow:0 0 4px var(--bg),0 0 4px var(--bg),0 0 2px var(--bg);pointer-events:none;}

/* ── command palette ── */
.pal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:9990;display:none;}
.pal-overlay.open{display:block;}
.palette{position:fixed;top:12%;left:50%;transform:translateX(-50%);width:600px;max-width:94vw;
  background:var(--panel);border:1px solid var(--line);border-radius:13px;
  box-shadow:0 32px 80px rgba(0,0,0,.8);z-index:9991;display:none;overflow:hidden;}
.palette.open{display:flex;flex-direction:column;}
.pal-header{display:flex;align-items:center;gap:10px;padding:14px 16px;
  border-bottom:1px solid var(--line-soft);}
.pal-header .ph-icon{color:var(--muted);font-size:15px;flex:0 0 auto;}
.pal-header input{flex:1;font-family:var(--mono);font-size:14px;color:var(--text);
  background:transparent;border:0;outline:none;}
.pal-header input::placeholder{color:var(--muted);}
.pal-header .ph-clear{display:grid;place-items:center;width:20px;height:20px;padding:0;flex:0 0 auto;
  color:var(--muted);background:transparent;border:0;border-radius:50%;cursor:pointer;}
.pal-header .ph-clear:hover{color:var(--text);background:var(--panel-2);}
.pal-header .ph-clear[hidden]{display:none;}
.pal-header .ph-clear svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;}
.pal-header .ph-esc{font-size:10px;color:var(--muted);border:1px solid var(--line);
  border-radius:4px;padding:2px 7px;flex:0 0 auto;}
.pal-cats{display:flex;gap:6px;padding:8px 16px;border-bottom:1px solid var(--line-soft);overflow-x:auto;scrollbar-width:none;}
.pal-cat{font:inherit;font-size:11px;color:var(--muted);background:transparent;border:1px solid var(--line);
  border-radius:999px;padding:3px 11px;cursor:pointer;white-space:nowrap;}
.pal-cat:hover{color:var(--text);border-color:var(--accent-dim);}
.pal-cat.on{color:var(--accent-text);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent);}
.pal-list{max-height:400px;overflow-y:auto;padding:6px;scrollbar-width:thin;scrollbar-color:var(--line) transparent;}
.pal-group{font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);
  padding:8px 10px 4px;}
.pal-item{display:flex;align-items:center;gap:13px;padding:11px 14px;border-radius:8px;cursor:pointer;}
.pal-item:hover,.pal-item.hi{background:color-mix(in srgb,var(--accent) 15%,transparent);}
.pal-item .pi-icon{width:34px;height:34px;border-radius:7px;border:1px solid var(--line);
  background:var(--panel-2);display:grid;place-items:center;font-size:14px;flex:0 0 auto;color:var(--muted);}
.pal-item .pi-icon svg{width:18px;height:18px;display:block;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.pal-item:hover .pi-icon{color:var(--text);}
.pal-item .pi-body{flex:1;min-width:0;}
.pal-item .pi-label{font-size:14px;color:var(--text);}
.pal-item .pi-label mark{background:transparent;color:var(--accent-text);font-weight:700;}
.pal-item .pi-sub{font-size:11px;color:var(--muted);margin-top:2px;}
.pal-item:hover .pi-sub,.pal-item.hi .pi-sub{color:var(--text);}   /* muted is AA on the panel, not on the accent-tinted row */
.pal-item .pi-kbd{font-family:var(--mono);font-size:12px;color:var(--text);border:1px solid var(--line);
  background:var(--panel-2);border-radius:5px;padding:3px 8px;flex:0 0 auto;white-space:nowrap;}
.pal-item .pi-keys{display:flex;gap:4px;flex:0 0 auto;}
.pal-more .pi-icon svg{width:18px;height:18px;display:block;}
.pal-item .pi-keys kbd{font-family:var(--mono);font-size:12px;color:var(--text);border:1px solid var(--line);
  background:var(--panel-2);border-radius:5px;padding:3px 0;min-width:24px;text-align:center;line-height:1.2;}
.pal-item .pi-del{flex:0 0 auto;width:22px;height:22px;border:0;background:transparent;color:var(--muted);
  border-radius:5px;cursor:pointer;font-size:11px;line-height:1;opacity:0;transition:opacity .12s;}
.pal-item:hover .pi-del{opacity:1;}
.pal-item .pi-del:hover{background:#3a1a1c;color:#ff9b93;}
.pal-item .pi-del.pi-edit:hover{background:var(--btn-bg);color:var(--accent-text);}   /* edit = neutral, not the red delete tint */
.pal-empty{padding:32px;text-align:center;color:var(--muted);font-size:12px;}
.pal-foot{padding:10px 14px 6px;text-align:center;color:var(--muted);font-size:11px;}

/* ── live grid overview (#25) ── */
/* Live overview: the content sits on a theme-coloured sheet over the scrim, so every theme keeps its own text contrast */
.ov-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:9991;display:none;padding:3vh 3vw;}
.ov-overlay.open{display:flex;}
.ov-sheet{flex:1;min-width:0;min-height:0;max-width:1600px;margin:0 auto;display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden;}
.ov-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 10px 10px 16px;background:var(--panel);border-bottom:1px solid var(--line);color:var(--text);font-size:13px;}
.ov-head-r{display:flex;align-items:center;gap:8px;}
.ov-show{font-size:11px;color:var(--muted);}
.ov-x{cursor:pointer;color:var(--muted);display:grid;place-items:center;width:30px;height:30px;margin-left:4px;background:none;border:0;border-radius:7px;padding:0;transition:background-color .12s,color .12s;}
.ov-x:hover{color:var(--text);background:color-mix(in srgb,var(--text) 10%,transparent);}
.ov-x svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;}
.ov-body{overflow-y:auto;flex:1;padding:2px 16px 18px;}
.ov-foot{padding:7px 16px;background:var(--panel);border-top:1px solid var(--line);font-size:11px;color:var(--muted);}
.ov-proj{color:var(--muted);font-size:11px;letter-spacing:.08em;text-transform:uppercase;margin:16px 2px 8px;}
.ov-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;}
.ov-tile{--st:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden;cursor:pointer;display:flex;flex-direction:column;transition:border-color .15s,box-shadow .15s,transform .15s;}
.ov-tile.approval{--st:#e5484d;}.ov-tile.waiting{--st:#e6a23c;}.ov-tile.working{--st:var(--accent);}.ov-tile.run{--st:#3fb950;}
.ov-tile.approval,.ov-tile.waiting,.ov-tile.working,.ov-tile.run{border-color:color-mix(in srgb,var(--st) 55%,var(--line));}
.ov-tile:hover,.ov-tile:focus-visible{border-color:var(--accent);box-shadow:0 10px 24px -12px rgba(0,0,0,.55);}
.ov-tile:hover{transform:translateY(-1px);}
.ov-tile-h{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line);font-size:12px;}
.ov-tile-h .ov-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);}
.ov-state{font-size:10.5px;color:var(--text);padding:1px 8px;border-radius:999px;border:1px solid color-mix(in srgb,var(--st) 45%,transparent);background:color-mix(in srgb,var(--st) 14%,transparent);white-space:nowrap;}
.ov-tile.idle .ov-state,.ov-tile.exited .ov-state{color:var(--muted);}
.ov-go{font-size:10.5px;color:var(--accent-text);white-space:nowrap;opacity:0;transition:opacity .12s;}
.ov-tile:hover .ov-go,.ov-tile:focus-visible .ov-go{opacity:1;}
.ov-dot{width:7px;height:7px;border-radius:50%;background:var(--st);flex:0 0 auto;}
.ov-tile.idle .ov-dot,.ov-tile.exited .ov-dot{opacity:.6;}
.ov-out{margin:0;padding:8px 10px;height:170px;overflow:hidden;font:11px/1.35 ui-monospace,Menlo,Consolas,monospace;color:var(--text);white-space:pre;opacity:.9;}
.ov-empty{color:var(--muted);text-align:center;padding:48px;font-size:13px;}
@media (prefers-reduced-motion:reduce){.ov-tile,.ov-x,.ov-go{transition:none;}.ov-tile:hover{transform:none;}}
@media (max-width:700px){.ov-overlay{padding:0;}.ov-sheet{border-radius:0;border:0;}.ov-foot{display:none;}}

/* ── keyboard shortcuts overlay ── */
.sc-overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);z-index:9992;
  display:none;align-items:center;justify-content:center;}
.sc-overlay.open{display:flex;}
.sc-box{background:var(--panel);border:1px solid var(--line);border-radius:14px;
  width:520px;max-width:94vw;max-height:82vh;overflow-y:auto;box-shadow:var(--shadow);}
.sc-box h2{margin:0;padding:16px 20px;font-size:13px;letter-spacing:.1em;text-transform:uppercase;
  border-bottom:1px solid var(--line);color:var(--text);font-weight:600;display:flex;
  align-items:center;justify-content:space-between;}
/* title + close stay in view while the box scrolls */
.sc-box > h2{position:sticky;top:0;z-index:1;background:var(--panel);}
.sc-box h2 .sc-x{font-size:16px;cursor:pointer;color:var(--muted);background:none;border:0;padding:0;font-family:inherit;line-height:1;}
.sc-box h2 .sc-x:hover{color:var(--text);}
.sc-about{padding:14px 20px;font-size:12px;line-height:1.55;color:var(--muted);border-bottom:1px solid var(--line);}
.sc-about b{color:var(--text);}
.sc-credit{color:inherit;text-decoration:none;border-bottom:1px solid var(--line);transition:color .1s;}
.sc-credit:hover{color:var(--accent-text);border-bottom-color:var(--accent-dim);}
html.is-mac .sc-about b.kbd-inline{letter-spacing:.22em;}
.sc-section{padding:10px 20px 6px;}
.sc-section-label{font-size:9px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--muted);margin-bottom:7px;}
.sc-row{display:flex;align-items:center;justify-content:space-between;
  padding:6px 0;border-bottom:1px solid var(--line-soft);font-size:12px;}
.sc-row:last-child{border-bottom:0;}
.sc-keys{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end;}
.sc-keys kbd{font-family:var(--mono);font-size:11px;color:var(--text);
  border:1px solid var(--line);border-radius:4px;padding:2px 7px;background:var(--panel-2);}

/* ── file viewer overlay ── */
.file-box{width:820px;display:flex;flex-direction:column;}
.file-box h2 .fv-name{font-family:var(--mono);text-transform:none;letter-spacing:0;font-size:13px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:88%;}
.fv-path{padding:8px 20px;font-size:10.5px;color:var(--muted);font-family:var(--mono);
  border-bottom:1px solid var(--line);word-break:break-all;}
.fv-body{margin:0;padding:16px 20px;font-family:var(--mono);font-size:12px;line-height:1.5;
  color:var(--text);white-space:pre;overflow:auto;max-height:70vh;tab-size:4;}
.fv-hl{display:block;background:color-mix(in srgb,var(--accent) 22%,transparent);}
.fv-body.msg{white-space:pre-wrap;color:var(--muted);}
.fv-body.media{white-space:normal;display:flex;justify-content:center;align-items:flex-start;padding:12px;}
.fv-img{max-width:100%;max-height:66vh;object-fit:contain;border-radius:4px;background:repeating-conic-gradient(var(--btn-bg) 0 25%,transparent 0 50%) 0 0/16px 16px;}
.fv-pdf{width:100%;height:66vh;border:0;border-radius:4px;background:#fff;}
.fv-body.media video{max-width:100%;max-height:66vh;border-radius:4px;} .fv-body.media audio{width:100%;}
.fv-acts{display:flex;gap:8px;margin-top:12px;}
.fv-act{font:600 11px var(--mono);color:var(--text);background:var(--btn-bg);border:1px solid var(--line);border-radius:6px;padding:5px 10px;cursor:pointer;}
.fv-act:hover{border-color:var(--accent);background:var(--chip-active);}
.fv-body.csv{white-space:normal;padding:0;}
.fv-body.csv table{border-collapse:collapse;font-size:11.5px;min-width:100%;}
.fv-body.csv th,.fv-body.csv td{border:1px solid var(--line);padding:4px 9px;text-align:left;white-space:pre;max-width:360px;overflow:hidden;text-overflow:ellipsis;}
.fv-body.csv th{position:sticky;top:0;background:var(--panel);z-index:1;} .fv-body.csv tr:nth-child(even) td{background:color-mix(in srgb,var(--btn-bg) 40%,transparent);}
.fv-note{color:var(--muted);font:11px var(--mono);padding:8px 12px;}
/* Restore layout picker rows */
.lay-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid transparent;border-radius:8px;cursor:pointer;}
.lay-row:hover{background:var(--btn-bg);border-color:var(--line);}
.lay-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lay-meta{color:var(--muted);font-size:11px;white-space:nowrap;}
.lay-del{width:22px;height:22px;flex:0 0 auto;padding:0;border:0;border-radius:4px;background:transparent;color:var(--muted);cursor:pointer;display:grid;place-items:center;}
.lay-del:hover{background:#3a1a1c;color:#ff9b93;}
.lay-del svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;}
.fv-send{position:fixed;z-index:9997;display:none;font:inherit;font-size:12px;padding:5px 11px;border-radius:6px;border:1px solid var(--accent);background:var(--panel);color:var(--accent-text);cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.4);}
.fv-send:hover{filter:brightness(1.2);}
.fv-body .d-add{color:#46d17f;} .fv-body .d-del{color:#e0655f;}
.fv-body .d-hunk{color:var(--accent-text);} .fv-body .d-meta{color:var(--muted);}
.fv-body .d-file{color:var(--text);font-weight:600;}
#sc-whatsnew{padding:0 20px 14px;}
#sc-whatsnew summary{cursor:pointer;font-size:12px;color:var(--muted);}
#sc-whatsnew summary:hover{color:var(--text);}
#sc-whatsnew .md{max-height:240px;overflow-y:auto;font:12px/1.55 system-ui,-apple-system,sans-serif;color:var(--text);margin-top:8px;}
#sc-whatsnew .md h2{font-size:12.5px;margin:1em 0 .3em;border:0;}
#sc-whatsnew .md h1{display:none;}
.upd-res{margin-left:6px;}
/* rendered markdown (file viewer) */
.fv-tog{margin:0 12px 0 auto;font:600 10.5px var(--mono);letter-spacing:0;text-transform:none;color:var(--text);
  background:var(--panel-2);border:1px solid var(--muted);border-radius:5px;padding:2px 8px;cursor:pointer;}
.fv-tog:hover{border-color:var(--accent);background:var(--chip-active);}
.fv-body.md{white-space:normal;font-family:system-ui,-apple-system,sans-serif;font-size:13.5px;line-height:1.65;}
.md h1,.md h2,.md h3,.md h4{margin:1.2em 0 .5em;line-height:1.3;color:var(--text);}
.md h1{font-size:1.6em;border-bottom:1px solid var(--line);padding-bottom:.25em;} .md h2{font-size:1.3em;border-bottom:1px solid var(--line-soft);padding-bottom:.2em;}
.md h3{font-size:1.1em;} .md h4{font-size:1em;color:var(--muted);}
.md>:first-child{margin-top:0;} .md p,.md ul,.md ol,.md pre,.md blockquote,.md table{margin:0 0 .9em;}
.md ul,.md ol{padding-left:1.5em;} .md li{margin:.15em 0;}
.md a{color:var(--accent-text);} .md hr{border:0;border-top:1px solid var(--line);margin:1.2em 0;}
.md code{font-family:var(--mono);font-size:.9em;background:var(--panel-2);border:1px solid var(--line-soft);border-radius:4px;padding:1px 5px;}
.md pre{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:12px 14px;overflow:auto;}
.md pre code{background:none;border:0;padding:0;font-size:12px;line-height:1.5;}
.md blockquote{margin-left:0;padding:.1em 1em;border-left:3px solid var(--accent-dim);color:var(--muted);}
.md table{border-collapse:collapse;display:block;overflow:auto;} .md th,.md td{border:1px solid var(--line);padding:5px 10px;text-align:left;}
.md th{background:var(--panel-2);}

/* ── toast notifications ── */
.toasts{position:fixed;bottom:70px;right:14px;z-index:9980;
  display:flex;flex-direction:column-reverse;gap:7px;pointer-events:none;max-width:320px;}
.toast{display:flex;align-items:flex-start;gap:10px;padding:11px 14px;
  background:var(--panel);border:1px solid var(--line);border-radius:10px;
  font-size:12px;color:var(--text);box-shadow:var(--shadow);pointer-events:all;
  animation:tin .18s ease;width:100%;}
.toast.tout{animation:tout .18s ease forwards;}
@keyframes tin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes tout{from{opacity:1}to{opacity:0;transform:translateY(4px)}}
.toast .t-icon{font-size:16px;flex:0 0 auto;margin-top:1px;}
.toast .t-icon svg{width:1em;height:1em;display:block;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.toast .t-appr{color:#e5484d;display:contents;}   /* same red as the header approval dot */
.toast .t-body{flex:1;min-width:0;}
.toast .t-title{font-weight:600;font-size:12px;}
.toast .t-msg{color:var(--muted);font-size:11px;margin-top:2px;overflow-wrap:anywhere;
  overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;}
.toast .t-close{color:var(--muted);cursor:pointer;font-size:15px;flex:0 0 auto;
  padding:0 0 0 4px;line-height:1;}
.toast .t-close:hover{color:var(--text);}
.toast.clickable{cursor:pointer;}
.toast.clickable:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.toast.clickable:hover{border-color:var(--line);}
.toast.clickable:hover .t-title{text-decoration:underline;}
@keyframes winblink{0%,100%{box-shadow:var(--shadow);}25%,75%{box-shadow:0 0 0 2px var(--live),0 0 20px var(--live);}}
.win.blink{animation:winblink .4s ease-in-out 2;}

/* ── session search bar ── */
.sess-search{display:none;align-items:center;gap:8px;padding:0 14px;height:34px;
  background:var(--panel-2);border-bottom:1px solid var(--line-soft,#000);
  box-shadow:0 2px 6px rgba(0,0,0,.35);position:relative;z-index:4400;}
.sess-search.open{display:flex;}
.sess-search.filtering{background:color-mix(in srgb,var(--accent) 12%,var(--panel-2));border-bottom-color:var(--accent-dim);box-shadow:inset 3px 0 0 var(--accent);}
.sess-search.filtering .ss-icon,.sess-search.filtering .ss-count{color:var(--accent-text);}
.btn.active{border-color:var(--accent-dim);color:var(--accent-text);box-shadow:0 0 0 1px var(--accent-dim);}
.sess-search input{flex:1;font-family:var(--mono);font-size:12px;color:var(--text);
  background:transparent;border:0;outline:none;}
.sess-search input::placeholder{color:var(--muted);}
.sess-search .ss-icon{color:var(--muted);display:flex;align-items:center;}
.sess-search .ss-count{font-size:11px;color:var(--muted);white-space:nowrap;}
.sess-search .ph-esc{font-size:9px;letter-spacing:.5px;color:var(--muted);border:1px solid var(--line);
  border-radius:4px;padding:1px 5px;flex:0 0 auto;}
.sess-search .ss-close{display:flex;align-items:center;justify-content:center;
  width:24px;height:24px;border:0;border-radius:6px;background:transparent;color:var(--muted);
  cursor:pointer;padding:0;flex:0 0 auto;transition:background .12s,color .12s;}
.sess-search .ss-close svg{width:15px;height:15px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;}
.sess-search .ss-close:hover{color:var(--text);background:color-mix(in srgb,var(--text) 10%,transparent);}
.sess-search .ss-close:active{background:color-mix(in srgb,var(--text) 16%,transparent);}
.chip.ss-hidden{display:none!important;}
.win.ss-dim{opacity:.2;pointer-events:none;}

/* ── dir tree sidebar ── */
.sidebar{position:absolute;top:82px;bottom:0;left:0;width:var(--sbw,240px);z-index:3500;/* start below bar+project tabs so the header (breadcrumbs/close) isn't hidden */
  background:var(--panel-2);border-right:1px solid var(--line);
  display:flex;flex-direction:column;transform:translateX(calc(-1*var(--sbw,240px) - 4px));
  transition:transform .2s ease;}
.sidebar.open{transform:translateX(0);}
.sb-head{height:34px;flex:0 0 34px;display:flex;align-items:center;gap:8px;
  padding:0 10px 0 14px;border-bottom:1px solid var(--line);}
.sb-head .sb-title{flex:1;display:flex;align-items:center;gap:1px;overflow-x:auto;
  overflow-y:hidden;white-space:nowrap;font-size:11px;letter-spacing:.03em;
  color:var(--muted);scrollbar-width:none;}
.sb-head .sb-title::-webkit-scrollbar{display:none;}
.sb-head .sb-title.clipped{-webkit-mask-image:linear-gradient(to right,transparent,#000 18px);mask-image:linear-gradient(to right,transparent,#000 18px);}
.sb-head .crumb{cursor:pointer;padding:1px 3px;border-radius:4px;flex:0 0 auto;color:var(--muted);font:inherit;letter-spacing:inherit;border:0;background:transparent;}
.sb-head button.crumb{min-height:24px;}   /* parent folders: buttons (keyboard), 24 px targets */
.sb-head .crumb:only-child{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;}   /* one crumb: ellipsis, not a scroll box */
.sb-head .crumb:hover{color:var(--accent-text);background:var(--btn-bg);}
.sb-head .crumb:last-child{color:var(--text);cursor:default;}
.sb-head .crumb:last-child:hover{background:transparent;color:var(--text);}
.sb-head .crumb-sep{color:var(--muted);flex:0 0 auto;}
.sb-head .sb-close{border:0;background:transparent;color:var(--muted);
  cursor:pointer;line-height:1;display:grid;place-items:center;padding:3px;border-radius:5px;min-width:24px;min-height:24px;}
.sb-head .sb-close:hover{color:var(--text);background:var(--btn-bg);}
.sb-head .sb-close svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.sb-head .sb-tool{border:0;background:transparent;color:var(--muted);cursor:pointer;
  flex:0 0 auto;display:grid;place-items:center;padding:3px;border-radius:5px;font-size:13px;min-width:24px;min-height:24px;}
.sb-head .sb-tool:hover{color:var(--text);background:var(--btn-bg);}
.sb-head .sb-tool.on{color:var(--accent-text);}
.sb-head .sb-tool{position:relative;}
.sb-head .sb-tool.flag::after{content:"";position:absolute;top:2px;right:2px;width:5px;height:5px;border-radius:50%;background:var(--accent);}
.sb-head .sb-tool:disabled{opacity:.35;cursor:default;pointer-events:none;}
.sb-head .sb-tool svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.tree{flex:1;overflow-y:auto;padding:4px 0;scrollbar-width:thin;scrollbar-color:var(--line) transparent;}
.tn{display:flex;align-items:center;gap:6px;padding:4px 6px;
  font-size:11.5px;cursor:pointer;white-space:nowrap;overflow:hidden;border-radius:5px;color:var(--text);}
.tn:hover{background:var(--btn-bg);}
.tn.dir-node{color:var(--accent-text);}
.tn.here{background:var(--btn-bg);box-shadow:inset 2px 0 0 var(--accent);}
.tn.here.blink{animation:tnblink .35s ease-in-out 3;}
@keyframes tnblink{50%{background:color-mix(in srgb,var(--accent) 45%,transparent);}}
#sb-refresh-btn.spin svg{animation:sbspin .6s ease-in-out;}
@keyframes sbspin{to{transform:rotate(360deg);}}
@media (prefers-reduced-motion:reduce){.tn.here.blink{animation:none;}}
.tn .tn-caret{flex:0 0 auto;font-size:9px;color:var(--muted);
  transition:transform .12s;width:10px;text-align:center;}
.tn.open .tn-caret{transform:rotate(90deg);}
.tn .tn-icon{flex:0 0 auto;font-size:13px;}
.tn .tn-name{overflow:hidden;text-overflow:ellipsis;flex:1;}
.tc{display:none;}
.tc.open{display:block;}
.tn .tn-act{flex:0 0 auto;border:0;background:transparent;color:var(--muted);cursor:pointer;
  font-size:12px;line-height:1;padding:3px 4px;opacity:0;transition:opacity .12s;}
.tn:hover .tn-act{opacity:.75;}
.tn .tn-act svg{pointer-events:none;}
button[title]>svg,[role=button][title]>svg{pointer-events:none;}   /* general rule: an icon button is one hover target, so its title tooltip shows (it was lost on e.g. the + project button) */   /* button = one hover target, so its title tooltip isn't reset by the svg's child boundaries */
.tn .tn-act:hover{opacity:1;color:var(--accent-text);}
.tree-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:7px;padding:36px 18px;height:100%;text-align:center;color:var(--muted);}
.tree-empty .te-ic{opacity:.5;line-height:0;}
.tree-empty .te-ic svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;}
.tree-empty .te-msg{font-size:12px;color:var(--text);opacity:.85;}
.tree-empty .te-sub{font-size:10.5px;line-height:1.5;word-break:break-word;}
.desktop.sb-open{left:var(--sbw,240px);}
.sb-drag .sidebar,.sb-drag .desktop{transition:none;}
.sb-resize{position:absolute;top:0;bottom:0;right:-3px;width:6px;cursor:col-resize;z-index:1;}
.sb-resize:hover,.sb-drag .sb-resize{background:var(--accent);opacity:.5;}

/* ── theme picker ── */
.theme-pop-inner{width:340px;}
.tpop-search-wrap{position:relative;margin-bottom:10px;}
.tpop-search{width:100%;font-family:var(--mono);font-size:12px;color:var(--text);
  background:var(--win-body);border:1px solid var(--line);border-radius:6px;
  padding:7px 30px 7px 10px;outline:none;}
.tpop-search:focus{border-color:var(--accent-dim);}
.tpop-clear{position:absolute;top:50%;right:6px;transform:translateY(-50%);border:0;
  background:transparent;color:var(--muted);cursor:pointer;font-size:12px;padding:2px 4px;line-height:1;}
.tpop-clear:hover{color:var(--text);}
.theme-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;max-height:340px;overflow-y:auto;
  scrollbar-width:thin;scrollbar-color:var(--line) transparent;}
.tcard{display:flex;flex-direction:column;gap:5px;padding:8px;border-radius:8px;font:inherit;color:inherit;text-align:left;
  border:1px solid var(--line);background:var(--panel-2);cursor:pointer;transition:border-color .12s;}
.tcard:hover{border-color:var(--accent-dim);}
.tcard.current{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;}
.tcard .tname{font-size:10.5px;letter-spacing:.02em;color:var(--text);
  display:flex;align-items:center;justify-content:space-between;}
.tcard .tcheck{color:var(--accent-text);font-size:10px;visibility:hidden;}
.tcard.current .tcheck{visibility:visible;}
.tswatch{height:28px;border-radius:5px;display:flex;align-items:center;gap:4px;padding:0 8px;overflow:hidden;}
.tswatch .tdot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;}
.treset{margin-top:9px;text-align:center;font-size:11px;color:var(--muted);
  padding:7px;border-radius:7px;cursor:pointer;border:1px solid var(--line);
  background:var(--panel-2);font-family:var(--mono);width:100%;}
.treset:hover{border-color:var(--accent-dim);color:var(--text);}

/* ── projects bar ── */
.projects{height:36px;display:flex;align-items:center;gap:6px;padding:0 12px;
  background:var(--panel-2);border-bottom:1px solid var(--line);
  overflow:hidden;position:relative;z-index:4500;flex-shrink:0;}
.proj-scroll{position:relative;flex:0 1 auto;min-width:0;height:100%;display:flex;align-items:center;}
.proj-track{display:flex;align-items:center;gap:6px;flex:1;min-width:0;height:100%;
  overflow-x:auto;overflow-y:hidden;scrollbar-width:none;}
.proj-track::-webkit-scrollbar{display:none;}
.proj-edge{position:absolute;top:0;bottom:0;width:26px;display:flex;align-items:center;justify-content:center;
  font-size:15px;color:var(--muted);cursor:pointer;opacity:0;pointer-events:none;transition:opacity .12s;z-index:2;}
.proj-edge:hover{color:var(--text);}
.proj-edge.left{left:0;justify-content:flex-start;background:linear-gradient(90deg,var(--panel-2) 55%,transparent);}
.proj-edge.right{right:0;justify-content:flex-end;background:linear-gradient(270deg,var(--panel-2) 55%,transparent);}
.proj-scroll.can-left .proj-edge.left,.proj-scroll.can-right .proj-edge.right{opacity:1;pointer-events:auto;}
.ptab{flex:0 0 auto;display:flex;align-items:center;gap:7px;height:26px;
  padding:0 10px 0 12px;border-radius:6px 6px 0 0;
  background:transparent;border:1px solid transparent;border-bottom:none;
  color:var(--muted);font-size:11.5px;cursor:pointer;transition:background .15s,color .15s;}
.ptab:hover{color:var(--text);background:var(--ptab-hover);}
.ptab.active{background:var(--bg);color:var(--text);border-color:var(--line);}
.ptab .pname{max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;outline:none;cursor:text;}
.ptab .pname:focus{background:var(--win-body);box-shadow:inset 0 0 0 1px var(--accent-dim);border-radius:3px;padding:0 3px;}
.ptab .pn{font-size:9.5px;color:var(--muted);background:var(--btn-bg);border-radius:8px;padding:1px 6px;}
.ptab.active .pn{color:var(--accent-text);}
.ptab .pdel{width:24px;height:24px;padding:0;border:0;background:transparent;color:var(--muted);
  border-radius:4px;cursor:pointer;display:grid;place-items:center;font-size:11px;}
.ptab .pdel:hover{background:#3a1a1c;color:#ff9b93;}
.ptab .pdel:disabled{opacity:.3;cursor:not-allowed;pointer-events:auto;}
.ptab .pdel:disabled:hover{background:transparent;color:var(--muted);}
.ptab .pdot{width:6px;height:6px;border-radius:50%;flex:0 0 auto;display:none;}
.ptab.conflict .pdot{display:inline-block;background:#d9822b;box-shadow:0 0 6px #d9822b;}
.ptab.waiting .pdot{display:inline-block;background:#e6a23c;box-shadow:0 0 6px #e6a23c;}
.ptab.approval .pdot{display:inline-block;background:#e5484d;box-shadow:0 0 7px #e5484d;}
.paddbtn{flex:0 0 auto;width:26px;height:26px;border-radius:6px;
  border:1px dashed var(--line);background:transparent;color:var(--muted);
  cursor:pointer;display:grid;place-items:center;font-size:14px;}
.paddbtn:hover{border-color:var(--accent-dim);color:var(--accent-text);}

/* ── desktop ── */
.desktop{position:absolute;inset:82px 0 60px 0;overflow:hidden;transition:left .2s ease;
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),
    linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:34px 34px;background-position:-1px -1px;}
.hint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  flex-direction:column;gap:10px;color:var(--muted);text-align:center;pointer-events:none;}
.hint .k{font-size:40px;letter-spacing:.3em;color:var(--line);text-transform:uppercase;}
.hint .k span{display:inline-block;animation:hintbreathe 2.6s ease-in-out infinite;}
.hint .k span:nth-child(2){animation-delay:.32s;}
.hint .k span:nth-child(3){animation-delay:.64s;}
@keyframes hintbreathe{0%,100%{opacity:.28;}50%{opacity:.85;}}
@media (prefers-reduced-motion:reduce){.hint .k span{animation:none;opacity:.5;}}
.hint p{margin:0;font-size:12px;letter-spacing:.06em;}
.hint b{color:var(--accent-text);font-weight:600;}
.tour{position:fixed;inset:0;z-index:9995;}
.tour.nospot{background:rgba(0,0,0,.6);}
.tour-spot{position:absolute;border-radius:8px;border:1px solid var(--accent);box-shadow:0 0 0 9999px rgba(0,0,0,.6);pointer-events:none;}
.tour.nospot .tour-spot{display:none;}
@media (prefers-reduced-motion:no-preference){.tour-spot,.tour-card{transition:top .2s ease,left .2s ease,width .2s ease,height .2s ease;}}
.tour-card{position:absolute;width:min(320px,calc(100vw - 24px));box-sizing:border-box;padding:16px 18px;
  background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:10px;
  box-shadow:0 12px 40px rgba(0,0,0,.5);font-size:12px;line-height:1.55;}
.tour-card .tour-n{font-size:10px;letter-spacing:.14em;color:var(--muted);text-transform:uppercase;}
.tour-card h3{margin:4px 0 6px;font-size:14px;color:var(--accent-text);}
.tour-card p{margin:0 0 14px;color:var(--text);}
.tour-foot{display:flex;align-items:center;gap:8px;}
.tour-foot .tour-skip{margin-right:auto;background:none;border:0;color:var(--muted);font:inherit;cursor:pointer;padding:4px 0;}
.tour-foot .tour-skip:hover{color:var(--text);text-decoration:underline;}
.hint-link{color:var(--muted);cursor:pointer;font-size:11px;pointer-events:auto;
  border-bottom:1px dotted var(--line);padding-bottom:1px;}
.hint-link:hover{opacity:1;color:var(--text);border-bottom-color:var(--muted);}
.hint .copyr{position:absolute;bottom:14px;right:18px;font-size:10px;letter-spacing:.08em;
  color:#38495a;text-shadow:0 0 5px var(--bg),0 0 5px var(--bg),0 1px 1px var(--bg);}
.hint .copyr .sc-credit{pointer-events:auto;}
.snap-preview{position:absolute;border:2px solid var(--accent);background:rgba(79,214,190,.08);
  border-radius:8px;pointer-events:none;z-index:9998;display:none;}
.guide{position:absolute;background:var(--accent);pointer-events:none;z-index:9999;
  box-shadow:0 0 6px rgba(79,214,190,.6);display:none;}
.glue-btn{position:absolute;z-index:9995;width:24px;height:24px;margin:-12px 0 0 -12px;padding:0;display:none;
  align-items:center;justify-content:center;border-radius:50%;cursor:pointer;color:var(--muted);
  background:var(--panel-2);border:1px solid var(--line);box-shadow:var(--shadow);}
.glue-btn:hover,.glue-btn.on{color:var(--accent-text);border-color:var(--accent);}
.glue-btn svg{width:13px;height:13px;}
@media (pointer:coarse){.glue-btn{width:36px;height:36px;margin:-18px 0 0 -18px;}.glue-btn svg{width:18px;height:18px;}}
.win.glued{box-shadow:0 0 0 1px var(--accent-dim),var(--shadow);}
.win.glued.focused{box-shadow:0 22px 50px -14px rgba(0,0,0,.85),0 0 0 1px var(--accent);}
.guide.v{width:1px;}
.guide.h{height:1px;}

/* ── windows ── */
.win{position:absolute;min-width:320px;min-height:200px;display:flex;flex-direction:column;
  background:var(--panel-2);border-radius:9px;box-shadow:var(--shadow);overflow:hidden;}
.win.focused{box-shadow:0 22px 50px -14px rgba(0,0,0,.85),0 0 0 1px var(--accent-dim);}
.win.kbd-move{outline:2px dashed var(--accent);outline-offset:3px;}   /* keyboard move / resize mode */
.win.max{border-radius:0;}
.win.dead{filter:saturate(.55);}

/* window head */
.win-head{height:34px;flex:0 0 34px;display:flex;align-items:center;gap:6px;
  padding:0 6px 0 10px;
  background:linear-gradient(180deg,var(--head-a),var(--head-b));
  border-bottom:1px solid var(--line-soft);min-width:0;
  touch-action:none;}  /* drag with touch instead of scrolling the page */
.win-grip{flex:0 0 auto;display:flex;align-items:center;padding:2px;border-radius:5px;color:var(--muted);opacity:.5;cursor:grab;transition:opacity .12s,color .12s,background .12s;}
.win-grip:hover{opacity:1;color:var(--accent-text);background:var(--chip-active);}
.win-head:active .win-grip{cursor:grabbing;}
.win-head.wh-drag,.win-head.wh-drag .win-grip{cursor:grabbing;}
.win-head.wh-drag .win-grip{opacity:1;color:var(--accent-text);background:var(--chip-active);}
body.win-dragging,body.win-dragging *{cursor:grabbing!important;}
.win-led{width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:var(--muted);}
.win-led.live{background:var(--live);box-shadow:0 0 6px var(--live);}
.win-led.demo{background:var(--demo);box-shadow:0 0 6px var(--demo);}
.win-led.dead{background:var(--dead);box-shadow:0 0 6px var(--dead);}
.win-led.reconnecting,.cled.reconnecting{background:var(--demo);animation:pulse 1s infinite;}
.win-led.pending,.cled.pending{background:var(--muted);}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.2}}

/* tab strip inside window head */
.win-tabs{display:flex;align-items:center;flex:1;min-width:0;position:relative;overflow:hidden;}
.wtabs-track{display:flex;align-items:center;gap:2px;flex:1;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;cursor:grab;touch-action:pan-x;}
.wtabs-track::-webkit-scrollbar{display:none;}
.wtabs-edge{position:absolute;top:0;bottom:0;width:22px;display:flex;align-items:center;justify-content:center;
  font-size:14px;color:var(--muted);cursor:pointer;opacity:0;pointer-events:none;transition:opacity .12s;z-index:2;}
.wtabs-edge:hover{color:var(--text);}
.wtabs-edge.left{left:0;justify-content:flex-start;background:linear-gradient(90deg,var(--head-b) 55%,transparent);}
.wtabs-edge.right{right:0;justify-content:flex-end;background:linear-gradient(270deg,var(--head-b) 55%,transparent);}
.win-tabs.can-left .wtabs-edge.left,.win-tabs.can-right .wtabs-edge.right{opacity:1;pointer-events:auto;}
.wtab{flex:0 0 auto;display:flex;align-items:center;gap:5px;height:24px;padding:0 8px;
  border-radius:5px;font-size:11px;color:var(--muted);cursor:pointer;
  max-width:130px;white-space:nowrap;overflow:hidden;}
.wtab:hover{background:var(--btn-bg);color:var(--text);}
.wtab.active{background:var(--win-body);color:var(--text);}
@keyframes wtblink{0%,100%{background:color-mix(in srgb,var(--accent) 26%,transparent);}50%{background:transparent;}}
.wtab.attn:not(.active){color:var(--text);background:color-mix(in srgb,var(--accent) 20%,transparent);animation:wtblink .5s ease-in-out 3;}
.wtab.attn:not(.active) .wt-dot{box-shadow:0 0 5px var(--accent);}
/* agent "waiting on you" — amber, keeps a slow pulse so the queue stays glanceable (distinct from the blue attn flash) */
@keyframes wtwait{0%,100%{background:color-mix(in srgb,#e6a23c 30%,transparent);}50%{background:color-mix(in srgb,#e6a23c 8%,transparent);}}
.wtab.waiting:not(.active){color:var(--text);animation:wtwait 1.4s ease-in-out infinite;}
.wtab.waiting:not(.active) .wt-dot{background:#e6a23c;box-shadow:0 0 6px #e6a23c;}
/* blocked on a tool-approval prompt — red, faster pulse: louder than a plain "waiting" because it halts ALL progress */
@keyframes wtappr{0%,100%{background:color-mix(in srgb,#e5484d 42%,transparent);}50%{background:color-mix(in srgb,#e5484d 10%,transparent);}}
.wtab.waiting.approval:not(.active){animation:wtappr 0.9s ease-in-out infinite;}
.wtab.waiting.approval:not(.active) .wt-dot{background:#e5484d;box-shadow:0 0 7px #e5484d;}
/* working: green dot + static ring (still distinct under prefers-reduced-motion, which disables the pulse globally) */
@keyframes wtwork{0%,100%{opacity:1;}50%{opacity:.35;}}
.wtab.working .wt-dot{background:var(--live);box-shadow:0 0 0 2px color-mix(in srgb,var(--live) 35%,transparent);animation:wtwork 1.6s ease-in-out infinite;}
.wtab .wt-dot{width:5px;height:5px;border-radius:50%;flex:0 0 auto;background:var(--muted);}
.wtab .wt-dot.live{background:var(--live);}
.wtab .wt-dot.demo{background:var(--demo);}
.wtab .wt-dot.dead{background:var(--dead);}
.wtab .wt-name{overflow:hidden;text-overflow:ellipsis;flex:1;}
.wtab .wt-name[contenteditable="true"]{user-select:text;cursor:text;overflow:visible;color:var(--text);background:var(--win-body);box-shadow:inset 0 0 0 1px var(--accent-dim);border-radius:3px;padding:0 3px;outline:none;}
.wtab .wt-x{width:14px;height:14px;border-radius:3px;display:grid;place-items:center;
  font-size:11px;flex:0 0 auto;color:var(--muted);}
.wtab .wt-x:hover{background:#3a1a1c;color:#ff9b93;}
.wtab-add{flex:0 0 auto;width:24px;height:24px;border:0;border-radius:4px;background:transparent;
  color:var(--muted);cursor:pointer;font-size:15px;display:grid;place-items:center;line-height:1;}
.wtab-add:hover{color:var(--accent-text);}

.win-ctrls{display:flex;gap:1px;flex:0 0 auto;position:relative;z-index:7;}/* above resize grips so title-bar buttons stay clickable */
.wbtn{width:24px;height:24px;border:0;border-radius:5px;background:transparent;
  color:var(--muted);cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;
  transition:background .1s,color .1s;}
.wbtn:hover{background:var(--btn-bg);color:var(--text);}
.wbtn svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.wbtn.close:hover{background:#3a1a1c;color:#ff9b93;}
.wbtn.restart{display:none;color:var(--demo);}
.win.dead .wbtn.restart{display:flex;}

/* panes & footer */
.win-panes{flex:1;min-height:0;position:relative;}
/* No vertical padding: FitAddon measures this pane's border-box height, so any
   top/bottom padding makes it compute one row too many → the last row is clipped
   under the footer. Horizontal padding is safe (doesn't affect the row count). */
.win-pane{position:absolute;inset:0;background:var(--win-body);padding:0 3px 0 7px;display:none;overflow:hidden;
  box-sizing:content-box;   /* FitAddon reads this width and subtracts only the scrollbar: exclude the side padding or the last column runs under the bar */
  isolation:isolate;}       /* keep xterm's scrollbar (z-index 11) under the window's resize grips */
.win-pane.active{display:block;}
.win-pane .xterm{height:100%;}
/* xterm 6 draws its own scrollbar (VS Code's) inside .xterm-scrollable-element; the old
   .xterm-viewport only remains as a never-overflowing layer, so hide its native track
   (classic-scrollbar platforms would otherwise show an empty one under ours). The width
   comes from overviewRuler.width at new Terminal(); FitAddon reserves the same. */
.win-pane .xterm-viewport{scrollbar-width:none;background-color:transparent!important;}
.win-pane .xterm-viewport::-webkit-scrollbar{display:none;}
.win-pane .xterm-decoration-overview-ruler{display:none;}/* overviewRuler is only set for that width; its canvas would draw a 1px line down the bar's edge */
.win-pane .xterm .xterm-scrollable-element>.scrollbar>.slider{background:var(--line);border-radius:6px;border:2px solid transparent;background-clip:padding-box;box-sizing:border-box;}
.win-pane .xterm .xterm-scrollable-element>.scrollbar>.slider:hover,.win-pane .xterm .xterm-scrollable-element>.scrollbar>.slider.active{background:var(--muted);}
.win-foot{height:22px;flex:0 0 22px;display:flex;align-items:center;gap:6px;
  padding:0 8px;background:var(--head-b);border-top:1px solid var(--line-soft);
  font-size:10px;color:var(--muted);letter-spacing:.04em;overflow:hidden;}
.win-foot .badge{display:inline-flex;align-items:center;gap:4px;padding:1px 7px;
  border-radius:10px;border:1px solid var(--line);font-size:9.5px;white-space:nowrap;}
.win-foot .badge.shell{color:var(--accent-text);border-color:var(--accent-dim);}
.win-foot .badge.shell.pick{cursor:pointer;}
.win-foot .badge.shell.pick:hover{background:var(--accent-dim);}
.win-foot .badge.cwd{color:var(--muted);max-width:200px;overflow:hidden;text-overflow:ellipsis;}
.win-foot .badge.log{color:var(--demo);border-color:var(--demo);}
.badge.cmd{color:var(--muted);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--mono,monospace);}
.badge:empty{display:none;}
.win-foot .uptime{color:var(--muted);flex:0 0 auto;}
.win-foot .foot-actions{margin-left:auto;display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;}   /* interactive icons grouped, pinned right */
.win-foot .foot-game,.win-foot .foot-snip,.win-foot .foot-port{flex:0 0 auto;display:inline-flex;align-items:center;cursor:pointer;color:var(--muted);transition:color .12s;}
.win-foot .foot-game svg,.win-foot .foot-snip svg,.win-foot .foot-port svg{width:13px;height:13px;display:block;}
.win-foot .foot-port{color:var(--accent-text);opacity:1;}
.win-foot .foot-port[hidden]{display:none;}
.win-foot .foot-game:hover,.win-foot .foot-snip:hover,.win-foot .foot-port:hover{color:var(--live,#4fd6be);}
/* edge + corner resize handles on all four sides. z above the terminal canvas so
   they catch mousedown; .win-ctrls sits above them so title-bar buttons stay clickable. */
.wgrip{position:absolute;z-index:6;touch-action:none;}
.wgrip-n{top:0;left:11px;right:11px;height:5px;cursor:ns-resize;}
.wgrip-s{bottom:0;left:11px;right:11px;height:5px;cursor:ns-resize;}
.wgrip-w{left:0;top:11px;bottom:11px;width:5px;cursor:ew-resize;}
.wgrip-e{right:0;top:11px;bottom:11px;width:5px;cursor:ew-resize;}
.wgrip-nw{top:0;left:0;width:11px;height:11px;cursor:nwse-resize;}
.wgrip-ne{top:0;right:0;width:11px;height:11px;cursor:nesw-resize;}
.wgrip-sw{bottom:0;left:0;width:11px;height:11px;cursor:nesw-resize;}
.wgrip-se{bottom:0;right:0;width:11px;height:11px;cursor:nwse-resize;}

/* ── dock ── */
.dock{position:absolute;left:0;right:0;bottom:0;height:60px;display:flex;align-items:center;
  gap:7px;padding:0 14px;background:linear-gradient(0deg,var(--panel),var(--panel-2));
  border-top:1px solid var(--line);overflow:hidden;z-index:4000;}
.dock-scroll{position:relative;flex:1 1 auto;min-width:0;height:100%;display:flex;align-items:center;}
.dock-track{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:7px;height:100%;
  overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:var(--line) transparent;}
.dock-track::-webkit-scrollbar{height:5px;}
.dock-track::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px;}
.dock-edge{position:absolute;top:0;bottom:0;width:34px;display:flex;align-items:center;justify-content:center;
  font-size:18px;color:var(--muted);cursor:pointer;opacity:0;pointer-events:none;transition:opacity .15s;z-index:2;}
.dock-edge:hover{color:var(--text);}
.dock-edge.left{left:0;background:linear-gradient(90deg,var(--panel) 40%,transparent);justify-content:flex-start;padding-left:4px;}
.dock-edge.right{right:0;background:linear-gradient(270deg,var(--panel) 40%,transparent);justify-content:flex-end;padding-right:4px;}
.dock-scroll.can-left .dock-edge.left,.dock-scroll.can-right .dock-edge.right{opacity:1;pointer-events:auto;}
.dock-label{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);
  flex:0 0 auto;padding-right:8px;}
.chip{flex:0 0 auto;display:flex;align-items:center;gap:7px;height:36px;padding:0 8px 0 10px;
  background:var(--chip-bg);border:1px solid var(--line);border-radius:7px;cursor:pointer;
  touch-action:pan-x;user-select:none;   /* swipe scrolls the dock; touch reorder needs a long-press (wireChip) */
  font-size:12px;color:var(--text);transition:border-color .15s,background .15s,opacity .15s;}
.chip:hover{border-color:var(--accent-dim);}
.chip.active{border-color:var(--accent-dim);background:var(--chip-active);}
@keyframes chipblink{0%,100%{background:var(--chip-active);border-color:var(--accent);}50%{background:var(--chip-bg);border-color:var(--line);}}
.chip.attn{border-color:var(--accent);background:var(--chip-active);animation:chipblink .5s ease-in-out 3;}
.chip.attn .cled{box-shadow:0 0 6px var(--accent);}
@keyframes chipwait{0%,100%{border-color:#e6a23c;}50%{border-color:color-mix(in srgb,#e6a23c 30%,var(--line));}}
.chip.working:not(.waiting):not(.approval) .cled{background:var(--live);box-shadow:0 0 0 2px color-mix(in srgb,var(--live) 35%,transparent);animation:wtwork 1.6s ease-in-out infinite;}
.chip.waiting{animation:chipwait 1.4s ease-in-out infinite;}
.chip.waiting .cled{background:#e6a23c;box-shadow:0 0 6px #e6a23c;}
@keyframes chipappr{0%,100%{border-color:#e5484d;}50%{border-color:color-mix(in srgb,#e5484d 35%,var(--line));}}
.chip.approval{animation:chipappr 0.9s ease-in-out infinite;}
.chip.approval .cled{background:#e5484d;box-shadow:0 0 7px #e5484d;}
.chip.mini{border-style:dashed;color:var(--muted);}   /* minimized: dashed + muted (AA), not faded */
.chip .cled{width:7px;height:7px;border-radius:50%;background:var(--muted);flex:0 0 auto;}
.chip .cled.live{background:var(--live);box-shadow:0 0 5px var(--live);}
.chip .cled.demo{background:var(--demo);box-shadow:0 0 5px var(--demo);}
.chip .cled.dead{background:var(--dead);}
.chip.drag-over{border-color:var(--accent);}
.chip.dragging{opacity:.3;cursor:grabbing;}
.chip .cname{max-width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.chip .cmove{width:24px;height:24px;border:0;border-radius:4px;background:transparent;
  color:var(--muted);cursor:pointer;font-size:11px;display:grid;place-items:center;}
.chip .cmove:hover{background:var(--line);color:var(--accent-text);}
.chip .cmove:disabled{opacity:.35;cursor:default;}
.chip .cmove:disabled:hover{background:transparent;color:var(--muted);}
.chip .cmove svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}

@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;}}

/* ── ambient pixel pets ── */
.petfield{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:3400;}
.pet{position:absolute;left:0;top:0;will-change:transform;transition:transform var(--dur,3s) linear;}
.pet-face{transform:scaleX(var(--dir,1));transform-origin:center;}
.pet-bob{transform:translateY(0);}
.pet.walking .pet-bob{animation:pet-bob .34s steps(2,jump-none) infinite;}
.pet.slime.walking .pet-bob{animation:pet-hop var(--dur,3s) ease-in-out infinite;}
.pet-frame{position:absolute;width:var(--px,3px);height:var(--px,3px);opacity:0;filter:drop-shadow(0 1px 0 rgba(0,0,0,.35));}
.pet .fa{opacity:1;}
.pet.walking .fa{animation:pet-fa .34s steps(1) infinite;}
.pet.walking .fb{animation:pet-fb .34s steps(1) infinite;}
.pet.groom .fa{opacity:0;}
.pet.groom .fb{opacity:1;}
@keyframes pet-fa{0%,49.9%{opacity:1}50%,100%{opacity:0}}
@keyframes pet-fb{0%,49.9%{opacity:0}50%,100%{opacity:1}}
@keyframes pet-bob{0%{transform:translateY(0)}100%{transform:translateY(calc(-1*var(--px,3px)))}}
@keyframes pet-hop{0%,100%{transform:translateY(0)}50%{transform:translateY(calc(-2.2*var(--px,3px)))}}
@media(prefers-reduced-motion:reduce){.petfield{display:none;}}

/* Every control is at least 24×24 px (WCAG 2.2 target size): .pdel, .wtab-add, .wbtn, .cmove, .sb-tool, .sb-close above. */

/* ── Phone width: one window at a time, filling the window area; compact header ──
   The saved desktop geometry stays in each window's inline style (!important only overrides it here), so the layout
   comes back unchanged on a wide screen. Switch windows from the dock; Tile/drag/resize have nothing to do at this width. */
@media (max-width:600px){
  .bar{gap:6px;padding:0 10px;}
  .brand{letter-spacing:.12em;}
  .status #conn-text{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}   /* the LED stays; screen readers still hear the text */
  #new{font-size:0;gap:0;padding:6px 10px;}
  #new .plus{font-size:16px;line-height:1;}
  .win{left:0!important;top:0!important;width:100%!important;height:100%!important;border-radius:0;}
  .wgrip,.win-grip{display:none;}
}
.tree-find{display:flex;align-items:center;gap:6px;padding:0 10px;height:30px;flex:none;border-bottom:1px solid var(--line);}
.tree-find .tf-icon{display:flex;color:var(--muted);}
.tree-find .tf-icon svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;}
.tree-find input{flex:1;min-width:0;height:24px;background:none;border:0;outline:0;font-family:var(--mono);font-size:11.5px;color:var(--text);}
.tree-find input::placeholder{color:var(--muted);}
.tree-find:focus-within{box-shadow:inset 2px 0 0 var(--accent);}
.tree[hidden]{display:none;}
.tn .tn-sub{margin-left:8px;font-size:10px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;direction:rtl;max-width:45%;}
