*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background:#000;overflow:hidden;font-family:"Press Start 2P",Courier New,monospace}#si-canvas{display:block;width:100vw;height:100vh;image-rendering:pixelated}#si-fx-canvas{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:10}#start-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000e0;display:flex;align-items:center;justify-content:center;z-index:100}#start-overlay.hidden{display:none}#start-card{background:#0a0a1a;border:3px solid #33ff33;border-radius:10px;padding:40px 44px 38px;text-align:center;max-width:500px;width:92%;color:#fff;box-shadow:0 0 32px #33ff3340}#si-logo{font-size:clamp(2rem,5.8vw,3rem);color:#3f3;letter-spacing:5px;line-height:1.2;margin-bottom:14px;text-shadow:0 0 16px #33ff33,0 0 32px #33ff33}#start-tagline{font-size:clamp(.72rem,1.8vw,.95rem);line-height:1.7;color:#f8d000;max-width:34ch;margin:0 auto 20px}#demo-canvas-wrap{margin:0 auto 22px;width:220px;height:80px}#demo-canvas{image-rendering:pixelated;display:block;width:220px;height:80px}.controls-hint{display:flex;gap:24px;justify-content:center;margin-bottom:18px;flex-wrap:wrap}.controls-hint span{font-size:clamp(.68rem,1.6vw,.82rem);color:#d5d5d5;display:flex;align-items:center;gap:6px}kbd{background:#1a1a1a;border:2px solid #555;border-radius:4px;padding:4px 8px;font-size:clamp(.64rem,1.6vw,.78rem);color:#fff;font-family:inherit}#start-caption{font-size:clamp(.68rem,1.5vw,.8rem);line-height:1.8;color:#9dd89d;max-width:38ch;margin:0 auto 24px}#start-btn,#restart-btn{background:#3f3;color:#000;border:none;border-radius:6px;padding:14px 34px;font-size:clamp(.72rem,2vw,.92rem);font-family:inherit;cursor:pointer;letter-spacing:1px;transition:background .15s,transform .1s}#start-btn:hover,#restart-btn:hover{background:#6f6;transform:scale(1.04)}#start-btn:active,#restart-btn:active{transform:scale(.97)}#gameover-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:100}#gameover-overlay.hidden{display:none}#gameover-card{background:#0a0a1a;border:3px solid #ff3333;border-radius:10px;padding:36px 44px;text-align:center;max-width:380px;width:90%;color:#fff;box-shadow:0 0 32px #ff333340}#gameover-card h2{font-size:clamp(1.2rem,4vw,1.8rem);color:#f33;letter-spacing:3px;margin-bottom:18px;text-shadow:0 0 16px #ff3333}#go-score,#go-hiscore{font-size:clamp(.92rem,2.2vw,1.15rem);line-height:1.7;color:#ccc;margin-bottom:12px}#go-hiscore{color:#f8d000;margin-bottom:28px}#hud{position:fixed;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;gap:18px;padding:16px 24px;min-height:68px;background:#000000d1;font-size:clamp(.72rem,2vw,1rem);color:#fff;z-index:50;pointer-events:none;border-bottom:2px solid rgba(51,255,51,.3);text-shadow:0 0 10px rgba(255,255,255,.18)}#hud.hidden{display:none}#hud-score{color:#3f3}#hud-wave{color:#59f}#hud-lives{color:#f66;letter-spacing:6px}#hud-hiscore{color:#f8d000}#wave-banner{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:12px;padding:18px 28px;background:#00000080;border:2px solid rgba(248,208,0,.4);border-radius:14px;z-index:60;pointer-events:none;text-align:center;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}#wave-banner.hidden{display:none}#wave-banner-title{color:#f8d000;font-size:clamp(1.35rem,4vw,2.6rem);letter-spacing:.18em;text-shadow:0 0 18px rgba(248,208,0,.45)}#wave-banner-subtitle{color:#3f3;font-size:clamp(.75rem,1.7vw,1rem);letter-spacing:.28em;text-shadow:0 0 14px rgba(51,255,51,.32)}#home-link{position:fixed;bottom:18px;left:18px;color:#3f3;font-size:clamp(.72rem,1.8vw,.95rem);text-decoration:none;background:#000000c2;padding:12px 18px;border-radius:10px;z-index:50;border:2px solid rgba(51,255,51,.38);box-shadow:0 0 16px #33ff332e;transition:background .2s,transform .12s}#home-link:hover{background:#003200db;transform:scale(1.03)}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(to bottom,transparent 0px,transparent 2px,rgba(0,0,0,.08) 2px,rgba(0,0,0,.08) 4px);pointer-events:none;z-index:200}
