:root{--screen-w:2560px;--screen-h:1440px;--screen-header-h:96px;--screen-side-pad:44px;--screen-content-top:128px;--screen-content-bottom:152px;--screen-gap:24px;--screen-panel-w:520px;--screen-panel-radius:30px;--screen-card-radius:26px;--screen-card-pad:22px;--color-canvas:#050a14;--canvas-1:#0b1526;--canvas-2:#070d1a;--topbar-scrim:linear-gradient(to bottom, #000c 0%, #0000 100%);--primary:#007aff;--primary-strong:#0062cc;--primary-soft:#53a8ff;--glow-primary:#007affa6;--veil-primary:#007aff26;--success:#34c759;--warning:#ff9500;--danger:#ff3b30;--info:#5ac8fa;--accent-purple:#af52de;--veil-success:#34c75929;--veil-warning:#ff950029;--veil-danger:#ff3b3029;--danger-on-veil:#ff6a60;--veil-info:#5ac8fa29;--line-warning:#ff950066;--text-1:#ffffffeb;--text-2:#ffffffb8;--text-3:#ffffff80;--on-accent:#fff;--on-media:#fff;--media-bg:#000;--media-chip-bg:#040a12b8;--media-veil:#040a126b;--media-fade:linear-gradient(180deg, transparent, #000000b8);--media-fade-strong:linear-gradient(transparent, #040a12eb);--media-text-shadow:0 1px 3px #000000d9;--media-ok:#34c759;--media-bad:#ff3b30;--media-unk:#5ac8fa;--option-bg:#fff;--option-fg:#101828;--line-1:#ffffff1a;--line-2:#fff3;--line-ctl:#ffffff5c;--surface-1:#ffffff14;--surface-2:#ffffff0d;--surface-3:#ffffff17;--scrim-mask:#03060c73;--title-shadow:0 2px 8px #0009;--card-bg:#121622a3;--card-bg-hover:#1a1f2ec2;--card-bg-2:#1e1e2899;--card-border:1px solid #ffffff1f;--card-border-hover:#ffffff2e;--card-shadow:0 20px 60px #00000047;--dock-bg:#161824b8;--dock-shadow:0 10px 40px #0000004d;--pill-bg:#0000004d;--shadow-drawer:-24px 0 60px #00000073;--chart-1:#007aff;--chart-2:#34c759;--chart-3:#ff9500;--chart-4:#ff3b30;--chart-5:#5ac8fa;--chart-6:#af52de;--chart-label:#ffffffb8;--chart-axis:#fff3;--chart-grid:#ffffff1a;--map-land:#293b41;--map-land-dim:#19232a;--map-land-selected:#6fa8bc;--map-edge:#ffffffeb;--map-edge-selected:#7fd4ff;--map-wall-top:#8fc2ff;--map-wall-bottom:#10182c;--map-marker:#8fc2ff;--map-beam:#8fc2ff;--map-grid-cell:#16304f;--map-grid-section:#2c5a85;--map-boundary:#8fc2ff;--map-ground:#07182e;--map-ring:#8fc2ff;--map-trail:#26c8dd;--map-trail-gain:8;--map-fog:#050a14;--map-label:#fff;--map-label-bg:#050a148c;--map-label-shadow:0 2px 8px #000000d9;--map-label-glow:0 0 12px #7fd4fff2;--map-additive:1;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--radius-xxl:24px;--radius-pill:999px;--space-xs:4px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:20px;--space-xxl:24px;--space-xxxl:32px;--space-huge:48px;--fs-display:34px;--fs-h1:28px;--fs-h2:22px;--fs-h3:17px;--fs-body:16px;--fs-label:14px;--fs-caption:12px;--fs-metric:28px;--fs-metric-lg:46px;--glass-blur:blur(24px);--fs-page-title:var(--fs-display);--fs-module-title:var(--fs-h1);--fs-card-title:var(--fs-h2);--fs-headline:var(--fs-h3);--fs-callout:var(--fs-body);--control-h:52px;--control-pad-x:24px;--icon-sm:16px;--icon-md:20px;--icon-lg:24px;--avatar-size:32px;--pill-h:var(--control-h);--pill-radius:26px;--c-blue:var(--primary);--c-blue-soft:var(--primary-soft);--c-green:var(--success);--c-orange:var(--warning);--c-red:var(--danger);--c-purple:var(--accent-purple);--c-text:var(--text-1);--c-text-2:var(--text-2);--c-text-3:var(--text-3);--c-surface:var(--surface-2);--c-surface-2:var(--surface-2);--c-line:var(--surface-1)}[data-theme=light]{--color-canvas:#edf1f7;--canvas-1:#e6ecf4;--canvas-2:#f4f7fb;--topbar-scrim:linear-gradient(to bottom, #edf1f7eb 0%, #edf1f700 100%);--primary:#0b63ce;--primary-strong:#0b4f9e;--primary-soft:#1256b8;--glow-primary:#0b63ce38;--veil-primary:#0b63ce1a;--success:#146b36;--warning:#8f4a00;--danger:#b31f18;--info:#0a5c85;--accent-purple:#7c3aed;--veil-success:#146b361f;--veil-warning:#8f4a001f;--veil-danger:#b31f181a;--danger-on-veil:#a11a14;--veil-info:#0a5c851f;--line-warning:#8f4a0073;--text-1:#0d1520;--text-2:#3a4a5e;--text-3:#4d5f75;--line-1:#0f1a2a1f;--line-2:#0f1a2a38;--line-ctl:#0f1a2a80;--surface-1:#0f1a2a0f;--surface-2:#0f1a2a0a;--surface-3:#0f1a2a17;--scrim-mask:#18273c52;--title-shadow:0 1px 0 #ffffffd9;--option-bg:#fff;--option-fg:#0d1520;--card-bg:#ffffffe0;--card-bg-hover:#fffffff5;--card-bg-2:#ffffffdb;--card-border:1px solid #0f1a2a1a;--card-border-hover:#0f1a2a33;--card-shadow:0 16px 40px #172b4d1f;--dock-bg:#ffffffe6;--dock-shadow:0 10px 30px #172b4d24;--pill-bg:#ffffffb8;--shadow-drawer:-20px 0 48px #172b4d29;--chart-1:#0b63ce;--chart-2:#146b36;--chart-3:#8f4a00;--chart-4:#b31f18;--chart-5:#0a5c85;--chart-6:#7c3aed;--chart-label:#3a4a5e;--chart-axis:#0f1a2a3d;--chart-grid:#0f1a2a1a;--map-land:#b9c9da;--map-land-dim:#d3dce7;--map-land-selected:#6f9fca;--map-edge:#55677d;--map-edge-selected:#12508f;--map-wall-top:#7ba3c9;--map-wall-bottom:#cfdbe7;--map-marker:#1f6fd0;--map-beam:#8fbce6;--map-grid-cell:#c6d2e0;--map-grid-section:#a6b8cc;--map-boundary:#2f6fb8;--map-ground:#e2e9f1;--map-ring:#2f7ad0;--map-trail:#1a8fa8;--map-trail-gain:1;--map-fog:#edf1f7;--map-label:#16202e;--map-label-bg:#fffc;--map-label-shadow:0 0 3px #fffffff2, 0 1px 2px #ffffffe6;--map-label-glow:0 0 10px #fffffff2;--map-additive:0}*{box-sizing:border-box}html,body,#root{background:var(--color-canvas);width:100%;height:100%;color:var(--c-text);-webkit-font-smoothing:antialiased;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,PingFang SC,Microsoft YaHei,sans-serif;overflow:hidden}.stage-shell{background:var(--color-canvas);background-image:radial-gradient(120% 90% at 50% 42%, var(--canvas-1) 0%, var(--canvas-2) 45%, var(--color-canvas) 100%);width:100vw;height:100vh;position:relative;overflow:hidden}.stage{transform-origin:0 0;will-change:transform;pointer-events:none;z-index:1;background:0 0;width:2560px;height:1440px;position:absolute;top:0;left:0;overflow:hidden}.glass-card,.glass-button,.glass-pill,.crumb,.dash-page{pointer-events:auto}.topbar{height:var(--screen-header-h);padding:0 var(--screen-side-pad);background:var(--topbar-scrim);z-index:100;grid-template-columns:1fr auto 1fr;align-items:center;display:grid;position:absolute;inset:0 0 auto}.topbar-left{align-items:center;gap:12px;display:flex}.topbar-center{justify-content:center;align-items:center;gap:14px;display:flex}.topbar-right{justify-content:flex-end;align-items:center;gap:16px;display:flex}.project-title{font-size:var(--fs-page-title);letter-spacing:2px;color:var(--text-1);text-shadow:var(--title-shadow);white-space:nowrap;margin:0;font-weight:700}.title-accent{background:linear-gradient(180deg, var(--primary-soft), var(--primary));width:6px;height:34px;box-shadow:0 0 14px var(--glow-primary);border-radius:3px}.glass-button{height:var(--pill-h);padding:0 var(--control-pad-x);border-radius:var(--pill-radius);background:var(--line-1);border:1px solid var(--line-2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--text-1);font-size:var(--fs-body);cursor:pointer;align-items:center;gap:10px;font-family:inherit;font-weight:600;transition:all .2s;display:flex}.glass-button:hover{background:var(--line-2);transform:translateY(-1px)}.glass-button.primary{color:var(--on-accent);background:var(--primary-strong);border-color:#0000}.glass-button.primary:hover{background:var(--primary)}.glass-pill{height:var(--pill-h);border-radius:var(--pill-radius);background:var(--pill-bg);border:1px solid var(--line-2);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);color:var(--text-1);font-size:var(--fs-label);align-items:center;gap:10px;padding:0 20px;display:flex}.glass-pill .time{font-weight:600;font-size:var(--fs-headline);font-variant-numeric:tabular-nums}.glass-pill .date{font-size:var(--fs-caption);opacity:.8;margin-left:4px}.pill-clickable{cursor:pointer;transition:background .2s}.pill-clickable:hover{background:var(--surface-3)}.avatar{width:var(--avatar-size);height:var(--avatar-size);background:var(--primary-strong);border:1px solid var(--line-2);flex:0 0 var(--avatar-size);border-radius:50%;place-items:center;display:grid}.theme-toggle{width:var(--pill-h);height:var(--pill-h);background:var(--pill-bg);border:1px solid var(--line-2);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);color:var(--text-1);cursor:pointer;pointer-events:auto;border-radius:50%;flex:none;place-items:center;padding:0;transition:background .2s,color .2s,border-color .2s;display:grid}.theme-toggle:hover{background:var(--surface-3);border-color:var(--card-border-hover)}.theme-toggle:active{transform:translateY(1px)}.theme-toggle svg{display:block}.crumbs{border-left:1px solid var(--c-line);align-items:center;gap:4px;margin-left:8px;padding-left:16px;display:flex}.crumb-item{align-items:center;gap:4px;display:inline-flex}.crumb{border-radius:var(--radius-sm);color:var(--c-text-3);font-family:inherit;font-size:var(--fs-label);cursor:pointer;background:0 0;border:0;padding:4px 6px;transition:color .2s,background .2s}.crumb:hover:not(:disabled){color:var(--text-1);background:var(--surface-1)}.crumb.active,.crumb:disabled{color:var(--text-1);cursor:default;font-weight:600}.crumb-sep{color:var(--c-text-3);opacity:.5}.content{width:100%;height:100%;padding:var(--screen-content-top) var(--screen-side-pad) var(--screen-content-bottom);gap:var(--screen-gap);z-index:10;pointer-events:none;justify-content:space-between;display:flex;position:absolute;top:0;left:0}.side-panel{width:var(--screen-panel-w);flex:0 0 var(--screen-panel-w);gap:var(--screen-gap);pointer-events:auto;min-height:0;display:grid}.left-panel{grid-template-rows:332px 316px minmax(0,1fr)}.right-panel{grid-template-rows:288px 344px minmax(0,1fr)}.center-area{display:none}.glass-card{min-height:0;padding:var(--screen-card-pad);border-radius:var(--screen-card-radius);background:var(--card-bg);border:var(--card-border);box-shadow:var(--card-shadow);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);flex-direction:column;transition:transform .25s,background .25s,border-color .25s;display:flex}.glass-card:hover{background:var(--card-bg-hover);border-color:var(--card-border-hover);transform:translateY(-2px)}.card-header{border-bottom:1px solid var(--c-line);justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:14px;display:flex}.card-title{font-size:var(--fs-card-title);letter-spacing:.02em;color:var(--text-1);font-weight:600}.card-icon{color:var(--c-blue-soft);font-size:20px;line-height:1}.card-body{flex:1;min-height:0;position:relative;overflow:hidden}.list-body{flex-direction:column;gap:12px;display:flex;overflow:hidden}.list-row{background:var(--c-surface-2);border:1px solid var(--surface-2);border-radius:16px;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 14px;display:grid}.row-icon{border-radius:12px;place-items:center;width:40px;height:40px;font-size:18px;display:grid}.row-icon.high{color:var(--c-red);background:#ff3b3033}.row-icon.medium{color:var(--c-orange);background:#ff950033}.row-icon.low{color:var(--c-green);background:#34c75933}.row-icon.info{background:var(--veil-primary);color:var(--c-blue-soft)}.row-main{min-width:0}.row-title{white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:500;line-height:1.35;overflow:hidden}.row-sub{font-size:var(--fs-caption);color:var(--c-text-3);margin-top:4px}.chip{font-size:var(--fs-caption);border-radius:999px;flex-shrink:0;padding:4px 10px}.chip.success{color:var(--c-green);background:#34c75926}.chip.warning{color:var(--c-orange);background:#ff950026}.chip.danger{color:var(--c-red);background:#ff3b3026}.chip.primary{color:var(--c-blue-soft);background:#53a8ff26}.stats-row{grid-template-columns:1fr 1fr;gap:8px;display:grid}.stat-item{text-align:center;background:var(--c-surface);border:1px solid var(--surface-2);border-radius:16px;padding:8px 8px 7px}.stat-item .label{color:var(--text-3);margin-bottom:3px;font-size:10px;display:block}.stat-item .value{color:var(--text-1);align-items:baseline;gap:2px;font-size:24px;font-weight:700;line-height:1;display:inline-flex}.stat-item .unit{color:var(--text-3);font-size:10px;font-weight:500}.circular-chart{max-width:100%;margin:0 auto;display:block}.circle-bg{fill:none;stroke:var(--line-1);stroke-width:6px}.circle{fill:none;stroke-width:5px;stroke-linecap:round;transition:stroke-dasharray .9s ease-out}.algo-grid{gap:var(--space-md);grid-template-rows:repeat(2,minmax(0,1fr));grid-template-columns:repeat(2,minmax(0,1fr));height:100%;display:grid;overflow:hidden}.algo-cell{justify-content:center;align-items:center;gap:var(--space-xs);padding:var(--space-xs);border-radius:var(--radius-lg);background:var(--c-surface-2);border:1px solid var(--surface-2);flex-direction:column;display:flex;overflow:hidden}.algo-label{font-size:var(--fs-caption);color:var(--text-2);text-align:center;white-space:nowrap;letter-spacing:-.2px;line-height:1.2}.percentage{fill:var(--text-1);text-anchor:middle;dominant-baseline:middle;font-variant-numeric:tabular-nums;stroke:var(--text-1);stroke-width:.5px;font-weight:800}.big-stat{align-items:center;gap:8px;margin-bottom:14px;display:flex}.big-stat-main{text-align:center;flex:1}.big-stat-main .num{color:var(--c-blue-soft);font-variant-numeric:tabular-nums;font-size:46px;font-weight:700;line-height:1;display:block}.big-stat-main .txt{font-size:var(--fs-callout);color:var(--text-3);margin-top:6px}.dock-wrap{z-index:50;pointer-events:none;justify-content:center;width:100%;display:flex;position:absolute;bottom:28px;left:0}.glass-dock{background:var(--dock-bg);border:1px solid var(--line-2);box-shadow:var(--dock-shadow);-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px);pointer-events:auto;border-radius:28px;gap:28px;padding:16px 32px;display:flex}.dock-item{cursor:pointer;flex-direction:column;align-items:center;gap:8px;width:72px;transition:all .3s cubic-bezier(.25,.8,.25,1);display:flex;position:relative}.dock-item:hover{transform:translateY(-10px)scale(1.08)}.dock-icon{background:var(--line-1);width:54px;height:54px;color:var(--text-1);border-radius:16px;place-items:center;font-size:24px;transition:background .3s;display:grid}.dock-item:hover .dock-icon,.dock-item.active .dock-icon{background:var(--primary-strong);box-shadow:0 5px 15px var(--glow-primary)}.dock-label{font-size:var(--fs-label);color:var(--text-2);white-space:nowrap;font-weight:500;transition:color .3s}.dock-item:hover .dock-label,.dock-item.active .dock-label{color:var(--on-accent)}.dock-dot{background:var(--on-accent);border-radius:50%;width:6px;height:6px;position:absolute;bottom:-8px}.rank-list{flex-direction:column;gap:8px;display:flex;overflow:hidden}.rank-row{background:var(--c-surface-2);border:1px solid var(--surface-2);cursor:pointer;border-radius:14px;grid-template-columns:28px minmax(0,1fr) 84px 56px;align-items:center;gap:10px;padding:10px 12px;transition:background .2s,border-color .2s;display:grid}.rank-row:hover{background:var(--surface-3)}.rank-row.selected{background:var(--veil-primary);border-color:color-mix(in srgb, var(--primary-soft) 55%, transparent)}.rank-no{color:var(--c-text-3);text-align:center;font-variant-numeric:tabular-nums;font-size:13px;font-weight:700}.rank-name{white-space:nowrap;text-overflow:ellipsis;font-size:15px;overflow:hidden}.rank-bar{background:var(--surface-1);border-radius:3px;height:6px;overflow:hidden}.rank-bar>i{background:linear-gradient(90deg, var(--primary-soft), var(--primary));border-radius:3px;height:100%;display:block}.rank-num{text-align:right;color:var(--c-blue-soft);font-variant-numeric:tabular-nums;font-size:15px;font-weight:700}.kpi-grid{grid-template-columns:repeat(4,1fr);gap:20px;margin-bottom:20px;display:grid}.kpi-card{background:var(--card-bg-2);border:1px solid var(--line-1);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:20px;align-items:center;gap:20px;height:100px;padding:20px;display:flex}.kpi-icon{width:50px;height:50px;color:var(--on-accent);border-radius:12px;place-items:center;font-size:24px;display:grid}.kpi-icon.blue{background:var(--c-blue)}.kpi-icon.orange{background:var(--c-orange)}.kpi-icon.red{background:var(--c-red)}.kpi-icon.green{background:var(--c-green)}.kpi-label{color:var(--text-2);font-size:14px}.kpi-value{font-variant-numeric:tabular-nums;font-size:28px;font-weight:700}.kpi-value.warning{color:var(--c-orange)}.kpi-value.danger{color:var(--c-red)}.kpi-value.success{color:var(--c-green)}.charts-grid{flex:1;grid-template-columns:1fr 1fr;gap:20px;min-height:0;display:grid}.chart-card{background:var(--card-bg-2);border:1px solid var(--line-1);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:20px;flex-direction:column;padding:20px;display:flex}.chart-card.full{grid-column:span 2}.chart-header{color:var(--text-1);margin-bottom:16px;font-size:16px;font-weight:600}.chart-body{flex:1;min-height:0}.dash-page{padding:var(--screen-content-top) var(--screen-side-pad) var(--screen-content-bottom);z-index:10;flex-direction:column;display:flex;position:absolute;inset:0}.dash-scroll{flex-direction:column;flex:1;min-height:0;display:flex}@keyframes slideRight{0%{opacity:0;transform:translate(-50px)}to{opacity:1;transform:translate(0)}}@keyframes slideLeft{0%{opacity:0;transform:translate(50px)}to{opacity:1;transform:translate(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.anim-right{opacity:0;animation:.8s cubic-bezier(.2,.8,.2,1) forwards slideRight}.anim-left{opacity:0;animation:.8s cubic-bezier(.2,.8,.2,1) forwards slideLeft}.anim-up{opacity:0;animation:.8s cubic-bezier(.2,.8,.2,1) .2s forwards slideUp}.anim-down{opacity:0;animation:.6s cubic-bezier(.2,.8,.2,1) forwards slideDown}.state-skeleton{gap:var(--space-md);padding:var(--space-sm) 0;flex-direction:column;display:flex}.sk-row{border-radius:var(--radius-sm);background:linear-gradient(90deg, var(--surface-2) 0%, var(--surface-1) 50%, var(--surface-2) 100%);background-size:200% 100%;height:14px;animation:1.4s ease-in-out infinite sk-shimmer;display:block}@keyframes sk-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.state-block{justify-content:center;align-items:center;gap:var(--space-sm);text-align:center;flex-direction:column;min-height:160px;display:flex}.state-icon{color:var(--text-3)}.state-icon.danger{color:var(--danger)}.state-sub{font-size:var(--fs-label);color:var(--text-3);max-width:420px;line-height:1.5}.ghost-btn{align-items:center;gap:var(--space-xs);height:36px;padding:0 var(--space-lg);margin-top:var(--space-xs);font-family:inherit;font-size:var(--fs-label);color:var(--text-1);background:var(--surface-2);border:var(--card-border);border-radius:var(--radius-pill);cursor:pointer;transition:background .2s,border-color .2s;display:inline-flex}.ghost-btn:hover{background:var(--line-1);border-color:var(--line-2)}.offline-badge{align-items:center;gap:var(--space-xs);height:52px;padding:0 var(--space-lg);font-size:var(--fs-label);color:var(--warning);background:var(--veil-warning);border:1px solid var(--line-warning);border-radius:var(--radius-pill);display:inline-flex}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.module-backdrop{z-index:0;background:var(--canvas-1);position:absolute;inset:0}.page{pointer-events:auto;flex-direction:column;gap:16px;padding:0 28px;display:flex;position:absolute;inset:96px 0 22px;overflow:hidden}.page-head{flex:none;justify-content:space-between;align-items:flex-end;gap:24px;display:flex}.page-title{letter-spacing:.02em;color:var(--text-1);font-size:26px;font-weight:700}.page-sub{font-size:var(--fs-caption);color:var(--text-3);margin-top:6px}.page-actions{align-items:center;gap:10px;display:flex}.panel{background:var(--card-bg);border:var(--card-border);min-height:0;box-shadow:var(--card-shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);pointer-events:auto;border-radius:18px;flex-direction:column;padding:16px 18px;display:flex}.panel.grow{flex:1}.panel-head{flex:none;justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px;display:flex}.panel-title{color:var(--text-1);align-items:center;gap:8px;font-size:15px;font-weight:600;display:flex}.panel-title .count{font-size:var(--fs-caption);color:var(--text-3);font-weight:400}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.field{font-size:var(--fs-caption);color:var(--text-3);align-items:center;gap:6px;display:inline-flex}.input,.select{height:32px;font-family:inherit;font-size:var(--fs-label);color:var(--text-1);background:var(--surface-1);border:1px solid var(--line-1);border-radius:10px;outline:none;padding:0 10px;transition:border-color .18s,background .18s}.input{width:200px}.select{padding-right:26px}.select option{color:var(--option-fg);background:var(--option-bg)}.btn{height:32px;font-family:inherit;font-size:var(--fs-label);color:var(--text-1);background:var(--surface-1);border:1px solid var(--line-1);cursor:pointer;border-radius:10px;align-items:center;gap:6px;padding:0 14px;transition:background .18s,border-color .18s,transform .12s;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)}.btn.primary:hover:not(:disabled){background:var(--primary)}.btn.ghost{background:0 0}.segmented{background:var(--surface-2);border-radius:12px;gap:2px;padding:3px;display:inline-flex}.segmented button{font-family:inherit;font-size:var(--fs-caption);color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:9px;padding:5px 12px;transition:background .18s,color .18s}.segmented button:hover{color:var(--text-1)}.segmented button.active{color:var(--on-accent);background:var(--primary)}.table-wrap{border:1px solid var(--line-1);border-radius:12px;flex:1;min-height:0;overflow:auto}.table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs-label)}.table thead th{z-index:1;font-weight:600;font-size:var(--fs-caption);color:var(--text-3);text-align:left;white-space:nowrap;background:var(--dock-bg);border-bottom:1px solid var(--line-1);padding:10px 12px;position:sticky;top:0}.table thead th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.table thead th.sortable:hover{color:var(--text-1)}.table thead th .arrow{opacity:.9;color:var(--primary-soft);margin-left:4px;display:inline-block}.table tbody td{color:var(--text-2);border-bottom:1px solid var(--line-1);white-space:nowrap;text-overflow:ellipsis;padding:10px 12px;overflow:hidden}.table tbody tr{transition:background .15s}.table tbody tr.selected{background:var(--veil-primary)}.table tbody tr.clickable{cursor:pointer}.table td.cell-strong{color:var(--text-1)}.table .check{width:36px}.table .check input{width:14px;height:14px;accent-color:var(--primary);cursor:pointer}.table .col-right{text-align:right}.table .col-center{text-align:center}.tag{font-size:var(--fs-caption);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:3px 9px;display:inline-flex}.bar{background:var(--surface-2);border-radius:999px;width:92px;height:6px;position:relative;overflow:hidden}.bar>i{background:linear-gradient(90deg, var(--primary-soft), var(--primary));border-radius:999px;position:absolute;inset:0 auto 0 0}.table-foot{font-size:var(--fs-caption);color:var(--text-3);flex:none;justify-content:space-between;align-items:center;gap:16px;padding-top:12px;display:flex}.pager{align-items:center;gap:8px;display:flex}.pager button{min-width:30px;height:30px;font-family:inherit;font-size:var(--fs-caption);color:var(--text-2);background:var(--surface-1);border:1px solid var(--line-1);cursor:pointer;border-radius:9px;padding:0 8px}.pager button:disabled{opacity:.4;cursor:not-allowed}.pager .current{color:var(--text-1);background:var(--veil-primary);border-color:var(--primary-soft)}.bulk-bar{font-size:var(--fs-label);color:var(--text-1);background:var(--veil-primary);border:1px solid var(--primary-soft);border-radius:12px;align-items:center;gap:12px;margin-top:10px;padding:8px 14px;display:flex}.drawer-mask{z-index:60;background:var(--scrim-mask);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);pointer-events:auto;position:absolute;inset:0}.drawer{z-index:61;background:var(--card-bg-hover);border-left:var(--card-border);width:620px;box-shadow:var(--shadow-drawer);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);pointer-events:auto;flex-direction:column;padding:20px 22px;animation:.22s drawer-in;display:flex;position:absolute;top:0;bottom:0;right:0}@keyframes drawer-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}.drawer-head{border-bottom:1px solid var(--line-1);flex:none;justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:12px;display:flex}.drawer-body{flex:1;min-height:0;padding-top:14px;overflow:auto}.drawer-title{color:var(--text-1);font-size:18px;font-weight:600}.icon-btn{width:30px;height:30px;color:var(--text-2);background:var(--surface-1);border:1px solid var(--line-1);cursor:pointer;border-radius:9px;place-items:center;display:grid}.kv{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px;display:grid}.kv .v{font-size:var(--fs-label);color:var(--text-1);word-break:break-all;margin-top:2px}.block-title{font-size:var(--fs-caption);color:var(--text-3);letter-spacing:.04em;margin:18px 0 10px}.timeline{flex-direction:column;gap:0;display:flex}.timeline .step{grid-template-columns:18px 1fr;gap:10px;padding-bottom:14px;display:grid;position:relative}.timeline .step:before{content:"";background:var(--line-1);width:1px;position:absolute;top:14px;bottom:0;left:5px}.timeline .step:last-child:before{display:none}.timeline .dot{z-index:1;background:var(--surface-2);border:2px solid var(--line-2);border-radius:50%;width:11px;height:11px;margin-top:3px;position:relative}.timeline .step.done .dot{background:var(--primary);border-color:var(--primary-soft)}.timeline .what{font-size:var(--fs-label);color:var(--text-1)}.timeline .when{font-size:var(--fs-caption);color:var(--text-3);margin-top:2px}.timeline .step.pending .what{color:var(--text-3)}.frames{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.frame{border:1px solid var(--line-1);background:var(--surface-2);border-radius:12px;position:relative;overflow:hidden}.frame img{width:100%;height:auto;display:block}.frame .cap{font-size:var(--fs-caption);color:var(--on-media);background:var(--media-fade);padding:6px 8px;position:absolute;bottom:0;left:0;right:0}.frame .flag{position:absolute;top:8px;left:8px}.stat-row{flex:none;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.stat-box{background:var(--card-bg);border:var(--card-border);border-radius:14px;padding:12px 14px}.stat-box .v{color:var(--text-1);font-variant-numeric:tabular-nums;margin-top:4px;font-size:24px;font-weight:700}.stat-box .v small{font-size:var(--fs-caption);color:var(--text-3);margin-left:4px;font-weight:400}.mod-empty{color:var(--text-3);font-size:var(--fs-label);place-items:center;gap:8px;padding:40px 0;display:grid}.skeleton-row{background:linear-gradient(90deg, var(--surface-2) 25%, var(--surface-1) 50%, var(--surface-2) 75%);background-size:200% 100%;border-radius:8px;height:34px;margin-bottom:8px;animation:1.2s linear infinite sk-slide}@keyframes sk-slide{0%{background-position:200% 0}to{background-position:-200% 0}}.split{flex:1;grid-template-columns:minmax(0,1fr) 420px;gap:16px;min-height:0;display:grid}@media (width<=1px){.split{grid-template-columns:minmax(0,1fr)}}.patrol-wrap{gap:14px;height:100%;min-height:0;display:flex}.patrol-main{flex-direction:column;flex:1;gap:10px;min-width:0;min-height:0;display:flex}.wallbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.wallbar .spacer{flex:1}.select-wrap{display:inline-flex}.select-wrap .select{height:var(--h-ctl)}.wallbar .hint{color:var(--text-3);font-size:12px}.wall{flex:1;grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:minmax(0,1fr);gap:10px;min-height:0;display:grid}.wall-col{flex-direction:column;gap:8px;min-height:0;display:flex}.col-head{flex:none;align-items:center;gap:8px;height:24px;font-size:13px;display:flex}.col-head .nm{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-1);flex:1;font-weight:600;overflow:hidden}.col-head .ct{color:var(--text-3);flex:none;font-size:12px}.col-body{flex:1;grid-template-rows:repeat(4,minmax(0,1fr));gap:8px;min-height:0;display:grid}.tile .ov-top{justify-content:flex-end}.tile{border:1px solid var(--line-1);background:var(--canvas-1);cursor:pointer;border-radius:10px;transition:border-color .15s,box-shadow .15s;position:relative;overflow:hidden}.tile img{object-fit:cover;width:100%;height:100%;display:block}.tile:hover{border-color:var(--primary)}.tile.touring{border-color:var(--primary);box-shadow:0 0 0 2px var(--veil-primary), 0 0 20px -6px var(--primary)}.tile.placeholder{background:var(--surface-1);color:var(--text-3);font-size:var(--fs-caption);cursor:default;border-style:dashed;place-items:center;display:grid}.tile.placeholder:hover{border-color:var(--line-1)}.tile.offline img{filter:grayscale()brightness(.45)}.tile .ov-top,.tile .ov-bot{align-items:center;gap:6px;display:flex;position:absolute;left:8px;right:8px}.tile .ov-top{justify-content:space-between;top:7px}.tile .ov-bot{color:var(--on-media);text-shadow:var(--media-text-shadow);justify-content:space-between;font-size:12px;bottom:7px}.tile .proj{color:var(--on-media);background:var(--media-chip-bg);border-radius:5px;padding:1px 6px;font-size:12px}.tile .dev{color:var(--text-2);font-size:12px}.tile .hover-mask{opacity:0;background:var(--media-veil);color:var(--on-media);justify-content:center;align-items:center;gap:6px;font-size:13px;transition:opacity .15s;display:flex;position:absolute;inset:0}.tile:hover .hover-mask{opacity:1}.tile-offline{width:100%;height:100%;color:var(--text-3);background:repeating-linear-gradient(45deg, var(--canvas-1), var(--canvas-1) 10px, var(--surface-1) 10px, var(--surface-1) 20px);justify-content:center;align-items:center;font-size:13px;display:flex}.smp-tile.unavailable,.tile.unavailable{background:repeating-linear-gradient(45deg, var(--canvas-1), var(--canvas-1) 10px, var(--surface-1) 10px, var(--surface-1) 20px)}.smp-tile.unavailable:after,.tile.unavailable:after{content:"该通道不可用";color:var(--text-3);justify-content:center;align-items:center;font-size:13px;display:flex;position:absolute;inset:0}.live-video{border:1px solid var(--line-1);border-radius:10px;width:100%;display:block}.table td{padding-top:14px;padding-bottom:14px}.tile video,.smp-tile video,.tile-video{object-fit:cover;background:var(--canvas-1);width:100%;height:100%;display:block}.anno-stage{background:var(--canvas-1);width:100%;height:100%;position:relative;overflow:hidden}.anno-stage>video,.anno-stage .anno-base{object-fit:contain;background:var(--canvas-1);width:100%;height:100%;display:block}.anno-stage>.anno-overlay{object-fit:contain;width:100%;height:100%;display:block;position:absolute;inset:0}.anno-stage.single{border:1px solid var(--line-1);border-radius:10px;height:auto}.anno-stage.single .anno-base{height:auto}.drawer-body video{background:var(--media-bg);border-radius:10px;width:100%;display:block}.zoom{flex:1;gap:12px;min-height:0;display:flex}.zoom-main{border:1px solid var(--line-1);background:var(--canvas-1);border-radius:12px;flex:1;min-width:0;position:relative;overflow:hidden}.zoom-main img{object-fit:contain;width:100%;height:100%}.zoom-main .cap{background:var(--media-fade-strong);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex;position:absolute;bottom:0;left:0;right:0}.zoom-main .cap .t1{color:var(--on-media);font-size:15px;font-weight:700}.zoom-main .cap .t2{color:var(--on-media);opacity:.8;font-size:12px}.zoom-side{flex:0 0 236px;grid-template-columns:1fr 1fr;grid-auto-rows:66px;align-content:start;gap:8px;width:236px;display:grid;overflow-y:auto}.zoom-side .mini{border:1px solid var(--line-1);cursor:pointer;border-radius:8px;position:relative;overflow:hidden}.zoom-side .mini img{object-fit:cover;width:100%;height:100%}.zoom-side .mini.active{border-color:var(--primary);box-shadow:0 0 0 2px var(--veil-primary)}.mini-list{flex-direction:column;gap:6px;display:flex}.mini-row{background:var(--surface-1);border-radius:8px;align-items:center;gap:8px;padding:5px 8px;font-size:13px;display:flex}.mini-row.hoverable:hover{background:var(--surface-2);cursor:pointer}.mini-row .name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.mini-row .sub{color:var(--text-3);flex:none;font-size:12px}.switch{border:1px solid var(--line-1);background:var(--surface-2);cursor:pointer;border-radius:999px;flex:none;width:36px;height:20px;padding:0;position:relative}.switch i{background:var(--text-3);border-radius:50%;width:14px;height:14px;transition:all .15s;position:absolute;top:2px;left:2px}.switch.on{background:var(--veil-primary);border-color:var(--primary)}.switch.on i{background:var(--primary);left:18px}.ev-toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.ev-toolbar .spacer{flex:1}.ev-grid{flex:1;grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:minmax(0,1fr);gap:12px;min-height:0;padding-right:4px;display:grid}.ev-card{border:1px solid var(--line-1);background:var(--surface-1);cursor:pointer;border-radius:10px;flex-direction:column;transition:border-color .15s,box-shadow .15s;display:flex;position:relative;overflow:hidden}.ev-card:hover,.ev-card.on{border-color:var(--primary);box-shadow:0 0 0 2px var(--veil-primary)}.ev-card .shot{background:var(--canvas-1);flex:1;min-height:0;position:relative}.ev-card .shot img{object-fit:cover;width:100%;height:100%;display:block}.ev-card .shot .lvl{gap:6px;display:flex;position:absolute;top:6px;left:6px}.ev-card .shot .st{position:absolute;top:6px;right:6px}.ev-card .shot .dur{color:var(--on-media);background:var(--media-chip-bg);border-radius:4px;padding:1px 5px;font-size:11px;position:absolute;bottom:6px;right:6px}.ev-card .body{padding:8px 10px 10px}.ev-card .t1{color:var(--text-1);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.ev-card .t2{color:var(--text-3);justify-content:space-between;gap:8px;margin-top:4px;font-size:12px;display:flex}.ev-card .pick{opacity:0;transition:opacity .15s;position:absolute;bottom:62px;left:8px}.ev-card:hover .pick,.ev-card.on .pick{opacity:1}.ev-evidence{flex-direction:column;gap:8px;margin-bottom:10px;display:flex}.ev-evidence>img{border:1px solid var(--line-1);background:var(--canvas-1);border-radius:8px;width:100%;display:block}.ev-evidence.thumbs{flex-flow:wrap;align-items:flex-start;gap:6px}.ev-evidence.thumbs>img{width:auto;height:132px}.smp-wrap{gap:14px;height:100%;min-height:0;display:flex}.smp-main{flex-direction:column;flex:1;gap:10px;min-width:0;min-height:0;display:flex}.smp-side{flex-direction:column;flex:0 0 340px;gap:10px;width:340px;min-height:0;display:flex}.smp-grid{flex:1;grid-template-rows:repeat(3,minmax(0,1fr));grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;min-height:0;display:grid}.smp-tile{border:1px solid var(--line-1);background:var(--canvas-1);border-radius:10px;position:relative;overflow:hidden}.smp-tile img{object-fit:cover;width:100%;height:100%;display:block}.smp-tile .cap{color:var(--on-media);text-shadow:var(--media-text-shadow);justify-content:space-between;gap:8px;font-size:12px;display:flex;position:absolute;bottom:7px;left:8px;right:8px}.smp-tile .flag{position:absolute;top:7px;right:8px}.dev-wrap{gap:14px;height:100%;min-height:0;display:flex}.dev-side{flex-direction:column;flex:0 0 400px;gap:10px;width:400px;min-height:0;display:flex}.dev-main{flex-direction:column;flex:1;gap:10px;min-width:0;min-height:0;display:flex}.proj-list{flex-direction:column;flex:1;gap:6px;min-height:0;display:flex;overflow-y:auto}.proj-item{background:var(--surface-1);cursor:pointer;border:1px solid #0000;border-radius:9px;align-items:center;gap:8px;padding:7px 9px;display:flex}.proj-item:hover{background:var(--surface-2)}.proj-item.on{border-color:var(--primary);box-shadow:0 0 0 2px var(--veil-primary)}.proj-item .nm{min-width:0;color:var(--text-1);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;overflow:hidden}.proj-item .sub{color:var(--text-3);flex:none;font-size:12px}.algo-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-content:start;gap:12px;display:grid}.algo-card{border:1px solid var(--line-1);background:var(--surface-1);border-radius:10px;padding:12px}.algo-card .h{justify-content:space-between;align-items:center;gap:8px;display:flex}.algo-card .nm{color:var(--text-1);font-size:15px;font-weight:600}.algo-card .u{color:var(--text-2);margin-top:8px;font-size:13px}.algo-card .s{color:var(--text-3);margin-top:4px;font-size:12px}.algo-card .f{color:var(--text-3);justify-content:space-between;align-items:center;gap:8px;margin-top:10px;font-size:12px;display:flex}.st-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-content:start;gap:12px;display:grid}.st-card{border:1px solid var(--line-1);background:var(--surface-1);cursor:pointer;border-radius:10px;padding:12px}.st-card:hover{border-color:var(--primary)}.st-card.on{border-color:var(--primary);box-shadow:0 0 0 2px var(--veil-primary)}.st-card .h{align-items:center;gap:8px;display:flex}.st-card .nm{color:var(--text-1);flex:1;font-size:15px;font-weight:600}.st-card .row{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.st-card .meta{color:var(--text-3);justify-content:space-between;margin-top:10px;font-size:12px;display:flex}.sens{border:1px solid var(--line-1);border-radius:7px;display:inline-flex;overflow:hidden}.sens button{min-width:30px;height:24px;color:var(--text-3);cursor:pointer;background:0 0;border:0;padding:0 7px;font-size:12px}.sens button.on{background:var(--veil-primary);color:var(--primary);font-weight:600}.chart-card.full{min-height:260px}.org-bar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.org-chip{border:1px solid var(--line-1);background:var(--surface-1);height:32px;color:var(--text-2);cursor:pointer;border-radius:999px;padding:0 14px;font-size:13px}.org-chip.on{background:var(--veil-primary);border-color:var(--primary);color:var(--primary);font-weight:600}.cmp-table td.num,.cmp-table th.num{text-align:right}.cmp-table tr.clickable:hover{background:var(--surface-2);cursor:pointer}.roi{flex-direction:column;gap:8px;display:flex}.roi-tools{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.roi-tools .btn{height:28px;padding:0 12px}.roi-stage{aspect-ratio:4/3;border:1px solid var(--line-1);background:var(--canvas-1);cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:10px;width:100%;position:relative;overflow:hidden}.roi-stage>img{object-fit:contain;pointer-events:none;width:100%;height:100%;display:block}.roi-nosnap{background:repeating-linear-gradient(45deg, var(--canvas-1), var(--canvas-1) 10px, var(--surface-1) 10px, var(--surface-1) 20px);width:100%;height:100%}.roi-svg{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.roi-svg polygon{fill:var(--veil-primary);stroke:var(--primary);stroke-width:.005px}.roi-svg polygon.halo{fill:none;stroke:var(--canvas-1);stroke-width:.011px;opacity:.75}.roi-svg polygon.draft{fill:var(--veil-success);stroke:var(--success);stroke-width:.005px;stroke-dasharray:.012 .012}.roi-svg polygon.draft.halo{fill:none;stroke:var(--canvas-1);stroke-width:.011px;stroke-dasharray:none;opacity:.75}.roi-svg circle{fill:var(--primary-soft);stroke:var(--primary);stroke-width:.004px}.ov-device-groups{flex-direction:column;gap:0;display:flex}.ov-device-groups .stat-item:first-child{box-shadow:none}.ov-device-groups .stat-item{justify-content:space-between;align-items:center;gap:var(--s2);min-width:0;height:var(--h-row-lg);min-height:var(--h-row-lg);padding:0 var(--s2);box-shadow:var(--row-line);background:0 0;border-radius:0;display:flex}.ov-device-groups .stat-item .label{min-width:0;font-size:var(--type-body);color:var(--text-2);text-align:left;white-space:nowrap;text-overflow:ellipsis;flex:1;margin:0;line-height:1.4;overflow:hidden}.ov-device-groups .stat-item .value{font-size:var(--type-body);font-weight:var(--fw-strong);color:var(--text-1);line-height:var(--lh-num);font-variant-numeric:tabular-nums;flex:none}.vt{--vt-bg:var(--media-bg);--vt-chip-bg:var(--media-chip-bg);--vt-box-ok:var(--media-ok);--vt-box-bad:var(--media-bad);--vt-box-unk:var(--media-unk);--vt-fg:var(--on-media);--vt-shadow:var(--media-text-shadow);border:1px solid var(--line-1);background:var(--vt-bg);border-radius:10px;place-items:center;min-width:0;min-height:0;display:grid;position:relative;overflow:hidden}.vt-openable{cursor:pointer}.vt-frame{background:var(--vt-bg);position:relative;overflow:hidden}.vt-video{object-fit:contain;background:var(--vt-bg);width:100%;height:100%;display:block}.vt-ov{pointer-events:none;position:absolute;inset:0}.vt-box{box-sizing:border-box;border:3px solid var(--vt-box-unk);position:absolute}.vt-box.ok{border-color:var(--vt-box-ok)}.vt-box.bad{border-color:var(--vt-box-bad)}.vt-box.unk{border-color:var(--vt-box-unk)}.vt-box.dim{opacity:.32}.vt-box.dim .vt-tag{display:none}.vt-tag{letter-spacing:.02em;white-space:nowrap;color:var(--vt-fg);background:var(--vt-chip-bg);border-radius:3px;padding:1px 6px;font-size:14px;font-weight:600;line-height:18px;position:absolute;left:0}.vt-tag.ok{color:var(--media-ok)}.vt-tag.bad{color:var(--on-accent);background:var(--media-bad)}.vt-tag.unk{color:var(--media-unk)}.vt-hud{pointer-events:none;position:absolute;inset:0}.vt-hud-tl,.vt-hud-br{text-overflow:ellipsis;white-space:nowrap;background:var(--vt-chip-bg);border-radius:5px;max-width:72%;padding:1px 6px;font-size:12px;position:absolute;overflow:hidden}.vt-hud-tl{color:var(--vt-fg);top:7px;left:8px}.vt-hud-br{color:var(--vt-fg);opacity:.78;font-variant-numeric:tabular-nums;bottom:7px;right:8px}.vt-empty{background:var(--vt-bg,var(--media-bg));border-color:var(--line-1)}.vt-empty-note{color:var(--vt-fg);opacity:.66;font-size:12px}.vwall{flex:1;gap:10px;min-height:0;display:grid}.vt-single{aspect-ratio:16/9;width:100%}.drawer:has(.vt-single){width:860px}.drawer:has(.vadmin){width:1080px}.vt-single .vt{width:100%;height:100%}.vadmin{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex}.vadmin-form{flex-direction:column;flex:none;gap:8px;display:flex}.vadmin-row{flex-wrap:wrap;align-items:flex-end}.vadmin-file{display:none}.vadmin-name{color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;max-width:420px;font-size:12px;overflow:hidden}.vadmin-list{flex-direction:column;flex:1;min-height:0;display:flex}.drawer .vadmin{min-height:100%}.drawer .vadmin-list{flex:auto;min-height:300px}.vadmin-empty{border:1px solid var(--line-1);background:var(--media-bg);border-radius:10px;flex:1;min-height:140px}.vadmin-err{color:var(--danger);font-size:12px}.vadmin-meta{flex-direction:column;gap:12px;display:flex}.ev-grid{grid-auto-rows:minmax(0,244px);align-content:start;overflow-y:auto}.ev-thumb{object-fit:contain;background:var(--media-bg);width:100%;height:100%;display:block}.ev-desc{color:var(--text-2);margin-top:12px;font-size:13px;line-height:1.65}.ev-video-meta,.ev-toolbar .hint{color:var(--text-3);font-size:12px}.auth-screen{z-index:100;place-content:center;justify-items:center;row-gap:var(--auth-block-gap);padding:clamp(var(--s7), 4vw, 72px);background:var(--color-canvas);color:var(--text-1);--auth-card-w:440px;--auth-card-pad:var(--s7);--auth-ctl-h:44px;--auth-cap-h:var(--auth-ctl-h);--auth-cap-w:120px;--auth-title:clamp(40px, 2.4vw, 44px);--auth-block-gap:var(--s8);--auth-veil-1:color-mix(in srgb, var(--color-canvas) 97%, transparent);--auth-veil-2:color-mix(in srgb, var(--color-canvas) 88%, transparent);--auth-veil-3:color-mix(in srgb, var(--color-canvas) 72%, transparent);grid-template-rows:auto auto;grid-template-columns:minmax(0,1fr);font-family:inherit;display:grid;position:fixed;inset:0;overflow:hidden}.auth-visual{pointer-events:none;position:absolute;inset:0;overflow:hidden}.auth-photo{background-position:50%;background-repeat:no-repeat;background-size:cover;position:absolute;inset:0}.auth-scrim{background:linear-gradient(180deg, var(--auth-veil-2) 0%, transparent 18%, transparent 74%, var(--auth-veil-1) 100%), linear-gradient(0deg, var(--auth-veil-3), var(--auth-veil-3));position:absolute;inset:0}.auth-head{z-index:1;align-items:center;gap:var(--s4);text-align:center;width:max-content;max-width:100%;display:flex}.auth-accent{width:6px;height:calc(var(--auth-title) * .76);border-radius:var(--r-pill);background:var(--primary);box-shadow:var(--title-shadow);flex:none}.auth-head h1{font-size:var(--auth-title);letter-spacing:var(--track-title);color:var(--text-1);text-shadow:var(--title-shadow);text-wrap:balance;margin:0;font-weight:700;line-height:1.22}.auth-shell{z-index:1;justify-content:center;max-width:100%;display:flex;position:relative}.auth-card{width:var(--auth-card-w);max-width:100%;padding:var(--auth-card-pad);background:var(--card-bg);border:var(--card-border);border-radius:var(--r-panel);box-shadow:var(--card-shadow);-webkit-backdrop-filter:var(--glass-blur);position:relative}.auth-card-title{margin:0 0 var(--s5);font-size:var(--type-subhead);font-weight:var(--fw-title);line-height:var(--lh-tight);letter-spacing:var(--track-title);color:var(--text-1)}.auth-form{gap:var(--s3);display:grid}.auth-field{gap:var(--s2);display:grid}.auth-field>label,.auth-field>span{font-size:var(--type-meta);color:var(--text-2);line-height:var(--lh-tight)}.auth-input{width:100%;height:var(--auth-ctl-h,var(--h-ctl));padding:0 var(--s3);font-family:inherit;font-size:var(--type-ctl);color:var(--text-1);background:var(--surface-2);border:1px solid var(--line-ctl);border-radius:var(--r-ctl);transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease);outline:none}.auth-input:hover{background:var(--surface-1)}.auth-input:focus{border-color:var(--primary-soft);background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--primary-soft)}.auth-input::placeholder{color:var(--text-3)}.auth-input-wrap{position:relative}.auth-input.has-btn{padding-right:calc(var(--auth-ctl-h,var(--h-ctl)) - var(--s2))}.auth-eye{top:50%;right:var(--s1);width:calc(var(--auth-ctl-h) - var(--s3));height:calc(var(--auth-ctl-h) - var(--s3));color:var(--text-2);border-radius:var(--r-inline);cursor:pointer;transition:color var(--dur) var(--ease), background var(--dur) var(--ease);background:0 0;border:0;place-items:center;display:grid;position:absolute;transform:translateY(-50%)}.auth-eye:hover{color:var(--text-1);background:var(--surface-1)}.auth-eye[aria-pressed=true]{color:var(--primary-soft)}.auth-eye:focus-visible{outline:2px solid var(--primary-soft);outline-offset:1px}.auth-check{align-items:center;gap:var(--s2);margin-top:var(--s1);font-size:var(--type-meta);color:var(--text-2);cursor:pointer;-webkit-user-select:none;user-select:none;width:fit-content;display:inline-flex;position:relative}.auth-check input{opacity:0;cursor:pointer;width:18px;height:18px;margin:0;position:absolute;top:50%;left:0;transform:translateY(-50%)}.auth-check-box{width:18px;height:18px;color:var(--on-accent);background:var(--surface-2);border:1px solid var(--text-3);transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease);border-radius:4px;flex:none;place-items:center;display:grid;position:relative}.auth-check-tick{opacity:0;transition:opacity var(--dur) var(--ease), transform var(--dur) var(--ease);transform:scale(.7)}.auth-check input:checked+.auth-check-box{background:var(--primary);border-color:var(--primary)}.auth-check input:checked+.auth-check-box .auth-check-tick{opacity:1;transform:none}.auth-check:hover .auth-check-box{border-color:var(--primary-soft)}.auth-check input:focus-visible+.auth-check-box{outline:2px solid var(--primary-soft);outline-offset:2px}.auth-check:hover{color:var(--text-1)}.ncap{gap:var(--s2);margin-top:var(--s1);display:grid}.ncap-label{font-size:var(--type-meta);color:var(--text-2);line-height:var(--lh-tight)}.ncap-row{width:100%;height:var(--auth-ctl-h);background:var(--surface-2);border:var(--stroke);border-radius:var(--r-ctl);transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease);align-items:center;display:flex;position:relative;overflow:hidden}.ncap-row:hover{background:var(--surface-1)}.ncap-row:focus-within{border-color:var(--primary-soft);box-shadow:inset 0 0 0 1px var(--primary-soft)}.auth-input.ncap-code{width:auto;height:auto;padding:0 var(--s3);padding-right:calc(var(--auth-cap-w) + var(--auth-cap-h) + var(--s3) + var(--s2));font-family:inherit;font-size:var(--type-ctl);letter-spacing:.3em;font-variant-numeric:tabular-nums;color:var(--text-1);border-radius:inherit;background:0 0;border:0;outline:none;position:absolute;inset:-1px}.auth-input.ncap-code:hover,.auth-input.ncap-code:focus{box-shadow:none;background:0 0;border-color:#0000}.ncap-img{top:50%;right:calc(var(--auth-cap-h) + var(--s2));width:var(--auth-cap-w);height:var(--auth-cap-h);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid;position:absolute;overflow:hidden;transform:translateY(-50%)}.ncap-img img{object-fit:cover;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.ncap-img:hover:not(:disabled) img{filter:brightness(1.12)}.ncap-img:disabled{cursor:progress}.ncap-img:focus-visible,.ncap-refresh:focus-visible{outline:2px solid var(--primary-soft);outline-offset:1px}.ncap-skel{background:var(--surface-1);width:100%;height:100%;animation:ncap-pulse 1.2s var(--ease,ease-in-out) infinite alternate}@keyframes ncap-pulse{0%{opacity:.45}to{opacity:1}}.ncap-refresh{width:var(--auth-cap-h);height:var(--auth-cap-h);color:var(--text-2);border-radius:var(--r-ctl);cursor:pointer;transition:color var(--dur) var(--ease), background var(--dur) var(--ease);background:0 0;border:0;place-items:center;display:grid;position:absolute;top:50%;right:0;transform:translateY(-50%)}.ncap-refresh:hover:not(:disabled){color:var(--text-1);background:var(--surface-1)}.ncap-refresh:disabled{opacity:.45;cursor:not-allowed}.auth-msg{height:var(--s5);line-height:var(--s5);font-size:var(--type-ctl);color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.auth-msg.danger{color:var(--danger)}.auth-msg.warning{color:var(--warning)}.auth-submit{height:var(--auth-ctl-h,var(--h-ctl));padding:0 var(--s5);font-family:inherit;font-size:var(--type-ctl);font-weight:var(--fw-strong);letter-spacing:.02em;color:var(--on-accent);background:var(--primary-strong);border-radius:var(--r-ctl);cursor:pointer;transition:background var(--dur) var(--ease), opacity var(--dur) var(--ease);border:0}.auth-submit:hover:not(:disabled){background:var(--primary)}.auth-submit:active:not(:disabled){background:var(--primary-strong)}.auth-submit:disabled{opacity:.5;cursor:not-allowed}.auth-submit:focus-visible{outline:2px solid var(--primary-soft);outline-offset:2px}.auth-actions{justify-content:flex-end;align-items:center;gap:var(--s2);display:flex}.auth-actions .auth-submit{flex:1}.auth-meta{align-items:center;gap:var(--s2);margin:0 0 var(--s5);font-size:var(--type-meta);color:var(--text-3);display:flex}.auth-meta .sep{opacity:.6}.auth-exit{align-items:center;gap:var(--s2);margin-top:var(--s5);font-family:inherit;font-size:var(--type-meta);color:var(--text-3);cursor:pointer;background:0 0;border:0;padding:0;display:inline-flex}.auth-exit:hover{color:var(--text-1)}.auth-card.is-loading{align-content:center;min-height:132px;display:grid}.auth-bar{background:var(--surface-1);border-radius:var(--r-pill);height:2px;position:relative;overflow:hidden}.auth-bar:after{content:"";background:var(--primary);border-radius:var(--r-pill);width:40%;height:100%;animation:auth-bar-run 1.1s var(--ease) infinite;position:absolute;top:0;left:-40%}@keyframes auth-bar-run{to{left:100%}}@media (width<=1180px){.auth-head h1{font-size:32px}.auth-screen{padding:var(--s6)}}@media (height<=780px){.auth-screen{padding:var(--s5) var(--s6)}}@media (width<=440px){.ncap-row{grid-template-columns:var(--auth-cap-w) var(--auth-ctl-h) 1fr;gap:var(--s2);height:auto;box-shadow:none;background:0 0;border:0;display:grid;overflow:visible}.ncap-row:hover{background:0 0}.ncap-row:focus-within{box-shadow:none}.auth-input.ncap-code{height:var(--auth-ctl-h);padding:0 var(--s3);background:var(--surface-2);border:var(--stroke);border-radius:var(--r-ctl);grid-column:1/-1;position:static}.auth-input.ncap-code:hover{background:var(--surface-1);border-color:var(--line-1)}.auth-input.ncap-code:focus{background:var(--surface-2);border-color:var(--primary-soft);box-shadow:inset 0 0 0 1px var(--primary-soft)}.ncap-img,.ncap-refresh{justify-self:start;position:static;transform:none}}@media (prefers-reduced-motion:reduce){.auth-bar:after,.ncap-skel{animation:none}}.user-menu{pointer-events:auto;position:relative}.user-pill{gap:var(--s2);padding-right:var(--s4);cursor:pointer}.user-pill .chev{opacity:.6;transition:transform var(--dur) var(--ease)}.user-pill.is-open .chev{transform:rotate(180deg)}.user-pop{z-index:120;pointer-events:auto;background:var(--card-bg);border:var(--stroke);border-radius:var(--r-panel);width:264px;box-shadow:var(--elev-overlay);-webkit-backdrop-filter:var(--glass-blur,blur(24px));position:absolute;top:calc(100% + 10px);right:0;overflow:hidden}.user-pop-head{padding:var(--s4) var(--s4) var(--s3);border-bottom:var(--stroke)}.user-pop-head .nm{font-size:var(--type-subhead);font-weight:var(--fw-title);line-height:var(--lh-tight);color:var(--text-1)}.user-pop-head .sub{align-items:center;gap:var(--s3);margin-top:var(--s1);display:flex}.user-pop-head .acc{font-size:var(--type-meta);color:var(--text-3)}.user-pop-head .org{margin-top:var(--s1);font-size:var(--type-meta);color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.user-pop-list{padding:var(--s2);flex-direction:column;display:flex}.user-pop-list button{align-items:center;gap:var(--s3);height:var(--h-ctl);padding:0 var(--s3);font-family:inherit;font-size:var(--type-ctl);color:var(--text-2);text-align:left;border-radius:var(--r-inline);cursor:pointer;transition:background var(--dur) var(--ease), color var(--dur) var(--ease);background:0 0;border:0;display:flex}.user-pop-list button:hover{color:var(--text-1);background:var(--surface-2)}.user-pill>span:nth-of-type(2){text-overflow:ellipsis;white-space:nowrap;max-width:132px;overflow:hidden}.pw-mask{z-index:200;pointer-events:auto;background:color-mix(in srgb, var(--color-canvas) 72%, transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.pw-card{width:400px;padding:var(--s6);background:var(--card-bg);border:var(--stroke);border-radius:var(--r-panel);box-shadow:var(--elev-overlay)}.pw-head{margin-bottom:var(--s5);justify-content:space-between;align-items:center;display:flex}.pw-head h3{font-size:var(--type-panel);font-weight:var(--fw-title);color:var(--text-1);margin:0}.pw-close{width:32px;height:32px;color:var(--text-3);border-radius:var(--r-inline);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex}.pw-close:hover{color:var(--text-1);background:var(--surface-2)}:root{--type-display:34px;--type-page:28px;--type-panel:20px;--type-subhead:17px;--type-body:16px;--type-ctl:14px;--type-meta:12px;--type-metric-lg:46px;--type-metric:28px;--type-metric-sm:24px;--lh-tight:1.2;--lh-body:1.55;--lh-num:1;--fw-title:600;--fw-strong:600;--fw-num:600;--track-title:.01em;--track-body:0;--track-num:-.01em;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;--s7:32px;--s8:48px;--r-panel:24px;--r-ctl:12px;--r-inline:8px;--r-pill:999px;--stroke:1px solid var(--line-1);--stroke-strong:1px solid var(--line-2);--h-top:52px;--h-ctl:36px;--h-ctl-sm:30px;--h-row:44px;--h-row-lg:48px;--h-row-media:96px;--h-head:36px;--h-group:32px;--row-pad-x:12px;--row-line:inset 0 1px 0 var(--line-1);--shadow-rgb:0, 0, 0;--elev-panel:0 20px 60px rgba(var(--shadow-rgb), .28);--elev-overlay:0 16px 32px rgba(var(--shadow-rgb), .45);--dur:.22s;--ease:cubic-bezier(.33, 0, .67, 1);--fs-display:var(--type-display);--fs-h1:var(--type-page);--fs-h2:var(--type-panel);--fs-h3:var(--type-subhead);--fs-body:var(--type-body);--fs-label:var(--type-ctl);--fs-caption:var(--type-meta);--fs-metric:var(--type-metric);--fs-metric-lg:var(--type-metric-lg)}.page{gap:var(--s4);padding:0 var(--s7)}.page-head{align-items:center;gap:var(--s6);min-height:var(--h-ctl);padding-bottom:var(--s4);border-bottom:var(--stroke)}.page-title{font-size:var(--type-page);font-weight:var(--fw-title);line-height:var(--lh-tight);letter-spacing:var(--track-title);color:var(--text-1);margin:0}.page-sub{margin-top:var(--s1);font-size:var(--type-meta);line-height:var(--lh-body);color:var(--text-3);letter-spacing:var(--track-body)}.page-actions{gap:var(--s2)}.page-head-main{align-items:baseline;gap:var(--s4);min-width:0;display:flex}.page-count{font-size:var(--type-meta);color:var(--text-3);font-variant-numeric:tabular-nums;white-space:nowrap}.panel,.glass-card{padding:var(--s5) var(--s6);border-radius:var(--r-panel);background:var(--card-bg);border:var(--stroke);box-shadow:var(--elev-panel);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease)}.panel:hover,.glass-card:hover{background:var(--card-bg-hover);border-color:var(--card-border-hover);transform:none}.panel-head,.card-header{justify-content:space-between;align-items:center;gap:var(--s4);margin-bottom:var(--s4);border-bottom:0;padding-bottom:0;display:flex}.panel-title,.card-title{align-items:baseline;gap:var(--s2);font-size:var(--type-panel);font-weight:var(--fw-title);line-height:var(--lh-tight);letter-spacing:var(--track-title);color:var(--text-1);display:flex}.panel-title .count,.card-title .count{font-size:var(--type-meta);color:var(--text-3);letter-spacing:var(--track-body);font-weight:400}.card-icon{color:var(--text-3);align-items:center;display:inline-flex}.card-icon svg{width:16px;height:16px}.card-body{min-height:0}.toolbar{gap:var(--s2)}.field{gap:var(--s2);font-size:var(--type-meta);color:var(--text-3)}.input,.select{height:var(--h-ctl);padding:0 var(--s3);font-family:inherit;font-size:var(--type-ctl);line-height:calc(var(--h-ctl) - 2px);color:var(--text-1);background:var(--surface-2);border:1px solid var(--line-ctl);border-radius:var(--r-ctl);transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease);outline:none}.input::placeholder{color:var(--text-3)}.input:hover,.select:hover{background:var(--surface-1)}.input:focus,.select:focus{border-color:var(--primary-soft);background:var(--surface-2)}.btn{gap:var(--s2);height:var(--h-ctl);padding:0 var(--s4);font-family:inherit;font-size:var(--type-ctl);color:var(--text-1);background:var(--surface-2);border:var(--stroke);border-radius:var(--r-ctl);cursor:pointer;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease), color var(--dur) var(--ease);font-weight:500}.btn:hover:not(:disabled){background:var(--surface-1);border-color:var(--line-2)}.btn:active:not(:disabled){background:var(--line-1);transform:none}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{color:var(--on-accent);background:var(--primary-strong);border-color:#0000}.btn.primary:hover:not(:disabled){background:var(--primary);border-color:#0000}.btn.ghost{color:var(--text-2);background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text-1)}:where(.btn,.input,.select,.icon-btn,.pager button,.segmented button):focus-visible,:where(.glass-button,.glass-pill):focus-visible{outline:2px solid var(--focus-ring,var(--primary-soft));outline-offset:2px}.icon-btn{width:var(--h-ctl);height:var(--h-ctl);color:var(--text-2);border:var(--stroke);border-radius:var(--r-ctl);background:0 0}.icon-btn:hover{color:var(--text-1);background:var(--surface-2)}.segmented{background:var(--surface-2);border-radius:var(--r-ctl);gap:2px;padding:3px}.segmented button{height:calc(var(--h-ctl) - 6px);padding:0 var(--s3);font-family:inherit;font-size:var(--type-meta);color:var(--text-3);border-radius:var(--r-inline);transition:background var(--dur) var(--ease), color var(--dur) var(--ease)}.segmented button.active{color:var(--text-1);background:var(--line-2);font-weight:500}.table-wrap{border:0;border-radius:0}.table{font-size:var(--type-ctl);line-height:var(--lh-body)}.table thead th{height:var(--h-head);padding:0 var(--s3);font-size:var(--type-meta);color:var(--text-3);letter-spacing:var(--track-body);border-bottom:var(--stroke);background:0 0;font-weight:500}.table tbody td{height:var(--h-row);padding:0 var(--s3);font-size:var(--type-ctl);color:var(--text-2);border-bottom:var(--stroke)}.table tbody tr:last-child td{border-bottom:0}.table tbody tr:hover{background:var(--surface-2)}.table tbody tr.selected{background:var(--surface-1);box-shadow:inset 2px 0 0 var(--primary-soft)}.table td.cell-strong{color:var(--text-1);font-weight:500}.table .num,.table .col-right{text-align:right;font-variant-numeric:tabular-nums}.table .check input{accent-color:var(--primary)}.prj-code,.dev-code{font-family:inherit;font-size:var(--type-meta);color:var(--text-2);letter-spacing:var(--track-body);font-variant-numeric:tabular-nums}.table-foot{padding-top:var(--s3);font-size:var(--type-meta);color:var(--text-3)}.pager{gap:var(--s1)}.pager button{min-width:var(--h-ctl-sm);height:var(--h-ctl-sm);padding:0 var(--s2);font-family:inherit;font-size:var(--type-meta);color:var(--text-2);border:var(--stroke);border-radius:var(--r-inline);background:0 0}.pager button:hover:not(:disabled){color:var(--text-1);border-color:var(--line-2)}.pager .current{color:var(--text-1);background:var(--surface-2);font-variant-numeric:tabular-nums;border-color:#0000}.pager .select{height:var(--h-ctl-sm);font-size:var(--type-meta)}.bulk-bar{gap:var(--s3);padding:var(--s2) var(--s3);margin-top:var(--s2);font-size:var(--type-meta);background:var(--surface-2);border:var(--stroke-strong);border-radius:var(--r-ctl)}.bulk-bar .n{color:var(--text-1);font-weight:500}.tag{font-size:var(--type-meta);line-height:var(--lh-body);white-space:nowrap;background:0 0;border-radius:0;align-items:center;gap:6px;padding:0;display:inline-flex}.tag:before{content:"";background:currentColor;border-radius:50%;flex:none;width:5px;height:5px}.tag.muted{color:var(--text-3);background:0 0}.tag.primary{color:var(--primary-soft);background:0 0}.tag.info{color:var(--info);background:0 0}.tag.success{color:var(--success);background:0 0}.tag.warning{color:var(--warning);background:0 0}.tag.danger{color:var(--danger);background:0 0}.bar{border-radius:var(--r-pill);background:var(--surface-1);width:92px;height:6px}.bar>i{border-radius:var(--r-pill);background:var(--primary)}.bar.warn>i{background:var(--warning)}.kv{gap:var(--s3) var(--s6)}.kv .k{font-size:var(--type-meta);color:var(--text-3)}.kv .v{font-size:var(--type-ctl);color:var(--text-1);margin-top:2px}.block-title{margin:var(--s5) 0 var(--s2);font-size:var(--type-meta);color:var(--text-2);letter-spacing:var(--track-body);font-weight:500}.stat-row{gap:var(--s3)}.stat-box{padding:var(--s3) var(--s3);border-radius:var(--r-ctl);background:var(--surface-2);border:0}.stat-box .k{font-size:var(--type-meta);color:var(--text-3)}.stat-box .v{margin-top:var(--s1);font-size:var(--type-metric-sm);font-weight:var(--fw-num);line-height:var(--lh-num);color:var(--text-1);font-variant-numeric:tabular-nums}.stat-box .v small{margin-left:var(--s1);font-size:var(--type-meta);color:var(--text-3);font-weight:400}.state-skeleton{gap:var(--s3);padding:var(--s2) 0}.sk-row{border-radius:var(--r-inline);height:12px}.skeleton-row{height:var(--h-row);margin-bottom:var(--s1);border-radius:var(--r-inline);background:var(--surface-2);animation:1.4s ease-in-out infinite sk-pulse}@keyframes sk-pulse{0%,to{opacity:.55}50%{opacity:1}}.state-block{gap:var(--s2);min-height:140px}.state-title{font-size:var(--type-ctl);color:var(--text-2)}.state-sub{font-size:var(--type-meta);color:var(--text-3)}.ghost-btn{height:var(--h-ctl-sm);padding:0 var(--s3);margin-top:var(--s1);font-size:var(--type-meta);color:var(--text-1);border:var(--stroke-strong);border-radius:var(--r-ctl);background:0 0}.mod-empty{min-height:120px;padding:var(--s6) 0;font-size:var(--type-meta);color:var(--text-3);letter-spacing:var(--track-body)}.drawer{width:620px;padding:var(--s5) var(--s6);background:var(--surface-2);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-left:var(--stroke-strong);box-shadow:var(--elev-overlay)}.drawer-head{padding-bottom:var(--s3);border-bottom:var(--stroke);align-items:center}.drawer-title{font-size:var(--type-panel);font-weight:var(--fw-title);line-height:var(--lh-tight);letter-spacing:var(--track-title);color:var(--text-1)}.drawer-body{padding-top:var(--s4)}.list-body{gap:0;margin-top:0}.list-row,.dist-row{height:var(--h-row-lg);min-height:var(--h-row-lg);padding:0 var(--row-pad-x);transition:background var(--dur) var(--ease);background:0 0;border:0;border-radius:0}.list-row:hover,.dist-row:hover{background:var(--surface-2)}.list-row+.list-row,.dist-row+.dist-row{box-shadow:var(--row-line)}.row-title,.dist-name{font-size:var(--type-body);color:var(--text-1);font-weight:400}.row-sub{font-size:var(--type-ctl);color:var(--text-3);margin-top:2px;line-height:1.2}.dist-num{font-size:var(--type-body);font-weight:var(--fw-num);color:var(--text-1);font-variant-numeric:tabular-nums}.row-icon{border-radius:50%;place-items:center;width:28px;height:28px;display:grid;background:var(--surface-2)!important;color:var(--text-2)!important}.row-icon.high{color:var(--danger)!important}.row-icon.medium{color:var(--warning)!important}.row-icon.low{color:var(--success)!important}.row-icon.info{color:var(--info)!important}.stats-row{gap:var(--s2)}.stat-item{padding:var(--s2) var(--s2) var(--s2);text-align:left;border-radius:var(--r-ctl);background:var(--surface-2);border:0}.stat-item .label{margin-bottom:var(--s1);font-size:var(--type-meta);color:var(--text-3);display:block}.stat-item .value{font-size:var(--type-metric-sm);font-weight:var(--fw-num);line-height:var(--lh-num);color:var(--text-1);font-variant-numeric:tabular-nums;align-items:baseline;gap:2px;display:inline-flex}.stat-item .unit{font-size:var(--type-meta);color:var(--text-3);font-weight:400}.big-stat-main .num{font-size:var(--type-metric-lg);font-weight:var(--fw-num);line-height:var(--lh-num);letter-spacing:var(--track-num);color:var(--text-1);font-variant-numeric:tabular-nums}.big-stat-main .txt{margin-top:var(--s2);font-size:var(--type-meta);color:var(--text-3)}.ov-facts{gap:var(--s5);grid-template-columns:auto minmax(0,1fr) minmax(0,1fr);align-content:center;align-items:center;height:100%;display:grid}.ov-fact{align-items:center;gap:var(--s2);flex-direction:column;min-width:0;display:flex}.ov-fact-k{max-width:100%;font-size:var(--type-ctl);line-height:var(--lh-tight);color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ov-fact-v{justify-content:center;align-items:center;height:100px;display:flex}.ov-fact-num{font-size:var(--type-metric);font-weight:var(--fw-num);line-height:var(--lh-num);color:var(--text-1);font-variant-numeric:tabular-nums;align-items:baseline;gap:2px;display:inline-flex}.ov-fact-unit{font-size:var(--type-ctl);color:var(--text-3);font-weight:400}.ov-facts .percentage{font-weight:var(--fw-num);font-size:var(--type-metric-sm)!important}.ov-chart{height:100%;min-height:0}.ov-algo-rows{flex-direction:column;display:flex}.content .ov-algo-empty{border-bottom:none;flex:auto;height:auto}.ov-algo-row{justify-content:space-between;align-items:center;gap:var(--s3);padding:0 var(--row-pad-x);box-shadow:inset 0 1px 0 var(--line-1);display:flex}.ov-algo-row:first-child{box-shadow:none}.ov-algo-name{min-width:0;font-size:var(--type-body);color:var(--text-1);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ov-algo-val{font-size:var(--type-metric);font-weight:var(--fw-num);line-height:var(--lh-num);color:var(--text-1);font-variant-numeric:tabular-nums;flex:none}.ov-algo-empty{height:var(--h-row-lg);border-bottom:1px solid var(--line-2);font-size:var(--type-ctl);color:var(--text-3);justify-content:center;align-items:center;display:flex}.card-body>.ov-algo-empty{height:100%;min-height:var(--h-row-lg);border-bottom:0}.kpi-strip{align-items:flex-end;gap:var(--s3) var(--s8);padding-bottom:var(--s4);margin-bottom:var(--s4);border-bottom:var(--stroke);flex-wrap:wrap;display:flex}.kpi-item{gap:var(--s1);flex-direction:column;min-width:120px;display:flex}.kpi-item .k{font-size:var(--type-meta);color:var(--text-3);letter-spacing:var(--track-body)}.kpi-item .v{font-size:var(--type-display);font-weight:var(--fw-num);line-height:var(--lh-num);letter-spacing:var(--track-num);color:var(--text-1);font-variant-numeric:tabular-nums}.chart-body{min-height:0;position:relative}.chart-empty{height:100%;min-height:120px;font-size:var(--type-ctl);color:var(--text-3);place-items:center;display:grid}.charts-grid{gap:var(--s3)}.chart-card{padding:var(--s4) var(--s5);border-radius:var(--r-panel);background:var(--card-bg);border:var(--stroke);box-shadow:none;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.chart-header{align-items:baseline;gap:var(--s2);margin-bottom:var(--s3);font-size:var(--type-subhead);font-weight:var(--fw-title);letter-spacing:var(--track-title);color:var(--text-1);display:flex}.chart-header svg{display:none}.chart-header .meta,.org-bar .hint{font-size:var(--type-meta);color:var(--text-3);letter-spacing:var(--track-body);font-weight:400}.org-bar{align-items:center;gap:var(--s2);margin-bottom:var(--s3);display:flex}.org-bar .spacer{flex:1}.org-chip{height:var(--h-ctl-sm);padding:0 var(--s3);font-family:inherit;font-size:var(--type-meta);color:var(--text-3);border:var(--stroke);border-radius:var(--r-ctl);cursor:pointer;transition:color var(--dur) var(--ease), border-color var(--dur) var(--ease);background:0 0}.org-chip:hover{color:var(--text-2)}.org-chip.on{color:var(--text-1);background:var(--surface-2);border-color:#0000}.row-h{height:var(--h-row-lg);min-height:var(--h-row-lg)}.row-h-sm{height:var(--h-row);min-height:var(--h-row)}.row-h-media{height:var(--h-row-media);min-height:var(--h-row-media)}.row-hd{height:var(--h-head)}.row-group-h{height:var(--h-group)}.row-list{flex-direction:column;gap:0;display:flex}.row-sep>*+*{box-shadow:var(--row-line)}.table thead th,tr.row-hd>th{height:var(--h-head)}.table tbody td,tr.row-h-sm>td{height:var(--h-row)}tr.row-h>td,tr.row-h{height:var(--h-row-lg)}.stage .ev-mlist thead th{height:var(--h-head)}.stage .ev-mlist tbody td{height:var(--h-row-lg)}.stage .pg-table thead th{height:var(--h-head)}.stage .pg-list .pg-table{height:auto}.stage .pg-list .pg-table tbody tr{height:var(--h-row-lg)}.stage .pg-table tbody td,.stage .pg-list .pg-table tbody td{height:var(--h-row-lg);padding-top:0;padding-bottom:0}.stage .smp-trace-row{height:var(--h-row-lg);box-shadow:var(--row-line);border-bottom:0;padding:0}.stage .smp-trace-row.head{height:var(--h-head);box-shadow:none;border-bottom:var(--stroke);padding:0}.stage .smp-trace-row:last-child{box-shadow:none}.stage .upg-row{height:var(--h-row-media);min-height:var(--h-row-media);box-shadow:var(--row-line);border-radius:0}.stage .upg-ds-row{height:var(--h-row-lg);min-height:var(--h-row-lg);padding:0 var(--s3);box-shadow:var(--row-line);border:0;border-radius:0;justify-content:center}.stage .upg-ds-rows{gap:0}.stage .org-row,.stage .org-row.root{height:var(--h-row);min-height:var(--h-row);padding:0 var(--s2)}.glass-card{padding:var(--s6)}.card-header{margin-bottom:var(--s5)}.stat-item{padding:var(--s3)}.stat-item .label{font-size:var(--type-ctl)}.stat-item .value{font-size:var(--type-metric)}.row-icon{width:var(--s7);height:var(--s7)}.row-icon svg{width:var(--s4);height:var(--s4)}.left-panel,.right-panel{grid-template-rows:300px 320px minmax(480px,1fr)}.content .ov-device-body{flex-direction:column;display:flex}.content .ov-device-body .big-stat{flex:none;margin-bottom:0}.content .ov-device-groups{scrollbar-width:none;flex:auto;min-height:0;overflow:hidden auto}.content .ov-device-groups::-webkit-scrollbar{width:0;height:0}.content .ov-algo-rows{scrollbar-width:none;flex:auto;min-height:0;overflow:hidden auto}.content .ov-algo-rows::-webkit-scrollbar{width:0;height:0}.content .list-body{flex-direction:column;flex:auto;min-height:0;display:flex;overflow-y:auto}.list-body{scrollbar-width:none;overflow:hidden auto}.list-body::-webkit-scrollbar{width:0;height:0}.card-head-right{flex:none;align-items:center;display:inline-flex}.dist-chip{height:var(--s6);padding:0 var(--s2);border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-2);font-size:var(--type-meta);letter-spacing:var(--track-body);white-space:nowrap;align-items:center;font-weight:400;display:inline-flex}.content .dist-list{scrollbar-width:none;flex-direction:column;flex:auto;gap:0;min-height:0;margin-top:0;display:flex;overflow:hidden auto}.content .dist-list::-webkit-scrollbar{width:0;height:0}.dist-row{align-items:center;gap:var(--s2);width:100%;color:var(--text-1);text-align:left;cursor:pointer;flex:none;grid-template-columns:minmax(0,1fr) 56px;font-family:inherit;display:grid}.dist-row .dist-name{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.dist-row .dist-num{text-align:right}.content .list-row.ov-ev-row{grid-template-columns:var(--s7) minmax(0, 1fr) 96px 64px;align-items:center;gap:var(--s3);padding:0 var(--row-pad-x);white-space:nowrap;display:grid}.content .ov-ev-title{min-width:0;font-size:var(--type-body);color:var(--text-1);font-weight:400;line-height:var(--lh-num);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.content .ov-ev-time{font-size:var(--type-ctl);color:var(--text-3);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.content .ov-ev-row .tag{justify-self:end;width:64px}.content .side-panel{flex:0 0 566px;width:566px}.content .card-title .count,.content .tag{font-size:var(--type-ctl)}.content .row-title{font-size:var(--type-body)}.content .big-stat-main .num{font-size:var(--type-metric);color:var(--text-1)}.content .big-stat .percentage{font-weight:var(--fw-num);font-size:var(--type-metric-sm)!important}table>thead>tr>th:first-child,table>tbody>tr>td:first-child,.table>thead>tr>th:first-child,.table>tbody>tr>td:first-child,.ar-table>thead>tr>th:first-child,.ar-table>tbody>tr>td:first-child,.ev-mlist>thead>tr>th:first-child,.ev-mlist>tbody>tr>td:first-child,.pg-table>thead>tr>th:first-child,.pg-table>tbody>tr>td:first-child,.cmp-table>thead>tr>th:first-child,.cmp-table>tbody>tr>td:first-child{padding-left:var(--s4)}table>thead>tr>th:last-child,table>tbody>tr>td:last-child,.table>thead>tr>th:last-child,.table>tbody>tr>td:last-child,.ar-table>thead>tr>th:last-child,.ar-table>tbody>tr>td:last-child,.ev-mlist>thead>tr>th:last-child,.ev-mlist>tbody>tr>td:last-child,.pg-table>thead>tr>th:last-child,.pg-table>tbody>tr>td:last-child,.cmp-table>thead>tr>th:last-child,.cmp-table>tbody>tr>td:last-child{padding-right:var(--s4)}.page-head>.page-actions{margin-left:auto}.select-wrap .select{text-overflow:ellipsis;width:128px}.org-field .select{width:200px}.ar-gears button{height:calc(var(--h-ctl-sm) - 4px)}.smp-trace-row:not(.head){height:var(--h-row);min-height:var(--h-row);white-space:nowrap;padding:0}.smp-trace-row:not(.head)>*{text-overflow:ellipsis;min-width:0;overflow:hidden}.smp-trace-row.head{height:var(--h-head);padding:0}.sa-page .page-actions .input,.sa-page .page-actions .select{width:180px}.settings-page .auth-input,.settings-page .auth-submit{height:var(--h-ctl);font-size:var(--type-ctl)}
