:root{--font-heading: "Space Grotesk", "Inter", system-ui, sans-serif;--font-body: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--space-xs: .25rem;--space-sm: .5rem;--space-md: .75rem;--space-lg: 1rem;--space-xl: 1.5rem;--space-2xl: 2rem;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 999px;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .25s cubic-bezier(.4, 0, .2, 1);--transition-smooth: .4s cubic-bezier(.16, 1, .3, 1);font-family:var(--font-body),sans-serif;background-color:var(--color-bg);color:var(--color-text);font-size:16px;line-height:1.5}[data-theme=dark]{color-scheme:dark;--color-bg: #0a0f1e;--color-bg-card: rgba(30, 41, 59, .85);--color-bg-sidebar: rgba(15, 23, 42, .8);--color-bg-input: rgba(30, 41, 59, .9);--color-bg-input-focus: rgba(30, 41, 59, 1);--color-bg-disabled: rgba(15, 23, 42, .3);--color-bg-code: #0a0e1a;--color-bg-overlay: rgba(15, 23, 42, .5);--color-bg-hover: rgba(56, 189, 248, .08);--color-bg-muted: rgba(148, 163, 184, .08);--color-bg-bottom-nav: rgba(15, 23, 42, .97);--color-text: #e2e8f0;--color-text-muted: #94a3b8;--color-text-dim: #64748b;--color-text-heading: #f1f5f9;--color-primary: #38bdf8;--color-primary-hover: rgba(14, 116, 144, .3);--color-primary-bg: rgba(14, 116, 144, .4);--color-primary-bg-hover: rgba(14, 116, 144, .5);--color-primary-glow: rgba(56, 189, 248, .15);--color-success: #4ade80;--color-success-border: rgba(74, 222, 128, .4);--color-success-bg: rgba(74, 222, 128, .1);--color-danger: #f87171;--color-danger-border: rgba(248, 113, 113, .4);--color-danger-bg: rgba(248, 113, 113, .1);--color-danger-text: #fca5a5;--color-warning: #fbbf24;--color-warning-border: rgba(245, 158, 11, .4);--color-online: #34d399;--color-message-text: #7dd3fc;--color-offline-warning-text: #fecaca;--gradient-primary: linear-gradient(135deg, #38bdf8, #818cf8);--gradient-success: linear-gradient(135deg, #4ade80, #34d399);--gradient-danger: linear-gradient(135deg, #f87171, #fb923c);--gradient-surface: linear-gradient(135deg, rgba(56, 189, 248, .05), rgba(129, 140, 248, .05));--gradient-nav: linear-gradient(180deg, rgba(15, 23, 42, .95), rgba(15, 23, 42, .85));--gradient-card-hover: linear-gradient(135deg, rgba(56, 189, 248, .08), rgba(129, 140, 248, .04));--gradient-mesh: radial-gradient(ellipse at 20% 50%, rgba(56, 189, 248, .08) 0%, transparent 50%), radial-gradient(ellipse at 80% 20%, rgba(129, 140, 248, .06) 0%, transparent 50%), radial-gradient(ellipse at 50% 80%, rgba(74, 222, 128, .04) 0%, transparent 50%);--badge-online-text: #fff;--badge-offline-text: #fff;--badge-charge-text: #fff;--badge-discharge-text: #fff;--badge-online-bg: linear-gradient(135deg, #166534, #14532d);--badge-offline-bg: linear-gradient(135deg, #991b1b, #7f1d1d);--shadow-primary-button: 0 2px 8px rgba(56, 189, 248, .25);--shadow-primary-button-hover: 0 4px 16px rgba(56, 189, 248, .35);--border-color: rgba(148, 163, 184, .2);--border-color-strong: rgba(148, 163, 184, .3);--border-color-subtle: rgba(148, 163, 184, .12);--border-color-input: rgba(148, 163, 184, .25);--shadow-card: 0 4px 24px -4px rgba(0, 0, 0, .3), 0 2px 8px -2px rgba(0, 0, 0, .2);--shadow-card-hover: 0 8px 32px -4px rgba(0, 0, 0, .4), 0 4px 12px -2px rgba(0, 0, 0, .25);--shadow-glow-primary: 0 0 20px rgba(56, 189, 248, .15);--shadow-glow-success: 0 0 20px rgba(74, 222, 128, .12);--color-config-battery-bg: rgba(45, 60, 80, 1);--color-config-battery-bg-hover: rgba(50, 65, 85, 1);--color-config-battery-border: rgba(56, 189, 248, .25);--color-config-battery-border-hover: rgba(56, 189, 248, .4);--color-config-schedule-bg: rgba(48, 62, 70, 1);--color-config-schedule-bg-hover: rgba(53, 67, 75, 1);--color-config-schedule-border: rgba(74, 222, 128, .25);--color-config-schedule-border-hover: rgba(74, 222, 128, .4);--color-manual-mode-bg: rgba(45, 55, 50, .95);--color-manual-mode-border: rgba(74, 222, 128, .2);--color-service-mode-bg: rgba(55, 45, 45, .95);--color-service-mode-border: rgba(248, 113, 113, .2)}[data-theme=light]{color-scheme:light;--color-bg: #f0f4f8;--color-bg-card: rgba(255, 255, 255, .9);--color-bg-sidebar: rgba(241, 245, 249, .9);--color-bg-input: rgba(241, 245, 249, .9);--color-bg-input-focus: #ffffff;--color-bg-disabled: rgba(226, 232, 240, .5);--color-bg-code: #f1f5f9;--color-bg-overlay: rgba(226, 232, 240, .7);--color-bg-hover: rgba(14, 116, 144, .06);--color-bg-muted: rgba(100, 116, 139, .06);--color-bg-bottom-nav: rgba(255, 255, 255, .97);--color-text: #1e293b;--color-text-muted: #64748b;--color-text-dim: #94a3b8;--color-text-heading: #0f172a;--color-primary: #0ea5e9;--color-primary-hover: rgba(14, 116, 144, .12);--color-primary-bg: rgba(14, 165, 233, .15);--color-primary-bg-hover: rgba(14, 165, 233, .22);--color-primary-glow: rgba(14, 165, 233, .2);--color-success: #22c55e;--color-success-border: rgba(34, 197, 94, .4);--color-success-bg: rgba(34, 197, 94, .1);--color-danger: #ef4444;--color-danger-border: rgba(239, 68, 68, .4);--color-danger-bg: rgba(239, 68, 68, .08);--color-danger-text: #dc2626;--color-warning: #f59e0b;--color-warning-border: rgba(245, 158, 11, .4);--color-online: #10b981;--color-message-text: #0284c7;--color-offline-warning-text: #dc2626;--gradient-primary: linear-gradient(135deg, #0ea5e9, #6366f1);--gradient-success: linear-gradient(135deg, #22c55e, #10b981);--gradient-danger: linear-gradient(135deg, #ef4444, #f97316);--gradient-surface: linear-gradient(135deg, rgba(14, 165, 233, .04), rgba(99, 102, 241, .04));--gradient-nav: linear-gradient(180deg, rgba(255, 255, 255, .98), rgba(241, 245, 249, .95));--gradient-card-hover: linear-gradient(135deg, rgba(14, 165, 233, .06), rgba(99, 102, 241, .03));--gradient-mesh: radial-gradient(ellipse at 20% 50%, rgba(14, 165, 233, .07) 0%, transparent 50%), radial-gradient(ellipse at 80% 20%, rgba(99, 102, 241, .05) 0%, transparent 50%), radial-gradient(ellipse at 50% 80%, rgba(34, 197, 94, .04) 0%, transparent 50%);--badge-online-text: #14532d;--badge-offline-text: #7f1d1d;--badge-charge-text: #14532d;--badge-discharge-text: #7f1d1d;--badge-online-bg: linear-gradient(135deg, #bbf7d0, #a7f3d0);--badge-offline-bg: linear-gradient(135deg, #fecaca, #fed7aa);--shadow-primary-button: 0 2px 8px rgba(14, 165, 233, .25);--shadow-primary-button-hover: 0 4px 16px rgba(14, 165, 233, .35);--border-color: rgba(148, 163, 184, .25);--border-color-strong: rgba(148, 163, 184, .35);--border-color-subtle: rgba(148, 163, 184, .12);--border-color-input: rgba(148, 163, 184, .3);--shadow-card: 0 1px 3px rgba(0, 0, 0, .06), 0 4px 16px -4px rgba(0, 0, 0, .08);--shadow-card-hover: 0 4px 24px -4px rgba(0, 0, 0, .12), 0 8px 32px -8px rgba(0, 0, 0, .08);--shadow-glow-primary: 0 0 20px rgba(14, 165, 233, .1);--shadow-glow-success: 0 0 20px rgba(34, 197, 94, .08);--color-config-battery-bg: rgba(224, 242, 254, .7);--color-config-battery-bg-hover: rgba(224, 242, 254, .9);--color-config-battery-border: rgba(14, 165, 233, .3);--color-config-battery-border-hover: rgba(14, 165, 233, .5);--color-config-schedule-bg: rgba(220, 252, 231, .5);--color-config-schedule-bg-hover: rgba(220, 252, 231, .7);--color-config-schedule-border: rgba(34, 197, 94, .3);--color-config-schedule-border-hover: rgba(34, 197, 94, .5);--color-manual-mode-bg: rgba(220, 252, 231, .6);--color-manual-mode-border: rgba(34, 197, 94, .25);--color-service-mode-bg: rgba(254, 226, 226, .6);--color-service-mode-border: rgba(239, 68, 68, .25)}body{margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:var(--gradient-mesh);background-attachment:fixed}.material-symbols-outlined{font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24;vertical-align:middle;line-height:1;-webkit-user-select:none;user-select:none}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading),sans-serif;font-weight:600;line-height:1.2;margin:0}h1{font-size:1.75rem}h2{font-size:1.5rem}h3{font-size:1.25rem}h4{font-size:1.1rem}h5{font-size:1rem}.font-mono{font-family:var(--font-mono),monospace;font-variant-numeric:tabular-nums}button,input,textarea,select{border-radius:var(--radius-md);border:1px solid var(--border-color-input);background:var(--color-bg-input);color:inherit;padding:.45rem .75rem;font-size:.95rem;font-family:inherit;transition:border-color .2s ease,background .2s ease}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--color-primary);background:var(--color-bg-input-focus);box-shadow:0 0 0 3px var(--color-primary-glow),var(--shadow-glow-primary)}button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}button{cursor:pointer;transition:all var(--transition-base)}button:hover{border-color:var(--color-primary);background:var(--color-primary-hover)}button:disabled{opacity:.6;cursor:not-allowed;border-color:var(--border-color-subtle);background:var(--color-bg-disabled)}button:disabled:hover{border-color:var(--border-color-subtle);background:var(--color-bg-disabled)}button.primary{border:none;background:var(--gradient-primary);color:#fff;font-weight:600;box-shadow:var(--shadow-primary-button)}button.primary:hover{box-shadow:var(--shadow-primary-button-hover);transform:translateY(-1px);border:none}button.primary:active{transform:translateY(0);box-shadow:var(--shadow-primary-button)}.download-link{display:inline-flex;align-items:center;gap:.35rem;margin:1rem 0;color:var(--color-primary);text-decoration:none;font-weight:600}.download-link:hover{text-decoration:underline}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse-online{0%{box-shadow:0 0 #34d399b3}70%{box-shadow:0 0 0 6px #34d39900}to{box-shadow:0 0 #34d39900}}@keyframes pulse-offline{0%{box-shadow:0 0 #f87171b3}70%{box-shadow:0 0 0 6px #f8717100}to{box-shadow:0 0 #f8717100}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.gradient-text{color:var(--color-primary);background:var(--gradient-primary);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.app{display:flex;flex-direction:column;min-height:100vh}.top-nav{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-xl);border-bottom:1px solid var(--border-color-subtle);background:var(--gradient-nav);-webkit-backdrop-filter:blur(20px) saturate(1.2);backdrop-filter:blur(20px) saturate(1.2);gap:var(--space-lg);flex-shrink:0;position:relative}.top-nav:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:1px;background:var(--gradient-primary);opacity:.4}.top-nav-brand{display:flex;align-items:center;gap:.6rem;flex-shrink:0}.top-nav-title{font-family:var(--font-heading),sans-serif;font-size:1.2rem;font-weight:700;color:var(--color-primary);background:var(--gradient-primary);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.top-nav-center{flex:1;display:flex;justify-content:center}.top-nav-links{display:flex;gap:var(--space-xs);padding:var(--space-xs);background:var(--color-bg-overlay);border-radius:var(--radius-lg);border:1px solid var(--border-color-subtle)}.top-nav-link{padding:.4rem var(--space-xl);font-size:.9rem;font-weight:500;border:none;border-radius:var(--radius-md);background:transparent;color:var(--color-text-muted);cursor:pointer;transition:all var(--transition-base);position:relative}.top-nav-link:hover{color:var(--color-text);background:var(--color-bg-hover);border-color:transparent}.top-nav-link.active{color:#fff;background:var(--gradient-primary);border-color:transparent;box-shadow:var(--shadow-primary-button)}.top-nav-link.active:hover{background:var(--gradient-primary);border-color:transparent;box-shadow:var(--shadow-primary-button-hover)}.top-nav-device{display:flex;align-items:center;gap:var(--space-lg)}.top-nav-back{display:flex;align-items:center;gap:var(--space-xs);padding:.4rem .75rem;font-size:.85rem;font-weight:500;border:1px solid var(--border-color);border-radius:var(--radius-md);background:transparent;color:var(--color-text-muted);cursor:pointer;transition:all var(--transition-fast)}.top-nav-back:hover{color:var(--color-text);border-color:var(--color-primary);background:var(--color-bg-hover)}.top-nav-device-name{font-family:var(--font-heading),sans-serif;font-size:1rem;font-weight:600;color:var(--color-text-heading)}.top-nav-actions{display:flex;align-items:center;gap:var(--space-sm);flex-shrink:0}.top-nav-theme-toggle{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid var(--border-color);border-radius:var(--radius-full);background:transparent;color:var(--color-text-muted);cursor:pointer;flex-shrink:0;transition:all var(--transition-base)}.top-nav-theme-toggle:hover{color:var(--color-primary);border-color:var(--color-primary);background:var(--color-primary-hover);transform:rotate(15deg);box-shadow:var(--shadow-glow-primary)}.top-nav-logout{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid var(--border-color);border-radius:var(--radius-full);background:transparent;color:var(--color-text-muted);cursor:pointer;flex-shrink:0;transition:all var(--transition-base)}.top-nav-logout:hover{color:#fff;border-color:transparent;background:var(--gradient-danger);box-shadow:0 2px 8px #f871714d}.content{flex:1;padding:var(--space-2xl) 3rem;display:flex;flex-direction:column;gap:var(--space-xl);overflow-x:hidden;max-width:1200px;margin:0 auto;width:100%;box-sizing:border-box}.agent-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-lg)}.status-bar{display:flex;gap:var(--space-lg);align-items:center;font-size:.95rem;color:var(--color-text-muted)}.empty-state{margin:auto;text-align:center;color:var(--color-text-muted);max-width:420px;line-height:1.5}.tab-bar{display:flex;gap:var(--space-xs);padding:var(--space-xs);background:var(--color-bg-overlay);border-radius:var(--radius-lg);border:1px solid var(--border-color-subtle)}.tab-button{flex:1;padding:.5rem var(--space-lg);font-size:.9rem;font-weight:500;border:none;border-radius:var(--radius-md);background:transparent;color:var(--color-text-muted);cursor:pointer;transition:all var(--transition-base);display:flex;align-items:center;justify-content:center;gap:var(--space-sm);position:relative}.tab-button:hover{color:var(--color-text);background:var(--color-bg-hover);border-color:transparent}.tab-button-active{color:#fff;background:var(--gradient-primary);border-color:transparent;box-shadow:0 2px 8px #38bdf833}.tab-button-active:hover{background:var(--gradient-primary);border-color:transparent}.tab-dirty-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--color-warning);flex-shrink:0}.tab-panel{display:flex;flex-direction:column;gap:var(--space-xl)}.bottom-nav{display:none}.overview-page{display:flex;flex-direction:column;gap:var(--space-xl)}.overview-agents-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-lg)}.overview-agent-card{text-align:left;cursor:pointer;transition:all var(--transition-smooth);animation:fadeInUp .4s ease both}.overview-agent-card:hover{border-color:var(--color-primary);transform:translateY(-3px);box-shadow:var(--shadow-card-hover),var(--shadow-glow-primary);background:var(--gradient-card-hover)}.overview-agent-card .agent-card-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm)}.overview-agent-card .agent-card-meta{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);font-size:.75rem;color:var(--color-text-muted);margin:var(--space-xs) 0}.agent-last-seen{font-style:italic}.overview-batteries{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-xs)}.overview-battery-mini{display:flex;align-items:center;gap:var(--space-xs);padding:.2rem .5rem;background:var(--color-bg-muted);border-radius:var(--radius-sm);font-size:.8rem}.overview-battery-soc{font-family:var(--font-mono),monospace;font-variant-numeric:tabular-nums;font-weight:600;color:var(--color-primary);background:var(--gradient-primary);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.overview-agent-id{color:var(--color-text-dim)}.overview-section{display:flex;flex-direction:column;gap:var(--space-lg);padding-top:var(--space-lg);border-top:1px solid var(--border-color-subtle)}.overview-agents-grid>:nth-child(1){animation-delay:0s}.overview-agents-grid>:nth-child(2){animation-delay:.05s}.overview-agents-grid>:nth-child(3){animation-delay:.1s}.overview-agents-grid>:nth-child(4){animation-delay:.15s}.overview-agents-grid>:nth-child(5){animation-delay:.2s}.overview-agents-grid>:nth-child(6){animation-delay:.25s}.connection{display:inline-flex;align-items:center;gap:.35rem}.connection-dot{width:10px;height:10px;border-radius:50%;background:var(--color-danger);box-shadow:0 0 #f87171b3;animation:pulse-offline 2s infinite}.connection-dot.online{background:var(--color-online);animation:pulse-online 2s infinite}.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;background-color:var(--color-bg);padding:var(--space-lg);padding-top:calc(var(--space-lg) + env(safe-area-inset-top,0px))}.login-icon{width:64px;height:64px;margin-bottom:var(--space-lg);border-radius:var(--radius-xl)}.login-card{background:var(--color-bg-card);border:1px solid var(--border-color-subtle);border-radius:var(--radius-xl);padding:2rem;width:100%;max-width:360px;-webkit-backdrop-filter:blur(20px) saturate(1.2);backdrop-filter:blur(20px) saturate(1.2);box-shadow:var(--shadow-card),var(--shadow-glow-primary);animation:fadeInUp .5s ease both}.login-card h1{margin:0 0 var(--space-xs) 0;font-size:1.25rem;text-align:center}.login-subtitle{text-align:center;color:var(--color-text-muted);font-size:.85rem;margin:0 0 var(--space-lg) 0}.login-field{display:flex;flex-direction:column;gap:var(--space-xs);margin-bottom:1rem}.login-field label{font-size:.85rem;color:var(--color-text);font-weight:500}.login-field input{width:100%;padding:.5rem .75rem;box-sizing:border-box}.login-error{color:var(--color-danger-text);font-size:.85rem;margin-bottom:var(--space-md);padding:var(--space-sm);background:var(--color-danger-bg);border-radius:var(--radius-md);border:1px solid var(--color-danger-border)}.login-card button{width:100%;padding:.6rem .75rem;font-size:.95rem;box-sizing:border-box}.login-back{margin-top:var(--space-sm);background:transparent;border-color:var(--border-color);color:var(--color-text-muted)}.login-back:hover{background:var(--color-bg-hover);color:var(--color-text)}.db-stats{display:flex;flex-direction:column;gap:.75rem}.db-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.5rem}.db-stats-item{display:flex;flex-direction:column;gap:.15rem;padding:.5rem .75rem;background:var(--color-bg-muted);background-image:var(--gradient-surface);border-radius:var(--radius-md);border:1px solid var(--border-color-subtle);transition:all var(--transition-base)}.db-stats-item:hover{border-color:var(--border-color);box-shadow:var(--shadow-glow-primary)}.db-stats-label{font-size:.7rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.db-stats-value{font-family:var(--font-mono),monospace;font-variant-numeric:tabular-nums;font-size:.9rem;font-weight:500;color:var(--color-text)}.db-stats-agents table{width:100%;border-collapse:collapse;font-size:.8rem}.db-stats-agents th{text-align:left;color:var(--color-text-muted);font-weight:500;padding:.35rem .5rem;border-bottom:1px solid var(--border-color-subtle)}.db-stats-agents td{padding:.35rem .5rem;color:var(--color-text)}@media (max-width: 960px){.content{padding:var(--space-xl)}.status-bar{flex-wrap:wrap;align-items:flex-start}}@media (max-width: 600px){:root{font-size:15px}.app{padding-bottom:72px}.content{padding:var(--space-lg);gap:var(--space-lg)}.top-nav{padding:var(--space-sm) var(--space-lg);padding-top:calc(var(--space-sm) + env(safe-area-inset-top,0px))}.top-nav-title{font-size:1rem}.top-nav-links,.top-nav-device{display:none}.agent-header{gap:var(--space-sm)}.status-bar{font-size:.85rem}.login-container{padding:var(--space-lg)}.login-card{padding:var(--space-2xl) var(--space-xl)}.tab-bar{display:none}.bottom-nav{display:flex;position:fixed;bottom:0;left:0;right:0;height:64px;padding-bottom:env(safe-area-inset-bottom,0px);background:var(--color-bg-bottom-nav);border-top:1px solid var(--border-color-subtle);-webkit-backdrop-filter:blur(20px) saturate(1.2);backdrop-filter:blur(20px) saturate(1.2);z-index:100}.bottom-nav:before{content:"";position:absolute;top:-1px;left:0;right:0;height:1px;background:var(--gradient-primary);opacity:.3}.bottom-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:none;border:none;color:var(--color-text-muted);font-size:.7rem;padding:var(--space-sm);cursor:pointer;transition:all var(--transition-base);min-height:44px;position:relative}.bottom-nav-item:hover{background:none;border-color:transparent}.bottom-nav-item-active{color:var(--color-primary)}.bottom-nav-item-active:hover{background:none;border-color:transparent}.bottom-nav-item-active:after{content:"";position:absolute;bottom:6px;left:50%;transform:translate(-50%);width:4px;height:4px;border-radius:50%;background:var(--color-primary)}.bottom-nav-icon{font-size:1.3rem;line-height:1}.bottom-nav-label{display:flex;align-items:center;gap:3px;font-weight:500}.overview-agents-grid{grid-template-columns:1fr}}.card{border:1px solid var(--border-color);border-radius:var(--radius-xl);padding:1.25rem;background:var(--color-bg-card);-webkit-backdrop-filter:blur(16px) saturate(1.1);backdrop-filter:blur(16px) saturate(1.1);box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:var(--space-md);transition:all var(--transition-smooth);animation:fadeInUp .4s ease both}.card h2{margin:0;font-size:1.1rem;display:flex;justify-content:space-between;align-items:baseline}.badge{padding:.2rem .6rem;border-radius:var(--radius-full);font-size:.75rem;font-weight:500;border:1px solid var(--border-color);transition:all var(--transition-fast)}.badge.online{color:var(--badge-online-text);background:var(--badge-online-bg);border-color:transparent;box-shadow:0 1px 4px #4ade804d}.badge.offline{color:var(--badge-offline-text);background:var(--badge-offline-bg);border-color:transparent;box-shadow:0 1px 4px #f871714d}.badge.disabled{color:var(--color-text-muted);border-color:var(--border-color-strong)}.status-banner{display:flex;align-items:center;gap:var(--space-md);padding:.6rem var(--space-lg);border-radius:var(--radius-lg);font-size:.85rem;font-weight:500;animation:fadeInUp .4s ease both;position:relative;overflow:hidden}.status-banner:before{content:"";position:absolute;top:0;left:-60%;width:50%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.05),transparent);animation:shimmer-sweep 3s ease-in-out infinite}@keyframes shimmer-sweep{0%{left:-60%}to{left:110%}}.status-banner-offline{background:var(--color-danger-bg);border:1px solid var(--color-danger-border);color:var(--color-danger)}.status-banner-update{background:var(--color-success-bg);border:1px solid var(--color-success-border);color:var(--color-success)}.status-banner-action{margin-left:auto;padding:.3rem .75rem;font-size:.8rem;font-weight:600;border:1px solid currentColor;border-radius:var(--radius-md);background:transparent;color:inherit;cursor:pointer;white-space:nowrap}.status-banner-action:hover{background:#00000014;border-color:currentColor}.message-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);padding:.75rem var(--space-lg);background:var(--color-primary-glow);border:1px solid var(--color-primary);border-radius:var(--radius-lg);color:var(--color-message-text);font-size:.9rem;animation:slideIn .3s ease}.message-close{background:transparent;border:none;color:inherit;font-size:1.5rem;line-height:1;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.7;transition:opacity .2s ease;flex-shrink:0}.message-close:hover{opacity:1;background:transparent;border:none}.offline-warning{border:1px dashed var(--color-danger-border);background:var(--color-danger-bg);color:var(--color-offline-warning-text);padding:.75rem var(--space-lg);border-radius:var(--radius-lg)}.button-link{background:transparent;border:none;color:var(--color-primary);padding:var(--space-sm);font-size:.85rem;text-decoration:underline;cursor:pointer;transition:color .2s ease}.button-link:hover{color:var(--color-message-text);background:transparent;border:none}.button-link:disabled{opacity:.5;cursor:not-allowed}.button-small{padding:.4rem .75rem;font-size:.85rem}.button-icon{background:transparent;border:1px solid var(--border-color);color:var(--color-danger);width:28px;height:28px;padding:0;display:flex;align-items:center;justify-content:center;font-size:1.25rem;line-height:1;border-radius:var(--radius-sm);transition:all .2s ease}.button-icon:hover:not(:disabled){background:var(--color-danger-bg);border-color:var(--color-danger-border)}.spinner{width:32px;height:32px;border:3px solid var(--border-color-subtle);border-top-color:var(--color-primary);border-right-color:#818cf880;border-radius:50%;animation:spin .8s linear infinite}.spinner-small{display:inline-block;width:14px;height:14px;border:2px solid var(--border-color-subtle);border-top-color:currentColor;border-radius:50%;animation:spin .8s linear infinite;margin-right:var(--space-sm);vertical-align:middle}.switch{display:flex;align-items:center;gap:var(--space-sm);cursor:pointer;-webkit-user-select:none;user-select:none}.switch input[type=checkbox]{position:absolute;opacity:0;width:0;height:0}.switch-slider{position:relative;display:inline-block;width:44px;height:24px;background-color:#94a3b84d;border-radius:24px;transition:background-color .2s ease;flex-shrink:0}.switch-slider:before{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;background-color:var(--color-text);border-radius:50%;transition:transform .2s ease}.switch input[type=checkbox]:checked+.switch-slider{background:var(--gradient-primary);box-shadow:0 2px 8px #38bdf84d}.switch input[type=checkbox]:checked+.switch-slider:before{transform:translate(20px)}.switch input[type=checkbox]:focus-visible+.switch-slider{outline:2px solid var(--color-primary);outline-offset:3px}.switch input[type=checkbox]:disabled+.switch-slider{opacity:.5;cursor:not-allowed}.switch input[type=checkbox]:disabled~.switch-label{opacity:.5;cursor:not-allowed}.switch-label{font-size:.85rem;color:var(--color-text);font-weight:500}.form-field{display:flex;flex-direction:column;gap:.4rem}.form-field label{font-size:.85rem;color:var(--color-text);font-weight:500}.form-field input[type=text],.form-field input[type=url],.form-field input[type=password],.form-field input[type=number],.form-field input[type=time],.form-field select{padding:.4rem .65rem;font-size:.9rem;height:32px;min-height:32px;box-sizing:border-box}.form-field input[type=checkbox]{width:18px;height:18px;margin:0;cursor:pointer}.form-field-checkbox label{display:flex;align-items:center;gap:var(--space-sm);cursor:pointer;flex-direction:row}.form-field-pair{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm)}.form-help-text{display:block;margin-top:var(--space-xs);color:var(--color-text-muted);font-size:.8rem;line-height:1.3}@media (max-width: 600px){.card{padding:var(--space-lg);gap:var(--space-md)}.card h2{font-size:1rem;flex-wrap:wrap;gap:var(--space-sm)}.badge{font-size:.7rem;padding:.15rem .4rem}.message-banner{font-size:.85rem;padding:.6rem .75rem}.message-close{width:36px;height:36px}.button-small{width:100%;padding:.5rem .75rem;min-height:44px}.button-icon{width:36px;height:36px;font-size:1.4rem}.switch{min-height:44px;padding:4px 0}.form-field{gap:var(--space-xs)}.form-field label{font-size:.9rem;font-weight:600}.form-field input[type=text],.form-field input[type=url],.form-field input[type=password],.form-field input[type=number],.form-field input[type=time],.form-field select{height:44px;min-height:44px;font-size:16px;padding:.5rem .75rem}.form-help-text{font-size:.75rem;margin-top:.15rem}}.metrics-grid{display:grid;gap:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.metrics-grid>:nth-child(1){animation-delay:0s}.metrics-grid>:nth-child(2){animation-delay:.06s}.metrics-grid>:nth-child(3){animation-delay:.12s}.metrics-grid>:nth-child(4){animation-delay:.18s}.battery-card.manual-mode{background:var(--color-manual-mode-bg);border-color:var(--color-manual-mode-border);box-shadow:var(--shadow-card),var(--shadow-glow-success)}.battery-card.service-mode{background:var(--color-service-mode-bg);border-color:var(--color-service-mode-border);box-shadow:var(--shadow-card),0 0 20px #f871711a}.battery-card-header{cursor:pointer;-webkit-user-select:none;user-select:none;transition:all var(--transition-base)}.battery-card-header:hover{opacity:.85}.battery-card-title{flex:1}.battery-card-badges{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.battery-card-toggle{font-size:.75rem;color:var(--color-text-muted);transition:transform .2s ease,color .2s ease;margin-left:var(--space-xs)}.battery-card-header:hover .battery-card-toggle{color:var(--color-primary)}.metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem var(--space-lg);font-size:.95rem}.metric{display:flex;flex-direction:column;gap:.15rem}.metric span:first-child{font-size:.75rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:500}.metric span:last-child{font-family:var(--font-mono),monospace;font-variant-numeric:tabular-nums;font-size:1rem;font-weight:600;color:var(--color-text)}.controls{display:flex;flex-direction:column;gap:var(--space-lg);margin-top:var(--space-sm);max-height:0;overflow:hidden;opacity:0;transition:max-height .3s ease,opacity .3s ease,margin-top .3s ease}.battery-card.expanded .controls{max-height:2000px;opacity:1;margin-top:var(--space-sm)}.control-group{display:flex;flex-direction:column;gap:var(--space-sm)}.control-label{font-size:.8rem;color:var(--color-text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.05em;margin:0}.control-input{height:40px;padding:0 .75rem;font-size:.95rem;border-radius:var(--radius-md);border:1px solid var(--border-color-input);background:var(--color-bg-input);color:inherit;font-family:inherit;transition:border-color .2s ease,background .2s ease}.control-input:focus{outline:none;border-color:var(--color-primary);background:var(--color-bg-input-focus);box-shadow:0 0 0 3px var(--color-primary-glow)}.control-input:disabled{opacity:.7;cursor:not-allowed}.control-actions{display:flex;gap:var(--space-sm);flex-wrap:wrap}.control-inputs-row{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-sm)}.control-input-wrapper{display:flex;flex-direction:column;gap:.35rem;min-width:0}.control-input-label{font-size:.75rem;color:var(--color-text-muted);font-weight:500;margin:0}.control-inputs-row .control-input{width:100%;min-width:0;box-sizing:border-box}.control-button{height:40px;padding:0 var(--space-lg);font-size:.95rem;border-radius:var(--radius-md);border:1px solid var(--border-color-input);background:var(--color-bg-input);color:inherit;font-family:inherit;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);white-space:nowrap}.control-button:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-primary-hover)}.control-button:disabled{opacity:.6;cursor:not-allowed;border-color:var(--border-color-subtle);background:var(--color-bg-disabled)}.control-button:disabled:hover{border-color:var(--border-color-subtle);background:var(--color-bg-disabled)}.control-button.control-button-primary{border:none;background:var(--gradient-primary);color:#fff;font-weight:600;box-shadow:var(--shadow-primary-button)}.control-button.control-button-primary:hover:not(:disabled){background:var(--gradient-primary);box-shadow:var(--shadow-primary-button-hover);transform:translateY(-1px)}.control-button.control-button-primary:active:not(:disabled){transform:translateY(0);box-shadow:var(--shadow-primary-button)}.control-button.control-button-secondary{width:100%}.control-button-icon{font-size:.85rem;line-height:1}.system-summary{display:flex;gap:var(--space-xl);flex-wrap:wrap;padding:var(--space-md) var(--space-lg);background:var(--color-bg-card);background-image:var(--gradient-surface);border:1px solid var(--border-color-subtle);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);animation:fadeInUp .3s ease both}.system-summary-item{display:flex;flex-direction:column;gap:2px}.system-summary-label{font-size:.7rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:500}.system-summary-value{font-family:var(--font-mono),monospace;font-variant-numeric:tabular-nums;font-size:1rem;font-weight:600;color:var(--color-text)}.system-summary-statuses{display:flex;gap:var(--space-sm);flex-wrap:wrap}.system-summary-status{font-size:.85rem;font-weight:500}.system-summary-status.charging{color:var(--color-success);background:var(--gradient-success);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.system-summary-status.discharging{color:var(--color-danger);background:var(--gradient-danger);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.system-summary-status.idle{color:var(--color-text-muted)}@media (max-width: 600px){.metrics-grid{grid-template-columns:1fr;gap:var(--space-md)}.metrics{grid-template-columns:repeat(2,1fr);gap:.75rem var(--space-sm)}.metric span:last-child{font-size:.95rem}.battery-card:active{transform:scale(.98)}.battery-card .controls{gap:var(--space-md)}.control-group{gap:.4rem}.control-input,.control-button{height:44px}.control-inputs-row{grid-template-columns:1fr}.control-actions{flex-direction:column}.control-actions .control-button{width:100%}.system-summary{gap:var(--space-md);padding:var(--space-md)}.system-summary-item{min-width:calc(50% - var(--space-md))}}.config-tab{display:flex;flex-direction:column;gap:var(--space-md)}.config-device-info{display:flex;gap:var(--space-sm);flex-wrap:wrap}.config-panel{border:1px solid var(--border-color);border-radius:var(--radius-xl);padding:1.25rem;background:var(--color-bg-card);-webkit-backdrop-filter:blur(16px) saturate(1.1);backdrop-filter:blur(16px) saturate(1.1);box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:var(--space-md);animation:fadeInUp .4s ease both}.config-panel-header{display:flex;justify-content:space-between;align-items:center;-webkit-user-select:none;user-select:none}.config-toggle{font-size:.75rem;color:var(--color-text-muted);transition:transform .2s ease}.config-meta{font-size:.85rem;color:var(--color-text-muted)}.config-editor{min-height:220px;font-family:var(--font-mono),monospace;line-height:1.4;resize:vertical}.config-actions{display:flex;justify-content:flex-end;gap:var(--space-sm)}.config-error{color:var(--color-danger-text);font-size:.9rem;padding:.75rem var(--space-lg);background:var(--color-danger-bg);border:1px solid var(--color-danger-border);border-radius:var(--radius-md)}.config-loading{display:flex;flex-direction:column;align-items:center;gap:var(--space-lg);padding:var(--space-2xl);color:var(--color-text-muted)}.config-forms{display:flex;flex-direction:column;gap:var(--space-xl)}.config-section{display:flex;flex-direction:column;gap:var(--space-lg)}.config-section-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-lg)}.config-section-header h4{margin:0;color:var(--color-text-heading);font-weight:600}.config-items{display:flex;flex-direction:column;gap:var(--space-lg)}.config-item{border:1px solid var(--border-color-input);border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:var(--shadow-card);transition:all var(--transition-smooth)}.config-item-battery{background:var(--color-config-battery-bg);border-color:var(--color-config-battery-border)}.config-item-battery:hover{border-color:var(--color-config-battery-border-hover);background:var(--color-config-battery-bg-hover);box-shadow:var(--shadow-card-hover),0 0 16px #38bdf814;transform:translateY(-1px)}.config-item-schedule{background:var(--color-config-schedule-bg);border-color:var(--color-config-schedule-border)}.config-item-schedule:hover{border-color:var(--color-config-schedule-border-hover);background:var(--color-config-schedule-bg-hover);box-shadow:var(--shadow-card-hover),0 0 16px #4ade8014;transform:translateY(-1px)}.config-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-lg);padding-bottom:var(--space-md);border-bottom:1px solid var(--border-color)}.config-item-header h5{margin:0;color:var(--color-text-heading);font-weight:600}.config-item-header-actions{display:flex;align-items:center;gap:var(--space-md)}.config-form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-lg)}.config-form-grid .form-field-pair{grid-column:1 / -1}.config-empty{color:var(--color-text-muted);font-size:.9rem;text-align:center;padding:var(--space-xl);font-style:italic}.config-item-summary{font-size:.8rem;color:var(--color-text-muted);padding-top:var(--space-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.config-item-toggle{font-size:.7rem;color:var(--color-text-muted);margin-left:var(--space-sm);transition:transform .2s ease}.config-item-header-collapsed{margin-bottom:0;padding-bottom:0;border-bottom:none}.config-item-goal-badge{display:flex;align-items:center;gap:var(--space-md);padding:.4rem .65rem;border:1px solid rgba(74,222,128,.2);border-radius:var(--radius-md);background:var(--color-success-bg);background-image:linear-gradient(135deg,#4ade8014,#34d3990a);font-size:.8rem;color:var(--color-success);margin-top:var(--space-xs);box-shadow:0 1px 4px #4ade801a}.goal-badge-text{flex:1}.goal-reset-button{background:none;border:1px solid var(--color-warning-border);border-radius:var(--radius-sm);color:var(--color-warning);cursor:pointer;padding:.25rem .6rem;font-size:.8rem;font-weight:600;white-space:nowrap;transition:background .2s ease,border-color .2s ease}.goal-reset-button:hover:not(:disabled){background:#f59e0b1a;border-color:#f59e0b99}.goal-reset-button:disabled{color:var(--color-text-dim);border-color:var(--border-color-subtle);cursor:not-allowed;opacity:.6}.config-item-remove{grid-column:1 / -1;display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:.5rem var(--space-lg);margin-top:var(--space-xs);background:transparent;border:1px dashed var(--color-danger-border);border-radius:var(--radius-md);color:var(--color-danger);font-size:.85rem;cursor:pointer;transition:background .2s ease,border-color .2s ease}.config-item-remove:hover:not(:disabled){background:var(--color-danger-bg);border-color:var(--color-danger)}.config-item-remove:disabled{opacity:.5;cursor:not-allowed}.config-view-toggle{display:flex;justify-content:flex-end;padding-top:var(--space-sm);border-top:1px solid var(--border-color)}@media (max-width: 600px){.config-panel{padding:var(--space-md);gap:var(--space-sm)}.config-forms{gap:var(--space-md)}.config-section,.config-items{gap:var(--space-sm)}.config-item{padding:var(--space-md)}.config-form-grid{grid-template-columns:1fr;gap:var(--space-sm)}.config-item-header{flex-direction:column;align-items:flex-start;gap:var(--space-sm);margin-bottom:var(--space-sm);padding-bottom:var(--space-sm)}.config-item-header-actions{flex-wrap:wrap;gap:var(--space-sm);width:100%}.config-item-header-actions .switch-label{font-size:.75rem}.config-item-header-actions .button-icon{flex-shrink:0}.config-section-header{flex-direction:column;align-items:flex-start;gap:var(--space-md)}.config-section-header h4{font-size:.85rem;text-transform:uppercase;letter-spacing:.04em}.config-actions{flex-direction:column-reverse}.config-actions button{width:100%;min-height:44px}.config-item-remove{min-height:44px}}.status-message-content{background-color:var(--color-bg-code);border:1px solid var(--border-color-subtle);border-radius:var(--radius-md);padding:var(--space-lg);max-height:400px;overflow:auto;font-family:var(--font-mono),monospace;font-size:.875rem;line-height:1.5;color:var(--color-text);white-space:pre-wrap;word-break:break-word;margin-top:var(--space-sm)}.log-viewer-content{background-color:var(--color-bg-code);border:1px solid var(--border-color-subtle);border-radius:var(--radius-lg);padding:var(--space-lg);max-height:600px;overflow:auto;font-family:var(--font-mono),monospace;font-size:.875rem;line-height:1.5;color:var(--color-text);white-space:pre-wrap;word-break:break-word;box-shadow:inset 0 2px 4px #0000001a}.log-viewer-controls{display:flex;align-items:center;gap:var(--space-md);flex:1 1 auto;justify-content:flex-end}@media (max-width: 600px){.status-message-content{max-height:250px;padding:var(--space-md);font-size:.8rem}.log-viewer-content{max-height:350px;padding:var(--space-md);font-size:.8rem}.log-viewer-controls{flex-wrap:wrap;gap:var(--space-sm);width:100%;margin-top:var(--space-sm)}}.prices-compact{display:flex;flex-direction:column;gap:var(--space-md)}.prices-stats{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;align-items:baseline;font-size:.9rem;color:var(--color-text-muted)}.prices-stats strong{font-family:var(--font-mono),monospace;font-variant-numeric:tabular-nums;color:var(--color-text);font-size:1rem}.prices-stats-unit{font-size:.75rem;color:var(--color-text-dim)}.price-chart-svg{width:100%;max-width:720px;height:auto;min-height:140px;background:var(--color-bg-overlay);background-image:var(--gradient-surface);border-radius:var(--radius-lg);border:1px solid var(--border-color-subtle);transition:border-color var(--transition-base)}.price-chart-svg:hover{border-color:var(--border-color)}.schedule-table{overflow-x:auto}.schedule-table table{width:100%;border-collapse:collapse;font-size:.9rem}.schedule-table th{text-align:left;padding:var(--space-sm) var(--space-md);font-size:.75rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:500;border-bottom:1px solid var(--border-color-subtle)}.schedule-table td{font-family:var(--font-mono),monospace;font-variant-numeric:tabular-nums;padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--border-color-subtle);color:var(--color-text)}.schedule-badge{display:inline-block;padding:.15rem .5rem;border-radius:var(--radius-full);font-size:.7rem;font-weight:600;font-family:var(--font-body),sans-serif;letter-spacing:.05em}.schedule-badge-charge{color:var(--badge-charge-text);border:none;background:var(--badge-online-bg);box-shadow:0 1px 4px #4ade804d}.schedule-badge-discharge{color:var(--badge-discharge-text);border:none;background:var(--badge-offline-bg);box-shadow:0 1px 4px #f871714d}.prices-meta{display:flex;flex-wrap:wrap;gap:.25rem .75rem;font-size:.85rem;color:var(--color-text-muted)}.session-active{background:var(--color-success-bg)}.session-live-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--color-success);margin-left:.4rem;vertical-align:middle;animation:pulse-dot 1.5s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.3}}.show-mobile{display:none}.card-list{display:flex;flex-direction:column;gap:.5rem}.data-card{background:var(--color-bg-overlay);background-image:var(--gradient-surface);border:1px solid var(--border-color-subtle);border-radius:var(--radius-md);padding:.75rem;display:flex;flex-direction:column;gap:.4rem;transition:all var(--transition-base)}.data-card:hover{border-color:var(--border-color);box-shadow:var(--shadow-card)}.data-card-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.15rem}.data-card-title{font-weight:600;font-size:.9rem;color:var(--color-text)}.data-card-row{display:flex;justify-content:space-between;align-items:baseline}.data-card-label{font-size:.75rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.data-card-value{font-family:var(--font-mono),monospace;font-variant-numeric:tabular-nums;font-size:.85rem;color:var(--color-text)}@media (max-width: 600px){.prices-stats{gap:.35rem .75rem;font-size:.8rem}.prices-stats strong{font-size:.9rem}.schedule-badge{font-size:.6rem;padding:.1rem .35rem}.prices-meta{font-size:.75rem;flex-direction:column;gap:.15rem}.hide-mobile{display:none}.show-mobile{display:flex}}
