:root{--color-background: #fefefe;--color-background-soft: #f6f6f7;--color-background-mute: #f1f1f3;--color-border: #e4e4e7;--color-border-strong: #cfcfd6;--color-heading: #1c1c1f;--color-text: #3a3a40;--color-text-muted: #7a7a82;--color-primary: #12a783;--color-primary-dark: #0c8267;--color-on-primary: #053328;--color-primary-on-surface: #0e8468;--color-success: #16a34a;--color-warning: #d97706;--color-danger: #dc2626;--color-danger-on-surface: #d32424;--color-info: #2563eb;--color-info-on-surface: #1d4ed8;--color-card: #ffffff;--color-overlay: rgba(20, 20, 24, .45);--radius: 12px;--radius-sm: 8px;--radius-xs: 6px;--shadow-card: 0 1px 2px rgba(16, 16, 20, .04), 0 1px 1px rgba(16, 16, 20, .03);--shadow-pop: 0 12px 32px rgba(16, 16, 20, .18), 0 2px 6px rgba(16, 16, 20, .08);--brand-wash: color-mix(in srgb, var(--color-primary-on-surface) 10%, transparent);--brand-wash-hover: color-mix(in srgb, var(--color-primary-on-surface) 16%, transparent);--brand-edge: color-mix(in srgb, var(--color-primary-on-surface) 35%, transparent);--brand-ring: color-mix(in srgb, var(--color-primary-on-surface) 45%, transparent);--tone-ok: var(--color-success);--tone-ok-wash: color-mix(in srgb, var(--color-success) 14%, transparent);--tone-ok-text: #15803d;--tone-warn: var(--color-warning);--tone-warn-wash: color-mix(in srgb, var(--color-warning) 16%, transparent);--tone-warn-text: #b45309;--tone-bad: var(--color-danger);--tone-bad-wash: color-mix(in srgb, var(--color-danger) 12%, transparent);--tone-bad-text: var(--color-danger-on-surface);--tone-info: var(--color-info);--tone-info-wash: color-mix(in srgb, var(--color-info) 12%, transparent);--tone-info-text: var(--color-info-on-surface);--tone-neutral: var(--color-text-muted);--tone-neutral-wash: var(--color-background-mute);--tone-neutral-text: var(--color-text-muted);--chart-1: var(--color-primary-on-surface);--chart-2: var(--color-info);--chart-grid: var(--color-border);--chart-text: var(--color-text-muted);--sidebar-width: 240px;--sidebar-width-collapsed: 64px;--content-max: 1280px;--icon-btn-size: 32px;--icon-btn-icon: 16px;--font-mono: ui-monospace, "Cascadia Mono", "SF Mono", Menlo, Consolas, monospace;--duration-fast: .12s;--duration: .18s}@media(prefers-color-scheme:dark){:root{--color-background: #0a0a0b;--color-background-soft: #1b1b1e;--color-background-mute: #2a2a2e;--color-border: rgba(255, 255, 255, .1);--color-border-strong: rgba(255, 255, 255, .2);--color-heading: #ffffff;--color-text: #d4d4d8;--color-text-muted: #9a9aa3;--color-card: #141416;--color-overlay: rgba(0, 0, 0, .6);--color-primary-on-surface: #34d0a8;--color-danger-on-surface: #f87171;--color-info-on-surface: #93b4ff;--tone-ok-text: #4ade80;--tone-warn-text: #fbbf24;--shadow-card: none;--shadow-pop: 0 12px 32px rgba(0, 0, 0, .6)}}@media(prefers-reduced-motion:reduce){:root{--duration-fast: 0ms;--duration: 0ms}}*{box-sizing:border-box}html{height:100%}body{margin:0;min-height:100%;background:var(--color-background);color:var(--color-text);font:14px/1.5 system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--color-primary-on-surface);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{color:var(--color-heading);margin:0;font-weight:650;letter-spacing:-.01em}h1{font-size:1.45rem}h2{font-size:1.05rem}h3{font-size:.95rem}p{margin:0 0 .6rem}code,.mono{font-family:var(--font-mono);font-size:.85em}code{background:var(--color-background-mute);padding:.1rem .35rem;border-radius:4px;color:var(--color-heading)}:focus-visible{outline:2px solid var(--brand-ring);outline-offset:2px}button{font:inherit}::selection{background:var(--brand-wash-hover)}.layout{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);min-height:100vh}.main{padding:1.5rem 2rem 3rem;max-width:var(--content-max);width:100%;min-width:0}.page{display:flex;flex-direction:column;gap:1rem}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.span-2{grid-column:span 2}@media(max-width:1024px){.layout{grid-template-columns:var(--sidebar-width-collapsed) minmax(0,1fr)}.main{padding:1.25rem 1.25rem 3rem}.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.grid-2,.grid-3{grid-template-columns:minmax(0,1fr)}.span-2{grid-column:auto}}.sidebar{position:sticky;top:0;height:100vh;background:var(--color-background-soft);border-right:1px solid var(--color-border);padding:1rem .75rem;display:flex;flex-direction:column;gap:.15rem;overflow:hidden auto}.sidebar .brand{display:flex;align-items:center;gap:.6rem;font-weight:700;color:var(--color-heading);padding:.35rem .5rem;margin-bottom:.75rem;white-space:nowrap}.sidebar a.brand:hover{text-decoration:none}.sidebar .brand .logo{width:28px;height:28px;flex:none;border-radius:8px;background:var(--color-primary);color:var(--color-on-primary);display:grid;place-items:center;font-size:.8rem;font-weight:800}.sidebar .section{color:var(--color-text-muted);font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;font-weight:600;padding:.9rem .6rem .3rem;white-space:nowrap}.sidebar .nav-link{display:flex;align-items:center;gap:.6rem;padding:.5rem .6rem;border-radius:var(--radius-sm);color:var(--color-text);text-decoration:none;white-space:nowrap;transition:background var(--duration-fast),color var(--duration-fast)}.sidebar .nav-link .icon{flex:none;color:var(--color-text-muted)}.sidebar .nav-link:hover{background:var(--color-background-mute);text-decoration:none}.sidebar .nav-link.router-link-active{background:var(--brand-wash);color:var(--color-primary-on-surface);font-weight:600}.sidebar .nav-link.router-link-active .icon{color:var(--color-primary-on-surface)}.sidebar .spacer{flex:1}.sidebar .user{padding:.5rem .6rem;border-top:1px solid var(--color-border);margin-top:.5rem;display:flex;flex-direction:column;gap:.5rem}.sidebar .user .email{color:var(--color-text-muted);font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:1024px){.sidebar{padding:1rem .5rem}.sidebar .brand span,.sidebar .section,.sidebar .nav-link .label,.sidebar .user .email,.sidebar .user .btn .label{display:none}.sidebar .brand{justify-content:center;padding:.35rem 0}.sidebar .nav-link{justify-content:center;padding:.55rem 0}.sidebar .section+.nav-link{margin-top:.75rem}.sidebar .user{padding:.5rem 0;align-items:center}}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap}.page-header .titles{display:flex;flex-direction:column;gap:.2rem;min-width:0}.page-header .subtitle{color:var(--color-text-muted)}.page-header .eyebrow{color:var(--color-text-muted);font-size:.8rem}.page-header .eyebrow a{color:inherit}.page-header .actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.card{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:1rem 1.25rem;min-width:0}.card.flush{padding:0;overflow:hidden}.card-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem;flex-wrap:wrap}.card.flush .card-head{padding:.9rem 1.25rem 0;margin-bottom:.6rem}.card-head .hint{color:var(--color-text-muted);font-size:.85rem}.card-foot{padding:.6rem 1.25rem;border-top:1px solid var(--color-border);color:var(--color-text-muted);font-size:.85rem;display:flex;justify-content:space-between;align-items:center;gap:.5rem}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1rem}.tile{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:.9rem 1rem;display:flex;flex-direction:column;gap:.15rem;min-width:0;color:inherit;text-decoration:none;position:relative}a.tile:hover{text-decoration:none;border-color:var(--color-border-strong)}.tile .label{color:var(--color-text-muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;font-weight:600}.tile .value{font-size:1.55rem;font-weight:700;color:var(--color-heading);line-height:1.2;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile .hint{color:var(--color-text-muted);font-size:.8rem}.tile.ok .value{color:var(--tone-ok-text)}.tile.warn .value{color:var(--tone-warn-text)}.tile.bad .value{color:var(--tone-bad-text)}.tile.info .value{color:var(--tone-info-text)}.kv{display:grid;grid-template-columns:max-content 1fr;gap:.35rem 1.25rem;align-items:baseline;margin:0}.kv dt{color:var(--color-text-muted);font-size:.85rem}.kv dd{margin:0;min-width:0;overflow-wrap:anywhere}.table-wrap{overflow:auto;max-height:min(70vh,720px)}table.data{width:100%;border-collapse:separate;border-spacing:0}table.data th,table.data td{text-align:left;padding:.55rem .9rem;border-bottom:1px solid var(--color-border);vertical-align:middle;white-space:nowrap}table.data td.wrap{white-space:normal}table.data th{position:sticky;top:0;z-index:1;background:var(--color-card);color:var(--color-text-muted);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;-webkit-user-select:none;user-select:none}table.data th.sortable{cursor:pointer}table.data th.sortable:hover{color:var(--color-heading)}table.data th .th-inner{display:inline-flex;align-items:center;gap:.3rem}table.data th .sort-icon{opacity:.35}table.data th.sorted{color:var(--color-heading)}table.data th.sorted .sort-icon{opacity:1;color:var(--color-primary-on-surface)}table.data th.num,table.data td.num{text-align:right;font-variant-numeric:tabular-nums}table.data tbody tr:last-child td{border-bottom:none}table.data tbody tr:hover td{background:var(--color-background-soft)}table.data tbody tr.clickable{cursor:pointer}table.data tbody tr.clickable:focus-visible{outline:2px solid var(--brand-ring);outline-offset:-2px}table.data .cell-primary{color:var(--color-heading);font-weight:600}table.data .cell-sub{color:var(--color-text-muted);font-size:.8rem}.table-toolbar{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.table-toolbar .grow{flex:1}.table-toolbar .count{color:var(--color-text-muted);font-size:.85rem;white-space:nowrap}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.1rem .55rem .1rem .45rem;border-radius:999px;font-size:.74rem;font-weight:600;line-height:1.5;background:var(--tone-neutral-wash);color:var(--tone-neutral-text);white-space:nowrap}.badge .dot{width:7px;height:7px;border-radius:50%;background:var(--tone-neutral);flex:none}.badge.ok{background:var(--tone-ok-wash);color:var(--tone-ok-text)}.badge.ok .dot{background:var(--tone-ok)}.badge.warn{background:var(--tone-warn-wash);color:var(--tone-warn-text)}.badge.warn .dot{background:var(--tone-warn)}.badge.bad{background:var(--tone-bad-wash);color:var(--tone-bad-text)}.badge.bad .dot{background:var(--tone-bad)}.badge.info{background:var(--tone-info-wash);color:var(--tone-info-text)}.badge.info .dot{background:var(--tone-info)}.badge.pulse .dot{box-shadow:0 0 0 0 var(--tone-ok);animation:pulse 2s infinite}@keyframes pulse{70%{box-shadow:0 0 0 5px transparent}to{box-shadow:0 0 0 0 transparent}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border:1px solid var(--color-border-strong);background:var(--color-card);color:var(--color-heading);border-radius:var(--radius-sm);padding:.42rem .85rem;cursor:pointer;font-weight:500;line-height:1.3;white-space:nowrap;text-decoration:none;transition:background var(--duration-fast),border-color var(--duration-fast),color var(--duration-fast)}.btn:hover{background:var(--color-background-soft);text-decoration:none}.btn.primary{background:var(--color-primary);border-color:var(--color-primary-dark);color:var(--color-on-primary);font-weight:600}.btn.primary:hover{background:var(--color-primary-dark)}.btn.ghost{border-color:transparent;background:transparent;color:var(--color-text)}.btn.ghost:hover{background:var(--color-background-mute);color:var(--color-heading)}.btn.danger{color:var(--color-danger-on-surface);border-color:color-mix(in srgb,var(--color-danger) 40%,transparent)}.btn.danger:hover{background:var(--tone-bad-wash)}.btn.danger.solid{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.btn.small{padding:.25rem .6rem;font-size:.8rem}.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed}.btn.icon-only{width:var(--icon-btn-size);height:var(--icon-btn-size);padding:0;border-radius:var(--radius-sm)}.btn .icon{flex:none}.btn.link{border:none;background:none;padding:0;color:var(--color-primary-on-surface);font-weight:500}.btn.link:hover{text-decoration:underline}.btn.loading{position:relative;color:transparent;pointer-events:none}.btn.loading:after{content:"";position:absolute;inset:0;margin:auto;width:14px;height:14px;border-radius:50%;border:2px solid var(--color-text-muted);border-top-color:transparent;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}input,select,textarea{border:1px solid var(--color-border-strong);background:var(--color-background);color:var(--color-text);border-radius:var(--radius-sm);padding:.42rem .7rem;font:inherit;width:100%;min-width:0;transition:border-color var(--duration-fast)}input:focus,select:focus,textarea:focus{border-color:var(--brand-edge);outline:2px solid var(--brand-ring);outline-offset:0}input:disabled,select:disabled{opacity:.6}select{width:auto;padding-right:1.6rem}label{display:block;font-size:.82rem;color:var(--color-text-muted);margin:.7rem 0 .25rem;font-weight:500}label:first-child{margin-top:0}.search{position:relative;max-width:22rem;width:100%}.search .icon{position:absolute;left:.6rem;top:50%;transform:translateY(-50%);color:var(--color-text-muted);pointer-events:none}.search input{padding-left:2rem}.segmented{display:inline-flex;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);overflow:hidden}.segmented button{border:none;background:transparent;color:var(--color-text);padding:.32rem .75rem;cursor:pointer;font-size:.85rem;font-weight:500;border-right:1px solid var(--color-border)}.segmented button:last-child{border-right:none}.segmented button:hover{background:var(--color-background-soft)}.segmented button.active{background:var(--brand-wash);color:var(--color-primary-on-surface);font-weight:600}.chips{display:flex;gap:.4rem;flex-wrap:wrap}.chip{border:1px solid var(--color-border-strong);background:transparent;color:var(--color-text);border-radius:999px;padding:.2rem .7rem;cursor:pointer;font-size:.82rem}.chip:hover{background:var(--color-background-soft)}.chip.active{background:var(--brand-wash);border-color:var(--brand-edge);color:var(--color-primary-on-surface);font-weight:600}.error{color:var(--color-danger-on-surface)}.muted{color:var(--color-text-muted)}.small{font-size:.85rem}.row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:.5rem}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.num{font-variant-numeric:tabular-nums}.login{max-width:420px;margin:10vh auto 0}.login .brand{display:flex;align-items:center;gap:.6rem;margin-bottom:1rem}.login .brand .logo{width:36px;height:36px;border-radius:10px;background:var(--color-primary);color:var(--color-on-primary);display:grid;place-items:center;font-weight:800}.chart{height:280px;position:relative}.chart.small{height:220px}pre.json{white-space:pre-wrap;word-break:break-all;font-size:.78rem;font-family:var(--font-mono);background:var(--color-background-mute);padding:.5rem .65rem;border-radius:var(--radius-xs);margin:0;color:var(--color-heading)}.list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.list li{display:flex;align-items:center;gap:.75rem;padding:.55rem 0;border-bottom:1px solid var(--color-border)}.list li:last-child{border-bottom:none}.list .grow{flex:1;min-width:0}.progress{height:6px;border-radius:999px;background:var(--color-background-mute);overflow:hidden;min-width:80px}.progress .bar{height:100%;border-radius:999px;background:var(--tone-ok);transition:width var(--duration)}.progress.warn .bar{background:var(--tone-warn)}.progress.bad .bar{background:var(--tone-bad)}.pairing-code{font-family:var(--font-mono);font-size:1.8rem;letter-spacing:.12em;font-weight:700;color:var(--color-heading);background:var(--color-background-mute);padding:.6rem 1rem;border-radius:var(--radius-sm);overflow-wrap:anywhere}.skeleton{background:linear-gradient(90deg,var(--color-background-mute) 25%,var(--color-background-soft) 50%,var(--color-background-mute) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:var(--radius-xs)}@keyframes shimmer{to{background-position:-200% 0}}.skeleton-line{height:.85em;margin:.35em 0}.skeleton-block{min-height:6rem}.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.35rem;padding:2.25rem 1rem;color:var(--color-text-muted)}.empty .icon{color:var(--color-text-muted);opacity:.7;margin-bottom:.25rem}.empty .title{color:var(--color-heading);font-weight:600}.empty .btn{margin-top:.5rem}.notice{display:flex;gap:.6rem;align-items:flex-start;padding:.7rem .9rem;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-background-soft)}.notice .icon{flex:none;margin-top:.1rem}.notice.bad{border-color:color-mix(in srgb,var(--color-danger) 35%,transparent);background:var(--tone-bad-wash);color:var(--tone-bad-text)}.notice.warn{border-color:color-mix(in srgb,var(--color-warning) 35%,transparent);background:var(--tone-warn-wash);color:var(--tone-warn-text)}.notice.info{border-color:color-mix(in srgb,var(--color-info) 35%,transparent);background:var(--tone-info-wash);color:var(--tone-info-text)}.notice .body{flex:1;min-width:0}.notice .title{font-weight:600}.toast-host{position:fixed;right:1rem;bottom:1rem;display:flex;flex-direction:column;gap:.5rem;z-index:50;max-width:min(420px,calc(100vw - 2rem))}.toast{display:flex;align-items:flex-start;gap:.6rem;background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-pop);padding:.7rem .8rem;animation:toast-in var(--duration) ease-out}.toast .icon{flex:none;margin-top:.1rem}.toast.bad{border-left:3px solid var(--tone-bad)}.toast.bad .icon{color:var(--tone-bad-text)}.toast.ok{border-left:3px solid var(--tone-ok)}.toast.ok .icon{color:var(--tone-ok-text)}.toast.info{border-left:3px solid var(--tone-info)}.toast .body{flex:1;min-width:0;overflow-wrap:anywhere}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}}.dialog-backdrop{position:fixed;inset:0;background:var(--color-overlay);display:grid;place-items:center;z-index:40;padding:1rem}.dialog{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-pop);padding:1.25rem 1.5rem;width:100%;max-width:440px;display:flex;flex-direction:column;gap:.75rem;animation:toast-in var(--duration) ease-out}.dialog .dialog-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.5rem}.countdown{font-variant-numeric:tabular-nums}.countdown.bad{color:var(--tone-bad-text)}
