Files
slop-game-opus5.5/app/static/css/site.css
T
2026-09-24 17:57:54 +02:00

232 lines
5.0 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* 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; }
}