@font-face{font-family:Atkinson Hyperlegible Next Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible Next Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#f2f3ef;--paper-raised:#fbfbf8;--ink:#22252a;--ink-soft:#5d6168;--rule:#c9ccc4;--felt:#a3203a;--felt-soft:#f3dde1;--brass:#a07a2e;--brass-soft:#ece2cc;--key-white:#fdfdfb;--key-black:#22252a;--key-edge:#b9bcb4;--font:"Atkinson Hyperlegible Next Variable", system-ui, sans-serif;--step--1:.875rem;--step-0:1.0625rem;--step-1:1.3125rem;--step-2:1.75rem;--step-3:2.5rem;--step-4:clamp(2.75rem, 6vw, 4.5rem);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--paper:#17191c;--paper-raised:#1f2226;--ink:#e8e6e1;--ink-soft:#a3a39f;--rule:#3a3e44;--felt:#e0566b;--felt-soft:#3d1f25;--brass:#d2a95a;--brass-soft:#3a3122;--key-white:#dcdad4;--key-black:#101214;--key-edge:#8b8a86;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box}body{background:var(--paper);color:var(--ink);font-family:var(--font);font-size:var(--step-0);-webkit-font-smoothing:antialiased;margin:0;line-height:1.5}h1,h2,h3,p{margin:0}h2{font-size:var(--step-1);font-weight:700;line-height:1.25}button,input,select,textarea,.button{font:inherit;color:inherit}button,.button{border:1.5px solid var(--rule);background:var(--paper-raised);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;min-height:2.75rem;padding:.5rem 1rem;font-weight:600;display:inline-flex}button:hover:not(:disabled),.button:hover{border-color:var(--ink-soft)}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--ink);border-color:var(--ink);color:var(--paper)}button.quiet{min-height:2rem;color:var(--ink-soft);background:0 0;border-color:#0000;padding:.25rem .5rem;font-weight:400}input,select,textarea{border:1.5px solid var(--rule);background:var(--paper-raised);border-radius:6px;width:100%;min-height:2.75rem;padding:.5rem .75rem}textarea{resize:vertical}input[type=checkbox]{width:1.5rem;height:1.5rem;min-height:0;accent-color:var(--brass)}input[type=range]{accent-color:var(--ink);background:0 0;border:none;padding:0}:focus-visible{outline:3px solid var(--brass);outline-offset:2px}label{font-size:var(--step--1);gap:.25rem;font-weight:600;display:grid}.hint{color:var(--ink-soft);font-size:var(--step--1);font-weight:400}.notice{border-left:4px solid var(--brass);background:var(--brass-soft);padding:.75rem 1rem}.top{background:var(--paper);border-top:5px solid var(--felt)}.keyboard{width:100%;height:clamp(40px,6.5vw,88px);display:block}.key.white{fill:var(--key-white);stroke:var(--key-edge);stroke-width:.5px;vector-effect:non-scaling-stroke}.key.black{fill:var(--key-black)}.key.down{fill:var(--felt)}.middle-c{fill:var(--brass)}.bar{padding:.75rem max(1rem, env(safe-area-inset-left));border-bottom:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1.5rem;display:flex}.status{color:var(--ink-soft);align-items:center;gap:.5rem;display:flex}.status.ready{color:var(--ink)}.status.recording{color:var(--felt);font-size:var(--step-1);font-weight:700}.status strong{font-variant-numeric:tabular-nums}.rec-dot{background:var(--felt);border-radius:50%;width:.75rem;height:.75rem;animation:2s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.35}}nav{gap:.25rem;display:flex}nav a{color:var(--ink-soft);border-radius:6px;padding:.5rem .875rem;font-weight:600;text-decoration:none}nav a[aria-current=page]{background:var(--ink);color:var(--paper)}main{max-width:72rem;padding:1.5rem max(1rem, env(safe-area-inset-left)) 4rem;margin:0 auto}.today{gap:2.5rem;display:grid}.day{gap:.75rem;display:grid}.day-figures{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 2rem;display:flex}.figure{font-size:var(--step-1);color:var(--ink-soft)}.figure strong{color:var(--ink);font-size:var(--step-4);font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-weight:700;line-height:1}.figure.streak strong{color:var(--brass)}.meter{background:var(--brass-soft);border-radius:999px;height:.875rem;position:relative}.meter-fill{border-radius:inherit;background:var(--brass);height:100%;transition:width .4s}.meter-minimum{background:var(--ink);width:2px;position:absolute;top:-.25rem;bottom:-.25rem}.day-message{font-size:var(--step-1)}.practice-grid{border-top:1px solid var(--rule);grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:2.5rem;padding-top:2rem;display:grid}.piece{align-content:start;gap:1rem;display:grid}.piece.empty{justify-items:start}.piece-where{color:var(--ink-soft);font-size:var(--step-1);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.piece-count{font-size:var(--step--1);font-variant-numeric:tabular-nums}.piece-title{font-size:var(--step-3);text-wrap:balance;font-weight:800;line-height:1.1}.clean-days{color:var(--ink-soft);align-items:center;gap:.5rem;display:flex}.pip{border:2px solid var(--brass);border-radius:50%;width:1rem;height:1rem}.pip.filled{background:var(--brass)}.clean-days span:last-child{margin-left:.25rem}.tempo-presets{flex-wrap:wrap;gap:.5rem;display:flex}.tempo-presets button{font-variant-numeric:tabular-nums}.log-run{min-height:3.5rem;font-size:var(--step-1);font-variant-numeric:tabular-nums;justify-self:start}.metronome{background:var(--paper-raised);border:1px solid var(--rule);border-radius:10px;align-content:start;gap:1rem;padding:1.5rem;display:grid}.bpm-row{grid-template-columns:auto auto 1fr auto auto;align-items:center;gap:.375rem;display:grid}.bpm{font-size:var(--step-4);font-variant-numeric:tabular-nums;justify-items:center;font-weight:700;line-height:1;display:grid}.bpm span{font-size:var(--step--1);color:var(--ink-soft);font-weight:600}.nudge{font-variant-numeric:tabular-nums;min-width:2.75rem;padding:.5rem}.beats{justify-content:center;align-items:center;gap:.75rem;height:1.5rem;display:flex}.beat{background:var(--rule);border-radius:50%;width:1rem;height:1rem}.beat.first{width:1.375rem;height:1.375rem}.beat.on{background:var(--felt)}.metronome-controls{grid-template-columns:1fr 1fr auto;align-items:end;gap:.5rem;display:grid}.metronome-controls .primary{min-height:3.5rem;font-size:var(--step-1)}.metronome-controls button:not(.primary){min-height:3.5rem}.metronome-controls label{min-width:4.5rem}.metronome-controls select{min-height:3.5rem}.plan{border-top:1px solid var(--rule);gap:1rem;padding-top:2rem;display:grid}.plan ol{counter-reset:step;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1rem;margin:0;padding:0;list-style:none;display:grid}.plan li{counter-increment:step}.plan label{border:1.5px solid var(--rule);height:100%;font-size:var(--step-0);cursor:pointer;border-radius:8px;grid-template-columns:auto 1fr;align-items:start;gap:.25rem .75rem;padding:1rem;font-weight:400}.plan .step-title{font-weight:700}.plan .step-title:before{content:counter(step) ". ";color:var(--ink-soft)}.step-minutes{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-weight:400}.step-detail{color:var(--ink-soft);font-size:var(--step--1);grid-column:2}.plan li.done label{border-color:var(--brass);background:var(--brass-soft)}.plan li.done .step-title{text-decoration:line-through;-webkit-text-decoration-color:var(--brass);text-decoration-color:var(--brass)}.book,.log{gap:2.5rem;max-width:52rem;display:grid}.book-title{max-width:32rem}.empty-note{font-size:var(--step-1);max-width:38rem}.piece-list{margin:0;padding:0;list-style:none}.unit-heading{font-size:var(--step-1);margin:1.5rem 0 .25rem}.piece-row:first-child .unit-heading{margin-top:0}.piece-line{border-bottom:1px solid var(--rule);grid-template-columns:3rem minmax(0,1fr) auto;align-items:center;gap:.25rem 1rem;padding:.5rem 0;display:grid}.piece-status{font-size:var(--step--1);color:var(--ink-soft);font-weight:700}.piece-row.current .piece-status{color:var(--felt)}.piece-row.current .piece-name{font-weight:700}.piece-row.done .piece-name{color:var(--ink-soft)}.piece-meta{color:var(--ink-soft);font-size:var(--step--1);white-space:pre;grid-area:2/2}.piece-actions{grid-area:1/3/span 2;gap:.25rem;display:flex}.piece-actions button{min-height:2.25rem;font-size:var(--step--1);padding:.25rem .625rem}.piece-form{grid-template-columns:1fr 2fr .75fr .75fr;align-items:end;gap:.75rem;padding:.75rem 0;display:grid}.form-actions{flex-wrap:wrap;grid-column:1/-1;gap:.5rem;display:flex}.add-piece,.paste-list,.log section{gap:.75rem;display:grid}.paste-list button{justify-self:start}.history{margin:0;padding:0;list-style:none}.history-day{border-bottom:1px solid var(--rule);padding:.625rem 0}.history-summary{justify-content:space-between;gap:1rem;display:flex}.history-date{font-weight:700}.history-total{font-variant-numeric:tabular-nums}.history-day.met .history-total{color:var(--brass);font-weight:700}.history-day.missed{color:var(--ink-soft)}.history-day.missed .history-date{font-weight:400}.history-sessions{font-size:var(--step--1);color:var(--ink-soft);margin:.375rem 0 0;padding:0;list-style:none}.history-sessions li{font-variant-numeric:tabular-nums;grid-template-columns:9rem 8rem 1fr auto;align-items:center;gap:.5rem;display:grid}.live-row{color:var(--felt)}.settings-grid{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1rem;display:grid}.manual-form{grid-template-columns:1fr 1fr auto;align-items:end;gap:.75rem;max-width:36rem;display:grid}@media (width<=760px){.practice-grid{grid-template-columns:1fr}.piece-form{grid-template-columns:1fr 1fr}.piece-form .wide{grid-column:1/-1}.piece-line{grid-template-columns:2.5rem minmax(0,1fr)}.piece-actions{flex-wrap:wrap;grid-area:3/2}.history-sessions li{grid-template-columns:1fr auto}.manual-form{grid-template-columns:1fr 1fr}.manual-form button{grid-column:1/-1}.metronome{padding:1rem}}@media (prefers-reduced-motion:reduce){.rec-dot{animation:none}.meter-fill{transition:none}}
