:root{--bg:#07060d;--ink:#f4f1ff;--ink-dim:#a9a3c4;--line:#ffffff1f;--glass:#0e0b1cb8;--accent:#ff3df2;--accent-2:#29e7ff;--gold:#ffd23d;--display:"Bungee", "Exo 2", system-ui, sans-serif;--body:"Exo 2", system-ui, sans-serif;--neon:"Monoton", "Bungee", sans-serif;--ease-out:cubic-bezier(.2, .8, .2, 1);--ease-spring:cubic-bezier(.25, 1.4, .4, 1);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;font-synthesis:none;-webkit-user-select:none;user-select:none;margin:0;overflow:hidden}#bg,#stage{width:100vw;height:100vh;display:block;position:fixed;inset:0}#cam{opacity:0;pointer-events:none;width:1px;height:1px;position:fixed}#ui{pointer-events:none;position:fixed;inset:0}.screen{opacity:0;visibility:hidden;flex-direction:column;justify-content:center;align-items:center;transition:opacity .35s,visibility 0s linear .35s;display:flex;position:absolute;inset:0}.screen.active{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .35s}.logo{flex-direction:column;align-items:center;line-height:.9;display:flex}.logo-top{font-family:var(--display);letter-spacing:.5em;color:#bff8ff;text-shadow:0 0 6px #29e7ffe6,0 0 18px #29e7ff99;margin-bottom:.3em;margin-right:-.5em;font-size:clamp(14px,1.6vw,22px)}.logo-bottom{font-family:var(--neon);letter-spacing:.02em;color:#ffeafd;text-shadow:0 0 3px #fff,0 0 10px #ff3df2,0 0 26px #ff3df2,0 0 56px #b45cff,0 0 110px #b45cffcc;font-size:clamp(76px,12.5vw,190px);font-weight:400;animation:1.4s step-end both neon-on,9s 3s infinite neon-buzz}@keyframes neon-on{0%{opacity:.08}8%{opacity:1}12%{opacity:.25}20%{opacity:1}24%{opacity:.45}30%,to{opacity:1}}@keyframes neon-buzz{0%,94%,to{opacity:1}95%{opacity:.55}96%{opacity:1}97.5%{opacity:.7}98.5%{opacity:1}}.logo-sm{align-items:flex-start}.logo-sm .logo-top{margin-bottom:.2em;font-size:10px}.logo-sm .logo-bottom{font-size:40px;animation:none}.btn{pointer-events:auto;cursor:pointer;font:inherit;color:var(--ink);letter-spacing:.02em;box-shadow:inset 0 0 0 1px var(--line);background:#ffffff14;border:0;border-radius:999px;padding:12px 22px;font-size:16px;font-weight:700;transition:transform .15s,background .2s,box-shadow .2s;position:relative}.btn:hover,.btn.dwell-hover{background:#ffffff29;transform:translateY(-1px)}.btn:active{transform:scale(.97)}.btn-primary{color:#fff;text-shadow:0 1px #00000040;background:linear-gradient(100deg,#ff3df2,#b45cff 60%,#29e7ff);box-shadow:0 10px 40px -10px #ff3df2b3,inset 0 0 0 1px #ffffff40}.btn-primary:hover,.btn-primary.dwell-hover{background:linear-gradient(100deg,#ff5af5,#c47bff 60%,#5beeff);box-shadow:0 14px 50px -8px #ff3df2d9,inset 0 0 0 1px #ffffff59}.btn-ghost{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0a08148c}.btn-lg{padding:16px 30px;font-size:18px}.btn-xl{font-size:24px;font-family:var(--display);letter-spacing:.04em;padding:20px 50px;font-weight:400}.btn-primary.btn-xl{animation:2.4s ease-in-out infinite cta-breathe}@keyframes cta-breathe{50%{box-shadow:0 14px 60px -6px #ff3df2f2,inset 0 0 0 1px #ffffff59}}.btn-round{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0a08148c;place-items:center;width:84px;height:84px;padding:0;display:grid}.btn-round svg{fill:none;stroke:currentColor;stroke-width:2.6px;stroke-linecap:round;stroke-linejoin:round;width:34px;height:34px}.btn:disabled{opacity:.5;pointer-events:none}#screen-start{background:radial-gradient(1200px 700px at 50% 40%,#b45cff2e,#0000 70%)}.start-wrap{text-align:center;flex-direction:column;align-items:center;gap:26px;padding:24px;display:flex}.tagline{color:var(--ink-dim);max-width:36ch;margin:0;font-size:clamp(16px,1.5vw,21px)}.status{min-height:1.4em;color:var(--accent-2);margin:0;font-weight:500}.status.error{color:#ff7a8a}.start-tips{text-align:left;color:var(--ink-dim);grid-template-columns:repeat(3,minmax(0,220px));gap:14px;margin:8px 0 0;padding:0;font-size:14px;line-height:1.45;list-style:none;display:grid}.start-tips li{box-shadow:inset 0 0 0 1px var(--line);background:#ffffff0a;border-radius:14px;padding:14px 16px}.start-tips b{color:var(--ink);margin-bottom:2px;display:block}#screen-menu{background:linear-gradient(#07060dbf 0%,#07060d1a 30% 62%,#07060dd9 100%);justify-content:space-between;gap:14px;padding:26px 34px 22px}.menu-head{justify-content:space-between;align-items:center;gap:20px;width:100%;display:flex}.head-actions{gap:10px;display:flex}.dancers{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.dancer-chip{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:inset 0 0 0 1.5px var(--c);background:#0a081499;border-radius:999px;align-items:center;gap:8px;padding:8px 14px 8px 8px;font-size:14px;font-weight:700;display:flex}.dancer-chip i{background:var(--c);width:22px;height:22px;box-shadow:0 0 14px var(--c);border-radius:50%}.dancer-empty{color:var(--ink-dim);background:#0a081480;border-radius:999px;padding:8px 14px;font-size:14px}.picker{flex:1;justify-content:center;align-items:center;width:100%;min-height:0;display:flex;position:relative}.song-glow{background:var(--song-c,#b45cff);filter:blur(90px);opacity:.38;pointer-events:none;border-radius:50%;width:min(900px,70vw);height:60%;transition:background-color .8s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.coverflow{perspective:1400px;--size:clamp(170px, 31vh, 300px);width:min(1180px,86vw);height:100%;max-height:420px;position:relative}.cf-item{width:var(--size);height:var(--size);margin:calc(var(--size) / -2) 0 0 calc(var(--size) / -2);cursor:pointer;pointer-events:auto;transform:translateX(var(--x,0)) translateZ(var(--z,0)) rotateY(var(--ry,0deg));opacity:var(--o,1);filter:brightness(var(--b,1)) saturate(var(--sat,1));transition:transform .6s var(--ease-out), opacity .5s ease, filter .5s ease, box-shadow .35s ease, scale .12s linear;-webkit-box-reflect:below 10px linear-gradient(transparent 72%, #ffffff29);background:#1a1430 50%/cover no-repeat;border:0;border-radius:20px;padding:0;position:absolute;top:50%;left:50%;box-shadow:0 30px 60px -25px #000000e6,inset 0 0 0 1px #ffffff1f}.cf-item.no-img{background-image:linear-gradient(135deg,#29e7ff,#b45cff,#ff3df2)}.cf-item.no-img:after{content:attr(data-initial);font-family:var(--display);font-size:calc(var(--size) * .4);color:#ffffffe6;place-items:center;display:grid;position:absolute;inset:0}.cf-item.center{scale:calc(1 + var(--bass,0) * .06);box-shadow:0 0 0 3px #fff, 0 0 calc(30px + var(--bass,0) * 50px) color-mix(in srgb, var(--song-c,#ff3df2) 85%, white), 0 40px 80px -30px #000}.cf-item:not(.center):hover,.cf-item:not(.center).dwell-hover{filter:brightness(1.05)saturate()}.cf-item.center:before{content:"▶";color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);width:46px;height:46px;animation:play-pop .45s .3s var(--ease-spring) both;background:#080612b3;border-radius:50%;place-items:center;padding-left:3px;font-size:18px;display:grid;position:absolute;bottom:12px;right:12px;box-shadow:inset 0 0 0 1.5px #fff9}@keyframes play-pop{0%{opacity:0;transform:scale(.5)}}.coverflow.spin .cf-item{transition-duration:.9s}.coverflow.launch .cf-item.center{opacity:0;transition:transform .5s cubic-bezier(.6,0,.8,.4),opacity .5s ease-in;transform:translateZ(380px)}.coverflow.launch .cf-item:not(.center){transform:translateX(calc(var(--x,0) * 2.4)) translateZ(-300px) rotateY(var(--ry,0deg));opacity:0}.nav-prev,.nav-next{z-index:50;flex:none;position:relative}.song-panel{text-align:center;flex-direction:column;align-items:center;gap:8px;max-width:min(900px,90vw);min-height:118px;display:flex}.song-panel>*{animation:panel-in .5s var(--ease-out) both}.song-panel>:nth-child(2){animation-delay:50ms}.song-panel>:nth-child(3){animation-delay:.1s}.song-panel.swap>*{animation-name:panel-in-again}@keyframes panel-in{0%{opacity:0;transform:translateX(calc(var(--dir,1) * 46px));filter:blur(6px)}}@keyframes panel-in-again{0%{opacity:0;transform:translateX(calc(var(--dir,1) * 46px));filter:blur(6px)}}.song-index{letter-spacing:.24em;text-transform:uppercase;color:var(--ink-dim);font-size:13px;font-weight:700}.song-index .featured{color:var(--gold);text-shadow:0 0 12px #ffd23db3;margin-left:12px}.song-panel h1{font-family:var(--display);letter-spacing:.01em;text-shadow:0 0 24px color-mix(in srgb, var(--song-c,#ff3df2) 60%, transparent), 0 4px 0 #00000059;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:clamp(28px,4vw,54px);font-weight:400;line-height:1.02;display:-webkit-box;overflow:hidden}.song-sub{flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;margin:0;display:flex}.song-genre{color:#fff;letter-spacing:.08em;text-transform:uppercase;background:color-mix(in srgb, var(--song-c,#29e7ff) 35%, #0a081499);border-radius:999px;padding:6px 14px;font-size:14px;font-weight:800;box-shadow:inset 0 0 0 1px #ffffff40}.song-info{color:var(--ink-dim);font-variant-numeric:tabular-nums;font-size:16px;font-weight:600}.menu-actions{align-items:center;gap:22px;display:flex}.segmented{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:inset 0 0 0 1px var(--line);pointer-events:auto;background:#0a081499;border-radius:999px;padding:5px;display:flex}.segmented button{cursor:pointer;font:inherit;color:var(--ink-dim);background:0 0;border:0;border-radius:999px;padding:14px 22px;font-size:17px;font-weight:700;transition:background .2s,color .2s}.segmented button:hover,.segmented button.dwell-hover{color:var(--ink);background:#ffffff14}.segmented button.on{color:#0b0816;background:var(--ink);box-shadow:0 0 24px -4px var(--seg-c,#fff)}#difficulty button[data-diff=easy]{--seg-c:#7dff5a}#difficulty button[data-diff=normal]{--seg-c:#29e7ff}#difficulty button[data-diff=hard]{--seg-c:#ff3df2}#difficulty button.on{background:var(--seg-c)}.segmented button{text-transform:uppercase;letter-spacing:.08em}.segmented.small button{padding:9px 16px;font-size:15px}.hint{color:var(--ink-dim);text-align:center;margin:0;font-size:14px}.legend{flex-wrap:wrap;justify-content:center;gap:10px;margin:0;padding:0;list-style:none;display:flex}.legend li{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:inset 0 0 0 1px var(--line);color:var(--ink-dim);background:#0a081499;border-radius:999px;align-items:center;gap:10px;padding:8px 14px 8px 9px;font-size:13.5px;display:flex}.legend b{color:var(--ink);font-weight:700}.legend i{border-radius:50%;flex:none;width:22px;height:22px;position:relative}.lg-orb{background:radial-gradient(circle,#fff 0 22%,#29e7ffcc 23% 55%,#0000 56%);box-shadow:inset 0 0 0 2px #fff,0 0 12px #29e7ffb3}.lg-gold{box-shadow:inset 0 0 0 2.5px var(--gold), 0 0 14px #ffd23dcc;background:radial-gradient(circle,#ffd23de6,#ffd23d33 70%)}.lg-gold:after{content:"★";color:#fff;place-items:center;font-size:12px;display:grid;position:absolute;inset:0}.lg-fever{background:linear-gradient(90deg,#29e7ff,#7dff5a,#ffd23d,#ff3df2) 0 0/200% 100%;animation:2s linear infinite fever-slide;box-shadow:0 0 12px #ff3df2b3;border-radius:5px!important;width:28px!important;height:10px!important}@keyframes fever-slide{to{background-position:-200% 0}}.lg-sync{background:linear-gradient(90deg,#29e7ff 0 40%,#0000 40% 60%,#ff3df2 60%);border-radius:6px!important;width:28px!important;height:12px!important}.lg-sync:after{content:"";background:#fff;height:2px;margin-top:-1px;position:absolute;top:50%;left:30%;right:30%;box-shadow:0 0 8px #29e7ff}.no-music{color:#ffb3bd;background:#ff7a8a1f;border-radius:12px;margin:0;padding:12px 18px}code{background:#ffffff1a;border-radius:6px;padding:2px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}#screen-loading{background:#07060d99}.loader{flex-direction:column;align-items:center;gap:22px;font-size:20px;font-weight:700;display:flex}.eq{align-items:flex-end;gap:7px;height:56px;display:flex}.eq i{background:linear-gradient(#ff3df2,#29e7ff);border-radius:5px;width:10px;animation:.9s ease-in-out infinite eq}.eq i:nth-child(2){animation-delay:-.2s}.eq i:nth-child(3){animation-delay:-.45s}.eq i:nth-child(4){animation-delay:-.1s}.eq i:nth-child(5){animation-delay:-.6s}@keyframes eq{0%,to{height:14px}50%{height:56px}}#screen-results{background:radial-gradient(1000px 600px at 50% 30%,#b45cff38,#07060dd1 70%)}.results-wrap{flex-direction:column;align-items:center;gap:18px;width:100%;padding:24px;display:flex}.results-kicker{color:var(--accent-2);letter-spacing:.15em;text-transform:uppercase;margin:0;font-size:14px;font-weight:700}.results-title{font-family:var(--display);margin:0 0 10px;font-size:clamp(40px,6vw,80px);font-weight:400}.results-cards{flex-wrap:wrap;justify-content:center;gap:22px;display:flex}.result-card{background:var(--glass);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);width:270px;box-shadow:inset 0 0 0 2px var(--c), 0 0 60px -20px var(--c);border-radius:26px;flex-direction:column;gap:12px;padding:26px 24px 22px;animation:.6s cubic-bezier(.2,.9,.3,1.2) both rise;display:flex;position:relative}@keyframes rise{0%{opacity:0;transform:translateY(40px)scale(.92)}}.result-card .who{color:var(--c);justify-content:space-between;align-items:center;font-size:20px;font-weight:800;display:flex}.result-card .rank{font-family:var(--display);color:var(--ink-dim);font-size:15px}.result-card.winner .rank{color:var(--gold)}.result-card .grade{font-family:var(--display);text-align:center;color:var(--c);text-shadow:0 0 40px var(--c);font-size:96px;font-weight:400;line-height:1;animation:.55s cubic-bezier(.2,1.4,.4,1) both stamp}.result-card .grade-S{background:linear-gradient(100deg,#29e7ff,#7dff5a 30%,#ffd23d 60%,#ff3df2);color:#0000;filter:drop-shadow(0 0 22px #ffd23d99);text-shadow:none;-webkit-background-clip:text;background-clip:text}@keyframes stamp{0%{opacity:0;transform:scale(2.6)rotate(-8deg)}60%{opacity:1}}.new-best{background:var(--gold);color:#1a1000;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;border-radius:999px;padding:5px 14px;font-size:13px;font-weight:900;position:absolute;top:-13px;left:50%;transform:translate(-50%)rotate(-3deg);box-shadow:0 0 24px #ffd23db3}.hits{background:#ffffff0f;border-radius:4px;gap:2px;height:8px;display:flex;overflow:hidden}.hits i{min-width:0}.h-perfect,.k-perfect{color:#fff6c2;background:#fff6c2}.h-great,.k-great{background:var(--c);color:var(--c)}.h-good,.k-good{background:color-mix(in srgb, var(--c) 45%, transparent);color:color-mix(in srgb, var(--c) 45%, transparent)}.h-miss,.k-miss{color:#ff5d73;background:#ff5d73}.result-card dt b{vertical-align:2px;background:0 0;margin-right:4px;font-size:10px}.bonuses{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.bonuses span{color:var(--ink-dim);background:#ffffff0d;border-radius:999px;padding:4px 10px;font-size:12.5px;font-weight:700}.bonuses span.on{color:#1a1000;background:var(--gold)}.result-card .score{font-family:var(--display);text-align:center;font-variant-numeric:tabular-nums;font-size:34px;font-weight:400}.result-card dl{grid-template-columns:1fr auto;gap:6px 12px;margin:4px 0 0;font-size:15px;display:grid}.result-card dt{color:var(--ink-dim)}.result-card dd{text-align:right;font-variant-numeric:tabular-nums;margin:0;font-weight:700}.results-actions{gap:18px;margin-top:14px;display:flex}.results-empty{color:var(--ink-dim);font-size:18px}.overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:auto;background:#05040a99;place-items:center;display:grid;position:absolute;inset:0}.overlay[hidden]{display:none}.overlay-card{background:var(--glass);box-shadow:inset 0 0 0 1px var(--line), 0 40px 120px -30px #000;text-align:center;border-radius:28px;padding:34px 38px}.overlay-card h2{font-family:var(--display);margin:0 0 22px;font-size:44px;font-weight:400}.overlay-actions{gap:16px;display:flex}.settings-card{text-align:left;flex-direction:column;gap:20px;width:min(460px,92vw);display:flex}.settings-card h2{margin:0;font-size:32px}.field{flex-direction:column;gap:10px;font-weight:700;display:flex}.field>span{justify-content:space-between;display:flex}.field output{color:var(--accent-2);font-variant-numeric:tabular-nums}.field small{color:var(--ink-dim);font-weight:400}.field.check{flex-direction:row;align-items:center;gap:10px;font-weight:500}.field .segmented{align-self:flex-start}input[type=range]{width:100%;accent-color:var(--accent)}.settings-card .btn{align-self:flex-end}#hand-cursor{pointer-events:none;opacity:0;z-index:10;will-change:transform;width:64px;height:64px;margin:-32px 0 0 -32px;transition:opacity .2s;position:absolute;top:0;left:0}#hand-cursor.on{opacity:1}#hand-cursor svg{position:absolute;inset:0;transform:rotate(-90deg)}#hand-cursor circle{fill:none;stroke-width:6px}#hand-cursor .track{stroke:#ffffff40}#hand-cursor .fill{stroke:var(--c,#fff);stroke-linecap:round;stroke-dasharray:163.4;stroke-dashoffset:163.4px}#hand-cursor i{background:var(--c,#fff);width:22px;height:22px;box-shadow:0 0 22px var(--c,#fff);border-radius:50%;margin:-11px;position:absolute;top:50%;left:50%}#toast{background:var(--glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:inset 0 0 0 1px var(--line);opacity:0;z-index:20;border-radius:14px;padding:12px 20px;font-weight:600;transition:opacity .25s,transform .25s;position:absolute;bottom:34px;left:50%;transform:translate(-50%,20px)}#toast.show{opacity:1;transform:translate(-50%)}.fs-corner{z-index:30;cursor:pointer;pointer-events:auto;width:40px;height:40px;color:var(--ink);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:inset 0 0 0 1px var(--line);opacity:.7;background:#0a081499;border:0;border-radius:12px;place-items:center;padding:0;transition:opacity .2s,transform .15s,box-shadow .2s;display:grid;position:absolute;bottom:16px;right:16px}.fs-corner:hover{opacity:1;transform:scale(1.08);box-shadow:inset 0 0 0 1px #fff6,0 0 18px #ff3df280}.fs-corner svg{fill:none;stroke:currentColor;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.is-full .fs-corner{display:none}@media (width<=900px){.start-tips{grid-template-columns:1fr}.btn-round{width:60px;height:60px}.coverflow{--size:clamp(140px, 24vh, 220px)}.menu-actions{flex-wrap:wrap;justify-content:center}.legend li{padding:6px 10px 6px 7px;font-size:12px}}@media (height<=760px){.legend{display:none}.song-panel{min-height:96px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
