/* * Glory Defense – Seiten- und Overlay-Styles. * Das Spiel selbst zeichnet Phaser ins Canvas; hier liegen nur Seitenrahmen, * der Disclaimer und die HTML-Overlays (Dialoge, Namenseingabe). */ :root { --gd-navy: #0d1321; --gd-navy-2: #1b2438; --gd-crimson: #c1121f; --gd-gold: #f2c14e; --gd-cream: #f4ecd8; --gd-muted: #a9b1c4; /* Nur Systemschriften: nichts wird mitgeliefert, keine Lizenzfragen. */ --gd-font: Impact, Haettenschweiler, "Arial Narrow Bold", "Arial Black", sans-serif; --gd-font-body: "Segoe UI", system-ui, -apple-system, sans-serif; } * { box-sizing: border-box; } html, body { margin: 0; height: 100%; background: var(--gd-navy); color: var(--gd-cream); font-family: var(--gd-font-body); } a { color: var(--gd-gold); } /* ------------------------------------------------------------------ Spielseite */ .game-page { overflow: hidden; } #game-shell { position: relative; width: 100vw; height: 100vh; height: 100dvh; } #game { position: absolute; inset: 0; } /* Canvas nicht auswählbar/verschiebbar, sonst stört das beim schnellen Klicken. */ #game canvas { display: block; user-select: none; -webkit-user-select: none; touch-action: none; } .boot-message { position: absolute; inset: auto 0 45% 0; margin: 0; text-align: center; font-family: var(--gd-font); letter-spacing: 0.08em; color: var(--gd-gold); } .boot-message--error { color: #ff8a8a; } /* ------------------------------------------------------------------ Overlays */ #overlay-root { position: absolute; inset: 0; pointer-events: none; } .overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(8, 11, 20, 0.72); pointer-events: auto; } .overlay__panel { width: min(720px, 100%); max-height: 100%; overflow-y: auto; padding: 28px 32px; background: var(--gd-navy-2); border: 3px solid var(--gd-gold); box-shadow: 0 0 0 6px var(--gd-crimson), 0 18px 48px rgba(0, 0, 0, 0.6); } .overlay__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 24px; } /* ------------------------------------------------------------------ Disclaimer */ .disclaimer__title { margin: 0 0 12px; font-family: var(--gd-font); font-size: 1.6rem; letter-spacing: 0.06em; color: var(--gd-gold); text-transform: uppercase; } .disclaimer__lead { font-size: 1.15rem; } .disclaimer__list { margin: 0; padding-left: 1.2em; line-height: 1.55; } .disclaimer__list li + li { margin-top: 8px; } /* ------------------------------------------------------------------ Formulare */ .button { display: inline-block; padding: 10px 22px; border: 2px solid var(--gd-gold); background: var(--gd-crimson); color: var(--gd-cream); font: 700 1rem var(--gd-font-body); letter-spacing: 0.06em; text-transform: uppercase; text-decoration: none; cursor: pointer; } .button:hover, .button:focus-visible { background: var(--gd-gold); color: var(--gd-navy); outline: none; } .button--secondary { background: transparent; } .field { display: flex; flex-direction: column; gap: 6px; margin-top: 16px; } .field__label { font-weight: 700; letter-spacing: 0.03em; color: var(--gd-gold); } .field__input { padding: 10px 12px; border: 2px solid var(--gd-muted); background: var(--gd-navy); color: var(--gd-cream); font-size: 1.1rem; } .field__input:focus { border-color: var(--gd-gold); outline: none; } .field__hint { color: var(--gd-muted); font-size: 0.9rem; } .field__error { color: #ff8a8a; min-height: 1.2em; } /* ------------------------------------------------------------------ Game Over */ .stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 10px; margin: 18px 0 8px; } .stats__row { padding: 10px 12px; background: var(--gd-navy); border-left: 4px solid var(--gd-crimson); } .stats dt { color: var(--gd-muted); font-size: 0.85rem; } .stats dd { margin: 4px 0 0; font: 600 1.35rem var(--gd-font); color: var(--gd-gold); } .highscore-list { margin: 16px 0 0; padding: 0; list-style: none; } .highscore-list li { display: grid; grid-template-columns: 3em 1fr auto 4em; gap: 12px; padding: 6px 10px; border-bottom: 1px solid rgba(169, 177, 196, 0.2); } .highscore-list__score, .highscore-list__wave { text-align: right; font-variant-numeric: tabular-nums; } .highscore-list__own { background: rgba(242, 193, 78, 0.18); color: var(--gd-gold); font-weight: 600; } /* ------------------------------------------------------------------ Eigenständige Seiten */ .page { display: flex; align-items: center; justify-content: center; min-height: 100vh; padding: 16px; } .page__panel { width: min(760px, 100%); padding: 32px; background: var(--gd-navy-2); border: 3px solid var(--gd-gold); box-shadow: 0 0 0 6px var(--gd-crimson); } .page__actions { margin-top: 28px; } @media (max-width: 600px) { .overlay__panel, .page__panel { padding: 20px 18px; } .disclaimer__title { font-size: 1.25rem; } }