:root{--bg:#07090c;--panel:#0d1117;--panel2:#111720;--line:#202a35;--text:#eef4fa;--muted:#82909f;--accent:#31a8ff;--accent2:#66d6ff;--warn:#ffb83d;--danger:#ff5e62;--ok:#50d98b;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}*{box-sizing:border-box}html,body{margin:0;background:radial-gradient(circle at 50% -10%,#18232f 0,#080a0d 42%,#050608 100%);color:var(--text);min-height:100%;-webkit-tap-highlight-color:transparent}body{padding-bottom:env(safe-area-inset-bottom)}button,input{font:inherit}button{cursor:pointer;color:inherit}#appShell{max-width:900px;margin:auto;min-height:100vh;padding-bottom:20px}.topbar{height:70px;padding:10px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #151d25;position:sticky;top:0;z-index:10;background:rgba(7,9,12,.9);backdrop-filter:blur(12px)}.brand{display:flex;gap:11px;align-items:center}.brand-mark{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;font-weight:900;letter-spacing:-1px;background:linear-gradient(145deg,#dce8f3,#6e7d8a 45%,#18222c);color:#061019;box-shadow:0 0 22px #2ca9ff22}.brand-title{font-size:15px;font-weight:900;letter-spacing:.15em}.brand-sub{font-size:9px;color:var(--muted);letter-spacing:.13em;margin-top:2px}.icon-btn{width:40px;height:40px;border:1px solid var(--line);background:#0d131a;border-radius:10px}.mode-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px 12px 8px}.mode-tab{border:1px solid var(--line);background:#0c1015;padding:13px 10px;border-radius:12px;font-size:12px;font-weight:900;letter-spacing:.08em}.mode-tab span{display:block;font-size:9px;color:var(--muted);margin-top:4px;letter-spacing:.12em}.mode-tab.active{border-color:#2b9fe8;background:linear-gradient(180deg,#12212d,#0c1117);box-shadow:inset 0 -2px #2fa8ff55,0 0 20px #1998ff10}.connection-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:0 12px 10px}.status{background:#0b0f14;border:1px solid #171f28;border-radius:9px;padding:7px 6px;text-align:center;font-size:8px;color:var(--muted);letter-spacing:.08em}.status i{width:6px;height:6px;border-radius:50%;background:#3b4650;display:inline-block;margin-right:4px}.status b{display:block;color:#c4ced7;font-size:9px;margin-top:2px}.status.on i{background:var(--ok);box-shadow:0 0 8px var(--ok)}.status.on b{color:var(--ok)}main{padding-bottom:20px}.panel{display:none;padding:12px}.active-panel{display:block}.hero-grid{display:grid;grid-template-columns:1.45fr .8fr;gap:10px}.tach-card,.gear-card,.bike-dial,.bike-header,.metric,.settings,.sensor-panel,.reference-note{border:1px solid var(--line);background:linear-gradient(145deg,#10161d,#0a0e13);box-shadow:0 12px 35px #00000035;border-radius:16px}.tach-card{padding:14px 12px 10px}.eyebrow{font-size:9px;letter-spacing:.2em;color:#8293a2;font-weight:900}.tach-wrap{height:175px;position:relative;margin-top:2px}.tach{position:absolute;width:100%;height:100%;inset:0}.arc-bg,.arc-progress{fill:none;stroke-width:8;stroke-linecap:round}.arc-bg{stroke:#1a232c}.arc-progress{stroke:#38b2ff;stroke-dasharray:100;stroke-dashoffset:100;filter:drop-shadow(0 0 6px #38b2ff55);transition:stroke-dashoffset .08s linear}.rpm-number{position:absolute;left:0;right:0;bottom:25px;text-align:center;font-size:48px;line-height:1;font-weight:900;letter-spacing:-.06em;font-variant-numeric:tabular-nums}.rpm-unit{position:absolute;left:0;right:0;bottom:10px;text-align:center;color:var(--muted);font-size:9px;letter-spacing:.22em}.tach-scale{display:flex;justify-content:space-between;color:#61707e;font-size:9px;padding:0 10px}.gear-card{padding:14px;display:flex;flex-direction:column;min-height:240px}.gear-big{font-size:78px;font-weight:900;line-height:1;text-align:center;margin:auto 0 4px;letter-spacing:-.08em}.gear-caption{text-align:center;color:var(--muted);font-size:8px;letter-spacing:.14em;min-height:16px}.gear-buttons{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;margin-top:13px}.control-btn{border:1px solid #27333e;background:#111821;border-radius:11px;min-height:53px;font-size:22px;font-weight:900}.control-btn small{display:block;font-size:7px;letter-spacing:.13em;color:#81909e;margin-top:1px}.control-btn.neutral{font-size:17px}.control-btn.smart{font-size:10px;line-height:1.2}.control-btn.smart.active{border-color:#2a9bda;box-shadow:0 0 14px #2aa7ff18}.metrics,.bike-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:9px}.metric{min-height:90px;padding:12px 10px}.metric span{display:block;color:#748392;font-size:8px;letter-spacing:.16em;font-weight:900}.metric strong{display:block;font-size:25px;line-height:1.15;margin-top:10px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.metric em{display:block;color:#52616f;font-size:7px;font-style:normal;letter-spacing:.1em;margin-top:3px}.metric.state strong{font-size:14px;line-height:1.3;margin-top:14px;color:#dce8f0}.load-bar{height:5px;background:#151c23;border-radius:5px;margin:10px 2px 5px;overflow:hidden}.load-bar div{height:100%;width:0;background:linear-gradient(90deg,#42c7ff,#ffd34d,#ff5b5b);border-radius:inherit;transition:width .12s}.telemetry-line{display:flex;justify-content:space-between;gap:8px;color:#657481;font-size:8px;padding:5px 2px;letter-spacing:.08em}.telemetry-line b{color:#b8c5cf}.main-controls{display:grid;grid-template-columns:2fr 1fr;gap:8px;margin-top:10px}.start-btn,.stop-btn,.sensor-btn{border-radius:13px;min-height:55px;border:1px solid #2b9bd8;font-weight:900;letter-spacing:.1em;font-size:11px;background:linear-gradient(180deg,#17435c,#0c2634);box-shadow:0 8px 24px #139eff12}.stop-btn{border-color:#4b2528;background:#211114;color:#ff9a9d}.sensor-btn{width:100%;font-size:12px;background:linear-gradient(180deg,#173c51,#0b222e)}.bike-header{display:flex;justify-content:space-between;align-items:center;padding:15px}.bike-header h1{font-size:26px;margin:5px 0 0;letter-spacing:-.04em}.bike-header h1 span{color:#65cfff;font-size:13px;letter-spacing:.12em}.bike-badge{font-size:10px;color:#b4c1cb;border:1px solid #2a3540;border-radius:20px;padding:8px 10px}.bike-dial{margin-top:9px;padding:18px;text-align:center}.bike-rpm-label{font-size:8px;color:#788895;letter-spacing:.2em}.bike-rpm{font-size:58px;font-weight:900;line-height:1.05;margin-top:4px}.bike-cadence{font-size:9px;color:#71808e;letter-spacing:.12em}.bike-cadence b{color:#dbe5ec;font-size:12px}.bike-cadence span{margin-left:5px;color:#4aaee0}.bike-progress{height:5px;background:#151e27;margin-top:13px;border-radius:5px;overflow:hidden}.bike-progress div{height:100%;width:0;background:#58c9ff;transition:width .1s}.bike-state{text-align:center;color:#a9b6c1;font-size:10px;font-weight:900;letter-spacing:.16em;padding:12px}.bike-gear-buttons{margin-top:0}.settings{margin:4px 12px 10px;padding:14px}.settings-title{font-size:10px;font-weight:900;letter-spacing:.17em;margin-bottom:10px}.settings-title span{float:right;color:#5d6d7b;font-size:8px}.settings label{display:grid;grid-template-columns:1fr auto;gap:5px;margin:10px 0;color:#8a99a6;font-size:9px;letter-spacing:.08em}.settings output{color:#d5e0e8;font-size:9px}.settings input{grid-column:1/-1;width:100%;accent-color:#3db7ff}.setting-note{font-size:8px;line-height:1.5;color:#5f6e7b;border-top:1px solid #19222a;padding-top:9px;margin-top:10px}.sensor-panel{margin:0 12px;padding:12px}.sensor-message{font-size:8px;color:#687886;line-height:1.5;margin-top:8px}.reference-note{margin:10px 12px;padding:12px;font-size:9px;color:#81909d;line-height:1.6}.reference-note b{color:#c6d2db;letter-spacing:.14em;margin-right:8px}.reference-note small{display:block;color:#566571;margin-top:4px}.panel#bikePanel{padding-top:12px}@media(max-width:560px){.hero-grid{grid-template-columns:1fr}.gear-card{min-height:185px}.gear-big{font-size:64px;margin-top:10px}.tach-wrap{height:165px}.metrics,.bike-grid{grid-template-columns:1fr 1fr}.metric{min-height:82px}.metric strong{font-size:22px}.telemetry-line{font-size:7px}.topbar{height:64px}.brand-mark{width:38px;height:38px}.brand-title{font-size:13px}.connection-strip{gap:4px}.status{padding:6px 2px}}@media(min-width:760px){.hero-grid{grid-template-columns:1.6fr .75fr}.tach-wrap{height:220px}.gear-card{min-height:300px}.rpm-number{font-size:62px}}
