:root{--clr-bg: #0d1117;--clr-surface: #161b22;--clr-surface-alt: #1c2129;--clr-surface-hover: #21262d;--clr-border: #30363d;--clr-border-subtle: #21262d;--clr-text: #e6edf3;--clr-text-secondary:#b1bac4;--clr-muted: #8b949e;--clr-primary: #58a6ff;--clr-primary-hover: #79c0ff;--clr-primary-muted: rgba(88, 166, 255, .15);--clr-primary-glow: rgba(88, 166, 255, .3);--clr-success: #3fb950;--clr-success-muted: rgba(63, 185, 80, .15);--clr-warning: #d29922;--clr-warning-muted: rgba(210, 153, 34, .15);--clr-danger: #f85149;--clr-danger-muted: rgba(248, 81, 73, .15);--clr-info: #58a6ff;--clr-consumption: #f85149;--clr-consumption-muted: rgba(248, 81, 73, .12);--clr-production: #3fb950;--clr-production-muted: rgba(63, 185, 80, .12);--clr-export: #58a6ff;--clr-export-muted: rgba(88, 166, 255, .12);--clr-self: #bc8cff;--clr-self-muted: rgba(188, 140, 255, .12);--clr-gas: #d29922;--clr-gas-muted: rgba(210, 153, 34, .12);--clr-overlay: rgba(22, 27, 34, .82);--clr-overlay-border: rgba(255, 255, 255, .08);--clr-scene-shell-stroke: rgba(255, 255, 255, .06);--input-color-scheme: dark;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Fira Code", Menlo, Consolas, monospace;--text-xs: .6875rem;--text-sm: .8125rem;--text-base: .875rem;--text-lg: 1rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 2rem;--text-4xl: 2.5rem;--lh-tight: 1.15;--lh-normal: 1.5;--lh-relaxed: 1.75;--sp-0: 0;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.25rem;--sp-6: 1.5rem;--sp-8: 2rem;--sp-10: 2.5rem;--sp-12: 3rem;--sp-16: 4rem;--radius-xs: 4px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--radius-full: 9999px;--shadow-xs: 0 1px 0 rgba(0, 0, 0, .3);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3), 0 1px 2px rgba(0, 0, 0, .2);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .3), 0 2px 4px -2px rgba(0, 0, 0, .2);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .35), 0 4px 6px -4px rgba(0, 0, 0, .2);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .4), 0 8px 10px -6px rgba(0, 0, 0, .2);--shadow-glow: 0 0 20px rgba(88, 166, 255, .15);--ease: cubic-bezier(.4, 0, .2, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--duration: .15s;--duration-md: .25s;--duration-lg: .4s}:root[data-theme=light]{--clr-bg: #f4f7fb;--clr-surface: #ffffff;--clr-surface-alt: #f7fafd;--clr-surface-hover: #eef3f9;--clr-border: #d7e0ea;--clr-border-subtle: #e8eef5;--clr-text: #142132;--clr-text-secondary:#304156;--clr-muted: #6b7787;--clr-primary: #2563eb;--clr-primary-hover: #1d4ed8;--clr-primary-muted: rgba(37, 99, 235, .12);--clr-primary-glow: rgba(37, 99, 235, .18);--clr-success: #2f9e44;--clr-success-muted: rgba(47, 158, 68, .14);--clr-warning: #c47d19;--clr-warning-muted: rgba(196, 125, 25, .14);--clr-danger: #dc4c3f;--clr-danger-muted: rgba(220, 76, 63, .14);--clr-info: #2563eb;--clr-consumption: #dc4c3f;--clr-consumption-muted: rgba(220, 76, 63, .12);--clr-production: #2f9e44;--clr-production-muted: rgba(47, 158, 68, .12);--clr-export: #1d6fd6;--clr-export-muted: rgba(29, 111, 214, .12);--clr-self: #7c4dff;--clr-self-muted: rgba(124, 77, 255, .12);--clr-gas: #b7791f;--clr-gas-muted: rgba(183, 121, 31, .12);--clr-overlay: rgba(255, 255, 255, .88);--clr-overlay-border: rgba(37, 99, 235, .12);--clr-scene-shell-stroke: rgba(37, 99, 235, .08);--input-color-scheme: light;--shadow-xs: 0 1px 0 rgba(15, 23, 42, .04);--shadow-sm: 0 6px 14px rgba(15, 23, 42, .06);--shadow-md: 0 12px 24px rgba(15, 23, 42, .08);--shadow-lg: 0 20px 38px rgba(15, 23, 42, .1);--shadow-xl: 0 28px 54px rgba(15, 23, 42, .12);--shadow-glow: 0 0 18px rgba(37, 99, 235, .14)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--lh-normal);color:var(--clr-text);background:var(--clr-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{height:100%}a{color:var(--clr-primary);text-decoration:none}a:hover{text-decoration:underline}.app-shell{display:flex;flex-direction:column;height:100%;overflow:hidden}.main-content{flex:1 1 auto;overflow-y:auto;padding:var(--sp-6) var(--sp-8);position:relative;max-width:1400px;margin:0 auto;width:100%}.section-header{margin-bottom:var(--sp-8);padding-bottom:var(--sp-4);border-bottom:1px solid var(--clr-border-subtle)}.section-header h2{font-size:var(--text-2xl);font-weight:700;letter-spacing:-.02em;margin-bottom:var(--sp-2);color:var(--clr-text)}.section-header .muted{font-size:var(--text-sm);color:var(--clr-muted)}.section-header .badge{display:inline-flex;align-items:center;padding:var(--sp-1) var(--sp-3);font-size:var(--text-xs);font-weight:600;border-radius:var(--radius-full);background:var(--clr-primary-muted);color:var(--clr-primary);margin-right:var(--sp-3)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--sp-4);margin-bottom:var(--sp-6)}.cards-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--sp-4);margin-bottom:var(--sp-6)}.flow-metrics-row{display:flex;gap:var(--sp-4);margin-bottom:var(--sp-6);align-items:flex-start}.flow-metrics-row .flow-card{flex:1;min-width:0}.flow-metrics-row .metrics-card{flex:0 0 280px;min-width:240px}.key-metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--sp-4)}.range-selector{display:flex;gap:var(--sp-1);margin-bottom:var(--sp-4);background:var(--clr-surface);padding:var(--sp-1);border-radius:var(--radius-lg);border:1px solid var(--clr-border);width:fit-content}.range-info-bar{font-size:var(--text-sm);color:var(--clr-muted);margin-bottom:var(--sp-6);display:flex;align-items:center;gap:var(--sp-2);font-weight:500;animation:fade-in .3s var(--ease)}.hidden{display:none!important}@keyframes fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.custom-range-picker{display:flex;align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-6);flex-wrap:wrap}.custom-range-picker label{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-sm);font-weight:500;color:var(--clr-muted)}.custom-range-picker input[type=date]{padding:var(--sp-2) var(--sp-3);background:var(--clr-bg);color:var(--clr-text);border:1px solid var(--clr-border);border-radius:var(--radius-sm);font-family:var(--font-sans);font-size:var(--text-sm);color-scheme:var(--input-color-scheme);transition:border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.custom-range-picker input[type=date]:focus{outline:none;border-color:var(--clr-primary);box-shadow:0 0 0 3px var(--clr-primary-muted)}.period-preview{padding:var(--sp-3) var(--sp-4);background:var(--clr-surface-alt);border:1px solid var(--clr-border);border-radius:var(--radius-md)}.period-preview-label{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--clr-text-secondary)}.period-preview input[type=date][readonly]{background:var(--clr-surface);color:var(--clr-text);opacity:1;cursor:default}.chart-section{margin-top:var(--sp-6)}.chart-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-2)}.chart-header .card-title{margin-bottom:0}.chart-unit-toggle{display:flex;gap:2px;background:var(--clr-bg);padding:2px;border-radius:var(--radius-sm);border:1px solid var(--clr-border)}.unit-btn{padding:var(--sp-1) var(--sp-3);font-size:var(--text-xs);font-weight:600;color:var(--clr-muted);background:transparent;border:none;border-radius:calc(var(--radius-sm) - 2px);cursor:pointer;transition:all var(--duration-md) var(--ease);min-width:48px}.unit-btn:hover{color:var(--clr-text)}.unit-btn.active{background:var(--clr-primary);color:#fff;box-shadow:var(--shadow-sm)}.reset-zoom-btn{padding:var(--sp-1) var(--sp-3);font-size:var(--text-xs);font-weight:600;color:#d29922;background:#d299221f;border:1px solid rgba(210,153,34,.3);border-radius:calc(var(--radius-sm) - 2px);cursor:pointer;transition:all var(--duration-md) var(--ease);margin-left:var(--sp-2)}.reset-zoom-btn:hover{background:#d2992240;color:#e6a700}.chart-hint{opacity:.5;transition:opacity .3s}.chart-container:hover+.chart-hint{opacity:.8}.chart-container{position:relative;width:100%;height:320px;padding:var(--sp-4)}.chart-container canvas{width:100%!important;height:100%!important}.leneda-elite-flow{position:relative;width:100%;padding:var(--sp-8);background:radial-gradient(circle at top,rgba(88,166,255,.08),transparent 40%),linear-gradient(180deg,#ffffff08,#ffffff03),var(--clr-bg);border-radius:var(--radius-xl);border:1px solid rgba(255,255,255,.06);overflow:hidden;animation:scene-entrance .8s var(--ease-out)}.leneda-elite-flow:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 20% 80%,rgba(248,81,73,.08),transparent 28%),radial-gradient(circle at 80% 24%,rgba(63,185,80,.08),transparent 28%);pointer-events:none}.elite-header{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-6);margin-bottom:var(--sp-10);position:relative;z-index:1}.glass-module{position:relative;display:flex;align-items:center;justify-content:space-between;padding:var(--sp-6);background:#ffffff09;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid rgba(255,255,255,.09);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);overflow:hidden;transition:transform .3s var(--ease-spring),border-color .3s var(--ease)}.glass-module:hover{transform:translateY(-4px);border-color:#fff3}.module-info{position:relative;z-index:2}.module-label{display:block;font-size:var(--text-xs);font-weight:600;color:var(--clr-text-secondary);text-transform:uppercase;letter-spacing:.12em;margin-bottom:var(--sp-2)}.module-value-row{display:flex;align-items:baseline;gap:var(--sp-2)}.module-value{font-size:var(--text-4xl);font-weight:900;letter-spacing:-.04em;line-height:1}.module-unit{font-size:var(--text-sm);font-weight:500;color:var(--clr-muted)}.module-visual{position:absolute;right:-20px;bottom:-20px;width:120px;height:120px;opacity:.15}.wave-bg{width:100%;height:100%;border-radius:40%;animation:wave-rotate 8s linear infinite}.wave-bg.red{background:var(--clr-consumption)}.wave-bg.green{background:var(--clr-production)}.consumption-module{box-shadow:0 18px 40px #f8514914}.production-module{box-shadow:0 18px 40px #3fb95014}@keyframes wave-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.elite-scene{position:relative;width:100%;height:420px;z-index:1}.elite-main-svg{width:100%;height:100%}.scene-node-kicker{fill:var(--clr-muted);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.scene-node-value{fill:var(--clr-text);font-size:14px;font-weight:700}.house-core-kicker{fill:var(--clr-muted);font-size:10px;font-weight:700;letter-spacing:.08em}.house-core-value{fill:var(--clr-text);font-size:18px;font-weight:800}.elite-house rect,.elite-house path{transition:.4s var(--ease)}.elite-house:hover path{stroke:var(--clr-text-secondary)}@keyframes scene-entrance{0%{opacity:0;transform:scale(.98) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.highlight-red{color:var(--clr-consumption)!important}.highlight-green{color:var(--clr-production)!important}.highlight-blue{color:var(--clr-export)!important}.flow-legend{position:relative;z-index:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3);margin-top:var(--sp-5)}.flow-legend-item{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-4);background:var(--clr-overlay);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--clr-overlay-border);border-radius:var(--radius-lg);min-width:0}.flow-legend-dot{width:10px;height:10px;border-radius:999px;flex:0 0 auto;margin-top:6px;box-shadow:0 0 0 6px #ffffff05}.flow-legend-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.flow-legend-copy strong{font-size:var(--text-sm);font-weight:700;color:var(--clr-text)}.flow-legend-copy span{font-size:var(--text-xs);line-height:1.5;color:var(--clr-muted)}.flow-legend-item.solar .flow-legend-dot{background:var(--clr-production)}.flow-legend-item.import .flow-legend-dot{background:var(--clr-consumption)}.flow-legend-item.export .flow-legend-dot{background:var(--clr-export)}.flow-legend-item.community .flow-legend-dot{background:var(--clr-primary)}.form-section{margin-bottom:var(--sp-6)}.form-section-title{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--clr-muted);padding:var(--sp-3) 0 var(--sp-2);margin-bottom:var(--sp-2);border-bottom:1px solid var(--clr-border-subtle)}.form-row{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-sm);transition:background var(--duration) var(--ease)}.form-row:hover{background:var(--clr-surface-hover)}.form-row label{flex:0 0 40%;font-size:var(--text-sm);color:var(--clr-text-secondary);font-weight:500}.input-group{display:flex;align-items:center;gap:var(--sp-2);flex:0 0 55%}.input-group input{flex:1;padding:var(--sp-2) var(--sp-3);background:var(--clr-bg);color:var(--clr-text);border:1px solid var(--clr-border);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--text-sm);transition:border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.input-group select{flex:1;padding:var(--sp-2) var(--sp-3);background:var(--clr-bg);color:var(--clr-text);border:1px solid var(--clr-border);border-radius:var(--radius-sm);font-family:var(--font-sans);font-size:var(--text-sm)}.input-group input:focus{outline:none;border-color:var(--clr-primary);box-shadow:0 0 0 3px var(--clr-primary-muted)}.input-group select:focus{outline:none;border-color:var(--clr-primary);box-shadow:0 0 0 3px var(--clr-primary-muted)}.schedule-window-inputs{flex-wrap:wrap}.schedule-window-inputs input{min-width:120px}.input-unit{font-size:var(--text-xs);color:var(--clr-muted);white-space:nowrap;min-width:50px}.form-actions{display:flex;gap:var(--sp-3);margin-top:var(--sp-6);padding-top:var(--sp-6);border-top:1px solid var(--clr-border)}.meter-card{background:var(--clr-surface-alt);border:1px solid var(--clr-border);border-radius:var(--radius-md, 8px);padding:var(--sp-4);margin-bottom:var(--sp-3)}.meter-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--sp-3);font-size:var(--text-sm)}.meter-header strong{color:var(--clr-text)}.meter-id{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--clr-muted);background:var(--clr-bg);padding:2px 6px;border-radius:var(--radius-sm)}.meter-types{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.meter-type-badge{display:inline-flex;align-items:center;gap:4px;font-size:var(--text-xs);font-weight:600;padding:3px 10px;border-radius:999px;border:1px solid transparent}.meter-type-consumption{background:#308ce81f;color:#2b8cee;border-color:#308ce840}.meter-type-production{background:#22c3651f;color:#1da556;border-color:#22c36540}.meter-type-gas{background:#f48c251f;color:#da730b;border-color:#f48c2540}.meter-type-checkboxes{display:flex;flex-direction:column;gap:var(--sp-2)}.meter-type-cb{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-sm);cursor:pointer;padding:var(--sp-1) 0}.meter-type-cb input[type=checkbox]{width:16px;height:16px;accent-color:var(--clr-primary);cursor:pointer}.btn-icon{background:transparent;border:1px solid var(--clr-border);border-radius:var(--radius-sm);color:var(--clr-muted);cursor:pointer;font-size:var(--text-lg);line-height:1;padding:2px 8px;transition:color var(--duration) var(--ease),border-color var(--duration) var(--ease)}.btn-icon:hover{color:var(--clr-danger, #e53e3e);border-color:var(--clr-danger, #e53e3e)}.toggle-switch{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0;cursor:pointer}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--clr-border);border-radius:24px;transition:background var(--duration-md) var(--ease)}.toggle-slider:before{content:"";position:absolute;height:18px;width:18px;left:3px;bottom:3px;background:var(--clr-text);border-radius:50%;transition:transform var(--duration-md) var(--ease)}.toggle-switch input:checked+.toggle-slider{background:var(--clr-primary)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(20px)}.toggle-switch input:focus-visible+.toggle-slider{box-shadow:0 0 0 3px var(--clr-primary-muted)}.invoice-table{width:100%;border-collapse:collapse}.invoice-table th,.invoice-table td{padding:var(--sp-3) var(--sp-4);text-align:left}.invoice-table th{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--clr-muted);font-weight:600;border-bottom:2px solid var(--clr-border);background:var(--clr-surface-alt)}.invoice-table td{border-bottom:1px solid var(--clr-border-subtle);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.invoice-table tr:hover td{background:var(--clr-surface-hover)}.invoice-table .subtotal-row td{border-top:2px solid var(--clr-border);padding-top:var(--sp-4);font-weight:600}.invoice-table .total-row td{border-top:2px solid var(--clr-primary);font-size:var(--text-lg);font-weight:700;color:var(--clr-primary);padding:var(--sp-4);background:var(--clr-primary-muted)}.sensor-group{margin-bottom:var(--sp-6)}.sensor-table{width:100%;border-collapse:collapse}.sensor-table th,.sensor-table td{padding:var(--sp-3) var(--sp-4);text-align:left}.sensor-table th{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--clr-muted);font-weight:600;background:var(--clr-surface-alt);border-bottom:2px solid var(--clr-border);position:sticky;top:0}.sensor-table td{font-size:var(--text-sm);border-bottom:1px solid var(--clr-border-subtle)}.sensor-table tbody tr{transition:background var(--duration) var(--ease)}.sensor-table tbody tr:hover{background:var(--clr-surface-hover)}.sensor-table tbody tr:nth-child(2n){background:var(--clr-surface-alt)}.sensor-table tbody tr:nth-child(2n):hover{background:var(--clr-surface-hover)}.sensor-table .mono{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--clr-muted)}@media(max-width:768px){.main-content{padding:var(--sp-4)}.range-selector{width:100%;overflow-x:auto;white-space:nowrap;justify-content:flex-start;padding:var(--sp-2);-webkit-overflow-scrolling:touch;scrollbar-width:none}.range-selector::-webkit-scrollbar{display:none}.range-btn{flex:0 0 auto;padding:var(--sp-2) var(--sp-4)}.stats-grid{grid-template-columns:1fr 1fr;gap:var(--sp-3)}.cards-row{grid-template-columns:1fr}.flow-metrics-row{flex-direction:column}.flow-metrics-row .metrics-card{flex:none;width:100%}.form-row{flex-direction:column;align-items:stretch;gap:var(--sp-2)}.form-row label,.input-group{flex:none}.leneda-elite-flow{padding:var(--sp-4) var(--sp-2)}.elite-header{grid-template-columns:1fr;gap:var(--sp-3)}.elite-scene{height:320px}.flow-legend{grid-template-columns:1fr;gap:var(--sp-2)}.module-value{font-size:var(--text-2xl)}.navbar-tabs{display:none}.navbar-tabs.mobile-open{display:flex;position:fixed;top:56px;left:0;right:0;bottom:0;background:var(--clr-surface);flex-direction:column;padding:var(--sp-6);z-index:1000;height:calc(100vh - 56px);gap:var(--sp-4)}.nav-btn{width:100%;height:56px;font-size:var(--text-base);justify-content:flex-start;padding-left:var(--sp-6)}}@media(max-width:480px){.stats-grid{grid-template-columns:1fr}.elite-scene{height:260px}.scene-node-value{font-size:12px}.flow-legend-item{padding:var(--sp-3)}}.card{background:var(--clr-surface);border:1px solid var(--clr-border);border-radius:var(--radius-lg);padding:var(--sp-5);box-shadow:var(--shadow-sm);transition:border-color var(--duration-md) var(--ease),box-shadow var(--duration-md) var(--ease)}.card:hover{border-color:var(--clr-border);box-shadow:var(--shadow-md)}.card-title{font-size:var(--text-lg);font-weight:700;margin-bottom:var(--sp-4);color:var(--clr-text);display:flex;align-items:center;gap:var(--sp-2)}.card-title .title-icon{font-size:1.1em}.stat-card{background:var(--clr-surface);border:1px solid var(--clr-border);border-radius:var(--radius-lg);padding:var(--sp-5);display:flex;align-items:flex-start;gap:var(--sp-4);position:relative;overflow:hidden;box-shadow:var(--shadow-sm);transition:transform var(--duration-md) var(--ease-spring),border-color var(--duration-md) var(--ease),box-shadow var(--duration-md) var(--ease)}.stat-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;border-radius:var(--radius-lg) var(--radius-lg) 0 0}.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.stat-icon{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);font-size:1.25rem;flex-shrink:0}.stat-body{display:flex;flex-direction:column;gap:var(--sp-1);min-width:0}.stat-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--clr-muted);font-weight:600}.stat-value{font-size:var(--text-2xl);font-weight:800;line-height:var(--lh-tight);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.stat-unit{font-size:var(--text-sm);color:var(--clr-muted);font-weight:400;margin-left:var(--sp-1)}.stat-card.consumption:before{background:var(--clr-consumption)}.stat-card.consumption .stat-icon{background:var(--clr-consumption-muted)}.stat-card.consumption .stat-value{color:var(--clr-consumption)}.stat-card.consumption:hover{border-color:#f851494d}.stat-card.production:before{background:var(--clr-production)}.stat-card.production .stat-icon{background:var(--clr-production-muted)}.stat-card.production .stat-value{color:var(--clr-production)}.stat-card.production:hover{border-color:#3fb9504d}.stat-card.export:before{background:var(--clr-export)}.stat-card.export .stat-icon{background:var(--clr-export-muted)}.stat-card.export .stat-value{color:var(--clr-export)}.stat-card.export:hover{border-color:#58a6ff4d}.stat-card.self-consumed:before{background:var(--clr-self)}.stat-card.self-consumed .stat-icon{background:var(--clr-self-muted)}.stat-card.self-consumed .stat-value{color:var(--clr-self)}.stat-card.self-consumed:hover{border-color:#bc8cff4d}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-5);border:1px solid transparent;border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:600;cursor:pointer;transition:all var(--duration) var(--ease);font-family:var(--font-sans);line-height:1.5;white-space:nowrap}.btn:active{transform:scale(.97)}.btn-primary{background:var(--clr-primary);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover{background:var(--clr-primary-hover);box-shadow:0 0 12px var(--clr-primary-glow)}.btn-outline{background:transparent;border-color:var(--clr-border);color:var(--clr-text-secondary)}.btn-outline:hover{background:var(--clr-surface-hover);border-color:var(--clr-muted);color:var(--clr-text)}.btn-danger{background:transparent;border-color:var(--clr-danger);color:var(--clr-danger)}.btn-danger:hover{background:var(--clr-danger-muted)}.range-btn{padding:var(--sp-2) var(--sp-4);border:none;border-radius:var(--radius-md);background:transparent;color:var(--clr-muted);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:all var(--duration-md) var(--ease);font-family:var(--font-sans)}.range-btn:hover{background:var(--clr-surface-hover);color:var(--clr-text)}.range-btn.active{background:var(--clr-primary);color:#fff;box-shadow:0 2px 8px #58a6ff40}.navbar{display:flex;align-items:center;background:var(--clr-surface);border-bottom:1px solid var(--clr-border);padding:0 var(--sp-6);flex-shrink:0;height:56px;gap:var(--sp-4)}.navbar-brand{display:flex;align-items:center;gap:var(--sp-3);padding-right:var(--sp-6);margin-right:var(--sp-4);border-right:1px solid var(--clr-border);height:100%;white-space:nowrap}.navbar-logo-img{height:44px;width:auto;object-fit:contain;border-radius:var(--radius-sm);filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.navbar-title{font-size:var(--text-lg);font-weight:800;letter-spacing:-.02em;background:linear-gradient(135deg,var(--clr-primary),#c084fc);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.navbar-tabs{display:flex;align-items:center;gap:var(--sp-1);height:100%;width:100%}.nav-btn{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);border:none;background:transparent;color:var(--clr-muted);font-size:var(--text-sm);font-weight:500;cursor:pointer;border-radius:var(--radius-sm);transition:all var(--duration-md) var(--ease);font-family:var(--font-sans);height:36px;position:relative}.nav-btn:hover{color:var(--clr-text);background:var(--clr-surface-hover)}.nav-btn.active{color:var(--clr-primary);background:var(--clr-primary-muted);font-weight:600}.nav-icon{font-size:1rem;line-height:1}.nav-label{line-height:1}.navbar-actions{margin-left:auto;display:flex;align-items:center;gap:10px;padding-right:4px}.theme-toggle,.navbar-icon-link{display:inline-flex;align-items:center;justify-content:center;height:36px;border-radius:10px;border:1px solid var(--clr-border);background:var(--clr-surface-hover);color:var(--clr-text);transition:transform var(--duration-md) var(--ease),border-color var(--duration-md) var(--ease),background var(--duration-md) var(--ease)}.theme-toggle{gap:8px;padding:0 12px;cursor:pointer;font:inherit}.theme-toggle:hover,.navbar-icon-link:hover{transform:translateY(-1px);border-color:var(--clr-primary);background:var(--clr-primary-muted)}.theme-toggle-icon{font-size:1rem;line-height:1}.theme-toggle-label{font-size:var(--text-sm);font-weight:600}.navbar-cta{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#fd0,#fbb034);color:#000;padding:6px 16px;border-radius:12px;font-weight:800;font-size:13px;text-decoration:none;box-shadow:0 4px 15px #fbb0344d;transition:transform var(--duration-md) var(--ease),box-shadow var(--duration-md) var(--ease);border:1px solid rgba(255,255,255,.2)}.navbar-cta:hover{transform:translateY(-1px);box-shadow:0 10px 20px #fbb03440;text-decoration:none}.navbar-icon-link{width:36px;text-decoration:none}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:60vh;gap:var(--sp-4);color:var(--clr-muted)}.spinner{width:40px;height:40px;border:3px solid var(--clr-border);border-top-color:var(--clr-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-bar{position:absolute;top:0;left:0;width:100%;height:3px;background:linear-gradient(90deg,transparent,var(--clr-primary),transparent);animation:loading 1.5s ease-in-out infinite;z-index:10}@keyframes loading{0%{transform:translate(-100%)}50%{transform:translate(0)}to{transform:translate(100%)}}.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:60vh;gap:var(--sp-4);text-align:center}.error-state h2{color:var(--clr-danger);font-size:var(--text-xl);font-weight:700}.error-state p{color:var(--clr-muted);max-width:400px;line-height:var(--lh-relaxed)}.muted{color:var(--clr-muted);font-size:var(--text-sm)}.metric{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3) 0}.metric+.metric{border-top:1px solid var(--clr-border-subtle)}.metric-header{display:flex;justify-content:space-between;align-items:baseline}.metric-label{font-size:var(--text-sm);color:var(--clr-muted);font-weight:500}.metric-value{font-size:var(--text-lg);font-weight:700;font-variant-numeric:tabular-nums}.metric-bar{height:8px;background:var(--clr-bg);border-radius:var(--radius-full);overflow:hidden}.metric-fill{height:100%;border-radius:var(--radius-full);background:linear-gradient(90deg,var(--clr-production),var(--clr-primary));transition:width .8s var(--ease-out)}.metrics-list{display:flex;flex-direction:column}.metric-sub{font-size:var(--text-xs);color:var(--clr-muted);line-height:1.4}.metric-warning{background:#ffa00014;border-radius:var(--radius);padding:var(--sp-3);margin:0 calc(-1 * var(--sp-3))}.metric-warning .metric-label,.metric-warning .metric-value{color:#e67e00}.metric-warning .metric-sub{color:#c06800}.metric-ok{background:#28b4500f;border-radius:var(--radius);padding:var(--sp-3);margin:0 calc(-1 * var(--sp-3))}.metric-ok .metric-label,.metric-ok .metric-value{color:#1a9a4a}.invoice-table .section-label td{padding-top:var(--sp-5);padding-bottom:var(--sp-2);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--clr-primary);font-weight:700;border-bottom:none;background:transparent!important}.invoice-table .section-label:first-child td{padding-top:var(--sp-3)}.invoice-table .exceedance-row td{color:var(--clr-warning);font-weight:600}.invoice-table .revenue-section td,.invoice-table .revenue-row td{color:var(--clr-production)}.invoice-table .revenue-amount{font-weight:700;color:var(--clr-production)!important}.invoice-table .net-total-row td{border-top:2px solid var(--clr-border);font-size:var(--text-lg);font-weight:700;padding:var(--sp-4)}.exceedance-warning{background:var(--clr-warning-muted);border-color:#d299224d;margin-bottom:var(--sp-6);padding:var(--sp-4) var(--sp-5)}.exceedance-warning strong{color:var(--clr-warning);display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);font-size:var(--text-base)}.exceedance-warning p{font-size:var(--text-sm);color:var(--clr-text-secondary);margin-top:var(--sp-1)}.invoice-view .section-header span{display:block;margin-top:var(--sp-1)}.invoice-card{padding:0;overflow:hidden}.invoice-footer{margin-top:var(--sp-4)}.settings-view .card{max-width:720px}.sensor-name{font-weight:500;color:var(--clr-text)}.sensor-value{font-family:var(--font-mono);font-weight:600;font-variant-numeric:tabular-nums}.sensor-unit{color:var(--clr-muted);font-size:var(--text-xs)}.sensor-peak{color:var(--clr-muted);font-size:var(--text-xs);font-family:var(--font-mono)}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--clr-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--clr-muted)}::selection{background:var(--clr-primary-muted);color:var(--clr-primary)}:focus-visible{outline:2px solid var(--clr-primary);outline-offset:2px}.menu-toggle{display:none;flex-direction:column;justify-content:space-around;width:24px;height:24px;background:transparent;border:none;cursor:pointer;padding:0;z-index:1001}.menu-toggle span{width:24px;height:2px;background:var(--clr-text);border-radius:10px;transition:all .3s linear;position:relative;transform-origin:1px}.menu-toggle.open span:nth-child(1){transform:rotate(45deg)}.menu-toggle.open span:nth-child(2){opacity:0;transform:translate(20px)}.menu-toggle.open span:nth-child(3){transform:rotate(-45deg)}@media(max-width:768px){.menu-toggle{display:flex}.navbar-brand{border-right:none;margin-right:0;padding-right:0;flex:1}.navbar-actions{margin-left:0;flex-direction:column;align-items:stretch;width:100%;padding-right:0;margin-top:var(--sp-3)}.theme-toggle,.navbar-cta,.navbar-icon-link{width:100%;justify-content:center}}
