:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#f5f5f5;--panel:#08080894;--panel-strong:#101010d1;--line:#ffffff1f;--line-strong:#ffffff57;--glass-top:#ffffff0a;--glass-bottom:#ffffff03;--muted:#9c9c9c;--text:#fafafa;--accent:#8ef7ff;--accent-soft:#8ef7ff1a;--good:#b7ff6a;--warn:#ffd36e;--bad:#ff5a5a;--radius:6px;--library-rail:366px;--shadow-soft:0 18px 52px #0000005c;--shadow-tight:0 10px 28px #00000047;background:#050505;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#app,.game-shell{width:100%;height:100%;margin:0;overflow:hidden}body{-webkit-font-smoothing:antialiased;text-rendering:geometricprecision;background:#050505;margin:0}button,input{font:inherit}button{border-radius:var(--radius)}button:focus-visible,input:focus-visible{outline-offset:2px;outline:2px solid #8ef7ffb8}#audioInput,#songPlayer{display:none}.game-shell{isolation:isolate;background:radial-gradient(circle at 50% 78%,#8ef7ff01,#0000 22%),radial-gradient(circle at 18% 14%,#ffffff02,#0000 16%),linear-gradient(#ffffff04 1px,#0000 1px) 0 0/72px 72px,linear-gradient(90deg,#ffffff03 1px,#0000 1px) 0 0/72px 72px,linear-gradient(135deg,#ffffff03,#0000 30%,#8ef7ff02 62%,#0000 80%),#050505;position:relative}.game-shell:before,.game-shell:after{z-index:0;pointer-events:none;content:"";position:fixed;inset:0}.game-shell:before{opacity:.12;background:linear-gradient(90deg,#0000 0 40%,#8ef7ff01 50%,#0000 60%),linear-gradient(#0000 0 76%,#ffffff02 100%);animation:10s ease-in-out infinite alternate ambient-sweep;transform:translate(-16%)}.game-shell:after{opacity:.24;background:linear-gradient(#0000002e,#0000 24% 76%,#0000006b),repeating-linear-gradient(#ffffff03 0 1px,#0000 1px 7px)}.game-shell[data-net-state=practice]:before,.game-shell[data-net-state=live]:before{opacity:.14;animation-duration:4.8s}#stage{z-index:1;width:100vw;height:100vh;display:block;position:relative}.match-strip,.roster-panel,.settings-panel,.library-panel,.results-panel,.touch-lanes,.transport,.judgement{z-index:2;position:fixed}.match-strip{pointer-events:none;grid-template-columns:minmax(178px,236px) minmax(250px,1fr) minmax(178px,236px);justify-content:stretch;gap:8px;display:grid;top:16px;left:16px;right:16px}.game-shell[data-net-state=offline] .match-strip{grid-template-columns:minmax(178px,236px) minmax(250px,460px);justify-content:center}.game-shell:not(.has-rival) .is-rival,.game-shell[data-net-state=offline] .is-rival{display:none}.player-card,.session-card,.roster-panel,.settings-panel,.library-panel,.results-panel,.transport{border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(180deg, var(--glass-top), var(--glass-bottom) 58%, transparent), var(--panel);-webkit-backdrop-filter:blur(18px)saturate(1.08);backdrop-filter:blur(18px)saturate(1.08);transition:border-color .18s,background .18s,box-shadow .18s,transform .18s;animation:.36s cubic-bezier(.16,1,.3,1) both panel-in;box-shadow:0 16px 42px #0000004d,inset 0 1px #ffffff0b}.player-card:hover,.session-card:hover,.settings-panel:hover,.library-panel:hover,.results-panel:hover,.transport:hover{background:#0a0a0a9e;border-color:#ffffff38;box-shadow:0 16px 48px #0000005c,inset 0 0 0 1px #ffffff06}.player-card,.session-card{pointer-events:auto;min-height:74px;padding:10px 12px}.player-card{align-content:start;gap:3px;display:grid}.player-card.is-local{position:relative;overflow:hidden}.player-card.is-local:after{content:"";opacity:.35;background:#ffffff29;border-radius:999px;height:2px;transition:background .18s,opacity .18s;position:absolute;inset:auto 10px 7px}.player-card.is-local[data-grade=sss]:after,.player-card.is-local[data-grade=ss]:after,.player-card.is-local[data-grade=s]:after{background:linear-gradient(90deg, var(--accent), #fff);opacity:.82}.player-card.is-local[data-grade=a]:after,.player-card.is-local[data-grade=b]:after{background:var(--good);opacity:.68}.player-card.is-local[data-grade=c]:after,.player-card.is-local[data-grade=d]:after{background:var(--warn);opacity:.66}.player-card.is-local[data-grade=f]:after{background:var(--bad);opacity:.72}.session-card{text-align:center;justify-self:center;width:min(100%,460px)}.session-card:after{content:"";opacity:.62;background:linear-gradient(90deg,#0000,#8ef7ffb8,#0000);width:68px;height:1px;margin:7px auto 0;display:block}.game-shell[data-net-state=live] .session-card:after,.game-shell[data-net-state=practice] .session-card:after{animation:1.3s ease-in-out infinite meter-breathe}.session-meta{justify-content:space-between;align-items:center;gap:10px;display:flex}.card-row{justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}.card-row small{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.card-row b{color:var(--text);white-space:nowrap;font-weight:800}.mini-button{width:34px;min-width:34px;height:26px;color:var(--muted);border:1px solid var(--line);cursor:pointer;text-transform:lowercase;background:#ffffff09;padding:0;font-size:0;font-weight:800;transition:border-color .16s,background .16s,color .16s}.mini-button:before{content:"⚙";font-size:.9rem}.mini-button:hover,.mini-button.active{color:#050505;background:#fff}.mini-button:disabled,.mini-button:disabled:hover{color:#ffffff4d;cursor:not-allowed;background:#ffffff06;border-color:#ffffff13}.player-card small,.session-card small,.roster-panel small,.panel-head small,.track-item span,.track-item em,.selected-song,.panel-close,.player-card span,.session-card span,.session-card b,.session-meta em{color:var(--muted);letter-spacing:0;text-transform:lowercase;font-size:.74rem}.player-card small,.session-card small,.session-meta em{font-weight:780}.session-meta em{text-align:right;justify-content:flex-end;align-items:center;gap:6px;min-width:54px;font-style:normal;display:inline-flex}.session-meta em:before{content:"";background:#ffffff52;border-radius:999px;flex:none;width:6px;height:6px}.session-meta em.good{color:var(--good)}.session-meta em.good:before{background:var(--good);box-shadow:0 0 8px #b7ff6a5c}.session-meta em.warn{color:var(--warn)}.session-meta em.warn:before{background:var(--warn);box-shadow:0 0 8px #ffd36e57}.session-meta em.bad{color:var(--bad)}.session-meta em.bad:before{background:var(--bad);box-shadow:0 0 8px #ff5a5a57}#combo,#rivalCombo{text-transform:none}#rivalGrade,.roster-row em,.result-row em{text-transform:uppercase}.game-shell[data-net-state=joining] .session-card,.game-shell[data-net-state=queueing] .session-card,.game-shell[data-net-state=preparing] .session-card{border-color:#8ef7ff57;animation:.36s cubic-bezier(.16,1,.3,1) both panel-in,1.1s ease-in-out infinite alternate queue-glow}.game-shell[data-net-state=reconnecting] .session-card,.game-shell[data-net-state=connection] .session-card{border-color:#ffd36e6b}.game-shell[data-net-state=live] .session-card{border-color:#b7ff6a52}.game-shell[data-net-state=practice] .session-card{border-color:#8ef7ff52}.game-shell[data-net-state=joining] .countdown-meter em,.game-shell[data-net-state=queueing] .countdown-meter em,.game-shell[data-net-state=preparing] .countdown-meter em,.game-shell[data-net-state=reconnecting] .countdown-meter em{min-width:42%;animation:1.05s ease-in-out infinite connection-scan}.player-card strong,.session-card strong,.panel-head strong{color:var(--text);line-height:1.1;display:block}.player-card strong{font-variant-numeric:tabular-nums;margin-top:2px;font-size:clamp(1.34rem,2.1vw,1.88rem);font-weight:900}.player-card span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.session-card strong{text-overflow:ellipsis;white-space:nowrap;margin:3px 0 2px;font-size:clamp(.92rem,1.4vw,1.1rem);font-weight:850;overflow:hidden}.session-card b{color:var(--accent);margin-top:3px;font-weight:800;display:block}.countdown-meter{background:#ffffff0f;border-radius:999px;width:100%;height:4px;margin:7px 0 0;display:block;overflow:hidden}.countdown-meter em{background:linear-gradient(90deg, #fff, var(--accent));width:0;height:100%;transition:width .1s linear;display:block;box-shadow:0 0 10px #8ef7ff47}.is-rival{position:relative}.is-rival small b{float:right;color:var(--accent);font-size:.8rem}.is-rival i{background:#ffffff17;border-radius:999px;width:100%;height:4px;margin-top:8px;display:block;overflow:hidden}.is-rival em{background:var(--accent);width:4%;height:100%;transition:width .2s;display:block}.roster-panel{pointer-events:none;width:236px;padding:8px;top:98px;right:16px}.roster-panel.empty{display:none}.settings-panel{z-index:4;width:236px;padding:9px;display:none;top:128px;left:16px}.settings-panel.open{animation:.18s cubic-bezier(.16,1,.3,1) both drawer-in;display:block}.settings-panel form{grid-template-columns:minmax(0,1fr) 58px;gap:7px;display:grid}.settings-panel small{color:var(--muted);text-transform:lowercase;grid-column:1/-1;font-size:.74rem}.settings-panel input{min-width:0;height:36px;color:var(--text);border:1px solid var(--line);border-radius:var(--radius);background:#ffffff0b;outline:none;padding:0 10px}.settings-panel input:focus{border-color:var(--accent)}.settings-panel button{color:#050505;border:1px solid var(--line);cursor:pointer;text-transform:lowercase;background:#fff;height:36px;font-weight:850}.roster-panel small{margin-bottom:8px;display:block}#rosterList{gap:6px;display:grid}#rosterList>span{color:var(--muted);font-size:.78rem}.roster-row{background:#ffffff07;border:1px solid #ffffff17;border-radius:5px;grid-template-columns:minmax(0,1fr) auto 38px;align-items:center;gap:8px;min-height:32px;padding:6px 8px;transition:border-color .18s,background .18s,transform .18s,opacity .18s;display:grid}.roster-row.ready{border-color:#8ef7ff33;box-shadow:inset 2px 0 #8ef7ff7a}.roster-row.local{background:#8ef7ff0e}.roster-row strong,.roster-row span,.roster-row em{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.roster-row strong{color:var(--text);font-size:.8rem;font-weight:820}.roster-row span,.roster-row em{color:var(--muted);text-align:right;font-size:.74rem;font-style:normal}.roster-row.ready em{color:var(--accent)}.library-panel{z-index:4;grid-template-rows:auto auto auto minmax(0,1fr);gap:8px;width:min(334px,100vw - 32px);padding:10px;display:none;top:16px;bottom:16px;right:16px}.library-panel.open{animation:.22s cubic-bezier(.16,1,.3,1) both drawer-in;display:grid}.panel-head{justify-content:space-between;align-items:end;gap:10px;display:flex}.panel-close{width:28px;height:28px;color:var(--text);border:1px solid var(--line);cursor:pointer;background:#ffffff09;padding:0;display:block}.panel-head strong{font-size:.95rem;font-weight:850}.panel-stats{justify-items:end;gap:4px;min-width:0;display:grid}#youtubeStatus{color:#ffffffb8;text-align:center;text-transform:lowercase;background:#ffffff0b;border:1px solid #ffffff1a;border-radius:999px;min-width:58px;padding:3px 7px;font-size:.66rem;font-weight:850;line-height:1}#youtubeStatus.is-ready{color:#9fffd4;background:#5bffb817;border-color:#5bffb83d}#youtubeStatus.needs-cookie{color:#ffe2a3;background:#ffd36e14;border-color:#ffd36e3d}#youtubeStatus.is-expired{color:#ffc1c1;background:#ff5a5a1a;border-color:#ff5a5a47}#youtubeStatus.is-offline{color:#ffffff75}.selected-song{width:100%;min-height:40px;color:var(--text);text-align:left;border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;text-transform:none;background:#ffffff0a;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:9px;padding:6px 8px;transition:border-color .16s,background .16s,transform .16s;display:grid;overflow:hidden}.selected-song:hover{border-color:var(--line-strong);background:#ffffff0e;transform:translateY(-1px)}.link-form{grid-template-columns:minmax(0,1fr) 48px;gap:6px;display:grid}.link-form input{min-width:0;height:36px;color:var(--text);border:1px solid var(--line);border-radius:var(--radius);background:#ffffff09;outline:none;padding:0 10px}.link-form input:focus{border-color:var(--accent)}.link-form input:disabled{color:#ffffff57;cursor:not-allowed;background:#ffffff06}.link-form button,.actions button,.difficulty button{border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;text-transform:lowercase;height:40px;font-weight:850;transition:border-color .16s,background .16s,color .16s,transform .16s,opacity .16s}#submitLinkButton{font-size:0}#submitLinkButton:before{content:"+";font-size:1rem;line-height:1}#submitLinkButton[aria-busy=true]:before{content:"…";animation:.8s ease-in-out infinite alternate saving-pulse}.panel-close:hover{color:#050505;background:#fff;transform:translateY(-1px)}.actions button{text-overflow:ellipsis;white-space:nowrap;place-items:center;min-width:0;padding:0;font-size:0;display:grid;position:relative;overflow:hidden}.actions button:before,.panel-close:before,.mini-button:before{place-items:center;font-weight:950;line-height:1;display:inline-grid}.actions button:before{color:currentColor;background:#00000014;border-radius:999px;width:25px;height:25px;font-size:.98rem;transition:transform .16s,background .16s}#playButton:before{content:"▶"}#importButton:before{content:"↑"}#queueButton:before{content:"×"}.game-shell[data-net-state=offline] #queueButton:before{content:"+"}.game-shell[data-net-state=practice] #queueButton:before,.game-shell[data-net-state=finished][data-result-mode=practice] #queueButton:before{content:"↻"}.game-shell[data-net-state=finished][data-result-mode=pvp] #queueButton:before{content:"×"}.mobile-library-button:before{content:"≡"}.panel-close{font-size:0}.panel-close:before{content:"x";font-size:.9rem}.mobile-library-button{display:block}.link-form button,.actions button{color:#050505;background:#fff}.actions button:hover:before{transform:scale(1.07)}.track-list{scrollbar-color:#ffffff38 transparent;align-content:start;gap:7px;min-height:0;padding-right:2px;display:grid;overflow:auto}.track-list>span{color:var(--muted);font-size:.78rem}.track-item{width:100%;color:inherit;font:inherit;text-align:left;border-radius:var(--radius);cursor:pointer;background:#ffffff08;border:1px solid #ffffff1a;grid-template-columns:38px minmax(0,1fr) 30px;align-items:center;gap:9px;padding:7px 9px;text-decoration:none;transition:border-color .16s,background .16s,transform .16s;display:grid}.track-item:after{color:#ffffffb8;content:attr(data-action);text-align:center;text-transform:lowercase;background:#ffffff0e;border:1px solid #ffffff1a;border-radius:999px;place-items:center;width:28px;height:28px;padding:0;font-size:.82rem;font-weight:900;line-height:1;display:grid}.track-item[data-action=load]:after{content:"▶"}.track-item[data-action=save]:after{content:"+"}.track-item[data-action=retry]:after{content:"↻"}.track-item[data-action=open]:after{content:"↗"}.track-item[data-action=on]:after{content:"✓"}.track-item[data-action=saving]:after{content:"…";animation:.8s ease-in-out infinite alternate saving-pulse}.track-item:hover{border-color:var(--line-strong);background:#ffffff0f;transform:translate(-2px)}.track-list.locked .track-item{opacity:.62}.track-list.locked button.track-item{cursor:not-allowed}.track-list.locked .track-item:hover,button.track-item:disabled:hover{background:#ffffff0a;border-color:#ffffff1a;transform:none}.track-item.busy{background:#ffd36e14;border-color:#ffd36e57}.track-item.busy:after{color:#ffe2a3;background:#ffd36e1a;border-color:#ffd36e3d}.song-item{background:#8ef7ff0e}.song-item.youtube-song{background:#b7ff6a0c}.track-item.active{border-color:var(--accent);background:color-mix(in srgb, var(--accent-soft) 72%, transparent);box-shadow:inset 2px 0 0 var(--accent)}.track-item.active:after{color:#050505;background:var(--accent);border-color:var(--accent)}.track-art{color:#ffffff9e;background:linear-gradient(135deg, #ffffff1f, #ffffff06), var(--accent-soft);text-transform:lowercase;border:1px solid #ffffff1f;border-radius:5px;place-items:center;width:38px;height:38px;font-size:.9rem;font-weight:950;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff14}.selected-song .track-art{width:34px;height:34px}.track-art img{object-fit:cover;width:100%;height:100%;display:block}.track-art:after{content:"";background:linear-gradient(#ffffff14,#0000002e);position:absolute;inset:0}.track-copy{gap:3px;min-width:0;display:grid}.track-copy strong{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:.84rem;font-weight:780;overflow:hidden}.selected-song .track-copy strong{font-size:.82rem}.track-copy span,.track-copy em{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.74rem;font-style:normal;overflow:hidden}.results-panel{pointer-events:auto;text-align:left;z-index:6;background:linear-gradient(#ffffff0a,#0000 34%),#030303f2;border-color:#ffffff2e;gap:10px;width:min(360px,100vw - 72px);padding:14px;display:none;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 28px 90px #000000b8,0 0 0 1px #0000005c,inset 0 1px #ffffff12}.game-shell.library-open .results-panel{left:calc((100vw - var(--library-rail)) / 2)}.results-panel.open{animation:.32s cubic-bezier(.16,1,.3,1) both result-in;display:grid}.results-panel.open+.judgement{opacity:0}.results-panel small{color:var(--muted);text-transform:lowercase;font-size:.72rem}.results-panel>strong{color:var(--text);text-transform:lowercase;font-size:2.05rem;font-weight:950;line-height:.98}.results-panel.win{border-color:#b7ff6a57}.results-panel.loss{border-color:#ff5a5a57}.results-grid{gap:6px;display:grid}.result-row{border-radius:var(--radius);background:#fff1;border:1px solid #ffffff17;grid-template-columns:30px minmax(0,1fr) auto 34px 42px;align-items:center;gap:8px;min-height:38px;padding:8px 9px;animation:.32s cubic-bezier(.16,1,.3,1) both result-row-in;display:grid;position:relative;overflow:hidden}.result-row:before{width:var(--result-acc,0%);background:linear-gradient(90deg, #ffffff6b, var(--accent));content:"";opacity:.75;height:2px;position:absolute;bottom:0;left:0;right:auto}.result-row:nth-child(2){animation-delay:45ms}.result-row:nth-child(3){animation-delay:90ms}.result-row:nth-child(4){animation-delay:.135s}.result-row.local{background:#8ef7ff1b;border-color:#8ef7ff6b}.result-row.local:before{opacity:.95;height:3px}.result-row strong,.result-row span,.result-row i,.result-row em{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.result-row strong{color:var(--text);font-size:.82rem}.result-row span,.result-row i,.result-row em{color:var(--muted);text-align:right;font-size:.75rem;font-style:normal}.result-row i{color:#ffffff94}.result-row em{color:var(--accent);font-weight:850}.result-action{height:40px;color:var(--text);border-radius:var(--radius);cursor:pointer;text-transform:lowercase;background:#ffffff14;border:1px solid #ffffff29;font-weight:900;transition:background .16s,border-color .16s,transform .16s}.result-action:hover{color:#050505;background:var(--accent);border-color:var(--accent);transform:translateY(-1px)}.transport{grid-template-columns:minmax(290px,1fr) 216px;gap:8px;width:min(640px,100vw - 32px);margin:0;padding:8px;display:grid;bottom:16px;left:max(16px,50vw - 320px);right:auto;transform:none}.game-shell.library-open .match-strip,.game-shell.library-open .roster-panel{right:var(--library-rail)}.game-shell.library-open .transport{left:16px;right:var(--library-rail);width:min(720px, calc(100vw - var(--library-rail) - 32px));margin:0 auto;transform:none}.touch-lanes{display:none}.difficulty,.actions{gap:6px;display:grid}.difficulty{border-radius:var(--radius);background:#0003;border:1px solid #ffffff13;grid-template-columns:repeat(4,minmax(0,1fr));padding:3px}.actions{grid-template-columns:repeat(4,minmax(0,1fr))}.difficulty button{color:var(--muted);background:0 0;border-color:#0000}.difficulty.busy{opacity:.72}.difficulty button:hover,.difficulty button.active{color:#050505;background:#fff}.mobile-library-button.active{color:var(--text);background:#ffffff1f;border-color:#ffffff47}#playButton{background:#fff;border-color:#ffffffe0;box-shadow:0 0 18px #ffffff21,inset 0 1px #ffffff80}#playButton:not(:disabled){animation:2.8s ease-in-out infinite primary-breathe}#importButton{color:var(--text);background:#ffffff09}#queueButton{color:#050505;background:#f7f7f7}.actions button[aria-busy=true]{color:#050505;border-color:var(--warn);background:var(--warn)}.game-shell[data-net-state=live] #queueButton{color:var(--text);background:#ff5a5a1a;border-color:#ff5a5a6b}.game-shell[data-net-state=practice] #queueButton{color:var(--text);background:#8ef7ff1a;border-color:#8ef7ff57}.actions button:hover,.link-form button:hover{color:#050505;background:#e6e6e6;transform:translateY(-1px)}.actions button:disabled,.difficulty button:disabled,.selected-song:disabled,.link-form button:disabled{color:#ffffff4d;box-shadow:none;cursor:not-allowed;background:#ffffff09;border-color:#ffffff13;transform:none}#playButton:disabled,#importButton:disabled,.difficulty button.active:disabled{color:#ffffff52;box-shadow:none;background:#ffffff09;border-color:#ffffff14}.actions button:active,.difficulty button:active,.selected-song:active,.track-item:active{transform:translateY(1px)}.judgement{color:#ffffffd1;letter-spacing:0;opacity:.68;pointer-events:none;text-shadow:0 0 8px;text-transform:lowercase;font-size:clamp(2rem,7vw,5.4rem);font-weight:950;top:51%;left:calc(50% - 154px);transform:translate(-50%,-50%)}.judgement.perfect{color:var(--accent)}.judgement.good{color:var(--good)}.judgement.bad{color:var(--warn)}.judgement.miss{color:var(--bad)}.judgement.hidden{opacity:0}@keyframes panel-in{0%{opacity:0;transform:translateY(10px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes ambient-sweep{0%{transform:translate(-18%)}to{transform:translate(18%)}}@keyframes result-in{0%{opacity:0;transform:translate(-50%,-46%)scale(.96)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes result-row-in{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@keyframes connection-scan{0%{transform:translate(-115%)}50%{transform:translate(55%)}to{transform:translate(240%)}}@keyframes primary-breathe{0%,to{box-shadow:0 0 12px #ffffff1f,inset 0 1px #ffffff80}50%{box-shadow:0 0 22px #ffffff2e,inset 0 1px #ffffffa3}}@keyframes saving-pulse{0%{opacity:.42}to{opacity:1}}@keyframes queue-glow{0%{box-shadow:0 16px 42px #0000004d,0 0 #8ef7ff00,inset 0 1px #ffffff0b}to{box-shadow:0 16px 42px #0000004d,0 0 22px #8ef7ff14,inset 0 1px #ffffff0e}}@keyframes meter-breathe{0%,to{opacity:.38;transform:scaleX(.78)}50%{opacity:.72;transform:scaleX(1)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}@media (width<=1080px){.match-strip{left:14px;right:14px}.game-shell.library-open .match-strip{right:14px}.roster-panel{width:220px;top:174px;right:14px}.game-shell.library-open .roster-panel{right:14px}.settings-panel{top:126px}.library-panel{width:auto;height:min(42vh,320px);inset:auto 14px 84px}.results-panel,.game-shell.library-open .results-panel{left:50%}.transport,.game-shell.library-open .transport{width:calc(100vw - 28px);margin:0;left:14px;right:14px;transform:none}.judgement{left:50%}}@media (width<=760px){.game-shell{--mobile-edge:10px;--transport-height:112px;--mobile-gap:14px}.match-strip{left:var(--mobile-edge);right:var(--mobile-edge);top:var(--mobile-edge);grid-template-columns:1fr 1fr;gap:8px}.game-shell[data-net-state=offline] .match-strip{grid-template-columns:1fr}.player-card{min-height:72px;padding:8px 10px}.player-card strong{margin-top:1px;font-size:1.42rem}.player-card small,.player-card span,.session-card small,.session-card span,.session-card b,.session-meta em{font-size:.71rem}.session-card{order:3;grid-column:1/-1;width:100%;min-height:82px;padding:9px 12px}.session-card strong{margin:2px 0;font-size:.96rem}.countdown-meter{margin-top:6px}.library-panel{top:auto;left:var(--mobile-edge);right:var(--mobile-edge);bottom:calc(var(--mobile-edge) + var(--transport-height) + var(--mobile-gap));z-index:5;width:auto;height:clamp(168px,44dvh,min(360px,100dvh - 312px));min-height:0;max-height:calc(100dvh - 312px);display:none}.library-panel .track-list{min-height:0;padding-bottom:2px}.library-panel.open{animation:.22s cubic-bezier(.16,1,.3,1) both drawer-in;display:grid}.game-shell.library-open .touch-lanes{display:none}.panel-close,.mobile-library-button{display:block}.roster-panel{top:214px;left:var(--mobile-edge);right:var(--mobile-edge);scrollbar-width:none;width:auto;max-height:104px;padding:7px 9px;overflow:auto}.roster-panel::-webkit-scrollbar{display:none}.roster-panel small{margin-bottom:4px;font-size:.7rem}#rosterList{gap:4px}#rosterList>span{font-size:.73rem}.roster-row{min-height:30px;padding:5px 7px}.settings-panel{top:280px;left:var(--mobile-edge);right:var(--mobile-edge);width:auto}.transport{left:var(--mobile-edge);right:var(--mobile-edge);bottom:var(--mobile-edge);grid-template-columns:1fr;gap:6px;width:auto;padding:7px;transform:none}.game-shell.library-open .transport{left:var(--mobile-edge);right:var(--mobile-edge);width:auto;margin:0;transform:none}.touch-lanes{left:var(--mobile-edge);right:var(--mobile-edge);bottom:calc(var(--mobile-edge) + var(--transport-height) + var(--mobile-gap));border:1px solid var(--line);border-radius:var(--radius);-webkit-backdrop-filter:blur(16px)saturate(1.2);backdrop-filter:blur(16px)saturate(1.2);touch-action:none;background:linear-gradient(#ffffff09,#0000),#0808089e;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;height:50px;padding:5px;display:grid;box-shadow:0 18px 48px #00000057,inset 0 1px #ffffff0b}.touch-lanes button{color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#ffffff0d;border:1px solid #ffffff1f;font-weight:950;transition:border-color .12s,background .12s,color .12s,transform .12s}.touch-lanes button:active,.touch-lanes button.pressed{color:#050505;border-color:var(--accent);background:var(--accent);transform:translateY(1px)}.results-panel{width:calc(100vw - 36px);padding:12px;top:54%}.results-panel>strong{font-size:1.7rem}.result-row{grid-template-columns:26px minmax(0,1fr) 42px;grid-template-areas:"rank name grade""rank stats combo";gap:4px 8px;min-height:52px;padding:8px}.result-row small{grid-area:rank;align-self:center}.result-row strong{grid-area:name}.result-row span{text-align:left;grid-area:stats}.result-row i{grid-area:combo}.result-row em{grid-area:grade}.actions{grid-template-columns:repeat(4,minmax(0,1fr))}.actions button,.difficulty button{height:39px}.actions button{grid-template-columns:1fr;place-items:center;gap:0;padding:0;font-size:0}.actions button:before{background:#0000001a;width:28px;height:28px;font-size:1rem}}@media (width<=760px) and (height<=560px){.game-shell{--transport-height:90px;--mobile-gap:8px}.player-card{min-height:60px}.session-card{min-height:72px}.library-panel{height:clamp(136px,36dvh,100dvh - 278px);max-height:calc(100dvh - 278px)}.roster-panel{max-height:76px;top:188px}.touch-lanes{height:44px}}@keyframes drawer-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
