@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-vietnamese-600-normal-A5AYRdjN.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-600-normal-CNlPk46_.woff)format("woff");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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-ext-600-normal-18ESti3H.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-600-normal-Clv9cIcR.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-600-normal-DepVgxBB.woff2)format("woff2"),url(/assets/barlow-condensed-latin-600-normal-BFJEwTuo.woff)format("woff");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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-vietnamese-700-normal-DYeBwlKR.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-700-normal-DhIzd8Tb.woff)format("woff");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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-ext-700-normal-CwuXbfVR.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-700-normal-BIHFfxf0.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-700-normal-v1xN8_Wq.woff2)format("woff2"),url(/assets/barlow-condensed-latin-700-normal-Dmwat-ge.woff)format("woff");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:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-cyrillic-ext-wght-normal-DzyfIafT.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-cyrillic-wght-normal-BMDVbyM7.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-greek-ext-wght-normal-BWSLJLk6.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-greek-wght-normal-C9H9m1vD.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-vietnamese-wght-normal-C1uRvKPU.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-latin-ext-wght-normal-C8iNium2.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-latin-wght-normal-BqRLTx4X.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color:#080808;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--font-display:"Barlow Condensed", "Arial Narrow", sans-serif;--font-body:"Source Sans 3 Variable", sans-serif;--ink:#080808;--ink-2:#202020;--muted:#686868;--muted-2:#969696;--canvas:#f2f2f2;--surface:#fff;--surface-2:#e7e7e7;--line:#d0d0d0;--line-strong:#a6a6a6;--green:#39a935;--green-dark:#187b2b;--green-soft:#e4f5e5;--yellow:#ffe600;--yellow-dark:#b8a600;--yellow-soft:#fff9bf;--red:#ed1c24;--red-soft:#ffe5e6;--tap-good:oklch(72% .18 145);--tap-miss:oklch(65% .22 27);--shadow-card:0 1px 2px #0000000f, 0 8px 24px #0000000d;--shadow-float:0 14px 38px #00000029;--radius-sm:10px;--radius-md:16px;--radius-lg:22px;--ease-out:cubic-bezier(.22, 1, .36, 1);background:#ededed;font-family:"Source Sans 3 Variable",sans-serif}*{box-sizing:border-box}html{background:var(--canvas);scroll-behavior:smooth;min-width:320px;min-height:100%}body{background:var(--canvas);min-width:320px;min-height:100vh;color:var(--ink);font-family:var(--font-body);overscroll-behavior-y:none;margin:0;font-size:1rem;line-height:1.45}button,input{font:inherit}button{color:inherit}button:focus{outline:none}button:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid var(--yellow);outline-offset:3px}button:disabled{cursor:not-allowed;opacity:.42}.visually-hidden{clip:rect(0 0 0 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.app-shell{min-height:100vh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);background:var(--canvas)}.skip-link{z-index:800;border-radius:var(--radius-sm);background:var(--ink);color:#fff;transition:translate .15s var(--ease-out);padding:10px 14px;font-weight:700;position:fixed;top:12px;left:12px;translate:0 -160%}.skip-link:focus{translate:0}.app-header{z-index:300;min-height:62px;padding:8px max(16px, env(safe-area-inset-right)) 8px max(16px, env(safe-area-inset-left));-webkit-backdrop-filter:blur(20px)saturate(1.5);background:#ffffffed;border-bottom:1px solid #00000017;justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.app-header__identity,.app-header__right{align-items:center;gap:10px;min-width:0;display:flex}.app-header__title{border-left:1px solid var(--line);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;padding-left:10px;font-size:.88rem;font-weight:700;overflow:hidden}.brand-button{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;align-items:center;min-height:42px;padding:0;display:inline-flex}.brand-mark{background:#050505;width:90px;height:44px;display:block;overflow:hidden}.brand-mark img{object-fit:contain;width:100%;height:100%;display:block}.brand-mark--compact{width:82px;height:40px}.install-button,.installed-badge{border:1px solid var(--ink);background:var(--ink);color:#fff;border-radius:12px;align-items:center;gap:6px;min-height:40px;padding:0 13px;font-size:.84rem;font-weight:750;display:inline-flex}.install-button{cursor:pointer;transition:transform 90ms var(--ease-out), background-color .12s linear;-webkit-tap-highlight-color:transparent}.install-button:active{background:#262626;transform:scale(.95)}.installed-badge{border-color:var(--line);background:var(--surface-2);color:var(--muted)}.native-modal{z-index:1000;padding:20px max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));-webkit-backdrop-filter:blur(7px);background:#0000008a;justify-content:center;align-items:flex-end;animation:.18s linear both modal-fade;display:flex;position:fixed;inset:0}.native-sheet{border:1px solid var(--line);background:var(--surface);width:min(100%,520px);max-height:min(760px,100dvh - 32px);box-shadow:var(--shadow-float);color:var(--ink);animation:sheet-in .28s var(--ease-out) both;border-radius:24px;padding:24px 20px 20px;position:relative;overflow-y:auto}.native-sheet__hero{background:var(--ink);color:#fff;border-radius:15px;place-items:center;width:48px;height:48px;margin-bottom:18px;display:grid}.native-sheet h2{font-family:var(--font-display);letter-spacing:-.025em;margin:6px 42px 12px 0;font-size:clamp(2rem,10vw,2.6rem);line-height:.95}.native-sheet>p{color:var(--muted);margin:10px 0 0;line-height:1.42}.native-sheet__close{position:absolute;top:14px;right:14px}.icon-button{cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;width:40px;height:40px;display:grid}.install-steps{gap:8px;margin:18px 0 0;padding:0;list-style:none;display:grid}.install-steps li{border:1px solid var(--line);background:#f7f7f7;border-radius:15px;grid-template-columns:54px 1fr;align-items:center;gap:12px;padding:12px;display:grid}.install-steps li>span{background:var(--ink);color:#fff;border-radius:12px;justify-content:center;align-items:center;gap:3px;min-height:42px;display:flex}.install-steps li>span strong{font-family:var(--font-display);font-size:1rem}.install-steps p{color:var(--muted);margin:0;font-size:.88rem;line-height:1.35}.install-steps p svg{vertical-align:-3px;display:inline}.native-sheet__done{width:100%;margin-top:16px}.native-sheet__actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:18px;display:grid}.native-sheet__error{background:var(--red-soft);border-radius:12px;padding:10px 12px;font-weight:700;color:#a10f14!important}.native-sheet__success{background:var(--green-soft);border-radius:12px;padding:10px 12px;font-weight:700;color:var(--green-dark)!important}.home-screen,.tutorial-screen,.play-screen,.favorites-screen{width:min(100%,980px);padding:22px 16px calc(108px + env(safe-area-inset-bottom));margin:0 auto}.home-screen{max-width:760px}.tutorial-screen{max-width:780px}.eyebrow{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;font-size:.72rem;font-weight:800;line-height:1.1;display:block}.home-welcome h1,.tutorial-topline h1,.play-heading h1,.favorites-heading h1,.section-heading h2,.play-lane__header h2,.deck-library__header h2{font-family:var(--font-display);letter-spacing:-.025em;margin:0;font-weight:700;line-height:.96}.home-welcome{padding:8px 2px 18px}.home-welcome h1{margin-top:7px;font-size:clamp(2.9rem,14vw,4.25rem)}.home-welcome p{max-width:36ch;color:var(--muted);margin:10px 0 0;font-size:1.03rem;line-height:1.42}.home-deck-cover{border-radius:var(--radius-lg);box-shadow:var(--shadow-card);color:#fff;background:#050505;border:1px solid #242424;padding:14px 14px 0;overflow:hidden}.home-deck-cover__topline{justify-content:space-between;align-items:center;gap:12px;display:flex}.home-deck-cover__topline img{width:116px;height:auto}.home-deck-cover__topline span{color:#aaa;font-family:var(--font-display);letter-spacing:.04em;text-transform:uppercase;font-size:.88rem;font-weight:600}.hero-deck{grid-template-columns:repeat(4,minmax(62px,1fr));gap:7px;margin-top:8px;padding:30px 0 28px;display:grid;position:relative}.hero-deck__rail{color:#777;font-variant-numeric:tabular-nums;text-align:center;grid-template-columns:repeat(4,1fr);font-size:.65rem;display:grid;position:absolute;top:8px;left:0;right:0}.hero-deck__card{z-index:calc(4 - var(--card-i));transform:rotate(calc((var(--card-i) - 1.5) * 1.15deg));position:relative}.hero-deck__card:nth-of-type(3){translate:0 3px}.hero-deck__caption{color:#8d8d8d;font-size:.68rem;font-weight:650;position:absolute;bottom:7px;left:1px}.mode-choices{gap:10px;margin-top:28px;display:grid}.section-heading{padding:0 2px 6px}.section-heading h2{margin-top:5px;font-size:2.25rem}.mode-choice{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);text-align:left;cursor:pointer;min-height:112px;transition:transform .1s var(--ease-out), border-color .12s linear;-webkit-tap-highlight-color:transparent;grid-template-columns:30px 44px 1fr auto;align-items:center;gap:11px;padding:16px 14px;display:grid;position:relative;box-shadow:0 1px 1px #00000008}.mode-choice:active{border-color:var(--ink);transform:scale(.985)}.mode-choice__number{color:var(--muted-2);font-family:var(--font-display);align-self:start;padding-top:2px;font-size:.78rem;font-weight:700}.mode-choice__icon{background:var(--ink);color:#fff;border-radius:14px;place-items:center;width:44px;height:44px;display:grid}.mode-choice--tutorial .mode-choice__icon{background:var(--yellow);color:var(--ink)}.mode-choice__body{gap:2px;display:grid}.mode-choice__body strong{font-family:var(--font-display);letter-spacing:-.015em;font-size:1.65rem;font-weight:700;line-height:1}.mode-choice__body>span{max-width:38ch;color:var(--muted);font-size:.88rem;line-height:1.3}.mode-choice__body small{color:var(--green-dark);margin-top:3px;font-size:.72rem;font-weight:750}.mode-choice__arrow{color:var(--muted);transition:transform .16s var(--ease-out)}.home-facts{color:var(--muted);text-align:center;grid-template-columns:repeat(3,1fr);gap:0;margin-top:14px;padding:10px 0;font-size:.74rem;display:grid}.home-facts>div{flex-direction:column;justify-content:center;align-items:center;gap:1px;min-height:48px;display:flex}.home-facts>div+div{border-left:1px solid var(--line)}.home-facts strong{color:var(--ink);font-family:var(--font-display);font-size:1.02rem}.entrance{animation:enter .43s var(--ease-out) both;animation-delay:calc(var(--i,0) * 55ms)}.rhythm-card{--rhythm-accent:#f7f7f5;--rhythm-halo:#e3e5e2;--rhythm-halo-edge:#7c837f;--playback-pulse-duration:.16s;aspect-ratio:1.58;color:#fff;cursor:pointer;touch-action:manipulation;width:100%;min-width:0;transition:transform 90ms var(--ease-out), box-shadow 90ms linear, border-color 90ms linear;-webkit-tap-highlight-color:transparent;background:#030405;border:1px solid #232323;border-radius:12px;grid-template-rows:auto 1fr;padding:7px;display:grid;position:relative;overflow:hidden;transform:translateZ(0);box-shadow:0 2px #232323,0 5px 12px #0000001c}.rhythm-card--notation{color:var(--ink);background:#fff;border-color:#c7c7c7;box-shadow:0 2px #d2d2d2,0 5px 12px #00000014}.rhythm-card--compact{border-radius:10px}.rhythm-card--preview{cursor:default}.rhythm-card:active{box-shadow:none;transform:translateY(2px)scale(.97)}.rhythm-card.is-selected{border-color:var(--yellow);box-shadow:0 0 0 3px var(--yellow), 0 5px 12px #0000001f}.rhythm-card.is-playing{z-index:4;transform:translateY(-4px)scale(1.02);box-shadow:0 5px #282a29,0 12px 20px #0003}.rhythm-card--notation.is-playing{box-shadow:0 5px #c7c9c7,0 12px 20px #00000029}.rhythm-card--value-gray{--rhythm-accent:#929896;--rhythm-halo:#e0e3e1;--rhythm-halo-edge:#737a77}.rhythm-card--value-green{--rhythm-accent:#4dcc63;--rhythm-halo:#dff5e2;--rhythm-halo-edge:#2e9c41}.rhythm-card--value-yellow{--rhythm-accent:#ffe81f;--rhythm-halo:#fff3a1;--rhythm-halo-edge:#aa9a00}.rhythm-card--value-red{--rhythm-accent:#ff4c55;--rhythm-halo:#ffe0e2;--rhythm-halo-edge:#ce2d35}.rhythm-card__meta{z-index:3;font-family:var(--font-display);justify-content:space-between;align-items:center;padding:0 2px;font-size:.74rem;font-weight:700;line-height:1;display:flex;position:relative}.rhythm-card__index{opacity:.58;font-variant-numeric:tabular-nums}.rhythm-card__meta.is-beat-start .rhythm-card__letter,.rhythm-card__meta.is-beat-start .rhythm-card__index{animation:beat-knock var(--playback-pulse-duration) var(--ease-out) both}.rhythm-card__cells{grid-template-columns:repeat(var(--cell-count), minmax(0, 1fr));align-items:stretch;height:100%;padding:3px 0 2px;display:grid}.rhythm-card__cell{transition:transform 90ms var(--ease-out);border:0 dashed #ffffff6b;border-right-width:1px;place-items:center;display:grid;position:relative}.rhythm-card--notation .rhythm-card__cell{border-color:#00000061}.rhythm-card__cell:last-child{border-right:0}.rhythm-card__cell.is-active{z-index:3}.rhythm-card--notation .rhythm-card__cell.is-active{z-index:1}.rhythm-card--notation .rhythm-card__cell.is-active:after{aspect-ratio:1;border:1px solid var(--rhythm-halo-edge);background:var(--rhythm-halo);content:"";width:clamp(28px,72%,42px);animation:notation-strike var(--playback-pulse-duration) var(--ease-out) both;border-radius:50%;position:absolute}.rhythm-card__cell.is-active .hit-mark,.rhythm-card__cell.is-active .rest-dash{animation:rhythm-strike var(--playback-pulse-duration) var(--ease-out) both}.hit-mark,.rest-dash{z-index:1;background:var(--rhythm-accent);transition:transform 90ms var(--ease-out);position:relative}.hit-mark{aspect-ratio:1;border-radius:50%;width:clamp(9px,18%,17px)}.hit-mark--white{background:#f7f7f5}.hit-mark--gray{background:#929896}.hit-mark--green{background:#4dcc63}.hit-mark--yellow{background:#ffe81f}.hit-mark--red{background:#ff4c55}.rest-dash{width:clamp(14px,32%,28px);height:4px}.hit-mark:after,.rest-dash:after{border:2px solid var(--rhythm-accent);border-radius:inherit;content:"";opacity:0;pointer-events:none;position:absolute;inset:-2px}.rhythm-card__cell.is-active .hit-mark:after,.rhythm-card__cell.is-active .rest-dash:after{animation:rhythm-echo var(--playback-pulse-duration) var(--ease-out) both}@keyframes rhythm-strike{0%{transform:translateY(-4px)scale(1.72)}45%{transform:translateY(-3px)scale(1.44)}to{transform:translateY(-2px)scale(1.36)}}@keyframes rhythm-echo{0%{opacity:.72;transform:scale(.8)}to{opacity:0;transform:scale(2.15)}}@keyframes notation-strike{0%{opacity:.96;transform:scale(1.12)}to{opacity:.72;transform:scale(.94)}}@keyframes beat-knock{0%{opacity:1;transform:translateY(-1px)scale(1.42)}to{opacity:1;transform:none}}.rest-dash--white{background:#f7f7f5}.rest-dash--gray{background:#929896}.rest-dash--green{background:#4dcc63}.rest-dash--yellow{background:#ffe81f}.rest-dash--red{background:#ff4c55}.rhythm-card--black.rhythm-card--value-gray .rhythm-card__letter{color:#a6acab}.rhythm-card--black.rhythm-card--value-green .rhythm-card__letter{color:#4dcc63}.rhythm-card--black.rhythm-card--value-yellow .rhythm-card__letter{color:#ffe81f}.rhythm-card--black.rhythm-card--value-red .rhythm-card__letter{color:#ff4c55}.music-notation{z-index:2;width:calc(100% - 18px);height:calc(100% - 31px);color:var(--ink);pointer-events:none;position:absolute;inset:22px 9px 9px;overflow:visible}.music-notation__tuplet text{font-family:Georgia,serif;font-size:10px;font-style:italic;font-weight:700}.note-mark{width:18px;height:29px;position:relative}.note-mark__head{background:currentColor;border-radius:50%;width:14px;height:10px;position:absolute;bottom:3px;left:1px;rotate:-17deg}.note-mark__stem{background:currentColor;width:2px;height:19px;position:absolute;bottom:9px;right:2px}.rest-mark{gap:2px;width:14px;display:grid;rotate:-8deg}.rest-mark span{background:currentColor;width:11px;height:3px;display:block}.rest-mark span:last-child{justify-self:end}.rhythm-card__brand{z-index:4;pointer-events:none;width:28px;height:auto;position:absolute;bottom:6px;right:7px}.rhythm-card__edge{display:none}.tutorial-topline,.play-heading{justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.tutorial-topline h1,.play-heading h1{margin-top:5px;font-size:clamp(2.65rem,12vw,3.5rem)}.lesson-count{background:var(--surface-2);color:var(--muted);font-variant-numeric:tabular-nums;border-radius:10px;flex:none;padding:7px 10px;font-size:.78rem;font-weight:750}.lesson-progress{background:#dedede;border-radius:14px;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:18px;padding:4px;display:grid}.lesson-progress button{min-height:38px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;place-items:center;font-size:.78rem;font-weight:800;display:grid}.lesson-progress button.is-current{background:var(--ink);color:#fff}.lesson-progress button.is-complete:not(.is-current){background:var(--surface);color:var(--green-dark)}.lesson-story{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);gap:12px;margin-top:16px;padding:16px;display:grid}.lesson-story>p{color:var(--muted);margin:0;font-size:1rem;line-height:1.45}.lesson-rule{border-top:1px solid var(--line);align-items:center;gap:10px;padding-top:12px;font-size:.9rem;font-weight:750;display:flex}.tutorial-phrase{overscroll-behavior-inline:contain;scroll-snap-type:x proximity;scrollbar-width:none;grid-auto-columns:minmax(104px,1fr);grid-auto-flow:column;gap:8px;margin:16px -16px 0;padding:8px 16px 16px;scroll-padding-inline:16px;display:grid;overflow-x:auto}.tutorial-phrase::-webkit-scrollbar{display:none}.tutorial-phrase>*{scroll-snap-align:start}.tutorial-actions{grid-template-columns:1fr 1.15fr;gap:10px;margin-top:8px;display:grid}.primary-action,.secondary-action{border:1px solid var(--ink);cursor:pointer;min-height:52px;transition:transform 90ms var(--ease-out), background-color .1s linear;-webkit-tap-highlight-color:transparent;border-radius:14px;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-weight:750;display:inline-flex}.primary-action{background:var(--ink);color:#fff}.secondary-action{background:var(--surface)}.primary-action:active,.secondary-action:active{transform:scale(.97)}.countdown-overlay{z-index:900;padding:max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;background:#0000009e;place-items:center;animation:.12s linear both countdown-overlay-in;display:grid;position:fixed;inset:0}.countdown-overlay.is-tap{animation:.48s cubic-bezier(.7,0,.84,0) both countdown-overlay-out}.countdown-overlay__tile{aspect-ratio:1;color:#fff;contain:paint;background:#050505;border:1px solid #444;border-radius:28px;place-items:center;width:clamp(136px,42vw,180px);animation:.18s cubic-bezier(.16,1,.3,1) both countdown-step-in;display:grid;transform:translateZ(0);box-shadow:0 4px #2d2d2d,0 24px 64px #00000052}.countdown-overlay__tile span{font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:-.055em;font-size:clamp(5.75rem,28vw,8rem);font-weight:700;line-height:.72}.countdown-overlay.is-tap .countdown-overlay__tile{border-color:var(--yellow);background:var(--yellow);color:var(--ink);animation:.48s cubic-bezier(.16,1,.3,1) both countdown-tap;box-shadow:0 4px #d1bc00,0 24px 64px #00000052}.countdown-overlay.is-tap .countdown-overlay__tile span{letter-spacing:-.025em;font-size:clamp(3.25rem,17vw,5rem)}.tap-pad{background:var(--ink);width:100%;min-height:124px;box-shadow:0 4px 0 #3a3a3a, var(--shadow-card);color:#fff;font-family:var(--font-display);letter-spacing:.01em;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;transition:transform 70ms var(--ease-out), box-shadow 70ms linear, background-color 70ms linear;-webkit-tap-highlight-color:transparent;border:1px solid #292929;border-radius:20px;place-items:center;gap:2px;margin-top:16px;padding:16px;font-size:1.48rem;font-weight:700;display:grid;position:relative;overflow:hidden}.tap-pad:before,.tap-pad:after{content:"";border:1px solid #ffffff1f;border-radius:50%;width:82px;height:82px;position:absolute}.tap-pad:before{top:-40px;left:-25px}.tap-pad:after{bottom:-44px;right:-27px}.tap-pad>svg,.tap-pad>.tap-pad__label,.tap-pad>.tap-pad__hint{z-index:1;position:relative}.tap-pad__feedback{--tap-feedback-color:var(--tap-good);z-index:2;border-radius:inherit;background:color-mix(in oklch, var(--tap-feedback-color) 6%, transparent);box-shadow:inset 0 0 42px color-mix(in oklch, var(--tap-feedback-color) 11%, transparent);pointer-events:none;justify-content:flex-end;align-items:flex-start;padding:9px 11px;animation:.44s cubic-bezier(.16,1,.3,1) both tap-feedback;display:flex;position:absolute;inset:0}.tap-pad__feedback--miss{--tap-feedback-color:var(--tap-miss)}.tap-pad__feedback>span{background:color-mix(in oklch, var(--tap-feedback-color) 18%, #080808);color:var(--tap-feedback-color);font-family:var(--font-body);letter-spacing:.055em;text-transform:uppercase;border-radius:999px;padding:3px 7px;font-size:.66rem;font-weight:850;line-height:1.2}.tap-pad.is-hit{background:#262626;transform:translateY(3px)scale(.99);box-shadow:0 1px #3a3a3a}.tap-pad:disabled{opacity:1;color:#bdbdbd;background:#292929}.tap-pad--compact{grid-template-columns:auto auto;place-content:center;column-gap:8px;min-height:88px;font-size:1.28rem}.play-screen>.tap-pad{width:100%;min-height:clamp(7.75rem,14vw,9rem);font-size:clamp(1.28rem,2vw,1.55rem)}.play-screen>.audio-help-link{margin-top:10px}.tap-pad__hint{color:#aaa;font-family:var(--font-body);font-size:.7rem;font-weight:650}.tap-pad--compact .tap-pad__hint{grid-column:1/-1}.audio-help-link{min-height:42px;color:var(--muted);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;gap:6px;margin:2px auto 0;padding:0 10px;font-size:.74rem;font-weight:700;display:flex}.score-panel{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);animation:score-in .32s var(--ease-out) both;grid-template-columns:auto 1fr;align-items:center;gap:14px;margin-top:16px;padding:15px;display:grid;position:relative}.score-panel.is-pass{background:var(--green-soft);border-color:#a3d9a6}.score-panel__number{text-align:center;min-width:64px;display:grid}.score-panel__number strong{font-family:var(--font-display);font-size:2.2rem;line-height:.9}.score-panel__number span,.score-panel p{color:var(--muted);font-size:.72rem}.score-panel h2{font-family:var(--font-display);margin:0;font-size:1.35rem;line-height:1}.score-panel p{margin:4px 0 0;line-height:1.3}.score-panel__check{color:var(--green-dark);position:absolute;top:8px;right:8px}.tutorial-completion{scroll-margin-block-end:calc(88px + env(safe-area-inset-bottom))}.lesson-nav{justify-content:space-between;align-items:center;gap:8px;margin-top:24px;display:flex}.lesson-nav button{cursor:pointer;background:0 0;border:0;align-items:center;gap:2px;min-height:44px;padding:0 4px;font-weight:750;display:inline-flex}.lesson-nav>span{color:var(--muted);text-align:center;font-size:.74rem;font-weight:650}.play-back{min-height:42px;color:var(--muted);cursor:pointer;background:0 0;border:0;align-items:center;gap:5px;margin:-8px 0 8px -7px;padding:0 8px;font-size:.8rem;font-weight:750;display:inline-flex}.play-heading{padding:4px 2px 0}.view-toggle{background:#dedede;border-radius:12px;flex:none;padding:3px;display:flex}.view-toggle button{min-height:36px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:9px;padding:0 12px;font-size:.78rem;font-weight:800}.view-toggle button.is-active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #00000024}.transport{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-card);border-radius:18px;grid-template-columns:54px minmax(130px,1fr) 52px 52px;gap:7px;margin-top:16px;padding:8px;display:grid}.transport button{cursor:pointer;-webkit-tap-highlight-color:transparent;border:0;border-radius:12px;min-height:52px}.transport__play{background:var(--ink);color:#fff;transition:transform 90ms var(--ease-out);place-items:center;display:grid}.transport__play:active{transform:scale(.93)}.tempo-control{grid-template-columns:34px minmax(64px,1fr) 34px;align-items:center;gap:4px;min-width:0;display:grid}.tempo-control>button{background:var(--surface-2);min-height:40px;font-size:1.08rem;font-weight:800}.tempo-control label{min-width:0;color:var(--muted);grid-template-columns:1fr auto;align-items:center;gap:0 4px;font-size:.62rem;font-weight:750;display:grid}.tempo-control strong{color:var(--ink);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;font-size:.9rem;line-height:1}.tempo-control small{color:var(--muted);font-size:.52rem}.tempo-control input{width:100%;height:20px;accent-color:var(--ink);grid-column:1/-1;margin:0}.transport__toggle{background:var(--surface-2);color:var(--muted);place-items:center;display:grid}.transport__toggle span{font-size:.6rem;font-weight:750}.transport__toggle.is-active{background:var(--ink);color:#fff}.play-lane,.deck-library{border:1px solid var(--line);background:var(--surface);border-radius:20px;margin-top:16px;padding:16px;box-shadow:0 1px 2px #00000008}.play-lane__header,.deck-library__header{justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.play-lane__header h2,.deck-library__header h2{margin-top:5px;font-size:1.72rem}.lane-actions{gap:6px;display:flex}.lane-actions button,.lane-feedback button{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:11px;justify-content:center;align-items:center;gap:5px;min-height:42px;padding:0 11px;font-size:.76rem;font-weight:750;display:inline-flex}.lane-actions button{flex:0 0 44px;width:44px;min-height:44px;padding:0}.lane-actions .lane-save{background:var(--yellow-soft);border-color:#c7b500}.lane-actions .lane-save.is-saved{border-color:var(--yellow);background:var(--yellow)}.play-lane__scroll{overscroll-behavior-inline:contain;scroll-snap-type:x proximity;scrollbar-width:none;touch-action:pan-x pan-y;grid-auto-columns:minmax(112px,140px);grid-auto-flow:column;gap:8px;margin:10px -16px 0;padding:8px 16px 18px;scroll-padding-inline:16px;display:grid;overflow-x:auto}.play-lane__scroll::-webkit-scrollbar{display:none}.play-lane__scroll>*{scroll-snap-align:start}.play-lane__scroll .rhythm-card{touch-action:pan-y}.lane-card{touch-action:pan-y;min-width:0;transform:translate3d(var(--drag-x,0), 0, 0);transition:transform .16s var(--ease-out);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;position:relative}.lane-card *,.play-lane__scroll{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.lane-card img{-webkit-user-drag:none}.lane-card.is-pressing .rhythm-card{transform:translateY(2px)scale(.975);box-shadow:0 1px #232323}.lane-card.is-dragging{z-index:5;will-change:transform;transition:none}.lane-card.is-dragging .rhythm-card{border-color:var(--yellow);box-shadow:0 0 0 3px var(--yellow), 0 12px 24px #0003;transform:translateY(-3px)scale(1.025)}.lane-card.is-drop-target:before{z-index:6;border:2px dashed var(--yellow-dark);content:"";pointer-events:none;border-radius:13px;position:absolute;inset:-4px}.lane-empty{border:1px dashed var(--line-strong);min-height:136px;color:var(--muted);text-align:center;border-radius:14px;align-content:center;place-items:center;gap:2px;margin-top:12px;padding:18px;display:grid}.lane-empty strong{color:var(--ink);font-family:var(--font-display);margin-top:5px;font-size:1.2rem}.lane-empty span{max-width:32ch;font-size:.82rem}.lane-feedback{border-top:1px solid var(--line);min-height:42px;color:var(--muted);justify-content:space-between;align-items:center;gap:10px;font-size:.78rem;display:flex}.lane-feedback>span{padding:10px 0}.lane-feedback button{color:#b61319;border-color:#f1a4a7;flex:none}.swipe-hint{color:var(--muted-2);text-align:center;font-size:.68rem;display:block}.deck-library__header>span{color:var(--muted);font-size:.74rem;font-weight:700}.subdivision-filter{scrollbar-width:none;gap:7px;margin:14px -16px 0;padding:0 16px 8px;display:flex;overflow-x:auto}.subdivision-filter::-webkit-scrollbar{display:none}.subdivision-filter button{border:1px solid var(--line);background:var(--surface);min-height:40px;color:var(--muted);cursor:pointer;border-radius:12px;flex:none;padding:0 14px;font-size:.76rem;font-weight:750}.subdivision-filter button.is-active{border-color:var(--ink);background:var(--ink);color:#fff}.synonym-guide{border:1px solid var(--line);background:#f7f7f6;border-radius:15px;margin-top:4px}.synonym-guide__toggle{border-radius:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:auto 1fr auto auto;align-items:center;gap:10px;width:100%;min-height:58px;padding:8px 11px;display:grid}.synonym-guide__toggle>svg:first-child{color:var(--muted)}.synonym-guide__toggle>span:nth-child(2){display:grid}.synonym-guide__toggle strong{font-size:.82rem}.synonym-guide__toggle small{color:var(--muted);font-size:.68rem}.synonym-guide__swatches{gap:4px;display:flex}.synonym-guide__swatches i,.family-dot{border-radius:50%;flex:none;width:9px;height:9px;display:inline-block;box-shadow:0 0 0 1px #00000024}.synonym-guide__swatches .is-gray,.family-dot--gray{background:#929896}.synonym-guide__swatches .is-green,.family-dot--green{background:#3fb854}.synonym-guide__swatches .is-yellow,.family-dot--yellow{background:#f0d900}.synonym-guide__swatches .is-red,.family-dot--red{background:#ed343d}.synonym-guide__chevron{color:var(--muted);transition:transform .18s var(--ease-out)}.synonym-guide.is-open .synonym-guide__chevron{transform:rotate(180deg)}.synonym-guide__reveal{transition:grid-template-rows .22s var(--ease-out);grid-template-rows:0fr;display:grid}.synonym-guide.is-open .synonym-guide__reveal{grid-template-rows:1fr}.synonym-guide__reveal>div{overflow:hidden}.synonym-guide__reveal p{border-top:1px solid var(--line);max-width:62ch;color:var(--muted);margin:0 12px 10px;padding-top:11px;font-size:.76rem;line-height:1.4}.synonym-families{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:0 12px 12px;display:grid}.synonym-family{--family-color:#929896;border:1px solid var(--line);background:var(--surface);text-align:left;cursor:pointer;border-radius:12px;grid-template-columns:auto 1fr;align-items:center;gap:9px;min-width:0;min-height:56px;padding:8px 9px;display:grid}.synonym-family--green{--family-color:#3fb854}.synonym-family--yellow{--family-color:#e4cd00}.synonym-family--red{--family-color:#ed343d}.synonym-family.is-active{border-color:var(--family-color);box-shadow:0 0 0 2px color-mix(in oklch, var(--family-color) 25%, transparent)}.synonym-family__dot{background:var(--family-color);border-radius:50%;width:11px;height:11px}.synonym-family>span:last-child{min-width:0;display:grid}.synonym-family strong{font-family:var(--font-display);text-overflow:ellipsis;white-space:nowrap;font-size:.96rem;line-height:1;overflow:hidden}.synonym-family small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:.64rem;line-height:1.15;overflow:hidden}.synonym-guide__clear{min-height:40px;color:var(--green-dark);cursor:pointer;background:0 0;border:0;margin:-3px 12px 10px;padding:0;font-size:.74rem;font-weight:800}.deck-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 10px;margin-top:8px;display:grid}.deck-grid__item{align-content:start;gap:7px;min-width:0;display:grid}.deck-grid__item>span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:5px;font-size:.7rem;line-height:1.2;display:flex;overflow:hidden}.deck-empty-filter{min-height:116px;color:var(--muted);text-align:center;align-content:center;place-items:center;gap:4px;font-size:.8rem;display:grid}.deck-empty-filter button{min-height:40px;color:var(--ink);cursor:pointer;background:0 0;border:0;padding:0 10px;font-weight:800}.undo-toast{z-index:500;right:12px;bottom:calc(82px + max(12px, env(safe-area-inset-bottom)));background:var(--ink);max-width:560px;min-height:58px;box-shadow:var(--shadow-float);color:#fff;animation:sheet-in .25s var(--ease-out) both;border-radius:16px;grid-template-columns:auto 1fr auto auto;align-items:center;gap:10px;padding:7px 7px 7px 14px;font-size:.8rem;display:grid;position:fixed;left:12px}.undo-toast button{color:#fff;cursor:pointer;background:#222;border:1px solid #555;border-radius:11px;min-height:42px;padding:0 12px;font-weight:750}.undo-toast .undo-toast__close{background:0 0;border-color:#0000;width:42px;padding:0}.favorites-heading{justify-content:space-between;align-items:flex-end;gap:18px;padding:4px 2px 18px;display:flex}.favorites-heading h1{margin-top:5px;font-size:clamp(2.75rem,12vw,3.8rem)}.favorites-heading p{max-width:46ch;color:var(--muted);margin:9px 0 0;font-size:.9rem}.favorites-heading__create{border:1px solid var(--ink);background:var(--ink);color:#fff;cursor:pointer;border-radius:13px;flex:none;align-items:center;gap:7px;min-height:48px;padding:0 15px;font-weight:800;display:inline-flex}.favorites-empty{border:1px dashed var(--line-strong);background:var(--surface);text-align:center;border-radius:22px;align-content:center;place-items:center;gap:7px;min-height:min(570px,100dvh - 220px);padding:48px 20px;display:grid;position:relative;overflow:hidden}.favorites-empty__icon{background:var(--yellow);border-radius:50%;place-items:center;width:58px;height:58px;margin-bottom:7px;display:grid}.favorites-empty__sample{grid-template-columns:repeat(3,1fr);gap:6px;width:min(100%,330px);margin:1px 0 16px;display:grid;transform:rotate(-1.5deg)}.favorites-empty__sample>:nth-child(2){translate:0 -5px}.favorites-empty h2{font-family:var(--font-display);letter-spacing:-.02em;margin:2px 0 0;font-size:2rem;line-height:1}.favorites-empty p{max-width:40ch;color:var(--muted);margin:2px 0 15px;font-size:.88rem}.favorites-empty .primary-action{padding-inline:18px}.favorites-tools{border:1px solid var(--line);background:var(--surface);border-radius:17px;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:8px;display:grid}.favorites-search{background:var(--surface-2);min-width:0;min-height:44px;color:var(--muted);border-radius:11px;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:0 10px;display:grid}.favorites-search input{min-width:0;color:var(--ink);background:0 0;border:0;outline:0}.favorites-search input::placeholder{color:var(--muted)}.favorites-search button{cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;width:34px;height:34px;padding:0;display:grid}.favorites-sort{color:var(--muted);grid-template-columns:auto auto;align-items:center;gap:7px;padding:0 5px 0 9px;font-size:.72rem;font-weight:800;display:grid}.favorites-sort select{border:1px solid var(--line);background:var(--surface);min-height:40px;color:var(--ink);border-radius:10px;padding:0 28px 0 9px;font-size:.76rem;font-weight:750}.favorites-count{color:var(--muted);align-items:center;gap:6px;padding:12px 3px 8px;font-size:.74rem;font-weight:700;display:flex}.favorites-grid{gap:11px;display:grid}.favorite-card{border:1px solid var(--line);background:var(--surface);min-width:0;transition:border-color .13s linear, transform .15s var(--ease-out);border-radius:19px;overflow:hidden;box-shadow:0 1px 2px #00000009}.favorite-card.is-playing{border-color:#c7b500}.favorite-card__topline{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:10px;padding:14px 14px 8px;display:grid}.favorite-card__title{min-width:0}.favorite-card__title>h2,.favorite-card__title>button{display:inline}.favorite-card__title h2{font-family:var(--font-display);letter-spacing:-.015em;margin:0;font-size:1.35rem;line-height:1}.favorite-card__title>button{color:var(--muted);vertical-align:-3px;cursor:pointer;background:0 0;border:0;margin-left:6px;padding:4px}.favorite-card__title>span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:.68rem;display:block;overflow:hidden}.favorite-card__title form{grid-template-columns:minmax(0,1fr) 36px 36px;gap:4px;display:grid}.favorite-card__title form input{border:1px solid var(--ink);background:var(--surface);border-radius:9px;min-width:0;height:38px;padding:0 9px;font-weight:750}.favorite-card__title form button{background:var(--ink);color:#fff;cursor:pointer;border:0;border-radius:9px;place-items:center;width:36px;height:36px;padding:0;display:grid}.favorite-card__title form button:last-child{background:var(--surface-2);color:var(--ink)}.favorite-card__heart{background:var(--yellow);width:32px;height:32px;color:var(--ink);border-radius:50%;place-items:center;display:grid}.favorite-card__rail{scrollbar-width:none;grid-auto-columns:74px;grid-auto-flow:column;align-items:center;gap:6px;min-height:76px;padding:7px 14px 12px;display:grid;overflow-x:auto}.favorite-card__rail::-webkit-scrollbar{display:none}.favorite-card__rail .hit-mark:after,.favorite-card__rail .rest-dash:after{display:none}.favorite-card__rail .rhythm-card--notation .rhythm-card__cell.is-active:after{width:22px;translate:0 -7px}.favorite-card__more{background:var(--surface-2);width:50px;height:50px;color:var(--muted);font-family:var(--font-display);border-radius:50%;place-items:center;font-weight:800;display:grid}.favorite-card__actions{border-top:1px solid var(--line);background:#f8f8f7;grid-template-columns:1fr 1fr 44px 44px;gap:6px;padding:9px;display:grid}.favorite-card__actions button{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:11px;justify-content:center;align-items:center;gap:6px;min-height:44px;font-size:.76rem;font-weight:800;display:inline-flex}.favorite-card__actions .favorite-card__listen{border-color:var(--ink);background:var(--ink);color:#fff}.favorite-card__actions .favorite-card__practice{background:var(--yellow);border-color:#c7b500}.favorite-card__actions .favorite-card__delete{color:#b61319}.favorites-no-results{min-height:250px;color:var(--muted);text-align:center;align-content:center;place-items:center;gap:8px;display:grid}.favorites-no-results strong{color:var(--ink)}.favorites-no-results button{cursor:pointer;background:0 0;border:0;min-height:42px;font-weight:800}.favorites-pagination{grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin-top:18px;display:grid}.favorites-pagination button{cursor:pointer;background:0 0;border:0;align-items:center;gap:3px;min-height:44px;padding:0;font-weight:800;display:inline-flex}.favorites-pagination button:last-child{justify-self:end}.favorites-pagination>span{color:var(--muted);font-size:.72rem;font-weight:700}.favorites-notice{z-index:480;right:14px;bottom:calc(82px + max(12px, env(safe-area-inset-bottom)));background:var(--ink);max-width:calc(100vw - 28px);min-height:48px;box-shadow:var(--shadow-float);color:#fff;cursor:pointer;animation:sheet-in .22s var(--ease-out) both;border:0;border-radius:13px;align-items:center;gap:8px;padding:0 12px;font-size:.76rem;font-weight:700;display:flex;position:fixed}.bottom-nav{z-index:300;padding:5px max(14px, env(safe-area-inset-right)) max(5px, env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left));-webkit-backdrop-filter:blur(22px)saturate(1.6);background:#fffffff0;border-top:1px solid #0000001f;grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-nav button{min-height:58px;color:var(--muted);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;align-content:center;place-items:center;gap:2px;font-size:.66rem;font-weight:700;display:grid;position:relative}.bottom-nav button:before{z-index:-1;content:"";width:44px;height:30px;transition:background-color .13s linear, transform .13s var(--ease-out);background:0 0;border-radius:15px;position:absolute;top:5px}.bottom-nav button svg{z-index:1;position:relative}.bottom-nav button.is-active{color:var(--ink)}.bottom-nav button.is-active:before{background:var(--yellow)}@keyframes enter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes sheet-in{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes modal-fade{0%{opacity:0}to{opacity:1}}@keyframes countdown-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes countdown-overlay-out{0%,72%{opacity:1}to{opacity:0}}@keyframes countdown-step-in{0%{opacity:.22;transform:scale(.82)translateZ(0)}to{opacity:1;transform:scale(1)translateZ(0)}}@keyframes countdown-tap{0%{opacity:.9;transform:scale(.92)translateZ(0)}32%,72%{opacity:1;transform:scale(1)translateZ(0)}to{opacity:0;transform:scale(1.06)translateZ(0)}}@keyframes tap-feedback{0%{opacity:0;transform:scale(.975)}18%,64%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.012)}}@keyframes score-in{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}@media (hover:hover){.mode-choice:hover{border-color:var(--ink)}.mode-choice:hover .mode-choice__arrow{transform:translate(4px)}.rhythm-card:not(.rhythm-card--preview):hover{transform:translateY(-2px);box-shadow:0 3px #232323,0 9px 20px #00000024}.rhythm-card:not(.rhythm-card--preview):active:hover{transform:translateY(2px)scale(.97)}.primary-action:hover,.install-button:hover{background:#252525}.secondary-action:hover,.lane-actions button:hover,.lane-feedback button:hover{background:var(--surface-2)}}@media (width<=699px),(hover:none) and (pointer:coarse){.tap-pad__hint{display:none}.tap-pad--compact{grid-template-columns:auto auto}}@media (width<=399px){.favorites-heading__create{justify-content:center;width:48px;padding:0;font-size:0}.favorites-sort>span{display:none}.favorites-sort{padding-left:0}.transport{grid-template-columns:50px minmax(120px,1fr) 48px 48px;gap:5px;padding:6px}.tempo-control{grid-template-columns:30px minmax(54px,1fr) 30px}.tempo-control label>span{display:none}.tempo-control label{grid-template-columns:1fr}.tempo-control strong{text-align:center}.lane-actions button{width:44px}}@media (width>=700px){.app-header{padding-right:max(28px, env(safe-area-inset-right));padding-left:max(28px, env(safe-area-inset-left))}.home-screen,.tutorial-screen,.play-screen,.favorites-screen{padding-left:28px;padding-right:28px}.home-screen{padding-top:30px}.mode-choice{grid-template-columns:38px 48px 1fr auto;gap:16px;padding-left:18px;padding-right:18px}.mode-choice__icon{width:48px;height:48px}.tutorial-phrase{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-flow:row;overflow:visible}.deck-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:22px 14px}.favorites-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.favorite-card__rail{grid-auto-columns:76px}.play-lane__scroll{grid-auto-columns:minmax(136px,160px)}.bottom-nav{border:1px solid #0000001f;border-bottom:0;border-radius:20px 20px 0 0;width:480px;left:auto;right:50%;translate:50%}.undo-toast{width:min(560px,100vw - 32px);left:auto;right:50%;translate:50%}.favorites-notice{right:50%;translate:50%}.native-modal{align-items:center}}@media (width>=980px){.deck-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.transport{grid-template-columns:64px 1fr 64px 64px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
