:root{color-scheme:light dark;--bg:light-dark(#f6f4ef,#0b0c0e);--surface:light-dark(#fdfcf9,#131519);--surface-2:light-dark(#efebe3,#1b1e23);--line:light-dark(#dcd8cf,#262a30);--line-strong:light-dark(#8c8a84,#5c626b);--grid:light-dark(#1213160d,#ffffff0b);--ink:light-dark(#121316,#f2f3f5);--ink-2:light-dark(#3d4148,#b9bec6);--ink-3:light-dark(#5b6069,#959ba4);--off:light-dark(#6c6f75,#7d838c);--accent:light-dark(#e65c00,#ff7a1f);--accent-ink:light-dark(#a84300,#ff8a3a);--accent-tint:color-mix(in oklab, var(--accent) 16%, var(--surface));--on-accent:#0b0c0e;--on-tone:#0b0c0e;--slow:#3fc6f2;--slow-ink:light-dark(#00698f,#3fc6f2);--ok:#3ddc84;--ok-ink:light-dark(#13773d,#3ddc84);--jam:#ff4f8b;--jam-ink:light-dark(#c2134f,#ff4f8b);--warn:#ffd23f;--warn-ink:light-dark(#7a5a00,#ffd23f);--touch:3.5rem;--radius:.375rem;--radius-lg:.5rem;--ease:cubic-bezier(.16, 1, .3, 1);--font-ui:"Geist", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;font-family:var(--font-ui);background:var(--bg);color:var(--ink);caret-color:var(--accent-ink);scrollbar-color:var(--line-strong) transparent;-webkit-tap-highlight-color:transparent;line-height:1.4}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}::selection{background:color-mix(in oklab, var(--accent) 35%, transparent);color:var(--ink)}*{box-sizing:border-box}body{background:var(--bg);-webkit-font-smoothing:antialiased;min-height:100dvh;margin:0;position:relative}body:before{content:"";background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);pointer-events:none;background-position:top;background-size:1.5rem 1.5rem;height:9rem;position:absolute;inset:0 0 auto;mask-image:linear-gradient(#000 30%,#0000)}p{margin:0}.screen{max-width:30rem;min-height:100dvh;padding:max(.75rem, env(safe-area-inset-top)) 1rem max(1rem, env(safe-area-inset-bottom));flex-direction:column;gap:1rem;margin:0 auto;display:flex;position:relative}.screen.center{text-align:center;justify-content:center;align-items:center;gap:1.25rem}.wordmark{letter-spacing:-.03em;margin:0 0 .5rem;font-size:2.25rem;font-weight:700;line-height:1}.wordmark .plus{color:var(--accent-ink)}.hint{color:var(--ink-2);text-wrap:pretty;font-size:1rem}.icon{flex:none;width:1em;height:1em}.alert{border:1px solid var(--jam-ink);border-radius:var(--radius-lg);background:color-mix(in oklab, var(--jam) 12%, var(--surface));width:100%;max-width:24rem;color:var(--ink);text-align:left;align-items:flex-start;gap:.625rem;padding:.875rem 1rem;font-size:1.0625rem;font-weight:600;display:flex}.alert .icon{color:var(--jam-ink);margin-top:.15em}.btn{min-height:var(--touch);min-width:var(--touch);border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface-2);color:var(--ink);font:inherit;letter-spacing:-.01em;cursor:pointer;touch-action:manipulation;transition:background-color .16s var(--ease), border-color .16s var(--ease), color .16s var(--ease), transform .12s var(--ease);justify-content:center;align-items:center;gap:.5rem;padding:0 1rem;font-size:1.125rem;font-weight:600;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)scale(.99)}@media (hover:hover){.btn:hover:not(:disabled){border-color:var(--ink-3)}}:focus-visible{outline:2px solid var(--accent-ink);outline-offset:2px}.btn.primary{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}@media (hover:hover){.btn.primary:hover:not(:disabled){border-color:var(--accent);background:color-mix(in oklab, var(--accent) 88%, var(--ink))}}.btn.wide{border-radius:var(--radius-lg);width:100%;max-width:22rem;min-height:6rem;font-size:1.75rem;font-weight:700}.btn.quiet{color:var(--ink-2);background:0 0;border-color:#0000}.btn.icon{border-color:var(--line);background:0 0;padding:0;font-size:1.5rem}.bar{min-height:var(--touch);align-items:center;gap:.75rem;display:flex}.device{min-width:0;color:var(--ink-2);font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.9375rem;font-weight:500;overflow:hidden}.battery{border:1px solid var(--line);border-radius:var(--radius);min-height:2.25rem;color:var(--ink);font-family:var(--font-mono);font-variant-numeric:tabular-nums;align-items:center;gap:.375rem;padding:0 .625rem;font-size:1.125rem;font-weight:600;display:inline-flex}.battery .icon{font-size:1.25rem}.battery.warn{border-color:var(--warn-ink);color:var(--warn-ink)}.battery.low{border-color:var(--warn);background:var(--warn);color:var(--on-tone)}.battery.usb{color:var(--ink-2)}.tone-idle{--tone:var(--surface);--tone-ink:var(--ink-3)}.tone-run{--tone:var(--accent);--tone-ink:var(--accent-ink)}.tone-slow{--tone:var(--slow);--tone-ink:var(--slow-ink)}.tone-ok{--tone:var(--ok);--tone-ink:var(--ok-ink)}.tone-alarm{--tone:var(--jam);--tone-ink:var(--jam-ink)}.tone-warn{--tone:var(--warn);--tone-ink:var(--warn-ink)}.tone-test{--tone:transparent;--tone-ink:var(--accent-ink)}.hero{text-align:center;flex-direction:column;flex:1;justify-content:center;gap:1rem;min-height:15rem;display:flex}.state-block{flex-direction:column;align-items:center;gap:.5rem;display:flex}.state{border:1px solid var(--tone-ink);border-radius:var(--radius-lg);background:var(--tone);max-width:100%;min-height:3.25rem;color:var(--on-tone);letter-spacing:-.02em;text-wrap:balance;transition:background-color .2s var(--ease), border-color .2s var(--ease);justify-content:center;align-items:center;gap:.5rem;padding:.25rem 1rem;font-size:1.625rem;font-weight:650;line-height:1.15;display:inline-flex}.tone-idle .state{border-color:var(--line-strong);color:var(--ink)}.tone-idle .state .icon{color:var(--ink-3)}.tone-test .state{color:var(--accent-ink);border-width:2px}.state-sub{min-height:1.5rem;color:var(--ink-2);text-wrap:balance;justify-content:center;align-items:center;gap:.375rem;font-size:1.0625rem;font-weight:500;display:flex}.state-sub .icon{color:var(--ok-ink)}.count{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.04em;flex-wrap:wrap;justify-content:center;align-items:baseline;column-gap:.75rem;font-size:clamp(4.5rem,28vw,8rem);font-weight:600;line-height:.95;display:flex}.count .of{color:var(--ink-3);letter-spacing:-.02em;font-size:.5em;font-weight:500}.count .slash{color:var(--line-strong);margin-right:.25em}.count.old .digits{color:var(--ink-3)}.digits{display:inline-flex}.digit{animation:tick 90ms var(--ease);display:inline-block}@keyframes tick{0%{transform:translateY(-.12em)}}.rule{flex-direction:column;gap:.375rem;padding-top:.5rem;display:flex}.rule-track{background:var(--line);border-radius:.1875rem;height:.375rem;position:relative;container-type:inline-size}.rule-fill{border-radius:inherit;background:var(--tone-ink);transform:scaleX(var(--p,0));transform-origin:0;transition:transform .16s linear, background-color .2s var(--ease);position:absolute;inset:0}.tone-idle .rule-fill{background:var(--ink-3)}.rule-edge{background:var(--tone-ink);opacity:0;width:2px;height:1rem;transform:translateX(calc(var(--p,0) * 100cqw));transition:transform .16s linear, opacity .2s var(--ease);border-radius:1px;position:absolute;top:-.3125rem;left:-1px}.tone-run .rule-edge,.tone-slow .rule-edge{opacity:1;box-shadow:0 0 .5rem .125rem color-mix(in oklab, var(--tone) 70%, transparent), 0 0 1.25rem .25rem color-mix(in oklab, var(--tone) 35%, transparent)}.rule-ticks{justify-content:space-between;height:.5rem;display:flex}.rule-ticks span{background:var(--line-strong);width:1px;height:.3125rem}.rule-ticks span:nth-child(5n+1){height:.5rem}.rule-ticks span.on{background:var(--tone-ink)}.tone-ok .rule-fill{animation:done-pulse .7s var(--ease)}@keyframes done-pulse{40%{box-shadow:0 0 .75rem .125rem color-mix(in oklab, var(--ok) 60%, transparent)}}.panel{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);flex-direction:column;gap:.75rem;padding:.875rem;display:flex}.target{flex-direction:column;gap:.5rem;display:flex}.label{color:var(--ink-2);font-size:1rem;font-weight:500}.main .label,.group-title{color:var(--ink-3);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.8125rem;font-weight:500}.stepper{grid-template-columns:4.5rem 1fr 4.5rem;gap:.5rem;display:grid}.btn.step{min-height:4rem;padding:0;font-size:1.75rem}.btn.step.small{min-height:var(--touch);font-family:var(--font-mono);font-size:1.125rem;font-weight:500}.field{width:100%;min-width:0;min-height:var(--touch);border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--bg);color:var(--ink);font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:center;transition:border-color .16s var(--ease), box-shadow .16s var(--ease);padding:0 .5rem;font-size:1.375rem;font-weight:500}.field.big{letter-spacing:-.02em;min-height:4rem;font-size:2rem;font-weight:600}.field:focus{border-color:var(--accent-ink);box-shadow:0 0 0 1px var(--accent-ink);outline:none}.field:disabled{color:var(--off);border-style:dashed}.field.invalid{border-color:var(--jam-ink);box-shadow:0 0 0 1px var(--jam-ink)}.presets{grid-template-columns:repeat(4,1fr);gap:.5rem;display:grid}.btn.chip{font-family:var(--font-mono);font-variant-numeric:tabular-nums;padding:0;font-size:1.25rem;font-weight:500}.btn.chip.current,.btn.seg.current{border-color:var(--accent-ink);background:var(--accent-tint);box-shadow:inset 0 0 0 1px var(--accent-ink);color:var(--ink)}.note{min-height:1.25rem;color:var(--warn-ink);margin-top:-.25rem;font-size:.9375rem;font-weight:600;line-height:1.25rem}.main{padding-bottom:0}.dock{z-index:1;padding:.75rem 1rem max(1rem, env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--bg);flex-direction:column;gap:.625rem;margin:0 -1rem;display:flex;position:sticky;bottom:0}.dock-hint{color:var(--ink);text-wrap:balance;justify-content:center;align-items:flex-start;gap:.5rem;font-size:1.0625rem;font-weight:600;display:flex}.dock-hint .icon{color:var(--warn-ink);margin-top:.15em}.btn.go,.btn.stop{border-radius:var(--radius-lg);letter-spacing:.06em;flex-direction:column;gap:.125rem;width:100%;min-height:6rem;font-size:2.25rem;font-weight:700}.btn-main{align-items:center;gap:.625rem;display:inline-flex}.btn-main .icon{font-size:.75em}.btn.go{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.btn.stop{border-color:var(--ink);background:var(--ink);color:var(--bg)}.btn.stop.idle{border-color:var(--line-strong);background:var(--surface-2);color:var(--ink)}.btn-sub{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;font-size:.9375rem;font-weight:500}.actions{grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.banner{--b:var(--warn);--b-ink:var(--warn-ink);top:max(.75rem, env(safe-area-inset-top));z-index:2;border:1px solid var(--b-ink);border-radius:var(--radius-lg);background:color-mix(in oklab, var(--b) 20%, var(--bg));box-shadow:0 0 0 .75rem var(--bg);color:var(--ink);flex-direction:column;gap:.625rem;padding:.875rem 1rem;display:flex;position:sticky}.banner.lost{--b:var(--jam);--b-ink:var(--jam-ink)}.banner-title{letter-spacing:-.01em;align-items:center;gap:.5rem;font-size:1.1875rem;font-weight:700;display:flex}.banner-title .icon{color:var(--b-ink);font-size:1.25rem}.banner-note{text-wrap:pretty;font-size:1rem;font-weight:500}.banner-actions{grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.banner .btn{font-size:1.0625rem}.stale .battery,.stale .hero,.stale .pill{opacity:.45;filter:grayscale()}.bar-title{letter-spacing:-.02em;flex:1;margin:0;font-size:1.375rem;font-weight:650}.pill{border:1px solid var(--tone-ink);border-radius:var(--radius);background:var(--tone);min-height:2.25rem;color:var(--on-tone);align-items:center;gap:.375rem;padding:0 .625rem;font-size:.9375rem;font-weight:600;display:inline-flex}.pill.tone-idle{border-color:var(--line-strong);color:var(--ink)}.pill.tone-test{color:var(--accent-ink)}.settings{padding-bottom:max(2rem, env(safe-area-inset-bottom));gap:1.5rem}.group{flex-direction:column;gap:.5rem;display:flex}.group.save{gap:.75rem}.field-error:empty{display:none}.field-error{color:var(--jam-ink);align-items:flex-start;gap:.375rem;font-size:.875rem;font-weight:600;line-height:1.3;display:flex}.target.row{grid-template-columns:1fr 7rem;align-items:center;gap:.375rem .75rem;display:grid}.target.row .field-error{grid-column:1/-1}.field-error .icon{margin-top:.15em}.panel .target+.target{border-top:1px solid var(--line);padding-top:.75rem}.panel .btn.toggle{border-color:var(--line) transparent transparent;color:var(--ink-2);border-radius:0;padding:0;font-weight:500}.panel .btn.toggle:disabled{border-width:1px 0 0}.device-name{color:var(--ink);font-family:var(--font-mono);font-size:1rem}.settings .btn.primary,.settings .actions .btn{min-height:4rem;font-size:1.25rem}.settings .btn.stop{min-height:4.5rem;font-size:1.75rem}.panel.testing{border-color:var(--accent-ink)}.spin-live{color:var(--accent-ink);align-items:center;gap:.5rem;font-size:1.125rem;font-weight:650;display:flex}.btn.toggle{background:0 0;justify-content:space-between;width:100%;padding:0 .75rem 0 1rem}.toggle-value{align-items:center;gap:.75rem;display:inline-flex}.toggle-word{min-width:2.5rem;font-family:var(--font-mono);letter-spacing:.06em;text-align:right;font-size:.9375rem;font-weight:600}.switch{border:1px solid var(--line-strong);background:var(--surface-2);width:3rem;height:1.75rem;transition:background-color .16s var(--ease), border-color .16s var(--ease);border-radius:1rem;position:relative}.knob{background:var(--ink-2);width:1.3125rem;height:1.3125rem;transition:transform .18s var(--ease), background-color .16s var(--ease);border-radius:50%;position:absolute;top:.1875rem;left:.1875rem}.btn.toggle.on .switch{border-color:var(--accent);background:var(--accent)}.btn.toggle.on .knob{background:var(--on-accent);transform:translate(1.1875rem)}.choice{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);grid-auto-columns:1fr;grid-auto-flow:column;gap:.25rem;width:100%;padding:.25rem;display:grid}.center .choice{max-width:22rem}.btn.seg{color:var(--ink-2);background:0 0;border-color:#0000;padding:0 .5rem;font-size:1.0625rem}.btn.seg.current{color:var(--ink)}.confirm{border:1px solid var(--line-strong);background:var(--surface);width:min(26rem,100% - 2rem);color:var(--ink);transition:opacity .18s var(--ease), transform .18s var(--ease), overlay .18s allow-discrete, display .18s allow-discrete;border-radius:.75rem;padding:1.25rem;box-shadow:0 1.5rem 3rem -1rem #00000080}@starting-style{.confirm[open]{opacity:0;transform:translateY(.5rem)}}.confirm::backdrop{background:#000000a6}.confirm-title{letter-spacing:-.02em;margin:0 0 .375rem;font-size:1.375rem;font-weight:650}.confirm-body{color:var(--ink-2);font-size:1.0625rem}.warn-line{color:var(--ink);align-items:flex-start;gap:.5rem;margin-top:.75rem;display:flex}.warn-line .icon{color:var(--warn-ink);margin-top:.15em}.confirm-actions{flex-direction:column;gap:.5rem;margin-top:1.25rem;display:flex}.btn:disabled,.btn.chip.current:disabled,.btn.toggle.on:disabled{border:1px dashed var(--line-strong);box-shadow:none;color:var(--off);cursor:not-allowed;background:0 0}.btn:disabled .switch{background:0 0;border-style:dashed}.btn:disabled .knob{background:var(--off)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
