*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#170e35;color:#fff;font-family:ui-rounded,'Trebuchet MS',system-ui,sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;border:0}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #a1f8ff;outline-offset:6px}button:active{translate:0 3px}#app{width:100%;height:100%;height:100dvh;position:relative;isolation:isolate}canvas{width:100%;height:100%;display:block;touch-action:none}.hidden{display:none!important}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
/* The only persistent game chrome is the score, floor counter and controls. */
.hud{position:absolute;top:max(16px,env(safe-area-inset-top));left:50%;translate:-50% 0;width:min(620px,calc(100% - 28px));display:flex;align-items:center;gap:12px;z-index:2}.icon{width:44px;height:44px;border-radius:50%;background:linear-gradient(#674a9c,#3c2469);border:2px solid #c8a6f777;box-shadow:0 3px 0 #16092e,0 5px 12px #08031455;display:grid;place-items:center;font-size:22px;flex-shrink:0}.score{display:flex;flex-direction:column;flex:1;text-shadow:0 3px #2c1256}.score small{font-size:10px;letter-spacing:2px;color:#d7c5f1}.score strong{font-size:32px;line-height:1;font-weight:1000}.floor{display:flex;align-items:baseline;gap:3px}.floor strong{font-size:29px;color:#ffe799}.floor span{font-size:12px;color:#cbb8e0}.chapter{position:absolute;top:max(83px,calc(env(safe-area-inset-top) + 70px));width:100%;text-align:center;color:#d9c8f5;font-size:10px;letter-spacing:2px;pointer-events:none}.play-bottom{position:absolute;bottom:max(18px,env(safe-area-inset-bottom));left:50%;translate:-50% 0;width:min(460px,calc(100% - 32px));z-index:2}.progress-label{display:flex;justify-content:space-between;font-size:10px;color:#eee2ff;margin-bottom:9px}.track{height:7px;border-radius:8px;background:#10092780;box-shadow:0 0 0 1px #cbb2ff44;overflow:hidden}#progress{height:100%;width:0;border-radius:8px;background:linear-gradient(90deg,#54d7ef,#e4ffac);transition:width .2s}.touch-controls{display:flex;justify-content:space-between;align-items:center;margin-top:17px}.touch-controls button{height:59px;width:67px;border-radius:23px;background:linear-gradient(#67459b,#36205c);border:2px solid #d1afff55;box-shadow:0 4px 0 #1a0f38;touch-action:none;font-size:35px;user-select:none}.touch-controls button.held{background:#9663db;translate:0 3px}.touch-controls>span{text-align:center;letter-spacing:1px;font-size:9px;color:#dac4ed}.touch-controls small{display:block;margin-top:5px;color:#ff9eb4;letter-spacing:0}#combo{position:absolute;top:28%;left:0;width:100%;text-align:center;font-size:29px;font-weight:1000;color:#ffdf82;text-shadow:0 3px #7b319f,0 0 20px #2c124f;pointer-events:none;opacity:0}#combo.show{opacity:1;animation:pop .25s ease-out}
/* Full-screen arcade scenes; no cards or website navigation panels. */
.overlay{position:absolute;inset:0;z-index:4;display:grid;place-items:center;padding:max(18px,env(safe-area-inset-top)) 20px max(18px,env(safe-area-inset-bottom));background:radial-gradient(ellipse at 50% 30%,#6a2e8fd9,transparent 70%),linear-gradient(#211345f5,#180c35fa);overflow:auto;overscroll-behavior:contain;isolation:isolate}.overlay:before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(circle at 15% 23%,#ffe193 0 1px,transparent 2px),radial-gradient(circle at 85% 17%,#88efff 0 2px,transparent 3px),radial-gradient(circle at 22% 65%,#ab7df3 0 2px,transparent 3px),radial-gradient(circle at 90% 72%,#ffe193 0 1px,transparent 2px),radial-gradient(ellipse at 50% 60%,#8c49da25,transparent 60%)}
.game-art{display:block;background-image:url('assets/logo-v2.webp');background-repeat:no-repeat;background-size:contain;aspect-ratio:1;pointer-events:none;filter:drop-shadow(0 12px 22px #08041866)}.logo{background-position:0 0;width:clamp(200px,35dvh,330px);margin:auto}.reward-tower{background-image:url('assets/win-v2.webp');background-position:center}.reward-fall{background-image:url('assets/retry-v2.webp')}.game-emblem{background-image:url('assets/emblem-v2.webp')}
.launch{width:min(800px,100%);text-align:center;position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;padding-top:38px}.launch-top{position:absolute;top:0;width:100%;display:flex;justify-content:space-between;align-items:center;padding:0 6px}.brand{font-size:12px;font-weight:900;letter-spacing:.1px;color:#d5bee9}.brand span{color:#f68bd9}.best-badge{display:flex;align-items:center;gap:6px;text-align:left}.best-badge>span{font-size:24px;color:#ffd478;text-shadow:0 2px #93582b}.best-badge small{display:block;font-size:8px;color:#d9bedc;letter-spacing:1.6px}.best-badge strong{font-size:17px;color:#ffe2a1}.launch-art{width:100%;position:relative}.arcade-kicker{font-size:10px;font-weight:900;letter-spacing:4px;color:#ddc9ed;margin:0 0 14px}.launch-controls{width:min(360px,100%);display:flex;flex-direction:column;align-items:center}.difficulty{display:flex;justify-content:center;padding:5px;background:#10072799;border-radius:30px;box-shadow:inset 0 2px 4px #05020c88;gap:3px}.difficulty button{min-width:84px;padding:10px 12px;font-size:11px;font-weight:1000;letter-spacing:1px;border-radius:22px;background:transparent;color:#baa1d1}.difficulty button[aria-pressed=true]{background:linear-gradient(#d8b0ff,#a86aee);color:#341151;box-shadow:0 2px 0 #6b379c,inset 0 1px 0 #fff9}.difficulty-hint{font-size:10px;color:#bfa7d5;margin:13px 0 18px;min-height:13px}.play-orb{width:124px;height:124px;flex-shrink:0;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;background:radial-gradient(ellipse at 35% 15%,#e4ffb1,transparent 60%),linear-gradient(#9def70,#48bd56);border:4px solid #ccff9e;box-shadow:0 7px 0 #257749,0 10px 0 #0e203b,0 0 0 12px #8f6bc01c,0 0 70px #88dd7438,inset 0 2px 6px #fff9;color:#17402d;animation:orb-glow 3s ease-in-out infinite}.play-orb>span:last-child{font-size:12px;font-weight:1000;letter-spacing:1.4px}.play-triangle{width:0;height:0;border-top:18px solid transparent;border-bottom:18px solid transparent;border-left:28px solid #244a37;filter:drop-shadow(0 2px 0 #ffffff88);margin-left:7px}.continue-button{margin-top:24px;padding:12px 23px;border-radius:23px;border:2px solid #ffe5a1;background:linear-gradient(#ffe79c,#edb556);color:#573425;box-shadow:0 4px 0 #8b512f;font-size:12px;font-weight:900}.mode-record{font-size:10px;letter-spacing:.3px;color:#e0ba82;margin:23px 0 0}.gesture-hint{font-size:10px;color:#c1aad6;margin:17px 0 0;display:flex;align-items:center;gap:6px}.gesture-hint>span{font-size:26px;color:#ab87d1}.gesture-hint small{font-size:9px;opacity:.7;margin-left:4px}
.pause-content{width:min(600px,100%);display:flex;flex-direction:column;align-items:center;gap:28px;text-align:center}.portrait-ring{padding:7px;display:inline-flex;border:2px solid #cda4ff;border-radius:50%;box-shadow:0 0 0 9px #c395ff16,0 0 65px #bf68ff30;background:linear-gradient(#8551b0,#38245b)}.avatar{width:125px;height:125px;border-radius:50%;object-fit:cover}.eyebrow{font-size:10px;font-weight:1000;letter-spacing:2.7px;color:#ffda83;margin:18px 0 8px}h2{font-size:clamp(25px,4vw,37px);margin:5px 0 9px;letter-spacing:-1px;font-weight:1000;line-height:1.1;text-shadow:0 3px #3c1b61}.pause-art>p:last-child,.result-art>p:last-child{font-size:12px;color:#cdb5df;margin:10px auto 0;line-height:1.4}.pause-actions{display:flex;flex-direction:column;align-items:center;gap:26px}.utility-row{display:flex;align-items:center;justify-content:center;gap:34px}.round-action{display:flex;flex-direction:column;align-items:center;gap:7px;background:transparent;padding:0;min-width:56px;cursor:pointer}.ui-icon{display:inline-block;flex-shrink:0;width:28px;height:28px;vertical-align:middle;pointer-events:none;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.round-action .ui-icon{box-sizing:content-box;padding:10px;border:2px solid #cbb1e14a;border-radius:50%;filter:drop-shadow(0 3px 2px #0008)}.round-action small{font-size:10px;color:#ceb4e0;font-weight:700;letter-spacing:.5px}.round-action{color:#dfc0ff}.arcade-button .ui-icon{color:#76502b}.icon .ui-icon{width:23px;height:23px}
.result{width:min(820px,100%);text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}.result-art .game-art{width:clamp(150px,25dvh,230px);margin:auto;animation:reward-bob 3s ease-in-out infinite}.result-art{width:100%}.result-art h2{font-size:clamp(25px,4vw,38px)}.result-art>.eyebrow{margin:7px 0 9px}.result-play{display:flex;flex-direction:column;align-items:center;width:min(360px,100%)}.hero-score{display:flex;flex-direction:column;align-items:center;margin:10px 0 11px}.hero-score small{font-size:9px;letter-spacing:3px;font-weight:900;color:#cbb0de}.hero-score>strong{font-size:clamp(55px,9dvh,82px);line-height:1.1;font-weight:1000;letter-spacing:-3px;color:#ffe49c;text-shadow:0 4px #9b4c46,0 8px 25px #dca55925;font-variant-numeric:tabular-nums}.run-stats{display:flex;align-items:center;justify-content:center;gap:26px;width:100%}.run-stats>div{display:flex;flex-direction:column;gap:5px;min-width:94px}.run-stats strong{font-size:24px;font-weight:1000;color:#e9d8ff;white-space:nowrap}.combo-stat strong{color:#83e0dc}.combo-stat strong>span:first-child{font-size:18px;margin-right:3px;opacity:.7}.run-stats small{font-size:8px;letter-spacing:1.3px;color:#b69acb}.stat-divider{height:30px;width:1px;background:linear-gradient(transparent,#b293ce77,transparent)}.result-record{font-size:10px;color:#e3bb77;margin:16px 0 18px}.arcade-button{display:flex;align-items:center;justify-content:center;gap:10px;width:270px;max-width:100%;min-height:55px;border:3px solid #fff0b8;border-radius:30px;color:#5b3023;background:linear-gradient(#ffe6a0,#f0b955);box-shadow:0 5px 0 #a26439,0 8px 0 #241133;font-weight:1000;font-size:15px;letter-spacing:1px}.arcade-button .ui-icon{width:30px;height:30px}.result-play>.utility-row{margin-top:24px}body[data-mode=menu] .hud,body[data-mode=menu] .play-bottom,body[data-mode=menu] .chapter,body[data-mode=over] .hud,body[data-mode=over] .play-bottom,body[data-mode=over] .chapter{visibility:hidden}body[data-mode=paused] .hud,body[data-mode=paused] .play-bottom,body[data-mode=paused] .chapter{visibility:hidden}body[data-outcome=win] #over{background:radial-gradient(ellipse at 50% 20%,#795539e0,transparent 65%),linear-gradient(#261443f5,#180c35fa)}
@keyframes pop{from{transform:scale(.6)}to{transform:scale(1)}}@keyframes orb-glow{50%{box-shadow:0 7px 0 #257749,0 10px 0 #0e203b,0 0 0 15px #8f6bc015,0 0 80px #88dd7450,inset 0 2px 6px #fff9}}@keyframes reward-bob{50%{transform:translateY(-5px) rotate(2deg)}}
@media(max-height:740px){.launch{padding-top:34px;gap:4px}.logo{width:clamp(175px,32dvh,250px)}.arcade-kicker{margin-bottom:10px;font-size:9px;letter-spacing:3px}.difficulty-hint{margin:11px 0 16px}.play-orb{width:108px;height:108px;gap:7px}.play-triangle{border-top-width:15px;border-bottom-width:15px;border-left-width:25px}.mode-record{margin-top:20px}.gesture-hint{margin-top:11px}.continue-button{margin-top:20px;padding:10px 21px}.result-art .game-art{width:155px}.result{gap:4px}.hero-score{margin:5px 0 10px}.hero-score>strong{font-size:58px}.result-record{margin:13px 0 15px}.result-play>.utility-row{margin-top:20px}.result-art>p:last-child{font-size:11px}.result-art h2{font-size:26px}.pause-content{gap:23px}.avatar{width:110px;height:110px}}
@media(max-height:600px) and (orientation:portrait){.overlay{padding:16px}.logo{width:165px}.arcade-kicker{margin-bottom:8px}.launch{padding-top:30px}.difficulty button{padding:9px 11px}.difficulty-hint{margin:9px 0 14px}.play-orb{width:96px;height:96px}.continue-button{margin-top:19px;padding:9px 20px}.mode-record{margin-top:17px}.gesture-hint{margin-top:8px}.result-art .game-art{width:128px}.result-art>.eyebrow{font-size:9px;margin:5px 0 8px}.result-art h2{font-size:24px}.result-art>p:last-child{margin-top:7px}.hero-score>strong{font-size:53px}.hero-score{margin:7px 0 9px}.run-stats strong{font-size:21px}.run-stats{gap:20px}.result-record{margin:11px 0 13px}.arcade-button{min-height:49px;font-size:13px}.result-play>.utility-row{margin-top:19px}.round-action .ui-icon{width:23px;height:23px;padding:8px}.round-action small{font-size:9px}.utility-row{gap:31px}}
@media(max-height:560px) and (orientation:landscape){.overlay{padding:16px 30px}.launch{height:100%;display:grid;grid-template-columns:1fr 1fr;align-content:center;gap:25px;max-width:820px;padding-top:20px}.launch-top{top:0}.launch-art{grid-column:1}.logo{width:min(240px,67dvh)}.arcade-kicker{font-size:9px;margin-top:-6px;margin-bottom:0}.launch-controls{grid-column:2;width:100%}.difficulty button{min-width:75px;padding:8px 11px}.difficulty-hint{margin:9px 0 14px}.play-orb{width:96px;height:96px;gap:7px}.play-triangle{border-top-width:14px;border-bottom-width:14px;border-left-width:23px}.play-orb>span:last-child{font-size:10px}.continue-button{margin-top:17px;padding:8px 18px;font-size:11px}.mode-record{margin-top:15px;font-size:9px}.gesture-hint{margin-top:5px;font-size:9px}.gesture-hint>span{font-size:22px}.best-badge>span{font-size:18px}.best-badge strong{font-size:14px}.best-badge small{font-size:7px}.brand{font-size:10px}.result{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:center;max-width:780px}.result-art .game-art{width:min(165px,43dvh)}.result-art h2{font-size:26px}.result-art>.eyebrow{font-size:9px}.result-art>p:last-child{font-size:11px}.hero-score{margin:0 0 9px}.hero-score>strong{font-size:52px}.run-stats{gap:19px}.run-stats strong{font-size:22px}.result-record{margin:11px 0 13px}.arcade-button{min-height:48px;font-size:13px}.result-play>.utility-row{margin-top:18px}.round-action .ui-icon{width:23px;height:23px;padding:7px}.round-action small{font-size:9px}.pause-content{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:45px;max-width:680px}.pause-art .avatar{width:108px;height:108px}.pause-art h2{font-size:29px}.pause-art>p:last-child{font-size:11px}.pause-actions{gap:28px}.play-bottom{width:calc(100% - 44px);max-width:900px;bottom:12px}.touch-controls{margin-top:8px}.touch-controls button{width:58px;height:43px;font-size:28px;border-radius:17px}.touch-controls>span,.progress-label{display:none}.track{width:45%;margin:auto}.hud{top:12px}.chapter{top:70px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

.ready-prompt{position:absolute;z-index:2;top:52%;left:50%;translate:-50% 0;display:none;align-items:center;flex-direction:column;gap:6px;pointer-events:none;white-space:nowrap;text-shadow:0 2px 8px #120927;background:radial-gradient(ellipse,#1f1045d9,transparent 72%);padding:12px 20px}.ready-prompt>span{font-size:38px;color:#a4f6ec;line-height:1}.ready-prompt strong{font-size:13px;letter-spacing:1.5px;color:#fff1b4}.ready-prompt small{font-size:9px;color:#e4d0fa}body[data-mode=playing][data-awaiting=true] .ready-prompt{display:flex}@media(max-height:560px) and (orientation:landscape){.ready-prompt{top:48%;padding:6px 15px;gap:3px}.ready-prompt>span{font-size:28px}.ready-prompt strong{font-size:11px}}
