/* Öffentliche Gästeseite – Optik der Einladungskarte (Pfade relativ zu /css/) */

/* Schriften selbst gehostet (kein Google-CDN) */
@font-face { font-family:"Great Vibes"; font-style:normal; font-weight:400; font-display:swap; src:url("../fonts/great-vibes-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family:"Courier Prime"; font-style:normal; font-weight:400; font-display:swap; src:url("../fonts/courier-prime-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family:"Courier Prime"; font-style:normal; font-weight:700; font-display:swap; src:url("../fonts/courier-prime-latin-700-normal.woff2") format("woff2"); }

/* Design-Tokens */
:root {
  --c-bg:#F7F5EF; --c-primary:#456EA5; --c-script:#456EA5;
  --c-accent-blue-1:#CBEAF2; --c-accent-blue-2:#ADDCF1;
  --c-green-1:#93AD67; --c-green-2:#AECD9B; --c-green-3:#CBDAA4; --c-ink:#1c2433;
  --c-muted:#56627a; --c-danger:#9b2c20; --c-card:rgba(255,255,255,.72);
  --font-display:"Great Vibes", cursive;
  --font-heading:"Courier Prime", ui-monospace, monospace;
  --font-body:"Courier Prime", ui-monospace, monospace;
}

* { box-sizing:border-box; }
html { -webkit-text-size-adjust:100%; }
body {
  margin:0; color:var(--c-ink);
  background:var(--c-bg) url("../images/linen-tile.png") repeat;
  font:16px/1.65 var(--font-body);
}

/* Seitengerüst + florale Deko (PNGs haben weißen Hintergrund -> multiply) */
.page { position:relative; min-height:100vh; display:flex; flex-direction:column; overflow-x:clip; }
.page > nav, .page > main { position:relative; z-index:1; }
.floral { position:absolute; pointer-events:none; user-select:none; mix-blend-mode:multiply; height:auto; max-width:none; }
.floral.tl { top:-8px; left:-18px; width:clamp(96px, 24vw, 250px); opacity:.75; }
.floral.tr { top:0; right:-8px; width:clamp(84px, 20vw, 210px); opacity:.75; }
.floral.sl, .floral.sr { display:none; }
.floral-band { margin-top:2.5rem; pointer-events:none; } /* kein z-index/overflow: sonst kein Stapelkontext-Blend (multiply) mit dem Leinen */
.floral-band img { display:block; width:100%; max-width:1100px; height:auto; margin:0 auto; mix-blend-mode:multiply; }
@media (min-width:1100px) {
  .floral.tl { opacity:1; } .floral.tr { opacity:1; }
  .floral.sl { display:block; left:-40px; top:58%; width:230px; opacity:.8; }
  .floral.sr { display:block; right:-50px; top:46%; width:250px; opacity:.8; transform:scaleX(-1); }
}

main { width:100%; max-width:640px; margin:0 auto; padding:1.5rem 1.1rem 1rem; flex:1; }

/* Typografie */
h1, h2, h3 { font-family:var(--font-heading); font-weight:400; color:var(--c-primary); }
h1 { font-size:1.25rem; letter-spacing:.22em; text-transform:uppercase; text-align:center; margin:2rem 0 .4rem; line-height:1.4; }
h2 { font-size:1.05rem; letter-spacing:.2em; text-transform:uppercase; text-align:center; margin:2.4rem 0 1rem; }
h3 { font-size:.95rem; letter-spacing:.14em; text-transform:uppercase; margin:1.2rem 0 .2rem; }
h1.hero { font-family:var(--font-display); text-transform:none; letter-spacing:0; font-size:clamp(2.8rem, 12vw, 4.6rem); color:var(--c-script); line-height:1.15; margin:.2rem 0 .6rem; font-weight:400; }
.eyebrow { text-align:center; color:var(--c-primary); letter-spacing:.2em; text-transform:uppercase; font-size:.85rem; margin:2.2rem 0 0; }
.greeting { text-align:center; color:var(--c-primary); letter-spacing:.08em; margin:.2rem 0 1.6rem; }
.ornament { text-align:center; color:var(--c-green-1); letter-spacing:.7rem; margin:.2rem 0 1rem; }
a { color:var(--c-primary); text-underline-offset:3px; }
.muted { color:var(--c-muted); font-size:.88rem; }
.center { text-align:center; }
strong, b { font-weight:700; }

/* Sprachumschalter */
nav.lang-switch { position:relative; z-index:2; display:flex; justify-content:flex-end; gap:.2rem; padding:.6rem 1rem 0; font-family:var(--font-heading); font-size:.75rem; letter-spacing:.1em; }
nav.lang-switch a { color:var(--c-primary); text-decoration:none; padding:.15rem .4rem; border:1px solid transparent; border-radius:3px; }
nav.lang-switch a.active { border-color:var(--c-primary); font-weight:700; }
nav.lang-switch a:hover { background:var(--c-accent-blue-1); }

/* Navigation */
nav.pubnav { display:flex; flex-wrap:wrap; justify-content:center; gap:.3rem 1.4rem; padding:.3rem 1rem .4rem; }
nav.pubnav a { color:var(--c-primary); text-decoration:none; font-family:var(--font-heading); font-size:.8rem; letter-spacing:.16em; text-transform:uppercase; padding:.35rem 0; border-bottom:2px solid transparent; }
nav.pubnav a:hover { border-color:var(--c-accent-blue-2); }
nav.pubnav a.active { border-color:var(--c-green-1); font-weight:700; }

/* Karten, Hinweise */
.card { background:var(--c-card); border:1px solid var(--c-accent-blue-2); border-radius:6px; padding:1.1rem 1.2rem; margin-bottom:1.2rem; }
.loc + .loc { border-top:1px solid var(--c-accent-blue-1); margin-top:.8rem; padding-top:.8rem; }
.loc strong { display:block; color:var(--c-primary); letter-spacing:.06em; }
.flash { padding:.8rem 1rem; border-radius:6px; margin-bottom:1.2rem; font-size:.95rem; }
.flash.error { background:#fbeceA; border:1px solid #e2b1aa; color:var(--c-danger); }
.flash.info { background:var(--c-accent-blue-1); border:1px solid var(--c-accent-blue-2); color:var(--c-ink); }
.flash ul { margin:.3rem 0 0; padding-left:1.2rem; }
.field-error { color:var(--c-danger); font-size:.9rem; }

/* Kalenderansicht (/orte) */
.cal { position:relative; margin:0 0 1rem; padding-left:3.4rem; }
.cal .hour { position:absolute; left:0; width:3rem; text-align:right; font-size:.75rem; color:var(--c-muted); transform:translateY(-.6em); }
.cal .line { position:absolute; left:3.4rem; right:0; border-top:1px dashed var(--c-accent-blue-2); }
.cal .events { position:relative; }
.cal .block { position:absolute; overflow:hidden; background:var(--c-accent-blue-1); border:1px solid var(--c-accent-blue-2); border-left:4px solid var(--c-green-1); border-radius:4px; padding:.25rem .55rem; font-size:.82rem; line-height:1.35; }
.cal .block b { display:block; font-size:.9rem; color:var(--c-primary); }
.cal .block .t { color:var(--c-muted); font-size:.76rem; }

/* Formular */
label { display:block; font-weight:700; margin:1rem 0 .3rem; font-size:.92rem; letter-spacing:.03em; }
input[type=text], input[type=email], input[type=tel], select, textarea {
  width:100%; padding:.65rem .7rem; font:inherit; color:var(--c-ink);
  background:rgba(255,255,255,.9); border:1px solid var(--c-accent-blue-2); border-radius:4px;
}
input:focus, select:focus, textarea:focus, .btn:focus-visible, nav.pubnav a:focus-visible { outline:2px solid var(--c-primary); outline-offset:2px; }
input[type=radio], input[type=checkbox] { accent-color:var(--c-primary); }
.choice { display:flex; gap:.6rem; flex-wrap:wrap; }
.choice label { flex:1 1 150px; display:flex; align-items:center; justify-content:center; margin:0; font-weight:400; border:1px solid var(--c-accent-blue-2); border-radius:4px; padding:.75rem; background:rgba(255,255,255,.9); cursor:pointer; text-align:center; }
.choice label:has(input:checked) { border-color:var(--c-primary); background:var(--c-accent-blue-1); }
.choice input { margin-right:.45rem; }
.person { border:1px solid var(--c-accent-blue-2); border-left:4px solid var(--c-green-2); border-radius:4px; padding:.2rem .9rem .9rem; margin:.7rem 0; background:rgba(255,255,255,.6); }
.person h3 { display:flex; justify-content:space-between; align-items:center; margin:.8rem 0 0; }

/* Buttons */
.btn { display:inline-block; padding:.7rem 1.3rem; border:1px solid var(--c-primary); background:var(--c-primary); color:#fff; border-radius:4px; font:inherit; font-size:.9rem; letter-spacing:.12em; text-transform:uppercase; cursor:pointer; text-decoration:none; }
.btn:hover { background:#365989; }
.btn.secondary { background:transparent; color:var(--c-primary); }
.btn.secondary:hover { background:var(--c-accent-blue-1); }
.btn.small { padding:.3rem .7rem; font-size:.76rem; }
.btn.block { width:100%; margin-top:1.2rem; font-size:.95rem; }
fieldset { border:0; padding:0; margin:0; min-width:0; }
[hidden] { display:none !important; }

/* Zusammenfassung, Trauzeugen */
ul.summary { list-style:none; padding:0; margin:.5rem 0; }
ul.summary li { padding:.5rem 0; border-bottom:1px solid var(--c-accent-blue-1); }
.witness { display:flex; gap:1.1rem; align-items:flex-start; }
.witness .avatar { width:92px; height:92px; flex:none; border-radius:50%; object-fit:cover; border:2px solid var(--c-accent-blue-2); }
.witness .placeholder { display:flex; align-items:center; justify-content:center; background:var(--c-accent-blue-1); color:var(--c-script); font:2rem var(--font-display); }
.witness strong { color:var(--c-primary); letter-spacing:.06em; }
.witness p { margin:.4rem 0 0; }
.witness .contact { font-size:.92rem; word-break:break-word; }

@media (max-width:480px) {
  body { font-size:15.5px; }
  .witness { flex-direction:column; align-items:center; text-align:center; }
  h1 { letter-spacing:.16em; }
  nav.pubnav { gap:.2rem 1rem; }
  nav.pubnav a { font-size:.74rem; letter-spacing:.1em; }
}
@media (prefers-reduced-motion:no-preference) { .btn, nav.pubnav a { transition:background .15s, border-color .15s; } }

.inline-check { display:flex; gap:.6rem; align-items:center; font-weight:400; margin:1.2rem 0 .4rem; }

/* Button-Gruppen (Radio-Auswahl mit Icon) – ohne JS bedienbar */
fieldset.choice-field { margin:1rem 0 0; }
fieldset.choice-field legend { padding:0; font-weight:700; font-size:.92rem; letter-spacing:.03em; margin-bottom:.35rem; }
.opt-group { position:relative; display:flex; flex-wrap:wrap; gap:.5rem; }
.opt-group .sr-radio { position:absolute; opacity:0; width:1px; height:1px; margin:0; pointer-events:none; }
.opt-group label {
  flex:1 1 130px; min-height:44px; margin:0; padding:.55rem .8rem;
  display:inline-flex; align-items:center; justify-content:center; gap:.5rem; text-align:center;
  font-weight:400; font-size:.9rem; line-height:1.3; cursor:pointer;
  color:var(--c-primary); background:rgba(255,255,255,.9); border:1px solid var(--c-primary); border-radius:4px;
}
.opt-group label:hover { background:var(--c-accent-blue-1); }
.opt-group .sr-radio:checked + label { background:var(--c-primary); color:#fff; }
.opt-group .sr-radio:focus-visible + label { outline:2px solid var(--c-primary); outline-offset:3px; }
.opt-group .sr-radio:disabled + label { opacity:.55; cursor:default; }
.opt-icon { width:22px; height:22px; flex:none; }

/* Gesperrtes Namensfeld, Kontaktzeile */
input[readonly], input.locked { background:var(--c-accent-blue-1); color:var(--c-ink); border-style:dashed; cursor:not-allowed; }
.field-row { display:grid; grid-template-columns:1fr; gap:0 1rem; }
@media (min-width:560px) { .field-row { grid-template-columns:1fr 1fr; } }

/* Das Brautpaar */
.about { text-align:left; }
.contact-block p { margin:.3rem 0; word-break:break-word; }

/* Statischer Name (Einzelperson) */
.static-name { margin:.2rem 0 .4rem; font-weight:700; font-size:1.05rem; color:var(--c-primary); letter-spacing:.04em; }
.field-row > div { min-width:0; display:flex; flex-direction:column; justify-content:flex-end; }

/* Ein-/Ausblenden mit Animation (Höhe via grid-template-rows + Fade). Ohne JS: alles offen. */
.collapse { display:grid; grid-template-rows:1fr; }
.collapse > .collapse-inner { min-height:0; overflow:hidden; padding:4px; margin:-4px; }
.collapse.is-closed { grid-template-rows:0fr; opacity:0; visibility:hidden; }
.js-anim .collapse { transition:grid-template-rows .26s ease, opacity .26s ease, visibility 0s; }
.js-anim .collapse.is-closed { transition:grid-template-rows .26s ease, opacity .26s ease, visibility 0s .26s; }
@media (prefers-reduced-motion:reduce) {
  .js-anim .collapse, .js-anim .collapse.is-closed { transition:none; }
}
.food-hint { margin:.1rem 0 .6rem; }

/* Kalender-Button */
.calendar-add { margin:1.2rem 0 .6rem; }
.calendar-add .btn { min-height:44px; }
