:root{color-scheme:dark;--bg: #0d0f15;--surface: #161922;--surface-2: #1e2230;--line: #2a2f3e;--text: #eef0f6;--dim: #9aa1b2;--faint: #6b7286;--accent: #7aa8ff;--ok: #4ade80;--warn: #fbbf24;--bad: #f87171;--heat: #ff7a45;--demo: #c084fc;--profile: #7aa8ff;--radius: 16px;--tabbar: 64px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text)}body{font-size:16px;line-height:1.4;overscroll-behavior-y:none}button{font:inherit;color:inherit;cursor:pointer}input,select{font:inherit;color:var(--text)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{min-height:100dvh;display:flex;flex-direction:column;padding-top:env(safe-area-inset-top)}.main{flex:1;width:100%;max-width:560px;margin:0 auto;padding:12px 16px calc(var(--tabbar) + 24px + env(safe-area-inset-bottom))}.main.has-dock{padding-bottom:calc(var(--tabbar) + 130px + env(safe-area-inset-bottom))}.topbar{position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.topbar-in{max-width:560px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:10px}.devname{font-weight:650;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:13px;font-weight:600;background:var(--surface-2);color:var(--dim);white-space:nowrap;border:0}.pill .dot{width:8px;height:8px;border-radius:50%;background:currentColor}.pill.ok{color:var(--ok)}.pill.warn{color:var(--warn)}.pill.bad{color:var(--bad)}.pill.busy .dot{animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.25}}.battery{font-size:13px;color:var(--dim);white-space:nowrap;font-variant-numeric:tabular-nums}.battery.low{color:var(--warn)}.battery.crit{color:var(--bad)}.demo-banner{background:var(--demo);color:#1b0b2e;font-weight:700;text-align:center;font-size:13px;padding:4px 8px;letter-spacing:.02em}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:12px}.card h2{font-size:15px;margin:0 0 10px;color:var(--dim);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.card h3{font-size:16px;margin:0 0 6px}.muted{color:var(--dim)}.faint{color:var(--faint);font-size:13px}.row{display:flex;gap:8px;align-items:center}.row.wrap{flex-wrap:wrap}.spread{display:flex;justify-content:space-between;align-items:center;gap:8px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.btn{min-height:48px;padding:0 16px;border-radius:14px;border:1px solid var(--line);background:var(--surface-2);font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px;touch-action:manipulation;user-select:none}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn.primary{background:var(--accent);color:#0b1020;border-color:transparent}.btn.danger{background:transparent;color:var(--bad);border-color:color-mix(in srgb,var(--bad) 45%,transparent)}.btn.block{width:100%}.btn.sm{min-height:40px;padding:0 12px;border-radius:12px;font-size:14px}.btn.icon{width:48px;padding:0;font-size:22px}.banner{border-radius:var(--radius);padding:14px;margin-bottom:12px;border:1px solid var(--line);background:var(--surface)}.banner.warn{border-color:color-mix(in srgb,var(--warn) 40%,var(--line))}.banner.bad{border-color:color-mix(in srgb,var(--bad) 45%,var(--line))}.banner p{margin:4px 0 10px;color:var(--dim)}.gauge{position:relative;display:grid;place-items:center;margin:4px auto 6px;width:min(66vw,270px);aspect-ratio:1}.gauge svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(135deg)}.gauge .track{stroke:var(--surface-2)}.gauge .bar{stroke:var(--profile);transition:stroke-dashoffset .6s ease,stroke .3s}.gauge .bar.heating{stroke:var(--heat)}.gauge-center{text-align:center;position:relative}.gauge-temp{font-size:clamp(56px,18vw,76px);font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1}.gauge-temp small{font-size:24px;font-weight:500;color:var(--dim);margin-left:2px}.gauge-sub{color:var(--dim);font-size:15px;margin-top:6px;font-variant-numeric:tabular-nums}.badge{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.06em;padding:2px 8px;border-radius:6px;text-transform:uppercase}.badge.live{background:color-mix(in srgb,var(--ok) 18%,transparent);color:var(--ok)}.badge.cached{background:var(--surface-2);color:var(--warn)}.badge.demo{background:color-mix(in srgb,var(--demo) 22%,transparent);color:var(--demo)}.session-label{font-weight:700;font-size:15px;margin-top:8px}.session-label.heating{color:var(--heat)}.session-label.holding{color:var(--ok)}.chips{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.chip{min-height:64px;border-radius:14px;border:2px solid transparent;background:var(--surface-2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px 2px;font-variant-numeric:tabular-nums}.chip .sw{width:14px;height:14px;border-radius:50%}.chip .t{font-size:14px;font-weight:650}.chip .n{font-size:11px;color:var(--dim)}.chip.active{border-color:var(--c);background:color-mix(in srgb,var(--c) 14%,var(--surface-2))}.chip.pending{animation:pulse 1s infinite}.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;text-align:center}.fact .v{font-weight:650;font-size:17px;font-variant-numeric:tabular-nums}.fact .k{font-size:12px;color:var(--dim)}.dock{position:fixed;left:0;right:0;bottom:calc(var(--tabbar) + env(safe-area-inset-bottom));z-index:6;padding:8px 16px;background:linear-gradient(to top,var(--bg) 70%,transparent)}.dock-in{max-width:560px;margin:0 auto;display:flex;gap:8px}.hold-btn{position:relative;overflow:hidden;flex:1;min-height:64px;border-radius:18px;border:0;background:var(--heat);color:#1d0b02;font-weight:750;font-size:18px;letter-spacing:.01em;touch-action:none;user-select:none;-webkit-user-select:none}.hold-btn .fill{position:absolute;inset:0;background:#ffffff59;transform-origin:left;transform:scaleX(0)}.hold-btn span{position:relative}.hold-btn:disabled{background:var(--surface-2);color:var(--faint)}.stop-btn{flex:1;min-height:64px;border-radius:18px;border:0;background:var(--bad);color:#1e0505;font-weight:800;font-size:20px}.ext-btn{min-height:64px;min-width:96px;border-radius:18px;border:1px solid var(--line);background:var(--surface-2);font-weight:700;font-size:17px}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:7;height:calc(var(--tabbar) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--line);display:flex;justify-content:center}.tabbar-in{display:flex;width:100%;max-width:560px}.tab{flex:1;border:0;background:none;color:var(--faint);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;font-weight:600}.tab svg{width:22px;height:22px}.tab.on{color:var(--text)}.field{margin:10px 0}.field label{display:block;font-size:13px;color:var(--dim);margin-bottom:6px}.num{display:flex;align-items:stretch;gap:6px}.num input{flex:1;min-width:0;text-align:center;font-size:22px;font-weight:650;background:var(--bg);border:1px solid var(--line);border-radius:12px;min-height:52px;font-variant-numeric:tabular-nums}.num .btn{min-width:52px;font-size:20px}input[type=text],select{width:100%;min-height:48px;border-radius:12px;border:1px solid var(--line);background:var(--bg);padding:0 12px}input[type=range]{width:100%;accent-color:var(--accent);height:36px}.seg{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.seg button{min-height:52px;border-radius:12px;border:1px solid var(--line);background:var(--surface-2);font-weight:600;font-size:14px}.seg button.on{background:color-mix(in srgb,var(--accent) 22%,var(--surface-2));border-color:var(--accent)}.toggle{display:flex;justify-content:space-between;align-items:center;min-height:52px}.switch{width:52px;height:32px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);position:relative;flex:none}.switch:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:var(--dim);transition:transform .2s}.switch.on{background:var(--accent)}.switch.on:after{transform:translate(20px);background:#0b1020}.err{color:var(--bad);font-size:14px;margin:4px 0}.list{list-style:none;padding:0;margin:0}.list li{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line);font-size:15px}.list li:last-child{border-bottom:0}.list li span:first-child{color:var(--dim)}.list li span:last-child{text-align:right;word-break:break-word;font-variant-numeric:tabular-nums}.lights{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}.light{min-height:60px;border-radius:12px;border:2px solid transparent;background:var(--surface-2);font-size:13px;font-weight:600;padding:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.light .sw{width:22px;height:22px;border-radius:50%}.light.on{border-color:var(--accent)}.cmd{font-size:13px;display:inline-flex;gap:6px;align-items:center}.cmd.pending,.cmd.sent{color:var(--warn)}.cmd.confirmed{color:var(--ok)}.cmd.unconfirmed{color:var(--warn)}.cmd.failed{color:var(--bad)}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--tabbar) + 96px + env(safe-area-inset-bottom));z-index:8;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:8px 14px;font-size:14px;max-width:calc(100% - 32px);box-shadow:0 8px 30px #0006}.curve svg{width:100%;height:160px;background:var(--bg);border-radius:12px;border:1px solid var(--line)}.pts{display:grid;grid-template-columns:1fr 1fr 44px;gap:6px;align-items:center;margin-top:8px}.pts input{width:100%;min-height:44px;border-radius:10px;border:1px solid var(--line);background:var(--bg);text-align:center;font-variant-numeric:tabular-nums}.scrim{position:fixed;inset:0;background:#0009;z-index:20;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--surface);border:1px solid var(--line);border-radius:20px 20px 0 0;padding:18px 16px calc(18px + env(safe-area-inset-bottom));width:100%;max-width:560px}@media (min-width: 900px){.main,.topbar-in{max-width:1040px}.layout-wide{display:grid;grid-template-columns:420px 1fr;gap:16px;align-items:start}.dock{position:static;background:none;padding:0;margin-top:4px}.dock-in{max-width:none}.main,.main.has-dock{padding-bottom:calc(var(--tabbar) + 24px)}.toast{bottom:96px}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
