@font-face{font-family:Inter;font-style:normal;font-weight:400 700;font-display:swap;src:url(/_ems/inter-latin-ext-DO1Apj_S.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:400 700;font-display:swap;src:url(/_ems/inter-latin-Dx4kXJAl.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:dark;--surface-0: #08090C;--surface-1: #0E1015;--surface-2: #14171E;--surface-3: #1A1E27;--surface-sunken: #05060A;--surface-tint-weak: rgba(255, 255, 255, .02);--surface-tint: rgba(255, 255, 255, .035);--surface-tint-strong: rgba(255, 255, 255, .06);--border-subtle: rgba(255, 255, 255, .055);--border-default: rgba(255, 255, 255, .09);--border-strong: rgba(255, 255, 255, .16);--border-accent: rgba(99, 102, 241, .45);--edge-highlight: inset 0 1px 0 rgba(255, 255, 255, .045);--text-primary: #E9EEF5;--text-secondary: #98A4B3;--text-tertiary: #6A7684;--text-disabled: #4A5563;--text-inverse: #08090C;--text-on-accent: #FFFFFF;--accent: #6366F1;--accent-hover: #7C7FF5;--accent-active: #5457E5;--accent-text: #A9ABFF;--accent-soft: rgba(99, 102, 241, .13);--accent-softer: rgba(99, 102, 241, .07);--accent-ring: rgba(99, 102, 241, .5);--energy-solar: #FBBF24;--energy-storage: #34D399;--energy-grid: #A78BFA;--energy-load: #38BDF8;--status-online: #34D399;--status-offline: #5A6474;--status-alarm: #FB7185;--status-warn: #FBBF24;--status-info: #38BDF8;--status-success: #34D399;--status-danger: #FB7185;--status-online-soft: rgba(52, 211, 153, .14);--status-alarm-soft: rgba(251, 113, 133, .14);--status-warn-soft: rgba(251, 191, 36, .14);--status-info-soft: rgba(56, 189, 248, .14);--status-offline-soft: rgba(255, 255, 255, .06);--color-gray-50: #10131A;--color-gray-100: #161A22;--color-gray-200: #1D222C;--color-gray-300: #262C38;--color-gray-400: #3A4250;--color-gray-500: #5A6474;--color-gray-600: #8B95A5;--color-gray-700: #B4BDCB;--color-gray-800: #D6DDE8;--color-gray-900: #EEF3FA;--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI Variable Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", sans-serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Mono", "Roboto Mono", Menlo, Consolas, "Liberation Mono", monospace;--font-size-xs: 11px;--font-size-sm: 12px;--font-size-base: 13px;--font-size-md: 15px;--font-size-lg: 17px;--font-size-xl: 20px;--font-size-2xl: 26px;--font-size-3xl: 34px;--font-size-4xl: 44px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.2;--line-height-snug: 1.4;--line-height-normal: 1.55;--tracking-tight: -.022em;--tracking-normal: -.006em;--tracking-wide: .02em;--tracking-caps: .09em;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--space-20: 80px;--radius-xs: 3px;--radius-sm: 5px;--radius-md: 7px;--radius-lg: 10px;--radius-xl: 14px;--radius-2xl: 20px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .45);--shadow-md: 0 4px 14px rgba(0, 0, 0, .45);--shadow-lg: 0 18px 44px rgba(0, 0, 0, .55);--shadow-xl: 0 32px 80px rgba(0, 0, 0, .62);--shadow-glow: 0 0 0 1px var(--border-accent), 0 0 28px rgba(99, 102, 241, .22);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--dur-instant: 90ms;--dur-fast: .14s;--dur-normal: .22s;--dur-slow: .34s;--dur-emphasis: .56s;--transition-fast: var(--dur-fast) var(--ease-out);--transition-normal: var(--dur-normal) var(--ease-out);--transition-slow: var(--dur-slow) var(--ease-out);--sidebar-width: 248px;--sidebar-width-compact: 68px;--header-height: 60px;--menu-item-height: 42px;--param-grid-min: 380px;--param-control-min: 320px;--param-control-max: 380px;--z-sidebar: 100;--z-header: 110;--z-backdrop: 200;--z-drawer-mobile: 210;--z-modal: 300;--z-toast: 400;--color-brand: var(--surface-1);--color-brand-light: var(--surface-2);--color-brand-dark: var(--surface-0);--color-accent: var(--accent);--color-accent-light: var(--accent-hover);--color-accent-dark: var(--accent-active);--color-accent-glow: rgba(99, 102, 241, .22);--color-success: var(--status-success);--color-warning: var(--status-warn);--color-danger: var(--status-danger);--color-info: var(--status-info);--color-sidebar-bg: var(--surface-1);--color-sidebar-text: var(--text-secondary);--color-sidebar-text-muted: var(--text-tertiary);--color-sidebar-hover: var(--surface-tint);--color-sidebar-active: var(--accent-soft);--color-sidebar-active-border: var(--accent);--color-sidebar-border: var(--border-subtle);--color-sidebar-footer-border: var(--border-subtle);--color-sidebar-active-text: var(--text-primary);--color-header-bg: rgba(10, 12, 16, .72);--color-header-text: var(--text-primary);--color-header-border: var(--border-subtle);--color-content-bg: var(--surface-0);--color-content-text: var(--text-primary);--color-content-text-secondary: var(--text-secondary);--color-content-text-muted: var(--text-tertiary);--color-card-bg: var(--surface-1);--color-card-border: var(--border-default);--color-card-shadow: var(--shadow-sm);--color-tab-content-bg: var(--surface-tint-weak);--color-tab-content-border: var(--border-subtle);--color-tab-bar-bg: rgba(0, 0, 0, .22);--color-tab-bar-border: var(--border-subtle);--color-input-bg: var(--surface-sunken);--color-input-border: var(--border-default);--color-input-border-focus: var(--accent);--color-input-text: var(--text-primary);--color-input-placeholder: var(--text-tertiary);--color-button-primary-bg: linear-gradient(180deg, #6D70F6 0%, #5457E5 100%);--color-button-primary-text: var(--text-on-accent);--color-button-primary-shadow: 0 1px 2px rgba(0, 0, 0, .4), inset 0 1px 0 rgba(255, 255, 255, .14);--color-button-danger-bg: var(--status-danger);--color-button-danger-text: #FFFFFF;--color-switch-off-bg: rgba(255, 255, 255, .1);--color-switch-on-bg: linear-gradient(180deg, #6D70F6 0%, #5457E5 100%);--color-switch-knob: #FFFFFF}[data-theme=light]{color-scheme:light;--surface-0: #F4F5F8;--surface-1: #FFFFFF;--surface-2: #FAFBFC;--surface-3: #FFFFFF;--surface-sunken: #F7F8FA;--surface-tint-weak: rgba(15, 23, 42, .015);--surface-tint: rgba(15, 23, 42, .035);--surface-tint-strong: rgba(15, 23, 42, .06);--border-subtle: rgba(15, 23, 42, .06);--border-default: rgba(15, 23, 42, .1);--border-strong: rgba(15, 23, 42, .18);--border-accent: rgba(79, 70, 229, .4);--edge-highlight: inset 0 1px 0 rgba(255, 255, 255, .9);--text-primary: #0F172A;--text-secondary: #5A6478;--text-tertiary: #8A93A5;--text-disabled: #B4BAC6;--text-inverse: #FFFFFF;--accent: #4F46E5;--accent-hover: #4338CA;--accent-active: #3730A3;--accent-text: #4F46E5;--accent-soft: rgba(79, 70, 229, .09);--accent-softer: rgba(79, 70, 229, .05);--accent-ring: rgba(79, 70, 229, .35);--energy-solar: #D97706;--energy-storage: #059669;--energy-grid: #7C3AED;--energy-load: #0284C7;--status-online: #059669;--status-offline: #94A3B8;--status-alarm: #E11D48;--status-warn: #D97706;--status-info: #0284C7;--status-success: #059669;--status-danger: #E11D48;--status-online-soft: rgba(5, 150, 105, .1);--status-alarm-soft: rgba(225, 29, 72, .09);--status-warn-soft: rgba(217, 119, 6, .1);--status-info-soft: rgba(2, 132, 199, .09);--status-offline-soft: rgba(15, 23, 42, .05);--color-gray-50: #F8FAFC;--color-gray-100: #F1F5F9;--color-gray-200: #E7ECF2;--color-gray-300: #D5DCE5;--color-gray-400: #A8B2C0;--color-gray-500: #7A8698;--color-gray-600: #5A6478;--color-gray-700: #414B5E;--color-gray-800: #29323F;--color-gray-900: #131A24;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06), 0 1px 3px rgba(15, 23, 42, .04);--shadow-md: 0 2px 4px rgba(15, 23, 42, .05), 0 8px 20px rgba(15, 23, 42, .07);--shadow-lg: 0 12px 32px rgba(15, 23, 42, .1), 0 2px 6px rgba(15, 23, 42, .05);--shadow-xl: 0 32px 72px rgba(15, 23, 42, .16);--shadow-glow: 0 0 0 1px var(--border-accent), 0 6px 24px rgba(79, 70, 229, .16);--color-header-bg: rgba(255, 255, 255, .78);--color-accent-glow: rgba(79, 70, 229, .18);--color-button-primary-bg: linear-gradient(180deg, #5A51EA 0%, #4F46E5 100%);--color-button-primary-shadow: 0 1px 2px rgba(15, 23, 42, .12), inset 0 1px 0 rgba(255, 255, 255, .18);--color-switch-off-bg: rgba(15, 23, 42, .14);--color-switch-on-bg: linear-gradient(180deg, #5A51EA 0%, #4F46E5 100%)}@media(prefers-reduced-motion:reduce){:root{--dur-instant: 0ms;--dur-fast: 0ms;--dur-normal: 0ms;--dur-slow: 0ms;--dur-emphasis: 0ms}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height-normal);letter-spacing:var(--tracking-normal);color:var(--text-primary);background:var(--surface-0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-variant-numeric:tabular-nums;transition:background var(--dur-normal) var(--ease-out),color var(--dur-normal) var(--ease-out)}#app{height:100%}.app-layout{position:relative;isolation:isolate}.app-layout:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background-image:linear-gradient(to right,rgba(255,255,255,.022) 1px,transparent 1px),linear-gradient(to bottom,rgba(255,255,255,.022) 1px,transparent 1px);background-size:56px 56px;mask-image:radial-gradient(ellipse 120% 90% at 50% 0%,#000 20%,transparent 78%);-webkit-mask-image:radial-gradient(ellipse 120% 90% at 50% 0%,#000 20%,transparent 78%)}[data-theme=light] .app-layout:before{background-image:linear-gradient(to right,rgba(15,23,42,.028) 1px,transparent 1px),linear-gradient(to bottom,rgba(15,23,42,.028) 1px,transparent 1px)}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);letter-spacing:var(--tracking-tight);color:var(--text-primary)}.num,.metric-value,.tabular{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1,"cv05" 1}code,kbd,pre,samp{font-family:var(--font-mono);font-size:.92em}a{color:inherit;text-decoration:none}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}img,svg{display:block;max-width:100%}:focus{outline:none}:focus-visible{outline:2px solid var(--accent-ring);outline-offset:2px;border-radius:var(--radius-xs)}::selection{background:var(--accent-soft);color:var(--text-primary)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-default);border:3px solid transparent;border-radius:var(--radius-full);background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:var(--border-strong);background-clip:content-box}::-webkit-scrollbar-corner{background:transparent}.micro-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-tertiary);line-height:1.4}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.no-scrollbar{scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}@keyframes dpc-fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes dpc-fade-in{0%{opacity:0}to{opacity:1}}@keyframes dpc-scale-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}@keyframes dpc-spin{to{transform:rotate(360deg)}}@keyframes dpc-pulse-ring{0%{box-shadow:0 0 0 0 currentColor;opacity:.7}70%{box-shadow:0 0 0 6px transparent;opacity:0}to{box-shadow:0 0 0 0 transparent;opacity:0}}@keyframes dpc-breathe{0%,to{opacity:.55}50%{opacity:.9}}@keyframes dpc-shimmer{0%{background-position:-180% 0}to{background-position:180% 0}}.animate-fade-up{animation:dpc-fade-up var(--dur-slow) var(--ease-out) both}.animate-fade-in{animation:dpc-fade-in var(--dur-normal) var(--ease-out) both}.spin{animation:dpc-spin .9s linear infinite}.stagger>*{animation:dpc-fade-up var(--dur-slow) var(--ease-out) both;animation-delay:calc(var(--i, 0) * 55ms)}@media(prefers-reduced-motion:reduce){.animate-fade-up,.animate-fade-in,.stagger>*,.spin{animation:none!important}}.panel{position:relative;background:var(--surface-1);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--edge-highlight)}.panel--flush{background:transparent;border-color:transparent;box-shadow:none}.panel--raised{background:var(--surface-2)}.panel--sunken{background:var(--surface-sunken)}.panel--interactive{transition:border-color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out);cursor:pointer}.panel--interactive:hover{background:var(--surface-2);border-color:var(--border-strong);transform:translateY(-1px)}.panel--interactive:active{transform:translateY(0)}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border-subtle)}.panel-title{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-tight);color:var(--text-primary)}.panel-body{padding:var(--space-5)}.panel-body--tight{padding:var(--space-3)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:34px;padding:0 var(--space-4);border-radius:var(--radius-md);border:1px solid transparent;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-normal);white-space:nowrap;-webkit-user-select:none;user-select:none;transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-instant) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.btn:active:not(:disabled){transform:translateY(.5px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--color-button-primary-bg);color:var(--text-on-accent);box-shadow:var(--color-button-primary-shadow)}.btn-primary:hover:not(:disabled){filter:brightness(1.08);box-shadow:var(--color-button-primary-shadow),0 4px 16px #6366f147}.btn-secondary{background:var(--surface-tint);border-color:var(--border-default);color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background:var(--surface-tint-strong);border-color:var(--border-strong)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--surface-tint);color:var(--text-primary)}.btn-danger{background:var(--status-danger);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(1.08)}.btn-sm{height:28px;padding:0 var(--space-3);font-size:var(--font-size-sm)}.btn-lg{height:40px;padding:0 var(--space-5);font-size:var(--font-size-md)}.btn-icon{width:32px;height:32px;padding:0;border-radius:var(--radius-md);color:var(--text-secondary)}.btn-icon:hover:not(:disabled){background:var(--surface-tint);color:var(--text-primary)}.field-label{display:block;margin-bottom:var(--space-2);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-secondary)}.input,.select,.textarea{width:100%;height:36px;padding:0 var(--space-3);background:var(--surface-sunken);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-base);transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}.textarea{height:auto;padding:var(--space-3);line-height:var(--line-height-normal)}.input::placeholder,.textarea::placeholder{color:var(--text-tertiary)}.input:hover,.select:hover,.textarea:hover{border-color:var(--border-strong)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input:disabled,.select:disabled{opacity:.5;cursor:not-allowed}.select-subparam>.field-select{width:100%;min-width:min(var(--param-control-min),100%);max-width:var(--param-control-max)}.badge{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 var(--space-2);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wide);white-space:nowrap}.badge--online{background:var(--status-online-soft);color:var(--status-online)}.badge--offline{background:var(--status-offline-soft);color:var(--text-tertiary)}.badge--alarm{background:var(--status-alarm-soft);color:var(--status-alarm)}.badge--warn{background:var(--status-warn-soft);color:var(--status-warn)}.badge--info{background:var(--status-info-soft);color:var(--status-info)}.badge--neutral{background:var(--surface-tint);color:var(--text-secondary)}.status-dot{position:relative;width:7px;height:7px;border-radius:var(--radius-full);background:currentColor;flex-shrink:0}.status-dot--live:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;animation:dpc-pulse-ring 2.2s var(--ease-out) infinite}.data-table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--font-size-base)}.data-table thead th{position:sticky;top:0;z-index:1;padding:var(--space-3) var(--space-4);background:var(--surface-2);border-bottom:1px solid var(--border-default);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-tertiary);text-align:left;white-space:nowrap}.data-table tbody td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-subtle);color:var(--text-secondary);vertical-align:middle}.data-table tbody tr{transition:background var(--dur-fast) var(--ease-out)}.data-table tbody tr:hover td{background:var(--surface-tint)}.data-table tbody tr:last-child td{border-bottom:none}.data-table td.is-primary{color:var(--text-primary);font-weight:var(--font-weight-medium)}.tabs{display:flex;align-items:center;gap:var(--space-1);border-bottom:1px solid var(--border-subtle)}.tab{position:relative;padding:var(--space-3) var(--space-4);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--text-secondary);transition:color var(--dur-fast) var(--ease-out)}.tab:hover,.tab.active{color:var(--text-primary)}.tab.active:after{content:"";position:absolute;left:var(--space-4);right:var(--space-4);bottom:-1px;height:2px;border-radius:2px 2px 0 0;background:var(--accent)}.metric{display:flex;flex-direction:column;gap:var(--space-1)}.metric-value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-tight);line-height:1.1;color:var(--text-primary);font-variant-numeric:tabular-nums}.metric-unit{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-tertiary);margin-left:3px}.metric-label{font-size:var(--font-size-sm);color:var(--text-secondary)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-12) var(--space-6);text-align:center;color:var(--text-tertiary)}.empty-state svg{opacity:.4}.empty-state__title{font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--text-secondary)}.empty-state__hint{font-size:var(--font-size-sm);color:var(--text-tertiary);max-width:42ch}.skeleton{background:linear-gradient(90deg,var(--surface-tint) 0%,var(--surface-tint-strong) 50%,var(--surface-tint) 100%);background-size:200% 100%;animation:dpc-shimmer 1.6s linear infinite;border-radius:var(--radius-sm)}.divider{height:1px;background:var(--border-subtle);border:none}.toolbar{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.toolbar__spacer{flex:1}.page-wrap{padding:var(--space-6);max-width:1600px;margin:0 auto;width:100%}.page-card{background:var(--surface-1);border:1px solid var(--border-default);border-radius:var(--radius-xl);box-shadow:var(--edge-highlight);overflow:hidden}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5)}.page-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-tight);color:var(--text-primary)}.page-sub{margin-top:3px;font-size:var(--font-size-sm);color:var(--text-tertiary)}.state-center{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);min-height:320px;padding:var(--space-10) var(--space-6);text-align:center;color:var(--text-tertiary)}.state-center .empty-icon{color:var(--text-disabled)}.state-center .empty-title{font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--text-secondary)}.state-center .empty-hint{font-size:var(--font-size-sm);color:var(--text-tertiary);max-width:44ch}.error-text{color:var(--status-alarm);font-size:var(--font-size-base)}.btn-retry{height:32px;padding:0 var(--space-4);border-radius:var(--radius-md);border:1px solid var(--border-default);background:var(--surface-tint);color:var(--text-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.btn-retry:hover{background:var(--surface-tint-strong);border-color:var(--border-strong)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-4)}.toast{position:fixed;top:calc(var(--header-height) + var(--space-4));right:var(--space-6);z-index:var(--z-toast);display:flex;align-items:center;gap:var(--space-2);min-width:220px;padding:var(--space-3) var(--space-4);background:var(--surface-3);border:1px solid var(--border-default);border-left:3px solid var(--status-info);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-size:var(--font-size-base);color:var(--text-primary);animation:dpc-fade-up var(--dur-normal) var(--ease-out) both}.toast.success{border-left-color:var(--status-online)}.toast.error{border-left-color:var(--status-alarm)}.toast.warning{border-left-color:var(--status-warn)}.tab-content-box{margin:var(--space-4);padding:var(--space-5);background:var(--surface-tint-weak);border:1px solid var(--border-subtle);border-radius:var(--radius-lg)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:color-mix(in srgb,var(--surface-0) 70%,transparent);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);z-index:var(--z-modal);animation:dpc-fade-in var(--dur-normal) var(--ease-out) both}[data-theme=light] .modal-backdrop{background:color-mix(in srgb,var(--color-gray-900) 45%,transparent)}.modal{width:520px;max-width:100%;max-height:90vh;background:var(--surface-3);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);overflow-y:auto;animation:dpc-scale-in var(--dur-normal) var(--ease-out) both}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border-subtle)}.modal-title{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-tight);color:var(--text-primary)}.modal-close{flex-shrink:0}.modal-body{padding:var(--space-5)}.form-body{display:flex;flex-direction:column;gap:var(--space-4)}.form-row{display:flex;gap:var(--space-4)}.form-group{display:flex;flex-direction:column;gap:var(--space-2);min-width:0;flex:1}.form-group.flex-1{flex:1}.form-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-secondary)}.field-error{font-size:var(--font-size-xs);color:var(--status-alarm)}.field-hint{font-size:var(--font-size-xs);color:var(--text-tertiary)}.form-error{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--status-alarm-soft);border:1px solid transparent;border-radius:var(--radius-md);color:var(--status-alarm);font-size:var(--font-size-sm)}.form-actions{display:flex;justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--border-subtle)}@media(prefers-reduced-motion:reduce){.modal-backdrop,.modal{animation:none}}@media(max-width:575px){.modal{width:100%}.form-row{flex-direction:column}}
