*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;background:#08080c;font-family:Courier New,Menlo,monospace;color:#e8e8e8}#game{position:fixed;top:0;right:0;bottom:0;left:0}#game canvas{display:block}#hud{position:fixed;top:50%;right:14px;transform:translateY(-50%);width:118px;background:#63646b;border:3px solid #45464c;border-radius:4px;padding:12px 10px;box-shadow:0 6px 24px #0000008c}.panel-title{font-size:11px;letter-spacing:2px;color:#1c1c20;font-weight:700;margin:10px 0 4px}.panel-title:first-child{margin-top:0}#enemy-icons{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;min-height:16px}.enemy-icon{width:14px;height:14px;background:#2a2a2e;border:2px solid #17171a;border-radius:2px}#lives{font-size:15px;font-weight:700;color:#14141a}.life-tag{background:#d9b74a;color:#2a230c;padding:0 4px;border-radius:2px}#level{font-size:15px;color:#f4d43a;text-shadow:0 1px 0 #17171a;min-height:18px}#score{font-size:15px;font-weight:700;color:#14141a}#stage{margin-top:12px;padding-top:8px;border-top:2px solid #45464c;font-size:12px;font-weight:700;letter-spacing:1px;color:#14141a;text-align:center}#stage.muted-flag:after{content:" 🔇"}#overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;pointer-events:none}#overlay.hidden{display:none}#overlay.solid{background:#0a0a0e}#overlay.dim{background:#050508b8}#overlay.curtain{background:#63646b}.logo{font-size:clamp(38px,7vw,72px);font-weight:700;letter-spacing:6px;color:#c0392b;text-shadow:4px 4px 0 #5e1409,8px 8px 0 rgba(0,0,0,.5)}.logo span{color:#f4d43a;text-shadow:4px 4px 0 #7a5c0d,8px 8px 0 rgba(0,0,0,.5)}.big{font-size:clamp(30px,5vw,56px);font-weight:700;letter-spacing:6px}.stage-text{color:#17171a}.clear-text{color:#7ee07e;text-shadow:3px 3px 0 #1c4a1c}.gameover-text{color:#ff4530;text-shadow:3px 3px 0 #5e1409;animation:rise 1.2s ease-out}.pause-text{color:#f4d43a;animation:blink 1s step-start infinite}.sub{font-size:15px;color:#b9b9c2;letter-spacing:2px}.hint{font-size:13px;color:#7f7f8a;letter-spacing:1px}.press{margin-top:10px;font-size:17px;font-weight:700;color:#f4d43a;letter-spacing:3px;animation:blink 1.1s step-start infinite}#controls-hint{position:fixed;left:50%;bottom:10px;transform:translate(-50%);font-size:12px;color:#5d5d68;letter-spacing:1px;pointer-events:none}#leaderboard{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#050508d1;z-index:20}#leaderboard.hidden{display:none}.lb-panel{display:flex;flex-direction:column;align-items:center;gap:12px;width:min(90vw,440px);padding:28px 30px;background:#14141a;border:3px solid #45464c;box-shadow:0 10px 40px #0009}.lb-entry{display:flex;gap:8px;margin:6px 0}#lb-name{width:200px;padding:9px 12px;font-family:inherit;font-size:16px;letter-spacing:2px;color:#f4f4f8;background:#0a0a0e;border:2px solid #6a6b73;outline:none}#lb-name:focus{border-color:#f4d43a}#lb-submit{padding:9px 16px;font-family:inherit;font-size:15px;font-weight:700;letter-spacing:2px;color:#14141a;background:#f4d43a;border:none;cursor:pointer}#lb-submit:hover{background:#ffe14d}.lb-note{font-size:14px;color:#b9b9c2;letter-spacing:1px;min-height:20px}.lb-note.lb-ranked{color:#f4d43a;font-weight:700}.lb-title{margin-top:6px;font-size:13px;font-weight:700;letter-spacing:3px;color:#7f7f8a;border-top:2px solid #45464c;padding-top:12px;width:100%;text-align:center}.lb-list{width:100%;display:flex;flex-direction:column;gap:2px;max-height:40vh;overflow-y:auto}.lb-row{display:grid;grid-template-columns:32px 1fr auto 44px;gap:8px;align-items:center;padding:5px 8px;font-size:14px;color:#d2d2da}.lb-row:nth-child(odd){background:#ffffff08}.lb-row.lb-me{background:#f4d43a29;color:#ffe14d;font-weight:700}.lb-rank{color:#7f7f8a;text-align:right}.lb-me .lb-rank{color:#ffe14d}.lb-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-score{text-align:right;font-variant-numeric:tabular-nums}.lb-stage{text-align:right;color:#7f7f8a;font-size:12px}.lb-empty{padding:12px;font-size:14px;color:#7f7f8a;text-align:center}@keyframes blink{50%{opacity:.15}}@keyframes rise{0%{transform:translateY(60px);opacity:0}to{transform:translateY(0);opacity:1}}
