:root{--bg:#0f1115;--bg-2:#161922;--card:#ffffff0b;--card-strong:#ffffff14;--line:#ffffff14;--track:#ffffff17;--text:#f2eee8;--muted:#9a9ba5;--accent:#ffb85c;--accent-2:#5cc8ff;--good:#4fd18b;--warn:#ffb547;--bad:#ff6b5c;--radius:22px;--shadow:0 10px 30px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:light){:root{--bg:#f4f1ec;--bg-2:#ebe6de;--card:#ffffffbf;--card-strong:#fff;--line:#1e191414;--track:#1e191414;--text:#1d1b19;--muted:#77736d;--accent:#e8902a;--accent-2:#1f9fe0;--good:#1f9d5c;--shadow:0 8px 24px #3c281414;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}*{box-sizing:border-box}html,body{margin:0}body{background:radial-gradient(1200px 600px at 10% -10%, #ffb85c1a, transparent 60%), radial-gradient(900px 500px at 110% 10%, #5cc8ff14, transparent 60%), var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;background-attachment:fixed;min-height:100dvh;font:16px/1.4 ui-rounded,SF Pro Rounded,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}button:disabled{cursor:default}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2{letter-spacing:-.01em;margin:0;font-weight:650}.muted{color:var(--muted);margin:.2rem 0}.small{margin-top:8px;font-size:.85rem}.icon{flex:none;display:block}.app{max-width:980px;padding:calc(env(safe-area-inset-top) + 20px) 16px calc(96px + env(safe-area-inset-bottom));margin:0 auto}.top{justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:18px;display:flex}.top h1{font-size:clamp(1.45rem,6.2vw,2.2rem);line-height:1.15}.date{color:var(--muted);margin:0 0 2px;font-size:.95rem}.date:first-letter{text-transform:uppercase}.weather{background:var(--card);border:1px solid var(--line);border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:1.4rem;font-weight:600;display:flex}.weather-emoji{font-size:1.3rem}.view{animation:.25s fade}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.banner{z-index:30;padding:calc(env(safe-area-inset-top) + 6px) 12px 6px;text-align:center;background:var(--warn);color:#241a00;font-size:.85rem;position:fixed;top:0;left:0;right:0}.summary{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.stat-pill{background:var(--card);border:1px solid var(--line);border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:.95rem;font-weight:600;display:inline-flex}.stat-pill .icon{color:var(--accent)}.scenes{scrollbar-width:none;gap:10px;margin:0 -16px 8px;padding:4px 16px 10px;display:flex;overflow-x:auto}.scenes::-webkit-scrollbar{display:none}.scene{background:var(--card);border:1px solid var(--line);border-radius:18px;flex:none;align-items:center;gap:8px;padding:12px 18px;font-weight:600;transition:transform .15s,background .2s;display:inline-flex}.scene:active{transform:scale(.96)}.scene.busy{background:color-mix(in srgb, var(--accent) 25%, var(--card))}.scene-emoji{font-size:1.15rem}.rain{background:var(--card);border:1px solid var(--line);border-radius:18px;margin-bottom:14px;padding:12px 16px}.rain.wet{background:color-mix(in srgb, var(--accent-2) 12%, var(--card))}.rain-head{align-items:center;gap:10px;font-weight:600;display:flex}.rain-emoji{font-size:1.25rem}.rain-bars{align-items:flex-end;gap:2px;height:44px;margin-top:10px;display:flex}.rain-bar{background:var(--accent-2);opacity:.85;border-radius:3px 3px 1px 1px;flex:1;min-height:2px}.rain-labels{color:var(--muted);justify-content:space-between;margin-top:4px;font-size:.7rem;display:flex}.room{margin-top:18px}.room-head{justify-content:space-between;align-items:baseline;margin:0 4px 10px;display:flex}.room-head h2{font-size:1.15rem}.link{color:var(--accent);padding:4px 0;font-size:.95rem;font-weight:600}.grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;display:grid}.light,.plug{border-radius:var(--radius);background:var(--card);border:1px solid var(--line);align-items:stretch;min-height:92px;transition:background .35s,box-shadow .35s,transform .15s;display:flex;position:relative;overflow:hidden}.light.on{background:radial-gradient(120% 140% at 0% 0%, rgba(var(--lamp), calc(.18 + var(--level) * .32)), transparent 70%), var(--card-strong);box-shadow:0 10px 34px -12px rgba(var(--lamp), calc(.25 + var(--level) * .4))}.light:active,.plug:active{transform:scale(.98)}.light.unavailable,.plug.unavailable{opacity:.5}.light.unavailable .bulb{border:1.5px dashed var(--line);background:0 0}.light-main{text-align:left;flex-direction:column;flex:1;justify-content:space-between;gap:10px;min-width:0;padding:14px;display:flex}.bulb,.plug-icon{background:var(--card-strong);width:42px;height:42px;color:var(--muted);border-radius:50%;place-items:center;transition:all .35s;display:grid}.light.on .bulb{background:rgb(var(--lamp));color:#2a1d0c;box-shadow:0 0 22px rgba(var(--lamp), .7)}.light-text{flex-direction:column;min-width:0;display:flex}.light-name{-webkit-line-clamp:2;-webkit-hyphens:auto;hyphens:auto;overflow-wrap:break-word;-webkit-box-orient:vertical;font-weight:650;line-height:1.2;display:-webkit-box;overflow:hidden}.light-state{color:var(--muted);font-size:.9rem}.light-room{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.72rem;font-weight:600}.light.on .light-state{color:var(--text);opacity:.8}.light-more{width:36px;height:36px;color:var(--muted);background:var(--card);border-radius:12px;place-items:center;display:grid;position:absolute;top:10px;right:10px}.light.on .light-more{color:var(--text)}.light-bar{background:rgb(var(--lamp));border-radius:0 4px 4px 0;height:4px;transition:width .3s;position:absolute;bottom:0;left:0}.plug{text-align:left;align-items:center;gap:12px;width:100%;padding:14px}.plug .light-text{flex:1}.plug.on .plug-icon{background:var(--accent-2);color:#04212f;box-shadow:0 0 20px color-mix(in srgb, var(--accent-2) 60%, transparent)}.switch{background:var(--card-strong);border:1px solid var(--line);border-radius:999px;flex:none;width:46px;height:28px;transition:background .25s;position:relative}.switch span{background:var(--muted);border-radius:50%;width:20px;height:20px;transition:all .25s;position:absolute;top:3px;left:3px}.switch.on{background:var(--accent-2)}.switch.on span{background:#fff;left:21px}.sheet-backdrop{z-index:40;-webkit-backdrop-filter:blur(6px);background:#00000073;justify-content:center;align-items:flex-end;animation:.2s fade;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.sheet{background:var(--bg-2);width:100%;max-width:520px;padding:10px 20px calc(28px + env(safe-area-inset-bottom));box-shadow:var(--shadow);border-radius:28px 28px 0 0;animation:.28s cubic-bezier(.2,.9,.3,1.1) up}@media (min-width:640px){.sheet-backdrop{align-items:center}.sheet{border-radius:28px}}@keyframes up{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:none}}.sheet-grip{background:var(--line);border-radius:3px;width:40px;height:5px;margin:0 auto 14px}.sheet-head{align-items:center;gap:14px;margin-bottom:18px;display:flex}.sheet-head>div{flex:1}.sheet-head h2{font-size:1.3rem}.power-btn{background:var(--card-strong);width:54px;height:54px;color:var(--muted);border-radius:18px;place-items:center;transition:all .3s;display:grid}.power-btn.on{background:rgb(var(--lamp));color:#2a1d0c;box-shadow:0 0 26px rgba(var(--lamp), .6)}.icon-btn{background:var(--card);width:40px;height:40px;color:var(--muted);border-radius:12px;place-items:center;display:grid}.slider-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:14px 4px 8px;font-size:.85rem;display:block}.big-slider{background:var(--card-strong);border-radius:18px;height:58px;position:relative;overflow:hidden}.big-slider:not(.ct):before{content:"";width:var(--fill);background:linear-gradient(90deg, rgba(var(--lamp), .55), rgb(var(--lamp)));transition:width 80ms;position:absolute;top:0;bottom:0;left:0;right:auto}.big-slider input{opacity:0;cursor:pointer;touch-action:pan-y;width:100%;height:100%;margin:0;position:absolute;top:0;bottom:0;left:0;right:0}.big-slider.ct input{opacity:1;-webkit-appearance:none;appearance:none;background:0 0}.big-slider.ct input::-webkit-slider-thumb{-webkit-appearance:none;background:#fff;border-radius:6px;width:10px;height:46px;box-shadow:0 2px 8px #00000059}.big-slider.ct input::-moz-range-thumb{background:#fff;border:0;border-radius:6px;width:10px;height:46px;box-shadow:0 2px 8px #00000059}.big-slider-value{pointer-events:none;text-shadow:0 1px 6px #00000059;font-weight:700;position:absolute;top:50%;right:16px;transform:translateY(-50%)}.big-slider-value.dark{color:#1d1b19;text-shadow:none}.swatches{grid-template-columns:repeat(8,1fr);gap:10px;display:grid}.swatch{aspect-ratio:1;border:2px solid #ffffff40;border-radius:50%;transition:transform .15s}.swatch:active{transform:scale(.88)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:12px;padding:18px}.card-title{margin-bottom:12px;font-size:1rem}.ring-card{flex-direction:column;align-items:center;display:flex}.ring{position:relative}.ring svg{width:100%;height:100%}.ring-track{fill:none;stroke:var(--track);stroke-width:14px;stroke-linecap:round}.ring-fill{fill:none;stroke-width:14px;stroke-linecap:round;filter:drop-shadow(0 0 8px);transition:stroke-dasharray .8s cubic-bezier(.3,.8,.3,1),stroke .5s}.ring-center{flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.ring-value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:2.3rem;font-weight:700}.ring-label{color:var(--muted);font-size:.9rem}.phases{gap:8px;width:100%;max-width:380px;margin-top:4px;display:grid}.phase{grid-template-columns:56px 1fr 72px;align-items:center;gap:10px;font-size:.9rem;display:grid}.phase-name{color:var(--muted)}.phase-track{background:var(--track);border-radius:4px;height:8px;overflow:hidden}.phase-fill{background:linear-gradient(90deg, var(--accent-2), var(--accent));border-radius:4px;height:100%;transition:width .6s;display:block}.phase-val{text-align:right;font-variant-numeric:tabular-nums}.tariff{margin-top:12px}.tiles{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:12px;display:grid}.tile{border-radius:var(--radius);background:var(--card);border:1px solid var(--line);flex-direction:column;gap:2px;padding:16px;display:flex}.tile-label{color:var(--muted);font-size:.85rem}.tile-value{font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:700}.tile-value.good{color:var(--good)}.tile-sub{color:var(--muted);font-size:.9rem}.hero-sub{color:var(--muted);margin:4px 0 14px;font-size:1.05rem}.hero-sub b{color:var(--text)}.seg{background:var(--track);border-radius:14px;grid-template-columns:repeat(4,1fr);gap:4px;padding:4px;display:grid}.seg button{color:var(--muted);border-radius:10px;padding:8px 4px;font-size:.9rem;font-weight:600;transition:all .2s}.seg button.on{background:var(--card-strong);color:var(--text);box-shadow:0 1px 4px #0000001f}.period-nav{justify-content:space-between;align-items:center;margin:12px 0 4px;display:flex}.period-nav .icon-btn{font-size:1.5rem;line-height:1}.period-nav .icon-btn:disabled{opacity:.3}.period-title{text-transform:capitalize;font-weight:650}.period-total{justify-content:center;align-items:baseline;gap:12px;margin-top:6px;display:flex}.period-kwh{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:2rem;font-weight:750}.period-cost{color:var(--accent);font-variant-numeric:tabular-nums;font-size:1.2rem;font-weight:650}.cmp{text-align:center;color:var(--muted);margin:2px 0 10px;font-size:.9rem;font-weight:600}.cmp.down{color:var(--good)}.cmp.up{color:var(--bad)}.period-empty{text-align:center;padding:28px 8px 12px}.period-empty p{margin:4px 0}.sel-text{text-align:center;color:var(--muted);font-variant-numeric:tabular-nums;min-height:1.2em;margin:8px 0 0;font-size:.85rem}.export-note{color:var(--muted);align-items:baseline;gap:8px;margin:10px 0 0;font-size:.85rem;display:flex}.dot-export{background:var(--good);border-radius:3px;flex:none;width:10px;height:10px;transform:translateY(1px)}.bars2{--up:1}.bars2-plot{gap:3px;height:150px;display:flex}.bars2-col{border-radius:4px;flex-direction:column;flex:1;min-width:0;padding:0;display:flex}.bars2-col.sel{background:var(--track)}.bars2-up{flex:var(--up);border-bottom:1px solid var(--line);align-items:flex-end;display:flex}.bars2-down{flex:calc(1 - var(--up));align-items:flex-start;display:flex}.bar{background:color-mix(in srgb, var(--accent) 70%, transparent);border-radius:4px 4px 2px 2px;width:100%;min-height:2px;transition:height .5s,opacity .2s}.bar.now{background:color-mix(in srgb, var(--accent) 40%, transparent);outline:1.5px dashed var(--accent);outline-offset:-1.5px}.bar.future{background:0 0}.bar.dim{opacity:.35}.bar.export{background:var(--good);border-radius:2px 2px 4px 4px;min-height:0}.bars2-labels{gap:3px;margin-top:6px;display:flex}.bars2-labels span{min-width:0;color:var(--muted);text-align:center;white-space:nowrap;flex:1;font-size:.68rem;overflow:visible}.base-row{align-items:baseline;gap:10px;display:flex}.base-w{font-variant-numeric:tabular-nums;font-size:2rem;font-weight:750}.base-year{margin:2px 0 10px;font-weight:600}.base-share{gap:6px;margin-bottom:8px;display:grid}.base-share-bar{background:var(--track);border-radius:4px;height:8px;overflow:hidden}.base-share-bar span{background:var(--muted);border-radius:4px;height:100%;display:block}.base-line{stroke:var(--muted);stroke-width:1px;stroke-dasharray:4 4}.dash{border-top:1.5px dashed var(--muted);vertical-align:middle;width:14px;display:inline-block}.chart{position:relative}.chart svg{width:100%;height:130px;display:block}.chart-ticks{height:16px;position:relative}.chart-ticks span{color:var(--muted);font-size:.7rem;position:absolute;transform:translate(-50%)}.chart .grid{stroke:var(--line);stroke-width:1px}.chart-line{fill:none;stroke:var(--accent);stroke-width:2px}.chart-note{color:var(--muted);margin:6px 0 0;font-size:.85rem}.routines{gap:10px;display:grid}.routine{border-radius:var(--radius);background:var(--card);border:1px solid var(--line);align-items:center;gap:12px;padding:12px 14px;display:flex}.routine.off{opacity:.6}.routine-main{text-align:left;flex-direction:column;flex:1;min-width:0;display:flex}.routine-empty{color:var(--muted);text-align:center;justify-content:center;width:100%;font-size:.92rem}.routine-sheet{max-height:92dvh;overflow-y:auto}.field{border:1px solid var(--line);background:var(--card-strong);width:100%;color:var(--text);font:inherit;border-radius:14px;padding:12px 14px;font-size:16px}.time-field{text-align:center;margin-top:10px;font-size:1.3rem}.seg-3{grid-template-columns:repeat(3,1fr)}.offset{color:var(--muted);text-align:center;gap:6px;margin-top:10px;font-size:.9rem;display:grid}.offset input{width:100%;accent-color:var(--accent)}.days{grid-template-columns:repeat(7,1fr);gap:6px;margin-top:10px;display:grid}.days button,.chip{background:var(--track);color:var(--muted);border-radius:12px;padding:9px 0;font-size:.9rem;font-weight:650}.days button.on,.chip.on{background:var(--accent);color:#2a1a05}.chips{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.chip{padding:9px 14px}.link.danger{color:var(--bad);margin:14px auto 0;display:block}.edit-link{margin:18px auto 0;display:block}.new-area{margin-top:10px}.device-list{margin-top:8px;display:grid}.device-row{border-bottom:1px solid var(--line);text-align:left;grid-template-columns:1.6em 1fr auto 1em;align-items:center;gap:10px;padding:12px 2px;display:grid}.device-row:last-child{border-bottom:0}.device-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.device-row .muted{margin:0;font-size:.85rem}.device-chev{color:var(--muted);font-size:1.3rem}.weather-now{grid-template-columns:auto 1fr;align-items:center;gap:4px 16px;display:grid}.weather-big{font-size:3.6rem;line-height:1}.weather-temp{letter-spacing:-.03em;font-size:3rem;font-weight:750;line-height:1}.weather-cond{color:var(--muted);font-weight:600}.weather-facts{color:var(--muted);flex-wrap:wrap;grid-column:1/-1;gap:6px 16px;margin-top:12px;font-size:.92rem;display:flex}.weather-facts b{color:var(--text)}.hours{scrollbar-width:none;gap:4px;margin:0 -18px;padding:0 18px 4px;display:flex;overflow-x:auto}.hours::-webkit-scrollbar{display:none}.hour{background:var(--track);border-radius:14px;flex-direction:column;flex:none;align-items:center;gap:4px;width:52px;padding:8px 0;display:flex}.hour-time{color:var(--muted);font-size:.8rem}.hour-emoji{font-size:1.3rem}.hour-temp{font-weight:700}.hour-rain{color:var(--accent-2);font-size:.68rem;font-weight:600}.hour-rain.none{color:var(--muted)}.days-list{gap:10px;display:grid}.day-row{grid-template-columns:5.6em 1.8em 2em 1fr 2em;align-items:center;gap:8px;font-size:.95rem;display:grid}.day-name small{color:var(--accent-2);text-transform:none;font-size:.72rem;font-weight:600;display:block}.day-name{text-transform:capitalize;font-weight:600}.day-emoji{text-align:center;font-size:1.2rem}.day-lo{color:var(--muted);text-align:right}.day-hi{font-weight:700}.day-bar{background:var(--track);border-radius:3px;height:6px;position:relative}.day-bar span{background:linear-gradient(90deg, var(--accent-2), var(--accent));border-radius:3px;position:absolute;top:0;bottom:0}.toast{left:50%;bottom:calc(96px + env(safe-area-inset-bottom));z-index:35;background:var(--text);max-width:calc(100% - 32px);color:var(--bg);box-shadow:var(--shadow);text-align:center;border-radius:16px;padding:12px 18px;font-size:.92rem;font-weight:600;position:fixed;transform:translate(-50%)}.toast-enter-active,.toast-leave-active{transition:opacity .25s,transform .25s}.toast-enter-from,.toast-leave-to{opacity:0;transform:translate(-50%,10px)}.tabs{left:50%;bottom:calc(12px + env(safe-area-inset-bottom));z-index:20;background:color-mix(in srgb, var(--bg-2) 82%, transparent);border:1px solid var(--line);-webkit-backdrop-filter:blur(18px)saturate(1.4);box-shadow:var(--shadow);border-radius:26px;gap:4px;width:min(440px,100% - 32px);padding:6px;display:flex;position:fixed;transform:translate(-50%)}.tabs button{color:var(--muted);border-radius:20px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:8px 4px;font-size:.72rem;font-weight:600;transition:all .2s;display:flex}.tabs button.active{color:var(--text);background:var(--card-strong)}.tabs button.active .icon{color:var(--accent)}.empty{text-align:center;color:var(--text);padding:48px 16px}.empty p{margin:6px 0}.empty-emoji{font-size:2.6rem}.splash{place-items:center;min-height:100dvh;display:grid}.splash img{animation:1.4s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.5;transform:scale(.95)}}.primary,.secondary{border-radius:16px;padding:14px 22px;font-weight:650;display:inline-block}.primary{background:var(--accent);color:#2a1a05;width:100%;margin-top:8px}.primary:disabled{opacity:.6}.secondary{background:var(--card-strong);border:1px solid var(--line)}.login{place-items:center;min-height:100dvh;padding:24px 16px;display:grid}.login-card{background:var(--card);border:1px solid var(--line);width:100%;max-width:360px;box-shadow:var(--shadow);text-align:center;border-radius:28px;padding:28px 24px}.login-logo{border-radius:20px;margin-bottom:8px}.login-card h1{font-size:1.8rem}.login-card label{text-align:left;margin-top:14px;display:block}.login-card label span{color:var(--muted);margin:0 0 6px 4px;font-size:.85rem;display:block}.login-card input{border:1px solid var(--line);background:var(--card-strong);width:100%;color:var(--text);font:inherit;border-radius:14px;padding:14px 16px;font-size:16px}.login-card input:focus{outline:2px solid var(--accent);outline-offset:0}.login-error{color:var(--bad);margin:12px 0 0;font-size:.95rem}@media (max-width:719px){.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.plug{grid-column:1/-1}.light{min-height:104px}.light-main{padding:12px}.light-more{width:34px;height:34px;top:8px;right:8px}.room{margin-top:14px}.summary{scrollbar-width:none;flex-wrap:nowrap;margin:0 -16px 12px;padding:0 16px;overflow-x:auto}.summary::-webkit-scrollbar{display:none}.stat-pill{flex:none}.tiles{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.tile{padding:12px}.tile-value{font-size:1.1rem}.tile-label{font-size:.78rem}.card{padding:16px}.weather{padding:6px 12px;font-size:1.15rem}}@media (min-width:720px){.grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.rooms{grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:0 24px;display:grid}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
