:root{--md-shape-xs:4px;--md-shape-sm:8px;--md-shape-md:12px;--md-shape-lg:16px;--md-shape-xl:28px;--md-shape-full:999px;--safe-top:0px;--safe-bottom:0px;--inset-top:max(env(safe-area-inset-top), var(--safe-top));--inset-bottom:max(env(safe-area-inset-bottom), var(--safe-bottom));--ease-emphasized:cubic-bezier(.2, 0, 0, 1);--ease-emphasized-decel:cubic-bezier(.05, .7, .1, 1);--ease-standard:cubic-bezier(.2, 0, 0, 1);--md-elev-1:0 1px 2px #0000004d, 0 1px 3px 1px #00000026;--md-elev-2:0 1px 2px #0000004d, 0 2px 6px 2px #00000026;--md-elev-3:0 4px 8px 3px #00000026, 0 1px 3px #0000004d;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Roboto Flex,system-ui,-apple-system,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--md-sys-color-surface,#141218);color:var(--md-sys-color-on-surface,#e6e0e9);overscroll-behavior:none;transition:background .4s var(--ease-standard)}.icon{letter-spacing:normal;text-transform:none;white-space:nowrap;font-feature-settings:"liga";-webkit-user-select:none;user-select:none;font-variation-settings:"FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;direction:ltr;font-family:Material Symbols Rounded;font-style:normal;font-weight:400;line-height:1;display:inline-block}.icon.fill{font-variation-settings:"FILL" 1, "wght" 500, "GRAD" 0, "opsz" 24}.display-large{letter-spacing:-.25px;font-size:57px;font-weight:400;line-height:64px}.display-medium{font-size:45px;font-weight:400;line-height:52px}.headline-medium{font-size:28px;font-weight:500;line-height:36px}.headline-small{font-size:24px;font-weight:500;line-height:32px}.title-large{font-size:22px;font-weight:500;line-height:28px}.title-medium{letter-spacing:.15px;font-size:16px;font-weight:600;line-height:24px}.label-large{letter-spacing:.1px;font-size:14px;font-weight:600;line-height:20px}.label-medium{letter-spacing:.5px;font-size:12px;font-weight:600;line-height:16px}.body-large{letter-spacing:.5px;font-size:16px;font-weight:400;line-height:24px}.body-medium{letter-spacing:.25px;font-size:14px;font-weight:400;line-height:20px}.body-small{letter-spacing:.4px;font-size:12px;font-weight:400;line-height:16px}.app-shell{background:var(--md-sys-color-surface);flex-direction:column;max-width:480px;height:100%;margin:0 auto;display:flex;position:relative}.scroll-area{padding:0 16px calc(96px + var(--inset-bottom));scrollbar-width:none;flex:1;overflow:hidden auto}.scroll-area::-webkit-scrollbar{display:none}.top-bar{padding:12px 8px 8px;padding-top:calc(12px + var(--inset-top));z-index:10;background:var(--md-sys-color-surface);align-items:center;gap:4px;display:flex;position:sticky;top:0}.top-bar h1{flex:1;margin:0 8px}.top-bar .subtitle{color:var(--md-sys-color-on-surface-variant)}.card{background:var(--md-sys-color-surface-container);border-radius:var(--md-shape-lg);padding:16px}.card-low{background:var(--md-sys-color-surface-container-low)}.card-high{background:var(--md-sys-color-surface-container-high)}.btn{border-radius:var(--md-shape-full);height:40px;font:inherit;letter-spacing:.1px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:box-shadow .2s, background .2s, transform .1s var(--ease-emphasized);border:none;justify-content:center;align-items:center;gap:8px;padding:0 24px;font-size:14px;font-weight:600;display:inline-flex;position:relative;overflow:hidden}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.38;pointer-events:none}.btn .icon{font-size:18px}.btn-filled{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}.btn-tonal{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.btn-outlined{color:var(--md-sys-color-primary);box-shadow:inset 0 0 0 1px var(--md-sys-color-outline);background:0 0}.btn-text{color:var(--md-sys-color-primary);background:0 0;padding:0 12px}.btn-error{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.icon-btn{border-radius:var(--md-shape-full);width:48px;height:48px;color:var(--md-sys-color-on-surface-variant);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;transition:background .2s,transform .1s;display:inline-flex;position:relative;overflow:hidden}.icon-btn:active{transform:scale(.92)}.icon-btn.selected{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.state-layer:after{content:"";opacity:0;pointer-events:none;background:currentColor;transition:opacity .15s;position:absolute;inset:0}.state-layer:hover:after{opacity:.08}.state-layer:active:after{opacity:.12}.fab{right:16px;bottom:calc(96px + var(--inset-bottom));border-radius:var(--md-shape-lg);background:var(--md-sys-color-primary-container);min-width:56px;height:56px;color:var(--md-sys-color-on-primary-container);font:inherit;box-shadow:var(--md-elev-3);cursor:pointer;z-index:11;transition:transform .15s var(--ease-emphasized);border:none;align-items:center;gap:12px;padding:0 20px;font-weight:600;display:inline-flex;position:absolute}.fab:active{transform:scale(.95)}.fab .icon{font-size:24px}.chip{border-radius:var(--md-shape-md);background:var(--md-sys-color-surface-container-highest);height:38px;color:var(--md-sys-color-on-surface);font:inherit;cursor:pointer;transition:background .2s var(--ease-emphasized), color .2s, transform .1s;border:none;justify-content:center;align-items:center;gap:6px;padding:0 16px;font-size:14px;font-weight:600;display:inline-flex}.chip:active{transform:scale(.95)}.chip.selected{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}.chip .icon{font-size:18px}.mode-chip{border-radius:var(--md-shape-sm);letter-spacing:.3px;align-items:center;gap:6px;height:28px;padding:0 12px 0 8px;font-size:13px;font-weight:700;display:inline-flex}.mode-chip .icon{font-size:16px}.nav-bar{height:calc(80px + var(--inset-bottom));padding-bottom:var(--inset-bottom);background:var(--md-sys-color-surface-container);z-index:12;display:flex;position:absolute;bottom:0;left:0;right:0}.nav-item{color:var(--md-sys-color-on-surface-variant);cursor:pointer;font:inherit;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4px;padding-top:12px;display:flex}.nav-item .pill{border-radius:var(--md-shape-full);width:64px;height:32px;transition:background .2s var(--ease-emphasized);justify-content:center;align-items:center;display:flex}.nav-item .icon{font-size:24px;transition:font-variation-settings .2s}.nav-item .label{font-size:12px;font-weight:600}.nav-item.active{color:var(--md-sys-color-on-surface)}.nav-item.active .pill{background:var(--md-sys-color-secondary-container)}.nav-item.active .icon{color:var(--md-sys-color-on-secondary-container);font-variation-settings:"FILL" 1, "wght" 500, "GRAD" 0, "opsz" 24}.gauge-wrap{flex-direction:column;align-items:center;padding:8px 0 4px;display:flex}.gauge{aspect-ratio:1;width:min(300px,76vw);position:relative}.gauge svg{width:100%;height:100%;transform:rotate(135deg)}.gauge-center{flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex;position:absolute;inset:0}.gauge-temp{letter-spacing:-2px;font-variant-numeric:tabular-nums;color:var(--md-sys-color-on-surface);font-size:68px;font-weight:700;line-height:1}.gauge-unit{color:var(--md-sys-color-on-surface-variant);font-size:24px;font-weight:500}.gauge-target{color:var(--md-sys-color-on-surface-variant);align-items:center;gap:4px;font-weight:600;display:inline-flex}.stat-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.stat{background:var(--md-sys-color-surface-container);border-radius:var(--md-shape-lg);flex-direction:column;justify-content:space-between;gap:2px;min-height:84px;padding:14px 16px;display:flex}.stat-head{color:var(--md-sys-color-on-surface-variant);align-items:center;gap:8px;display:flex}.stat-head .icon{font-size:18px}.stat-value{letter-spacing:-.5px;color:var(--md-sys-color-on-surface);font-variant-numeric:tabular-nums;font-size:26px;font-weight:700}.stat-value small{color:var(--md-sys-color-on-surface-variant);margin-left:3px;font-size:14px;font-weight:600}.temp-control{flex-direction:column;gap:14px;display:flex}.temp-control-row{align-items:center;gap:14px;display:flex}.slider{cursor:pointer;touch-action:none;flex:1;height:36px;position:relative}.slider-track{border-radius:var(--md-shape-full);background:var(--md-sys-color-secondary-container);height:14px;position:absolute;top:50%;left:0;right:0;overflow:hidden;transform:translateY(-50%)}.slider-active{border-radius:var(--md-shape-full);background:var(--md-sys-color-primary);position:absolute;top:0;bottom:0;left:0}.slider-handle{border-radius:var(--md-shape-full);background:var(--md-sys-color-primary);width:6px;height:26px;box-shadow:0 0 0 3px var(--md-sys-color-surface-container);transition:height .15s;position:absolute;top:50%;transform:translate(-50%,-50%)}.stepper{border-radius:var(--md-shape-md);background:var(--md-sys-color-secondary-container);width:52px;height:52px;color:var(--md-sys-color-on-secondary-container);cursor:pointer;border:none;flex:none;justify-content:center;align-items:center;transition:transform .1s,background .2s;display:inline-flex}.stepper:active{transform:scale(.92)}.stepper .icon{font-size:28px}.preset-row{flex-wrap:wrap;gap:8px;display:flex}.switch{border-radius:var(--md-shape-full);background:var(--md-sys-color-surface-container-highest);width:52px;height:32px;box-shadow:inset 0 0 0 2px var(--md-sys-color-outline);cursor:pointer;border:none;flex:none;transition:background .2s,box-shadow .2s;position:relative}.switch:after{content:"";border-radius:var(--md-shape-full);background:var(--md-sys-color-outline);width:16px;height:16px;transition:transform .2s var(--ease-emphasized), width .2s, height .2s, background .2s, left .2s;position:absolute;top:50%;left:8px;transform:translateY(-50%)}.switch.on{background:var(--md-sys-color-primary);box-shadow:inset 0 0 0 2px var(--md-sys-color-primary)}.switch.on:after{background:var(--md-sys-color-on-primary);width:24px;height:24px;left:4px;transform:translate(20px,-50%)}.list{flex-direction:column;display:flex}.row{align-items:center;gap:16px;min-height:56px;padding:14px 4px;display:flex}.row+.row{border-top:1px solid var(--md-sys-color-surface-container-highest)}.row-text{flex:1;min-width:0}.row-title{color:var(--md-sys-color-on-surface)}.row-sub{color:var(--md-sys-color-on-surface-variant);margin-top:2px}.row-lead{border-radius:var(--md-shape-md);background:var(--md-sys-color-surface-container-highest);width:40px;height:40px;color:var(--md-sys-color-on-surface-variant);flex:none;justify-content:center;align-items:center;display:inline-flex}.segmented{border-radius:var(--md-shape-full);box-shadow:inset 0 0 0 1px var(--md-sys-color-outline);display:inline-flex;overflow:hidden}.segmented button{color:var(--md-sys-color-on-surface);font:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:8px 14px;font-size:13px;font-weight:600;display:inline-flex}.segmented button.sel{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.segmented button+button{box-shadow:inset 1px 0 0 var(--md-sys-color-outline)}.cycle{background:var(--md-sys-color-surface-container-highest);border-radius:var(--md-shape-full);flex:none;align-items:center;gap:2px;padding:2px;display:inline-flex}.cycle-btn{width:32px;height:32px;color:var(--md-sys-color-on-surface-variant);cursor:pointer;background:0 0;border:none;border-radius:50%;place-items:center;transition:background .15s;display:grid}.cycle-btn:active{background:var(--md-sys-color-secondary-container)}.cycle-label{text-align:center;min-width:70px;color:var(--md-sys-color-on-surface);font-size:13px;font-weight:700}.connect{text-align:center;padding:32px 28px calc(48px + var(--inset-bottom));flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;display:flex}.connect-art{border-radius:var(--md-shape-xl);background:var(--md-sys-color-primary-container);width:132px;height:132px;color:var(--md-sys-color-on-primary-container);box-shadow:var(--md-elev-1);place-items:center;margin-bottom:16px;display:grid}.connect-art .icon{font-size:72px}.connect h2{color:var(--md-sys-color-on-surface);margin:0}.connect p{color:var(--md-sys-color-on-surface-variant);max-width:320px;margin:4px 0 0}.banner{text-align:left;background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);border-radius:var(--md-shape-md);align-items:flex-start;gap:12px;width:100%;margin-top:12px;padding:14px 16px;display:flex}.banner.info{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.section-label{color:var(--md-sys-color-on-surface-variant);text-transform:uppercase;margin:22px 4px 10px}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.spin-slow{animation:1.4s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.86)}}.dot{border-radius:50%;width:8px;height:8px;display:inline-block}.fade-in{animation:fade .4s var(--ease-emphasized-decel)}@keyframes fade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.sheet-scrim{z-index:20;background:#0006;align-items:flex-end;animation:.2s fade;display:flex;position:absolute;inset:0}.sheet{background:var(--md-sys-color-surface-container-low);border-radius:var(--md-shape-xl) var(--md-shape-xl) 0 0;width:100%;padding:12px 20px calc(24px + var(--inset-bottom));animation:sheet-up .3s var(--ease-emphasized-decel)}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:none}}.sheet-handle{background:var(--md-sys-color-outline-variant);border-radius:2px;width:32px;height:4px;margin:0 auto 16px}.color-dots{flex-wrap:wrap;justify-content:center;gap:14px;padding:8px 0 4px;display:flex}.color-dot{cursor:pointer;color:#fff;width:48px;height:48px;transition:transform .15s var(--ease-emphasized);border:none;border-radius:50%;place-items:center;display:grid}.color-dot:active{transform:scale(.9)}.color-dot .icon{font-size:26px}.monitor{flex-direction:column;gap:8px;display:flex}.monitor-col{flex-direction:column;gap:8px;min-width:0;display:flex}.content-narrow{width:100%}@media (width>=840px){.app-shell{max-width:960px}.scroll-area{padding:0 24px calc(96px + var(--inset-bottom))}.monitor{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:20px;display:grid}.monitor .gauge-wrap{padding-top:16px}.monitor .stat-grid{grid-template-columns:1fr 1fr}.content-narrow{max-width:620px;margin:0 auto}.nav-bar{justify-content:center;gap:24px}.nav-item{flex:0 0 120px}}@media (width>=840px) and (orientation:landscape){.gauge{width:min(280px,30vw)}}
