:root{--bg: #090b10;--panel: #121722;--panel-raised: #171d2a;--panel-border: #283143;--accent: #00f0ff;--accent-alt: #ff00e6;--bg-tint: #161a2c;--neon-green: #39ff8c;--neon-yellow: #ffe600;--status-ok: #45d483;--status-warn: #f3c969;--status-bad: #ff6475;--text-dim: #a4adbd;--text: #f2f5f8;font-family:Segoe UI,system-ui,sans-serif}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}h1,h2,h3{text-wrap:balance}p,li{text-wrap:pretty}body{margin:0;background:radial-gradient(circle at 50% -10%,var(--bg-tint) 0%,var(--bg) 60%);color:var(--text);min-height:100vh;transition:background .3s ease}body.dialog-open{overflow:hidden}#app{width:100%;max-width:1280px;margin:0 auto;padding:clamp(16px,3vw,24px) clamp(12px,3vw,24px) 60px}header{display:flex;flex-direction:column;gap:14px;margin-bottom:28px;padding-bottom:18px;border-bottom:1px solid var(--panel-border)}.header-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 24px}.header-row--brand{justify-content:center;padding-bottom:14px;border-bottom:1px solid var(--panel-border)}.app-footer{margin-top:40px;padding-top:18px;border-top:1px solid var(--panel-border);text-align:center;color:var(--text-dim);font-size:.85rem}.app-footer a{color:var(--accent);text-decoration:none}.app-footer a:hover{text-decoration:underline}.header-id{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}.header-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.header-actions{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-left:auto}.export-status{align-self:flex-end;margin:-4px 0 0;padding:8px 10px;border-radius:8px;color:var(--text-dim);font-size:12px}.export-status:empty{display:none}.export-status[data-status=active]{color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--panel))}.export-status[data-status=ok]{color:var(--status-ok);background:color-mix(in srgb,var(--status-ok) 7%,var(--panel))}.export-status[data-status=error]{color:var(--status-bad);background:color-mix(in srgb,var(--status-bad) 7%,var(--panel))}h1{font-family:Bahnschrift Condensed,Arial Narrow,Segoe UI,sans-serif;font-size:24px;letter-spacing:2px;text-transform:uppercase;margin:0;color:var(--accent);text-shadow:0 0 8px color-mix(in srgb,var(--accent) 60%,transparent),0 0 20px color-mix(in srgb,var(--accent) 25%,transparent)}.value{color:var(--neon-green);font-weight:600}.mono{font-family:Consolas,SFMono-Regular,monospace}.mono,.guide-progress,.device-facts,.mash-estimate,#mashProgress,.mash-count,.mash-table,.vib-status{font-variant-numeric:tabular-nums}.field{display:flex;align-items:center;gap:8px;font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--text-dim)}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:var(--panel);border:1px solid var(--panel-border)}.dot{width:8px;height:8px;border-radius:50%;background:#444}.dot.connected{background:var(--neon-green);box-shadow:0 0 8px var(--neon-green)}.empty-state{display:none;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:48px 24px;margin-bottom:20px;border:1px dashed var(--panel-border);border-radius:10px;background:color-mix(in srgb,var(--accent) 4%,var(--panel))}.empty-state.visible{display:flex}.empty-state h2{margin:0;font-size:15px;text-transform:uppercase;letter-spacing:1.5px;color:var(--accent);text-shadow:0 0 10px color-mix(in srgb,var(--accent) 50%,transparent)}.empty-state p{margin:0;max-width:420px;font-size:13px;color:var(--text-dim)}.empty-state-pulse{width:14px;height:14px;border-radius:50%;background:var(--accent);box-shadow:0 0 14px color-mix(in srgb,var(--accent) 70%,transparent);animation:empty-pulse 1.6s ease-in-out infinite}@keyframes empty-pulse{0%,to{opacity:.4;transform:scale(.85)}50%{opacity:1;transform:scale(1.1)}}@media(prefers-reduced-motion:reduce){.empty-state-pulse{animation:none}}.guide-shell{margin-bottom:20px;padding:16px;border:1px solid color-mix(in srgb,var(--accent) 28%,var(--panel-border));border-radius:10px;background:linear-gradient(110deg,color-mix(in srgb,var(--accent) 7%,transparent),transparent 42%),var(--panel)}.mode-switch{display:inline-grid;grid-template-columns:1fr 1fr;gap:3px;padding:3px;border:1px solid var(--panel-border);border-radius:8px;background:var(--bg)}.mode-switch-button{min-height:38px;border-radius:5px;border-color:transparent;background:transparent;color:var(--text-dim)}.mode-switch-button.active{border-color:color-mix(in srgb,var(--accent) 44%,var(--panel-border));background:color-mix(in srgb,var(--accent) 11%,var(--panel));color:var(--accent);box-shadow:none}.guide-main{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;padding:26px 4px 20px}.guide-kicker,.panel-kicker{display:block;margin-bottom:7px;color:var(--accent);font:600 11px Consolas,SFMono-Regular,monospace;letter-spacing:.04em}.guide-copy h2{margin:0;max-width:720px;color:var(--text);font:600 32px Bahnschrift Condensed,Arial Narrow,Segoe UI,sans-serif;letter-spacing:.015em;text-wrap:balance}.guide-copy p{max-width:720px;margin:8px 0 0;color:var(--text-dim);font-size:14px;line-height:1.55}.guide-progress{flex:0 0 auto;max-width:260px;padding:9px 12px;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--panel-border));border-radius:999px;background:color-mix(in srgb,var(--accent) 8%,var(--bg));color:var(--accent);font:600 11px Consolas,SFMono-Regular,monospace;text-align:right}.guide-steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding-top:14px;border-top:1px solid var(--panel-border)}.guide-steps button{display:flex;align-items:center;justify-content:flex-start;gap:9px;min-height:44px;color:var(--text-dim);text-align:left}.guide-steps button span{display:grid;width:24px;height:24px;place-items:center;border:1px solid var(--panel-border);border-radius:50%;font:600 10px Consolas,monospace}.guide-steps button.active{border-color:var(--accent);color:var(--text);background:color-mix(in srgb,var(--accent) 9%,var(--panel))}.guide-steps button.active span{border-color:var(--accent);background:var(--accent);color:#090b10}.guide-steps button[data-state=complete]:not(.active){border-color:color-mix(in srgb,var(--neon-green) 42%,var(--panel-border))}.guide-steps button[data-state=complete]:not(.active) span{border-color:var(--neon-green);color:var(--neon-green)}.guide-steps button[data-state=in-progress]:not(.active) span{border-color:var(--accent);color:var(--accent)}.guide-steps button[data-state=skipped]{border-style:dashed}.guide-now{display:grid;grid-template-columns:minmax(240px,.8fr) minmax(360px,1.2fr);gap:22px;margin-top:14px;padding:18px;border:1px solid color-mix(in srgb,var(--accent) 58%,var(--panel-border));border-radius:10px;background:color-mix(in srgb,var(--accent) 7%,var(--panel));box-shadow:0 4px 8px color-mix(in srgb,#000 18%,transparent)}.guide-now-kicker{display:block;margin-bottom:8px;color:var(--accent);font:700 11px Consolas,monospace;letter-spacing:.04em}.guide-now h3{margin:0;color:var(--text);font:600 22px Bahnschrift Condensed,Arial Narrow,Segoe UI,sans-serif;letter-spacing:.02em;text-wrap:balance}.guide-now p{margin:8px 0 0;color:var(--text-dim);font-size:13px;line-height:1.55}.guide-task-list{display:grid;gap:7px;margin:0;padding:0;list-style:none}.guide-task{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:44px;padding:8px 10px;border:1px solid var(--panel-border);border-radius:8px;background:color-mix(in srgb,var(--bg) 76%,transparent)}.guide-task-marker{width:12px;height:12px;border:2px solid var(--text-dim);border-radius:50%}.guide-task-copy{display:grid;gap:2px}.guide-task-copy strong{color:var(--text);font-size:12px}.guide-task-copy small,.guide-task-status{color:var(--text-dim);font-size:12px}.guide-task-status{font-family:Consolas,monospace}.guide-task--active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 9%,var(--bg))}.guide-task--active .guide-task-marker{border-color:var(--accent);box-shadow:0 0 6px color-mix(in srgb,var(--accent) 55%,transparent)}.guide-task--complete .guide-task-marker,.guide-task--not-applicable .guide-task-marker{border-color:var(--neon-green);background:var(--neon-green);box-shadow:inset 0 0 0 3px var(--bg)}.guide-task--complete .guide-task-status{color:var(--neon-green)}.guide-task--error{border-color:color-mix(in srgb,var(--status-bad) 62%,var(--panel-border))}.guide-task--error .guide-task-marker,.guide-task--error .guide-task-status{border-color:var(--status-bad);color:var(--status-bad)}.guide-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding-top:14px}.guide-context-action{margin-right:auto;min-height:46px;border-color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,var(--panel));color:var(--accent);font-weight:700;box-shadow:0 2px 6px color-mix(in srgb,var(--accent) 18%,transparent)}.guide-skip{border-style:dashed;color:var(--text-dim)}.guide-shell--lab{padding:8px;border-color:var(--panel-border);background:var(--panel)}.guide-shell--lab .guide-main,.guide-shell--lab .guide-steps,.guide-shell--lab .guide-now,.guide-shell--lab .guide-actions,.lab-nav{display:none}body[data-app-mode=lab] .lab-nav{position:sticky;z-index:20;top:8px;display:flex;align-items:center;gap:8px;margin-bottom:16px;padding:8px;overflow-x:auto;border:1px solid var(--panel-border);border-radius:10px;background:color-mix(in srgb,var(--panel) 94%,transparent);box-shadow:0 4px 8px color-mix(in srgb,#000 18%,transparent)}body[data-app-mode=lab][data-connection-state=disconnected] .lab-nav,body[data-app-mode=lab][data-connection-state=disconnected] .grid.disconnected,body[data-connection-state=disconnected] .header-actions{display:none}.lab-nav>span{flex:0 0 auto;padding-inline:6px;color:var(--text-dim);font-size:12px;font-weight:600}.lab-nav button{flex:0 0 auto;min-height:36px}body[data-app-mode=lab] .panel{scroll-margin-top:76px}body[data-app-mode=guided] #openMashTestBtn,body[data-app-mode=guided] #exportReportBtn{display:none}body[data-app-mode=guided] #resetDataBtn{border-color:var(--panel-border);background:transparent;color:var(--text-dim)}body[data-app-mode=guided] .header-actions{display:flex;width:auto}body[data-app-mode=guided] .stick-settings{display:none}body[data-app-mode=guided] .stick-row{align-items:center}body[data-app-mode=guided] .stick-panel--left{order:-3}body[data-app-mode=guided] .stick-panel--right{order:-2}body[data-app-mode=guided] .neutral-panel{order:-1}.device-panel{display:grid;grid-template-columns:minmax(250px,.85fr) minmax(360px,1.15fr);align-items:center;min-height:330px;overflow:hidden;background:radial-gradient(circle at 75% 50%,color-mix(in srgb,var(--accent) 9%,transparent),transparent 38%),var(--panel)}.device-panel h2{margin-bottom:20px}.device-panel-copy>strong{display:block;max-width:520px;color:var(--text);font:600 clamp(22px,3vw,34px) "Bahnschrift Condensed","Arial Narrow","Segoe UI",sans-serif;line-height:1.12}.device-panel-copy>p{max-width:520px;margin:12px 0 0;color:var(--text-dim);font-size:14px;line-height:1.55}.device-facts{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.device-facts span,.confidence-chip{padding:6px 9px;border:1px solid var(--panel-border);border-radius:6px;background:var(--bg);color:var(--text-dim);font:600 10px Consolas,monospace;text-transform:uppercase}.device-facts [data-status=ok],.confidence-chip[data-status=ok]{border-color:color-mix(in srgb,var(--status-ok) 50%,var(--panel-border));color:var(--status-ok)}.device-facts [data-status=warn],.confidence-chip[data-status=warn]{border-color:color-mix(in srgb,var(--status-warn) 50%,var(--panel-border));color:var(--status-warn)}.confidence-chip[data-status=bad]{border-color:color-mix(in srgb,var(--status-bad) 50%,var(--panel-border));color:var(--status-bad)}.device-visual{min-width:0}.panel-heading-row,.results-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.panel-heading-row h2,.results-heading h2{margin-bottom:0}.measurement-instruction{margin:12px 0 18px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--accent) 45%,var(--panel-border));border-radius:8px;background:color-mix(in srgb,var(--accent) 6%,var(--bg));color:var(--text);font-size:13px;line-height:1.5}.measurement-instruction[data-status=active]{color:var(--accent)}.measurement-instruction[data-status=ok]{border-color:color-mix(in srgb,var(--status-ok) 55%,var(--panel-border))}.measurement-instruction[data-status=warn]{border-color:color-mix(in srgb,var(--status-warn) 55%,var(--panel-border))}.results-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.result-card{min-width:0;padding:15px;border:1px solid var(--panel-border);border-radius:8px;background:var(--bg)}.result-card--ok{border-color:color-mix(in srgb,var(--status-ok) 45%,var(--panel-border))}.result-card--warn{border-color:color-mix(in srgb,var(--status-warn) 45%,var(--panel-border))}.result-card--bad{border-color:color-mix(in srgb,var(--status-bad) 45%,var(--panel-border))}.result-card--neutral{border-color:color-mix(in srgb,var(--text-dim) 35%,var(--panel-border))}.result-card-status{color:var(--text-dim);font:600 11px Consolas,monospace;letter-spacing:.03em}.result-card--ok .result-card-status{color:var(--status-ok)}.result-card--warn .result-card-status{color:var(--status-warn)}.result-card--bad .result-card-status{color:var(--status-bad)}.result-card h3{margin:7px 0 5px;color:var(--text);font-size:15px}.result-card p{margin:0;color:var(--text-dim);font-size:13px;line-height:1.5}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;transition:opacity .25s ease,filter .25s ease}.guide-hidden{display:none!important}.grid.disconnected{opacity:.45;filter:grayscale(.5);pointer-events:none}body[data-app-mode=guided] .empty-state.visible,body[data-app-mode=guided] .grid.disconnected,body[data-app-mode=guided] #measureNeutralBtn{display:none}.panel{min-width:0;background:var(--panel);border:1px solid var(--panel-border);border-radius:10px;padding:20px;box-shadow:inset 0 1px color-mix(in srgb,white 3%,transparent)}.panel h2{margin:0 0 14px;font-family:Bahnschrift Condensed,Arial Narrow,Segoe UI,sans-serif;font-size:15px;text-transform:uppercase;letter-spacing:1.5px;color:var(--text-dim)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.stick-row{display:flex;gap:18px;align-items:flex-start;min-width:0}.stick-visual{display:grid;flex:0 0 min(210px,44%);gap:12px;min-width:0}canvas.stick{width:min(180px,100%);height:auto;justify-self:center;aspect-ratio:1;background:#060710;border-radius:50%;border:1px solid var(--panel-border)}.stick-progress{display:grid;gap:7px;padding:10px 11px;border:1px solid var(--panel-border);border-radius:8px;background:color-mix(in srgb,var(--bg) 78%,transparent);transition:border-color .18s ease,background-color .18s ease}.stick-progress-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px;color:var(--text);font-size:12px}.stick-progress-heading span{color:var(--text-dim);font-size:11px}.stick-progress-track{height:6px;overflow:hidden;border-radius:999px;background:color-mix(in srgb,var(--panel-border) 72%,var(--bg))}.stick-progress-track span{display:block;width:0;height:100%;border-radius:inherit;background:var(--accent);transition:width .18s ease-out}.stick-progress p{margin:0;color:var(--text-dim);font-size:12px;line-height:1.45}.stick-progress[data-state=active]{border-color:color-mix(in srgb,var(--accent) 62%,var(--panel-border));background:color-mix(in srgb,var(--accent) 7%,var(--bg))}.stick-progress[data-state=active] .stick-progress-heading span{color:var(--accent)}.stick-progress[data-state=complete]{border-color:color-mix(in srgb,var(--neon-green) 58%,var(--panel-border));background:color-mix(in srgb,var(--neon-green) 6%,var(--bg))}.stick-progress[data-state=complete] .stick-progress-heading span,.stick-progress[data-state=complete] p{color:var(--neon-green)}.stick-progress[data-state=complete] .stick-progress-track span{background:var(--neon-green)}.sliders{min-width:0}.calib-actions{display:flex;gap:8px;margin-top:10px}.sliders label{display:block;font-size:12px;color:var(--text-dim);margin:10px 0 4px}.sliders input[type=range]{width:100%;accent-color:var(--accent-alt)}.coord{font-size:12px;color:var(--text-dim);margin-top:8px;line-height:1.5}.coord b{color:var(--accent)}.buttons-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-top:6px}.btn-cell{background:#0d0f18;border:1px solid var(--panel-border);border-radius:8px;text-align:center;padding:10px 4px;font-size:11px;color:var(--text-dim);transition:background-color .08s ease,border-color .08s ease,color .08s ease,box-shadow .08s ease}.btn-cell.active{background:color-mix(in srgb,var(--accent) 12%,transparent);border-color:var(--accent);color:var(--accent);box-shadow:0 0 12px color-mix(in srgb,var(--accent) 45%,transparent)}.btn-cell.chatter{background:color-mix(in srgb,var(--accent-alt) 18%,transparent);border-color:var(--accent-alt);color:var(--accent-alt);box-shadow:0 0 12px color-mix(in srgb,var(--accent-alt) 60%,transparent)}.silhouette-frame{position:relative;width:min(100%,380px);margin:0 auto 18px}.silhouette-frame.hidden{display:none}.silhouette-img{width:100%;height:100%;display:block;border-radius:12px}.silhouette-dots{position:absolute;top:0;right:0;bottom:0;left:0}.silhouette-dot,.silhouette-stick{position:absolute;transform:translate(-50%,-50%);border-radius:50%;background:var(--accent);box-shadow:0 0 16px color-mix(in srgb,var(--accent) 80%,transparent);opacity:0;transition:opacity .08s ease;pointer-events:none}.silhouette-stick{background:var(--accent-alt);box-shadow:0 0 10px color-mix(in srgb,var(--accent-alt) 50%,transparent);opacity:.85}.silhouette-stick.active{box-shadow:0 0 20px color-mix(in srgb,var(--accent-alt) 90%,transparent)}.panel--trigger-vibration{align-self:start}.trigger-gauges{display:flex;gap:16px;margin-bottom:18px}.trigger-gauge{flex:1}.trigger-bar-bg{position:relative;background:#060710;border-radius:6px;height:14px;overflow:hidden;border:1px solid var(--panel-border)}.trigger-bar-bg--thick{height:22px;border-radius:8px}.trigger-bar-fill{position:relative;z-index:1;height:100%;width:0%;background:linear-gradient(90deg,var(--accent-alt),var(--accent));transition:width .03s linear}.trigger-target-zone{position:absolute;z-index:2;inset:0 auto 0 35%;width:30%;pointer-events:none;background:color-mix(in srgb,var(--accent) 12%,transparent);border-inline:1px solid color-mix(in srgb,var(--accent) 70%,transparent);transition-property:background-color,box-shadow;transition-duration:.18s;transition-timing-function:cubic-bezier(.2,0,0,1)}.trigger-gauge[data-phase=stabilizing] .trigger-target-zone,.trigger-gauge[data-phase=measuring] .trigger-target-zone{background:color-mix(in srgb,var(--accent) 23%,transparent);box-shadow:inset 0 0 10px color-mix(in srgb,var(--accent) 22%,transparent)}.trigger-gauge[data-phase=measuring] .trigger-bar-bg{border-color:color-mix(in srgb,var(--accent) 70%,var(--panel-border));box-shadow:0 0 12px color-mix(in srgb,var(--accent) 16%,transparent)}.trigger-stability-status{min-height:2.8em;margin-bottom:0;font-variant-numeric:tabular-nums}.trigger-label{display:flex;justify-content:space-between;font-size:11px;color:var(--text-dim);margin-bottom:4px}.legend-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:2px}.legend-dot--accent{background:var(--accent)}.legend-dot--accent-alt{background:var(--accent-alt)}.vib-section{padding-top:14px;border-top:1px solid var(--panel-border)}.vib-section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:12px}.vib-section-head h3{margin:0;font-size:12px;text-transform:uppercase;letter-spacing:1.5px;color:var(--text-dim)}.vib-status{font-size:12px;font-weight:600;color:var(--text-dim)}.vib-status--ok{color:var(--neon-green);text-shadow:0 0 8px color-mix(in srgb,var(--neon-green) 50%,transparent)}.vib-status--warn{color:var(--accent-alt)}.motor-cards{display:flex;gap:12px}.motor-card{flex:1;background:#0d0f18;border:1px solid var(--panel-border);border-radius:10px;padding:10px 12px;transition:border-color .15s ease,box-shadow .15s ease}.motor-card.active{border-color:var(--accent-alt);animation:motor-pulse .5s ease-in-out infinite}@keyframes motor-pulse{0%,to{box-shadow:0 0 6px color-mix(in srgb,var(--accent-alt) 35%,transparent)}50%{box-shadow:0 0 16px color-mix(in srgb,var(--accent-alt) 75%,transparent)}}.motor-card-head{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;margin-bottom:8px}.motor-card-head .note{margin:0}.motor-card input[type=range]{width:100%;accent-color:var(--accent-alt)}.motor-card-foot{display:flex;justify-content:space-between;align-items:center;margin-top:8px}.vib-presets{display:flex;justify-content:center;gap:8px;margin-top:16px;flex-wrap:wrap}.vib-footnotes{padding-top:16px}button{background:#0d0f18;border:1px solid var(--panel-border);color:var(--text);padding:8px 14px;border-radius:8px;font-size:12px;min-height:40px;cursor:pointer;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease,transform .12s ease}button:hover{border-color:var(--accent);color:var(--accent);box-shadow:0 0 10px color-mix(in srgb,var(--accent) 30%,transparent)}button:active:not(:disabled){transform:scale(.96)}button:disabled,button:disabled:hover{cursor:not-allowed;opacity:.42;border-color:var(--panel-border);color:var(--text-dim);box-shadow:none;animation:none;transform:none}button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button.danger:hover{border-color:var(--accent-alt);color:var(--accent-alt);box-shadow:0 0 10px color-mix(in srgb,var(--accent-alt) 30%,transparent)}button.btn-highlight{background:color-mix(in srgb,var(--accent) 14%,var(--panel));border-color:var(--accent);color:var(--accent);font-weight:600;animation:none}button.btn-highlight:hover{box-shadow:0 0 16px color-mix(in srgb,var(--accent) 55%,transparent)}@keyframes btn-highlight-pulse{0%,to{box-shadow:0 0 6px color-mix(in srgb,var(--accent) 25%,transparent)}50%{box-shadow:0 0 16px color-mix(in srgb,var(--accent) 50%,transparent)}}@media(prefers-reduced-motion:reduce){button.btn-highlight{animation:none;box-shadow:0 0 8px color-mix(in srgb,var(--accent) 30%,transparent)}.motor-card.active{animation:none}.stick-progress,.stick-progress-track span{transition:none}button{transition-duration:.01ms}button:active:not(:disabled){transform:none}}select,input[type=text]{background:#0d0f18;border:1px solid var(--panel-border);color:var(--text);padding:8px 10px;border-radius:8px;font-size:12px;min-height:40px}select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:28px;background-image:linear-gradient(45deg,transparent 50%,var(--text-dim) 50%),linear-gradient(135deg,var(--text-dim) 50%,transparent 50%);background-position:calc(100% - 14px) center,calc(100% - 9px) center;background-size:5px 5px,5px 5px;background-repeat:no-repeat;cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease}select:hover{border-color:var(--accent)}select:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 0 10px color-mix(in srgb,var(--accent) 35%,transparent)}select option{background:var(--panel);color:var(--text)}.graph{background:#060710;border:1px solid var(--panel-border);border-radius:8px;width:100%;height:80px}.span-2{grid-column:1 / -1}.press-log-frame{height:228px;overflow:hidden;background:#060710;border:1px solid var(--panel-border);border-radius:8px;font-family:Consolas,monospace;font-size:12px}.press-log-columns,.press-log-entry{display:grid;grid-template-columns:8ch minmax(120px,1.5fr) minmax(70px,.55fr) minmax(105px,.8fr) minmax(100px,.85fr);column-gap:clamp(12px,2vw,32px);align-items:center}.press-log-columns{height:26px;padding:0 12px;border-bottom:1px solid var(--panel-border);color:var(--text-dim);font-size:11px;letter-spacing:.04em}.press-log-columns span:nth-child(n+3){text-align:right}.press-log{height:200px;overflow:hidden;padding:0 12px}.press-log:empty:before{content:"En attente d’un appui…";display:grid;height:100%;place-items:center;color:var(--text-dim)}.press-log-entry{color:var(--text-dim);padding:2px 0;border-bottom:1px solid #14172380;line-height:15px}.press-log-time,.press-log-value,.press-log-interval{font-variant-numeric:tabular-nums}.press-log-button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.press-log-value,.press-log-interval{text-align:right}.press-log-status{justify-self:end;min-width:62px;padding:1px 7px;border:1px solid var(--panel-border);border-radius:999px;color:var(--text-dim);font-size:11px;line-height:14px;text-align:center}.press-log-entry:first-child{box-shadow:-12px 0 0 -10px var(--accent);background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 8%,transparent),transparent 45%)}.press-log-entry:first-child .press-log-button{color:var(--accent)}.press-log-entry.is-chatter .press-log-button{color:var(--text)}.press-log-entry.is-chatter .press-log-status{border-color:color-mix(in srgb,var(--accent-alt) 45%,transparent);color:color-mix(in srgb,var(--accent-alt) 75%,var(--text))}.press-log-entry.is-chatter:first-child{box-shadow:-12px 0 0 -10px var(--accent-alt);background:linear-gradient(90deg,color-mix(in srgb,var(--accent-alt) 8%,transparent),transparent 45%)}@media(max-width:720px){.press-log-columns,.press-log-entry{grid-template-columns:7ch minmax(0,1fr) 9ch;column-gap:8px}.press-log-heading-value,.press-log-heading-interval,.press-log-value,.press-log-interval{display:none}}.note{font-size:13px;line-height:1.45;color:var(--text-dim);margin-top:8px}.device-visual .silhouette-frame{width:min(100%,520px);margin:0 auto}.hidden{display:none}.mash-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#060710eb;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);align-items:flex-start;justify-content:center;overflow-y:auto;padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));z-index:100}.mash-overlay.visible{display:flex}.mash-panel{width:min(560px,92vw);max-height:calc(100dvh - 24px);margin:auto;background:var(--panel);border:1px solid var(--panel-border);border-radius:16px;padding:28px;overflow-y:auto;overscroll-behavior:contain;box-shadow:0 0 40px color-mix(in srgb,var(--accent) 12%,transparent);text-align:center}.mash-panel h2{margin:0 0 10px;font-size:16px;text-transform:uppercase;letter-spacing:1.5px;color:var(--accent)}.mash-panel .field{justify-content:center;margin:16px 0}.mash-optimal-conditions{text-align:left;background:color-mix(in srgb,var(--accent) 8%,#060710);border:1px solid color-mix(in srgb,var(--accent) 35%,var(--panel-border));border-radius:10px;padding:14px 16px;margin-top:14px}.mash-optimal-conditions h3{margin:0 0 8px;font-size:13px;text-transform:uppercase;letter-spacing:1px;color:var(--accent)}.mash-optimal-conditions ul{margin:0;padding-left:20px;font-size:14px;line-height:1.5;color:var(--text)}.mash-optimal-conditions li+li{margin-top:6px}.mash-optimal-conditions strong{color:var(--accent-alt)}.mash-optimal-conditions details{margin-top:12px;padding-top:10px;border-top:1px solid color-mix(in srgb,var(--accent) 25%,var(--panel-border))}.mash-optimal-conditions summary{color:var(--text-dim);font-size:12px;cursor:pointer}.mash-optimal-conditions details ul{margin-top:10px;color:var(--text-dim);font-size:12px}.mash-estimate{margin:12px 0 0;padding:10px 12px;border:1px solid color-mix(in srgb,var(--accent) 45%,var(--panel-border));border-radius:8px;background:color-mix(in srgb,var(--accent) 8%,var(--bg));color:var(--text);font:600 12px/1.5 Consolas,monospace;text-align:left}.mash-actions{display:flex;justify-content:center;gap:8px;margin-top:18px}#mashCurrentLabel{font-size:36px;margin:18px 0 14px;color:var(--accent-alt);text-shadow:0 0 14px color-mix(in srgb,var(--accent-alt) 60%,transparent)}.mash-timer-bar-bg{background:#060710;border:1px solid var(--panel-border);border-radius:6px;height:10px;overflow:hidden}.mash-timer-bar-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--accent),var(--accent-alt));transition:width .05s linear}.mash-count{font-size:48px;font-weight:700;margin-top:16px;color:var(--neon-green);font-family:Consolas,monospace}.mash-table{width:100%;border-collapse:collapse;margin-top:14px;font-size:12px}.mash-table th,.mash-table td{padding:6px 8px;border-bottom:1px solid var(--panel-border);text-align:left}.mash-table th{color:var(--text-dim);font-size:11px;letter-spacing:.04em}.mash-table tbody tr:hover{background:color-mix(in srgb,var(--accent) 6%,transparent)}.mash-overall-grade{font-size:13px;font-weight:600;margin:0 0 6px;text-align:left}.mash-grade-excellent{color:var(--neon-green)}.mash-grade-good{color:var(--accent)}.mash-grade-fair{color:var(--neon-yellow)}.mash-grade-poor{color:var(--accent-alt)}.mash-grade-na{color:var(--text-dim)}.mash-reliability-warning{color:var(--neon-yellow);margin-top:8px}.mash-verdict{font-size:13px;font-weight:600;margin:12px 0 0;text-align:left}.mash-limits-note{margin-top:10px;opacity:.75}@media(max-width:960px){.device-panel{grid-template-columns:minmax(0,1fr)}.device-panel-copy{text-align:center}.device-panel-copy>p{margin-inline:auto}.device-facts{justify-content:center}.grid{grid-template-columns:minmax(0,1fr)}.span-2{grid-column:auto}.panel--trigger-vibration{align-self:stretch}}@media(max-width:720px){#app{padding-bottom:40px}header{gap:12px;margin-bottom:20px;padding-bottom:16px}.header-row{align-items:stretch}.export-status{align-self:stretch;margin-top:0;text-align:center}.guide-copy h2{font-size:28px}.field,.guide-kicker,.panel-kicker,.guide-now-kicker,.result-card-status{font-size:12px}body[data-app-mode=lab] .lab-nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));top:4px;overflow-x:visible;margin-inline:-4px}.lab-nav>span{display:none}.lab-nav button{width:100%;min-height:44px;padding-inline:8px}body[data-app-mode=lab] .panel{scroll-margin-top:126px}.header-controls{display:grid;grid-template-columns:minmax(0,1fr);width:100%}.header-controls .field{display:grid;grid-template-columns:54px minmax(0,1fr);width:100%;min-width:0}.header-controls select{width:100%;min-width:0}button,select,.mode-switch-button{min-height:44px}.header-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;margin-left:0}.header-actions button{width:100%;min-height:44px;padding-inline:8px}.empty-state{padding:36px 18px}.guide-main{align-items:stretch;flex-direction:column;gap:18px}.guide-progress{flex-basis:auto;text-align:left}.guide-now{grid-template-columns:minmax(0,1fr);gap:14px}.guide-steps{grid-template-columns:repeat(2,minmax(0,1fr))}.guide-actions{flex-wrap:wrap}.guide-context-action{width:100%;margin-right:0;order:-1}.guide-skip,.guide-next{flex:1}body[data-app-mode=guided] .header-actions{display:flex;justify-content:flex-end;width:100%}body[data-app-mode=guided] .header-actions button{width:auto}.results-grid{grid-template-columns:minmax(0,1fr)}.panel-heading-row,.results-heading{align-items:stretch;flex-direction:column}.grid{gap:14px}.panel{padding:16px}.motor-card-foot button,.vib-presets button,.calib-actions button,.mash-actions button,input[type=range]{min-height:44px}.buttons-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.btn-cell{min-width:0}.mash-panel{width:min(560px,100%);padding:20px}}@media(max-width:560px){h1{font-size:20px}.guide-copy h2{font-size:26px}.header-id,.status-pill{max-width:100%}#padName{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stick-row{flex-direction:column}.stick-visual{width:min(220px,78vw);flex-basis:auto;align-self:center}canvas.stick{width:min(180px,100%)}.sliders{width:100%}.calib-actions{display:grid;grid-template-columns:minmax(0,1fr) auto}.motor-cards{display:grid;grid-template-columns:minmax(0,1fr)}.vib-section-head{gap:12px}.press-log-columns,.press-log-entry{grid-template-columns:minmax(0,1fr) minmax(70px,8ch);column-gap:6px}.press-log-columns>span:first-child,.press-log-time{display:none}.press-log-columns,.press-log{padding-inline:8px}.press-log-status{min-width:0;padding-inline:4px}.mash-panel{padding:18px 14px;border-radius:12px}.mash-optimal-conditions{padding:12px}.mash-optimal-conditions ul{padding-left:18px;font-size:13px}.mash-table{display:block;overflow-x:auto;white-space:nowrap}}@media(max-width:360px){.header-actions{grid-template-columns:minmax(0,1fr)}.header-controls .field{flex-basis:100%}.guide-task{grid-template-columns:18px minmax(0,1fr)}.guide-task-status{grid-column:2}.mode-switch,.guide-steps{grid-template-columns:minmax(0,1fr);width:100%}.guide-actions>button{width:100%}.buttons-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.trigger-gauges{flex-direction:column;gap:10px}.mash-actions{flex-wrap:wrap}}
