@import url('https://fonts.googleapis.com/css2?family=Metal+Mania&family=Barlow+Condensed:wght@700;800;900&family=DM+Sans:wght@400;500;600;700;800&display=swap');
:root{color-scheme:dark;--ink:#101f32;--lime:#d7ff77;--muted:#8ba0b4}*{box-sizing:border-box}body{margin:0;background:#0d1828;color:#eef5fc;font-family:'DM Sans',Arial,sans-serif}.app{max-width:1560px;margin:auto;padding:0 42px}header{height:96px;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{font-family:'Barlow Condensed',Impact,sans-serif;font-size:29px;font-weight:900;text-decoration:none;color:white;letter-spacing:.2px;display:flex;align-items:center;gap:9px}.brand-icon{display:inline-flex;align-items:center;justify-content:center;width:33px;height:36px;transform:rotate(-7deg);border-radius:8px;background:var(--lime);color:var(--ink);font:900 36px Arial}.acid{color:var(--lime);margin-left:-8px}.chapter{font-size:12px;letter-spacing:1.8px;font-weight:700;color:#bacada;display:flex;align-items:center;gap:10px}.live-dot,.environment span{width:6px;height:6px;border-radius:50%;background:var(--lime);display:inline-block}.tools{display:flex;gap:8px}button{font:inherit;cursor:pointer;border:0;color:inherit;touch-action:manipulation}.tools button{border:1px solid #304055;background:transparent;border-radius:8px;height:35px;min-width:36px;padding:0 10px;font-weight:bold}.tools button span{font-size:10px;margin-left:4px;color:#acbccb}button:hover{filter:brightness(1.13)}button:focus-visible,a:focus-visible{outline:3px solid var(--lime);outline-offset:4px}main{border:1px solid #304156;border-radius:15px;overflow:hidden;box-shadow:0 25px 80px #0003}.hud{height:96px;background:#15263a;display:flex;align-items:center;gap:0}.health-block{width:30%;padding:0 30px;border-right:1px solid #334153}.health-label{display:flex;justify-content:space-between;align-items:center;font-size:11px;font-weight:800;letter-spacing:1px}.health-label i{width:7px;height:7px;display:inline-block;background:var(--lime);border-radius:50%;margin-right:7px}.health-label strong{font-size:25px;letter-spacing:-1px}.health-label strong span{font-size:14px;margin-left:3px;color:var(--muted)}.health-track{height:8px;background:#071626;border-radius:3px;margin-top:10px;overflow:hidden}#healthBar{height:100%;width:100%;background:var(--lime);transition:width .2s;border-radius:3px}.stat{display:flex;gap:12px;align-items:center;justify-content:center;flex:1}.stat small{font-size:10px;letter-spacing:1px;color:#8fa4b9;font-weight:700;display:block;margin-bottom:5px}.stat strong{font-size:23px;font-weight:700}.stat strong span{font-size:13px;color:#8fa4b9}.stat-icon{font-size:30px;color:#b7a3ff}.cloud-icon{color:#a3e2fb;font-size:32px}.yellow{color:var(--lime);font-size:40px}.level-icon{border:1px solid #b1d368;color:var(--lime);width:35px;height:40px;display:grid;place-items:center;border-radius:10px;font-size:15px;font-weight:bold}.level strong{font-size:14px}.stage{position:relative;height:min(64vh,650px);min-height:425px;background:#9ee6ed;overflow:hidden}canvas{display:block;width:100%;height:100%;outline:none;touch-action:none}.stage-top{position:absolute;top:22px;left:24px;right:24px;display:flex;align-items:center;gap:22px;pointer-events:none}.environment{background:#14374dda;border:1px solid #ffffff35;border-radius:5px;padding:9px 11px;color:#edfcff;font-size:10px;font-weight:700;letter-spacing:1px;white-space:nowrap}.environment span{margin-right:5px}.environment b{font-weight:500;color:#a8cbd2;margin-left:8px}.progress{height:4px;background:#17476030;flex:1;max-width:180px;border-radius:9px;overflow:hidden}.progress div{height:100%;width:0;background:#1b6b7a}#timer{margin-left:auto;font-size:12px;color:#1c4e60;font-weight:700;font-variant-numeric:tabular-nums}.overlay{position:absolute;inset:0;z-index:5}.start{padding:70px 7% 28px;background:linear-gradient(90deg,#c8f1ee 1%,#bdeeeade 28%,#b6e8e534 65%,transparent);color:#143644}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:800;margin-bottom:12px}.start h1{font:900 clamp(76px,8.8vw,133px)/.78 'Barlow Condensed',Impact,sans-serif;letter-spacing:-3px;margin:0 0 20px;transform:rotate(-3deg);transform-origin:left}.start h1 span{color:#168f99}.tagline{font-size:20px;line-height:1.3;margin:0 0 16px;font-weight:700;letter-spacing:-.5px}.tagline em{font-style:normal;color:#13818c}.intro{font-size:13px;line-height:1.7;color:#36606a;margin-bottom:21px}.primary{background:var(--lime);color:#162d38;border:2px solid #173746;box-shadow:4px 4px 0 #173746;border-radius:7px;padding:15px 22px;font-size:12px;font-weight:800;letter-spacing:1px;min-height:48px}.primary span{margin-left:25px;font-size:18px}.start-note{font-size:10px;color:#537782;margin-top:13px}.start-sticker{position:absolute;top:23%;right:9%;background:#fcf4d1;padding:18px 24px;transform:rotate(9deg);box-shadow:6px 6px 0 #1d536334;border:2px solid #244956;text-align:center;border-radius:3px}.start-sticker span{font-size:12px;letter-spacing:3px;font-weight:800;display:block}.start-sticker strong{font:800 53px/1.2 'Barlow Condensed',Impact,sans-serif}.start-sticker small{font-size:11px;line-height:1.4;display:block}.start-foot{position:absolute;bottom:16px;font-size:10px;color:#477581}.hidden{display:none!important}.toast{position:absolute;top:75px;left:50%;transform:translateX(-50%) translateY(-8px);background:#142c43ed;color:white;padding:13px 20px;border-radius:8px;border-left:3px solid var(--lime);font-size:14px;line-height:1.5;max-width:85%;width:max-content;text-align:center;opacity:0;transition:.2s;pointer-events:none;z-index:4}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.hint{position:absolute;bottom:30px;left:50%;transform:translateX(-50%);background:#102d43eb;color:white;padding:10px 17px;border-radius:7px;font-size:13px;text-align:center;max-width:90%;width:max-content;pointer-events:none;display:none}.hint.visible{display:block}.modal{background:#07192bd9;backdrop-filter:blur(7px);display:flex;align-items:center;justify-content:center;padding:20px}.result-card{max-width:560px;text-align:center;width:100%;padding:25px}.result-card h2{font:900 clamp(38px,5vw,64px)/1 'Barlow Condensed',Impact,sans-serif;margin:10px 0 14px;color:var(--lime)}.result-card p{font-size:14px;line-height:1.6;color:#b6c8d7}.result-card .eyebrow{color:#a1bdcb}.result-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:22px 0}.result-grid div{padding:10px;background:#ffffff09;border:1px solid #ffffff12;border-radius:6px;font-size:12px;color:#adc3d4}.result-grid strong{color:white;display:block;font-size:22px;margin-top:5px}.result-card .primary{margin-top:10px}.mobile-controls{display:none;position:absolute;left:18px;right:18px;bottom:18px;justify-content:space-between;pointer-events:none;z-index:3}.mobile-controls>div{display:flex;gap:10px}.mobile-controls button{width:58px;height:58px;border-radius:15px;background:#143449c9;border:1px solid #ffffff70;font-size:27px;font-weight:700;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none}.mobile-controls .action{background:#ccf875e8;color:#213844}.mobile-controls .jump{background:#e6fcffe8;color:#213844}footer{height:66px;display:flex;align-items:center;padding:0 25px;justify-content:space-between;gap:15px;background:#142438;color:#94a9bd;font-size:11px}.key-guide{display:flex;gap:17px}.key-guide>span{display:flex;gap:4px;align-items:center}kbd{font:10px 'DM Sans',sans-serif;background:#21364c;border:1px solid #3a4a5d;box-shadow:0 2px #071625;color:#dbe6ef;padding:4px 5px;border-radius:3px;min-width:20px;text-align:center}.footer-status{display:flex;gap:10px;align-items:center;font-size:10px}.footer-status i{height:3px;width:3px;background:#668597;border-radius:50%}.footer-quote{font-style:italic;font-size:11px;color:#8299ab}.underbar{display:flex;justify-content:space-between;margin:19px 1px 20px;color:#597186;font-size:9px;letter-spacing:1.3px;font-weight:700}.underbar b{padding:0 7px;color:#35495c}@media(min-width:1450px){.start{padding-top:80px}}@media(max-height:850px) and (min-width:801px){header{height:75px}.hud{height:80px}.stage{height:calc(100dvh - 230px);min-height:410px}.start{padding-top:55px}.start h1{font-size:100px}.intro{margin-bottom:14px}.tagline{margin-bottom:10px}.start-note{margin-top:9px}}@media(pointer:coarse){.mobile-controls{display:flex}body.playing .hint{bottom:90px}.key-guide{display:none}.stage{touch-action:none}body:not(.playing) .mobile-controls{display:none}}@media(max-width:800px){.app{padding:0 14px}header{height:68px}.chapter{font-size:9px;letter-spacing:.5px}.brand{font-size:23px}.brand-icon{height:29px;width:27px;font-size:28px}.hud{height:83px}.health-block{width:35%;padding:0 14px}.health-label{font-size:9px;letter-spacing:.3px}.health-label strong{font-size:19px}.stat{gap:5px}.stat small{font-size:8px;letter-spacing:.1px}.stat strong{font-size:20px}.stat-icon{font-size:23px}.level{display:none}.stage{height:calc(100dvh - 240px);min-height:430px;max-height:740px}.start{padding:70px 25px 25px}.start h1{font-size:112px}.start-sticker{right:6%;top:32%;padding:12px}.start-sticker strong{font-size:40px}.start-sticker small{font-size:10px}.start .intro{font-size:12px;max-width:235px}.stage-top{left:14px;right:14px;top:16px;gap:12px}.environment{font-size:8px;padding:8px}.progress{max-width:95px}.environment b{display:none}footer{height:46px;padding:0 15px}.footer-quote{font-size:10px}.underbar{font-size:7px;letter-spacing:.7px;margin-top:14px}.underbar span:last-child{display:none}.tools button{height:32px;min-width:31px;padding:0 8px}.tools button span{display:none}.health-label i{display:none}}@media(max-width:450px){.chapter{display:none}.stat small{font-size:7px}.health-block{width:37%;padding:0 10px}.stat-icon{display:none}.hud{height:72px}.stage{height:calc(100dvh - 207px);min-height:470px}.start-sticker{right:18px;top:155px;padding:11px;transform:rotate(10deg)}.start-sticker strong{font-size:35px}.start-sticker small{display:none}.start-sticker span{font-size:9px}.start{padding-left:24px}.tagline{font-size:19px}.start h1{font-size:104px}.intro{font-size:12px}.primary{font-size:11px}.toast{font-size:12px;width:88%;max-width:88%;padding:10px}.result-card{padding:5px}.result-card h2{font-size:40px}.result-grid{gap:6px;margin:12px 0}.result-grid div{padding:7px}.result-card p{font-size:12px}}@media(max-height:550px) and (orientation:landscape){header{height:44px}.hud{height:54px}.stage{height:calc(100dvh - 115px);min-height:240px}footer,.underbar{display:none}.app{padding:0 12px}.start{padding:35px 35px}.start h1{font-size:64px;display:inline-block;float:left;margin-right:24px}.start .eyebrow{font-size:8px;margin-bottom:10px}.start .tagline{font-size:16px}.start .intro,.start-note,.start-foot{display:none}.primary{padding:10px 16px;min-height:40px}.start-sticker{top:60px;right:15%}.mobile-controls button{height:46px;width:50px}.stage-top{top:9px}.toast{top:47px}.result-card h2{font-size:32px}.result-grid{margin:8px 0;grid-template-columns:repeat(4,1fr)}.result-grid div{font-size:9px}.result-grid strong{font-size:16px}.result-card p{margin:5px}}

.toast::after{content:"Notification · disappears automatically, no click needed";display:block;font-size:11px;color:#b4c9d8;margin-top:6px;font-weight:400}.hint{white-space:pre-line;line-height:1.55;max-width:min(90%,640px);border:1px solid #8ec0cc66;font-size:14px;padding:12px 18px}@media(max-width:450px){.hint{font-size:12px;padding:10px 12px}.toast::after{font-size:10px}}

.ride-banner{position:absolute;left:24px;top:62px;color:#25495c;background:#e8ff89;border:2px solid #416778;box-shadow:3px 3px #315b7640;transform:rotate(-2deg);border-radius:7px;padding:9px 14px;font:800 24px 'Barlow Condensed',Impact,sans-serif;pointer-events:none;z-index:3}.storm-button{position:absolute;right:20px;top:62px;background:#ffe382;color:#32365b;border:2px solid #665b91;border-radius:9px;padding:12px 16px;font-weight:800;font-size:14px;min-height:48px;z-index:4;touch-action:manipulation}.power-active .toast{top:125px}@media(max-width:600px){.ride-banner{left:12px;font-size:18px;padding:10px 8px;top:60px}.storm-button{right:12px;top:60px;font-size:12px;padding:10px 8px}.power-active .toast{top:119px}}

/* Reserved metal marquee above the canvas: never covers the player. */
#rideBanner{position:relative;inset:auto;display:flex;align-items:center;justify-content:center;height:44px;min-height:44px;padding:0 10px;margin:0;border:0;border-radius:0;box-shadow:none;transform:none;background:#101d30;color:#e9faff;font-family:'Metal Mania',Impact,fantasy;font-size:30px;font-weight:400;line-height:1;letter-spacing:1.5px;text-transform:uppercase;text-shadow:2px 2px 0 #356b96,-1px -1px 0 #779ec0,0 0 13px #70cfff88;white-space:nowrap;pointer-events:none;z-index:auto}#rideBanner.hidden{display:flex!important;visibility:hidden}.stage{height:min(calc(64vh - 44px),606px)}@media(max-width:800px){#rideBanner{font-size:25px;letter-spacing:.8px}.stage{height:calc(100dvh - 284px)}}@media(max-width:450px){#rideBanner{font-size:22px}.stage{height:calc(100dvh - 251px)}}@media(max-height:550px) and (orientation:landscape){#rideBanner{height:32px;min-height:32px;font-size:23px}.stage{height:calc(100dvh - 147px)}}

/* All combat controls share the bottom action row. */
body.playing .mobile-controls{display:flex}.mobile-controls .storm-button{position:static;inset:auto;padding:0;min-height:0;width:58px;height:58px;font-size:16px;border:2px solid #bfa161;background:#ffe382;color:#37345d;box-shadow:0 0 14px #ffdf6633;flex-shrink:0}.mobile-controls>div{align-items:center}.intro-scene{position:absolute;inset:0;z-index:6;pointer-events:none}.intro-scene button{position:absolute;right:18px;top:18px;pointer-events:auto;padding:11px 14px;border:1px solid #a4bacd;border-radius:7px;background:#182a40;color:#ecf5ff;font-size:12px}.intro-caption{position:absolute;bottom:26px;left:20px;right:20px;max-width:650px;margin:auto;text-align:center;padding:16px;border:1px solid #91b1c14d;border-radius:10px;background:#0d1c30e6;color:#eefaff;font-size:clamp(16px,2.4vw,23px);line-height:1.5;font-style:italic}@media(pointer:fine){.mobile-controls>div:first-child{visibility:hidden}body.playing .hint{bottom:90px}}@media(max-width:450px){.mobile-controls{left:10px;right:10px}.mobile-controls>div{gap:6px}.mobile-controls button,.mobile-controls .storm-button{width:52px;height:54px}.mobile-controls .storm-button{font-size:14px}}@media(max-height:550px) and (orientation:landscape){.mobile-controls .storm-button{width:50px;height:46px}.intro-caption{bottom:12px;padding:9px;font-size:16px}}

/* Guidance occupies its own space above the canvas, never over gameplay. */
.guide-panel{display:none;flex-shrink:0;height:112px;padding:10px 16px;background:#122338;border-bottom:1px solid #304156;overflow-y:auto;gap:10px;grid-template-columns:1fr 1fr;align-items:start}body.playing .guide-panel{display:grid}.guide-panel #hint,.guide-panel #toast{position:static;inset:auto;transform:none;width:auto;max-width:none;min-width:0;margin:0;padding:8px 12px;text-align:left;border-radius:6px;line-height:1.45;font-size:13px;white-space:pre-line;pointer-events:auto;opacity:1;transition:none;display:none}.guide-panel #hint.visible,.guide-panel #toast.show{display:block}.guide-panel #hint{border:1px solid #6b989e;color:#eaffdf;background:#1e3b47}.guide-panel #toast{border:1px solid #43637e;border-left:3px solid #d7ff77;background:#1b3149}.guide-panel #toast::after{font-size:10px;margin-top:4px}.guide-panel #hint:only-child{grid-column:1/-1}body.playing .app{height:100dvh;display:flex;flex-direction:column}body.playing header{height:68px;flex-shrink:0}body.playing main{display:flex;flex-direction:column;flex:1;min-height:0;margin-bottom:8px}body.playing .hud,body.playing footer{flex-shrink:0}body.playing .stage{flex:1;height:auto;min-height:180px;max-height:none}body.playing .underbar{display:none}@media(max-width:600px){.guide-panel{height:154px;grid-template-columns:1fr;padding:7px 10px;gap:6px}.guide-panel #hint,.guide-panel #toast{font-size:12px;padding:7px 9px}.guide-panel #toast::after{font-size:10px}}@media(max-height:550px) and (orientation:landscape){body.playing header{height:44px}body.playing .hud{height:48px}.guide-panel{height:84px;grid-template-columns:1fr 1fr;padding:5px 10px}.guide-panel #hint,.guide-panel #toast{font-size:12px;padding:5px 8px}body.playing .stage{min-height:120px}}

/* Controls are a sibling of the stage, never a canvas overlay. */
#mobileControls{position:static;inset:auto;width:100%;flex:none;padding:10px 16px max(10px,env(safe-area-inset-bottom));background:#16283d;border-top:1px solid #385068;z-index:auto;gap:12px;pointer-events:auto;min-height:76px}#mobileControls>div{flex-shrink:0}#rideBanner{flex-shrink:0}#rideBanner.hidden{display:none!important}body.playing .guide-panel{height:auto;max-height:116px;min-height:0}body.playing .guide-panel:not(:has(.hint.visible,.toast.show)){display:none}.guide-panel:not(:has(.hint.visible)) #toast.show,.guide-panel:not(:has(.toast.show)) #hint.visible{grid-column:1/-1}body.playing footer{height:36px}body.playing .stage{min-height:180px}
@media(max-width:800px){
/* A flowing, opaque start card keeps every text element separate. */
.stage:has(.start:not(.hidden)){height:auto;min-height:0;max-height:none}.stage:has(.start:not(.hidden))>canvas{position:absolute;inset:0}.stage:has(.start:not(.hidden))>.stage-top{display:none}.start:not(.hidden){position:relative;inset:auto;display:flex;flex-direction:column;gap:18px;padding:28px 24px;background:#c6efea;overflow:visible}.start-copy{width:100%;min-width:0}.start .eyebrow{font-size:10px;line-height:1.5;letter-spacing:1.2px;margin-bottom:20px}.start h1{float:none;display:block;font-size:clamp(64px,21vw,100px);line-height:.88;letter-spacing:-1px;transform:none;margin:0 0 22px}.start .tagline{font-size:20px;line-height:1.4;margin:0 0 16px}.start .intro{font-size:14px;line-height:1.6;max-width:none;margin:0 0 22px}.start .primary{display:flex;align-items:center;justify-content:space-between;width:100%;padding:14px 16px;min-height:52px;font-size:12px;letter-spacing:.4px}.start .primary span{margin-left:10px}.start .start-note{display:block;font-size:11px;line-height:1.5;margin-top:15px}.start .start-sticker{position:static;inset:auto;transform:none;box-shadow:none;align-self:flex-start;display:flex;align-items:center;gap:12px;padding:8px 12px}.start .start-sticker span{font-size:10px;letter-spacing:1.5px}.start .start-sticker strong{font-size:30px;line-height:1}.start .start-sticker small{display:none}.start .start-foot{position:static;display:block;font-size:11px;line-height:1.5;margin:0}.guide-panel{grid-template-columns:1fr}#mobileControls{padding:8px 10px max(8px,env(safe-area-inset-bottom));min-height:70px;gap:8px}.mobile-controls>div{gap:6px}body.playing header{height:56px}body.playing footer{height:30px}.footer-quote{display:none}
}
@media(max-width:360px){#mobileControls button,#mobileControls .storm-button{width:46px;height:50px}.start:not(.hidden){padding:24px 18px}.start .primary{font-size:11px}}
@media(max-height:550px) and (orientation:landscape){#mobileControls{min-height:54px;padding:5px 12px}#mobileControls button,#mobileControls .storm-button{height:44px}body.playing header{height:40px}body.playing .hud{height:44px}body.playing .guide-panel{max-height:74px;grid-template-columns:1fr 1fr}body.playing .stage{min-height:100px}body.playing footer{display:none}.start:not(.hidden){padding:20px 28px}.start h1{font-size:64px}.start .start-sticker{display:none}}

/* Context instructions take priority over transient notifications. */
body.playing .guide-panel{grid-template-columns:1fr}.guide-panel:has(#hint.visible) #toast.show{display:none}.guide-panel #hint.visible,.guide-panel #toast.show{grid-column:1/-1}

/* Explicit mouse/keyboard storm control, independent of touch controls. */
.tools #stormDesktop{display:inline-flex;align-items:center;justify-content:center;min-width:148px;background:#ffe382;color:#32365b;border:1px solid #d2ad55;font-size:12px;white-space:nowrap;pointer-events:auto}.tools #stormDesktop:disabled{background:#23364a;color:#97aabc;border-color:#405569;cursor:default}.tools #stormDesktop:disabled:hover{filter:none}@media(pointer:coarse){.tools #stormDesktop{display:none}}@media(pointer:fine){#mobileControls #storm{display:none!important}}@media(max-width:650px) and (pointer:fine){.chapter{display:none}.tools #stormDesktop{min-width:120px;font-size:10px;padding:0 6px}}

/* Keep the complete keyboard legend readable on smaller laptops. */
@media(pointer:fine){footer,body.playing footer{height:auto;min-height:46px;flex-wrap:wrap;padding:10px 16px;gap:10px}.key-guide{flex-wrap:wrap;row-gap:10px}.key-guide>span{white-space:nowrap}.footer-quote{display:none}}

.brand-name{display:flex;flex-direction:column;font-size:26px;line-height:1;white-space:nowrap}.brand-name small{font-family:'DM Sans',Arial,sans-serif;font-size:11px;font-weight:700;line-height:1.5;color:#d7ff77}.start h1.hero-title{font-size:clamp(64px,7vw,100px);line-height:.86;letter-spacing:-1px}.hero-title small{display:block;font-family:'DM Sans',Arial,sans-serif;font-size:20px;font-weight:800;line-height:1.4;letter-spacing:0;margin-top:14px;color:#16818c}.intro-hero{position:absolute;left:20px;right:20px;top:35%;text-align:center;font-family:'Barlow Condensed',Impact,sans-serif;font-size:clamp(26px,5vw,58px);font-weight:800;line-height:1.2;color:#e5ff9a;text-shadow:0 3px 15px #000;animation:hero-appear .7s ease-out both}@keyframes hero-appear{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media(max-width:800px){.start h1.hero-title{font-size:clamp(62px,19vw,92px)}.brand-name{font-size:23px}.hero-title small{font-size:18px}}@media(prefers-reduced-motion:reduce){.intro-hero{animation:none}}

.intro-artwork{position:absolute;inset:0;background:#07182a;overflow:hidden}.intro-artwork img{width:100%;height:100%;object-fit:cover;object-position:50% 55%;animation:mask-approach 4s ease-in-out both}.intro-scene button{z-index:4}.intro-hero{z-index:2;top:10%;padding:8px;text-shadow:0 3px 10px #000,0 0 20px #000}.intro-caption{z-index:3;font-size:clamp(16px,2vw,22px)}@keyframes mask-approach{from{transform:scale(1);filter:brightness(.65)}to{transform:scale(1.13);filter:brightness(1.15)}}@media(max-aspect-ratio:3/4){.intro-artwork img{object-fit:contain}.intro-hero{top:12%;font-size:30px}.intro-caption{bottom:18px}}@media(prefers-reduced-motion:reduce){.intro-artwork img{animation:none}}

/* Keep the full CloudHero name inside narrow start screens. */
.start h1.hero-title{font-size:clamp(44px,5vw,70px)}
@media(max-width:800px){.start h1.hero-title{font-size:clamp(36px,12vw,64px)}.brand-name{font-size:clamp(18px,5.3vw,23px)}}

.location{color:#153d50;background:#e5fbefdf;border-radius:4px;padding:5px 8px;font-size:11px;font-weight:800;max-width:45%;line-height:1.25}.chapter{letter-spacing:.6px}.stage-top{flex-wrap:wrap}.stage-top #timer{margin-left:auto}@media(max-width:800px){.location{font-size:9px;max-width:46%}.stage-top .progress{display:none}.stage-top{gap:6px}.chapter{display:none}}
/* Keep both wall posters visible throughout the transformation. */
.intro-artwork img{object-fit:contain;object-position:center;animation:mask-reveal 4s ease-in-out both}@keyframes mask-reveal{from{filter:brightness(.65)}to{filter:brightness(1.15)}}@media(prefers-reduced-motion:reduce){.intro-artwork img{animation:none}}

.menu-hero{position:absolute;right:4%;bottom:15%;width:37%;height:65%;object-fit:contain;pointer-events:none}.start-sticker{top:8%;right:6%;padding:8px 12px}.start-sticker strong{font-size:34px}.start-sticker small{display:none}@media(max-width:800px),(pointer:coarse){.menu-hero{position:static;order:1;width:100%;height:170px;object-fit:contain;margin:-10px 0}.start-copy{order:0}.start-sticker{order:2}.start-foot{order:3}}

.intro-hero{top:auto;bottom:18%}@media(max-aspect-ratio:3/4){.intro-hero{top:auto;bottom:17%}}

.pong-quest{position:fixed;inset:0;z-index:30;background:#061322ee;display:grid;place-items:center;padding:12px;overflow:auto}.pong-card{width:min(760px,100%);max-height:100%;overflow:auto;background:#142b40;border:1px solid #6f91a1;border-radius:16px;padding:20px;text-align:center}.pong-card h2{font-family:'Barlow Condensed',sans-serif;font-size:34px;color:#d7ff77;margin:6px}.pong-card p{font-size:14px;line-height:1.5;margin:10px 0}.pong-card #pongBoard{width:100%;height:auto;max-height:48dvh;aspect-ratio:20/11;touch-action:none;border:1px solid #64869c;border-radius:8px;margin-top:12px}.pong-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:10px 0}.pong-actions button{background:#2a4960;padding:10px 14px;border-radius:6px;min-height:44px;font-size:12px;touch-action:none}#pongScore{font-size:20px;letter-spacing:2px}#pongStart[hidden]{display:none}@media(max-height:550px){.pong-card{padding:10px}.pong-card h2{font-size:24px}.pong-card p{font-size:12px;margin:5px}.pong-card #pongBoard{max-height:40dvh}.pong-actions{margin:5px}}

.unlock-card{max-width:700px}.unlock-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.login-terminal{min-height:112px;padding:10px 5px;background:#0b1b2c;border:3px solid #36586d;border-radius:8px;font-size:12px;color:#7e99a8;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;touch-action:manipulation}.login-terminal strong{font-size:12px;line-height:1.25}.terminal-icon{font-size:28px}.login-terminal.popped{background:#25445b;color:#fff;border-color:#96bdcd;animation:terminal-pop .12s ease-out}.login-terminal.correct-hit{background:#235c49;color:#ddff8b;border-color:#d7ff77}.login-terminal.wrong-hit{background:#973e43;color:white;border-color:#ff806e}.unlock-hud{display:flex;justify-content:space-around;gap:8px;font-size:11px}.unlock-hud b{display:block;font-size:20px;color:#d7ff77}.unlock-rules{color:#bbd5df}#unlockStart[hidden]{display:none}#unlockFeedback{min-height:42px}@keyframes terminal-pop{from{transform:scale(.85);opacity:.4}to{transform:scale(1);opacity:1}}@media(max-width:450px){.unlock-card{padding:12px}.unlock-board{gap:6px}.login-terminal{min-height:108px}.login-terminal strong{font-size:11px}.unlock-card h2{font-size:28px}}@media(prefers-reduced-motion:reduce){.login-terminal.popped{animation:none}}

/* A final encounter with a friend, not another fight. */
body.outro-active{overflow:hidden}.genius-outro{position:fixed;inset:0;z-index:1000;background:#090414;color:#fff;display:grid;grid-template-rows:auto minmax(100px,1fr) auto;padding: max(12px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom));font-family:ui-monospace,monospace;animation:geniusFade 1.1s ease-out}.genius-top{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#c2a5ef;font-size:12px;letter-spacing:1px}.genius-top>div{display:flex;gap:8px}.genius-outro button{background:#25153b;border:2px solid #ae72f8;color:#fff;padding:12px 18px;font:700 14px ui-monospace,monospace;cursor:pointer;border-radius:5px;min-height:46px}.genius-outro button:hover,.genius-outro button:focus-visible{background:#513073;outline:2px solid #e9d479;outline-offset:3px}.genius-outro button:disabled{opacity:.45}.genius-arena{position:relative;overflow:hidden;display:grid;place-items:center;min-height:0;background:radial-gradient(ellipse at bottom,#56238666,transparent 65%)}.genius-portrait{height:100%;max-width:100%;object-fit:contain;image-rendering:pixelated;filter:saturate(.85);transition:filter .8s,opacity 1s;mask-image:linear-gradient(black 88%,transparent)}.genius-agent{position:absolute;right:5%;top:8%;z-index:2;font-size:clamp(20px,5vw,60px);font-weight:900;color:#91ffff;text-shadow:4px 4px #6a2193;display:none}.genius-scan{position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(transparent 0 3px,#08001833 3px 5px)}.genius-bolt{display:none;position:absolute;font-size:min(60vh,450px);color:#f4b7ff;text-shadow:0 0 40px #ce42ff;right:14%;top:0;animation:geniusLightning 1.8s infinite}.genius-dialogue{text-align:center;align-self:end;background:#130c24;border:2px solid #694b91;padding:18px;max-width:920px;width:100%;margin:0 auto;box-sizing:border-box;max-height:55dvh;overflow:auto}.genius-title{font:900 clamp(20px,3vw,36px)/1.35 ui-monospace,monospace!important;margin:0 0 10px!important;white-space:pre-line;color:#fff!important;text-shadow:2px 2px #68388f}.genius-sub{white-space:pre-line;line-height:1.6;font-size:clamp(15px,2vw,21px);margin:0 0 12px;color:#d8c9ed}.genius-sub:empty{display:none}.genius-help{display:block;color:#b9a4cf;margin-top:9px;font-size:12px}.genius-choices{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.genius-choices[hidden],.genius-next[hidden]{display:none}.genius-outro[data-beat=warning] .genius-portrait{opacity:0}.genius-outro[data-beat=reveal] .genius-portrait{animation:geniusReveal 4s both}.genius-outro[data-beat=warning] .genius-bolt,.genius-outro[data-beat=reveal] .genius-bolt{display:block}.genius-outro[data-beat=agent] .genius-agent{display:block}.genius-outro[data-beat=hey] .genius-sub{text-decoration:line-through;color:#ff7085}.genius-outro[data-beat=friend] .genius-title,.genius-outro[data-beat=award] .genius-sub{color:#dbff71!important}.genius-outro[data-beat=walk] .genius-portrait{animation:geniusWalk 2.2s steps(2,end) forwards}.genius-outro[data-beat=stop] .genius-portrait,.genius-outro[data-beat=alarm] .genius-portrait{transform:translateX(22%) scaleX(-1)}.genius-outro[data-beat=alarm]{background:#570918}.genius-outro[data-beat=alarm] .genius-title{color:#ff6f79!important}.genius-outro[data-beat=alarm] .genius-arena{background:#ad162655}.genius-outro[data-beat=end]{background:#000}.genius-outro[data-beat=end] .genius-arena,.genius-outro[data-beat=end] .genius-top{visibility:hidden}.genius-outro[data-beat=end] .genius-dialogue{position:absolute;top:40%;left:0;right:0;background:none;border:0}.genius-outro[data-beat=walk] .genius-dialogue{visibility:hidden}@keyframes geniusFade{from{opacity:0}to{opacity:1}}@keyframes geniusReveal{from{filter:brightness(0);opacity:0}to{filter:brightness(1);opacity:1}}@keyframes geniusLightning{0%,75%,100%{opacity:0}80%,90%{opacity:.7}85%,95%{opacity:.05}}@keyframes geniusWalk{to{transform:translateX(22%) scaleX(-1)}}@media(max-width:600px){.genius-top>span{display:none}.genius-top{justify-content:flex-end}.genius-outro button{padding:11px 12px}.genius-dialogue{padding:14px 10px}.genius-choices{flex-direction:column}.genius-choices button{width:100%}.genius-portrait{max-height:100%;width:100%}.genius-agent{right:3%;top:4%;font-size:25px}}@media(prefers-reduced-motion:reduce){.genius-outro,.genius-portrait,.genius-bolt{animation:none!important}.genius-bolt{opacity:.15}.genius-portrait{transition:none}}
/* Frame-stepped beat-em-up entrance; dialogue remains outside all flashes. */
.genius-entrance{display:none;position:absolute;inset:0;width:100%;height:100%;z-index:3;image-rendering:pixelated}.genius-outro[data-beat=warning] .genius-entrance,.genius-outro[data-beat=reveal] .genius-entrance{display:block}.genius-outro[data-beat=warning] .genius-bolt,.genius-outro[data-beat=reveal] .genius-bolt{display:none}.genius-outro[data-beat=warning] .genius-portrait,.genius-outro[data-beat=reveal] .genius-portrait{visibility:hidden}.genius-outro[data-beat=warning] .genius-dialogue{animation:geniusWarning 4.5s both}.genius-outro{animation:geniusFade .9s ease-out}@keyframes geniusWarning{0%,18%{opacity:0}30%,100%{opacity:1}}
.genius-sprite-ready .genius-entrance{display:block}.genius-sprite-ready .genius-portrait{visibility:hidden}.genius-sprite-ready .genius-agent{z-index:5}.genius-sprite-ready[data-beat=walk] .genius-entrance{animation:geniusWalk 2.2s steps(2,end) forwards}.genius-sprite-ready[data-beat=stop] .genius-entrance,.genius-sprite-ready[data-beat=alarm] .genius-entrance{transform:translateX(22%) scaleX(-1)}.genius-sprite-ready[data-beat=alarm] .genius-entrance{filter:sepia(.8) saturate(3) hue-rotate(310deg)}

/* Let desktop menu content determine its height so Start cannot be clipped. */
@media(min-width:801px){
 .stage:has(.start:not(.hidden)){height:auto;min-height:500px;max-height:none}
 .stage:has(.start:not(.hidden))>canvas{position:absolute;inset:0}
 .stage:has(.start:not(.hidden))>.stage-top{display:none}
 .start:not(.hidden){position:relative;inset:auto;min-height:500px;padding:38px 7% 30px;overflow:visible}
 .start .start-copy{width:55%;min-width:0}
 .start .menu-hero{position:absolute;right:4%;bottom:12%;width:36%;height:66%;margin:0;object-fit:contain;pointer-events:none}
 .start h1.hero-title{font-size:clamp(48px,5vw,70px);margin-bottom:18px}
 .start .intro{font-size:14px;line-height:1.5;margin:0 0 18px}
 .start #start{position:relative;display:inline-flex;align-items:center;justify-content:space-between;gap:16px;min-height:52px;max-width:100%;z-index:1}
 .start .start-note{display:block;line-height:1.5}
 .start .start-foot{position:static;margin-top:22px;line-height:1.5}
 .start .start-sticker{position:absolute;top:7%;right:8%;bottom:auto}
}
