@font-face{font-family:Pixelify Sans;src:url(/assets/fonts/pixelify-sans-600.ttf)format("truetype");font-weight:400 700;font-display:swap}@font-face{font-family:Silkscreen;src:url(/assets/fonts/silkscreen-400.ttf)format("truetype");font-weight:400;font-display:swap}@font-face{font-family:DM Sans;src:url(/assets/fonts/dm-sans-400.ttf)format("truetype");font-weight:400 700;font-display:swap}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--night:#0a121c;--navy:#101c29;--navy-2:#142334;--slate:#1a2c3d;--slate-2:#223a4d;--line:#2e4557;--pine:#31594f;--pine-d:#1f3d37;--pine-l:#467a6b;--honey:#f0c477;--honey-d:#c4914a;--lantern:#eeab65;--ember:#db8854;--ember-d:#8c4a2c;--mint:#a4d3b2;--cream:#f6e9cd;--muted:#a3b5b6;--dim:#6f878d;--miss:#e2a18f;--trouble:#e06a52;--ink:#04080d;--key:var(--honey);--pixel:"Pixelify Sans", ui-monospace, monospace;--micro:"Silkscreen", ui-monospace, monospace;--body:"DM Sans", system-ui, sans-serif;--fc:var(--line);--frame:0 -3px 0 0 var(--fc), 0 3px 0 0 var(--fc), -3px 0 0 0 var(--fc), 3px 0 0 0 var(--fc);--drop:0 9px 0 0 var(--ink)}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html{background:var(--night);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{min-height:100vh;color:var(--cream);font:400 15px/1.55 var(--body);-webkit-font-smoothing:antialiased;background:url(/assets/sky.svg) 0 0/180px 180px fixed,linear-gradient(#0a121c 0,#0e1926 520px,#101c29 1200px,#0c1621 100%);margin:0}@media (hover:none){body{background-attachment:scroll}}body:after{content:"";z-index:50;pointer-events:none;background:repeating-linear-gradient(#0000 0 2px,#00000026 2px 3px);position:fixed;inset:0}img,svg{image-rendering:pixelated}button,select,input{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}:focus-visible{outline:3px solid var(--honey);outline-offset:4px}a{color:var(--honey)}h1,h2,h3{font-family:var(--pixel);letter-spacing:.01em;margin:0;font-weight:600;line-height:1.05}.eyebrow,.tag,.stat-name,.panel-kicker,.menu-number,.field-label{font-family:var(--micro);letter-spacing:.08em;text-transform:uppercase;font-size:10px}.eyebrow{color:var(--honey)}.pixel-icon{flex:none;width:18px;height:18px}.primary,.connect-button,.play-control,.icon-button,.chip-button,.difficulty-options button,.mode-tabs button{--fc:var(--ink);box-shadow:var(--frame), 0 7px 0 0 var(--ink);border:0;transition:transform 90ms steps(2,end),filter 90ms;position:relative}.primary{background:var(--honey);color:#23170a;font:600 16px/1 var(--pixel);letter-spacing:.02em;box-shadow:inset 0 -4px 0 var(--honey-d), inset 0 3px 0 #ffe4ad, var(--frame), 0 7px 0 0 var(--ink);padding:12px 20px 13px}.primary.big{padding:16px 28px 18px;font-size:21px}.primary:hover:not(:disabled),.connect-button:hover:not(:disabled),.icon-button:hover:not(:disabled),.play-control:hover:not(:disabled),.chip-button:hover:not(:disabled),.difficulty-options button:hover:not(:disabled),.mode-tabs button:hover{filter:brightness(1.08);transform:translateY(-2px)}.primary:active:not(:disabled),.connect-button:active:not(:disabled),.icon-button:active:not(:disabled),.play-control:active:not(:disabled),.chip-button:active:not(:disabled),.difficulty-options button:active:not(:disabled),.mode-tabs button:active{box-shadow:var(--frame), 0 3px 0 0 var(--ink);transform:translateY(4px)}.primary.danger{background:var(--ember);color:#23100a;box-shadow:inset 0 -4px 0 var(--ember-d), inset 0 3px 0 #f2b48a, var(--frame), 0 7px 0 0 var(--ink)}#confirm-dialog{width:min(480px,100vw - 32px)}#welcome-dialog{width:min(520px,100vw - 32px)}.welcome-import{cursor:pointer}.welcome-import:focus-within{outline:3px solid var(--honey);outline-offset:4px}#instrument-dialog{width:min(520px,100vw - 32px)}#instrument-dialog .instrument-choices{margin-top:28px}.instrument-choices{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px;display:grid}.instrument-choice{background:var(--slate);color:var(--cream);font:600 clamp(15px, 4vw, 18px) / 1.2 var(--pixel);box-shadow:inset 0 -3px 0 #0f1c28, inset 0 2px 0 #2c4558, var(--frame), 0 6px 0 0 var(--ink);cursor:pointer;justify-items:center;gap:10px;padding:16px 8px 14px;display:grid}.instrument-choice img{width:64px;height:64px;image-rendering:pixelated}.instrument-choice[aria-pressed=true]{background:var(--pine);outline:2px solid var(--honey);outline-offset:2px}#confirm-dialog-message{color:var(--muted);margin:0 0 24px}.primary:disabled{color:#9eabad;box-shadow:inset 0 -4px 0 #3a474d, var(--frame), 0 7px 0 0 var(--ink);background:#4b5a61}.chip-button{background:var(--slate);color:var(--cream);font:600 13px/1 var(--pixel);box-shadow:inset 0 -3px 0 #0f1c28, inset 0 2px 0 #2c4558, var(--frame), 0 6px 0 0 var(--ink);align-items:center;gap:8px;padding:9px 13px 10px;display:inline-flex}#badges-button img{width:18px;height:18px}#badges-button b{color:var(--honey);font-variant-numeric:tabular-nums}.circle-question{background:var(--honey);color:#23170a;width:18px;height:18px;font:12px/1 var(--micro);place-items:center;display:grid}.settings-cog{background:var(--lantern);width:18px;height:18px;color:var(--ink);place-items:center;font-size:15px;line-height:1;display:grid}.data-arrows{background:var(--mint);width:18px;height:18px;color:var(--ink);font:700 15px/1 var(--body);place-items:center;display:grid}.site-header{justify-content:space-between;align-items:center;gap:16px;padding:18px 32px 14px;display:flex}.brand{color:var(--cream);align-items:center;gap:12px;text-decoration:none;display:flex}.brand-mark{width:36px;height:auto;filter:drop-shadow(0 3px 0 var(--ink))}.wordmark{font-family:var(--pixel);text-shadow:0 3px 0 var(--ink);flex-direction:column;line-height:.9;display:flex}.wordmark span{letter-spacing:.14em;text-transform:uppercase;color:var(--mint);font-size:14px}.wordmark b{letter-spacing:.06em;color:var(--honey);font-size:30px}.header-actions{align-items:center;gap:18px;display:flex}.coin-balance{--fc:var(--ink);box-shadow:inset 0 -3px 0 #120f0a, var(--frame), 0 6px 0 0 var(--ink);background:#1b1710;align-items:center;gap:8px;padding:6px 14px 6px 8px;display:inline-flex}.coin-balance img{width:24px;height:24px}.coin-balance b{font:600 20px/1 var(--pixel);color:var(--honey);font-variant-numeric:tabular-nums}.coin-balance small{font:9px var(--micro);color:var(--honey-d);letter-spacing:.1em}.day-streak-counter{--fc:var(--ink);color:var(--cream);box-shadow:inset 0 -3px 0 #120f0a, var(--frame), 0 6px 0 0 var(--ink);background:#1b1710;border:0;align-items:center;gap:7px;padding:6px 10px 6px 8px;display:inline-flex}.day-streak-counter img{width:24px;height:24px}.day-streak-counter b{font:600 20px/1 var(--pixel);color:var(--lantern);font-variant-numeric:tabular-nums}.day-streak-counter small{font:9px var(--micro);color:var(--honey-d);letter-spacing:.1em}.header-actions>.tooltip-anchor .tooltip{inset:calc(100% + 12px) 0 auto auto}.header-actions>.tooltip-anchor .tooltip:after{border-color:transparent transparent var(--line);margin:0 0 3px;inset:auto 14px 100% auto}main{padding:8px 32px 40px}@media (width>=1440px){body:not([data-experience]) .site-header,body:not([data-experience]) main{padding-inline:clamp(32px,2.5vw,64px)}}.song-banner{--fc:var(--ink);background:var(--navy);height:440px;box-shadow:var(--frame), 0 12px 0 0 #050a10;interpolate-size:allow-keywords;margin:3px 3px 36px;transition:height .24s steps(6,end),min-height .24s steps(6,end);position:relative;overflow:hidden}body:not([data-experience]) .song-banner{align-items:center;height:auto;min-height:440px;display:flex}body:not([data-experience]) .song-info{margin:0 44px;padding:36px 0;position:relative;inset:auto;transform:none}.banner-art{image-rendering:pixelated;background:url(/assets/moonlit-porch.png) 70% 58%/cover no-repeat;position:absolute;inset:0}.song-banner[data-stop=jam] .banner-art{background-image:url(/assets/local-jam.png)}.song-banner[data-stop=open-mic] .banner-art{background-image:url(/assets/open-mic.png)}.song-banner[data-stop=festival] .banner-art{background-image:url(/assets/festival-stage.png)}.song-banner[data-stop=homecoming] .banner-art{background-image:url(/assets/homecoming.png)}.song-banner:before{content:"";z-index:1;background:linear-gradient(90deg,#0a121cf2 0,#0a121cd8 26%,#0a121c80 44%,#0a121c00 60%),linear-gradient(0deg,#0a121cb0 0,#0000 30%);position:absolute;inset:0}.song-banner:after{content:"";z-index:3;pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 0 3px #f0c47733,inset 0 0 0 6px #0a121c}.song-info{z-index:2;max-width:560px;position:absolute;top:50%;left:44px;transform:translateY(-50%)}.tag{color:var(--honey);align-items:center;gap:10px;display:inline-flex}.tag i{background:var(--honey);width:8px;height:8px;animation:1.6s step-end infinite blink;box-shadow:0 0 0 2px #f0c47744}#song-number{color:var(--dim)}#song-title{color:var(--cream);text-shadow:0 4px 0 var(--ink), 4px 4px 0 var(--ink), 0 0 26px #f0c47722;-webkit-line-clamp:3;overflow-wrap:anywhere;-webkit-box-orient:vertical;margin:14px 0 10px;font-size:clamp(40px,5.4vw,72px);display:-webkit-box;overflow:hidden}#song-title.long{font-size:clamp(32px,3.6vw,46px)}.song-tagline{color:#d9d0bb;margin:0 0 18px;font-size:16px}.song-meta{flex-wrap:wrap;gap:10px;display:flex}.song-meta>span{font:11px var(--micro);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:#0a121ccc;align-items:center;gap:6px;padding:5px 10px;display:inline-flex;box-shadow:0 0 0 2px #2e4557}.song-meta b{color:var(--cream);font-weight:400}#song-key:before{content:"";background:var(--key);width:10px;height:10px;box-shadow:0 0 0 2px var(--ink)}.arrangement-pick{max-width:460px;margin-top:18px;display:grid}.arrangement-pick .field-label{color:var(--cream);margin-bottom:6px}.arrangement-pick select{width:100%}.banner-shop{flex-wrap:wrap;align-items:center;gap:16px;min-height:48px;margin-top:26px;display:flex}.banner-shop .chip-button{white-space:nowrap}.owned-status{font:11px var(--micro);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.owned-status.owned{color:#10231c;background:var(--mint);box-shadow:0 0 0 3px var(--ink), 0 6px 0 0 var(--ink);align-items:center;gap:8px;padding:8px 12px;display:inline-flex}.owned-status.owned:before{content:"✓";font-family:var(--pixel);font-size:14px}.banner-stamp{z-index:2;font:12px var(--micro);letter-spacing:.12em;color:var(--honey);text-shadow:0 2px 0 var(--ink);flex-direction:column;align-items:flex-end;gap:3px;display:flex;position:absolute;bottom:22px;right:26px}.banner-stamp b{color:var(--cream);opacity:.8;font-size:9px;font-weight:400}.stamp-star{display:none}.fireflies{z-index:2;pointer-events:none;position:absolute;inset:0}.fireflies i{background:#ffe39a;width:4px;height:4px;animation:9s steps(18,end) infinite firefly;position:absolute;box-shadow:0 0 0 2px #f0c47740,0 0 10px 2px #f0c47755}.fireflies i:first-child{top:72%;left:12%}.fireflies i:nth-child(2){animation-duration:11s;animation-delay:-3s;top:58%;left:31%}.fireflies i:nth-child(3){animation-duration:13s;animation-delay:-6s;top:80%;left:46%}.fireflies i:nth-child(4){animation-duration:10s;animation-delay:-2s;top:44%;left:58%}.fireflies i:nth-child(5){animation-duration:12s;animation-delay:-8s;top:86%;left:22%}.fireflies i:nth-child(6){animation-duration:14s;animation-delay:-5s;top:70%;left:66%}.fireflies i:nth-child(7){animation-duration:9.5s;animation-delay:-1s;top:36%;left:40%}@keyframes firefly{0%{opacity:0;transform:translate(0)}15%{opacity:1}50%{opacity:.35;transform:translate(28px,-22px)}70%{opacity:1}to{opacity:0;transform:translate(56px,-8px)}}@keyframes blink{50%{opacity:.25}}.menu-head{margin:0 0 26px}.menu-head h1{text-shadow:0 4px 0 var(--ink);margin:10px 0 8px;font-size:clamp(30px,3.6vw,46px)}.menu-head p{color:var(--muted);margin:0;font-size:16px}.menu-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:36px;margin-bottom:64px;padding:0 6px;display:grid}@media (width>=1800px){.menu-options{grid-template-columns:repeat(3,minmax(0,1fr))}}.menu-card{--fc:var(--ink);--face:var(--pine);--face-d:var(--pine-d);--face-l:var(--pine-l);--accent:var(--mint);text-align:left;min-height:300px;color:var(--cream);background:linear-gradient(0deg, var(--face-d) 0 56px, #0000 56px), linear-gradient(0deg, #0000 56px, var(--face-l) 56px 59px, #0000 59px), url(/assets/quilt.svg) 0 0 / 48px 48px;background-color:var(--face);background-blend-mode:normal, normal, soft-light;box-shadow:inset 0 0 0 4px var(--face), inset 0 0 0 6px #fff2, var(--frame), 0 14px 0 0 var(--ink);border:0;grid-template-columns:1fr auto;grid-template-areas:"number art""title art""copy copy""cta cta";align-items:end;padding:30px 32px;transition:transform .16s steps(4,end);display:grid;position:relative;transform:rotate(-1.2deg)}.menu-card.play-card{--face:#7a3f2c;--face-d:#54291d;--face-l:#a45a3a;--accent:var(--honey);transform:rotate(1.2deg)}.menu-card.chase-card{--face:var(--slate-2);--face-d:var(--slate);--face-l:var(--line);--accent:var(--ember);transform:rotate(-.6deg)}.menu-card.set-card{--face:#5b4a2a;--face-d:#3d321c;--face-l:#7f6a3c;--accent:var(--honey);transform:rotate(.8deg)}.menu-card.jam-card{--face:#4a3350;--face-d:#312238;--face-l:#6a4a72;--accent:var(--miss);transform:rotate(.4deg)}.menu-card.career-card{--face:#2c4a5e;--face-d:#1c3242;--face-l:#3f6780;--accent:var(--lantern);transform:rotate(-.9deg)}.menu-card:hover,.menu-card:focus-visible{transform:rotate(0)translateY(-8px)}.menu-card:active{transform:rotate(0)translateY(0)}.menu-card:disabled{pointer-events:none;filter:saturate(.4)brightness(.75)}.card-corner{font:12px var(--micro);color:var(--accent);opacity:.9;position:absolute;top:14px;left:16px}.card-art{filter:drop-shadow(0 6px #04080d88);grid-area:art;align-self:start;margin:-12px -8px 0 12px}.card-art img{width:128px;height:128px;animation:2.4s steps(2,end) infinite bob;display:block}.play-card .card-art img{animation-delay:-1.2s}.set-card .card-art img{animation-delay:-.6s}.chase-card .card-art img{animation-duration:1.2s}.jam-card .card-art img{animation-delay:-.6s}.career-card .card-art img{animation-delay:-1.8s}.menu-number{color:var(--accent);grid-area:number}.menu-card strong{font:600 clamp(44px, 5vw, 64px) / 1 var(--pixel);text-shadow:0 4px 0 var(--ink);grid-area:title;margin-top:6px}.card-copy{color:#eadfc6;grid-area:copy;max-width:460px;margin:14px 0 26px;font-size:15px}.card-cta{font:600 15px var(--pixel);color:var(--accent);letter-spacing:.02em;grid-area:cta;justify-self:start}.menu-card:hover .card-cta{text-underline-offset:5px;text-decoration:underline}@keyframes bob{50%{transform:translateY(-4px)}}.career{margin-bottom:64px}.career .menu-head h1:focus{outline:none}#career-status{color:var(--cream)}.career-road{--fc:var(--ink);max-width:calc(200vh - 128px);box-shadow:var(--frame), 0 12px 0 0 #050a10;margin:3px auto 40px;position:relative}.career-road-art{width:100%;height:auto;display:block}.career-pins{margin:0;padding:0;list-style:none}.stop-pin{left:var(--x);top:var(--y);position:absolute;transform:translate(-50%,-100%)}.stop-pin button{background:0 0;border:0;flex-direction:column;align-items:center;gap:4px;padding:0;display:flex}.stop-pin img{filter:drop-shadow(0 4px #04080dcc);width:32px;height:40px;transition:transform .12s steps(3,end)}.stop-pin.locked img{filter:drop-shadow(0 4px #04080dcc)saturate(.4);width:28px;height:28px}.stop-pin.here img{animation:1.2s steps(2,end) infinite bob}.stop-pin button:hover img,.stop-pin button[aria-pressed=true] img{transform:translateY(-4px)}.stop-pin-label{box-shadow:0 0 0 2px var(--line);font:600 13px/1 var(--pixel);color:var(--cream);white-space:nowrap;background:#0a121ce6;order:-1;padding:4px 8px 5px}.stop-pin-label b{color:var(--honey);font-weight:600}.stop-pin.here .stop-pin-label{box-shadow:0 0 0 2px var(--honey);color:var(--honey)}.stop-pin.locked .stop-pin-label{color:var(--dim)}.stop-pin button[aria-pressed=true] .stop-pin-label{background:var(--honey);box-shadow:0 0 0 2px var(--ink);color:#23170a}.stop-pin button[aria-pressed=true] .stop-pin-label b{color:#23170a}.stop-panel{--fc:var(--line);background:var(--navy-2);box-shadow:var(--frame), 0 9px 0 0 var(--ink);padding:26px 30px 30px}.stop-panel.locked{--fc:#22313f}.stop-panel header p{max-width:720px;color:var(--muted);margin:0 0 10px}.stop-panel h2{text-shadow:0 3px 0 var(--ink);margin:8px 0 10px;font-size:clamp(28px,3vw,40px)}.stop-panel .stop-status{font:11px var(--micro);letter-spacing:.06em;text-transform:uppercase;color:var(--honey);align-items:center;gap:8px;margin:4px 0 20px;display:inline-flex}.stop-panel.cleared .stop-status{color:var(--mint)}.challenge-list{gap:14px;margin:0;padding:0;list-style:none;display:grid}.challenge{--fc:var(--line);background:var(--navy);box-shadow:var(--frame);grid-template-columns:auto 1fr auto;align-items:center;gap:16px;padding:14px 18px;display:grid}.challenge-check{background:var(--night);width:28px;height:28px;box-shadow:0 0 0 2px var(--line);font:600 18px/1 var(--pixel);color:var(--ink);place-items:center;display:grid}.challenge.met{--fc:var(--pine-l)}.challenge.met .challenge-check{background:var(--mint);box-shadow:0 0 0 2px var(--ink)}.challenge-body b{font:600 18px var(--pixel)}.challenge-body p{color:var(--muted);margin:2px 0 0;font-size:14px}.challenge.met .challenge-body p{color:var(--dim)}.stop-panel.locked .challenge-body{opacity:.6}.challenge-tally{font:10px var(--micro);letter-spacing:.08em;text-transform:uppercase;color:var(--honey);margin-top:6px;display:inline-block}.challenge-body .challenge-hint{color:var(--lantern);margin-top:6px}.song-shop{margin-top:8px}.shop-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:32px;margin-bottom:24px;display:flex}.shop-head h2{text-shadow:0 3px 0 var(--ink);margin:10px 0 8px;font-size:clamp(26px,2.6vw,34px)}#shop-intro{color:var(--muted);margin:0}.song-finder{background:var(--night);box-shadow:inset 0 0 0 2px var(--slate);flex-wrap:wrap;align-items:center;gap:12px 22px;margin-bottom:28px;padding:12px 14px;display:flex}.song-search{background:var(--navy);min-width:0;max-width:420px;color:var(--cream);font:500 14px var(--body);box-shadow:inset 0 0 0 2px var(--line);border:0;flex:240px;padding:9px 12px 10px}.song-search::placeholder{color:var(--dim)}.finder-control{font:10px var(--micro);letter-spacing:.08em;color:var(--dim);align-items:center;gap:10px;display:inline-flex}.finder-control select{padding-top:6px;padding-bottom:7px;font-size:13px}.my-songs-filter{color:var(--cream);cursor:pointer;align-items:center;gap:8px;font-size:14px;display:inline-flex}.finder-count{color:var(--muted);margin-left:auto;font-size:13px}.finder-count:empty{display:none}.my-songs-empty{color:var(--muted);margin:0;padding:24px 6px}.shop-fine-print{color:var(--dim);text-align:right;white-space:nowrap;margin:0;font-size:13px}.shop-fine-print img{vertical-align:-2px;width:14px;height:14px}.song-grid{grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:28px 24px;padding:6px;display:grid}.song-grid.with-arrangements{--fan:26px;padding:6px calc(6px + var(--fan) / 2) calc(6px + var(--fan));grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));grid-auto-flow:dense;gap:52px 36px}.song-grid.with-arrangements>:not(.deal-table){margin-right:var(--fan)}.tune-deck{--fc:var(--ink);display:grid;position:relative}.deck-back{z-index:0;background:var(--navy-2);box-shadow:inset 0 0 0 2px #2a4154, var(--frame), 0 8px 0 0 var(--ink);transform:translate(calc(var(--back) * 5px), calc(var(--back) * 5px)) rotate(calc(var(--back) * 1deg));transition:transform .16s steps(4,end),opacity .16s steps(4,end);position:absolute;inset:0}.tune-deck>.tune-card{z-index:1}.tune-deck[data-open] .deck-back{opacity:0;transform:none}.tc-deck-list{color:var(--cream);gap:5px;padding:4px 12px 0;font-size:12px;display:grid}.tc-deck-list span:before{content:"";vertical-align:-1px;background:var(--honey);width:7px;height:9px;box-shadow:0 0 0 1px var(--ink);margin-right:8px;display:inline-block}.tc-deal{color:var(--honey);font:9px var(--micro);letter-spacing:.06em;text-transform:uppercase}.tune-card.deck.holds-pick:after{content:attr(data-current-label);background:var(--honey);color:#23170a;font:9px var(--micro);letter-spacing:.08em;white-space:nowrap;box-shadow:0 0 0 2px var(--ink);padding:3px 8px;position:absolute;bottom:-20px;left:50%;transform:translate(-50%)}.deal-table{background:color-mix(in srgb, var(--pine-d) 70%, var(--night));box-shadow:inset 0 0 0 2px var(--line), inset 0 8px 0 #0005;grid-column:1/-1;grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:30px 20px;padding:22px 20px 36px;display:grid}.tune-card.dealt{animation:.56s steps(7,end) backwards deal;animation-delay:calc(var(--turn) * .13s)}@keyframes deal{0%{opacity:0;transform:translate(var(--from-x,0), var(--from-y,-60px)) rotate(-12deg) scale(.92)}15%{opacity:1}75%{transform:translateY(-6px)rotate(2deg)}to{opacity:1;transform:none}}.tune-card{--fc:var(--ink);text-align:left;min-height:214px;color:var(--cream);background:var(--navy-2);box-shadow:inset 0 0 0 2px #2a4154, var(--frame), 0 8px 0 0 var(--ink);border:0;flex-direction:column;gap:6px;padding:0 0 12px;transition:transform .11s steps(3,end);display:flex;position:relative}.tune-card:hover{transform:translateY(-5px)rotate(-.8deg)}.tune-card[aria-pressed=true]{--fc:var(--honey);box-shadow:inset 0 0 0 2px #2a4154, var(--frame), 0 11px 0 0 var(--ink);transform:translateY(-8px)}.tune-card[aria-pressed=true]:after{content:attr(data-current-label);background:var(--honey);color:#23170a;font:9px var(--micro);letter-spacing:.08em;white-space:nowrap;box-shadow:0 0 0 2px var(--ink);padding:3px 8px;position:absolute;bottom:-20px;left:50%;transform:translate(-50%)}.tc-top{background:#0d1824;justify-content:space-between;align-items:stretch;display:flex;box-shadow:inset 0 -2px #2a4154}.tc-no{font:10px var(--micro);color:var(--dim);letter-spacing:.06em;padding:8px 10px 7px}.tc-key{background:var(--key);color:#0f1a24;min-width:42px;font:600 17px/1 var(--pixel);text-align:center;place-items:center;padding:5px 8px 4px;display:grid;box-shadow:inset 0 -3px #00000030,inset 3px 0 #00000026}.tc-strip{background:repeating-linear-gradient(180deg, #0000 0 5px, #3a5566 5px 6px, #0000 6px 10px) 0 1px / 100% calc(var(--strings,6) * 10px) no-repeat, #0b1520;height:62px;margin:8px 10px 4px;position:relative;box-shadow:inset 0 0 0 2px #0b1520}.tc-strip:before{content:"";background:#2a4154;width:2px;position:absolute;top:0;bottom:0;left:50%}.tune-card.reviewed{background:color-mix(in srgb, var(--navy-2) calc(var(--freshness) * 100%), #4b4130);box-shadow:inset 0 0 0 2px color-mix(in srgb, #2a4154 calc(var(--freshness) * 100%), #8a7145), var(--frame), 0 8px 0 0 var(--ink)}.tune-card.reviewed .tc-top{background:color-mix(in srgb, #0d1824 calc(var(--freshness) * 100%), #332e25)}.tune-card.reviewed .tc-key{filter:saturate(calc(.25 + var(--freshness) * .75)) brightness(calc(.68 + var(--freshness) * .32))}.tune-card.reviewed .tc-strip{filter:saturate(calc(.08 + var(--freshness) * .92)) brightness(calc(.48 + var(--freshness) * .52)) sepia(calc(var(--tarnish) * .8))}.tune-card.reviewed .tc-strip:after{content:"";pointer-events:none;opacity:calc(var(--tarnish) * .95);mix-blend-mode:screen;background-color:#0000;background-image:linear-gradient(#ead397 0 0),linear-gradient(#ae8955 0 0),linear-gradient(#d6b875 0 0),linear-gradient(#765f3f 0 0),repeating-linear-gradient(135deg,#0000 0 14px,#9b815699 14px 16px,#0000 16px 31px);background-position:3px 5px,17px 13px,8px 19px,23px 3px,0 0;background-repeat:repeat;background-size:3px 3px,5px 2px,2px 5px,4px 4px,auto;background-attachment:scroll,scroll,scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box,border-box,border-box;position:absolute;inset:0}.tune-card.reviewed strong{color:color-mix(in srgb, var(--cream) calc(var(--freshness) * 100%), #b69b6d)}.tune-card.reviewed .tc-meta,.tune-card.reviewed .tc-no{color:color-mix(in srgb, var(--dim) calc(var(--freshness) * 100%), #806e50)}.tc-strip i{width:9px;height:7px;left:calc(var(--x) * (100% - 12px) + 2px);top:calc(var(--s) * 10px + 3px);background:var(--c);position:absolute;box-shadow:0 2px #04080d}.tune-card strong{font:600 18px/1.12 var(--pixel);padding:0 12px}.tc-meta{color:var(--dim);padding:0 12px;font-size:12px}.tc-arrangements{font:9px var(--micro);letter-spacing:.06em;text-transform:uppercase;color:var(--honey);padding:0 12px}.tc-book{font:9px var(--micro);letter-spacing:.06em;text-transform:uppercase;color:var(--dim);padding:0 12px}.tc-stars{font:9px var(--micro);letter-spacing:.06em;color:var(--dim);grid-template-columns:max-content max-content;align-items:center;gap:3px 6px;padding:2px 12px 0;display:grid}.tc-stars-row{display:contents}.tc-stars-row [role=img]{gap:2px;display:flex}.tc-stars-row img.off{filter:grayscale()brightness(.45)}@media (width<=340px){.tc-stars{padding-inline:8px}.tc-stars-row [role=img]{gap:1px}}.tc-foot{font:10px var(--micro);letter-spacing:.06em;color:var(--mint);flex-wrap:wrap;align-items:center;gap:6px;margin-top:auto;padding:6px 12px 0;display:flex}.tc-foot img{width:14px;height:14px}.tc-tier,#results-mastery b{color:var(--tier,var(--dim))}[data-tier=clean]{--tier:var(--mint)}[data-tier=speed]{--tier:var(--honey)}[data-tier=heart]{--tier:var(--ember)}.tc-tier{box-shadow:inset 0 0 0 1px var(--tier,var(--dim));padding:2px 6px}.tooltip-anchor{display:inline-flex;position:relative}.tooltip{--fc:var(--line);z-index:5;width:max-content;max-width:250px;font:400 13px/1.45 var(--body);letter-spacing:normal;text-align:left;color:#dcd3bf;background:var(--night);box-shadow:var(--frame), 0 6px 0 0 var(--ink);visibility:hidden;opacity:0;pointer-events:none;gap:10px;padding:12px 14px;transition:opacity .12s steps(3,end),transform .12s steps(3,end),visibility 0s .12s;display:grid;position:absolute;bottom:calc(100% + 12px);left:-4px;transform:translateY(4px)}.tooltip:after{content:"";border:7px solid #0000;border-top-color:var(--line);margin-top:3px;position:absolute;top:100%;left:14px}.tooltip-anchor:hover>.tooltip,:focus-visible .tooltip-anchor>.tooltip,.tooltip-anchor:focus-within>.tooltip{visibility:visible;opacity:1;transition-delay:0s;transform:none}.tune-card:hover,.tune-card:focus-visible{z-index:2}.tier-tip-row{gap:2px;display:grid}.tier-tip-row b{font:11px var(--micro);letter-spacing:.06em;text-transform:uppercase;color:var(--tier,var(--dim))}.tier-tip-row+.tier-tip-row{border-top:2px solid var(--slate);padding-top:10px}.tier-tip-top{color:var(--muted)}.tc-due{color:var(--honey);box-shadow:inset 0 0 0 1px var(--honey-d);background:#4b3422;padding:2px 6px}.tune-card.due{--fc:var(--honey-d);box-shadow:inset 0 0 0 2px #a17c43, var(--frame), 0 8px 0 0 var(--ink)}.tune-card.due:before{content:"";z-index:2;pointer-events:none;opacity:.9;background:repeating-radial-gradient(circle at 100% 0, #0000 0 8px, #d9cfad 9px 10px, #0000 11px 17px), repeating-conic-gradient(from 90deg at 100% 0, #d9cfad 0 2deg, #0000 2deg 18deg);filter:drop-shadow(1px 1px #17150f);width:66px;height:66px;position:absolute;top:34px;right:0}.tune-card.locked{background:linear-gradient(#0f1b28e8,#0f1b28e8),url(/assets/quilt.svg) 0 0/48px 48px}.tune-card.locked .tc-strip i{filter:saturate(.3)brightness(.75)}.tune-card.locked strong{color:#cfc6b2}.tune-card.locked .tc-foot{color:var(--honey)}.day-streak-result{color:var(--lantern);font:16px var(--pixel);margin:4px 0 16px}.day-streak-result b{color:var(--honey)}.add-tab-card{background:var(--navy);box-shadow:inset 0 0 0 2px var(--line), var(--frame), 0 8px 0 0 var(--ink)}.add-tab-card .add-tab-plus{outline:2px dashed var(--pine-l);outline-offset:-2px}.add-tab-card:hover{transform:none}.add-tab-card[aria-busy=true]{cursor:progress}.add-tab-actions{flex-wrap:wrap;gap:10px;margin:2px 12px 6px;display:flex}.add-tab-actions .chip-button{padding:8px 10px 9px;font-size:12px}.add-tab-actions .chip-button,#export-song-button,#export-tab-button{font-variant-ligatures:none}.add-tab-import{cursor:pointer}.add-tab-import:focus-within{outline:3px solid var(--honey);outline-offset:4px}.add-tab-plus{height:62px;color:var(--pine-l);font:600 44px/1 var(--pixel);place-items:center;margin:8px 10px 4px;display:grid}.add-tab-card:hover .add-tab-plus,.add-tab-card:focus-within .add-tab-plus{color:var(--honey)}.add-tab-card .tc-foot{color:var(--pine-l)}.band-shop{margin-top:48px}.band-shop-intro,.bonus-shop-intro{color:var(--muted);flex-basis:100%;margin:0;font-size:14px}.member-card{min-height:0}.member-art{background:var(--night);height:78px;box-shadow:inset 0 0 0 2px var(--navy);place-items:center;margin:8px 10px 4px;display:grid}.member-art img{width:64px;height:64px;image-rendering:pixelated}.member-card.locked .member-art img{filter:saturate(.4)brightness(.8)}.member-hire{background:var(--honey);color:var(--ink);font:10px var(--micro);letter-spacing:.06em;cursor:pointer;margin-left:auto;padding:5px 10px}.member-hire:disabled{background:var(--slate-2);color:var(--dim);cursor:not-allowed}#wallet-message{color:var(--dim);margin:34px 0 0;font-size:13px}.songbook+.songbook{margin-top:48px}.songbook-head{border-bottom:2px solid var(--line);flex-wrap:wrap;align-items:baseline;gap:6px 16px;margin-bottom:18px;padding-bottom:10px;display:flex}.songbook[data-collapsed] .songbook-head{margin-bottom:0}.songbook-title{align-items:center;gap:16px;display:flex}.songbook-title h3{align-self:baseline}.songbook-toggle{flex:none;padding:7px 8px 8px}.songbook-toggle svg{transition:transform .12s steps(2,end)}.songbook-toggle[aria-expanded=false] svg{transform:rotate(-90deg)}.songbook-head h3{color:var(--honey);text-shadow:0 3px 0 var(--ink);margin:0;font-size:clamp(20px,2vw,24px)}.songbook-count{font:10px var(--micro);letter-spacing:.08em;color:var(--dim)}.songbook-stars{font:10px var(--micro);letter-spacing:.08em;color:var(--honey);align-items:center;gap:6px;display:inline-flex}body[data-experience] .song-banner{height:150px;margin-bottom:24px}body[data-experience] .song-info{left:32px}body[data-experience] #song-title{-webkit-line-clamp:1;margin:8px 0;font-size:clamp(28px,3.2vw,40px)}body[data-experience] .song-tagline,body[data-experience] .banner-shop,body[data-experience] .arrangement-pick{display:none}body[data-experience] .banner-art{background-position:70% 36%}body[data-experience] .song-banner[data-stop=jam] .banner-art{background-position:70% 49%}body[data-experience] .song-banner[data-stop=open-mic] .banner-art{background-position:70% 31%}body[data-experience] .song-banner[data-stop=homecoming] .banner-art{background-position:70% 52%}body[data-experience] .song-banner[data-stop=festival] .banner-art{background-position:70% 43%}.session-nav{align-items:baseline;gap:18px;margin:0 0 22px;display:flex}#session-title{font:600 34px/1 var(--pixel);color:var(--honey);text-shadow:0 3px 0 var(--ink)}body[data-experience=practice] #session-title{color:var(--mint)}body[data-experience=chase] #session-title{color:var(--ember)}body[data-experience=set] #session-title{color:var(--lantern)}body[data-experience=jam] #session-title{color:var(--miss)}#session-description{color:var(--muted)}.workspace{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:32px;display:grid;position:relative}.practice{flex-direction:column;gap:18px;min-width:0;display:flex}.practice-top{flex-wrap:wrap;align-items:center;gap:18px;padding:3px;display:flex}.mode-tabs{gap:12px;display:flex}.mode-tabs button{font:600 14px/1 var(--pixel);color:var(--muted);background:var(--slate);box-shadow:inset 0 -3px 0 #0f1c28, var(--frame), 0 6px 0 0 var(--ink);align-items:center;gap:8px;padding:10px 14px 11px;display:inline-flex}.mode-tabs button.active{color:#23170a;background:var(--honey);box-shadow:inset 0 -3px 0 var(--honey-d), inset 0 2px 0 #ffe4ad, var(--frame), 0 6px 0 0 var(--ink)}.song-toolbar{flex:1;align-items:center;gap:12px;min-width:260px;display:flex}.song-toolbar label,.practice-toolbar,#section-control,#memory-control{font:10px var(--micro);letter-spacing:.08em;color:var(--dim)}select{--fc:var(--ink);appearance:none;background:linear-gradient(45deg, #0000 50%, var(--honey) 50%) right 17px center / 6px 6px no-repeat, linear-gradient(-45deg, #0000 50%, var(--honey) 50%) right 11px center / 6px 6px no-repeat, #0c1621;min-width:0;color:var(--cream);font:500 14px var(--body);box-shadow:inset 0 0 0 2px var(--line);cursor:pointer;border:0;padding:9px 36px 10px 12px}select option{background:var(--navy)}#song-select{flex:1;max-width:360px}#song-status{color:var(--dim);font-size:12px}.sheet-button{margin-left:auto}.memorize-invitation,.memorize-heading,.memorize-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.memorize-invitation{color:var(--muted);margin:16px 0;font-size:13px}.memorize-coach{background:var(--navy-2);border:2px solid var(--pine-l);margin:16px 0;padding:16px}.memorize-heading{justify-content:space-between}.memorize-heading h3{color:var(--mint);font-family:var(--pixel);margin:0;font-size:24px}.memorize-coach p{margin:10px 0;font-size:14px;line-height:1.5}.memorize-coach .memorize-progress,.memorize-coach .memorize-outcome{color:var(--honey)}.memorize-coach .memorize-input{color:var(--muted);font-size:12px}.memorize-actions{margin-top:16px}.memorize-actions p{flex-basis:100%}.memorize-coach .text-button{color:var(--cream);font:600 13px/1.2 var(--body);box-shadow:none;background:0 0;border:0;padding:8px 0;text-decoration:underline}.practice-toolbar{background:#0c1621;flex-wrap:wrap;align-items:center;gap:10px 22px;padding:10px 14px;display:flex;box-shadow:inset 0 0 0 2px #1a2c3d}#section-control,#memory-control{align-items:center;gap:10px;display:inline-flex}#section-control select,#memory-select{padding-top:6px;padding-bottom:7px;font-size:13px}.loop-control,.session-options label,.metronome{font:13px var(--body);color:var(--cream);letter-spacing:0;cursor:pointer;align-items:center;gap:8px;display:inline-flex}.session-options{align-items:center;gap:14px;display:inline-flex}.session-options span{font:12px var(--body);letter-spacing:0;color:var(--dim)}.session-options{flex-wrap:wrap}.band-volume input,.member-mix input[type=range]{flex:none;width:88px}.session-options label:has(input:disabled){color:var(--dim);cursor:default}.session-options input:disabled{opacity:.45;cursor:default}.member-mix{align-items:center;gap:8px;display:inline-flex}.member-roles{border:0;align-items:center;gap:10px;margin:0;padding:0;display:inline-flex}.member-roles legend{float:left;color:var(--cream);padding:0}.member-roles label{color:var(--muted);font-size:12px}#bar-label{color:var(--honey);margin-left:auto;font-size:11px}#full-tune-label{color:var(--muted)}input[type=checkbox]{appearance:none;width:18px;height:18px;box-shadow:inset 0 0 0 2px var(--line);cursor:pointer;background:#0a121c;place-items:center;margin:0;display:grid}input[type=checkbox]:checked{background:var(--mint);box-shadow:inset 0 0 0 2px var(--ink)}input[type=checkbox]:checked:after{content:"";border:0 solid #10231c;border-width:0 0 3px 3px;width:8px;height:4px;margin-top:-3px;transform:rotate(-45deg)}input[type=checkbox]:disabled{opacity:.4}.difficulty-panel{flex-direction:column;gap:12px;display:flex}.difficulty-options{grid-template-columns:repeat(4,1fr);gap:12px;padding:3px;display:grid}.difficulty-options button{background:var(--slate);color:var(--cream);font:600 15px/1 var(--pixel);box-shadow:inset 0 -3px 0 #0f1c28, inset 0 2px 0 #2c4558, var(--frame), 0 6px 0 0 var(--ink);padding:12px 10px 13px}.difficulty-options button[aria-pressed=true]{background:var(--pine);color:var(--cream);box-shadow:inset 0 -3px 0 var(--pine-d), inset 0 2px 0 var(--pine-l), inset 0 0 0 0 var(--mint), 0 -3px 0 0 var(--mint), 0 3px 0 0 var(--mint), -3px 0 0 0 var(--mint), 3px 0 0 0 var(--mint), 0 7px 0 0 var(--ink)}.difficulty-options button:disabled{color:var(--dim);box-shadow:inset 0 0 0 2px #1a2c3d, var(--frame), 0 6px 0 0 var(--ink);background:#111c27}.difficulty-options button[aria-pressed=true]:disabled{opacity:.75;background:var(--pine);color:var(--cream)}.difficulty-locked{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.difficulty-options button.locked:before{content:"";vertical-align:-1px;opacity:.6;background:url(/assets/sprites/lock.svg) 0 0/contain;width:12px;height:12px;margin-right:8px;display:inline-block}#difficulty-hint{color:var(--dim);margin:4px 0 0;font-size:12px}.hud{grid-template-columns:auto 1fr;gap:18px;padding:3px;display:grid}.game-hud{--fc:var(--ink);min-width:212px;box-shadow:inset 0 -4px 0 #3b1c13, inset 0 3px 0 #7a3f2c, var(--frame), 0 8px 0 0 var(--ink);background:#54291d;grid-template-columns:auto auto;grid-template-areas:"label label""combo bonus""next next";align-items:end;gap:2px 14px;padding:12px 16px;display:grid}.game-hud .stat-name{color:#f2b98c;grid-area:label}#combo{font:600 46px/.95 var(--pixel);color:var(--honey);text-shadow:0 4px 0 var(--ink);grid-area:combo}#tempo-bonus{font:9px var(--micro);color:#f2b98c;letter-spacing:.04em;background:#3b1c13;grid-area:bonus;place-self:center end;padding:3px 6px}#next-combo{color:#eed2bb;grid-area:next;font-size:12px}body[data-experience=chase] .hud,body[data-experience=jam] .hud{grid-template-columns:auto auto minmax(0,1fr)}.jam-hud{--fc:var(--ink);background:var(--slate);min-width:212px;box-shadow:inset 0 -4px 0 var(--navy-2), inset 0 3px 0 var(--line), var(--frame), 0 8px 0 0 var(--ink);align-content:end;gap:2px;padding:12px 16px;display:grid}.jam-hud .stat-name{color:var(--lantern)}#jam-break{font:600 30px/1.05 var(--pixel);color:var(--cream);text-shadow:0 3px 0 var(--ink)}.jam-hud[data-mine]{background:var(--pine-d)}.jam-hud[data-mine] #jam-break{color:var(--honey)}#jam-next{color:var(--muted);font-size:12px}#jam-next[data-coming]{color:var(--honey);animation:.5s steps(2,end) infinite cue-blink}@keyframes cue-blink{50%{opacity:.45}}.chase-hud{--fc:var(--ink);background:var(--slate);min-width:212px;box-shadow:inset 0 -4px 0 var(--navy-2), inset 0 3px 0 var(--line), var(--frame), 0 8px 0 0 var(--ink);align-content:end;gap:2px;padding:12px 16px;display:grid}.chase-hud .stat-name{color:var(--ember)}#chase-bpm{font:600 46px/.95 var(--pixel);color:var(--cream);text-shadow:0 4px 0 var(--ink)}#chase-bpm small{font:12px var(--micro);color:var(--ember);text-shadow:none}#chase-best{color:var(--muted);font-size:12px}.scoreboard{--fc:var(--ink);background:var(--navy-2);box-shadow:inset 0 0 0 2px #22384a, var(--frame), 0 8px 0 0 var(--ink);grid-template-columns:1.3fr 1fr 1fr;gap:12px 20px;padding:14px 18px;display:grid}.stat{align-items:center;gap:12px;display:flex}.stat-icon{width:38px;height:38px;color:var(--mint);background:#0c1621;place-items:center;display:grid;box-shadow:inset 0 0 0 2px #22384a}.points-stat .stat-icon{color:var(--honey)}.stat .stat-name{color:var(--dim);font-size:9px;display:block}.stat strong{font:600 30px/1 var(--pixel);font-variant-numeric:tabular-nums;display:block}.points-stat strong{color:var(--honey);font-size:36px}.stat strong small{color:var(--muted);font-size:.55em}.progress-stat{grid-column:1/-1;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;display:grid}.progress-stat .stat-name{color:var(--dim);font-size:9px}.progress-track{background:#0a121c;height:10px;padding:2px;position:relative;box-shadow:inset 0 0 0 2px #22384a}#progress-fill{background:repeating-linear-gradient(90deg, var(--honey) 0 6px, var(--lantern) 6px 8px);width:0;height:100%;transition:width .12s steps(2,end)}#progress-caption{color:var(--muted);font-size:12px}#progress-caption[data-score-target-passed]{color:var(--honey)}body[data-experience=practice] .hud{display:none}.game-stage{--fc:#0a121c;box-shadow:inset 0 0 0 2px #2b4152, 0 -3px 0 0 var(--fc), 0 3px 0 0 var(--fc), -3px 0 0 0 var(--fc), 3px 0 0 0 var(--fc), 0 12px 0 0 var(--ink);background:#0b1520;margin:3px;position:relative}.stage-top,.stage-bottom{font:10px var(--micro);letter-spacing:.08em;color:var(--dim);background:#0e1a26;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px;display:flex}.stage-top{box-shadow:inset 0 -2px #1a2c3d}.stage-bottom{box-shadow:inset 0 2px #1a2c3d}#stage-state{color:var(--honey)}.tab-canvas-wrap{display:grid;position:relative}#highway{width:100%;height:380px;image-rendering:pixelated;grid-area:1/1;display:block}.play-line-key{vertical-align:-2px;background:var(--lantern);width:4px;height:12px;box-shadow:0 0 8px var(--lantern);margin-right:6px;display:inline-block}#live-feedback{text-align:center;font:600 14px/1.2 var(--pixel);letter-spacing:.02em;color:var(--mint);flex:1}.stage-overlay{background:repeating-linear-gradient(45deg,#0000 0 3px,#0a121c30 3px 4px),#0a121cb8;grid-area:1/1;place-items:center;padding:20px;display:grid;position:relative}.overlay-card{--fc:var(--ink);text-align:center;background:var(--navy-2);max-width:460px;box-shadow:inset 0 0 0 2px #2a4154, var(--frame), 0 10px 0 0 var(--ink);flex-direction:column;align-items:center;padding:26px 34px 22px;display:flex}.small-pick img{width:40px;height:auto;animation:2s steps(2,end) infinite bob;display:block}.stage-overlay h3{text-shadow:0 3px 0 var(--ink);margin:14px 0 8px;font-size:28px}.stage-overlay p{color:var(--muted);margin:0 0 22px}.stage-overlay .strum-hint,.strum-hint{color:var(--muted);font:600 14px var(--pixel);margin:14px 0 0}.strum-hint.ready{color:var(--cream)}.strum-chord{min-width:2ch;color:var(--ink);background:var(--chord);text-align:center;padding:0 6px;display:inline-block}.strum-hint.ready .strum-chord{animation:1.2s steps(2,end) infinite strum-pulse}@keyframes strum-pulse{50%{box-shadow:0 0 0 3px var(--chord)}}.pause-banner{background:var(--navy-2);box-shadow:inset 0 0 0 2px #2a4154, 0 4px 0 0 var(--ink);white-space:nowrap;padding:6px 14px;position:absolute;top:12px;left:50%;transform:translate(-50%)}.pause-banner .strum-hint{margin:0}.demo-link{color:var(--mint);font:600 14px var(--pixel);background:0 0;border:0;margin-top:18px;padding:4px}.demo-link:hover:not(:disabled){color:var(--cream);text-underline-offset:4px;text-decoration:underline}.demo-link:disabled{opacity:.4}.hit-flash{animation:.26s steps(3,end) hit-flash}.miss-flash{animation:.42s steps(4,end) miss-flash}@keyframes hit-flash{0%{box-shadow:inset 0 0 0 2px var(--mint), 0 -3px 0 0 var(--mint), 0 3px 0 0 var(--mint), -3px 0 0 0 var(--mint), 3px 0 0 0 var(--mint), 0 12px 0 0 var(--ink)}}@keyframes miss-flash{0%{box-shadow:inset 0 0 0 2px var(--miss), 0 -3px 0 0 #b8604e, 0 3px 0 0 #b8604e, -3px 0 0 0 #b8604e, 3px 0 0 0 #b8604e, 0 12px 0 0 var(--ink)}}.transport{background:#0c1621;flex-wrap:wrap;align-items:center;gap:28px;margin-top:4px;padding:16px 18px;display:flex;box-shadow:inset 0 0 0 2px #1a2c3d}.transport-actions{align-items:center;gap:14px;display:flex}.icon-button{background:var(--slate);width:44px;height:44px;color:var(--cream);font:20px/1 var(--body);box-shadow:inset 0 -3px 0 #0f1c28, inset 0 2px 0 #2c4558, var(--frame), 0 6px 0 0 var(--ink)}.play-control{background:var(--honey);color:#23170a;width:60px;height:56px;font:24px/1 var(--body);box-shadow:inset 0 -4px 0 var(--honey-d), inset 0 3px 0 #ffe4ad, var(--frame), 0 7px 0 0 var(--ink)}.icon-button:disabled,.play-control:disabled{opacity:.45}.fixed-tempo{font:600 22px var(--pixel);color:var(--honey);text-shadow:0 3px 0 var(--ink)}.tempo-control{flex-wrap:wrap;flex:1;align-items:center;gap:4px 16px;min-width:220px;display:flex}.tempo-control label{font:10px var(--micro);letter-spacing:.08em;color:var(--dim);flex-direction:column;display:flex}.tempo-control b{font:600 22px/1 var(--pixel);color:var(--honey);letter-spacing:0}.tempo-control small{font:9px var(--micro);color:var(--dim)}.tempo-control .drill-target{color:var(--trouble);margin-top:4px}.tempo-control .drill-goal{color:var(--trouble)}.tempo-control .tempo-warning{color:var(--ember);flex-basis:100%;line-height:1.5}.tempo-control .chase-rule{color:var(--ember);margin-top:4px}input[type=range]{appearance:none;cursor:pointer;background:0 0;flex:1;height:22px;margin:0}input[type=range]::-webkit-slider-runnable-track{height:8px;box-shadow:inset 0 0 0 2px var(--line);background:#0a121c}input[type=range]::-moz-range-track{height:8px;box-shadow:inset 0 0 0 2px var(--line);background:#0a121c}input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--honey);width:14px;height:22px;box-shadow:inset 0 -3px 0 var(--honey-d), 0 0 0 2px var(--ink), 0 4px 0 0 var(--ink);border:0;margin-top:-7px}input[type=range]::-moz-range-thumb{background:var(--honey);width:14px;height:22px;box-shadow:inset 0 -3px 0 var(--honey-d), 0 0 0 2px var(--ink), 0 4px 0 0 var(--ink);border:0;border-radius:0}input[type=range]:disabled{opacity:.4}.beat-dots{gap:6px;display:flex}.beat-dots i{background:#1a2c3d;width:14px;height:14px;box-shadow:inset 0 -3px #0f1c28}.beat-dots i:first-child{width:18px}.beat-dots i.active{background:var(--lantern);box-shadow:inset 0 -3px 0 var(--ember-d), 0 0 10px #eeab6588}aside{flex-direction:column;gap:30px;padding:3px;display:flex}.input-card{--fc:var(--ink);background:var(--navy-2);box-shadow:inset 0 0 0 2px #22384a, var(--frame), 0 9px 0 0 var(--ink);padding:18px 20px 20px}.panel-kicker{color:var(--honey);justify-content:space-between;margin-bottom:14px;padding-bottom:12px;display:flex;box-shadow:0 2px #22384a}.panel-kicker span:last-child{color:var(--dim)}.card-title{justify-content:space-between;align-items:center;gap:10px;margin-bottom:16px;display:flex}.input-card h3{font-size:24px}.status-badge{font:9px var(--micro);letter-spacing:.06em;color:var(--dim);box-shadow:inset 0 0 0 2px var(--line);padding:4px 7px}.status-badge.connected{color:#10231c;background:var(--mint);box-shadow:none}.field-label{color:var(--dim);margin-bottom:8px;display:block}#input-select{width:100%;margin-bottom:18px}.connect-button{background:var(--pine);width:100%;color:var(--cream);font:600 16px/1 var(--pixel);box-shadow:inset 0 -4px 0 var(--pine-d), inset 0 3px 0 var(--pine-l), var(--frame), 0 7px 0 0 var(--ink);padding:13px 14px 14px}.meter-row{align-items:center;gap:14px;margin:22px 0 12px;display:flex}.input-meter{background:#0a121c;flex:1;height:16px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 2px #22384a}#meter-fill{background:linear-gradient(90deg, var(--pine-l), var(--mint) 55%, var(--honey) 80%, var(--ember));width:0;height:100%;transition:width 60ms linear}.input-meter:after{content:"";background:repeating-linear-gradient(90deg, #0000 0 6px, var(--navy-2) 6px 8px);position:absolute;inset:0;box-shadow:inset 0 0 0 2px #22384a}#input-note{min-width:48px;font:600 22px/1 var(--pixel);text-align:right;color:var(--muted)}.input-hint{color:var(--muted);font-size:12.5px}.input-hint.error{color:var(--miss)}.audio-settings{margin-top:16px;padding-top:12px;box-shadow:0 -2px #22384a}.audio-settings summary{cursor:pointer;font:600 13px var(--pixel);color:var(--muted)}.audio-settings[open]{gap:8px;display:grid}.audio-settings label{color:var(--muted);justify-content:space-between;margin-top:8px;font-size:12px;display:flex}.audio-settings output{font:10px var(--micro);color:var(--honey)}#disconnect-button{justify-self:start;margin-top:12px}#leaderboard-title{margin-bottom:6px}#leaderboard-scope,#chase-board-scope,#set-board-empty{color:var(--dim);margin:0 0 14px;font-size:12px}#leaderboard-list,#chase-board-list,#set-list{gap:6px;margin:0 0 12px;padding:0;list-style:none;display:grid}#leaderboard-list li,#chase-board-list li,#set-list li{background:#0c1621;grid-template-columns:28px 1fr;grid-template-areas:"rank score""rank meta";column-gap:10px;padding:7px 10px 7px 7px;display:grid;box-shadow:inset 0 0 0 2px #1a2c3d}.lb-rank{font:600 15px var(--pixel);color:var(--muted);background:#1a2c3d;grid-area:rank;place-items:center;display:grid}#leaderboard-list li:first-child .lb-rank{background:var(--honey);color:#23170a}#leaderboard-list li:nth-child(2) .lb-rank{color:#16263a;background:#c9d6d2}#leaderboard-list li:nth-child(3) .lb-rank,#chase-board-list li[aria-current] .lb-rank,#set-list li[aria-current] .lb-rank{background:var(--ember);color:#23170a}.lb-score{font:600 17px/1.1 var(--pixel);color:var(--cream);grid-area:score}.lb-meta{color:var(--dim);grid-area:meta;font-size:11px}#set-list .lb-meta span{display:block}.set-select{grid-area:score;width:100%;padding-block:6px 7px}.set-suggestions{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px;display:flex}.set-suggestions .stat-name{flex-basis:100%}.set-suggestions .chip-button[aria-pressed=true]{box-shadow:inset 0 0 0 2px var(--honey);color:var(--honey)}#leaderboard-empty{color:var(--muted);margin:0 0 10px;font-size:13px}#storage-status{font:9px var(--micro);letter-spacing:.06em;color:var(--dim)}footer{text-align:center;font:10px var(--micro);letter-spacing:.08em;color:var(--dim);gap:8px;margin-top:56px;padding-top:18px;display:grid;box-shadow:0 -2px #1a2c3d}#game-credit a{color:var(--honey)}dialog{--fc:var(--ink);width:min(680px,100vw - 32px);max-height:calc(100vh - 48px);color:var(--cream);background:var(--navy-2);box-shadow:inset 0 0 0 2px #2a4154, var(--frame), 0 12px 0 0 var(--ink);border:0;padding:34px 38px 32px;overflow:auto}dialog::backdrop{background:repeating-linear-gradient(0deg,#0000 0 2px,#04080d40 2px 3px),#04080dd0}dialog h2{color:var(--honey);text-shadow:0 3px 0 var(--ink);margin:10px 0 16px;font-size:34px}.dialog-close{background:var(--slate);width:34px;height:34px;color:var(--cream);font:22px/1 var(--body);border:0;position:absolute;top:14px;right:14px;box-shadow:inset 0 -3px #0f1c28}.dialog-close:hover{background:var(--slate-2)}#help-dialog ol{counter-reset:step;gap:12px;margin:0 0 22px;padding:0;list-style:none;display:grid}#help-dialog ol>li{color:#dcd3bf;counter-increment:step;padding-left:44px;position:relative}#help-dialog ol>li:before{content:counter(step);background:var(--pine);width:28px;height:28px;color:var(--cream);font:600 15px var(--pixel);box-shadow:inset 0 -3px 0 var(--pine-d);place-items:center;display:grid;position:absolute;top:1px;left:0}#help-dialog ol>li b{color:var(--honey)}.note-key{grid-template-columns:repeat(12,1fr);gap:6px;margin:0 0 22px;padding:0;list-style:none;display:grid}.note-key li{color:#0f1a24;height:44px;font:600 16px var(--pixel);box-shadow:inset 0 -4px 0 #00000030, 0 4px 0 var(--ink);place-items:center;display:grid}.help-heading{font:600 18px var(--pixel);color:var(--cream);margin:22px 0 10px}#help-title+.help-heading{margin-top:4px}.help-note{color:var(--muted);margin:-12px 0 0;font-size:14px}.help-modes+.help-note{margin-top:12px}.help-hit{color:var(--mint)}.help-miss{color:var(--miss)}.help-modes{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.help-modes li{--accent:var(--honey);color:#dcd3bf;background:var(--night);box-shadow:inset 0 3px 0 var(--accent);padding:12px 14px;font-size:14px;line-height:1.45}.help-modes li[data-mode=career]{--accent:var(--cream)}.help-modes li[data-mode=practice]{--accent:var(--mint)}.help-modes li[data-mode=chase]{--accent:var(--ember)}.help-modes li[data-mode=jam]{--accent:var(--miss)}.help-modes li[data-mode=set]{--accent:var(--lantern)}.help-modes b{font:600 17px var(--pixel);color:var(--accent);margin-bottom:4px;display:block}.help-list{color:#dcd3bf;gap:8px;margin:0;padding:0;list-style:none;display:grid}.help-list b{color:var(--honey)}.help-tiers{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.help-tiers .tc-tier{font:12px var(--micro)}.help-tiers small{color:var(--muted);margin-left:4px;font-size:11px}.help-tip{color:var(--muted);background:var(--night);margin:22px 0 24px;padding:10px 14px;font-size:14px}.help-tip b{color:var(--honey)}.game-data-intro{color:var(--muted);margin:-6px 0 22px}.game-data-section{border-top:2px solid var(--slate);grid-template-columns:1fr auto;align-items:center;gap:14px 24px;padding:20px 0;display:grid}.game-data-section h3{color:var(--cream);font:600 20px var(--pixel);margin:0 0 5px}.game-data-section p{color:var(--muted);margin:0}.game-data-section .game-data-file{overflow-wrap:anywhere;color:var(--mint);font:10px var(--micro);letter-spacing:.05em;grid-column:1/-1}.game-data-status{background:var(--pine-d);color:var(--mint);margin:10px 0 0;padding:12px 14px}.game-data-status[data-error]{color:#ffd2c8;background:#3c2020}#badges-dialog{width:min(860px,100vw - 32px)}.badges-intro{color:var(--muted);margin:-6px 0 8px}.badge-group h3{font:11px var(--micro);letter-spacing:.1em;text-transform:uppercase;color:var(--mint);margin:16px 0 10px}.badge-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;margin:0;padding:0;list-style:none;display:grid}.badge-card{--fc:var(--honey-d);text-align:center;background:var(--night);box-shadow:var(--frame), 0 6px 0 0 var(--ink);flex-direction:column;align-items:center;gap:6px;padding:14px 12px 12px;display:flex}.badge-card.locked{--fc:var(--line);background:var(--navy)}.badge-art{width:64px;height:64px;display:block;position:relative}.badge-art img{width:64px;height:64px}.badge-card.locked .badge-art img{filter:grayscale()brightness(.5)}.badge-card.locked .badge-art:after{content:"";background:url(/assets/sprites/lock.svg) 0 0/contain;width:24px;height:24px;position:absolute;bottom:-4px;right:-4px}.badge-card b{font:600 16px var(--pixel);color:var(--honey)}.badge-card.locked b{color:var(--cream)}.badge-card p{color:var(--muted);flex:1;margin:0;font-size:13px}.badge-tally{font:600 13px var(--pixel);color:var(--mint)}.badge-card small{font:10px var(--micro);letter-spacing:.06em;color:var(--dim)}.badge-card:not(.locked) small{color:var(--honey-d)}#sheet-dialog{width:min(980px,100vw - 32px)}#sheet-description{color:var(--muted);margin:-6px 0 18px}#sheet-images img{image-rendering:auto;width:100%;box-shadow:0 0 0 3px var(--ink);background:#fff;margin-bottom:16px;display:block}#results-dialog{text-align:center;width:min(600px,100vw - 32px);position:relative;overflow:hidden}#drill-mastered-dialog{text-align:center;width:min(520px,100vw - 32px)}#results-dialog .eyebrow{font-size:12px}.result-stars{font:600 48px/1 var(--pixel);color:var(--honey);justify-content:center;margin:18px 0 4px;display:flex}.result-stars [role=img]{gap:10px;display:flex}.result-stars img{--star:clamp(40px, 12vw, 56px);width:var(--star);height:var(--star);filter:drop-shadow(0 4px 0 var(--ink));animation:.36s steps(4,end) backwards star-pop}.result-stars img:nth-child(2),.result-stars img:nth-child(4){transform:translateY(-6px)}.result-stars img:nth-child(3){transform:translateY(-10px)}.result-stars img:nth-child(2){animation-delay:.12s}.result-stars img:nth-child(3){animation-delay:.24s}.result-stars img:nth-child(4){animation-delay:.36s}.result-stars img:nth-child(5){animation-delay:.48s}.result-stars img.off{filter:grayscale(1) brightness(.45) drop-shadow(0 4px 0 var(--ink))}@keyframes star-pop{0%{opacity:0;scale:.3}}#results-coins{font:600 16px var(--pixel);color:var(--honey);margin:0 0 8px;padding:0 10px;display:inline-block}#results-coins:empty{display:none}.chase-result{justify-items:center;gap:6px;margin:18px 0 4px;display:grid}#chase-result-bpm{font:600 64px/1 var(--pixel);color:var(--cream);text-shadow:0 4px 0 var(--ink)}#chase-result-bpm small{font:14px var(--micro);color:var(--ember);text-shadow:none}#chase-result-best{font:12px var(--micro);letter-spacing:.06em;color:var(--muted)}.chase-milestone{background:var(--ember);box-shadow:inset 0 -3px 0 var(--ember-d), var(--frame), 0 4px 0 0 var(--ink);font:11px var(--micro);letter-spacing:.06em;color:#23170a;padding:4px 10px;animation:.36s steps(4,end) backwards star-pop}#results-mastery{font:13px var(--micro);letter-spacing:.06em;color:var(--muted);margin:8px 0}#results-achievement{font:13px var(--micro);letter-spacing:.06em;color:var(--mint);margin:8px 0}#results-near-miss{font:13px var(--micro);letter-spacing:.06em;color:var(--honey);margin:8px 0}.badge-toasts{gap:8px;margin:4px 0 10px;padding:0;list-style:none;display:grid}.badge-toast{--fc:var(--honey-d);text-align:left;background:var(--night);box-shadow:var(--frame), 0 5px 0 0 var(--ink);align-items:center;gap:12px;padding:6px 14px 6px 8px;animation:.42s steps(4,end) backwards toast-in;display:flex}.badge-toast.career-toast{--fc:var(--pine-l)}.badge-toast.stop-toast{--fc:var(--honey)}.career-toast .toast-check{background:var(--mint);width:32px;height:32px;box-shadow:0 0 0 2px var(--ink);font:600 20px/1 var(--pixel);color:var(--ink);flex:none;place-items:center;margin:8px;display:grid}.badge-toast:nth-child(2){animation-delay:.24s}.badge-toast:nth-child(n+3){animation-delay:.48s}.badge-toast>img{flex:none;width:48px;height:48px}.badge-toast span{flex:1}.badge-toast small{font:12px var(--micro);letter-spacing:.08em;color:var(--mint);display:block}.badge-toast b{font:600 17px var(--pixel);color:var(--cream)}.badge-toast em{font:600 15px var(--pixel);color:var(--honey);align-items:center;gap:4px;font-style:normal;display:inline-flex}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}}#results-copy{color:var(--muted);margin:8px 0 26px;font-size:16px}.trouble-spot{background:var(--night);box-shadow:var(--frame);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 16px;margin:-12px 0 24px;padding:10px 14px;display:flex}.trouble-spot p{text-align:left;color:var(--cream);margin:0}.trouble-spot b{color:var(--trouble)}.trouble-spot small{font:12px var(--micro);letter-spacing:.06em;color:var(--muted);display:block}.set-results{text-align:left;gap:6px;margin:-14px 0 24px;padding:0;list-style:none;display:grid}.set-results li{background:var(--night);box-shadow:inset 0 0 0 2px var(--slate);grid-template-columns:26px minmax(0,1fr) auto;grid-template-areas:"rank title stars""rank meta stars";align-items:center;column-gap:10px;padding:6px 10px 6px 6px;display:grid}.set-results .lb-rank{align-self:stretch}.set-results b{color:var(--cream);text-overflow:ellipsis;white-space:nowrap;grid-area:title;overflow:hidden}.set-results small{font:10px var(--micro);letter-spacing:.06em;color:var(--dim);grid-area:meta}.set-stars{grid-area:stars;gap:2px;display:flex}.set-stars img.off{filter:grayscale()brightness(.45)}.other-steps{flex-wrap:wrap;justify-content:center;gap:14px 12px;margin-top:22px;display:flex}.other-steps .strum-chord{margin-right:8px}#confetti{pointer-events:none;position:absolute;inset:0;overflow:hidden}#confetti i{width:8px;height:8px;animation:2.6s steps(26,end) forwards confetti-fall;position:absolute;top:-15px}@keyframes confetti-fall{0%{opacity:1;translate:0;rotate:0deg}to{opacity:1;translate:3vw 34vw;rotate:360deg}}#score-particles{pointer-events:none;z-index:8;position:fixed;inset:0}.score-particle{color:var(--honey);font:600 16px var(--pixel);text-shadow:0 2px 0 var(--ink);animation:.65s cubic-bezier(.25,.6,.4,1) forwards points-to-total;position:absolute}@keyframes points-to-total{0%{opacity:0;transform:translate(-50%,-50%)scale(.85)}15%{opacity:1}80%{opacity:.7}to{opacity:0;transform:translate(calc(var(--score-x) - 50%), calc(var(--score-y) - 50%)) scale(.55)}}.score-arrival{animation:.26s steps(3,end) score-arrival}@keyframes score-arrival{30%{color:#fff4d6;transform:translateY(-3px)}}@media (width>=1101px){body[data-experience]{flex-direction:column;height:100dvh;display:flex}body[data-experience] .site-header{width:100%;padding-top:10px;padding-bottom:8px}body[data-experience] main{flex-direction:column;flex:1;width:100%;min-height:0;padding-bottom:12px;display:flex}body[data-experience] .song-banner{flex:none;height:96px;margin-bottom:16px}body[data-experience] .song-info .tag{display:none}body[data-experience] #song-title{margin:0 0 8px;font-size:clamp(24px,2.6vw,34px)}body[data-experience] .session-nav{margin-bottom:12px}body[data-experience] #session-title{font-size:28px}body[data-experience] .workspace{flex:1;grid-template-rows:minmax(0,1fr);align-items:stretch;gap:24px;min-height:0}body[data-experience] .practice{gap:12px;min-height:0}body[data-experience] .mode-tabs button{padding:8px 12px 9px}body[data-experience] .practice-toolbar{padding:7px 14px}body[data-experience] .difficulty-panel{gap:4px}body[data-experience] .difficulty-options button{padding:9px 10px 10px}body[data-experience] #difficulty-hint{margin:2px 0 0}body[data-experience] .game-hud,body[data-experience] .chase-hud,body[data-experience] .jam-hud{padding:8px 14px}body[data-experience] #combo,body[data-experience] #chase-bpm{font-size:34px}body[data-experience] .scoreboard{gap:6px 20px;padding:8px 16px}body[data-experience] .stat-icon{width:30px;height:30px}body[data-experience] .stat strong{font-size:24px}body[data-experience] .points-stat strong{font-size:28px}body[data-experience] .game-stage{flex-direction:column;flex:auto;display:flex}body[data-experience] .stage-top,body[data-experience] .stage-bottom{padding:6px 14px}body[data-experience] .tab-canvas-wrap{flex:1 0 auto;min-height:220px}body[data-experience] #highway{height:100%;position:absolute;inset:0}body[data-experience] .overlay-card{padding:16px 28px 14px}body[data-experience] .stage-overlay h3{margin:8px 0 4px;font-size:24px}body[data-experience] .stage-overlay p{margin-bottom:14px}body[data-experience] .demo-link{margin-top:10px}body[data-experience] .transport{flex:none;margin-top:0;padding:8px 16px}body[data-experience] .play-control{height:48px}body[data-experience] aside{scrollbar-width:none;gap:20px;min-height:0;overflow-y:auto}body[data-experience] .input-card{flex:none;padding:14px 18px 16px}body[data-experience] .panel-kicker{margin-bottom:10px;padding-bottom:8px}body[data-experience] .card-title{margin-bottom:10px}body[data-experience] #input-select{margin-bottom:12px}body[data-experience] .meter-row{margin:14px 0 8px}body[data-experience] .audio-settings{margin-top:10px}body[data-experience] .leaderboard{flex-direction:column;flex:0 auto;min-height:180px;display:flex}body[data-experience] #leaderboard-scope{margin-bottom:10px}body[data-experience] #leaderboard-list{scrollbar-width:thin;scrollbar-color:#2b4152 transparent;min-height:0;overflow-y:auto}body[data-experience] footer{flex:none;margin-top:12px;padding-top:8px}}@media (width>=1101px) and (height<=900px){body[data-experience] main{grid-template-rows:auto minmax(0,1fr);grid-template-columns:auto minmax(0,1fr);gap:12px 20px;display:grid}body[data-experience] .song-banner{grid-area:1/2;height:58px;margin:3px}body[data-experience] .session-nav{grid-area:1/1;align-self:center;margin:0}body[data-experience] #session-description,body[data-experience] .session-options span{display:none}body[data-experience] .workspace{grid-column:1/-1}body[data-experience] .song-info{align-items:center;gap:20px;max-width:none;display:flex;right:32px}body[data-experience] .banner-stamp{display:none}body[data-experience] #song-title{white-space:nowrap;text-overflow:ellipsis;min-width:0;margin:0;font-size:26px;overflow:hidden}body[data-experience] .song-meta{flex-wrap:nowrap;flex:none}body[data-experience] .practice{gap:10px}body[data-experience] #difficulty-hint{display:none}body[data-experience] .game-hud,body[data-experience] .chase-hud,body[data-experience] .jam-hud{padding:6px 12px 8px}body[data-experience] #combo,body[data-experience] #chase-bpm{font-size:28px}body[data-experience] .scoreboard{grid-template-columns:auto auto auto minmax(0,1fr);align-items:center}body[data-experience] .progress-stat{grid-column:auto;grid-template-columns:1fr;gap:4px}body[data-experience] .tab-canvas-wrap{min-height:200px}body[data-experience] .small-pick{display:none}body[data-experience] .stage-overlay h3{margin-top:0}body[data-experience] footer{display:none}}@media (width>=1101px) and (height<=720px){body[data-experience] .stage-top{display:none}body[data-experience] .tab-canvas-wrap{min-height:180px}}@media (width<=1100px){.workspace{grid-template-columns:1fr}aside{grid-template-columns:1fr 1fr;align-items:start;display:grid}.hud{grid-template-columns:1fr}body[data-experience=chase] .hud,body[data-experience=jam] .hud{grid-template-columns:1fr 1fr}body[data-experience=chase] .scoreboard,body[data-experience=jam] .scoreboard{grid-column:1/-1}.header-actions{gap:12px}.coin-balance small,.day-streak-counter small,#help-button .label,#badges-button .label,#game-data-button .label,#settings-button .label{display:none}#badges-button{gap:6px;padding:8px}#game-data-button,#settings-button{gap:0;padding:8px}.coin-balance b,.day-streak-counter b{font-size:16px}#help-button{gap:0;padding:8px;font-size:0}}@media (width<=760px){body{font-size:14px}.stop-pin-label{display:none}.stop-pin img{width:24px;height:30px}.stop-pin.locked img{width:20px;height:20px}.career-road{margin-bottom:30px}.stop-panel{padding:20px 16px 22px}.challenge{grid-template-columns:auto 1fr;padding:12px 14px}.challenge-go{grid-column:2;justify-self:start}.site-header{flex-wrap:wrap;row-gap:14px;padding:14px 16px 10px}.header-actions{flex-wrap:wrap;row-gap:14px}main{padding:6px 16px 32px}.wordmark span{font-size:11px}.wordmark b{font-size:23px}.game-data-section{grid-template-columns:1fr}.song-banner{height:470px;margin-bottom:30px}.banner-art{background-position:88%}.song-banner:before{background:linear-gradient(0deg,#0a121cf5 0 44%,#0a121cb0 58%,#0a121c20 78%)}.song-info{inset:auto 20px 22px;transform:none}body:not([data-experience]) .song-banner{align-items:flex-end;min-height:470px}body:not([data-experience]) .song-info{margin:0 20px;padding:160px 0 22px}#song-title{font-size:38px}#song-title.long{font-size:30px}.banner-stamp{display:none}body[data-experience] .song-banner{height:120px}body[data-experience] .song-info{bottom:14px;left:18px}body[data-experience] #song-title{margin:6px 0 0;font-size:26px}body[data-experience] .song-meta{display:none}.menu-options{grid-template-columns:1fr;gap:34px;margin-bottom:48px}.menu-card{min-height:0;padding:26px 22px 24px}.card-art img{width:88px;height:88px}.shop-head{flex-direction:column;align-items:flex-start;gap:12px}.shop-fine-print{text-align:left;white-space:normal}.song-search{flex-basis:100%;max-width:none}.song-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 14px}.deal-table{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 14px;padding:18px 10px 32px}.tune-card{min-height:196px}.tune-card strong{font-size:15px}.session-nav{flex-wrap:wrap;gap:6px 14px}#session-description{flex-basis:100%}.practice-top{gap:14px}.song-toolbar{flex-wrap:wrap;flex-basis:100%;order:3}.sheet-button span{display:none}.difficulty-options{grid-template-columns:repeat(2,1fr);gap:10px}.difficulty-options button{padding:10px 4px;font-size:12px}.difficulty-options button.locked:before{display:none}.difficulty-locked{clip-path:none;width:auto;height:auto;position:static;overflow:visible}.scoreboard{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:12px}.stat{flex-direction:column;align-items:flex-start;gap:6px}.stat-icon{display:none}.stat strong,.points-stat strong{font-size:24px}.progress-stat{grid-template-columns:1fr;gap:6px}.game-hud,.chase-hud,.jam-hud{min-width:0}#highway{height:300px}.stage-bottom>span{display:none}.overlay-card{padding:20px 18px 16px}.stage-overlay h3{margin-top:0;font-size:21px}.stage-overlay p{margin-bottom:16px;font-size:13px}.small-pick{display:none}.stage-overlay{padding:12px}.demo-link{margin-top:12px}.game-hud{grid-template-columns:auto 1fr}.transport{gap:18px}aside{grid-template-columns:1fr}dialog{padding:28px 20px 24px}.note-key{grid-template-columns:repeat(6,1fr)}}@media (width<=480px){.site-header{padding-inline:12px}.brand-mark,.wordmark span{display:none}.header-actions{column-gap:4px}.coin-balance{gap:6px;padding:6px 8px}.day-streak-counter{gap:5px;padding:6px 8px}}.settings-all{flex-wrap:wrap;gap:12px;margin-bottom:8px;display:flex}.settings-all .chip-button:disabled{opacity:.45;cursor:default}.settings-group{border-top:2px solid var(--slate);margin-top:16px;padding:18px 0 6px}.settings-group h3,.settings-group h4{font:12px var(--micro);letter-spacing:.08em;color:var(--honey);text-transform:uppercase;margin:0 0 12px}.settings-section>h3{font:600 22px var(--pixel);letter-spacing:normal;text-transform:none}.settings-group ul{gap:14px;margin:0;padding:0;list-style:none;display:grid}.effect-switch{grid-template-columns:auto 1fr;align-items:center;gap:2px 12px;display:grid}.effect-switch input{width:20px;height:20px;accent-color:var(--honey);margin:0}.effect-switch label{font:600 18px var(--pixel);color:var(--cream);cursor:pointer}.effect-switch p{color:var(--muted);grid-column:2;margin:0;font-size:14px}.effect-note{color:var(--lantern)}#settings-dialog>.primary{margin-top:22px}.live-number{display:inline-block}.number-hop{animation:.18s steps(3,end) number-hop}@keyframes number-hop{40%{transform:translateY(-2px)}}.progress-track[data-trail] #progress-fill{background:#2b4152}#progress-trail{pointer-events:none;position:absolute;inset:2px}.band-row{flex:1;justify-content:center;min-width:0;display:flex}.band-row>span{gap:6px;display:flex}.band-player{place-items:center;padding:0 1px 2px;display:grid}.band-player img{width:22px;height:22px;filter:drop-shadow(0 2px 0 var(--ink))}.band-row[data-bob="1"] .band-player:nth-child(odd) img,.band-row[data-bob="0"] .band-player:nth-child(2n) img{transform:translateY(-1px)}.band-row[data-hot][data-bob="1"] .band-player:nth-child(odd) img,.band-row[data-hot][data-bob="0"] .band-player:nth-child(2n) img{transform:translateY(-3px)}.band-player.taking{box-shadow:inset 0 -2px 0 var(--honey)}.band-player.taking img{filter:drop-shadow(0 0 4px var(--lantern)) drop-shadow(0 2px 0 var(--ink))}.band-cheer{animation:.48s steps(4,end) band-cheer}@keyframes band-cheer{25%,75%{transform:translateY(-4px)}50%{transform:translateY(0)}}@media (width<=640px){.band-row{display:none}}.stage-top{position:relative}.career-stamp{z-index:2;background:var(--honey);box-shadow:inset 0 -3px 0 var(--honey-d), 0 0 0 2px var(--ink);color:var(--ink);white-space:nowrap;pointer-events:none;justify-content:center;align-items:center;gap:12px;padding:0 14px;animation:.32s steps(4,end) stamp-slam,.4s steps(4,end) 3s forwards stamp-leave;display:flex;position:absolute;inset:-3px 0 0;overflow:hidden}.career-stamp:after{content:"";background:#fff4d6a0;width:18%;animation:.9s steps(9,end) .32s both stamp-shine;position:absolute;top:0;bottom:0;left:-30%;transform:skew(-20deg)}.career-stamp img{flex:none;width:26px;height:26px;animation:.48s steps(4,end) .32s 2 stamp-hop}.career-stamp small{font:10px var(--micro);letter-spacing:.08em;color:#5b3b12}.career-stamp .career-stamp-hint{color:#7a5520}.career-stamp b{font:600 17px/1 var(--pixel);color:var(--ink);text-overflow:ellipsis;overflow:hidden}.game-stage:has(.career-stamp) .tab-canvas-wrap:after{content:"";pointer-events:none;box-shadow:inset 0 0 0 3px var(--honey);animation:1.4s steps(7,end) forwards stamp-glow;position:absolute;inset:0}@keyframes stamp-slam{0%{opacity:0;transform:scale(1.35,2.2)}60%{opacity:1;transform:scale(.97,.9)}}@keyframes stamp-leave{to{opacity:0;transform:translateY(-100%)}}@keyframes stamp-shine{to{left:115%}}@keyframes stamp-hop{50%{transform:translateY(-4px)}}@keyframes stamp-glow{14%,43%,71%{opacity:0}28%,57%{opacity:1}to{opacity:0}}@media (width<=640px){.career-stamp small{display:none}}.career-toasts .badge-toast{animation:none}.career-toasts[data-celebrate] .badge-toast{animation:.36s steps(4,end) backwards toast-drop;animation-delay:var(--land)}@keyframes toast-drop{0%{opacity:0;transform:translateY(-14px)scale(1.06)}60%{opacity:1;transform:translateY(2px)}}.challenge.just-met .challenge-check{animation:.42s steps(4,end) backwards tick-in;animation-delay:calc(var(--tick) + .4s)}@keyframes tick-in{0%{background:var(--night);box-shadow:0 0 0 2px var(--line);color:#0000;transform:scale(1.6)}}.stop-pin button{position:relative}.stop-pin.just-cleared .stop-pin-label b{animation:.42s steps(4,end) .4s backwards star-pop;display:inline-block}.stop-pin.just-opened>button>img:not(.broken-lock){animation:.52s steps(5,end) 1.5s backwards pin-drop}.stop-pin .broken-lock{pointer-events:none;width:28px;height:28px;margin-left:-14px;animation:.7s steps(5,end) .9s forwards lock-break;position:absolute;bottom:0;left:50%}@keyframes pin-drop{0%{opacity:0;transform:translateY(-40px)}70%{opacity:1;transform:translateY(3px)}}@keyframes lock-break{20%{transform:rotate(-12deg)}40%{transform:rotate(12deg)}to{opacity:0;transform:translateY(14px)rotate(30deg)}}.road-news{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.road-news line{stroke:var(--honey);stroke-width:4px;stroke-dasharray:100;stroke-dashoffset:100px;filter:drop-shadow(0 2px 0 var(--ink));animation:1s steps(10,end) .4s forwards road-draw,.6s steps(4,end) 2.5s forwards road-fade}@keyframes road-draw{to{stroke-dashoffset:0}}@keyframes road-fade{to{opacity:0}}.banner-art.arrive{animation:.7s steps(6,end) backwards banner-arrive}@keyframes banner-arrive{0%{opacity:0}}.headliner{--fc:var(--honey-d);background:linear-gradient(90deg, #2a2418, var(--navy-2) 60%);box-shadow:var(--frame), 0 9px 0 0 var(--ink);grid-template-columns:auto 1fr auto;align-items:center;gap:18px 22px;margin-bottom:28px;padding:20px 26px;display:grid}.headliner h2{font:700 30px/1.1 var(--pixel);color:var(--honey);text-shadow:0 3px 0 var(--ink);margin:2px 0 4px}.headliner p{max-width:640px;color:var(--muted);margin:0}.headliner-actions{flex-wrap:wrap;gap:14px;display:flex}.headliner-actions [aria-pressed=true]{background:var(--honey);color:var(--ink)}#finale{--chord:1.85s;--rise:2.1s;--cheer:3.5s;--bow:4.3s;--title:5.1s;width:100vw;max-width:none;height:100dvh;max-height:none;box-shadow:none;background:#03060a;grid-template-columns:minmax(0,100%);align-content:center;place-items:center;gap:18px;margin:0;padding:0;display:grid;overflow:hidden}#finale:not([open]){display:none}#finale::backdrop{background:#03060a}.finale-scene{aspect-ratio:2172/724;width:min(100vw,280dvh);image-rendering:pixelated;animation:.5s steps(4,end) backwards scene-in;position:relative;overflow:hidden}.finale-scene img,.finale-bow{width:100%;height:100%;position:absolute;inset:0}@keyframes scene-in{0%{opacity:0}}.finale-flare{left:var(--x);top:var(--y);aspect-ratio:1;mix-blend-mode:screen;opacity:.7;width:9%;animation:flare 1.2s steps(4) var(--chord) backwards;background:radial-gradient(#fff1c4 0 7%,#f0c477bb 17%,#eeab6544 40%,#0000 64%);position:absolute;translate:-50% -50%}@keyframes flare{0%{opacity:0}25%{opacity:1;scale:1.5}}.crowd-row{position:absolute;inset:0}.crowd-row.back{clip-path:inset(0 0 30.4%);--drop:8%}.crowd-row.mid{clip-path:inset(0 0 17.1%);--drop:11%}.crowd-row.front{--drop:18%}.crowd-rise{animation:crowd-rise .7s steps(2, jump-end) calc(var(--rise) + var(--row) * .4s) backwards;position:absolute;inset:0}@keyframes crowd-rise{0%{translate:0 var(--drop)}}.crowd-rise .stand{opacity:0;animation:shown-until var(--cheer) steps(1)}.crowd-rise .cheer{animation:hidden-until var(--cheer) steps(1), wave-a .7s steps(1) var(--cheer) infinite}.crowd-rise .sway{opacity:0;animation:wave-b .7s steps(1) var(--cheer) infinite}@keyframes shown-until{0%,to{opacity:1}}@keyframes hidden-until{0%,to{opacity:0}}@keyframes wave-a{50%{opacity:0}}@keyframes wave-b{50%{opacity:1}}.finale-bow{transform-origin:50% 100%;visibility:hidden;width:33.8%;height:23.3%;animation:bow 1.6s steps(1) var(--bow);background:url(/assets/festival-stage.png) 91.7% 43.9%/296% 429%;inset:33.7% auto auto 60.7%}@keyframes bow{0%,to{visibility:visible}20%,45%{scale:1 .88}60%,85%{scale:1 .94}}.finale-scene .dog-tail{opacity:0;animation:wave-b .36s steps(1) var(--bow) infinite}.finale-scene .dog-tail.down{animation-delay:calc(var(--bow) + .18s)}.finale-fireflies i,.finale-confetti i{aspect-ratio:1;width:.35%;position:absolute}.finale-fireflies i{left:var(--x);top:var(--y);animation:swirl 2.4s steps(12) calc(var(--cheer) - var(--i) * .17s) infinite;background:#ffe39a;box-shadow:0 0 6px 2px #f0c47777}@keyframes swirl{0%{opacity:0;translate:0}20%{opacity:1}50%{translate:2.5vw -5vw}to{opacity:0;translate:-1vw -12vw}}.finale-confetti i{top:-2%;left:calc(4% + var(--i) * 5.3%);background:var(--honey);opacity:0;animation:confetti-fall 3.2s steps(16) calc(var(--cheer) + var(--i) * .19s) infinite}.finale-confetti i:nth-child(3n){background:var(--ember)}.finale-confetti i:nth-child(3n+1){background:var(--mint)}.finale-confetti i:nth-child(4n){background:var(--cream)}.finale-title{font:700 clamp(28px, 6vw, 64px) / 1 var(--pixel);letter-spacing:.06em;color:var(--honey);text-align:center;text-shadow:0 4px 0 var(--ember-d), 0 8px 0 var(--ink);animation:title-in .9s steps(5) var(--title) backwards;margin:0}@keyframes title-in{0%{opacity:0;translate:0 12px}}.finale-skip{color:var(--muted);font:11px var(--micro);letter-spacing:.08em;background:#0a121ccc;border:0;align-items:center;gap:8px;padding:6px 10px;display:flex;position:fixed;bottom:18px;right:18px}.finale-skip kbd{background:var(--slate);color:var(--cream);font:inherit;padding:3px 6px;box-shadow:inset 0 -3px #0f1c28}.finale-caption{text-align:center;max-width:640px;padding:0 16px;animation:.8s steps(5,end) .5s backwards title-in}.finale-caption h2{font:700 clamp(26px, 5vw, 44px) / 1.1 var(--pixel);margin:6px 0 8px}.finale-caption p{color:var(--muted);margin:0 0 20px}#finale.still *,#finale.still :before{animation:none!important}@media (width<=700px){.headliner{grid-template-columns:auto 1fr;padding:18px 16px}.headliner-actions{grid-column:1/-1}.finale-scene{justify-self:center;width:180vw;translate:-10vw}.finale-scene.homecoming{translate:-25vw}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.menu-card,.menu-card.play-card,.menu-card:hover,.tune-card:hover{transform:none}.fireflies,#confetti,#score-particles{display:none}}#root{display:contents}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.tab-drop{z-index:60;pointer-events:none;background:repeating-linear-gradient(0deg,#0000 0 2px,#04080d40 2px 3px),#04080dc8;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.tab-drop-card{--fc:var(--honey);text-align:center;background:var(--navy-2);outline:3px dashed var(--honey);outline-offset:-14px;max-width:440px;box-shadow:var(--frame), 0 12px 0 0 var(--ink);gap:10px;padding:34px 38px;display:grid}.tab-drop-card strong{font:600 32px/1.1 var(--pixel);color:var(--honey);text-shadow:0 3px 0 var(--ink)}.tab-drop-card span:last-child{color:var(--muted)}#tab-import-status{z-index:55;width:min(560px,100vw - 32px);position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.tab-import-toast{--fc:var(--ink);color:var(--cream);background:var(--slate);box-shadow:inset 4px 0 0 var(--mint), var(--frame), 0 7px 0 0 var(--ink);margin:0;padding:16px 58px 16px 20px;position:relative}.tab-import-toast.error{box-shadow:inset 4px 0 0 var(--miss), var(--frame), 0 7px 0 0 var(--ink)}.tab-import-title{color:var(--miss);font:600 16px/1.2 var(--pixel);margin-bottom:4px;display:block}.tab-import-toast .dialog-close{top:50%;right:12px;transform:translateY(-50%)}.songbook-actions{flex-wrap:wrap;gap:10px;margin-left:auto;display:flex}.import-source{color:var(--muted);overflow-wrap:anywhere;margin:-6px 0 18px;font-size:13px}.import-options{border:0;gap:10px;margin:0 0 18px;padding:0;display:grid}.import-option{background:var(--slate);box-shadow:inset 0 0 0 2px var(--line);cursor:pointer;align-items:flex-start;gap:12px;padding:12px 14px;display:flex}.import-option:has(input:checked){box-shadow:inset 0 0 0 2px var(--honey)}.import-option:has(input:disabled){box-shadow:inset 0 0 0 2px var(--line);cursor:default}.import-option input{accent-color:var(--honey);margin-top:4px}.import-option span{gap:2px;display:grid}.import-option strong{font:600 16px/1.2 var(--pixel)}.import-option span span{color:var(--muted);font-size:13px}.import-name{gap:6px;margin:0 0 4px 38px;display:grid}.import-name[hidden]{display:none}.import-name input{width:100%;height:40px;color:var(--cream);background:var(--navy);box-shadow:inset 0 0 0 2px var(--line), inset 0 -3px 0 #0b1520;border:0;padding:0 12px}.import-name input:focus-visible{outline-offset:2px}.import-intro{color:var(--muted);margin:0 0 10px;font-size:13px}.import-tune-list{background:var(--navy);gap:2px;max-height:min(46vh,420px);margin:0 0 20px;padding:0;list-style:none;display:grid;overflow:auto}.import-tune{background:var(--slate);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px 12px;padding:12px 14px;display:grid}.import-tune-title{font:600 15px/1.2 var(--pixel);grid-column:1/-1}.import-field{min-width:0;display:grid}.import-field .field-label{margin-bottom:6px}.import-field select{width:100%}.import-field input{width:100%;height:38px;color:var(--cream);background:var(--navy);box-shadow:inset 0 0 0 2px var(--line), inset 0 -3px 0 #0b1520;border:0;padding:0 10px}.import-field input[aria-invalid=true]{box-shadow:inset 0 0 0 2px var(--ember), inset 0 -3px 0 #0b1520}.import-problem{color:var(--ember);grid-column:1/-1;margin:0;font-size:13px}.songbook-file-name{margin:0 0 18px}.import-skipped{color:var(--muted);margin:-8px 0 20px;font-size:13px}.import-skipped summary{cursor:pointer}.import-skipped ul{background:var(--navy);max-height:120px;margin:8px 0 0;padding:10px 14px 10px 34px;overflow:auto}.import-actions{justify-content:flex-end;gap:12px;display:flex}.songbook-choices{margin-bottom:18px;list-style:none}.songbook-choices .import-option{cursor:default;justify-content:space-between;align-items:center}.new-songbook .import-name{margin:0 0 18px}.rename-taken,.rename-note{color:var(--ember);margin:-10px 0 18px;font-size:13px}.rename-note{color:var(--mint)}.field-help{color:var(--dim);font-size:12px}.tutorial-card{border:2px solid var(--honey);background:var(--navy);margin-bottom:1rem;padding:1rem}.tutorial-card h2{margin:.5rem 0}.tutorial-card p{max-width:75ch;line-height:1.5}.tutorial-hint{color:var(--honey)}.tutorial-actions{flex-wrap:wrap;gap:1rem;display:flex}.tutorial-controls{display:contents}body[data-experience]:has(.tutorial-card){height:auto;min-height:100vh;overflow:auto}body[data-experience]:has(.tutorial-card) .tab-canvas-wrap{min-height:260px}.tab-editor{flex-direction:column;gap:18px;display:flex}.editor-bar{flex-wrap:wrap;align-items:center;gap:14px 20px;display:flex}.editor-heading{flex-wrap:wrap;flex:1;align-items:baseline;gap:4px 14px;min-width:220px;display:flex}.editor-heading .eyebrow{flex-basis:100%}.editor-heading h1{color:var(--honey);text-shadow:0 3px 0 var(--ink);overflow-wrap:anywhere;font-size:34px}.editor-saved{font:10px var(--micro);letter-spacing:.08em;text-transform:uppercase;color:var(--mint)}.editor-saved.unsaved{color:var(--lantern)}.editor-actions{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.editor-message-slot:empty{display:none}.editor-message{background:var(--pine-d);box-shadow:inset 0 0 0 2px var(--pine-l);margin:0;padding:12px 56px 12px 16px;position:relative}.editor-message.error{box-shadow:inset 0 0 0 2px var(--trouble);background:#3a1e18}.editor-message .dialog-close{width:28px;height:28px;font-size:18px;top:50%;right:10px;transform:translateY(-50%)}.tab-details{border:0;flex-wrap:wrap;align-items:flex-end;gap:14px 18px;margin:0;padding:0;display:flex}.tab-field{color:var(--dim);gap:6px;display:grid}.tab-field.wide{flex:1;min-width:200px}.tab-field input[type=text]{width:100%;height:40px;color:var(--cream);background:var(--navy);box-shadow:inset 0 0 0 2px var(--line), inset 0 -3px 0 #0b1520;border:0;padding:0 12px}.tab-field input[type=text]:focus-visible{outline-offset:2px}.tab-field input[type=text]:read-only{color:var(--dim)}.tab-placement{color:var(--dim);flex-basis:100%;margin:-6px 0 0;font-size:13px}.tab-placement.error{color:var(--ember)}.tab-key{min-width:70px;height:40px;color:var(--honey);font:600 20px var(--pixel);align-items:center;display:grid}.tab-field.repeats{grid-auto-flow:column;align-items:center;gap:4px 14px;height:64px}.tab-field.repeats .field-label{grid-column:1/span 2}.tab-field.repeats label{color:var(--cream);align-items:center;gap:8px;font-size:13px;display:inline-flex}.editor-controls{z-index:5;box-shadow:inset 0 0 0 2px #1a2c3d, 0 6px 0 0 var(--ink);background:#0c1621f2;gap:12px;padding:12px 14px 14px;display:grid;position:sticky;top:0}.editor-transport{flex-wrap:wrap;align-items:center;gap:12px 22px;display:flex}.editor-transport .play-control{width:52px;height:46px;font-size:20px}.editor-transport .tempo-control{flex:0 260px;min-width:200px}.editor-tools{border:0;flex-wrap:wrap;align-items:flex-end;gap:10px 22px;margin:0;padding:0;display:flex}.tool-group{color:var(--dim);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.tool-group>.field-label{margin-right:4px}.tool-group.bar-tools{align-items:flex-end}.tool-button{min-width:30px;height:30px;color:var(--cream);background:var(--slate);font:600 13px/1 var(--pixel);border:0;padding:0 6px;box-shadow:inset 0 -3px #0f1c28,inset 0 2px #2c4558}.tool-button.wide{padding:0 10px}.tool-button:hover:not(:disabled){background:var(--slate-2)}.tool-button.active{color:#23170a;background:var(--honey);box-shadow:inset 0 -3px 0 var(--honey-d), inset 0 2px 0 #ffe4ad}.tool-button:disabled{opacity:.45}.tool-select{gap:4px;display:grid}.tool-select select{padding-block:6px 7px}.bar-map{flex-wrap:wrap;align-items:center;gap:10px 14px;display:flex}.bar-chips{flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;display:flex}.bar-chip{min-width:28px;height:24px;color:var(--dim);background:var(--navy);font:11px var(--micro);box-shadow:inset 0 0 0 2px var(--line);border:0;padding:0 4px}.bar-chip.part-B{box-shadow:inset 0 0 0 2px var(--pine)}.bar-chip.filled{color:var(--cream);background:var(--slate-2)}.bar-chip[aria-current]{color:#23170a;background:var(--honey)}.staff-editor{gap:10px;display:grid}.staff-frame{touch-action:none;-webkit-user-select:none;user-select:none;cursor:text;background:#0c1621;padding:16px 14px 18px;position:relative;box-shadow:inset 0 0 0 2px #1a2c3d}.staff-frame.dragging{cursor:grabbing}.staff-frame:focus-visible{outline-offset:2px}.staff-readout{color:var(--muted);margin:0;font-size:13px}.key-help summary{cursor:pointer;color:var(--honey);font:600 14px var(--pixel)}.key-help p{max-width:75ch;color:var(--muted)}.key-help dl{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px 24px;margin:0;display:grid}.key-help dl div{gap:12px;display:flex}.key-help dt{flex:0 0 130px}.key-help dd{color:var(--muted);margin:0}.key-help kbd{font:11px var(--micro);color:var(--cream)}.tab-staff{--per-line:4;--row:20px;row-gap:18px;display:grid}.tab-line{flex-wrap:wrap;row-gap:18px;display:flex}.tab-bar{flex:0 0 calc(100% * var(--beats) / var(--line-beats));min-width:0;position:relative}.tab-bar-head{height:16px;font:10px var(--micro);letter-spacing:.06em;color:var(--dim);align-items:baseline;gap:8px;padding-left:4px;display:flex}.tab-part{color:var(--honey)}.tab-ending{color:var(--lantern);border-top:2px solid var(--lantern);border-left:2px solid var(--lantern);flex:1;padding-left:4px}.tab-chords{height:20px;position:relative}.tab-chord{left:var(--x);color:var(--honey);font:600 14px/20px var(--pixel);white-space:nowrap;padding-left:3px;position:absolute}.tab-lines{height:calc(var(--strings,6) * var(--row));background:linear-gradient(90deg, var(--muted) 0 2px, #0000 2px) 0 0 / 100% 100% no-repeat, repeating-linear-gradient(180deg, #0000 0 calc(var(--row) / 2 - 1px), #4d6676 calc(var(--row) / 2 - 1px) calc(var(--row) / 2), #0000 calc(var(--row) / 2) var(--row));position:relative}.tab-bar:last-child .tab-lines{box-shadow:inset -2px 0 0 var(--muted)}.tab-lines.gridded:before{content:"";pointer-events:none;background:repeating-linear-gradient(90deg, #0000 0 calc(100% / var(--beats) - 1px), #ffffff1c calc(100% / var(--beats) - 1px) calc(100% / var(--beats))), repeating-linear-gradient(90deg, #0000 0 calc(100% / var(--steps) - 1px), #ffffff0d calc(100% / var(--steps) - 1px) calc(100% / var(--steps)));position:absolute;inset:0}.tab-bar.opens-repeat:before,.tab-bar.closes-repeat:after{content:"";z-index:1;width:7px;height:calc(var(--strings,6) * var(--row));pointer-events:none;position:absolute;top:36px}.tab-bar.opens-repeat:before{background:linear-gradient(90deg, var(--honey) 0 4px, #0000 4px 6px, var(--honey) 6px 7px);left:0}.tab-bar.closes-repeat:after{background:linear-gradient(90deg, var(--honey) 0 1px, #0000 1px 3px, var(--honey) 3px 7px);right:0}.tab-note{left:var(--x);top:calc(var(--top) * var(--row));z-index:2;min-width:14px;height:var(--row);color:var(--cream);font:600 14px/20px var(--pixel);text-align:center;background:#0c1621;margin-left:2px;padding:0 2px;position:absolute}.tab-note.slides-up:before,.tab-note.slides-down:before,.tab-note.hammer:before,.tab-note.pull:before{color:var(--honey);position:absolute;right:100%}.tab-note.slides-up:before{content:"/"}.tab-note.slides-down:before{content:"\\"}.tab-note.hammer:before{content:"h"}.tab-note.pull:before{content:"p"}.tab-note.ghost{z-index:3;color:var(--honey);opacity:.8;pointer-events:none;background:#0c1621a0}.tab-cursor,.tab-selection{left:var(--x);pointer-events:none;position:absolute}.tab-cursor{top:calc(var(--top) * var(--row));z-index:1;width:var(--w);min-width:16px;height:var(--row);box-shadow:inset 0 0 0 2px var(--honey);background:#f0c47740}.tab-selection{top:calc(var(--top) * var(--row));width:var(--w);height:calc(var(--rows) * var(--row));background:#a4d3b22e;box-shadow:inset 0 0 0 1px #a4d3b280}.tab-playhead{z-index:4;background:var(--ember);width:2px;box-shadow:0 0 6px var(--ember);pointer-events:none;position:absolute;top:0;left:0}#sheet-dialog .tab-staff{background:#0c1621;padding:14px}@media (width<=760px){.tab-staff{--per-line:2}.tab-bar{flex-basis:calc(100% * var(--beats) / (var(--per-line) * var(--bar-beats)))}.tab-bar.pickup{margin-right:calc(100% - 100% * var(--beats) / (var(--per-line) * var(--bar-beats)))}.editor-controls{position:static}.editor-heading h1{font-size:28px}.key-help dt{flex-basis:110px}}@media (width<=480px){.tab-staff{--per-line:1}#sheet-dialog .tab-staff{--per-line:2}}
