:root{--night:#0f2a33;--night-2:#16404c;--chrome-hi:#e9eef0;--chrome-lo:#9fb0b6;--lcd:#0a2f2c;--lcd-off:#1b2a2c;--phosphor:#8ff5d2;--phosphor-dim:#4a7a6c;--eye:#e5322b;--cool:#6ccff6;--heat:#ffb547;--ink:#1d2a30;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:linear-gradient(180deg, var(--night-2), var(--night) 45%) fixed;min-height:100vh;color:var(--chrome-hi);-webkit-font-smoothing:antialiased;margin:0;font-family:Chakra Petch,system-ui,sans-serif}button{font:inherit}h1,h2{margin:0}.wrap{max-width:520px;padding:max(20px, env(safe-area-inset-top)) 16px max(40px, env(safe-area-inset-bottom));margin:0 auto}.eye{background:radial-gradient(circle at 35% 30%, var(--chrome-hi), var(--chrome-lo) 70%);border-radius:50%;flex:none;position:relative;box-shadow:inset 0 2px #fff4,0 6px 18px #0008}.eye:after{content:"";background:radial-gradient(circle, #ffd3cf 0 8%, var(--eye) 22%, #6a0f0b 55%, #170405 70%);border-radius:50%;animation:7s infinite blink;position:absolute;inset:22%;box-shadow:0 0 22px #e5322b88}@keyframes blink{0%,95%,to{transform:scaleY(1)}97%{transform:scaleY(.06)}}@media (prefers-reduced-motion:reduce){.eye:after{animation:none}}.top{align-items:center;gap:16px;margin-bottom:22px;display:flex}.brand{letter-spacing:.04em;font-size:1.6rem;font-weight:700;line-height:1}.say{color:#bcd3d8;margin:6px 0 0;font-size:.95rem;line-height:1.35}.module{background:linear-gradient(180deg, var(--chrome-hi), var(--chrome-lo));color:var(--ink);border-radius:18px;padding:10px;box-shadow:inset 0 1px #fff,inset 0 -2px #6c7d83,0 10px 24px #0007}.key{color:var(--ink);cursor:pointer;background:linear-gradient(#f7f9fa,#c9d3d6);border:0;border-radius:10px;font-weight:600;box-shadow:inset 0 1px #fff,0 2px #7f8f95}.key:active:not(:disabled),.key[aria-pressed=true]{background:linear-gradient(#b9c5c9,#e3e9eb);transform:translateY(1px);box-shadow:inset 0 2px 4px #0004}.key:disabled{color:#8a979c;cursor:default}button:focus-visible,input:focus-visible{outline:3px solid var(--cool);outline-offset:2px}.modes{grid-auto-columns:1fr;grid-auto-flow:column;gap:6px;margin-bottom:18px;display:grid}.modes .key{padding:10px 0;font-size:.9rem}.modes .key[aria-pressed=true][data-mode=cool]{color:#0b6c94}.modes .key[aria-pressed=true][data-mode=heat]{color:#a35c00}.lcd{background:var(--lcd);color:var(--phosphor);border-radius:10px;padding:12px 14px;transition:background .3s,color .3s;box-shadow:inset 0 3px 8px #000a}.zones{gap:14px;display:grid}.zone{grid-template-columns:1fr auto;align-items:stretch;gap:10px;display:grid}.zone .lcd{grid-template-columns:1fr auto;row-gap:2px;display:grid}.zone.off .lcd{background:var(--lcd-off);color:var(--phosphor-dim)}.name{color:inherit;font-size:1.05rem;font-weight:600}.state{place-self:center end;font-size:.85rem}.state .dot{background:currentColor;border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.zone.on.cool .state{color:var(--cool)}.zone.on.heat .state{color:var(--heat)}.temp{font-variant-numeric:tabular-nums;text-shadow:0 0 12px #8ff5d255;font-size:3rem;font-weight:500;line-height:1}.zone.off .temp{text-shadow:none}.temp small{margin-left:2px;font-size:1.1rem}.meta{text-align:right;place-self:end;font-size:.85rem;line-height:1.4}.meta b{font-variant-numeric:tabular-nums;font-weight:600}.waiting .meta b{animation:1s infinite pulse}@keyframes pulse{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.waiting .meta b{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;animation:none}}.controls{grid-template-rows:auto 1fr auto;gap:6px;width:64px;display:grid}.rocker{height:40px;font-size:1.4rem}.power{cursor:pointer;color:#7c8a90;background:#2a3337;border:0;border-radius:10px;font-size:.8rem;font-weight:700;box-shadow:inset 0 2px 5px #000a}.zone.on .power{color:var(--phosphor);background:#10302a;box-shadow:0 0 10px #8ff5d244,inset 0 2px 5px #000a}.power:disabled{cursor:default;opacity:.6}.notice p{margin:0;line-height:1.45}.notice p+p{color:var(--phosphor-dim);margin-top:8px}.problem{color:var(--heat);margin:-6px 0 14px;font-size:.9rem}.foot{color:#8fb0b7;align-items:center;gap:12px;margin-top:18px;font-size:.85rem;display:flex}.foot span:first-child{margin-right:auto}.link{color:inherit;cursor:pointer;background:0 0;border:0;padding:4px 0;text-decoration:underline}.toast{left:50%;bottom:max(20px, env(safe-area-inset-bottom));visibility:hidden;background:var(--lcd);color:var(--phosphor);border-radius:12px;width:max-content;max-width:calc(100% - 32px);padding:12px 16px;transition:transform .25s,visibility .25s;position:fixed;transform:translate(-50%)translateY(160%);box-shadow:0 8px 24px #000a}.toast.show{visibility:visible;transform:translate(-50%)translateY(0)}.toast.error{color:#ffd3cf;background:#3a1210}.login{text-align:center;flex-direction:column;align-items:center;padding-top:12vh;display:flex}.login .eye{margin-bottom:20px}.login .say{margin-bottom:22px}.login form{text-align:left;gap:10px;width:100%;max-width:360px;display:grid}.form{gap:12px;display:grid}.form label{color:var(--phosphor-dim);gap:4px;font-size:.85rem;display:grid}.form input{font:inherit;color:var(--phosphor);background:#061f1d;border:1px solid #1f4a43;border-radius:8px;padding:10px 12px;font-size:1rem}.error{color:#ffb4ad;margin:0;font-size:.9rem}.wide{padding:12px;font-size:1rem}.lab{--chart-surface:#0f1e24;--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--series-4:#c98500;max-width:820px}.lab-top{align-items:baseline;gap:16px;margin-bottom:18px;display:flex}.lab h2{margin:0 0 8px;font-size:1.1rem;font-weight:600}.lab-empty{color:#8fb0b7}.lab-form{color:var(--phosphor);gap:12px;display:grid}.lab-form p{margin:0;line-height:1.45}.lab-form .hint{color:var(--phosphor-dim);font-size:.9rem}.lab-form fieldset{border:1px solid #1f4a43;border-radius:8px;gap:10px;margin:0;padding:10px 12px;display:grid}.lab-form legend{padding:0 6px}.lab-form label{color:var(--phosphor-dim);gap:4px;font-size:.85rem;display:grid}.lab-form label.check{color:var(--phosphor);align-items:center;gap:8px;font-size:.95rem;display:flex}.lab-form input[type=number],.lab-form select,.note-form input{font:inherit;color:var(--phosphor);background:#061f1d;border:1px solid #1f4a43;border-radius:8px;padding:8px 10px}.outputs{flex-wrap:wrap;gap:12px;display:flex}.durations{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;display:grid}.estimate{color:var(--chrome-hi)}.lab .module+.key,.lab .module .key.wide{width:100%;margin-top:10px}.lab section.module{gap:10px;display:grid}.series{gap:16px;display:grid}.series-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.now-step{grid-template-columns:1fr auto;gap:4px 12px;display:grid}.now-step .countdown{font-variant-numeric:tabular-nums;grid-column:1/-1;font-size:2rem}.instruction{color:var(--heat);grid-column:1/-1;margin:6px 0 0;line-height:1.4}.lab-actions{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-top:10px;display:grid}.lab-actions .key{padding:10px 8px}.key.danger{color:#8a1d16}.note-form{gap:8px;margin-top:8px;display:flex}.note-form input{flex:1;min-width:0}.note-form .key{padding:0 16px}.verdict{background:var(--lcd);color:var(--phosphor);border-radius:12px;padding:12px 14px}.verdict p{margin:0;font-size:1.05rem;line-height:1.4}.verdict ul{color:#bcd3d8;margin:8px 0 0;padding-left:18px;line-height:1.45}.chart{background:var(--chart-surface);border-radius:12px;margin:0;padding:12px}.chart figcaption{color:#bcd3d8;margin-bottom:6px;font-size:.9rem}.legend{color:#bcd3d8;flex-wrap:wrap;gap:4px 14px;margin:0 0 6px;padding:0;font-size:.85rem;list-style:none;display:flex}.swatch{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:6px;display:inline-block}.swatch.band{background:#ffffff1a}.chart-box{position:relative}.chart svg{touch-action:pan-y;width:100%;height:auto;display:block}.chart .band{fill:#ffffff12}.chart .grid{stroke:#ffffff14;stroke-width:1px}.chart .tick{fill:#8fb0b7;font-family:inherit;font-size:11px}.chart .line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart .line.watched{stroke-width:3px}.chart .end-label{fill:#d7e6ea;font-family:inherit;font-size:11px}.chart .crosshair{stroke:#fff5;stroke-width:1px}.chart .dot{stroke:var(--chart-surface);stroke-width:2px}.tip{pointer-events:none;color:#e9eef0;white-space:nowrap;background:#061215;border:1px solid #fff2;border-radius:8px;gap:2px;padding:6px 8px;font-size:.8rem;display:grid;position:absolute;top:6px;transform:translate(-50%)}.tip .swatch{width:8px;height:8px}.matrix-wrap{overflow-x:auto}.matrix{border-collapse:separate;border-spacing:2px;width:100%;font-size:.85rem}.matrix caption{text-align:left;color:#bcd3d8;padding-bottom:6px}.matrix th{color:#bcd3d8;text-align:left;white-space:nowrap;padding:4px 6px;font-weight:500}.matrix th.watched{color:var(--chrome-hi);text-underline-offset:3px;text-decoration:underline}.matrix td{text-align:center;color:#e9eef0;font-variant-numeric:tabular-nums;background:color-mix(in oklab, var(--series-1) var(--strength), var(--chart-surface));border-radius:4px;min-width:64px;padding:6px 4px;position:relative}.matrix td.on{outline-offset:-2px;outline:2px solid #fff5}.matrix td.stray.watched{outline:2px solid var(--heat);outline-offset:-2px}.matrix td .tag{color:#bcd3d8;font-size:.65rem;display:block}.matrix tr{cursor:pointer}.matrix tr.selected th{color:var(--chrome-hi)}.history ul,.notes ul{gap:6px;margin:0;padding:0;list-style:none;display:grid}.history li{color:#8fb0b7;flex-wrap:wrap;gap:4px 12px;font-size:.9rem;display:flex}.notes li{color:#bcd3d8;font-size:.9rem}.notes time{color:#8fb0b7}
