:root {
    --color-black: #000;
    --color-white: #fff;
    --color-gray: #808080;
    --color-link: #000;
    --color-link-hover: #a323b0;
    --font-display: 'Special Elite', 'Courier New', monospace;
    --font-body: 'Special Elite', 'Courier New', monospace;
}

* { box-sizing: border-box; }
button, input, select, textarea { font-family: inherit; }

html, body { height: 100%; }

body {
    margin: 0;
    font-family: var(--font-body);
    font-size: 1.15rem;
    color: #222;
    background: var(--color-white);
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

h1, h2, h3,
.logo,
.sidebar a,
.category-button {
    font-family: var(--font-display);
    letter-spacing: 0.02em;
}

h1 { font-size: 1.7rem; }
h2 { font-size: 1.25rem; }
h3 { font-size: 1.1rem; }

a {
    color: var(--color-link);
    text-decoration: none;
}
a:hover {
    color: var(--color-link-hover);
    text-decoration: underline;
}

/* Links innerhalb von Freitext-Feldern (Creator-Bio, Deck-Beschreibung) sind
   im Fliesstext immer unterstrichen erkennbar, nicht erst bei Hover. */
.rich-text-link {
    text-decoration: underline;
}

.sr-only {
    position: absolute;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* --- Header --- */
.site-header {
    flex-shrink: 0;
    background: var(--color-black);
    color: var(--color-white);
    padding: 1rem 1.5rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
}
/* Nur im Admin-Bereich (siehe admin/templates/header.php, <body
   class="admin-body">) den Header beim Scrollen oben andocken - auf der
   oeffentlichen Seite soll er sich weiterhin ganz normal wegscrollen,
   deshalb bewusst ueber .admin-body gescoped statt global auf
   .site-header. */
.admin-body .site-header {
    position: sticky;
    top: 0;
    z-index: 30;
}
.site-header .logo {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    color: var(--color-white);
    font-size: 1.8rem;
}
.site-header .logo:hover { color: var(--color-link-hover); }
/* Admin-Bereich: User-Badge + Hamburger-Menu-Button als rechte Gruppe,
   damit der Button direkt neben dem Usernamen sitzt statt (durch
   justify-content: space-between auf .site-header) mittig zwischen Logo
   und User-Badge zu schweben. */
.site-header-right {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}
.logo-mark {
    height: 2.1rem;
    width: auto;
    display: block;
}
.site-header .logo:hover .logo-mark { opacity: 0.8; }

.random-deck-link {
    color: var(--color-white);
    font-family: var(--font-display);
    font-size: 1.1rem;
    text-align: center;
    flex: 1;
}
.random-deck-link:hover { color: var(--color-link-hover); }

.header-actions {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.search-toggle {
    display: inline-flex;
    align-items: center;
    background: none;
    border: none;
    cursor: pointer;
    padding: 0.25rem 0.5rem;
}
.search-toggle-icon {
    display: block;
    width: 22px;
    height: 22px;
}
.search-toggle:hover .search-toggle-icon { opacity: 0.7; }

.menu-toggle {
    display: inline-flex;
    background: none;
    border: none;
    color: var(--color-white);
    font-size: 1.8rem;
    line-height: 1;
    cursor: pointer;
    padding: 0.25rem 0.5rem;
}
.menu-toggle:hover { color: var(--color-link-hover); }

.search-form { max-width: 700px; margin: 0 auto; }
.search-form input[type="text"] {
    width: 100%;
    font-family: inherit;
    font-size: 1rem;
    padding: 0.5rem;
    border: 1px solid #999;
    border-radius: 3px;
    margin-bottom: 0.75rem;
}
.search-form input.search-year-input {
    width: 6rem;
    display: inline-block;
    margin-right: 0.75rem;
}
.search-form label[for^="year_"] {
    margin-right: 0.4rem;
}
.search-filters {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 0.75rem;
}
.search-filters fieldset { flex: 1; min-width: 200px; }
.search-form--page { max-width: 700px; margin: 1rem 0 2rem; }
.search-form label { font-weight: bold; margin-right: 0.5rem; }
.search-form select {
    font-family: inherit;
    font-size: 1rem;
    padding: 0.4rem;
    border: 1px solid #999;
    border-radius: 3px;
    margin-right: 0.75rem;
}
.search-form button {
    background: var(--color-black);
    color: var(--color-white);
    border: none;
    padding: 0.6rem 1.1rem;
    font-size: 1rem;
    border-radius: 4px;
    font-weight: bold;
    cursor: pointer;
}
.search-form button:hover { background: var(--color-link-hover); }

.filter-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    background: #f0f0f0;
    border: 1px solid #ccc;
    border-radius: 999px;
    padding: 0.45rem 1rem;
    margin: 0 0.4rem 0.4rem 0;
    font-size: 0.95rem;
    font-weight: normal;
    cursor: pointer;
}
.filter-pill input[type="checkbox"] {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
}
.filter-pill:hover { border-color: var(--color-link-hover); }
.filter-pill:has(input:checked) {
    background: var(--color-black);
    color: var(--color-white);
    border-color: var(--color-black);
}
.filter-pill:has(input:focus-visible) {
    outline: 2px solid var(--color-link-hover);
    outline-offset: 2px;
}

/* --- Layout (waechst, damit der Footer unten anhaftet) --- */
.layout {
    display: flex;
    gap: 1.5rem;
    max-width: 1100px;
    width: 100%;
    margin: 0 auto;
    padding: 1.5rem;
    align-items: flex-start;
    flex: 1 0 auto;
}

.content { flex: 1; min-width: 0; }

/* --- Sidebar-Navigation: auf Desktop/Tablet immer sichtbar --- */
.sidebar {
    width: 200px;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}
.sidebar a { color: var(--color-black); font-weight: bold; font-size: 1.2rem; }
.sidebar a:hover { color: var(--color-link-hover); }
.sidebar hr { width: 100%; border: none; border-top: 1px solid #ccc; }

/* Nur im Admin-Bereich: Sidebar bleibt beim Scrollen sichtbar, dockt
   direkt unter dem (ebenfalls sticky) schwarzen Header an - dieselbe
   --admin-header-height-Variable wie beim Header selbst (siehe
   admin/templates/footer.php). Eigene max-height + Scroll fuer den Fall,
   dass das Menu irgendwann laenger wird als die sichtbare Fensterhoehe.
   Auf der oeffentlichen Seite (kein .admin-body) bewusst nicht gesetzt -
   dort soll die Navigation ganz normal mitscrollen. */
.admin-body .sidebar {
    position: sticky;
    top: var(--admin-header-height, 0px);
    max-height: calc(100vh - var(--admin-header-height, 0px));
    overflow-y: auto;
}

/* Ein-/ausklappbare Sidebar (aktuell nur im Admin-Bereich per Button
   genutzt, funktioniert aber auf jeder Breite, nicht nur mobil - dafuer
   war die feste 700px-Grenze der oeffentlichen Seite nicht gedacht,
   siehe admin/templates/header.php + footer.php). */
.sidebar-collapsed .sidebar { display: none; }

.deck-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 1.5rem;
    margin: 1rem 0 2rem;
}
.deck-card { text-align: center; }
.deck-card a {
    display: flex;
    flex-direction: column;
    height: 100%;
    text-decoration: none;
}
.deck-card img {
    width: 100%;
    aspect-ratio: 3 / 4;
    object-fit: cover;
    display: block;
    margin-bottom: 0.4rem;
    border-radius: 4px;
    background: #f0f0f0;
}
.deck-title { font-weight: bold; }
.deck-role { display: block; font-size: 0.95rem; color: var(--color-gray); }

.pagination {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin: 1.5rem 0;
}
.pagination-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.2rem;
    height: 2.2rem;
    padding: 0 0.6rem;
    border: 1px solid #ccc;
    border-radius: 4px;
    color: var(--color-black);
    text-decoration: none;
}
.pagination-link:hover { border-color: var(--color-link-hover); color: var(--color-link-hover); }
.pagination-link.is-current {
    background: var(--color-black);
    color: var(--color-white);
    border-color: var(--color-black);
}

.category-buttons {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 0.75rem;
    margin: 1rem 0;
}
.category-button {
    display: block;
    background: var(--color-gray);
    color: var(--color-white);
    text-align: center;
    padding: 0.75rem;
    font-size: 1.2rem;
}
.category-button:hover { background: var(--color-link-hover); color: var(--color-white); text-decoration: none; }

.suggest-deck-banner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    background: #f4f4f4;
    border: 1px solid #ddd;
    border-radius: 6px;
    padding: 1rem 1.25rem;
    margin: 1.5rem 0;
}
.suggest-deck-banner p { margin: 0; font-size: 1.05rem; }
.suggest-deck-banner .btn-link { flex-shrink: 0; }


.deck-detail { display: flex; gap: 1.5rem; flex-wrap: wrap; margin: 1rem 0; }
.deck-detail-image img { max-width: 300px; height: auto; }
.deck-detail-meta p { margin: 0.3rem 0; }

.deck-gallery-thumbs {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.6rem;
    max-width: 300px;
}
.deck-gallery-thumbs img {
    width: 64px;
    height: 64px;
    object-fit: cover;
    border-radius: 3px;
    border: 1px solid #ddd;
    cursor: pointer;
}
.deck-gallery-thumbs img:hover,
.deck-gallery-thumbs img:focus-visible {
    border-color: var(--color-link-hover);
    outline: none;
}
.deck-gallery-thumbs img.is-active {
    border-color: var(--color-black);
    border-width: 2px;
}

.tags { margin-top: 0.5rem; }
.tag {
    display: inline-flex;
    align-items: center;
    background: #f0f0f0;
    border: 1px solid #ccc;
    border-radius: 999px;
    padding: 0.45rem 1rem;
    margin: 0 0.4rem 0.4rem 0;
    font-size: 0.95rem;
    font-family: var(--font-body);
    color: var(--color-black);
    text-decoration: none;
    cursor: pointer;
}
.tag:hover {
    border-color: var(--color-link-hover);
    color: var(--color-link-hover);
    text-decoration: none;
}
.tags--spaced { margin-top: 1.25rem; }

.deck-editions {
    margin: 1.25rem 0;
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 0.75rem 1rem;
}
.deck-editions summary {
    cursor: pointer;
    font-weight: bold;
    font-family: var(--font-display);
}
.deck-editions summary:hover { color: var(--color-link-hover); }
.deck-editions-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 0.75rem;
}
.deck-editions-table th, .deck-editions-table td {
    text-align: left;
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid #eee;
    font-size: 0.95rem;
}
.deck-editions-table th { font-family: var(--font-display); }

.deck-description { line-height: 1.5; margin-bottom: 2rem; }

.ratings-list {
    list-style: none;
    margin: 1rem 0;
    padding: 0;
}
.ratings-list-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.6rem 0;
    border-bottom: 1px solid #eee;
}
.ratings-list-stars { font-size: 1.1rem; color: #ccc; white-space: nowrap; }
.ratings-list-stars .is-filled { color: var(--color-black); }
.creator-bio { line-height: 1.5; margin: 1rem 0 2rem; }

/* --- Affiliate-Angebote --- */
.deck-offers { margin: 1.5rem 0 2rem; }
.deck-similar { margin: 1.5rem 0 2rem; }
.affiliate-disclaimer { font-size: 0.95rem; color: var(--color-gray); margin-top: 0; }
.offer-buttons {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    max-width: 420px;
}
p.affiliate-report-hint {
    margin-top: 1.25rem;
}
.offer-button {
    display: block;
    background: #f5901e;
    color: var(--color-black);
    text-align: center;
    padding: 0.9rem 1rem;
    border-radius: 4px;
    font-weight: bold;
    font-size: 1.05rem;
}
.offer-button:hover { background: #ffab4d; color: var(--color-black); text-decoration: none; }
.offer-edition { display: block; font-weight: normal; font-size: 0.9rem; margin-top: 0.2rem; }
/* Shop-spezifische Farben kommen jetzt dynamisch aus shops.color (Admin-
   Bereich /admin/shops), siehe das inline <style>-Tag in views/deck.php.
   Diese .offer-button-Basisregel bleibt als Fallback, falls ein Shop mal
   keine Farbe hinterlegt hat. */

/* Beendete Kickstarter-Kampagnen (kickstarter_status = finished) werden
   grau statt in der Kickstarter-Markenfarbe angezeigt - bewusst nicht
   ueber die Admin-Shop-Farbe konfigurierbar, gilt nur fuer diesen einen
   Status. Element- + Doppel-Klassen-Selektor, damit die Regel zuverlaessig
   ueber dem dynamisch generierten Kickstarter-Farb-<style>-Tag steht,
   unabhaengig von dessen Position im Dokument. */
a.offer-button.offer-button--kickstarter-finished,
a.offer-button.offer-button--kickstarter-finished:hover {
    background: #9a9a9a;
    color: #ffffff;
}

/* --- Login/Registrierung --- */
.auth-form {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    max-width: 380px;
    margin: 1rem 0;
}
.auth-form label { font-weight: bold; margin-top: 0.6rem; }
.auth-form input[type="email"],
.auth-form input[type="password"],
.auth-form input[type="text"],
.auth-form select,
.auth-form textarea {
    font-family: inherit;
    font-size: 1rem;
    padding: 0.5rem;
    border: 1px solid #999;
    border-radius: 3px;
    resize: vertical;
}
.auth-form .checkbox-label {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: normal;
    margin-top: 0.6rem;
}
.auth-form button {
    margin-top: 1rem;
    align-self: flex-start;
    background: var(--color-black);
    color: var(--color-white);
    border: none;
    padding: 0.7rem 1.4rem;
    font-size: 1rem;
    border-radius: 4px;
    cursor: pointer;
}
.auth-form button:hover { background: var(--color-link-hover); }

/* Angebotsformular: Felder, die per JS je nach gewaehltem Shop ein-/ausgeblendet
   werden (siehe admin/views/deck_offer_form.php), sollen intern denselben
   Abstand wie die uebrigen Formularfelder behalten. */
.offer-field {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

/* Honeypot-Feld gegen simple Spam-Bots: fuer Menschen unsichtbar, aber
   weiterhin im DOM (nicht display:none), damit es fuer Screenreader als
   "nicht ausfuellen" erkennbar bleibt und Bots es trotzdem finden. */
.honeypot {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.field-hint { font-size: 0.95rem; color: var(--color-gray); margin: 0.2rem 0 0; }
.char-counter {
    font-size: 0.85rem;
    color: var(--color-gray);
    margin: 0.15rem 0 0;
    min-height: 1.1em;
}
.char-counter--warning {
    color: #8a1f1f;
    font-weight: bold;
}
.form-error {
    background: #fbeaea;
    color: #8a1f1f;
    border: 1px solid #e5b3b3;
    border-radius: 4px;
    padding: 0.6rem 0.9rem;
    margin: 0.5rem 0;
}
.debug-note {
    font-size: 0.95rem;
    background: #fff8dc;
    border: 1px dashed #cbb35a;
    padding: 0.6rem 0.9rem;
    border-radius: 4px;
    word-break: break-all;
}
.nav-user { font-weight: bold; }

/* --- Like/Wunschliste/Sammlung --- */
.deck-interactions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
    margin: 0.75rem 0 1.25rem;
}
.interaction-form { display: inline-block; }

.username-suggestions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 0.5rem 0 1rem;
}
.username-suggestion-form { display: inline-block; }

.pill-button {
    display: inline-block;
    font-family: inherit;
    font-size: 0.95rem;
    background: #f0f0f0;
    border: 1px solid #ccc;
    border-radius: 999px;
    padding: 0.45rem 1rem;
    cursor: pointer;
    text-decoration: none;
}
.pill-button:hover { border-color: var(--color-link-hover); color: var(--color-link-hover); text-decoration: none; }
.pill-button.is-active {
    background: var(--color-black);
    color: var(--color-white);
    border-color: var(--color-black);
}
.pill-button--icon {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
}
.pill-button-icon {
    width: 1.1rem;
    height: 1.1rem;
    display: block;
}
.empty-state-icon {
    width: 1.1rem;
    height: 1.1rem;
    display: inline-block;
    vertical-align: text-bottom;
}

/* --- Bewertung --- */
.deck-rating { margin: 1.5rem 0; }
.rating-summary { color: var(--color-gray); margin-top: 0; }
.rating-form {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0;
    margin-top: 0.5rem;
}
.rating-label { font-weight: bold; margin-right: 0.4rem; }
.star-button {
    font-family: inherit;
    background: none;
    border: none;
    font-size: 2.2rem;
    color: #ccc;
    cursor: pointer;
    padding: 0.1rem 0.02rem;
    line-height: 1;
}
.star-button.is-filled { color: var(--color-black); }
.star-button:hover { color: var(--color-link-hover); }

/* --- Admin-Bereich --- */
.admin-user-badge {
    color: var(--color-white);
    font-size: 0.95rem;
    opacity: 0.85;
}
.admin-form { max-width: 520px; }
.admin-form textarea {
    font-family: inherit;
    font-size: 1rem;
    padding: 0.5rem;
    border: 1px solid #999;
    border-radius: 3px;
    resize: vertical;
}
.admin-table {
    width: 100%;
    border-collapse: collapse;
    margin: 1rem 0;
}
.admin-table th, .admin-table td {
    text-align: left;
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid #ddd;
}
.admin-table th { font-family: var(--font-display); }

/* --- Admin: Datenbank-Ansicht (/admin/database) --- */
.db-viewer-intro {
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
}
.db-viewer-toc {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem 0.6rem;
    margin: 1rem 0 0;
    padding: 0.75rem 1rem;
    background: #f4f4f4;
    border-radius: 4px;
    max-height: 8rem;
    overflow-y: auto;
}
.db-viewer-toc a {
    font-size: 0.9rem;
    white-space: nowrap;
}
.db-viewer-sql-runner {
    margin: 1.5rem 0 2rem;
    padding: 1rem 1.25rem;
    background: #fbfaf6;
    border: 1px solid #e6e0cf;
    border-radius: 4px;
}
.db-viewer-sql-runner h2 { margin-top: 0; }
.db-viewer-sql-runner form {
    max-width: none;
}
.db-viewer-sql-runner textarea {
    width: 100%;
    box-sizing: border-box;
    font-family: 'Courier New', monospace;
    font-size: 0.9rem;
    resize: vertical;
}
.db-viewer-sql-runner button {
    align-self: flex-start;
}
.db-viewer-sql-warning { color: #8a1f1f; }
.db-viewer-rowcount {
    font-family: var(--font-body);
    font-size: 0.9rem;
    font-weight: normal;
    color: var(--color-gray);
}
.db-viewer-coltype {
    display: block;
    font-family: var(--font-body);
    font-size: 0.75rem;
    font-weight: normal;
    color: var(--color-gray);
    white-space: nowrap;
}
.db-viewer-null {
    color: #aaa;
    font-style: italic;
}
.db-viewer-table-wrap {
    overflow-x: auto;
    margin-bottom: 2rem;
}
.db-viewer-table th, .db-viewer-table td {
    max-width: 320px;
    overflow-wrap: break-word;
    vertical-align: top;
    font-size: 0.9rem;
}
.db-viewer-table tbody tr:hover { background: #fafafa; }
.btn-link {
    display: inline-block;
    background: var(--color-black);
    color: var(--color-white);
    padding: 0.6rem 1.1rem;
    border-radius: 4px;
    font-weight: bold;
}
.btn-link:hover { background: var(--color-link-hover); color: var(--color-white); text-decoration: none; }

.text-link-plain {
    display: inline-block;
    color: var(--color-black);
    text-decoration: underline;
    font-weight: bold;
}
.text-link-plain:hover { color: var(--color-link-hover); }
.rating-remove-button {
    background: none;
    border: none;
    padding: 0;
    margin-left: 0.5rem;
    font-size: 0.9rem;
    cursor: pointer;
}
.form-success {
    background: #eaf7ea;
    color: #1f5a1f;
    border: 1px solid #b3e0b3;
    border-radius: 4px;
    padding: 0.6rem 0.9rem;
    margin: 0.5rem 0;
}
.admin-fieldset {
    border: 1px solid #ccc;
    border-radius: 4px;
    padding: 0.8rem 1rem;
    margin-top: 1rem;
    margin-bottom: 1.25rem;
}
.admin-fieldset legend { font-family: var(--font-display); padding: 0 0.4rem; }
.admin-person-row {
    display: flex;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
    flex-wrap: wrap;
}
.admin-person-row select { font-family: inherit; padding: 0.4rem; }
.admin-person-row .creator-search {
    font-family: inherit;
    font-size: 1rem;
    padding: 0.4rem;
    border: 1px solid #999;
    border-radius: 3px;
    min-width: 240px;
}
.admin-tag-checkbox {
    display: inline-flex;
    margin: 0 1rem 0.4rem 0;
    font-weight: normal;
}
.admin-form select {
    font-family: inherit;
    font-size: 1rem;
    padding: 0.5rem;
    border: 1px solid #999;
    border-radius: 3px;
}
.admin-form input[type="file"] { margin-top: 0.3rem; }
.color-picker {
    display: block;
    width: 4rem;
    height: 2.5rem;
    padding: 0.2rem;
    border: 1px solid #999;
    border-radius: 4px;
    cursor: pointer;
}
.shop-color-swatch {
    display: inline-block;
    width: 1.4rem;
    height: 1.4rem;
    border-radius: 3px;
    border: 1px solid #999;
    vertical-align: middle;
    margin-right: 0.4rem;
}

.quick-ranges {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 0.75rem;
}

.date-range-form {
    display: flex;
    align-items: flex-end;
    gap: 0.75rem;
    flex-wrap: wrap;
    max-width: none;
    margin: 0.75rem 0 1.25rem;
}
.date-range-form label { margin-top: 0; }
.date-range-form input[type="date"] {
    font-family: inherit;
    font-size: 1rem;
    padding: 0.45rem;
    border: 1px solid #999;
    border-radius: 3px;
}
.date-range-form button {
    margin-top: 0;
    background: var(--color-black);
    color: var(--color-white);
    border: none;
    padding: 0.55rem 1.2rem;
    border-radius: 4px;
    font-weight: bold;
    cursor: pointer;
}
.date-range-form button:hover { background: var(--color-link-hover); }

.stat-cards {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
    margin: 1rem 0 1.5rem;
}
.stat-card {
    background: #f4f4f4;
    border: 1px solid #ddd;
    border-radius: 6px;
    padding: 1rem 1.5rem;
    min-width: 180px;
    text-align: center;
}
.stat-number {
    display: block;
    font-family: var(--font-display);
    font-size: 2rem;
    font-weight: bold;
}
.stat-label {
    display: block;
    font-size: 0.9rem;
    color: var(--color-gray);
    margin-top: 0.3rem;
}
.btn-danger {
    background: #a31515;
    color: var(--color-white);
    border: none;
    padding: 0.6rem 1.1rem;
    border-radius: 4px;
    font-weight: bold;
    cursor: pointer;
    margin-right: 0.75rem;
}
.btn-danger:hover { background: #7a0f0f; }
.btn-danger-link {
    display: inline-block;
    background: #a31515;
    color: var(--color-white);
    padding: 0.6rem 1.1rem;
    border-radius: 4px;
    font-weight: bold;
    text-decoration: none;
}
.btn-danger-link:hover { background: #7a0f0f; color: var(--color-white); text-decoration: none; }
.admin-image-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-bottom: 0.75rem;
}
.admin-image-item {
    text-align: center;
    font-size: 0.95rem;
}
.admin-image-item img {
    width: 100px;
    height: 100px;
    object-fit: cover;
    border-radius: 3px;
    border: 1px solid #ddd;
    display: block;
    margin-bottom: 0.3rem;
}

/* --- Footer --- */
.site-footer {
    flex-shrink: 0;
    background: var(--color-black);
    color: var(--color-white);
    padding: 1rem 1.5rem;
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
    font-size: 0.95rem;
}
.site-footer a { color: var(--color-white); }
.site-footer a:hover { color: var(--color-link-hover); }
.lang-switch a { margin: 0 0.25rem; }
.lang-switch a.active { text-decoration: underline; font-weight: bold; }
.legal-links a { margin-left: 1rem; }

.instagram-link { display: inline-flex; align-items: center; }
.instagram-icon {
    width: 1.3rem;
    height: 1.3rem;
    display: block;
    vertical-align: middle;
}
.instagram-link:hover { opacity: 0.75; }

.country-switch-form {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.9rem;
}
.country-switch-form label { color: var(--color-white); }
.country-switch-form select {
    font-family: inherit;
    font-size: 0.9rem;
    padding: 0.25rem 0.4rem;
    border-radius: 3px;
    border: 1px solid #666;
    max-width: 150px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.country-switch-form button {
    background: transparent;
    color: var(--color-white);
    border: 1px solid var(--color-white);
    border-radius: 3px;
    padding: 0.25rem 0.6rem;
    font-size: 0.9rem;
    cursor: pointer;
}
.country-switch-form button:hover { background: var(--color-white); color: var(--color-black); }

.cookie-banner {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1000;
    background: var(--color-black);
    color: var(--color-white);
    padding: 1rem 1.5rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
    box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.3);
}
.cookie-banner p { margin: 0; max-width: 640px; }
.cookie-banner a:not(.btn-link):not(.pill-button) { color: var(--color-white); text-decoration: underline; }
.cookie-banner-actions {
    display: flex;
    gap: 0.6rem;
    flex-shrink: 0;
}
.cookie-banner .btn-link { background: var(--color-white); color: var(--color-black); }
.cookie-banner .btn-link:hover { background: var(--color-link-hover); color: var(--color-white); }
.cookie-banner .btn-link.cookie-decline { background: #d5d5d5; }
.cookie-banner .btn-link.cookie-decline:hover { background: var(--color-link-hover); color: var(--color-white); }

/* --- Mobil: Menü per Hamburger ein-/ausklappbar --- */
@media (max-width: 700px) {
    .layout { flex-direction: column; }

    .deck-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 1rem;
    }
    .deck-card {
        max-width: none;
        margin: 0;
    }

    #site-nav {
        display: none;
        order: -1;
        width: 100%;
        background: #f4f4f4;
        padding: 1rem;
        border-radius: 4px;
    }
    #site-nav.is-open { display: flex; }

    .site-footer {
        flex-direction: column;
        align-items: center;
        text-align: center;
    }
    .country-switch-form select {
        max-width: 110px;
    }
    .legal-links a { margin: 0 0.5rem; }
}

/* --- Desktop/Tablet: Menü der oeffentlichen Seite immer sichtbar, kein
   Hamburger. Bewusst per ID (#menu-toggle/#site-nav) statt der geteilten
   .menu-toggle/.sidebar-Klassen, sonst wuerde das versehentlich auch die
   unabhaengig ein-/ausklappbare Admin-Sidebar sperren (siehe
   admin/templates/header.php + footer.php). */
@media (min-width: 701px) {
    #menu-toggle { display: none; }
    #site-nav { display: flex !important; }
}
