*{box-sizing:border-box}:root{--bg:#08030e;--panel:rgba(18,11,30,0.95);--text:#ffffff;--muted:#c2b8d3;--pink:#ff47b7;--violet:#7b35ff;--cyan:#3de8ff;--yellow:#ffe257;--lime:#a4ff72;--border:rgba(255,255,255,0.13);--shadow:0 24px 80px rgba(0,0,0,0.42)}body,html{width:100%;min-height:100%;margin:0;background:var(--bg)}body{overflow:hidden;color:var(--text);background:linear-gradient(rgba(255,255,255,.025) 1px,transparent 0),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 0),radial-gradient(circle at 12% 18%,rgba(255,71,183,.24),transparent 26%),radial-gradient(circle at 88% 10%,rgba(61,232,255,.17),transparent 27%),linear-gradient(150deg,#08030e,#1b0a28 56%,#07040a);background-size:42px 42px,42px 42px,auto,auto,auto;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,model-viewer{-webkit-tap-highlight-color:transparent}button{font:inherit}.party-app{display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:min(1500px,100%);height:100vh;height:100dvh;margin:0 auto;overflow:hidden}.topbar{position:relative;z-index:20;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:max(18px,env(safe-area-inset-top)) clamp(18px,3vw,46px) 8px}.brand-small,.eyebrow{display:block;margin-bottom:6px;color:var(--cyan);font-size:.64rem;font-weight:900;letter-spacing:.24em}.brand h1{margin:0;font-family:Impact,Haettenschweiler,Arial Narrow Bold,sans-serif;font-size:clamp(1.55rem,4vw,3.45rem);font-weight:900;line-height:.94;text-transform:uppercase}.brand h1 span{color:transparent;background:linear-gradient(100deg,var(--pink),#ff9ce0 43%,var(--cyan));-webkit-background-clip:text;background-clip:text}.top-actions{display:flex;gap:9px}.dance-button,.icon-button,.random-button{border:0;color:var(--text);cursor:pointer}.icon-button{display:grid;width:45px;height:45px;place-items:center;border:1px solid var(--border);border-radius:8px;background:rgba(255,255,255,.08);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);transition:transform .16s ease,background .16s ease}.icon-button:hover{transform:translateY(-2px);background:rgba(255,255,255,.14)}.icon-button svg,.random-button svg{width:20px;height:20px}.stage{position:relative;min-height:0;overflow:hidden;isolation:isolate}model-viewer{position:absolute;inset:0;z-index:5;width:100%;height:100%;outline:none;touch-action:pan-y;--poster-color:transparent;transition:opacity .18s ease,filter .18s ease}.party-app.is-loading model-viewer{opacity:.28;filter:blur(4px)}.light-rig{position:absolute;inset:8% 10% auto;z-index:-2;display:flex;justify-content:space-between;pointer-events:none}.light-rig span{width:clamp(52px,8vw,96px);aspect-ratio:1;border-radius:999px;opacity:.38;filter:blur(18px);animation:pulse-light 2.1s ease-in-out infinite alternate}.light-rig span:first-child{background:var(--pink)}.light-rig span:nth-child(2){background:var(--cyan);animation-delay:-.7s}.light-rig span:nth-child(3){background:var(--yellow);animation-delay:-1.1s}.light-rig span:nth-child(4){background:var(--lime);animation-delay:-.3s}@keyframes pulse-light{0%{transform:translateY(0) scale(.78)}to{transform:translateY(36px) scale(1.08)}}.spotlight{z-index:-3;top:-4%;width:min(72vw,830px);height:98%;-webkit-clip-path:polygon(42% 0,58% 0,88% 100%,12% 100%);clip-path:polygon(42% 0,58% 0,88% 100%,12% 100%);opacity:.2;background:linear-gradient(180deg,rgba(255,255,255,.88),rgba(123,53,255,.12));filter:blur(9px)}.dance-floor,.spotlight{position:absolute;left:50%;transform:translateX(-50%)}.dance-floor{z-index:-2;bottom:6%;width:min(66vw,590px);aspect-ratio:1/.23;border:2px solid rgba(61,232,255,.48);border-radius:50%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.09) 0 14px,transparent 14px 28px),radial-gradient(ellipse,rgba(255,71,183,.22),transparent 62%);box-shadow:0 0 34px rgba(61,232,255,.25),inset 0 0 28px rgba(255,71,183,.19)}.stage-status{position:absolute;z-index:12;bottom:14px;left:50%;display:flex;align-items:center;gap:8px;max-width:calc(100% - 30px);padding:9px 14px;overflow:hidden;border:1px solid var(--border);border-radius:999px;background:rgba(10,5,18,.78);box-shadow:0 12px 36px rgba(0,0,0,.3);font-size:.69rem;letter-spacing:.07em;white-space:nowrap;transform:translateX(-50%);-webkit-backdrop-filter:blur(17px);backdrop-filter:blur(17px)}.status-prefix{color:var(--muted);font-weight:800}.stage-status strong{overflow:hidden;color:var(--yellow);text-overflow:ellipsis}.equalizer{display:flex;align-items:flex-end;gap:2px;height:12px}.equalizer i{display:block;width:2px;height:40%;border-radius:2px;background:var(--cyan);animation:equalize .68s ease-in-out infinite alternate}.equalizer i:nth-child(2){animation-delay:-.3s}.equalizer i:nth-child(3){animation-delay:-.1s}.equalizer i:nth-child(4){animation-delay:-.47s}@keyframes equalize{0%{height:22%}to{height:100%}}.error-toast,.loading-card{position:absolute;z-index:25;top:50%;left:50%;display:flex;align-items:center;gap:11px;padding:12px 16px;border:1px solid var(--border);border-radius:999px;background:rgba(10,5,18,.86);box-shadow:var(--shadow);pointer-events:none;transform:translate(-50%,-50%);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.2);border-top:2px solid var(--cyan);border-radius:50%;animation:spin .72s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.error-toast{top:16px;border-color:rgba(255,91,121,.46);color:#ffdbe2;background:rgba(95,13,39,.92);transform:translateX(-50%)}.gesture-tip{position:absolute;z-index:10;right:20px;bottom:17px;margin:0;color:rgba(255,255,255,.48);font-size:.66rem;font-weight:800}.control-dock{position:relative;z-index:30;padding:16px clamp(16px,3vw,42px) max(16px,env(safe-area-inset-bottom));border-top:1px solid rgba(255,255,255,.1);background:linear-gradient(180deg,rgba(28,16,44,.96),rgba(9,6,17,.99));box-shadow:0 -15px 50px rgba(0,0,0,.32);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}.dock-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}.dock-heading h2{margin:0;font-size:clamp(1rem,2vw,1.35rem)}.random-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:10px 15px;border-radius:8px;color:#170921;background:linear-gradient(100deg,var(--yellow),#ffba51 60%,#ff87d4);box-shadow:0 10px 28px rgba(255,119,195,.17);font-weight:950;transition:transform .16s ease,box-shadow .16s ease}.random-button:hover{transform:translateY(-2px);box-shadow:0 14px 34px rgba(255,119,195,.24)}.dance-strip{display:grid;grid-auto-columns:minmax(138px,178px);grid-auto-flow:column;grid-gap:10px;gap:10px;overflow-x:auto;overflow-y:hidden;padding:2px 2px 7px;scroll-behavior:smooth;scroll-snap-type:x proximity;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.25) transparent;overscroll-behavior-x:contain}.dance-strip::-webkit-scrollbar{height:5px}.dance-strip::-webkit-scrollbar-thumb{border-radius:999px;background:rgba(255,255,255,.22)}.dance-button{position:relative;display:flex;min-height:54px;align-items:center;gap:10px;padding:10px 12px;overflow:hidden;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:rgba(255,255,255,.055);text-align:left;scroll-snap-align:start;transition:transform .16s ease,border-color .16s ease,background .16s ease,box-shadow .16s ease}.dance-button:after{position:absolute;inset:0;content:"";opacity:0;background:linear-gradient(120deg,rgba(255,71,183,.22),rgba(61,232,255,.11));transition:opacity .16s ease}.dance-button:hover{transform:translateY(-2px);border-color:rgba(61,232,255,.36)}.dance-button.is-active:after,.dance-button:hover:after{opacity:1}.dance-button.is-active{border-color:rgba(255,71,183,.76);background:rgba(255,71,183,.1);box-shadow:0 0 0 1px rgba(255,71,183,.15),0 10px 24px rgba(255,71,183,.12)}.dance-button:disabled,.random-button:disabled{cursor:wait;opacity:.55}.dance-label,.dance-number{position:relative;z-index:2}.dance-number{display:grid;flex:0 0 auto;width:29px;height:29px;place-items:center;border-radius:8px;color:var(--cyan);background:rgba(61,232,255,.1);font-size:.63rem;font-weight:900}.dance-button.is-active .dance-number{color:#160820;background:var(--cyan)}.dance-label{overflow:hidden;font-size:.77rem;font-weight:900;text-overflow:ellipsis;white-space:nowrap}.empty-state{position:absolute;z-index:30;top:50%;left:50%;width:min(560px,calc(100% - 32px));padding:34px 24px;border:1px solid var(--border);border-radius:8px;background:var(--panel);box-shadow:var(--shadow);text-align:center;transform:translate(-50%,-50%);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.empty-emoji{display:inline-grid;width:64px;height:64px;place-items:center;border-radius:999px;color:#180923;background:var(--yellow);font-size:1.1rem;font-weight:950}.empty-state h2{margin:14px 0 8px}.empty-state p{margin:0;color:var(--muted);line-height:1.6}.empty-state code{color:var(--cyan)}:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}@media (max-width:720px){.party-app{grid-template-rows:auto minmax(260px,1fr) auto}.topbar{padding:max(14px,env(safe-area-inset-top)) 15px 6px}.brand-small{font-size:.54rem}.brand h1{max-width:255px;font-size:clamp(1.22rem,7vw,1.8rem)}.icon-button{width:41px;height:41px}.control-dock{padding:13px 14px max(12px,env(safe-area-inset-bottom))}.dock-heading{margin-bottom:10px}.eyebrow{margin-bottom:4px;font-size:.55rem}.dock-heading h2{font-size:.98rem}.random-button{min-height:40px;padding:9px 13px}.dance-strip{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-columns:auto;grid-auto-flow:row;gap:8px;max-height:min(178px,25dvh);overflow-x:hidden;overflow-y:auto;padding:2px 4px 6px 2px;scroll-snap-type:y proximity}.dance-button{width:100%;min-width:0;min-height:51px;padding:9px 10px}.dance-label{min-width:0}.gesture-tip{right:14px;bottom:14px;font-size:.58rem}.stage-status{left:14px;bottom:13px;max-width:calc(100% - 145px);transform:none}.status-prefix{display:none}.dance-floor{bottom:7%;left:50%;width:min(92vw,430px)}}@media (max-width:390px){.brand h1{max-width:210px;font-size:1.24rem}.top-actions{gap:6px}.icon-button{width:38px;height:38px}.random-button span{display:none}.random-button{width:41px;padding:0}.gesture-tip{display:none}.stage-status{max-width:calc(100% - 28px)}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}