@font-face{
  font-family:'Fraunces';
  font-style:normal;
  font-weight:300 600;
  font-display:swap;
  src:url('fonts/fraunces-latin.woff2') format('woff2');
}
@font-face{
  font-family:'Fraunces';
  font-style:italic;
  font-weight:400 500;
  font-display:swap;
  src:url('fonts/fraunces-italic-latin.woff2') format('woff2');
}
@font-face{
  font-family:'Work Sans';
  font-style:normal;
  font-weight:400 600;
  font-display:swap;
  src:url('fonts/work-sans-latin.woff2') format('woff2');
}

:root{
  --stone:#efe7d8;
  --stone-dim:#e4d9c5;
  --brick:#9c4020;
  --char:#241f19;
  --moss:#57614a;
  --amber:#c68a46;
  /* --amber bleibt hell für Akzente auf dunklem Grund (5.5:1+ auf --char).
     --amber-ink ist eine abgedunkelte Variante für Text auf hellem Grund,
     die reine --amber-Variante fällt dort auf 2.4:1 und wäre nicht WCAG-AA-konform. */
  --amber-ink:#8b5e2b;
  /* von #7a6f60 auf #685e52 abgedunkelt, damit Fließtext auch auf --stone-dim
     die geforderten 4.5:1 erreicht (vorher 4.0:1 auf --stone, 3.5:1 auf --stone-dim). */
  --mortar:#685e52;
  --arch-r-lg: 200px;
  --arch-r-sm: 130px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--stone);
  color:var(--char);
  font-family:'Work Sans', sans-serif;
  font-size:16px;
  line-height:1.55;
}
h1,h2,h3,.display{
  font-family:'Fraunces', serif;
  font-weight:500;
  letter-spacing:-0.01em;
  margin:0;
}
.eyebrow{
  font-family:'Work Sans', sans-serif;
  font-size:0.72rem;
  letter-spacing:0.22em;
  text-transform:uppercase;
  color:var(--brick);
  font-weight:600;
  margin:0 0 0.9rem 0;
}
a{color:inherit;}
img{display:block; max-width:100%; height:auto;}
button{font-family:inherit;}

a:focus-visible, button:focus-visible{
  outline:2px solid var(--brick);
  outline-offset:3px;
}

.wrap{max-width:1180px; margin:0 auto; padding:0 clamp(20px,4vw,56px);}

/* NAV */
header{
  position:fixed; top:0; left:0; right:0; z-index:50;
  padding:22px 0;
  transition:background .4s ease, box-shadow .4s ease, padding .4s ease;
}
header .wrap{display:flex; align-items:center; justify-content:space-between;}
.brand{display:flex; align-items:center; gap:10px; font-family:'Fraunces',serif; font-size:1.15rem; font-weight:600; letter-spacing:0.01em; color:#fff; text-decoration:none;}
.brand svg{height:26px; width:auto; display:block;}
nav ul{list-style:none; display:flex; gap:34px; margin:0; padding:0;}
nav a{text-decoration:none; font-size:0.86rem; letter-spacing:0.03em; color:#fff; opacity:0.92;}
nav a:hover{opacity:1; border-bottom:1px solid currentColor;}
header.scrolled{
  background:rgba(239,231,216,0.94);
  backdrop-filter:blur(6px);
  padding:14px 0;
  box-shadow:0 1px 0 rgba(36,31,25,0.08);
}
header.scrolled .brand, header.scrolled nav a{color:var(--char);}

/* header variant for pages without a photo hero underneath (legal pages etc.) */
header.solid{
  background:rgba(239,231,216,0.96);
  box-shadow:0 1px 0 rgba(36,31,25,0.08);
}
header.solid .brand, header.solid nav a{color:var(--char);}

.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;}

/* Hamburger-Button (nur mobil sichtbar) */
.nav-toggle{
  display:none; flex-direction:column; justify-content:center; gap:5px;
  background:none; border:none; cursor:pointer; padding:8px; z-index:60; color:#fff;
}
.nav-toggle span{display:block; width:24px; height:2px; background:currentColor; transition:transform .3s ease, opacity .3s ease;}
header.scrolled .nav-toggle, header.solid .nav-toggle{color:var(--char);}
.nav-toggle.open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.nav-toggle.open span:nth-child(2){opacity:0;}
.nav-toggle.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

.nav-scrim{position:fixed; inset:0; background:rgba(36,31,25,0.45); opacity:0; pointer-events:none; transition:opacity .3s ease; z-index:45;}
.nav-scrim.open{opacity:1; pointer-events:auto;}

@media (max-width:860px){
  .nav-toggle{display:flex;}
  nav#siteNav{
    position:fixed; top:0; right:0; height:100vh; height:100svh; width:min(78vw,320px);
    background:var(--char); box-sizing:border-box;
    padding:110px 32px 32px 32px;
    transform:translateX(100%); transition:transform .35s ease;
    z-index:55;
  }
  nav#siteNav.open{transform:translateX(0);}
  nav#siteNav ul{flex-direction:column; align-items:flex-start; gap:4px;}
  nav#siteNav a{
    color:var(--stone); font-family:'Fraunces',serif; font-weight:500;
    font-size:1.3rem; padding:14px 0; display:block; width:100%; opacity:1;
  }
  nav#siteNav a:hover{opacity:0.75; border-bottom:none;}
}

/* HERO (photo, homepage) — the one deliberate signature moment: the photo
   is capped by an arch cut from the real logo mark, text lives on solid
   ground below it instead of overlaid on the image. */
.hero{background:var(--stone);}
.hero-photo{
  position:relative;
  height:72vh; height:72svh; min-height:480px; max-height:820px;
  overflow:hidden;
}
.hero-photo img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  /* Braut & Bräutigam stehen im oberen Bilddrittel, Kürzung bewusst zulasten
     der Wiese unten statt der Köpfe oben. */
  object-position:center 22%;
  filter:saturate(1.03);
  /* Leichter Überstand als Reserve für die Scroll-Parallaxe unten, siehe scripts.js. */
  transform:scale(1.08);
  will-change:transform;
}
@media (max-width:700px){
  .hero-photo{ height:52vh; height:52svh; min-height:380px; }
  .hero-photo img{ object-position:45% 22%; }
}
.hero-arch{
  position:absolute; bottom:-2px; left:50%; transform:translateX(-50%);
  width:min(64vw, 560px); height:clamp(90px,12vw,160px);
  background:var(--stone);
  border-radius:100% 100% 0 0 / 100% 100% 0 0;
}
.hero-content{
  position:relative; z-index:2; width:100%;
  padding:clamp(36px,6vw,58px) 0 clamp(56px,9vw,90px) 0;
  color:var(--char); text-align:center;
}
.hero h1{
  font-size:clamp(2.2rem, 4.6vw, 3.9rem);
  font-weight:500;
  line-height:1.1;
  max-width:22ch;
  margin:0 auto 22px auto;
}
.hero p.lede{
  max-width:46ch; margin:0 auto 34px auto;
  font-size:1.05rem; color:var(--mortar);
}

/* PAGE HERO (plain band, no photo — legal pages, future subpages) */
.page-hero{
  padding:clamp(150px,20vh,210px) 0 clamp(50px,7vw,70px) 0;
  background:var(--stone-dim);
  border-bottom:1px solid rgba(36,31,25,0.08);
}
.page-hero .eyebrow{text-align:left;}
.page-hero h1{font-size:clamp(2rem,4vw,3rem);}

.btn{
  display:inline-block;
  background:var(--brick); color:#fff;
  padding:15px 34px;
  text-decoration:none;
  font-size:0.92rem; letter-spacing:0.03em;
  border:none; cursor:pointer;
  border-radius:2px;
  /* Kerzenlicht-Schimmer: dezenter warmer Schein, kein Neon-Glow, nur an
     Handlungsaufforderungen, sonst nirgends auf der Seite. */
  box-shadow:0 0 22px 2px rgba(198,138,70,0.28);
  transition:background .25s ease, box-shadow .3s ease, transform .25s ease;
}
.btn:hover{background:#83350f; box-shadow:0 0 30px 6px rgba(198,138,70,0.42);}
.btn.ghost{
  background:transparent; border:1px solid currentColor;
}
.btn.ghost:hover{background:rgba(255,255,255,0.12);}

section{padding:min(14vw,132px) 0;}

/* DER ORT */
.ort-inner{display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,6vw,90px); align-items:center;}
.ort-figure img{
  border-radius:var(--arch-r-lg) var(--arch-r-lg) 6px 6px;
  aspect-ratio:3/4; object-fit:cover;
}
.ort-text h2{font-size:clamp(1.8rem,3vw,2.5rem); margin-bottom:20px;}
.ort-text p{color:var(--mortar); font-size:1.02rem; max-width:44ch;}
.ort-meta{
  display:flex; gap:34px; margin-top:32px; padding-top:28px; border-top:1px solid rgba(36,31,25,0.14);
}
.ort-meta div strong{display:block; font-family:'Fraunces',serif; font-size:1.5rem; font-weight:500;}
.ort-meta div span{font-size:0.78rem; color:var(--mortar); letter-spacing:0.02em;}

/* PAKETE */
.pakete{background:var(--stone-dim);}
.pakete-head{text-align:center; max-width:640px; margin:0 auto 48px auto;}
.pakete-head h2{font-size:clamp(1.8rem,3vw,2.5rem);}
.pakete-head p{color:var(--mortar); margin-top:14px;}

.tabs{display:flex; justify-content:center; gap:8px; margin-bottom:14px; flex-wrap:wrap;}
.tab{
  background:transparent; border:1px solid rgba(36,31,25,0.25);
  padding:11px 22px; font-size:0.86rem; letter-spacing:0.02em;
  border-radius:999px; cursor:pointer; color:var(--char);
  transition:all .2s ease;
}
.tab.active{background:var(--char); border-color:var(--char); color:var(--stone);}
.tab:not(.active):hover{border-color:var(--char);}

.capacity-note{
  text-align:center; font-size:0.85rem; color:var(--mortar); margin:0 0 46px 0; letter-spacing:0.02em;
}
.capacity-note strong{color:var(--brick);}

.paket-set{display:none; grid-template-columns:repeat(3,1fr); gap:26px;}
.paket-set.active{display:grid;}
.karte{
  background:var(--stone); border-radius:var(--arch-r-sm) var(--arch-r-sm) 4px 4px;
  padding:52px 30px 38px 30px; text-align:center;
  display:flex; flex-direction:column; align-items:center;
  border:1px solid rgba(36,31,25,0.08);
}
.karte .stufe{
  font-family:'Work Sans'; font-size:0.7rem; letter-spacing:0.18em; text-transform:uppercase;
  color:var(--amber-ink); font-weight:600; margin-bottom:10px;
}
.karte h3{font-size:1.4rem; margin-bottom:16px;}
.karte p{font-size:0.92rem; color:var(--mortar); max-width:26ch;}
.karte.premium{background:var(--char); color:var(--stone);}
.karte.premium p{color:rgba(239,231,216,0.75);}
.karte.premium .stufe{color:var(--amber);}
a.karte{text-decoration:none; color:inherit; transition:transform .2s ease, border-color .2s ease;}
a.karte:hover{transform:translateY(-3px); border-color:rgba(36,31,25,0.2);}
a.karte.premium:hover{border-color:rgba(239,231,216,0.3);}

@media (min-width:821px){
  .maria-foto{position:sticky; top:110px;}
}

@media (max-width:820px){
  .paket-set{grid-template-columns:1fr;}
  .ort-inner{grid-template-columns:1fr;}
}

.maria-signatur{font-family:'Fraunces', serif; font-style:italic; font-size:1.15rem; color:var(--brick); margin-top:34px;}

/* GALERIE */
.galerie-head{display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:44px; flex-wrap:wrap; gap:18px;}
.galerie-head h2{font-size:clamp(1.8rem,3vw,2.5rem);}
.galerie-head a{font-size:0.88rem; text-decoration:underline; text-underline-offset:4px; white-space:nowrap;}
.grid-galerie{
  display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:20px; align-items:end;
}
.grid-galerie figure{margin:0; position:relative;}
.grid-galerie img{
  width:100%; height:100%; object-fit:cover;
  border-radius:var(--arch-r-sm) var(--arch-r-sm) 4px 4px;
  aspect-ratio:3/4;
  transition:opacity .25s ease;
}
.grid-galerie > div:nth-child(1) img{aspect-ratio:4/5;}
.grid-galerie > div:nth-child(2){transform:translateY(38px);}
.grid-galerie figcaption{
  margin-top:12px; font-size:0.8rem; color:var(--mortar); text-align:center;
}
.galerie-tile{display:block; color:inherit; text-decoration:none;}
.galerie-tile:hover img{opacity:0.85;}
.galerie-tile:hover figcaption{color:var(--char);}
@media (max-width:820px){
  .grid-galerie{grid-template-columns:1fr 1fr;}
  .grid-galerie > div:nth-child(2){transform:none;}
  .grid-galerie > div:nth-child(1){grid-column:span 2;}
}

/* MARIA STRIP */
.maria-strip{
  background:var(--char); color:var(--stone);
  padding:56px 0;
}
.maria-strip .wrap{
  display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap;
}
.maria-strip p{margin:0; font-size:1.02rem; max-width:60ch; color:rgba(239,231,216,0.88);}
.maria-strip a{
  font-size:0.86rem; text-decoration:none; border-bottom:1px solid var(--amber); color:var(--amber);
  white-space:nowrap;
}

/* WERTE (Über uns) */
.werte-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:30px; margin-top:20px; padding:0; list-style:none;}
.werte-grid .karte-werte{padding:8px 4px;}
.werte-grid h3{font-size:1.1rem; margin-bottom:10px;}
.werte-grid p{color:var(--mortar); font-size:0.92rem;}
@media (max-width:820px){.werte-grid{grid-template-columns:1fr;}}

/* Bullet-Listen innerhalb der Paket-Karten (ausführliche Angebotsseite) */
.karte ul.inklusive{
  list-style:none; padding:0; margin:0 0 8px 0; text-align:left; width:100%;
}
.karte ul.inklusive li{
  font-size:0.88rem; color:var(--mortar); padding:7px 0 7px 22px; position:relative;
  border-top:1px solid rgba(36,31,25,0.08);
}
.karte.premium ul.inklusive li{border-top-color:rgba(239,231,216,0.14); color:rgba(239,231,216,0.8);}
.karte ul.inklusive li::before{
  content:"+"; position:absolute; left:2px; color:var(--brick); font-weight:600;
}
.karte.premium ul.inklusive li::before{color:var(--amber);}
.karte ul.inklusive li:first-child{border-top:none;}

.hinweis-box{
  background:var(--stone-dim); border-left:3px solid var(--brick);
  padding:20px 26px; margin-top:50px; max-width:760px;
}
.hinweis-box p{margin:0; color:var(--char); font-size:0.95rem;}

/* VOLLSTÄNDIGE GALERIE */
.galerie-intro{max-width:640px; margin-bottom:50px;}
.galerie-intro p{color:var(--mortar);}
.galerie-voll{
  display:grid; grid-template-columns:repeat(3,1fr); gap:22px;
}
.galerie-voll figure{margin:0;}
.galerie-open{
  display:block; width:100%; padding:0; margin:0; border:none; background:none; cursor:pointer;
  overflow:hidden; border-radius:var(--arch-r-sm) var(--arch-r-sm) 4px 4px;
}
.galerie-voll img{
  width:100%; aspect-ratio:4/5; object-fit:cover;
  transition:transform .5s ease;
}
.galerie-open:hover img, .galerie-open:focus-visible img{transform:scale(1.06);}
.galerie-voll figcaption{margin-top:10px; font-size:0.8rem; color:var(--mortar); text-align:center;}
.galerie-voll figure.quer img{aspect-ratio:4/3;}
.galerie-voll .breit{grid-column:span 2;}
.galerie-untertitel{margin:70px 0 30px 0; font-size:1.4rem;}
.galerie-untertitel:first-of-type{margin-top:0;}
@media (max-width:820px){.galerie-voll{grid-template-columns:1fr 1fr;}}

/* LIGHTBOX */
.lightbox{
  position:fixed; inset:0; z-index:300;
  background:rgba(36,31,25,0.94);
  display:flex; align-items:center; justify-content:center;
  padding:60px;
}
.lightbox[hidden]{display:none;}
.lightbox-figure{max-width:min(90vw,1100px); max-height:85vh; margin:0; text-align:center;}
.lightbox-figure img{max-width:100%; max-height:78vh; width:auto; height:auto; margin:0 auto; display:block; border-radius:4px;}
.lightbox-figure figcaption{color:var(--stone); margin-top:16px; font-size:0.9rem;}
.lightbox-close, .lightbox-prev, .lightbox-next{
  position:absolute; background:none; border:none; color:var(--stone);
  font-size:1.8rem; line-height:1; cursor:pointer; padding:14px;
}
.lightbox-close{top:10px; right:10px;}
.lightbox-prev{left:10px; top:50%; transform:translateY(-50%);}
.lightbox-next{right:10px; top:50%; transform:translateY(-50%);}
.lightbox-close:hover, .lightbox-prev:hover, .lightbox-next:hover{color:var(--amber);}
@media (max-width:600px){
  .lightbox{padding:20px 16px;}
  .lightbox-prev, .lightbox-next{font-size:1.4rem; padding:10px;}
}
@media (max-width:520px){
  .galerie-voll{grid-template-columns:1fr;}
  .galerie-voll .breit{grid-column:auto;}
}

/* LEGAL PAGES (Impressum, Datenschutzerklärung) */
.legal{max-width:760px;}
.legal h2{font-size:1.4rem; margin:2.6em 0 0.7em 0;}
.legal h2:first-child{margin-top:0;}
.legal p{color:var(--char); margin:0 0 1em 0;}
.legal p.muted{color:var(--mortar); font-size:0.92rem;}
.legal a.inline{text-decoration:underline; text-underline-offset:3px;}
.legal .block{margin-bottom:1.6em;}
.legal ul{padding-left:1.2em; margin:0 0 1em 0;}
.legal li{margin-bottom:0.4em;}

/* KONTAKT FORM */
.kontakt-grid{display:grid; grid-template-columns:1fr 1.3fr; gap:clamp(30px,6vw,80px); align-items:start;}
.kontakt-info h2{font-size:1.4rem; margin-bottom:14px;}
.kontakt-info p{color:var(--mortar); margin-bottom:22px;}
.kontakt-info .zeile{display:flex; gap:12px; align-items:baseline; margin-bottom:10px;}
.kontakt-info .zeile span:first-child{font-size:0.72rem; letter-spacing:0.1em; text-transform:uppercase; color:var(--brick); width:90px; flex-shrink:0;}
.kontakt-info a{text-decoration:underline; text-underline-offset:3px;}

.kontakt-foto{margin:0 0 26px 0;}
.kontakt-foto img{
  width:100%; max-width:280px; aspect-ratio:3/4; object-fit:cover;
  border-radius:var(--arch-r-sm) var(--arch-r-sm) 4px 4px;
  margin:0 auto;
}
.kontakt-foto figcaption{margin-top:10px; font-size:0.82rem; color:var(--mortar); text-align:center;}

form.kontakt{display:grid; gap:18px;}
.feld{display:flex; flex-direction:column; gap:6px;}
.feld.zwei{display:grid; grid-template-columns:1fr 1fr; gap:18px;}
label{font-size:0.82rem; letter-spacing:0.02em; color:var(--char); font-weight:500;}
input, select, textarea{
  font-family:'Work Sans', sans-serif; font-size:0.95rem;
  padding:12px 14px; border:1px solid rgba(36,31,25,0.22);
  border-radius:4px; background:#fff; color:var(--char); width:100%;
}
textarea{resize:vertical; min-height:120px;}
input:focus-visible, select:focus-visible, textarea:focus-visible{
  outline:2px solid var(--brick); outline-offset:1px;
}
.einwilligung{display:flex; align-items:flex-start; gap:10px; font-size:0.85rem; color:var(--mortar);}
.einwilligung input{width:auto; margin-top:3px;}
.honeypot-feld{position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden;}
.form-status{padding:14px 16px; border-radius:4px; font-size:0.9rem; display:none;}
.form-status.ok{display:block; background:rgba(87,97,74,0.14); color:var(--moss);}
.form-status.err{display:block; background:rgba(156,64,32,0.1); color:var(--brick);}
.kontakt-submit{align-self:flex-start;}
@media (max-width:720px){
  .kontakt-grid{grid-template-columns:1fr;}
  .feld.zwei{grid-template-columns:1fr;}
}
/* FOOTER */
footer{background:var(--char); color:rgba(239,231,216,0.75); padding:60px 0 30px 0;}
.foot-grid{display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:40px; padding-bottom:40px; border-bottom:1px solid rgba(239,231,216,0.14);}
.foot-grid h3{font-family:'Work Sans'; font-size:0.72rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--amber); margin-bottom:16px; font-weight:600;}
.foot-grid .brand{color:var(--stone); margin-bottom:14px;}
.foot-grid p, .foot-grid a{font-size:0.9rem; color:rgba(239,231,216,0.75); text-decoration:none; display:block; margin-bottom:8px;}
.foot-grid a:hover{color:var(--stone);}
.foot-bottom{display:flex; justify-content:space-between; padding-top:24px; font-size:0.78rem; flex-wrap:wrap; gap:10px; color:rgba(239,231,216,0.6);}
.foot-bottom a{color:rgba(239,231,216,0.6); text-decoration:none;}
.foot-bottom a:hover{color:var(--stone);}
@media (max-width:820px){.foot-grid{grid-template-columns:1fr;}}

/* COOKIE-BANNER */
.cookie-banner{
  position:fixed; left:0; right:0; bottom:0; z-index:90;
  background:var(--char); color:var(--stone);
  padding:22px clamp(20px,4vw,56px);
  box-shadow:0 -2px 24px rgba(0,0,0,0.25);
  transform:translateY(100%); transition:transform .4s ease;
}
.cookie-banner.show{transform:translateY(0);}
.cookie-banner-inner{
  max-width:1180px; margin:0 auto;
  display:flex; align-items:center; justify-content:space-between; gap:28px; flex-wrap:wrap;
}
.cookie-banner p{margin:0; font-size:0.88rem; line-height:1.5; color:rgba(239,231,216,0.85); max-width:62ch;}
.cookie-banner a{text-decoration:underline; text-underline-offset:3px; color:var(--stone);}
.cookie-banner-actions{display:flex; gap:12px; flex-wrap:wrap; flex-shrink:0;}
.cookie-banner-actions button{
  font-family:inherit; font-size:0.85rem; letter-spacing:0.02em; cursor:pointer;
  padding:11px 22px; border-radius:2px; border:1px solid rgba(239,231,216,0.4);
  background:transparent; color:var(--stone); transition:background .2s ease, border-color .2s ease;
}
.cookie-banner-actions button:hover{border-color:var(--stone);}
.cookie-banner-actions .cookie-accept{background:var(--brick); border-color:var(--brick); color:#fff;}
.cookie-banner-actions .cookie-accept:hover{background:#83350f; border-color:#83350f;}
@media (max-width:700px){
  .cookie-banner-inner{flex-direction:column; align-items:stretch;}
  .cookie-banner-actions{justify-content:stretch;}
  .cookie-banner-actions button{flex:1;}
}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  .cookie-banner{transition:none;}
  a.karte{transition:border-color .2s ease;}
  a.karte:hover{transform:none;}
  .galerie-voll img{transition:none;}
  .galerie-open:hover img, .galerie-open:focus-visible img{transform:none;}
  .hero-photo img{transform:none;}
}
