*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--sans);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.block{display:block}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.border{border-width:1px}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{--bg: #0d1117;--bg-elev: #161b22;--bg-elev2: #1c2230;--border: #262c36;--border-soft: #21262d;--text: #e6edf3;--text-dim: #8b949e;--text-faint: #6e7681;--accent: #2f81f7;--green: #3fb950;--amber: #d29922;--red: #f85149;--purple: #a371f7;--mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--radius: 8px;--cell-pad-y: 5px;--cell-pad-x: 10px;--base-font: 13px}[data-density=compact]{--cell-pad-y: 3px;--cell-pad-x: 8px;--base-font: 12px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:var(--base-font);-webkit-font-smoothing:antialiased}#root{display:flex;flex-direction:column}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.topbar{display:flex;align-items:center;gap:16px;padding:10px 18px;background:var(--bg-elev);border-bottom:1px solid var(--border);flex-shrink:0}.brand{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:.2px;color:var(--text)}.brand:hover{text-decoration:none}.brand .logo{width:22px;height:22px;border-radius:6px;background:linear-gradient(135deg,var(--accent),var(--purple))}.brand small{color:var(--text-faint);font-weight:400;font-size:11px}.spacer{flex:1}.section-nav{display:flex;gap:4px}.section-nav a{padding:5px 12px;border-radius:6px;font-size:12px;color:var(--text-dim);border:1px solid transparent}.section-nav a:hover{color:var(--text);text-decoration:none;background:var(--bg-elev2)}.section-nav a.active{color:var(--text);border-color:var(--border);background:var(--bg-elev2)}.sub-nav{display:flex;gap:4px;align-items:center}.sub-nav a{padding:4px 10px;border-radius:6px;font-size:12px;color:var(--text-dim)}.sub-nav a:hover{color:var(--text);text-decoration:none}.sub-nav a.active{color:var(--text);background:var(--bg-elev2)}.api-status{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text-dim)}.dot{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px #3fb95026}.dot.down{background:var(--red);box-shadow:0 0 0 3px #f8514926}.dot.warn{background:var(--amber);box-shadow:0 0 0 3px #d2992226}.dot.pulse{animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.controls{display:flex;align-items:center;gap:8px}.btn{background:var(--bg-elev2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 11px;font-size:12px;cursor:pointer;font-family:var(--sans);display:inline-flex;align-items:center;gap:6px;transition:background .12s,border-color .12s}.btn:hover{background:#232a37;border-color:#313947}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.live{border-color:var(--green);color:var(--green)}.btn.live .dot{background:var(--green)}.btn.paused{border-color:var(--amber);color:var(--amber)}.btn.active{border-color:var(--accent);color:var(--text);background:#2f81f71f}.select,.search,.num-input{background:var(--bg-elev2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 9px;font-size:12px;font-family:var(--sans);outline:none}.num-input{font-family:var(--mono)}.search{min-width:220px}.search:focus,.select:focus,.num-input:focus{border-color:var(--accent)}main{flex:1;overflow:hidden;display:flex;flex-direction:column;padding:14px 18px;gap:14px}main.scroll{overflow-y:auto}.page-head{display:flex;align-items:center;gap:12px;flex-shrink:0}.page-head .spacer{flex:1}.kpi-row{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;flex-shrink:0}.kpi-row.kpi-row-6{grid-template-columns:repeat(6,1fr)}.kpi{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;display:flex;flex-direction:column;gap:4px}.kpi .label{color:var(--text-dim);font-size:11px;text-transform:uppercase;letter-spacing:.5px}.kpi .value{font-family:var(--mono);font-size:22px;font-weight:600}.kpi .sub{color:var(--text-faint);font-size:11px;font-family:var(--mono)}.kpi .value.ok{color:var(--green)}.kpi .value.warn{color:var(--amber)}.kpi .value.bad{color:var(--red)}.charts-row{display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px;flex-shrink:0}.charts-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.charts-3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.section-label{margin:4px 2px 0;font-size:11px;color:var(--text-dim);font-weight:600;text-transform:uppercase;letter-spacing:.6px;scroll-margin-top:12px}.jump-nav{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.jump-nav .chip{text-decoration:none}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;min-width:0}.card h3{margin:0 0 8px;font-size:12px;color:var(--text-dim);font-weight:600;text-transform:uppercase;letter-spacing:.4px;display:flex;align-items:center;gap:8px}.card .card-sub{color:var(--text-faint);font-size:11px;font-family:var(--mono);font-weight:400;text-transform:none;letter-spacing:0}.chart-host{width:100%;height:120px}.chart-tall{height:180px}.content{flex:1;display:grid;grid-template-columns:1fr 320px;gap:12px;min-height:0}.logs-card,.table-card{display:flex;flex-direction:column;min-height:0;padding:0;overflow:hidden}.logs-head{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap}.logs-head h3{margin:0}.filters{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.chip{border:1px solid var(--border);background:var(--bg-elev2);color:var(--text-dim);border-radius:999px;padding:3px 10px;font-size:11px;cursor:pointer;font-family:var(--mono)}.chip.active{color:var(--text);border-color:var(--accent);background:#2f81f71f}.chip.s2 .cdot{background:var(--green)}.chip.s4 .cdot{background:var(--amber)}.chip.s5 .cdot{background:var(--red)}.chip .cdot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px;vertical-align:middle}.pending-pill{margin-left:auto;background:#d2992226;color:var(--amber);border:1px solid rgba(210,153,34,.4);border-radius:999px;padding:3px 12px;font-size:11px;cursor:pointer}.reconnect-badge{background:#d2992226;color:var(--amber);border:1px solid rgba(210,153,34,.4);border-radius:999px;padding:3px 10px;font-size:11px}.log-scroll,.table-scroll{overflow:auto;flex:1;min-height:0}table.logs{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:12px}table.logs thead th{position:sticky;top:0;background:var(--bg-elev);color:var(--text-faint);text-align:left;font-weight:500;padding:7px 10px;border-bottom:1px solid var(--border);font-size:11px;text-transform:uppercase;letter-spacing:.4px;z-index:1;white-space:nowrap}table.logs thead th.num{text-align:right}table.logs thead th.sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}table.logs thead th .sort-arrow{color:var(--accent);margin-left:4px}table.logs tbody td{padding:var(--cell-pad-y) var(--cell-pad-x);border-bottom:1px solid var(--border-soft);white-space:nowrap;color:var(--text)}table.logs tbody td.num{text-align:right}table.logs tbody tr{cursor:pointer}table.logs tbody tr:hover{background:var(--bg-elev2)}table.logs tbody tr.selected{background:#2f81f71f}tr.flash{animation:flashIn .8s ease-out}@keyframes flashIn{0%{background:#2f81f738}to{background:transparent}}.method{font-weight:600}.method.GET{color:var(--accent)}.method.POST{color:var(--green)}.method.PUT,.method.PATCH{color:var(--amber)}.method.DELETE{color:var(--red)}.badge{display:inline-block;padding:1px 7px;border-radius:5px;font-size:11px;font-weight:600}.st2{color:var(--green);background:#3fb95021}.st4{color:var(--amber);background:#d2992221}.st5{color:var(--red);background:#f8514921}.st0{color:var(--text-dim);background:#8b949e21}.lat-fast{color:var(--green)}.lat-mid{color:var(--amber)}.lat-slow{color:var(--red)}.col-dim{color:var(--text-faint)}.path{color:var(--text)}.ts{color:var(--text-faint)}.side{display:flex;flex-direction:column;gap:12px;min-height:0}.errors-card{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:0}.errors-card h3{padding:10px 12px 8px;margin:0;border-bottom:1px solid var(--border)}.errors-list{overflow-y:auto;flex:1}.err-item{padding:8px 12px;border-bottom:1px solid var(--border-soft);font-family:var(--mono);font-size:11px;cursor:pointer}.err-item:hover{background:var(--bg-elev2)}.err-item .line1{display:flex;gap:8px;align-items:center}.err-item .msg{color:var(--text-dim);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:19}.drawer{position:fixed;top:0;right:0;width:440px;max-width:90vw;height:100%;background:var(--bg-elev);border-left:1px solid var(--border);z-index:20;display:flex;flex-direction:column;box-shadow:-12px 0 30px #0006}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border)}.drawer-head h3{margin:0;font-size:13px}.drawer-body{padding:14px 16px;overflow-y:auto;font-family:var(--mono);font-size:12px}.kv{display:grid;grid-template-columns:120px 1fr;gap:6px 12px;margin-bottom:14px}.kv .k{color:var(--text-faint)}.kv .v{color:var(--text);word-break:break-all}pre.json{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:12px;overflow-x:auto;color:var(--text-dim);font-size:11px;line-height:1.5}.close-x{background:none;border:none;color:var(--text-dim);font-size:20px;cursor:pointer;line-height:1}.popover-content,.dropdown-content{background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;padding:10px;box-shadow:0 8px 24px #00000080;z-index:30;min-width:200px}.popover-row{display:flex;gap:8px;align-items:center;margin-bottom:8px}.popover-row label{color:var(--text-dim);font-size:11px;width:40px}.popover-row .num-input{width:90px}.popover-actions{display:flex;gap:6px;justify-content:flex-end}.dropdown-item{display:flex;align-items:center;gap:8px;padding:5px 8px;font-size:12px;border-radius:5px;cursor:pointer;outline:none}.dropdown-item:hover,.dropdown-item[data-highlighted]{background:var(--bg-elev2)}.state-block{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:48px 16px;color:var(--text-faint);font-family:var(--mono);font-size:12px}.state-block.error{color:var(--red)}.skeleton{background:var(--bg-elev2);border-radius:4px;animation:pulse 1.6s ease-in-out infinite}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;min-height:0}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stat-grid-primary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px}.stat{background:var(--bg-elev2);border:1px solid var(--border-soft);border-radius:6px;padding:8px 10px}.stat .k{color:var(--text-dim);font-size:11px;text-transform:uppercase;letter-spacing:.4px}.stat .v{font-family:var(--mono);font-size:16px;font-weight:600;margin-top:2px}.stat.primary .v{font-size:22px}.stat-sub{color:var(--text-faint);font-size:11px;font-family:var(--mono);margin-top:2px}.heatmap{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:11px}.heatmap th{color:var(--text-faint);font-weight:500;padding:4px 8px;text-align:right;font-size:10px;text-transform:uppercase}.heatmap td{padding:4px 8px;text-align:right;color:var(--text);border:1px solid var(--bg)}.heatmap td.label{text-align:left;color:var(--text-dim)}.footnote{padding:4px 0 0;color:var(--text-faint);font-size:11px;flex-shrink:0}.footnote code{color:var(--text-dim)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#2c333d;border-radius:6px;border:2px solid var(--bg-elev)}::-webkit-scrollbar-track{background:transparent}@media (max-width: 1100px){.kpi-row{grid-template-columns:repeat(3,1fr)}.charts-row,.charts-2,.charts-3,.detail-grid,.content{grid-template-columns:1fr}.side{display:none}}.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:-moz-min-content;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}
