:root{--primary:#3b82f6;--primary-dark:#2563eb;--primary-light:#60a5fa;--primary-glow:#93bbfd;--success:#10b981;--success-light:#34d399;--warning:#f59e0b;--warning-light:#fbbf24;--danger:#ef4444;--danger-dark:#dc2626;--emergency:#b91c1c;--sidebar-bg:#0f1729;--sidebar-bg-light:#162032;--sidebar-text:#ffffffa6;--sidebar-text-active:#fff;--sidebar-accent:var(--primary);--sidebar-hover:#3b82f614;--content-bg:#f1f5f9;--header-bg:#fff;--card-bg:#fff;--card-border:#0000000a;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#94a3b8;--gradient-sidebar:linear-gradient(180deg, #0f1729 0%, #162032 50%, #1a2744 100%);--gradient-primary:linear-gradient(135deg, #3b82f6, #6366f1);--gradient-success:linear-gradient(135deg, #10b981, #34d399);--gradient-warning:linear-gradient(135deg, #f59e0b, #fbbf24);--gradient-danger:linear-gradient(135deg, #ef4444, #f87171);--gradient-info:linear-gradient(135deg, #06b6d4, #22d3ee);--gradient-card-hover:linear-gradient(135deg, #3b82f605, #6366f10a);--shadow-sm:0 1px 2px #0000000a;--shadow-md:0 4px 12px #0000000f;--shadow-lg:0 8px 24px #00000014;--shadow-card:0 1px 3px #0000000a, 0 1px 2px #00000005;--shadow-card-hover:0 8px 24px #3b82f61a, 0 2px 8px #0000000a;--shadow-glow-primary:0 0 20px #3b82f633;--shadow-glow-success:0 0 20px #10b98133;--shadow-glow-warning:0 0 20px #f59e0b33;--shadow-glow-danger:0 0 20px #ef444433;--transition-fast:all .15s cubic-bezier(.4, 0, .2, 1);--transition-smooth:all .3s cubic-bezier(.4, 0, .2, 1);--transition-spring:all .4s cubic-bezier(.34, 1.56, .64, 1);--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--content-bg);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}#root{min-height:100vh}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#0000001f;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#0003}.stat-card{border:1px solid var(--card-border);transition:var(--transition-smooth);cursor:default;position:relative;overflow:hidden;border-radius:var(--radius-md)!important}.stat-card:before{content:"";background:var(--gradient-primary);opacity:0;height:3px;transition:var(--transition-smooth);position:absolute;top:0;left:0;right:0}.stat-card:hover{box-shadow:var(--shadow-card-hover);border-color:#3b82f61f;transform:translateY(-3px)}.stat-card:hover:before{opacity:1}.stat-card:nth-child(2):before{background:var(--gradient-success)}.stat-card:nth-child(2):hover{box-shadow:0 8px 24px #10b9811a,0 2px 8px #0000000a}.stat-card:nth-child(3):before{background:var(--gradient-primary)}.stat-card:nth-child(4):before{background:var(--gradient-danger)}.stat-card:nth-child(4):hover{box-shadow:0 8px 24px #ef44441a,0 2px 8px #0000000a}.stat-card:nth-child(5):before{background:var(--gradient-warning)}.stat-card:nth-child(5):hover{box-shadow:0 8px 24px #f59e0b1a,0 2px 8px #0000000a}.stat-card:nth-child(6):before{background:linear-gradient(135deg,#8b5cf6,#a78bfa)}.chart-card{border:1px solid var(--card-border);transition:var(--transition-smooth);border-radius:var(--radius-md)!important}.chart-card:hover{box-shadow:var(--shadow-md)}.chart-card .ant-card-head{border-bottom-color:#0000000a;font-weight:600}.ant-table-wrapper .ant-table{border-radius:var(--radius-md)}.ant-table-wrapper .ant-table-thead>tr>th{color:var(--text-secondary);border-bottom:2px solid #0000000a;font-size:13px;font-weight:600;background:#f8fafc!important}.ant-table-wrapper .ant-table-tbody>tr:hover>td{background:#3b82f605!important}.ant-table-wrapper .ant-table-tbody>tr>td{transition:var(--transition-fast);border-bottom-color:#00000008}.status-dot{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.status-dot.online{background:var(--primary);box-shadow:0 0 6px #3b82f666}.status-dot.working{background:var(--success);animation:2s infinite pulse-glow}.status-dot.idle{background:#cbd5e1}.status-dot.fault{background:var(--danger);animation:1.5s infinite pulse-glow-danger}.status-dot.offline{background:#94a3b8}.status-dot.maintenance{background:var(--warning)}@keyframes pulse-glow{0%,to{opacity:1;box-shadow:0 0 6px #10b98166}50%{opacity:.6;box-shadow:0 0 12px #10b98199}}@keyframes pulse-glow-danger{0%,to{opacity:1;box-shadow:0 0 6px #ef444466}50%{opacity:.7;box-shadow:0 0 12px #ef444499}}.sidebar-wrapper{background:var(--gradient-sidebar)!important}.sidebar-wrapper .ant-layout-sider-trigger{border-top:1px solid #ffffff0f;background:#ffffff0a!important}.sidebar-wrapper .ant-menu-dark{background:0 0!important}.sidebar-wrapper .ant-menu-dark .ant-menu-item{border-radius:var(--radius-sm);transition:var(--transition-smooth);color:var(--sidebar-text);height:44px;margin:2px 8px;line-height:44px}.sidebar-wrapper .ant-menu-dark .ant-menu-item:hover{color:var(--sidebar-text-active);background:var(--sidebar-hover)!important}.sidebar-wrapper .ant-menu-dark .ant-menu-item-selected{box-shadow:inset 3px 0 0 var(--primary);font-weight:500;color:var(--sidebar-text-active)!important;background:linear-gradient(135deg,#3b82f633,#6366f126)!important}.app-header{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid #0000000a;box-shadow:0 1px 3px #00000005;background:var(--header-bg)!important}.ant-card{border:1px solid var(--card-border);box-shadow:var(--shadow-card);border-radius:var(--radius-md)!important}.ant-card .ant-card-head{border-bottom-color:#0000000a;font-weight:600}.ant-tag{border-radius:5px;font-size:12px;font-weight:500}.ant-btn-primary{transition:var(--transition-smooth);box-shadow:0 2px 8px #3b82f640}.ant-btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 16px #3b82f659}.ant-badge-status-dot{width:8px;height:8px}.ant-modal .ant-modal-content{border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 20px 60px #00000026}.ant-modal .ant-modal-header{border-bottom:1px solid #0000000a}@media (width<=768px){.stat-card .ant-statistic-title{font-size:12px}.stat-card .ant-statistic-content-value{font-size:20px!important}}
