:root{color-scheme:dark;--ash-950: #0f1012;--ash-900: #121316;--ash-850: #17191c;--ash-800: #1d2024;--ash-750: #24272c;--ash-700: #2e3137;--ash-600: #3a3e45;--grey-500: #5f646b;--grey-400: #90959c;--grey-300: #a9adb3;--ash-200: #cfd2d6;--ash-100: #e4e5e8;--ash-50: #ececee;--ash-0: #f4f5f6;--bg: var(--ash-900);--bg-art: radial-gradient(120% 70% at 0% 0%, rgba(255, 255, 255, .07), transparent 60%), radial-gradient(90% 60% at 100% 15%, rgba(170, 178, 190, .08), transparent 65%), linear-gradient(180deg, var(--ash-850) 0%, var(--ash-950) 100%);--glass-1: rgba(42, 45, 50, .55);--glass-2: rgba(30, 32, 36, .78);--glass-3: rgba(255, 255, 255, .06);--glass-hover: rgba(255, 255, 255, .1);--glass-press: rgba(255, 255, 255, .14);--glass-inset: rgba(0, 0, 0, .28);--solid-1: #1f2226;--solid-2: #1b1d21;--scrim: rgba(8, 9, 10, .45);--blur-sm: 8px;--blur-md: 14px;--blur-lg: 20px;--glass-saturate: 140%;--divider: rgba(255, 255, 255, .06);--border: rgba(255, 255, 255, .09);--border-strong: rgba(255, 255, 255, .16);--border-focus: rgba(236, 236, 238, .55);--text: var(--ash-50);--text-dim: var(--grey-300);--text-faint: var(--grey-400);--text-on-primary: #16181b;--link: var(--ash-200);--primary: var(--ash-100);--primary-hover: var(--ash-0);--primary-press: var(--ash-200);--ok: #6fd49e;--ok-bg: rgba(111, 212, 158, .12);--ok-line: rgba(111, 212, 158, .34);--warn: #e6be6a;--warn-bg: rgba(230, 190, 106, .12);--warn-line: rgba(230, 190, 106, .34);--bad: #f07a76;--bad-bg: rgba(240, 122, 118, .14);--bad-line: rgba(240, 122, 118, .36);--bad-text: #f5a9a5;--live: #b8a9f0;--live-bg: rgba(184, 169, 240, .12);--live-line: rgba(184, 169, 240, .34);--r-xs: 6px;--r-sm: 10px;--r-md: 14px;--r-lg: 20px;--r-pill: 999px;--shadow-1: 0 1px 2px rgba(0, 0, 0, .28), 0 6px 18px rgba(0, 0, 0, .22);--shadow-2: 0 2px 8px rgba(0, 0, 0, .34), 0 16px 40px rgba(0, 0, 0, .4);--highlight: inset 0 1px 0 rgba(255, 255, 255, .06);--focus-ring: 0 0 0 2px var(--ash-900), 0 0 0 4px var(--border-focus);--sans: -apple-system, BlinkMacSystemFont, system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--fs-2xs: 11px;--fs-xs: 12px;--fs-sm: 13.5px;--fs-md: 15px;--fs-lg: 17px;--fs-xl: 20px;--fs-stat: 19px;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--lh-tight: 1.25;--lh: 1.5;--lh-prose: 1.6;--caps-tracking: .07em;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--tap: 44px;--tap-lg: 52px;--dur: .14s;--ease: cubic-bezier(.2, .7, .2, 1)}:root[data-theme=light]{color-scheme:light;--bg: #e6e7ea;--bg-art: radial-gradient(120% 70% at 0% 0%, rgba(255, 255, 255, .85), transparent 60%), linear-gradient(180deg, #eceef0 0%, #d9dbdf 100%);--glass-1: rgba(255, 255, 255, .55);--glass-2: rgba(248, 248, 250, .8);--glass-3: rgba(20, 22, 25, .05);--glass-hover: rgba(20, 22, 25, .08);--glass-press: rgba(20, 22, 25, .12);--glass-inset: rgba(255, 255, 255, .65);--solid-1: #f1f2f4;--solid-2: #f6f6f8;--divider: rgba(20, 22, 25, .07);--border: rgba(20, 22, 25, .1);--border-strong: rgba(20, 22, 25, .18);--border-focus: rgba(23, 25, 28, .55);--text: #17191c;--text-dim: #4f545b;--text-faint: #5f646b;--text-on-primary: #f4f5f6;--link: #2a2d32;--primary: #2a2d32;--primary-hover: #1d2024;--primary-press: #3a3e45;--ok: #1a6b43;--warn: #8a5a00;--bad: #b3261e;--bad-text: #b3261e;--live: #5b45b0;--shadow-1: 0 1px 2px rgba(20, 22, 25, .08), 0 6px 18px rgba(20, 22, 25, .08);--shadow-2: 0 2px 8px rgba(20, 22, 25, .1), 0 16px 40px rgba(20, 22, 25, .14);--highlight: inset 0 1px 0 rgba(255, 255, 255, .7);--focus-ring: 0 0 0 2px #e6e7ea, 0 0 0 4px var(--border-focus)}html{background:var(--bg)}body{background:transparent;color:var(--text);font:var(--fw-regular) var(--fs-md) / var(--lh) var(--sans);-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:var(--bg-art)}.glass,.glass-strong{border:1px solid var(--border);-webkit-backdrop-filter:blur(var(--blur-md)) saturate(var(--glass-saturate));backdrop-filter:blur(var(--blur-md)) saturate(var(--glass-saturate))}.glass{background:var(--glass-1);border-radius:var(--r-md);box-shadow:var(--highlight),var(--shadow-1)}.glass-strong{background:var(--glass-2);border-radius:var(--r-lg);box-shadow:var(--highlight),var(--shadow-2);-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(var(--glass-saturate));backdrop-filter:blur(var(--blur-lg)) saturate(var(--glass-saturate))}.glass-flat{background:var(--glass-1);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--highlight)}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.glass{background:var(--solid-1)}.glass-strong{background:var(--solid-2)}}:root[data-glass=off] .glass,:root[data-glass=off] .glass-strong{-webkit-backdrop-filter:none;backdrop-filter:none}:root[data-glass=off] .glass{background:var(--solid-1)}:root[data-glass=off] .glass-strong{background:var(--solid-2)}@media(prefers-reduced-transparency:reduce){.glass,.glass-strong{-webkit-backdrop-filter:none;backdrop-filter:none}.glass{background:var(--solid-1)}.glass-strong{background:var(--solid-2)}}.dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto;background:var(--grey-500)}.dot.ok{background:var(--ok);box-shadow:0 0 0 3px var(--ok-bg)}.dot.warn{background:var(--warn);box-shadow:0 0 0 3px var(--warn-bg)}.dot.err{background:var(--bad);box-shadow:0 0 0 3px var(--bad-bg)}*{box-sizing:border-box}:root{scrollbar-color:var(--border-strong) transparent}html,body,#root{height:100%}body{margin:0;background:transparent;overflow-wrap:break-word}h1,h2,h3,h4{margin:0;font-weight:var(--fw-semibold);line-height:var(--lh-tight)}h1{font-size:var(--fs-xl);letter-spacing:-.01em}h2{font-size:var(--fs-md)}h3{font-size:14px}a{color:var(--link);text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:2px}a:hover{text-decoration-color:currentColor}code,pre,.mono{font-family:var(--mono);font-size:12.5px}::placeholder{color:var(--text-faint);opacity:1}.muted{color:var(--text-dim)}.faint{color:var(--text-faint)}.small{font-size:var(--fs-xs)}.tiny-text{font-size:var(--fs-2xs)}.nowrap{white-space:nowrap}.right{text-align:right}.row{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.row.tight{gap:6px}.col{display:flex;flex-direction:column;gap:var(--sp-2);min-height:0}.grow{flex:1 1 auto;min-width:0}.spacer{flex:1 1 auto}.shell{display:flex;flex-direction:column;min-height:100%;height:100%}.topbar{display:flex;align-items:center;gap:10px;padding:10px 14px;padding-top:max(10px,env(safe-area-inset-top));background:var(--glass-2);border-bottom:1px solid var(--border);flex:0 0 auto;position:relative;z-index:20}.menu-wrap{margin-left:auto;position:relative}.menu-btn{appearance:none;display:flex;flex-direction:column;justify-content:center;gap:4px;width:var(--tap);height:var(--tap);margin:-5px -6px -5px 0;padding:0 12px;border:0;border-radius:var(--r-sm);background:transparent;cursor:pointer;touch-action:manipulation;transition:background-color var(--dur) var(--ease)}.menu-btn span{display:block;height:2px;border-radius:2px;background:var(--text-dim);transition:transform var(--dur) var(--ease),opacity var(--dur) var(--ease),background-color var(--dur) var(--ease)}.menu-btn[aria-expanded=true]{background:var(--glass-press)}.menu-btn[aria-expanded=true] span{background:var(--text)}.menu-btn[aria-expanded=true] span:nth-child(1){transform:translateY(6px) rotate(45deg)}.menu-btn[aria-expanded=true] span:nth-child(2){opacity:0}.menu-btn[aria-expanded=true] span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}.menu-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.menu{position:absolute;right:0;top:calc(100% + 10px);min-width:220px;display:flex;flex-direction:column;gap:2px;padding:6px;transform-origin:top right;animation:menu-in var(--dur) var(--ease)}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px) scale(.98)}}.menu-item{appearance:none;display:flex;align-items:center;gap:var(--sp-2);width:100%;min-height:var(--tap);padding:0 var(--sp-3);border:0;border-radius:var(--r-md);background:transparent;color:var(--text-dim);font:inherit;font-size:var(--fs-md);text-align:left;text-decoration:none;cursor:pointer;touch-action:manipulation;transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease)}@media(hover:hover){.menu-btn:hover{background:var(--glass-hover)}.menu-btn:hover span{background:var(--text)}.menu-item:hover{background:var(--glass-hover);color:var(--text)}}.menu-item:active{background:var(--glass-press)}.menu-item.active{color:var(--text);font-weight:var(--fw-semibold);background:var(--glass-3)}.menu-item.active:after{content:"";width:6px;height:6px;margin-left:auto;border-radius:50%;background:var(--primary)}.menu-item:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--border-focus)}.menu-sep{height:1px;margin:4px 8px;background:var(--divider)}.brand{display:flex;align-items:center;gap:10px;min-width:0}.brand-mark{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:linear-gradient(145deg,var(--primary-hover),var(--text-dim));box-shadow:var(--highlight),var(--shadow-1);color:var(--text-on-primary);font-weight:var(--fw-bold);font-size:var(--fs-md);flex:0 0 auto}.brand-text{font-weight:var(--fw-semibold);letter-spacing:.2px;white-space:nowrap}.topbar-right{display:flex;align-items:center;gap:var(--sp-2);margin-left:auto;min-width:0}.main{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--sp-4);padding-bottom:max(var(--sp-4),env(safe-area-inset-bottom));display:flex;flex-direction:column}.page{display:flex;flex-direction:column;gap:var(--sp-3);flex:1 1 auto;min-height:0}.main:has(>.page.flush){padding:0}.page.flush{gap:0}.page-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.panel{display:flex;flex-direction:column;flex:0 0 auto;min-height:0;overflow:hidden}.panel-head{display:flex;align-items:center;gap:var(--sp-2);padding:12px 14px 8px;flex:0 0 auto}.panel-head h2{color:var(--text-dim);font-size:var(--fs-xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--caps-tracking)}.panel-actions{display:flex;align-items:center;gap:6px;margin-left:auto;flex-wrap:wrap}.panel-body{padding:14px;min-height:0}.panel-head+.panel-body{padding-top:4px}.panel-body.scroll{overflow:auto;flex:1 1 auto;-webkit-overflow-scrolling:touch}.panel-body.flush{padding:0}.panel-body>.col{gap:14px}.btn{appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:var(--tap);padding:0 var(--sp-4);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--glass-3);box-shadow:var(--highlight);color:var(--text);font:inherit;font-size:var(--fs-sm);font-weight:var(--fw-semibold);line-height:1.2;text-decoration:none;white-space:nowrap;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:manipulation;transition:background-color var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease),transform var(--dur) var(--ease)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn .spinner{border-top-color:currentColor}.btn .spinner-wrap .muted{color:inherit}.btn.primary{background:var(--primary);border-color:transparent;color:var(--text-on-primary);box-shadow:var(--highlight),var(--shadow-1)}.btn.danger{background:var(--bad-bg);border-color:var(--bad-line);color:var(--bad-text)}.btn.ghost{background:transparent;border-color:transparent;box-shadow:none;color:var(--text-dim)}.btn.tiny{min-height:32px;padding:0 var(--sp-3);border-radius:var(--r-xs);font-size:var(--fs-xs)}.btn.icon{width:38px;min-width:38px;min-height:38px;padding:0;border-color:transparent;border-radius:var(--r-pill);background:transparent;box-shadow:none;color:var(--text-faint);font-size:20px;font-weight:var(--fw-regular);line-height:1}table.data .btn.tiny{min-height:26px;padding:0 6px}@media(hover:hover){.btn:hover:not(:disabled){background-color:var(--glass-hover);border-color:var(--border-strong)}.btn.primary:hover:not(:disabled){background-color:var(--primary-hover);border-color:transparent}.btn.danger:hover:not(:disabled){background-color:var(--bad-bg);background-image:linear-gradient(var(--bad-bg),var(--bad-bg));border-color:var(--bad)}.btn.ghost:hover:not(:disabled){border-color:transparent;color:var(--text)}.btn.icon:hover:not(:disabled){border-color:transparent;background-color:var(--bad-bg);color:var(--bad-text)}}.btn:active:not(:disabled){background-color:var(--glass-press);transform:scale(.98)}.btn.primary:active:not(:disabled){background-color:var(--primary-press)}.btn.danger:active:not(:disabled){background-color:var(--bad-line)}.btn.icon:active:not(:disabled){background-color:var(--bad-line);color:var(--bad-text)}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}input[type=text],input[type=password],input[type=search],input[type=number],input[type=date],select,textarea{appearance:none;-webkit-appearance:none;width:100%;min-height:var(--tap);padding:10px 12px;background:var(--glass-inset);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:none;color:var(--text);font:inherit;font-size:16px;line-height:1.35;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}textarea{resize:vertical;line-height:var(--lh)}select{padding-right:34px;background-image:linear-gradient(45deg,transparent 50%,var(--text-dim) 50%),linear-gradient(135deg,var(--text-dim) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px;background-repeat:no-repeat;cursor:pointer}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px var(--glass-hover)}.field{display:flex;flex-direction:column;gap:6px}.row>.field{flex:1 1 140px;min-width:0}.field-label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-dim);text-transform:uppercase;letter-spacing:var(--caps-tracking)}.field-hint{font-size:var(--fs-xs);color:var(--text-faint);line-height:1.45}.toggle{display:flex;align-items:flex-start;gap:var(--sp-3);cursor:pointer;padding:4px 0}.toggle input{position:absolute;opacity:0;width:1px;height:1px}.toggle-track{flex:0 0 auto;width:42px;height:26px;margin-top:-3px;border-radius:var(--r-pill);background:var(--glass-inset);border:1px solid var(--border-strong);position:relative;transition:background-color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.toggle-knob{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--text-faint);box-shadow:var(--shadow-1);transition:transform var(--dur) var(--ease),background-color var(--dur) var(--ease)}.toggle input:checked+.toggle-track{background:var(--primary);border-color:transparent}.toggle input:checked+.toggle-track .toggle-knob{transform:translate(16px);background:var(--text-on-primary)}.toggle input:focus-visible+.toggle-track{box-shadow:var(--focus-ring)}.toggle-text{display:flex;flex-direction:column;gap:2px;font-size:var(--fs-sm)}.segmented{display:inline-flex;max-width:100%;padding:3px;gap:2px;background:var(--glass-inset);border:1px solid var(--border);border-radius:var(--r-pill);overflow-x:auto;scrollbar-width:none}.segmented::-webkit-scrollbar{display:none}.field>.segmented{align-self:flex-start}.seg{appearance:none;flex:0 0 auto;min-height:32px;padding:0 14px;border:0;border-radius:var(--r-pill);background:transparent;color:var(--text-dim);font:inherit;font-size:13px;font-weight:var(--fw-semibold);white-space:nowrap;cursor:pointer;touch-action:manipulation;transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease)}.seg.active{background:var(--primary);box-shadow:var(--shadow-1);color:var(--text-on-primary)}.seg:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--border-focus)}@media(hover:hover){.seg:not(.active):hover{color:var(--text)}}.checkline{display:inline-flex;align-items:center;gap:var(--sp-2);cursor:pointer;font-size:12.5px}.checkline input{width:18px;height:18px;min-height:0;margin:0;accent-color:var(--primary)}.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:var(--r-pill);font-size:11.5px;font-family:var(--mono);border:1px solid var(--border);background:var(--glass-3);color:var(--text-dim);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}.pill.good{color:var(--ok);background:var(--ok-bg);border-color:var(--ok-line)}.pill.warn{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-line)}.pill.bad{color:var(--bad);background:var(--bad-bg);border-color:var(--bad-line)}.pill.live{color:var(--live);background:var(--live-bg);border-color:var(--live-line)}.spinner-wrap{display:inline-flex;align-items:center;gap:7px}.spinner{width:13px;height:13px;border-radius:50%;border:2px solid var(--border-strong);border-top-color:var(--primary);animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2s}.menu{animation:none}.btn,.menu-btn,.menu-btn span,.menu-item,.seg,.toggle-track,.toggle-knob{transition:none}.btn:active:not(:disabled){transform:none}}.errorbox{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--r-sm);border:1px solid var(--bad-line);background:var(--bad-bg);color:var(--bad-text);font-size:13px}.errorbox>span{flex:1 1 auto;min-width:0}.empty{padding:20px 12px;color:var(--text-faint);font-size:13px;text-align:center}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:var(--sp-2)}.stat{background:var(--glass-inset);border:1px solid var(--divider);border-radius:var(--r-sm);padding:10px 12px;min-width:0}.page>.stats .stat{background:var(--glass-1);border-color:var(--border);border-radius:var(--r-md);box-shadow:var(--highlight)}.stat-label{font-size:var(--fs-2xs);font-weight:var(--fw-semibold);color:var(--text-faint);text-transform:uppercase;letter-spacing:var(--caps-tracking)}.stat-value{font-family:var(--mono);font-size:var(--fs-stat);font-variant-numeric:tabular-nums;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stat-sub{font-size:11.5px;color:var(--text-dim);margin-top:2px}.table-wrap{overflow:auto;max-height:52vh;-webkit-overflow-scrolling:touch}.chart-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}table.data{width:100%;border-collapse:collapse;font-size:12.5px}table.data th{text-align:left;font-size:var(--fs-2xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);padding:7px 8px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--solid-1);white-space:nowrap;z-index:1}table.data td{padding:6px 8px;border-bottom:1px solid var(--divider);font-family:var(--mono);font-variant-numeric:tabular-nums;vertical-align:top}table.data td.wrap{font-family:var(--sans);white-space:pre-wrap;word-break:break-word}@media(hover:hover){table.data tr:hover td{background:var(--glass-3)}}.md>*:first-child{margin-top:0}.md>*:last-child{margin-bottom:0}.md p,.md ul,.md ol,.md blockquote,.md pre,.md table{margin:0 0 10px}.md ul,.md ol{padding-left:20px}.md li{margin:3px 0}.md h1,.md h2,.md h3,.md h4{margin:16px 0 8px;font-size:var(--fs-md)}.md h1{font-size:var(--fs-lg)}.md strong{font-weight:var(--fw-semibold);color:var(--text)}.md code{background:var(--glass-inset);border:1px solid var(--divider);border-radius:5px;padding:1px 5px}.md pre{background:var(--glass-inset);border:1px solid var(--divider);border-radius:var(--r-sm);padding:10px 12px;overflow-x:auto}.md pre code{background:transparent;border:0;padding:0}.md blockquote{border-left:2px solid var(--border-strong);padding-left:12px;color:var(--text-dim)}.md table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}.md th,.md td{border:1px solid var(--border);padding:6px 8px;text-align:left}.md th{background:var(--glass-3);font-weight:var(--fw-semibold)}.md hr{border:0;border-top:1px solid var(--border);margin:14px 0}.login-wrap{flex:1 1 auto;display:grid;place-items:center;padding:24px 16px;padding-top:max(24px,env(safe-area-inset-top));padding-bottom:max(24px,env(safe-area-inset-bottom))}.login-card{width:100%;max-width:360px;padding:28px 24px 24px;display:flex;flex-direction:column;gap:var(--sp-4)}.login-card .brand{flex-direction:column;justify-content:center;gap:var(--sp-3)}.login-card .brand-mark{width:44px;height:44px;border-radius:var(--r-md);font-size:var(--fs-xl)}.login-card .brand-text{font-size:var(--fs-lg)}.login-card .btn{min-height:var(--tap-lg);border-radius:var(--r-md);font-size:var(--fs-md)}.chat-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:0;flex:1 1 auto;min-height:0}.chat-threads{display:flex;flex-direction:column;min-height:0;background:var(--glass-inset);border-right:1px solid var(--border)}.chat-threads-head{padding:12px 10px 8px;flex:0 0 auto}.btn.new-chat{width:100%;justify-content:flex-start}.chat-threads-body{flex:1 1 auto;min-height:0;overflow:auto;padding:0 10px 10px;-webkit-overflow-scrolling:touch}.chat-main{display:flex;flex-direction:column;min-height:0;min-width:0}.chat-head{display:flex;align-items:center;gap:var(--sp-2);min-height:56px;padding:8px 16px;border-bottom:1px solid var(--divider);flex:0 0 auto}.chat-head h2{font-size:14px;font-weight:var(--fw-semibold);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-scroll{flex:1 1 auto;min-height:0;overflow:auto;padding:20px 16px;-webkit-overflow-scrolling:touch}.chat-scroll .messages{max-width:760px;margin:0 auto}.thread-list{display:flex;flex-direction:column;gap:4px}.thread-item{display:flex;align-items:center;gap:6px;padding:4px 4px 4px 12px;min-height:48px;border-radius:var(--r-sm);cursor:pointer;border:1px solid transparent;text-align:left;background:var(--glass-3);color:inherit;font:inherit;width:100%;transition:background-color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.thread-item.active{background:var(--glass-press);border-color:var(--border-strong)}.thread-open{appearance:none;border:0;background:transparent;color:inherit;font:inherit;padding:2px 0;cursor:pointer;text-align:left;flex:1 1 auto;min-width:0;border-radius:var(--r-xs);touch-action:manipulation}.thread-open:focus-visible{outline:none;box-shadow:var(--focus-ring)}.thread-title{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-sm)}.thread-item.active .thread-title{font-weight:var(--fw-semibold)}.thread-sub{font-size:var(--fs-2xs);color:var(--text-faint);font-family:var(--mono)}.messages{display:flex;flex-direction:column;gap:18px}.msg{display:flex;flex-direction:column;gap:4px;max-width:88%}.msg.user{align-self:flex-end;align-items:flex-end}.msg.assistant,.msg.system{align-self:flex-start}.msg-body{padding:0;font-size:var(--fs-md);line-height:var(--lh-prose)}.msg.assistant{max-width:100%}.msg.user .msg-body{padding:10px 14px;border-radius:var(--r-lg) var(--r-lg) var(--r-xs) var(--r-lg);border:1px solid var(--border);background:var(--glass-3);box-shadow:var(--highlight)}.msg.system .msg-body{color:var(--bad-text)}.msg-meta{font-size:var(--fs-2xs);color:var(--text-faint);font-family:var(--mono);display:flex;gap:var(--sp-2);flex-wrap:wrap}.msg-image{max-width:200px;border-radius:var(--r-sm);border:1px solid var(--border);display:block}.composer{display:flex;flex-direction:column;gap:var(--sp-2);border-top:1px solid var(--border);padding:12px 16px;padding-bottom:max(12px,env(safe-area-inset-bottom));background:var(--glass-2);flex:0 0 auto}.composer>*{width:100%;max-width:760px;margin-left:auto;margin-right:auto}.composer-row{display:flex;gap:var(--sp-2);align-items:flex-end}.composer textarea{min-height:var(--tap);max-height:150px;border-radius:var(--r-md)}.composer-opts{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:var(--fs-xs);color:var(--text-dim)}.camera-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#000000d9;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.camera-body{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3, 12px);max-width:90vw;max-height:90vh}.camera-preview{width:100%;max-width:640px;max-height:70vh;border-radius:var(--radius-lg, 12px);object-fit:cover;background:#000}.camera-controls{display:flex;gap:var(--sp-3, 12px);align-items:center}.camera-shutter{width:64px;height:64px;border-radius:50%;font-size:var(--fs-sm, 14px);font-weight:600}.attach{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;padding:6px 8px;background:var(--glass-inset);border:1px dashed var(--border-strong);border-radius:var(--r-sm);font-size:var(--fs-xs);color:var(--text-dim)}.attach img{width:34px;height:34px;object-fit:cover;border-radius:var(--r-xs)}@media(hover:hover){.thread-item:not(.active):hover{background:var(--glass-hover)}}.two-col{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--sp-3);flex:0 0 auto;min-height:0}.list-rows{display:flex;flex-direction:column;gap:6px}.list-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--divider);border-radius:var(--r-sm);background:var(--glass-3);color:inherit;text-decoration:none;transition:background-color var(--dur) var(--ease),border-color var(--dur) var(--ease)}a.list-row:active{background:var(--glass-press)}@media(hover:hover){.list-row:hover{background:var(--glass-hover);border-color:var(--border)}}.bullets{margin:0;padding-left:18px;font-size:var(--fs-sm)}.bullets li{margin:4px 0}.kv{display:flex;gap:var(--sp-2);font-size:13px;padding:4px 0;border-bottom:1px solid var(--divider)}.kv:last-child{border-bottom:0}.kv .k{color:var(--text-dim);font-family:var(--mono);font-size:var(--fs-xs);flex:0 0 96px}.ticker{font-family:var(--mono);font-size:12.5px;line-height:var(--lh-prose);color:var(--text-dim);white-space:pre-wrap;word-break:break-word;max-height:44vh;overflow:auto;-webkit-overflow-scrolling:touch}.ticker .seg-new{color:var(--text)}.chart{width:100%;min-width:700px;height:auto;display:block}.chart .chart-grid{stroke:var(--border)}.chart .chart-tick{fill:var(--text-faint)}.chart .chart-label{fill:var(--text-dim)}.chart .chart-target{stroke:var(--bad)}.legend{display:flex;gap:10px;flex-wrap:wrap;font-size:11.5px;color:var(--text-dim)}.legend-item{display:inline-flex;align-items:center;gap:5px}.swatch{width:10px;height:10px;border-radius:3px;display:inline-block}.debug-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--sp-2)}.event-rows{font-family:var(--mono);font-size:11.5px;display:flex;flex-direction:column;max-height:52vh;overflow:auto;-webkit-overflow-scrolling:touch}.event-row{display:grid;grid-template-columns:62px 74px 1fr;gap:var(--sp-2);padding:3px 6px;border-bottom:1px solid var(--divider);align-items:baseline}.event-row .ev-name{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-row .ev-data{color:var(--text-dim);word-break:break-word;min-width:0}.event-row.sev-warn .ev-name{color:var(--warn)}.event-row.sev-error{background:var(--bad-bg)}.event-row.sev-error .ev-name{color:var(--bad)}.event-row.sev-debug .ev-name{color:var(--text-faint)}@media(hover:hover){.event-row:hover{background:var(--glass-3)}}.counters{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:2px 14px;font-family:var(--mono);font-size:11.5px}.counter{display:flex;gap:var(--sp-2);padding:2px 0;border-bottom:1px solid var(--divider)}.counter .c-name{color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto}.counter .c-val{color:var(--text)}@media(max-width:900px){.chat-layout,.two-col{grid-template-columns:minmax(0,1fr)}.chat-layout{grid-template-rows:auto minmax(0,1fr)}.chat-threads{max-height:170px;border-right:0;border-bottom:1px solid var(--border)}.chat-threads-head{padding:8px 10px 6px}.thread-item{min-height:44px}.chat-head{min-height:52px;padding:6px 12px}.chat-scroll{padding:16px 12px}.composer{padding-left:12px;padding-right:12px}.msg{max-width:96%}.main{padding:var(--sp-3);padding-bottom:max(var(--sp-3),env(safe-area-inset-bottom))}.panel-head{padding:10px 12px 6px}.panel-body{padding:12px}.topbar .brand-text{display:none}.menu-wrap{position:static}.menu{left:8px;right:8px;top:calc(100% + 6px);min-width:0;transform-origin:top center}.event-row{grid-template-columns:62px 1fr;gap:6px}.event-row .ev-data{grid-column:1 / -1}.kv .k{flex-basis:78px}}@media(hover:hover){.thread-item .btn.icon{opacity:0}.thread-item:hover .btn.icon,.thread-item .btn.icon:focus-visible{opacity:1}}
