.pain-row{gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border);background:var(--bg-panel);min-inline-size:0;border-radius:10px;min-width:0;margin:0;display:grid}.pain-row legend{padding:0;font-weight:600}.pain-buttons{gap:var(--space-2);grid-template-columns:repeat(auto-fit,minmax(44px,1fr));display:grid}.pain-buttons button{font-variant-numeric:tabular-nums;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:0;display:flex}.pain-buttons button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-dim)}.pain-anchors{color:var(--text-dim);margin:0;font-size:.8125rem}.pain-status{color:var(--text-dim);margin:0}.progress-panel{border:1px solid var(--border);background:var(--bg-raise);border-radius:12px}.progress-panel>summary{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);cursor:pointer;display:flex}.progress-count{color:var(--text-dim)}.progress-content{padding:0 var(--space-4) var(--space-4)}.progress-tests{gap:var(--space-4);display:grid}.progress-legend{color:var(--text-dim);margin:0;font-size:.8125rem;line-height:1.5}.progress-empty{color:var(--text-dim);line-height:1.5}.progress-card{gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border);background:var(--bg-panel);border-radius:10px;min-width:0;display:grid}.progress-card h4{margin:0;font-size:1.0625rem;font-weight:650}.progress-subtitle{color:var(--text-dim);margin:0;font-size:.8125rem}.progress-latest{margin:0;line-height:1.5}.progress-band{color:var(--text-dim);margin:0;line-height:1.5}.progress-change{align-items:flex-start;gap:var(--space-2);padding:var(--space-3);border:1px solid var(--border);border-radius:8px;margin:0;line-height:1.5;display:flex}.progress-change[data-label=likely-gain]{border-color:var(--accent);background:var(--accent-dim)}.progress-change[data-label=likely-drop]{border-color:var(--warn);color:var(--warn)}.progress-change .icon{margin-top:.2rem}.progress-values{min-width:0;overflow-x:auto}.progress-values summary{cursor:pointer;color:var(--text-dim)}.progress-table{width:100%;margin-top:var(--space-2);border-collapse:collapse;font-variant-numeric:tabular-nums}.progress-table th,.progress-table td{padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--border);text-align:left}.progress-table th{color:var(--text-dim);font-weight:600}.plot{width:100%;height:auto;display:block}.plot-grid line{stroke:var(--border);stroke-width:1px}.plot-axis text{fill:var(--text-dim);font-size:9px}.plot-band{fill:var(--accent);fill-opacity:.12;stroke:none}.plot-line-primary{stroke:var(--accent);stroke-width:2px}.plot-line-secondary{stroke:var(--text-dim);stroke-width:2px;stroke-dasharray:4 3}.plot-dot-left{fill:var(--text);stroke:none}.plot-dot-right{fill:var(--bg);stroke:var(--text);stroke-width:1.5px}.plot-marker{fill:var(--accent);stroke:var(--bg-panel);stroke-width:1px}.plot-note{fill:var(--warn);font-size:9px;font-weight:700}.plot-xline line,.plot-yline line{stroke:var(--text-dim);stroke-width:1px;stroke-dasharray:2 2}.plot-bar-left{fill:var(--accent)}.ph-section{gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border);background:var(--bg-panel);border-radius:10px;min-width:0;display:grid;overflow-x:auto}.ph-section h3{margin:0;font-size:1.0625rem;font-weight:650}.section-empty{color:var(--text-dim);margin:0;line-height:1.5}.ph-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.ph-table th,.ph-table td{padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--border);text-align:left}.ph-table th{color:var(--text-dim);font-weight:600}.pain-summary,.pain-advice{margin:0;line-height:1.5}.load-caption,.load-legend,.load-note{color:var(--text-dim);margin:0;font-size:.8125rem;line-height:1.5}.rehab-alert{padding:var(--space-2) var(--space-3);border:1px solid var(--danger);color:var(--danger);border-radius:8px;margin:0}.rehab-start{gap:var(--space-3);display:grid}.rehab-field{gap:var(--space-1);color:var(--text-dim);display:grid}.rehab-field input[type=date],.rehab-field input[type=text]{min-height:44px;color:var(--text);background:var(--bg-panel);border:1px solid var(--border);border-radius:8px}.rehab-period{gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--border);display:grid}.rehab-header{margin:0;font-weight:600}.rehab-note,.rehab-clinician,.rehab-healthy,.rehab-latest,.rehab-no-pre,.rehab-healthy-change{color:var(--text-dim);margin:0;line-height:1.5}.checks-latest{margin:0;line-height:1.5}.checks-footnote{color:var(--text-dim);margin:0;font-size:.8125rem}.plot-stripes rect{fill:var(--bg-panel)}.plot-stripes line{stroke:var(--text);stroke-width:2px}#report{display:none}@page{size:A4 portrait;margin:14mm}@media print{#app{display:none}#report{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:#000;--bg:#fff;--bg-raise:#fff;--bg-panel:#fff;--border:#000;--text:#000;--text-dim:#000;--accent:#000;--accent-dim:#fff;--danger:#000;--warn:#000;--success:#000;background:#fff;font-size:10.5pt;line-height:1.4;display:block}#report h1{font-size:16pt}#report h2{font-size:12.5pt}#report section,#report figure,#report table{break-inside:avoid}#report table{border-collapse:collapse;width:100%;margin:2mm 0 4mm}#report caption{text-align:left;margin-bottom:1mm;font-weight:600}#report th,#report td{border-bottom:1px solid var(--border);text-align:left;padding:1mm 2mm}#report h1,#report h2{margin:0 0 4mm}#report p{margin:0 0 2mm}#report section{margin-bottom:6mm}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0d1117;--bg-raise:#161b22;--bg-panel:#1c2230;--border:#344052;--text:#e6e9ef;--text-dim:#adb7c6;--accent:#4ade80;--accent-dim:#203b2e;--danger:#ff9595;--warn:#fbbf24;--success:#b0edc7;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;font-family:system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}body{background:var(--bg);color:var(--text);scrollbar-color:var(--border) var(--bg);min-height:100dvh;margin:0}::selection{background:var(--accent);color:var(--bg)}h1,h2,p,dl,dd{margin:0}h1{letter-spacing:-.025em;font-size:1.5rem;font-weight:700}h2{letter-spacing:-.02em;font-size:1.625rem;font-weight:650}button,input,select{font:inherit}button,select,input,summary{-webkit-tap-highlight-color:transparent}button,select,input[type=number]{border:1px solid var(--border);min-height:48px;color:var(--text);background:var(--bg-panel);border-radius:8px}button{cursor:pointer;padding:.65rem 1rem;font-weight:600;transition:background .15s ease-out,border-color .15s ease-out}@media (hover:hover){button:hover:not(:disabled),select:hover:not(:disabled){border-color:var(--text-dim)}}button.primary{background:var(--accent);border-color:var(--accent);color:#0a1510}@media (hover:hover){button.primary:hover:not(:disabled){background:#78e99f;border-color:#78e99f}}button:disabled,select:disabled,input:disabled{opacity:.45;cursor:not-allowed}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}input,select{min-width:0;max-width:100%;caret-color:var(--accent);padding:.6rem .75rem}input::placeholder{color:var(--text-dim)}input[type=number]{font-variant-numeric:tabular-nums;width:9rem}input[type=checkbox]{accent-color:var(--accent);width:1.125rem;height:1.125rem;margin:0}.muted{color:var(--text-dim);font-size:.875rem;line-height:1.5}#app{max-width:1100px;padding:max(var(--space-5), env(safe-area-inset-top)) max(var(--space-6), env(safe-area-inset-right)) max(var(--space-6), env(safe-area-inset-bottom)) max(var(--space-6), env(safe-area-inset-left));margin:0 auto}#hud{justify-content:space-between;align-items:center;gap:var(--space-4);padding-bottom:var(--space-5);border-bottom:1px solid var(--border);display:flex}.hud-title p{margin-top:var(--space-1);font-size:.75rem}.force-readout{align-items:flex-end;gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.force-readout .muted{font-size:.75rem}#readout{font-variant-numeric:tabular-nums;text-align:right;font-size:1.125rem;font-weight:600}main{gap:var(--space-5);flex-direction:column;display:flex}#setup{border-bottom:1px solid var(--border)}summary{align-items:center;gap:var(--space-5);min-height:64px;padding-block:var(--space-3);cursor:pointer;font-size:.875rem;list-style:none;display:flex}summary::-webkit-details-marker{display:none}.connection{align-items:center;gap:var(--space-2);overflow-wrap:anywhere;min-width:0;display:flex}.connection-dot{background:var(--text-dim);border-radius:50%;flex-shrink:0;width:7px;height:7px}.connection-dot[data-connected=true]{background:var(--accent)}.reference-summary{color:var(--text-dim)}.setup-label{align-items:center;gap:var(--space-3);white-space:nowrap;margin-left:auto;display:flex}.setup-label svg{fill:none;stroke:currentColor;stroke-width:1.5px;width:16px;height:16px}details[open] .setup-label svg{transform:rotate(180deg)}.setup-content{padding-bottom:var(--space-5)}.setup-fields{justify-content:space-between;gap:var(--space-5);flex-wrap:wrap;display:flex}.field-group{align-items:flex-end;gap:var(--space-2);flex-wrap:wrap;min-width:0;display:flex}.field{gap:var(--space-2);min-width:0;color:var(--text-dim);flex-direction:column;font-size:.8125rem;display:flex}.field select,.field input{color:var(--text);font-size:.9375rem}.setup-help{justify-content:space-between;gap:var(--space-2) var(--space-5);margin-top:var(--space-3);color:var(--text-dim);flex-wrap:wrap;font-size:.8125rem;line-height:1.5;display:flex}.setup-help p{max-width:64ch}.reference-fields{flex-direction:column;align-items:stretch;width:100%}.reference-fields input{width:100%}@media (width>=700px){.reference-fields{flex-flow:row;align-items:flex-end;width:auto}.reference-fields input{width:auto}}#referenceSource{color:var(--text-dim);font-size:.8125rem;line-height:1.5}.exercise{padding:var(--space-5);background:var(--bg-raise);border:1px solid var(--border);border-radius:12px}.exercise-heading{justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}#exerciseMeta{margin-top:var(--space-2)}.exercise-select{width:14rem}.exercise-facts{gap:var(--space-5);margin-top:var(--space-6);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.exercise-fact{align-content:flex-start;column-gap:var(--space-2);flex-wrap:wrap;font-size:1.0625rem;line-height:1.5;display:flex}.exercise-fact dt{color:var(--text-dim)}.exercise-fact dd{font-variant-numeric:tabular-nums;font-weight:650}.exercise-body{align-items:center;gap:var(--space-6);margin-top:var(--space-5);grid-template-columns:minmax(0,1fr) 14rem;display:grid}.exercise-rhythm{min-width:0}.rhythm-diagram{align-items:flex-end;gap:3px;height:48px;display:flex}.rhythm-hold{min-width:0;height:max(28px, var(--target));color:var(--success);font-variant-numeric:tabular-nums;background:#294d3d;border-radius:4px;flex:1;justify-content:center;align-items:center;font-size:.75rem;font-weight:600;display:flex}.rhythm-release{background:#343f50;border-radius:3px;flex:.25;height:24px}.rhythm-legend{margin-top:var(--space-3);color:var(--text-dim);font-size:.75rem}.target-force{font-variant-numeric:tabular-nums;font-size:1.0625rem;font-weight:600}.exercise-force .muted{margin-top:var(--space-1);font-size:.75rem}.band-detail{margin-top:var(--space-3);color:var(--text-dim);font-size:.8125rem;line-height:1.5}.exercise-recovery{border-top:1px solid var(--border);padding-top:var(--space-4);margin-top:var(--space-5);color:var(--text-dim);font-size:.875rem;line-height:1.6}.cf-note{gap:var(--space-2);margin-top:var(--space-3);color:var(--text-dim);font-size:.875rem;line-height:1.5;display:grid}#stage{border:1px solid var(--border);background:#151c27;border-radius:12px;overflow:hidden}.stage-heading,.stage-caption{justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-4);padding:var(--space-4) var(--space-5);flex-wrap:wrap;display:flex}.stage-heading h2{letter-spacing:normal;color:var(--text-dim);font-size:.9375rem;font-weight:500}#liveCue{font-variant-numeric:tabular-nums;font-size:1rem;font-weight:600}#canvas{width:100%;height:30vh;min-height:220px;max-height:400px;display:block}.stage-caption{color:var(--text-dim);font-size:.75rem}#stageTarget{color:var(--success)}#controls{align-items:center;gap:var(--space-5);padding-bottom:var(--space-4);display:flex}.readiness{min-width:0;margin-right:auto}#sessionStatus{font-weight:600;line-height:1.5}#actionHint{margin-top:var(--space-1);font-size:.8125rem}.sound-control{align-items:center;gap:var(--space-2);cursor:pointer;min-height:44px;font-size:.875rem;display:flex}.set-actions{gap:var(--space-2);display:flex}#start{min-width:9rem}@media (hover:hover){#endSet:not(:disabled):hover{border-color:var(--danger)}}#error{padding:var(--space-4) var(--space-5);overflow-wrap:anywhere;color:var(--danger);background:#2d1e25;border:1px solid #72404a;border-radius:12px;font-size:.875rem;line-height:1.65}.retest-notice{padding:var(--space-2) var(--space-3);border-left:3px solid var(--warn);color:var(--text-dim);font-size:.875rem;line-height:1.5}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=700px){#app{padding:max(var(--space-4), env(safe-area-inset-top)) max(var(--space-4), env(safe-area-inset-right)) max(var(--space-5), env(safe-area-inset-bottom)) max(var(--space-4), env(safe-area-inset-left))}#hud{align-items:flex-start}#readout{max-width:12rem;font-size:.9375rem}summary{column-gap:var(--space-2);row-gap:var(--space-3);padding-block:var(--space-4);grid-template-columns:minmax(0,1fr) auto;display:grid}.reference-summary{grid-area:2/1/auto/-1;font-size:.8125rem}.setup-label{gap:var(--space-2);grid-area:1/2;font-size:.8125rem}.exercise{padding:var(--space-4)}h2{font-size:1.375rem}.exercise-heading{align-items:stretch}.exercise-select{width:100%}.exercise-facts{gap:var(--space-3);margin-top:var(--space-5);grid-template-columns:repeat(2,minmax(0,1fr))}.exercise-fact{font-size:1rem}.exercise-body{gap:var(--space-4);grid-template-columns:minmax(0,1fr)}.exercise-force{border-top:1px solid var(--border);padding-top:var(--space-4)}.stage-heading,.stage-caption{padding:var(--space-4)}#canvas{height:28vh;min-height:200px}#controls{gap:var(--space-4);grid-template-columns:minmax(0,1fr) auto;display:grid}.set-actions{grid-column:1/-1}.set-actions button{flex:1;min-width:0}.rhythm-diagram{gap:2px}.rhythm-hold{font-size:.625rem}}@media (prefers-reduced-motion:reduce){button{transition:none}}.rhythm-scroll{padding-bottom:var(--space-2);scrollbar-width:thin;scrollbar-color:var(--border) var(--bg-raise);overflow-x:auto}.rhythm-hold{min-width:1.125rem}.rhythm-release{min-width:4px}#stage{scroll-margin-top:var(--space-4)}#stageReadout{margin-top:var(--space-1);font-variant-numeric:tabular-nums;font-size:1.125rem;font-weight:600;display:block}.hand-selection{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border)}#handSelector{border:0;min-width:0;margin:0;padding:0}#handSelector legend{margin-bottom:var(--space-3);color:var(--text-dim);padding:0;font-size:.8125rem}.hand-options{gap:var(--space-3);display:flex}.hand-option{align-items:center;gap:var(--space-1) var(--space-2);min-width:0;max-width:15rem;padding:var(--space-3) var(--space-4);border:1px solid var(--border);cursor:pointer;border-radius:8px;flex:1;grid-template-columns:auto minmax(0,1fr);font-size:.9375rem;display:grid}.hand-option:has(:checked){border-color:var(--accent);background:var(--accent-dim)}.hand-option:has(:focus-visible){outline:2px solid var(--accent);outline-offset:3px}.hand-option input{width:1rem;height:1rem;accent-color:var(--accent);margin:0;padding:0}.hand-recovery{color:var(--text-dim);font-variant-numeric:tabular-nums;grid-column:2;font-size:.8125rem}.hand-option:has(:checked) .hand-recovery{color:var(--success)}#handSelector:disabled .hand-option{cursor:not-allowed}#handHelp{margin-top:var(--space-3);font-size:.8125rem}@media (width<=700px){.hand-selection{padding:var(--space-4)}.hand-option{padding:var(--space-3)}}.icon{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;width:1.125rem;height:1.125rem}.button-like{justify-content:center;align-items:center;gap:var(--space-2);display:inline-flex}button:has(.icon){justify-content:center;align-items:center;gap:var(--space-2);display:inline-flex}.button-like{border:1px solid var(--border);background:var(--bg-panel);cursor:pointer;border-radius:8px;min-height:48px;padding:.65rem 1rem;font-weight:600;transition:border-color .15s ease-out}@media (hover:hover){.button-like:hover{border-color:var(--text-dim)}}:is(:has(>input.sr-only:focus-visible)>.button-like,.button-like:has(+input:focus-visible)){outline:2px solid var(--accent);outline-offset:4px}.icon-button{background:0 0;border-color:#0000;place-items:center;width:48px;padding:0;display:inline-grid}button.danger-quiet{color:var(--danger);background:0 0;border-color:#0000}@media (hover:hover){button.danger-quiet:hover:not(:disabled){border-color:#72404a}}select optgroup{color:var(--text-dim);font-style:normal}select option{color:var(--text)}.device-field select{min-width:13rem}.data-panel{gap:var(--space-4);margin-top:var(--space-5);padding-top:var(--space-5);border-top:1px solid var(--border);display:grid}.data-intro{align-items:baseline;gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.data-title{margin:0;font-size:1rem;font-weight:650}.data-count{color:var(--text-dim);font-size:.8125rem}.data-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.data-status{min-height:1.25rem;color:var(--success);font-size:.8125rem}.data-status[data-tone=error]{color:var(--danger)}.exercise-pick{align-items:flex-end;gap:var(--space-2);flex-wrap:wrap;display:flex}.workout-buttons{gap:var(--space-2);display:flex}.focus-readout{display:none}body[data-phase=countdown] #hud,body[data-phase=playing] #hud,body[data-phase=countdown] #setup,body[data-phase=playing] #setup,body[data-phase=countdown] .exercise,body[data-phase=playing] .exercise,body[data-phase=countdown] .hand-selection,body[data-phase=playing] .hand-selection,body[data-phase=countdown] #result,body[data-phase=playing] #result,body[data-phase=countdown] #retestNotice,body[data-phase=playing] #retestNotice,body[data-phase=countdown] #progress,body[data-phase=playing] #progress,body[data-phase=countdown] .stage-caption,body[data-phase=playing] .stage-caption,body[data-phase=countdown] #stageReadout,body[data-phase=playing] #stageReadout,body[data-phase=countdown] .sound-control,body[data-phase=playing] .sound-control,body[data-phase=countdown] .readiness,body[data-phase=playing] .readiness,body[data-phase=countdown] #liveCue,body[data-phase=playing] #liveCue{display:none!important}body[data-phase=countdown] .focus-readout,body[data-phase=playing] .focus-readout{justify-content:space-between;align-items:flex-end;gap:var(--space-2) var(--space-5);padding:var(--space-4) var(--space-5) 0;flex-wrap:wrap;display:flex}.focus-force{align-items:baseline;gap:var(--space-2);line-height:1;display:flex}#focusKg{letter-spacing:-.04em;font-variant-numeric:tabular-nums;font-size:5.5rem;font-weight:700}.focus-unit{color:var(--text-dim);font-size:1.5rem;font-weight:600}.focus-meta{gap:var(--space-1);padding-bottom:var(--space-2);font-variant-numeric:tabular-nums;font-size:1.125rem;font-weight:600;display:grid}#focusTarget{color:var(--success)}#focusReadout[data-signal=lost] .focus-force{opacity:.35}#focusTarget[data-cue=signal-lost]{color:var(--warn);font-weight:700}#focusTarget[data-cue=too-fast]{color:var(--danger);font-weight:700}#focusRep{font-size:1.5rem;font-weight:650}#focusTime{letter-spacing:-.02em;font-size:2.5rem;font-weight:700;line-height:1.1}body[data-phase=countdown] #app,body[data-phase=playing] #app{flex-direction:column;height:100dvh;display:flex}body[data-phase=countdown] main,body[data-phase=playing] main{flex:1;min-height:0}body[data-phase=countdown] #controls,body[data-phase=playing] #controls{padding-bottom:0}body[data-phase=countdown] .set-actions,body[data-phase=playing] .set-actions{width:100%}body[data-phase=countdown] #start,body[data-phase=playing] #start{display:none}body[data-phase=countdown] #endSet,body[data-phase=playing] #endSet{flex:1;min-height:56px}body[data-phase=countdown] #stage,body[data-phase=playing] #stage{flex-direction:column;flex:1;min-height:0;display:flex}body[data-phase=countdown] #canvas,body[data-phase=playing] #canvas{flex:1;height:auto;min-height:0;max-height:none}body[data-phase=countdown] #liveCue,body[data-phase=playing] #liveCue{font-size:1.25rem}@media (width>=900px){#focusKg{font-size:8rem}.focus-meta{font-size:1.375rem}#focusRep{font-size:1.75rem}#focusTime{font-size:3.25rem}}@media (orientation:landscape) and (height<=520px){body[data-phase=countdown] #app,body[data-phase=playing] #app{padding-top:max(var(--space-2), env(safe-area-inset-top));padding-bottom:max(var(--space-2), env(safe-area-inset-bottom))}body[data-phase=countdown] main,body[data-phase=playing] main{gap:var(--space-2)}body[data-phase=countdown] #stage,body[data-phase=playing] #stage{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(12rem,32%) minmax(0,1fr);display:grid}body[data-phase=countdown] .stage-heading,body[data-phase=playing] .stage-heading{padding-block:var(--space-2);grid-column:1/-1}body[data-phase=countdown] .focus-readout,body[data-phase=playing] .focus-readout{justify-content:center;align-items:flex-start;gap:var(--space-1);padding:var(--space-2) var(--space-4);flex-flow:column}body[data-phase=countdown] .focus-meta,body[data-phase=playing] .focus-meta{gap:0;padding-bottom:0;font-size:.8125rem}#focusKg{font-size:clamp(2.5rem,16dvh,4rem)}body[data-phase=countdown] #focusRep,body[data-phase=playing] #focusRep{font-size:.9375rem}#focusTime{font-size:clamp(1.5rem,9dvh,2.5rem)}body[data-phase=countdown] #canvas,body[data-phase=playing] #canvas{height:100%;min-height:0}}#result{padding:var(--space-5);border:1px solid var(--border);background:var(--bg-raise);scroll-margin-top:var(--space-4);border-radius:12px}.result-view{gap:var(--space-5);display:grid}.result-head{justify-content:space-between;align-items:baseline;gap:var(--space-1) var(--space-4);flex-wrap:wrap;display:flex}.result-title:focus{outline:none}.result-title:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.result-when{color:var(--text-dim);font-variant-numeric:tabular-nums;font-size:.875rem}.result-body{gap:var(--space-5);display:grid}.result-primary,.result-secondary{align-content:start;gap:var(--space-5);min-width:0;display:grid}.result-score{gap:var(--space-2);display:grid}.score-value{align-items:baseline;gap:var(--space-3);display:flex}.score-number{letter-spacing:-.04em;font-variant-numeric:tabular-nums;font-size:4.5rem;font-weight:700;line-height:.9}.score-unit{color:var(--text-dim);font-size:1rem;font-weight:500}.score-compare{gap:var(--space-1) var(--space-4);flex-wrap:wrap;font-size:.9375rem;display:flex}.score-delta{align-items:center;gap:var(--space-1);font-variant-numeric:tabular-nums;font-weight:600;display:inline-flex}.score-delta-up{color:#78e99f}.score-delta-down{color:var(--warn)}.score-delta-level,.score-best{color:var(--text-dim);font-variant-numeric:tabular-nums}.new-best{justify-self:start;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--accent-dim);color:var(--success);border:1px solid #385b46;border-radius:999px;font-size:.875rem;font-weight:650;animation:.52s cubic-bezier(.16,1,.3,1) both best-in;display:inline-flex}.new-best .icon{fill:var(--accent);stroke:var(--accent);animation:.9s cubic-bezier(.16,1,.3,1) .12s both best-star}@keyframes best-in{0%{filter:blur(2px);transform:scale(.86)}to{filter:none;transform:none}}@keyframes best-star{0%{transform:rotate(-72deg)scale(.6)}to{transform:none}}.replay{margin:0}.replay-chart{width:100%;height:auto;display:block;overflow:visible}.replay-band{fill:#4ade8029;stroke:#4ade8080;stroke-width:1px}.replay-band-fast{fill:#fbbf2429;stroke:#fbbf248c}.replay-band-no-hold{fill:#adb7c614;stroke:#adb7c659;stroke-dasharray:3 3}.replay-rest{fill:#0d1117cc}.replay-rest-mark{stroke:var(--border);stroke-dasharray:2 4}.replay-axis{stroke:var(--border)}.replay-tick{fill:var(--text-dim);font-variant-numeric:tabular-nums;font-size:11px}.replay-line{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.replay-rep{fill:var(--text-dim);text-anchor:middle;font-variant-numeric:tabular-nums;font-size:11px}.replay-caption{gap:var(--space-1) var(--space-4);margin-top:var(--space-3);color:var(--text-dim);flex-wrap:wrap;font-size:.75rem;display:flex}.legend{align-items:center;gap:var(--space-2);display:inline-flex}.legend:before{content:"";border-radius:2px;width:14px;height:10px}.legend-band:before{background:#4ade8029;border:1px solid #4ade8080}.legend-line:before{background:var(--accent);height:2px}.legend-rest:before{border:1px dashed var(--border)}.rep-sets{gap:var(--space-4);display:grid}.rep-set-title{margin-bottom:var(--space-2);color:var(--text-dim);font-size:.8125rem;font-weight:600}.rep-chips{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(4.75rem,1fr));margin:0;padding:0;list-style:none;display:grid}.rep-chip{padding:var(--space-2) var(--space-3);background:#4ade800f;border:1px solid #385b46;border-radius:8px;gap:2px;display:grid}.rep-chip-rep{color:var(--text-dim);font-size:.75rem}.rep-chip-value{align-items:center;gap:var(--space-1);font-variant-numeric:tabular-nums;font-size:1.125rem;font-weight:650;display:inline-flex}.rep-chip .icon{width:1rem;height:1rem}.rep-chip[data-state=fast]{background:#fbbf2412;border-color:#6b5a2a}.rep-chip[data-state=fast] .rep-chip-value{color:var(--warn)}.rep-chip[data-state=no-hold]{border-style:dashed;border-color:var(--border);background:0 0}.rep-chip[data-state=no-hold] .rep-chip-value{color:var(--text-dim);font-size:.9375rem;font-weight:600}.result-facts{gap:var(--space-4);padding-block:var(--space-4);border-block:1px solid var(--border);grid-template-columns:repeat(3,minmax(0,1fr));margin:0;display:grid}.result-fact{align-content:start;gap:var(--space-1);min-width:0;display:grid}.result-fact dt{color:var(--text-dim);font-size:.8125rem}.result-fact dd{gap:2px;margin:0;display:grid}.result-fact-value{font-variant-numeric:tabular-nums;font-size:1.25rem;font-weight:650}.result-fact-detail{color:var(--text-dim);font-variant-numeric:tabular-nums;font-size:.8125rem}.result-coach{gap:var(--space-2);max-width:60ch;font-size:1rem;line-height:1.5;display:grid}.result-coach p:first-child{font-weight:600}.trend{margin:0}.trend-caption{justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-2);color:var(--text-dim);font-variant-numeric:tabular-nums;font-size:.8125rem;display:flex}.trend-chart{width:100%;max-width:28rem;height:auto;display:block}.trend-line{fill:none;stroke:var(--text-dim);stroke-width:1.5px;stroke-linejoin:round}.trend-dot{fill:var(--bg-raise);stroke:var(--text-dim);stroke-width:1.5px}.trend-now{fill:var(--accent);stroke:var(--bg-raise);stroke-width:2px}.result-actions{gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--border);display:grid}.result-rest{align-items:baseline;gap:var(--space-1) var(--space-3);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.result-rest-clock{letter-spacing:-.02em;font-size:2.5rem;font-weight:700;line-height:1}.result-rest-label{color:var(--text-dim);font-weight:600}.result-buttons{gap:var(--space-2);grid-template-columns:auto minmax(0,1fr);display:grid}.result-buttons button{white-space:nowrap}.result-unsaved{color:var(--warn);font-size:.875rem}@media (width>=900px){.result-body{grid-template-columns:minmax(0,1.5fr) minmax(18rem,1fr);align-items:start}.result-secondary{grid-area:auto/2}.result-primary{grid-area:1/1}.result-actions{grid-template-columns:minmax(0,1fr) auto;align-items:center}.result-buttons{grid-template-columns:auto minmax(14rem,auto)}.result-facts{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1fr)}.result-fact-detail{white-space:nowrap;font-size:.75rem}}@media (width<=899px){.result-body{flex-direction:column;display:flex}.result-primary,.result-secondary{display:contents}.result-score{order:1}.replay{order:2}.rep-sets{order:3}.result-facts{order:4}.result-coach{order:5}.trend{order:6}}@media (width<=700px){#result{padding:var(--space-4)}.score-number{font-size:4rem}.result-facts{gap:var(--space-3);grid-template-columns:minmax(0,1fr)}.result-fact{grid-template-columns:8rem minmax(0,1fr);align-items:baseline}.result-fact dd{align-items:baseline;column-gap:var(--space-2);flex-wrap:wrap;display:flex}.result-actions{margin-inline:calc(-1 * var(--space-4));margin-bottom:calc(-1 * var(--space-4));padding:var(--space-3) var(--space-4) max(var(--space-4), env(safe-area-inset-bottom));background:var(--bg-raise);border-radius:0 0 12px 12px;position:sticky;bottom:0}}@media (width<=480px){.result-buttons button{white-space:normal;min-width:0}}dialog.sheet{border:1px solid var(--border);background:var(--bg-raise);width:100%;max-width:100%;max-height:94dvh;color:var(--text);overscroll-behavior:contain;border-bottom:0;border-radius:16px 16px 0 0;margin:auto 0 0;padding:0}dialog.sheet[open]{animation:.26s cubic-bezier(.16,1,.3,1) sheet-in}dialog.sheet::backdrop{background:#05080cb8}@keyframes sheet-in{0%{opacity:.4;transform:translateY(32px)}to{opacity:1;transform:none}}.sheet-body{gap:var(--space-5);padding:0 var(--space-4) 0;display:grid}.sheet-head{z-index:1;margin-inline:calc(-1 * var(--space-4));padding:var(--space-3) var(--space-2) var(--space-3) var(--space-4);border-bottom:1px solid var(--border);background:var(--bg-raise);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.sheet-head h2{font-size:1.25rem}.sheet-name input{border:1px solid var(--border);background:var(--bg-panel);width:100%;min-height:48px;color:var(--text);border-radius:8px;font-size:1rem}.template-row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.template-label{margin-right:var(--space-1);color:var(--text-dim);font-size:.8125rem}button.chip{border-radius:999px;min-height:44px;padding:.45rem .9rem;font-size:.875rem}.shape-preview{gap:var(--space-2);padding:var(--space-3);border:1px solid var(--border);background:#151c27;border-radius:10px;display:grid}.shape-chart{width:100%;height:56px;display:block}.shape-rep{fill:#4ade8047;stroke:#4ade80b3;stroke-width:1px;vector-effect:non-scaling-stroke}.shape-load{fill:#4ade801a}.shape-rest{fill:#adb7c612}.shape-base{stroke:var(--border);vector-effect:non-scaling-stroke}.shape-totals{font-variant-numeric:tabular-nums;font-size:.875rem;font-weight:600}.steppers{gap:var(--space-1);display:grid}.stepper{align-items:center;column-gap:var(--space-2);padding-block:var(--space-2);border-bottom:1px solid #34405299;grid-template-columns:minmax(0,1fr) 48px 5.75rem 48px;grid-template-areas:"label minus value plus""extra minus value plus";display:grid}.stepper-label{grid-area:label;align-self:end;font-weight:600}.stepper-extra{min-height:1.1rem;color:var(--text-dim);font-variant-numeric:tabular-nums;grid-area:extra;align-self:start;font-size:.8125rem}.stepper-button{touch-action:manipulation;-webkit-user-select:none;user-select:none;place-items:center;width:48px;padding:0;display:grid}.stepper-button:first-of-type{grid-area:minus}.stepper-button:last-of-type{grid-area:plus}.stepper-button .icon{width:1.25rem;height:1.25rem}.stepper-value{grid-area:value;justify-content:center;align-items:baseline;gap:2px;display:flex}.stepper-value input{text-align:center;appearance:textfield;background:0 0;border-color:#0000;width:3.75rem;min-height:48px;padding:0;font-size:1.375rem;font-weight:650}.stepper-value input:focus{border-color:var(--accent);background:var(--bg-panel)}.stepper-value input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.stepper-value input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.stepper-unit{color:var(--text-dim);font-size:.875rem}.stepper-reason{margin-top:calc(-1 * var(--space-3));color:var(--warn);font-size:.875rem}.grip-choice{gap:var(--space-2);border:0;grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;display:grid}.grip-choice legend{margin-bottom:var(--space-2);padding:0;font-weight:600}.segment{justify-content:center;align-items:center;gap:var(--space-2);border:1px solid var(--border);cursor:pointer;border-radius:8px;min-height:48px;display:flex}.segment input{opacity:0;pointer-events:none;position:absolute}.segment:has(:checked){border-color:var(--accent);background:var(--accent-dim);color:var(--success);font-weight:600}.segment:has(:focus-visible){outline:2px solid var(--accent);outline-offset:3px}.sheet-error{color:var(--danger);font-size:.875rem}.sheet-actions{gap:var(--space-2);margin-inline:calc(-1 * var(--space-4));padding:var(--space-3) var(--space-4) max(var(--space-3), env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--bg-raise);display:flex;position:sticky;bottom:0}.sheet-actions .primary{white-space:nowrap;flex:1}.sheet-actions button:not(.primary){padding-inline:.75rem}.sheet-head h2:focus{outline:none}@media (width<=480px){.sheet-actions{flex-wrap:wrap}.sheet-actions .primary{flex:100%;order:-1}.sheet-actions button:not(.primary){flex:1}}@media (width>=900px){dialog.sheet{border-bottom:1px solid var(--border);border-radius:16px;max-width:560px;max-height:88dvh;margin:auto}.sheet-body{padding-inline:var(--space-5)}.sheet-head,.sheet-actions{margin-inline:calc(-1 * var(--space-5));padding-inline:var(--space-5)}.sheet-actions{border-radius:0 0 16px 16px}main{align-items:start;column-gap:var(--space-5);grid-template-columns:minmax(0,1.6fr) minmax(19rem,1fr);grid-auto-flow:dense;display:grid}main>#setup,main>#error,main>#retestNotice,main>#result,main>#progress{grid-column:1/-1}main>#stage{grid-area:span 2/1}main>.exercise{grid-column:2}main>#controls{flex-wrap:wrap;grid-column:2}.exercise-facts{gap:var(--space-4);margin-top:var(--space-5);grid-template-columns:repeat(2,minmax(0,1fr))}.exercise-body{gap:var(--space-4);grid-template-columns:minmax(0,1fr)}.exercise-select,.exercise-pick{width:100%}#canvas{height:42vh;max-height:520px}body[data-phase=countdown] main,body[data-phase=playing] main{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);align-items:stretch}body[data-phase=countdown] main>#stage,body[data-phase=playing] main>#stage,body[data-phase=countdown] main>#controls,body[data-phase=playing] main>#controls{grid-column:1}body[data-phase=countdown] main>#stage,body[data-phase=playing] main>#stage{grid-row:auto}}@media (width<=700px){.exercise-pick,.exercise-select,.workout-buttons{width:100%}.workout-buttons button{flex:1}.device-field,.device-field select{width:100%}.data-actions>*{flex:1}}@media (prefers-reduced-motion:reduce){.new-best,.new-best .icon,dialog.sheet[open]{animation:none}}body[data-mode=test] .stage-caption{display:none}body[data-mode=test][data-phase=idle] .focus-readout{justify-content:space-between;align-items:flex-end;gap:var(--space-2) var(--space-5);padding:var(--space-4) var(--space-5) var(--space-5);flex-wrap:wrap;display:flex}body[data-mode=test] #focusTarget{letter-spacing:.04em;color:var(--text);font-size:2.75rem;font-weight:800;line-height:1}body[data-mode=test] #focusTarget[data-cue=pull]{color:var(--accent)}body[data-mode=test] #focusTarget[data-cue=countdown]{color:var(--warn)}body[data-mode=test] #focusTarget[data-cue=rest]{color:var(--text-dim)}body[data-mode=test] #focusTarget[data-cue=signal-lost]{color:var(--warn);font-weight:700}body[data-mode=test] #focusTarget[data-cue=too-fast]{color:var(--danger);font-weight:700}body[data-mode=test] #focusTime{font-size:3rem}@media (width>=900px){body[data-mode=test] #focusTarget,body[data-mode=test] #focusTime{font-size:4rem}}@media (orientation:landscape) and (height<=520px){body[data-mode=test][data-phase=countdown] #focusTarget,body[data-mode=test][data-phase=playing] #focusTarget{font-size:1.5rem}body[data-mode=test][data-phase=countdown] #focusTime,body[data-mode=test][data-phase=playing] #focusTime{font-size:clamp(1.5rem,9dvh,2.5rem)}}.test-info,.grip-note{max-width:60ch;margin-top:var(--space-4);line-height:1.6}.test-info{font-size:1.0625rem}.grip-note{color:var(--warn);font-size:.875rem}#testDialog .field{color:var(--text);font-size:1rem;font-weight:600}#testDialog .field input{width:100%;font-weight:400}#testDialog .segment{padding:var(--space-2) var(--space-3);text-align:center}.test-cue{margin-top:calc(-1 * var(--space-3));color:var(--text-dim);font-size:.875rem;line-height:1.5}.test-safety{gap:var(--space-2);border:0;margin:0;padding:0;display:grid}.test-safety legend{margin-bottom:var(--space-2);padding:0;font-weight:600}.test-advice{line-height:1.5}.check{align-items:center;gap:var(--space-3);cursor:pointer;min-height:48px;display:flex}.check input{width:1.375rem;height:1.375rem}.test-warmup-done{min-height:48px;color:var(--success);align-items:center;font-weight:600;display:flex}.test-zero{gap:var(--space-1);padding:var(--space-3) var(--space-4);background:#fbbf2412;border:1px solid #6b5a2a;border-radius:8px;line-height:1.5;display:grid}.test-reason{min-height:1.25rem;color:var(--text-dim);font-size:.875rem}.test-hands{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));display:grid}.test-hand{align-content:start;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border);background:var(--bg-panel);border-radius:10px;display:grid}.test-hand-title{margin:0;font-size:1.0625rem;font-weight:650}.test-hand-none{color:var(--text-dim);line-height:1.5}.test-rfd-trials{gap:var(--space-1);padding-left:var(--space-5);color:var(--text-dim);margin:0;line-height:1.5;display:grid}.test-best{align-items:baseline;gap:var(--space-2);flex-wrap:wrap;display:flex}.test-best-value{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:3.5rem;font-weight:700;line-height:.95}.test-best-unit{color:var(--text-dim);font-weight:600}.test-facts{gap:var(--space-2) var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;display:grid}.test-fact{gap:2px;display:grid}.test-fact dt{color:var(--text-dim);font-size:.8125rem}.test-fact dd{font-variant-numeric:tabular-nums;margin:0;font-size:1.125rem;font-weight:650}.test-change,.test-note{align-items:flex-start;gap:var(--space-2);line-height:1.5;display:flex}.test-change{padding:var(--space-3);border:1px solid var(--border);border-radius:8px}.test-change[data-label=likely-gain]{background:var(--accent-dim);color:var(--success);border-color:#385b46}.test-change[data-label=likely-drop]{color:var(--warn);background:#fbbf2412;border-color:#6b5a2a}.test-change .icon,.test-note .icon{margin-top:.2rem}.test-note{color:var(--warn);font-size:.9375rem}.test-asymmetry{line-height:1.5}.test-reference{justify-items:start;gap:var(--space-2);display:grid}.test-reference button{text-align:left}.test-reference-status{max-width:60ch;min-height:1.5rem;line-height:1.5}.test-actions{justify-content:flex-end;gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--border);flex-wrap:wrap;display:flex}.test-actions button{min-width:9rem}
