:root{--paper:#deddd4;--ink:#4a3d8f;--ink-ghost:#4a3d8f4d;--ink-2:#a9a2cc;--ink-mid:#7c71b0;--pencil:#2e2c2a;--red:#c43b2e;--display:"Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif;--typed:"Courier Prime", ui-monospace, monospace}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#1b2320;--ink:#e9e7db;--ink-ghost:#e9e7db1a;--ink-2:#5c6b63;--ink-mid:#8e9a93;--pencil:#f0d264;--red:#e8705e}}:root[data-theme=dark]{--paper:#1b2320;--ink:#e9e7db;--ink-ghost:#e9e7db1a;--ink-2:#5c6b63;--ink-mid:#8e9a93;--pencil:#f0d264;--red:#e8705e}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background-color:var(--paper);color:var(--ink);font-family:var(--typed);-webkit-text-size-adjust:100%;background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><filter id='n'><feTurbulence baseFrequency='.85' numOctaves='3'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='.055'/></svg>");overflow:hidden}.sheet{height:100dvh;padding:clamp(.9rem,3vw,1.8rem);padding-bottom:max(clamp(.9rem, 3vw, 1.8rem), env(safe-area-inset-bottom));grid-template-rows:auto 1fr auto;gap:1rem;max-width:62rem;margin-inline:auto;display:grid}.masthead{letter-spacing:.04em;justify-content:space-between;align-items:baseline;gap:1rem;font-size:clamp(.75rem,2.4vw,.9rem);display:flex}.masthead[data-hidden]{visibility:hidden}.wordmark b{letter-spacing:.18em}.wordmark span{color:var(--ink-2)}.wordmark em{color:var(--red);letter-spacing:.12em;font-style:normal}.clock{font-variant-numeric:tabular-nums;font-size:clamp(.95rem,3.4vw,1.25rem);font-weight:700}.streak{color:var(--ink-2);letter-spacing:.12em;font-size:clamp(.7rem,2.4vw,.82rem)}.boxes{gap:4px;margin-top:.7rem;display:flex}.boxes[data-hidden]{visibility:hidden}.boxes i{border:1.5px solid var(--ink-2);flex:1;height:clamp(13px,2.2vw,17px);transition:background-color .13s ease-out}.boxes i[data-done]{background:var(--ink);border-color:var(--ink)}.boxes i[data-done][data-missed]{background:var(--red);border-color:var(--red)}.stage{overscroll-behavior:contain;scrollbar-width:none;flex-direction:column;justify-content:safe center;align-items:center;width:100%;min-height:0;display:flex;overflow-y:auto}.stage::-webkit-scrollbar{display:none}.panel{text-align:center;width:100%}.title{font-family:var(--display);letter-spacing:-.035em;text-shadow:.017em .019em 0 var(--ink-ghost);font-size:clamp(3.4rem,17vw,9rem);font-weight:800;line-height:.82}.title[data-small]{font-size:clamp(2rem,9vw,4rem)}.issue-line{color:var(--ink-2);letter-spacing:.22em;margin-top:.9rem;font-size:clamp(.75rem,2.6vw,.88rem)}.standfirst{max-width:30rem;margin:1.1rem auto 0;font-size:clamp(.9rem,3vw,1.05rem);line-height:1.65}.hint{color:var(--ink-2);margin-top:1rem;font-size:.8rem}.btn{font-family:var(--typed);letter-spacing:.1em;color:var(--paper);background:var(--ink);cursor:pointer;border:none;padding:.85rem 2.4rem;font-size:clamp(1rem,3.6vw,1.15rem);font-weight:700}.btn:hover{background:var(--pencil)}.btn[data-honors]{background:var(--red)}.btn-row{flex-wrap:wrap;justify-content:center;gap:.7rem;margin-top:1.4rem;display:flex}.linkish{font-family:var(--typed);color:var(--ink-2);cursor:pointer;background:0 0;border:none;border-bottom:1px solid;padding:0 0 1px;font-size:.82rem}.linkish:hover{color:var(--ink)}.practice-row{color:var(--ink-2);margin-top:1.1rem;font-size:.8rem}.btn-row[data-tight]{margin-top:.8rem}.btn[data-quiet]{color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--ink);background:0 0}.btn[data-quiet]:hover{color:var(--paper);background:var(--ink)}.nav{flex-wrap:wrap;justify-content:center;gap:1.4rem;margin-top:1.2rem;display:flex}.problem{font-family:var(--display);font-variant-numeric:tabular-nums;letter-spacing:-.02em;grid-template-columns:max-content max-content;place-content:center;column-gap:clamp(.45rem,2.2vw,1rem);font-size:clamp(3rem,14vw,8rem);font-weight:800;line-height:.98;display:grid}.problem[data-form=inline]{font-size:clamp(1.7rem,7.5vw,4.2rem)}.problem>*{text-align:right;grid-column:2}.operator{text-align:left;grid-area:2/1}.operand{color:var(--ink);text-shadow:.017em .019em 0 var(--ink-ghost)}.expression{color:var(--ink);white-space:nowrap;text-shadow:.017em .019em 0 var(--ink-ghost);grid-column:1/-1}.bar{background:var(--ink);grid-column:1/-1;height:.085em;margin:.16em 0 .1em}.entry{color:var(--pencil);min-height:.98em}.entry[data-wrong]{color:var(--red)}.caret{vertical-align:-.02em;background:currentColor;width:.1em;height:.72em;margin-left:.04em;animation:1.06s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}@keyframes stamp{0%{transform:scale(1.055)}to{transform:scale(1)}}.problem[data-stamp]{animation:.17s cubic-bezier(.2,0,.1,1) stamp}.verdict-row{justify-content:center;align-items:center;gap:clamp(.8rem,4vw,2.4rem);display:flex}.verdict{font-family:var(--display);letter-spacing:-.035em;font-variant-numeric:tabular-nums;text-shadow:.017em .019em 0 var(--ink-ghost);font-size:clamp(2.6rem,12vw,5.6rem);font-weight:800;line-height:.9}.mark{font-family:var(--display);color:var(--red);font-weight:800;line-height:.85;transform:rotate(-9deg)}.mark b{letter-spacing:-.04em;font-size:clamp(2.6rem,12vw,5.5rem);display:block}.mark span{font-family:var(--typed);letter-spacing:.1em;font-size:clamp(.7rem,2.6vw,.85rem);font-weight:400;display:block}.standing{margin-top:.7rem;font-size:clamp(.9rem,3vw,1.05rem);font-weight:700}.standing small{color:var(--ink-2);margin-top:.3rem;font-size:.78rem;font-weight:400;display:block}.pace{color:var(--ink);margin-top:.35rem;font-size:clamp(.85rem,2.8vw,.95rem)}.pace small{color:var(--ink-2);margin-top:.25rem;font-size:.75rem;display:block}.plot{width:min(30rem,100%);margin:1rem auto 0}.chart{border-bottom:1.5px solid var(--ink-2);align-items:flex-end;gap:2px;height:clamp(44px,10vh,76px);display:flex}.chart i{background:var(--ink-2);flex:1}.chart i[data-you]{background:var(--red)}.axis{color:var(--ink-2);justify-content:space-between;margin-top:.4rem;font-size:.68rem;display:flex}.marked{margin-top:1rem}.tip{color:var(--ink-2);font-variant-numeric:tabular-nums;min-height:1.4em;font-size:.78rem}.grid{grid-template-columns:repeat(5,1fr);gap:3px;width:min(9.5rem,46vw);margin:.45rem auto 0;display:grid}.grid button{aspect-ratio:1;cursor:pointer;background:var(--ink-mid);border:none;padding:0}.grid button[data-square=quick]{background:var(--ink)}.grid button[data-square=missed]{background:var(--red)}.grid button span{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.bonus{border:1.5px dashed var(--red);max-width:26rem;color:var(--red);margin:1.1rem auto 0;padding:.9rem 1rem;font-size:.95rem;line-height:1.5}.report{text-align:left;width:min(34rem,100%);margin-inline:auto}.report-head{border-bottom:2px solid var(--ink);justify-content:space-between;align-items:flex-end;gap:1rem;padding-bottom:.7rem;display:flex}.report-head h2{font-family:var(--typed);letter-spacing:.2em;font-size:.8rem;font-weight:700}.term{text-align:right}.term b{font-family:var(--display);letter-spacing:-.03em;font-size:clamp(2.2rem,10vw,3.4rem);line-height:.85;display:block}.term span{color:var(--ink-2);letter-spacing:.08em;font-size:.72rem}.classes{border-collapse:collapse;width:100%;margin-top:.3rem;font-size:.85rem}.classes th,.classes td{border-bottom:1px solid var(--ink-2);text-align:right;padding:.65rem .2rem}.classes th{color:var(--ink-2);letter-spacing:.1em;font-size:.68rem;font-weight:400}.classes th:first-child,.classes td:first-child{text-align:left}.classes td b{font-family:var(--display);font-size:1.15rem}.classes td[data-none]{color:var(--ink-2)}.tally{justify-content:space-between;gap:1rem;margin-top:1rem;font-size:.8rem;display:flex}.tally div b{font-family:var(--display);font-size:1.6rem;line-height:1;display:block}.tally div span{color:var(--ink-2);letter-spacing:.08em;font-size:.68rem}.chips{flex-wrap:wrap;gap:4px;margin-top:1rem;display:flex}.chips i{font-family:var(--display);text-align:center;border:1.5px solid var(--ink-2);min-width:2.1em;color:var(--ink);padding:.3em .2em;font-size:.78rem;font-style:normal;font-weight:800}.chips i[data-mode=honors]{border-color:var(--red);color:var(--red)}.form{flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:1.4rem;display:flex}.field{font-family:var(--typed);min-width:min(20rem,80vw);color:var(--pencil);border:none;border-bottom:2px solid var(--ink);background:0 0;padding:.8rem 1rem;font-size:1rem}.field::placeholder{color:var(--ink-2)}.note{color:var(--ink-2);margin-top:1.2rem;max-width:28rem;margin-inline:auto;font-size:.82rem;line-height:1.6}.note a{color:var(--red);word-break:break-all}.toggle{cursor:pointer;align-items:center;gap:.6rem;margin-top:1.6rem;font-size:.85rem;display:inline-flex}.toggle input{width:1.1rem;height:1.1rem;accent-color:var(--red)}.footer{text-align:center;color:var(--ink-2);letter-spacing:.03em;font-size:.75rem}.keypad{grid-template-columns:repeat(3,1fr);gap:5px;max-width:20rem;margin:0 auto;display:none}.keypad button{font-family:var(--display);color:var(--ink);border:1.5px solid var(--ink-2);cursor:pointer;background:0 0;padding:.5rem;font-size:1.6rem;font-weight:700}.keypad button:active{background:var(--ink);color:var(--paper)}@media (pointer:coarse){.keypad[data-playing]{display:grid}.keypad[data-playing]+.footnote{display:none}}:focus-visible{outline:2.5px solid var(--red);outline-offset:3px}@media (prefers-reduced-motion:reduce){*,:before,:after{animation-duration:1ms!important;animation-iteration-count:1!important}.caret{opacity:1}}
