:root {
  --bg: #FBFCF9;
  --paper: #F4F6F1;
  --ink: #36392E;
  --muted: #565850;
  --leaf-dark: #769F97;
  --leaf-mid: #93B6A2;
  --leaf-pale: #C1D5CA;
  --line: #C9CCC4;
  --accent: #36392E;
  --on-accent: #FBFCF9;
  --honey: #ECA45A;
  --nav-h: 72px;
  --content: min(1080px, calc(100% - 40px));
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

body {
  margin: 0;
  font-family: Outfit, system-ui, sans-serif;
  background: var(--bg);
  color: var(--ink);
  line-height: 1.55;
}

img { max-width: 100%; height: auto; }
a { color: inherit; }
button, input, select, textarea { font: inherit; }

.skip {
  position: absolute; left: 12px; top: -40px;
  background: var(--ink); color: var(--on-accent);
  padding: 8px 12px; z-index: 100;
}
.skip:focus { top: 12px; }

.site-header {
  position: sticky; top: 0; z-index: 40;
  background: color-mix(in srgb, var(--bg) 88%, transparent);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--line);
}
.nav-wrap {
  width: var(--content); margin: 0 auto;
  min-height: var(--nav-h);
  display: flex; align-items: center; gap: 18px;
  position: relative;
}
.brand {
  display: flex; align-items: baseline; gap: 10px;
  text-decoration: none; flex-shrink: 0;
}
.brand-mono {
  font-family: Fraunces, serif; font-size: 22px; font-weight: 400;
  letter-spacing: 0.04em;
}
.brand-mono i {
  display: inline-block; width: 1px; height: 18px;
  background: currentColor; opacity: .5; margin: 0 8px; vertical-align: -2px;
}

.nav-links {
  display: flex; flex-wrap: wrap; gap: 2px 6px;
  list-style: none; margin: 0; padding: 0;
  font-size: 12px; letter-spacing: .1em; text-transform: uppercase;
}
.nav-links a {
  text-decoration: none; color: var(--muted);
  padding: 6px 8px; border-radius: 3px;
}
.nav-links a:hover { color: var(--ink); }
.nav-links a[aria-current="true"] {
  color: var(--ink);
  background: color-mix(in srgb, var(--leaf-pale) 42%, var(--bg));
}

.nav-cta { margin-left: auto; display: flex; align-items: center; gap: 14px; }
.nav-date {
  font-family: Fraunces, serif; font-size: 15px; letter-spacing: .02em; white-space: nowrap;
}
.menu-toggle {
  display: none; border: 1px solid var(--muted); background: transparent;
  color: var(--ink); padding: 8px 10px; letter-spacing: .08em;
  text-transform: uppercase; font-size: 11px; cursor: pointer;
}

.btn {
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--accent); color: var(--on-accent);
  text-decoration: none; border: 1px solid var(--accent);
  padding: 11px 16px; letter-spacing: .12em; text-transform: uppercase;
  font-size: 11px; cursor: pointer;
}
.btn:hover { filter: brightness(1.12); }
.btn:focus-visible,
.ghost:focus-visible,
.nav-links a:focus-visible,
.menu-toggle:focus-visible,
.lang button:focus-visible {
  outline: 2px solid var(--ink); outline-offset: 3px;
}
.ghost {
  background: transparent; color: var(--ink);
  border: 1px solid var(--muted); text-decoration: none;
  padding: 11px 16px; letter-spacing: .12em; text-transform: uppercase;
  font-size: 11px; cursor: pointer; display: inline-flex;
}
.ghost:hover { border-color: var(--ink); }
.btn[aria-disabled="true"],
.btn:disabled {
  cursor: not-allowed; opacity: .85; filter: none;
}

.hero {
  position: relative; overflow: hidden;
  padding: 0 0 72px;
}
.hero-intro {
  min-height: calc(100vh - var(--nav-h));
  min-height: calc(100svh - var(--nav-h));
  display: flex; flex-direction: column; justify-content: center;
}
.hero-botanical {
  position: absolute; pointer-events: none; z-index: 0;
}
.hero-botanical img { width: 100%; display: block; }
.hero-botanical.top { top: -8px; left: -4%; width: min(720px, 78vw); }
.hero-botanical.bottom { right: -6%; bottom: -24px; width: min(680px, 72vw); }
.hero-inner, .section-inner {
  width: var(--content); margin: 0 auto; position: relative; z-index: 1;
}

.kicker-wrap {
  position: relative;
  display: flex; justify-content: center; align-items: center;
  min-height: 210px; margin: 0;
}
.kicker-rings {
  position: absolute; left: 50%; top: 46%; z-index: 0;
  width: min(420px, 78vw); height: auto; max-width: none;
  transform: translate(-50%, -50%);
  pointer-events: none;
}
.kicker {
  position: relative; z-index: 1;
  font-size: 12px; letter-spacing: .2em; text-transform: uppercase;
  color: var(--muted); text-align: center; margin: 0;
}
.mono {
  display: flex; align-items: center; justify-content: center; gap: 0.16em;
  font-family: Fraunces, serif; font-size: clamp(40px, 10.5vw, 112px);
  font-weight: 400; line-height: 1; margin: 18px 0 8px; padding: 0.5em 0;
}
.mono span:first-child { transform: translateY(-0.42em); }
.mono span:last-child { transform: translateY(0.32em); }
.mono i {
  transform: translateY(-0.05em);
  font-size: max(14px, 0.28em); font-style: italic; color: var(--muted); letter-spacing: .04em;
}
.names-sub {
  text-align: center; letter-spacing: .24em; text-transform: uppercase;
  font-size: 13px; color: var(--muted); margin: 0 0 10px;
}
.hero h1 {
  position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0);
}
.hero-date {
  text-align: center; font-family: Fraunces, serif; font-size: clamp(22px, 3vw, 30px);
  font-weight: 400; margin: 0 0 8px;
}
.hero-place { text-align: center; color: var(--muted); margin: 0; }

.hero-story {
  display: grid; grid-template-columns: minmax(0, 1fr) 252px;
  gap: 28px 48px; align-items: center; margin: 56px 0 8px;
}
.polaroids {
  position: relative; z-index: 3;
  width: 252px; height: 348px;
  margin: 0 0 28px; justify-self: end;
}
.polaroid-label {
  position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0);
}
.polaroid {
  position: absolute; inset: 0; margin: 0;
  padding: 12px 12px 76px; border: 0;
  background: #fffdf8; color: inherit;
  box-shadow: 0 14px 28px rgba(54, 57, 46, .18), 0 1px 2px rgba(54, 57, 46, .08);
  cursor: pointer; pointer-events: none;
  transform: translate(var(--dx, 0px), var(--dy, 0px)) rotate(var(--tilt, 0deg));
  transition: transform .55s cubic-bezier(.2, .8, .2, 1), opacity .4s ease;
}
.polaroid[data-depth="0"] {
  --tilt: var(--rest, -4deg); --dx: 0px; --dy: 0px;
  pointer-events: auto; z-index: 5;
}
.polaroid[data-depth="0"]:hover {
  transform: translate(0, -6px) rotate(var(--tilt));
}
.polaroid.is-away,
.polaroid.is-away:hover {
  transform: translate(72%, 18%) rotate(18deg);
  opacity: 0;
}
.polaroid[data-depth="1"] { --tilt: 7deg; --dx: -12px; --dy: 9px; }
.polaroid[data-depth="2"] { --tilt: -8deg; --dx: 9px; --dy: 14px; }
.polaroid[data-depth="3"] { --tilt: 2deg; --dx: 0px; --dy: 4px; opacity: 0; }
.polaroid.is-reset { transition: none; }
.polaroid:focus-visible { outline: 2px solid var(--ink); outline-offset: 4px; }
.polaroid-photo {
  display: block; height: 100%; position: relative; overflow: hidden; background: #e7e4dc;
}
.polaroid-photo img,
.polaroid-photo video {
  width: 100%; height: 100%; max-width: none; object-fit: cover; display: block;
  filter: sepia(.22) saturate(.7) contrast(1.05) brightness(1.02) hue-rotate(16deg);
}
.polaroid-photo video { position: absolute; inset: 0; }
.polaroid-photo::before,
.polaroid-photo::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
}
.polaroid-photo::before {
  background: var(--leaf-mid); mix-blend-mode: color; opacity: .22;
}
.polaroid-photo::after {
  background: linear-gradient(160deg, var(--leaf-pale), var(--honey) 78%);
  mix-blend-mode: soft-light; opacity: .88;
}
.polaroid-caption {
  position: absolute; left: 10px; right: 10px; bottom: 7px;
  font-family: "Caveat", cursive; font-weight: 600; font-size: 18px;
  line-height: 1.02; text-align: center; color: #2a3144;
  transform: rotate(var(--ink, -1deg)); pointer-events: none;
  opacity: 0;
}
.polaroids > .polaroid:nth-child(2) .polaroid-caption { opacity: 1; }
.polaroids:has(> .polaroid.is-away) > .polaroid:nth-child(3) .polaroid-caption { opacity: 1; }
.hero-lead {
  max-width: 40rem; margin: 0; text-align: left; font-size: 18px;
}
.hero-lead p { margin: 0 0 16px; }
.hero-lead p:last-child { margin-bottom: 0; }
.hero-welcome {
  font-family: Fraunces, serif; font-weight: 560;
  font-size: clamp(26px, 4vw, 36px); margin: 0 0 18px;
}

.stats {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
  padding: 16px 0; margin: 0 auto 28px; max-width: 640px; text-align: center;
}
.stats b {
  display: block; font-family: Fraunces, serif; font-size: 28px; font-weight: 560;
}
.stats span {
  color: var(--muted); font-size: 11px; letter-spacing: .12em; text-transform: uppercase;
}

.hero-actions { display: flex; justify-content: center; gap: 10px; flex-wrap: wrap; }

.rsvp-card {
  margin: 48px auto 0; max-width: 640px;
  background: var(--paper); border: 1px solid var(--line); padding: 28px 24px;
}
.rsvp-card h2 { font-family: Fraunces, serif; font-weight: 560; font-size: 26px; margin: 0 0 8px; }
.rsvp-card h4 {
  font-family: Fraunces, serif; font-weight: 560; font-size: 18px;
  margin: 28px 0 10px;
}
.rsvp-card p { margin: 0 0 16px; color: var(--muted); }
.rsvp-card a { color: var(--ink); }
.form-grid { display: grid; gap: 12px; }
label { display: grid; gap: 6px; font-size: 13px; }
input, select, textarea {
  border: 1px solid var(--line); background: var(--bg); color: var(--ink);
  padding: 10px 12px;
}
input[type="checkbox"] {
  width: 1.05rem; height: 1.05rem; padding: 0; margin: 0;
  accent-color: var(--ink);
}
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.form-note { font-size: 13px; color: var(--muted); margin: 0; }
.checks {
  border: 1px solid var(--line); margin: 0; padding: 12px 14px 14px;
  display: grid; gap: 8px; background: var(--bg);
}
.checks legend { font-size: 13px; padding: 0 4px; }
.check {
  display: flex; align-items: flex-start; gap: 8px;
  font-size: 14px; color: var(--ink);
}
[hidden] { display: none !important; }
.rsvp-household { font-family: Fraunces, serif; font-size: 20px; color: var(--ink); margin: 0; }
.choice { border: 0; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 24px; }
.choice legend { font-size: 13px; padding: 0; margin-bottom: 6px; }
.rsvp-yes { display: grid; gap: 12px; }
.guest-rows { display: grid; gap: 10px; }
.guest-row {
  display: grid; grid-template-columns: 1fr 150px auto auto; gap: 10px; align-items: end;
}
.guest-row .check { padding-bottom: 10px; }
.guest-row .ghost { padding: 10px 12px; }
#guest-add { justify-self: start; }
.btn.is-placeholder { cursor: default; }
.upload { margin: 0 0 20px; display: grid; gap: 8px; justify-items: start; }
.album-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 8px;
}
.album-grid a { display: block; aspect-ratio: 1; overflow: hidden; background: var(--paper); }
.album-grid img { width: 100%; height: 100%; object-fit: cover; display: block; }
.guest-faces { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; margin: 0; padding: 0; }
.guest-faces li {
  position: relative;
  width: 32px; height: 32px; border-radius: 50%;
  display: grid; place-items: center; background: var(--leaf-pale); color: var(--ink);
}
.guest-faces li:nth-child(3n) { background: var(--leaf-mid); }
.guest-faces li:nth-child(3n + 2) { background: var(--leaf-dark); color: var(--on-accent); }
.guest-faces li.couple { background: var(--ink); color: var(--on-accent); }
.guest-faces li[data-name] { cursor: default; }
.guest-faces li[data-name]:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.guest-faces li[data-name]::after {
  content: attr(data-name);
  position: absolute; bottom: calc(100% + 8px); left: 50%; transform: translate(-50%, 4px);
  background: var(--ink); color: var(--on-accent);
  font-size: 13px; line-height: 1.3; white-space: nowrap; padding: 5px 9px;
  pointer-events: none; opacity: 0; transition: opacity .15s, transform .15s; z-index: 5;
}
.guest-faces li[data-name]:hover::after,
.guest-faces li[data-name]:focus::after { opacity: 1; transform: translate(-50%, 0); }

.banner { margin: 0; border-top: 1px solid var(--line); }
.banner img { width: 100%; height: clamp(280px, 52vw, 640px); object-fit: cover; object-position: 50% 40%; }
.banner + .section { border-top: 0; }

.stat-link { text-decoration: none; display: block; }
.stat-link:hover span { color: var(--ink); }

.block-title {
  font-family: Fraunces, serif; font-size: 26px; font-weight: 560;
  margin: 48px 0 8px; scroll-margin-top: calc(var(--nav-h) + 12px);
}
#outfit, #wetter, #taxi { scroll-margin-top: calc(var(--nav-h) + 12px); }
#faq .outfit > .block-title { margin-top: 4px; }
.muted { color: var(--muted); }

.outfit-cards {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin-bottom: 20px;
}
.outfit-card { border: 1px solid var(--line); background: var(--paper); padding: 18px 16px; }
.outfit-card h4 { font-family: Fraunces, serif; font-size: 18px; font-weight: 560; margin: 0 0 8px; }
.outfit-card p { margin: 0; color: var(--muted); font-size: 15px; }
.color-guide { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; color: var(--muted); font-size: 14px; }
.swatches { display: flex; flex-wrap: wrap; gap: 6px; }
.swatches i { width: 30px; height: 30px; border-radius: 50%; border: 1px solid rgba(54, 57, 46, .12); }

.forecast { margin-bottom: 20px; }
.forecast h4, .radar-head h4 { font-family: Fraunces, serif; font-size: 18px; font-weight: 560; margin: 0 0 10px; }
.forecast-days { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.forecast-day {
  border: 1px solid var(--line); background: var(--paper); padding: 14px;
  display: grid; gap: 2px; font-size: 14px; color: var(--muted);
}
.forecast-day strong { color: var(--ink); font-weight: 500; }
.forecast-day b { font-family: Fraunces, serif; font-size: 24px; font-weight: 560; color: var(--ink); }
.radar { max-width: 560px; }
.radar-head { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.radar-head span { font-size: 13px; }
.radar-stage {
  position: relative; aspect-ratio: 1; overflow: hidden;
  border: 1px solid var(--line); background: var(--paper);
}
.radar-layer {
  position: absolute; inset: 0; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr;
}
.radar-layer img { width: 100%; height: 100%; display: block; }
.radar-rain .radar-layer { opacity: 0; transition: opacity .25s; }
.radar-rain .radar-layer.active { opacity: .85; }
.radar-pin {
  position: absolute; width: 14px; height: 14px; margin: -7px 0 0 -7px; border-radius: 50%;
  background: var(--ink); box-shadow: 0 0 0 4px rgba(251, 252, 249, .85), 0 0 0 5px var(--ink);
}
.radar-error {
  position: absolute; inset: auto 12px 12px; margin: 0; padding: 10px 12px;
  background: var(--bg); border: 1px solid var(--line); font-size: 14px;
}
.radar-controls { display: flex; align-items: center; gap: 12px; margin: 10px 0 0; }
.radar-controls input[type="range"] { flex: 1; padding: 0; border: 0; accent-color: var(--ink); background: transparent; }
.radar-controls output { font-family: Fraunces, serif; min-width: 3.5em; text-align: right; }
.radar-controls .ghost:disabled { opacity: .5; cursor: default; }

.taxi-list {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: minmax(0, 1fr) max-content max-content; column-gap: 28px;
}
.taxi-list li {
  display: grid; grid-template-columns: subgrid; grid-column: 1 / -1; align-items: baseline;
  padding: 12px 0; border-top: 1px solid var(--line);
}
.taxi-list li:last-child { border-bottom: 1px solid var(--line); }
.taxi-name { display: grid; gap: 2px; }
.taxi-name strong { font-weight: 500; }
.taxi-name small, .taxi-place { color: var(--muted); font-size: 14px; }
.taxi-place { white-space: nowrap; }
.taxi-list a { color: var(--ink); white-space: nowrap; justify-self: end; }

.reminder {
  position: fixed; left: 50%; bottom: 16px; transform: translateX(-50%); z-index: 45;
  width: min(640px, calc(100% - 24px));
  display: flex; align-items: center; gap: 14px;
  background: var(--bg); border: 1px solid var(--ink); padding: 12px 12px 12px 18px;
  box-shadow: 0 8px 28px rgba(54, 57, 46, .18);
}
.reminder p { margin: 0; flex: 1; font-size: 14px; }
.reminder .btn { white-space: nowrap; }
.reminder-close {
  border: 0; background: transparent; color: var(--muted); font-size: 22px; line-height: 1;
  padding: 4px 6px; cursor: pointer;
}
.reminder-close:hover { color: var(--ink); }

.music-pick { margin: 0; color: var(--muted); font-size: 13px; }
#music-btn { gap: 6px; align-items: center; }
#music-btn[aria-pressed="true"] { background: var(--ink); color: var(--on-accent); border-color: var(--ink); }
.music-icon { font-size: 14px; line-height: 1; }

.section { position: relative; padding: 80px 0; border-top: 1px solid var(--line); }
.sprig {
  position: absolute; width: 200px; pointer-events: none; z-index: 0; opacity: .72;
}
.sprig-tr { top: 18px; right: 0; }
.sprig-bl { bottom: 0; left: 0; transform: scaleX(-1); }
.sprig-br { right: 0; bottom: 8px; transform: scaleX(-1) rotate(12deg); }
.section h2 {
  font-family: Fraunces, serif; font-weight: 560;
  font-size: clamp(28px, 4vw, 40px); margin: 0 0 12px;
  scroll-margin-top: calc(var(--nav-h) + 12px);
}
#start, #location, #wochenende, #hotel, #anfahrt, #kontakt, #faq, #zusage {
  scroll-margin-top: calc(var(--nav-h) + 8px);
}
.lede { max-width: 48rem; color: var(--muted); margin: 0 0 28px; }

.photo-grade {
  position: relative; overflow: hidden; background: #1a1714;
}
.photo-grade img {
  width: 100%; display: block; object-fit: cover;
  filter: sepia(.1) saturate(1.28) contrast(1.1) brightness(.98) hue-rotate(6deg);
}
.photo-grade::before,
.photo-grade::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
}
.photo-grade::before {
  background: var(--honey); opacity: .4; mix-blend-mode: soft-light;
}
.photo-grade::after {
  background: rgba(70, 28, 10, .1); mix-blend-mode: multiply;
}
.photo-grade.painted { background: var(--paper); }
.photo-grade.painted img { filter: none; }
.photo-grade.painted::before,
.photo-grade.painted::after { content: none; }

.loc-head {
  display: grid; grid-template-columns: minmax(0, 1fr) 440px;
  gap: 12px 28px; align-items: start; margin: 0 0 36px;
}
.loc-head h2 { margin: 0 0 12px; }
.loc-head .lede { margin: 0; max-width: none; }
.berlin-map { width: 440px; margin: -48px 0 0; justify-self: end; }
.berlin-map svg { display: block; width: 100%; height: auto; }
.loc-block { margin: 0 0 48px; }
.loc-role {
  margin: 0 0 8px; font-size: 13px; font-weight: 500; letter-spacing: .14em;
  text-transform: uppercase; color: var(--leaf-dark);
}
.loc-split .loc-role { color: var(--leaf-dark); }
.loc-split {
  display: grid; grid-template-columns: 1.1fr .9fr; gap: 28px; align-items: start;
  margin-bottom: 40px;
}
.loc-block .loc-split { margin-bottom: 0; }
.loc-split.reverse { grid-template-columns: .9fr 1.1fr; }
.loc-split.reverse > .photo-grade { order: 2; }
.loc-split h3 { font-family: Fraunces, serif; font-size: 24px; font-weight: 560; margin: 0 0 8px; }
.loc-split p { margin: 0 0 12px; color: var(--muted); }
.photo-grade.hero-shot img { height: min(420px, 56vw); }
.room-board {
  display: grid; grid-template-columns: 1fr 1fr; gap: 12px;
  margin: 0 0 18px;
}
.room-note {
  grid-column: 1 / -1; margin: 0;
  color: var(--muted); font-size: 13px; letter-spacing: .08em; text-transform: uppercase;
}
.room-card {
  background: var(--paper); border: 1px solid var(--line); padding: 18px 16px 16px;
  display: flex; flex-direction: column; justify-content: space-between; min-height: 148px;
}
.room-card h3 {
  font-family: Fraunces, serif; font-size: 22px; font-weight: 560; margin: 0 0 14px;
}
.room-card dl { margin: auto 0 0; }
.room-card dl div {
  display: flex; justify-content: space-between; align-items: baseline; gap: 12px;
  padding: 8px 0; border-top: 1px solid var(--line);
}
.room-card dt { color: var(--muted); font-weight: 400; }
.room-card dd { margin: 0; font-family: Fraunces, serif; font-size: 20px; }
.room-book { grid-column: 1 / -1; }
.room-book .btn { min-width: 220px; }
.hotel-contact { margin: 0 0 28px; color: var(--muted); }
.hotel-contact strong { color: var(--ink); font-weight: 500; }
.hotel-contact a { color: var(--ink); }
.hotel-gallery {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px;
}
.hotel-gallery .wide { grid-column: span 2; }
.hotel-gallery .photo-grade { min-height: 220px; }
.hotel-gallery .wide.photo-grade { min-height: 300px; }
.hotel-gallery img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; display: block;
}
.gallery {
  display: grid; grid-template-columns: 1.4fr 1fr; gap: 10px;
  margin-bottom: 32px;
}
.gallery .photo-grade img { height: 220px; }
.caption {
  font-size: 12px; color: var(--muted); margin: 8px 0 0;
}

.day {
  margin: 0 0 28px;
}
.day-title {
  font-family: Fraunces, serif; font-size: 22px; font-weight: 560; margin: 8px 0 12px;
}
.map-card .caption { margin-top: 0; margin-bottom: 8px; }
.day-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 12px 20px; margin: 0 0 14px;
}
.day-head .when { margin: 0; }
.day-head .ghost { flex: none; margin-top: 2px; }
.day h3 {
  font-family: Fraunces, serif; font-size: 22px; font-weight: 560;
  margin: 0 0 4px;
}
.day .when {
  color: var(--muted); font-size: 13px; letter-spacing: .08em;
  text-transform: uppercase; margin: 0 0 14px;
}
.times { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.times li {
  display: grid; grid-template-columns: 108px 1fr; gap: 16px;
  padding: 10px 0; border-top: 1px solid var(--line); align-items: start;
}
.train { margin: 8px 0 36px; }
.train-days {
  display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 28px; align-items: start;
}
.train-days h4 {
  font-family: Fraunces, serif; font-size: 20px; font-weight: 560; margin: 0 0 8px;
}
.times time { font-family: Fraunces, serif; font-size: 16px; line-height: 1.3; }
.times time small {
  display: block; margin-top: 2px;
  font-family: Outfit, sans-serif; font-size: 11px; font-weight: 500;
  letter-spacing: .08em; text-transform: uppercase; color: var(--muted);
}
.times p { margin: 0; color: var(--muted); }
.times strong { display: block; color: var(--ink); font-weight: 500; }
.times p.place { margin-top: 6px; font-size: 13px; }
.place a { color: var(--ink); }

.notice {
  border: 1px solid var(--line); padding: 16px 18px; background: var(--paper);
  margin: 0 0 24px;
}
.locked {
  border: 1px dashed var(--muted); padding: 22px 20px; background: var(--paper);
}
.locked p { margin: 0; color: var(--muted); }

.maps {
  display: grid; grid-template-columns: 1fr; gap: 28px; margin-bottom: 28px;
}
.map-card iframe {
  width: 100%; height: 240px; border: 0; display: block;
  filter: sepia(.1) saturate(1.1) contrast(1.05);
}
.map-card h3 { font-family: Fraunces, serif; font-size: 20px; margin: 0 0 8px; }
.map-card .ghost { margin-top: 10px; }
.placeholder-art {
  min-height: 240px; border: 1px dashed var(--leaf-mid);
  background: var(--paper) url("../img/graphics/eukalyptus-top.svg") no-repeat 10% -20% / 70%;
  display: grid; place-items: center; text-align: center; padding: 24px;
  color: var(--muted);
}

.witnesses {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 28px 18px;
}
.witness {
  padding: 8px 8px 0; background: transparent;
  display: flex; flex-direction: column; align-items: center; text-align: center;
}
.witness h3 { font-family: Fraunces, serif; font-size: 22px; font-weight: 560; margin: 0 0 6px; }
.witness p { margin: 0 0 12px; color: var(--muted); font-size: 14px; }
.witness .witness-role {
  font-style: normal; letter-spacing: .12em; text-transform: uppercase;
  font-size: 11px; color: var(--leaf-dark); margin-bottom: 10px;
}
.witness .witness-bio { max-width: 16rem; margin-bottom: 16px; flex: 1; }
.witness-photo {
  width: 128px; height: 128px; margin: 0 0 16px; border-radius: 50%; overflow: hidden;
  background: var(--leaf-pale); display: grid; place-items: center;
  box-shadow: 0 0 0 10px color-mix(in srgb, var(--leaf-pale) 75%, white);
}
.witness-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.witness-photo.empty::before {
  content: attr(data-initials);
  font-family: Fraunces, serif; font-size: 40px; color: var(--ink); letter-spacing: .04em;
}

.place-group + .place-group { margin-top: 18px; }
.group-place { margin: 0 0 6px; font-size: 14px; color: var(--muted); }
.group-place a { display: inline-flex; align-items: center; gap: 6px; text-decoration: none; color: inherit; }
.group-place a:hover span { text-decoration: underline; }
.group-place b { color: var(--ink); font-weight: 500; }
.group-place svg { flex-shrink: 0; color: var(--leaf-dark); }

.abc { margin: 0; columns: 2; column-gap: 48px; }
.abc div {
  display: grid; grid-template-columns: 36px 1fr; gap: 12px; align-items: baseline;
  break-inside: avoid; margin-bottom: 14px;
}
.abc dt { font-family: Fraunces, serif; font-style: italic; font-size: 26px; color: var(--leaf-dark); line-height: 1; }
.abc dd { margin: 0; color: var(--muted); }

.faq details { border-top: 1px solid var(--line); padding: 12px 0; }
.faq summary { cursor: pointer; font-weight: 500; padding: 4px 0; }
.faq details p { color: var(--muted); margin: 8px 0 4px; }

.site-footer {
  border-top: 1px solid var(--line); padding: 28px 0 48px;
}
.footer-inner {
  width: var(--content); margin: 0 auto;
  display: flex; flex-wrap: wrap; gap: 16px; justify-content: space-between; align-items: center;
}
.lang { display: flex; gap: 6px; }
.lang button {
  border: 1px solid var(--line); background: transparent; color: var(--muted);
  padding: 6px 10px; cursor: pointer; font-size: 12px; letter-spacing: .08em;
}
.lang button[aria-pressed="true"] {
  background: var(--ink); color: var(--on-accent); border-color: var(--ink);
}
.toast {
  position: fixed; bottom: 16px; left: 50%; transform: translateX(-50%);
  background: var(--ink); color: var(--on-accent); padding: 10px 14px;
  font-size: 14px; z-index: 50; display: none;
}
.toast.show { display: block; }

@media (max-width: 860px) {
  .menu-toggle { display: inline-flex; }
  .menu-toggle { padding: 12px 16px; font-size: 13px; }
  .nav-links {
    display: none; position: absolute; top: 100%; left: 0; right: 0;
    background: var(--bg); border-bottom: 1px solid var(--line);
    padding: 8px 12px 16px; flex-direction: column; gap: 2px;
    font-size: 16px; letter-spacing: .06em;
  }
  .nav-links.open { display: flex; }
  .nav-links a { display: block; padding: 16px 14px; border-radius: 3px; }
  .nav-cta .ghost { display: none; }
  .loc-split, .loc-split.reverse, .gallery, .witnesses, .form-row,
  .abc { columns: 1; }
  .hotel-gallery { grid-template-columns: 1fr 1fr; }
  .room-board, .loc-split, .loc-split.reverse, .loc-head { grid-template-columns: 1fr; }
  .hotel-gallery .wide { grid-column: 1 / -1; }
  .hotel-gallery .photo-grade, .hotel-gallery .wide.photo-grade { min-height: 160px; }
  .outfit-cards, .forecast-days, .train-days, .witnesses {
    grid-template-columns: 1fr;
  }
  .witnesses { grid-template-columns: 1fr 1fr; }
  .taxi-list { grid-template-columns: minmax(0, 1fr) max-content; row-gap: 0; }
  .taxi-list li { grid-template-columns: subgrid; }
  .taxi-place { grid-column: 2; grid-row: 1; }
  .taxi-list a { grid-column: 2; grid-row: 2; }
  .reminder { flex-wrap: wrap; }
  .reminder p { flex-basis: calc(100% - 40px); }
  .loc-split.reverse > .photo-grade { order: 0; }
  .stats { grid-template-columns: 1fr 1fr; }
  .guest-row { grid-template-columns: 1fr 1fr; }
  .guest-row label:first-child { grid-column: 1 / -1; }
  .times li { grid-template-columns: 96px 1fr; }
  .hero-botanical.top { width: 100%; }
  .hero-story { grid-template-columns: 1fr; margin: 40px 0 0; }
  .hero-lead { text-align: center; margin: 0 auto; }
  .polaroids { width: 177px; height: 258px; justify-self: center; }
  .polaroid { padding: 8px 8px 58px; }
  .polaroid-caption { left: 6px; right: 6px; bottom: 3px; font-size: 13px; }
  .kicker-wrap { min-height: 168px; }
  .berlin-map { width: 132px; margin: 12px 0 0; justify-self: end; }
  .sprig { width: 120px; opacity: .4; }
  .day-head { flex-wrap: wrap; }
  .photo-grade.hero-shot img, .gallery .photo-grade img { height: 220px; }
}
