:root{--bg:#0a0c0f;--bg-1:#0d1015;--bg-2:#11151a;--bg-3:#181d24;--bg-4:#1f262f;--line:#232a33;--line-2:#2c3540;--text:#e7ecf2;--text-2:#c9d2dc;--text-dim:#8a96a4;--text-mute:#5e6975;--accent:#1e4d2b;--accent-2:#2d7344;--accent-3:#3d9359;--gold:#d4af37;--gold-soft:#d4af3726;--good:#4ade80;--good-soft:#4ade8026;--warn:#fbbf24;--warn-soft:#fbbf2426;--bad:#f87171;--bad-soft:#f8717126;--info:#60a5fa;--info-soft:#60a5fa26;--side-w:220px;--header-h:52px;--radius-sm:4px;--radius:8px;--radius-lg:12px;--radius-xl:16px;--shadow-sm:0 1px 2px #0000004d;--shadow:0 4px 12px #0006;--shadow-lg:0 12px 28px #00000080;--shadow-glow:0 0 0 1px #d4af3766, 0 0 20px #d4af3726;--ease:cubic-bezier(.4, 0, .2, 1);--ease-out:cubic-bezier(.16, 1, .3, 1);--t-fast:.12s;--t:.2s;--t-slow:.32s}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(ellipse 80% 60% at 50% -10%, #d4af370a, transparent 60%), radial-gradient(ellipse 60% 50% at 100% 100%, #2d73440d, transparent 60%), var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;background-attachment:fixed;font:14px/1.45 -apple-system,Segoe UI,system-ui,Inter,sans-serif}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}:focus{outline:none}:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:var(--radius-sm)}*{scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--line-2);background-clip:content-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#3a4555 padding-box content-box}::selection{background:var(--gold-soft);color:var(--text)}.app{grid-template-columns:var(--side-w) 1fr;grid-template-rows:var(--header-h) 1fr;height:100vh;display:grid;overflow:hidden}.app>header{background:linear-gradient(180deg, var(--bg-2) 0%, var(--bg-1) 100%);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:5;grid-column:1/-1;align-items:center;gap:12px;padding:0 16px;display:flex;position:relative}.app>header .menu-btn{color:var(--text);border-radius:var(--radius-sm);cursor:pointer;width:34px;height:34px;transition:background var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;display:none}.app>header .menu-btn:hover{background:var(--bg-3);border-color:var(--line)}.app>header .brand{letter-spacing:.6px;align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.app>header .brand .logo{background:linear-gradient(135deg, var(--accent-2) 0%, var(--accent) 100%);width:24px;height:24px;color:var(--gold);letter-spacing:0;box-shadow:var(--shadow-sm), inset 0 1px 0 #ffffff1a;border-radius:6px;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:inline-flex}.app>header .brand .gold{color:var(--gold)}.app>header .brand .sub{color:var(--text-dim);font-weight:400}.app>header .spacer{flex:1}.app>header .who{color:var(--text-dim);align-items:center;gap:8px;font-size:12px;display:flex}.app>header .who .avatar{background:var(--bg-3);border:1px solid var(--line);width:24px;height:24px;color:var(--text-2);text-transform:uppercase;border-radius:999px;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:inline-flex}nav.side{background:var(--bg-2);border-right:1px solid var(--line);z-index:4;flex-direction:column;gap:2px;padding:12px 10px;display:flex;position:relative;overflow-y:auto}nav.side a,nav.side .nav-link-external{border-radius:var(--radius);color:var(--text-dim);transition:color var(--t-fast) var(--ease), background var(--t-fast) var(--ease);align-items:center;gap:10px;padding:8px 10px;font-size:13px;font-weight:500;text-decoration:none;display:flex;position:relative}nav.side a:hover,nav.side .nav-link-external:hover,nav.side a.active{color:var(--text);background:var(--bg-3)}nav.side a.active:before{content:"";background:var(--gold);border-radius:0 3px 3px 0;width:3px;position:absolute;top:8px;bottom:8px;left:-10px}nav.side .nav-sect{color:var(--text-mute);text-transform:uppercase;letter-spacing:1.2px;padding:14px 12px 6px;font-size:10px;font-weight:600}main.page{animation:page-in var(--t-slow) var(--ease-out) both;padding:24px 28px 32px;overflow:hidden auto}@keyframes page-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}h1{letter-spacing:-.2px;align-items:center;gap:10px;margin:0 0 4px;font-size:22px;font-weight:600;display:flex}h1 .live-dot{color:var(--good);text-transform:uppercase;letter-spacing:1px;background:var(--good-soft);border-radius:999px;align-items:center;gap:6px;padding:3px 8px;font-size:11px;font-weight:500;display:inline-flex}h1 .live-dot:before{content:"";background:var(--good);width:6px;height:6px;box-shadow:0 0 8px var(--good);border-radius:999px;animation:1.6s ease-in-out infinite pulse}.page-sub{color:var(--text-dim);margin:0 0 20px;font-size:13px}h2{color:var(--text-dim);text-transform:uppercase;letter-spacing:1.2px;margin:28px 0 10px;font-size:11px;font-weight:600}h2:first-of-type{margin-top:16px}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.85)}}.card{background:linear-gradient(180deg, var(--bg-2) 0%, var(--bg-1) 100%);border:1px solid var(--line);border-radius:var(--radius-lg);transition:border-color var(--t) var(--ease), box-shadow var(--t) var(--ease), transform var(--t) var(--ease);padding:16px}.card.hoverable:hover{border-color:var(--line-2);box-shadow:var(--shadow)}.card .card-head{align-items:center;gap:10px;margin-bottom:12px;display:flex}.card .card-head .title{color:var(--text);font-size:13px;font-weight:600}.card .card-head .sub{color:var(--text-dim);font-size:12px}.card .card-head .spacer{flex:1}.card .card-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:1.2px;margin-bottom:6px;font-size:10px;font-weight:600}.card.kpi{flex-direction:column;gap:6px;padding:16px 18px;display:flex;position:relative;overflow:hidden}.card.kpi .l{color:var(--text-dim);text-transform:uppercase;letter-spacing:1.2px;align-items:center;gap:6px;font-size:11px;font-weight:600;display:flex}.card.kpi .v{font-variant-numeric:tabular-nums;letter-spacing:-.5px;font-size:28px;font-weight:600;line-height:1.1}.card.kpi .v .sub{color:var(--text-mute);margin-left:4px;font-size:14px;font-weight:500}.card.kpi.good{border-color:#4ade804d}.card.kpi.good .v{color:var(--good)}.card.kpi.warn{border-color:#fbbf244d}.card.kpi.warn .v{color:var(--warn)}.card.kpi.bad{border-color:#f871714d}.card.kpi.bad .v{color:var(--bad)}.card.kpi .accent{opacity:.4;background:linear-gradient(90deg,#0000,currentColor,#0000);height:2px;position:absolute;inset:auto 0 0}.card.kpi.pulse{animation:kpi-pulse .6s var(--ease-out)}@keyframes kpi-pulse{0%{box-shadow:0 0 #d4af3780}60%{box-shadow:0 0 0 6px #d4af3700}to{box-shadow:0 0 #d4af3700}}.grid{gap:14px;display:grid}.grid.k4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.k3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.k2{grid-template-columns:repeat(2,minmax(0,1fr))}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);padding:11px 12px;font-size:13px}th{color:var(--text-dim);text-transform:uppercase;letter-spacing:1.2px;z-index:1;background:#00000026;font-size:10px;font-weight:600;position:sticky;top:0}tbody tr{transition:background var(--t-fast) var(--ease)}tbody tr:hover{background:#ffffff05}tbody tr:last-child td{border-bottom:0}td.dim{color:var(--text-dim)}td.mono{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12px}td.num{font-variant-numeric:tabular-nums;text-align:right}.empty-row td{color:var(--text-dim);text-align:center;padding:28px 16px}.pill{letter-spacing:.2px;white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;gap:6px;padding:3px 9px;font-size:11px;font-weight:500;display:inline-flex}.pill:before{content:"";background:currentColor;border-radius:999px;width:6px;height:6px;box-shadow:0 0 6px}.pill.no-dot:before{display:none}.pill.online{background:var(--good-soft);color:var(--good);border-color:#4ade8040}.pill.online:before{animation:2s ease-in-out infinite pulse}.pill.stale{background:var(--warn-soft);color:var(--warn);border-color:#fbbf2440}.pill.offline{background:var(--bad-soft);color:var(--bad);border-color:#f8717140}.pill.info{background:var(--info-soft);color:var(--info);border-color:#60a5fa40}.pill.neutral{background:var(--bg-3);color:var(--text-2);border-color:var(--line)}.role-badge{letter-spacing:.3px;text-transform:uppercase;border-radius:4px;align-items:center;padding:2px 8px;font-size:11px;font-weight:500;display:inline-flex}.role-badge.admin{background:var(--gold-soft);color:var(--gold);border:1px solid #d4af374d}.role-badge.staff{background:var(--info-soft);color:var(--info);border:1px solid #60a5fa4d}.role-badge.disabled{background:var(--bg-3);color:var(--text-mute);border:1px solid var(--line)}.btn{background:var(--bg-3);border:1px solid var(--line);color:var(--text);border-radius:var(--radius);cursor:pointer;transition:background var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);white-space:nowrap;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:7px 14px;font-size:13px;font-weight:500;display:inline-flex}.btn:hover{background:var(--bg-4);border-color:var(--line-2)}.btn:active{transform:translateY(1px)}.btn:disabled,.btn[disabled]{opacity:.5;cursor:not-allowed;pointer-events:none}.btn.primary{background:linear-gradient(180deg, var(--accent-2) 0%, var(--accent) 100%);border-color:var(--accent-3);color:#fff;box-shadow:inset 0 1px 0 #ffffff1a, var(--shadow-sm)}.btn.primary:hover{background:linear-gradient(180deg, var(--accent-3) 0%, var(--accent-2) 100%);border-color:var(--accent-3)}.btn.gold{color:#1a1a1a;box-shadow:inset 0 1px 0 #fff3, var(--shadow-sm);background:linear-gradient(#e6c044 0%,#b8951f 100%);border-color:#b8951f;font-weight:600}.btn.gold:hover{background:linear-gradient(#f1cb55 0%,#c9a52c 100%)}.btn.danger{color:var(--bad);background:#f871711f;border-color:#f8717180}.btn.danger:hover{border-color:var(--bad);background:#f8717133}.btn.ghost{color:var(--text-dim);background:0 0;border-color:#0000}.btn.ghost:hover{color:var(--text);background:var(--bg-3)}.btn.sm{padding:4px 10px;font-size:12px}.btn.icon{justify-content:center;width:32px;height:32px;padding:7px}.btn.icon.sm{width:26px;height:26px;padding:4px}.input,input.input,select.input,textarea.input{background:var(--bg-3);border:1px solid var(--line);color:var(--text);border-radius:var(--radius);font:inherit;transition:border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);width:100%;padding:7px 12px;font-size:13px}.input:hover{border-color:var(--line-2)}.input:focus{border-color:var(--accent-3);background:var(--bg-2);box-shadow:0 0 0 3px #2d734426}.input::placeholder{color:var(--text-mute)}textarea.input{resize:vertical;min-height:64px;line-height:1.5}.search{align-items:center;display:inline-flex;position:relative}.search .icon{color:var(--text-mute);pointer-events:none;display:inline-flex;position:absolute;left:10px}.search input.input{padding-left:34px;padding-right:34px}.search .clear{color:var(--text-mute);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px;display:inline-flex;position:absolute;right:6px}.search .clear:hover{color:var(--text);background:var(--bg-3)}.field{flex-direction:column;gap:5px;display:flex}.field>label{color:var(--text-dim);text-transform:uppercase;letter-spacing:1px;font-size:11px;font-weight:600}.field-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.banner{border-radius:var(--radius);border:1px solid;align-items:center;gap:10px;margin-bottom:16px;padding:11px 14px;font-size:13px;display:flex}.banner.danger{color:var(--bad);background:#f871711a;border-color:#f8717180}.banner.warn{color:var(--warn);background:#fbbf2414;border-color:#fbbf2466}.banner.info{color:var(--info);background:#60a5fa14;border-color:#60a5fa59}.banner .icon{flex-shrink:0;display:inline-flex}.banner .body{flex:1}.banner b{color:inherit}.kill-banner{color:var(--bad);border-radius:var(--radius);background:#f871711a;border:1px solid #f8717180;align-items:center;gap:10px;margin-bottom:16px;padding:11px 14px;display:flex}.bar{background:var(--bg-3);border-radius:999px;height:6px;position:relative;overflow:hidden}.bar>.fill{border-radius:inherit;height:100%;transition:width var(--t-slow) var(--ease-out), background var(--t) var(--ease)}.bar>.fill.good{background:linear-gradient(90deg, var(--accent-3), var(--good))}.bar>.fill.warn{background:linear-gradient(90deg, #d97706, var(--warn))}.bar>.fill.bad{background:linear-gradient(90deg, #b91c1c, var(--bad))}.metric{flex-direction:column;gap:5px;display:flex}.metric .row{justify-content:space-between;align-items:baseline;gap:8px;font-size:12px;display:flex}.metric .row .label{color:var(--text-dim)}.metric .row .val{font-variant-numeric:tabular-nums;font-weight:600}.chat{background:var(--bg-1);border-left:1px solid var(--line);width:420px;max-width:100vw;height:100vh;transition:transform var(--t-slow) var(--ease-out);z-index:50;box-shadow:var(--shadow-lg);flex-direction:column;display:flex;position:fixed;top:0;right:0;transform:translate(440px)}.chat.open{transform:translate(0)}.chat header{border-bottom:1px solid var(--line);background:var(--bg-2);flex-shrink:0;align-items:center;gap:8px;padding:12px 14px;display:flex}.chat header .title{align-items:center;gap:8px;font-weight:600;display:flex}.chat header .sub{color:var(--text-dim);font-family:ui-monospace,monospace;font-size:11px}.chat .log{flex-direction:column;flex:1;gap:12px;padding:16px;display:flex;overflow-y:auto}.chat .msg{border-radius:var(--radius);white-space:pre-wrap;word-wrap:break-word;max-width:88%;animation:msg-in .24s var(--ease-out);padding:10px 13px;font-size:13px;line-height:1.5}@keyframes msg-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.chat .msg.user{background:linear-gradient(180deg, var(--accent-2), var(--accent));color:#fff;border-bottom-right-radius:3px;align-self:flex-end}.chat .msg.asst{background:var(--bg-3);border:1px solid var(--line);border-bottom-left-radius:3px;align-self:flex-start}.chat .msg.tool{border:1px dashed var(--line-2);color:var(--text-dim);background:0 0;align-self:flex-start;max-width:92%;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:11.5px}.chat .typing{background:var(--bg-3);border:1px solid var(--line);border-radius:var(--radius);border-bottom-left-radius:3px;align-self:flex-start;align-items:center;gap:4px;padding:12px 14px;display:inline-flex}.chat .typing span{background:var(--text-mute);border-radius:999px;width:6px;height:6px;animation:1.2s ease-in-out infinite typing}.chat .typing span:nth-child(2){animation-delay:.15s}.chat .typing span:nth-child(3){animation-delay:.3s}@keyframes typing{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}.chat .empty{color:var(--text-dim);flex-direction:column;gap:14px;margin-top:8px;font-size:13px;display:flex}.chat .empty .chips{flex-direction:column;gap:6px;display:flex}.chat .chip{text-align:left;background:var(--bg-2);border:1px solid var(--line);color:var(--text-2);border-radius:var(--radius);cursor:pointer;transition:background var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);padding:8px 12px;font-family:ui-monospace,monospace;font-size:12px}.chat .chip:hover{background:var(--bg-3);border-color:var(--accent-3)}.chat .chip:active{transform:translateY(1px)}.chat footer{border-top:1px solid var(--line);background:var(--bg-2);flex-shrink:0;align-items:flex-end;gap:8px;padding:10px 12px 12px;display:flex}.chat textarea{resize:none;background:var(--bg-3);border:1px solid var(--line);color:var(--text);border-radius:var(--radius);min-height:44px;max-height:160px;transition:border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease);flex:1;padding:9px 12px;font-family:inherit;font-size:13px;line-height:1.5}.chat textarea:focus{border-color:var(--accent-3);background:var(--bg-2);outline:none;box-shadow:0 0 0 3px #2d734426}.chat .conv-list{flex-direction:column;gap:6px;display:flex}.chat .conv-list .conv{text-align:left;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;width:100%;color:var(--text);transition:border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease);padding:10px 12px;display:block}.chat .conv-list .conv:hover{border-color:var(--accent-3)}.chat .conv-list .conv.active{background:var(--bg-3);border-color:var(--accent-3)}.chat .conv-list .conv .title{font-size:13px;font-weight:500}.chat .conv-list .conv .meta{color:var(--text-dim);margin-top:3px;font-size:11px}.chat-fab,aside.chat{visibility:hidden!important;pointer-events:none!important;display:none!important}.llm-chat-frame{width:calc(100% + 32px);height:calc(100vh - var(--header-h) - 1px);background:var(--bg-1);flex-direction:column;margin:-16px;display:flex}.llm-chat-frame iframe{border:none;flex:1;width:100%;min-height:480px;display:block}.llm-chat-frame-fallback{text-align:center;border-top:1px solid var(--line);flex-shrink:0;margin:0;padding:8px 16px}.chat-page{background:var(--bg-1);grid-template-columns:280px 1fr;gap:0;height:calc(100vh - 53px);margin:-16px;display:grid}.chat-page-sidebar{border-right:1px solid var(--line);background:var(--bg-2);flex-direction:column;display:flex;overflow:hidden}.chat-page-sidebar-header{border-bottom:1px solid var(--line);padding:12px}.chat-page-sidebar-header .btn{justify-content:center;width:100%}.chat-page-sidebar-section{padding:12px 14px 6px}.chat-page-sidebar-list{flex-direction:column;flex:1;gap:4px;padding:0 8px 12px;display:flex;overflow-y:auto}.chat-page-sidebar-list .conv{text-align:left;border-radius:var(--radius);cursor:pointer;color:var(--text);transition:border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease);background:0 0;border:1px solid #0000;padding:9px 10px}.chat-page-sidebar-list .conv:hover{background:var(--bg-3)}.chat-page-sidebar-list .conv.active{background:var(--bg-3);border-color:var(--accent-3)}.chat-page-sidebar-list .conv .title{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.chat-page-sidebar-list .conv .meta{color:var(--text-dim);margin-top:3px;font-size:11px}.chat-page-main{background:var(--bg-1);flex-direction:column;min-width:0;display:flex}.chat-page-header{border-bottom:1px solid var(--line);background:var(--bg-2);align-items:center;gap:12px;padding:12px 18px;display:flex}.chat-page-header .title{align-items:center;gap:6px;font-weight:600;display:flex}.chat-page-header .sub{color:var(--text-dim);font-family:ui-monospace,monospace;font-size:11px}.chat-page-log{flex-direction:column;flex:1;align-items:center;gap:14px;padding:24px 16px;display:flex;overflow-y:auto}.chat-page-log>*{width:100%;max-width:760px}.chat-page-log .msg{border-radius:var(--radius);white-space:pre-wrap;word-wrap:break-word;padding:10px 14px;line-height:1.55}.chat-page-log .msg.user{background:var(--accent-1);color:#fff;align-self:flex-end;max-width:70%}.chat-page-log .msg.asst{background:var(--bg-2);border:1px solid var(--line)}.chat-page-log .msg.tool{border:1px dashed var(--gold);color:var(--text-2);background:#d4a44a0f;font-family:ui-monospace,monospace;font-size:12px}.chat-page-log .typing{gap:4px;padding:8px 0;display:flex}.chat-page-log .typing span{background:var(--text-dim);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite chat-typing}.chat-page-log .typing span:nth-child(2){animation-delay:.15s}.chat-page-log .typing span:nth-child(3){animation-delay:.3s}.chat-page-empty{flex-direction:column;gap:6px;padding:40px 12px 24px;display:flex}.chat-page-empty .chips{flex-wrap:wrap;gap:8px;display:flex}.chat-page-empty .chip{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;color:var(--text);transition:border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease);padding:8px 12px;font-size:13px}.chat-page-empty .chip:hover{background:var(--bg-3);border-color:var(--accent-3)}.chat-page-footer{border-top:1px solid var(--line);background:var(--bg-2);align-items:flex-end;gap:8px;padding:14px 16px 18px;display:flex}.chat-page-footer textarea{resize:none;border-radius:var(--radius);border:1px solid var(--line);background:var(--bg-1);color:var(--text);font:inherit;flex:1;max-width:760px;min-height:44px;max-height:200px;margin:0 auto;padding:12px 14px;line-height:1.4}.chat-page-footer textarea:focus{border-color:var(--accent-3);background:var(--bg-2);outline:none;box-shadow:0 0 0 3px #2d734426}.chat-page-footer .btn{flex:none}@media (width<=720px){.chat-page{grid-template-columns:1fr}.chat-page-sidebar{display:none}}.drawer{background:var(--bg-1);border-left:1px solid var(--line);z-index:60;width:560px;max-width:100vw;height:100vh;box-shadow:var(--shadow-lg);animation:drawer-in var(--t-slow) var(--ease-out);flex-direction:column;display:flex;position:fixed;top:0;right:0;overflow-y:auto}.drawer.from-left{border-right:1px solid var(--line);border-left:none;left:0;right:auto}@keyframes drawer-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.drawer header{border-bottom:1px solid var(--line);background:var(--bg-2);z-index:1;flex-shrink:0;align-items:center;gap:10px;padding:12px 16px;display:flex;position:sticky;top:0}.drawer .tabs{border-bottom:1px solid var(--line);background:var(--bg-2);z-index:1;display:flex;position:sticky;top:53px}.drawer .tabs button{color:var(--text-dim);cursor:pointer;transition:color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:10px 12px;font-size:13px;font-weight:500}.drawer .tabs button:hover{color:var(--text)}.drawer .tabs button.active{color:var(--text);border-bottom-color:var(--gold)}.drawer .tabs button .badge{background:var(--bg-3);color:var(--text-dim);border-radius:999px;margin-left:6px;padding:1px 6px;font-size:10px}.drawer .body{flex-direction:column;flex:1;gap:14px;padding:16px;display:flex}.backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:55;animation:fade-in var(--t) var(--ease-out);background:#00000080;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal-overlay{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:200;animation:fade-in var(--t) var(--ease-out);background:#0000008c;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:linear-gradient(180deg, var(--bg-2) 0%, var(--bg-1) 100%);border:1px solid var(--line-2);border-radius:var(--radius-lg);width:100%;max-width:460px;box-shadow:var(--shadow-lg);animation:modal-in var(--t-slow) var(--ease-out);padding:22px}@keyframes modal-in{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.modal h3{margin:0 0 6px;font-size:16px;font-weight:600}.modal p{color:var(--text-dim);margin:0 0 18px;line-height:1.5}.modal .actions{justify-content:flex-end;gap:8px;display:flex}.toast-host{z-index:300;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:90px;right:18px}.toast{background:var(--bg-2);border:1px solid var(--line-2);border-radius:var(--radius);box-shadow:var(--shadow);pointer-events:auto;min-width:240px;max-width:380px;animation:toast-in .28s var(--ease-out);align-items:flex-start;gap:10px;padding:10px 14px;font-size:13px;display:flex}.toast.leaving{animation:toast-out .2s var(--ease) forwards}@keyframes toast-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes toast-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(20px)}}.toast .icon{flex-shrink:0;margin-top:1px}.toast .body{flex:1;line-height:1.4}.toast .title{margin-bottom:2px;font-weight:600}.toast .sub{color:var(--text-dim);font-size:12px}.toast.success .icon{color:var(--good)}.toast.success{border-left:3px solid var(--good)}.toast.error .icon{color:var(--bad)}.toast.error{border-left:3px solid var(--bad)}.toast.info .icon{color:var(--info)}.toast.info{border-left:3px solid var(--info)}.toast .close{color:var(--text-mute);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px;display:inline-flex}.toast .close:hover{color:var(--text);background:var(--bg-3)}.code-box{word-break:break-all;background:var(--bg);border-radius:var(--radius);border:1px solid var(--line);color:var(--text-2);padding:10px 12px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12.5px;line-height:1.5;position:relative}pre.code{white-space:pre-wrap;background:var(--bg-3);border-radius:var(--radius-sm);max-height:260px;margin:0;padding:10px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:11.5px;line-height:1.5;overflow:auto}.skel{background:linear-gradient(90deg, var(--bg-3) 0%, var(--bg-4) 50%, var(--bg-3) 100%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.4s ease-in-out infinite skel}@keyframes skel{0%{background-position:200% 0}to{background-position:-200% 0}}.spacer{flex:1}.muted{color:var(--text-dim)}.mono{font-family:ui-monospace,Cascadia Code,Consolas,monospace}.tabular{font-variant-numeric:tabular-nums}.small{font-size:12px}.tiny{font-size:11px}.row{align-items:center;gap:8px;display:flex}.col{flex-direction:column;gap:8px;display:flex}.flex-1{flex:1}.no-pad{padding:0}.tnum{font-variant-numeric:tabular-nums}.copyable{align-items:center;gap:6px;display:inline-flex}@media (width<=760px){:root{--side-w:0px}.app{grid-template-columns:1fr}.app>header .menu-btn{display:inline-flex}nav.side{top:var(--header-h);width:240px;transition:transform var(--t-slow) var(--ease-out);z-index:30;box-shadow:var(--shadow-lg);position:fixed;bottom:0;left:0;transform:translate(-260px)}nav.side.open{transform:translate(0)}main.page{padding:16px}.grid.k4{grid-template-columns:repeat(2,1fr)}.grid.k3,.grid.k2{grid-template-columns:1fr}.chat,.drawer{width:100vw}h1{font-size:18px}.app>header .who{display:none}}@media (width<=480px){.grid.k4{grid-template-columns:1fr}}.spin{animation:.9s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
