:root{--hue: 36;--led: hsl(var(--hue) 100% 52%);--bg: #0b0e12;--s1: #11161c;--s2: #171d25;--rule: #232c37;--text: #e8edf3;--dim: #a3adbb;--faint: #5d6875;--ok: #3ddc84;--warn: #ffb340;--err: #ff6b6b;--disp: "Chakra Petch", ui-sans-serif, sans-serif;--body: "Barlow", ui-sans-serif, system-ui, sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:400 15px/1.5 var(--body);-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;touch-action:manipulation}button:disabled{cursor:default}:focus-visible{outline:2px solid var(--led);outline-offset:2px;border-radius:6px}.app{height:100%;max-width:480px;margin:0 auto;display:flex;flex-direction:column;padding-top:env(safe-area-inset-top,0px);padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}.hdr{flex:none;display:flex;justify-content:space-between;align-items:center;padding:8px 18px}.dev{display:flex;align-items:center;gap:9px;min-height:40px;padding:0 14px 0 12px;border:1px solid var(--rule);border-radius:8px;background:var(--s1);font:600 13px/1 var(--disp);letter-spacing:.1em}.dev .dot{width:8px;height:8px;border-radius:50%;background:var(--faint)}.iconbtn{width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--rule);border-radius:8px;background:var(--s1);color:var(--dim)}.iconbtn svg{width:20px;height:20px}.view{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 18px 20px}.lbl{font:600 11.5px/1 var(--disp);letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}.placeholder{margin-top:40vh;transform:translateY(-50%);text-align:center}.placeholder p{color:var(--dim);margin:10px 0 0}.tabs{flex:none;display:grid;grid-template-columns:repeat(4,1fr);padding:6px 6px max(10px,env(safe-area-inset-bottom,0px));border-top:1px solid var(--rule);background:var(--bg)}.tabs button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:50px;font:600 10.5px/1 var(--disp);letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}.tabs svg{width:22px;height:22px}.tabs button[aria-selected=true]{color:var(--text)}.tabs button[aria-selected=true] svg{color:var(--led)}.dev.connected .dot{background:var(--ok);box-shadow:0 0 0 3px #3ddc8426}.dev.connecting .dot{background:var(--warn);animation:pulse 1.1s ease-in-out infinite}.dev.lost,.dev.idle{border-color:var(--led)}.dev:disabled{opacity:1}@keyframes pulse{50%{opacity:.35}}.sec{margin-top:22px}.sec-h{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}.note{font-size:13px;color:var(--dim)}.hint{font-size:13px;color:var(--dim);margin:8px 2px 0}.hint.err,.toast{color:#ffd0d0}.toast{margin:0 18px 6px;padding:10px 12px;border-radius:10px;font-size:14px;background:var(--s2);border:1px solid rgb(255 107 107 / .5);cursor:pointer}.primary{min-height:48px;padding:0 18px;border-radius:10px;background:var(--led);color:var(--bg);font:700 13px/1 var(--disp);letter-spacing:.14em;text-transform:uppercase}.primary:disabled,.ghost:disabled{opacity:.4}.ghost{min-height:44px;padding:0 14px;border-radius:10px;border:1px solid var(--rule);background:var(--s1);font:600 12px/1 var(--disp);letter-spacing:.12em;text-transform:uppercase}.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.list{display:flex;flex-direction:column;border:1px solid var(--rule);border-radius:10px;background:var(--s1);overflow:hidden}.readout{font:600 15px/1 var(--disp);font-variant-numeric:tabular-nums;letter-spacing:.04em;min-width:4ch;text-align:right}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;width:100%;margin:0;height:44px;cursor:pointer;touch-action:pan-y}input[type=range]::-webkit-slider-runnable-track{height:16px;border-radius:4px;background-color:var(--s1);background-image:linear-gradient(90deg,var(--led) 0 var(--fill, 50%),transparent 0),repeating-linear-gradient(90deg,#2a333e 0 2px,transparent 2px 8px)}input[type=range]::-moz-range-track{height:16px;border-radius:4px;background:repeating-linear-gradient(90deg,#2a333e 0 2px,transparent 2px 8px) var(--s1)}input[type=range]::-moz-range-progress{height:16px;border-radius:4px;background:var(--led)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:30px;height:30px;margin-top:-7px;border-radius:8px;background:var(--text);border:3px solid var(--bg);box-shadow:0 0 0 1px var(--rule)}input[type=range]::-moz-range-thumb{width:24px;height:24px;border-radius:8px;background:var(--text);border:3px solid var(--bg)}.banner{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border-radius:10px;background:var(--s2);border:1px solid var(--rule);margin-bottom:6px}.banner p{margin:0;font-size:14px}.banner b{display:block;font-weight:600}.banner span{color:var(--dim);font-size:13px}.offline .needs-dev{opacity:.38;pointer-events:none}.dialwrap{position:relative;width:268px;height:268px;margin:6px auto 0;touch-action:none}.dial-ring{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;cursor:grab;background:conic-gradient(#ff0a0a,#ffff0a,#0aff0a,#0affff,#0a0aff,#ff0aff,#ff0a0a);-webkit-mask:radial-gradient(circle,transparent 103px,#000 104px,#000 120px,transparent 121px);mask:radial-gradient(circle,transparent 103px,#000 104px,#000 120px,transparent 121px)}.dial-ticks{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;pointer-events:none;background:repeating-conic-gradient(#33404d 0 .7deg,transparent .7deg 7.5deg);-webkit-mask:radial-gradient(circle,transparent 125px,#000 126px,#000 132px,transparent 133px);mask:radial-gradient(circle,transparent 125px,#000 126px,#000 132px,transparent 133px)}.knob{position:absolute;left:50%;top:50%;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;pointer-events:none;background:var(--led);border:4px solid var(--text);box-shadow:0 0 0 3px var(--bg),0 4px 14px #0009;transform:rotate(calc(var(--hue) * 1deg)) translateY(-112px) rotate(calc(var(--hue) * -1deg))}.dial-core{position:absolute;top:44px;right:44px;bottom:44px;left:44px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:radial-gradient(circle at 50% 38%,hsl(var(--hue) 100% 52% / calc(var(--bri) * .38)),var(--bg) 70%);box-shadow:inset 0 0 0 1px var(--rule)}.dial-core.off{background:radial-gradient(circle,var(--s1),var(--bg) 70%)}.cname{font:700 30px/1 var(--disp);letter-spacing:.02em}.chex{font:500 13px/1 var(--disp);letter-spacing:.12em;color:var(--dim);font-variant-numeric:tabular-nums}.pwr{margin-top:12px;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--rule);background:var(--s1);color:var(--led)}.dial-core.off .pwr{color:var(--dim)}.pwr svg{width:24px;height:24px}.groups{display:grid;grid-template-columns:118px 1fr;gap:14px;align-items:center}.carsvg{width:118px;height:236px}.carsvg .shell{fill:none;stroke:#2c3642;stroke-width:2}.carsvg .glass{fill:#121820;stroke:#2c3642;stroke-width:1.5}.carsvg .seat{fill:#151b23;stroke:var(--rule)}.carsvg .lt{fill:none;stroke:#242d38;stroke-width:5;stroke-linecap:round;transition:stroke .2s}.carsvg .ft{fill:#242d38;transition:fill .2s}.carsvg .lt.lit{stroke:var(--led);filter:drop-shadow(0 0 4px var(--led))}.carsvg .ft.lit{fill:var(--led);filter:drop-shadow(0 0 4px var(--led))}.glist{display:flex;flex-direction:column;gap:8px}.gbtn{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:58px;padding:0 12px 0 14px;border:1px solid var(--rule);border-radius:10px;background:var(--s1);text-align:left}.gbtn b{display:block;font:600 16px/1.1 var(--body)}.gbtn small{display:block;font-size:12.5px;color:var(--dim);margin-top:2px}.gbtn .st{font:600 11px/1 var(--disp);letter-spacing:.14em;color:var(--dim);padding:6px 8px;border-radius:5px;border:1px solid var(--rule)}.gbtn[aria-pressed=true]{border-color:color-mix(in oklab,var(--led) 50%,var(--rule))}.gbtn[aria-pressed=true] .st{color:var(--bg);background:var(--led);border-color:var(--led)}.brirow{display:flex;align-items:center;gap:12px}.presets{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.presets button{aspect-ratio:1;min-height:36px;border-radius:8px;background:var(--c);position:relative}.presets button[aria-pressed=true]:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:11px;border:2px solid var(--text)}.presets .add{background:var(--s1);border:1px dashed var(--faint);display:grid;place-items:center;color:var(--dim)}.presets .add svg{width:18px;height:18px}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#0000008c;display:flex;align-items:flex-end;opacity:0;pointer-events:none;transition:opacity .2s}.sheet.open{opacity:1;pointer-events:auto}.pane{width:100%;max-width:480px;margin:0 auto;max-height:88%;overflow-y:auto;background:var(--bg);border-top:1px solid var(--rule);border-radius:18px 18px 0 0;padding:8px max(18px,env(safe-area-inset-right,0px)) max(28px,env(safe-area-inset-bottom,0px)) max(18px,env(safe-area-inset-left,0px));transform:translateY(24px);transition:transform .25s cubic-bezier(.2,.8,.2,1)}.sheet.open .pane{transform:none}.grab{width:40px;height:5px;border-radius:3px;background:var(--faint);margin:4px auto 10px}.pane-h{display:flex;justify-content:space-between;align-items:center}.pane-h h2{margin:0;font:700 20px/1 var(--disp);letter-spacing:.04em}.kv{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:52px;padding:0 14px;border-top:1px solid var(--rule);font-size:15px}.kv:first-child{border-top:0}.kv>span{color:var(--dim)}.kv b{text-align:right;font-weight:600}.kv select{background:var(--s2);border:1px solid var(--rule);border-radius:8px;min-height:38px;padding:0 10px;color:var(--text);font:inherit}.console{border:1px solid var(--rule);border-radius:10px;background:#06080a;padding:10px 12px;font:500 12.5px/1.6 ui-monospace,SF Mono,Menlo,monospace;color:#b7c4d3;min-height:96px;max-height:200px;overflow-y:auto}.console .tx{color:var(--ok)}.console .meta{color:var(--faint)}.cin{display:flex;gap:8px;margin-top:8px}.cin input{flex:1;min-width:0;min-height:44px;border-radius:8px;border:1px solid var(--rule);background:var(--s1);padding:0 12px;font:500 16px ui-monospace,Menlo,monospace;color:var(--text)}.onboard{flex:1;overflow-y:auto;display:flex;flex-direction:column;padding:48px 24px max(28px,env(safe-area-inset-bottom,0px))}.onboard .mark{font:700 40px/1 var(--disp);letter-spacing:.06em;display:flex;align-items:center;gap:12px}.onboard .mark i{width:14px;height:14px;transform:rotate(45deg);background:linear-gradient(135deg,#ff3b30,#ffd60a,#3ddc84,#0a84ff,#bf5af2)}.onboard .lead{color:var(--dim);margin:12px 0 28px;font-size:16px;max-width:30ch}.steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.steps li{display:flex;gap:14px;align-items:flex-start;padding:14px;border:1px solid var(--rule);border-radius:12px;background:var(--s1)}.steps .n{width:28px;height:28px;border-radius:7px;display:grid;place-items:center;font:700 13px/1 var(--disp);border:1px solid var(--rule);flex:none;color:var(--dim)}.steps .done .n{background:var(--ok);border-color:var(--ok);color:var(--bg)}.steps .bad .n{background:var(--err);border-color:var(--err);color:var(--bg)}.steps b{display:block;font-weight:600}.steps li span span{display:block;font-size:13.5px;color:var(--dim);margin-top:2px}.primary.big{margin-top:auto;width:100%;min-height:56px}.link{margin-top:14px;min-height:44px;color:var(--dim);text-decoration:underline;text-underline-offset:3px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
