@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff")}:root{--ground: #F4F6F9;--surface: #FFFFFF;--surface-2: #EDF1F6;--surface-3: #E3E9F1;--line: #D9E0E9;--line-strong: #B9C3D1;--ink: #0E1726;--ink-2: #5B6779;--ink-3: #8A95A6;--accent: #1758D6;--accent-hover: #1249B3;--accent-ink: #FFFFFF;--accent-soft: #E6EEFB;--good: #168A50;--good-soft: #E3F4EA;--warn: #B76E00;--warn-soft: #FBF0DC;--bad: #C62828;--bad-soft: #FBE4E4;--pulse: 22, 138, 80;--sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", sans-serif;--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--fs-xs: 12px;--fs-sm: 13.5px;--fs-md: 15px;--fs-lg: 17px;--fs-xl: 22px;--fs-2xl: 28px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 28px;--sp-7: 40px;--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--shadow: 0 1px 2px rgba(14, 23, 38, .06), 0 8px 24px -12px rgba(14, 23, 38, .18);--t-fast: .16s;--t-base: .22s;--ease: cubic-bezier(.2, .7, .2, 1);--tap: 44px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--ground: #0B1220;--surface: #121B2B;--surface-2: #182336;--surface-3: #1F2C42;--line: #243247;--line-strong: #34465F;--ink: #E6ECF5;--ink-2: #A9B5C6;--ink-3: #7A889C;--accent: #5B8DEF;--accent-hover: #7AA3F5;--accent-ink: #0B1220;--accent-soft: #1A2A47;--good: #3DBD7A;--good-soft: #123324;--warn: #E0A03A;--warn-soft: #3A2B10;--bad: #EF6B6B;--bad-soft: #3E1A1A;--pulse: 61, 189, 122;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px -12px rgba(0, 0, 0, .6)}}:root[data-theme=dark]{--ground: #0B1220;--surface: #121B2B;--surface-2: #182336;--surface-3: #1F2C42;--line: #243247;--line-strong: #34465F;--ink: #E6ECF5;--ink-2: #A9B5C6;--ink-3: #7A889C;--accent: #5B8DEF;--accent-hover: #7AA3F5;--accent-ink: #0B1220;--accent-soft: #1A2A47;--good: #3DBD7A;--good-soft: #123324;--warn: #E0A03A;--warn-soft: #3A2B10;--bad: #EF6B6B;--bad-soft: #3E1A1A;--pulse: 61, 189, 122;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px -12px rgba(0, 0, 0, .6)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--sans);font-size:var(--fs-md);line-height:1.5;-webkit-font-smoothing:antialiased;min-height:100vh}h1,h2,h3,h4{margin:0;text-wrap:balance;font-weight:600;letter-spacing:-.01em}h1{font-size:var(--fs-2xl)}h2{font-size:var(--fs-xl)}h3{font-size:var(--fs-lg)}p{margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;color:inherit}code,.mono{font-family:var(--mono);font-size:.93em;font-variant-numeric:tabular-nums}.num{font-variant-numeric:tabular-nums}.muted{color:var(--ink-2)}.faint{color:var(--ink-3)}.eyebrow{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.btn{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(--line-strong);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font-weight:600;font-size:var(--fs-sm);cursor:pointer;user-select:none;transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),transform 80ms var(--ease),opacity var(--t-fast)}.btn:hover{background:var(--surface-2)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55;cursor:default;transform:none}.btn.primary{background:var(--accent);border-color:transparent;color:var(--accent-ink)}.btn.primary:hover{background:var(--accent-hover)}.btn.quiet{border-color:transparent;background:transparent;color:var(--accent)}.btn.quiet:hover{background:var(--accent-soft)}.btn.sm{min-height:34px;padding:0 var(--sp-3);font-size:var(--fs-xs)}.btn svg{width:16px;height:16px}.pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;padding:2px 8px;border-radius:999px;background:var(--surface-2);color:var(--ink-2);white-space:nowrap}.pill.good{background:var(--good-soft);color:var(--good)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad{background:var(--bad-soft);color:var(--bad)}.pill.info{background:var(--accent-soft);color:var(--accent)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md)}.field{display:grid;gap:var(--sp-1)}.field label{font-size:var(--fs-sm);font-weight:600;color:var(--ink-2)}.field .hint{font-size:var(--fs-xs);color:var(--ink-3)}.input{width:100%;min-height:var(--tap);padding:0 var(--sp-3);border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font:inherit;transition:border-color var(--t-fast),box-shadow var(--t-fast)}.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}textarea.input{min-height:96px;padding:var(--sp-3);font-family:var(--mono);font-size:var(--fs-sm);resize:vertical}.notice{display:flex;gap:var(--sp-2);align-items:flex-start;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);font-size:var(--fs-sm);border:1px solid var(--line);background:var(--surface-2)}.notice.bad{background:var(--bad-soft);border-color:transparent;color:var(--bad)}.notice.good{background:var(--good-soft);border-color:transparent;color:var(--good)}.notice.warn{background:var(--warn-soft);border-color:transparent;color:var(--warn)}.notice svg{width:18px;height:18px;flex:none;margin-top:1px}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pulse{0%{box-shadow:0 0 rgba(var(--pulse),.45)}70%{box-shadow:0 0 0 8px rgba(var(--pulse),0)}to{box-shadow:0 0 rgba(var(--pulse),0)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin{to{transform:rotate(360deg)}}.rise{animation:rise var(--t-base) var(--ease) both}.spin{animation:spin .8s linear infinite}.skeleton{background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface-3) 50%,var(--surface-2) 75%);background-size:200% 100%;animation:shimmer 1.4s linear infinite;border-radius:var(--r-sm);color:transparent}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.shell{display:grid;grid-template-rows:auto 1fr;min-height:100vh}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:var(--sp-3);padding:0 var(--sp-4);height:52px;background:var(--surface);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:var(--sp-2);font-weight:600;letter-spacing:-.01em}.brand .mark{width:24px;height:24px;border-radius:7px;background:linear-gradient(135deg,var(--accent),#2FB1D8);flex:none}.brand small{font-weight:500;color:var(--ink-3);font-size:var(--fs-xs)}.crumbs{display:flex;align-items:center;gap:6px;font-size:var(--fs-sm);color:var(--ink-2);min-width:0;overflow:hidden;white-space:nowrap}.crumbs a{color:var(--ink-2)}.crumbs .sep{color:var(--ink-3)}.crumbs b{color:var(--ink);font-weight:600;font-family:var(--mono);font-size:var(--fs-xs)}.topbar .who{margin-left:auto;display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-xs);color:var(--ink-2);white-space:nowrap}.topbar .who .avatar{width:28px;height:28px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-weight:600;font-size:12px}.body{display:grid;grid-template-columns:216px minmax(0,1fr)}.nav{border-right:1px solid var(--line);background:var(--surface-2);padding:var(--sp-3) var(--sp-2);position:sticky;top:52px;height:calc(100vh - 52px);overflow:auto;display:flex;flex-direction:column;gap:2px}.nav .group{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);padding:var(--sp-3) 12px 4px}.nav a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--r-md);color:var(--ink-2);font-size:var(--fs-sm);font-weight:500;min-height:38px;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.nav a:hover{background:var(--surface);color:var(--ink);text-decoration:none}.nav a.on{background:var(--accent-soft);color:var(--accent);font-weight:600}.nav a svg{width:17px;height:17px;flex:none}.nav .spacer{flex:1}.nav .foot{padding:var(--sp-3) 12px 0;font-size:var(--fs-xs);color:var(--ink-3);line-height:1.4}.page{padding:var(--sp-5) var(--sp-6) var(--sp-7);width:100%;max-width:1440px;animation:fade var(--t-base) var(--ease) both}.page>header{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4);flex-wrap:wrap}.page>header h2{font-size:var(--fs-xl)}.page>header .sub{color:var(--ink-2);font-size:var(--fs-sm)}.page>header .right{margin-left:auto;display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap}.page section{margin-top:var(--sp-6)}.page section>h3{margin-bottom:var(--sp-3);display:flex;align-items:center;gap:8px}.page section>h3 svg{width:16px;height:16px;color:var(--ink-3)}.tabs{display:none}.subnav{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:var(--sp-4);overflow-x:auto}.subnav a{padding:10px 14px;font-size:var(--fs-sm);font-weight:500;color:var(--ink-2);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;display:inline-flex;align-items:center;gap:7px}.subnav a svg{width:15px;height:15px}.subnav a:hover{color:var(--ink);text-decoration:none}.subnav a.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}@media(max-width:860px){.body{grid-template-columns:1fr}.nav{display:none}.page{padding:var(--sp-4) var(--sp-4) calc(72px + env(safe-area-inset-bottom))}.crumbs{display:none}.tabs{position:fixed;bottom:0;left:0;right:0;z-index:10;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;background:var(--surface);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.tabs a{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 4px 9px;font-size:10.5px;color:var(--ink-3);min-height:56px;justify-content:center}.tabs a.on{color:var(--accent);font-weight:600}.tabs a svg{width:20px;height:20px}}.skip{position:absolute;left:-9999px;top:8px;z-index:20;background:var(--accent);color:var(--accent-ink);padding:8px 12px;border-radius:var(--r-md)}.skip:focus{left:8px}.tiles{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}.tile{padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);display:grid;gap:2px;align-content:start;min-height:92px;transition:transform var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}a.tile{color:inherit}a.tile:hover{transform:translateY(-1px);box-shadow:var(--shadow);text-decoration:none}.tile .k{display:flex;align-items:center;gap:6px;font-size:var(--fs-xs);color:var(--ink-3)}.tile .k svg{width:14px;height:14px}.tile .v{font-size:22px;font-weight:600;letter-spacing:-.01em;font-variant-numeric:tabular-nums;line-height:1.2;margin-top:3px}.tile .s{font-size:var(--fs-xs);color:var(--ink-2)}.tile.good .v{color:var(--good)}.tile.warn .v{color:var(--warn)}.tile.bad .v{color:var(--bad)}.tile .bar{height:6px;border-radius:999px;background:var(--surface-2);margin-top:var(--sp-2);overflow:hidden}.tile .bar i{display:block;height:100%;width:var(--w, 0%);background:var(--accent);border-radius:999px;transition:width .8s var(--ease)}.tile.warn .bar i{background:var(--warn)}.tile.bad .bar i{background:var(--bad)}.toolbar{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4);flex-wrap:wrap}.search{position:relative;flex:1;min-width:200px;max-width:420px}.search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--ink-3)}.search .input{padding-left:36px}.input.sm,select.input.sm{min-height:36px;font-size:var(--fs-sm)}.select{appearance:none;padding-right:30px;background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),linear-gradient(135deg,var(--ink-3) 50%,transparent 50%);background-position:calc(100% - 16px) 55%,calc(100% - 11px) 55%;background-size:5px 5px;background-repeat:no-repeat}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{font-size:var(--fs-xs);padding:5px 10px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);min-height:28px;font-family:var(--mono)}button.chip{cursor:pointer;min-height:32px;padding:0 12px;font-weight:600;font-family:var(--sans);transition:background var(--t-fast),color var(--t-fast)}.chip.on{background:var(--accent-soft);color:var(--accent);border-color:transparent}.scroll{overflow:auto;max-height:max(320px,calc(100vh - 180px));border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);overscroll-behavior:contain}.scroll>.table{border:0;border-radius:0}.table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs-sm);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md)}.table th,.table td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:top}.table tr:last-child td{border-bottom:0}.table th{font-size:var(--fs-xs);color:var(--ink-2);font-weight:600;background:var(--surface-2);position:sticky;top:0;z-index:1}.table td.num,.table th.num{font-family:var(--mono);font-size:var(--fs-xs);text-align:right;font-variant-numeric:tabular-nums}.table td.mono{font-family:var(--mono);font-size:var(--fs-xs)}.table tr.link{cursor:pointer;transition:background var(--t-fast)}.table tr.link:hover td{background:var(--surface-2)}.table td .sub{display:block;font-size:var(--fs-xs);color:var(--ink-3)}.table .empty td{text-align:center;color:var(--ink-3);padding:var(--sp-6);white-space:normal}.table td.wrap{white-space:normal;overflow-wrap:anywhere;min-width:300px;max-width:560px}.table td.wrap-sm{white-space:normal;overflow-wrap:anywhere;min-width:150px;max-width:300px}.table td.clip{max-width:240px;overflow:hidden;text-overflow:ellipsis}.table td.clip .sub{overflow:hidden;text-overflow:ellipsis}.table td.clip-sm{max-width:180px;overflow:hidden;text-overflow:ellipsis}.cut{max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cut .sub{overflow:hidden;text-overflow:ellipsis}.cut.sm{max-width:130px}.clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.detail-full{margin:0;font-family:var(--mono);font-size:var(--fs-xs);white-space:pre-wrap;overflow-wrap:anywhere;max-height:360px;overflow:auto;background:var(--surface-2);border-radius:var(--r-sm);padding:6px 8px}.more{border:0;background:none;padding:0;margin-top:2px;color:var(--accent);font-size:var(--fs-xs);font-weight:600;cursor:pointer}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ink-3);margin-right:7px;vertical-align:middle}.dot.good{background:var(--good);box-shadow:0 0 0 3px var(--good-soft)}.dot.warn{background:var(--warn);box-shadow:0 0 0 3px var(--warn-soft)}.dot.bad{background:var(--bad);box-shadow:0 0 0 3px var(--bad-soft)}.split{display:grid;gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-items:start}.block{padding:0}.block>h3,.block .block-head{padding:var(--sp-3) var(--sp-4) 0}.block-head{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.block-head h3{display:flex;align-items:center;gap:8px;margin-right:auto;font-size:var(--fs-md)}.block-head h3 svg{width:16px;height:16px;color:var(--ink-3)}.block .notice{margin:var(--sp-3) var(--sp-4) 0}.block .btns{display:flex;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);flex-wrap:wrap}.kv{display:grid;grid-template-columns:auto 1fr;gap:6px var(--sp-4);font-size:var(--fs-sm);padding:var(--sp-3) var(--sp-4)}.kv b{font-weight:500;color:var(--ink-3)}.kv span{font-family:var(--mono);font-size:var(--fs-xs);text-align:right;overflow-wrap:anywhere}.kv span.warn{color:var(--warn)}.kv span.bad{color:var(--bad)}.kv span.good{color:var(--good)}.form{display:grid;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4)}.form .row{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));align-items:start}.form .btns{padding:0}.events{display:grid;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);overflow:hidden}.events .ev{display:grid;grid-template-columns:110px 220px 1fr;gap:var(--sp-3);padding:9px var(--sp-4);border-top:1px solid var(--line);font-size:var(--fs-sm);animation:fade var(--t-base) both}.events .ev:first-child{border-top:0}.events .ev time{font-family:var(--mono);font-size:var(--fs-xs);color:var(--ink-3);padding-top:2px;white-space:nowrap}.events .ev .kind{font-family:var(--mono);font-size:var(--fs-xs);color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.events .ev .kind.bad{color:var(--bad)}.events .ev .kind.warn{color:var(--warn)}.events .ev .detail{color:var(--ink);overflow-wrap:anywhere}.events .ev .detail .subj{font-family:var(--mono);font-size:var(--fs-xs);color:var(--ink-2);margin-right:8px}.events .empty{padding:var(--sp-4);color:var(--ink-3);font-size:var(--fs-sm)}@media(max-width:700px){.events .ev{grid-template-columns:90px 1fr}.events .ev .kind,.events .ev .detail{grid-column:2}}.attn{display:grid;gap:var(--sp-2)}.attn .row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);font-size:var(--fs-sm);animation:rise var(--t-base) var(--ease) both}.attn .row .text b{font-weight:600}.attn .row .text .why{color:var(--ink-2)}.attn .row .act{margin-left:auto;white-space:nowrap}.attn .none{display:flex;align-items:center;gap:var(--sp-2);color:var(--good);font-size:var(--fs-sm);padding:var(--sp-2) 0}.attn .none svg{width:18px;height:18px}.center{display:grid;place-items:center;padding:var(--sp-7);color:var(--ink-3);font-size:var(--fs-sm)}.stack{display:grid;gap:var(--sp-3)}.actions{display:flex;gap:var(--sp-2);flex-wrap:wrap;align-items:center}.btn.danger{background:var(--bad);border-color:transparent;color:#fff}.btn.danger:hover{filter:brightness(1.08)}.confirm{display:flex;gap:var(--sp-2);flex-wrap:wrap;align-items:center;padding:var(--sp-2);border:1px dashed var(--line-strong);border-radius:var(--r-md)}.confirm .input{max-width:260px}pre.json{margin:0;padding:var(--sp-3) var(--sp-4);font-family:var(--mono);font-size:var(--fs-xs);background:var(--surface-2);border-radius:var(--r-md);overflow:auto;max-height:320px;white-space:pre-wrap}.charts{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(420px,1fr))}@media(max-width:500px){.charts{grid-template-columns:1fr}}.chart{padding:var(--sp-2) var(--sp-3) var(--sp-3)}.chart canvas{display:block;width:100%;height:150px}.chart-hover{font-family:var(--mono);font-size:var(--fs-xs);color:var(--ink-3);min-height:18px;padding-top:4px}.coverage{display:flex;height:14px;border-radius:7px;overflow:hidden;background:var(--surface-3)}.coverage i{display:block;height:100%;background:var(--good)}.coverage i.gap{background:transparent}.player{background:#000;border-radius:0 0 var(--r-md) var(--r-md);overflow:hidden}.player video{display:block;width:100%;aspect-ratio:16 / 9;background:#000}.snaps{display:grid;gap:var(--sp-2);grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}.snapcard{display:grid;gap:2px;text-align:left;padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);cursor:pointer;font-size:var(--fs-xs);transition:transform var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.snapcard:hover{transform:translateY(-1px);box-shadow:var(--shadow)}.snapview{padding:0 var(--sp-4) var(--sp-4)}.snapview img{display:block;width:100%;max-height:70vh;object-fit:contain;background:#10161f;border-radius:var(--r-md)}.tree{display:grid;gap:var(--sp-2)}.node{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}.node.block{border-radius:var(--r-sm, 6px);margin:4px 0 4px 24px;background:var(--surface-2)}.node-head{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;background:none;border:0;color:var(--ink);font:inherit;text-align:left;cursor:pointer;min-height:42px}.node-head:hover{background:var(--surface-2)}.node-head svg{width:16px;height:16px;color:var(--ink-3);flex:none}.node-head .name{font-weight:600;font-size:var(--fs-sm);display:flex;align-items:center}.node-head .meta{color:var(--ink-3);font-size:var(--fs-xs);font-family:var(--mono);margin-left:4px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.node-head .count{margin-left:auto;font-size:var(--fs-xs);font-variant-numeric:tabular-nums;color:var(--good);white-space:nowrap}.node-head .count.warn{color:var(--warn)}.node-body{border-top:1px solid var(--line);padding:4px 0}.leaf{padding:0 12px 0 36px}.leaf-head{display:flex;align-items:center;gap:10px;width:100%;padding:7px 8px;background:none;border:0;border-radius:var(--r-sm, 6px);color:var(--ink);font:inherit;text-align:left;cursor:pointer;min-height:34px}.leaf-head:hover{background:var(--accent-soft)}.leaf-head .name{font-size:var(--fs-sm)}.leaf-head .meta{color:var(--ink-3);font-size:var(--fs-xs);display:inline-flex;align-items:center;gap:4px}.leaf-head .meta.bad{color:var(--bad)}.leaf-head .meta svg{width:12px;height:12px}.leaf .cams{display:flex;flex-wrap:wrap;gap:6px;padding:0 8px 8px 30px}.leaf .cams .chip{display:inline-flex;align-items:center;gap:5px;font-family:inherit}.leaf .cams .chip svg{width:12px;height:12px;color:var(--ink-3)}.table tr.on td{background:var(--accent-soft)}.picker{position:relative;display:grid;gap:4px}.picker .hint{font-size:10.5px}.picker-list{position:absolute;top:calc(100% - 14px);left:0;min-width:100%;width:max-content;max-width:min(560px,90vw);z-index:30;max-height:320px;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:0 12px 32px #00000024;padding:4px}.picker-opt{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;text-align:left;padding:7px 10px;border:0;border-radius:var(--r-sm, 6px);background:none;color:var(--ink);font:inherit;cursor:pointer}.picker-opt.on{background:var(--accent-soft)}.picker-opt .label{font-size:var(--fs-sm);font-weight:500;white-space:nowrap}.picker-opt .sub{font-size:var(--fs-xs);color:var(--ink-3);white-space:nowrap}.picker-opt .id{font-size:10.5px;color:var(--ink-3)}.picker-empty{display:flex;align-items:center;gap:6px;padding:8px 10px;font-size:var(--fs-xs);color:var(--ink-3)}.picker-empty svg{width:13px;height:13px}.ptz{display:flex;gap:var(--sp-4);padding:var(--sp-3) var(--sp-4) var(--sp-4);align-items:flex-start;flex-wrap:wrap;border-top:1px solid var(--line)}.ptz-pad{display:grid;grid-template-columns:repeat(3,44px);grid-auto-rows:44px;gap:6px}.ptz-pad .btn,.ptz-zoom .btn{min-height:44px;padding:0;justify-content:center;touch-action:none;user-select:none}.ptz-pad .btn:active,.ptz-zoom .btn:active{background:var(--accent-soft);border-color:var(--accent)}.ptz-side{display:grid;gap:var(--sp-2);min-width:240px;flex:1;max-width:420px}.ptz-zoom{display:flex;gap:6px}.ptz-zoom .btn{width:44px}.ptz-speed{display:flex;align-items:center;gap:8px;font-size:var(--fs-xs);color:var(--ink-2)}.ptz-speed input{flex:1}.ptz-presets{display:flex;gap:6px;align-items:center}.ptz-presets .select{flex:1;min-width:0}.ptz-none{padding:var(--sp-3) var(--sp-4);font-size:var(--fs-xs);color:var(--ink-3);border-top:1px solid var(--line)}.badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;margin-left:auto}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.bad{background:var(--bad-soft);color:var(--bad)}.nav a .badge{margin-left:auto}.node-head .badge{margin-left:8px}.wall-page{display:grid;grid-template-columns:300px minmax(0,1fr);gap:var(--sp-4);align-items:start}.wall-tree{position:sticky;top:64px;display:flex;flex-direction:column;min-height:0}.wall-list{height:calc(100vh - 140px);min-height:160px;overflow:auto;margin-top:var(--sp-3)}.wall-rows{position:relative}.wall-row{position:absolute;left:0;right:0;height:32px;box-sizing:border-box}.wall-tree .wall-row.node-head{min-height:0;height:32px;padding:4px 10px}.wall-edge{padding:4px 8px 4px 30px;min-height:0;cursor:default}.wall-edge .name,.wall-cam .label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wall-edge .meta{margin-left:auto;white-space:nowrap}.wall-tree .wall-cam.chip{display:flex;align-items:center;gap:5px;margin:2px 4px 2px 48px;height:28px;font-family:inherit;text-align:left}.wall-tree .wall-cam.chip svg{width:12px;height:12px;color:var(--ink-3);flex:none}.wall-tree .wall-cam.chip.on{background:var(--accent);color:var(--accent-ink);border-color:transparent}.wall-tree .wall-cam.chip.on svg{color:inherit}.wall-tree .wall-cam.chip:disabled{opacity:.5;cursor:default}.wall-more{display:flex;align-items:center;padding-left:44px}.wall-note{display:flex;align-items:center;padding:0 12px;color:var(--ink-3);font-size:var(--fs-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wall-note.bad{color:var(--bad)}.wall-tree .search{max-width:none}.wall-tree .node-head{min-height:36px;padding:6px 10px}.wall-tree .leaf{padding:0 8px 0 24px}.wall-tree .leaf .cams{padding:0 4px 6px 24px}.wall-tree .cams .chip.on{background:var(--accent);color:var(--accent-ink);border-color:transparent}.wall-tree .cams .chip:disabled{opacity:.5;cursor:default}.wall-main{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-3)}.wall-main.full{background:#000;border:0;border-radius:0;padding:6px;overflow:auto}.wall-bar{margin-bottom:var(--sp-3)}.wall-main.full .wall-bar{position:absolute;top:0;left:0;right:0;z-index:5;margin:0;padding:8px 12px;background:#141414eb;border-bottom:1px solid rgba(255,255,255,.12);transition:opacity var(--t-fast) var(--ease)}.wall-main.full .wall-bar.hidden{opacity:0;pointer-events:none}.wall-main.full .wall-bar .chip,.wall-main.full .wall-bar .btn,.wall-main.full .wall-bar .input{background:#ffffff14;color:#eee;border-color:#ffffff2e}.wall-main.full .wall-bar .chip.on{background:var(--accent);color:var(--accent-ink)}.wall-grid{display:grid;gap:6px;grid-auto-flow:dense;grid-auto-rows:minmax(0,auto)}.wall-grid.resizing{user-select:none}.wall-cell{position:relative;aspect-ratio:16 / 9;border-radius:var(--r-sm, 6px);cursor:grab}.wall-cell.dragging{opacity:.4}.wall-cell.placeholder{background:var(--accent-soft);outline:2px dashed var(--accent);outline-offset:-2px;z-index:3}.wall-main.full .wall-cell.placeholder{background:#2f76d840}.wall-tile{position:absolute;inset:0;background:#000;border-radius:var(--r-sm, 6px);overflow:hidden;will-change:transform}.wall-tile.floating{inset:0 auto auto 0;z-index:4;box-shadow:0 18px 48px #00000073;outline:2px solid var(--accent)}.wall-tile .player.compact{position:absolute;inset:0;border-radius:0}.player.compact video{width:100%;height:100%;object-fit:contain;aspect-ratio:auto}.player.compact .overlay{position:absolute;left:0;right:0;bottom:0;display:flex;gap:8px;align-items:center;padding:4px 8px;font-size:11px;color:#fff;background:linear-gradient(transparent,#000000b3)}.player.compact .overlay .label{font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.8);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player.compact .overlay .bad{color:#ff8a80}.player.compact .overlay .faint{color:#ffffffb3}.player{position:relative}.player:fullscreen video{height:100%;aspect-ratio:auto;object-fit:contain}.player-bar{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:6px;padding:6px 10px;color:#fff;font-size:var(--fs-xs);background:linear-gradient(transparent,#000000a6);opacity:.8;transition:opacity var(--t-fast) var(--ease)}.player:hover .player-bar,.player:focus-within .player-bar{opacity:1}.player-bar .spacer{flex:1}.player-bar .live-mark{display:inline-flex;align-items:center;gap:6px;font-weight:600;letter-spacing:.06em}.player-bar .live-mark i{width:8px;height:8px;border-radius:50%;background:#e53935;box-shadow:0 0 6px #e53935}.player-bar button{width:30px;height:30px;border:0;border-radius:50%;background:#00000080;color:#fff;display:grid;place-items:center;cursor:pointer}.player-bar button svg{width:16px;height:16px}.player-bar button.on{background:var(--accent);color:var(--accent-ink)}.player-bar .faint{color:#fff9;font-size:11px}.wall-tools{position:absolute;top:6px;right:6px;display:flex;gap:4px;align-items:center;opacity:0;transition:opacity var(--t-fast) var(--ease)}.wall-tile:hover .wall-tools,.wall-tile:focus-within .wall-tools{opacity:1}.wall-tools button,.wall-tools .grip{width:26px;height:26px;border-radius:50%;border:0;background:#0009;color:#fff;display:grid;place-items:center;cursor:pointer}.wall-tools .grip{cursor:grab}.wall-tools button:disabled{opacity:.35;cursor:default}.wall-tools svg{width:14px;height:14px}.wall-resize{position:absolute;right:0;bottom:0;width:24px;height:24px;cursor:nwse-resize;touch-action:none;background:linear-gradient(135deg,transparent 50%,rgba(255,255,255,.6) 50%,rgba(255,255,255,.6) 60%,transparent 60%,transparent 75%,rgba(255,255,255,.6) 75%,rgba(255,255,255,.6) 85%,transparent 85%);opacity:0;transition:opacity var(--t-fast) var(--ease)}.wall-tile:hover .wall-resize,.wall-tile.floating .wall-resize{opacity:1}.wall-empty-all{min-height:240px;display:grid;place-items:center;align-content:center;gap:8px;color:var(--ink-3);font-size:var(--fs-sm);border:1px dashed var(--line);border-radius:var(--r-sm, 6px)}.wall-main.full .wall-empty-all{color:#fff9;border-color:#fff3}.wall-empty-all svg{width:24px;height:24px}@media(max-width:900px){.wall-page{grid-template-columns:1fr}.wall-tree{position:static}.wall-list{height:40vh}}.table.rc-table th,.table.rc-table td{text-align:left;vertical-align:top;white-space:normal}.table.rc-table tr:not(.rc-inline)>td:first-child,.table.rc-table tr:not(.rc-inline)>td:nth-child(3){white-space:nowrap}.table.rc-table td.rc-actions{white-space:normal;text-align:right}.table.rc-table td.rc-actions>*{margin:2px 0 2px 4px}.table.rc-table td.rc-wrap{overflow-wrap:anywhere}.rc-inline>td{background:var(--surface-2)}.rc-form{padding:var(--sp-2) 0}.rc-form h3{font-size:var(--fs-sm)}.rc-grid{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));align-items:start}.rc-grid .field{min-width:0;align-content:start}.rc-grid .input{width:100%;box-sizing:border-box}.rc-grid .hint{white-space:normal;font-size:var(--fs-xs);color:var(--ink-3)}.rc-warn,.table td .sub.rc-warn,.rc-grid .hint.rc-warn{color:var(--warn);white-space:normal}.rv-disks{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin-bottom:var(--sp-3)}.rv-disk{border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-2) var(--sp-3)}.rv-disk-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);font-size:var(--fs-sm)}.rv-disk-head svg{width:14px;height:14px;vertical-align:-2px;color:var(--ink-3)}.rv-bar{height:6px;border-radius:999px;background:var(--surface-2);margin:var(--sp-2) 0 4px;overflow:hidden}.rv-bar i{display:block;height:100%;background:var(--accent);border-radius:999px}.rv-disk .sub{font-size:var(--fs-xs);color:var(--ink-3)}.rv-live{max-width:640px;padding:var(--sp-2) 0}.rv-footage{display:grid;gap:var(--sp-2);padding:var(--sp-2) 0;min-width:0}.rv-footage-head{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.rv-day{display:inline-flex;align-items:center;gap:6px}.rv-day svg{width:16px;height:16px;color:var(--ink-3)}.rv-timeline{position:relative;height:24px;border-radius:6px;background:var(--surface-2);overflow:hidden}.rv-timeline .rv-rec{position:absolute;top:0;bottom:0;padding:0;border:0;background:var(--good);opacity:.8;cursor:pointer;min-width:2px}.rv-timeline .rv-rec:hover,.rv-timeline .rv-rec:focus-visible{opacity:1;outline:2px solid var(--accent);outline-offset:-2px}.rv-timeline .rv-sel{position:absolute;top:0;bottom:0;background:var(--accent);opacity:.45;pointer-events:none;min-width:3px}.rv-timeline .rv-now{position:absolute;top:0;bottom:0;width:2px;background:var(--accent);pointer-events:none}.rv-ticks{position:relative;height:14px;font-size:10.5px;color:var(--ink-3)}.rv-ticks span{position:absolute;transform:translate(-50%)}.rv-ticks span:first-child{transform:none}.rv-ticks span:last-child{transform:translate(-100%)}.kv.rv-kv{padding:0}.rv-footage .card.block{margin:var(--sp-2) 0 0}.kv.rv-kv span{text-align:left}.block .rv-disks{padding:var(--sp-3) var(--sp-4) 0;margin-bottom:var(--sp-2)}.disc-others{display:grid;gap:var(--sp-2);margin:var(--sp-2) 0 0}.disc-toggle{display:inline-flex;align-items:center;gap:6px;justify-self:start;background:none;border:0;padding:var(--sp-1) 0;color:var(--ink-2);font:inherit;font-size:var(--fs-sm);cursor:pointer}.disc-toggle:hover{color:var(--accent)}.disc-toggle svg{width:14px;height:14px}.disc-onboard{margin-top:var(--sp-3);padding:var(--sp-3) var(--sp-4);display:grid;gap:var(--sp-3);border-color:var(--accent-soft)}.disc-onboard-head{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.disc-onboard-head h3{display:flex;align-items:center;gap:8px;margin:0;font-size:var(--fs-md)}.disc-onboard-head h3 svg{width:16px;height:16px;color:var(--ink-3)}.disc-onboard-head .chips{flex:1}.disc-onboard-row{display:flex;align-items:flex-end;gap:var(--sp-3);flex-wrap:wrap}.disc-onboard-row .field{flex:0 1 240px;min-width:160px}.disc-onboard-hint{display:flex;align-items:flex-start;gap:6px;margin:0;font-size:var(--fs-xs);color:var(--ink-3)}.disc-onboard-hint svg{width:12px;height:12px;flex:none;margin-top:2px}.disc-onboard-row .btn{min-height:36px}.block .block-sub{margin:var(--sp-1) var(--sp-4) 0;font-size:var(--fs-xs);color:var(--ink-3);max-width:80ch}.block .block-empty{margin:var(--sp-3) var(--sp-4) var(--sp-4);padding:var(--sp-3);border:1px dashed var(--line);border-radius:var(--r-md, 8px);font-size:var(--fs-sm);color:var(--ink-3);text-align:center}.block .block-table{margin-top:var(--sp-3)}.table tr.faint-row td{color:var(--ink-3)}.getting-started{margin-bottom:var(--sp-4)}.gs-steps{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}.gs-steps li{display:flex;gap:var(--sp-2);align-items:flex-start}.gs-steps li svg{width:18px;height:18px;flex:none;margin-top:2px;color:var(--ink-3)}.gs-steps li svg.good{color:var(--good)}.gs-steps li .sub{display:block}.gs-steps li.done b{color:var(--ink-3);text-decoration:line-through}.coverage-wrap{display:grid;gap:4px}.coverage-axis{position:relative;height:14px;font-size:var(--fs-xs);color:var(--ink-3);font-family:var(--mono, monospace)}.coverage-axis span{position:absolute;transform:translate(-50%);white-space:nowrap}.coverage-axis span:first-child{transform:none}.coverage-axis span:last-child{transform:translate(-100%)}.auth{min-height:100vh;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);background:var(--ground)}.auth-brand{position:relative;overflow:hidden;color:#e6ecf5;padding:var(--sp-7) clamp(28px,6vw,72px);display:flex;flex-direction:column;justify-content:space-between;min-height:100vh;background:radial-gradient(60% 50% at 20% 15%,rgba(91,141,239,.35),transparent 70%),radial-gradient(50% 40% at 85% 85%,rgba(47,177,216,.22),transparent 70%),linear-gradient(160deg,#0b1220,#101b33 55%,#0b1220)}.auth-brand:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);background-size:48px 48px;mask-image:radial-gradient(80% 80% at 50% 40%,#000 30%,transparent 100%)}.auth-brand>*{position:relative}.auth-brand .wordmark{display:flex;align-items:center;gap:12px;font-weight:600;font-size:var(--fs-lg);letter-spacing:-.01em}.auth-brand .wordmark .mark{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,#5b8def,#2fb1d8);box-shadow:0 8px 24px -8px #5b8defcc}.auth-brand .wordmark small{color:#e6ecf58c;font-weight:500;font-size:var(--fs-xs);margin-left:2px}.auth-brand h1{font-size:clamp(28px,3.4vw,40px);line-height:1.12;font-weight:600;letter-spacing:-.02em;max-width:14ch;margin:var(--sp-6) 0 var(--sp-4);animation:rise var(--t-base) var(--ease) both}.auth-brand .lede{color:#e6ecf5b8;font-size:var(--fs-md);max-width:44ch;line-height:1.6;animation:rise var(--t-base) var(--ease) .06s both}.auth-brand .facts{list-style:none;margin:var(--sp-7) 0 0;padding:0;display:grid;gap:var(--sp-3);max-width:46ch}.auth-brand .facts li{display:flex;gap:12px;align-items:flex-start;font-size:var(--fs-sm);color:#e6ecf5d1;animation:rise var(--t-base) var(--ease) both}.auth-brand .facts li:nth-child(1){animation-delay:.12s}.auth-brand .facts li:nth-child(2){animation-delay:.18s}.auth-brand .facts li:nth-child(3){animation-delay:.24s}.auth-brand .facts svg{width:18px;height:18px;flex:none;margin-top:2px;color:#8fb3ff}.auth-brand .facts b{display:block;font-weight:600;color:#fff}.auth-brand .foot{display:flex;justify-content:space-between;gap:var(--sp-3);font-size:var(--fs-xs);color:#e6ecf580;margin-top:var(--sp-7);font-family:var(--mono);letter-spacing:.04em}.auth-brand .foot .live{display:inline-flex;align-items:center;gap:7px;margin:0;color:#e6ecf5b3}.auth-brand .foot .live .dot{width:7px;height:7px;border-radius:50%;background:#3dbd7a;box-shadow:0 0 #3dbd7a80;animation:pulse 2.4s infinite}.auth-form{display:grid;place-items:center;padding:var(--sp-7) clamp(24px,6vw,80px)}.auth-form form,.auth-form .panel{width:100%;max-width:400px;display:grid;gap:var(--sp-4);animation:rise var(--t-base) var(--ease) .1s both}.auth-form .eyebrow{margin-bottom:-6px}.auth-form h2{font-size:var(--fs-2xl);letter-spacing:-.02em}.auth-form .lead{color:var(--ink-2);font-size:var(--fs-sm);margin-top:-6px}.auth-form .input{min-height:48px;font-size:var(--fs-md)}.auth-form .btn.primary{min-height:48px;font-size:var(--fs-md);margin-top:var(--sp-1)}.auth-form .fine{font-size:var(--fs-xs);color:var(--ink-3);line-height:1.5}.auth-form .fine a{color:var(--ink-2)}.auth-form .qr{display:grid;place-items:center;padding:var(--sp-3);background:#fff;border:1px solid var(--line);border-radius:var(--r-md)}.auth-form .qr svg{width:176px;height:176px}.auth-form .secret{font-family:var(--mono);font-size:var(--fs-xs);word-break:break-all;text-align:center;color:var(--ink-2)}.auth-form .code-row{display:grid;grid-template-columns:1fr auto;gap:var(--sp-2);align-items:end}.auth-form .code-row .input{font-family:var(--mono);letter-spacing:.32em;text-align:center;font-size:22px}@media(max-width:900px){.auth{grid-template-columns:1fr}.auth-brand{min-height:0;padding:var(--sp-5) var(--sp-5) var(--sp-6)}.auth-brand h1{font-size:26px;margin:var(--sp-4) 0 var(--sp-2)}.auth-brand .facts,.auth-brand .foot{display:none}.auth-form{padding:var(--sp-6) var(--sp-4) var(--sp-7);align-items:start}}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .auth-form .qr{background:#fff}}
