@font-face{font-family:Geist;font-style:normal;font-weight:400;font-display:swap;src:url(../media/4f6667dd39116621-s.3p2_lha1f2xer.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:400;font-display:swap;src:url(../media/07935285219a259d-s.1qq4vpdcun5oj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:400;font-display:swap;src:url(../media/f58031ded4338640-s.390ncx5urfkfu.woff2)format("woff2");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:Geist;font-style:normal;font-weight:400;font-display:swap;src:url(../media/77814b00d5ca94a4-s.21jp631_3pja2.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:400;font-display:swap;src:url(../media/605ce01b664af129-s.p.0wgildi0cnwt9.woff2)format("woff2");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:Geist;font-style:normal;font-weight:500;font-display:swap;src:url(../media/4f6667dd39116621-s.3p2_lha1f2xer.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:500;font-display:swap;src:url(../media/07935285219a259d-s.1qq4vpdcun5oj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:500;font-display:swap;src:url(../media/f58031ded4338640-s.390ncx5urfkfu.woff2)format("woff2");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:Geist;font-style:normal;font-weight:500;font-display:swap;src:url(../media/77814b00d5ca94a4-s.21jp631_3pja2.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:500;font-display:swap;src:url(../media/605ce01b664af129-s.p.0wgildi0cnwt9.woff2)format("woff2");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:Geist;font-style:normal;font-weight:600;font-display:swap;src:url(../media/4f6667dd39116621-s.3p2_lha1f2xer.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:600;font-display:swap;src:url(../media/07935285219a259d-s.1qq4vpdcun5oj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:600;font-display:swap;src:url(../media/f58031ded4338640-s.390ncx5urfkfu.woff2)format("woff2");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:Geist;font-style:normal;font-weight:600;font-display:swap;src:url(../media/77814b00d5ca94a4-s.21jp631_3pja2.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:600;font-display:swap;src:url(../media/605ce01b664af129-s.p.0wgildi0cnwt9.woff2)format("woff2");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:Geist;font-style:normal;font-weight:700;font-display:swap;src:url(../media/4f6667dd39116621-s.3p2_lha1f2xer.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:700;font-display:swap;src:url(../media/07935285219a259d-s.1qq4vpdcun5oj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:700;font-display:swap;src:url(../media/f58031ded4338640-s.390ncx5urfkfu.woff2)format("woff2");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:Geist;font-style:normal;font-weight:700;font-display:swap;src:url(../media/77814b00d5ca94a4-s.21jp631_3pja2.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:700;font-display:swap;src:url(../media/605ce01b664af129-s.p.0wgildi0cnwt9.woff2)format("woff2");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:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}._9vdvRW_className{font-family:Geist,Geist Fallback;font-style:normal}._9vdvRW_variable{--font-sans:"Geist", "Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/b0c6b664fd57c2c6-s.31988l_ccedte.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/6e342921ee4dcd9d-s.2tuy5pz7dlieh.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2bb852295097cd96-s.2dbetqa9o8jxf.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/9eb5a876700c0028-s.1uyisp29ctx0d.woff2)format("woff2");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:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2a04751c893bf294-s.1rgnod-3esatf.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/07a39a8a4660cc7c-s.p.0r6juujl39pe6.woff2)format("woff2");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:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/b0c6b664fd57c2c6-s.31988l_ccedte.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6e342921ee4dcd9d-s.2tuy5pz7dlieh.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/2bb852295097cd96-s.2dbetqa9o8jxf.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/9eb5a876700c0028-s.1uyisp29ctx0d.woff2)format("woff2");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:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/2a04751c893bf294-s.1rgnod-3esatf.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/07a39a8a4660cc7c-s.p.0r6juujl39pe6.woff2)format("woff2");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:Geist Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/b0c6b664fd57c2c6-s.31988l_ccedte.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/6e342921ee4dcd9d-s.2tuy5pz7dlieh.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/2bb852295097cd96-s.2dbetqa9o8jxf.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/9eb5a876700c0028-s.1uyisp29ctx0d.woff2)format("woff2");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:Geist Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/2a04751c893bf294-s.1rgnod-3esatf.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/07a39a8a4660cc7c-s.p.0r6juujl39pe6.woff2)format("woff2");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:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.cwZ3Ua_className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.cwZ3Ua_variable{--font-mono:"Geist Mono", "Geist Mono Fallback"}
:root{--bg:#09090b;--bg-2:#0d0d0f;--panel:#131316;--panel-2:#18181b;--line:#26262a;--line-soft:#202024;--line-2:#3f3f46;--txt:#fafafa;--txt-2:#a1a1aa;--muted:#71717a;--faint:#52525b;--acc:#4ade80;--acc-hi:#86efac;--acc-dim:#4ade801a;--acc-glow:#4ade804d;--ice:#93c5fd;--ice-hi:#bfdbfe;--ice-dim:#93c5fd1f;--green:#4ade80;--green-dim:#4ade801a;--red:#f87171;--red-dim:#f871711a;--alt:#c4b5fd;--alt-dim:#c4b5fd1f;--amber:var(--ice);--amber-hi:var(--ice-hi);--amber-dim:var(--ice-dim);--amber-glow:#93c5fd59;--blue:var(--ice);--blue-dim:var(--ice-dim);--sans:var(--font-sans), "Geist", sans-serif;--mono:var(--font-mono), "Geist Mono", monospace;--r-sm:3px;--r-md:8px;--r-lg:12px;--shadow-card:0 10px 28px -20px #000c;--shadow-pop:0 16px 34px -18px #000000d9;--staff:#71717a}html[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f2efe7;--bg-2:#eeebe1;--panel:#faf7ef;--panel-2:#f5f1e6;--line:#e0dacb;--line-soft:#e6e0d2;--line-2:#cbc4b2;--txt:#1c1917;--txt-2:#57534e;--muted:#8d867a;--faint:#b8b0a0;--acc:#15803d;--acc-hi:#1c9d4b;--acc-dim:#15803d1a;--acc-glow:#15803d47;--ice:#2563eb;--ice-hi:#1d4ed8;--ice-dim:#2563eb17;--green:#15803d;--green-dim:#15803d1a;--red:#dc2626;--red-dim:#dc262614;--alt:#6d28d9;--alt-dim:#6d28d91a;--amber-glow:#2563eb47;--shadow-card:0 6px 18px -12px #1c191738;--shadow-pop:0 14px 30px -14px #1c19174d;--staff:#5c554a}*{box-sizing:border-box;margin:0;padding:0}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:var(--bg);color:var(--txt);font-family:var(--sans);-webkit-font-smoothing:antialiased;min-height:100vh;font-size:15px;line-height:1.5}body:before{content:none}a{color:inherit;text-decoration:none}button{color:inherit;cursor:pointer;font-family:inherit}::selection{background:var(--acc-dim);color:var(--acc)}.tag{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:10.5px;font-weight:500}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.topbar{z-index:50;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line-soft);background:#09090bd9;align-items:center;gap:28px;height:58px;padding:0 24px;display:flex;position:sticky;top:0}html[data-theme=light] .topbar{background:#f2efe7e0}.brand{flex-shrink:0;align-items:baseline;gap:9px;display:flex}.brand-mark{font-family:var(--mono);letter-spacing:.08em;color:var(--txt);font-size:15px;font-weight:700}.brand-mark .accent{color:var(--txt)}.brand-sub{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--faint);font-size:9.5px}.nav{align-items:center;gap:2px;display:flex}.nav a{border-radius:var(--r-sm);font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);align-items:center;padding:6px 12px;font-size:10px;font-weight:500;transition:color .15s,background .15s;display:flex}.nav a:hover{color:var(--txt-2)}.nav a.active{color:var(--bg);background:var(--txt)}.topbar-right{align-items:center;gap:14px;margin-left:auto;display:flex}.midi-pill{border:1px solid var(--line);background:var(--panel);font-family:var(--mono);letter-spacing:.08em;color:var(--txt-2);border-radius:99px;align-items:center;gap:8px;padding:6px 12px;font-size:11px;transition:border-color .15s;display:flex}.midi-pill:hover{border-color:var(--line-2)}.dot{background:var(--green);width:7px;height:7px;box-shadow:0 0 8px var(--acc-glow);border-radius:50%}.dot.off{background:var(--red);box-shadow:0 0 8px #ff647299}.dot.pulse{animation:1.6s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.35}}.avatar{background:var(--panel-2);border:1px solid var(--line);width:32px;height:32px;font-family:var(--mono);letter-spacing:.04em;color:var(--txt-2);border-radius:50%;place-items:center;font-size:11px;font-weight:700;transition:border-color .15s,color .15s;display:grid}.avatar:hover{border-color:var(--line-2);color:var(--txt)}.avatar.empty{color:var(--faint);font-size:13px}.theme-toggle{border:1px solid var(--line);background:var(--panel);width:32px;height:32px;color:var(--txt-2);cursor:pointer;border-radius:50%;place-items:center;font-size:14px;transition:border-color .15s,transform .2s;display:grid}.theme-toggle:hover{border-color:var(--acc);transform:rotate(20deg)}@media (max-width:640px){.topbar{gap:12px;padding:0 14px}.brand-sub{display:none}.nav{scrollbar-width:none;-ms-overflow-style:none;flex:1;min-width:0;overflow-x:auto}.nav::-webkit-scrollbar{display:none}.nav a{letter-spacing:.1em;flex-shrink:0;padding:6px 8px}.topbar-right{flex-shrink:0;gap:8px}.midi-pill{padding:6px 9px}.midi-pill .lbl{display:none}.midi-pill .dot{width:9px;height:9px}}.page{z-index:1;max-width:1200px;margin:0 auto;padding:32px 24px 80px;position:relative}.page.wide{max-width:1360px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:26px;display:flex}.page-head h1{letter-spacing:-.02em;font-size:26px;font-weight:800}.page-head .sub{color:var(--muted);margin-top:3px;font-size:14px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-card)}.panel-head{border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex}.panel-body{padding:18px}.btn{white-space:nowrap;border-radius:var(--r-sm);border:1px solid var(--line-2);letter-spacing:.01em;color:var(--txt-2);white-space:nowrap;background:0 0;justify-content:center;align-items:center;gap:8px;padding:9px 16px;font-size:13.5px;font-weight:600;transition:border-color .15s,background .15s,color .15s,transform 50ms;display:inline-flex}.btn:hover{border-color:var(--txt-2);color:var(--txt)}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--txt);border-color:var(--txt);color:var(--bg);font-weight:700}.btn.primary:hover{background:var(--txt-2);border-color:var(--txt-2);color:var(--bg)}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{border-color:var(--line-2)}.btn.sm{padding:6px 11px;font-size:12.5px}.btn.icon{width:40px;height:40px;padding:0;font-size:15px}.chip{border-radius:var(--r-sm);border:1px solid var(--line);font-family:var(--mono);letter-spacing:.05em;color:var(--txt-2);background:var(--panel-2);align-items:center;gap:6px;padding:5px 11px;font-size:11px;display:inline-flex}.chip.ok{color:var(--green);background:var(--green-dim);border-color:#3ee6a24d}.chip.miss{color:var(--ice);background:var(--ice-dim);border-color:#6fc2ff4d}.chip.wrong{color:var(--red);background:var(--red-dim);border-color:#ff64724d}.chip.info{color:var(--ice);background:var(--ice-dim);border-color:#6fc2ff4d}html[data-theme=light] .chip.ok{border-color:#0d9f6e4d}html[data-theme=light] .chip.miss,html[data-theme=light] .chip.info{border-color:#2586c74d}html[data-theme=light] .chip.wrong{border-color:#d6455d4d}.chord-sym{font-family:var(--sans);letter-spacing:-.01em;font-variant-numeric:lining-nums;font-weight:800}.chord-sym sup{vertical-align:.55em;letter-spacing:0;color:var(--txt-2);margin-left:1px;font-size:.58em;font-weight:700}.chord-sym .q{color:var(--txt-2);font-size:.72em;font-weight:700}.leadsheet{grid-template-columns:repeat(8,1fr);gap:8px;display:grid}.bar{border:1px solid var(--line);background:var(--panel);text-align:center;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:80px;padding:10px 8px 8px;transition:transform .2s,box-shadow .2s,border-color .2s,opacity .2s;display:flex;position:relative}.bar .num{font-family:var(--mono);color:var(--faint);font-size:9px;position:absolute;top:6px;left:9px}.bar.done{opacity:.42;box-shadow:none}.bar.current{border-color:var(--line-2);background:var(--panel-2);box-shadow:var(--shadow-pop);transform:translateY(-3px)}.bar.current:not(.two){box-shadow:var(--shadow-pop), inset 0 0 0 1px #3ee6a259}.bar.current:not(.two) .chord-sym{color:var(--acc)}.bar.current:not(.two) .chord-sym sup,.bar.current:not(.two) .chord-sym .q{color:var(--acc);opacity:.8}.bar.current:not(.two):after{content:"";background:var(--acc);height:3px;box-shadow:0 0 10px var(--acc-glow);border-radius:2px;position:absolute;bottom:-1px;left:22%;right:22%}html[data-theme=light] .bar.current:not(.two){box-shadow:var(--shadow-pop), inset 0 0 0 1px #0d9f6e4d}.bar .loop-mark{font-family:var(--mono);color:var(--ice);letter-spacing:.1em;font-size:9px;position:absolute;top:6px;right:8px}.bar.looped{box-shadow:inset 0 2px #6fc2ff80}.bar.looped.current{box-shadow:var(--shadow-pop), inset 0 2px 0 #6fc2ff80}.bar-split{align-self:stretch;align-items:stretch;width:100%;display:flex}.bar-split .half{border-radius:9px;flex:1 1 0;justify-content:center;align-items:center;min-width:0;margin:5px 4px;padding:8px 3px;transition:background .15s;display:flex;position:relative}.bar-split .half+.half:before{content:"";background:var(--line-2);width:1px;height:56%;position:absolute;top:22%;left:-5px}.bar-split .half:hover{background:#8094a814}.bar-split .half.past .chord-sym,.bar-split .half.past .chord-sym sup,.bar-split .half.past .chord-sym .q{color:var(--faint)}.bar-split .half.cur{background:var(--acc-dim);box-shadow:inset 0 0 0 1px #3ee6a266}html[data-theme=light] .bar-split .half.cur{box-shadow:inset 0 0 0 1px #0d9f6e59}.bar-split .half.cur:before,.bar-split .half.cur+.half:before{display:none}.bar-split .half.cur:after{content:"";background:var(--acc);height:3px;box-shadow:0 0 10px var(--acc-glow);border-radius:2px;position:absolute;bottom:-6px;left:16%;right:16%}.bar-split .half.cur .chord-sym{color:var(--acc)}.bar-split .half.cur .chord-sym sup,.bar-split .half.cur .chord-sym .q{color:var(--acc);opacity:.8}:root{--kb-h:clamp(155px, 20vh, 185px);--kbbg:#050507;--kwc:#d4d4d8;--kwline:#71717a;--kbkc:#18181b;--knamec:#71717a;--ktgtw:#93b8e8;--ktgtb:#274a75;--khitw:#86dfa8;--khitb:#1c5c35;--kbadw:#eba3a3;--kbadb:#6e2222;--kbadink:#6e2222;--kaltw:#beb1e6;--kaltb:#453a6e;--kcarw:#c8c8cc;--kcarb:#3a3a40}html[data-theme=light]{--kbbg:#e4ded0;--kwc:#fffdf7;--kwline:#d6cfbe;--kbkc:#2b2723;--knamec:#b5ad9c;--ktgtw:#c7dcf6;--ktgtb:#2a4f80;--khitw:#c2e7cd;--khitb:#1d6b42;--kbadw:#f2ccc2;--kbadb:#93362a;--kbadink:#93362a;--kaltw:#ded3f4;--kaltb:#55418c;--kcarw:#e3ddcf;--kcarb:#6b655a}@media (max-height:680px){:root{--kb-h:140px}}.keyboard-shell{position:relative}.keyboard{height:var(--kb-h);-webkit-user-select:none;user-select:none;background:var(--kbbg);touch-action:none;-webkit-tap-highlight-color:transparent;border-radius:10px;flex-shrink:0;display:flex;position:relative;overflow:hidden}.key-w{background:var(--kwc);border-left:1px solid var(--kwline);cursor:pointer;border-radius:0 0 3px 3px;flex:1;transition:background .15s;position:relative}.key-w:first-child{border-left:none}.key-w .kname{font-family:var(--mono);color:var(--knamec);font-size:8px;position:absolute;bottom:6px;left:50%;transform:translate(-50%)}.key-b{width:calc(100% / var(--nw) * .62);background:var(--kbkc);z-index:3;cursor:pointer;border-radius:0 0 3px 3px;height:60%;transition:background .15s;position:absolute;top:0}.key-w.ghost{background:var(--ktgtw)}.key-b.ghost{background:var(--ktgtb)}.key-w.ghost2{background:var(--kaltw)}.key-b.ghost2{background:var(--kaltb)}.key-w.hit{background:var(--khitw)}.key-b.hit{background:var(--khitb)}.key-w.wrong{background:var(--kbadw)}.key-b.wrong{background:var(--kbadb)}.key-w.wrong:after{content:"×";color:var(--kbadink);font-size:12px;font-weight:700;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.key-b.wrong:after{content:"×";color:#f0b6be;font-size:12px;font-weight:700;position:absolute;bottom:6px;left:50%;transform:translate(-50%)}.key-w.carry{background:var(--kcarw)}.key-b.carry{background:var(--kcarb)}.key-w .gt,.key-b .gt{font-family:var(--mono);background:var(--ice);color:#06121d;z-index:4;letter-spacing:0;white-space:nowrap;border-radius:5px;padding:1px 5px;font-size:9px;font-weight:700;position:absolute;left:50%;transform:translate(-50%)}html[data-theme=light] .key-w .gt,html[data-theme=light] .key-b .gt{color:#fff}.key-w .gt{top:12px}.key-b .gt{top:8px}.key-w.hit .gt,.key-b.hit .gt{color:#05130c;background:#17c880}html[data-theme=light] .key-w.hit .gt,html[data-theme=light] .key-b.hit .gt{background:var(--acc);color:#fff}.key-w .gt.soft,.key-b .gt.soft{color:#e7ecf1;background:#0d1116bd;font-weight:500}html[data-theme=light] .key-w .gt.soft,html[data-theme=light] .key-b .gt.soft{color:#f2f6f8;background:#17242cc7}.transport{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.tgroup{background:var(--panel-2);border:1px solid var(--line-soft);border-radius:var(--r-md);flex-wrap:wrap;align-items:center;gap:8px;min-width:0;padding:8px 12px;display:flex}.tgroup .tag{margin-right:2px}.tempo-val{font-family:var(--mono);color:var(--txt);text-align:center;min-width:52px;font-size:20px;font-weight:700}.tempo-val small{color:var(--muted);font-size:10px;font-weight:500}input[type=range]{-webkit-appearance:none;background:var(--line-2);border-radius:2px;outline:none;width:120px;height:3px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--acc);border:2px solid var(--bg);cursor:pointer;border-radius:50%;width:14px;height:14px}.toggle{background:var(--line-2);border:none;border-radius:99px;width:36px;height:20px;transition:background .15s;position:relative}.toggle:after{content:"";background:var(--txt-2);border-radius:50%;width:14px;height:14px;transition:transform .15s,background .15s;position:absolute;top:3px;left:3px}.toggle.on{background:#3ee6a266}.toggle.on:after{background:var(--acc);transform:translate(16px)}html[data-theme=light] .toggle.on{background:#0d9f6e59}.beat-dots{align-items:center;gap:5px;display:inline-flex}.beat-dots .bd{background:var(--line-2);border-radius:50%;width:8px;height:8px;transition:background 50ms,box-shadow 50ms}.beat-dots .bd.on{background:var(--acc);box-shadow:0 0 10px var(--acc-glow)}.fb-note{border-radius:var(--r-md);background:var(--panel-2);border:1px solid var(--line-2);align-items:center;gap:10px;padding:9px 12px;display:flex}.fb-note .n{font-family:var(--mono);min-width:42px;font-size:14px;font-weight:700}.fb-note .role{color:var(--muted);flex:1;font-size:12px}.fb-note .st{font-family:var(--mono);letter-spacing:.06em;font-size:11px}.fb-note.ok{background:var(--acc-dim);border-color:#3ee6a266}.fb-note.ok .n,.fb-note.ok .st{color:var(--green)}.fb-note.miss{background:0 0;border-style:dashed}.fb-note.miss .n{color:var(--txt-2)}.fb-note.miss .st{color:var(--muted)}.fb-note.wrong{background:var(--red-dim);border-color:#ff647259}.fb-note.wrong .n,.fb-note.wrong .st{color:var(--red)}html[data-theme=light] .fb-note.ok{border-color:#0d9f6e59}html[data-theme=light] .fb-note.wrong{border-color:#d6455d4d}.fb-note .gt-badge{font-family:var(--mono);background:var(--ice);color:#06121d;border-radius:4px;padding:2px 6px;font-size:9px;font-weight:700}html[data-theme=light] .fb-note .gt-badge{color:#fff}.score-ring{font-family:var(--mono);color:var(--green);font-size:30px;font-weight:700}.card-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;display:grid}.ex-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-card);padding:18px;transition:border-color .15s,transform .15s,box-shadow .2s;display:block}.ex-card:hover{border-color:var(--line-2);box-shadow:var(--shadow-pop);transform:translateY(-3px)}.ex-card .head{justify-content:space-between;align-items:flex-start;margin-bottom:10px;display:flex}.ex-card h3{letter-spacing:-.01em;font-size:16.5px;font-weight:800}.ex-card .meta{font-family:var(--mono);color:var(--muted);gap:12px;margin-top:12px;font-size:11px;display:flex}.ex-card .preview{font-family:var(--mono);color:var(--txt-2);background:var(--panel-2);border:1px solid var(--line-soft);border-radius:var(--r-sm);white-space:nowrap;text-overflow:ellipsis;padding:8px 10px;font-size:12px;overflow:hidden}.mastery{background:var(--line);border-radius:2px;height:4px;margin-top:12px;overflow:hidden}.mastery i{background:linear-gradient(90deg, var(--ice), var(--ice-hi));border-radius:2px;height:100%;display:block}.mastery.g i{background:linear-gradient(90deg, #17c880, var(--acc))}html[data-theme=light] .mastery.g i{background:linear-gradient(90deg, #0b8a5f, var(--acc))}.stat-row{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;display:grid}.stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-card);padding:16px 18px}.stat .v{font-family:var(--mono);letter-spacing:-.02em;margin-top:6px;font-size:27px;font-weight:700}.stat .v small{color:var(--muted);font-size:13px;font-weight:500}.stat .delta{font-family:var(--mono);margin-top:4px;font-size:11px}.delta.up{color:var(--green)}.delta.down{color:var(--red)}table.list{border-collapse:collapse;width:100%;font-size:13.5px}table.list th{text-align:left;font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line);padding:10px 14px;font-size:10px;font-weight:500}table.list td{border-bottom:1px solid var(--line-soft);color:var(--txt-2);vertical-align:middle;padding:12px 14px}table.list tr:last-child td{border-bottom:none}table.list tr.rowlink{cursor:pointer;transition:background .12s}table.list tr.rowlink:hover{background:var(--panel-2)}table.list td.strong{color:var(--txt);font-weight:700}.microbar{background:var(--line);vertical-align:middle;border-radius:2px;width:74px;height:4px;margin-right:8px;display:inline-block;overflow:hidden}.microbar i{background:var(--green);border-radius:2px;height:100%;display:block}.microbar.warn i{background:var(--ice)}.microbar.bad i{background:var(--red)}.input,select.input{background:var(--panel-2);border:1px solid var(--line-2);border-radius:var(--r-sm);width:100%;color:var(--txt);outline:none;padding:9px 12px;font-family:inherit;font-size:14px;transition:border-color .15s}.input:focus{border-color:var(--acc)}.input::placeholder{color:var(--faint)}.field{flex-direction:column;flex-shrink:0;gap:6px;display:flex}.seg{flex-wrap:wrap;gap:6px;max-width:100%;display:inline-flex}.seg button{border:1px solid var(--line-2);border-radius:var(--r-sm);font-family:var(--sans);letter-spacing:.01em;color:var(--txt-2);background:0 0;padding:6px 12px;font-size:12.5px;font-weight:600;transition:color .15s,background .15s,border-color .15s}.seg button:hover{color:var(--txt);border-color:var(--txt-2)}.seg button.on{background:var(--txt);border-color:var(--txt);color:var(--bg);font-weight:700}.sep{background:var(--line-soft);border:none;height:1px;margin:16px 0}.empty-hint{border:1px dashed var(--line-2);border-radius:var(--r-md);text-align:center;color:var(--muted);padding:22px;font-size:13.5px}.kbd{font-family:var(--mono);border:1px solid var(--line-2);background:var(--panel-2);color:var(--txt-2);border-bottom-width:2px;border-radius:4px;padding:2px 6px;font-size:11px}.toast{background:var(--panel-2);border:1px solid var(--line-2);z-index:100;box-shadow:var(--shadow-pop);border-radius:99px;padding:10px 20px;font-size:13.5px;font-weight:600;animation:.25s ease-out fadeUp;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast.ok{color:var(--green);border-color:#3ee6a266}.warn-banner{background:var(--ice-dim);color:var(--ice);border-radius:var(--r-md);border:1px solid #6fc2ff59;align-items:center;gap:10px;padding:10px 14px;font-size:13px;display:flex}html[data-theme=light] .warn-banner{color:var(--ice-hi)}.fade-up{animation:.5s cubic-bezier(.22,.9,.3,1) both fadeUp}.fade-up.d1{animation-delay:60ms}.fade-up.d2{animation-delay:.12s}.fade-up.d3{animation-delay:.18s}.fade-up.d4{animation-delay:.24s}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.ex-layout{flex-direction:column;gap:18px;display:flex}.ex-title-row{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.ex-title-row h1{letter-spacing:-.02em;font-size:21px;font-weight:800}.ex-title-row .back{font-family:var(--mono);color:var(--muted);border:1px solid var(--line-2);border-radius:var(--r-sm);padding:5px 10px;font-size:12px;transition:color .15s,border-color .15s}.ex-title-row .back:hover{color:var(--txt);border-color:var(--acc)}.ex-title-row .chips{flex-wrap:wrap;gap:6px;display:flex}.ex-title-row .session-score{font-family:var(--mono);color:var(--muted);align-items:center;margin-left:auto;font-size:12px;display:flex}.ex-title-row .session-score b{color:var(--green);font-size:15px}.kb-legend{flex-wrap:wrap;align-items:center;gap:18px;padding:0 4px 12px;display:flex}.kb-legend .lg{color:var(--txt-2);align-items:center;gap:7px;font-size:12px;display:flex}.kb-legend .sw{border:1px solid var(--line-2);border-radius:4px;width:13px;height:13px}.sw.g{background:#bfe2fb;border-color:#7db8e2}.sw.g2{background:#d6c9f7;border-color:#8b5cf6}.sw.h{background:#a3f0cd;border-color:#5dd39d}.sw.x{background:#ffb0bc;border-color:#e0798a}.sw.gt{background:var(--ice);border-color:var(--ice)}.kb-legend .hint{font-family:var(--mono);color:var(--faint);margin-left:auto;font-size:11px}.ex-bottom{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:start;gap:18px;display:grid}.fb-head{align-items:center;gap:14px;display:flex}.fb-head .chord-sym{font-size:26px}.fb-head .vl-hint{color:var(--muted);flex:1;font-size:12.5px;line-height:1.45}.fb-head .vl-hint b{color:var(--txt-2)}.fb-list{grid-template-columns:1fr 1fr;gap:8px;margin-top:14px;display:grid}.transport-panel{flex-direction:column;gap:14px;display:flex}.transport-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.keyboard-shell.success:after{content:"";pointer-events:none;border-radius:18px;animation:.55s ease-out kbSuccess;position:absolute;inset:0}@keyframes kbSuccess{0%{box-shadow:0 0 0 2px #3ee6a2e6}to{box-shadow:0 0 #3ee6a200}}.btn.gear{width:34px;height:30px;padding:0;font-size:19px;line-height:1}.btn.sm.gear{width:32px;height:28px;font-size:18px}.field-label{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-size:10px}.dd{position:relative}.dd-btn{border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--panel-2);width:100%;color:var(--txt);text-align:left;cursor:pointer;align-items:center;gap:8px;padding:9px 11px;font-size:13.5px;transition:border-color .15s;display:flex;overflow:hidden}.dd-btn:hover{border-color:var(--txt-2)}.dd-btn.open{border-color:var(--txt)}.dd-val{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.dd-caret{color:var(--muted);flex-shrink:0;margin-left:auto;font-size:10px}.dd-list{z-index:60;border:1px solid var(--line-2);border-radius:var(--r-md);background:var(--bg);width:max-content;min-width:100%;max-width:340px;box-shadow:var(--shadow-card);flex-direction:column;margin:0;padding:4px;list-style:none;display:flex;position:absolute;top:calc(100% + 5px);left:0}.dd-opt{border-radius:var(--r-sm);width:100%;color:var(--txt-2);text-align:left;cursor:pointer;background:0 0;border:none;align-items:baseline;gap:10px;padding:8px 10px;font-size:13.5px;display:flex}.dd-opt.hov{background:var(--panel-2);color:var(--txt)}.dd-opt.on{color:var(--txt);font-weight:600}.dd-detail{color:var(--muted);font-size:12px}.dd-check{color:var(--acc);margin-left:auto;padding-left:10px;font-size:12px}.legal{max-width:720px}.legal h1{letter-spacing:-.02em;font-size:26px;font-weight:800}.legal .sub{color:var(--muted);margin:4px 0 28px;font-size:13px}.legal section{margin-bottom:26px}.legal h2{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:10px;font-size:10.5px}.legal p{color:var(--txt-2);margin-bottom:10px;font-size:14px;line-height:1.7}.legal p b{color:var(--txt)}.legal ul{margin:0 0 10px 18px}.legal li{color:var(--txt-2);margin-bottom:4px;font-size:14px;line-height:1.7}.legal li b{color:var(--txt)}.legal .mono{font-family:var(--mono);color:var(--txt);font-size:12.5px}.auth-page{place-items:center;min-height:calc(100vh - 58px);padding:40px 24px;display:grid}.auth-card{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);flex-direction:column;gap:14px;width:100%;max-width:420px;padding:30px 28px 24px;display:flex}.auth-card h1{letter-spacing:-.02em;font-size:24px;font-weight:800}.auth-card .sub{color:var(--muted);margin-top:-6px;font-size:13.5px;line-height:1.55}.auth-fields{flex-direction:column;gap:12px;margin-top:4px;display:flex}.auth-field{flex-direction:column;gap:5px;display:flex}.auth-field>span{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-size:10px}.auth-field .input{width:100%}.auth-msg{font-size:12.5px;line-height:1.5}.auth-msg.ok{color:var(--acc)}.auth-msg.ko{color:var(--red)}.auth-actions{align-items:center;gap:10px;margin-top:4px;display:flex}.auth-actions .btn{flex:1;justify-content:center}.auth-alt{color:var(--muted);justify-content:center;align-items:center;gap:8px;font-size:12.5px;display:flex}.auth-alt button{color:var(--ice);cursor:pointer}.auth-alt button:hover{text-decoration:underline}.auth-foot{border-top:1px solid var(--line-soft);color:var(--faint);padding-top:14px;font-size:11.5px;line-height:1.6}.doors{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:22px;display:grid}@media (max-width:860px){.doors{grid-template-columns:1fr}}.door{border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--bg);flex-direction:column;gap:8px;padding:22px 20px 20px;transition:background .15s;display:flex}.door:hover{background:var(--panel)}.door .k{letter-spacing:-.015em;color:var(--txt);font-size:17px;font-weight:800}.door .d{color:var(--muted);max-width:34ch;font-size:12.5px;line-height:1.55}.door .n{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--faint);margin-top:auto;font-size:10px}.suggest{border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel);flex-wrap:wrap;align-items:center;gap:16px;padding:14px 18px;display:flex}.suggest p{color:var(--txt-2);flex:1;min-width:260px;font-size:13px;line-height:1.55}.suggest p b{color:var(--txt)}.dash-grid{grid-template-columns:minmax(0,2fr) minmax(0,1fr);align-items:start;gap:18px;display:grid}.resume-card{background:radial-gradient(600px 200px at 20% -60px, #3ee6a212, transparent 70%), var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-card);flex-direction:column;gap:14px;padding:22px;display:flex}html[data-theme=light] .resume-card{background:radial-gradient(600px 200px at 20% -60px, #0d9f6e0f, transparent 70%), var(--panel)}.resume-card .row{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.resume-card h2{letter-spacing:-.02em;font-size:20px;font-weight:800}.mini-sheet{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--panel-2);flex-wrap:wrap;display:flex;overflow:hidden}.mini-sheet span{border-right:1px solid var(--line-soft);font-size:14px;font-family:var(--mono);padding:8px 14px}.mini-sheet span:last-child{border-right:none}.mini-sheet .cur{background:var(--acc-dim);color:var(--acc)}.session-list{flex-direction:column;display:flex}.session-item{border-bottom:1px solid var(--line-soft);align-items:center;gap:12px;padding:12px 16px;font-size:13.5px;display:flex}.session-item:last-child{border-bottom:none}.session-item .when{font-family:var(--mono);color:var(--muted);flex-shrink:0;width:62px;font-size:11px}.session-item .what{color:var(--txt-2);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.session-item .what b{color:var(--txt)}.session-item .score{font-family:var(--mono);font-size:12.5px;font-weight:700}.lib-layout{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:start;gap:18px;display:grid}.lib-tools{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.lib-tools .input{max-width:300px}.filter-chips{flex-wrap:wrap;gap:6px;display:flex}.filter-chips .chip{cursor:pointer;transition:border-color .15s,color .15s}.filter-chips .chip:hover{border-color:var(--line-2)}.filter-chips .chip.on{color:var(--acc);background:var(--acc-dim);border-color:#3ee6a259}html[data-theme=light] .filter-chips .chip.on{border-color:#0d9f6e59}.builder-bars{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.bbar{border:1px solid var(--line);background:var(--panel-2);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;min-height:56px;padding:8px 10px;transition:border-color .12s,background .12s;display:flex;position:relative}.bbar:hover{border-color:var(--line-2)}.bbar .chord-sym{font-size:17px}.bbar .num{font-family:var(--mono);color:var(--faint);font-size:9px;position:absolute;top:4px;left:7px}.bbar.editing{background:var(--acc-dim);border-color:#3ee6a273}html[data-theme=light] .bbar.editing{border-color:#0d9f6e66}.bbar.empty .chord-sym{color:var(--faint);font-weight:400}.chord-pal{flex-direction:column;gap:10px;margin-top:14px;display:flex}.pal-row{flex-wrap:wrap;gap:5px;margin-top:6px;display:flex}.pal-row button{font-family:var(--mono);background:var(--panel-2);border:1px solid var(--line-2);border-radius:var(--r-sm);color:var(--txt-2);padding:7px 10px;font-size:12.5px;font-weight:600;transition:border-color .12s,color .12s}.pal-row button:hover{border-color:var(--acc);color:var(--txt)}.pal-row button.on{color:var(--acc);background:var(--acc-dim);border-color:#3ee6a266}html[data-theme=light] .pal-row button.on{border-color:#0d9f6e59}.midi-layout{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);align-items:start;gap:18px;max-width:980px;margin:0 auto;display:grid}.device{border-bottom:1px solid var(--line-soft);align-items:center;gap:14px;padding:16px 18px;display:flex}.device:last-child{border-bottom:none}.device .icon-di{border-radius:var(--r-md);border:1px solid var(--line);background:var(--panel-2);flex-shrink:0;place-items:center;width:42px;height:42px;font-size:18px;display:grid}.device .info{flex:1;min-width:0}.device .name{font-size:15px;font-weight:700}.device .sub{font-family:var(--mono);color:var(--muted);margin-top:2px;font-size:11px}.device.active{background:linear-gradient(90deg, var(--green-dim), transparent 60%)}.monitor{border:1px solid var(--line);border-radius:var(--r-md);font-family:var(--mono);color:var(--txt-2);background:#05060a;min-height:170px;max-height:260px;padding:14px 16px;font-size:12px;line-height:1.9;overflow-y:auto}html[data-theme=light] .monitor{color:#c2ccd4;background:#17242c}.monitor .t{color:var(--faint);margin-right:10px}html[data-theme=light] .monitor .t{color:#56656f}.monitor .on{color:var(--acc)}html[data-theme=light] .monitor .on{color:#3ee6a2}.monitor .off{color:var(--faint)}html[data-theme=light] .monitor .off{color:#56656f}.monitor .vel{color:var(--ice)}html[data-theme=light] .monitor .vel{color:#6fc2ff}.monitor .cursor{background:var(--acc);vertical-align:-2px;width:7px;height:13px;animation:1.1s steps(2,end) infinite pulse;display:inline-block}html[data-theme=light] .monitor .cursor{background:#3ee6a2}.big-status{text-align:center;border-bottom:1px solid var(--line-soft);padding:30px 22px 26px}.big-status .ring{background:var(--green-dim);width:74px;height:74px;box-shadow:0 0 40px -8px var(--acc-glow);border:2px solid #3ee6a273;border-radius:50%;place-items:center;margin:0 auto 14px;font-size:28px;display:grid}.big-status .ring.err{background:var(--red-dim);border-color:#ff647280;box-shadow:0 0 40px -8px #ff647266}.big-status h2{font-size:19px;font-weight:800}.big-status p{color:var(--muted);margin-top:4px;font-size:13px}.prof-layout{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:start;gap:18px;display:grid}.week-chart{align-items:flex-end;gap:8px;height:110px;padding:4px 2px 0;display:flex}.week-chart .col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:6px;height:100%;display:flex}.week-chart .b{background:linear-gradient(180deg, var(--acc), #3ee6a24d);border-radius:4px 4px 0 0;width:100%;max-width:34px;min-height:2px}html[data-theme=light] .week-chart .b{background:linear-gradient(180deg, var(--acc), #0d9f6e4d)}.week-chart .b.low{background:linear-gradient(180deg, var(--line-2), var(--line))}.week-chart .d{font-family:var(--mono);color:var(--muted);font-size:10px}.weak{border-bottom:1px solid var(--line-soft);align-items:center;gap:12px;padding:12px 16px;display:flex}.weak:last-child{border-bottom:none}.weak .lbl{color:var(--txt-2);flex:1;font-size:13.5px}.weak .lbl b{color:var(--txt)}.weak .pct{font-family:var(--mono);text-align:right;width:40px;font-size:12.5px;font-weight:700}.keys-heat{grid-template-columns:repeat(12,1fr);gap:5px;display:grid}.keys-heat .k{aspect-ratio:1;font-family:var(--mono);border:1px solid var(--line-soft);color:var(--txt-2);border-radius:7px;place-items:center;font-size:10.5px;font-weight:600;display:grid}.h4{background:#3ee6a259}.h3{background:#3ee6a22e}.h2{background:#6fc2ff33}.h1{background:#ff647233}.h0{background:var(--panel-2);color:var(--faint)}html[data-theme=light] .h4{background:#0d9f6e4d}html[data-theme=light] .h3{background:#0d9f6e26}html[data-theme=light] .h2{background:#2586c729}html[data-theme=light] .h1{background:#d6455d29}.scale-list{flex-direction:column;gap:7px;display:flex}.scale-item{text-align:left;background:var(--panel-2);border:1px solid var(--line-2);border-radius:var(--r-md);cursor:pointer;align-items:center;gap:10px;padding:9px 12px;transition:border-color .12s,background .12s;display:flex}.scale-item:hover{border-color:var(--acc)}.scale-item.on{background:var(--acc-dim);border-color:#3ee6a280}html[data-theme=light] .scale-item.on{border-color:#0d9f6e73}.scale-item .sname{white-space:nowrap;font-size:13.5px;font-weight:700}.scale-item.on .sname{color:var(--acc)}.scale-item .swhy{color:var(--muted);flex:1;font-size:12px}.fb-chord-sm{font-size:20px}@media (max-width:1024px){.leadsheet{grid-template-columns:repeat(4,1fr)}}@media (max-width:900px){.ex-bottom{grid-template-columns:1fr}.btn.gear{width:34px;height:30px;padding:0;font-size:19px;line-height:1}.btn.sm.gear{width:32px;height:28px;font-size:18px}.legal{max-width:720px}.legal h1{letter-spacing:-.02em;font-size:26px;font-weight:800}.legal .sub{color:var(--muted);margin:4px 0 28px;font-size:13px}.legal section{margin-bottom:26px}.legal h2{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:10px;font-size:10.5px}.legal p{color:var(--txt-2);margin-bottom:10px;font-size:14px;line-height:1.7}.legal p b{color:var(--txt)}.legal ul{margin:0 0 10px 18px}.legal li{color:var(--txt-2);margin-bottom:4px;font-size:14px;line-height:1.7}.legal li b{color:var(--txt)}.legal .mono{font-family:var(--mono);color:var(--txt);font-size:12.5px}.auth-page{place-items:center;min-height:calc(100vh - 58px);padding:40px 24px;display:grid}.auth-card{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);flex-direction:column;gap:14px;width:100%;max-width:420px;padding:30px 28px 24px;display:flex}.auth-card h1{letter-spacing:-.02em;font-size:24px;font-weight:800}.auth-card .sub{color:var(--muted);margin-top:-6px;font-size:13.5px;line-height:1.55}.auth-fields{flex-direction:column;gap:12px;margin-top:4px;display:flex}.auth-field{flex-direction:column;gap:5px;display:flex}.auth-field>span{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-size:10px}.auth-field .input{width:100%}.auth-msg{font-size:12.5px;line-height:1.5}.auth-msg.ok{color:var(--acc)}.auth-msg.ko{color:var(--red)}.auth-actions{align-items:center;gap:10px;margin-top:4px;display:flex}.auth-actions .btn{flex:1;justify-content:center}.auth-alt{color:var(--muted);justify-content:center;align-items:center;gap:8px;font-size:12.5px;display:flex}.auth-alt button{color:var(--ice);cursor:pointer}.auth-alt button:hover{text-decoration:underline}.auth-foot{border-top:1px solid var(--line-soft);color:var(--faint);padding-top:14px;font-size:11.5px;line-height:1.6}.doors{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:22px;display:grid}@media (max-width:860px){.doors{grid-template-columns:1fr}}.door{border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--bg);flex-direction:column;gap:8px;padding:22px 20px 20px;transition:background .15s;display:flex}.door:hover{background:var(--panel)}.door .k{letter-spacing:-.015em;color:var(--txt);font-size:17px;font-weight:800}.door .d{color:var(--muted);max-width:34ch;font-size:12.5px;line-height:1.55}.door .n{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--faint);margin-top:auto;font-size:10px}.suggest{border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel);flex-wrap:wrap;align-items:center;gap:16px;padding:14px 18px;display:flex}.suggest p{color:var(--txt-2);flex:1;min-width:260px;font-size:13px;line-height:1.55}.suggest p b{color:var(--txt)}.dash-grid,.prof-layout{grid-template-columns:1fr}}@media (max-width:980px){.lib-layout{grid-template-columns:1fr}}@media (max-width:860px){.midi-layout{grid-template-columns:1fr}}@media (max-width:760px){.nav a{padding:0 9px;font-size:12.5px}.brand-sub{display:none}.page{padding:22px 14px 60px}.leadsheet{grid-template-columns:repeat(2,1fr)}.midi-pill span.lbl{display:none}}@media (max-width:560px){.fb-list{grid-template-columns:1fr}}.seg a{border:1px solid var(--line-2);border-radius:var(--r-sm);font-family:var(--sans);letter-spacing:.01em;color:var(--txt-2);padding:6px 12px;font-size:12.5px;font-weight:600;transition:color .15s,background .15s,border-color .15s;display:inline-block}.seg a:hover{color:var(--txt);border-color:var(--txt-2)}.seg a.on{background:var(--txt);border-color:var(--txt);color:var(--bg);font-weight:700}.rec-banner{background:var(--red-dim);color:var(--red);border-radius:var(--r-md);border:1px solid #ff647266;align-items:center;gap:10px;padding:10px 14px;font-size:13px;font-weight:600;display:flex}.rec-banner .reddot{background:var(--red);border-radius:50%;width:9px;height:9px;animation:1s ease-in-out infinite pulse;box-shadow:0 0 10px #ff6472cc}.btn.rec{color:var(--red)}.btn.rec.armed{background:var(--red);border-color:var(--red);color:#fff}.focus-view{z-index:80;background:var(--bg);flex-direction:column;gap:14px;padding:14px 22px 16px;display:flex;position:fixed;inset:0;overflow:auto}body:has(.focus-view) .topbar{display:none}.focus-head{align-items:center;gap:16px;display:flex}.focus-head .tag{letter-spacing:.12em}.focus-ribbon{flex-shrink:0;gap:2px;height:7px;display:flex}.focus-ribbon i{background:var(--line);border-radius:2px;flex:1}.focus-ribbon i.done{background:var(--line-2)}.focus-ribbon i.loop{background:#6fc2ff52}.focus-ribbon i.cur{background:var(--acc);box-shadow:0 0 10px var(--acc-glow)}.focus-stage{flex-direction:column;flex:1;justify-content:center;gap:14px;min-height:0;display:flex}.focus-stage .chordstaff{background:0 0;border:none;padding:0}.focus-state{flex-wrap:wrap;justify-content:center;align-items:center;gap:20px;display:flex}.focus-state .vl{color:var(--muted);font-size:14px}.focus-state .vl b{color:var(--txt-2)}.focus-state .deg{border-radius:10px;min-width:42px;height:34px;font-size:15px}.focus-state .deg.guide{box-shadow:inset 0 -4px 0 var(--ice)}.focus-fallback{text-align:center}.focus-fallback .now-sym .chord-sym{font-size:clamp(60px,9vw,124px);line-height:.95}.focus-fallback .now-sym .chord-sym .q{font-size:.5em}.focus-fallback .now-sym .chord-sym sup{vertical-align:.48em;font-size:.34em}.focus-fallback .nxt{font-family:var(--mono);color:var(--faint);letter-spacing:.22em;justify-content:center;align-items:baseline;gap:12px;margin-top:20px;font-size:11px;display:flex}.focus-fallback .nxt .chord-sym{color:var(--muted);font-size:32px}.focus-fallback .nxt .chord-sym .q,.focus-fallback .nxt .chord-sym sup{color:var(--faint)}.focus-set{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;display:flex}.focus-view .keyboard-shell{flex-shrink:0;padding:10px 12px 12px}.focus-view .keyboard{height:27vh}.focus-view.no-staff .keyboard{height:33vh}.focus-dock{flex-shrink:0;justify-content:center;align-items:center;gap:12px;padding-bottom:4px;display:flex}.focus-dock .center{align-items:center;gap:12px;margin:0 auto;display:flex}.focus-dock .btn.icon{border-radius:15px;width:54px;height:54px;font-size:19px}.focus-dock .btn.icon.wide{gap:10px;width:auto;padding:0 22px}.focus-pct{font-family:var(--mono);min-width:84px;font-size:26px;font-weight:700}.focus-pct small{letter-spacing:.16em;color:var(--faint);font-size:9px;font-weight:500;display:block}.focus-dock .tempo-val{margin-left:10px}.pattern-strip{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-card);flex-wrap:wrap;align-items:center;gap:16px;padding:10px 16px;display:flex}.pattern-strip .cells{gap:4px;display:flex}.pattern-strip .cell{border:1px solid var(--line);width:40px;height:34px;font-family:var(--mono);color:var(--faint);background:var(--panel-2);border-radius:8px;place-items:center;font-size:12px;transition:background .1s,border-color .1s;display:grid}.pattern-strip .cell.slot{color:var(--acc);background:var(--acc-dim);border-color:#3ee6a273;font-weight:700}html[data-theme=light] .pattern-strip .cell.slot{border-color:#0d9f6e66}.pattern-strip .cell.now{border-color:var(--ice);box-shadow:0 0 0 1px var(--ice) inset}.pattern-strip .lasthit{font-family:var(--mono);min-width:170px;font-size:12.5px;font-weight:700}.staff-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-card);padding:4px 14px 2px}.staff-head{justify-content:space-between;align-items:center;gap:12px;padding:2px 0 0;display:flex}.staff-head .tag{font-size:9px}.staff-scroll{height:130px;position:relative;overflow:hidden}.staff-panel svg{fill:var(--staff);stroke:var(--staff)}.staff-inner{will-change:transform;position:absolute;top:0;left:0}.staff-playhead{background:var(--acc);opacity:.7;pointer-events:none;width:1.5px;position:absolute;top:6px;bottom:6px}.key-w.ghost2{background:linear-gradient(#b3a1e8,#d6c9f7 12% 86%,#a08cdc 100%);box-shadow:inset 0 -4px #8b5cf6}.key-b.ghost2{background:linear-gradient(#2f2358,#453478 85%,#221a40);border-color:#171030;box-shadow:inset 0 -4px #a78bfa}.sw.lh{background:#d6c9f7;border-color:#a08cdc}.bar{min-height:64px}.bar .chord-sym{font-size:19px}.bar.two .chord-sym{font-size:15.5px}.ls-wrap{position:relative}.ls-scroll.collapsed{scrollbar-width:none;max-height:152px;overflow-y:auto;-webkit-mask-image:linear-gradient(#000 82%,#0000);mask-image:linear-gradient(#000 82%,#0000)}.ls-scroll.collapsed::-webkit-scrollbar{display:none}.ls-toggle{z-index:5;font-family:var(--mono);letter-spacing:.08em;border:1px solid var(--line-2);background:var(--panel-2);color:var(--muted);cursor:pointer;border-radius:99px;padding:3px 10px;font-size:10px;transition:color .15s,border-color .15s;position:absolute;bottom:-12px;right:6px}.ls-toggle:hover{color:var(--acc);border-color:var(--acc)}.chordstaff{background:var(--panel);border:1px solid var(--line-soft);border-radius:var(--r-md);padding:6px 10px 4px}.chordstaff svg{width:100%;height:auto;display:block}.chordstaff-loading{min-height:150px}.chordstaff svg{fill:var(--staff);stroke:var(--staff)}.chordstaff svg [stroke=\#444]{stroke:var(--txt-2)}.ex-main{flex-direction:column;gap:16px;min-width:0;display:flex}.keyinfo{font-family:var(--mono);letter-spacing:.04em;color:var(--muted);white-space:nowrap;font-size:11.5px}.keyinfo b{color:var(--txt-2);font-weight:700}.chordbar{border-bottom:1px solid var(--line-soft);align-items:center;gap:18px;margin-bottom:12px;padding:2px 6px 13px;display:flex}.chordbar .now{flex-shrink:0;align-items:baseline;gap:11px;display:flex}.chordbar .now .chord-sym{font-size:30px;line-height:1}.chordbar .pos{font-family:var(--mono);letter-spacing:.1em;color:var(--faint);white-space:nowrap;font-size:10.5px}.chordbar .vl{color:var(--muted);min-width:0;font-size:12.5px;line-height:1.35}.chordbar .vl b{color:var(--txt-2)}.chordbar .right{flex-shrink:0;align-items:center;gap:12px;margin-left:auto;display:flex}.chordbar .pct{font-family:var(--mono);text-align:right;min-width:44px;font-size:17px;font-weight:700}.degs{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:6px;display:flex}.deg{border:1px solid var(--line-2);background:var(--panel-2);min-width:34px;height:28px;font-family:var(--mono);color:var(--txt-2);border-radius:8px;justify-content:center;align-items:center;padding:0 9px;font-size:12.5px;font-weight:700;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.deg.ok{background:var(--acc-dim);color:var(--green);border-color:#3ee6a273}.deg.miss{color:var(--muted);background:0 0;border-style:dashed}.deg.wrong{background:var(--red-dim);color:var(--red);border-color:#ff647266}.deg.guide{box-shadow:inset 0 -3px 0 var(--ice)}html[data-theme=light] .deg.ok{border-color:#0d9f6e66}html[data-theme=light] .deg.wrong{border-color:#d6455d59}.degs .sep{color:var(--faint);margin:0 2px;font-size:11px}.staff-wrap{margin-bottom:12px}.staff-wrap[hidden]{display:none}.dock{flex-wrap:wrap;align-items:center;gap:10px;padding-top:14px;display:flex}.dock .grow{flex:1}.say{font-family:var(--mono);letter-spacing:.04em;font-size:12px}.say .miss{color:var(--muted)}.say .bad{color:var(--red)}.say .good{color:var(--green)}.toggle-mini{font-family:var(--mono);letter-spacing:.1em;color:var(--faint);background:0 0;border:1px solid #0000;border-radius:7px;padding:5px 9px;font-size:10.5px;transition:color .15s,border-color .15s,background .15s}.toggle-mini:hover{color:var(--acc)}.toggle-mini.on{color:var(--ice);background:var(--ice-dim);border-color:#6fc2ff59}.setbar{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-card);z-index:30;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;display:flex;position:relative}.setbar .divider{background:var(--line);width:1px;height:22px;margin:0 3px}.setbar .grow{flex:1}.pop-wrap{display:inline-flex;position:relative}.sel{border:1px solid var(--line-2);border-radius:var(--r-md);background:var(--panel-2);height:36px;color:var(--txt);white-space:nowrap;align-items:center;gap:9px;padding:0 12px;font-size:13px;font-weight:700;transition:border-color .15s,background .15s;display:inline-flex}.sel:hover{border-color:var(--acc)}.sel.open{border-color:var(--acc);background:var(--acc-dim)}.sel.icon{justify-content:center;width:36px;padding:0;font-size:15px}.sel .k{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:9.5px;font-weight:500}.sel .caret{color:var(--faint);margin-left:1px;font-size:9px}.switch{border:1px solid var(--line-2);border-radius:var(--r-md);background:var(--panel-2);align-items:center;gap:9px;height:36px;padding:0 12px;display:inline-flex}.switch .k{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:9.5px}.pop{z-index:60;background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-md);min-width:264px;box-shadow:var(--shadow-pop);padding:8px;animation:.14s cubic-bezier(.22,.9,.3,1) popIn;position:absolute;top:calc(100% + 8px);left:0}.pop.right{left:auto;right:0}@keyframes popIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.pop .sep{background:var(--line-soft);height:1px;margin:6px 10px}.pop>.tag{padding:6px 10px 4px;display:block}.pop-opt{border-radius:var(--r-sm);text-align:left;background:0 0;border:none;flex-direction:column;gap:2px;width:100%;padding:8px 10px;display:flex}.pop-opt:hover{background:var(--panel-2)}.pop-opt.on{background:var(--acc-dim)}.pop-opt .nm{white-space:nowrap;font-size:13px;font-weight:700}.pop-opt.on .nm{color:var(--acc)}.pop-opt .dsc{color:var(--muted);font-size:11.5px;line-height:1.3}.pop-row{border-bottom:1px solid var(--line-soft);align-items:center;gap:12px;padding:10px;display:flex}.pop-row:last-child{border-bottom:none}.pop-row .lb{flex-direction:column;flex:1;min-width:0;display:flex}.pop-row .lb .t{font-size:13px;font-weight:700}.pop-row .lb .s{color:var(--muted);font-size:11.5px;line-height:1.3}.pop-row .seg button{padding:6px 10px;font-size:12px}.pop-row input[type=range]{width:116px;accent-color:var(--acc);cursor:pointer;flex:none}.sampler-state{color:var(--muted);align-items:center;font-size:11.5px;display:inline-flex}.sampler-state.warn{color:var(--amber)}.kb-legend[hidden]{display:none}@media (max-width:760px){.pop{min-width:0;position:fixed;top:auto;left:12px;right:12px}}@media (pointer:coarse){.btn{min-height:44px}.btn.sm{min-height:40px}.btn.icon{width:52px;height:52px}.btn.icon.wide{width:auto}.seg button,.seg a{align-items:center;min-height:44px;display:inline-flex}.toggle{width:46px;height:26px}.toggle:after{width:20px;height:20px}.toggle.on:after{transform:translate(20px)}.sel,.switch{height:46px}.sel.icon{width:46px}.toggle-mini{min-height:40px}.rail-btn{width:40px;height:40px}.pop-opt{justify-content:center;min-height:52px}.pop-row{padding:14px 10px}.ls-toggle{padding:8px 14px}.bar{min-height:68px}input[type=range]{height:32px}input[type=range]::-webkit-slider-thumb{width:22px;height:22px}.deg{min-height:34px}.dock{gap:12px}.hints{display:none}.page{padding-top:16px;padding-bottom:28px}.ex-layout{gap:12px}.chordbar{margin-bottom:10px;padding-bottom:10px}.staff-wrap{margin-bottom:10px}.dock{padding-top:12px}.ls-scroll.collapsed{max-height:76px}:root{--kb-h:clamp(140px, 13vw, 162px)}.keyboard{height:var(--kb-h)}.warn-banner{padding:8px 12px;font-size:12.5px}.btn:hover,.sel:hover,.rail-btn:hover,.toggle-mini:hover{border-color:var(--line-2)}.btn.primary:hover{background:var(--acc);border-color:var(--acc)}.pop-opt:hover{background:0 0}.pop-opt.on:hover{background:var(--acc-dim)}}@media (pointer:coarse) and (max-width:900px){.pop,.pop.right{border-radius:var(--r-lg);min-width:0;max-height:70vh;animation:.18s cubic-bezier(.22,.9,.3,1) sheetUp;position:fixed;inset:auto 10px 10px;overflow-y:auto}@keyframes sheetUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}}.fx{z-index:1;flex-direction:column;gap:10px;height:calc(100vh - 58px);padding:10px 24px 12px;display:flex;position:relative}.fx-top{flex-shrink:0;align-items:center;gap:14px;min-height:32px;display:flex}.fx-top .back{font-family:var(--mono);color:var(--faint);font-size:11px}.fx-top .back:hover{color:var(--txt-2)}.fx-caps{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-size:10px;font-weight:500}.fx-caps b{color:var(--txt-2);font-weight:600}.fx-top .seg a{padding:5px 11px}.fx-top .sp{margin-left:auto}.fx-top .btn.sm{color:var(--muted);background:0 0;border-color:#0000}.fx-top .btn.sm:hover{color:var(--txt)}.fxg{border:1px solid var(--line);scrollbar-width:none;overscroll-behavior:contain;flex-shrink:0;overflow-y:auto}.fxg::-webkit-scrollbar{display:none}.fxg-in{background:var(--line);grid-template-columns:repeat(8,1fr);gap:1px;display:grid}.fxg.arming .cell{cursor:crosshair}.fxg.arming{box-shadow:inset 0 0 0 1px var(--ice)}.fxg .cell{background:var(--bg);cursor:pointer;border:none;justify-content:center;align-items:center;gap:7px;min-width:0;padding:0 8px;transition:background .3s,opacity .3s,box-shadow .3s;display:inline-flex}.fxg .cell .num{font-family:var(--mono);color:var(--faint);font-size:8.5px}.fxg .cell .chord-sym{color:var(--txt-2);font-size:14.5px;font-weight:600;transition:color .3s}.fxg .cell .chord-sym .q,.fxg .cell .chord-sym sup{color:var(--muted)}.fxg .cell.done{opacity:.5}.fxg .cell.cur{background:var(--panel)}.fxg .cell.cur .chord-sym,.fxg .cell.cur .chord-sym .q,.fxg .cell.cur .chord-sym sup{color:var(--txt)}.fxg .cell.loop{box-shadow:inset 0 -2px #93c5fd59}html[data-theme=light] .fxg .cell.loop{box-shadow:inset 0 -2px #2563eb4d}.fxg .cell.cur.loop{box-shadow:inset 0 -2px 0 var(--ice)}.fxg .cell.incell:not(.loop):not(.cur){box-shadow:inset 0 -2px #93c5fd38}html[data-theme=light] .fxg .cell.incell:not(.loop):not(.cur){box-shadow:inset 0 -2px #2563eb2e}.fx-prog{background:var(--line);border-radius:1px;flex-shrink:0;height:2px;margin:0 2px;overflow:hidden}.fx-prog i{background:var(--txt-2);border-radius:1px;height:100%;transition:width .5s;display:block}.fx-name{text-align:center;flex-shrink:0;margin-top:1.2vh}.fx-name .chord-sym{letter-spacing:-.03em;font-size:clamp(44px,6vw,84px);font-weight:650;line-height:1}.fx-name .chord-sym .q{color:var(--txt-2);font-size:.62em}.fx-name .chord-sym sup{vertical-align:.75em;color:var(--txt-2);font-size:.42em}.fx-name.md .chord-sym{font-size:clamp(30px,3.4vw,46px)}.fx-name .sub{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-top:7px;font-size:10px}.fx-name .sub b{color:var(--txt-2);font-weight:600}.fx-staff{flex-shrink:0;width:100%;max-width:1100px;margin:0 auto}.fx-stage{flex-direction:column;flex:1;justify-content:flex-end;min-height:0;display:flex}.fx-stage .fx-field{flex-direction:column;justify-content:flex-end;min-width:0;min-height:0;display:flex;position:relative}.fx-field,.fx-tags{position:relative}.fx-tag{font-family:var(--mono);white-space:nowrap;color:var(--ice);background:var(--bg-2);z-index:2;border:1px solid #93c5fd66;border-radius:8px;padding:4px 9px;font-size:11px;font-weight:600;transition:left .55s cubic-bezier(.22,.9,.3,1),bottom .3s,color .2s,border-color .2s,background .2s;position:absolute;bottom:8px;transform:translate(-50%)}.fx-tag.up{bottom:48px}.fx-tag.hit{background:var(--green-dim);color:var(--green);border-color:#0000}.fx-tag.alt{color:var(--alt);border-color:#c4b5fd59}.fx-tag.bad{color:var(--red);background:var(--red-dim);border-color:#f8717166}html[data-theme=light] .fx-tag{background:var(--panel);border-color:#2563eb66}html[data-theme=light] .fx-tag.hit{background:var(--green-dim);border-color:#0000}html[data-theme=light] .fx-tag.alt{border-color:#6d28d94d}.fx-tag:after{content:"";background:#93c5fd66;width:1px;height:9px;transition:height .3s,background .2s;position:absolute;top:100%;left:50%}.fx-tag.up:after{height:49px}.fx-tag.hit:after{background:#4ade8066}.fx-tag.alt:after{background:#c4b5fd59}.fx-tag.bad:after{background:#f8717166}.fx-field .keyboard,.free-stage .keyboard{height:var(--kb-h);flex:none}.fx-field .keyboard{transition:box-shadow .2s}.fx-field.success .keyboard{box-shadow:0 0 0 2px var(--acc), 0 0 34px var(--acc-glow)}.fx-foot{flex-shrink:0;align-items:center;gap:16px;height:40px;margin-top:8px;padding:0;display:flex}.fx-read{text-align:left;font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);cursor:pointer;background:0 0;border:none;min-width:170px;padding-left:18px;font-size:9.5px;line-height:1.7;position:relative}.fx-read:before{content:"⚙";color:var(--faint);font-size:12px;position:absolute;top:1px;left:0}.fx-read:hover,.fx-read:hover:before{color:var(--txt-2)}.fx-foot .center{align-items:center;gap:8px;margin:0 auto;display:flex}.fx-foot .say{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;font-size:10.5px}.fx-foot .say .good{color:var(--green)}.fx-foot .say .miss{color:var(--muted)}.fx-foot .say .bad{color:var(--red)}.fx-act{border:1px solid var(--line);font-family:var(--mono);letter-spacing:.08em;color:var(--txt-2);border-radius:var(--r-sm);background:0 0;padding:5px 11px;font-size:11px;transition:color .15s,background .15s,border-color .15s}.fx-act:hover{color:var(--txt);border-color:var(--txt-2)}.fx-act.main{background:var(--txt);border-color:var(--txt);color:var(--bg);font-weight:600}.fx-act.main:hover{background:var(--txt-2);border-color:var(--txt-2);color:var(--bg)}.fx-act.main.verrou{border-color:var(--ice-dim);color:var(--ice);background:0 0;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.fx-act.main.verrou:hover{background:var(--ice-dim);color:var(--ice)}.fx-sess{font-family:var(--mono);color:var(--green);text-align:right;min-width:170px;font-size:18px;font-weight:600}.fx-sess small{letter-spacing:.2em;color:var(--faint);text-transform:uppercase;font-size:8px;font-weight:500;display:block}.fx-scrim{z-index:69;background:#00000073;position:fixed;inset:58px 0 0}html[data-theme=light] .fx-scrim{background:#1c191738}.fx-set{z-index:70;background:var(--bg);border-bottom:1px solid var(--line);flex-direction:column;max-height:min(74vh,660px);animation:.22s cubic-bezier(.22,.9,.3,1) both setDrop;display:flex;position:fixed;top:58px;left:0;right:0;box-shadow:0 30px 60px -30px #000000b3}html[data-theme=light] .fx-set{box-shadow:0 26px 50px -28px #1c191766}@keyframes setDrop{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}.fx-set .hd{border-bottom:1px solid var(--line-soft);flex-shrink:0;align-items:center;gap:14px;padding:12px 24px;display:flex}.fx-set .hd .sp{margin-left:auto}.fx-set .bd{flex-direction:column;flex:1;gap:20px;padding:18px 24px 40px;display:flex;overflow:auto}.fx-set section>.tag{margin-bottom:10px;display:block}.fx-grps{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(290px,1fr));display:grid}.fx-grp{background:var(--bg);border-right:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:0;flex-direction:column;align-items:flex-start;gap:9px;padding:14px 16px;display:flex}.fx-grp .row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.fx-grp .dsc{color:var(--muted);font-size:11.5px;line-height:1.4}.fx-advbtn{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);cursor:pointer;background:0 0;border:none;padding:2px 0;font-size:9.5px}.fx-advbtn:hover{color:var(--acc)}.free-page{flex-direction:column;width:100%;height:calc(100vh - 58px);padding:0 24px 12px;display:flex;overflow:hidden}.free-name{text-align:center;flex-shrink:0;margin-top:2.5vh}.free-name .csym{letter-spacing:-.03em;font-variant-numeric:lining-nums;font-size:clamp(52px,6.5vw,88px);font-weight:650;line-height:1}.free-name .csym .q{color:var(--txt-2);font-size:.62em}.free-name .csym.free-waiting{color:var(--muted);font-weight:500}.free-sub{font-family:var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-top:8px;font-size:10px}.free-sub b{color:var(--txt-2);font-weight:600}.free-sub .free-or{color:var(--muted)}.free-status{text-align:center;flex-shrink:0;min-height:22px;margin-top:1.6vh}.free-badge{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--acc);font-size:10px}.free-panels{background:var(--line);border:1px solid var(--line);flex-shrink:0;grid-template-columns:330px 430px;gap:1px;width:fit-content;min-height:195px;margin:.8vh auto 0;transition:opacity .35s,transform .35s;display:grid}.free-pan{background:var(--bg);padding:13px 18px 15px}.free-pan h4{font-family:var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;font-size:9px;font-weight:500}.free-vrow{border:none;border-top:1px solid var(--line);text-align:left;cursor:pointer;background:0 0;justify-content:space-between;align-items:baseline;gap:16px;width:100%;padding:5.5px 0;display:flex}.free-vrow:disabled{cursor:default}.free-vrow .n{color:var(--txt-2);font-size:13.5px;font-weight:600}.free-vrow:hover:not(:disabled) .n{color:var(--txt)}.free-vrow .f{font-family:var(--mono);color:var(--muted);font-size:10.5px}.free-drow{border:none;border-top:1px solid var(--line);text-align:left;cursor:pointer;background:0 0;align-items:baseline;gap:12px;width:100%;padding:6.5px 0;display:flex}.free-drow .fn{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ice);flex-shrink:0;min-width:72px;font-size:9px}.free-drow .c{color:var(--txt);white-space:nowrap;font-size:14.5px;font-weight:700}.free-drow .c .q{color:var(--txt-2);font-size:.78em}.free-drow .why{color:var(--muted);font-size:12px}.free-drow:hover .why{color:var(--txt-2)}.free-stage{flex-direction:column;flex-shrink:0;justify-content:flex-end;margin-top:auto;display:flex}.free-foot{flex-shrink:0;align-items:center;gap:18px;height:40px;margin-top:8px;padding:0;display:flex}.free-foot .t{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-size:9.5px}.free-foot .sp{margin-left:auto}@media (max-width:880px){.free-panels{grid-template-columns:1fr;align-self:stretch;width:auto;min-height:0}}.leadsheet .bar.incell{border-radius:0;box-shadow:inset 0 -2px #93c5fd59}html[data-theme=light] .leadsheet .bar.incell{box-shadow:inset 0 -2px #2563eb4d}.leadsheet .bar.incell.cell-a{border-radius:var(--r-sm) 0 0 var(--r-sm)}.leadsheet .bar.incell.cell-z{border-radius:0 var(--r-sm) var(--r-sm) 0}.leadsheet .bar.incell.cell-a.cell-z{border-radius:var(--r-sm)}.cpx-patt{flex-shrink:0;justify-content:center;align-items:center;gap:6px;display:flex}.cpx-patt .cellp{width:44px;height:34px;font-family:var(--mono);color:var(--muted);border:1px solid var(--line);border-radius:8px;place-items:center;font-size:9.5px;transition:all .12s;display:grid}.cpx-patt .cellp.slot{color:var(--ice);border-color:#93c5fd73;font-weight:600}html[data-theme=light] .cpx-patt .cellp.slot{border-color:#2563eb73}.cpx-patt .cellp.now{background:var(--panel);color:var(--txt)}.cpx-patt .cellp.slot.now{background:#93c5fd1f}.cpx-patt .cellp.hitp{color:var(--green);background:#4ade8029;border-color:#0000}.cpx-patt .cellp.badp{color:var(--red);background:#f871711f;border-color:#0000}.cpx-verdict{text-align:center;font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;flex-shrink:0;min-height:18px;font-size:11px;transition:opacity .2s}.cpx-melody{flex-shrink:0;width:100%;max-width:1100px;margin:0 auto}.slx-cellbadge{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ice);border:1px solid #93c5fd4d;border-radius:99px;align-items:center;gap:8px;margin-top:10px;padding:4px 12px;font-size:10px;display:inline-flex}html[data-theme=light] .slx-cellbadge{color:var(--acc);border-color:#2563eb59}.slx-opts{flex-direction:column;width:100%;display:flex}.slx-opt{border:none;border-top:1px solid var(--line);text-align:left;cursor:pointer;background:0 0;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:8px 2px;display:flex}.slx-opt:first-child{border-top:none}.slx-opt .n{color:var(--txt-2);font-size:13px;font-weight:600}.slx-opt .d{color:var(--muted);font-size:11px;line-height:1.35}.slx-opt:hover .n{color:var(--txt)}.slx-opt.on .n{color:var(--acc)}.slx-field .key-w.ghost{background:#b6c8de}.slx-field .key-b.ghost{background:#23364e}html[data-theme=light] .slx-field .key-w.ghost{background:#dde4ec}html[data-theme=light] .slx-field .key-b.ghost{background:#3a4d66}.libh{font-family:var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);align-items:baseline;gap:10px;margin-bottom:8px;font-size:10px;font-weight:500;display:flex}.libh .n{color:var(--faint)}.libh button{border:1px solid var(--line);border-radius:var(--r-sm);font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);cursor:pointer;background:0 0;margin-left:auto;padding:3px 10px;font-size:9.5px}.libh button:hover{color:var(--txt-2);border-color:var(--txt-2)}.libl{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:1fr 1fr;display:grid}@media (max-width:860px){.libl{grid-template-columns:1fr}}.libt{background:var(--bg);border-right:1px solid var(--line);border-bottom:1px solid var(--line);cursor:pointer;flex-direction:column;gap:6px;padding:13px 16px;transition:background .15s;display:flex}.libt:hover{background:var(--panel)}.libt.wide{cursor:default;grid-column:1/-1}.libt.ghost{color:var(--muted);cursor:pointer}.libt.ghost:hover{color:var(--txt-2)}.libt .r1{align-items:baseline;gap:10px;display:flex}.libt .nm{font-weight:600}.libt .key{font-family:var(--mono);color:var(--muted);font-size:10.5px}.libt .modes{font-family:var(--mono);letter-spacing:.12em;color:var(--faint);align-items:baseline;gap:7px;margin-left:auto;font-size:10px;display:inline-flex}.libt .modes a{color:var(--txt-2);padding:2px 4px}.libt .modes a:hover{color:var(--txt)}.libt .modes i{color:var(--faint);font-style:normal}.libt .modes button{color:var(--faint);cursor:pointer;background:0 0;border:none;padding:2px 4px}.libt .modes button:hover{color:var(--red)}.libt .r2{color:var(--muted);align-items:center;gap:10px;font-size:12px;display:flex}.libt .diff{gap:3px;display:inline-flex}.libt .diff i{background:var(--faint);border-radius:50%;width:4px;height:4px}.libt .diff i.on{background:var(--txt-2)}.libt .mast{font-family:var(--mono);align-items:center;gap:8px;margin-left:auto;font-size:10.5px;display:inline-flex}.libt .fams{flex-wrap:wrap;gap:8px;display:flex}.pager{border-top:1px solid var(--line);align-items:center;gap:4px;padding:10px 2px 0;display:flex}.pager .range{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin-right:auto;font-size:10px}.pager button{border:1px solid var(--line);border-radius:var(--r-sm);min-width:28px;height:28px;color:var(--muted);cursor:pointer;font-family:var(--mono);font-variant-numeric:tabular-nums;background:0 0;padding:0 6px;font-size:11.5px;transition:color .15s,border-color .15s,background .15s}.pager button:hover:not(:disabled){color:var(--txt);border-color:var(--txt-2)}.pager button:disabled{opacity:.35;cursor:default}.pager button.on{color:var(--bg);background:var(--txt-2);border-color:var(--txt-2)}.pager .gap{text-align:center;min-width:18px;color:var(--faint);font-family:var(--mono);font-size:11.5px}@media (max-width:560px){.pager{flex-wrap:wrap}.pager .range{width:100%;margin:0 0 8px}}.stat-row{background:var(--line);border:1px solid var(--line);gap:1px!important}.stat{background:var(--bg)!important;box-shadow:none!important;border:none!important;border-radius:0!important}.card-grid{border-top:1px solid var(--line);border-left:1px solid var(--line);gap:0!important}.ex-card{background:var(--bg)!important;border:none!important;border-right:1px solid var(--line)!important;border-bottom:1px solid var(--line)!important;box-shadow:none!important;border-radius:0!important}.ex-card:hover{background:var(--panel)!important;transform:none!important}.resume-card{background:var(--panel)!important;border:1px solid var(--line)!important;border-radius:var(--r-md)!important}.fx-grps{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.fx-grp>.tag{color:var(--txt-2);letter-spacing:.22em;margin-bottom:2px}.fx-grp .seg button{padding:7px 12px;font-size:10.5px}.fx-grp .dsc{color:var(--muted)}.fx-advbtn{text-align:left;border:1px solid var(--line);border-radius:var(--r-sm);padding:4px 10px;display:inline-block}.fx-advbtn:hover{border-color:var(--txt-2)}.tstep{align-items:center;gap:8px;display:flex}.tstep .btn.sm{width:34px;padding:0;font-size:15px}.tstep .val{text-align:center;min-width:64px;font-family:var(--mono);font-size:14px;font-weight:600}.tstep .val small{letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-size:9px;font-weight:500;display:block}.free-panels{transition:opacity .35s,transform .35s,filter .35s}.free-panels.off{opacity:0;pointer-events:none;transform:translateY(6px)}.free-panels.verrou{filter:blur(7px)saturate(.55);opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}.free-swap{animation:.3s cubic-bezier(.22,.9,.3,1) both freeIn}@keyframes freeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.free-staff{width:min(260px,100%);min-height:0;margin:1.2vh auto 0}.free-staff .chordstaff svg{max-width:100%}.fx-staff .chordstaff,.free-staff .chordstaff{background:0 0;border:none;border-radius:0;padding:0}.free-name{flex-direction:column;justify-content:center;min-height:132px;display:flex}.free-wait{justify-content:center;align-items:center;gap:18px;display:flex}.free-wait p{font-family:var(--mono);letter-spacing:.24em;text-transform:uppercase;color:var(--muted);white-space:nowrap;font-size:11px;font-weight:500}.free-wait .line{background:var(--line-2);width:min(120px,14vw);height:1px}.fx-loop{align-items:center;gap:8px;display:inline-flex}.toggle.mini{width:30px;height:17px}.toggle.mini:after{width:13px;height:13px}.toggle.mini.on:after{transform:translate(11px)}.chx-pick{flex-direction:column;flex-shrink:0;align-items:center;gap:8px;display:flex}.chx-mid{flex-shrink:0;justify-content:center;align-items:flex-start;gap:28px;margin-top:1.2vh;display:flex}.chx-list{flex-direction:column;gap:10px;width:min(560px,46vw);display:flex}.chx-rows{grid-template-columns:1fr}.chx-rows .libt{padding:9px 14px}.chx-rows .libt.on{background:var(--panel)}.chx-rows .libt.on .nm{color:var(--txt)}.chx-rows .libt .modes{letter-spacing:.08em;color:var(--muted);font-size:10.5px}.chx-staff{width:min(260px,24vw);min-height:180px;padding-top:6px}.chx-staff .chordstaff{background:0 0;border:none;padding:0}.free-notation{border:1px dashed var(--line-2);border-radius:var(--r-sm);font-family:var(--mono);letter-spacing:.06em;color:var(--txt-2);cursor:copy;background:0 0;margin-left:14px;padding:4px 10px;font-size:11px}.free-notation:hover{color:var(--txt);border-color:var(--txt-2)}.sct{border-top:1px solid var(--line);border-left:1px solid var(--line);flex-direction:column;flex-shrink:0;width:min(760px,100% - 48px);margin:1.4vh auto 0;display:flex}.sct-row{text-align:left;background:var(--bg);border:none;border-right:1px solid var(--line);border-bottom:1px solid var(--line);cursor:pointer;align-items:center;gap:14px;padding:7px 14px;transition:background .15s,opacity .2s;display:flex}.sct-row:hover,.sct-row.on{background:var(--panel)}.sct-row.on .nm{color:var(--txt)}.sct-row.out{opacity:.5}.sct-row .nm{color:var(--txt-2);min-width:190px;font-size:12.5px;font-weight:600}.sct-row .pcs{gap:3px;display:inline-flex}.sct-row .pcs i{font-style:normal;font-family:var(--mono);text-align:center;border-radius:var(--r-sm);min-width:21px;color:var(--muted);background:0 0;padding:2px 0;font-size:9.5px;transition:background .12s,color .12s}.sct-row .pcs i.hit{background:var(--acc-dim);color:var(--acc);font-weight:700}.sct-row .why{font-family:var(--mono);letter-spacing:.1em;color:var(--muted);text-align:right;margin-left:auto;font-size:10px}.sct-row.out .why{color:var(--red)}.fx-count{font-family:var(--mono);color:var(--ice);font-size:clamp(44px,6vw,84px);font-weight:600;line-height:1;animation:.18s ease-out countPop;display:inline-block}@keyframes countPop{0%{opacity:.3;transform:scale(.9)}to{opacity:1;transform:none}}.fxg .cell .half{color:var(--muted);padding:0 9px}.fxg .cell .half+.half{border-left:1px solid var(--line)}.fxg .cell .half .chord-sym{color:inherit;font-size:13px}.fxg .cell .half .chord-sym .q,.fxg .cell .half .chord-sym sup{color:inherit;opacity:.75}.fxg .cell.cur .half{color:var(--faint)}.fxg .cell.cur .half.now{color:var(--txt)}.pr{max-width:1100px}.pr-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;display:flex}.pr-bar-l{align-items:center;gap:14px;display:flex}.pr-bar-l h1{letter-spacing:-.02em;font-size:22px;font-weight:800}.pr-bar-r{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.pr-set{flex-direction:column;gap:5px;display:flex}.pr-set .input{padding:7px 10px;font-size:13px}.pr-set .input:disabled{opacity:.45;cursor:not-allowed}.pr-note{color:var(--muted);max-width:900px;margin-bottom:22px;font-size:13px;line-height:1.5}.pr-doc{color:#000;border-radius:var(--r-md);max-width:900px;box-shadow:var(--shadow-card);background:#fff;margin:0 auto;padding:30px 34px 44px}.pr-head{border-bottom:1px solid #000;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:22px;padding-bottom:12px;display:flex}.pr-brand{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;font-size:11px;font-weight:600}.pr-head h2{letter-spacing:-.02em;margin-top:3px;font-size:25px;font-weight:800}.pr-meta{text-align:right;font-size:12.5px;line-height:1.55}.pr-key{border-bottom:1px solid #000;margin:26px 0 12px;padding-bottom:4px;font-size:15px;font-weight:700}.pr-sec+.pr-sec{margin-top:4px}.pr-sys{margin-bottom:6px}.pr-sys-lab{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;margin-bottom:1px;font-size:10px}.pr-doc .chordstaff{background:0 0;border:0;padding:0}.pr-doc .chordstaff svg{fill:#000;stroke:#000}.pr-doc .chordstaff svg [stroke=\#444]{stroke:#000}.pr-foot{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;border-top:1px solid #000;margin-top:26px;padding-top:10px;font-size:10px}.lp{max-width:1080px;padding-bottom:0}.lp section{margin-bottom:72px}.lp-hero{text-align:center;padding:30px 0 8px}.lp-hero h1{letter-spacing:-.035em;margin:14px 0 0;font-size:clamp(34px,5.6vw,62px);font-weight:800;line-height:1.02}.lp-hero h1 .lp-you{color:var(--muted);font-weight:700;display:block}.lp-hero h1 .lp-app{color:var(--txt);display:block}.lp-lead{max-width:62ch;color:var(--txt-2);margin:20px auto 0;font-size:clamp(15px,1.6vw,17.5px);line-height:1.65}.lp-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:26px;display:flex}.lp-actions .btn{padding:12px 22px;font-size:14.5px}.lp-note{max-width:56ch;color:var(--muted);margin:16px auto 0;font-size:12.5px;line-height:1.6}.lp-demo{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);margin-top:40px;padding:18px 18px 14px}.lp-demo-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:14px;margin-bottom:6px;display:flex}.lp-demo-replay{border-radius:var(--r-sm);font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);background:0 0;border:1px solid #0000;padding:3px 8px;font-size:10.5px;transition:border-color .15s,color .15s}.lp-demo-replay:hover{border-color:var(--line-2);color:var(--txt-2)}.lp-demo-name{text-align:center;margin:4px 0 2px}.lp-demo-name .chord-sym{letter-spacing:-.03em;font-size:clamp(38px,5vw,60px);font-weight:650;line-height:1}.lp-demo-name .chord-sym .q{color:var(--txt-2);font-size:.62em}.lp-demo-name .chord-sym sup{vertical-align:.75em;color:var(--txt-2);font-size:.42em}.lp-demo-say{text-align:center;min-height:34px;color:var(--txt-2);justify-content:center;align-items:center;font-size:13px;transition:color .2s;display:flex}.lp-demo-say.bad{color:var(--red)}.lp-demo-say.ok{color:var(--acc)}.lp-demo-field{margin-top:6px;position:relative}.lp-demo-field .keyboard{height:clamp(120px,15vw,168px);transition:box-shadow .2s}.lp-demo-field.success .keyboard{box-shadow:0 0 0 2px var(--acc), 0 0 34px var(--acc-glow)}.lp-demo-hint{text-align:center;font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-top:10px;font-size:10.5px}.lp-grid{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(3,1fr);display:grid}.lp-grid.lp-two{grid-template-columns:repeat(2,1fr)}.lp-cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line);flex-direction:column;gap:8px;padding:22px 20px 24px;transition:background .2s;display:flex}a.lp-cell:hover{background:var(--panel)}.lp-cell-title{letter-spacing:-.015em;color:var(--txt);font-size:16.5px;font-weight:800}.lp-cell-desc{color:var(--muted);font-size:13px;line-height:1.6}.lp-band{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--bg-2);padding:26px 24px}.lp-band h2{letter-spacing:-.02em;margin:8px 0;font-size:20px;font-weight:800}.lp-band p{color:var(--txt-2);max-width:74ch;font-size:14px;line-height:1.7}.lp-band-row{flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;display:flex}.lp-band-soon{font-family:var(--mono);letter-spacing:.1em;color:var(--muted);font-size:11px}.lp-end{text-align:center;padding:8px 0 10px}.lp-end h2{letter-spacing:-.03em;font-size:clamp(26px,3.4vw,38px);font-weight:800}.lp-end p{max-width:52ch;color:var(--txt-2);margin:12px auto 0;font-size:14.5px;line-height:1.65}.lp-hero{isolation:isolate;position:relative}.lp-hero:before,.lp-hero:after{content:"";z-index:-1;pointer-events:none;filter:blur(90px);opacity:.5;border-radius:50%;width:520px;height:520px;position:absolute}.lp-hero:before{background:radial-gradient(circle, var(--acc-glow), transparent 68%);animation:14s ease-in-out infinite alternate lpDrift;top:-140px;left:8%}.lp-hero:after{background:radial-gradient(circle, var(--ice-dim), transparent 68%);animation:17s ease-in-out infinite alternate-reverse lpDrift;top:-60px;right:6%}@keyframes lpDrift{0%{transform:translate(0,0)scale(1)}to{transform:translate(40px,26px)scale(1.12)}}.lp-hero h1 .lp-app{background:linear-gradient(100deg, var(--txt) 0%, var(--txt) 38%, var(--acc-hi) 50%, var(--txt) 62%, var(--txt) 100%);-webkit-text-fill-color:transparent;color:#0000;background-size:260% 100%;-webkit-background-clip:text;background-clip:text;animation:7s ease-in-out infinite lpShine}@keyframes lpShine{0%,20%{background-position:100% 0}70%,to{background-position:0 0}}.lp-ribbon{border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);margin:-34px 0 64px;padding:13px 0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000);mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000)}.lp-ribbon-track{gap:38px;width:max-content;animation:46s linear infinite lpRibbon;display:flex}.lp-ribbon-track span{font-family:var(--mono);letter-spacing:.04em;color:var(--faint);white-space:nowrap;font-size:14px}.lp-ribbon-track span:nth-child(4n+1){color:var(--txt-2)}@keyframes lpRibbon{to{transform:translate(calc(-50% - 19px))}}.lp-anim .lp-rv{opacity:0;transition:opacity .7s cubic-bezier(.22,.9,.3,1),transform .7s cubic-bezier(.22,.9,.3,1);transform:translateY(26px)}.lp-anim .lp-rv.in{opacity:1;transform:none}.lp-step-n{font-family:var(--mono);letter-spacing:.16em;color:var(--acc);font-size:12px}.lp-steps .lp-cell{gap:10px;padding-top:24px}.lp-modes{flex-direction:column;gap:18px;display:flex}.lp-mode{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);grid-template-columns:1fr 1.15fr;align-items:center;gap:40px;padding:34px;transition:border-color .25s;display:grid}.lp-mode:hover{border-color:var(--line-2)}.lp-mode.lp-flip .lp-mode-txt{order:2}.lp-mode-txt h2{letter-spacing:-.03em;font-size:clamp(24px,3vw,32px);font-weight:800}.lp-mode-txt p{color:var(--txt-2);max-width:46ch;margin-top:12px;font-size:14.5px;line-height:1.7}.lp-mode-go{color:var(--txt);border-bottom:1px solid var(--line-2);margin-top:18px;padding-bottom:2px;font-size:13.5px;font-weight:700;transition:border-color .15s,color .15s;display:inline-block}.lp-mode-go:hover{border-color:var(--acc);color:var(--acc)}.lp-vis{border:1px solid var(--line-soft);border-radius:var(--r);background:var(--bg-2);height:190px;position:relative;overflow:hidden}.lp-vo-name{text-align:center;height:40px;position:absolute;top:14px;left:0;right:0}.lp-vo-name span{opacity:0;letter-spacing:-.03em;font-size:30px;font-weight:650;line-height:40px;animation:9s infinite lpName;position:absolute;inset:0}@keyframes lpName{0%,29%{opacity:1}33%,96%{opacity:0}to{opacity:1}}.lp-vo-name span:first-child{opacity:1}.lp-vo-keys{border:1px solid var(--line-2);background:#f4f4f5;border-radius:4px;display:flex;position:absolute;inset:66px 14px 14px;overflow:hidden}.lp-vo-keys i{border-right:1px solid #a1a1aa;flex:1}.lp-vo-keys i:last-of-type{border-right:0}.lp-vo-keys b{background:#18181b;border-radius:0 0 3px 3px;width:4.2%;height:58%;position:absolute;top:0}.lp-vo-dot{background:var(--acc);width:22px;height:22px;box-shadow:0 0 16px var(--acc-glow);bottom:14%;left:calc((var(--p0) + .5) * 7.1429%);border-radius:50%;margin-left:-11px;animation:9s cubic-bezier(.5,0,.2,1) infinite lpGlide;position:absolute}@keyframes lpGlide{0%,26%{left:calc((var(--p0) + .5) * 7.1429%)}34%,60%{left:calc((var(--p1) + .5) * 7.1429%)}68%,93%{left:calc((var(--p2) + .5) * 7.1429%)}to{left:calc((var(--p0) + .5) * 7.1429%)}}.lp-cp-beats{grid-template-columns:repeat(4,1fr);display:grid;position:absolute;inset:0}.lp-cp-beats i{border-right:1px solid var(--line)}.lp-cp-beats i:last-child{border-right:0}.lp-cp-head{background:var(--txt);opacity:.55;width:2px;animation:4s linear infinite lpHead;position:absolute;top:0;bottom:0;left:0}@keyframes lpHead{0%{left:0}to{left:100%}}.lp-cp-hits{position:absolute;inset:0}.lp-cp-hit{opacity:.25;border-radius:50%;width:16px;height:16px;margin:-8px 0 0 -8px;animation:4s infinite lpHit;position:absolute;top:50%}.lp-cp-hit.ok{background:var(--acc);box-shadow:0 0 14px var(--acc-glow)}.lp-cp-hit.late{background:var(--ice);box-shadow:0 0 14px var(--ice-dim)}.lp-cp-hit.off{background:var(--red);box-shadow:0 0 14px var(--red-dim)}@keyframes lpHit{0%{opacity:1;transform:scale(2.1)}12%{opacity:1;transform:scale(1)}to{opacity:.25;transform:scale(1)}}.lp-so-staff{background:repeating-linear-gradient(to bottom, var(--line-2) 0 1px, transparent 1px 25%);position:absolute;inset:16px 14px 54px}.lp-so-note{opacity:.15;border-radius:50%;width:17px;height:17px;margin:-8px 0 0 -8px;animation:6.4s infinite lpNote;position:absolute}.lp-so-note.chord{background:var(--acc);box-shadow:0 0 12px var(--acc-glow)}.lp-so-note.scale{background:var(--ice)}.lp-so-note.pass{background:var(--alt)}.lp-so-note.wrong{background:var(--red);box-shadow:0 0 12px var(--red-dim)}@keyframes lpNote{0%{opacity:.15;transform:scale(.6)}5%{opacity:1;transform:scale(1.35)}10%,86%{opacity:1;transform:scale(1)}to{opacity:.15;transform:scale(.6)}}.lp-so-legend{flex-wrap:wrap;gap:6px 16px;margin:0;padding:0;list-style:none;display:flex;position:absolute;bottom:12px;left:14px;right:14px}.lp-so-legend li{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);align-items:center;gap:6px;font-size:10px;display:flex}.lp-so-legend li:before{content:"";background:currentColor;border-radius:50%;width:8px;height:8px}.lp-so-legend li.chord:before{background:var(--acc)}.lp-so-legend li.scale:before{background:var(--ice)}.lp-so-legend li.pass:before{background:var(--alt)}.lp-so-legend li.wrong:before{background:var(--red)}@media (max-width:880px){.lp-mode{grid-template-columns:1fr;gap:22px;padding:24px 18px}.lp-mode.lp-flip .lp-mode-txt{order:0}.lp-ribbon{margin:-26px 0 44px}}@media (prefers-reduced-motion:reduce){.lp-hero:before,.lp-hero:after,.lp-hero h1 .lp-app,.lp-ribbon-track,.lp-vo-name span,.lp-vo-dot,.lp-cp-head,.lp-cp-hit,.lp-so-note{animation:none}.lp-hero h1 .lp-app{-webkit-text-fill-color:var(--txt);color:var(--txt);background:0 0}.lp-cp-hit,.lp-so-note{opacity:1}.lp-cp-head{left:38%}}.home-vitrine{text-align:center;margin:36px 0 8px;font-size:12.5px}.home-vitrine a{color:var(--faint);text-underline-offset:3px;text-decoration:underline}.home-vitrine a:hover{color:var(--txt)}.lp-foot{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 22px;padding:26px 0 40px;display:flex}.lp-foot nav{flex-wrap:wrap;gap:18px;display:flex}.lp-foot a{color:var(--txt-2);font-size:13px;transition:color .15s}.lp-foot a:hover{color:var(--txt)}.lp-foot-legal{font-family:var(--mono);letter-spacing:.06em;color:var(--faint);font-size:11px}.lp-plans{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(2,1fr);display:grid}.lp-plan{border-right:1px solid var(--line);border-bottom:1px solid var(--line);flex-direction:column;padding:26px 22px 24px;display:flex}.lp-plan.lp-featured{background:var(--panel)}.lp-plan-name{letter-spacing:.02em;color:var(--txt);font-size:13px;font-weight:700}.lp-plan-amount{align-items:baseline;gap:8px;margin:10px 0 2px;display:flex}.lp-plan-amount b{letter-spacing:-.035em;font-size:38px;font-weight:800;line-height:1}.lp-plan-amount span{color:var(--muted);font-size:13px}.lp-plan-alt{color:var(--faint);font-size:12px}.lp-plan-pitch{color:var(--txt-2);margin-top:14px;font-size:13px;line-height:1.6}.lp-feats{flex-direction:column;gap:9px;margin:14px 0 22px;padding:0;list-style:none;display:flex}.lp-feats li{color:var(--txt-2);padding-left:18px;font-size:13px;line-height:1.5;position:relative}.lp-feats li:before{content:"—";color:var(--faint);position:absolute;left:0}.lp-plan .btn{margin-top:auto}.lp-plan .btn[aria-disabled=true]{opacity:.55;cursor:default;pointer-events:none}.lp-cmp{border-collapse:collapse;width:100%;margin-top:14px}.lp-cmp th,.lp-cmp td{text-align:left;border-bottom:1px solid var(--line-soft);padding:11px 12px;font-size:13.5px}.lp-cmp th{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:10.5px;font-weight:500}.lp-cmp td:last-child,.lp-cmp th:last-child{text-align:right;font-family:var(--mono)}.lp-cmp tr.lp-us-row td{color:var(--txt);font-weight:700}.lp-cmp-note{color:var(--txt-2);max-width:72ch;margin-top:14px;font-size:13.5px;line-height:1.7}.lp-faq{flex-direction:column;gap:18px;margin-top:14px;display:flex}.lp-faq h3{color:var(--txt);margin-bottom:5px;font-size:14.5px;font-weight:700}.lp-faq p{color:var(--muted);max-width:76ch;font-size:13.5px;line-height:1.7}@media (max-width:880px){.lp-grid,.lp-grid.lp-two,.lp-plans{grid-template-columns:1fr}.lp section{margin-bottom:52px}.lp-demo{padding:14px 12px 12px}}@page{size:A4 portrait;margin:14mm}@media print{.topbar,.noprint{display:none!important}html,body{background:#fff}.page,.pr{max-width:none;margin:0;padding:0}.pr-doc{width:100%;max-width:none;box-shadow:none;border-radius:0;padding:0}.pr-sys{break-inside:avoid;page-break-inside:avoid}.pr-key,.pr-head{break-after:avoid;page-break-after:avoid}.pr-foot{background:#fff;border-top:1px solid #000;margin:0;position:fixed;bottom:0;left:0;right:0}.pr-doc{padding-bottom:12mm}}.offre{border:1px solid var(--line);border-left:2px solid var(--ice);background:var(--panel);border-radius:3px;align-items:center;gap:14px;width:100%;max-width:760px;margin:10px auto;padding:11px 14px;display:flex}.offre .tag{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ice);border:1px solid var(--ice-dim);border-radius:2px;flex-shrink:0;align-self:flex-start;padding:2px 6px;font-size:9px}.offre .lb{flex:1;min-width:0}.offre .lb b{color:var(--txt);font-size:13px;font-weight:700;display:block}.offre .lb p{color:var(--muted);margin:3px 0 0;font-size:12px;line-height:1.45}.offre .btn{flex-shrink:0}@media (max-width:720px){.offre{flex-wrap:wrap}.offre .lb{flex-basis:100%;order:3}}.pro-mark{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ice);border:1px solid var(--ice-dim);vertical-align:1px;border-radius:2px;margin-left:6px;padding:1px 4px;font-size:8.5px}.foot-lang{appearance:none;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}.foot-lang:hover{color:var(--txt)}.foot-lang option{background:var(--panel);color:var(--txt)}
