.reaction{container-type:inline-size}.reaction__cols{display:grid;gap:var(--space-5)}.reaction__play,.reaction__side{display:grid;gap:var(--space-4);align-content:start;min-width:0}@container (min-width:46rem){.reaction__cols{grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);align-items:start;gap:var(--space-6)}.reaction[data-fresh] .reaction__cols{grid-template-columns:minmax(0,1fr)}.reaction__cols:not(:has(> .reaction__side > :is(.reaction__selftest,.reaction__reads,.reaction__convert,.reaction__coach))){grid-template-columns:minmax(0,1fr)}}.reaction__side:not(:has(> :is(.reaction__selftest,.reaction__reads,.reaction__convert,.reaction__coach))){display:none}.reaction__pad{position:relative;display:grid;justify-items:center;align-content:center;gap:var(--space-3);width:100%;height:clamp(7.75rem,100vh - 30rem,17rem);height:clamp(7.75rem,100svh - 30rem,17rem);padding:var(--space-4);overflow:hidden;border:var(--card-border);border-radius:var(--radius);background:var(--surface-2);color:var(--ink);font:inherit;text-align:center;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.reaction__pad{overflow-anchor:none}button.reaction__pad{cursor:pointer}[data-state="waiting"] .reaction__pad{background:var(--bad);color:var(--surface)}[data-state="go"] .reaction__pad{background:var(--ok);color:var(--surface)}[data-state="early"] .reaction__pad{box-shadow:inset 0 0 0 3px var(--bad)}.reaction[data-mode="reaction"]:not([data-state="done"]) .reaction__bar{display:none}.reaction[data-mode="reaction"]:is([data-state="idle"],[data-state="result"]) button.reaction__pad{box-shadow:inset 0 0 0 2px var(--brand)}@media (hover:hover){.reaction[data-mode="reaction"]:is([data-state="idle"],[data-state="result"]) button.reaction__pad:hover{box-shadow:inset 0 0 0 4px var(--brand)}}.reaction[data-mode="reaction"]:is([data-state="idle"],[data-state="result"],[data-state="early"]) button.reaction__pad:active{transform:scale(0.99)}@media (prefers-reduced-motion:no-preference){.reaction[data-mode="reaction"] button.reaction__pad{transition:transform 0.08s var(--ease),box-shadow 0.12s var(--ease)}}.reaction__tries{display:flex;flex-wrap:wrap;justify-content:center;gap:0.35rem}.reaction__tries i{width:2rem;height:0.5rem;border-radius:1px;transform:skewX(-24deg)}.reaction__tries i.is-done{background:var(--brand)}[data-state="waiting"] .reaction__tries i,[data-state="go"] .reaction__tries i{background:none;box-shadow:inset 0 0 0 2px currentColor}[data-state="waiting"] .reaction__tries i.is-done,[data-state="go"] .reaction__tries i.is-done{background:currentColor}.reaction__word{font:var(--display-weight) var(--step-3) / 1 var(--font-display)}.reaction__time{display:flex;align-items:baseline;gap:0.2em;font:var(--display-weight) clamp(3.2rem,2.4rem + 5cqi,6rem) / 1 var(--font-mono);letter-spacing:-0.06em;font-variant-numeric:tabular-nums}.reaction__unit{font-size:0.36em;letter-spacing:0}.reaction__hint{max-width:44ch;min-height:1.4em;font-size:var(--step-0);line-height:1.4;text-wrap:balance}.reaction__pad--arena{height:clamp(9rem,100vh - 30rem,24rem);height:clamp(9rem,100svh - 30rem,24rem);padding:0}[data-state="running"] .reaction__pad--arena{cursor:crosshair;touch-action:none}.reaction__pad--arena .reaction__hint,.reaction__pad--arena .reaction__word,.reaction__pad--arena .reaction__time{position:relative;padding:0 var(--space-3);border-radius:var(--radius-sm);background-color:inherit;pointer-events:none}[data-state="running"] .reaction__pad--arena .reaction__hint{position:absolute;top:var(--space-2);left:50%;width:max-content;max-width:calc(100% - var(--space-4));min-height:0;transform:translateX(-50%)}.reaction__target{position:absolute;top:0;left:0;width:3.5rem;height:3.5rem;padding:0;border:0;border-radius:50%;background:var(--brand);box-shadow:inset 0 0 0 0.3rem var(--brand),inset 0 0 0 0.65rem var(--brand-ink);cursor:crosshair;touch-action:none}[data-size="small"] .reaction__target{width:var(--tap);height:var(--tap)}[data-size="large"] .reaction__target{width:4.75rem;height:4.75rem}.reaction__course{position:absolute;inset:0;width:100%;height:100%;opacity:0.3;pointer-events:none}.reaction__course line{stroke:currentColor;stroke-width:1.5;stroke-dasharray:3 5}@container (max-width:30rem){.reaction__course line{display:none}}.reaction__course circle{fill:none;stroke:currentColor;stroke-width:2}.reaction__course text{fill:currentColor;font:700 0.7rem / 1 var(--font-mono);text-anchor:middle;dominant-baseline:central}[data-state="idle"] .reaction__pad--arena:not([data-played]) .reaction__course{top:50%;height:50%}[data-state="idle"] .reaction__pad--arena:not([data-played]){align-content:start;padding-top:var(--space-5)}@media (max-height:47rem){[data-state="idle"] .reaction__pad--arena:not([data-played]){align-content:center;padding-top:0}.reaction__pad--arena .reaction__course{display:none}}.reaction__missmark{position:absolute;top:-0.75rem;left:-0.75rem;width:1.5rem;height:1.5rem;border:2px solid currentColor;border-radius:50%;background:linear-gradient(45deg,transparent calc(50% - 1px),currentColor calc(50% - 1px) calc(50% + 1px),transparent calc(50% + 1px));pointer-events:none}.reaction__count{position:absolute;top:var(--space-2);left:var(--space-3);font:700 var(--step--1) / 1.4 var(--font-mono);pointer-events:none}.reaction__scroller{position:absolute;inset:0;overflow:hidden;scrollbar-width:none;border-radius:inherit}.reaction__scroller.is-open{overflow-y:scroll;overscroll-behavior:contain}.reaction__scroller::-webkit-scrollbar{display:none}.reaction__scroller:focus-visible{outline-offset:-4px}.reaction__track{height:2000000px;background:repeating-linear-gradient(currentColor 0 2px,transparent 2px 3rem);opacity:0.22}.reaction__pad--scroll > span{position:relative;padding:0 var(--space-3);border-radius:var(--radius-sm);background-color:inherit;pointer-events:none}.reaction__pad--scroll > span:empty{background-color:transparent}.reaction__digits{max-width:100%;font:var(--display-weight) var(--step-5) / 1.1 var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:0.04em;overflow-wrap:anywhere}.reaction__digits[data-length="mid"]{font-size:var(--step-3)}.reaction__digits[data-length="long"]{font-size:var(--step-1)}.reaction__answer{width:min(100%,22rem)}.reaction__answer .input{width:100%;font-family:var(--font-mono);font-size:var(--step-1);text-align:center;user-select:text;-webkit-user-select:text}.reaction__pad--text{justify-items:stretch;gap:var(--space-2);height:clamp(10rem,100vh - 30rem,17rem);height:clamp(10rem,100svh - 30rem,17rem)}.reaction__pad--text .reaction__hint{justify-self:center;max-width:60ch}[data-state="done"] .reaction__pad--text{justify-items:center}[data-state="done"] .reaction__pad--text .reaction__hint{white-space:normal}[data-state="done"] .reaction__entry{display:none}.reaction__words{display:block;position:relative;height:calc(3 * 1.7em);overflow:hidden;font:var(--step-1) / 1.7 var(--font-mono);text-align:left}.reaction__words span{border-radius:var(--radius-sm)}.reaction__words .is-now{box-shadow:0 2px 0 currentColor}.reaction__words .is-right{opacity:0.55}.reaction__words .is-wrong{text-decoration:line-through;text-decoration-color:var(--bad);text-decoration-thickness:2px}.reaction__words .is-missed{opacity:0.6}.reaction__words .is-off{box-shadow:none;text-decoration:underline wavy var(--bad);text-decoration-thickness:2px;text-underline-offset:0.2em}.reaction__entry.is-off{border-color:var(--bad);box-shadow:inset 0 -3px 0 var(--bad)}.reaction__entry{width:100%;font-family:var(--font-mono);user-select:text;-webkit-user-select:text}.reaction__words [data-end]::after{content:" \21B5\A";white-space:pre;opacity:0.55}.reaction__words [data-in]::before{content:attr(data-in);white-space:pre}.reaction__words[data-kind="code"]{font-size:var(--step-0)}.reaction[data-listen] .reaction__words span:not(.is-right,.is-wrong){visibility:hidden}.reaction__listen{display:grid;gap:var(--space-2)}.reaction__row,.reaction__rate{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);margin:0;font-size:var(--step--1)}.reaction__rate .select{width:auto}.reaction__note{min-height:2.9em}.reaction__own{font-family:var(--font-mono)}@media (scripting:enabled){.reaction[data-listen-first]:not([data-read]) .reaction__words span:not(.is-right,.is-wrong){visibility:hidden}}.reaction__row > .btn:disabled{visibility:hidden}.reaction .tool-own{display:grid;gap:var(--space-2)}.reaction .tool-own__label{font-weight:600}.reaction .tool-own__how{color:var(--ink-muted);font-weight:400}.reaction .tool-own__text{width:100%;min-height:0;border-color:var(--line-strong)}.reaction .tool-own__status{min-height:2.9em;margin:0;color:var(--ink-muted);font-size:var(--step--1)}@media (max-width:40rem) and (max-height:43.75rem){.reaction .tool-own{gap:var(--space-1);margin-bottom:calc(-1 * var(--space-2))}.reaction .tool-own__text{height:4em}.reaction .tool-own__status{min-height:1.45em}}.reaction .tool-more{border-top:1px solid var(--line)}.reaction .tool-more > summary{display:flex;gap:var(--space-2);align-items:center;justify-content:space-between;min-height:var(--tap);border-radius:var(--radius-sm);color:var(--ink-muted);cursor:pointer;list-style:none}.reaction .tool-more > summary::-webkit-details-marker{display:none}.reaction .tool-more > summary:hover{color:var(--ink)}.reaction .tool-more > summary:focus-visible{outline:3px solid var(--ring);outline-offset:2px}.reaction .tool-more[open] .reaction__chevron{transform:rotate(180deg)}.reaction__choices{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-3);padding-block:var(--space-2) var(--space-3)}.reaction[data-fresh] :is(.reaction__stats,.reaction__chart,.reaction__daily){display:none}.reaction__selftest{font-size:var(--step--1)}.reaction__convert{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2) var(--space-3)}.reaction__convert .hint{grid-column:1 / -1}.reaction__hand{margin:0;color:var(--ink-muted);font-size:var(--step--1)}.reaction__kb{display:grid;gap:0.2rem;margin-bottom:var(--space-2);font:700 var(--step--1) / 1.7rem var(--font-mono);text-align:center;text-transform:uppercase}.reaction__kb-row{display:flex;gap:0.2rem}.reaction__kb-row:nth-child(2){margin-left:0.6rem}.reaction__kb-row:nth-child(3){margin-left:1.5rem}.reaction__kb-row span{width:1.7rem;border:1px solid var(--line);border-radius:var(--radius-sm)}.reaction__kb-row [class]{border-color:var(--line-strong);background:var(--surface-2);color:var(--ink)}.reaction__kb-row .is-home{box-shadow:inset 0 -3px 0 var(--brand)}.reaction__pad--math{grid-template-columns:minmax(0,1fr);gap:var(--space-2);height:19.5rem;padding:var(--space-3)}.reaction__sum{display:grid;justify-items:center;gap:var(--space-2);max-width:100%}.reaction__question,.reaction__typed,.reaction__recital{font:700 var(--step-2) / 1.5 var(--font-mono);font-variant-numeric:tabular-nums}.reaction__question{font-size:min(clamp(2rem,1.5rem + 4cqi,3.4rem),13cqi);line-height:1.1;white-space:nowrap}.reaction__question[data-size="m"]{font-size:min(clamp(1.25rem,8cqi,2.6rem),8.9cqi)}.reaction__question[data-size="l"]{font-size:min(clamp(1rem,6cqi,2rem),6.5cqi)}.reaction__question[data-size="xl"]{font-size:clamp(0.85rem,4cqi,1.5rem);white-space:normal}.reaction__question.is-wrong{color:var(--bad)}.reaction__typed{min-width:6ch;min-height:calc(1.5em + 3px);border-bottom:3px solid var(--line-strong)}[data-state="running"] .reaction__typed{border-color:var(--brand)}.reaction__keys{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:3px;width:min(100% + 1rem,26rem);margin-inline:-0.5rem}.reaction__key{display:grid;place-items:center;min-height:var(--tap);padding:0;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font:700 var(--step-1) / 1 var(--font-mono);cursor:pointer;touch-action:manipulation}.reaction__key--wide{grid-column:span 2}.reaction__key:disabled{opacity:0.45;cursor:default}.reaction__key .icon{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}.reaction__missed{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-1) var(--space-2);max-height:6.5rem;margin:0;overflow-y:auto;font-size:var(--step--1)}.reaction__missed strong{flex:1 1 100%}.reaction__missed span{padding:0 var(--space-2);border:1px solid var(--line-strong);border-radius:var(--radius-sm);font-family:var(--font-mono)}.reaction__save[aria-pressed="true"] .icon{fill:currentColor}.reaction__pad--sequence{grid-template-columns:minmax(0,1fr);gap:var(--space-2);height:17rem;padding:var(--space-3)}.reaction__catch{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;font-size:1rem;opacity:0;cursor:pointer}.reaction__catch:disabled{pointer-events:none}.reaction__pad--sequence:focus-within{outline:3px solid var(--ring);outline-offset:2px}.reaction__tiles{display:flex;flex-wrap:wrap;justify-content:center;gap:0.25rem;font:700 var(--step-0) / 1.9rem var(--font-mono);text-transform:uppercase}.reaction__tile{width:1.6rem;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink)}[data-small] .reaction__tiles{gap:0.2rem;font-size:var(--step--1);line-height:1.45rem}[data-small] .reaction__tile{width:1.15rem}.reaction__tile:empty{visibility:hidden}.reaction__tile.is-done{border-color:var(--line);opacity:0.45}.reaction__tile.is-now{border-color:var(--brand);box-shadow:inset 0 -3px 0 var(--brand)}.reaction__tile.is-gap{opacity:1;box-shadow:0.3rem 0 0 -1px var(--brand)}.reaction__tile.is-miss{border-color:var(--bad)}.reaction__splits{display:none;width:min(100%,26rem)}.reaction__splits .bar{fill:var(--line-strong)}.reaction__splits .bar--slow{fill:var(--ink)}.reaction__splits text{fill:currentColor;font:700 9px var(--font-mono);text-anchor:middle;text-transform:uppercase}[data-state="done"] .reaction__splits{display:block}[data-state="done"] .reaction__tiles,.reaction__study:empty{display:none}[data-state="done"] .reaction__pad--sequence .reaction__time{font-size:clamp(2.4rem,1.8rem + 4cqi,4rem)}.reaction__recital,.reaction__study{overflow-wrap:anywhere}.reaction__prefix{opacity:0.6}.reaction__study{font:var(--step--1) / 1.5 var(--font-mono)}.reaction__peek{position:relative;min-height:var(--tap)}.reaction > .banner{margin-bottom:var(--space-4)}@media (prefers-reduced-motion:no-preference){.reaction__question.is-right{animation:reaction-right 0.2s var(--ease)}.reaction__tile.is-miss{animation:reaction-miss 0.18s var(--ease)}.reaction__cell:active{transform:scale(0.94)}.reaction__cell{transition:transform 0.15s var(--ease)}.reaction__cell.is-miss,.reaction__cell.is-wrong{animation:reaction-miss 0.18s var(--ease)}.reaction__cell.is-right{animation:reaction-right 0.2s var(--ease)}@keyframes reaction-drain{to{transform:scaleX(0)}}@keyframes reaction-right{from{opacity:0.3;transform:translateY(0.3em) scale(0.96)}}@keyframes reaction-miss{35%{transform:translateX(-3px)}70%{transform:translateX(3px)}}}.reaction__bar .btn-primary{min-width:10rem}.reaction__bar .btn:disabled:not([data-primary-action]){visibility:hidden}.reaction[data-state="done"] .reaction__bar [data-act="reset"]{border-color:transparent;background:transparent;box-shadow:none;color:var(--ink-muted);font-weight:400;text-decoration:underline;text-underline-offset:0.2em}.reaction[data-state="done"] .reaction__bar [data-act="reset"]:hover{color:var(--ink)}@container (max-width:30rem){.reaction__bar .btn-primary{flex:1 1 100%}.reaction__bar .btn-secondary,.reaction__bar .btn-ghost{flex:1 1 auto}}.reaction__pick{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3)}.reaction__pick .pill{min-width:3.25rem;min-height:var(--tap);justify-content:center}.reaction__round .hint{min-height:2.8em}.reaction__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3)}.reaction__stats .stat{padding-left:var(--space-3);border-left:3px solid var(--line)}.reaction__stats .stat--best{border-left-color:var(--brand)}.reaction__stats .stat__value{min-height:calc(1.1em + var(--step--1) * 1.3);font-size:var(--step-1);overflow-wrap:anywhere}.reaction__stats .stat__unit{display:block;color:var(--ink-muted);font-size:var(--step--1);font-weight:400;line-height:1.3;letter-spacing:0}.reaction__detail{min-height:2.8em;margin:0;font-size:var(--step--1);line-height:1.4}@media (max-width:30rem){.reaction[data-mode="memory-chimp"] .reaction__stats,.reaction[data-mode="memory-sequence"] .reaction__stats,.reaction[data-mode="memory-visual"] .reaction__stats{grid-template-columns:minmax(0,1fr);gap:var(--space-2)}.reaction[data-mode="memory-chimp"] .reaction__stats .stat,.reaction[data-mode="memory-sequence"] .reaction__stats .stat,.reaction[data-mode="memory-visual"] .reaction__stats .stat{grid-template-columns:minmax(7.5rem,auto) minmax(0,1fr);align-items:baseline;gap:var(--space-3)}.reaction[data-mode="memory-chimp"] .reaction__stats .stat__value,.reaction[data-mode="memory-sequence"] .reaction__stats .stat__value,.reaction[data-mode="memory-visual"] .reaction__stats .stat__value{min-height:0}.reaction[data-mode="memory-chimp"] .reaction__stats .stat__unit,.reaction[data-mode="memory-sequence"] .reaction__stats .stat__unit,.reaction[data-mode="memory-visual"] .reaction__stats .stat__unit{display:inline}}.reaction__chart{margin:0}.reaction__chart svg{display:block;width:100%;max-width:30rem;height:auto}.reaction__chart .bar{fill:var(--line-strong)}.reaction__chart .bar--best{fill:var(--brand)}.reaction__chart .bar--now{fill:var(--ink)}.reaction__chart .axis{stroke:var(--line-strong);stroke-width:1.5}.reaction__chart text{fill:var(--ink-muted);font:700 14px var(--font-mono)}.reaction__chart figcaption{margin-top:var(--space-2);color:var(--ink-muted);font-size:var(--step--1)}.reaction__daily{display:grid;gap:var(--space-2);min-height:5.25rem;padding-top:var(--space-3);border-top:1px solid var(--line)}.reaction__daily p{margin:0}.reaction__daily-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.reaction__daily-label span{display:block;min-height:1.6em;font-weight:400}.reaction__pad--grid{--reaction-side:6;grid-template-columns:minmax(0,1fr);height:auto;align-content:start;gap:var(--space-3);padding:var(--space-3)}.reaction__pad--grid[data-grid="3"]{--reaction-side:3}.reaction__pad--grid[data-grid="4"]{--reaction-side:4}.reaction__pad--grid[data-grid="5"]{--reaction-side:5}.reaction__pad--grid[data-grid="7"]{--reaction-side:7}.reaction__strip{display:grid;grid-template:2.25rem 2.5rem / minmax(0,1fr) auto;gap:var(--space-1) var(--space-3);align-items:center;width:min(100%,22rem);text-align:left}.reaction__strip .reaction__word{overflow:hidden;font-size:var(--step-2);white-space:nowrap;text-overflow:ellipsis}.reaction__strip .reaction__time{font-size:var(--step-3)}.reaction__strip .reaction__hint{display:-webkit-box;grid-column:1 / -1;align-self:start;max-width:none;overflow:hidden;font-size:var(--step--1);text-wrap:wrap;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;line-height:1.25rem}.reaction__lamps{display:flex;align-items:center;gap:0.3rem;grid-area:1 / 2}[data-state="idle"] .reaction__lamps::before,.reaction__lives::before{content:"Strikes left";margin-right:var(--space-1);font-size:var(--step--1);line-height:1;white-space:nowrap;opacity:0.85}[data-state="idle"] .reaction__lamps:has(i:nth-child(6):not([hidden]))::before,.reaction__lives:has(i:nth-child(6):not([hidden]))::before{content:none}.reaction__lamps i{width:0.8rem;height:0.8rem;border-radius:50%;background:var(--brand);box-shadow:inset 0 0 0 2px var(--brand)}.reaction__lamps i.is-out{background:none;box-shadow:inset 0 0 0 2px var(--line-strong)}.reaction__board{display:grid;grid-template:repeat(var(--reaction-side),minmax(0,1fr)) / repeat(var(--reaction-side),minmax(0,1fr));gap:clamp(0.2rem,1.2cqi,0.5rem);width:min(100%,22rem);aspect-ratio:1}@media (min-width:60rem){[data-mode="memory-sequence"] .reaction__strip,[data-mode="memory-sequence"] .reaction__board{width:min(100%,22rem,max(15rem,100vh - 37.5rem));width:min(100%,22rem,max(15rem,100svh - 37.5rem))}}@container (max-width:22rem){.reaction__pad--grid{padding-inline:var(--space-1)}.reaction__strip{padding-inline:calc(var(--space-3) - var(--space-1))}.reaction__board{gap:0.15rem}}.reaction__cell{display:grid;place-items:center;min-width:0;min-height:0;padding:0;border:2px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font:var(--display-weight) clamp(1rem,4.6cqi,1.6rem) / 1 var(--font-mono);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.reaction__cell:focus-visible{position:relative;outline:3px solid var(--ring);outline-offset:2px}.reaction__cell[aria-disabled="true"]{border-color:color-mix(in srgb,currentColor 22%,transparent);background:none;color:inherit;cursor:default}.reaction__cell.is-number{border-color:var(--ink)}.reaction__cell.is-masked{border-color:var(--ink);background:var(--ink)}.reaction__cell.is-lit{border-color:var(--ink);background:var(--brand);box-shadow:inset 0 0 0 0.28rem var(--surface);color:var(--brand-ink)}.reaction__cell.is-right{border:0.3rem double var(--ok);background:var(--ok-soft)}.reaction__cell.is-lit.is-right{background:var(--brand-soft);box-shadow:none;color:var(--ink)}.reaction__cell.is-wrong,.reaction__cell.is-miss{border:3px dashed var(--bad);background:var(--bad-soft)}.reaction__cell.is-number.is-done{border-style:dotted;border-color:var(--line-strong);color:var(--ink-muted)}.reaction__wait{position:absolute;inset:auto 0 0;display:none;height:0.3rem;background:var(--brand);transform-origin:left}@media (prefers-reduced-motion:no-preference){.reaction__wait{display:block;animation:reaction-drain var(--reaction-wait,1s) linear forwards}}.reaction__coach{min-height:4.2em;margin:0;font-size:var(--step--1);line-height:1.4}.reaction{--reaction-green:var(--ok);--reaction-red:var(--bad);--reaction-amber:var(--warn);--reaction-blue:var(--link);--reaction-purple:var(--reaction-lit-purple);--reaction-grey:var(--ink-muted);--reaction-lit-green:#1fd36b;--reaction-lit-red:#ff4438;--reaction-lit-amber:#ffb81c;--reaction-lit-blue:#4aa3ff;--reaction-lit-purple:#b78cff;--reaction-lit-grey:#9aa3ad}.tool:has(.reaction[data-signals][data-mode][data-state="running"] .reaction__pad--signal){--r4:var(--ro,transparent);--r5:var(--ro,transparent)}.tool:has(.reaction[data-mode="reaction"]){--r4:var(--ro,transparent);--r5:var(--ro,transparent)}.reaction__pad--signal{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto auto;align-content:stretch;gap:var(--space-2);height:clamp(13rem,100vh - 25rem,19rem);height:clamp(13rem,100svh - 25rem,19rem);padding:var(--space-3)}.reaction__pad--signal[data-hold]{touch-action:none;-webkit-touch-callout:none}.reaction__pad--signal .reaction__tries{flex-wrap:nowrap;width:100%}.reaction__pad--signal .reaction__tries i{flex:0 1 2rem;min-width:0}.reaction__pad--signal .reaction__word,.reaction__pad--signal .reaction__time{display:flex;align-items:center;justify-content:center;height:2.4rem;font-size:var(--step-2);line-height:1.1}.reaction__pad--signal .reaction__time{font-size:var(--step-4)}.reaction__pad--signal .reaction__hint{display:-webkit-box;height:3.75rem;overflow:hidden;font-size:var(--step--1);-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;line-height:1.25rem}.reaction__stage{display:grid;grid-template:minmax(0,1fr) / minmax(0,1fr);place-items:center;width:100%;min-height:0;height:100%}.reaction__stage [hidden]{display:none}.reaction__defs{position:absolute}.reaction__shape{width:auto;height:100%;max-height:7.5rem;aspect-ratio:1;overflow:visible;fill:var(--reaction-lit,currentColor);stroke:var(--ink);stroke-width:3px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.reaction__shape use{vector-effect:non-scaling-stroke}.reaction [data-colour="green"]{color:var(--reaction-green);--reaction-lit:var(--reaction-lit-green)}.reaction [data-colour="red"]{color:var(--reaction-red);--reaction-lit:var(--reaction-lit-red)}.reaction [data-colour="amber"]{color:var(--reaction-amber);--reaction-lit:var(--reaction-lit-amber)}.reaction [data-colour="blue"]{color:var(--reaction-blue);--reaction-lit:var(--reaction-lit-blue)}.reaction [data-colour="purple"]{color:var(--reaction-purple);--reaction-lit:var(--reaction-lit-purple)}.reaction [data-colour="grey"]{color:var(--reaction-grey);--reaction-lit:var(--reaction-lit-grey)}.reaction__pad[data-pale] .reaction__shape{fill:color-mix(in srgb,currentColor 32%,var(--surface-2));stroke:color-mix(in srgb,var(--ink) 32%,var(--surface-2))}.reaction__card{position:relative;display:grid;place-items:center;height:100%;max-height:7.5rem;aspect-ratio:1}.reaction__frame{position:absolute;inset:0;width:100%;height:100%;overflow:visible;fill:none;stroke:currentColor;stroke-width:5px;stroke-linejoin:round}.reaction__frame use{vector-effect:non-scaling-stroke}.reaction__card b{position:relative;font:var(--display-weight) var(--step-1) / 1 var(--font-display);letter-spacing:0.04em}.reaction__card [data-card-word]{padding-top:0.2em}.reaction__stack{display:grid;grid-auto-rows:minmax(0,1fr);justify-items:center;gap:0.3rem;height:100%}.reaction__stack .reaction__shape{max-height:2.4rem;fill:none;stroke:currentColor}.reaction__stack .reaction__shape.is-lit{fill:var(--reaction-lit,currentColor);stroke:var(--ink)}.reaction__lights{display:flex;gap:clamp(0.3rem,1.6cqi,0.6rem);padding:0.5rem 0.7rem;border-radius:var(--radius-sm);background:var(--surface);box-shadow:inset 0 0 0 2px var(--line-strong)}.reaction__lights i,.reaction__lane i{width:var(--reaction-lamp,clamp(1.5rem,8cqi,2.4rem));height:var(--reaction-lamp,clamp(1.5rem,8cqi,2.4rem));border-radius:50%;box-shadow:inset 0 0 0 2px var(--line-strong)}.reaction__lights i.is-lit{background:var(--reaction-lit-red);box-shadow:inset 0 0 0 2px var(--ink)}.reaction__field{position:relative;display:grid;place-items:center;width:100%;height:100%}.reaction__pad--signal[data-signal="peripheral"]{height:clamp(15rem,100vh - 24rem,20rem);height:clamp(15rem,100svh - 24rem,20rem)}.reaction__field b{font:400 var(--step-3) / 1 var(--font-mono)}.reaction__field i{--reaction-at:50%;position:absolute;width:1.1rem;height:1.1rem;border:2px solid var(--surface);border-radius:50%;background:var(--ink)}.reaction__field [data-spot="left"]{top:var(--reaction-at);left:0}.reaction__field [data-spot="right"]{top:var(--reaction-at);right:0}.reaction__field [data-spot="up"]{top:0;left:var(--reaction-at)}.reaction__field [data-spot="down"]{bottom:0;left:var(--reaction-at)}.reaction__pad--signal[data-signal="tree"],.reaction__pad--signal[data-signal="stack"]{--reaction-lamp:clamp(1rem,(100vh - 27rem) / 9 - 0.25rem,1.75rem);--reaction-lamp:clamp(1rem,(100svh - 27rem) / 9 - 0.25rem,1.75rem);grid-template:auto auto minmax(0,1fr) / auto minmax(0,1fr);column-gap:var(--space-4);height:clamp(15rem,100vh - 24rem,20rem);height:clamp(15rem,100svh - 24rem,20rem)}[data-signal="tree"] > .reaction__stage,[data-signal="stack"] > .reaction__stage{grid-area:1 / 1 / -1 / 2;width:auto}[data-signal="tree"] > .reaction__hint,[data-signal="stack"] > .reaction__hint{align-self:start;height:auto;max-height:100%;-webkit-line-clamp:7;line-clamp:7}[data-signal="tree"] > .reaction__word{font-size:var(--step-1)}.reaction__tree{display:flex;gap:var(--space-3);padding:0.4rem 0.5rem;border-radius:var(--radius-sm);background:var(--surface);box-shadow:inset 0 0 0 2px var(--line-strong)}.reaction__lane{display:grid;justify-items:center;align-content:start;gap:0.25rem}.reaction__lane b{font:600 0.68rem / 1 var(--font-body);color:var(--ink-muted);text-transform:uppercase;letter-spacing:0.06em}.reaction__lane [data-lamp="pre"],.reaction__lane [data-lamp="stage"]{width:calc(var(--reaction-lamp) * 1.3);height:calc(var(--reaction-lamp) * 0.45);border-radius:var(--radius-pill)}.reaction__lane i.is-lit{background:var(--reaction-lit-amber);box-shadow:inset 0 0 0 2px var(--ink)}.reaction__lane [data-lamp="green"].is-lit{background:var(--reaction-lit-green)}.reaction__lane [data-lamp="red"].is-lit{background:var(--reaction-lit-red)}.reaction__lane i.is-blind{border-radius:2px;background:var(--line-strong)}.reaction__sound,.reaction__legend{display:grid;gap:var(--space-2)}.reaction__sound .icon{width:1.2em;height:1.2em;margin-right:0.35em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.reaction__volume{display:inline-flex;flex:1 1 12rem;align-items:center;gap:var(--space-2);min-height:var(--tap);font-size:var(--step--1)}.reaction__volume input{flex:1;min-width:0;min-height:var(--tap);accent-color:var(--brand)}.reaction__sound .reaction__note{min-height:5.6em}.reaction__sound:has([data-act="tones"]:disabled){display:none}.reaction__shapes{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin:0;padding:0;font-size:var(--step--1);list-style:none}.reaction__shapes li{display:flex;align-items:center;gap:0.4em}.reaction__shapes .reaction__shape{height:1.3em;stroke-width:1.5px}@media (max-height:43.75rem){.reaction__course{display:none}.reaction__pad--text{gap:var(--space-1);padding-block:var(--space-3)}.reaction__words{height:calc(2 * 1.7em);font-size:var(--step-0)}.reaction__pad--text .reaction__hint{max-width:100%;overflow:hidden;font-size:var(--step--1);text-overflow:ellipsis;white-space:nowrap}.reaction__more{display:none}[data-state="done"] .reaction__hint{font-size:var(--step--1)}}@media (max-height:37.5rem){.reaction__play{gap:var(--space-2)}.reaction__pad{gap:var(--space-1);padding-block:var(--space-3)}.reaction__time{font-size:2.75rem}}@media (max-height:46rem){.reaction__pad--math,.reaction__pad--sequence{gap:clamp(var(--space-1),100vh - 41rem,var(--space-3));gap:clamp(var(--space-1),100svh - 41rem,var(--space-3));height:clamp(10rem,100vh - 30rem,16rem);height:clamp(10rem,100svh - 30rem,16rem);padding-block:var(--space-2)}.reaction__pad--math{height:clamp(10.5rem,100vh - 29.5rem,16.5rem);height:clamp(10.5rem,100svh - 29.5rem,16.5rem)}.reaction__sum{display:flex;align-items:center;justify-content:center;gap:var(--space-3)}.reaction__question{font-size:min(1.75rem,9.5cqi)}.reaction__question[data-size="m"]{font-size:min(1.5rem,6.6cqi)}.reaction__question[data-size="l"]{font-size:min(1.25rem,4.8cqi)}.reaction__question[data-size="xl"]{min-width:0;font-size:min(1rem,4cqi)}.reaction__typed{min-width:4ch;min-height:calc(1.4em + 3px);font-size:var(--step-1);line-height:1.4}.reaction__pad--math .reaction__hint,.reaction__pad--sequence .reaction__hint{width:100%;max-width:none}.reaction__pad--math .reaction__hint{overflow:hidden;font-size:var(--step--1);text-overflow:ellipsis;white-space:nowrap}.reaction__pad--math .reaction__more{display:none}[data-state="done"] .reaction__pad--math .reaction__hint{white-space:normal}.reaction__pad--math .reaction__time{font-size:2.25rem}[data-state="done"] .reaction__pad--sequence .reaction__time{font-size:2rem}.reaction__missed{max-height:3.4rem}.reaction__missed strong{flex:0 1 auto}.reaction__tiles{gap:0.2rem;line-height:1.7rem}.reaction__tile{width:1.4rem}[data-small] .reaction__tiles{gap:0.15rem;font-size:0.8rem;line-height:1.25rem}[data-small] .reaction__tile{width:0.95rem}.reaction__recital{font-size:var(--step-1)}}@media print{.reaction .reaction__pad{height:auto;min-height:0;border:1pt solid var(--ink);background:none;box-shadow:none;color:var(--ink)}.reaction__round,.reaction__pick,.reaction__daily,.reaction__next,.reaction__scroller,.reaction__course,.reaction__words,.reaction__entry{display:none}}@media print{.reaction__keys,.reaction__catch,.reaction__tiles,.reaction__custom,.reaction__own-about,.reaction__listen,.reaction__listen-row,.reaction__hand,.reaction__convert,[data-sheet] :is(.reaction__time,.reaction__hint,.reaction__side){display:none}.reaction[data-sheet] .reaction__words{display:block;height:auto;font-size:13pt;line-height:2}[data-sheet] .reaction__words span{box-shadow:none;opacity:1;text-decoration:none}.reaction .reaction__sheet-log{display:table;width:100%;margin-top:6mm;border-collapse:collapse;font-size:10pt;break-inside:avoid}.reaction__sheet-log :is(th,td){height:8mm;padding:1mm 2mm;border:0.5pt solid var(--ink);text-align:left}}@media print{.reaction__sound,.reaction__wait,.reaction__lamps{display:none}.reaction .reaction__cell{border-color:var(--ink);background:none;color:var(--ink)}.reaction .reaction__cell.is-lit{box-shadow:inset 0 0 0 0.28rem var(--surface),inset 0 0 0 2rem var(--ink)}.reaction .reaction__pad--signal{grid-template:auto / auto}.reaction .reaction__shape{stroke:var(--ink)}}.reaction__pad--fall{height:clamp(9.5rem,100vh - 29rem,17rem);height:clamp(9.5rem,100svh - 29rem,17rem);padding:var(--space-3)}.reaction__pad--fall:focus-within{outline:3px solid var(--ring);outline-offset:2px}.reaction__sky{position:absolute;inset:2.2rem var(--space-3) var(--space-3);border-bottom:3px solid var(--line-strong);pointer-events:none}.reaction__sky[data-sample]{opacity:0.4}.reaction__sky.is-hit{border-bottom-color:var(--bad)}.reaction__drop{position:absolute;top:0;left:0;width:33.33%;font:700 clamp(0.85rem,0.7rem + 1.2cqi,1.15rem) / 1.5 var(--font-mono);white-space:nowrap}.reaction__drop[data-lane="1"]{left:33.33%}.reaction__drop[data-lane="2"]{left:66.66%}.reaction__drop b{opacity:0.35}.reaction__drop.is-target span{box-shadow:inset 0 -2px 0 currentColor}.reaction__drop.is-low,.reaction__drop.is-miss,.reaction__sky.is-miss{color:var(--bad)}.reaction__lives{position:absolute;top:var(--space-2);right:var(--space-3);grid-area:auto}@media (max-height:46rem){[data-state="idle"] .reaction__pad--fall,[data-state="paused"] .reaction__pad--fall{align-content:end}[data-state="idle"] .reaction__pad--fall .reaction__word{display:none}}[data-check="hold"] .reaction__pad--clicks,[data-check="drag"] .reaction__pad--clicks{touch-action:none}.reaction__fill{position:absolute;inset:auto 0 0;height:0.5rem;background:currentColor;opacity:0.55;transform:scaleX(0);transform-origin:left;pointer-events:none}.reaction__posts,.reaction__marker{display:none;pointer-events:none}[data-check="drag"] .reaction__posts,[data-check="drag"] .reaction__marker{display:block}.reaction__posts i{position:absolute;top:15%;bottom:15%;left:12%;width:3px;background:currentColor;opacity:0.45}.reaction__posts i + i{right:12%;left:auto}.reaction__marker{position:absolute;bottom:var(--space-2);left:12%;width:1.25rem;height:1.25rem;margin-left:-0.625rem;border-radius:50%;background:currentColor}.reaction__gaps{display:grid;gap:var(--space-2)}.reaction[data-state="idle"] .reaction__gaps:has(.reaction__log > .is-empty) > :is(.label,.reaction__log){display:none}.reaction__log{height:9.5rem;margin:0;padding:var(--space-2) var(--space-3);overflow-y:auto;border:1px solid var(--line-strong);border-radius:var(--radius-sm);list-style:none;font:var(--step--1) / 1.7 var(--font-mono);font-variant-numeric:tabular-nums}.reaction__log .is-empty{color:var(--ink-muted);font-family:var(--font-body);line-height:1.4}.reaction__log .is-under{padding-left:var(--space-2);box-shadow:inset 3px 0 0 var(--brand);font-weight:700}.reaction__line .input,.reaction__reads .input{display:inline-block;width:6rem}[data-mode="double-click"] .reaction__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.reaction__reads{display:grid;gap:var(--space-2);margin:0}.reaction__reads > div{padding-left:var(--space-3);border-left:3px solid var(--line)}.reaction__reads dt{font-size:var(--step--1);font-weight:700}.reaction__reads dd{min-height:5.6em;margin:0;font-size:var(--step--1);line-height:1.4}.reaction__reads :is([data-read="gaps"],[data-read="halves"],[data-read="line"]) dd{min-height:2.8em}.reaction__scroller[data-axis].is-open{overflow:scroll hidden}.reaction__scroller[data-axis] .reaction__track{width:2000000px;height:100%;background:repeating-linear-gradient(to right,currentColor 0 2px,transparent 2px 3rem)}.reaction[data-best] .stat--best{box-shadow:inset 3px 0 0 var(--brand)}@media (prefers-reduced-motion:no-preference){.reaction[data-best] .stat--best .stat__value{transform-origin:left bottom;animation:reaction-best 0.32s var(--ease)}.reaction__drop.is-cleared{animation:reaction-clear 0.22s var(--ease) forwards}@keyframes reaction-best{from{opacity:0.3;transform:scale(0.88)}}@keyframes reaction-clear{to{opacity:0;scale:1.3}}}@media print{.reaction__sky,.reaction__fill,.reaction__posts,.reaction__marker,.reaction__line{display:none}.reaction .reaction__log{height:auto;overflow:visible;border-color:var(--ink)}}.reaction:not([data-state="done"],[data-opened][data-state="idle"]) .reaction__play > :not(.reaction__bar,[class^="reaction__pad"],.tool-own,.tool-more,.reaction__listen,.reaction__listen-row,.print-only,.sr-only),.reaction:not([data-state="done"]) .reaction__bar .btn:not(.btn-primary,.reaction__stop,[data-act="link"],[data-back]),.reaction:not([data-state="done"]) .reaction__side,.reaction__detail,.reaction__daily,.reaction__next,.reaction__side > .tool-status,.reaction__chart{display:none}@media screen{.reaction__bar .btn:not(.btn-primary){min-height:0;padding:0;border:0;border-radius:0;background:none;color:var(--link);font-weight:400;text-decoration:underline;text-underline-offset:0.25em}.reaction__bar .btn:not(.btn-primary) > .icon{display:none}.reaction__stats .stat--best,.reaction__stats .stat:last-child{font-size:0.85em}}.reaction__round .hint,.reaction__stats .stat:not(.stat--best),.reaction__bar .btn:not(.btn-primary) .icon{display:none}.reaction [data-voice-note],.reaction .stat--best,.reaction__bar .icon{display:none}.reaction__stepper{display:inline-flex;align-items:center;gap:var(--space-2)}.reaction__step{flex:none;inline-size:var(--tap);block-size:var(--tap);padding:0;font-size:1.375rem;line-height:1}@container (max-width:30rem){.reaction__length > .label{flex:1 1 100%}}.reaction__length-field{inline-size:6.5rem;font-size:max(1rem,16px);font-variant-numeric:tabular-nums;text-align:center}.reaction__length-note{flex:1 1 100%;margin:0}.reaction__length-note:empty{display:none}.reaction__bar:not(:has(> .btn:not([hidden]))){display:none}.reaction__keys--pad{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-1);width:min(100%,18rem);margin-inline:auto}.reaction__keys--pad .reaction__key{min-height:3.25rem}.reaction[data-state="idle"]:has([data-custom]) .reaction__pad--text,.reaction:not([data-state="idle"],[data-state="done"]) [data-custom]{display:none}.reaction .tool-own__text{font-size:max(1rem,16px);resize:vertical}.reaction:not([data-listen]) .reaction__listen > .reaction__row{display:none}.reaction__pad--memory:has(> .reaction__keys:not([hidden])){height:auto;align-content:start}.reaction[data-state="done"] [data-custom]{order:3}.reaction[data-state="done"]:has([data-custom]) .reaction__play > :not([data-custom],[class^="reaction__pad"],.reaction__bar){order:4}.reaction__rate .select{font-size:max(1rem,16px)}.reaction:not([data-state="idle"],[data-state="done"]) .tool-more,.reaction:not([data-state="idle"],[data-state="done"]) .reaction__listen > .reaction__pick,.reaction:not([data-listen],[data-state="idle"],[data-state="done"]) .reaction__listen,.reaction:not([data-listen]) .reaction__listen:not(:has(> .reaction__pick)),.reaction:not([data-state="idle"],[data-state="done"]) .reaction__bar :is([data-act="link"],[data-back]),.reaction__bar :is([data-act="link"],[data-act="sample"]):disabled{display:none}@container (max-width:30rem){.reaction:not([data-state="done"]) .reaction__pad--text .reaction__hint{font-size:var(--step--1)}.reaction:not([data-state="done"]) .reaction__pad--text .reaction__more{display:none}}
