:root{color-scheme:light;--bg-app: #f8fafc;--bg-surface: #ffffff;--bg-card: #ffffff;--bg-elevated: #f1f5f9;--bg-input: #ffffff;--bg-sidebar: #ffffff;--bg-header: #ffffff;--bg-hover: #f1f5f9;--bg-active: #ecfdf5;--bg-modal-backdrop: rgba(15, 23, 42, .6);--bg-tooltip: #0f172a;--border-default: #e2e8f0;--border-subtle: #f1f5f9;--border-strong: #cbd5e1;--border-active: #a7f3d0;--border-focus: #059669;--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .06), 0 1px 2px 0 rgba(0, 0, 0, .04);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .07), 0 2px 4px -2px rgba(0, 0, 0, .05);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .08), 0 4px 6px -4px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .05);--text-primary: #0f172a;--text-secondary: #334155;--text-muted: #64748b;--text-dim: #94a3b8;--text-inverse: #ffffff;--status-available: #10b981;--status-available-bg: rgba(16, 185, 129, .08);--status-available-border: rgba(16, 185, 129, .2);--status-charging: #0ea5e9;--status-charging-bg: rgba(14, 165, 233, .08);--status-charging-border: rgba(14, 165, 233, .2);--status-preparing: #f59e0b;--status-preparing-bg: rgba(245, 158, 11, .08);--status-preparing-border: rgba(245, 158, 11, .2);--status-faulted: #f43f5e;--status-faulted-bg: rgba(244, 63, 94, .08);--status-faulted-border: rgba(244, 63, 94, .2);--status-offline: #64748b;--status-offline-bg: rgba(100, 116, 139, .08);--status-offline-border: rgba(100, 116, 139, .2);--accent-primary: #059669;--accent-primary-hover: #047857;--accent-primary-subtle: rgba(5, 150, 105, .08);--accent-cyan: #0284c7;--accent-indigo: #4f46e5;--accent-amber: #d97706;--accent-rose: #e11d48;--accent-purple: #9333ea;--accent-emerald: #059669;--scrollbar-track: #f1f5f9;--scrollbar-thumb: #cbd5e1;--scrollbar-thumb-hover: #94a3b8;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--sidebar-width: 260px;--sidebar-collapsed-width: 68px;--header-height: 56px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Cascadia Code", "Fira Code", monospace}[data-theme=dark]{color-scheme:dark;--bg-app: #09090b;--bg-surface: #18181b;--bg-card: #1c1c1f;--bg-elevated: #27272a;--bg-input: #27272a;--bg-sidebar: #111113;--bg-header: #111113;--bg-hover: #27272a;--bg-active: rgba(16, 185, 129, .1);--bg-modal-backdrop: rgba(0, 0, 0, .75);--bg-tooltip: #fafafa;--border-default: #27272a;--border-subtle: #1f1f23;--border-strong: #3f3f46;--border-active: rgba(16, 185, 129, .3);--border-focus: #10b981;--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .4), 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4), 0 2px 4px -2px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5), 0 4px 6px -4px rgba(0, 0, 0, .4);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .6), 0 8px 10px -6px rgba(0, 0, 0, .5);--text-primary: #fafafa;--text-secondary: #a1a1aa;--text-muted: #71717a;--text-dim: #52525b;--text-inverse: #09090b;--status-available-bg: rgba(16, 185, 129, .12);--status-available-border: rgba(16, 185, 129, .25);--status-charging-bg: rgba(14, 165, 233, .12);--status-charging-border: rgba(14, 165, 233, .25);--status-preparing-bg: rgba(245, 158, 11, .12);--status-preparing-border: rgba(245, 158, 11, .25);--status-faulted-bg: rgba(244, 63, 94, .12);--status-faulted-border: rgba(244, 63, 94, .25);--status-offline-bg: rgba(100, 116, 139, .12);--status-offline-border: rgba(100, 116, 139, .25);--accent-primary-subtle: rgba(16, 185, 129, .12);--scrollbar-track: #18181b;--scrollbar-thumb: #3f3f46;--scrollbar-thumb-hover: #52525b}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{background-color:var(--bg-app);color:var(--text-primary);font-family:var(--font-sans);font-size:14px;line-height:1.5;min-height:100vh;overflow-x:hidden;transition:background-color .2s ease,color .2s ease}.font-mono{font-family:var(--font-mono)}.tabular-nums{font-variant-numeric:tabular-nums;font-family:var(--font-mono)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-primary{color:var(--text-primary)}.text-secondary{color:var(--text-secondary)}.text-muted{color:var(--text-muted)}.text-dim{color:var(--text-dim)}.glass-panel{background:var(--bg-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:border-color .15s ease,box-shadow .15s ease}.glass-panel:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.surface{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-lg)}.card-elevated{background:var(--bg-elevated);border-radius:var(--radius-md);padding:12px}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:var(--radius-full);font-size:.7rem;font-weight:600;letter-spacing:.02em;line-height:1.4;white-space:nowrap}.badge-available{background:var(--status-available-bg);color:var(--status-available);border:1px solid var(--status-available-border)}.badge-charging{background:var(--status-charging-bg);color:var(--status-charging);border:1px solid var(--status-charging-border);animation:pulse-glow 2s ease-in-out infinite}.badge-preparing{background:var(--status-preparing-bg);color:var(--status-preparing);border:1px solid var(--status-preparing-border)}.badge-faulted{background:var(--status-faulted-bg);color:var(--status-faulted);border:1px solid var(--status-faulted-border)}.badge-offline{background:var(--status-offline-bg);color:var(--status-offline);border:1px solid var(--status-offline-border)}.badge-sm{font-size:.65rem;padding:2px 6px}.badge-lg{font-size:.78rem;padding:4px 10px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 14px;border-radius:var(--radius-md);font-weight:600;font-size:.8rem;font-family:inherit;cursor:pointer;border:none;transition:all .15s ease;white-space:nowrap;line-height:1.4}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent-primary);color:var(--text-inverse);box-shadow:var(--shadow-xs)}.btn-primary:hover:not(:disabled){background:var(--accent-primary-hover);box-shadow:var(--shadow-sm)}.btn-secondary{background:var(--bg-surface);color:var(--text-secondary);border:1px solid var(--border-default);box-shadow:var(--shadow-xs)}.btn-secondary:hover:not(:disabled){background:var(--bg-hover);border-color:var(--border-strong)}.btn-danger{background:var(--accent-rose);color:#fff}.btn-danger:hover:not(:disabled){background:#be123c}.btn-ghost{background:transparent;color:var(--text-muted);border:none;padding:6px 10px}.btn-ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.btn-sm{padding:4px 10px;font-size:.72rem}.btn-lg{padding:10px 20px;font-size:.88rem}.btn-icon{padding:6px;border-radius:var(--radius-md)}input,select,textarea{font-family:inherit;font-size:.85rem;color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:8px 12px;transition:border-color .15s ease,box-shadow .15s ease;outline:none;width:100%}input:focus,select:focus,textarea:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-primary-subtle)}input::placeholder,textarea::placeholder{color:var(--text-dim)}select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}label{display:block;font-size:.78rem;font-weight:600;color:var(--text-muted);margin-bottom:4px}.data-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.82rem}.data-table thead th{background:var(--bg-elevated);color:var(--text-muted);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:10px 14px;text-align:left;white-space:nowrap;border-bottom:1px solid var(--border-default);position:sticky;top:0;z-index:5;cursor:pointer;-webkit-user-select:none;user-select:none}.data-table thead th:hover{color:var(--text-primary)}.data-table tbody tr{transition:background-color .1s ease}.data-table tbody tr:hover{background:var(--bg-hover)}.data-table tbody td{padding:10px 14px;border-bottom:1px solid var(--border-subtle);color:var(--text-primary);vertical-align:middle}.data-table tbody td.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:.8rem}@keyframes pulse-glow{0%,to{opacity:1}50%{opacity:.7}}@keyframes skeleton-shimmer{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-fade-in{animation:fade-in .2s ease-out}.animate-slide-up{animation:slide-up .3s ease-out}.animate-spin{animation:spin 1s linear infinite}.skeleton{background:linear-gradient(90deg,var(--bg-elevated) 25%,var(--bg-hover) 37%,var(--bg-elevated) 63%);background-size:200px 100%;animation:skeleton-shimmer 1.4s ease infinite;border-radius:var(--radius-md)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg-modal-backdrop);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px;animation:fade-in .15s ease-out}.modal-content{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);max-width:640px;width:100%;max-height:85vh;overflow-y:auto;padding:28px;animation:slide-up .2s ease-out}.modal-content-lg{max-width:840px}.modal-content-xl{max-width:1080px}.progress-track{width:100%;height:6px;background:var(--bg-elevated);border-radius:var(--radius-full);overflow:hidden}.progress-fill{height:100%;border-radius:var(--radius-full);transition:width .4s ease}.progress-fill-emerald{background:linear-gradient(90deg,#10b981,#059669)}.progress-fill-cyan{background:linear-gradient(90deg,#06b6d4,#0ea5e9)}.progress-fill-amber{background:linear-gradient(90deg,#f59e0b,#d97706)}.progress-fill-rose{background:linear-gradient(90deg,#fb7185,#f43f5e)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--scrollbar-track)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}@media (max-width: 1024px){:root{--sidebar-width: 0px}}@media (max-width: 768px){.data-table{font-size:.75rem}.data-table thead th,.data-table tbody td{padding:8px 10px}.modal-content{padding:20px;margin:12px}}.leaflet-container{background:var(--bg-elevated)!important;border-radius:var(--radius-lg);font-family:var(--font-sans)!important}[data-theme=dark] .leaflet-tile{filter:brightness(.7) contrast(1.1) saturate(.8)}.leaflet-popup-content-wrapper{background:var(--bg-card)!important;color:var(--text-primary)!important;border:1px solid var(--border-default)!important;border-radius:var(--radius-lg)!important;box-shadow:var(--shadow-lg)!important}.leaflet-popup-tip{background:var(--bg-card)!important}
