/* ============================================================================
   Stroheimer Hof — öffentliche Seiten
   Farbwelt und Typografie nach Design-Vorgabe; Struktur und Klassennamen
   entsprechen dem Bestand, damit die Seiten 1:1 übertragbar bleiben.
   Mobile-first, Breakpoints wie im Bestand: 768 / 1024 / 1400.
   ========================================================================= */

:root {
    --gruen: #2d5016;
    --gruen-dunkel: #243d13;
    --gold: #c9a84c;
    --gold-dunkel: #a98c37;
    /* Aufgehellte Goldstufe ausschliesslich fuer die Eyebrow-Zeile im Hero:
       --gold erreicht dort keinen AA-Kontrast (2.7:1 ueber dem Foto, 4.1:1 auf
       der flachen gruenen Flaeche), diese Stufe schon. */
    --gold-hell: #f5e0a3;
    --beige: #f7f3ec;
    --karte: #fdfbf7;
    --rahmen: #e4dbc9;
    --text: #3a2f2f;
    --text-sekundaer: #5a4f47;
    --weiss: #ffffff;

    --radius-s: 6px;
    --radius-m: 8px;
    --radius-l: 10px;

    --serif: 'Playfair Display', Georgia, 'Times New Roman', serif;
    --sans: 'Open Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

    --container: 1200px;
}

*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
    margin: 0;
    font-family: var(--sans);
    font-weight: 400;
    font-size: 1rem;
    line-height: 1.7;
    color: var(--text);
    background: var(--weiss);
    -webkit-font-smoothing: antialiased;
}

img { max-width: 100%; height: auto; display: block; }

a { color: var(--gruen); }

/* Sichtbarer Fokus für Tastaturbedienung */
:focus-visible {
    outline: 3px solid var(--gold);
    outline-offset: 2px;
}

/* ---------------------------------------------------------------- Typografie */

h1, h2, h3, h4 {
    font-family: var(--serif);
    font-weight: 600;
    color: var(--gruen);
    line-height: 1.25;
    margin: 0 0 1rem;
}

h1 { font-size: 2.125rem; }
h2 { font-size: 1.75rem; }
h3 { font-size: 1.3rem; }
h4 { font-size: 1.0625rem; }

/* Goldene Akzentlinie unter Abschnittsüberschriften — laut Vorgabe das
   einzige dekorative Element neben der CTA-Fläche. */
.section > .container > h2,
.welcome > h2 {
    position: relative;
    padding-bottom: 0.75rem;
}

.section > .container > h2::after,
.welcome > h2::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 64px;
    height: 2px;
    background: var(--gold);
}

.section > .container > h2.text-center::after {
    left: 50%;
    transform: translateX(-50%);
}

p { margin: 0 0 1rem; }
p:last-child { margin-bottom: 0; }

/* Der schwerste geladene Schnitt ist 600. Ohne diese Regel würde der Browser
   für die Vorgabe "bolder" auf 700 zielen und die Schrift künstlich fetten. */
strong, b { font-weight: 600; }

/* ---------------------------------------------------------------- Layout */

.container {
    width: 100%;
    max-width: var(--container);
    margin: 0 auto;
    padding: 0 1.25rem;
}

.section { padding: 3rem 0; }
.section-alt { background: var(--beige); }

.text-center { text-align: center; }
.text-left { text-align: left; }
.mb-md { margin-bottom: 1rem; }
.mb-lg { margin-bottom: 2rem; }
.mt-md { margin-top: 1rem; }
.mt-lg { margin-top: 2rem; }

/* ---------------------------------------------------------------- Icons */

/* Tabler Icons (outline) werden als Inline-SVG eingebettet — lokal, kein CDN. */
.icon {
    width: 1.5rem;
    height: 1.5rem;
    stroke: currentColor;
    stroke-width: 1.5;
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
    flex: none;
}

.icon-lg { width: 2.25rem; height: 2.25rem; }

/* ---------------------------------------------------------------- Header / Navigation */

.header {
    position: sticky;
    top: 0;
    z-index: 50;
    background: var(--gruen);
    border-bottom: 1px solid var(--gruen-dunkel);
}

.nav-container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 64px;
    gap: 1rem;
}

.logo {
    font-family: var(--serif);
    font-weight: 600;
    font-size: 1.25rem;
    color: var(--weiss);
    text-decoration: none;
    letter-spacing: 0.01em;
}

.menu-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    padding: 0;
    background: transparent;
    border: 1px solid rgba(255, 255, 255, 0.35);
    border-radius: var(--radius-s);
    color: var(--weiss);
    cursor: pointer;
}

.nav-menu {
    display: none;
    list-style: none;
    margin: 0;
    padding: 0;
}

/* Ohne JavaScript bleibt das Menü zugeklappt; das Burger-Menü ist laut
   Abnahmekriterium die einzige erlaubte JS-Abhängigkeit. */
.nav-menu.active {
    display: block;
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    background: var(--gruen-dunkel);
    padding: 0.5rem 1.25rem 1rem;
}

.nav-menu li { margin: 0; }

.nav-link {
    display: block;
    padding: 0.75rem 0;
    color: rgba(255, 255, 255, 0.92);
    text-decoration: none;
    font-weight: 500;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

.nav-link:hover { color: var(--weiss); }

.nav-link.active { color: var(--gold); }

/* ---------------------------------------------------------------- Hero */

/* Foto des Bestands mit dunkelgruener Overlay-Flaeche darueber. Seiten ohne
   Hero-Foto (Fehlerseiten, Reservierungsverwaltung) bleiben auf der flachen
   gruenen Flaeche — dort rendert <HeroImage> nicht und damit auch kein Overlay. */
.hero {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    background: var(--gruen);
    color: var(--weiss);
    padding: 3.5rem 0;
    text-align: left;
}

/* <picture> traegt die Positionierung, das <img> fuellt sie aus. So entsteht
   keine leere Inline-Box im Fluss, die den Hero hoeher machen wuerde. */
.hero > picture {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.hero-image {
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
    object-position: center;
}

/* Deckkraft ist nicht frei gewaehlt, sondern aus den Fotos gerechnet: ueber der
   hellsten Stelle aller sechs Hero-Bilder ergeben sich Headline 6.1:1,
   Tagline 5.0:1, Eyebrow 4.7:1 und CTA-Rand 3.4:1 — alle ueber WCAG AA. */
.hero-overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    background: rgba(36, 61, 19, 0.78);
}

.hero-content {
    position: relative;
    z-index: 2;
    max-width: var(--container);
    margin: 0 auto;
    padding: 0 1.25rem;
}

.hero-eyebrow {
    display: block;
    margin-bottom: 0.75rem;
    color: var(--gold-hell);
    font-family: var(--sans);
    font-weight: 600;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.18em;
}

.hero h1 {
    color: var(--weiss);
    font-size: 2.25rem;
    margin-bottom: 0.75rem;
}

.hero-tagline {
    font-size: 1.0625rem;
    color: rgba(255, 255, 255, 0.85);
    max-width: 42rem;
    margin-bottom: 0;
}

.hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1.75rem;
}

.hero-compact { padding: 2.5rem 0; }

/* ---------------------------------------------------------------- Buttons */

.btn {
    display: inline-block;
    padding: 0.75rem 1.5rem;
    border: 1px solid transparent;
    border-radius: var(--radius-s);
    font-family: var(--sans);
    font-weight: 600;
    font-size: 0.9375rem;
    line-height: 1.4;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.btn-primary {
    background: var(--gold);
    border-color: var(--gold);
    color: var(--gruen-dunkel);
}

.btn-primary:hover {
    background: var(--gold-dunkel);
    border-color: var(--gold-dunkel);
}

/* Outline hell — nur auf dunklem Grund im Hero */
.btn-secondary {
    background: transparent;
    border-color: rgba(255, 255, 255, 0.6);
    color: var(--weiss);
}

.btn-secondary:hover {
    background: rgba(255, 255, 255, 0.12);
    border-color: var(--weiss);
}

.btn-lg { padding: 0.9375rem 2rem; font-size: 1rem; }

.btn-block { display: block; width: 100%; }

/* ---------------------------------------------------------------- Karten & Raster */

.welcome {
    max-width: 50rem;
}

.welcome p { color: var(--text-sekundaer); }

.features,
.gallery,
.rooms,
.event-categories,
.menu-items {
    display: grid;
    gap: 1.25rem;
    grid-template-columns: 1fr;
}

.feature-box,
.room-card,
.event-category,
.menu-item,
.hours-box {
    background: var(--karte);
    border: 1px solid var(--rahmen);
    border-radius: var(--radius-l);
    padding: 1.5rem;
}

.feature-box { text-align: left; }

.feature-icon {
    color: var(--gold-dunkel);
    margin-bottom: 0.875rem;
}

/* Zentriertes Symbol (Gastgarten). Frueher ein style-Attribut — die
   Content-Security-Policy laesst keine Inline-Stile mehr zu. */
.feature-icon--centered {
    display: flex;
    justify-content: center;
}

.feature-box h3,
.event-category h3 { margin-bottom: 0.5rem; }

.feature-box p,
.event-category p,
.menu-item p,
.room-content p { color: var(--text-sekundaer); }

.menu-item { padding: 1.125rem 1.25rem; }
.menu-item h4 { margin-bottom: 0.25rem; color: var(--text); }
.menu-item p { margin: 0; font-size: 0.9375rem; }

.menu-section { margin-bottom: 2.5rem; }
.menu-section:last-child { margin-bottom: 0; }
.menu-section > h3 { margin-bottom: 1rem; }
.menu-section > h3 small { font-family: var(--sans); font-size: 0.8125rem; font-weight: 400; }

.room-card { padding: 0; overflow: hidden; }
.room-image img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.room-content { padding: 1.5rem; }

.room-content .capacity {
    display: inline-block;
    margin-bottom: 0.75rem;
    padding: 0.125rem 0.625rem;
    background: var(--beige);
    border: 1px solid var(--rahmen);
    border-radius: 999px;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--gruen);
}

.room-content ul,
.event-category ul {
    margin: 1rem 0 0;
    padding-left: 1.25rem;
    color: var(--text-sekundaer);
}

.room-content li,
.event-category li { margin-bottom: 0.25rem; }

/* ---------------------------------------------------------------- Galerie */

.gallery-item {
    border-radius: var(--radius-m);
    overflow: hidden;
    border: 1px solid var(--rahmen);
}

.gallery-image {
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
}

/* ---------------------------------------------------------------- Öffnungszeiten */

.hours-box { max-width: 37.5rem; margin: 0 auto; }

.hours-list { margin-top: 1rem; }

.hours-item,
.hours-item-footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.625rem 0;
    border-bottom: 1px solid var(--rahmen);
}

.hours-item:last-child { border-bottom: none; }

.hours-note {
    margin-top: 1rem;
    font-size: 0.9375rem;
    font-style: italic;
    color: var(--text-sekundaer);
    text-align: center;
}

/* ---------------------------------------------------------------- Ankündigungen */

.sitewide-alert { background: var(--beige); }

.alert-banner {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    max-width: var(--container);
    margin: 0 auto;
    padding: 0.875rem 1.25rem;
    border-left: 3px solid var(--gruen);
}

.alert-banner h4 { margin: 0 0 0.125rem; font-size: 1rem; }
.alert-banner p { margin: 0; font-size: 0.9375rem; color: var(--text-sekundaer); }

.alert-info    { border-left-color: #2f6f9f; }
.alert-success { border-left-color: var(--gruen); }
.alert-warning { border-left-color: var(--gold-dunkel); }
.alert-danger  { border-left-color: #a02c2c; }

.alert-icon { color: var(--text-sekundaer); }

.announcements-list {
    display: grid;
    gap: 1rem;
    grid-template-columns: 1fr;
    margin-top: 1.5rem;
}

.announcement-card {
    background: var(--karte);
    border: 1px solid var(--rahmen);
    border-left: 3px solid var(--gruen);
    border-radius: var(--radius-m);
    padding: 1.25rem 1.5rem;
}

.announcement-info    { border-left-color: #2f6f9f; }
.announcement-success { border-left-color: var(--gruen); }
.announcement-warning { border-left-color: var(--gold-dunkel); }
.announcement-danger  { border-left-color: #a02c2c; }

.announcement-header {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    margin-bottom: 0.5rem;
}

.announcement-header h3 { margin: 0; font-size: 1.125rem; }
.announcement-icon { color: var(--text-sekundaer); }
.announcement-body { color: var(--text-sekundaer); }
.announcement-body p:last-child { margin-bottom: 0; }

.announcements-header p { color: var(--text-sekundaer); }

/* ---------------------------------------------------------------- Kontaktseite */

.contact-section {
    display: grid;
    gap: 1.5rem;
    grid-template-columns: 1fr;
}

.contact-info {
    background: var(--gruen);
    color: var(--weiss);
    border-radius: var(--radius-l);
    padding: 1.75rem;
}

.contact-info h2,
.contact-info h3 { color: var(--weiss); }
.contact-info h2 { padding-bottom: 0.75rem; position: relative; }

.contact-info h2::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 64px;
    height: 2px;
    background: var(--gold);
}

.contact-info a { color: var(--weiss); font-weight: 600; }

.info-item {
    display: flex;
    align-items: flex-start;
    gap: 0.875rem;
    padding: 1rem 0;
    border-top: 1px solid rgba(255, 255, 255, 0.15);
}

.info-item h3 { font-size: 1rem; margin-bottom: 0.25rem; }
.info-item p { margin: 0; font-size: 0.9375rem; color: rgba(255, 255, 255, 0.88); }
.info-icon { color: var(--gold); }

.contact-form {
    background: var(--karte);
    border: 1px solid var(--rahmen);
    border-radius: var(--radius-l);
    padding: 1.75rem;
}

/* ---------------------------------------------------------------- Formular */

.form-group { margin-bottom: 1.125rem; }

.form-group label {
    display: block;
    margin-bottom: 0.375rem;
    font-weight: 600;
    font-size: 0.9375rem;
    color: var(--text);
}

.form-control {
    display: block;
    width: 100%;
    padding: 0.625rem 0.75rem;
    font-family: var(--sans);
    font-size: 1rem;
    color: var(--text);
    background: var(--weiss);
    border: 1px solid var(--rahmen);
    border-radius: var(--radius-s);
}

.form-control:focus {
    border-color: var(--gruen);
    outline: 3px solid rgba(201, 168, 76, 0.35);
    outline-offset: 0;
}

textarea.form-control { min-height: 8rem; resize: vertical; }

.field-error {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.875rem;
    color: #a02c2c;
}

/* Honeypot: für Menschen unsichtbar, für Bots im DOM vorhanden. */
.hp-field {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.form-hint {
    margin-top: 1rem;
    font-size: 0.875rem;
    font-style: italic;
    color: var(--text-sekundaer);
}

.form-note {
    margin-bottom: 1.5rem;
    padding: 0.875rem 1rem;
    background: var(--beige);
    border-left: 3px solid var(--gold);
    border-radius: var(--radius-s);
    font-size: 0.9375rem;
}

.phone-box {
    margin-top: 1.75rem;
    padding: 1.125rem;
    background: var(--beige);
    border-radius: var(--radius-m);
    text-align: center;
}

.phone-box p { margin: 0; }
.phone-box .phone-number { font-size: 1.1875rem; font-weight: 600; }

.alert-success-box,
.alert-error-box {
    padding: 1.25rem;
    border-radius: var(--radius-m);
    margin-bottom: 1rem;
}

.alert-success-box {
    background: #eaf3e4;
    border: 1px solid #c2ddb2;
    color: #24491a;
    text-align: center;
}

.alert-success-box h2 { color: #24491a; }

.alert-error-box {
    background: #fbeaea;
    border: 1px solid #eec4c4;
    color: #7a2020;
}

/* ---------------------------------------------------------------- Rechtstexte */

.legal { max-width: 56.25rem; margin: 0 auto; }

.legal-block {
    background: var(--karte);
    border: 1px solid var(--rahmen);
    border-radius: var(--radius-m);
    padding: 1.5rem;
    margin-bottom: 1.25rem;
}

.legal-block h3 { font-size: 1.1875rem; }
.legal-block h4 { margin-top: 1.25rem; font-size: 1rem; }
.legal-block p,
.legal-block li { color: var(--text-sekundaer); }
.legal-block ul { padding-left: 1.5rem; margin-bottom: 1rem; }

/* ---------------------------------------------------------------- Footer */

.footer {
    background: var(--gruen-dunkel);
    color: rgba(255, 255, 255, 0.82);
    padding: 2.5rem 0 1.5rem;
    font-size: 0.9375rem;
}

.footer h3 {
    color: var(--weiss);
    font-size: 1.0625rem;
    margin-bottom: 0.75rem;
}

.footer a { color: rgba(255, 255, 255, 0.9); }
.footer a:hover { color: var(--gold); }

.footer-content {
    display: grid;
    gap: 1.75rem;
    grid-template-columns: 1fr;
}

.footer .hours-item-footer {
    border-bottom-color: rgba(255, 255, 255, 0.12);
    padding: 0.375rem 0;
}

.social-links { display: flex; gap: 0.625rem; margin-top: 0.875rem; }

.social-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border: 1px solid rgba(255, 255, 255, 0.3);
    border-radius: var(--radius-s);
    color: var(--weiss);
}

.social-link:hover { border-color: var(--gold); color: var(--gold); }

.footer-bottom {
    margin-top: 1.75rem;
    padding-top: 1.25rem;
    border-top: 1px solid rgba(255, 255, 255, 0.15);
    font-size: 0.875rem;
    text-align: center;
}

.footer-bottom p { margin: 0; }

/* Trennstrich zwischen Impressum und Datenschutz. Frueher ein style-Attribut. */
.footer-sep { margin: 0 0.5rem; }

/* ---------------------------------------------------------------- Breakpoints */

@media (min-width: 768px) {
    h1 { font-size: 2.5rem; }
    h2 { font-size: 2rem; }

    .section { padding: 4rem 0; }

    .hero { padding: 5rem 0; }
    .hero h1 { font-size: 3rem; }
    .hero-tagline { font-size: 1.125rem; }
    .hero-compact { padding: 3.5rem 0; }

    .features,
    .rooms,
    .event-categories { grid-template-columns: repeat(2, 1fr); }

    .gallery { grid-template-columns: repeat(2, 1fr); }

    .menu-items { grid-template-columns: repeat(2, 1fr); }

    .announcements-list { grid-template-columns: repeat(2, 1fr); }

    .footer-content { grid-template-columns: repeat(3, 1fr); }
}

@media (min-width: 1024px) {
    .menu-toggle { display: none; }

    .nav-menu {
        display: flex;
        gap: 0.25rem;
        position: static;
        background: transparent;
        padding: 0;
    }

    .nav-link {
        padding: 0.5rem 0.875rem;
        border-bottom: 2px solid transparent;
        border-radius: var(--radius-s);
    }

    .nav-link.active {
        border-bottom-color: var(--gold);
        border-radius: 0;
    }

    .features { grid-template-columns: repeat(3, 1fr); }
    .gallery { grid-template-columns: repeat(3, 1fr); }
    .event-categories { grid-template-columns: repeat(3, 1fr); }

    .contact-section { grid-template-columns: 5fr 7fr; gap: 2rem; }

    .hero h1 { font-size: 3.25rem; }
}

@media (min-width: 1400px) {
    .gallery { grid-template-columns: repeat(4, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    * { transition-duration: 0.01ms !important; }
}

@media print {
    .header, .footer, .hero-actions, .menu-toggle { display: none; }
    body { color: #000; background: #fff; }
}
