@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Space+Grotesk:wght@500;600;700&family=Sora:wght@400;500;600;700&display=swap";.shell{box-sizing:border-box;gap:1.45rem;width:min(1080px,100%);min-width:0;max-width:100%;min-height:calc(100vh - 3rem);margin:0 auto;padding-bottom:1.25rem;display:grid}.shell__top{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#080c10b8;border:1px solid #00ffc81a;border-radius:18px;flex-wrap:wrap;align-items:center;gap:.65rem 1rem;min-width:0;max-width:100%;padding:.55rem .85rem;display:flex}.shell__brand{background:linear-gradient(105deg,#eafff6,#5cff9d 55%,#00e6b8);color:#0000;font-family:var(--font-display);letter-spacing:-.04em;cursor:pointer;-webkit-background-clip:text;background-clip:text;border:0;padding:0;font-size:1.4rem;font-weight:700}.shell__nav{flex-wrap:wrap;flex:1;gap:.2rem;min-width:0;display:flex}.shell__nav button{color:#9eb0a8;cursor:pointer;background:0 0;border:0;border-radius:999px;padding:.5rem .85rem;font-size:.86rem;transition:background .15s,color .15s}.shell__nav button:hover{color:var(--ink);background:#ffffff0a}.shell__nav button.is-active{color:#04110c;background:linear-gradient(135deg,#5cff9d,#00e6b8);font-weight:650}.shell__more{position:relative}.shell__more-panel{z-index:20;background:#060a0cf5;border:1px solid #00ffc82e;border-radius:14px;gap:.15rem;min-width:10rem;padding:.45rem;display:grid;position:absolute;top:calc(100% + .35rem);right:0;box-shadow:0 16px 40px #0006}.shell__more-panel button{text-align:left;width:100%;border-radius:10px!important}.shell__auth{flex-shrink:0;align-items:center;gap:.55rem;min-width:0;display:flex}.shell__user-name{color:#b7c7bf;text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:10rem;font-size:.8rem;overflow:hidden}.shell__badge{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);border:1px solid #00e6b859;border-radius:999px;flex-shrink:0;padding:.15rem .45rem;font-size:.62rem;line-height:1.2}.shell__logout{flex-shrink:0}.shell__muted{color:#8a9b93;font-size:.85rem}.shell__instruments{grid-template-columns:minmax(7.5rem,auto) repeat(3,minmax(0,1fr));align-items:center;gap:.55rem .65rem;min-width:0;max-width:100%;display:grid}.shell__instruments-label{gap:.2rem;padding-right:.35rem;display:grid}.shell__instruments-label>span{letter-spacing:.08em;text-transform:uppercase;color:#7f9088;font-size:.72rem}.shell__instruments-label small{color:#6d7f78;letter-spacing:0;text-transform:none;max-width:11rem;font-size:.72rem;line-height:1.3}.shell__instruments button{color:#a8b8b0;cursor:pointer;font-size:.92rem;font-family:var(--font-display);letter-spacing:-.02em;text-align:left;background:linear-gradient(#ffffff08,#0000),#0a0e12cc;border:1px solid #ffffff14;border-radius:14px;gap:.15rem;min-width:0;padding:.75rem .9rem;transition:border-color .15s,transform .15s,background .15s;display:grid;overflow:hidden}.shell__instruments button small{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:#6f8279;font-size:.65rem}.shell__instruments button:hover{color:var(--ink);transform:translateY(-1px)}.shell__instruments button.is-active{color:var(--ink);background:linear-gradient(135deg,#00e6b829,#5cff9d0d),#0a100ee6;border-color:#00e6b880;box-shadow:0 0 0 1px #00e6b81f,0 10px 30px #00000040}.shell__instruments button.is-active small{color:var(--accent)}.shell__main{flex:1;min-width:0;max-width:100%}.shell__foot{color:#7f9088;flex-wrap:wrap;justify-content:space-between;gap:.75rem;font-size:.75rem;display:flex}.btn--sm{padding:.45rem .85rem;font-size:.8rem}.lesson-bar{align-items:center;gap:.75rem;width:100%;padding:.35rem 0;display:flex}.lesson-bar__meta{gap:.1rem;display:grid}.lesson-bar__meta strong{font-family:var(--font-display)}.lesson-bar__meta span{color:#8a9b93;text-transform:uppercase;letter-spacing:.08em;text-transform:none;letter-spacing:0;align-items:center;gap:.35rem;font-size:.72rem;display:inline-flex}.shell--focus .shell__top{justify-content:space-between}@media (width<=960px){.shell__instruments{grid-template-columns:repeat(3,minmax(0,1fr))}.shell__instruments-label{grid-column:1/-1}}@media (width<=720px){.shell__top{gap:.45rem;padding:.55rem .65rem}.shell__nav{overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;order:3;gap:.15rem;width:100%;min-width:0;padding-bottom:.1rem;overflow-x:auto}.shell__nav::-webkit-scrollbar{display:none}.shell__nav button{white-space:nowrap;flex:none;padding:.4rem .6rem;font-size:.78rem}.shell__instruments button{text-align:center;padding:.55rem .45rem;font-size:.82rem}.shell__instruments button small{display:none}.shell__user-name{max-width:6.5rem}.shell--focus .shell__nav{display:none}}@media (width<=400px){.shell__brand{font-size:1.15rem}.shell__user-name{display:none}.shell__instruments button{padding:.55rem .35rem;font-size:.78rem}.shell__auth .btn--sm{padding:.4rem .65rem}}.hud{gap:.65rem;width:min(920px,100%);min-width:0;max-width:100%;animation:.55s cubic-bezier(.22,1,.36,1) both hud-in;display:grid}.hud__row{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:linear-gradient(135deg,#00ffc814,#0000 40%),#080c12b8;border:1px solid #00ffc824;border-radius:16px;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:.65rem;min-width:0;padding:.7rem .85rem;display:grid}.hud__label{letter-spacing:.14em;color:var(--dim);font-size:.62rem;display:block}.hud__level,.hud__stat{min-width:3.4rem}.hud__level strong,.hud__stat strong{font-family:var(--font-display);letter-spacing:-.03em;font-size:1.25rem;font-weight:700}.hud__stat--combo.is-hot strong{color:var(--accent);text-shadow:0 0 18px #00ffc859;animation:.45s combo-pulse}.hud__xp{gap:.28rem;display:grid}.hud__xp-meta{color:var(--dim);justify-content:space-between;font-size:.72rem;display:flex}.hud__xp-flash{color:var(--accent);margin-left:.4rem;font-style:normal;animation:.7s both xp-pop}.hud__xp-bar{background:#ffffff0f;border-radius:999px;height:7px;overflow:hidden}.hud__xp-bar i{border-radius:inherit;background:linear-gradient(90deg,#00e6b8,#5cff9d);height:100%;transition:width .35s cubic-bezier(.22,1,.36,1);display:block;box-shadow:0 0 12px #00e6b873}.hud__badges{flex-wrap:wrap;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.hud__badges li{letter-spacing:.02em;color:#b7ffe8;background:#00ffc80f;border:1px solid #00ffc833;border-radius:999px;padding:.28rem .55rem;font-size:.68rem}.hud__empty{color:var(--dim);margin:0;font-size:.75rem}.hud__toast{z-index:40;background:#060a10f0;border:1px solid #00ffc859;border-radius:14px;width:min(280px,100vw - 2rem);padding:.9rem 1rem;animation:.4s cubic-bezier(.22,1,.36,1) toast-in;position:fixed;bottom:1rem;right:1rem;box-shadow:0 18px 50px #00000073}.hud__toast span{letter-spacing:.16em;color:var(--accent);font-size:.62rem}.hud__toast strong{font-family:var(--font-display);margin-top:.2rem;font-size:1.15rem;display:block}.hud__toast p{color:var(--muted);margin:.25rem 0 0;font-size:.82rem}@keyframes hud-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes xp-pop{0%{opacity:0;transform:translateY(4px)}30%{opacity:1;transform:translateY(-2px)}to{opacity:0;transform:translateY(-10px)}}@keyframes combo-pulse{0%{transform:scale(1)}40%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes toast-in{0%{opacity:0;transform:translateY(16px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@media (width<=640px){.hud__row{grid-template-columns:auto 1fr}.hud__stat{display:none}.hud__stat--combo{grid-column:2;justify-self:end;display:block}}.fretboard{background:linear-gradient(#241910,#120d09 55%,#0c0907);border:1px solid #c9a06438;border-radius:18px;grid-template-rows:auto auto;grid-template-columns:2rem 1fr;gap:.35rem .45rem;width:100%;max-width:920px;padding:.9rem;display:grid;overflow-x:auto;box-shadow:inset 0 1px #ffdcaa14,0 18px 40px #00000073}.fretboard--bass{background:linear-gradient(#1a2228,#0c1014 55%,#080a0c);border-color:#78a0b447}.fretboard__nut{font-family:var(--font-mono);color:#d4b07a;align-content:start;gap:2px;font-size:.65rem;display:grid}.fretboard--guitar .fretboard__nut{grid-template-rows:repeat(6,30px)}.fretboard--bass .fretboard__nut{grid-template-rows:repeat(4,30px)}.fretboard__nut span{place-items:center;height:30px;display:grid}.fretboard__grid{background:repeating-linear-gradient(90deg,#ffdca014,#ffdca014 1px,#0000 1px 12.5%),linear-gradient(#ffc8780d,#0000);border-radius:8px;gap:2px;padding:2px;display:grid}.fretboard__cell{color:#04110c;width:22px;height:22px;font-family:var(--font-mono);cursor:default;background:0 0;border:0;border-radius:999px;margin:4px auto;font-size:.58rem}.fretboard.is-interactive .fretboard__cell:not(:disabled){cursor:pointer}.fretboard.is-interactive .fretboard__cell:not(:disabled):hover{background:#ffffff14}.fretboard__cell.is-lit{background:#5cff9d;box-shadow:0 0 14px #00e6b880}.fretboard__cell.is-pressed{background:#00e6b8;transform:scale(1.1)}.fretboard__frets{font-family:var(--font-mono);color:#8a7355;text-align:center;grid-column:2;grid-auto-columns:1fr;grid-auto-flow:column;font-size:.62rem;display:grid}@media (width<=720px){.fretboard{padding:.65rem;overflow-x:auto}.fretboard__cell{width:18px;height:18px;margin:3px auto;font-size:.5rem}.fretboard__nut{font-size:.58rem}.fretboard--guitar .fretboard__nut,.fretboard--bass .fretboard__nut{grid-template-rows:repeat(6,26px)}.fretboard--bass .fretboard__nut{grid-template-rows:repeat(4,26px)}}.piano{-webkit-user-select:none;user-select:none;filter:drop-shadow(0 18px 40px #00000073);width:100%;max-width:680px;height:188px;position:relative}.piano__whites{background:linear-gradient(#12161c,#0a0d11);border-radius:14px;grid-auto-columns:1fr;grid-auto-flow:column;gap:3px;height:100%;padding:3px;display:grid}.piano__blacks{pointer-events:none;position:absolute;inset:3px 3px 40%}.piano__key{cursor:default;font:inherit;border:0;margin:0;padding:0}.piano--interactive .piano__key:not(:disabled){cursor:pointer}.piano--interactive .piano__key:not(:disabled):hover{filter:brightness(1.06)}.piano__key--white{color:#2a332f;background:linear-gradient(#f4f7f5 0%,#d7ddd9 100%);border-radius:0 0 10px 10px;justify-content:center;align-items:flex-end;padding-bottom:.6rem;transition:transform 80ms,background .15s;display:flex;box-shadow:inset 0 -3px #141e191f}.piano__key--white span{font-family:var(--font-mono);letter-spacing:.02em;opacity:.55;font-size:.65rem}.piano__key--white.is-lit{background:linear-gradient(#d8fff0 0%,#5cff9d 100%);box-shadow:inset 0 -3px #00644626,0 0 18px #00e6b859}.piano__key--white.is-pressed{background:linear-gradient(#b8ffe0 0%,#00e6b8 100%);transform:translateY(3px)}.piano__key--black{pointer-events:auto;z-index:2;background:linear-gradient(#2c3338 0%,#101418 100%);border-radius:0 0 6px 6px;width:5.6%;height:100%;transition:transform 80ms,background .15s;position:absolute;top:0;transform:translate(-50%)}.piano__key--black.is-lit{background:linear-gradient(#00e6b8 0%,#0a6b55 100%);box-shadow:0 0 16px #00e6b873}.piano__key--black.is-pressed{background:linear-gradient(#5cff9d 0%,#0d5c45 100%);transform:translate(-50%)translateY(2px)}.hint{vertical-align:middle;align-items:center;gap:.35rem;display:inline-flex;position:relative}.hint__btn{width:1.25rem;height:1.25rem;color:var(--accent);cursor:help;background:#00e6b81a;border:1px solid #00e6b873;border-radius:999px;flex-shrink:0;place-items:center;margin:0;padding:0;font-size:.7rem;font-weight:700;line-height:0;display:inline-grid}.hint__btn:before{content:"?";transform:translateY(-.06em)}.hint__tip{color:#d7ebe2;text-align:left;opacity:0;pointer-events:none;z-index:40;background:#0a1210;border:1px solid #00e6b847;border-radius:10px;width:max(12rem,min(18rem,70vw));padding:.55rem .7rem;font-size:.78rem;line-height:1.4;transition:opacity .15s,transform .15s;position:absolute;bottom:calc(100% + .45rem);left:50%;transform:translate(-50%)translateY(4px);box-shadow:0 12px 28px #00000073}.hint__tip:after{content:"";border:6px solid #0000;border-top-color:#0a1210;position:absolute;top:100%;left:50%;transform:translate(-50%)}.hint:hover .hint__tip,.hint:focus-within .hint__tip,.hint.is-open .hint__tip{opacity:1;pointer-events:auto;transform:translate(-50%)translateY(0)}.tip-banner{text-align:left;background:linear-gradient(135deg,#00e6b81a,#0000 55%),#080c10e6;border:1px solid #00e6b833;border-radius:14px;gap:.35rem;width:100%;padding:.85rem 1rem;display:grid}.tip-banner strong{font-family:var(--font-display);letter-spacing:-.02em;font-size:.95rem}.tip-banner p{color:#9eb0a8;margin:0;font-size:.86rem;line-height:1.45}@media (width<=720px){.hint__tip{left:auto;right:0;transform:translateY(4px)}.hint:hover .hint__tip,.hint:focus-within .hint__tip,.hint.is-open .hint__tip{transform:translateY(0)}.hint__tip:after{left:auto;right:.55rem;transform:none}}.inst-view{justify-items:center;gap:.65rem;width:100%;display:grid}.inst-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.55rem;width:min(720px,100%);padding:.35rem .15rem;display:flex}.inst-toolbar__label{font-family:var(--font-display);letter-spacing:-.02em;color:#c8ddd4;align-items:center;gap:.35rem;font-size:.95rem;display:inline-flex}.inst-toggle{background:#080c10bf;border:1px solid #00ffc824;border-radius:999px;gap:.2rem;padding:.2rem;display:inline-flex}.inst-toggle button{color:#9eb0a8;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;padding:.4rem .7rem;font-size:.78rem}.inst-toggle button.is-on{color:#04110c;background:linear-gradient(135deg,#5cff9d,#00e6b8);font-weight:700}@media (width<=400px){.inst-toolbar{flex-direction:column;align-items:stretch}.inst-toggle{justify-content:center}}.stage{gap:1.35rem;width:min(960px,100%);min-width:0;max-width:100%;margin:0 auto;display:grid;position:relative}.stage--lesson{gap:1.15rem}.stage--good{--pulse:#00ffb42e}.stage--bad{--pulse:#ff5a6e29}.stage--win{--pulse:#78ffc847}.stage:before{content:"";pointer-events:none;background:radial-gradient(ellipse at 50% 0%, var(--pulse,transparent), transparent 70%);z-index:0;height:42%;transition:background .35s;position:absolute;inset:-8% -4% auto}.stage>*{z-index:1;position:relative}.stage__burst{pointer-events:none;z-index:30;background:radial-gradient(circle at 20% 80%,#00ffb440,#0000 28%),radial-gradient(circle at 80% 30%,#5cff9d33,#0000 30%),radial-gradient(circle,#ffffff14,#0000 40%);animation:2.6s forwards burst;position:fixed;inset:0}.brand{text-align:center;padding-top:.35rem;animation:.6s cubic-bezier(.22,1,.36,1) both rise}.brand__mark{font-family:var(--font-display);letter-spacing:-.05em;background:linear-gradient(105deg,#eafff6 0%,#5cff9d 45%,#00e6b8 100%);color:#0000;-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(2.4rem,7vw,3.6rem);font-weight:700;line-height:.95}.brand__line{letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin:.4rem 0 0;font-size:.78rem}.rail{background:#ffffff0f;border-radius:999px;height:3px;overflow:hidden}.rail i{background:linear-gradient(90deg,#00e6b8,#5cff9d);height:100%;transition:width .4s cubic-bezier(.22,1,.36,1);display:block}.steps{grid-template-columns:repeat(5,minmax(0,1fr));gap:.4rem;display:grid}.steps__item{color:var(--dim);text-align:left;background:#ffffff06;border:1px solid #0000;border-radius:12px;flex-direction:column;align-items:flex-start;gap:.15rem;padding:.6rem .55rem;font-size:.72rem;transition:all .2s;display:flex}.steps__item span{font-family:var(--font-mono);color:#5a6a66;font-size:.68rem}.steps__item.is-current{color:var(--ink);background:#00e6b814;border-color:#00e6b866;box-shadow:inset 0 0 0 1px #00e6b814}.steps__item.is-done{color:#8fe9c4}.panel{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:linear-gradient(#00e6b80f,#0000 28%),#070b10c7;border:1px solid #00ffc81f;border-radius:22px;justify-items:center;gap:1.25rem;padding:1.65rem 1.25rem 1.7rem;animation:.55s cubic-bezier(.22,1,.36,1) 50ms both rise;display:grid}.panel--lesson{gap:1.4rem}.panel__head{text-align:center;gap:.45rem;max-width:36rem;display:grid}.panel__kicker{letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin:0;font-size:.72rem}.panel__head h1{font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-size:clamp(1.7rem,4.2vw,2.25rem)}.panel__why{color:#9fe9cf;margin:0;font-size:.98rem;line-height:1.45}.panel__hint{max-width:34rem;color:var(--muted);margin:0;font-size:.92rem;line-height:1.45}.degrees{flex-wrap:wrap;justify-content:center;gap:.45rem;display:flex}.chip{min-width:4.4rem;color:var(--ink);background:#ffffff08;border:1px solid #ffffff14;border-radius:14px;justify-items:center;gap:.12rem;padding:.7rem .8rem;transition:transform .15s,border-color .15s,background .15s;display:grid}.chip strong{font-family:var(--font-display);letter-spacing:-.02em;font-size:1.2rem}.chip span{font-family:var(--font-mono);color:var(--dim);font-size:.7rem}.chip:hover,.chip.is-active{background:#00e6b81a;border-color:#00e6b873;transform:translateY(-2px)}.actions,.build{flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem;display:flex}.slots{justify-content:center;gap:.45rem;width:100%;margin-bottom:.25rem;display:flex}.slot{width:2.6rem;height:2.6rem;font-family:var(--font-display);color:var(--dim);border:1px dashed #ffffff24;border-radius:10px;place-items:center;display:grid}.slot.is-filled{color:var(--ink);background:#00e6b81a;border-style:solid;border-color:#00e6b866;animation:.25s slot-pop}.target{text-align:center;width:100%;color:var(--muted);justify-content:center;align-items:baseline;gap:.55rem;margin:0;display:flex}.target strong{color:var(--ink);font-family:var(--font-display);font-size:1.15rem}.target span{font-family:var(--font-mono);color:var(--dim);font-size:.75rem}.btn{appearance:none;color:#04110c;letter-spacing:.01em;cursor:pointer;background:linear-gradient(135deg,#5cff9d,#00e6b8);border:0;border-radius:999px;padding:.72rem 1.2rem;font-weight:700;transition:transform .15s,filter .15s,opacity .15s}.btn:hover:not(:disabled){filter:brightness(1.06);transform:translateY(-1px)scale(1.01)}.btn:disabled{opacity:.35;cursor:not-allowed}.btn--ghost{color:var(--ink);background:0 0;border:1px solid #ffffff24}.btn--lg{border-radius:14px;padding:.95rem 1.45rem;font-size:1.05rem}.piano-wrap{justify-content:center;width:100%;padding:.35rem 0 .15rem;animation:.5s .1s both rise;display:flex}.feedback{color:#c9ffe8;text-align:center;background:#00e6b81a;border-radius:12px;max-width:36rem;margin:0;padding:.65rem .95rem}.feedback--bad{color:#ffd0d7;background:#ff5a6e1f}.feedback--win{color:#e9fff3;background:#5cff9d29;font-weight:600}.nav{justify-content:space-between;gap:.75rem;width:100%;display:flex}.hearts{letter-spacing:.05em;gap:.25rem;font-size:1.1rem;display:flex}.heart{color:#ffffff26}.heart.is-on{color:#ff6b7a}.panel--center{text-align:center;justify-items:center;padding:2rem 1rem}.steps--readonly{pointer-events:none;margin:0;padding:0;list-style:none}.steps--readonly .steps__item{cursor:default}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slot-pop{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes burst{0%{opacity:0}15%{opacity:1}to{opacity:0}}@media (width<=720px){.steps{-webkit-overflow-scrolling:touch;scrollbar-width:thin;gap:.35rem;padding-bottom:.2rem;display:flex;overflow-x:auto}.steps__item{flex:none;min-width:4.6rem}.steps__item:last-child{grid-column:auto}.lesson-bar{flex-wrap:wrap;gap:.45rem}.panel__head h1{font-size:clamp(1.45rem,7vw,1.85rem)}}@media (width<=400px){.steps__item{min-width:3.8rem;padding:.35rem .4rem;font-size:.78rem}.degrees{gap:.35rem}.chip{min-width:3.6rem;padding:.55rem .45rem}}.midi-player{gap:1.35rem}.midi-player__head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1.25rem;display:flex}.midi-player__head .page__hero{flex-wrap:wrap;align-items:center;gap:.45rem;max-width:14ch;display:inline-flex}.midi-empty{background:#080e10b8;border:1px solid #00ffc824;border-radius:20px;gap:.85rem;padding:1.5rem 1.25rem;display:grid}.midi-empty__title{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:1.35rem}.midi-empty__lead{color:#9eb0a8;margin:0;line-height:1.5}.midi-empty__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem;margin-top:.35rem;display:grid}.midi-empty__card{text-align:left;color:inherit;cursor:pointer;font:inherit;background:#00000040;border:1px solid #00ffc829;border-radius:16px;gap:.35rem;padding:1.15rem 1rem;display:grid;position:relative;overflow:hidden}.midi-empty__card:hover{border-color:#00e6b873}.midi-empty__card strong{font-family:var(--font-display);font-size:1.05rem}.midi-empty__card span{color:#8a9b93;font-size:.88rem}.midi-empty__card--upload input{opacity:0;cursor:pointer;position:absolute;inset:0}.midi-player__sources{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.midi-player__upload{cursor:pointer;position:relative;overflow:hidden}.midi-player__upload input{opacity:0;cursor:pointer;position:absolute;inset:0}.midi-player__examples{flex-wrap:wrap;gap:.4rem;display:flex}.midi-player__meta{color:var(--dim,#9ab);flex-wrap:wrap;align-items:center;gap:.75rem;font-size:.95rem;display:flex}.midi-player__meta select{color:inherit;background:#ffffff0f;border:1px solid #ffffff1f;border-radius:6px;margin-left:.35rem;padding:.25rem .4rem}.midi-player__warn{color:#ffd89a;background:#ffb43c1f;border:1px solid #ffb43c59;border-radius:10px;margin:0;padding:.75rem .95rem;font-size:.92rem;line-height:1.45}.midi-player__error{color:#ff8a9a;margin:0}.midi-player__modes{grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem;display:grid}.midi-player__rates{flex-wrap:wrap;gap:.35rem;display:flex}.midi-player__modes button{text-align:left;color:inherit;cursor:pointer;font:inherit;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:12px;gap:.25rem;padding:.75rem .85rem;display:grid}.midi-player__modes button strong{font-size:.98rem}.midi-player__modes button span{color:#8a9b93;font-size:.78rem;line-height:1.3}.midi-player__rates button{color:inherit;cursor:pointer;font:inherit;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:8px;padding:.4rem .75rem}.midi-player__modes button.is-on,.midi-player__rates button.is-on{color:#b8ffe8;background:#00e6b82e;border-color:#00e6b873}.midi-player__modes button.is-on span{color:#9fe9cf}.midi-player__mode-hint{color:#b4c4bc;margin:0;font-size:.95rem;line-height:1.45}.midi-player__transport{grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:.75rem;min-width:0;display:grid}.midi-player__transport input[type=range]{accent-color:#00e6b8;width:100%}.midi-player__time{font-variant-numeric:tabular-nums;color:var(--dim,#9ab);white-space:nowrap;font-size:.9rem}.midi-player__scoreline{color:#9fe9cf;margin:0;font-size:.95rem}@media (width<=860px){.midi-empty__grid,.midi-player__modes{grid-template-columns:1fr 1fr}}@media (width<=720px){.midi-player__transport{grid-template-columns:1fr 1fr}.midi-player__transport input[type=range]{grid-column:1/-1}.midi-empty__grid{grid-template-columns:1fr}}.page{gap:1.5rem;animation:.45s both rise;display:grid}.page--home,.page--login{text-align:center;justify-items:center;padding:.5rem 0 .25rem}.page--home-hub,.page--voice-hub{text-align:left;justify-items:stretch;gap:2rem}.shell--landing{place-items:start center;width:min(960px,100%);min-height:calc(100vh - 3rem)}.page__kicker{letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0;font-size:.78rem}.page__hero,.page h1{font-family:var(--font-display);letter-spacing:-.04em;max-width:16ch;margin:0;font-size:clamp(2rem,5.5vw,3.15rem);line-height:1.08}.page__lead{color:#b4c4bc;max-width:38rem;margin:0;font-size:1.02rem;line-height:1.65}.page__lead--wide{max-width:42rem}.hub-hero{justify-items:start;gap:1rem;display:grid}.hub-cta-row{flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:.35rem;display:flex}.hub-doors{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.hub-door{text-align:left;color:inherit;cursor:pointer;background:#080e10c7;border:1px solid #00ffc824;border-radius:18px;gap:.55rem;padding:1.25rem 1.15rem;transition:border-color .15s,transform .15s;display:grid}.hub-door:hover{border-color:#00e6b873;transform:translateY(-2px)}.hub-door em{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-size:.72rem;font-style:normal}.hub-door strong{font-family:var(--font-display);letter-spacing:-.02em;font-size:1.2rem}.hub-door span{color:#9eb0a8;font-size:.92rem;line-height:1.45}.voice-list{gap:.85rem;margin:0;padding:0;list-style:none;display:grid}.voice-card{text-align:left;width:100%;color:inherit;cursor:pointer;background:#080e10c7;border:1px solid #00ffc824;border-radius:16px;gap:.35rem;padding:1.15rem 1.2rem;display:grid}.voice-card:hover:not(:disabled){border-color:#00e6b866}.voice-card:disabled{opacity:.5;cursor:not-allowed}.voice-card--available{border-color:#00e6b866}.voice-card strong{font-family:var(--font-display);font-size:1.1rem}.voice-card span{color:#9eb0a8;font-size:.9rem}.progress-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem;margin:0;padding:0;list-style:none;display:grid}.progress-stats li{background:#080c10a6;border:1px solid #00ffc81f;border-radius:16px;gap:.25rem;padding:1.1rem;display:grid}.progress-stats strong{font-family:var(--font-display);font-size:1.6rem}.progress-stats span{color:#9eb0a8}.page__cta{flex-wrap:wrap;justify-content:center;gap:.55rem;margin-top:.35rem;display:flex}.home-features{text-align:left;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem;width:100%;margin-top:.75rem;display:grid}.home-feature{background:#080c10a6;border:1px solid #00ffc81a;border-radius:16px;gap:.35rem;padding:1rem;display:grid}.home-feature strong{font-family:var(--font-display);letter-spacing:-.02em;font-size:1rem}.home-feature span{color:#9eb0a8;font-size:.84rem;line-height:1.4}.home-feature em{font-style:normal;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);font-size:.68rem}.lesson-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.8rem;margin:0;padding:0;list-style:none;display:grid}.lesson-card{text-align:left;width:100%;color:var(--ink);cursor:pointer;background:linear-gradient(165deg,#00e6b812,#0000 42%),#070b10d1;border:1px solid #00ffc81f;border-radius:18px;gap:.45rem;padding:1.05rem 1.05rem .95rem;transition:border-color .15s,transform .15s,box-shadow .15s;display:grid}.lesson-card:hover{border-color:#00e6b873;transform:translateY(-3px);box-shadow:0 16px 40px #00000059}.lesson-card strong{font-family:var(--font-display);letter-spacing:-.02em;font-size:1.08rem}.lesson-card p{color:#a8b8b0;margin:0;font-size:.86rem;line-height:1.45}.lesson-card__kind{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-size:.65rem}.lesson-card__meta{color:#8a9b93;justify-content:space-between;align-items:center;margin-top:.2rem;font-size:.74rem;display:flex}.lesson-card__meta .xp{color:#04110c;background:linear-gradient(135deg,#5cff9d,#00e6b8);border-radius:999px;padding:.2rem .55rem;font-size:.68rem;font-weight:700}.lesson-card.is-clear .xp{color:var(--accent);background:0 0;border:1px solid #00e6b859}.cleared-list,.admin-list{color:#b4c4bc;gap:.35rem;margin:0;padding-left:1.1rem;display:grid}.admin-list code{color:var(--accent);font-family:var(--font-mono);font-size:.85em}@media (width<=860px){.hub-doors{grid-template-columns:1fr}.page__hero,.page h1{max-width:none}}@media (width<=720px){.home-features,.progress-stats{grid-template-columns:1fr}}.onboard{z-index:80;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#020608b8;place-items:center;padding:1.25rem;animation:.35s both onboard-fade;display:grid;position:fixed;inset:0}.onboard__card{background:radial-gradient(at 50% 0,#00e6b824,#0000 55%),#080e10f5;border:1px solid #00e6b847;border-radius:22px;gap:1rem;width:min(440px,100%);padding:1.75rem 1.5rem 1.5rem;display:grid;box-shadow:0 24px 60px #00000073}.onboard__kicker{letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0;font-size:.75rem}.onboard__card h2{font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-size:clamp(1.45rem,4vw,1.85rem);line-height:1.15}.onboard__card>p{color:#b7c9c0;margin:0;font-size:1.02rem;line-height:1.6}.onboard__dots{gap:.4rem;display:flex}.onboard__dots i{background:#ffffff2e;border-radius:999px;width:.45rem;height:.45rem}.onboard__dots i.is-on{background:var(--accent);width:1.1rem}.onboard__actions{flex-wrap:wrap;justify-content:flex-end;gap:.55rem;margin-top:.35rem;display:flex}@keyframes onboard-fade{0%{opacity:0}to{opacity:1}}.pitch-meter{background:#070b10d9;border:1px solid #00ffc824;border-radius:16px;gap:.55rem;width:min(420px,100%);padding:1rem;display:grid}.pitch-meter.is-tune{border-color:#5cff9d73;box-shadow:0 0 24px #00e6b826}.pitch-meter__label{color:#8a9b93;text-transform:uppercase;letter-spacing:.08em;justify-content:space-between;align-items:baseline;font-size:.72rem;display:flex}.pitch-meter__label strong{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);text-transform:none;font-size:1.15rem}.pitch-meter__track{background:linear-gradient(90deg,#ff5a6e59,#00e6b859 50%,#ff5a6e59);border-radius:999px;height:14px;position:relative}.pitch-meter__center{background:#eafff6;width:2px;position:absolute;top:-3px;bottom:-3px;left:50%;transform:translate(-50%)}.pitch-meter__needle{background:#04110c;border:2px solid #5cff9d;border-radius:50%;width:16px;height:16px;transition:left 80ms linear;position:absolute;top:50%;transform:translate(-50%,-50%)}.pitch-meter__status{text-align:center;color:#c8ddd4;margin:0;font-size:.9rem}.pitch-meter.is-tune .pitch-meter__status{color:#5cff9d;font-weight:600}.voice-stage .panel{justify-items:center}.voice-actions{flex-direction:column;align-items:center}.hold-bar{background:#ffffff14;border-radius:999px;width:min(440px,100%);height:10px;overflow:hidden}.hold-bar i{background:linear-gradient(90deg,#00e6b8,#5cff9d);height:100%;transition:width 50ms linear;display:block}.karaoke-now{font-family:var(--font-display);align-items:baseline;gap:.75rem;margin:0;font-size:1.55rem;display:flex}.karaoke-now span{font-family:var(--font-mono);color:#8a9b93;font-size:.78rem}.install-pwa{justify-items:center;gap:.55rem;width:100%;display:grid}.install-pwa__ios{color:#c8ddd4;text-align:left;background:#00e6b814;border:1px solid #00e6b847;border-radius:14px;max-width:22rem;margin:0;padding:.75rem .9rem;font-size:.84rem;line-height:1.45}.install-pwa__ios strong{color:var(--accent);font-weight:600}.install-pwa__dismiss{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:0;margin-left:.45rem;padding:0;text-decoration:underline;display:inline-block}.page--path{text-align:left;justify-items:stretch}.path-hero{text-align:left;justify-items:start;gap:.75rem;margin-bottom:1.5rem;animation:.45s both rise;display:grid}.path-hero .page__hero{max-width:14ch}.path{gap:2.25rem;display:grid}.path--relaxed{border-top:1px solid #ffffff0f;margin-top:.5rem;padding-top:.5rem}.path-section-head h2{font-family:var(--font-display);letter-spacing:-.03em;margin:0 0 .35rem;font-size:1.45rem}.path-section-head p{color:#9eb0a8;margin:0 0 1.25rem}.path-unit__head h2,.path-unit__head h3,.path-unit__sub{font-family:var(--font-display);letter-spacing:-.03em;margin:0 0 .4rem;font-size:1.2rem}.path-unit__head p{color:#9eb0a8;margin:0 0 1rem;font-size:.95rem;line-height:1.45}.path-nodes{gap:.7rem;margin:0;padding:0;list-style:none;display:grid;position:relative}.path-nodes:before{content:"";background:#00e6b829;width:2px;position:absolute;top:.5rem;bottom:.5rem;left:1.25rem}.path-node{text-align:left;width:100%;color:var(--ink);cursor:pointer;z-index:1;background:#070b10d1;border:1px solid #00ffc81f;border-radius:16px;align-items:center;gap:1rem;padding:1rem 1.15rem;transition:border-color .15s,transform .15s;display:flex;position:relative}.path-node:hover:not(:disabled){border-color:#00e6b866;transform:translate(3px)}.path-node:disabled{opacity:.42;cursor:not-allowed}.path-node--available{border-color:#00e6b866;box-shadow:0 0 0 1px #00e6b81f}.path-node--cleared{border-color:#5cff9d40}.path-node__mark{width:2.25rem;height:2.25rem;color:var(--accent);background:#00e6b81f;border-radius:999px;flex-shrink:0;place-items:center;font-size:.95rem;display:grid}.path-node__body{gap:.2rem;min-width:0;display:grid}.path-node__body strong{font-size:1.02rem}.path-node__body em{color:#8a9b93;font-size:.82rem;font-style:normal}.page--theory{text-align:left;justify-items:stretch;max-width:42rem}.theory__hero{gap:.65rem;margin-bottom:.75rem;display:grid}.theory__hero h1{flex-wrap:wrap;align-items:center;gap:.45rem;display:inline-flex}.theory__toc{flex-wrap:wrap;gap:.65rem 1rem;margin-top:.25rem;display:flex}.theory__toc a{color:var(--accent);border-bottom:1px solid #00e6b859;font-size:.88rem;text-decoration:none}.theory__toc a:hover{border-bottom-color:var(--accent)}.theory__section{border-top:1px solid #00ffc81a;gap:.75rem;margin-top:1.5rem;padding-top:1.25rem;display:grid}.theory__section-title{font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-size:1.45rem}.theory__section-lead{color:#8fa89c;margin:0;font-size:.95rem;line-height:1.5}.theory__stack{gap:.9rem;display:grid}.theory-block{background:linear-gradient(165deg,#00e6b80f,#0000 45%),#070b10d1;border:1px solid #00ffc81f;border-radius:16px;gap:.55rem;padding:1.2rem 1.25rem;display:grid}.theory-block--tutorial{background:linear-gradient(165deg,#5a96ff12,#0000 45%),#070b10d1;border-color:#78b4ff24}.theory-block h3{font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-size:1.15rem}.theory-block__body{color:#b4c4bc;white-space:pre-line;margin:0;font-size:.95rem;line-height:1.65}.sell{box-sizing:border-box;gap:0;width:min(960px,100%);min-width:0;max-width:100%;margin:0 auto;padding-bottom:2.5rem;display:grid}.sell__top{justify-content:space-between;align-items:center;gap:1rem;padding:.35rem 0 .75rem;animation:.45s both rise;display:flex}.sell__logo{font-family:var(--font-display);letter-spacing:-.04em;background:linear-gradient(105deg,#eafff6,#5cff9d 55%,#00e6b8);color:#0000;-webkit-background-clip:text;background-clip:text;font-size:1.15rem;font-weight:700}.sell__hero{text-align:center;align-content:center;justify-items:center;gap:1rem;min-height:min(78vh,640px);padding:2.5rem .5rem 3.5rem;animation:.6s cubic-bezier(.22,1,.36,1) both rise;display:grid;position:relative}.sell__hero:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(at 50% 30%,#00e6b838,#0000 62%),radial-gradient(at 80% 70%,#5cff9d1a,#0000 50%);height:55%;animation:8s ease-in-out infinite alternate sellGlow;position:absolute;inset:8% 5% auto}.sell__hero>*{z-index:1;position:relative}.sell__brand{font-family:var(--font-display);letter-spacing:-.055em;background:linear-gradient(105deg,#eafff6 0%,#5cff9d 42%,#00e6b8 100%);color:#0000;-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(3.2rem,14vw,5.6rem);font-weight:700;line-height:.9}.sell__headline{max-width:16ch;font-family:var(--font-display);letter-spacing:-.03em;color:#dceee6;margin:0;font-size:clamp(1.35rem,3.8vw,1.85rem);font-weight:600;line-height:1.25}.sell__sub{color:#9eb0a8;max-width:32rem;margin:0;font-size:1rem;line-height:1.55}.sell__cta{flex-wrap:wrap;justify-content:center;gap:.55rem;margin-top:.5rem;display:flex}.sell__cta .btn,.sell__plan .btn{text-decoration:none}.sell__method,.sell__plans{text-align:center;justify-items:center;gap:.85rem;padding:2.75rem .35rem 1.5rem;animation:.7s 80ms both rise;display:grid}.sell__method h2,.sell__plans h2{font-family:var(--font-display);letter-spacing:-.04em;margin:0;font-size:clamp(1.6rem,4vw,2.1rem)}.sell__section-lead{color:#9eb0a8;max-width:28rem;margin:0;line-height:1.5}.sell__steps{text-align:left;gap:.45rem;width:min(520px,100%);margin:.75rem 0 0;padding:0;list-style:none;display:grid}.sell__steps li{font-family:var(--font-display);letter-spacing:-.02em;color:#d7ebe2;border-bottom:1px solid #00ffc81a;align-items:baseline;gap:.75rem;padding:.7rem .85rem;font-size:1.02rem;display:flex}.sell__steps em{font-style:normal;font-family:var(--font-mono);letter-spacing:.14em;color:var(--accent);min-width:1.6rem;font-size:.68rem}.sell__plan-row{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:.85rem;width:100%;margin-top:.5rem;display:grid}.sell__plan{text-align:left;background:linear-gradient(165deg,#00e6b80f,#0000 50%),#070b10e0;border:1px solid #00ffc824;border-radius:20px;justify-items:start;gap:.65rem;padding:1.35rem 1.25rem 1.25rem;transition:border-color .2s,transform .2s;display:grid;position:relative}.sell__plan:hover{border-color:#00e6b859;transform:translateY(-2px)}.sell__plan.is-hot{background:linear-gradient(165deg,#00e6b824,#0000 48%),#060e0cf2;border-color:#00e6b873;box-shadow:0 18px 48px #00000059,0 0 0 1px #00e6b81f}.sell__plan-badge{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:#04110c;background:linear-gradient(135deg,#5cff9d,#00e6b8);border-radius:999px;padding:.2rem .55rem;font-size:.62rem;font-weight:700;position:absolute;top:.85rem;right:.85rem}.sell__plan h3{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:1.15rem}.sell__price{align-items:baseline;gap:.3rem;margin:0;display:flex}.sell__price strong{font-family:var(--font-display);letter-spacing:-.04em;font-size:clamp(1.85rem,4vw,2.35rem);font-weight:700}.sell__price span{color:#8a9b93;font-size:.9rem}.sell__plan-blurb{color:#9eb0a8;margin:0 0 .35rem;font-size:.9rem;line-height:1.45}.sell__plan .btn{justify-content:center;width:100%;margin-top:auto}.sell__fine{color:#6f8279;margin:.35rem 0 0;font-size:.78rem}.sell__foot{text-align:center;color:#6f8279;border-top:1px solid #ffffff0f;justify-items:center;gap:.65rem;margin-top:2.5rem;padding-top:1.5rem;font-size:.78rem;display:grid}@keyframes sellGlow{0%{opacity:.75;transform:scale(1)}to{opacity:1;transform:scale(1.04)}}@media (width<=720px){.sell__hero{min-height:auto;padding:1.75rem .25rem 2.5rem}.sell__plan-row{grid-template-columns:1fr}.sell__steps li{font-size:.95rem}}:root{--font-display:"Space Grotesk", system-ui, sans-serif;--font-body:"Sora", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--ink:#eef7f3;--muted:#9aada4;--dim:#6d7f78;--accent:#00e6b8;--bg0:#05070a;--bg1:#0a1110;color:var(--ink);background:var(--bg0);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{max-width:100%;min-height:100%}html{overflow-x:clip}body{background:radial-gradient(900px 420px at 85% -5%, #00e6b829, transparent 55%), radial-gradient(700px 380px at 5% 100%, #5cff9d14, transparent 50%), linear-gradient(165deg, var(--bg0), var(--bg1) 50%, #070d0c);background-attachment:fixed;min-width:320px;margin:0;overflow-x:clip}body:before{content:"";pointer-events:none;opacity:.45;background-image:linear-gradient(#ffffff06 1px,#0000 1px),linear-gradient(90deg,#ffffff06 1px,#0000 1px);background-size:48px 48px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(#000 35%,#0000 80%);mask-image:radial-gradient(#000 35%,#0000 80%)}#root{box-sizing:border-box;place-items:start center;width:100%;min-width:0;padding:1.75rem 1.25rem 3.25rem;display:grid}@media (width<=720px){#root{padding:.85rem .65rem 2rem}}@media (width<=400px){#root{padding:.55rem .45rem 1.5rem}}button{font:inherit}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
