/* =========================================================
   Moby-Dick · Bar & Biergarten
   Farben und Schrift aus dem Logo: Tiefsee-Blau, Segeltuch,
   Messing. Schrift im Stil alter Holzstich-Drucke.
   ========================================================= */

@font-face { font-family: "Fell"; src: url("../fonts/im-fell-english-latin-400-normal.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Fell"; src: url("../fonts/im-fell-english-latin-400-italic.woff2") format("woff2"); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: "Fell SC"; src: url("../fonts/im-fell-english-sc-latin-400-normal.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Source Serif"; src: url("../fonts/source-serif-4-latin-400-normal.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Source Serif"; src: url("../fonts/source-serif-4-latin-400-italic.woff2") format("woff2"); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: "Source Serif"; src: url("../fonts/source-serif-4-latin-600-normal.woff2") format("woff2"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Source Serif"; src: url("../fonts/source-serif-4-latin-600-italic.woff2") format("woff2"); font-weight: 600; font-style: italic; font-display: swap; }
@font-face { font-family: "Source Serif"; src: url("../fonts/source-serif-4-latin-700-normal.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; }

:root {
  --navy: #0a1a45;
  --navy-2: #172a5f;
  --navy-deep: #050e29;
  --sail: #eceee9;
  --paper: #fbfbf7;
  --ink: #0a1a45;
  --ink-soft: #4a5470;
  --brass: #c8963a;
  --brass-light: #e6bd6c;
  --rule: rgba(10, 26, 69, .17);
  --rule-light: rgba(255, 255, 255, .2);

  --display: "Fell", "Iowan Old Style", "Palatino Linotype", Georgia, serif;
  --sc: "Fell SC", "Fell", Georgia, serif;
  --text: "Source Serif", "Iowan Old Style", Georgia, serif;

  --wrap: 1180px;
  --gutter: clamp(1.25rem, 4vw, 2.5rem);
  --section: clamp(4.5rem, 10vw, 8.5rem);
  --header-h: 4.25rem;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: var(--header-h); -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
  margin: 0;
  background: var(--sail);
  color: var(--ink);
  font-family: var(--text);
  font-size: clamp(1.03rem, .98rem + .2vw, 1.125rem);
  line-height: 1.7;
  font-variant-numeric: oldstyle-nums proportional-nums;
  text-rendering: optimizeLegibility;
}

img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .18em; }
a:hover { text-decoration-color: var(--brass); }
:focus-visible { outline: 2px solid var(--brass); outline-offset: 3px; }
p { margin: 0 0 1em; }
ul, ol { margin: 0; padding: 0; list-style: none; }
address { font-style: normal; }

h1, h2, h3 { font-family: var(--display); font-weight: 400; line-height: 1.08; margin: 0; letter-spacing: -.005em; }
h2 { font-size: clamp(2.6rem, 2rem + 3vw, 4.4rem); margin-bottom: .45em; }
h3 { font-size: clamp(1.5rem, 1.3rem + .8vw, 1.95rem); }

.wrap { width: min(100% - 2 * var(--gutter), var(--wrap)); margin-inline: auto; }

.skip { position: absolute; left: 1rem; top: -4rem; z-index: 100; background: var(--brass); color: var(--navy); padding: .6rem 1rem; }
.skip:focus { top: 1rem; }

.button {
  display: inline-block;
  font-family: var(--text);
  font-weight: 600;
  font-size: .95rem;
  line-height: 1.2;
  padding: .85em 1.3em;
  background: var(--brass);
  color: var(--navy-deep);
  border: 1px solid var(--brass);
  text-decoration: none;
  cursor: pointer;
  transition: background-color .15s, color .15s;
}
.button:hover { background: var(--brass-light); border-color: var(--brass-light); }
.button--ghost { background: transparent; color: var(--navy); border-color: var(--navy); }
.button--ghost:hover { background: var(--navy); color: #fff; }
.button--ghost-light { background: transparent; color: #fff; border-color: var(--rule-light); }
.button--ghost-light:hover { background: rgba(255,255,255,.08); border-color: #fff; }

.waterline { display: block; width: 100%; height: auto; }

/* ---------- Kopfzeile ---------- */
.masthead {
  position: fixed; inset: 0 0 auto; z-index: 50;
  color: #fff;
  transition: background-color .25s, box-shadow .25s;
}
.masthead.is-solid { background: var(--navy); box-shadow: 0 1px 0 rgba(255,255,255,.08); }
.masthead__inner {
  height: var(--header-h);
  width: min(100% - 2 * var(--gutter), 1320px);
  margin-inline: auto;
  display: flex; align-items: center; justify-content: space-between; gap: 1.5rem;
}
.masthead__brand {
  display: flex; align-items: center; gap: .6rem;
  text-decoration: none; font-family: var(--display); font-size: 1.45rem; white-space: nowrap;
  opacity: 0; pointer-events: none; transition: opacity .25s;
}
.masthead__brand img { width: 2.1rem; }
.masthead.is-solid .masthead__brand, .masthead.is-open .masthead__brand { opacity: 1; pointer-events: auto; }

.masthead__nav { display: flex; align-items: center; gap: 2rem; }
.masthead__nav ul { display: flex; gap: 1.5rem; }
.masthead__nav ul a { text-decoration: none; font-size: .98rem; padding: .3rem 0; border-bottom: 1px solid transparent; }
.masthead__nav ul a:hover { border-bottom-color: var(--brass); }
.masthead__call {
  display: flex; flex-direction: column; line-height: 1.15; text-decoration: none;
  padding: .45rem .95rem; border: 1px solid var(--rule-light);
}
.masthead__call:hover { border-color: var(--brass); }
.masthead__call-label { font-size: .78rem; opacity: .75; }
.masthead__call-number { font-weight: 600; font-variant-numeric: lining-nums; white-space: nowrap; }
.masthead__toggle { display: none; }

@media (max-width: 1060px) {
  .masthead__toggle {
    display: flex; align-items: center; gap: .6rem;
    background: none; border: 0; color: inherit; font: inherit; font-size: 1rem; cursor: pointer; padding: .5rem 0;
  }
  .masthead__toggle-bars, .masthead__toggle-bars::before, .masthead__toggle-bars::after {
    display: block; width: 22px; height: 1.5px; background: currentColor; position: relative; transition: transform .2s;
  }
  .masthead__toggle-bars::before, .masthead__toggle-bars::after { content: ""; position: absolute; left: 0; }
  .masthead__toggle-bars::before { top: -7px; }
  .masthead__toggle-bars::after { top: 7px; }
  .masthead.is-open .masthead__toggle-bars { background: transparent; }
  .masthead.is-open .masthead__toggle-bars::before { transform: translateY(7px) rotate(45deg); }
  .masthead.is-open .masthead__toggle-bars::after { transform: translateY(-7px) rotate(-45deg); }

  .masthead__nav {
    position: fixed; inset: var(--header-h) 0 0; background: var(--navy);
    flex-direction: column; align-items: stretch; justify-content: flex-start; gap: 2rem;
    padding: 1.5rem var(--gutter) 3rem; overflow-y: auto;
    visibility: hidden; opacity: 0; transition: opacity .2s, visibility .2s;
  }
  .masthead.is-open { background: var(--navy); }
  .masthead.is-open .masthead__nav { visibility: visible; opacity: 1; }
  .masthead__nav ul { flex-direction: column; gap: 0; }
  .masthead__nav ul a { display: block; font-family: var(--display); font-size: 2rem; padding: .35rem 0; border-bottom: 1px solid var(--rule-light); }
  .masthead__call { align-self: flex-start; padding: .8rem 1.1rem; }
  .masthead__call-number { font-size: 1.3rem; }
}

/* ---------- Titelbild ---------- */
.hero {
  position: relative;
  min-height: max(36rem, 100svh);
  display: grid;
  grid-template-rows: 1fr auto;
  color: #fff;
  background: var(--navy-deep);
  overflow: hidden;
}
.hero__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero__shade {
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse 60% 55% at 50% 45%, rgba(5,14,41,.55), rgba(5,14,41,0) 70%),
    linear-gradient(to bottom, rgba(5,14,41,.45) 0%, rgba(5,14,41,0) 30%, rgba(5,14,41,0) 55%, rgba(10,26,69,.92) 100%);
}
.hero__content {
  position: relative; align-self: center; justify-self: center;
  display: flex; flex-direction: column; align-items: center; text-align: center;
  padding: calc(var(--header-h) + 1rem) var(--gutter) 2rem;
}
.hero__logo { margin: 0; }
.hero__logo img { width: min(600px, 84vw); filter: drop-shadow(0 2px 18px rgba(5,14,41,.5)); }
.hero__line { font-family: var(--display); font-style: italic; font-size: clamp(1.2rem, 1rem + .8vw, 1.6rem); margin: 1.4rem 0 0; opacity: .9; }

.hero__rail {
  position: relative; z-index: 1;
  width: min(100% - 2 * var(--gutter), var(--wrap)); margin: 0 auto;
  display: grid; grid-template-columns: 1fr 1fr auto; align-items: end; gap: 1.5rem 2.5rem;
  padding-bottom: 1.6rem;
}
.hero__status { margin: 0; display: flex; flex-direction: column; line-height: 1.35; padding-left: 1.1rem; position: relative; }
.hero__status::before {
  content: ""; position: absolute; left: 0; top: .5em; width: .5rem; height: .5rem; border-radius: 50%;
  border: 1px solid rgba(255,255,255,.6);
}
.hero__status.is-open::before { background: var(--brass-light); border-color: var(--brass-light); box-shadow: 0 0 0 4px rgba(230,189,108,.18); }
.hero__status-name { font-family: var(--display); font-size: 1.35rem; }
.hero__status-text { font-size: .95rem; opacity: .85; }
.hero__phone { text-decoration: none; text-align: right; line-height: 1.25; }
.hero__phone span { display: block; font-size: .9rem; opacity: .8; }
.hero__phone strong { font-family: var(--text); font-weight: 600; font-size: clamp(1.4rem, 1.1rem + 1vw, 1.9rem); font-variant-numeric: lining-nums; letter-spacing: .01em; }
.hero__phone:hover strong { color: var(--brass-light); }
.hero__water { position: relative; color: rgba(255,255,255,.55); height: 34px; margin-bottom: -1px; background: linear-gradient(transparent, var(--navy)); }

@media (max-width: 720px) {
  .hero__rail { grid-template-columns: 1fr 1fr; }
  .hero__phone { grid-column: 1 / -1; text-align: left; border-top: 1px solid var(--rule-light); padding-top: 1rem; }
}

/* ---------- Hinweis ---------- */
.notice { background: var(--brass); color: var(--navy-deep); }
.notice p { width: min(100% - 2 * var(--gutter), var(--wrap)); margin: 0 auto; padding: 1rem 0; font-weight: 600; text-align: center; }

/* ---------- Öffnungszeiten ---------- */
.hours { background: var(--navy); color: #fff; padding: clamp(3.5rem, 7vw, 6rem) 0 clamp(4rem, 8vw, 6.5rem); }
.hours__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 3rem clamp(2rem, 4vw, 4rem); }
.hours__title { grid-column: 1 / -1; margin-bottom: 0; }
.hours__venue h3, .hours__reserve h3 { padding-bottom: .7rem; margin-bottom: 1rem; border-bottom: 1px solid var(--rule-light); }
.hours__table { width: 100%; border-collapse: collapse; font-variant-numeric: lining-nums tabular-nums; }
.hours__table th, .hours__table td { padding: .42rem 0; vertical-align: baseline; }
.hours__table th { text-align: left; font-family: var(--sc); font-weight: 400; font-size: 1.12rem; letter-spacing: .02em; white-space: nowrap; padding-right: 1rem; }
.hours__table td { text-align: right; white-space: nowrap; }
.hours__table td.is-closed { opacity: .6; font-style: italic; }
.hours__table tr.is-today th, .hours__table tr.is-today td { color: var(--brass-light); }
.today-mark { font-family: var(--text); font-size: .78rem; font-style: italic; letter-spacing: 0; margin-left: .35rem; }
.hours__note, .hours__season { margin-top: 1.1rem; font-style: italic; opacity: .8; font-size: .97rem; }
.hours__season { font-style: normal; opacity: .9; }
.hours__reserve p { opacity: .85; max-width: 34ch; }
.phone-big {
  display: inline-block; font-family: var(--text); font-weight: 600; font-size: clamp(1.7rem, 1.3rem + 1.2vw, 2.25rem); line-height: 1.1; letter-spacing: .01em;
  text-decoration: none; color: var(--brass-light); font-variant-numeric: lining-nums; margin: .2rem 0 1.4rem;
}
.phone-big:hover { color: #fff; }
.hours__address { opacity: .75; font-size: .95rem; }

@media (max-width: 900px) {
  .hours__grid { grid-template-columns: 1fr 1fr; }
  .hours__reserve { grid-column: 1 / -1; }
}
@media (max-width: 600px) {
  .hours__grid { grid-template-columns: 1fr; }
}

/* ---------- Bar & Biergarten ---------- */
.venue { padding: var(--section) 0 0; }
.venue--garden { padding-bottom: var(--section); }
.venue__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.venue__grid--flip { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
.venue__grid--flip .venue__figure { order: 2; }
.venue__figure { margin: 0; position: relative; }
.venue__figure img { width: 100%; aspect-ratio: 7 / 5; object-fit: cover; }
.venue__grid:not(.venue__grid--flip) .venue__figure { margin-left: calc(-1 * max(0px, (100vw - var(--wrap)) / 2)); }
.venue__grid--flip .venue__figure { margin-right: calc(-1 * max(0px, (100vw - var(--wrap)) / 2)); }
.venue__text { max-width: 34rem; }
.venue__text p { color: var(--ink-soft); }
.venue__season { border-left: 2px solid var(--brass); padding-left: 1rem; color: var(--ink) !important; font-style: italic; }

@media (max-width: 860px) {
  .venue__grid, .venue__grid--flip { grid-template-columns: 1fr; }
  .venue__grid--flip .venue__figure { order: 0; }
  .venue__grid .venue__figure.venue__figure { margin-inline: calc(-1 * var(--gutter)); }
}

.games { margin-top: clamp(3.5rem, 7vw, 6rem); padding-top: 2rem; border-top: 1px solid var(--rule); display: grid; grid-template-columns: 12rem 1fr; gap: 2rem; }
.games__title { font-family: var(--display); font-style: italic; font-size: 1.5rem; }
.games__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem clamp(1.5rem, 3vw, 3rem); }
.games__name { display: block; font-family: var(--display); font-size: clamp(2rem, 1.6rem + 1.2vw, 2.75rem); line-height: 1; margin-bottom: .6rem; }
.games__list p { margin: 0; color: var(--ink-soft); font-size: .98rem; }
@media (max-width: 900px) {
  .games { grid-template-columns: 1fr; gap: 1.25rem; }
  .games__list { grid-template-columns: 1fr; gap: 1.5rem; }
  .games__list li { display: grid; grid-template-columns: 11rem 1fr; gap: 1rem; align-items: baseline; padding-bottom: 1.5rem; border-bottom: 1px solid var(--rule); }
  .games__list li:last-child { border-bottom: 0; }
}
@media (max-width: 520px) {
  .games__list li { grid-template-columns: 1fr; gap: .25rem; }
}

/* ---------- Karte ---------- */
.menu { background: var(--navy); padding: var(--section) 0; }
.menu__card {
  background: var(--paper);
  max-width: 980px; margin: 0 auto;
  padding: clamp(2rem, 5vw, 4.5rem) clamp(1.25rem, 5vw, 4.5rem) clamp(2rem, 4vw, 3.5rem);
  position: relative;
  outline: 1px solid var(--paper); outline-offset: 7px;
}
.menu__card::before {
  content: ""; position: absolute; inset: 10px; border: 1px solid var(--rule); pointer-events: none;
}
.menu__head { text-align: center; }
.menu__head img { width: 72px; margin: 0 auto .9rem; }
.menu__head h2 { margin-bottom: .3em; }
.menu__index {
  display: flex; flex-wrap: wrap; justify-content: center; gap: .3rem 1.4rem;
  margin: 0 auto 2.5rem; font-style: italic; color: var(--ink-soft);
}
.menu__index a { text-decoration: none; border-bottom: 1px solid var(--rule); }
.menu__index a:hover { border-bottom-color: var(--brass); color: var(--ink); }

.menu__cols { columns: 2 340px; column-gap: clamp(2rem, 5vw, 4.5rem); }
.menu__cat { break-inside: avoid; padding-bottom: 2.2rem; }
.menu__cat h3 {
  font-family: var(--display); font-style: italic; font-size: 1.75rem;
  display: flex; align-items: center; gap: 1rem; margin-bottom: .8rem;
}
.menu__cat h3::after { content: ""; flex: 1; height: 1px; background: var(--rule); }
.menu__catnote { font-style: italic; color: var(--ink-soft); font-size: .95rem; margin-top: -.4rem; }
.menu__item {
  display: grid; grid-template-columns: auto 1fr auto auto; align-items: baseline; column-gap: .5rem;
  padding: .3rem 0;
}
.menu__name { font-weight: 600; }
.menu__dots { border-bottom: 1px dotted rgba(10,26,69,.35); transform: translateY(-.3em); min-width: 1rem; }
.menu__size { color: var(--ink-soft); font-size: .92rem; font-variant-numeric: lining-nums; white-space: nowrap; min-width: 3.2em; text-align: right; }
.menu__price { font-variant-numeric: lining-nums tabular-nums; white-space: nowrap; min-width: 4.4em; text-align: right; }
.menu__desc { grid-column: 1 / -1; font-style: italic; color: var(--ink-soft); font-size: .93rem; line-height: 1.4; margin-top: -.1rem; }
.menu__foot { text-align: center; font-size: .88rem; color: var(--ink-soft); margin: .5rem 0 0; font-style: italic; }

/* ---------- Termine ---------- */
.events { padding: var(--section) 0; }
.events__wrap { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 2rem clamp(2rem, 5vw, 5rem); align-items: start; }
.events__intro { position: sticky; top: calc(var(--header-h) + 2rem); }
.events__intro p { color: var(--ink-soft); max-width: 26ch; }
.events__empty { font-style: italic; color: var(--ink-soft); font-size: 1.15rem; border-top: 1px solid var(--rule); padding-top: 1.5rem; }
.events__list { border-top: 1px solid var(--navy); }
.event {
  display: grid; grid-template-columns: 6.5rem 1fr auto; gap: .5rem 2rem;
  padding: 1.6rem 0; border-bottom: 1px solid var(--rule);
}
.event__date { display: grid; grid-template-columns: auto 1fr; column-gap: .45rem; align-items: baseline; line-height: 1; }
.event__day { font-family: var(--display); font-size: 3.4rem; grid-row: span 2; font-variant-numeric: lining-nums; line-height: .85; }
.event__month { font-family: var(--display); font-size: 1.2rem; }
.event__weekday { font-size: .82rem; font-style: italic; color: var(--ink-soft); align-self: start; padding-top: .2rem; }
.event__body h3 { font-size: 1.65rem; margin-bottom: .35rem; }
.event__body p { margin: 0; color: var(--ink-soft); max-width: 52ch; }
.event__meta { margin: 0; text-align: right; display: flex; flex-direction: column; font-size: .95rem; white-space: nowrap; padding-top: .25rem; font-variant-numeric: lining-nums; }
.event__meta span + span { font-style: italic; color: var(--ink-soft); }

@media (max-width: 860px) {
  .events__wrap { grid-template-columns: 1fr; }
  .events__intro { position: static; }
}
@media (max-width: 560px) {
  .event { grid-template-columns: 5rem 1fr; }
  .event__meta { grid-column: 2; text-align: left; flex-direction: row; flex-wrap: wrap; gap: 0 1rem; padding-top: 0; }
  .event__day { font-size: 2.8rem; }
}

/* ---------- Galerie ---------- */
.gallery { padding: 0 0 var(--section); }
.gallery__grid {
  display: grid; grid-template-columns: repeat(12, 1fr); grid-auto-rows: clamp(9rem, 15vw, 13rem); gap: .6rem;
}
.gallery__item { position: relative; overflow: hidden; background: var(--navy); grid-column: span 4; }
.gallery__item.g-big { grid-column: span 7; grid-row: span 2; }
.gallery__item.g-side { grid-column: span 5; }
.gallery__item.g-half { grid-column: span 6; grid-row: span 2; }
.gallery__item.g-full { grid-column: span 12; grid-row: span 2; }
.gallery__item a { display: block; height: 100%; }
.gallery__item img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease, opacity .3s; }
.gallery__item a:hover img { transform: scale(1.03); opacity: .9; }
.gallery__caption {
  position: absolute; left: 0; bottom: 0; padding: .4rem .7rem; font-size: .85rem; font-style: italic;
  color: #fff; background: rgba(5,14,41,.6); pointer-events: none;
}
.gallery__more { text-align: center; margin-top: 2rem; }
@media (max-width: 760px) {
  .gallery__grid { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 42vw; grid-auto-flow: dense; }
  .gallery__item[class] { grid-column: span 1; grid-row: span 1; }
  .gallery__item.g-big, .gallery__item.g-lead, .gallery__item.g-full { grid-column: span 2; }
}
@media (prefers-reduced-motion: reduce) { .gallery__item img { transition: none; } }

/* Lightbox */
.lightbox {
  border: 0; padding: 0; margin: auto; background: rgba(5,14,41,.6); color: #fff;
  max-width: 100vw; max-height: 100vh; width: 100vw; height: 100vh;
}
.lightbox::backdrop { background: rgba(5,14,41,.94); }
.lightbox figure { margin: 0; height: 100%; display: grid; place-items: center; align-content: center; gap: .8rem; padding: 4rem 4.5rem; }
.lightbox img { max-width: 100%; max-height: calc(100vh - 10rem); object-fit: contain; }
.lightbox figcaption { font-style: italic; text-align: center; min-height: 1.5em; }
.lightbox__btn {
  position: absolute; background: none; border: 1px solid var(--rule-light); color: #fff;
  width: 3rem; height: 3rem; font-size: 1.9rem; line-height: 1; cursor: pointer; font-family: var(--display);
}
.lightbox__btn:hover { border-color: var(--brass-light); color: var(--brass-light); }
.lightbox__close { top: 1rem; right: 1rem; }
.lightbox__prev { left: 1rem; top: 50%; transform: translateY(-50%); }
.lightbox__next { right: 1rem; top: 50%; transform: translateY(-50%); }
@media (max-width: 600px) {
  .lightbox figure { padding: 4rem .5rem 5rem; }
  .lightbox__prev, .lightbox__next { top: auto; bottom: 1rem; transform: none; }
}

/* ---------- Anfahrt ---------- */
.visit { background: var(--navy); color: #fff; padding: 0 0 var(--section); }
.visit__water { color: rgba(255,255,255,.4); height: 28px; background: var(--sail); color: var(--navy); margin-bottom: clamp(3.5rem, 7vw, 6rem); }
.visit__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 2.5rem clamp(2rem, 5vw, 5rem); align-items: end; }
.visit__text { opacity: .8; max-width: 44ch; margin: 0; }
.visit__facts { border-left: 1px solid var(--rule-light); padding-left: clamp(1.25rem, 3vw, 2.5rem); }
.visit__facts address, .visit__facts p { margin: 0 0 1.2rem; }
.visit__facts strong { font-family: var(--display); font-weight: 400; font-size: 1.5rem; }
.visit__facts a:not(.button) { text-decoration-color: var(--rule-light); font-variant-numeric: lining-nums; }
.visit__links { display: flex; flex-wrap: wrap; gap: .7rem; padding-top: .4rem; }
@media (max-width: 760px) {
  .visit__grid { grid-template-columns: 1fr; }
  .visit__facts { border-left: 0; padding-left: 0; border-top: 1px solid var(--rule-light); padding-top: 1.5rem; }
}

/* ---------- Fuß ---------- */
.footer { background: var(--navy-deep); color: rgba(255,255,255,.7); font-size: .92rem; }
.footer__inner { display: flex; align-items: center; gap: 1.25rem 2rem; flex-wrap: wrap; padding: 1.6rem 0; }
.footer__inner img { width: 40px; opacity: .85; }
.footer__inner p { margin: 0; flex: 1; }
.footer nav { display: flex; gap: 1.5rem; }
.footer a { text-decoration: none; }
.footer a:hover { color: #fff; }

/* ---------- Rechtliche Seiten ---------- */
.legal { padding: calc(var(--header-h) + 3rem) 0 var(--section); }
.legal .wrap { max-width: 46rem; }
.legal h1 { font-size: clamp(2.6rem, 2rem + 3vw, 4rem); margin-bottom: 2rem; }
.legal h2 { font-size: 1.7rem; margin: 2.2rem 0 .6rem; }
.legal .todo { background: #fff3d6; border-left: 3px solid var(--brass); padding: .8rem 1rem; font-size: .95rem; }
.legal-top { background: var(--navy); color: #fff; position: fixed; inset: 0 0 auto; z-index: 10; }
.legal-top .wrap { height: var(--header-h); display: flex; align-items: center; justify-content: space-between; }
.legal-top a { text-decoration: none; display: flex; align-items: center; gap: .6rem; font-family: var(--display); font-size: 1.4rem; }
.legal-top a img { width: 2.1rem; }
.legal-top a.back { font-family: var(--text); font-size: .95rem; }

@media print {
  .masthead, .hero, .gallery, .footer, .lightbox { display: none !important; }
  .hours, .menu, .visit { background: #fff; color: #000; }
}
