:root{color-scheme:light dark;--bg: #f4f4f1;--surface: #ffffff;--surface-raised: rgba(255, 255, 255, .82);--fill: rgba(22, 24, 27, .05);--fill-strong: rgba(22, 24, 27, .09);--hairline: rgba(22, 24, 27, .08);--shadow: 0 1px 2px rgba(22, 24, 27, .04), 0 4px 16px rgba(22, 24, 27, .04);--shadow-float: 0 8px 28px rgba(22, 24, 27, .12);--backdrop: rgba(10, 12, 14, .36);--text: #16181b;--text-secondary: rgba(22, 24, 27, .6);--text-tertiary: rgba(22, 24, 27, .38);--on-accent: #ffffff;--accent: #1f7f99;--accent-soft: rgba(31, 127, 153, .12);--solar: #d99a1e;--grid: #7a8494;--battery: #2f9e6e;--consumption: #3a86c8;--light: #e09a1a;--climate: #de6f35;--sensor: #3a8f8a;--red: #e0453f;--orange: #e08a1e;--green: #2f9e6e;--blue: #3a7fe0;--red-soft: color-mix(in srgb, var(--red) 12%, transparent);--orange-soft: color-mix(in srgb, var(--orange) 13%, transparent);--light-soft: color-mix(in srgb, var(--light) 16%, transparent);--radius-card: 20px;--radius-control: 12px;--screen-pad: 18px;--section-gap: 26px;--embed-clip: 0px;--safe-top: max(0px, calc(env(safe-area-inset-top) - var(--embed-clip)));--safe-bottom: calc(env(safe-area-inset-bottom) + var(--embed-clip));--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--font-display: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto, sans-serif}@media(prefers-color-scheme:dark){:root{--bg: #0e0f11;--surface: #1a1b1e;--surface-raised: rgba(32, 33, 37, .82);--fill: rgba(255, 255, 255, .06);--fill-strong: rgba(255, 255, 255, .11);--hairline: rgba(255, 255, 255, .08);--shadow: none;--shadow-float: 0 10px 32px rgba(0, 0, 0, .5);--backdrop: rgba(0, 0, 0, .55);--text: #eceef0;--text-secondary: rgba(236, 238, 240, .62);--text-tertiary: rgba(236, 238, 240, .38);--accent: #4bb4cf;--accent-soft: rgba(75, 180, 207, .16);--solar: #f0b43c;--grid: #9aa3b2;--battery: #4cc28e;--consumption: #5ba5e6;--light: #f2b53a;--climate: #f08a52;--sensor: #5bb7b0;--red: #ff6159;--orange: #f5a03a;--green: #4cc28e;--blue: #5b9bf5}}*{box-sizing:border-box}html,body{margin:0;padding:0;font-family:var(--font);font-size:15px;line-height:1.35;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-text-size-adjust:100%}input,textarea,select{-webkit-user-select:text;user-select:text}body{min-height:100vh;overscroll-behavior-y:none}#root{max-width:560px;margin:0 auto;padding:calc(var(--safe-top) + 14px) var(--screen-pad) calc(var(--safe-bottom) + 104px);display:flex;flex-direction:column;gap:var(--section-gap)}.overline{font-size:13px;font-weight:600;color:var(--text-tertiary);letter-spacing:.01em}h1.app-title{font-family:var(--font-display);font-size:32px;font-weight:700;letter-spacing:-.6px;line-height:1.1;margin:2px 0 0}.status-line{color:var(--text-secondary);font-size:15px;margin-top:6px}.section-label{font-size:13px;font-weight:600;color:var(--text-secondary);margin:0 0 8px 4px;display:flex;align-items:center;justify-content:space-between}.section-label .aside{font-weight:500;color:var(--text-tertiary)}.card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-card);box-shadow:var(--shadow);padding:16px}.subcard{background:var(--fill);border-radius:var(--radius-control);padding:12px 14px}.list{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-card);box-shadow:var(--shadow);overflow:hidden}.list-item+.list-item{border-top:1px solid var(--hairline)}.list-item>.list-row{padding:13px 16px}.list-row{display:flex;align-items:center;gap:12px;width:100%;min-height:54px;text-align:left}.list-row .lead{width:22px;display:inline-flex;justify-content:center;flex-shrink:0}.list-row .body{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.list-row .title{font-size:15px;font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-row .subtitle{font-size:13px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-row .trail{display:inline-flex;align-items:center;gap:8px;flex-shrink:0;font-size:15px;color:var(--text-secondary);font-variant-numeric:tabular-nums}.list-row .trail.strong{color:var(--text);font-weight:600}.list-item>.list-extra{padding:0 16px 14px 50px}a{color:inherit;text-decoration:none;touch-action:manipulation}a.block{display:block}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:disabled{opacity:.45;cursor:default}button,a.block,.tab-bar a{transition:transform .3s cubic-bezier(.34,1.3,.5,1),background-color .18s ease,color .18s ease,opacity .16s ease}button.list-row:active,a.list-row:active{background:var(--fill);transition-duration:.05s}.tile:active,.btn:active:not(:disabled),.seg:active:not(:disabled),.chip:active:not(:disabled){transform:scale(.97);transition-duration:.06s;transition-timing-function:ease-out}.stepper button:active,.page-header .back:active,.round-btn:active{transform:scale(.88)}.list-item>.list-row{transition:background-color .18s ease}@keyframes value-swap{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.value-swap{display:inline-block;animation:value-swap .26s cubic-bezier(.2,.8,.2,1)}.reveal{display:grid;transition:grid-template-rows .3s cubic-bezier(.32,.72,.35,1)}.reveal>*{overflow:hidden;min-height:0}.row{display:flex;align-items:center;gap:10px}.row.spread{justify-content:space-between}.col{display:flex;flex-direction:column;gap:4px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stack{display:flex;flex-direction:column;gap:10px}.muted{color:var(--text-secondary)}.faint{color:var(--text-tertiary)}.small{font-size:13px}.tiny{font-size:11px}.semibold{font-weight:600}.mono{font-variant-numeric:tabular-nums}.icon-circle{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;flex-shrink:0}.pill{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600;background:var(--fill);color:var(--text-secondary);white-space:nowrap}.chip{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:9px 14px;font-size:14px;font-weight:600;background:var(--fill);color:var(--text);white-space:nowrap}.chip.active{background:var(--accent-soft);color:var(--accent)}.chip-row{display:flex;gap:8px;flex-wrap:wrap}.tile{display:flex;flex-direction:column;min-height:112px;text-align:left;width:100%;padding:14px 15px}.tile .tile-head{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--text-secondary)}.tile .value{font-family:var(--font-display);font-size:24px;font-weight:650;letter-spacing:-.4px;margin-top:auto;font-variant-numeric:tabular-nums}.tile .detail{font-size:13px;color:var(--text-tertiary);margin-top:1px;min-height:17px}.readout{font-family:var(--font-display);font-size:54px;font-weight:600;letter-spacing:-1.5px;line-height:1;font-variant-numeric:tabular-nums}.switch{position:relative;width:51px;height:31px;border-radius:999px;background:var(--fill-strong);transition:background .2s ease;flex-shrink:0}.switch.on{background:var(--accent)}.switch.on.warm{background:var(--light)}.switch .knob{position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 2px 5px #0000002e;transition:transform .22s cubic-bezier(.3,1.2,.5,1)}.switch.on .knob{transform:translate(20px)}.stepper{display:inline-flex;align-items:center;background:var(--fill);border-radius:999px;padding:3px}.stepper button{width:38px;height:38px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:19px;font-weight:500;background:var(--surface);box-shadow:0 1px 2px #00000014}.stepper .value{min-width:66px;text-align:center;font-size:17px;font-weight:650;font-variant-numeric:tabular-nums}.segmented{display:flex;gap:4px;padding:4px;background:var(--fill);border-radius:14px}.seg{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;border-radius:10px;font-size:12px;font-weight:600;color:var(--text-secondary)}.seg.active{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #0000001a}.seg.active.warn{color:var(--orange)}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:6px;border-radius:8px;background:var(--fill-strong);outline:none;margin:0}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;border-radius:50%;background:#fff;border:.5px solid rgba(0,0,0,.06);box-shadow:0 2px 7px #0003}input[type=range]::-moz-range-thumb{width:26px;height:26px;border-radius:50%;background:#fff;border:none;box-shadow:0 2px 7px #0003}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:var(--radius-control);padding:12px 18px;font-size:15px;font-weight:600;min-height:46px}.btn.primary{background:var(--accent);color:var(--on-accent)}.btn.danger{background:var(--red);color:#fff}.btn.soft{background:var(--fill);color:var(--text)}.btn.soft.warn{color:var(--orange)}.btn.soft.destructive{color:var(--red)}.btn.block{width:100%}.round-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;flex-shrink:0}.round-btn.filled{background:var(--text);color:var(--bg)}.round-btn.soft{background:var(--fill)}select.inline-select{font:inherit;font-size:15px;font-weight:600;color:var(--text);background:var(--fill);border:none;border-radius:999px;padding:7px 12px;outline:none;font-variant-numeric:tabular-nums;-webkit-appearance:none;-moz-appearance:none;appearance:none}.tab-bar{position:fixed;bottom:calc(var(--safe-bottom) + 14px);left:50%;transform:translate(-50%);display:flex;gap:2px;background:var(--surface-raised);-webkit-backdrop-filter:blur(22px) saturate(1.8);backdrop-filter:blur(22px) saturate(1.8);border:1px solid var(--hairline);border-radius:999px;padding:5px;box-shadow:var(--shadow-float);z-index:50}.tab-bar a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 20px;border-radius:999px;font-size:11px;font-weight:600;color:var(--text-tertiary);position:relative;z-index:1}.tab-bar a.active{color:var(--text)}.tab-indicator{position:absolute;top:5px;bottom:5px;left:0;border-radius:999px;background:var(--fill-strong);transition:transform .34s cubic-bezier(.3,1.15,.4,1),width .34s cubic-bezier(.3,1.15,.4,1);z-index:0}.page-header{display:flex;flex-direction:column;gap:10px;margin-top:2px}.page-header .back{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;margin-left:-4px;border-radius:50%;background:var(--surface);border:1px solid var(--hairline);box-shadow:var(--shadow)}.page-header h2{font-family:var(--font-display);font-size:30px;font-weight:700;letter-spacing:-.5px;line-height:1.1;margin:0}.page-header .subtitle{color:var(--text-secondary);font-size:15px;margin-top:-4px}@keyframes pulse{0%,to{transform:scale(.7);opacity:.5}50%{transform:scale(1);opacity:1}}.pulse-dot{width:7px;height:7px;border-radius:50%;animation:pulse 1.6s ease-in-out infinite}.energy-node{fill:var(--surface);stroke:var(--hairline)}.energy-lane{stroke:var(--hairline)}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--fill-strong);border-top-color:var(--text-secondary);animation:spin .8s linear infinite;display:inline-block}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--backdrop);z-index:100;display:flex;align-items:flex-end;justify-content:center;animation:backdrop-in .24s ease;transition:opacity .22s ease}.sheet-backdrop.closing{opacity:0}.sheet{width:100%;max-width:560px;max-height:86vh;overflow-y:auto;background:var(--surface);border-radius:24px 24px 0 0;padding:8px 18px calc(var(--safe-bottom) + 22px);animation:sheet-up .32s cubic-bezier(.32,.72,.35,1);transition:transform .26s cubic-bezier(.32,.72,.35,1)}.sheet.closing{transform:translateY(110%)}.sheet-handle{touch-action:none;cursor:grab;margin:0 -18px;padding:0 18px}.sheet-handle:active{cursor:grabbing}.sheet-grabber{width:36px;height:5px;border-radius:999px;background:var(--fill-strong);margin:2px auto 14px}.sheet-done{font-size:15px;font-weight:600;color:var(--accent);padding:6px 4px}.chart-grid{stroke:var(--hairline)}.chart-zero{stroke:var(--text-tertiary)}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page{display:flex;flex-direction:column;gap:var(--section-gap)}html:not(.vt) .page{animation:page-in .22s ease}.tab-bar{view-transition-name:tabbar}@keyframes vt-slide-from-right{0%{transform:translate(100%)}}@keyframes vt-slide-to-left{to{transform:translate(-26%);opacity:.6}}@keyframes vt-slide-from-left{0%{transform:translate(-26%);opacity:.6}}@keyframes vt-slide-to-right{to{transform:translate(100%)}}@keyframes vt-fade-in{0%{opacity:0}}@keyframes vt-fade-out{to{opacity:0}}html[data-nav=push]::view-transition-old(root){animation:vt-slide-to-left .32s cubic-bezier(.32,.72,.35,1) both}html[data-nav=push]::view-transition-new(root){animation:vt-slide-from-right .32s cubic-bezier(.32,.72,.35,1) both}html[data-nav=pop]::view-transition-old(root){animation:vt-slide-to-right .3s cubic-bezier(.32,.72,.35,1) both}html[data-nav=pop]::view-transition-new(root){animation:vt-slide-from-left .3s cubic-bezier(.32,.72,.35,1) both}html[data-nav=tab]::view-transition-old(root){animation:vt-fade-out .16s ease both}html[data-nav=tab]::view-transition-new(root){animation:vt-fade-in .16s ease both}@media(prefers-reduced-motion:reduce){*,*:before,*:after,::view-transition-old(root),::view-transition-new(root),::view-transition-old(tabbar),::view-transition-new(tabbar){animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.swipe-under{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden;background:var(--bg);will-change:transform}.swipe-under-inner{max-width:560px;margin:0 auto;padding:calc(var(--safe-top) + 14px) var(--screen-pad) 120px;display:flex;flex-direction:column;gap:var(--section-gap)}.swipe-dim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;background:#000;pointer-events:none}.page.swiping{position:relative;z-index:2;background:var(--bg);margin:0 calc(-1 * var(--screen-pad));padding:0 var(--screen-pad) 24px;min-height:100vh;box-shadow:-10px 0 30px #00000029;will-change:transform}.media-art{width:64px;height:64px;border-radius:12px;object-fit:cover;flex-shrink:0;background:var(--fill)}.media-art.small{width:44px;height:44px;border-radius:9px}.ptr{position:fixed;top:calc(var(--safe-top) + 8px);left:50%;z-index:90;width:40px;height:40px;border-radius:50%;background:var(--surface);border:1px solid var(--hairline);box-shadow:var(--shadow-float);display:flex;align-items:center;justify-content:center;pointer-events:none}.ptr-spinner{width:18px;height:18px;border-radius:50%;border:2.5px solid var(--fill-strong);border-top-color:var(--text-secondary);display:block}.ptr-spinner.spinning{animation:spin .8s linear infinite}@keyframes toast-in{0%{opacity:0;transform:translateY(10px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.toast-host{position:fixed;left:16px;right:16px;bottom:calc(var(--safe-bottom) + 92px);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:200;pointer-events:none}.toast{background:var(--text);color:var(--bg);font-size:13px;font-weight:600;padding:10px 16px;border-radius:999px;animation:toast-in .25s cubic-bezier(.2,.8,.2,1);box-shadow:var(--shadow-float)}.login-wrap{display:flex;flex-direction:column;gap:28px;padding-top:56px}.field label{font-size:13px;font-weight:600;color:var(--text-secondary);display:block;margin-bottom:7px}.field input{width:100%;font:inherit;font-size:16px;color:var(--text);background:var(--fill);border:1px solid transparent;border-radius:var(--radius-control);padding:13px 14px;outline:none}.field input:focus{border-color:var(--accent);background:var(--surface)}
