/* General Styles & Themes */ :root { --font-retro: 'Courier New', Courier, monospace; --radius-m: 8px; --shadow-m: 0 4px 12px rgba(0, 0, 0, 0.2); --shadow-l: 0 8px 24px rgba(0, 0, 0, 0.3); --transition-speed: 0.3s; } body { font-family: var(--font-retro); display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; transition: background-color var(--transition-speed), color var(--transition-speed); } /* --- Theme Definitions --- */ body.dark-theme { --bg-color: #1a1a1a; --surface-color: #2a2a2a; --text-color: #f0f0f0; --primary-color: #00ff00; --accent-color: #ff00ff; --border-color: #444; --canvas-bg: #000; } body.light-theme { --bg-color: #f0f0f0; --surface-color: #ffffff; --text-color: #1a1a1a; --primary-color: #008000; --accent-color: #d900d9; --border-color: #ccc; --canvas-bg: #e0e0e0; } /* --- End Theme Definitions --- */ body { background-color: var(--bg-color); color: var(--text-color); } /* Game Container & Canvas */ .game-container { position: relative; display: flex; justify-content: center; align-items: center; background-color: var(--surface-color); border-radius: var(--radius-m); box-shadow: var(--shadow-l); padding: 24px; /* Increased padding for a larger canvas */ } canvas { background-color: var(--canvas-bg); border-radius: 4px; border: 1px solid var(--border-color); } /* HUD (Heads-Up Display) */ #hud { position: absolute; top: 24px; left: 24px; right: 24px; display: flex; justify-content: space-between; align-items: center; z-index: 10; } #score-container { font-size: 1.8em; font-weight: bold; color: var(--text-color); background: rgba(0,0,0,0.3); padding: 8px 16px; border-radius: var(--radius-m); } body.light-theme #score-container { background: rgba(255,255,255,0.5); } #settings-btn { background: none; border: none; cursor: pointer; padding: 8px; border-radius: 50%; display: flex; align-items: center; justify-content: center; transition: background-color var(--transition-speed); } #settings-btn svg { fill: var(--text-color); transition: transform 0.5s; } #settings-btn:hover { background-color: rgba(128, 128, 128, 0.2); } #settings-btn:hover svg { transform: rotate(90deg); } /* Start Screen */ #start-screen { position: absolute; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.8); display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 20; border-radius: 4px; } body.light-theme #start-screen { background-color: rgba(255, 255, 255, 0.8); } #start-screen h1 { font-size: 5em; color: var(--primary-color); text-shadow: 0 0 10px var(--primary-color); margin-bottom: 32px; } /* Buttons */ #play-btn, .difficulty-btn, #close-settings-btn { font-family: var(--font-retro); font-size: 1.2em; padding: 12px 24px; border: 2px solid var(--primary-color); background-color: transparent; color: var(--primary-color); cursor: pointer; border-radius: var(--radius-m); transition: background-color var(--transition-speed), color var(--transition-speed), box-shadow var(--transition-speed); text-transform: uppercase; } #play-btn:hover, .difficulty-btn:hover, #close-settings-btn:hover { background-color: var(--primary-color); color: var(--surface-color); box-shadow: 0 0 15px var(--primary-color); } .difficulty-btn.active { background-color: var(--primary-color); color: var(--surface-color); box-shadow: 0 0 15px var(--primary-color); } /* Settings Modal */ #settings-backdrop { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.6); display: flex; justify-content: center; align-items: center; z-index: 100; opacity: 1; transition: opacity var(--transition-speed); } #settings-backdrop.hidden { opacity: 0; pointer-events: none; } #settings-panel { background-color: var(--surface-color); padding: 24px 32px; border-radius: var(--radius-m); box-shadow: var(--shadow-l); width: 90%; max-width: 400px; border: 1px solid var(--border-color); display: flex; flex-direction: column; gap: 24px; } #settings-panel h2 { margin: 0; text-align: center; font-size: 2em; color: var(--primary-color); } .settings-group { display: flex; justify-content: space-between; align-items: center; gap: 16px; } .settings-group label { font-size: 1.2em; font-weight: bold; } #difficulty-btns { display: flex; gap: 8px; } .difficulty-btn { font-size: 0.9em; padding: 8px 12px; } #close-settings-btn { margin-top: 16px; border-color: var(--accent-color); color: var(--accent-color); } #close-settings-btn:hover { background-color: var(--accent-color); color: var(--surface-color); box-shadow: 0 0 15px var(--accent-color); } /* Theme Switch */ .theme-switch { position: relative; display: inline-block; width: 60px; height: 34px; } .theme-switch input { opacity: 0; width: 0; height: 0; } .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #444; transition: var(--transition-speed); border-radius: 34px; } .slider:before { position: absolute; content: ""; height: 26px; width: 26px; left: 4px; bottom: 4px; background-color: white; transition: var(--transition-speed); border-radius: 50%; } input:checked + .slider { background-color: var(--primary-color); } body.light-theme input:checked + .slider { background-color: #ccc; } body.light-theme .slider { background-color: #ccc; } body.light-theme input:checked + .slider { background-color: var(--primary-color); } input:checked + .slider:before { transform: translateX(26px); } .hidden { display: none; }