:root { --bg-1: #08131d; --bg-2: #14293a; --panel: #102132cc; --panel-border: #6ec5ff66; --text: #ecf6ff; --accent: #ffd166; --danger: #ff6b6b; } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; min-height: 100dvh; font-family: "Trebuchet MS", "Segoe UI", sans-serif; color: var(--text); background: linear-gradient(145deg, var(--bg-1), var(--bg-2)); position: relative; overflow: hidden; } .page-bg { position: fixed; inset: 0; pointer-events: none; background-image: radial-gradient(circle at 12% 18%, #3f95d433 0%, transparent 30%), radial-gradient(circle at 84% 80%, #ffd1662c 0%, transparent 28%), repeating-linear-gradient( 0deg, transparent, transparent 36px, #ffffff08 36px, #ffffff08 37px ); } .layout { width: 100%; min-height: 100vh; min-height: 100dvh; margin: 0; padding: 0; position: relative; display: flex; align-items: center; justify-content: center; } .game-shell { margin: 0; position: relative; background: #0f1c2a; border: 2px solid var(--panel-border); border-radius: 0; box-shadow: 0 10px 24px #00000055; width: 100vw; height: 100vh; height: 100dvh; overflow: hidden; display: flex; align-items: center; justify-content: center; } canvas { display: block; width: min(100vw, calc(100dvh * 15 / 13)); height: min(100dvh, calc(100vw * 13 / 15)); aspect-ratio: 15 / 13; }