* { margin: 0; padding: 0; box-sizing: border-box; user-select: none; } body { width: 420px; height: 600px; overflow: hidden; background: #05060f; color: #e0e0ff; font-family: "Segoe UI", "Arial", sans-serif; } #app { position: relative; width: 100%; height: 100%; background: radial-gradient(ellipse at top, #1a1040 0%, transparent 60%), radial-gradient(ellipse at bottom right, #2a0a40 0%, transparent 50%), #05060f; overflow: hidden; } /* Starfield background */ #app::before { content: ""; position: absolute; inset: 0; background-image: radial-gradient(1px 1px at 20% 30%, #ffffff, transparent), radial-gradient(1px 1px at 60% 70%, #ffffff, transparent), radial-gradient(2px 2px at 80% 20%, #ffffff, transparent), radial-gradient(1px 1px at 40% 80%, #aaaaff, transparent), radial-gradient(1px 1px at 90% 50%, #ffffff, transparent), radial-gradient(1px 1px at 10% 60%, #ffaaaa, transparent), radial-gradient(2px 2px at 70% 40%, #ffffff, transparent), radial-gradient(1px 1px at 30% 10%, #aaffff, transparent); background-size: 200px 200px; opacity: 0.6; pointer-events: none; } /* SCREENS */ .screen { position: absolute; inset: 0; display: none; flex-direction: column; align-items: center; justify-content: center; padding: 24px; z-index: 10; } .screen.visible { display: flex; } #game-screen { padding: 0; justify-content: flex-start; } /* TITLE */ .title { font-size: 38px; font-weight: 800; letter-spacing: 2px; text-align: center; background: linear-gradient(135deg, #00f0ff 0%, #ff00e5 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; text-shadow: 0 0 30px rgba(0, 240, 255, 0.3); margin-bottom: 8px; } .title.small { font-size: 28px; margin-bottom: 16px; } .title span { color: #ff00e5; -webkit-text-fill-color: #ff00e5; } .subtitle { font-size: 14px; text-align: center; color: #8888aa; line-height: 1.5; margin-bottom: 24px; } /* SCOPE SELECT */ .scope-select { width: 100%; margin-bottom: 20px; } .scope-label { display: block; text-align: center; font-size: 12px; color: #8888aa; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 10px; } .scope-buttons { display: flex; gap: 12px; justify-content: center; } .scope-btn { flex: 1; background: rgba(255, 255, 255, 0.04); border: 2px solid rgba(255, 255, 255, 0.1); border-radius: 12px; padding: 14px 8px; color: #e0e0ff; cursor: pointer; transition: all 0.2s; display: flex; flex-direction: column; align-items: center; gap: 6px; font-family: inherit; } .scope-btn:hover { border-color: rgba(0, 240, 255, 0.4); background: rgba(0, 240, 255, 0.05); } .scope-btn.active { border-color: #00f0ff; background: rgba(0, 240, 255, 0.12); box-shadow: 0 0 20px rgba(0, 240, 255, 0.2); } .scope-icon { font-size: 26px; } .scope-text { font-size: 12px; line-height: 1.2; text-align: center; } /* BUTTONS */ .primary-btn { background: linear-gradient(135deg, #00f0ff 0%, #00a0ff 100%); color: #05060f; border: none; padding: 14px 48px; font-size: 16px; font-weight: 700; letter-spacing: 2px; border-radius: 30px; cursor: pointer; transition: all 0.2s; font-family: inherit; box-shadow: 0 0 30px rgba(0, 240, 255, 0.4); margin-bottom: 20px; } .primary-btn:hover { transform: translateY(-2px); box-shadow: 0 4px 40px rgba(0, 240, 255, 0.6); } .primary-btn:active { transform: translateY(0); } .secondary-btn { background: transparent; color: #8888aa; border: 1px solid rgba(255, 255, 255, 0.15); padding: 10px 32px; font-size: 13px; border-radius: 20px; cursor: pointer; transition: all 0.2s; font-family: inherit; margin-top: 8px; } .secondary-btn:hover { color: #e0e0ff; border-color: rgba(255, 255, 255, 0.4); } /* HIGHSCORE */ .highscore-display { display: flex; align-items: center; gap: 8px; margin-bottom: 20px; padding: 8px 20px; background: rgba(255, 215, 0, 0.06); border: 1px solid rgba(255, 215, 0, 0.2); border-radius: 20px; } .hs-label { font-size: 13px; } .hs-value { font-size: 16px; font-weight: 700; color: #ffd700; } /* CONTROLS HINT */ .controls-hint { text-align: center; font-size: 11px; color: #666688; line-height: 2; } .controls-hint kbd { display: inline-block; min-width: 22px; padding: 2px 6px; background: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255, 255, 255, 0.15); border-radius: 4px; font-size: 10px; font-family: monospace; color: #ccccee; margin: 0 1px; } /* HUD */ #hud { position: absolute; top: 0; left: 0; right: 0; display: flex; justify-content: space-between; align-items: center; padding: 8px 12px; background: linear-gradient(180deg, rgba(0, 0, 0, 0.7) 0%, transparent 100%); z-index: 20; pointer-events: none; } .hud-item { display: flex; flex-direction: column; align-items: center; gap: 2px; } .hud-label { font-size: 9px; color: #666688; letter-spacing: 1px; } .hud-value { font-size: 14px; font-weight: 700; color: #00f0ff; } .powerup-indicator { flex-direction: row; gap: 4px; font-size: 16px; } #game-canvas { display: block; width: 420px; height: 600px; } /* GAME OVER */ .result-stats { width: 100%; background: rgba(255, 255, 255, 0.03); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 12px; padding: 16px; margin-bottom: 16px; } .stat-row { display: flex; justify-content: space-between; padding: 8px 4px; font-size: 14px; color: #aaaacc; border-bottom: 1px solid rgba(255, 255, 255, 0.05); } .stat-row:last-child { border-bottom: none; } .stat-row.highlight { color: #ffd700; } .stat-value { font-weight: 700; color: #e0e0ff; } .stat-row.highlight .stat-value { color: #ffd700; } .new-record { color: #ffd700; font-weight: 700; font-size: 16px; letter-spacing: 2px; margin-bottom: 16px; animation: pulse 1s ease-in-out infinite alternate; } .new-record.hidden { display: none; } @keyframes pulse { from { transform: scale(1); } to { transform: scale(1.08); } } /* EMPTY STATE */ .empty-icon { font-size: 56px; margin-bottom: 8px; }