:root{--bg:#f6f8f7;--pn:#fff;--ink:#14201a;--mute:#62716a;--line:#e1e8e4;--brand:#5BB85B;--brand-ink:#0b1f10;--acc:#2f8f2f;--accb:#e6f4e6;--ok:#1f9d4a;--warn:#b7791f;--bad:#d03a3a;--info:#2563c9;--o1:#7c4dff;--o2:#2563c9;--o3:#e0603a;--o4:#0f8b8d;--o5:#c2410c;--o6:#be185d;--jk:#2563c9;--js:#1d7f3f;--jn:#b7791f;--jb:#8a3fc4;--sel:#eaf5ea;color-scheme:light}
:root[data-theme=dark]{--bg:#0b0f0d;--pn:#121916;--ink:#e6eee9;--mute:#8d9d95;--line:#202a25;--acc:#6fcf6f;--accb:#14301a;--ok:#4fd37d;--warn:#e5ad4a;--bad:#ff6b6b;--info:#6fa2ff;--o1:#a58bff;--o2:#6fa2ff;--o3:#ff8c66;--o4:#4fd1c5;--o5:#fb923c;--o6:#f472b6;--jk:#79a6ff;--js:#7bdc98;--jn:#e5ad4a;--jb:#c49bff;--sel:#13251a;color-scheme:dark}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0b0f0d;--pn:#121916;--ink:#e6eee9;--mute:#8d9d95;--line:#202a25;--acc:#6fcf6f;--accb:#14301a;--ok:#4fd37d;--warn:#e5ad4a;--bad:#ff6b6b;--info:#6fa2ff;--o1:#a58bff;--o2:#6fa2ff;--o3:#ff8c66;--o4:#4fd1c5;--o5:#fb923c;--o6:#f472b6;--jk:#79a6ff;--js:#7bdc98;--jn:#e5ad4a;--jb:#c49bff;--sel:#13251a;color-scheme:dark}}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 "DM Sans",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
button{font-family:inherit;color:inherit}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
::selection{background:color-mix(in oklab,var(--brand) 35%,transparent)}
svg.i{width:1em;height:1em;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.14em;flex:none}
.mono{font-family:"JetBrains Mono",ui-monospace,monospace}
.brand{display:flex;gap:9px;align-items:center;font-weight:700}
.brand b{width:26px;height:26px;border-radius:8px;background:var(--brand);display:grid;place-items:center;color:var(--brand-ink);font-size:15px}
.dot{width:9px;height:9px;border-radius:50%;flex:none;display:inline-block}
@keyframes pop{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.new{animation:pop .5s cubic-bezier(.16,1,.3,1)}
.live{font-size:12px;color:var(--ok);font-weight:600;white-space:nowrap}
.live i{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--ok);animation:pulse 1.6s infinite;margin-right:6px}
.live.off{color:var(--bad)}.live.off i{background:var(--bad);animation:none}
@media (prefers-reduced-motion:reduce){.new,.live i{animation:none}}
.icon-btn{display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--line);background:var(--pn);border-radius:10px;cursor:pointer;font-size:16px;flex:none}
.icon-btn:hover{border-color:var(--acc)}

/* login */
.login{min-height:100%;display:grid;place-items:center;padding:24px 16px;background:radial-gradient(900px 500px at 70% 10%,color-mix(in oklab,var(--brand) 16%,transparent),transparent),var(--bg)}
.lc{width:100%;max-width:380px;background:var(--pn);border:1px solid var(--line);border-radius:18px;padding:30px;box-shadow:0 30px 60px -30px rgba(0,0,0,.4)}
.lc h1{font-size:22px;margin:16px 0 4px;letter-spacing:-.02em}.lc p{margin:0 0 20px;color:var(--mute);font-size:14px}
.fld{display:block;margin-bottom:12px;font-size:12.5px;font-weight:600}
.fld input{display:block;width:100%;margin-top:5px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font:400 16px "DM Sans",sans-serif;background:var(--bg);color:var(--ink)}
.fld input:focus{outline:2px solid var(--acc);outline-offset:0;border-color:var(--acc)}
.btn{width:100%;border:0;background:var(--brand);color:var(--brand-ink);font:600 14px "DM Sans";padding:11px;border-radius:10px;margin-top:8px;cursor:pointer}
.btn:hover{filter:brightness(.96)}.btn:disabled{opacity:.6;cursor:wait}
.err{color:var(--bad);font-size:13px;min-height:20px;margin-top:10px}

/* shell */
.shell{display:grid;grid-template-columns:240px minmax(340px,410px) 1fr;height:100vh;height:100dvh}
.side{background:var(--pn);border-right:1px solid var(--line);padding:18px 14px;overflow:auto;display:flex;flex-direction:column}
.side .brand{margin-bottom:12px}
.grp{font-size:11.5px;color:var(--mute);font-weight:600;margin:16px 6px 6px}
.opt{display:flex;align-items:center;gap:9px;width:100%;padding:7px 8px;border:0;background:none;border-radius:8px;font-size:13.5px;cursor:pointer;text-align:left;min-width:0}
.opt:hover{background:var(--bg)}
.opt.on{background:var(--accb);font-weight:600}
.opt .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.opt.tp{font:500 12.5px "JetBrains Mono",monospace}
.opt em{margin-left:auto;font-style:normal;font:500 12px "JetBrains Mono",monospace;color:var(--mute);font-variant-numeric:tabular-nums;padding-left:6px}
.sidefoot{margin-top:auto;padding-top:16px;display:flex;gap:8px;align-items:center}
.sidefoot .who{font-size:12px;color:var(--mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:auto;min-width:0}
.feed{border-right:1px solid var(--line);display:flex;flex-direction:column;min-width:0;min-height:0}
.fh{padding:12px 16px;border-bottom:1px solid var(--line);display:flex;gap:10px;align-items:center}
.search{flex:1;display:flex;gap:8px;align-items:center;background:var(--pn);border:1px solid var(--line);border-radius:10px;padding:0 10px;color:var(--mute);min-width:0}
.search input{flex:1;min-width:0;border:0;background:none;padding:8px 0;font:400 14px "DM Sans",sans-serif;color:var(--ink);outline:0}
.search:focus-within{border-color:var(--acc)}
.list{overflow:auto;flex:1;min-height:0}
.row{display:grid;grid-template-columns:4px 1fr auto;gap:11px;padding:12px 16px;border-bottom:1px solid var(--line);cursor:pointer;align-items:stretch;width:100%;text-align:left;border-left:0;border-right:0;border-top:0;background:none}
.row:hover{background:color-mix(in oklab,var(--pn) 70%,var(--bg))}
.row.sel{background:var(--sel);box-shadow:inset 3px 0 0 var(--acc)}
.row .bar{width:4px;min-height:36px;border-radius:3px}
.t{font:600 13px "JetBrains Mono",monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sub{font-size:12.5px;color:var(--mute);margin-top:2px;display:flex;gap:8px;align-items:center;min-width:0}
.sub span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm{font:500 11.5px "JetBrains Mono",monospace;color:var(--mute);font-variant-numeric:tabular-nums;white-space:nowrap}
.flag{font-size:11px;font-weight:600}
.flag.bad{color:var(--bad)}.flag.warn{color:var(--warn)}
.det{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--pn)}
.dh{padding:18px 22px;border-bottom:1px solid var(--line)}
.dh h3{font:600 17px "JetBrains Mono",monospace;margin:0 0 8px;word-break:break-all;padding-right:120px}
.meta{display:flex;gap:6px 18px;flex-wrap:wrap;font-size:12.5px;color:var(--mute);align-items:center}
.meta b{color:var(--ink);font-weight:500;font-family:"JetBrains Mono",monospace;font-size:12px}
.tabs{display:flex;gap:4px;padding:10px 22px 0;border-bottom:1px solid var(--line)}
.tabs button{padding:8px 12px;font-size:13px;color:var(--mute);border:0;background:none;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer}
.tabs button.on{color:var(--ink);border-color:var(--acc);font-weight:600}
.pw{flex:1;position:relative;overflow:hidden;min-height:0}
.pane{height:100%;overflow:auto}
.json{font:12.5px/1.65 "JetBrains Mono",monospace;white-space:pre;margin:0;padding:18px 22px;tab-size:2}
.json .k{color:var(--jk)}.json .s{color:var(--js)}.json .n{color:var(--jn)}.json .b{color:var(--jb)}
.cp{position:absolute;right:18px;top:14px;z-index:2;display:flex;gap:6px;align-items:center;padding:7px 12px;border-radius:9px;border:1px solid var(--line);background:var(--pn);font-size:13px;cursor:pointer;font-weight:500}
.cp:hover{border-color:var(--acc)}.cp.done{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}
.pill{display:inline-flex;gap:5px;align-items:center;font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:99px;background:var(--accb);color:var(--ok);white-space:nowrap}
.pill.bad{background:color-mix(in oklab,var(--bad) 14%,transparent);color:var(--bad)}
.pill.warn{background:color-mix(in oklab,var(--warn) 16%,transparent);color:var(--warn)}
.ph,.empty{display:grid;place-items:center;height:100%;color:var(--mute);text-align:center;padding:30px}
.ph b,.empty h4{display:block;color:var(--ink);font-size:15px;margin-bottom:4px}
.empty h4{font-size:17px;margin:14px 0 4px}
.code{margin:16px auto 0;text-align:left;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font:12px "JetBrains Mono",monospace;color:var(--ink);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;user-select:all}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:8px 18px;padding:18px 22px;font-size:13px;align-content:start}
.kv dt{color:var(--mute)}.kv dd{margin:0;font:12.5px "JetBrains Mono",monospace;word-break:break-all}
.note{padding:0 22px 18px;color:var(--mute);font-size:13px;max-width:70ch}
.clear{border:1px solid var(--line);background:var(--pn);border-radius:10px;font-size:13px;padding:7px 11px;cursor:pointer;white-space:nowrap}
.clear:hover{border-color:var(--bad);color:var(--bad)}
.rail,.scrim,.grab,.back{display:none}

@media (max-width:1180px) and (min-width:861px){.shell{grid-template-columns:200px 330px 1fr}}
@media (max-width:860px){
 .shell{display:flex;flex-direction:column;height:100dvh}
 .side{display:none}
 .rail{display:flex;gap:7px;overflow:auto;padding:4px 16px 8px;scrollbar-width:none}
 .rail::-webkit-scrollbar{display:none}
 .rail button{flex:none;display:inline-flex;gap:6px;align-items:center;padding:7px 12px;border:1px solid var(--line);background:var(--pn);border-radius:99px;font-size:13px;cursor:pointer;min-height:34px}
 .rail button.on{background:var(--brand);color:var(--brand-ink);border-color:var(--brand);font-weight:600}
 .rail button.tp{font-family:"JetBrains Mono",monospace;font-size:12px}
 .feed{flex:1;border-right:0}
 .mtop{display:flex!important;align-items:center;gap:10px;padding:12px 16px 8px}
 .mtop .brand{margin-right:auto}
 .det{position:fixed;left:0;right:0;bottom:0;height:82dvh;border-radius:22px 22px 0 0;box-shadow:0 -20px 50px -10px rgba(0,0,0,.5);z-index:30;transform:translateY(105%);transition:transform .28s cubic-bezier(.16,1,.3,1);visibility:hidden}
 .det.open{transform:none;visibility:visible}
 .scrim{display:block;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:25;opacity:0;pointer-events:none;transition:opacity .2s}
 .scrim.open{opacity:1;pointer-events:auto}
 .grab{display:block;width:40px;height:4px;border-radius:2px;background:var(--line);margin:8px auto 0;border:0;padding:12px 0;background-clip:content-box}
 .dh{padding:8px 18px 12px}.dh h3{font-size:14px;padding-right:0}
 .tabs{padding:6px 14px 0}
 .json{font-size:11.5px;padding:56px 16px 16px}
 .kv{padding:14px 18px}.note{padding:0 18px 18px}
 .cp{top:10px;right:12px}
 .fh .clear{padding:7px 9px}
 .fh .live{display:none}
}
@media (prefers-reduced-motion:reduce){.det{transition:none}}
.mtop{display:none}
