@font-face{font-family:Anton;font-style:normal;font-display:swap;font-weight:400;src:url(./anton-latin-400-normal-Byf51wtH.woff2)format("woff2"),url(./anton-latin-400-normal-AUNGEG_V.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(./inter-latin-500-normal-Cerq10X2.woff2)format("woff2"),url(./inter-latin-500-normal-BL9OpVg8.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(./inter-latin-700-normal-Yt3aPRUw.woff2)format("woff2"),url(./inter-latin-700-normal-BLAVimhd.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(./inter-latin-800-normal-BYj_oED-.woff2)format("woff2"),url(./inter-latin-800-normal-D1mf63XC.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:900;src:url(./inter-latin-900-normal-D4nM5aha.woff2)format("woff2"),url(./inter-latin-900-normal-EUCDUbiG.woff)format("woff")}:root{--bg:#07040f;--ink:#f6f1ff;--muted:#f0e8ff9e;--panel:#100a228c;--panel-line:#ffffff1f;--display:"Anton", "Impact", "Haettenschweiler", "Arial Narrow Bold", system-ui, sans-serif;--ui:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--perfect:#ffe066;--great:#6dffb0;--good:#7cc8ff;--weak:#c9a6ff;--miss:#ff4d6d}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;color:var(--ink);font-family:var(--ui);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;margin:0;overflow:hidden}.app{position:fixed;inset:0;overflow:hidden}.scene{width:100%;height:100%;display:block;position:absolute;inset:0}.tap-layer{z-index:5;position:absolute;inset:0}.tap-layer.active{cursor:crosshair}.hud-top{top:max(12px, env(safe-area-inset-top));z-index:10;pointer-events:none;grid-template-columns:1fr auto 1fr;align-items:start;gap:12px;display:grid;position:absolute;left:16px;right:16px}.fighter{--c:#fff;border:1px solid var(--panel-line);-webkit-backdrop-filter:blur(8px);background:linear-gradient(100deg,#0a0618bf,#0a061840);border-radius:14px;max-width:340px;padding:10px 16px 12px;transition:box-shadow .3s,border-color .3s;position:relative;transform:skew(-8deg)}.fighter>*{transform:skew(8deg)}.fighter.opponent{text-align:right;background:linear-gradient(260deg,#0a0618bf,#0a061840);justify-self:end;transform:skew(8deg)}.fighter.opponent>*{transform:skew(-8deg)}.fighter.active{border-color:var(--c);box-shadow:0 0 24px -4px var(--c), inset 0 0 18px -10px var(--c)}.fighter-name{letter-spacing:.22em;color:var(--c);align-items:center;gap:8px;font-size:13px;font-weight:900;display:flex}.fighter.opponent .fighter-name{flex-direction:row-reverse;justify-content:flex-end}.tag{letter-spacing:.12em;background:var(--c);color:#12081f;border-radius:4px;padding:2px 6px;font-size:9px}.fighter-score{font-family:var(--display);letter-spacing:.02em;text-shadow:0 0 18px color-mix(in srgb, var(--c) 60%, transparent);font-size:clamp(26px,4.2vw,44px);line-height:1.05}.unit{font-family:var(--ui);letter-spacing:.2em;color:var(--muted);margin-left:8px;font-size:11px;font-weight:800}.aura-meter{background:#ffffff1a;border-radius:6px;height:6px;margin-top:6px;position:relative;overflow:hidden}.aura-fill{background:linear-gradient(90deg, var(--c), var(--c2), #fff);height:100%;box-shadow:0 0 12px var(--c);border-radius:6px;transition:width .9s cubic-bezier(.2,.8,.2,1)}.fighter.opponent .aura-fill{background:linear-gradient(270deg, var(--c), var(--c2), #fff);margin-left:auto}.aura-level{letter-spacing:.2em;color:var(--muted);font-size:9px;font-weight:800;position:absolute;top:-15px;right:0}.fighter.opponent .aura-level{left:0;right:auto}.vs{text-align:center;padding-top:4px}.vs-text{font-family:var(--display);letter-spacing:.06em;background:linear-gradient(#fff,#b9a8ff);color:#0000;filter:drop-shadow(0 0 10px #a078ff99);-webkit-background-clip:text;background-clip:text;font-size:28px}.round{letter-spacing:.24em;color:var(--muted);white-space:nowrap;margin-top:2px;font-size:10px;font-weight:900}.round.final{color:#ffdf6b;text-shadow:0 0 10px #ffc83ccc}.move-banner{z-index:9;border:1px solid var(--panel-line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none;background:#0a061899;border-radius:999px;align-items:center;gap:10px;padding:8px 18px 8px 12px;animation:.35s cubic-bezier(.2,1.4,.4,1) both slideIn;display:flex;position:absolute;top:118px}.move-banner.player{left:18px}.move-banner.opponent{right:18px}.move-icon{font-size:22px}.move-name{font-family:var(--display);letter-spacing:.04em;font-size:24px}.counter-chip{letter-spacing:.16em;color:#170818;background:linear-gradient(90deg,#ff3d7f,#ffb13d);border-radius:6px;padding:3px 8px;font-size:10px;font-weight:900}.ai-line{z-index:9;pointer-events:none;background:#1e123cbf;border:1px solid #8c6bff99;border-radius:14px 14px 2px;max-width:min(360px,70vw);padding:10px 16px;font-size:15px;font-weight:700;animation:.3s cubic-bezier(.2,1.5,.4,1) both pop;position:absolute;top:170px;right:22px}.ai-who{color:#b8a3ff;letter-spacing:.1em;font-weight:900}.mute{z-index:30;bottom:max(14px, env(safe-area-inset-bottom));border:1px solid var(--panel-line);color:#fff;cursor:pointer;background:#0a061899;border-radius:50%;width:40px;height:40px;font-size:18px;position:absolute;right:14px}.timing{--c:#fff;z-index:12;pointer-events:none;width:min(760px,92vw);animation:.25s cubic-bezier(.2,1.3,.4,1) both barIn;position:absolute;bottom:clamp(70px,12vh,120px);left:50%;transform:translate(-50%)}.timing.opponent{opacity:.92;width:min(560px,80vw)}.timing-head{justify-content:center;align-items:center;gap:12px;margin-bottom:8px;display:flex}.timing-label{font-family:var(--display);letter-spacing:.05em;text-shadow:0 0 16px var(--c), 0 2px 0 #0009;font-size:clamp(22px,3.4vw,34px)}.timing-owner{letter-spacing:.2em;color:var(--c);font-size:11px;font-weight:900}.beats{gap:6px;display:flex}.beats i{border:2px solid #ffffff80;border-radius:50%;width:10px;height:10px}.beats i.done{background:var(--c);border-color:var(--c)}.beats i.now{border-color:#fff;box-shadow:0 0 10px #fff}.bar{height:30px;box-shadow:0 0 30px -8px var(--c), inset 0 0 16px #0009;background:linear-gradient(90deg,#ffffff0d,#ffffff1f,#ffffff0d);border:2px solid #ffffff40;border-radius:999px;position:relative;overflow:visible}.timing.opponent .bar{height:20px}.zone{border-radius:8px;position:absolute;top:0;bottom:0}.zone.weak{background:#c9a6ff1a}.zone.good{background:#7cc8ff29}.zone.great{background:#6dffb038}.zone.perfect{background:linear-gradient(#fff6b0,#ffd23d);box-shadow:0 0 18px #ffdc50e6}.zone-glow{filter:blur(4px);background:radial-gradient(closest-side,#ffe678e6,#0000);border-radius:12px;position:absolute;inset:-10px -14px}.center-line{background:#fff;width:2px;margin-left:-1px;position:absolute;top:-6px;bottom:-6px;left:50%;box-shadow:0 0 8px #fff}.perfect-text{font-family:var(--display);letter-spacing:.18em;color:var(--perfect);text-shadow:0 0 10px #ffdc50cc;margin-top:6px;font-size:15px;position:absolute;top:100%;left:50%;transform:translate(-50%)}.marker{background:linear-gradient(180deg, #fff, color-mix(in srgb, var(--c) 70%, #fff));width:16px;height:46px;box-shadow:0 0 16px var(--c), 0 0 4px #fff;border-radius:8px;margin-left:-8px;position:absolute;top:50%;transform:translateY(-50%)}.timing.opponent .marker{width:12px;height:32px;margin-left:-6px}.trail{transform-origin:0;background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--c) 55%, transparent));filter:blur(2px);border-radius:999px;width:22%;position:absolute;top:3px;bottom:3px}.timing.judged .trail{display:none}.timing.judged.perfect .bar{border-color:var(--perfect);animation:.5s ease-out flashBar}.timing.judged.miss .bar{border-color:var(--miss);animation:.35s shake}.hint{text-align:center;letter-spacing:.18em;color:#fff;text-shadow:0 0 10px #000000e6;margin-top:30px;font-size:13px;font-weight:800;animation:1s infinite blink}.callouts{z-index:15;pointer-events:none;position:absolute;inset:0}.callout{white-space:nowrap;font-family:var(--display);letter-spacing:.04em;text-transform:uppercase;position:absolute;left:50%;transform:translate(-50%,-50%)}.callout.side-player{left:24%}.callout.side-opponent{left:76%}.callout.aura.big,.callout.caption,.callout.counter{left:50%}.callout.judgement{-webkit-text-stroke:2px #00000080;font-size:clamp(34px,6vw,64px);font-style:italic;animation:1.1s cubic-bezier(.2,1.6,.4,1) both judgeIn;top:54%}.callout.judgement.big{font-size:clamp(48px,9vw,104px);top:50%}.callout.judgement.perfect{color:var(--perfect);text-shadow:0 0 24px #ffd23cf2,0 0 60px #ff8c1e99}.callout.judgement.great{color:var(--great);text-shadow:0 0 20px #50ffa0cc}.callout.judgement.good{color:var(--good);text-shadow:0 0 18px #64b4ffcc}.callout.judgement.weak{color:var(--weak);text-shadow:0 0 14px #b48cff99}.callout.judgement.miss{color:var(--miss);text-shadow:0 0 20px #ff3c5acc;animation:1.1s ease-out both missIn}.callout.aura{color:#fff;text-shadow:0 0 14px var(--c);font-size:clamp(22px,3.2vw,34px);animation:1s ease-out both floatUp;top:62%}.callout.aura.big{background:linear-gradient(180deg, #fff 10%, color-mix(in srgb, var(--c) 70%, #fff) 60%, var(--c));color:#0000;filter:drop-shadow(0 0 22px var(--c)) drop-shadow(0 4px 0 #00000080);-webkit-background-clip:text;background-clip:text;font-size:clamp(44px,8.5vw,96px);animation:2.4s cubic-bezier(.2,1.4,.3,1) both auraIn;top:70%;left:50%}.callout.aura.negative{background:linear-gradient(180deg, #ffd0d8, var(--miss));filter:drop-shadow(0 0 22px #ff3c5ae6);-webkit-background-clip:text;background-clip:text}.callout.caption{color:#fff;letter-spacing:.12em;text-shadow:0 0 12px var(--c);background:linear-gradient(90deg,#0000,#0000008c,#0000);padding:4px 18px;font-size:clamp(20px,3.4vw,38px);font-style:italic;animation:2.4s ease-out both captionIn;top:81%;left:50%}.callout.caption.miss,.callout.caption.weak{color:#ffd5dd;text-shadow:0 0 12px var(--miss)}.callout.counter{color:#1a0816;letter-spacing:.14em;background:linear-gradient(90deg,#ff3d7f,#ffb13d);border-radius:8px;padding:6px 14px;font-size:clamp(16px,2.4vw,24px);animation:1.8s cubic-bezier(.2,1.6,.4,1) both pop;top:57%;left:50%}.callout.banner{color:#fff;letter-spacing:.08em;text-shadow:0 0 30px #a078ffe6;font-size:clamp(36px,7vw,80px);animation:1.4s ease-out both bannerIn;top:40%}.callout.banner.big{color:#ffe27a;text-shadow:0 0 30px #ffb428f2}.picker{z-index:20;padding:14px 0 max(18px, env(safe-area-inset-bottom));background:linear-gradient(#0000,#07040fa6 30%,#07040ff2);animation:.35s cubic-bezier(.2,1.2,.4,1) both rise;position:absolute;bottom:0;left:0;right:0}.picker-title{text-align:center;font-family:var(--display);letter-spacing:.08em;margin-bottom:10px;font-size:clamp(20px,3vw,30px)}.picker-sub{font-family:var(--ui);letter-spacing:.1em;color:var(--muted);font-size:12px;font-weight:700;display:block}.cards{scroll-snap-type:x proximity;scrollbar-width:thin;gap:10px;padding:10px 16px 6px;display:flex;overflow-x:auto}.card{--cat:#9d8cff;scroll-snap-align:start;background:linear-gradient(160deg, color-mix(in srgb, var(--cat) 30%, #140c28e6), #0c081aeb 60%);height:196px;color:var(--ink);text-align:left;cursor:pointer;font-family:var(--ui);border:1px solid #ffffff24;border-radius:16px;flex-direction:column;flex:0 0 156px;align-items:flex-start;gap:4px;padding:12px;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex;position:relative}.card:hover,.card:focus-visible{border-color:var(--cat);box-shadow:0 10px 30px -10px var(--cat);outline:none;transform:translateY(-6px)}.card:active{transform:translateY(-2px)scale(.98)}.card.counter{border-color:#ffb13d;box-shadow:0 0 22px -6px #ff7a3d}.cat-gesture{--cat:#ff8a1f}.cat-dance{--cat:#ff3da6}.cat-face{--cat:#ffd23d}.cat-celebration{--cat:#39ff88}.cat-power{--cat:#ff4d4d}.cat-unbothered{--cat:#7cc8ff}.cat-combo{--cat:#b56bff}.card-badge{letter-spacing:.12em;color:#170818;background:linear-gradient(90deg,#ff3d7f,#ffb13d);border-radius:6px;padding:3px 7px;font-size:9px;font-weight:900;position:absolute;top:-8px;right:8px}.card-icon{font-size:30px;line-height:1.1}.card-name{font-family:var(--display);letter-spacing:.03em;font-size:21px;line-height:1.05}.card-cat{letter-spacing:.18em;color:var(--cat);font-size:9px;font-weight:900}.card-meta{justify-content:space-between;align-items:center;width:100%;display:flex}.pips{gap:3px;display:flex}.pips i{background:#ffffff2e;border-radius:2px;width:7px;height:7px;transform:skew(-12deg)}.pips i.on{background:var(--cat)}.card-aura{font-family:var(--display);color:#ffe27a;font-size:16px}.card-aura:after{content:" MAX";font-family:var(--ui);color:var(--muted);font-size:8px;font-weight:900}.card-beats{letter-spacing:.14em;color:var(--muted);font-size:9px;font-weight:900}.card-blurb{color:#f0e8ffc7;-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:11px;line-height:1.3;display:-webkit-box;overflow:hidden}.overlay{z-index:25;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.overlay.loading{pointer-events:auto;background:radial-gradient(circle at 50% 40%,#241046,#07040f 70%)}.load-bar{background:#ffffff1a;border-radius:6px;width:min(360px,70vw);height:6px;margin-top:24px;overflow:hidden}.load-bar div{background:linear-gradient(90deg,#ff8a1f,#ff3da6,#8c6bff);height:100%;transition:width .3s}.load-label{letter-spacing:.2em;color:var(--muted);text-transform:uppercase;margin-top:10px;font-size:12px;font-weight:800}.title-logo{font-family:var(--display);letter-spacing:.02em;text-align:center;background:linear-gradient(#fff 20%,#ffd36b 55%,#ff8a1f);color:#0000;filter:drop-shadow(0 0 30px #ff8c28a6)drop-shadow(0 6px #00000073);-webkit-background-clip:text;background-clip:text;font-size:clamp(64px,14vw,180px);font-style:italic;line-height:.9}.title-logo span{background:linear-gradient(#fff 15%,#b9a3ff 55%,#6b4dff);filter:drop-shadow(0 0 24px #7850ffcc);-webkit-background-clip:text;background-clip:text;font-size:.62em;display:block}.title-logo.small{font-size:clamp(48px,10vw,110px)}.title-logo.mid{font-size:clamp(44px,8vw,90px)}.title-card{animation:.9s cubic-bezier(.2,1.3,.3,1) both titleIn}.title-card.countdown{animation:.4s ease-in both titleOut}.title-sub{letter-spacing:.3em;text-shadow:0 2px 10px #000c;margin-top:14px;font-size:clamp(16px,2.6vw,24px);font-weight:900}.countdown{z-index:26;font-family:var(--display);color:#fff;text-shadow:0 0 40px #aa82fff2,0 0 100px #7850ffb3;pointer-events:none;justify-content:center;align-items:flex-end;padding-bottom:5vh;font-size:clamp(96px,18vw,220px);line-height:.9;animation:.75s cubic-bezier(.2,1.5,.3,1) both countIn;display:flex;position:absolute;inset:0}.countdown.go{background:linear-gradient(#fff,#ffd36b,#ff6a1f);color:#0000;text-shadow:none;filter:drop-shadow(0 0 40px #ff9628f2);-webkit-background-clip:text;background-clip:text;font-style:italic;animation:.6s cubic-bezier(.2,1.6,.3,1) both goIn}.overlay.end{pointer-events:auto;background:radial-gradient(circle,#14082859,#07040fd1);animation:.6s ease-out both fadeIn}.end-panel{flex-direction:column;align-items:center;width:min(560px,92vw);padding:24px 28px;display:flex}.end-rows{gap:10px;width:100%;margin-top:18px;display:grid}.end-row{--c:#fff;border:1px solid var(--panel-line);background:#100a22b3;border-radius:14px;justify-content:space-between;align-items:baseline;padding:12px 18px;display:flex}.end-row.win{border-color:var(--c);box-shadow:0 0 30px -6px var(--c)}.end-name{letter-spacing:.24em;color:var(--c);font-weight:900}.end-score{font-family:var(--display);font-size:clamp(26px,5vw,40px)}.winner{letter-spacing:.24em;color:var(--muted);margin-top:18px;font-size:15px;font-weight:900}.winner b{font-family:var(--display);letter-spacing:.06em;color:#ffe27a;text-shadow:0 0 20px #ffbe3ce6;margin-left:8px;font-size:34px}.end-quip{color:var(--muted);margin-top:6px;font-weight:700}.rematch{font-family:var(--display);letter-spacing:.12em;color:#170818;cursor:pointer;background:linear-gradient(90deg,#ff8a1f,#ff3da6,#8c6bff);border:none;border-radius:999px;margin-top:22px;padding:14px 40px;font-size:22px;box-shadow:0 10px 30px -8px #ff5a8ccc}.rematch:hover{filter:brightness(1.1)}@keyframes slideIn{0%{opacity:0;transform:translateY(-14px)}}@keyframes pop{0%{opacity:0;transform:translate(-50%,-50%)scale(.6)}12%{opacity:1;transform:translate(-50%,-50%)scale(1.08)}20%{transform:translate(-50%,-50%)scale(1)}85%{opacity:1}to{opacity:0}}.ai-line{animation-name:aiPop}@keyframes aiPop{0%{opacity:0;transform:scale(.8)translateY(8px)}}@keyframes barIn{0%{opacity:0;transform:translate(-50%)scale(.9)translateY(10px)}}@keyframes flashBar{0%{box-shadow:0 0 60px 10px var(--perfect)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-8px)}50%{transform:translate(7px)}75%{transform:translate(-4px)}}@keyframes blink{50%{opacity:.45}}@keyframes judgeIn{0%{opacity:0;transform:translate(-50%,-50%)scale(2.4)rotate(-6deg)}14%{opacity:1;transform:translate(-50%,-50%)scale(.95)rotate(-4deg)}22%{transform:translate(-50%,-50%)scale(1)rotate(-4deg)}80%{opacity:1;transform:translate(-50%,-62%)scale(1)rotate(-4deg)}to{opacity:0;transform:translate(-50%,-75%)scale(1.05)rotate(-4deg)}}@keyframes missIn{0%{opacity:0;transform:translate(-50%,-80%)rotate(8deg)}15%{opacity:1;transform:translate(-50%,-50%)rotate(8deg)}30%{transform:translate(-50%,-45%)rotate(14deg)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-20%)rotate(18deg)}}@keyframes floatUp{0%{opacity:0;transform:translate(-50%,-20%)}20%{opacity:1}to{opacity:0;transform:translate(-50%,-150%)}}@keyframes auraIn{0%{opacity:0;transform:translate(-50%,-50%)scale(.3)}12%{opacity:1;transform:translate(-50%,-50%)scale(1.12)}20%{transform:translate(-50%,-50%)scale(1)}85%{opacity:1;transform:translate(-50%,-58%)scale(1)}to{opacity:0;transform:translate(-50%,-70%)scale(.96)}}@keyframes captionIn{0%,10%{opacity:0;letter-spacing:.5em}25%{opacity:1;letter-spacing:.12em}85%{opacity:1}to{opacity:0}}@keyframes bannerIn{0%{opacity:0;transform:translate(-50%,-50%)scaleX(2)}20%{opacity:1;transform:translate(-50%,-50%)scaleX(1)}80%{opacity:1}to{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(40px)}}@keyframes titleIn{0%{opacity:0;filter:blur(10px);transform:scale(1.4)}}@keyframes titleOut{to{opacity:0;transform:scale(.85)}}@keyframes countIn{0%{opacity:0;transform:scale(2.2)}30%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0;transform:scale(.8)}}@keyframes goIn{0%{opacity:0;transform:scale(3)rotate(-8deg)}35%{opacity:1;transform:scale(1)rotate(-6deg)}to{opacity:0;transform:scale(1.3)rotate(-6deg)}}@keyframes fadeIn{0%{opacity:0}}@media (max-width:640px){.fighter{padding:8px 10px 10px}.fighter-name{font-size:11px}.vs-text{font-size:20px}.move-banner{top:96px}.move-name{font-size:18px}.ai-line{font-size:13px;top:140px}.callout.side-player,.callout.side-opponent{left:50%}.card{flex-basis:136px;height:180px}}
