*{box-sizing:border-box}:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:#cdd6f4;background-color:#11111b;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}#root{width:100%;max-width:1400px;margin:0 auto}a{font-weight:500;color:#89b4fa;text-decoration:inherit}a:hover{color:#b4befe}h1,h2,h3{margin:0}button{font-family:inherit}.dashboard-tab{padding:24px;max-width:1200px;margin:0 auto}.dashboard-header{text-align:center;margin-bottom:24px}.dashboard-header h2{margin:0 0 8px;font-size:1.75rem;font-weight:600;color:#e5e7eb}.dashboard-subtitle{margin:0;font-size:.9rem;color:#9ca3af}.rescan-btn{margin-top:12px;padding:8px 16px;background:#374151;border:1px solid #4b5563;color:#9ca3af;border-radius:6px;font-size:.85rem;cursor:pointer;transition:all .2s ease}.rescan-btn:hover{background:#4b5563;color:#e5e7eb;border-color:#6b7280}.batch-controls-bar{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,#eab30826,#ca8a0426);border:1px solid rgba(234,179,8,.3);border-radius:8px;padding:16px 20px;margin-bottom:24px;flex-wrap:wrap;gap:16px}.batch-info{display:flex;align-items:center;gap:8px}.pending-count{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:#eab308;color:#1a1a2e;border-radius:50%;font-weight:700;font-size:.9rem}.batch-info .pending-label{color:#fbbf24;font-size:.9rem}.batch-actions{display:flex;gap:12px}.batch-apply-btn{padding:10px 24px;border:none;border-radius:6px;background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s}.batch-apply-btn:hover:not(:disabled){background:linear-gradient(135deg,#16a34a,#15803d);transform:translateY(-1px)}.batch-apply-btn.applying{background:#6b7280;cursor:wait}.batch-apply-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.batch-clear-btn{padding:10px 20px;border:1px solid #6b7280;border-radius:6px;background:transparent;color:#9ca3af;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s}.batch-clear-btn:hover:not(:disabled){background:#6b728033;color:#e5e7eb}.batch-clear-btn:disabled{opacity:.5;cursor:not-allowed}.batch-result{padding:12px 20px;border-radius:6px;text-align:center;margin-bottom:24px;font-size:.9rem;font-weight:500}.batch-result.success{background:#22c55e33;border:1px solid rgba(34,197,94,.3);color:#4ade80}.batch-result.error{background:#ef444433;border:1px solid rgba(239,68,68,.3);color:#f87171}.modules-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}.module-card{background:linear-gradient(135deg,#1a1a2e,#16213e);border-radius:12px;padding:20px;cursor:pointer;transition:all .2s;border:2px solid transparent}.module-card:hover{transform:translateY(-2px);box-shadow:0 8px 30px #0000004d}.module-card.enabled{border-color:#4ade804d}.module-card.enabled:hover{border-color:#4ade80}.module-card.disabled{border-color:#6b72804d}.module-card.disabled:hover{border-color:#6b7280}.module-card.empty{border:2px dashed #374151;opacity:.6}.module-card.empty:hover{border-color:#4b5563;opacity:.8}.module-card.fault{border-color:#ef444466}.module-card.fault:hover{border-color:#ef4444}.module-card.has-pending{box-shadow:0 0 20px #eab30833;border-color:#eab30880}.module-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.slot-number{font-size:1rem;font-weight:600;color:#e5e7eb}.status-indicators{display:flex;align-items:center;gap:8px}.pending-dot{color:#eab308;font-size:.8rem;animation:pulse-dot 1.5s infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.status-indicator{padding:3px 10px;border-radius:12px;font-size:.7rem;font-weight:600;text-transform:uppercase}.status-indicator.enabled{background:#22c55e33;color:#4ade80;border:1px solid rgba(34,197,94,.3)}.status-indicator.disabled{background:#6b728033;color:#9ca3af;border:1px solid rgba(107,114,128,.3)}.status-indicator.empty{background:#3741514d;color:#6b7280;border:1px solid rgba(75,85,99,.3)}.module-type{font-size:.8rem;color:#9ca3af;margin-bottom:16px}.empty-content{display:flex;flex-direction:column;align-items:center;padding:20px 0;color:#6b7280}.empty-icon{font-size:2rem;margin-bottom:8px}.empty-text{font-size:.9rem}.metrics-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:12px}.metric{text-align:center;background:#0003;padding:10px 6px;border-radius:6px}.metric-value{display:block;font-size:1.1rem;font-weight:600;color:#e5e7eb;font-family:Courier New,monospace}.metric-unit{display:block;font-size:.7rem;color:#6b7280;margin-top:2px}.metric.temperature{background:linear-gradient(135deg,#f9731626,#ea580c26)}.metric.temperature .metric-value{color:#fb923c}.pending-info{display:flex;align-items:center;gap:8px;background:#eab3081a;border-radius:6px;padding:8px 12px;margin-bottom:8px}.pending-info .pending-label{font-size:.75rem;color:#ca8a04;font-weight:500}.pending-value{font-size:.85rem;color:#fbbf24;font-weight:600;font-family:Courier New,monospace}.module-card .fault-indicator{display:flex;align-items:center;gap:6px;color:#f87171;font-size:.8rem}.fault-icon{font-size:1rem}.fault-text{font-weight:500}@media(max-width:768px){.dashboard-tab{padding:16px}.batch-controls-bar{flex-direction:column;align-items:stretch}.batch-info,.batch-actions{justify-content:center}.modules-grid{grid-template-columns:1fr}.metrics-grid{grid-template-columns:repeat(2,1fr)}}.slot-tab{background:linear-gradient(135deg,#1a1a2e,#16213e);border-radius:12px;padding:24px;max-width:600px;margin:0 auto;box-shadow:0 4px 20px #0000004d}.slot-tab.enabled{border:2px solid #4ade80}.slot-tab.disabled{border:2px solid #6b7280}.slot-tab.empty{border:2px dashed #4b5563;opacity:.7}.slot-tab.loading{border:2px solid #3b82f6}.slot-tab.has-pending{box-shadow:0 0 20px #eab3084d;border-color:#eab308}.slot-tab-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid rgba(255,255,255,.1)}.slot-tab-header h2{margin:0;font-size:1.5rem;font-weight:600;color:#e5e7eb}.header-badges{display:flex;gap:8px;align-items:center}.status-badge{padding:4px 12px;border-radius:20px;font-size:.75rem;font-weight:600;text-transform:uppercase}.status-badge.enabled{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff}.status-badge.disabled{background:linear-gradient(135deg,#6b7280,#4b5563);color:#fff}.status-badge.empty{background:linear-gradient(135deg,#374151,#1f2937);color:#9ca3af}.pending-badge{background:linear-gradient(135deg,#eab308,#ca8a04);color:#1a1a2e;padding:4px 12px;border-radius:20px;font-size:.75rem;font-weight:700;text-transform:uppercase;animation:pulse-pending 2s infinite}@keyframes pulse-pending{0%,to{opacity:1}50%{opacity:.7}}.module-info{margin-bottom:20px;display:flex;align-items:center;gap:12px}.module-type{color:#9ca3af;font-size:.9rem}.module-type-select{background:#0000004d;border:1px solid #374151;border-radius:6px;color:#e5e7eb;padding:6px 12px;font-size:.85rem;cursor:pointer;transition:all .2s ease}.module-type-select:hover{border-color:#60a5fa;background:#0006}.module-type-select:focus{outline:none;border-color:#60a5fa;box-shadow:0 0 0 2px #60a5fa4d}.module-type-select option{background:#1f2937;color:#e5e7eb}.empty-message{text-align:center;padding:40px 20px;color:#6b7280}.empty-icon{font-size:3rem;margin-bottom:16px;opacity:.5}.empty-message p{margin:0;font-size:1.1rem}.loading-message{text-align:center;padding:40px 20px;color:#9ca3af}.telemetry-display{background:#0003;border-radius:8px;padding:16px;margin-bottom:24px}.telemetry-large{margin-bottom:16px}.telemetry-large .telemetry-item{text-align:center}.telemetry-large .telemetry-item.temperature{background:linear-gradient(135deg,#ef444433,#f9731633);border-radius:8px;padding:16px}.telemetry-large .value-display{display:flex;justify-content:center;align-items:baseline;gap:4px}.telemetry-large .value{font-size:2.5rem;font-weight:700;color:#f97316}.telemetry-large .unit{font-size:1.2rem;color:#fb923c}.telemetry-row{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.telemetry-item{text-align:center}.telemetry-item label{display:block;font-size:.75rem;color:#9ca3af;text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}.value-display{display:flex;justify-content:center;align-items:baseline;gap:2px}.value-display .value{font-size:1.5rem;font-weight:600;color:#e5e7eb;font-family:Courier New,monospace}.value-display .unit{font-size:.875rem;color:#9ca3af}.control-section{background:#00000026;border-radius:8px;padding:16px;margin-bottom:16px}.control-section label{display:block;font-size:.875rem;color:#d1d5db;margin-bottom:12px;font-weight:500}.slider-row{display:flex;align-items:center;gap:12px}.voltage-slider,.current-slider{flex:1;height:8px;-webkit-appearance:none;appearance:none;background:#374151;border-radius:4px;outline:none}.voltage-slider::-webkit-slider-thumb,.current-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:#3b82f6;cursor:pointer;border:2px solid #1e40af;transition:transform .1s}.voltage-slider::-webkit-slider-thumb:hover,.current-slider::-webkit-slider-thumb:hover{transform:scale(1.1)}.voltage-input,.current-input{width:80px;padding:8px 12px;border:1px solid #4b5563;border-radius:6px;background:#1f2937;color:#e5e7eb;font-size:.9rem;text-align:center;font-family:Courier New,monospace}.voltage-input:focus,.current-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f64d}.apply-btn{padding:8px 16px;border:none;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s;white-space:nowrap}.apply-btn.idle{background:#3b82f6;color:#fff}.apply-btn.idle:hover{background:#2563eb}.apply-btn.pending{background:#6b7280;color:#fff;cursor:wait}.apply-btn.success{background:#22c55e;color:#fff}.apply-btn.error{background:#ef4444;color:#fff}.apply-btn:disabled{opacity:.6;cursor:not-allowed}.fault-indicator{background:linear-gradient(135deg,#ef444433,#dc262633);border:1px solid rgba(239,68,68,.3);border-radius:8px;padding:12px 16px;margin-bottom:16px}.fault-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.fault-tags{display:flex;flex-wrap:wrap;gap:6px}.fault-tag{padding:4px 10px;border-radius:4px;font-size:.75rem;font-weight:600;text-transform:uppercase}.fault-tag.error{background:#ef4444;color:#fff}.fault-tag.warning{background:#eab308;color:#1a1a2e}.fault-tag.info{background:#6b7280;color:#fff}.clear-fault-btn{padding:6px 14px;border:none;border-radius:6px;background:#ef4444;color:#fff;font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s}.clear-fault-btn:hover{background:#dc2626}.clear-fault-btn.clearing{background:#6b7280;cursor:wait}.clear-fault-btn:disabled{opacity:.6;cursor:not-allowed}.toggle-section{display:flex;flex-direction:column;align-items:center;gap:12px;padding-top:16px;border-top:1px solid rgba(255,255,255,.1)}.toggle-btn{padding:12px 32px;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;text-transform:uppercase;letter-spacing:.05em}.toggle-btn.btn-success{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff}.toggle-btn.btn-success:hover{background:linear-gradient(135deg,#16a34a,#15803d);transform:translateY(-1px)}.toggle-btn.btn-danger{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff}.toggle-btn.btn-danger:hover{background:linear-gradient(135deg,#dc2626,#b91c1c);transform:translateY(-1px)}.toggle-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.discharge-note{font-size:.75rem;color:#9ca3af;text-align:center;font-style:italic}@media(max-width:480px){.slot-tab{padding:16px}.telemetry-row{grid-template-columns:1fr;gap:12px}.slider-row{flex-wrap:wrap}.voltage-slider,.current-slider{width:100%;flex:none}.voltage-input,.current-input{flex:1}}.chassis-status{background:linear-gradient(135deg,#1e1e2e,#181825);border-radius:12px;padding:20px;margin-bottom:24px;border:1px solid #313244}.chassis-header{display:flex;align-items:center;gap:16px;margin-bottom:16px}.chassis-header h2{margin:0;color:#cdd6f4;font-size:1.5rem}.sim-badge{background:#fab387;color:#11111b;padding:4px 12px;border-radius:20px;font-size:.75rem;font-weight:700}.chassis-stats{display:flex;gap:48px;flex-wrap:wrap}.chassis-item{display:flex;flex-direction:column}.chassis-item label{font-size:.75rem;color:#6c7086;text-transform:uppercase;margin-bottom:4px}.chassis-item .value{font-size:2rem;font-weight:700;color:#89b4fa;font-family:Consolas,monospace}.chassis-item .value.time{font-size:1.25rem}.chassis-item .unit{font-size:.9rem;color:#9399b2}.emergency-btn{background:#f38ba8;color:#11111b;border:none;padding:16px 32px;font-size:1.1rem;font-weight:700;border-radius:8px;cursor:pointer;transition:all .2s;text-transform:uppercase;letter-spacing:1px}.emergency-btn:hover{background:#eba0ac;transform:scale(1.02)}.emergency-btn.confirming{background:#f9e2af;animation:pulse .5s infinite alternate}.emergency-btn:disabled{opacity:.7;cursor:not-allowed}@keyframes pulse{0%{transform:scale(1)}to{transform:scale(1.05)}}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#11111b;padding:20px}.login-card{background:#1e1e2e;border-radius:16px;padding:32px;width:100%;max-width:400px;border:2px solid #313244}.login-card h2{color:#cdd6f4;margin:0 0 8px;text-align:center;font-size:1.5rem}.login-subtitle{color:#6c7086;text-align:center;margin:0 0 24px;font-size:.9rem}.auth-tabs{display:flex;gap:8px;margin-bottom:24px}.auth-tabs button{flex:1;padding:10px;background:#313244;border:none;border-radius:8px;color:#6c7086;cursor:pointer;font-size:.9rem;transition:all .2s}.auth-tabs button.active{background:#89b4fa;color:#11111b;font-weight:600}.form-group{margin-bottom:16px}.form-group label{display:block;color:#6c7086;font-size:.8rem;text-transform:uppercase;margin-bottom:6px}.form-group input,.form-group select{width:100%;padding:12px;background:#11111b;border:1px solid #45475a;border-radius:8px;color:#cdd6f4;font-size:1rem;box-sizing:border-box}.form-group input:focus,.form-group select:focus{outline:none;border-color:#89b4fa}.tier-hint{color:#6c7086;font-size:.8rem;margin:6px 0 0;font-style:italic}.error-message{background:#f38ba8;color:#11111b;padding:10px;border-radius:6px;margin-bottom:16px;font-size:.9rem;text-align:center}.submit-btn{width:100%;padding:14px;background:#a6e3a1;color:#11111b;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s}.submit-btn:hover:not(:disabled){background:#94e2d5}.submit-btn:disabled{opacity:.6;cursor:not-allowed}.remote-monitor{background:#16213e;border-radius:8px;padding:20px;margin-top:20px}.remote-monitor.loading{text-align:center;color:#888}.remote-monitor.not-configured{border:1px dashed #444}.remote-monitor h3{margin:0 0 10px;color:#00d4ff}.remote-monitor h4{margin:15px 0 10px;color:#ccc;font-size:.9rem}.remote-monitor .warning{color:#f0a500;margin:10px 0}.remote-monitor .hint{color:#888;font-size:.85rem}.remote-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.status-indicator{padding:4px 12px;border-radius:12px;font-size:.8rem;font-weight:500}.status-indicator.connected{background:#0f83;color:#0f8}.status-indicator.disconnected{background:#ffa50033;color:orange}.remote-error{background:#e9456033;color:#e94560;padding:10px;border-radius:4px;margin-bottom:15px}.remote-stats{display:flex;gap:20px;padding:15px;background:#0003;border-radius:6px}.remote-stats .stat{display:flex;flex-direction:column;align-items:center}.remote-stats .label{font-size:.75rem;color:#888;text-transform:uppercase}.remote-stats .value{font-size:1.5rem;font-weight:700;color:#00d4ff}.device-list{margin-top:15px}.device-card{background:#0003;padding:12px;border-radius:6px;margin-bottom:8px;border-left:3px solid #00ff88}.device-id{font-weight:700;color:#fff;margin-bottom:5px}.device-info{display:flex;gap:15px;font-size:.85rem;color:#888}.event-stream{margin-top:20px;max-height:300px;overflow-y:auto}.event-list{display:flex;flex-direction:column;gap:4px}.event-item{display:flex;gap:10px;padding:6px 10px;background:#0003;border-radius:4px;font-size:.85rem;align-items:center}.event-time{color:#666;font-family:monospace;min-width:80px}.event-type{padding:2px 8px;border-radius:10px;font-size:.75rem;text-transform:uppercase;min-width:70px;text-align:center}.event-item.type-telemetry .event-type{background:#00d4ff33;color:#00d4ff}.event-item.type-fault .event-type{background:#e9456033;color:#e94560}.event-item.type-log .event-type{background:#ffa50033;color:orange}.event-item.type-handshake .event-type{background:#0f83;color:#0f8}.event-device{color:#888;font-size:.8rem}.event-data{color:#ccc;flex:1}.event-data.fault{color:#e94560}.diagnostics-panel{padding:20px;background:#1a1a2e;min-height:100vh}.diagnostics-panel h2{color:#00d4ff;margin-bottom:20px;font-size:1.5rem;border-bottom:2px solid #00d4ff;padding-bottom:10px}.diagnostics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:20px}.diagnostic-section{background:#16213e;border-radius:8px;padding:20px;border:1px solid #0f3460}.diagnostic-section h3{color:#e94560;margin-bottom:15px;font-size:1.1rem;display:flex;align-items:center;gap:10px}.diagnostic-section h3 .icon{font-size:1.3rem}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.section-header h3{margin-bottom:0}.run-test-btn{background:#00d4ff;color:#1a1a2e;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-weight:700;transition:all .2s}.run-test-btn:hover{background:#00b8e6;transform:scale(1.02)}.run-test-btn:disabled{background:#555;cursor:not-allowed;transform:none}.run-test-btn.loading{animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.pass-badge,.fail-badge{padding:4px 12px;border-radius:4px;font-weight:700;font-size:.85rem}.pass-badge{background:#0f8;color:#1a1a2e}.fail-badge{background:#f44;color:#fff}.handshake-results{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:15px}.handshake-slot{background:#0f3460;padding:12px;border-radius:6px;border-left:4px solid #555}.handshake-slot.passed{border-left-color:#0f8}.handshake-slot.failed{border-left-color:#f44}.handshake-slot.empty{border-left-color:#666;opacity:.7}.handshake-slot .slot-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.handshake-slot .slot-number{color:#00d4ff;font-weight:700}.handshake-slot .status-icon{font-size:1.2rem}.handshake-slot .timing-details{font-size:.75rem;color:#aaa}.handshake-slot .timing-row{display:flex;justify-content:space-between;margin:2px 0}.handshake-slot .timing-value{color:#00d4ff}.module-id-results{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:15px}.module-id-slot{background:#0f3460;padding:12px;border-radius:6px;border-left:4px solid #555}.module-id-slot.identified{border-left-color:#0f8}.module-id-slot.unknown{border-left-color:orange}.module-id-slot.empty{border-left-color:#666;opacity:.7}.module-id-slot .slot-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.module-id-slot .slot-number{color:#00d4ff;font-weight:700}.module-type-badge{padding:2px 8px;border-radius:4px;font-size:.75rem;font-weight:700;background:#0a2540;color:#0f8}.module-id-slot.empty .module-type-badge{color:#666}.module-id-slot.unknown .module-type-badge{color:orange}.module-id-details{font-size:.75rem;color:#aaa}.module-id-details .detail-row{display:flex;justify-content:space-between;margin:3px 0}.module-id-details .id-value{color:#00d4ff;font-family:monospace}.module-id-details .id-value.enabled{color:#0f8}.module-id-details .id-value.disabled{color:#888}.timing-histogram{margin-top:10px}.histogram-section{margin-bottom:20px}.histogram-section h4{color:#aaa;font-size:.9rem;margin-bottom:10px}.histogram-bars{display:flex;flex-direction:column;gap:8px}.histogram-row{display:flex;align-items:center;gap:10px}.histogram-label{width:80px;font-size:.8rem;color:#888;text-align:right}.histogram-bar-container{flex:1;height:20px;background:#0f3460;border-radius:4px;overflow:hidden}.histogram-bar{height:100%;border-radius:4px;transition:width .5s ease}.histogram-bar.read{background:linear-gradient(90deg,#00d4ff,#08c)}.histogram-bar.write{background:linear-gradient(90deg,#e94560,#c35)}.histogram-count{width:60px;font-size:.8rem;color:#00d4ff;text-align:right}.timing-summary{display:flex;justify-content:space-around;margin-top:15px;padding-top:15px;border-top:1px solid #0f3460}.timing-stat{text-align:center}.timing-stat .value{font-size:1.5rem;font-weight:700;color:#00d4ff}.timing-stat .label{font-size:.75rem;color:#888}.timing-stat.warning .value{color:#fa0}.timing-stat.danger .value{color:#f44}.trends-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.trend-card{background:#0f3460;padding:12px;border-radius:6px;border-left:4px solid #00d4ff}.trend-card.no-data{border-left-color:#555;opacity:.6}.trend-card.drift-detected{border-left-color:#fa0}.trend-card .slot-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.trend-card .slot-number{color:#00d4ff;font-weight:700}.trend-card .sample-count{font-size:.75rem;color:#888}.trend-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;font-size:.75rem}.trend-stat-group h5{color:#888;font-size:.7rem;margin-bottom:4px}.trend-stat-row{display:flex;justify-content:space-between;color:#aaa}.trend-stat-row .value{color:#00d4ff}.drift-indicator{display:flex;align-items:center;gap:5px;margin-top:8px;padding:4px 8px;background:#fa02;border-radius:4px;font-size:.75rem}.drift-indicator.increasing{color:#f44}.drift-indicator.decreasing{color:#0f8}.drift-indicator.stable{color:#888;background:transparent}.drift-arrow{font-size:1rem}.fault-snapshots{max-height:400px;overflow-y:auto}.no-faults{text-align:center;padding:30px;color:#0f8}.no-faults .icon{font-size:2rem;margin-bottom:10px}.fault-item{background:#0f3460;padding:12px;border-radius:6px;margin-bottom:10px;border-left:4px solid #ff4444}.fault-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;cursor:pointer}.fault-header:hover{opacity:.8}.fault-trigger{display:flex;align-items:center;gap:10px}.fault-slot{background:#f44;color:#fff;padding:2px 8px;border-radius:4px;font-weight:700}.fault-code{color:#fa0;font-family:monospace}.fault-time{font-size:.75rem;color:#888}.fault-bits{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.fault-bit{background:#f443;color:#f88;padding:2px 8px;border-radius:4px;font-size:.7rem}.fault-details{font-size:.75rem;color:#888;margin-top:10px;padding-top:10px;border-top:1px solid #1a1a2e}.fault-slots-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:8px}.fault-slot-detail{background:#1a1a2e;padding:6px;border-radius:4px;font-size:.7rem}.fault-slot-detail .slot-num{color:#00d4ff;font-weight:700}.session-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.session-stat{background:#0f3460;padding:15px;border-radius:6px;text-align:center}.session-stat .value{font-size:1.8rem;font-weight:700;color:#00d4ff}.session-stat .label{font-size:.75rem;color:#888;margin-top:4px}.session-stat.error .value{color:#f44}.session-stat.warning .value{color:#fa0}.log-viewer{background:#0a0a15;border-radius:6px;padding:10px;font-family:Courier New,monospace;font-size:.75rem;max-height:300px;overflow-y:auto}.log-entry{color:#888;padding:2px 0;border-bottom:1px solid #1a1a2e}.log-entry:last-child{border-bottom:none}.log-entry.error{color:#f44}.log-entry.warning{color:#fa0}.log-entry.info{color:#00d4ff}.log-actions{display:flex;gap:10px;margin-top:10px}.log-actions button{flex:1;padding:8px;border:none;border-radius:4px;cursor:pointer;font-weight:700;transition:all .2s}.log-actions .download-btn{background:#00d4ff;color:#1a1a2e}.log-actions .refresh-btn{background:#0f3460;color:#00d4ff;border:1px solid #00d4ff}.log-actions button:hover{opacity:.8}.loading-spinner{display:flex;justify-content:center;align-items:center;padding:40px;color:#00d4ff}.loading-spinner:after{content:"";width:30px;height:30px;border:3px solid #0f3460;border-top-color:#00d4ff;border-radius:50%;animation:spin 1s linear infinite}.error-message{background:#f442;color:#f88;padding:15px;border-radius:6px;text-align:center}.refresh-all-btn{position:fixed;bottom:20px;right:20px;background:#00d4ff;color:#1a1a2e;border:none;padding:12px 24px;border-radius:8px;cursor:pointer;font-weight:700;box-shadow:0 4px 15px #00d4ff4d;transition:all .2s}.refresh-all-btn:hover{transform:scale(1.05);box-shadow:0 6px 20px #00d4ff66}.last-updated{text-align:center;color:#555;font-size:.75rem;margin-top:20px}.status-registers{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.status-register-card{background:#1a1a2e;border-radius:6px;padding:12px;cursor:pointer;transition:all .2s;border:1px solid #0f3460}.status-register-card:hover{border-color:#00d4ff;transform:translateY(-2px)}.status-register-card.has-issues{border-left:3px solid #e94560}.status-register-card.ok{border-left:3px solid #4ade80}.status-register-header{display:flex;align-items:center;gap:10px;margin-bottom:8px}.status-register-header .slot-label{font-weight:700;color:#00d4ff}.status-badge{font-size:.7rem;padding:2px 6px;border-radius:3px;font-weight:700}.status-badge.enabled{background:#4ade8033;color:#4ade80}.status-badge.disabled{background:#64646433;color:#888}.status-indicator{margin-left:auto}.status-register-summary{display:flex;flex-wrap:wrap;gap:8px}.register-value{display:flex;flex-direction:column;gap:2px}.register-value .label{font-size:.65rem;color:#888;text-transform:uppercase}.register-value .value{font-family:monospace;color:#4ade80;font-size:.9rem}.register-value .value.nonzero{color:#f59e0b}.status-register-details{margin-top:12px;padding-top:12px;border-top:1px solid #0f3460}.register-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}.register-item{background:#16213e;padding:6px 8px;border-radius:4px;display:flex;justify-content:space-between;align-items:center;font-size:.75rem}.register-item.active{background:#f9731626;border:1px solid #f97316}.register-item .reg-name{color:#888}.register-item .reg-value{font-family:monospace;color:#4ade80}.register-item.active .reg-value{color:#f97316}.fault-list{background:#e945601a;border:1px solid #e94560;border-radius:4px;padding:10px}.fault-list-header{color:#e94560;font-weight:700;font-size:.8rem;margin-bottom:8px}.fault-detail-item{display:flex;flex-direction:column;padding:6px 0;border-bottom:1px solid rgba(233,69,96,.2)}.fault-detail-item:last-child{border-bottom:none}.fault-detail-item .fault-name{color:#f97316;font-weight:700;font-size:.75rem}.fault-detail-item .fault-desc{color:#ccc;font-size:.7rem}.fault-detail-item .fault-bit{color:#888;font-family:monospace;font-size:.65rem}.status-timestamp{grid-column:1 / -1;text-align:center;color:#555;font-size:.7rem;margin-top:8px}.mqtt-page{max-width:900px;margin:0 auto;padding:20px}.mqtt-page-header{display:flex;align-items:center;gap:16px;margin-bottom:24px}.mqtt-page-header h2{margin:0;color:#fff;font-size:1.5rem}.back-btn{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#888;padding:8px 16px;border-radius:6px;cursor:pointer;transition:all .2s ease}.back-btn:hover{background:#ffffff26;color:#fff}.loading-container,.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;gap:16px}.loading-spinner{width:40px;height:40px;border:3px solid rgba(255,255,255,.1);border-top-color:#08c;border-radius:50%;animation:spin .8s linear infinite}.loading-container p{color:#888}.error-message{color:#f44;text-align:center}.retry-btn{background:#08c;color:#fff;border:none;padding:10px 24px;border-radius:6px;cursor:pointer}.mqtt-section-tabs{display:flex;gap:4px;margin-bottom:24px;background:#0000004d;padding:4px;border-radius:8px}.section-tab{flex:1;padding:12px 20px;border:none;background:transparent;color:#888;font-size:.95rem;font-weight:500;cursor:pointer;border-radius:6px;transition:all .2s ease}.section-tab:hover{color:#fff;background:#ffffff0d}.section-tab.active{background:#08c;color:#fff}.mqtt-status-section{display:flex;flex-direction:column;gap:20px}.status-card,.controls-card,.topics-card{background:#1a1a1a;border-radius:12px;padding:20px}.status-card h3,.controls-card h3,.topics-card h3{margin:0 0 16px;color:#fff;font-size:1.1rem;border-bottom:1px solid rgba(255,255,255,.1);padding-bottom:12px}.status-indicators{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:16px}.status-indicator{display:flex;align-items:center;gap:8px;padding:8px 16px;border-radius:24px;background:#0000004d;font-size:.9rem}.status-indicator .indicator-dot{width:12px;height:12px;border-radius:50%;animation:pulse 2s infinite}.status-indicator.connected .indicator-dot{background:#0f8;box-shadow:0 0 10px #00ff8880}.status-indicator.disconnected .indicator-dot{background:#666;animation:none}.status-indicator.publishing .indicator-dot{background:#0af;box-shadow:0 0 10px #00aaff80}.status-indicator.idle .indicator-dot{background:#fa0;animation:none}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.mqtt-warning{display:flex;align-items:flex-start;gap:12px;padding:16px;background:#ffaa001a;border:1px solid rgba(255,170,0,.3);border-radius:8px;margin-top:8px}.mqtt-warning .warning-icon{font-size:1.5rem}.mqtt-warning strong{color:#fa0;display:block;margin-bottom:4px}.mqtt-warning p{margin:0;color:#888;font-size:.85rem}.mqtt-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.info-item{background:#0003;padding:12px 16px;border-radius:8px}.info-item .info-label{display:block;color:#666;font-size:.8rem;margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px}.info-item .info-value{color:#fff;font-family:Courier New,monospace;font-size:.95rem}.info-item .info-value.highlight{color:#0f8;font-weight:600}.mqtt-error{background:#ff44441a;border:1px solid rgba(255,68,68,.3);color:#f66;padding:12px 16px;border-radius:8px;margin-top:12px;font-size:.9rem}.mqtt-controls{display:flex;gap:12px;flex-wrap:wrap}.mqtt-btn{padding:12px 24px;border:none;border-radius:8px;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s ease;min-width:140px}.mqtt-btn:disabled{opacity:.5;cursor:not-allowed}.mqtt-btn.connect{background:linear-gradient(135deg,#0a5,#084);color:#fff}.mqtt-btn.connect:hover:not(:disabled){background:linear-gradient(135deg,#0c6,#0a5);transform:translateY(-1px)}.mqtt-btn.disconnect{background:linear-gradient(135deg,#a50,#840);color:#fff}.mqtt-btn.disconnect:hover:not(:disabled){background:linear-gradient(135deg,#c60,#a50)}.mqtt-btn.start{background:linear-gradient(135deg,#06a,#048);color:#fff}.mqtt-btn.start:hover:not(:disabled){background:linear-gradient(135deg,#08c,#06a);transform:translateY(-1px)}.mqtt-btn.stop{background:linear-gradient(135deg,#a33,#822);color:#fff}.mqtt-btn.stop:hover:not(:disabled){background:linear-gradient(135deg,#c44,#a33)}.mqtt-btn.loading{position:relative;color:transparent}.mqtt-btn.loading:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.mqtt-result,.config-result{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:8px;margin-top:16px;font-size:.9rem}.mqtt-result.success,.config-result.success{background:#00ff881a;border:1px solid rgba(0,255,136,.3);color:#0f8}.mqtt-result.error,.config-result.error{background:#ff44441a;border:1px solid rgba(255,68,68,.3);color:#f44}.result-icon{font-size:1.2rem}.topics-list{display:flex;flex-direction:column;gap:10px}.topic-item{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:#0064c81a;border:1px solid rgba(0,100,200,.2);border-radius:6px}.topic-item code{background:#0000004d;padding:4px 10px;border-radius:4px;font-family:Courier New,monospace;color:#08c;font-size:.85rem}.topic-desc{color:#888;font-size:.85rem}.mqtt-settings-section{background:#1a1a1a;border-radius:12px;padding:24px}.settings-form{display:flex;flex-direction:column;gap:24px}.form-section h3{margin:0 0 16px;color:#fff;font-size:1rem;border-bottom:1px solid rgba(255,255,255,.1);padding-bottom:10px}.form-row{display:flex;gap:16px;flex-wrap:wrap}.form-group{flex:1;min-width:200px}.form-group.short{flex:0 0 120px;min-width:100px}.form-group label{display:block;color:#888;font-size:.85rem;margin-bottom:6px}.form-group input[type=text],.form-group input[type=number],.form-group input[type=password],.form-group select{width:100%;padding:10px 14px;background:#0000004d;border:1px solid rgba(255,255,255,.1);border-radius:6px;color:#fff;font-size:.9rem;transition:border-color .2s ease}.form-group input:focus,.form-group select:focus{outline:none;border-color:#08c}.form-group input::placeholder{color:#555}.form-hint{display:block;color:#555;font-size:.75rem;margin-top:4px}.password-set{color:#0a5;font-size:.75rem}.checkbox-group label{display:flex;align-items:center;gap:10px;cursor:pointer}.checkbox-group input[type=checkbox]{width:18px;height:18px;accent-color:#0088cc}.checkbox-group span{color:#ccc;font-size:.9rem}.form-actions{padding-top:8px}.save-btn{background:linear-gradient(135deg,#08c,#06a);color:#fff;border:none;padding:12px 32px;border-radius:8px;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s ease}.save-btn:hover:not(:disabled){background:linear-gradient(135deg,#0ae,#08c);transform:translateY(-1px)}.save-btn:disabled{opacity:.6;cursor:not-allowed}.save-btn.loading{position:relative;color:transparent}.save-btn.loading:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.settings-note{margin-top:20px;padding:12px 16px;background:#0088cc1a;border:1px solid rgba(0,136,204,.2);border-radius:8px;color:#888;font-size:.85rem}.settings-note strong{color:#08c}@media(max-width:600px){.mqtt-page{padding:12px}.form-row{flex-direction:column}.form-group.short{flex:1;min-width:100%}.topic-item{flex-direction:column;align-items:flex-start;gap:6px}.mqtt-controls{flex-direction:column}.mqtt-btn{width:100%}}.alarm-indicator{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:6px;cursor:pointer;transition:all .2s ease;background:#ffffff0d;border:1px solid rgba(255,255,255,.1)}.alarm-indicator:hover{background:#ffffff1a}.alarm-indicator.loading{opacity:.5}.alarm-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.alarm-dot.ok{background:#4ade80;box-shadow:0 0 6px #4ade8080}.alarm-dot.warning{background:#fbbf24;box-shadow:0 0 8px #fbbf2499;animation:pulse-warning 2s infinite}.alarm-dot.critical{background:#ef4444;box-shadow:0 0 10px #ef4444b3;animation:pulse-critical 1s infinite}.alarm-dot.neutral{background:#666}.alarm-count{background:#ef4444;color:#fff;font-size:.7rem;font-weight:700;padding:2px 6px;border-radius:10px;min-width:18px;text-align:center}.alarm-indicator.warning .alarm-count{background:#fbbf24;color:#000}.alarm-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.alarm-indicator.ok .alarm-label{color:#4ade80}.alarm-indicator.warning .alarm-label{color:#fbbf24}.alarm-indicator.critical .alarm-label{color:#ef4444}.alarm-indicator.has-alarms{border-color:currentColor}.alarm-indicator.critical.has-alarms{border-color:#ef4444;background:#ef44441a}.alarm-indicator.warning.has-alarms{border-color:#fbbf24;background:#fbbf241a}@keyframes pulse-warning{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.1)}}@keyframes pulse-critical{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.2)}}.alarm-panel-overlay{position:fixed;inset:0;background:#000000b3;display:flex;justify-content:center;align-items:flex-start;padding-top:80px;z-index:1000}.alarm-panel{background:#1a1a2e;border:1px solid #333;border-radius:12px;width:90%;max-width:600px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #00000080}.alarm-panel-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #333}.alarm-panel-header h2{margin:0;font-size:1.25rem;color:#fff}.close-btn{background:transparent;border:none;color:#888;font-size:1.5rem;cursor:pointer;padding:4px 8px;line-height:1}.close-btn:hover{color:#fff}.alarm-tabs{display:flex;border-bottom:1px solid #333}.alarm-tab{flex:1;padding:12px 16px;background:transparent;border:none;color:#888;font-size:.9rem;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:8px}.alarm-tab:hover{color:#fff;background:#ffffff0d}.alarm-tab.active{color:#fff;background:#ffffff1a;border-bottom:2px solid #4ade80}.tab-badge{background:#ef4444;color:#fff;font-size:.7rem;padding:2px 6px;border-radius:10px;min-width:18px;text-align:center}.alarm-panel-content{flex:1;overflow-y:auto;padding:16px}.alarm-loading,.no-alarms{text-align:center;color:#888;padding:40px}.no-alarms-icon{font-size:3rem;color:#4ade80;margin-bottom:10px}.no-alarms-subtitle{font-size:.85rem;margin-top:8px;opacity:.7}.alarm-item,.history-item{background:#ffffff08;border:1px solid #333;border-radius:8px;padding:12px;margin-bottom:12px}.alarm-item.critical{border-left:3px solid #ef4444}.alarm-item.warning{border-left:3px solid #fbbf24}.history-item.critical{border-left:3px solid rgba(239,68,68,.5)}.history-item.warning{border-left:3px solid rgba(251,191,36,.5)}.alarm-item.acknowledged{opacity:.7}.alarm-item-header,.history-item-header{display:flex;align-items:center;gap:10px;margin-bottom:8px}.severity-badge{padding:2px 8px;border-radius:4px;font-size:.7rem;font-weight:700}.severity-badge.critical{background:#ef4444;color:#fff}.severity-badge.warning{background:#fbbf24;color:#000}.severity-badge.ok{background:#4ade80;color:#000}.alarm-slot{color:#aaa;font-size:.85rem}.alarm-time,.history-duration{margin-left:auto;color:#666;font-size:.8rem}.alarm-description{color:#ddd;margin-bottom:8px;font-size:.95rem}.alarm-details{display:flex;gap:12px;font-size:.8rem;color:#666;margin-bottom:10px}.alarm-rule{font-family:monospace}.alarm-status-word{font-family:monospace;color:#888}.alarm-actions{border-top:1px solid #333;padding-top:10px;margin-top:10px}.acknowledge-btn{background:#3b82f6;color:#fff;border:none;padding:6px 16px;border-radius:4px;cursor:pointer;font-size:.85rem;transition:background .2s}.acknowledge-btn:hover:not(:disabled){background:#2563eb}.acknowledge-btn:disabled{opacity:.5;cursor:not-allowed}.acknowledged-info{color:#666;font-size:.8rem;font-style:italic}.history-times{display:flex;flex-direction:column;gap:4px;font-size:.8rem;color:#666}.history-acknowledged{margin-top:8px;font-size:.8rem;color:#4ade80}.alarm-panel-footer{padding:12px 16px;border-top:1px solid #333;display:flex;justify-content:flex-end}.refresh-btn{background:#ffffff1a;color:#fff;border:1px solid #444;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:.85rem;transition:all .2s}.refresh-btn:hover:not(:disabled){background:#ffffff26}.refresh-btn:disabled{opacity:.5;cursor:not-allowed}.server-dashboard{min-height:100vh;padding:24px;background:#11111b;color:#cdd6f4}.server-dashboard.loading,.server-dashboard.error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh}.server-dashboard.error h2{color:#f38ba8}.server-dashboard.error button{margin-top:16px;padding:12px 24px;background:#89b4fa;color:#11111b;border:none;border-radius:6px;font-weight:600;cursor:pointer}.server-header{text-align:center;margin-bottom:24px}.server-header h1{font-size:2rem;color:#89b4fa;margin:0 0 8px}.server-subtitle{color:#6c7086;margin:0}.server-status-bar{display:flex;justify-content:center;gap:32px;padding:16px;background:#1e1e2e;border-radius:8px;margin-bottom:24px;flex-wrap:wrap}.status-item{display:flex;flex-direction:column;align-items:center;gap:4px}.status-label{font-size:.75rem;color:#6c7086;text-transform:uppercase;letter-spacing:.5px}.status-value{font-size:1.25rem;font-weight:600;font-family:Consolas,monospace}.status-value.connected{color:#a6e3a1}.status-value.disconnected{color:#f38ba8}.status-value.online{color:#a6e3a1}.warning-banner{background:#45475a;color:#f9e2af;padding:12px 16px;border-radius:8px;text-align:center;margin-bottom:24px;border-left:4px solid #f9e2af}.no-devices{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px;background:#1e1e2e;border-radius:12px;text-align:center}.no-devices-icon{font-size:4rem;margin-bottom:16px}.no-devices h3{color:#cdd6f4;margin:0 0 8px}.no-devices p{color:#6c7086;margin:0 0 8px}.no-devices .hint{font-size:.85rem;max-width:400px}.devices-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:20px}.device-card{background:#1e1e2e;border-radius:12px;padding:16px;border:1px solid #313244;transition:border-color .2s}.device-card.online{border-color:#a6e3a1}.device-card.offline{border-color:#45475a;opacity:.7}.device-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.device-id{font-weight:600;font-size:1.1rem;color:#89b4fa;font-family:Consolas,monospace}.device-status{font-size:.85rem;font-weight:500}.device-status.online{color:#a6e3a1}.device-status.offline{color:#6c7086}.device-last-seen{font-size:.8rem;color:#6c7086;margin-bottom:12px}.device-no-data{color:#6c7086;font-style:italic;text-align:center;padding:16px}.device-slots{display:flex;flex-direction:column;gap:6px}.slot-row{display:grid;grid-template-columns:40px 70px 70px 70px 30px;gap:8px;padding:8px;background:#11111b;border-radius:6px;font-family:Consolas,monospace;font-size:.9rem;align-items:center}.slot-row.disabled{opacity:.5}.slot-num{font-weight:600;color:#89b4fa}.slot-voltage,.slot-current,.slot-power{text-align:right;color:#cdd6f4}.slot-status{text-align:center;font-weight:600}.slot-status.ok{color:#a6e3a1}.slot-status.fault{color:#f38ba8}.app{min-height:100vh;padding:24px;background:#11111b;color:#cdd6f4}.app.loading{display:flex;flex-direction:column;align-items:center;justify-content:center}.app.error{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.app.error h2{color:#f38ba8}.app.error button{margin-top:16px;padding:12px 24px;background:#89b4fa;color:#11111b;border:none;border-radius:6px;font-weight:600;cursor:pointer}.spinner{width:48px;height:48px;border:4px solid #313244;border-top-color:#89b4fa;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:16px}@keyframes spin{to{transform:rotate(360deg)}}.controls-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:16px}.stats{display:flex;gap:24px;color:#6c7086;font-family:Consolas,monospace;font-size:.9rem}.stats span{padding:8px 16px;background:#1e1e2e;border-radius:6px}.slots-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-bottom:32px}.app-footer{display:flex;justify-content:center;gap:32px;padding:24px 0;border-top:1px solid #313244;color:#6c7086;font-size:.85rem}.user-bar{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#1e1e2e;border-radius:8px;margin-bottom:20px}.user-info{color:#cdd6f4;font-size:.9rem}.tier-badge{margin-left:8px;padding:4px 8px;border-radius:4px;font-size:.75rem;font-weight:600;text-transform:uppercase}.tier-basic{background:#6c7086;color:#cdd6f4}.tier-medium{background:#89b4fa;color:#11111b}.tier-scientific{background:#a6e3a1;color:#11111b}.mode-badge{margin-left:12px;padding:4px 10px;border-radius:4px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.mode-badge.server{background:#cba6f7;color:#11111b}.mode-badge.edge{background:#94e2d5;color:#11111b}.user-bar.server-mode{border:1px solid #cba6f7}.logout-btn{padding:8px 16px;background:#45475a;color:#cdd6f4;border:none;border-radius:6px;cursor:pointer;font-size:.85rem;transition:all .2s}.logout-btn:hover{background:#f38ba8;color:#11111b}@media(max-width:768px){.slots-grid{grid-template-columns:1fr}.controls-bar{flex-direction:column;align-items:stretch}.stats{justify-content:center}.app-footer{flex-direction:column;align-items:center;gap:8px}}.tab-nav{display:flex;gap:8px}.tab-btn{padding:8px 20px;background:#313244;color:#6c7086;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:500;transition:all .2s}.tab-btn:hover{background:#45475a;color:#cdd6f4}.tab-btn.active{background:#89b4fa;color:#11111b}.tab-btn.active:hover{background:#74c7ec}.batch-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.batch-apply-btn{padding:10px 20px;border:2px solid #45475a;border-radius:8px;background:#313244;color:#6c7086;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .3s ease}.batch-apply-btn:disabled{cursor:not-allowed;opacity:.6}.batch-apply-btn.has-changes{background:#f9e2af;color:#11111b;border-color:#f9e2af;animation:pulse-batch 1.5s ease-in-out infinite}.batch-apply-btn.has-changes:hover:not(:disabled){background:#f5c211;border-color:#f5c211}.batch-apply-btn.applying{background:#89b4fa;color:#11111b;border-color:#89b4fa;animation:none;cursor:wait}@keyframes pulse-batch{0%,to{box-shadow:0 0 #f9e2af66}50%{box-shadow:0 0 12px 4px #f9e2af66}}.batch-clear-btn{padding:8px 14px;border:1px solid #45475a;border-radius:6px;background:transparent;color:#6c7086;font-size:.8rem;cursor:pointer;transition:all .2s}.batch-clear-btn:hover{background:#45475a;color:#cdd6f4}.batch-result{font-size:.85rem;padding:6px 12px;border-radius:6px;font-weight:500}.batch-result.success{background:#a6e3a133;color:#a6e3a1}.batch-result.error{background:#f38ba833;color:#f38ba8}
