:root{--bg-primary:#fff;--bg-secondary:#fff;--bg-card:#fff;--bg-card-hover:#f8fafc;--bg-sidebar:#0f172a;--bg-surface:#f1f5f9;--border:#d1d5db;--border-light:#9ca3af;--text-primary:#1e293b;--text-secondary:#334155;--text-muted:#64748b;--accent-yellow:#fbbf24;--accent-green:#22c55e;--accent-cyan:#06b6d4;--accent-orange:#f97316;--accent-purple:#8b5cf6;--accent-red:#ef4444;--accent-blue:#3b82f6;--sidebar-width:240px;--sidebar-collapsed:68px;--header-height:64px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;line-height:1.6}:focus-visible{outline:2px solid var(--accent-yellow);outline-offset:2px;border-radius:4px}:focus:not(:focus-visible){outline:none}.app-layout{min-height:100vh;display:flex}.main-area{margin-left:var(--sidebar-width);flex-direction:column;flex:1;min-width:0;transition:margin-left .3s;display:flex}.content{flex:1;padding:24px 32px;overflow-y:auto}.sidebar{width:var(--sidebar-width);background:var(--bg-sidebar);z-index:100;border-right:1px solid #ffffff0f;flex-direction:column;transition:width .3s;display:flex;position:fixed;top:0;bottom:0;left:0;box-shadow:2px 0 12px #00000026}.sidebar.collapsed{width:var(--sidebar-collapsed)}.app-layout:has(.sidebar.collapsed) .main-area{margin-left:var(--sidebar-collapsed)}.sidebar-brand{border-bottom:1px solid #ffffff14;flex-shrink:0;align-items:center;gap:12px;min-height:68px;padding:20px;display:flex}.brand-icon{color:var(--accent-yellow);flex-shrink:0}.brand-text{color:#fbbf24;white-space:nowrap;font-size:1.2rem;font-weight:700}.sidebar-nav{scrollbar-width:thin;scrollbar-color:#ffffff1f transparent;flex-direction:column;flex:1;gap:0;padding:8px 8px 4px;display:flex;overflow:hidden auto}.sidebar-nav::-webkit-scrollbar{width:4px}.sidebar-nav::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:4px}.sidebar-nav::-webkit-scrollbar-track{background:0 0}.sidebar-group{margin-bottom:2px}.sidebar-group-header{color:#ffffff59;text-transform:uppercase;letter-spacing:.8px;justify-content:space-between;align-items:center;padding:8px 12px 6px;font-size:.7rem;font-weight:600;display:flex}.sidebar-group-toggle{cursor:pointer;text-align:left;color:#ffffff59;text-transform:uppercase;letter-spacing:.8px;background:0 0;border:none;border-radius:6px;width:100%;padding:8px 12px 6px;font-size:.7rem;font-weight:600;transition:color .15s}.sidebar-group-toggle:hover{color:#ffffffa6}.sidebar-chevron{opacity:.5;flex-shrink:0;transition:transform .25s}.sidebar-chevron.open{transform:rotate(0)}.sidebar-chevron:not(.open){transform:rotate(-90deg)}.sidebar-group-items{opacity:0;max-height:0;transition:max-height .35s,opacity .25s;overflow:hidden}.sidebar-group-items.expanded{opacity:1;max-height:600px}.nav-item{color:#cbd5e1;white-space:nowrap;border-radius:8px;align-items:center;gap:12px;padding:10px 14px;font-size:.875rem;font-weight:500;text-decoration:none;transition:all .15s;display:flex;position:relative}.nav-item:hover{color:#f1f5f9;background:#ffffff14}.nav-item.active{color:#fbbf24;background:#fbbf2426}.nav-item.active:before{content:"";background:var(--accent-yellow);border-radius:0 3px 3px 0;width:3px;height:20px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.collapse-btn{color:#64748b;cursor:pointer;background:0 0;border:1px solid #ffffff1a;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;margin:8px;padding:12px;transition:all .15s;display:flex}.collapse-btn:hover{color:#e2e8f0;background:#ffffff14}.hamburger-btn{z-index:110;border:1px solid var(--border);background:var(--bg-card);width:40px;height:40px;color:var(--text-primary);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;display:none;position:fixed;top:12px;left:12px;box-shadow:0 1px 3px #00000014}.sidebar-overlay{z-index:99;background:#0006;display:none;position:fixed;inset:0}.header{height:var(--header-height);background:var(--bg-secondary);border-bottom:1px solid var(--border);z-index:50;flex-shrink:0;justify-content:space-between;align-items:center;padding:0 32px;display:flex;position:sticky;top:0;box-shadow:0 1px 3px #00000014}.header-left{align-items:center;gap:16px;min-width:0;display:flex}.header-title{color:var(--text-primary);white-space:nowrap;font-size:1.05rem;font-weight:600}.header-subtitle{color:var(--text-muted);white-space:nowrap;font-size:.8rem}.header-right{align-items:center;gap:12px;display:flex}.weather-badge{color:#92400e;background:#fbbf2414;border:1px solid #fbbf2426;border-radius:20px;align-items:center;gap:6px;padding:6px 12px;font-size:.8rem;font-weight:500;display:flex}.icon-btn{border:1px solid var(--border);width:36px;height:36px;color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;transition:all .15s;display:flex;position:relative}.icon-btn:hover{background:var(--bg-surface);color:var(--text-primary)}.badge-dot{background:var(--accent-red);border:2px solid #fff;border-radius:50%;width:8px;height:8px;position:absolute;top:7px;right:7px}.page{flex-direction:column;gap:24px;animation:.3s fadeIn;display:flex}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.page-header h2{align-items:center;gap:8px;font-size:1.3rem;font-weight:700;display:flex}.page-subtitle{color:var(--text-muted);margin-top:2px;font-size:.8rem}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:20px;box-shadow:0 1px 2px #0000000f}.card-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.card-header h3{font-size:1rem;font-weight:600}.card-badge{color:var(--accent-green);background:#22c55e1f;border-radius:4px;padding:3px 8px;font-size:.75rem}.card-badge.danger{color:var(--accent-red);background:#ef44441f}.ref-metrics-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;display:grid}.ref-metric-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:6px;padding:18px 20px;transition:all .2s;display:flex;box-shadow:0 1px 2px #0000000a}.ref-metric-card:hover{border-color:var(--border-light);transform:translateY(-1px)}.ref-metric-card.highlight{background:linear-gradient(135deg, #fbbf240a, var(--bg-card));border-color:#fbbf2440}.ref-metric-header{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ref-metric-label{font-size:.82rem;font-weight:600}.ref-metric-en{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:.62rem}.ref-metric-value{font-variant-numeric:tabular-nums;font-size:1.75rem;font-weight:700;line-height:1.2}.ref-metric-unit{color:var(--text-muted);font-size:.72rem}.search-box{border:1px solid var(--border);background:var(--bg-card);color:var(--text-muted);border-radius:8px;align-items:center;gap:8px;padding:8px 14px;transition:border-color .2s;display:flex}.search-box:focus-within{border-color:var(--accent-yellow);box-shadow:0 0 0 3px #fbbf2426}.search-box input{color:var(--text-primary);background:0 0;border:none;outline:none;min-width:200px;font-size:.85rem}.search-box input::placeholder{color:var(--text-muted)}.search-clear{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px;display:flex}.search-clear:hover{color:var(--text-primary);background:var(--bg-surface)}.search-empty{color:var(--text-muted);text-align:center;flex-direction:column;align-items:center;gap:12px;padding:48px 24px;display:flex}.dashboard-stations{flex-direction:column;gap:16px;display:flex}.dashboard-station-link{color:inherit;cursor:pointer;text-decoration:none;transition:all .2s}.dashboard-station-link:hover{border-color:var(--border-light);background:var(--bg-card-hover);transform:translateY(-2px);box-shadow:0 1px 3px #00000014}.station-count{text-align:center;color:var(--text-muted);padding-top:4px;font-size:.8rem}.plant-summary-card{padding:0;overflow:hidden}.plant-summary-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:16px 22px;display:flex}.plant-summary-left{align-items:center;gap:14px;min-width:0;display:flex}.plant-summary-icon{width:42px;height:42px;color:var(--accent-cyan);background:#06b6d41a;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.plant-summary-name{white-space:nowrap;font-size:1.05rem;font-weight:700;display:block}.plant-summary-location{color:var(--text-muted);align-items:center;gap:2px;font-size:.78rem;display:flex}.plant-summary-right{flex-shrink:0;align-items:center;gap:12px;display:flex}.plant-summary-realtime{color:#92400e;background:#fbbf241a;border-radius:8px;align-items:center;gap:5px;padding:5px 10px;font-size:.82rem;font-weight:600;display:flex}.plant-summary-specs{grid-template-columns:repeat(8,1fr);gap:0;display:grid}.plant-summary-spec{text-align:center;border-right:1px solid var(--border);flex-direction:column;align-items:center;gap:4px;padding:14px 8px;transition:background .15s;display:flex}.plant-summary-spec:last-child{border-right:none}.plant-summary-spec:hover{background:var(--bg-card-hover)}.plant-summary-spec svg{color:var(--accent-yellow);opacity:.75}.plant-summary-spec-label{color:var(--text-muted);white-space:nowrap;font-size:.68rem}.plant-summary-spec-value{font-variant-numeric:tabular-nums;font-size:.95rem;font-weight:700}.plant-summary-spec-value small{color:var(--text-muted);margin-left:2px;font-size:.65rem;font-weight:400}.status-badge{letter-spacing:.3px;border-radius:20px;padding:3px 10px;font-size:.72rem;font-weight:600}.status-badge.online{color:#15803d;background:#22c55e1f}.status-badge.offline{color:var(--text-muted);background:#64748b26}.status-badge.warning{color:#92400e;background:#fbbf2426}.station-status-online{border-left:3px solid var(--accent-green)!important}.station-status-warning{border-left:3px solid var(--accent-yellow)!important}.station-status-offline{border-left:3px solid var(--text-muted)!important}.stats-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;display:grid}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;align-items:center;gap:16px;padding:18px 20px;transition:all .2s;display:flex;box-shadow:0 1px 2px #0000000f}.stat-card:hover{border-color:var(--border-light);background:var(--bg-card-hover)}.stat-icon{border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.stat-info{flex:1;min-width:0}.stat-title{color:var(--text-muted);margin-bottom:2px;font-size:.8rem;display:block}.stat-value-row{align-items:baseline;gap:4px;display:flex}.stat-value{font-size:1.4rem;font-weight:700}.stat-unit{color:var(--text-muted);font-size:.8rem}.stat-trend{font-size:.75rem;font-weight:600}.stat-trend.up{color:var(--accent-green)}.stat-trend.down{color:var(--accent-red)}.charts-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}.chart-card{padding:20px}.data-table-wrapper{overflow-x:auto}.data-table{border-collapse:collapse;width:100%}.data-table th{text-align:left;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border);background:var(--bg-card);z-index:1;padding:10px 16px;font-size:.78rem;font-weight:600;position:sticky;top:0}.data-table td{color:var(--text-primary);border-bottom:1px solid var(--border);padding:8px 16px;font-size:.82rem}.data-table tbody tr:nth-child(2n) td{background:#00000004}.data-table tbody tr:hover td{background:#fbbf240a}.inverter-ref-table-wrapper{border:1px solid var(--border);border-radius:12px;overflow-x:auto}.inverter-ref-table{border-collapse:collapse;width:100%;font-size:.82rem}.inverter-ref-table thead th{text-align:left;color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px;border-bottom:2px solid var(--border);background:var(--bg-card-hover);white-space:nowrap;padding:12px 14px;font-size:.75rem;font-weight:600}.inverter-ref-table tbody td{border-bottom:1px solid var(--border);white-space:nowrap;padding:11px 14px}.inverter-ref-table tbody tr:hover{background:var(--bg-card-hover)}.inverter-ref-table tbody tr:last-child td{border-bottom:none}.inv-ref-idx{text-align:center;font-weight:700}.inv-ref-sn{color:var(--accent-cyan);font-family:SF Mono,Fira Code,monospace;font-weight:600}.inv-ref-ok{color:#15803d;background:#22c55e1f;border-radius:20px;align-items:center;gap:4px;padding:2px 10px;font-size:.72rem;font-weight:600;display:inline-flex}.inv-ref-power{font-family:SF Mono,Fira Code,monospace;font-weight:600}.inv-ref-total,.inv-ref-op,.inv-ref-event{color:var(--text-secondary);font-family:SF Mono,Fira Code,monospace}.inv-ref-event{color:var(--text-muted)}.inv-ref-temp{font-family:SF Mono,Fira Code,monospace;font-weight:600}.device-table-wrapper{overflow-x:auto}.device-table{border-collapse:collapse;width:100%}.device-table th{text-align:left;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border);background:var(--bg-surface);white-space:nowrap;padding:12px 16px;font-size:.73rem;font-weight:600}.device-table td{border-bottom:1px solid var(--border);padding:12px 16px;font-size:.82rem}.device-table tbody tr:hover{background:var(--bg-card-hover)}.device-id{color:var(--accent-cyan);font-family:SF Mono,Fira Code,monospace;font-size:.78rem}.device-name-cell{align-items:center;gap:8px;font-weight:500;display:flex}.type-badge{background:#64748b1f;border-radius:4px;padding:2px 8px;font-size:.78rem}.live-badge{color:#15803d;background:#22c55e1a;border-radius:20px;align-items:center;gap:6px;padding:4px 12px;font-size:.82rem;font-weight:500;display:flex}.live-dot{background:var(--accent-green);border-radius:50%;width:8px;height:8px;animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.live-metrics{grid-template-columns:repeat(4,1fr);gap:14px;display:grid}.live-metric-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;align-items:center;gap:16px;padding:18px 20px;transition:border-color .2s;display:flex;box-shadow:0 1px 2px #0000000a}.live-metric-card:hover{border-color:var(--border-light)}.live-metric-card.primary{background:linear-gradient(135deg,#fbbf2414,#fbbf2405);border-color:#fbbf2440}.live-metric-icon{color:var(--accent-yellow);display:flex}.live-metric-info{flex-direction:column;display:flex}.live-metric-label{color:var(--text-muted);font-size:.78rem}.live-metric-value{font-size:1.5rem;font-weight:700}.live-metric-value small{color:var(--text-muted);font-size:.8rem;font-weight:400}.device-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}.device-card{border:1px solid var(--border);background:var(--bg-surface);border-radius:8px;padding:14px;transition:all .15s}.device-card:hover{background:var(--bg-card-hover);border-color:var(--border-light)}.device-card.warning{border-color:#f973164d}.device-card.offline{opacity:.7;border-color:#64748b4d}.device-card-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.device-name{font-size:.88rem;font-weight:600}.device-stats{grid-template-columns:1fr 1fr;gap:8px;display:grid}.device-stat{flex-direction:column;display:flex}.device-stat-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:.68rem}.device-stat-value{font-size:.88rem;font-weight:600}.device-type-icon{color:var(--text-muted)}.device-summary{grid-template-columns:1fr 1fr;gap:10px;display:grid}.summary-item{background:var(--bg-surface);color:var(--text-secondary);border-radius:8px;align-items:center;gap:8px;padding:10px 12px;font-size:.82rem;display:flex}.summary-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.summary-dot.online{background:var(--accent-green)}.summary-dot.warning{background:var(--accent-orange)}.summary-dot.offline{background:var(--text-muted)}.summary-dot.total{background:var(--accent-cyan)}.summary-count{margin-left:auto;font-size:.95rem;font-weight:700}.alert-list{flex-direction:column;gap:8px;display:flex}.alert-item{background:var(--bg-surface);border-radius:8px;align-items:flex-start;gap:10px;padding:10px 12px;transition:background .15s;display:flex}.alert-item:hover{background:#0000000a}.alert-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:6px}.alert-dot.critical{background:var(--accent-red)}.alert-dot.warning{background:var(--accent-orange)}.alert-dot.info{background:var(--accent-blue)}.alert-content{flex-direction:column;flex:1;gap:2px;display:flex}.alert-msg{color:var(--text-primary);font-size:.82rem;line-height:1.4}.alert-time{color:var(--text-muted);font-size:.72rem}.alert-stats{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.alert-stat-card{border:1px solid var(--border);background:var(--bg-card);border-radius:12px;flex-direction:column;align-items:center;gap:4px;padding:20px;display:flex}.alert-stat-card.critical{border-color:#ef44444d}.alert-stat-card.warning{border-color:#f59e0b4d}.alert-stat-card.info{border-color:#3b82f64d}.alert-stat-count{font-size:2rem;font-weight:800}.alert-stat-card.critical .alert-stat-count{color:var(--accent-red)}.alert-stat-card.warning .alert-stat-count{color:var(--accent-orange)}.alert-stat-card.info .alert-stat-count{color:var(--accent-blue)}.alert-stat-label{color:var(--text-secondary);font-size:.88rem}.alert-list-full{flex-direction:column;gap:10px;display:flex}.alert-card{border:1px solid var(--border);background:var(--bg-card);border-radius:8px;align-items:flex-start;gap:14px;padding:16px;transition:all .15s;display:flex}.alert-card:hover{background:var(--bg-card-hover)}.alert-card.critical{border-left:3px solid var(--accent-red)}.alert-card.warning{border-left:3px solid var(--accent-orange)}.alert-card.info{border-left:3px solid var(--accent-blue)}.alert-card-icon{flex-shrink:0;padding-top:2px}.alert-card-body{flex:1}.alert-card-header{align-items:center;gap:8px;margin-bottom:4px;display:flex}.alert-type-badge{text-transform:uppercase;border-radius:4px;align-items:center;padding:2px 8px;font-size:.7rem;font-weight:600;display:inline-flex}.alert-type-badge.critical{color:var(--accent-red);background:#ef44441f}.alert-type-badge.warning{color:var(--accent-orange);background:#f59e0b1f}.alert-type-badge.info{color:var(--accent-blue);background:#3b82f61f}.alert-message{color:var(--text-primary);margin:4px 0;font-size:.88rem;line-height:1.5}.alert-device{color:var(--text-muted);font-size:.75rem}.alert-dismiss-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px;transition:all .15s;display:flex}.alert-dismiss-btn:hover{background:var(--bg-surface);color:var(--accent-red)}.alert-critical-badge{color:var(--accent-red);background:#ef44441a;border:1px solid #ef444433;border-radius:8px;align-items:center;gap:6px;padding:6px 14px;font-size:.82rem;font-weight:600;display:flex}.period-tabs{flex-wrap:wrap;gap:8px;display:flex}.tab{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:6px;padding:8px 18px;font-size:.82rem;font-weight:500;transition:all .15s;display:flex}.tab:hover{border-color:var(--border-light);color:var(--text-primary)}.tab.active{background:var(--accent-yellow);color:#1e293b;border-color:var(--accent-yellow);font-weight:600;box-shadow:0 2px 8px #fbbf2433}.tab-content{animation:.25s fadeSlideIn}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.tab-count{background:#00000014;border-radius:10px;justify-content:center;align-items:center;min-width:20px;height:20px;padding:0 6px;font-size:.68rem;font-weight:600;display:inline-flex}.tab.active .tab-count{background:#00000026}.filter-tabs{flex-wrap:wrap;gap:8px;display:flex}.btn-secondary{border:1px solid var(--border);background:var(--bg-card);color:var(--text-secondary);cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:8px 16px;font-size:.82rem;transition:all .15s;display:flex}.btn-secondary:hover{border-color:var(--border-light);color:var(--text-primary);background:var(--bg-card-hover)}.btn-primary{background:var(--accent-yellow);color:#1e293b;cursor:pointer;border:none;border-radius:8px;align-items:center;gap:6px;margin-left:8px;padding:9px 18px;font-size:.85rem;font-weight:600;transition:all .15s;display:inline-flex}.btn-primary:hover{background:#f59e0b;box-shadow:0 2px 8px #fbbf2440}.btn-icon{border:1px solid var(--border);background:var(--bg-card);width:36px;height:36px;color:var(--text-secondary);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;transition:all .15s;display:flex}.btn-icon:hover{background:var(--bg-surface);color:var(--text-primary)}.header-actions{align-items:center;gap:12px;display:flex}.breadcrumb{align-items:center;gap:6px;padding:4px 0;font-size:.8rem;display:flex}.breadcrumb-link{color:var(--text-muted);text-decoration:none;transition:color .2s}.breadcrumb-link:hover{color:var(--accent-yellow)}.breadcrumb-sep{color:var(--text-muted);opacity:.5}.breadcrumb-current{color:var(--text-primary);font-weight:600}.history-summary{flex-wrap:wrap;gap:14px;display:flex}.summary-stat{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;flex-direction:column;flex:1;align-items:center;min-width:120px;padding:16px;display:flex}.summary-label{color:var(--text-muted);font-size:.78rem}.summary-value{color:var(--accent-yellow);font-size:1.25rem;font-weight:700}.station-filter-bar{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;flex-wrap:wrap;align-items:center;gap:12px;padding:14px 18px;display:flex}.stations-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;display:grid}.station-card-link{color:inherit;text-decoration:none;transition:all .25s}.station-card-link.slide-in{opacity:0;transition:opacity .35s,transform .35s;transform:translateY(16px)}.station-card-link.slide-in.visible{opacity:1;transform:translateY(0)}.station-card-link:hover{transform:translateY(-2px)}.station-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:12px;padding:18px 20px;display:flex;box-shadow:0 1px 2px #0000000f}.station-card-top{justify-content:space-between;align-items:flex-start;display:flex}.station-card-brand{align-items:center;gap:12px;display:flex}.station-brand-icon{width:40px;height:40px;color:var(--accent-cyan);background:#06b6d41a;border-radius:8px;justify-content:center;align-items:center;display:flex}.station-card-name{font-size:.95rem;font-weight:700;line-height:1.2}.station-card-company{color:var(--text-muted);font-size:.72rem}.station-card-location{color:var(--text-muted);align-items:center;gap:4px;font-size:.78rem;display:flex}.station-card-stats{grid-template-columns:1fr 1fr;gap:12px;display:grid}.station-card-stat{background:var(--bg-surface);border-radius:8px;align-items:center;gap:10px;padding:10px 12px;display:flex}.stat-icon-yellow{color:var(--accent-yellow)}.stat-icon-orange{color:var(--accent-orange)}.station-stat-value{font-size:1rem;font-weight:700;line-height:1.2;display:block}.station-stat-label{color:var(--text-muted);font-size:.68rem}.station-card-footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;padding-top:8px;display:flex}.station-card-specs{color:var(--text-secondary);align-items:center;gap:12px;font-size:.75rem;display:flex}.station-card-specs span{align-items:center;gap:4px;display:flex}.station-card-weather{color:var(--text-muted);align-items:center;gap:4px;font-size:.75rem;display:flex}.station-card-action{color:var(--accent-yellow);border-top:1px solid var(--border);justify-content:center;align-items:center;gap:6px;padding-top:8px;font-size:.82rem;font-weight:600;display:flex}.station-header{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:20px;padding:20px;display:flex;box-shadow:0 1px 2px #0000000f}.station-header-left{align-items:flex-start;gap:14px;display:flex}.station-title-row{align-items:center;gap:10px;margin-bottom:6px;display:flex}.station-title-row h2{font-size:1.2rem;font-weight:700}.station-meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:6px;font-size:.82rem;display:flex}.meta-sep{color:var(--border-light);font-size:.7rem}.station-header-right{align-items:center;gap:16px;display:flex}.weather-card{background:linear-gradient(135deg,#fbbf2414,#06b6d40f);border:1px solid #fbbf2433;border-radius:8px;align-items:center;gap:12px;padding:10px 16px;display:flex}.weather-icon{color:var(--accent-yellow)}.weather-info{flex-direction:column;display:flex}.weather-temp{font-size:1.1rem;font-weight:700}.weather-cond{color:var(--text-muted);font-size:.72rem}.weather-details{flex-direction:column;gap:2px;display:flex}.weather-detail{color:var(--text-secondary);align-items:center;gap:4px;font-size:.72rem;display:flex}.two-col{grid-template-columns:1fr 1fr;gap:20px;display:grid}.filter-select{border:1px solid var(--border);background:var(--bg-card);color:var(--text-primary);cursor:pointer;border-radius:8px;outline:none;min-width:300px;padding:8px 14px;font-size:.88rem;transition:border-color .2s}.filter-select:focus{border-color:var(--accent-yellow)}.pv-array-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;display:grid}.pv-array-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:12px;padding:16px 18px;transition:all .2s;display:flex;box-shadow:0 1px 2px #0000000f}.pv-array-card:hover{border-color:var(--border-light);box-shadow:0 1px 3px #00000014}.pv-array-header{justify-content:space-between;align-items:center;display:flex}.pv-array-title{font-size:.95rem;font-weight:600}.pv-array-metrics{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.pv-array-metric{flex-direction:column;align-items:center;gap:2px;display:flex}.pv-array-metric span{color:var(--text-muted);text-transform:uppercase;font-size:.68rem}.pv-array-metric strong{font-size:.9rem;font-weight:700}.pv-array-bar{flex-direction:column;gap:4px;display:flex}.pv-array-bar-label{color:var(--text-secondary);justify-content:space-between;font-size:.72rem;display:flex}.pv-array-bar-track{background:var(--bg-surface);border-radius:4px;width:100%;height:8px;overflow:hidden}.pv-array-bar-fill{background:linear-gradient(90deg, var(--accent-yellow), var(--accent-orange));border-radius:4px;height:100%;transition:width .5s}.dms-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;display:grid}.filter-summary{color:var(--text-muted);align-items:center;gap:8px;padding:4px 0;font-size:.78rem;display:flex}.ai-chat-panel{border:1px solid var(--border);background:var(--bg-card);border-radius:12px;flex-direction:column;min-height:400px;display:flex}.ai-chat-header{border-bottom:1px solid var(--border);background:var(--bg-card-hover);align-items:center;gap:10px;padding:14px 18px;display:flex}.ai-chat-messages,.ai-chat-content{flex-direction:column;flex:1;gap:12px;max-height:400px;padding:16px;display:flex;overflow-y:auto}.ai-message{align-items:flex-start;gap:10px;display:flex}.ai-message-avatar{color:#fff;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.ai-message.ai .ai-message-avatar{background:linear-gradient(135deg,#8b5cf6,#6366f1)}.ai-message.user .ai-message-avatar{background:linear-gradient(135deg,#f59e0b,#d97706)}.ai-message-text{white-space:pre-line;word-break:break-word;border-radius:8px;max-width:75%;padding:10px 14px;font-size:.88rem;line-height:1.55}.ai-message.ai .ai-message-text{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border)}.ai-message.user .ai-message-text{background:var(--accent-yellow);color:#1e293b}.ai-suggestions{flex-wrap:wrap;justify-content:center;gap:8px;padding:14px 18px;display:flex}.ai-suggestion-btn{border:1px solid var(--border);background:var(--bg-card);color:var(--text-primary);cursor:pointer;border-radius:20px;align-items:center;gap:6px;padding:7px 14px;font-size:.8rem;transition:all .2s;display:inline-flex}.ai-suggestion-btn:hover{background:var(--accent-yellow);color:#1e293b;border-color:var(--accent-yellow)}.ai-input-bar{background:var(--bg-card);border-top:1px solid var(--border);align-items:center;gap:8px;padding:12px 18px;display:flex}.ai-input{border:1px solid var(--border);background:var(--bg-surface);color:var(--text-primary);border-radius:24px;outline:none;flex:1;padding:10px 16px;font-size:.88rem;transition:border-color .2s}.ai-input:focus{border-color:var(--accent-yellow)}.ai-send-btn{background:var(--accent-yellow);color:#1e293b;cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:background .2s;display:flex}.ai-send-btn:hover{background:#f59e0b}.settings-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.settings-field{flex-direction:column;gap:6px;display:flex}.settings-field label{font-size:.85rem;font-weight:600}.settings-input-group{align-items:center;gap:8px;display:flex}.settings-input{border:1px solid var(--border);background:var(--bg-card);width:100%;color:var(--text-primary);border-radius:8px;outline:none;padding:10px 14px;font-size:.9rem;transition:border-color .2s,box-shadow .2s}.settings-input:focus{border-color:var(--accent-yellow);box-shadow:0 0 0 3px #fbbf241f}.settings-unit{color:var(--text-muted);white-space:nowrap;font-size:.85rem}.settings-hint{color:var(--text-muted);font-size:.72rem;line-height:1.4}.settings-checkbox-row{flex-direction:column;gap:10px;display:flex}.settings-checkbox-label{background:var(--bg-surface);cursor:pointer;border:1px solid var(--border);border-radius:8px;align-items:center;gap:12px;padding:10px 14px;transition:background .15s;display:flex}.settings-checkbox-label:hover{background:var(--bg-card-hover)}.map-container{border:1px solid var(--border);border-radius:12px;width:100%;height:500px;position:relative;overflow:hidden}.map-sidebar{z-index:1000;background:var(--bg-card);border-radius:8px;min-width:200px;max-height:calc(100% - 24px);padding:12px;position:absolute;top:12px;left:12px;overflow-y:auto;box-shadow:0 2px 12px #00000026}.map-placeholder{background:var(--bg-surface);width:100%;height:500px;color:var(--text-muted);border:1px solid var(--border);border-radius:12px;justify-content:center;align-items:center;display:flex}.map-legend{gap:12px;padding:8px 0;display:flex}.map-legend-item{color:var(--text-muted);align-items:center;gap:4px;font-size:.72rem;display:flex}.map-legend-dot{border-radius:50%;width:10px;height:10px}.map-popup{min-width:200px}.map-popup-header{align-items:center;gap:8px;margin-bottom:8px;display:flex}.map-popup-icon{color:var(--accent-yellow)}.map-popup-location{color:var(--text-muted);margin-bottom:8px;font-size:.72rem}.map-popup-stats{gap:12px;display:flex}.map-popup-stat{text-align:center}.map-stats-mini{flex-wrap:wrap;gap:8px;display:flex}.skeleton{background:linear-gradient(90deg, var(--bg-surface) 25%, var(--bg-card-hover) 50%, var(--bg-surface) 75%);background-size:200% 100%;border-radius:4px;animation:1.5s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.empty-state{text-align:center;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:64px 24px;display:flex}.empty-icon{opacity:.3}.modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.modal-content{background:var(--bg-card);border-radius:12px;max-height:85vh;animation:.25s slideUp;overflow-y:auto;box-shadow:0 20px 60px #0000004d}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-body{padding:20px}.modal-close-btn{background:var(--bg-surface);cursor:pointer;color:var(--text-muted);border:none;border-radius:8px;justify-content:center;align-items:center;padding:6px;transition:background .15s,color .15s;display:flex}.modal-close-btn:hover{background:var(--border);color:var(--text-primary)}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.upload-modal{z-index:1000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.upload-modal-content{background:var(--bg-card);border-radius:12px;width:90%;max-width:480px;padding:24px;box-shadow:0 20px 60px #0000004d}.toast{pointer-events:auto}.toast-enter{animation:.3s toastSlideIn}@keyframes toastSlideIn{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}.theme-toggle{align-items:center;display:flex}.leaflet-container{z-index:1;font-family:inherit}.custom-marker{background:0 0!important;border:none!important}.leaflet-popup-content-wrapper{border-radius:10px!important;box-shadow:0 4px 16px #00000026!important}.leaflet-popup-content{margin:10px 14px!important;font-size:.82rem!important}.leaflet-control-zoom a{border-radius:8px!important}.text-muted{color:var(--text-muted)}.health-score-card{text-align:center;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;margin-bottom:20px;padding:24px}.card-section{flex-direction:column;gap:20px;display:flex}.card-section-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;padding:0 4px;font-size:.78rem;font-weight:600}.animated-counter{font-variant-numeric:tabular-nums;transition:all .3s}.refresh-icon{opacity:.5;animation:2s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=1200px){.plant-summary-specs{grid-template-columns:repeat(4,1fr)}.plant-summary-spec:nth-child(4){border-right:none}}@media (width<=1024px){.ref-metrics-grid{grid-template-columns:repeat(2,1fr)}.charts-grid{grid-template-columns:1fr}.live-metrics{grid-template-columns:repeat(2,1fr)}.two-col,.stations-grid,.pv-array-grid{grid-template-columns:1fr}.filter-select{min-width:200px}.station-header{flex-direction:column}.station-header-right,.weather-card{width:100%}}@media (width<=768px){.hamburger-btn{display:flex}.sidebar{transform:translate(-100%);width:var(--sidebar-width)!important}.sidebar.mobile-open{transform:translate(0)}.sidebar-overlay{display:block}.main-area{margin-left:0!important}.content{padding:16px}.header{padding:0 16px}.header-title{font-size:.9rem}.header-subtitle,.weather-badge{display:none}.plant-summary-specs{grid-template-columns:repeat(2,1fr)}.plant-summary-spec:nth-child(2n){border-right:none}.plant-summary-header{flex-direction:column;align-items:flex-start}.ref-metrics-grid,.live-metrics{grid-template-columns:1fr}.pv-array-metrics{grid-template-columns:repeat(2,1fr)}.station-header{padding:14px}.station-title-row{flex-wrap:wrap}.station-meta{flex-direction:column;align-items:flex-start}.device-grid,.alert-stats{grid-template-columns:1fr}.station-filter-bar{flex-direction:column;align-items:stretch}.inverter-ref-table thead th,.inverter-ref-table tbody td{padding:8px 10px;font-size:.72rem}}@media (width<=480px){.ref-metrics-grid{grid-template-columns:1fr}.history-summary{flex-direction:column}.header-right{gap:8px}}
