:root{color-scheme:dark;--bg: #0f1317;--card: #1b222a;--card-active: #2b333c;--card-dim: #161b21;--text: #f1eee8;--muted: #a3acb5;--disabled: #6f7a85;--accent: #f08a4b;--accent-light: #ffb07a;--accent-ink: #1a0f08;--warm-bg: #2a1d14;--ok: #5fc59a;--nav-h: 76px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;background:var(--bg);color:var(--text)}body{font:400 14px/1.4 Sora,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none;padding:0}button:disabled{cursor:default}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none}.screen{max-width:430px;margin:0 auto;min-height:100dvh;padding:max(20px,env(safe-area-inset-top)) 20px calc(var(--nav-h) + env(safe-area-inset-bottom) + 12px);display:flex;flex-direction:column;gap:20px}.header{display:flex;align-items:center;justify-content:space-between;gap:12px}.header .eyebrow{font-size:12px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}.header .title{font-size:22px;font-weight:700;line-height:1.2}.pill{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;background:var(--card);font-size:12px;color:var(--muted);white-space:nowrap}.pill .dot{width:8px;height:8px;border-radius:50%;background:var(--disabled);flex:none}.pill.online .dot{background:var(--ok)}.card{padding:16px;border-radius:16px;background:var(--card)}.card.warm{background:var(--warm-bg)}.card.dim{background:var(--card-dim)}.card-title{font-size:13px;color:var(--muted)}.row{display:flex;align-items:center;gap:12px}.row.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:4px}.muted{color:var(--muted)}.small{font-size:12px}.ring-wrap{display:flex;flex-direction:column;align-items:center;gap:4px;padding-top:4px}.ring{position:relative;width:260px;height:260px}.ring>svg{position:absolute;inset:0}.ring .track{stroke:var(--card)}.ring .arc{stroke:var(--accent);transition:stroke-dashoffset .6s ease}.ring .center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.ring .big{font-size:64px;font-weight:700;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.ring .target{font-size:14px;color:var(--muted)}.ring .target b{color:var(--text);font-weight:600}.state-badge{margin-top:10px;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:var(--warm-bg);color:var(--accent-light);font-size:12px;font-weight:600}.state-badge.off{background:var(--card);color:var(--muted)}.state-badge.error{background:var(--warm-bg);color:var(--accent)}.adjust{display:flex;align-items:center;gap:28px;margin-top:4px}.adjust .label{font-size:13px;color:var(--muted);width:90px;text-align:center}.round{width:56px;height:56px;border-radius:50%;background:var(--card);color:var(--text);font-size:28px;line-height:1;display:grid;place-items:center}.round:active{background:var(--card-active)}.round:disabled{color:var(--disabled)}.segmented{display:flex;gap:6px;padding:4px;border-radius:14px;background:var(--card)}.segmented button{flex:1;height:44px;border-radius:10px;color:var(--muted);font-size:13px}.segmented button.active{background:var(--card-active);color:var(--text);font-weight:600}.segmented.grid2{display:grid;grid-template-columns:1fr 1fr}.segmented.compact button{height:36px;padding:0 12px;border-radius:9px;font-size:12px;flex:none}.segmented.compact{border-radius:12px}.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.tiles.two{grid-template-columns:1fr 1fr}.tile{padding:12px;border-radius:14px;background:var(--card);display:flex;flex-direction:column;gap:4px}.tile .label{font-size:11px;color:var(--muted)}.tile .value{font-size:18px;font-weight:600;font-variant-numeric:tabular-nums}.tiles.two .tile{padding:14px}.tiles.two .tile .value{font-size:22px;font-weight:700}.primary{height:60px;border-radius:18px;background:var(--accent);color:var(--accent-ink);font-size:17px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:10px;width:100%}.primary.outline{background:var(--card);color:var(--accent);box-shadow:inset 0 0 0 2px var(--accent)}.primary:disabled{opacity:.55}.primary.pending{background:var(--card);color:var(--muted);box-shadow:inset 0 0 0 2px var(--card-active)}.spinner{width:18px;height:18px;border-radius:50%;border:2px solid var(--card-active);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.iconbtn{width:44px;height:44px;border-radius:12px;background:var(--accent);color:var(--accent-ink);font-size:26px;line-height:1;display:grid;place-items:center}.iconbtn.ghost{background:var(--card);color:var(--text);font-size:14px;font-weight:600;width:auto;padding:0 14px}.timer{padding:16px;border-radius:16px;background:var(--card);display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;width:100%}.timer .time{font-size:26px;font-weight:700;line-height:1}.timer .desc{font-size:13px;color:var(--muted)}.chips{display:flex;gap:4px;flex-wrap:wrap}.chip{font-size:10px;padding:3px 7px;border-radius:6px;background:var(--card-active);color:var(--text)}.chip.off{background:var(--card-dim);color:var(--disabled)}.chip.big{font-size:13px;padding:9px 12px;border-radius:10px;min-width:44px;text-align:center}.switch{appearance:none;width:48px;height:28px;border-radius:999px;background:var(--card-active);position:relative;margin:0;cursor:pointer;flex:none}.switch:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:var(--muted);transition:left .15s}.switch:checked{background:var(--accent)}.switch:checked:after{left:23px;background:var(--accent-ink)}.sheet-backdrop{position:fixed;inset:0;background:#0000008c;z-index:20;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:430px;max-height:92dvh;overflow:auto;background:var(--bg);border-radius:20px 20px 0 0;padding:16px 20px calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:16px}.sheet h2{margin:0;font-size:18px;font-weight:700}.field{display:flex;flex-direction:column;gap:8px}.field>span{font-size:12px;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}.input{height:48px;padding:0 14px;border-radius:12px;background:var(--card);border:1px solid transparent;color:var(--text);width:100%}.input:focus{outline:none;border-color:var(--accent)}input.input[type=time]{font-size:22px;font-weight:700}.stepper{display:grid;grid-template-columns:48px 1fr 48px;align-items:center;gap:8px}.stepper button{height:48px;border-radius:12px;background:var(--card);font-size:24px}.stepper .val{text-align:center;font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}.stepper .val small{font-size:13px;color:var(--muted);font-weight:400}.sheet-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.btn{height:52px;border-radius:14px;background:var(--card);color:var(--text);font-weight:600;font-size:15px}.btn.accent{background:var(--accent);color:var(--accent-ink);font-weight:700}.btn.danger{color:var(--accent)}.btn.wide{grid-column:1 / -1}.chart-wrap{position:relative}.chart{width:100%;height:auto;display:block;touch-action:pan-y}.chart .grid{stroke:var(--card-active);stroke-width:1}.chart .axis{fill:var(--disabled);font-size:10px}.chart .line{stroke:var(--accent);stroke-width:2.5;fill:none;stroke-linecap:round;stroke-linejoin:round}.chart .block{fill:var(--warm-bg)}.chart .crosshair{stroke:var(--muted);stroke-width:1;stroke-dasharray:2 3}.legend{display:flex;gap:16px;font-size:11px;color:var(--muted)}.legend span{display:flex;align-items:center;gap:6px}.legend .sw-line{width:14px;height:3px;background:var(--accent);border-radius:2px}.legend .sw-block{width:14px;height:10px;background:var(--warm-bg);border-radius:3px}.tooltip{position:absolute;top:8px;pointer-events:none;background:var(--card-active);border-radius:8px;padding:6px 8px;font-size:11px;color:var(--muted);white-space:nowrap}.tooltip b{color:var(--text);font-variant-numeric:tabular-nums}.log{display:flex;flex-direction:column}.log-item{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-top:1px solid var(--card-active);font-size:13px}.log-item:first-child{border-top:0;padding-top:0}.log-item .when{font-size:11px;color:var(--muted)}.tag{font-size:11px;font-weight:600;color:var(--muted);align-self:center;white-space:nowrap}.tag.ok{color:var(--ok)}.tag.error,.tag.timeout{color:var(--accent)}.nav{position:fixed;left:0;right:0;bottom:0;z-index:10;background:var(--bg);border-top:1px solid var(--card)}.nav-inner{max-width:430px;margin:0 auto;display:flex;justify-content:space-around;padding:12px 0 calc(16px + env(safe-area-inset-bottom))}.nav button{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:11px;color:var(--muted);min-width:64px;min-height:44px}.nav button.active{color:var(--accent)}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 12px);z-index:30;padding:12px 16px;border-radius:12px;background:var(--card-active);color:var(--text);font-size:13px;font-weight:600;box-shadow:0 8px 24px #0006;max-width:360px}.toast.warm{background:var(--warm-bg);color:var(--accent-light)}.setup{min-height:100dvh;max-width:430px;margin:0 auto;padding:24px 20px;display:flex;flex-direction:column;justify-content:center;gap:16px}.setup .brand{display:flex;align-items:center;gap:10px;color:var(--accent);font-size:22px;font-weight:700}.setup p{margin:0;color:var(--muted);font-size:13px;line-height:1.5}.notice{padding:12px 14px;border-radius:12px;background:var(--card);font-size:13px;color:var(--muted)}.notice.err{background:var(--warm-bg);color:var(--accent-light)}.title.switcher{text-align:left;color:var(--text)}.title.switcher span{color:var(--muted);font-size:16px}.switcher-menu{position:absolute;left:0;top:100%;margin-top:8px;z-index:15;min-width:220px;background:var(--card);border-radius:14px;padding:6px;box-shadow:0 12px 32px #00000080;display:flex;flex-direction:column}.switcher-menu button{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:10px;color:var(--text);font-size:15px;text-align:left}.switcher-menu button.active{background:var(--card-active);font-weight:600}.switcher-menu .dot{width:8px;height:8px;border-radius:50%;background:var(--disabled);flex:none}.switcher-menu .dot.online{background:var(--ok)}
