:root {
  --ink:#070817;
  --night:#11152f;
  --panel:#171a3d;
  --purple:#604091;
  --blue:#2d79ff;
  --cyan:#31d6ff;
  --lime:#99f23d;
  --yellow:#ffd93d;
  --orange:#ff7a2d;
  --red:#ff405d;
  --white:#fff6d7;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{width:100%;height:100%;margin:0;overflow:hidden;background:#050713;color:var(--white);font-family:"Courier New",ui-monospace,monospace}
body{overscroll-behavior:none;touch-action:none;display:grid;place-items:center}
button{font:inherit;color:inherit;border:0;cursor:pointer;touch-action:none}
button:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}
#app{position:relative;width:100%;max-width:540px;height:100vh;height:100svh;overflow:hidden;background:var(--night);box-shadow:0 0 0 4px #050713,0 0 60px #000b}
.screen{position:absolute;inset:0;display:none}.screen.active{display:block}

/* HOME — PORTRAIT FIRST */
#homeScreen{overflow:hidden;background:#11152f}
.pixel-space{position:absolute;inset:0;image-rendering:pixelated;background:linear-gradient(#10142e 0 58%,#251b45 58% 100%)}
.pixel-space::before{content:"";position:absolute;inset:0;background-image:linear-gradient(#ffffff08 1px,transparent 1px),linear-gradient(90deg,#ffffff08 1px,transparent 1px);background-size:8px 8px}
.star{position:absolute;width:4px;height:4px;background:#fff6d7;box-shadow:8px 0 #fff6d7,4px -4px #fff6d7,4px 4px #fff6d7;animation:blink 1.2s steps(2) infinite}
.s1{left:8%;top:12%}.s2{left:22%;top:27%;animation-delay:.3s}.s3{right:18%;top:10%;animation-delay:.5s}.s4{right:9%;top:34%;animation-delay:.8s}.s5{left:52%;top:6%;animation-delay:1s}
.planet{position:absolute;right:6%;top:8%;width:92px;aspect-ratio:1;border-radius:50%;background:#ffdb55;box-shadow:inset -12px -9px 0 #ff8e38,0 0 0 5px #0b0e24,0 0 0 9px #4b3478;image-rendering:pixelated}
.planet span{position:absolute;width:24px;height:10px;left:17px;top:23px;background:#ffad3c;box-shadow:35px 25px 0 #ffad3c,16px 48px 0 #ffad3c}
.city{position:absolute;left:0;right:0;bottom:0;image-rendering:pixelated}
.city-back{height:29%;opacity:.75;background:#2d2554;clip-path:polygon(0 65%,7% 65%,7% 42%,15% 42%,15% 61%,23% 61%,23% 25%,31% 25%,31% 56%,40% 56%,40% 34%,48% 34%,48% 67%,58% 67%,58% 15%,68% 15%,68% 48%,77% 48%,77% 30%,86% 30%,86% 60%,94% 60%,94% 37%,100% 37%,100% 100%,0 100%)}
.city-front{height:16%;background:#15132e;border-top:7px solid #342660;box-shadow:0 -7px 0 #0b0e24}
.city-front::after{content:"";position:absolute;inset:14px 0 0;background:repeating-linear-gradient(90deg,transparent 0 30px,#5f4a93 30px 36px,transparent 36px 62px);opacity:.45}
.home-shell{position:relative;z-index:2;width:100%;height:100%;padding:max(15px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));display:flex;flex-direction:column;align-items:center;text-align:center}
.title-wrap{width:100%;z-index:3;flex:0 0 auto}
.eyebrow{margin:0;color:var(--cyan);font-size:clamp(9px,2.6vw,12px);font-weight:900;letter-spacing:.18em}
h1{margin:5px 0 0;display:flex;justify-content:center;align-items:center;gap:7px;flex-wrap:wrap;color:var(--lime);font-size:clamp(44px,14vw,72px);line-height:.83;letter-spacing:-.09em;text-shadow:4px 0 #0b0e24,-4px 0 #0b0e24,0 4px #0b0e24,0 -4px #0b0e24,7px 7px #7c2a5b}
h1 span{color:var(--yellow)}h1 small{font-size:.34em;letter-spacing:0;color:#fff;background:#b83849;border:3px solid #080a1b;padding:5px 6px;text-shadow:none;transform:rotate(-5deg)}
.subtitle{display:inline-block;margin:12px 0 0;padding:6px 11px;background:#0b0e24;border:3px solid #533273;color:#fff;font-size:clamp(10px,3vw,13px);font-weight:900;letter-spacing:.13em}
.hero-stage{position:relative;flex:1 1 auto;width:min(88vw,410px);min-height:220px;max-height:390px;margin:2px auto 0;display:grid;place-items:center;isolation:isolate}
.hero-stage::after{content:"";position:absolute;left:12%;right:12%;bottom:9%;height:14px;background:#080a1b;box-shadow:0 5px #5d386f;z-index:-1}
.beam{position:absolute;left:29%;right:29%;top:7%;bottom:10%;background:linear-gradient(#31d6ff00,#31d6ff55 22%,#31d6ff22 80%,#31d6ff00);clip-path:polygon(34% 0,66% 0,100% 100%,0 100%);animation:beamPulse 1s steps(3) infinite}
#homeHero{width:min(48vw,220px);max-height:94%;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(6px 7px 0 #080a1b);animation:heroBob .8s steps(2) infinite}
.alien-preview{position:absolute;width:58px;height:55px;animation:alienFloat 1.1s steps(2) infinite}
.alien-preview b{position:absolute;left:8px;top:5px;width:42px;height:34px;background:#99f23d;border:5px solid #080a1b;box-shadow:inset 0 -8px #65b72b}
.alien-preview b::before,.alien-preview b::after{content:"";position:absolute;top:8px;width:7px;height:9px;background:#080a1b}.alien-preview b::before{left:6px}.alien-preview b::after{right:6px}
.alien-preview i{position:absolute;left:3px;bottom:3px;width:52px;height:16px;background:#604091;border:5px solid #080a1b}
.alien-a{left:2%;bottom:17%}.alien-b{right:2%;top:22%;transform:scale(.8);animation-delay:.4s}
.home-actions{width:min(100%,410px);display:grid;gap:10px;flex:0 0 auto}
.pixel-btn{position:relative;min-height:58px;padding:0 18px;background:#493475;border:4px solid #080a1b;box-shadow:0 7px 0 #080a1b,inset 0 0 0 3px #7454a5;color:#fff;font-size:14px;font-weight:900;letter-spacing:.06em;text-align:center}
.pixel-btn:active{transform:translateY(5px);box-shadow:0 2px 0 #080a1b,inset 0 0 0 3px #8f6bc0}.pixel-btn.primary{background:#df5731;box-shadow:0 7px 0 #080a1b,inset 0 0 0 3px #ff9b43;color:#fff6d7}.pixel-btn.secondary{background:#2b3a8f;box-shadow:0 7px 0 #080a1b,inset 0 0 0 3px #536cca}.pixel-btn.full{width:100%;margin-top:13px}
.home-options{width:min(100%,410px);display:grid;grid-template-columns:48px 1fr 48px;align-items:center;gap:8px;margin-top:14px;flex:0 0 auto}
.square-btn{width:48px;height:45px;background:#28264f;border:3px solid #080a1b;box-shadow:0 4px 0 #080a1b;font-size:20px;font-weight:900}.square-btn:active{transform:translateY(3px);box-shadow:0 1px 0 #080a1b}.square-btn.off{color:#77708c}
.life-preview{display:flex;justify-content:center;gap:5px;padding:8px;background:#0b0e24bb;border:3px solid #453466;color:var(--red);font-size:18px;text-shadow:2px 2px #64152b}
.landscape-note{margin:10px 0 0;color:#b9b2d2;font-size:9px;letter-spacing:.05em}

/* GAME */
#gameScreen{background:#0b0e24;overflow:hidden}
#gameCanvas{position:absolute;inset:0;width:100%;height:100%;display:block;image-rendering:pixelated;image-rendering:crisp-edges}
.scanlines{position:absolute;inset:0;z-index:5;pointer-events:none;opacity:.14;background:repeating-linear-gradient(0deg,transparent 0 3px,#000 3px 4px);mix-blend-mode:multiply}
.hud{position:absolute;z-index:8;left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));top:max(8px,env(safe-area-inset-top));display:grid;grid-template-columns:1fr auto 40px;grid-template-areas:"lives score pause" "mission mission mission";gap:6px;align-items:start;pointer-events:none}
.hud-panel{min-height:38px;padding:6px 8px;background:#0c1028e8;border:3px solid #070817;box-shadow:3px 3px 0 #55357d}
.lives-panel{grid-area:lives}.score-panel{grid-area:score;text-align:right;min-width:96px}.mission-panel{grid-area:mission;width:100%;text-align:center;color:#fff;font-weight:900;font-size:10px}.pause-btn{grid-area:pause;pointer-events:auto;width:40px;height:38px;background:#2f2861e8;border:3px solid #070817;box-shadow:3px 3px 0 #55357d;font-weight:900;font-size:17px}
.hud-label{display:block;color:var(--cyan);font-size:8px;line-height:1;font-weight:900;letter-spacing:.14em}.hearts{display:flex;gap:2px;margin-top:4px}.heart{color:var(--red);font-size:15px;line-height:1;text-shadow:2px 2px 0 #64152b}.heart.empty{color:#3b3558;text-shadow:none}.score-panel b{display:block;margin-top:2px;color:var(--yellow);font-size:14px;line-height:1}.progress{height:7px;margin-top:5px;padding:2px;background:#070817}.progress i{display:block;width:0;height:100%;background:var(--lime);transition:width .15s linear}
.mobile-controls{position:absolute;z-index:9;left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));display:flex;justify-content:space-between;align-items:end;pointer-events:none}
.dpad,.action-pad{display:flex;gap:10px;pointer-events:auto}.control-btn{display:grid;place-items:center;width:68px;height:68px;border:4px solid #070817;background:#171a3dd9;color:#fff;box-shadow:0 6px 0 #070817,inset 0 0 0 3px #4b4779;font-size:25px;font-weight:900;user-select:none}.control-btn:active,.control-btn.pressed{transform:translateY(5px);box-shadow:0 1px 0 #070817,inset 0 0 0 3px #7770aa}.control-btn.jump,.control-btn.shoot{width:74px;height:74px;border-radius:50%;display:flex;flex-direction:column;justify-content:center;gap:1px}.control-btn.jump{background:#2447aadf}.control-btn.shoot{background:#b83849e8}.control-btn small{font-size:8px;letter-spacing:.06em}.control-btn span{line-height:.9}
.toast{position:absolute;z-index:10;left:50%;top:max(100px,calc(env(safe-area-inset-top) + 92px));transform:translate(-50%,-12px);opacity:0;white-space:nowrap;padding:8px 12px;background:#0b0e24ed;border:3px solid var(--cyan);color:#fff;font-weight:900;font-size:10px;pointer-events:none;transition:.18s}.toast.show{opacity:1;transform:translate(-50%,0)}

/* MODALS */
.modal{position:absolute;inset:0;z-index:30;display:none;place-items:center;padding:max(14px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));background:#050713e8;backdrop-filter:blur(3px)}.modal.open{display:grid}
.pixel-card{position:relative;width:100%;max-width:470px;max-height:92svh;overflow:auto;padding:20px 16px;background:#171a3d;border:5px solid #080a1b;box-shadow:0 0 0 4px #604091,8px 8px 0 #050713}.card-kicker{margin:0 0 6px;color:var(--cyan);font-size:10px;font-weight:900;letter-spacing:.16em;text-align:center}.pixel-card h2{margin:0 0 13px;text-align:center;font-size:clamp(28px,9vw,42px);color:var(--yellow);text-shadow:4px 4px 0 #7c2a5b}.close-btn{position:absolute;top:7px;right:7px;width:36px;height:36px;background:#b83849;border:4px solid #080a1b;box-shadow:0 4px 0 #080a1b;font-size:22px;font-weight:900}.tutorial-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.tutorial-grid article{min-height:112px;padding:10px;background:#10132e;border:3px solid #080a1b;box-shadow:3px 3px 0 #3f3168}.tutorial-grid b{display:block;margin:5px 0;color:var(--lime);font-size:11px}.tutorial-grid p,.result-card>p{margin:0;color:#d8d2f2;font-size:9px;line-height:1.45}.mini-icon{width:max-content;min-width:40px;padding:5px 7px;background:#2d79ff;border:3px solid #080a1b;color:#fff;font-weight:900}.result-card{text-align:center}.result-icon{margin:0 auto 4px;width:60px;height:60px;display:grid;place-items:center;color:#fff;background:#b83849;border:5px solid #080a1b;box-shadow:5px 5px 0 #55357d;font-size:32px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:16px 0 6px}.stats div{padding:9px 4px;background:#10132e;border:3px solid #080a1b}.stats span{display:block;color:var(--cyan);font-size:8px}.stats b{display:block;margin-top:4px;color:var(--yellow);font-size:14px}.return-note{margin-top:9px!important;font-size:8px!important;color:#8f89aa!important}
.rotate-notice{display:none;position:absolute;inset:0;z-index:100;place-items:center;align-content:center;gap:12px;padding:28px;text-align:center;background:#0b0e24}.phone-icon{width:72px;height:96px;display:grid;place-items:center;border:6px solid var(--cyan);color:var(--yellow);font-size:38px;animation:rotatePhone 1.4s steps(4) infinite}.rotate-notice b{color:var(--lime);font-size:18px}.rotate-notice span{max-width:300px;color:#d8d2f2;font-size:12px;line-height:1.5}

@keyframes blink{50%{opacity:.25}}@keyframes heroBob{50%{transform:translateY(-5px)}}@keyframes beamPulse{50%{opacity:.55}}@keyframes alienFloat{50%{translate:0 -7px}}@keyframes rotatePhone{50%{transform:rotate(-90deg)}}

@media (max-height:720px){
  .home-shell{padding-top:max(9px,env(safe-area-inset-top));padding-bottom:max(9px,env(safe-area-inset-bottom))}
  .eyebrow{font-size:8px}h1{font-size:clamp(39px,12vw,58px)}.subtitle{margin-top:8px;padding:4px 8px}
  .hero-stage{min-height:170px;max-height:260px}.pixel-btn{min-height:49px;font-size:12px}.home-actions{gap:7px}.home-options{margin-top:10px}.landscape-note{margin-top:6px}
  .control-btn{width:60px;height:60px}.control-btn.jump,.control-btn.shoot{width:66px;height:66px}.mobile-controls{bottom:max(10px,env(safe-area-inset-bottom))}
  .tutorial-grid article{min-height:95px}.pixel-card{padding:16px 13px}
}
@media (max-width:370px){
  .home-shell{padding-left:12px;padding-right:12px}.hero-stage{width:94vw}.alien-preview{transform:scale(.82)}.alien-b{transform:scale(.67)}
  .control-btn{width:56px;height:56px;border-width:3px}.control-btn.jump,.control-btn.shoot{width:62px;height:62px}.dpad,.action-pad{gap:7px}.mobile-controls{left:8px;right:8px}
  .heart{font-size:13px}.hud{left:6px;right:6px;gap:4px}.hud-panel{padding:5px 6px;border-width:2px}.pause-btn{border-width:2px}
}
@media (orientation:landscape) and (max-height:600px) and (pointer:coarse){.rotate-notice{display:grid}}
@media (min-width:700px){#app{border-left:4px solid #342660;border-right:4px solid #342660}}
@media (hover:hover) and (pointer:fine){.control-btn{opacity:.82}}
