:root{--bg-primary: #121614;--bg-card: #1a201c;--bg-card-hover: #222b25;--border-color: #2d3731;--text-primary: #e2e8f0;--text-muted: #94a3b8;--accent-green: #4ade80;--accent-green-dim: #22c55e;--accent-green-glow: rgba(74, 222, 128, .15);--danger-color: #ef4444;--warning-color: #f59e0b;--wood-stove-bg: #2b1810;--wood-stove-border: #ea580c;--wood-stove-glow: rgba(234, 88, 12, .25);--wood-stove-text: #fed7aa;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-primary);color:var(--text-primary);font-family:var(--font-family);min-height:100vh;line-height:1.5;-webkit-font-smoothing:antialiased}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.app-container{max-width:1280px;margin:0 auto;padding:1rem 1.25rem 2.5rem}.header-navbar{display:flex;align-items:center;justify-content:space-between;gap:1.25rem;padding-bottom:1.25rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border-color);flex-wrap:wrap}.header-left{display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:.5rem}.brand-icon{font-size:1.5rem}.brand-title{font-size:1.35rem;font-weight:700;color:var(--text-primary);letter-spacing:-.02em}.live-status-badge{display:inline-flex;align-items:center;gap:.35rem;padding:.15rem .55rem;background:var(--accent-green-glow);border:1px solid rgba(74,222,128,.35);border-radius:9999px;margin-left:.25rem}.pulse-dot{width:7px;height:7px;border-radius:50%;background-color:var(--accent-green);box-shadow:0 0 6px var(--accent-green);animation:pulse-glow 2s infinite ease-in-out}@keyframes pulse-glow{0%{transform:scale(.9);opacity:.6}50%{transform:scale(1.2);opacity:1}to{transform:scale(.9);opacity:.6}}.live-label{font-size:.65rem;font-weight:700;letter-spacing:.08em;color:var(--accent-green)}.device-controls{display:flex;align-items:center;gap:.4rem}.device-dropdown{background-color:var(--bg-card);color:var(--text-primary);border:1px solid var(--border-color);border-radius:6px;padding:.45rem .85rem;font-size:.9rem;font-family:inherit;cursor:pointer;transition:border-color .2s,background-color .2s;outline:none}.device-dropdown:hover,.device-dropdown:focus{border-color:var(--accent-green);background-color:var(--bg-card-hover)}.favorite-device-btn{background:var(--bg-card);border:1px solid var(--border-color);border-radius:6px;padding:.4rem .55rem;font-size:.95rem;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:.5;transition:opacity .2s,border-color .2s,transform .1s,background-color .2s}.favorite-device-btn:hover{opacity:.85;border-color:var(--warning-color);transform:scale(1.05)}.favorite-device-btn.is-default{opacity:1;background-color:#f59e0b26;border-color:var(--warning-color);box-shadow:0 0 8px #f59e0b40}.header-right{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.range-pills-nav{display:flex;align-items:center;gap:.25rem;background-color:#0000004d;padding:.25rem;border:1px solid var(--border-color);border-radius:8px}.range-pill{background:transparent;border:none;color:var(--text-muted);padding:.35rem .75rem;border-radius:6px;font-size:.825rem;font-weight:500;font-family:inherit;cursor:pointer;transition:all .15s ease}.range-pill:hover{color:var(--text-primary);background:#ffffff0d}.range-pill.active{background-color:var(--accent-green);color:#0b1510;font-weight:700;box-shadow:0 2px 4px #0003}.header-actions{display:flex;align-items:center;gap:.65rem}.refresh-telemetry-btn{background:var(--bg-card);border:1px solid var(--border-color);border-radius:6px;padding:.4rem .6rem;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .2s,background-color .2s,transform .15s,opacity .2s}.refresh-telemetry-btn:hover:not(:disabled){border-color:var(--accent-green);background-color:var(--bg-card-hover)}.refresh-telemetry-btn:disabled{cursor:wait;opacity:.7}.refresh-icon{display:inline-block;line-height:1}.refresh-telemetry-btn.is-refreshing .refresh-icon{animation:spin-refresh 1s linear infinite}@keyframes spin-refresh{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.settings-trigger-btn{background:var(--bg-card);border:1px solid var(--border-color);border-radius:6px;padding:.4rem .6rem;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .2s,background-color .2s,transform .15s}.settings-trigger-btn:hover{border-color:var(--accent-green);background-color:var(--bg-card-hover);transform:rotate(20deg)}.user-profile-badge{display:flex;align-items:center;gap:.35rem;background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:6px;padding:.35rem .65rem;font-size:.8rem;color:var(--text-muted);max-width:175px}.user-email-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.signout-link{color:var(--text-muted);text-decoration:none;font-size:.825rem;padding:.4rem .75rem;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-card);transition:all .2s ease}.signout-link:hover{color:var(--danger-color);border-color:var(--danger-color);background:#ef44441a}.dashboard-content{display:flex;flex-direction:column;gap:1.5rem}.card{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:8px;padding:1.5rem;box-shadow:0 4px 6px -1px #0003,0 2px 4px -2px #0003}.weather-banner{border-radius:8px;padding:.9rem 1.25rem;transition:all .2s ease}.freeze-alert-banner{background:linear-gradient(135deg,#2e1509,#3f1d0b);border:1px solid var(--wood-stove-border);box-shadow:0 0 15px var(--wood-stove-glow);color:var(--wood-stove-text)}.freeze-banner-content{display:flex;align-items:center;gap:1rem}.freeze-icon-badge{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:8px;background:#ea580c33;border:1px solid rgba(234,88,12,.45);box-shadow:0 0 10px #ea580c59;flex-shrink:0}.wood-stove-icon{font-size:1.6rem}.freeze-message-container{display:flex;flex-direction:column;gap:.2rem;flex:1}.freeze-alert-heading{font-size:1rem;font-weight:700;color:#ffedd5;letter-spacing:-.01em;line-height:1.35}.freeze-subtext{display:flex;align-items:center;gap:.5rem;font-size:.825rem;color:#fdba74;flex-wrap:wrap}.ambient-banner{background-color:var(--bg-card);border:1px solid var(--border-color);color:var(--text-primary);padding:.75rem 1.25rem}.ambient-banner-content{display:flex;align-items:center;gap:.75rem;font-size:.875rem}.weather-icon{font-size:1.35rem;flex-shrink:0}.ambient-weather-text{color:var(--text-muted)}.ambient-weather-text strong{color:var(--text-primary)}.ambient-label{color:var(--text-primary);font-weight:600}.bullet-sep{color:var(--text-muted);opacity:.5;margin:0 .15rem}.weather-banner.loading,.weather-banner.fallback{font-style:italic;color:var(--text-muted)}.dashboard-notice-banner{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-radius:6px;font-size:.85rem}.warning-notice{background:#f59e0b1a;border:1px solid rgba(245,158,11,.3);color:#fbbf24}.notice-icon{font-size:1.15rem}.kpi-section{display:flex;flex-direction:column;gap:.85rem}.section-header{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:.5rem}.section-title{font-size:1.15rem;font-weight:700;color:var(--text-primary);letter-spacing:-.01em}.section-subtitle{font-size:.85rem;color:var(--text-muted)}.loading-tag{margin-left:.5rem;font-size:.75rem;color:var(--accent-green);font-weight:600}.kpi-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1rem}.kpi-card{display:flex;flex-direction:column;justify-content:space-between;padding:1.15rem 1.25rem;border-radius:8px;background-color:var(--bg-card);border:1px solid var(--border-color);min-height:165px;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}.kpi-card:hover{border-color:#4ade8059;transform:translateY(-2px);box-shadow:0 6px 12px -2px #00000059}.kpi-header{display:flex;align-items:center;gap:.45rem;margin-bottom:.5rem}.kpi-icon{font-size:1.15rem}.kpi-title{font-size:.775rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;flex:1}.kpi-badge{font-size:.68rem;font-weight:600;padding:.15rem .45rem;border-radius:9999px;white-space:nowrap}.badge-success{background:#22c55e26;color:#4ade80;border:1px solid rgba(74,222,128,.3)}.badge-warning{background:#f59e0b26;color:#fbbf24;border:1px solid rgba(245,158,11,.3)}.badge-danger{background:#ef444426;color:#f87171;border:1px solid rgba(239,68,68,.3)}.badge-info{background:#3b82f626;color:#60a5fa;border:1px solid rgba(59,130,246,.3)}.badge-solar{background:#fbbf2426;color:#fde047;border:1px solid rgba(251,191,36,.35)}.badge-neutral{background:#94a3b81a;color:#94a3b8;border:1px solid rgba(148,163,184,.2)}.trend-badge{display:inline-flex;align-items:center;gap:.25rem}.trend-rising{background:#3b82f626;color:#60a5fa;border:1px solid rgba(59,130,246,.3)}.trend-falling{background:#f59e0b26;color:#fbbf24;border:1px solid rgba(245,158,11,.3)}.trend-steady{background:#94a3b81a;color:#cbd5e1;border:1px solid rgba(148,163,184,.2)}.trend-arrow{font-weight:700;font-size:.8rem}.kpi-main-val{display:flex;align-items:baseline;margin:.35rem 0 .65rem}.val-number{font-size:1.95rem;font-weight:700;color:var(--text-primary);letter-spacing:-.02em;line-height:1}.val-unit{font-size:.95rem;font-weight:500;color:var(--text-muted);margin-left:.3rem}.val-placeholder{font-size:1.75rem;font-weight:600;color:var(--text-muted);opacity:.4}.kpi-secondary-info{border-top:1px solid rgba(255,255,255,.05);padding-top:.5rem;font-size:.775rem;color:var(--text-muted)}.envelope-stat{display:flex;justify-content:space-between;align-items:center}.stat-label{color:var(--text-muted)}.stat-value{color:var(--text-primary);font-weight:600}.power-stats-container{display:flex;flex-direction:column;gap:.25rem}.power-row{display:flex;justify-content:space-between;align-items:center}.ups-pill{display:inline-block;background:#4ade8026;color:var(--accent-green);border:1px solid rgba(74,222,128,.3);border-radius:4px;padding:.05rem .35rem;font-size:.7rem;font-weight:600}.battery-pill{display:inline-block;background:#f59e0b26;color:#fbbf24;border:1px solid rgba(245,158,11,.3);border-radius:4px;padding:.05rem .35rem;font-size:.7rem;font-weight:600}.soil-channels-list{display:flex;flex-direction:column;gap:.5rem;margin-top:.2rem}.soil-channel-row{display:flex;flex-direction:column;gap:.2rem}.soil-channel-labels{display:flex;justify-content:space-between;font-size:.75rem}.channel-name{color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:140px}.channel-pct{color:var(--text-primary);font-weight:600}.soil-bar-track{height:7px;background:#ffffff14;border-radius:9999px;position:relative;overflow:hidden}.soil-bar-fill{height:100%;background:linear-gradient(90deg,#10b981,#38bdf8);border-radius:9999px;transition:width .3s ease}.soil-baseline-marker{position:absolute;top:0;bottom:0;width:2px;background:#f59e0b;box-shadow:0 0 4px #f59e0b;z-index:2}.charts-suite-section{margin-top:2rem}.charts-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem;flex-wrap:wrap;gap:1rem}.toolbar-left{display:flex;align-items:baseline;gap:.75rem;flex-wrap:wrap}.charts-suite-title{font-size:1.25rem;font-weight:700;color:var(--text-primary);letter-spacing:-.01em}.charts-count-badge{font-size:.75rem;color:var(--text-muted);background:#ffffff0d;padding:.2rem .6rem;border-radius:9999px;border:1px solid var(--border-color)}.charts-tab-nav{display:inline-flex;align-items:center;background:#00000040;padding:.25rem;border-radius:8px;border:1px solid var(--border-color);gap:.25rem;overflow-x:auto;max-width:100%}.chart-tab-btn{display:inline-flex;align-items:center;gap:.35rem;background:transparent;border:none;color:var(--text-muted);padding:.4rem .75rem;border-radius:6px;font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s;white-space:nowrap}.chart-tab-btn:hover{color:var(--text-primary);background:#ffffff0d}.chart-tab-btn.active{background:var(--bg-card);font-weight:600;box-shadow:0 1px 3px #0000004d;border:1px solid rgba(74,222,128,.35);color:var(--accent-green)}.chart-tab-btn .tab-icon{font-size:.85rem}.charts-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.25rem}.charts-single{display:flex;flex-direction:column;gap:1.25rem}.chart-card{display:flex;flex-direction:column;padding:1.25rem;overflow:hidden;min-width:0}.chart-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.chart-title-group{display:flex;align-items:flex-start;gap:.6rem}.chart-icon{font-size:1.25rem;line-height:1.2}.chart-card-title{font-size:1rem;font-weight:600;color:var(--text-primary);margin:0;line-height:1.2}.chart-card-subtitle{font-size:.78rem;color:var(--text-muted);margin-top:.25rem;line-height:1.35}.chart-card-actions{display:flex;align-items:center;gap:.5rem}.filter-lux-pill{display:inline-flex;align-items:center;gap:.35rem;background:#0000004d;border:1px solid var(--border-color);color:var(--text-muted);font-size:.72rem;padding:.25rem .65rem;border-radius:9999px;cursor:pointer;transition:all .2s;font-family:inherit}.filter-lux-pill:hover{border-color:#eab308;color:var(--text-primary)}.filter-lux-pill.active{border-color:#eab308;background:#eab3081f;color:#fde047}.filter-pill-dot{width:6px;height:6px;border-radius:50%;background:#64748b;display:inline-block}.filter-lux-pill.active .filter-pill-dot{background:#eab308;box-shadow:0 0 6px #eab308}.chart-canvas-container{position:relative;width:100%;height:310px;min-height:280px;max-height:350px}.charts-single .chart-canvas-container{height:380px;max-height:440px}.charts-empty-state{text-align:center;padding:3rem 1.5rem;display:flex;flex-direction:column;align-items:center;justify-content:center}.empty-state-icon{font-size:2.5rem;margin-bottom:.75rem;opacity:.8}.empty-state-title{font-size:1.15rem;color:var(--text-primary);margin-bottom:.5rem}.empty-state-text{font-size:.85rem;color:var(--text-muted);max-width:420px;line-height:1.5}@media (max-width: 1024px){.charts-grid{grid-template-columns:1fr}}@media (max-width: 1120px) and (min-width: 681px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.kpi-soil{grid-column:span 2}}@media (max-width: 680px){.kpi-grid{grid-template-columns:1fr}.kpi-soil{grid-column:span 1}.charts-toolbar{flex-direction:column;align-items:stretch;gap:.75rem}.chart-canvas-container{height:280px}.charts-single .chart-canvas-container{height:320px}.chart-card-header{flex-direction:column;align-items:flex-start;gap:.6rem}.chart-card-actions{width:100%;justify-content:flex-end}}@media (max-width: 900px){.header-navbar{flex-direction:column;align-items:stretch;gap:1rem}.header-left,.header-right{justify-content:space-between;width:100%}}@media (max-width: 580px){.header-left{flex-direction:column;align-items:flex-start;gap:.75rem}.device-controls{width:100%}.device-dropdown{flex:1}.header-right{flex-direction:column;align-items:stretch;gap:.75rem}.range-pills-nav{justify-content:space-between;width:100%}.range-pill{padding:.35rem .5rem;font-size:.75rem}.header-actions{justify-content:flex-end}.freeze-banner-content{flex-direction:column;align-items:flex-start;gap:.75rem}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background-color:#000000b3;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:1rem;animation:modalFadeIn .15s ease-out}.modal-dialog{background:var(--bg-card);border:1px solid var(--border-color);border-radius:12px;width:100%;max-width:580px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 20px 25px -5px #0009,0 8px 10px -6px #00000080,0 0 0 1px #4ade8026;animation:modalSlideUp .2s ease-out;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.15rem 1.5rem;border-bottom:1px solid var(--border-color);background:#1a201cfa}.modal-title-wrap{display:flex;align-items:center;gap:.6rem}.modal-icon{font-size:1.25rem;line-height:1}.modal-title{font-size:1.15rem;font-weight:700;color:var(--text-primary);letter-spacing:-.01em}.modal-close-btn{background:transparent;border:none;font-size:1.6rem;line-height:1;color:var(--text-muted);cursor:pointer;padding:.2rem .5rem;border-radius:6px;transition:all .15s ease}.modal-close-btn:hover{color:var(--text-primary);background:#ffffff14}.modal-form{display:flex;flex-direction:column;overflow:hidden;max-height:calc(90vh - 65px)}.modal-body{padding:1.25rem 1.5rem;overflow-y:auto;display:flex;flex-direction:column;gap:1.5rem}.settings-section{display:flex;flex-direction:column;gap:.75rem;padding-bottom:1.25rem;border-bottom:1px solid rgba(45,55,49,.6)}.settings-section:last-child{border-bottom:none;padding-bottom:.25rem}.section-title-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.settings-section-title{font-size:.95rem;font-weight:600;color:var(--text-primary);display:flex;align-items:center;gap:.4rem}.settings-section-desc{font-size:.825rem;color:var(--text-muted);line-height:1.45}.btn-text-action{background:none;border:none;color:var(--accent-green);font-size:.8rem;font-weight:500;cursor:pointer;text-decoration:underline;text-underline-offset:3px;padding:.2rem .35rem;border-radius:4px;transition:color .15s}.btn-text-action:hover{color:#86efac}.form-group-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}.form-group{display:flex;flex-direction:column;gap:.35rem}.form-label{font-size:.775rem;font-weight:500;color:var(--text-muted)}.form-input{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:6px;padding:.5rem .65rem;color:var(--text-primary);font-size:.85rem;font-family:inherit;transition:border-color .15s,box-shadow .15s}.form-input:focus{outline:none;border-color:var(--accent-green);box-shadow:0 0 0 2px var(--accent-green-glow)}.baseline-status-box{background:#121614b3;border:1px solid var(--border-color);border-radius:8px;padding:.95rem 1rem;display:flex;flex-direction:column;gap:.85rem}.baseline-info{display:flex;flex-direction:column;gap:.4rem}.baseline-tag{display:inline-flex;align-items:center;gap:.4rem;font-size:.75rem;font-weight:600;padding:.2rem .55rem;border-radius:4px;width:fit-content}.baseline-tag.active{background:var(--accent-green-glow);border:1px solid rgba(74,222,128,.3);color:var(--accent-green)}.baseline-tag.muted{background:#94a3b81a;border:1px solid rgba(148,163,184,.2);color:var(--text-muted)}.dot-indicator{width:6px;height:6px;border-radius:50%;display:inline-block}.dot-indicator.green{background-color:var(--accent-green);box-shadow:0 0 6px var(--accent-green)}.baseline-values{display:flex;flex-wrap:wrap;gap:1.15rem;font-size:.85rem;color:var(--text-primary);padding:.2rem 0}.baseline-val-item strong{color:var(--text-muted);font-weight:500;margin-right:.25rem}.baseline-timestamp{font-size:.75rem;color:var(--text-muted)}.baseline-empty-text{font-size:.825rem;color:var(--text-muted);line-height:1.4}.baseline-actions{display:flex;gap:.65rem;flex-wrap:wrap;align-items:center}.baseline-hint{font-size:.75rem;color:var(--text-muted);font-style:italic}.filter-checkbox-row{padding:.25rem 0}.toggle-switch-label{display:flex;align-items:flex-start;gap:.85rem;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-switch{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0;margin-top:.1rem}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#2d3731;border-radius:24px;transition:.2s ease;border:1px solid rgba(255,255,255,.05)}.toggle-slider:before{position:absolute;content:"";height:18px;width:18px;left:2px;bottom:2px;background-color:var(--text-primary);border-radius:50%;transition:.2s ease;box-shadow:0 1px 3px #0006}.toggle-switch input:checked+.toggle-slider{background-color:var(--accent-green-dim);border-color:var(--accent-green)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(20px);background-color:#0f172a}.toggle-switch input:focus-visible+.toggle-slider{box-shadow:0 0 0 2px var(--accent-green-glow)}.toggle-text-wrap{display:flex;flex-direction:column;gap:.2rem}.toggle-title{font-size:.875rem;font-weight:500;color:var(--text-primary)}.toggle-desc{font-size:.8rem;color:var(--text-muted);line-height:1.35}.btn-secondary{background:#252e28;color:var(--text-primary);border:1px solid var(--border-color);padding:.45rem .85rem;border-radius:6px;font-size:.825rem;font-weight:500;cursor:pointer;transition:all .15s ease;font-family:inherit}.btn-secondary:hover:not(:disabled){background:#2e3a32;border-color:#4ade804d}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.btn-capture{display:inline-flex;align-items:center;gap:.45rem}.btn-danger-outline{background:transparent;color:var(--danger-color);border:1px solid rgba(239,68,68,.4);padding:.45rem .85rem;border-radius:6px;font-size:.825rem;font-weight:500;cursor:pointer;transition:all .15s ease;font-family:inherit}.btn-danger-outline:hover{background:#ef44441f;border-color:var(--danger-color)}.btn-primary{background:var(--accent-green);color:#0f172a;border:1px solid var(--accent-green-dim);padding:.5rem 1.15rem;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .15s ease,transform .05s ease;font-family:inherit}.btn-primary:hover{background:#86efac}.btn-primary:active{transform:scale(.98)}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--border-color);background:#1a201cfa}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalSlideUp{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 580px){.form-group-grid{grid-template-columns:1fr}.modal-dialog{max-height:94vh}.modal-body{padding:1rem;gap:1.25rem}.modal-header,.modal-footer{padding:.875rem 1rem}.baseline-actions{flex-direction:column;align-items:stretch}.btn-capture,.btn-danger-outline{width:100%;justify-content:center}}.login-portal-backdrop{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 20%,#152e22,#0a1118 80%);padding:1.5rem;box-sizing:border-box}.login-portal-card{width:100%;max-width:440px;background:#121a24eb;border:1px solid rgba(74,222,128,.2);border-radius:14px;box-shadow:0 20px 50px #0009,0 0 20px #4ade801a;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:2.25rem 2rem;display:flex;flex-direction:column;align-items:center;text-align:center;box-sizing:border-box}.login-portal-brand{display:flex;flex-direction:column;align-items:center;margin-bottom:1.25rem}.login-portal-leaf{font-size:2.5rem;margin-bottom:.25rem;filter:drop-shadow(0 2px 8px rgba(74,222,128,.4))}.login-portal-title{font-size:1.75rem;font-weight:800;color:#f8fafc;margin:0;letter-spacing:-.02em}.login-portal-subtitle{font-size:.85rem;color:#4ade80;font-weight:600;text-transform:uppercase;letter-spacing:.08em;margin:.25rem 0 0}.login-portal-desc{font-size:.92rem;color:#94a3b8;line-height:1.5;margin:0 0 1.75rem}.login-buttons-group{width:100%;display:flex;flex-direction:column;gap:.85rem;margin-bottom:1.5rem}.oauth-button{display:flex;align-items:center;justify-content:center;gap:.85rem;width:100%;padding:.8rem 1.25rem;border-radius:8px;font-size:.95rem;font-weight:600;text-decoration:none;cursor:pointer;transition:all .2s cubic-bezier(.16,1,.3,1);box-sizing:border-box}.oauth-button:hover{transform:translateY(-2px)}.oauth-icon{flex-shrink:0}.oauth-microsoft{background:#fff;color:#1e293b;border:1px solid #cbd5e1;box-shadow:0 2px 6px #00000026}.oauth-microsoft:hover{background:#f8fafc;box-shadow:0 4px 12px #00000040}.oauth-google{background:#fff;color:#1e293b;border:1px solid #cbd5e1;box-shadow:0 2px 6px #00000026}.oauth-google:hover{background:#f8fafc;box-shadow:0 4px 12px #00000040}.oauth-apple{background:#000;color:#fff;border:1px solid #334155;box-shadow:0 2px 6px #0000004d}.oauth-apple:hover{background:#18181b;box-shadow:0 4px 14px #00000080}.login-portal-footer{font-size:.78rem;color:#64748b}.access-denied-card{border-color:#ef44444d;box-shadow:0 20px 50px #000000b3,0 0 20px #ef444426}.access-denied-info{margin-bottom:1.5rem}.user-email-badge{display:inline-block;background:#ef444426;border:1px solid rgba(239,68,68,.4);color:#f87171;padding:.4rem .85rem;border-radius:6px;font-size:.92rem;margin:.5rem 0 1rem;word-break:break-all}.access-denied-desc{font-size:.88rem;color:#cbd5e1;line-height:1.4;margin:0 0 .5rem}.access-denied-server-msg{background:#0f172a99;border:1px dashed rgba(148,163,184,.3);padding:.5rem .75rem;border-radius:6px;color:#fbbf24;margin-top:.75rem;text-align:left}.manage-devices-btn{background:var(--bg-card);border:1px solid var(--border-color);color:var(--accent-green);width:36px;height:36px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:.95rem;cursor:pointer;transition:all .2s ease}.manage-devices-btn:hover{background:#22c55e1f;border-color:var(--accent-green);transform:translateY(-1px)}.settings-tabs-nav{display:flex;background:#0f172a99;border-bottom:1px solid var(--border-color);padding:0 1.25rem;gap:.5rem}.settings-tab-btn{background:transparent;border:none;border-bottom:2px solid transparent;color:var(--text-secondary);padding:.75rem 1rem;font-size:.92rem;font-weight:600;cursor:pointer;transition:all .2s ease}.settings-tab-btn:hover{color:var(--text-primary)}.settings-tab-btn.active{color:var(--accent-green);border-bottom-color:var(--accent-green)}.device-save-banner{padding:.75rem 1rem;border-radius:6px;font-size:.9rem;margin-bottom:1.25rem}.device-save-banner.success{background:#22c55e26;border:1px solid rgba(34,197,94,.4);color:#4ade80}.device-save-banner.error{background:#ef444426;border:1px solid rgba(239,68,68,.4);color:#f87171}.devices-cards-list{display:flex;flex-direction:column;gap:.85rem;margin-top:.75rem}.device-card-item{background:#1e293b80;border:1px solid var(--border-color);border-radius:8px;padding:1rem;display:flex;flex-direction:column;gap:.5rem;transition:border-color .2s}.device-card-item.active-device{border-color:#22c55e80;background:#22c55e0d}.device-card-header{display:flex;justify-content:space-between;align-items:flex-start}.device-card-name{font-size:1rem;color:var(--text-primary);margin-right:.5rem}.device-card-id{font-size:.82rem;background:#0000004d;padding:2px 6px;border-radius:4px;color:#94a3b8}.device-badges-wrap{display:flex;gap:.4rem}.badge-device{font-size:.72rem;font-weight:700;padding:2px 8px;border-radius:4px;text-transform:uppercase}.badge-device.active{background:#22c55e33;color:#4ade80;border:1px solid rgba(34,197,94,.4)}.badge-device.default{background:#eab30833;color:#facc15;border:1px solid rgba(234,179,8,.4)}.device-card-details{font-size:.85rem;color:var(--text-secondary);display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.device-card-actions{display:flex;gap:.5rem;margin-top:.25rem}.btn-sm{padding:.35rem .65rem;font-size:.8rem}.add-device-section{margin-top:1.5rem;border-top:1px dashed var(--border-color);padding-top:1.5rem}.form-grid-2col{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 600px){.form-grid-2col{grid-template-columns:1fr}}.required-star{color:#f87171}.zip-validation-msg{font-size:.8rem;margin-top:.35rem}.zip-validation-msg.valid{color:#4ade80}.zip-validation-msg.invalid{color:#f87171}.form-actions-right{display:flex;justify-content:flex-end;margin-top:1rem}.daylight-row{margin-top:.25rem;color:#fbbf24;font-size:.82rem}.user-profile-badge{max-width:280px}.role-pill{display:inline-flex;align-items:center;padding:.1rem .45rem;border-radius:9999px;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.role-pill.role-admin{background:#4ade802e;color:#4ade80;border:1px solid rgba(74,222,128,.4)}.role-pill.role-power_user{background:#3b82f62e;color:#60a5fa;border:1px solid rgba(59,130,246,.4)}.role-pill.role-basic_user{background:#94a3b826;color:#cbd5e1;border:1px solid rgba(148,163,184,.3)}.banner-row-spread{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.wifi-grid-list{display:flex;flex-direction:column;gap:.65rem;margin:.75rem 0 1.25rem}.wifi-card-item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;background:#1e293b73;border:1px solid var(--border-color);border-radius:8px;flex-wrap:wrap}.wifi-card-info{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.wifi-masked-pass{font-size:.78rem;color:var(--text-muted)}.wifi-card-actions{display:flex;align-items:center;gap:.45rem}.wifi-inline-form{margin-top:.75rem;padding-top:.75rem;border-top:1px dashed rgba(255,255,255,.08)}.btn-download-json{background:#3b82f62e;color:#93c5fd;border:1px solid rgba(59,130,246,.45);padding:.4rem .8rem;border-radius:6px;font-size:.8rem;font-weight:600;cursor:pointer;transition:all .15s ease;font-family:inherit}.btn-download-json:hover{background:#3b82f64d;border-color:#60a5fa;color:#fff}.credentials-reminder-banner{background:#f59e0b1f;border:1px solid rgba(245,158,11,.4);color:#fde68a;padding:.8rem 1rem;border-radius:8px;font-size:.82rem;line-height:1.45;margin:.65rem 0 1.15rem}.credentials-reminder-banner code{background:#00000059;padding:1px 5px;border-radius:4px;color:#fef08a}.users-cards-list{display:flex;flex-direction:column;gap:.75rem;margin-top:.75rem}.user-card-item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.85rem 1rem;background:#1e293b80;border:1px solid var(--border-color);border-radius:8px;flex-wrap:wrap}.user-card-main{display:flex;flex-direction:column;gap:.35rem}.user-card-identity{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.user-card-actions{display:flex;align-items:center;gap:.45rem}.login-password-form{width:100%;display:flex;flex-direction:column;gap:.9rem;text-align:left;margin-bottom:1.1rem}.login-input-group{display:flex;flex-direction:column;gap:.35rem}.login-input-group label{font-size:.8rem;font-weight:600;color:#cbd5e1}.login-submit-btn{width:100%;padding:.72rem 1rem;font-size:.95rem;margin-top:.25rem}.login-error-alert{width:100%;background:#ef444429;border:1px solid rgba(239,68,68,.45);color:#fca5a5;padding:.65rem .85rem;border-radius:8px;font-size:.84rem;margin-bottom:1rem;text-align:left}.login-divider{width:100%;display:flex;align-items:center;gap:.75rem;color:#64748b;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;margin:.2rem 0 1rem}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:#94a3b833}.charts-controls-cluster{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap}.chart-scale-pill-group{display:inline-flex;align-items:center;background:#121614d9;border:1px solid var(--border-color);border-radius:8px;padding:.2rem .3rem;gap:.2rem}.scale-group-label{font-size:.72rem;font-weight:600;color:var(--text-muted);padding:0 .35rem;text-transform:uppercase;letter-spacing:.03em}.scale-mode-btn{background:transparent;border:none;color:var(--text-muted);font-size:.76rem;font-weight:600;padding:.3rem .55rem;border-radius:5px;cursor:pointer;transition:all .15s ease;font-family:inherit}.scale-mode-btn:hover{color:var(--text-primary);background:#ffffff0a}.scale-mode-btn.active{background:#4ade802e;color:#4ade80;border:1px solid rgba(74,222,128,.35)}.chart-custom-bounds-bar{display:inline-flex;align-items:center;gap:.6rem;flex-wrap:wrap;background:#0f172a8c;border:1px solid rgba(148,163,184,.25);border-radius:6px;padding:.25rem .55rem;font-size:.75rem;color:#cbd5e1}.chart-custom-bounds-bar label{display:inline-flex;align-items:center;gap:.25rem;font-weight:600}.bound-mini-input{width:58px;background:#0f172a;border:1px solid var(--border-color);border-radius:4px;color:#f8fafc;font-size:.75rem;padding:.15rem .3rem;font-family:inherit}.chart-card-actions-wrap{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap}.badge-device.fw-badge{background:#3b82f629;color:#93c5fd;border:1px solid rgba(59,130,246,.38);text-transform:none}.badge-device.sas-ok{background:#22c55e24;color:#86efac;border:1px solid rgba(34,197,94,.35);text-transform:none}.badge-device.sas-warning{background:#f59e0b38;color:#fde047;border:1px solid rgba(245,158,11,.55);text-transform:none}.sas-expiry-banner{border-color:#f59e0b8c;background:#f59e0b24}.ota-events-list{display:flex;flex-direction:column;gap:.6rem;margin-top:.75rem}.ota-event-row{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:.75rem .95rem;background:#0f172a8c;border:1px solid var(--border-color);border-radius:8px;flex-wrap:wrap}.ota-event-main{display:flex;flex-direction:column;gap:.3rem}.ota-event-header{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-size:.88rem}.ota-event-details{font-size:.8rem;color:#cbd5e1}.ota-event-meta{display:flex;flex-direction:column;align-items:flex-end;font-size:.75rem;color:var(--text-muted);gap:.15rem}.ota-status-pill{font-size:.72rem;font-weight:700;padding:2px 7px;border-radius:9999px}.ota-status-queued,.ota-status-delivered{background:#eab3082e;color:#facc15;border:1px solid rgba(234,179,8,.4)}.ota-status-succeeded{background:#22c55e2e;color:#4ade80;border:1px solid rgba(34,197,94,.4)}.ota-status-rolled_back,.ota-status-failed{background:#ef44442e;color:#f87171;border:1px solid rgba(239,68,68,.45)}
