@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/app/assets/literata-cyrillic-ext-wght-normal-CGKlZYBf.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/app/assets/literata-cyrillic-wght-normal-DLqwHbi6.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/app/assets/literata-greek-ext-wght-normal-e3e57Shi.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/app/assets/literata-greek-wght-normal-CO1l-giJ.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/app/assets/literata-vietnamese-wght-normal-LcSrhZ7T.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/app/assets/literata-latin-ext-wght-normal-BnEbWgdZ.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:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/app/assets/literata-latin-wght-normal-DLxlUchJ.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}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/app/assets/ibm-plex-sans-cyrillic-ext-wght-normal-d45eAU9y.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/app/assets/ibm-plex-sans-cyrillic-wght-normal-BAAhND-U.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/app/assets/ibm-plex-sans-greek-wght-normal-CmyJS8uq.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/app/assets/ibm-plex-sans-vietnamese-wght-normal-Dg1JeJN0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/app/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/app/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.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:#f4f4f1;--card:#fff;--line:#ecece7;--line-strong:#dadad3;--ink:#1c1c1e;--ink-hover:#343437;--muted:#75756f;--faint:#a9a9a2;--done:#8d8d86;--track:#e6e6e1;--icon-bg:#f1f1ec;--wine:#8e2c48;--wine-soft:#8e2c4824;--wine-wash:#8e2c4812;--wine-mid:#8e2c4861;--wrong:#c2415f;--wrong-soft:#c2415f52;--font-display:"Literata Variable", Georgia, serif;--font-ui:"IBM Plex Sans Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--t-xs:.75rem;--t-sm:.875rem;--t-md:1rem;--t-lg:1.125rem;--t-xl:1.3125rem;--t-2xl:1.5rem;--t-3xl:1.875rem;--t-4xl:2.5rem;--r-card:12px;--r-btn:10px;--r-icon:9px;--r-small:6px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-ui);font-size:var(--t-md);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;line-height:1.5}a{color:inherit}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--wine);outline-offset:2px}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.005em;margin:0;font-weight:600;line-height:1.2}h1{font-size:var(--t-3xl)}h2{font-size:var(--t-xl);margin:32px 0 12px}h3{font-size:var(--t-lg);margin:22px 0 8px}.lede{color:var(--muted);max-width:60ch;margin:8px 0 0}.note{color:var(--muted);font-size:var(--t-sm)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}mark,.marker{background:var(--wine-soft);color:inherit;-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:4px;padding:0 4px}.book{min-height:100%;padding:16px 16px 48px}.page{max-width:760px;margin:0 auto}.page-head{justify-content:space-between;align-items:center;gap:12px;min-height:44px;margin-bottom:20px;display:flex}.back{min-height:44px;color:var(--muted);font-size:var(--t-sm);align-items:center;gap:4px;padding:0 6px 0 0;text-decoration:none;display:inline-flex}.back:hover{color:var(--ink)}.back svg{width:18px;height:18px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:16px}.home-head{justify-content:space-between;align-items:center;gap:12px;min-height:48px;margin-bottom:8px;display:flex}.wordmark{font-family:var(--font-display);font-weight:600;font-size:var(--t-2xl);line-height:1.1}.today{align-items:center;gap:14px;padding:10px 0 18px;display:flex}.today svg{flex:none;width:52px;height:52px}.goal-ring{cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;padding:0;line-height:0}.goal-ring:focus-visible{outline:2px solid var(--wine);outline-offset:3px}.goal-ring.is-singing svg{animation:1.1s cubic-bezier(.3,.7,.4,1) ring-sing}@keyframes ring-sing{0%{transform:scale(1)}25%{filter:drop-shadow(0 0 6px var(--wine-soft));transform:scale(1.09)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.goal-ring.is-singing svg{animation:none}}.home-head-end{align-items:center;gap:8px;min-width:0;display:flex}.day-key{border:1px solid var(--line);background:var(--card);min-height:32px;color:var(--muted);font:inherit;font-size:var(--t-xs);white-space:nowrap;cursor:pointer;border-radius:999px;align-items:center;gap:5px;padding:0 10px;display:inline-flex}.day-key:hover{color:var(--ink);border-color:var(--line-strong)}.day-key svg{color:var(--wine)}@media (width<=420px){.day-key{display:none}}.today-text{flex:1;min-width:0}.today-text strong{font-size:var(--t-lg);font-weight:500;line-height:1.2;display:block}.today-text span{font-size:var(--t-xs);color:var(--muted);display:block}.streak-pill{background:var(--wine);color:#fff;font-size:var(--t-sm);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:5px 12px 5px 9px;font-weight:500;display:inline-flex}.streak-pill svg{width:16px;height:16px}.streak-pill.is-quiet{background:var(--icon-bg);color:var(--muted)}.player-mark{background:var(--icon-bg);width:36px;height:36px;color:var(--ink);font-family:var(--font-display);font-weight:600;font-size:var(--t-md);border-radius:999px;flex:none;place-items:center;display:inline-grid}.player-mark.is-current{box-shadow:inset 0 0 0 1.5px var(--wine);color:var(--wine)}.player-chip{align-items:center;min-height:44px;text-decoration:none;display:inline-flex}.player-chip .player-mark{width:32px;height:32px;font-size:var(--t-sm)}.player-picks{gap:8px;margin:16px 0;padding:0;list-style:none;display:grid}.player-pick{text-align:left;width:100%;min-height:64px;font:inherit;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);cursor:pointer;align-items:center;gap:14px;padding:12px 14px;display:flex}.player-pick:hover{border-color:var(--line-strong)}.player-pick.is-last{border-color:var(--wine-mid)}.player-pick .player-mark{width:44px;height:44px;font-size:var(--t-lg)}.player-pick-body,.player-row-body{flex:1;gap:2px;min-width:0;display:grid}.player-pick-body strong{font-size:var(--t-lg);font-weight:500}.player-pick-body small,.player-row-body small{color:var(--muted);font-size:var(--t-sm)}.player-pick-key{color:var(--muted);font-size:var(--t-sm);white-space:nowrap}.player-rows{gap:8px;margin:12px 0;padding:0;list-style:none;display:grid}.player-row{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);flex-wrap:wrap;align-items:center;gap:12px;padding:10px 12px;display:flex}.player-row .btn-row{margin:0}.practice-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:16px}.practice-label{font-size:var(--t-xs);color:var(--muted);display:block}.practice-title{font-size:var(--t-xl);margin:2px 0 12px;line-height:1.35}.practice-card>.btn{width:100%;margin-top:14px}.practice-card .btn-row{margin-top:14px}.practice-card .note{margin:0}.practice-card.is-done{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:0 12px;padding:12px 14px;display:flex}.practice-card.is-done .practice-label{flex-basis:100%}.practice-card.is-done .practice-title{font-size:var(--t-lg);margin:0}.practice-card.is-done a{font-size:var(--t-sm);color:var(--ink)}.next-card{background:var(--card);border:1px solid var(--line-strong);border-radius:var(--r-card);margin-top:8px;padding:16px}.next-card-title{font-size:var(--t-xl);margin:2px 0 4px;line-height:1.3}.next-card-reason{color:var(--muted);font-size:var(--t-sm);margin:0}.next-card .btn-row{margin-top:14px}.next-card-more{border-top:1px solid var(--line);margin:14px 0 0;padding:0;list-style:none}.next-card-more li{border-bottom:1px solid var(--line);align-items:center;gap:4px;display:flex}.next-card-more li:last-child{border-bottom:0}.next-card-more a{flex:1;align-items:center;gap:10px;min-width:0;padding:10px 0;text-decoration:none;display:flex}.next-card-more a span{flex:1;min-width:0}.next-card-more strong{font-weight:500;display:block}.next-card-more small{color:var(--muted);font-size:var(--t-xs);display:block}.next-card-aside{border-radius:var(--r-btn);width:32px;height:32px;color:var(--faint);cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;display:flex}.next-card-aside:hover{background:var(--icon-bg);color:var(--ink)}.next-card-why{margin-top:8px}.next-break{border-top:1px solid var(--line);padding-top:12px}.next-break p{margin:0 0 4px}.next-break strong{font-weight:600}.next-break .btn{margin-top:8px}.song-shelf h2{margin:24px 0 10px}.shelf-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.shelf-head a{font-size:var(--t-sm);color:var(--ink)}.song-main{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);flex-wrap:wrap;align-items:center;gap:8px 12px;padding:12px 14px;text-decoration:none;display:flex}a.song-main:hover{border-color:var(--line-strong)}.song-main-body{flex:1;min-width:0;text-decoration:none}.song-main-body strong{font-weight:500;display:block}.song-main-body small{color:var(--muted);font-size:var(--t-xs);display:block}.song-trouble{border-top:1px solid var(--line);font-size:var(--t-sm);color:var(--muted);flex-basis:100%;margin:0;padding-top:8px}.song-trouble a{color:var(--ink)}.path-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);flex-wrap:wrap;align-items:center;gap:8px 12px;margin:8px 0 12px;padding:12px 14px;display:flex}.path-sections{margin-bottom:8px}.choose-yourself{margin:20px 0 8px}.choose-yourself>summary{cursor:pointer;font-family:var(--font-display);font-size:var(--t-xl);margin-bottom:12px;font-weight:600}.path-next .path-line{margin:0 0 2px;font-weight:500}.path-next .note{margin:0}.path-stages{margin:4px 0 24px;padding:0;list-style:none}.path-stage{border-top:1px solid var(--line);grid-template-columns:28px minmax(0,1fr);gap:12px;padding:14px 0;display:grid}.path-stage.is-current{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:14px 12px}.path-dot{border:1px solid var(--line-strong);width:26px;height:26px;font-size:var(--t-xs);color:var(--muted);border-radius:50%;justify-content:center;align-items:center;display:flex}.path-stage.is-done .path-dot{color:var(--done)}.path-stage.is-current .path-dot{border-color:var(--wine);color:var(--wine)}.path-stage-body{gap:6px;min-width:0;display:grid}.path-stage-head{justify-content:space-between;gap:12px;display:flex}.path-stage-head strong{font-weight:500}.path-links{font-size:var(--t-sm);flex-wrap:wrap;gap:4px 16px;display:flex}.path-links a{color:var(--ink)}.path-where{margin:0 0 6px}.song-details{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);margin:16px 0 8px;padding:12px 16px}.song-details>summary{cursor:pointer;font-weight:500}.song-details[open]>summary{margin-bottom:8px}.song-details .details-head{justify-content:space-between;align-items:baseline;gap:12px;margin:18px 0 8px;display:flex}.song-details .details-head .note{font-family:var(--font-ui);font-size:var(--t-sm);font-weight:400}.section-table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:var(--t-sm)}.section-table .col-pick{width:32px}.section-table .col-wait{width:64px}.section-table .col-free{width:104px}.section-table .col-tempo{width:92px}.section-table th{color:var(--muted);text-align:right;border-bottom:1px solid var(--line);padding:6px 8px;font-weight:400}.section-table th:nth-child(-n+2),.section-table td:nth-child(-n+2){text-align:left}.section-table td{text-align:right;border-bottom:1px solid var(--line);white-space:nowrap;text-overflow:ellipsis;padding:8px;overflow:hidden}.section-table tbody tr:not(.section-actions){cursor:pointer}.section-table tr.is-open td{background:var(--paper)}.section-table tr.is-next td:nth-child(2),.section-table .cell-ok{font-weight:500}.section-table .cell-ok svg{vertical-align:-2px;color:var(--done);margin-left:4px}.section-table .cell-none{color:var(--faint)}.section-table .section-level{font-weight:400;display:block}.path-reads{margin:-4px 0 12px}.section-table .section-actions td{white-space:normal;text-align:left;padding:4px 8px 14px}.section-test{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;margin-top:10px;display:flex}.selection-bar{background:var(--paper);border-radius:var(--r-btn);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;margin:8px 0;padding:10px 12px;display:flex}.practice-bar .path-line{margin:0 0 4px;font-weight:500}.lap-scrim{background:color-mix(in srgb, var(--paper) 55%, transparent);pointer-events:none;z-index:5;place-items:center;padding:12px 16px;animation:.25s ease-out both lap-in;display:grid;position:absolute;inset:0}.lap-scrim.is-choice{background:color-mix(in srgb, var(--paper) 85%, transparent);pointer-events:auto}.lap-card{text-align:center;background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);flex-direction:column;align-items:center;gap:6px;width:min(100%,340px);padding:18px 22px;animation:.3s ease-out both lap-card-in;display:flex}.lap-card.is-ok{border-color:var(--wine-soft)}.lap-card.is-choice{border:1.5px solid var(--wine);padding:20px 24px}.lap-score{font-family:var(--font-display);font-size:var(--t-4xl);font-weight:600;line-height:1}.lap-card.is-ok .lap-score{color:var(--wine)}.lap-title{font-family:var(--font-display);font-size:var(--t-lg);margin:0;font-weight:500;line-height:1.25}.lap-card.is-choice .lap-title{font-size:var(--t-xl)}.lap-line{color:var(--muted);font-size:var(--t-sm);margin:0 0 4px}.lap-card.is-choice .lap-line{margin-bottom:10px}.lap-keys,.lap-wait{color:var(--muted);font-size:var(--t-xs)}.lap-wait{color:var(--faint)}.lap-card .btn.quiet{margin-top:6px}.lap-dots{color:var(--muted);font-size:var(--t-xs);align-items:center;gap:6px;display:inline-flex}.lap-dots i{border:1.5px solid var(--faint);border-radius:50%;width:10px;height:10px}.lap-dots i.is-on{background:var(--wine);border-color:var(--wine)}.lap-card.is-choice .lap-dots span{color:var(--wine)}.lap-dots span{margin-left:2px}.lap-chips{font-size:var(--t-sm);color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 6px;display:flex}.lap-chips>span{border-radius:6px;padding:1px 7px}.lap-chips>span.is-ok{color:var(--wine);background:var(--wine-soft);font-weight:500}.lap-chips .lap-dots{margin-left:6px}@keyframes lap-in{0%{opacity:0}}@keyframes lap-card-in{0%{opacity:0;transform:translateY(6px)scale(.97)}}@media (prefers-reduced-motion:reduce){.lap-scrim,.lap-card{animation:none}}.verdict-parts{font-size:var(--t-sm);color:var(--muted);flex-wrap:wrap;gap:4px 16px;margin:0 0 12px;padding:0;list-style:none;display:flex}.verdict-parts .is-ok{color:var(--ink)}.verdict-parts svg{vertical-align:-2px;color:var(--done);margin-left:4px}.prep-controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 16px;display:flex}.prep-controls .btn svg{vertical-align:-2px;margin-right:6px}.prep-results .path-line{margin:0 0 4px;font-weight:500}.entry-button{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;display:block}.song-more{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.song-chip{background:var(--card);border:1px solid var(--line);border-radius:var(--r-btn);min-width:0;font-size:var(--t-sm);text-overflow:ellipsis;white-space:nowrap;flex-direction:column;flex:140px;padding:8px 12px;font-weight:500;text-decoration:none;display:flex;overflow:hidden}.song-chip:hover{border-color:var(--line-strong)}.song-chip small{color:var(--muted);font-size:var(--t-xs);font-weight:400}.song-chip.is-add{color:var(--muted);border-style:dashed;flex-direction:row;flex:0 auto;align-items:center;gap:6px}.area-switches{display:grid}.plan-bar{gap:3px;height:10px;display:flex}.plan-bar i{border-radius:5px;flex-basis:0}.plan-bar i.is-done{opacity:.3}.is-technique,.is-firstSteps{background:var(--line-strong)}.is-cards{background:var(--muted)}.is-song{background:var(--faint)}.is-sight{background:var(--ink)}.plan-parts{font-size:var(--t-sm);flex-wrap:wrap;gap:4px 16px;margin:10px 0 0;padding:0;list-style:none;display:flex}.plan-parts li{align-items:center;gap:6px;display:inline-flex}.plan-parts li.is-done,.plan-parts small{color:var(--muted)}.swatch{border-radius:3px;flex:none;width:10px;height:10px}.grade-row{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);align-items:center;gap:14px;margin-top:8px;padding:12px 14px;text-decoration:none;display:flex}.grade-row:hover{border-color:var(--line-strong)}.redo-check{font-size:var(--t-sm);color:var(--muted);margin:6px 2px 0}.redo-check a{color:var(--ink)}.grade-row-body{flex:1;min-width:0}.grade-row-body small,.grade-row-points small{font-size:var(--t-xs);color:var(--muted);display:block}.grade-row-body strong{font-family:var(--font-display);font-size:var(--t-lg);margin-bottom:6px;font-weight:600;display:block}.grade-row-points{text-align:right}.grade-row-points strong{font-family:var(--font-display);font-size:var(--t-lg);font-weight:600}.grade-row .pencil-bar,.area .pencil-bar{max-width:none}.areas{gap:8px;display:grid}.area{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);align-items:center;gap:12px;padding:12px 14px;text-decoration:none;display:flex}.area:hover{border-color:var(--line-strong)}.area-icon{border-radius:var(--r-icon);background:var(--icon-bg);flex:none;justify-content:center;align-items:center;width:38px;height:38px;display:flex}.area-icon svg{width:20px;height:20px}.area-body{flex:1;min-width:0}.area-body strong{font-weight:500;display:block}.area-body small{color:var(--muted);font-size:var(--t-xs);margin-bottom:6px;display:block}.area-chevron{color:var(--faint);flex:none}.suggest{border-radius:var(--r-card);background:var(--wine-wash);align-items:center;gap:10px;margin-top:8px;padding:12px 14px;text-decoration:none;display:flex}.suggest:hover{background:var(--wine-soft)}.suggest>svg:first-child{color:var(--wine);flex:none}.suggest span{flex:1}.suggest small{color:var(--muted);font-size:var(--t-xs);display:block}.suggest small.suggest-reason{color:var(--wine);font-weight:500}.check-card{background:var(--wine-wash);border-radius:var(--r-card);margin:0 0 12px;padding:16px}.check-card h2{font-size:var(--t-lg);margin:0 0 4px}.check-card p{color:var(--muted);font-size:var(--t-sm);margin:0 0 12px}.freeze-note{color:var(--muted);font-size:var(--t-sm);align-items:center;gap:6px;margin:-8px 0 14px;display:flex}.notice-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);margin:0 0 12px;padding:16px}.notice-card h2{font-size:var(--t-lg);margin:0 0 4px}.notice-card p{color:var(--muted);font-size:var(--t-sm);margin:0 0 12px}.welcome{max-width:600px}.welcome-head{justify-content:space-between;align-items:center;gap:12px;min-height:48px;margin-bottom:24px;display:flex}.welcome-head-end{align-items:center;gap:4px;display:inline-flex}button.back{font:inherit;font-size:var(--t-sm);cursor:pointer;background:0 0;border:0}.welcome-count{color:var(--muted);font-size:var(--t-sm);font-variant-numeric:tabular-nums;margin:0 0 6px}.welcome-question h1:focus{outline:none}.answers{gap:10px;margin:24px 0 0;padding:0;list-style:none;display:grid}.answers.is-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.answer{text-align:left;width:100%;min-height:76px;font:inherit;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);cursor:pointer;align-items:center;gap:14px;padding:14px 16px;text-decoration:none;display:flex}.answer:hover{border-color:var(--line-strong)}.answer-icon{border-radius:var(--r-icon);background:var(--icon-bg);flex:none;place-items:center;width:44px;height:44px;display:grid}.answer-icon svg{width:22px;height:22px}.answer-body{flex:1;gap:2px;min-width:0;display:grid}.answer-body strong{font-size:var(--t-lg);font-weight:500;line-height:1.3}.answer-body small{color:var(--muted);font-size:var(--t-sm)}.answer-chevron{color:var(--faint);flex:none}.answers.is-grid .answer{min-height:104px}.answers.is-grid .answer-chevron{display:none}.answer-number{font-family:var(--font-display);font-size:var(--t-3xl);margin-right:2px;font-weight:600;line-height:1}.welcome-actions{margin-top:24px}.welcome-foot{color:var(--muted);font-size:var(--t-sm);margin:20px 0 0}.welcome-feedback{justify-items:start;gap:10px;min-height:56px;margin-top:16px;display:grid}.welcome-feedback small{color:var(--muted);font-size:var(--t-sm)}.welcome-feedback .good{color:var(--ink);font-weight:500}.welcome-status{color:var(--muted);font-size:var(--t-sm);align-items:baseline;gap:8px;margin:16px 0 0;display:flex}.welcome-status .dot{background:var(--faint);border-radius:50%;flex:none;width:8px;height:8px;transform:translateY(-1px)}.welcome-status.is-good{color:var(--ink)}.welcome-status.is-good .dot{background:var(--wine)}.welcome-status.is-waiting .dot{animation:1.6s ease-in-out infinite welcome-wait}@keyframes welcome-wait{50%{opacity:.3}}@media (prefers-reduced-motion:reduce){.welcome-status.is-waiting .dot{animation:none}}.welcome-help{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);margin-top:16px;padding:16px}.welcome-help h2{font-size:var(--t-lg);margin:0 0 8px}.welcome-help ol{gap:6px;margin:0;padding-left:20px;display:grid}.welcome-help .note{margin:12px 0 0}.welcome-help code{font-size:var(--t-xs);background:var(--icon-bg);border-radius:var(--r-small);overflow-wrap:anywhere;padding:1px 5px}.mini-keys{width:100%;max-width:320px;height:auto;margin-top:20px;display:block}.mini-keys.is-wide{max-width:none}.mini-keys rect{fill:var(--card);stroke:var(--line-strong);stroke-width:1px}.mini-keys rect.b{fill:var(--ink);stroke:var(--ink)}.mini-keys rect.is-mark{fill:var(--wine-soft);stroke:var(--wine)}.mini-keys rect.b.is-mark{fill:var(--wine)}.mini-keys text{fill:var(--wine);font-family:var(--font-ui);font-size:11px;font-weight:500}.welcome-keys{margin-top:20px}.welcome-keys .keyboard{height:clamp(96px,18vh,130px)}.player-added{justify-items:start;gap:8px;margin-top:12px;display:grid}.player-added .note{margin:0}@media (width<=480px){.answer{min-height:68px;padding:12px 14px}.answers.is-grid .answer{min-height:88px}}.home-foot{margin-top:28px}.contents{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);margin:0;padding:4px 16px;list-style:none}.contents>li+li{border-top:1px solid var(--line)}.entry{color:inherit;grid-template-columns:auto 1fr;column-gap:14px;padding:12px 0;text-decoration:none;display:grid}a.entry:hover .entry-title{text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong)}.entry-num{font-family:var(--font-display);font-weight:600;font-size:var(--t-lg);text-align:right;min-width:1.6em;color:var(--faint);line-height:1.4}.entry-num.is-current{color:var(--wine)}.entry-line{align-items:baseline;gap:8px;min-width:0;display:flex}.entry-title{white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.leader{flex:1;min-width:12px}.entry-status{font-size:var(--t-sm);color:var(--muted);white-space:nowrap}.entry-status.is-done{color:var(--wine);font-weight:500}.entry-desc{color:var(--muted);font-size:var(--t-sm);grid-column:2;margin-top:2px}.entry-bar{grid-column:2;margin-top:8px}.entry.no-num{grid-template-columns:1fr}.entry.no-num .entry-desc,.entry.no-num .entry-bar{grid-column:1}.book-title{font-family:var(--font-display);font-size:var(--t-lg);align-items:baseline;gap:10px;margin:28px 0 10px;font-weight:600;display:flex}.book-title small{font-family:var(--font-ui);font-size:var(--t-sm);color:var(--muted);font-weight:400}.next-up{margin:0 0 4px}.next-up strong{font-family:var(--font-display);font-size:var(--t-lg);font-weight:600;display:block}.check-link{margin:10px 0 0}.weak-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:14px 16px 16px}.weak-pattern{border-bottom:1px solid var(--line);margin-bottom:12px;padding-bottom:12px}.weak-pattern strong{font-weight:500;display:block}.weak-pattern small{color:var(--muted);font-size:var(--t-sm);display:block}.weak-card .btn{margin-top:14px}.btn{border-radius:var(--r-btn);border:1px solid var(--ink);background:var(--ink);color:#fff;cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 20px;font-weight:500;text-decoration:none;display:inline-flex}.btn:hover{background:var(--ink-hover)}.btn svg{width:18px;height:18px}.btn.secondary{background:var(--card);border-color:var(--line-strong);color:var(--ink)}.btn.secondary:hover{background:var(--icon-bg)}.btn.quiet{color:var(--muted);background:0 0;border-color:#0000;padding:0 8px}.btn.quiet:hover{color:var(--ink)}.btn[aria-disabled=true],.btn:disabled{opacity:.45;cursor:default}.btn-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.play-to-continue{flex-direction:column;align-items:center;gap:4px;display:inline-flex}.play-to-continue small{color:var(--muted);font-size:var(--t-xs)}.btn-row:has(>.play-to-continue){align-items:flex-start}.segmented{background:var(--line);border-radius:var(--r-btn);gap:2px;padding:3px;display:inline-flex}.segmented button{cursor:pointer;min-height:36px;color:var(--muted);background:0 0;border:0;border-radius:8px;padding:0 14px;font-weight:500}.segmented button[aria-pressed=true]{background:var(--card);color:var(--ink);box-shadow:0 1px 2px #1c1c1e14}.segmented button{align-items:center;gap:6px;display:inline-flex}.rec-tag{background:var(--wine-soft);color:var(--wine);font-size:var(--t-xs);white-space:nowrap;border-radius:999px;padding:1px 7px;font-weight:500;line-height:1.5;display:inline-block}.field small.rec-reason{color:var(--ink)}.chip{border:1px solid var(--line);background:var(--card);min-height:34px;font-size:var(--t-sm);white-space:nowrap;text-overflow:ellipsis;max-width:260px;color:var(--muted);border-radius:999px;align-items:center;gap:8px;padding:0 12px;display:inline-flex;overflow:hidden}button.chip,a.chip{cursor:pointer;color:var(--ink);border-color:var(--line-strong);font-weight:500;text-decoration:none}button.chip:hover,a.chip:hover{background:var(--icon-bg)}.chip .dot{background:var(--faint);border-radius:50%;flex:none;width:8px;height:8px}.chip.is-live{color:var(--ink)}.chip.is-live .dot{background:var(--wine)}.field{gap:6px;margin:16px 0;display:grid}.field>span{font-weight:500}.field small{color:var(--muted)}.field select,.field input[type=number],.check select,.preset-name{border:1px solid var(--line-strong);border-radius:var(--r-btn);background:var(--card);min-height:42px;padding:0 10px}.field select{max-width:340px}.preset-name{width:12em;min-height:44px}.field input[type=range]{accent-color:var(--wine);max-width:340px}.check{cursor:pointer;align-items:center;gap:10px;min-height:44px;display:flex}.check input{width:20px;height:20px;accent-color:var(--ink)}.field-row{flex-wrap:wrap;align-items:center;gap:8px 18px;display:flex}.pencil-bar{background:var(--track);border-radius:5px;max-width:360px;height:5px;position:relative;overflow:hidden}.pencil-bar>i{background:var(--ink);border-radius:5px;position:absolute;inset:0 auto 0 0}.pencil-bar>.pencil-mark{background:var(--muted);width:2px;margin-left:-1px;position:absolute;top:0;bottom:0}.callout{background:var(--wine-wash);border-radius:var(--r-card);margin:12px 0;padding:12px 14px}.callout.good{background:var(--wine-wash)}.suggestion{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;padding:12px 0;display:flex}.suggestion+.suggestion{border-top:1px solid var(--line)}.suggestion p{margin:0}.practice{background:var(--card);flex-direction:column;height:100%;min-height:0;display:flex}.practice.scrolls{overflow-y:auto}.strip{padding:6px 12px;padding-top:max(6px, env(safe-area-inset-top));background:var(--card);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:10px;min-height:52px;display:flex;position:relative}.session-meter{background:var(--line);height:3px;position:absolute;bottom:-1px;left:0;right:0}.session-meter>i{background:var(--wine);transition:width .4s ease-out;position:absolute;inset:0 auto 0 0}.strip-title{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-weight:500;overflow:hidden}.strip-title small{color:var(--muted);margin-left:8px;font-weight:400}.stage{flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:0;padding:8px 16px;display:flex;position:relative}.feedback{text-align:center;min-height:2.6em;font-size:var(--t-xl);font-weight:500}.feedback .time{font-family:var(--font-display);font-weight:600;font-size:var(--t-3xl);color:var(--wine)}.feedback .wrong{color:var(--wrong)}.feedback .meet-name{font-family:var(--font-display);font-weight:600;font-size:var(--t-3xl);color:var(--ink)}.feedback .hint{color:var(--ink)}.feedback .listen{border:1px solid var(--line-strong);background:var(--card);min-height:36px;color:var(--ink);font-size:var(--t-sm);padding:0 14px}.feedback .listen:hover{border-color:var(--ink)}.feedback .listen.is-on,.tune-btn.is-on{border-color:var(--wine);color:var(--wine)}button.link{color:var(--ink);font:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:0}button.link:hover{text-decoration-color:currentColor}.feedback small{font-size:var(--t-sm);color:var(--muted);font-weight:400;display:block}.ticks{flex-wrap:wrap;justify-content:center;gap:5px;max-width:560px;padding:6px 0;display:flex}.ticks i{background:var(--track);border-radius:50%;width:9px;height:9px}.ticks i.ok{background:var(--ink)}.ticks i.slow{background:var(--faint)}.ticks i.miss{background:var(--wrong)}.lesson-text{text-align:center;max-width:560px;margin:0 auto 12px}.lesson-text h2{margin:0 0 6px}.lesson-text p{color:var(--muted);margin:0 0 6px}.lesson-text p:last-child{color:var(--ink)}.lesson-beats{padding:16px 16px 0}.lesson-beats-result{margin:0 auto 24px}.ear-actions{flex-direction:column;align-items:center;gap:6px;min-height:72px;margin-top:8px;display:flex}.tempo-control{background:var(--line);border-radius:var(--r-btn);align-items:center;padding:3px;display:inline-flex}.tempo-control button{background:var(--card);min-width:34px;min-height:34px;font-size:var(--t-lg);cursor:pointer;border:0;border-radius:8px}.tempo-control span{text-align:center;min-width:2.6em;font-weight:500}.strip .segmented button{min-height:34px;padding:0 10px}.strip-toggle{border:1px solid var(--line);border-radius:var(--r-btn);background:var(--card);min-height:34px;color:var(--muted);font:inherit;font-size:var(--t-sm);white-space:nowrap;cursor:pointer;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.strip-toggle.is-on{color:var(--ink);border-color:var(--line-strong)}@media (width<=520px){.strip-toggle span{display:none}}.card-notation{width:min(100%,560px);height:clamp(170px,44vh,400px)}.card-notation.is-grand{height:clamp(220px,52vh,480px)}.card-notation svg,.score svg{fill:var(--ink);stroke:var(--ink);display:block;overflow:visible}.vf-stavenote{transition:fill .15s,stroke .15s}.card-notation .vf-stavenote.is-ok{fill:var(--wine);stroke:var(--wine)}.score .vf-stavenote.is-ok{fill:var(--faint);stroke:var(--faint)}.vf-stavenote.is-bad{fill:var(--wrong);stroke:var(--wrong)}.vf-notehead.is-got{fill:var(--done);stroke:var(--done)}.vf-notehead.is-bad{fill:var(--wrong);stroke:var(--wrong)}.vf-notehead.is-off{fill:var(--muted);stroke:var(--muted)}.vf-stavenote{--chord-ink:var(--ink)}.score .vf-stavenote.is-ok{--chord-ink:var(--faint)}.vf-notehead.is-got .vf-annotation,.vf-notehead.is-bad .vf-annotation,.vf-notehead.is-off .vf-annotation{fill:var(--chord-ink);stroke:var(--chord-ink)}.ring{fill:none;stroke:var(--muted);stroke-width:1.3px;stroke-dasharray:2.5 2;pointer-events:none}@media (prefers-reduced-motion:no-preference){.ring{transform-box:fill-box;transform-origin:50%;animation:1.6s ease-in-out infinite ring-pulse}}@keyframes ring-pulse{50%{opacity:.3;transform:scale(1.2)}}.chord-count rect{fill:var(--card);stroke:var(--line-strong);stroke-width:1px}.chord-count text{fill:var(--ink);stroke:none;font-family:var(--font-ui);font-variant-numeric:tabular-nums;font-size:10.5px;font-weight:600}.ghost .ghost-head{fill:none;stroke:var(--wrong);stroke-width:1.8px;stroke-dasharray:3 2}.ghost .ghost-ledger{stroke:var(--wrong);stroke-width:1.2px}.ghost .ghost-accidental{fill:var(--wrong);stroke:none;font-family:Segoe UI Symbol,Apple Symbols,serif;font-size:18px}.ghost{animation:.15s ease-out ghost-in}@keyframes ghost-in{0%{opacity:0}}.cursor{fill:var(--wine-soft);stroke:none}.count-in text{fill:var(--faint);stroke:none;font-family:var(--font-ui);font-size:13px;transition:fill .12s}.count-in text.is-on{fill:var(--wine);font-weight:600}.note-name{fill:var(--muted);stroke:none;font-family:var(--font-ui);letter-spacing:.02em;font-size:11px;font-weight:500;transition:fill .15s}.note-name .is-fading{fill:var(--faint)}.note-name.is-played,.note-name.is-played .is-fading{fill:var(--line-strong)}.count-in-bar path{fill:none;stroke:var(--ink);stroke-width:1px}.count-in-bar rect{fill:var(--ink);stroke:none}.cover{fill:var(--paper);stroke:none}.score{flex:1 1 0;width:100%;min-height:130px;max-height:440px;position:relative;overflow:hidden}.score.is-review{cursor:grab;overflow-x:auto}.score.is-browse{overscroll-behavior-x:contain;scrollbar-width:none;cursor:grab;overflow:auto hidden}.score.is-browse::-webkit-scrollbar{display:none}.score.is-browse.is-dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.score.more-left{--fade-left:40px}.score.more-right{--fade-right:64px}.score.more-left,.score.more-right{-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--fade-left,0px), #000 calc(100% - var(--fade-right,0px)), transparent);-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--fade-left,0px), #000 calc(100% - var(--fade-right,0px)), transparent);mask-image:linear-gradient(to right, transparent, #000 var(--fade-left,0px), #000 calc(100% - var(--fade-right,0px)), transparent)}.score-strip{will-change:transform;position:absolute;top:0;left:0}.score-strip svg{display:block}.sight-stage{flex:1 1 0;justify-content:flex-start;min-height:200px;padding-top:12px}.tempo-start{text-align:center;flex:none;justify-items:center;gap:8px;max-width:640px;padding:10px 0 4px;display:grid}.tempo-start .btn{min-height:48px;font-size:var(--t-lg);padding:0 28px}.tempo-start .sound-off{font-size:var(--t-sm);font-weight:500}.tempo-start .skip-piece .btn{min-height:0;font-size:var(--t-sm);padding:6px 12px}.look-for{font-size:var(--t-sm);color:var(--ink);margin:0}.look-for span{color:var(--muted)}@media (height<=480px) and (orientation:landscape){.tempo-start{flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 12px;padding-top:4px;display:flex}.tempo-start .look-for{flex-basis:100%}.tempo-start .sound-off{order:1}.tempo-start .btn{min-height:40px;font-size:var(--t-md);padding:0 20px}.tempo-start .count-note{display:none}}.start-overlay{text-align:center;background:#fffc;place-content:center;justify-items:center;gap:10px;padding:0 16px;display:grid;position:absolute;inset:0}.start-overlay .btn{min-height:52px;font-size:var(--t-lg);padding:0 28px}.start-overlay .sound-off{font-size:var(--t-sm);font-weight:500}.rotate-hint{margin:0;display:none}.skip-piece{flex-wrap:wrap;justify-content:center;align-items:center;gap:2px 10px;margin:0;display:flex}.start-overlay .skip-piece .btn{min-height:0;font-size:var(--t-sm);padding:6px 12px}.test-line{text-align:center;margin:8px 16px 0}.test-tag{border:1px solid var(--line-strong);font-size:var(--t-xs);white-space:nowrap;border-radius:999px;padding:2px 10px;font-weight:500}@media (orientation:portrait) and (width<=640px){.rotate-hint{display:block}}.key-strip{flex:none;justify-content:center;padding:6px 0 2px;display:flex}.key-strip svg{width:100%;height:auto;display:block}.strip-key.white{fill:var(--card);stroke:var(--line-strong);stroke-width:1px}.strip-key.black{fill:var(--ink);stroke:none}.strip-key.is-got{fill:var(--done);stroke:var(--done)}.strip-key.is-wrong{fill:var(--wrong);stroke:var(--wrong)}.strip-find{fill:none;stroke:var(--ink);stroke-width:1.3px;stroke-dasharray:2.5 2}.strip-find.on-black{stroke:var(--card)}.strip-find.is-fading{stroke:var(--faint)}.strip-find.on-black.is-fading{stroke:var(--muted)}.strip-label{fill:var(--muted);font-family:var(--font-ui);text-anchor:middle;font-size:7.5px}.strip-gap{fill:var(--muted)}.keyboard-wrap{padding:8px 8px max(8px, env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--line);flex:none}.keyboard{touch-action:none;-webkit-user-select:none;user-select:none;max-width:1100px;height:clamp(96px,22vh,150px);margin:0 auto;display:flex;position:relative}.key{cursor:pointer;border:0;margin:0;padding:0;position:relative}.key.white{background:var(--card);border:1px solid var(--line-strong);color:var(--muted);border-radius:0 0 6px 6px;flex:1;justify-content:center;align-items:flex-end;padding-bottom:6px;font-size:11px;display:flex}.key.black{background:var(--ink);z-index:1;border-radius:0 0 5px 5px;height:60%;position:absolute;top:0}.key.white.is-down{background:#f1e3e8}.key.black.is-down{background:#5a2a3a}.key.is-hint:after{content:"";background:var(--wine);border-radius:50%;width:12px;height:12px;margin-left:-6px;position:absolute;bottom:22px;left:50%}.key.black.is-hint:after{background:#fff;bottom:10px}.note-map{width:100%;height:auto;margin:8px 0 4px;display:block}.legend{font-size:var(--t-sm);color:var(--muted);flex-wrap:wrap;gap:6px 18px;display:flex}.legend i{vertical-align:-1px;border:1px solid var(--line-strong);border-radius:3px;width:12px;height:12px;margin-right:6px;display:inline-block}.results{grid-template-columns:auto 1fr;align-items:center;gap:18px 28px;width:100%;max-width:640px;margin:0 auto;display:grid}.sight-results{flex:none;padding:16px 16px 28px}.mark{text-align:center;place-items:center;width:136px;height:136px;display:grid;position:relative}.mark svg{width:100%;height:100%;position:absolute;inset:0}.mark .mark-arc{stroke-dasharray:var(--len) var(--full);stroke-dashoffset:var(--len);animation:.8s ease-out .1s forwards draw-arc}.mark strong{font-family:var(--font-display);font-size:var(--t-4xl);font-weight:600;line-height:1}.mark.is-long strong{font-size:var(--t-3xl)}.mark small{font-size:var(--t-xs);color:var(--muted);margin-top:4px;display:block}@keyframes draw-arc{to{stroke-dashoffset:0}}.results dl{grid-template-columns:auto auto;justify-content:start;gap:4px 16px;margin:0;display:grid}.results dt{color:var(--muted)}.results dd{margin:0;font-weight:500}.results .full{grid-column:1/-1}.trouble{flex-wrap:wrap;gap:6px;margin:6px 0 0;padding:0;list-style:none;display:flex}.trouble li{background:var(--icon-bg);border-radius:var(--r-small);font-weight:500;font-size:var(--t-sm);padding:3px 9px}.trouble li.more{color:var(--muted);background:0 0;font-weight:400}.tripped h3{margin:4px 0 6px}.tripped .btn{margin-top:12px}.pattern-line{margin:0 0 8px}.pattern-line .note{display:block}.clef-offer{flex-wrap:wrap;align-items:center;gap:6px 12px;margin:0 0 10px;display:flex}.tripped .clef-offer .btn,.weak-card.clef-card .btn{margin-top:0}.clef-card p{margin:0 0 4px}.clef-card .clef-offer{margin:12px 0 0}.clef-round h3{margin:4px 0 6px}.clef-round p{margin:0 0 4px}.rec-line,.check-pass{margin-top:2px}.check-tries{color:var(--muted);font-size:var(--t-sm);grid-column:1/-1;margin:6px 0 0;padding:0;list-style:none}.check-tries li.is-stop{color:var(--ink);font-weight:500}.practice-clock{background:var(--paper);border-radius:var(--r-btn);justify-self:stretch;padding:10px 14px 12px}.practice-clock-time{flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;display:flex}.practice-clock-time svg{width:20px;height:20px;color:var(--wine);flex:none;align-self:center}.practice-clock-time strong{font-family:var(--font-display);font-size:var(--t-2xl);font-variant-numeric:tabular-nums;font-weight:600;line-height:1}.practice-clock-time span{color:var(--muted);font-size:var(--t-sm)}.practice-clock-bar{gap:3px;height:8px;margin:10px 0 8px;display:flex}.practice-clock-bar i{background:var(--track);border-radius:4px;flex-basis:0;position:relative;overflow:hidden}.practice-clock-bar b{background:var(--muted);position:absolute;inset:0 auto 0 0}.practice-clock-bar .is-done b{background:var(--faint)}.practice-clock .note{margin:0}.split-editor{gap:8px;max-width:340px;display:grid}.split-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.split-rest{color:var(--muted);font-size:var(--t-sm);text-align:right}.split-row .tempo-control span{min-width:4.5em}.grade-head{margin:16px 0}.grade-line{margin:4px 0 10px}.stats{grid-template-columns:auto auto;justify-content:start;gap:4px 20px;margin:0 0 8px;display:grid}.stats dt{color:var(--muted)}.stats dd{margin:0;font-weight:500}.practice-summary{margin:16px 0 20px}.mastery-line{flex-wrap:wrap;align-items:center;gap:8px 14px;margin:6px 0;display:flex}.mastery-line .pencil-bar{flex:1;min-width:140px}.stars{color:var(--wine);vertical-align:-3px;gap:2px;display:inline-flex}.stars svg{width:18px;height:18px}.gallery-item h3 small{font-family:var(--font-ui);font-weight:400}.gallery-score{border-bottom:1px solid var(--line);flex:none;height:auto;min-height:0;max-height:none}.h-icon{vertical-align:-3px;width:20px;height:20px;color:var(--muted);margin-right:6px}.song-score .cursor{fill:var(--wine-wash)}.scan-progress,.scan-confirm{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:14px 16px}.scan-progress p,.scan-confirm p{margin:0 0 8px}.scan-progress .pencil-bar{max-width:none;margin:4px 0 10px}.token-input{width:min(22em,100%)}.code-input{letter-spacing:.12em;font-variant-numeric:tabular-nums;width:7em}.suggest-line{margin:8px 0 12px}.mistake-list{font-size:var(--t-sm);margin:4px 0 0;padding-left:18px}.mistake-list li+li{margin-top:2px}.run-stage{flex:none;justify-content:flex-start}.comparison-score{flex:none;height:min(56vh,460px);max-height:none;overflow:auto hidden}@media (width<=600px){.comparison-score{height:min(42vh,340px)}}.run-hear{margin-top:10px}.comparison-score .feedback{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.run-notes{align-items:start}.run-go+.run-go{margin-top:18px}.run-go h3{margin:0 0 2px}.bar-map{flex-wrap:wrap;gap:3px;margin-top:6px;display:flex}.bar-map i{background:var(--track);border-radius:3px;width:14px;height:14px}.bar-map i.is-one{background:var(--wine-soft)}.bar-map i.is-more{background:var(--wrong)}.bar-map i.is-unreached{box-shadow:inset 0 0 0 1px var(--line-strong);background:0 0}.song-results .results-lede{font-size:var(--t-lg);margin:0 0 12px;line-height:1.5}.results-label{font-family:var(--font-ui);font-size:var(--t-sm);color:var(--muted);margin:0 0 8px;font-weight:500}.results-label-row{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;display:flex}.song-results>.full{text-align:left}.notes-bar-track{border-radius:var(--r-small);gap:2px;height:16px;display:flex;overflow:hidden}.notes-bar-track span{min-width:3px}.notes-bar-legend{font-size:var(--t-sm);grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:4px 24px;margin:12px 0 8px;padding:0;list-style:none;display:grid}.notes-bar-legend li{align-items:center;gap:10px;display:flex}.notes-bar-legend span{flex:1}.notes-bar-legend b{font-weight:500}.notes-bar-legend i{box-sizing:border-box;border-radius:3px;flex:none;width:12px;height:12px}.fate-right{background:var(--ink)}.fate-offBeat{background:var(--wine)}.fate-thinned{background:var(--wine-mid)}.fate-quiet{background:var(--card);box-shadow:inset 0 0 0 1px var(--wrong)}.notes-bar-legend .fate-quiet{box-shadow:none;border:1px dashed var(--wrong)}.fate-wrongKey{background:var(--wrong)}.fate-lost{background:var(--faint)}.fate-stopped{background:var(--track);box-shadow:inset 0 0 0 1px var(--line-strong)}.fate-notPlayed{background:var(--wrong-soft)}.habits h3,.next-steps h3{font-family:var(--font-display);font-size:var(--t-2xl);margin:0;font-weight:600}.habits>.note{margin:2px 0 14px}.habit-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);flex-direction:column;gap:14px;padding:18px 20px;display:flex}.habit-card+.habit-card{margin-top:12px}.habit-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;display:flex}.habit-head h4{font-family:var(--font-display);font-size:var(--t-xl);margin:0;font-weight:600}.habit-share{background:var(--track);border-radius:2px;height:4px;margin-top:8px}.habit-share i{background:var(--wine);border-radius:2px;height:100%;display:block}.habit-body{flex-wrap:wrap;align-items:center;gap:14px 24px;display:flex}.habit-body p{flex:260px;margin:0;font-size:.9375rem;line-height:1.6}.habit-figure{flex:0 300px;min-width:0;margin:0}.habit-figure figcaption{font-size:var(--t-xs);color:var(--muted);text-align:center}.habit-cards{justify-content:center;gap:8px;display:flex}.habit-cards figure{margin:0}figure.habit-cards{flex-direction:column;align-items:center;gap:0}.card-picture svg{width:auto;height:118px;display:block}.timing-dots svg{width:100%;height:auto;display:block;overflow:visible}.timing-dots text{fill:var(--muted);font-size:11px}.timing-dots .timing-count{fill:var(--wine)}.timing-axis{stroke:var(--line-strong)}.timing-dots circle{fill:var(--faint)}.timing-dots circle.is-out{fill:var(--wine)}.habit-card footer{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 16px;padding-top:14px;display:flex}.habit-card footer .note{flex:100%}.habit-card footer .trouble{margin:0}.also-list{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);margin:0;padding:0;list-style:none}.also-list li{flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding:11px 18px;display:flex}.also-list li+li{border-top:1px solid var(--line)}.also-list span{flex:260px}.also-list a{font-size:var(--t-sm);color:var(--wine);font-weight:500}.also-slip{background:var(--wrong);border-radius:50%;flex:none;width:8px;height:8px;transform:translateY(-1px)}.also-good{width:15px;height:15px;color:var(--wine);flex:none;transform:translateY(2px)}.hand-map{flex-direction:column;gap:3px;display:flex}.hand-map-row{grid-template-columns:40px minmax(0,1fr);align-items:center;gap:8px;display:grid}.hand-map.is-one-hand .hand-map-row{grid-template-columns:minmax(0,1fr)}.hand-map.is-one-hand .hand-map-row>span{display:none}.hand-map.is-compact .hand-map-row{grid-template-columns:32px minmax(0,1fr)}.hand-map-row>.note{font-size:var(--t-xs)}.hand-map-cells{gap:2px;display:grid}.hand-map.is-compact .hand-map-cells{gap:4px}.hand-map-cells button{background:var(--track);cursor:pointer;border:0;border-radius:3px;height:14px;padding:0}.hand-map-cells button:hover{outline:1px solid var(--ink)}.hand-map-cells .is-some,.hand-map-legend .is-some{background:var(--wine-soft)}.hand-map-cells .is-many,.hand-map-legend .is-many{background:var(--wrong)}.hand-map-cells .is-quiet,.hand-map-legend .is-quiet{border:1px dashed var(--wrong);background:0 0}.hand-map-cells .is-none{background:0 0}.hand-map-labels,.hand-map-marks{color:var(--muted);font-size:11px;line-height:1.3}.hand-map-labels span,.hand-map-marks span{white-space:nowrap;overflow:visible}.hand-map.is-compact .hand-map-labels span{text-align:center}.hand-map-marks{color:var(--wrong)}.hand-map-legend{font-size:var(--t-xs);color:var(--muted);flex-wrap:wrap;gap:4px 16px;margin:8px 0 0;padding:0;list-style:none;display:flex}.hand-map-legend li{align-items:center;gap:6px;display:flex}.hand-map-legend i{background:var(--track);box-sizing:border-box;border-radius:3px;width:12px;height:12px}.next-steps{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:20px 22px}.next-steps h3{margin-bottom:4px}.step-list{margin:0 0 16px;padding:0;list-style:none}.step-list li{align-items:center;gap:14px;padding:11px 0;display:flex}.step-list li+li{border-top:1px solid var(--line)}.step-list a{font-weight:500;text-decoration:none}.step-list a:hover{text-decoration:underline}.step-list small{font-size:var(--t-sm);color:var(--muted);display:block}.step-number{border:1px solid var(--line-strong);width:28px;height:28px;font-size:var(--t-sm);color:var(--muted);border-radius:50%;flex:none;place-items:center;font-weight:600;display:grid}.step-list li:first-child .step-number{background:var(--wine-soft);color:var(--wine);border-color:#0000}.every-note{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:12px 18px}.every-note summary{cursor:pointer;font-weight:500}.every-note dl{font-size:var(--t-sm);grid-template-columns:auto minmax(0,1fr);gap:6px 16px;margin:12px 0 0;display:grid}.every-note dt{color:var(--muted);white-space:nowrap}.every-note dd{margin:0}.finish-row{text-align:center;margin:4px 0 0}@media (width<=640px){.book{padding:8px 14px 40px}h1{font-size:var(--t-2xl)}.results{text-align:center;grid-template-columns:1fr;justify-items:center}.results dl,.results .trouble,.results .btn-row,.results .bar-map{justify-content:center}.results .mistake-list{text-align:left}.practice-clock-time{justify-content:center}.strip-title small{display:none}.strip{gap:6px;padding-left:6px;padding-right:6px}.strip .chip{max-width:40px;padding:0 12px}}@media (height<=480px) and (orientation:landscape){.strip{min-height:44px;padding-top:4px;padding-bottom:4px}.card-notation{height:52vh}.card-notation.is-grand{height:62vh}.feedback{font-size:var(--t-lg)}.feedback .time{font-size:var(--t-2xl)}.keyboard{height:24vh}}.listen-tabs{margin:12px 0 8px}.field>.segmented{justify-self:start}.key-chips{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.key-chips button{border:1px solid var(--line-strong);border-radius:var(--r-btn);background:var(--card);min-width:48px;min-height:38px;color:var(--ink);cursor:pointer;padding:0 10px;font-weight:500}.key-chips button[aria-pressed=true]{border-color:var(--wine);background:var(--wine-wash);color:var(--wine)}.listen-stage{text-align:center;flex-direction:column;align-items:center;gap:12px;width:100%;max-width:560px;margin:0 auto;padding:40px 16px 24px;display:flex}.listen-stage .btn-row{justify-content:center}.listen-stage p{margin:0}.listen-ear{background:var(--icon-bg);width:64px;height:64px;color:var(--muted);border-radius:50%;place-items:center;display:grid}.listen-ear.is-on{color:var(--wine);background:var(--wine-wash);animation:2.4s ease-in-out infinite listen-breathe}@keyframes listen-breathe{50%{box-shadow:0 0 0 10px var(--wine-wash)}}.listen-status{color:var(--muted);font-size:var(--t-lg);line-height:1.5}.listen-facts,.listen-summary{grid-template-columns:auto auto;gap:4px 16px;margin:0;display:grid}.listen-facts{justify-content:center}.listen-facts dt,.listen-summary dt{color:var(--muted);text-align:left}.listen-facts dd,.listen-summary dd{text-align:left;font-variant-numeric:tabular-nums;margin:0;font-weight:500}.listen-report{width:100%;max-width:640px;margin:0 auto;padding:24px 16px 40px}.listen-report .lede{margin:4px 0 16px}.listen-summary{justify-content:start}.listen-top{margin:0;padding-left:1.4em}.listen-top li{padding:4px 0;line-height:1.5}.listen-top li::marker{color:var(--wine);font-weight:600}.listen-section{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);margin-top:12px;padding:16px 18px}.listen-section header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;display:flex}.listen-section h3{margin:0}.listen-section header small{color:var(--muted)}.listen-section ul{margin:10px 0 0;padding-left:1.2em}.listen-section li{padding:3px 0;line-height:1.5}.listen-report>.btn-row{margin-top:28px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-delay:0s!important}}.timing-strip{grid-template-columns:1fr auto;align-items:stretch;gap:10px;margin:0 0 12px;display:grid}.timing-strip svg{width:100%;height:64px}.timing-strip figcaption{color:var(--faint);flex-direction:column;justify-content:space-between;font-size:12px;display:flex}.timing-band{fill:var(--paper)}.timing-click{stroke:var(--line-strong);stroke-width:1px}.timing-note{fill:var(--ink)}.timing-note.is-off{fill:var(--wrong)}
