@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-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{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,.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{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: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__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__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{border:0 dashed #ffffff6b;border-right-width:1px;place-items:center;transition:background-color 70ms linear,transform 70ms linear;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:2;background:var(--yellow);color:var(--ink);transform:scale(1.025)}.hit-mark{aspect-ratio:1;background:#fff;border-radius:50%;width:clamp(9px,18%,17px)}.hit-mark--green{background:#43b64a}.hit-mark--yellow{background:#ffe35b}.hit-mark--red{background:#f04d54}.rest-dash{background:#fff;width:clamp(14px,32%,28px);height:4px}.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-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}.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}.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;font-size:.7rem;line-height:1.2;overflow:hidden}.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}.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(3,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:hover{transform:translateY(-2px);box-shadow:0 3px #232323,0 9px 20px #00000024}.rhythm-card: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){.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:42px;padding:0;font-size:0}}@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{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}.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:390px;left:auto;right:50%;translate:50%}.undo-toast{width:min(560px,100vw - 32px);left:auto;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}}
