:root{--ground: #0B2926;--app: #0C2A28;--panel: #123734;--panel-2: #0E302D;--line: #204d47;--line-soft: #1a423d;--text: #E9F3EE;--muted: #8FB3AC;--dim: #6d938c;--accent: #35C1D6;--accent-2: #F2B441;--ok: #63C88A;--bad: #E4796A;--font-display: "Bahnschrift", "DIN Alternate", "DIN Condensed", "Oswald", "Arial Narrow", sans-serif;--font-mono: "Cascadia Code", "Cascadia Mono", "Consolas", "SF Mono", "Menlo", monospace;--font-body: "Segoe UI", system-ui, -apple-system, "Helvetica Neue", sans-serif;--app-max: 430px;--touch: 44px;--ring-track: #173b37;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--ground);color:var(--text);font-family:var(--font-body);line-height:1.55;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{max-width:var(--app-max);min-height:100dvh;margin:0 auto;background:var(--app);display:flex;flex-direction:column}@media (min-width: 470px){.app{border-left:1px solid var(--line-soft);border-right:1px solid var(--line-soft)}}.screen{flex:1;display:flex;flex-direction:column;min-height:0}.appbar{display:flex;align-items:center;justify-content:space-between;padding:calc(14px + env(safe-area-inset-top)) 18px 12px}.appbar h1,.appbar .title{margin:0;font-family:var(--font-display);font-weight:400;text-transform:uppercase;letter-spacing:.03em;font-size:20px;line-height:1.2}.appbar .sub{font-family:var(--font-mono);font-size:11px;color:var(--dim);letter-spacing:.04em;display:flex;align-items:center;gap:6px;margin-top:2px}.appbar-main{display:flex;align-items:center;gap:6px}.back{width:var(--touch);height:var(--touch);margin-left:-12px;display:flex;align-items:center;justify-content:center;color:var(--muted);flex:none}.back svg{width:22px;height:22px}.live{width:7px;height:7px;border-radius:50%;background:var(--ok);animation:pulse 2.4s infinite;flex:none}.live.off{background:var(--bad);animation:none}@keyframes pulse{0%{box-shadow:0 0 #63c88a80}70%{box-shadow:0 0 0 7px #63c88a00}to{box-shadow:0 0 #63c88a00}}.body{flex:1;overflow-y:auto;padding:4px 16px 16px;display:flex;flex-direction:column;gap:12px}.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:15px}.card.flat{background:var(--panel-2)}.lbl{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}.row{display:flex;align-items:center;justify-content:space-between;gap:10px}.htime{font-family:var(--font-mono);font-size:11px;color:var(--muted);flex:none}.muted{color:var(--muted)}.now{display:flex;flex-direction:column;align-items:center;gap:6px;padding:20px 15px 18px;background:radial-gradient(140px 140px at 50% 34%,rgba(53,193,214,.12),transparent 70%),var(--panel)}.now .lbl{align-self:flex-start}.ring{position:relative;width:150px;height:150px}.ring svg{transform:rotate(-90deg)}.ring .center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-align:center;padding:0 18px}.ring .t{font-family:var(--font-mono);font-size:30px;color:var(--text);letter-spacing:.02em}.ring .z{font-size:13px;color:var(--accent);font-weight:600;line-height:1.2}.ring .cap{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}.ring.idle .t{font-size:18px;color:var(--muted)}.prog-tag{font-family:var(--font-mono);font-size:11px;color:var(--muted)}.btn{display:block;width:100%;min-height:var(--touch);text-align:center;border:none;border-radius:12px;padding:13px;font-family:var(--font-display);text-transform:uppercase;letter-spacing:.05em;font-size:15px}.btn.stop{background:var(--bad);color:#2a0d09;font-weight:700}.btn.primary{background:var(--accent);color:#04262b;font-weight:700}.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--text)}.btn.amber{background:var(--accent-2);color:#2e2103;font-weight:700}.quick{display:flex;gap:10px}.quick .q{flex:1;min-height:var(--touch);background:var(--panel-2);border:1px solid var(--line);border-radius:14px;padding:13px 10px;text-align:center}.quick .q[aria-disabled=true]{opacity:.45;pointer-events:none}.quick .q .qi{font-family:var(--font-display);text-transform:uppercase;font-size:13px;letter-spacing:.03em}.quick .q .qs{font-family:var(--font-mono);font-size:10px;color:var(--dim);letter-spacing:.08em;margin-top:2px}.banner{background:#f2b4411a;border:1px solid rgba(242,180,65,.4);border-radius:12px;padding:11px 13px;display:flex;gap:10px;align-items:center}.banner .bt{font-size:13px;color:var(--accent-2)}.banner .bs{font-family:var(--font-mono);font-size:11px;color:var(--muted)}.banner.bad{background:#e4796a1a;border-color:#e4796a73}.banner.bad .bt{color:var(--bad)}.conn-banner{margin:0 16px}.rowlist{display:flex;flex-direction:column}.zrow{display:flex;align-items:center;gap:12px;padding:12px 4px;min-height:var(--touch);border-bottom:1px solid var(--line-soft)}.zrow:last-child{border-bottom:none}.zmeta{flex:1;min-width:0}.zmeta .zn{font-size:14px;font-weight:600}.zmeta .zs{font-family:var(--font-mono);font-size:11px;color:var(--dim)}ul.rowlist{list-style:none;margin:0;padding:0}.zmeta .zs.running{color:var(--ok)}.znum{width:30px;height:30px;border-radius:9px;background:var(--panel-2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:13px;color:var(--muted);flex:none}.znum.master{border-color:#f2b44180;color:var(--accent-2)}.znum.run{background:#63c88a24;border-color:var(--ok);color:var(--ok)}.runbtn{min-width:64px;min-height:var(--touch);font-family:var(--font-display);text-transform:uppercase;font-size:13px;letter-spacing:.04em;border:1px solid var(--accent);color:var(--accent);background:transparent;border-radius:9px;padding:6px 12px;flex:none}.runbtn.stop{border-color:var(--bad);color:var(--bad)}.chooser{display:flex;flex-direction:column;gap:10px;padding:2px 4px 14px;border-bottom:1px solid var(--line-soft)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{min-height:var(--touch);display:inline-flex;align-items:center;background:var(--panel-2);border:1px solid var(--line);border-radius:22px;padding:6px 14px;font-family:var(--font-mono);font-size:13px;color:var(--text)}.chip.on{background:var(--accent);border-color:var(--accent);color:#04262b;font-weight:700}.options{margin:0;display:flex;flex-direction:column;min-width:0}.options legend{float:left;width:100%;margin-bottom:4px}.opt{display:flex;align-items:center;gap:12px;min-height:var(--touch);padding:4px;border-bottom:1px solid var(--line-soft);font-size:14px;cursor:pointer}.opt:last-of-type{border-bottom:none}.opt input{width:20px;height:20px;accent-color:var(--accent);margin:0}.field-input{margin-top:8px;min-height:var(--touch);background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:10px 14px;color:var(--text);font:inherit;color-scheme:dark}.note{margin:0;font-size:13px;color:var(--muted)}.field{background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:10px 14px;display:flex;flex-direction:column;min-width:0}.field .fl{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);margin-bottom:3px}.field .fv{background:transparent;border:none;outline:none;color:var(--text);font:inherit;font-size:16px;min-height:30px;padding:0;width:100%}.field:focus-within{border-color:var(--accent)}.field .fh{font-size:12px;color:var(--muted);margin-top:4px}.card .field{margin-top:10px}.row.two{gap:10px}.row.two>.field{flex:1}.toggle-row{min-height:var(--touch);padding:4px 0}.toggle-row+.toggle-row{border-top:1px solid var(--line-soft)}.toggle-label{font-size:14px;font-weight:600}.toggle-hint{font-family:var(--font-mono);font-size:11px;color:var(--dim)}.tg{width:44px;height:26px;border-radius:20px;background:var(--panel-2);border:1px solid var(--line);position:relative;flex:none;padding:0}.tg.on{background:#35c1d638;border-color:var(--accent)}.tg:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--muted);transition:left .2s}.tg.on:after{left:21px;background:var(--accent)}.step{display:flex;align-items:center;gap:6px;flex:none}.step .b{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font-size:17px;display:flex;align-items:center;justify-content:center;padding:0}.step .v{font-family:var(--font-mono);font-size:13px;min-width:54px;text-align:center}.step-row{flex-wrap:nowrap}.step-tools{display:flex;gap:2px;margin-top:2px}.step-tools button{min-width:32px;min-height:32px;background:transparent;border:none;color:var(--dim);font-size:15px;padding:0}.seg{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:10px 0 12px}.seg button{min-height:38px;border-radius:10px;border:1px solid var(--line);background:var(--panel-2);color:var(--muted);font-family:var(--font-mono);font-size:12px;padding:6px 10px}.seg button.on{border-color:var(--accent);color:var(--accent);background:#35c1d61a}.days{display:flex;gap:6px}.day{flex:1;aspect-ratio:1;min-height:40px;border-radius:9px;border:1px solid var(--line);background:transparent;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:13px;color:var(--dim);padding:0}.day.on{background:var(--accent);border-color:var(--accent);color:#04262b;font-weight:700}.card .chips{margin-top:10px}.chip .x{background:transparent;border:none;color:var(--dim);min-width:28px;min-height:28px;margin-right:-8px;font-size:16px;padding:0}.chip.add{border-style:dashed;color:var(--accent)}.add-time{justify-content:flex-start;margin-top:10px}.add-time .field-input{margin-top:0}select.field-input{width:100%;margin-top:10px}.slider-input{width:100%;margin:12px 0 6px;accent-color:var(--accent);min-height:28px}.tag{margin-left:8px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-2);border:1px solid rgba(242,180,65,.5);border-radius:6px;padding:1px 5px;vertical-align:middle}.btn.danger{color:var(--bad);border-color:#e4796a80}.card>.lbl+.rowlist,.card>.lbl+.note{margin-top:6px}.auth{justify-content:center;padding-top:calc(32px + env(safe-area-inset-top))}.auth-brand{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:8px}.auth-brand img{border-radius:14px}.auth-title{margin:8px 0 0;font-family:var(--font-display);font-weight:400;text-transform:uppercase;letter-spacing:.03em;font-size:24px}.auth-form{display:flex;flex-direction:column;gap:12px}.auth-switch{text-align:center;margin-top:4px}.auth-switch a,.note a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.pair{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}.code{display:flex;justify-content:center;gap:8px;margin:4px 0}.code b{width:42px;height:56px;border-radius:10px;background:var(--panel-2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:28px;color:var(--accent-2)}.waiting{display:flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font-mono);font-size:12px;color:var(--muted)}.waiting.ok{color:var(--ok)}.waiting.bad{color:var(--bad)}.hgroup{font-family:var(--font-mono);font-weight:400;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);margin:6px 4px 2px}.hrow{display:flex;align-items:center;gap:11px;padding:10px 4px;border-bottom:1px solid var(--line-soft)}.hdot{width:8px;height:8px;border-radius:50%;flex:none}.hdot.ok{background:var(--ok)}.hdot.skip{background:var(--accent-2)}.hdot.manual{background:var(--accent)}.hdot.bad{background:var(--bad)}.hmeta{flex:1;min-width:0}.hmeta .ht{font-size:14px}.hmeta .hs{font-family:var(--font-mono);font-size:11px;color:var(--dim)}.tabs{position:sticky;bottom:0;display:flex;border-top:1px solid var(--line);background:var(--app);padding:6px 8px calc(8px + env(safe-area-inset-bottom))}.tab{flex:1;min-height:var(--touch);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--dim)}.tab.active{color:var(--accent)}.tab svg{width:20px;height:20px}.tab span{font-family:var(--font-mono);font-size:10px;letter-spacing:.04em}.center-msg{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px 24px;text-align:center;color:var(--muted)}.spin{width:14px;height:14px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--accent);animation:sp 1s linear infinite}@keyframes sp{to{transform:rotate(360deg)}}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media (prefers-reduced-motion: reduce){.live,.spin{animation:none}}
