:root{--bg: #0b0620;--bg-2: #160d38;--panel: rgba(26, 16, 64, .72);--panel-solid: #1c1245;--line: rgba(255, 255, 255, .12);--text: #fff7fd;--muted: #b9acd9;--pink: #ff3d9a;--cyan: #2de2e6;--yellow: #ffd23f;--violet: #9b5cff;--radius: 22px;--font: "M PLUS Rounded 1c", system-ui, sans-serif;--display: "Dela Gothic One", "M PLUS Rounded 1c", system-ui, sans-serif;color-scheme:dark;font-size:clamp(15px,1.05vw + 6px,26px)}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--font);font-weight:700;-webkit-font-smoothing:antialiased}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none;-webkit-tap-highlight-color:transparent}button:focus-visible,.card:focus-visible,input:focus-visible{outline:4px solid var(--cyan);outline-offset:3px}[hidden]{display:none!important}.bg{position:fixed;inset:0;overflow:hidden;background:radial-gradient(ellipse at top,#24104f 0%,transparent 60%),linear-gradient(180deg,var(--bg) 0%,var(--bg-2) 100%)}.bg i{position:absolute;width:55vmax;height:55vmax;border-radius:50%;filter:blur(90px);opacity:.35;animation:drift 26s ease-in-out infinite alternate}.bg i:nth-child(1){background:var(--pink);left:-15vmax;top:-10vmax}.bg i:nth-child(2){background:var(--violet);right:-20vmax;top:20vh;animation-delay:-9s}.bg i:nth-child(3){background:var(--cyan);left:20vw;bottom:-35vmax;opacity:.2;animation-delay:-17s}@keyframes drift{to{transform:translate(10vw,6vh) scale(1.15)}}#app{position:fixed;inset:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;min-height:3rem;padding:.6em 1.4em;border-radius:999px;background:linear-gradient(135deg,var(--pink),var(--violet));box-shadow:0 8px 30px #ff3d9a59;font-weight:800;white-space:nowrap;transition:transform .15s,box-shadow .15s}.btn:hover{transform:translateY(-2px) scale(1.03);box-shadow:0 12px 40px #ff3d9a80}.btn:active{transform:scale(.97)}.btn.ghost{background:#ffffff1a;box-shadow:inset 0 0 0 2px var(--line)}.btn.small{min-height:2.4rem;padding:.3em 1em;font-size:.85rem}.btn.big{font-size:1.3rem;min-height:4rem}.btn.huge{font-size:2rem;min-height:5.5rem;padding:.5em 1.6em}.btn.wide{width:100%}.icon-btn{display:inline-grid;place-items:center;width:2.4rem;height:2.4rem;border-radius:50%;background:#ffffff14;font-size:1rem;transition:background .15s,transform .15s}.icon-btn:hover{background:#ffffff2e;transform:scale(1.08)}.icon-btn.big{width:3.2rem;height:3.2rem;font-size:1.4rem}.pill,.chip{display:inline-flex;align-items:center;gap:.5em;padding:.55em 1.1em;border-radius:999px;background:#ffffff14;box-shadow:inset 0 0 0 2px var(--line);white-space:nowrap;transition:background .15s}.pill:hover,.chip:hover{background:#ffffff29}.chip.toggle.on{background:#2de2e629;box-shadow:inset 0 0 0 2px #2de2e699}.toasts{position:fixed;top:1.5rem;left:50%;transform:translate(-50%);z-index:100;display:grid;gap:.6rem;justify-items:center;pointer-events:none}.toast{display:flex;align-items:center;gap:.7em;padding:.8em 1.4em;border-radius:999px;background:#140a32eb;box-shadow:0 10px 40px #00000080,inset 0 0 0 2px #ff3d9a80;animation:pop .35s cubic-bezier(.2,1.4,.4,1);transition:opacity .4s,transform .4s}.toast.out{opacity:0;transform:translateY(-10px)}.toast-emoji{font-size:1.4em}@keyframes pop{0%{opacity:0;transform:scale(.7)}}@media(prefers-reduced-motion:reduce){*,.bg i{animation:none!important;transition:none!important}}.lobby{position:fixed;inset:0;z-index:20;display:flex;flex-direction:column;transition:opacity .35s,transform .35s}.lobby.overlay{background:#0b0620d1;-webkit-backdrop-filter:blur(18px) saturate(1.3);backdrop-filter:blur(18px) saturate(1.3)}.lobby.closed{opacity:0;transform:translateY(4vh);pointer-events:none}.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.2rem 2.2rem .4rem}.logo{display:flex;align-items:baseline;min-height:3.2rem;gap:.8rem}.logo-mark{font-family:var(--display);font-size:2.1rem;background:linear-gradient(90deg,var(--pink),var(--yellow),var(--cyan));-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 18px rgba(255,61,154,.45))}.logo-jp{color:var(--muted);letter-spacing:.3em;font-size:.85rem}.topbar-actions{display:flex;align-items:center;gap:.7rem}.stage-pill{max-width:30vw;overflow:hidden;text-overflow:ellipsis;background:linear-gradient(135deg,var(--pink),var(--violet));box-shadow:0 6px 24px #ff3d9a66}.stage-pill b{overflow:hidden;text-overflow:ellipsis}.mic-dot{width:.7em;height:.7em;border-radius:50%;background:#776a99}.mic-pill.on .mic-dot{background:#4dff91;box-shadow:0 0 12px #4dff91;animation:blink 1.6s infinite}@keyframes blink{50%{opacity:.4}}.hero{padding:1.2rem 2.2rem .6rem;display:grid;gap:.8rem;justify-items:center}.hero-title{margin:0;font-family:var(--display);font-weight:400;font-size:2.6rem;text-align:center;text-shadow:0 0 30px rgba(155,92,255,.6)}.lobby.overlay .hero-title{font-size:1.8rem}.lobby-content{flex:1;overflow-y:auto;padding:.5rem 2.2rem 3rem;scroll-behavior:smooth}.lobby-content>*{max-width:1500px;margin-left:auto;margin-right:auto}.section-title{margin:1.6rem auto .9rem;font-size:1.35rem}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:1rem}.tile{display:grid;justify-items:start;align-content:space-between;min-height:7.5rem;padding:1.1rem 1.2rem;border-radius:var(--radius);text-align:left;background:linear-gradient(140deg,hsl(var(--hue) 90% 58% / .9),hsl(calc(var(--hue) + 40) 80% 38% / .9));box-shadow:0 10px 30px hsl(var(--hue) 90% 50% / .25);transition:transform .18s,box-shadow .18s}.tile:hover{transform:translateY(-4px) rotate(-1deg) scale(1.03);box-shadow:0 16px 40px hsl(var(--hue) 90% 50% / .45)}.tile-emoji{font-size:2.4rem;line-height:1}.tile-label{font-size:1.1rem;font-weight:800;text-shadow:0 2px 8px rgba(0,0,0,.3)}.queue{display:grid;gap:.6rem}.queue-item{display:flex;align-items:center;gap:1rem;padding:.6rem 1rem .6rem .6rem;border-radius:18px;background:var(--panel);box-shadow:inset 0 0 0 2px var(--line)}.queue-item img{width:6rem;aspect-ratio:16 / 9;object-fit:cover;border-radius:10px}.queue-num{width:2.2rem;text-align:center;font-family:var(--display);font-size:1.4rem;color:var(--yellow)}.queue-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lobby.searching .hero-title{display:none}.search{width:min(1100px,100%);display:grid;gap:.8rem}.search-row{display:flex;align-items:center;gap:1rem}.search-field{position:relative;flex:1;display:flex;align-items:center;border-radius:999px;background:#ffffff14;box-shadow:inset 0 0 0 3px #ffffff24,0 10px 40px #0000004d;transition:box-shadow .2s}.search-field:focus-within{box-shadow:inset 0 0 0 3px var(--cyan),0 0 40px #2de2e64d}.search-icon{padding-left:1.4rem;font-size:1.4rem}.search-input{flex:1;min-width:0;height:4.4rem;padding:0 1.4rem 0 1rem;border:0;outline:0!important;background:none;font-size:1.6rem}.search-input::placeholder{color:var(--muted)}.search-input::-webkit-search-cancel-button{display:none}.go-btn{height:4.4rem;padding:0 2rem;border-radius:999px;background:linear-gradient(135deg,var(--yellow),#ff9f3d);color:#2a1250;font-size:1.4rem;font-weight:800;box-shadow:0 8px 30px #ffd23f59;transition:transform .15s}.go-btn:hover{transform:scale(1.05)}.voice-btn{position:relative;width:5.6rem;height:5.6rem;border-radius:50%;font-size:2.6rem;background:radial-gradient(circle at 30% 30%,#ff6fb5,var(--pink) 50%,#b5126a);box-shadow:0 0 0 6px #ff3d9a40,0 10px 40px #ff3d9a8c;transition:transform .15s}.voice-btn:hover{transform:scale(1.08)}.voice-btn.listening{animation:listening 1.1s ease-in-out infinite}@keyframes listening{50%{box-shadow:0 0 0 22px #ff3d9a26,0 0 70px #ff3d9ae6;transform:scale(1.08)}}.search-options{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.7rem;font-size:.85rem}.voice-hint{color:var(--muted)}.suggest{position:absolute;top:calc(100% + .5rem);left:0;right:0;z-index:5;display:none;padding:.5rem;border-radius:var(--radius);background:var(--panel-solid);box-shadow:0 20px 60px #0009,inset 0 0 0 2px var(--line)}.suggest.open{display:grid}.suggest-item{text-align:left;padding:.8rem 1.2rem;border-radius:14px;font-size:1.15rem}.suggest-item:hover{background:#ffffff1a}.back-btn{align-self:center;margin-left:1rem}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));gap:1.3rem}.card{position:relative;display:flex;flex-direction:column;border-radius:var(--radius);overflow:hidden;background:var(--panel);box-shadow:inset 0 0 0 2px var(--line),0 10px 30px #0000004d;cursor:pointer;transition:transform .18s,box-shadow .18s}.card:hover{transform:translateY(-5px) scale(1.02);box-shadow:inset 0 0 0 3px var(--cyan),0 16px 40px #2de2e640}.card.top{box-shadow:inset 0 0 0 3px var(--yellow),0 0 40px #ffd23f4d}.card.counting{animation:glow 1s ease-in-out infinite}@keyframes glow{50%{box-shadow:inset 0 0 0 4px var(--yellow),0 0 70px #ffd23f99}}.thumb{position:relative;aspect-ratio:16 / 9;background:#000}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.duration{position:absolute;right:.6rem;bottom:.6rem;padding:.15em .6em;border-radius:8px;background:#000000bf;font-size:.8rem}.play-badge{position:absolute;inset:0;margin:auto;width:4rem;height:4rem;display:grid;place-items:center;border-radius:50%;font-size:1.6rem;background:#ff3d9ae6;box-shadow:0 0 30px #ff3d9ab3;opacity:0;transform:scale(.6);transition:opacity .18s,transform .18s}.card:hover .play-badge,.card.top .play-badge{opacity:1;transform:none}.card-body{padding:.9rem 1.1rem 1rem;flex:1}.card-title{margin:0 0 .3rem;font-size:1.05rem;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-meta{margin:0;font-size:.75rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-actions{display:flex;gap:.5rem;padding:0 1.1rem 1rem}.countdown{position:sticky;top:0;z-index:4;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:1rem;margin:.4rem auto .6rem;padding:.8rem 1.2rem;border-radius:999px;background:linear-gradient(135deg,#ffd23ff2,#ff9f3df2);color:#2a1250;box-shadow:0 10px 40px #ffd23f59;font-size:1.15rem}.countdown .btn.ghost{color:#2a1250;background:#fff6;box-shadow:none}.countdown-text span{font-family:var(--display);font-size:1.4em}.loading,.empty{display:grid;justify-items:center;gap:1rem;padding:4rem 1rem;font-size:1.3rem;color:var(--muted);text-align:center}.empty{font-size:4rem}.empty p{font-size:1.3rem}.spinner{width:4rem;height:4rem;border-radius:50%;border:6px solid rgba(255,255,255,.1);border-top-color:var(--pink);border-right-color:var(--cyan);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.stage{position:fixed;inset:0;background:#000}.stage.empty{visibility:hidden}.video,.video iframe,.video-shield{position:absolute;inset:0;width:100%;height:100%;border:0}.video-shield{z-index:1}.stage.idle{cursor:none}.hud{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;justify-content:space-between;pointer-events:none;transition:opacity .5s}.stage.idle .hud{opacity:0}.hud-top{display:flex;justify-content:space-between;align-items:flex-start;gap:2rem;padding:4.5rem 2rem 4rem;background:linear-gradient(180deg,rgba(0,0,0,.7),transparent)}.now-title,.next-chip{display:grid;gap:.2rem;font-size:1.3rem;max-width:45vw;text-shadow:0 2px 10px rgba(0,0,0,.8)}.next-chip{text-align:right;font-size:1rem;color:#e8ddff}.now-label{font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--cyan)}.hud-bottom{padding:4rem 2rem 1.4rem;display:grid;gap:1rem;justify-items:center;background:linear-gradient(0deg,rgba(0,0,0,.75),transparent)}.progress{width:100%;height:6px;border-radius:6px;background:#ffffff26;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--pink),var(--yellow));transform-origin:left;transform:scaleX(0);transition:transform .5s linear}.dock{pointer-events:auto;display:flex;align-items:center;gap:.5rem;padding:.6rem;border-radius:999px;background:#140a32bf;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 10px 40px #00000080,inset 0 0 0 2px var(--line)}.dock-btn{display:grid;justify-items:center;gap:.1rem;min-width:4.6rem;padding:.45rem .6rem;border-radius:999px;transition:background .15s,transform .15s}.dock-btn:hover{background:#ffffff1f;transform:translateY(-3px)}.dock-btn:active{transform:scale(.92)}.dock-emoji{font-size:1.7rem;line-height:1.2}.dock-label{font-size:.62rem;color:var(--muted);white-space:nowrap}.dock-btn.main{width:4.8rem;height:4.8rem;min-width:0;place-items:center;font-size:2rem;background:linear-gradient(135deg,var(--pink),var(--violet));box-shadow:0 6px 24px #ff3d9a80}.dock-sep{width:2px;height:2.6rem;background:var(--line)}.up-next-banner{position:absolute;z-index:3;right:2rem;top:6.5rem;max-width:40vw;padding:.9rem 1.4rem;border-radius:18px;background:linear-gradient(135deg,#ff3d9aeb,#9b5cffeb);box-shadow:0 10px 40px #ff3d9a66;font-size:1.1rem;opacity:0;transform:translate(120%);transition:opacity .5s,transform .5s cubic-bezier(.2,1.2,.4,1)}.up-next-banner.show{opacity:1;transform:none}.vu{position:absolute;z-index:3;left:1.2rem;bottom:30vh;width:.9rem;height:30vh;border-radius:999px;background:#0006;box-shadow:inset 0 0 0 2px #ffffff26;overflow:hidden;transition:opacity .4s}.vu.off,.stage.empty .vu{opacity:0}.vu-fill{position:absolute;inset:0;background:linear-gradient(0deg,var(--cyan),#4dff91 50%,var(--yellow) 75%,var(--pink));transform-origin:bottom;transform:scaleY(0);transition:transform .06s linear}.vu-icon{position:absolute;bottom:-2.2rem;left:50%;transform:translate(-50%)}.fx-panel{position:absolute;z-index:10;top:0;right:0;bottom:0;width:min(30rem,92vw);padding:1.5rem;display:flex;flex-direction:column;gap:1.1rem;overflow-y:auto;background:#10092af0;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:-20px 0 60px #00000080;transform:translate(105%);transition:transform .35s cubic-bezier(.2,1,.3,1)}.fx-panel.open{transform:none}.fx-head{display:flex;align-items:center;justify-content:space-between}.fx-head h2{margin:0}.presets{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem}.preset{display:grid;justify-items:center;gap:.2rem;padding:.8rem .4rem;border-radius:18px;background:#ffffff12;box-shadow:inset 0 0 0 2px var(--line);font-size:.8rem;transition:transform .15s,background .15s}.preset:hover{transform:scale(1.05)}.preset.active{background:linear-gradient(135deg,#ff3d9a80,#9b5cff80);box-shadow:inset 0 0 0 3px var(--pink),0 0 24px #ff3d9a80}.preset-emoji{font-size:2.2rem}.slider{display:grid;gap:.4rem}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:2.2rem;background:none}input[type=range]::-webkit-slider-runnable-track{height:.6rem;border-radius:999px;background:linear-gradient(90deg,var(--cyan),var(--pink))}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:2rem;height:2rem;margin-top:-.7rem;border-radius:50%;background:#fff;box-shadow:0 0 0 5px #ff3d9a80,0 4px 12px #00000080}.splash,.score-screen,.modal{position:fixed;inset:0;z-index:50;display:grid;place-content:center;justify-items:center;gap:1.4rem;padding:2rem;text-align:center;transition:opacity .45s}.splash{background:radial-gradient(circle at 50% 40%,#2b1266,var(--bg) 70%)}.splash.out,.score-screen.out{opacity:0;pointer-events:none}.splash-logo{font-family:var(--display);font-size:clamp(4rem,12vw,10rem);line-height:1;background:linear-gradient(90deg,var(--pink),var(--yellow),var(--cyan),var(--pink));background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shine 6s linear infinite;filter:drop-shadow(0 0 40px rgba(255,61,154,.5))}@keyframes shine{to{background-position:300% 0}}.splash-jp{color:var(--muted);letter-spacing:.3em;font-size:1.2rem;margin-bottom:2rem}.splash-hint,.tip{color:var(--muted);font-size:.9rem;max-width:32rem}.score-screen{background:radial-gradient(circle at 50% 45%,#3c1478,#050214 70%);gap:.6rem;animation:pop .4s}.score-song{font-size:1.3rem;color:var(--muted);max-width:80vw}.score-jp{font-size:2rem;letter-spacing:.4em;color:var(--cyan)}.score-number{font-family:var(--display);font-size:clamp(8rem,22vw,18rem);line-height:1;font-variant-numeric:tabular-nums;color:#fff}.score-number:after{content:"点";font-size:.3em;margin-left:.1em}.score-number.final{animation:stamp .6s cubic-bezier(.2,1.6,.4,1)}.score-number.gold{color:var(--yellow);text-shadow:0 0 60px rgba(255,210,63,.8)}.score-number.pink{color:var(--pink);text-shadow:0 0 60px rgba(255,61,154,.8)}@keyframes stamp{0%{transform:scale(2.2);opacity:0}}.score-label{font-family:var(--display);font-size:3rem}.score-next{margin-top:1.5rem;display:grid;gap:1rem;justify-items:center;font-size:1.2rem}.score-next p{margin:0}.score-actions{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center}.confetti{position:fixed;inset:0;width:100vw;height:100vh;z-index:60;pointer-events:none}.modal{background:#050214b3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.modal-card{width:min(40rem,92vw);max-height:90vh;overflow-y:auto;display:grid;gap:1.1rem;padding:2rem;text-align:left;border-radius:28px;background:var(--panel-solid);box-shadow:0 30px 80px #0009,inset 0 0 0 2px var(--line);animation:pop .3s}.modal-card h2{margin:0}.setting{display:grid;gap:.5rem}.setting select{height:3.2rem;padding:0 1rem;border-radius:14px;border:0;background:#ffffff14;box-shadow:inset 0 0 0 2px var(--line)}.setting select option{background:var(--panel-solid)}.toggle-row{grid-template-columns:1fr auto;align-items:center;cursor:pointer}.toggle-row small{display:block;color:var(--muted);font-size:.75rem;font-weight:500}.toggle-row input{position:absolute;opacity:0}.switch{width:3.6rem;height:2rem;border-radius:999px;background:#ffffff26;position:relative;transition:background .2s}.switch:after{content:"";position:absolute;top:.25rem;left:.25rem;width:1.5rem;height:1.5rem;border-radius:50%;background:#fff;transition:transform .2s}.toggle-row input:checked+.switch{background:linear-gradient(135deg,var(--pink),var(--violet))}.toggle-row input:checked+.switch:after{transform:translate(1.6rem)}@media(max-width:800px){.topbar,.hero,.lobby-content{padding-left:1rem;padding-right:1rem}.logo-jp,.go-btn,.dock-sep,.dock-label{display:none}.voice-btn{width:4.4rem;height:4.4rem;font-size:2rem}.dock{flex-wrap:wrap;justify-content:center;border-radius:28px}.dock-btn{min-width:3.2rem}}
