:root{--bg:#160d25;--panel:#251838;--line:#554069;--ink:#fff8e8;--muted:#bba9c8;--hero:#ff8f2b;--green:#a2ff4d;--blue:#42d2ff;--orange:#ffb841;--purple:#e573ff;--safe-t:max(16px,env(safe-area-inset-top));--safe-b:max(14px,env(safe-area-inset-bottom))}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI",sans-serif;overscroll-behavior:none}
body{min-height:100dvh;overflow:hidden;touch-action:manipulation}
button{appearance:none;border:1px solid var(--line);border-radius:18px;background:var(--panel);color:var(--ink);font:800 clamp(16px,2.2vh,23px)/1.1 inherit;letter-spacing:.02em;padding:17px 20px;min-height:58px;cursor:pointer}
button:active{transform:scale(.98)}button.primary{border-color:var(--hero);color:var(--hero)}button small{display:block;color:var(--muted);font-size:.63em;margin-top:5px;text-transform:uppercase;letter-spacing:.14em}
.screen{display:none;position:fixed;inset:0;min-height:100dvh;padding:var(--safe-t) 24px var(--safe-b);background:radial-gradient(circle at 75% 6%,#4d214f 0,transparent 30%),radial-gradient(circle at 8% 92%,#39204e 0,transparent 36%),linear-gradient(180deg,#12091e,#1b1029);overflow:auto}
.screen.active{display:flex}.centered{align-items:center;justify-content:center;flex-direction:column;text-align:center;gap:18px}.eyebrow{margin:0;color:var(--hero);font-weight:900;text-transform:uppercase;letter-spacing:.18em}
#menu{flex-direction:column;justify-content:center;gap:16px}.brand{text-align:center}.brand h1{font-size:clamp(42px,7.5vh,82px);line-height:.82;letter-spacing:-.06em;text-transform:uppercase;margin:14px 0 18px}.tagline{color:var(--muted);font-weight:700}
.hero-mark{position:relative;width:90px;height:70px;margin:15px auto 9px;border-radius:48% 48% 42% 42%;background:var(--hero);box-shadow:inset 12px 0 #df651f,inset -12px 0 #ffb13b,0 0 28px #ff8f2b55}.hero-mark::before{content:"";position:absolute;left:39px;top:-13px;width:14px;height:18px;border-radius:4px;background:#75b93b;transform:rotate(8deg)}.hero-mark i{position:absolute;top:22px;width:16px;height:14px;background:var(--bg);clip-path:polygon(50% 0,100% 100%,0 100%)}.hero-mark i:first-child{left:22px}.hero-mark i:nth-child(2){right:22px}.hero-mark b{position:absolute;left:23px;bottom:12px;width:46px;height:18px;border-bottom:8px solid var(--bg);border-radius:0 0 50% 50%;transform:rotate(-2deg)}
.track-picker{width:min(100%,540px);margin:0 auto;text-align:center}.track-picker>p,.menu-actions>p{margin:0 0 8px;color:var(--muted);font-size:12px;font-weight:900;text-align:center;text-transform:uppercase;letter-spacing:.12em}.track-picker #trackMeta{margin:7px 0 0;font-size:11px;letter-spacing:.04em}.track-tabs,.play-grid,.utility-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.track-tabs{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.track-tabs button{min-height:62px;padding:10px 6px;font-size:14px}.track-tabs button.selected{border-color:var(--hero);background:#42243d;color:#ffbc78;box-shadow:inset 0 0 0 1px #ff8f2b55}.menu-actions{display:grid;gap:8px;width:min(100%,540px);margin:0 auto}.play-grid button{min-height:64px;padding:10px 8px;font-size:15px}.dance-button{border-color:var(--blue);color:var(--blue)}.utility-grid button{min-height:46px;padding:10px;font-size:14px}.menu-footer{text-align:center;color:var(--muted);font-size:13px}.menu-footer p{margin:5px}.install{margin-top:8px;min-height:44px;padding:10px 18px;font-size:14px;color:var(--hero)}
#game{padding:var(--safe-t) 10px var(--safe-b);overflow:hidden;flex-direction:column}.hud{height:64px;display:grid;grid-template-columns:1fr auto 54px;align-items:center;gap:10px}.hud strong{display:block;color:var(--hero);font-size:20px;text-transform:uppercase}.hud span,.hud small{display:block}.hud>div>span{color:var(--muted);font-size:12px;text-transform:uppercase}.hud .score{text-align:right}.hud .score span{color:var(--ink);font-size:26px;font-variant-numeric:tabular-nums}.hud .score small{color:var(--muted);font-size:10px;text-transform:uppercase}.hud button{padding:0;min-height:48px;font-size:25px}.stats{height:34px;display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase;padding:0 6px}
#playfield{position:relative;flex:1;min-height:0;border:1px solid #20363d;border-radius:18px 18px 8px 8px;overflow:hidden;background:#0c1820}#canvas{position:relative;z-index:2;width:100%;height:100%;display:block}#cameraVideo{display:none;position:absolute;z-index:0;inset:0;width:100%;height:100%;object-fit:cover;transform:scaleX(-1);filter:saturate(.75) contrast(1.08)}#cameraGuide{display:none;position:absolute;z-index:1;inset:0;grid-template-columns:repeat(4,1fr);pointer-events:none}#cameraGuide i{position:relative;border-right:1px solid #e8f6f255;transition:background .08s}#cameraGuide i:last-child{border:0}#cameraGuide b{position:absolute;left:50%;bottom:10%;transform:translateX(-50%);font:950 32px/1 inherit;text-shadow:0 2px 8px #000}#cameraGuide small{position:absolute;left:50%;bottom:4%;transform:translateX(-50%);font:900 9px/1 inherit;text-transform:uppercase;letter-spacing:.12em}#cameraGuide i:nth-child(1){color:var(--green);background:#a2ff4d0d}#cameraGuide i:nth-child(2){color:var(--blue);background:#42d2ff0d}#cameraGuide i:nth-child(3){color:var(--orange);background:#ffb8410d}#cameraGuide i:nth-child(4){color:var(--purple);background:#e573ff0d}#cameraGuide i.motion-active{background:#ffffff38;box-shadow:inset 0 0 34px currentColor}#game.dance #cameraVideo{display:block}#game.dance #cameraGuide{display:grid}#countdown,#feedback{z-index:3;position:absolute;left:0;right:0;text-align:center;pointer-events:none;font-weight:950;text-shadow:0 3px 12px #000}#countdown{top:38%;font-size:100px}#feedback{top:12%;font-size:24px;color:var(--ink);opacity:0;transition:opacity .18s,color .1s;text-shadow:0 0 18px currentColor,0 3px 12px #000}#feedback[data-lane="0"]{color:var(--green)}#feedback[data-lane="1"]{color:var(--blue)}#feedback[data-lane="2"]{color:var(--orange)}#feedback[data-lane="3"]{color:var(--purple)}#feedback.show{opacity:1}
.pads{height:clamp(116px,20dvh,180px);display:grid;gap:6px;padding-top:7px;touch-action:none;user-select:none;-webkit-user-select:none}.pads.four{grid-template-columns:repeat(4,1fr)}.pads.one{grid-template-columns:1fr}.pads button{padding:3px;border-radius:12px;touch-action:none;font-size:36px;min-width:0}.pads button:nth-child(1){border-color:var(--green);color:var(--green)}.pads button:nth-child(2){border-color:var(--blue);color:var(--blue)}.pads button:nth-child(3){border-color:var(--orange);color:var(--orange)}.pads button:nth-child(4){border-color:var(--purple);color:var(--purple)}.pads button.held{color:var(--bg);box-shadow:0 0 22px currentColor}.pads button:nth-child(1).held{background:var(--green)}.pads button:nth-child(2).held{background:var(--blue)}.pads button:nth-child(3).held{background:var(--orange)}.pads button:nth-child(4).held{background:var(--purple)}.pads button small{font-size:8px}#game.dance .pads{height:clamp(62px,11dvh,92px)}#game.dance .pads button{font-size:23px}#game.dance .pads button small{display:none}.progress{height:4px;background:#2a1a3a;margin-top:5px;border-radius:4px;overflow:hidden}.progress i{display:block;height:100%;width:0;background:var(--hero)}
.centered h2,dialog h2{font-size:clamp(36px,6vh,62px);margin:0}.centered>p{color:var(--muted);max-width:540px;line-height:1.5}.centered>button{width:min(100%,520px)}.big-score{font-size:clamp(64px,12vh,120px);color:var(--ink);font-variant-numeric:tabular-nums}.stepper{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:min(100%,520px)}.stepper button{font-size:34px}.centered ol{text-align:left;max-width:560px;line-height:1.55;padding-left:28px}.centered li+li{margin-top:10px}
dialog{width:min(calc(100% - 36px),520px);border:1px solid var(--hero);border-radius:24px;background:#1b1029;color:var(--ink);padding:28px;box-shadow:0 30px 90px #000;text-align:center}dialog::backdrop{background:#030208e8;backdrop-filter:blur(4px)}dialog button{display:block;width:100%;margin-top:10px}dialog ol{text-align:left;line-height:1.5;padding-left:24px}dialog li+li{margin-top:8px}.hint{color:var(--muted);font-size:13px}.closeDialog{position:absolute;right:12px;top:4px;width:44px;min-height:44px;padding:0;border:0;background:transparent;font-size:32px}.camera-preview{position:relative;aspect-ratio:16/9;margin:18px 0 12px;overflow:hidden;border:1px solid var(--line);border-radius:16px;background:#050a0e}.camera-preview video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.preview-zones{position:absolute;inset:0;display:grid;grid-template-columns:repeat(4,1fr);pointer-events:none}.preview-zones i{border-right:1px solid #fff7;transition:background .08s,box-shadow .08s}.preview-zones i:nth-child(1){background:#a2ff4d16;color:var(--green)}.preview-zones i:nth-child(2){background:#42d2ff16;color:var(--blue)}.preview-zones i:nth-child(3){background:#ffb84116;color:var(--orange)}.preview-zones i:nth-child(4){background:#e573ff16;color:var(--purple);border:0}.preview-zones i.motion-active{background:#ffffff42;box-shadow:inset 0 0 30px currentColor}.sensitivity{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:14px;margin:16px 0;color:var(--ink);font-weight:800;text-align:left}.sensitivity input{width:100%;accent-color:var(--hero)}.motion-canvas{display:none!important}
#rotateNotice{display:none;position:fixed;inset:0;z-index:20;background:#091019;color:var(--ink);align-items:center;justify-content:center;text-align:center;padding:30px;font-size:24px;font-weight:800}#toast{position:fixed;z-index:30;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));transform:translate(-50%,30px);opacity:0;background:#dfffd2;color:#0c2111;padding:12px 18px;border-radius:999px;font-weight:800;transition:.25s;pointer-events:none;white-space:nowrap}#toast.show{opacity:1;transform:translate(-50%,0)}
@media (orientation:landscape) and (max-height:540px){body:not(.dance-mode) #rotateNotice{display:flex}#game.dance .hud{height:50px}#game.dance .stats{height:26px}#game.dance .pads{height:54px}}
@media (min-width:700px){#menu{display:none}.screen.active#menu{display:grid;grid-template-columns:1fr 1fr;align-items:center;padding-left:max(8vw,24px);padding-right:max(8vw,24px)}.brand{text-align:left;grid-row:1/3}.hero-mark{margin-left:0}.track-picker,.menu-actions{width:100%}.menu-footer{grid-column:1/-1}}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Skeleton Follow: one-lane, camera-scored choreography */
.skeleton-button{grid-column:1/-1;border-color:var(--green);color:var(--green);background:linear-gradient(90deg,#173024,#251838,#173024)}
#skeletonStage{display:none;position:absolute;z-index:2;inset:0;grid-template-rows:auto 1fr auto auto;pointer-events:none;background:linear-gradient(90deg,#06120ecc,transparent 28%,transparent 72%,#06120ecc),radial-gradient(circle at center,#a2ff4d12,transparent 55%);border-left:3px solid var(--green);border-right:3px solid var(--green);box-shadow:inset 0 0 45px #a2ff4d22}
.cue-panel{align-self:start;justify-self:center;margin-top:12px;min-width:min(86%,420px);padding:8px 18px;border:1px solid #a2ff4d77;border-radius:999px;background:#07120de6;text-align:center;box-shadow:0 0 24px #a2ff4d22}.cue-panel small{display:block;color:var(--muted);font-size:9px;font-weight:900;letter-spacing:.16em;text-transform:uppercase}.cue-panel strong{display:block;color:var(--green);font-size:clamp(20px,4vh,34px);line-height:1.05;text-transform:uppercase}
.follow-lane{min-height:0;display:flex;align-items:center;justify-content:center}.skeleton-coach{height:min(100%,390px);width:auto;max-width:55%;overflow:visible;filter:drop-shadow(0 0 12px #a2ff4daa)}.skeleton-coach .bone,.skeleton-coach .mouth,.skeleton-coach .foot{fill:none;stroke:#f4ffe9;stroke-width:11;stroke-linecap:round;stroke-linejoin:round}.skeleton-coach .skull{fill:#eaffda;stroke:var(--green);stroke-width:4}.skeleton-coach .eye{fill:#101b16}.skeleton-coach .mouth{stroke:#101b16;stroke-width:3}.skeleton-coach .joint,.skeleton-coach .hand{fill:#eaffda;stroke:var(--green);stroke-width:3}.skeleton-coach .coach-rig,.skeleton-coach .limb{transform-box:view-box;transition:transform .3s cubic-bezier(.2,.8,.2,1)}.skeleton-coach .left-arm{transform-origin:92px 94px}.skeleton-coach .right-arm{transform-origin:128px 94px}.skeleton-coach .left-leg{transform-origin:100px 166px}.skeleton-coach .right-leg{transform-origin:120px 166px}
.pose-reach-left .left-arm{transform:rotate(65deg)}.pose-reach-left .coach-rig{transform:translateX(-9px) rotate(-4deg)}.pose-reach-right .right-arm{transform:rotate(-65deg)}.pose-reach-right .coach-rig{transform:translateX(9px) rotate(4deg)}.pose-hands-up .left-arm{transform:rotate(130deg)}.pose-hands-up .right-arm{transform:rotate(-130deg)}.pose-clap .left-arm{transform:rotate(-55deg)}.pose-clap .right-arm{transform:rotate(55deg)}.pose-low .coach-rig{transform:translateY(24px) scaleY(.83)}.pose-low .left-arm{transform:rotate(-25deg)}.pose-low .right-arm{transform:rotate(25deg)}.pose-step-left .coach-rig,.pose-sway-left .coach-rig{transform:translateX(-24px) rotate(-7deg)}.pose-step-left .left-leg{transform:rotate(18deg)}.pose-step-left .right-leg{transform:rotate(-10deg)}.pose-step-right .coach-rig,.pose-sway-right .coach-rig{transform:translateX(24px) rotate(7deg)}.pose-step-right .left-leg{transform:rotate(10deg)}.pose-step-right .right-leg{transform:rotate(-18deg)}.pose-shake .coach-rig{animation:bone-shake .22s linear infinite alternate}.pose-jump .coach-rig{animation:bone-jump .48s ease-in-out infinite alternate}.pose-freeze .coach-rig{transform:rotate(-2deg)}
.move-readout{display:flex;justify-content:space-between;gap:10px;padding:6px 14px;color:var(--ink);font-size:11px;font-weight:900;text-transform:uppercase;text-shadow:0 2px 7px #000}.move-readout b{color:var(--green)}.match-meter{height:8px;margin:0 12px 12px;border:1px solid #a2ff4d66;border-radius:8px;background:#07120ddd;overflow:hidden}.match-meter i{display:block;height:100%;width:0;background:linear-gradient(90deg,#3b9c40,var(--green),#fff);box-shadow:0 0 18px var(--green);transition:width .08s linear}
#game.skeleton-follow #canvas,#game.skeleton-follow #cameraGuide{display:none}#game.skeleton-follow #skeletonStage{display:grid}#game.skeleton-follow .pads{display:none}#game.skeleton-follow #feedback{top:22%}
#bodyFrame{display:none;position:absolute;left:34%;top:7%;width:32%;height:86%;border:3px dashed var(--green);border-radius:46% 46% 26% 26%;box-shadow:0 0 24px #a2ff4d66,inset 0 0 30px #a2ff4d1f;transition:.15s}#bodyFrame span{position:absolute;left:50%;bottom:5%;transform:translateX(-50%);width:180px;color:#fff;font-size:11px;font-weight:900;text-shadow:0 2px 6px #000;text-transform:uppercase}#bodyFrame.ready{border-style:solid;background:#a2ff4d16}.skeleton-setup{border-color:var(--green)}.skeleton-setup .preview-zones{display:none}.skeleton-setup #bodyFrame{display:block}
@keyframes bone-shake{from{transform:translateX(-9px) rotate(-4deg)}to{transform:translateX(9px) rotate(4deg)}}@keyframes bone-jump{from{transform:translateY(12px) scaleY(.96)}to{transform:translateY(-20px) scaleY(1.03)}}
@media (orientation:landscape) and (max-height:540px){#game.skeleton-follow .cue-panel{margin-top:5px;padding:5px 14px}#game.skeleton-follow .skeleton-coach{height:min(100%,245px)}#game.skeleton-follow .match-meter{margin-bottom:5px}}
@media (prefers-reduced-motion:reduce){.pose-shake .coach-rig,.pose-jump .coach-rig{animation:none!important}}

/* Pumpkin Slash AR: camera hand tracking with combo weapon filters */
.slash-button{grid-column:1/-1;border-color:var(--orange);color:var(--orange);background:linear-gradient(90deg,#3a1f16,#251838,#3a1f16)}
#slashStage{display:none;position:absolute;z-index:3;inset:0;pointer-events:none}.weapon-banner{position:absolute;left:10px;top:10px;max-width:55%;padding:8px 12px;border:1px solid #ffb84199;border-radius:12px;background:#150c20df;box-shadow:0 0 22px #ff8f2b2e}.weapon-banner small,.weapon-banner span{display:block;color:var(--muted);font-size:8px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.weapon-banner strong{display:block;color:var(--orange);font-size:clamp(13px,2.2vh,19px);line-height:1.08;text-transform:uppercase}.weapon-progress{position:absolute;left:10px;top:78px;width:min(52%,260px);height:7px;border:1px solid #ffb84177;border-radius:8px;background:#120b18cc;overflow:hidden}.weapon-progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--orange),#ff5a24);box-shadow:0 0 14px #ff8f2b;transition:width .15s}#nextWeapon{position:absolute;left:12px;top:83px;margin:4px 0;color:#ffe0a3;font-size:9px;font-weight:900;text-transform:uppercase}.slash-callout{position:absolute;left:50%;bottom:4%;transform:translateX(-50%);margin:0;padding:8px 14px;border-radius:999px;background:#120b18cc;color:#fff;font-size:11px;font-weight:950;text-transform:uppercase;white-space:nowrap;text-shadow:0 2px 6px #000}
#game.pumpkin-slash #slashStage{display:block}#game.pumpkin-slash #cameraGuide{display:none}#game.pumpkin-slash #playfield{touch-action:none;cursor:crosshair;border-color:#ffb84177;box-shadow:inset 0 0 40px #ff8f2b12}#game.pumpkin-slash .pads{display:none}#game.pumpkin-slash #feedback{top:20%;padding:0 10px;color:var(--orange);font-size:clamp(16px,4vw,24px)}
.hand-status{position:absolute;right:10px;top:10px;max-width:42%;margin:0;padding:8px 10px;border:1px solid #ffb84166;border-radius:999px;background:#120b18cc;color:#ffe0a3;font-size:9px;font-weight:950;text-align:center;text-transform:uppercase}.slash-setup{border-color:var(--orange)}.slash-setup .preview-zones,.slash-setup #bodyFrame,.slash-setup .sensitivity{display:none}#handFrame{display:none;position:absolute;inset:0;align-items:center;justify-content:center;flex-direction:column;gap:2px;background:radial-gradient(circle at center,#ff8f2b14,transparent 58%);pointer-events:none}#handFrame svg{height:72%;width:auto;overflow:visible;fill:#ff8f2b10;stroke:var(--orange);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 8px #ff8f2b99);transition:.15s}#handFrame svg circle{fill:#fff0;stroke-dasharray:4 5}#handFrame span{position:absolute;bottom:8px;padding:5px 9px;border-radius:999px;background:#120b18cc;color:#fff;font-size:9px;font-weight:950;text-transform:uppercase}#handFrame.ready svg{stroke:var(--green);fill:#a2ff4d16;filter:drop-shadow(0 0 10px #a2ff4dcc)}#handFrame.ready span{color:var(--green)}.slash-setup #handFrame{display:flex}.slash-setup #beginDanceButton:disabled{opacity:.55;cursor:wait}
@media (orientation:landscape) and (max-height:540px){#game.pumpkin-slash .weapon-banner{top:5px;padding:5px 9px}#game.pumpkin-slash .weapon-progress{top:58px}#game.pumpkin-slash #nextWeapon{top:63px}}
