@font-face {
  font-family: "Geist";
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url("/assets/fonts/geist-normal-300-700.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Entwurf 2 – Register. System: design/2.md */
:root {
  --c-ground: #f1f3ee;
  --c-wash: #e2e8dd;
  --c-ink: #17231b;
  --c-muted: #55625a;
  --c-line: #c9d0c5;
  --c-rose: #b0122c;

  --f: "Geist", system-ui, sans-serif;

  --fs--1: .8rem;
  --fs-0: 1rem;
  --fs-1: 1.25rem;
  --fs-2: 1.563rem;
  --fs-3: 1.953rem;
  --fs-4: 2.441rem;
  --fs-5: clamp(1.953rem, 4.2vw, 3.052rem);
  --track-reg: -.025em;
  --track-tag: .02em;

  --s-1: .25rem;
  --s-2: .5rem;
  --s-3: .75rem;
  --s-4: 1rem;
  --s-5: 1.5rem;
  --s-6: 2rem;
  --s-7: 3rem;
  --s-8: 5rem;
  --s-9: 8rem;
  --pad: clamp(1rem, 3.5vw, 2.5rem);
  --gutter: 1.25rem;
  --r: 2px;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; background: var(--c-ground); color: var(--c-ink); font: 400 var(--fs-0)/1.55 var(--f); -webkit-font-smoothing: antialiased; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration-color: var(--c-line); text-underline-offset: .18em; text-decoration-thickness: 1px; }
a:hover { text-decoration-color: var(--c-rose); }
a:focus-visible, .btn:focus-visible { outline: 2px solid var(--c-rose); outline-offset: 3px; }
.wrap { width: min(80rem, 100%); margin-inline: auto; padding-inline: var(--pad); }
.skip { position: absolute; left: var(--s-4); top: calc(var(--s-8) * -1); background: var(--c-ink); color: var(--c-ground); padding: var(--s-2) var(--s-4); z-index: 20; }
.skip:focus { top: var(--s-4); }

/* Header: three hairline columns */
.top { display: grid; grid-template-columns: auto 1fr; gap: var(--s-4); align-items: start; padding-block: var(--s-4); border-bottom: 1px solid var(--c-line); font-size: var(--fs--1); }
.wordmark { display: block; width: 7.5rem; aspect-ratio: 2245 / 921; background: var(--c-rose); -webkit-mask: url("/assets/img/wordmark.svg") center / contain no-repeat; mask: url("/assets/img/wordmark.svg") center / contain no-repeat; }
.top p { margin: 0; color: var(--c-muted); }
.top ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--s-1) var(--s-4); justify-content: end; }
.top .tel { font-weight: 600; color: var(--c-rose); }
.top .hide-s { display: none; }
@media (min-width: 48rem) {
  .top { grid-template-columns: repeat(6, 1fr); column-gap: var(--gutter); }
  .top .wordmark { grid-column: 1; }
  .top p { grid-column: 2 / 4; }
  .top nav { grid-column: 4 / -1; }
  .top .hide-s { display: list-item; }
}

/* Opening: verse, work photo, actions */
.intro { padding-block: var(--s-7) var(--s-7); display: grid; gap: var(--s-6); }
.intro-text { display: grid; gap: var(--s-5); align-content: center; }
.intro h1 { margin: 0; font-size: var(--fs-3); font-weight: 500; line-height: 1.2; letter-spacing: var(--track-reg); text-wrap: balance; }
.sub { margin: 0; color: var(--c-muted); }
.intro-photo { margin: 0; }
.intro-photo img { width: 100%; }
.intro-photo figcaption, .pair figcaption { margin-top: var(--s-2); font-size: var(--fs--1); color: var(--c-muted); }
@media (min-width: 72rem) {
  .intro { grid-template-columns: repeat(6, 1fr); column-gap: var(--gutter); }
  .intro-text { grid-column: 1 / 4; }
  .intro-photo { grid-column: 4 / -1; }
  .intro h1 { font-size: var(--fs-5); }
}

@media (min-width: 48rem) and (max-width: 71.99rem) { .intro h1 { font-size: var(--fs-4); } }

/* Index: five customer needs */
.index { padding-block: var(--s-6) var(--s-8); border-top: 1px solid var(--c-line); }
.index-title { margin: 0 0 var(--s-6); font-size: var(--fs--1); font-weight: 600; color: var(--c-muted); }
.groups { display: grid; gap: var(--s-6) var(--gutter); grid-template-columns: repeat(auto-fit, minmax(min(100%, 9rem), 1fr)); }
.group h3 { margin: 0 0 var(--s-2); padding-bottom: var(--s-2); border-bottom: 1px solid var(--c-ink); font-size: var(--fs--1); font-weight: 600; }
.group h3 a { text-decoration: none; }
.group ul { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-1); }
.group li a { display: inline-block; padding-block: var(--s-1); font-size: var(--fs-1); font-weight: 500; line-height: 1.2; letter-spacing: var(--track-reg); text-decoration: none; }
.group li a[style]:hover .w, .group li a[style]:focus-visible .w {
  background: var(--photo) center / cover;
  -webkit-background-clip: text; background-clip: text;
  color: transparent;
}
@media (min-width: 72rem) { .groups { grid-template-columns: repeat(5, 1fr); } .group li a { font-size: var(--fs-2); } }
.group li a:hover, .group li a:focus-visible { text-decoration: underline; text-decoration-color: var(--c-rose); }

.tag { font-size: var(--fs--1); font-weight: 600; letter-spacing: var(--track-tag); color: var(--c-muted); vertical-align: text-top; line-height: 1.6; margin-right: var(--s-1); }
.chapter h2 .tag { margin-inline: var(--s-2) 0; }
.entry { display: inline-block; white-space: nowrap; }

.actions { display: flex; flex-wrap: wrap; gap: var(--s-3); }
.btn { display: inline-block; padding: var(--s-3) var(--s-5); border-radius: var(--r); background: var(--c-rose); color: var(--c-ground); font-weight: 600; text-decoration: none; border: 1px solid var(--c-rose); }
.btn:hover { background: var(--c-ink); border-color: var(--c-ink); }
.btn.quiet { background: transparent; color: var(--c-ink); border-color: var(--c-ink); }
.btn.quiet:hover { background: var(--c-ink); color: var(--c-ground); }

/* Chapters */
.chapter { border-top: 1px solid var(--c-line); padding-block: var(--s-7) var(--s-8); }
.chapter-grid { display: grid; gap: var(--s-5); }
.chapter h2 { margin: 0; font-size: var(--fs-2); font-weight: 600; line-height: 1.2; }
.body { display: grid; gap: var(--s-4); }
.body p { margin: 0; max-width: 58ch; }
.body .lead { font-size: var(--fs-1); }
.line { margin: 0; font-size: var(--fs-2); font-weight: 500; line-height: 1.3; letter-spacing: var(--track-reg); }
@media (min-width: 48rem) {
  .chapter-grid { grid-template-columns: repeat(6, 1fr); column-gap: var(--gutter); }
  .chapter h2 { grid-column: 1 / 3; }
  .body { grid-column: 3 / -1; }
  .gallery { grid-column: 1 / -1; }
}
.gallery { list-style: none; margin: var(--s-5) 0 0; padding: 0; display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--s-5) var(--gutter); }
@media (min-width: 48rem) { .gallery { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 47.99rem) { .gallery li:first-child { grid-column: 1 / -1; } .gallery li:first-child img { aspect-ratio: 4 / 3; } }
.gallery figure { margin: 0; }
.gallery img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; background: var(--c-wash); }
.gallery figcaption { margin-top: var(--s-2); font-size: var(--fs--1); color: var(--c-muted); }

.pair { display: grid; gap: var(--s-5) var(--gutter); margin: var(--s-5) 0 0; align-items: end; }
.pair figure { margin: 0; }
.pair img { width: 100%; }
@media (min-width: 48rem) {
  .pair { grid-column: 1 / -1; grid-template-columns: 2fr 3fr; }
}

/* Family */
.people { margin: 0; padding: 0; list-style: none; display: grid; gap: var(--s-4); }
.people li { display: grid; gap: var(--s-1); }
.people b { font-size: var(--fs-1); font-weight: 600; }
.people span { color: var(--c-muted); }
@media (min-width: 48rem) { .people { grid-template-columns: repeat(3, 1fr); gap: var(--gutter); } }

/* Visit */
.visit { background: var(--c-wash); }
.hours { margin: 0; display: grid; grid-template-columns: max-content 1fr; gap: var(--s-2) var(--s-5); }
.hours dt { font-weight: 600; }
.hours dd { margin: 0; }
.visit address { font-style: normal; }
.visit address p { margin: 0 0 var(--s-3); }

/* Footer */
.foot { padding-block: var(--s-7); font-size: var(--fs--1); color: var(--c-muted); }
.cols { display: grid; gap: var(--s-5); padding-top: var(--s-4); border-top: 1px solid var(--c-line); margin-bottom: var(--s-7); }
.cols h2, .foot h2 { margin: 0 0 var(--s-2); font-size: var(--fs--1); font-weight: 600; color: var(--c-ink); }
.cols p, .foot p { margin: 0 0 var(--s-2); max-width: 70ch; }
.cols ul { list-style: none; margin: 0; padding: 0; }
@media (min-width: 48rem) { .cols { grid-template-columns: repeat(3, 1fr); gap: var(--gutter); } }
.imp { display: grid; grid-template-columns: minmax(9rem, max-content) 1fr; gap: var(--s-1) var(--s-5); margin: 0 0 var(--s-6); color: var(--c-ink); }
.imp dt { font-weight: 600; }
.imp dd { margin: 0; overflow-wrap: anywhere; }
@media (max-width: 39.99rem) { .imp { grid-template-columns: 1fr; } .imp dd { margin-bottom: var(--s-2); } }

@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } .group .w { transition: none; } }
.cols a { display: inline-block; padding-block: var(--s-1); }
.top ul a { display: inline-block; padding-block: var(--s-1); }
.hours.ph { padding: var(--s-2) var(--s-3); }
.places { font-size: var(--fs-3); line-height: 1.4; }
@media (min-width: 72rem) { .places { font-size: var(--fs-4); } }
