:root,[data-theme=light]{--font-sans: "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", system-ui, sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--text-xs: 12px;--text-sm: 14px;--text-base: 16px;--text-lg: 20px;--text-xl: 20px;--text-2xl: 24px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--sidebar-expanded: 256px;--sidebar-collapsed: 64px;--topbar-height: 64px;--transition-base: .3s cubic-bezier(.22, 1, .36, 1);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 10px;--radius-xl: 16px;--bg-canvas: #f4f6fa;--pale: #f4f6fa;--surface: #ffffff;--panel: #ffffff;--surface-elevated: #ffffff;--surface-subtle: #eef2f7;--surface-hover: #edf3fc;--sidebar-bg: #eef3f9;--topbar-bg: #ffffff;--text: #0f172a;--ink: #0f172a;--muted: #334155;--subtle: #475569;--border: #cbd5e1;--line: #cbd5e1;--control-border: #64748b;--focus-ring: rgba(29, 95, 214, .28);--blue: #1d5fd6;--accent: #1d5fd6;--blue-hover: #164db0;--blue-soft: #e6effd;--teal: #0d7a5f;--teal-soft: #e6f6f1;--warning: #9a5b08;--warning-soft: #fef4e2;--danger: #b42318;--danger-soft: #feeceb;--primary: var(--blue);--primary-solid: #1d5fd6;--primary-hover: var(--blue-hover);--primary-foreground: #ffffff;--primary-soft: var(--blue-soft);--primary-border: rgba(29, 95, 214, .36);--secondary: var(--surface-subtle);--secondary-hover: var(--surface-hover);--secondary-foreground: var(--text);--success: var(--teal);--success-bg: var(--teal-soft);--success-border: rgba(13, 122, 95, .32);--warning-bg: var(--warning-soft);--warning-border: rgba(154, 91, 8, .32);--destructive: var(--danger);--destructive-solid: #b42318;--destructive-hover: #911b12;--destructive-foreground: #ffffff;--destructive-bg: var(--danger-soft);--destructive-border: rgba(180, 35, 24, .32);--info: var(--blue);--info-bg: var(--blue-soft);--info-border: rgba(29, 95, 214, .32);--bg-surface: var(--surface);--bg-subtle: var(--surface-subtle);--bg-elevated: var(--surface-elevated);--cockpit-banner-bg: var(--surface);--fg-default: var(--text);--fg-muted: var(--muted);--fg-subtle: var(--subtle);--border-color: var(--border);--border-strong: var(--control-border);--input-bg: var(--surface);--input-border: var(--control-border);--ring-color: var(--focus-ring);--sidebar-fg: #1e293b;--sidebar-fg-muted: #475569;--sidebar-border: var(--border);--sidebar-hover-bg: var(--surface-hover);--sidebar-active-bg: var(--blue-soft);--sidebar-active-fg: var(--blue);--sidebar-brand-fg: var(--text);--sidebar-rail-line: var(--border);--topbar-border: var(--border);--shadow-xs: 0 1px 2px rgba(15, 23, 42, .04);--shadow-sm: 0 2px 6px rgba(15, 23, 42, .06);--shadow-md: 0 8px 20px -4px rgba(15, 23, 42, .1);--shadow-lg: 0 16px 32px -8px rgba(15, 23, 42, .14);--chart-1: var(--blue);--chart-2: var(--teal);--chart-3: var(--teal);--chart-4: var(--warning)}[data-theme=dark]{--bg-canvas: #0b1120;--pale: #0b1120;--surface: #111827;--panel: #111827;--surface-elevated: #172133;--surface-subtle: #1a2436;--surface-hover: #1e293b;--sidebar-bg: #090e1a;--topbar-bg: #0f172a;--text: #f1f5f9;--ink: #f1f5f9;--muted: #cbd5e1;--subtle: #94a3b8;--border: #26354d;--line: #26354d;--control-border: #64748b;--focus-ring: rgba(59, 130, 246, .36);--blue: #3b82f6;--accent: #3b82f6;--blue-hover: #2563eb;--blue-soft: rgba(59, 130, 246, .18);--teal: #34d399;--teal-soft: rgba(16, 185, 129, .16);--warning: #fbbf24;--warning-soft: rgba(245, 158, 11, .16);--danger: #f87171;--danger-soft: rgba(239, 68, 68, .16);--primary: var(--blue);--primary-solid: #1d5fd6;--primary-hover: #164db0;--primary-foreground: #ffffff;--primary-soft: var(--blue-soft);--primary-border: rgba(59, 130, 246, .44);--secondary: var(--surface-subtle);--secondary-hover: var(--surface-hover);--secondary-foreground: var(--text);--success: var(--teal);--success-bg: var(--teal-soft);--success-border: rgba(52, 211, 153, .36);--warning-bg: var(--warning-soft);--warning-border: rgba(251, 191, 36, .36);--destructive: var(--danger);--destructive-solid: #b42318;--destructive-hover: #911b12;--destructive-foreground: #ffffff;--destructive-bg: var(--danger-soft);--destructive-border: rgba(248, 113, 113, .38);--info: var(--blue);--info-bg: var(--blue-soft);--info-border: rgba(59, 130, 246, .38);--bg-surface: var(--surface);--bg-subtle: var(--surface-subtle);--bg-elevated: var(--surface-elevated);--cockpit-banner-bg: var(--surface);--fg-default: var(--text);--fg-muted: var(--muted);--fg-subtle: var(--subtle);--border-color: var(--border);--border-strong: var(--control-border);--input-bg: #0c1322;--input-border: var(--control-border);--ring-color: var(--focus-ring);--sidebar-fg: #e2e8f0;--sidebar-fg-muted: #94a3b8;--sidebar-border: var(--border);--sidebar-hover-bg: var(--surface-hover);--sidebar-active-bg: var(--blue-soft);--sidebar-active-fg: var(--blue);--sidebar-brand-fg: var(--text);--sidebar-rail-line: var(--border);--topbar-border: var(--border);--shadow-xs: 0 1px 2px rgba(0, 0, 0, .36);--shadow-sm: 0 2px 6px rgba(0, 0, 0, .44);--shadow-md: 0 10px 24px -4px rgba(0, 0, 0, .56);--shadow-lg: 0 20px 40px -8px rgba(0, 0, 0, .68);--chart-1: var(--blue);--chart-2: var(--teal);--chart-3: var(--teal);--chart-4: var(--warning)}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100%;font-family:var(--font-sans);font-size:var(--text-sm);line-height:1.5;color:var(--fg-default);background-color:var(--bg-canvas);-webkit-font-smoothing:antialiased}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.num,.tabular{font-variant-numeric:tabular-nums}.skip-link{position:fixed;top:-100px;left:16px;z-index:9999;padding:8px 16px;background:var(--primary-solid);color:var(--primary-foreground);border-radius:var(--radius-md);font-weight:600;text-decoration:none}.skip-link:focus{top:16px}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.admin-shell{display:flex;min-height:100dvh;width:100%;max-width:100%;overflow-x:clip;background:var(--bg-canvas)}.admin-sidebar{position:fixed;top:0;left:0;bottom:0;z-index:45;width:var(--sidebar-expanded);background:var(--sidebar-bg);color:var(--sidebar-fg);border-right:1px solid var(--sidebar-border);display:flex;flex-direction:column;transition:width var(--transition-base),transform var(--transition-base);-webkit-user-select:none;user-select:none}.admin-sidebar.is-collapsed{width:var(--sidebar-collapsed)}.admin-main-wrap{flex:1;min-width:0;margin-left:var(--sidebar-expanded);display:flex;flex-direction:column;min-height:100dvh;transition:margin-left var(--transition-base)}.admin-sidebar.is-collapsed~.admin-main-wrap{margin-left:var(--sidebar-collapsed)}.admin-topbar{position:sticky;top:0;z-index:35;height:var(--topbar-height);min-height:var(--topbar-height);padding:0 24px;background:var(--topbar-bg);border-bottom:1px solid var(--topbar-border);display:flex;align-items:center;justify-content:space-between;gap:12px}.admin-content{flex:1;min-width:0;padding:16px 24px 32px;max-width:1720px;width:100%;margin:0 auto}.sidebar-brand{height:var(--topbar-height);min-height:var(--topbar-height);padding:0 16px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--sidebar-border);overflow:hidden}.admin-sidebar.is-collapsed .sidebar-brand{justify-content:center;padding:0}.brand-mark{width:32px;height:32px;min-width:32px;border-radius:var(--radius-sm);background:var(--primary-solid);color:var(--primary-foreground);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;letter-spacing:-.02em}.sidebar-tree{flex:1;padding:8px;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:8px}.admin-sidebar.is-collapsed .sidebar-tree{overflow:visible;align-items:center}.menu-group-wrap{position:relative;width:100%}.menu-group-btn{width:100%;height:36px;padding:0 12px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--sidebar-fg);font-family:inherit;font-size:13px;font-weight:600;display:flex;align-items:center;gap:8px;cursor:pointer;transition:background-color .15s ease,color .15s ease}.menu-group-btn:hover{background:var(--sidebar-hover-bg);color:var(--sidebar-brand-fg)}.menu-group-btn.has-active{color:var(--sidebar-active-fg)}.admin-sidebar.is-collapsed .menu-group-btn{height:40px;width:40px;margin:0 auto;justify-content:center;padding:0}.admin-sidebar.is-collapsed .menu-group-btn.has-active{background:var(--sidebar-active-bg)}.submenu-list{margin:4px 0 4px 16px;padding-left:12px;border-left:1px solid var(--sidebar-rail-line);display:flex;flex-direction:column;gap:4px}.submenu-btn{width:100%;min-height:32px;padding:4px 12px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--sidebar-fg-muted);font-family:inherit;font-size:13px;font-weight:500;display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;text-align:left;transition:background-color .14s ease,color .14s ease}.submenu-btn:hover{background:var(--sidebar-hover-bg);color:var(--sidebar-brand-fg)}.submenu-btn.is-active{background:var(--sidebar-active-bg);color:var(--sidebar-active-fg);font-weight:600}.collapsed-flyout{position:absolute;left:calc(100% + 8px);top:0;z-index:120;min-width:216px;padding:8px;border-radius:var(--radius-xl);background:var(--bg-elevated);border:1px solid var(--border-strong);box-shadow:var(--shadow-lg);opacity:0;pointer-events:none;transform:translate(-4px);transition:opacity .16s ease,transform .16s ease}.admin-sidebar.is-collapsed .menu-group-wrap:hover .collapsed-flyout,.admin-sidebar.is-collapsed .menu-group-wrap:focus-within .collapsed-flyout{opacity:1;pointer-events:auto;transform:translate(0)}.sidebar-footer{padding:12px 16px;border-top:1px solid var(--sidebar-border);display:flex;flex-direction:column;gap:4px}.admin-sidebar.is-collapsed .sidebar-footer{align-items:center;padding:12px 4px}.status-dot{width:8px;height:8px;min-width:8px;border-radius:var(--radius-sm);background:var(--teal)}.status-dot.is-warn{background:var(--warning)}.cockpit-subbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;margin-bottom:16px;border-radius:var(--radius-md);background:var(--cockpit-banner-bg);border:1px solid var(--border-color);box-shadow:var(--shadow-xs)}.drill-banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;margin-bottom:16px;border-radius:var(--radius-md);background:var(--primary-soft);border:1px solid var(--primary-border)}.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:var(--radius-md);font-family:inherit;font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;border:1px solid transparent;text-decoration:none;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.ui-btn:disabled,.ui-btn[aria-disabled=true]{opacity:.52;cursor:not-allowed;pointer-events:none}.ui-btn--default{background:var(--primary-solid);color:var(--primary-foreground)}.ui-btn--default:hover{background:var(--primary-hover)}.ui-btn--destructive{background:var(--destructive-solid);color:var(--destructive-foreground)}.ui-btn--destructive:hover{background:var(--destructive-hover)}.ui-btn--outline{background:var(--bg-surface);color:var(--fg-default);border-color:var(--border-strong)}.ui-btn--outline:hover{background:var(--surface-hover)}.ui-btn--secondary{background:var(--secondary);color:var(--secondary-foreground)}.ui-btn--secondary:hover{background:var(--secondary-hover)}.ui-btn--ghost{background:transparent;color:var(--fg-muted)}.ui-btn--ghost:hover{background:var(--surface-hover);color:var(--fg-default)}.ui-btn--link{background:transparent;color:var(--primary);padding:0 4px!important;height:auto!important}.ui-btn--link:hover{text-decoration:underline}.ui-btn--size-sm{height:32px;padding:0 12px;font-size:12px;border-radius:var(--radius-sm)}.ui-btn--size-default{height:40px;padding:0 16px;font-size:14px;border-radius:var(--radius-md)}.ui-btn--size-lg{height:40px;padding:0 24px;font-size:14px;border-radius:var(--radius-md)}.ui-btn--size-icon{height:36px;width:36px;padding:0;border-radius:var(--radius-sm)}@keyframes ui-spin{to{transform:rotate(360deg)}}.ui-spinner{animation:ui-spin .75s linear infinite}@keyframes ui-pulse{0%,to{opacity:.9}50%{opacity:.42}}.ui-skeleton{background:var(--bg-subtle);border-radius:var(--radius-md);animation:ui-pulse 1.5s ease-in-out infinite}.ui-card{min-width:0;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-xl);box-shadow:var(--shadow-xs)}.ui-card--interactive{cursor:pointer}.ui-card--interactive:hover{border-color:var(--primary-border);background:var(--surface-hover)}.cockpit-kpi{position:relative;overflow:hidden;padding:16px;display:flex;flex-direction:column;gap:8px}.cockpit-kpi--blue{border-top:2px solid var(--blue)}.cockpit-kpi--amber{border-top:2px solid var(--warning)}.cockpit-kpi--emerald{border-top:2px solid var(--teal)}.cockpit-kpi--cyan{border-top:2px solid var(--blue)}.ui-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border-radius:var(--radius-sm);font-size:12px;font-weight:500;line-height:1.4;border:1px solid transparent;white-space:nowrap}.ui-badge--neutral{background:var(--bg-subtle);color:var(--fg-muted);border-color:var(--border-color)}.ui-badge--primary{background:var(--primary-soft);color:var(--primary);border-color:var(--primary-border)}.ui-badge--success{background:var(--success-bg);color:var(--success);border-color:var(--success-border)}.ui-badge--warning{background:var(--warning-bg);color:var(--warning);border-color:var(--warning-border)}.ui-badge--error{background:var(--destructive-bg);color:var(--destructive);border-color:var(--destructive-border)}.ui-badge--info{background:var(--info-bg);color:var(--info);border-color:var(--info-border)}.ui-progress{width:100%;height:8px;border-radius:var(--radius-sm);background:var(--bg-subtle);overflow:hidden}.ui-progress__bar{height:100%;border-radius:var(--radius-sm);background:var(--primary);transition:width .3s ease}.ui-progress__bar--success{background:var(--success)}.ui-progress__bar--warning{background:var(--warning)}.ui-input,.ui-select{width:100%;height:36px;padding:0 12px;border-radius:var(--radius-md);border:1px solid var(--input-border);background:var(--input-bg);color:var(--fg-default);font-family:inherit;font-size:13px}.ui-input:focus,.ui-select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--ring-color)}.ui-label{display:block;font-size:12px;font-weight:600;color:var(--fg-muted);margin-bottom:4px}.ui-switch{position:relative;width:40px;height:24px;min-width:40px;border-radius:var(--radius-md);border:1px solid var(--border-strong);background:var(--bg-subtle);cursor:pointer;padding:0}.ui-switch[aria-checked=true]{background:var(--primary-solid);border-color:var(--primary-solid)}.ui-switch__thumb{position:absolute;top:4px;left:4px;width:14px;height:14px;border-radius:var(--radius-sm);background:var(--primary-foreground);transition:transform .18s ease}.ui-switch[aria-checked=true] .ui-switch__thumb{transform:translate(16px)}.ui-checkbox{width:16px;height:16px;min-width:16px;border-radius:var(--radius-sm);border:1.5px solid var(--input-border);background:var(--input-bg);color:var(--primary-foreground);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.ui-checkbox[aria-checked=true],.ui-checkbox[aria-checked=mixed]{background:var(--primary-solid);border-color:var(--primary-solid)}.dt-wrap{width:100%;overflow-x:auto}.dt-table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}.dt-table th{position:sticky;top:0;z-index:2;padding:8px 12px;font-size:12px;font-weight:600;color:var(--fg-subtle);background:var(--bg-subtle);border-bottom:1px solid var(--border-color);white-space:nowrap}.dt-table td{padding:12px;border-bottom:1px solid var(--border-color);color:var(--fg-default);vertical-align:middle}.dt-row:hover{background:var(--surface-hover)}.dt-row.is-selected{background:var(--primary-soft)}.dt-expanded-cell{background:var(--bg-subtle);padding:16px 24px!important}.kpi-grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.split-3-col{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1.35fr) minmax(0,1.1fr);gap:16px}.split-2-1{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(0,1fr);gap:16px}.split-reader-2{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.85fr);gap:16px}.split-equal-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.mobile-only{display:none!important}@media(max-width:1279px){.split-3-col{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:1023px){.kpi-grid-4,.split-2-1,.split-reader-2,.split-3-col,.split-equal-2{grid-template-columns:1fr}}@media(max-width:720px){.desktop-only{display:none!important}.mobile-only{display:inline-flex!important}.admin-sidebar{width:var(--sidebar-expanded)!important;transform:translate(-100%);box-shadow:var(--shadow-lg)}.admin-sidebar.is-mobile-open{transform:translate(0)}.admin-main-wrap,.admin-sidebar.is-collapsed~.admin-main-wrap{margin-left:0!important}.admin-topbar{padding:0 12px}.admin-content{padding:12px}.ui-btn--size-default,.ui-btn--size-icon{min-height:40px}.dt-wrap{overflow-x:hidden}.dt-table,.dt-table tbody{display:block;width:100%}.dt-table thead{display:none}.dt-table tr.dt-row{display:flex;flex-direction:column;gap:8px;padding:12px;margin:8px 12px;border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-subtle)}.dt-table td{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:0!important;border-bottom:none!important;text-align:left!important;width:100%;min-width:0;word-break:break-word}.dt-table td[data-label]:before{content:attr(data-label);font-size:12px;font-weight:600;color:var(--fg-subtle)}}.mobile-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#0f172a85}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:#0f172a85;display:flex;align-items:center;justify-content:center;padding:16px}.modal-panel{width:100%;max-width:580px;max-height:90vh;overflow-y:auto;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:24px}.drawer-panel{position:fixed;top:0;right:0;bottom:0;z-index:85;width:min(600px,100vw);background:var(--bg-surface);border-left:1px solid var(--border-color);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;overflow:hidden}
