/* =========================================================
   Julia & Lukas – Gemeinsames Stylesheet
   Farbkonzept:
     #E87722 Orange   (Willkommen- & Passwortseite, Hintergrund)
     #F2B129 Gelb      (dezente Akzente, Hover)
     #B61F67 Magenta   (Haupt-Akzent: Buttons, Links)
     #C52873 Pink      (Akzent-Variante, z.B. Absage-Ton)
     #F48FB1 Rosa       (helle Akzent-Variante)
     #FFF3E0 Creme      (Hintergrund der übrigen Seiten)
     #A8B79A Salbei     (Glasoberflächen auf Creme)
     #55633E Oliv       (Schrift auf Creme)
   ========================================================= */

:root{
  --bg: #E87722;
  --bg-light: #f0954f;
  --accent: #B61F67;
  --accent-hover: #cf2f7a;
  --text: #FFF3E0;

  /* Glasoberflächen (Standard: für dunklen Hintergrund gedacht) */
  --card-bg: rgba(255,255,255,0.08);
  --card-border: rgba(255,255,255,0.18);
  --nav-bg: #CE6A22;
  --nav-bg-mobile: #A0521C;
  --input-bg: rgba(255,255,255,0.14);
  --input-border: rgba(255,255,255,0.35);
  --input-focus-bg: rgba(255,255,255,0.2);
  --placeholder-color: rgba(255,255,255,0.7);
  --shadow-soft: rgba(0,0,0,0.14);
  --heart-color: rgba(255,255,255,0.2);
  --heart-accent: var(--text);

  /* Sanfter Glanz-Akzent für den "Julia & Lukas"-Schriftzug */
  --shine-color: #F6D389;

  --radius-lg: 32px;
  --radius-md: 22px;
  --radius-sm: 14px;

  /* ---------- Schriftsystem ----------
     Überschriften: Architects Daughter (wie auf den Einladungskarten)
     Fließtext: EB Garamond (elegante Buchschrift)
     UI-Elemente (Buttons, Links, Labels): schlichte, gut lesbare
     serifenlose Schrift */
  --font-heading: "Architects Daughter", "Snell Roundhand", "Segoe Script", cursive;
  --font-body: "EB Garamond", Georgia, "Times New Roman", serif;
  --font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif;
}

*{ box-sizing: border-box; margin: 0; padding: 0; }

/* Hintergrundfarbe auch auf <html>, damit beim Überscrollen (z.B.
   iOS-"Bounce"-Effekt am oberen/unteren Rand) kein weißer Streifen
   erscheint, sondern die passende Seitenfarbe. */
html{
  scroll-behavior: smooth;
  font-size: 16px;
  background: #E87722;
}
html.theme-beige{ background: #FFF3E0; }

/* Auf Tablet/Desktop alle auf rem basierenden Schriftgrößen
   (Zwischenüberschriften, Fließtext ...) leicht anheben – auf
   Mobilgeräten bleibt es bei der ursprünglichen, bereits passenden
   Größe. */
@media (min-width: 881px){
  html{ font-size: 17.5px; }
}

/* ---------- Creme-Farbschema ----------
   Für alle Seiten außer Willkommen und Passwortseite (die bleiben
   beim ursprünglichen Orange). Cremefarbener Hintergrund, olivgrüne
   Schrift, und Glasoberflächen (Navigation, Kacheln, Formularfelder)
   in Salbeigrün getönt – beides Farben aus dem Farbkonzept. */
body.theme-beige{
  --bg: #FFF3E0;
  --bg-light: #ffffff;
  --text: #55633E;
  --card-bg: rgba(168, 183, 154, 0.24);
  --card-border: rgba(85, 99, 62, 0.25);
  --nav-bg: #E5E1CB;
  --nav-bg-mobile: #A8B79A;
  --input-bg: rgba(168, 183, 154, 0.18);
  --input-border: rgba(85, 99, 62, 0.3);
  --input-focus-bg: rgba(168, 183, 154, 0.3);
  --placeholder-color: rgba(85, 99, 62, 0.55);
  --shadow-soft: rgba(0,0,0,0.08);
  --heart-color: rgba(168, 183, 154, 0.55);
  --heart-accent: #A8B79A;
}

body{
  min-height: 100svh;
  /* Ab iOS 26 liest Safari für die Farbe der Statusleiste u.a. die
     background-color von <body> aus (das theme-color-Meta-Tag wird
     nicht mehr unterstützt) - deshalb hier explizit als eigene
     Eigenschaft gesetzt, nicht nur als Teil des Verlaufs. */
  background-color: var(--bg);
  background-image: radial-gradient(circle at 50% 0%, var(--bg-light) 0%, var(--bg) 65%);
  color: var(--text);
  font-family: var(--font-body);
  overflow-x: hidden;
  animation: fadeInPage 0.9s ease both;
  padding-top: 82px; /* Platz für fixe Navigation */
  /* Kleiner, verspielter Herz-Mauszeiger (nur Desktop - Mobilgeräte
     kennen ohnehin keinen Mauszeiger). Buttons/Links behalten ihren
     eigenen "pointer"-Cursor, da dessen Regel spezifischer ist. */
  cursor: url('../images/cursor-heart.png') 8 8, auto;
}

/* ---------- Sanfte Seitenübergänge (Cross-Document View Transitions) ----------
   Moderne Funktion (Safari ab 18.2 inkl. iOS, Chrome/Edge ab 126) -
   der Browser überblendet automatisch zwischen zwei Seitenaufrufen
   derselben Website, statt hart umzuschalten. Kein JavaScript nötig;
   in älteren Browsern bleibt es einfach beim bisherigen, direkten
   Wechsel (keine Fehler, kein Nachteil). */
@keyframes fadeInPage{
  from{ opacity: 0; }
  to{ opacity: 1; }
}

a{ color: inherit; }

/* Explizit statt nur auf den Browser-Standard zu vertrauen - stellt
   sicher, dass **fett**-Text aus den admin-bearbeitbaren Feldern
   zuverlässig die geladene, echte Fett-Schriftdatei verwendet. */
strong, b{ font-weight: 700; }

h1, h2, h3{
  font-family: var(--font-heading);
  font-weight: 400;
}

/* ---------- "Julia & Lukas"-Schriftzug ----------
   Wird auf der Navigation (Markenname) und der Hero-Überschrift
   verwendet. Schriftart passend zu den Einladungskarten:
   Architects Daughter (wird über Google Fonts geladen, siehe
   <link>-Tag im <head> jeder Seite).
   Ein sehr dezenter, seltener Lichtreflex läuft über den
   Schriftzug – erinnert an den UV-Lack-Druck auf den
   Einladungskarten, ohne aufdringlich zu wirken. ---------- */
.site-nav .brand,
.couple-name{
  font-family: var(--font-heading);
  color: var(--text);
}

@supports ((-webkit-background-clip: text) or (background-clip: text)){
  .site-nav .brand,
  .couple-name{
    background: linear-gradient(
      100deg,
      var(--text) 0%,
      var(--text) 45%,
      var(--shine-color) 50%,
      var(--text) 55%,
      var(--text) 100%
    );
    background-size: 260% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    animation: shine 9s ease-in-out infinite;
  }
}

@keyframes shine{
  0%{ background-position: 220% 0; }
  9%{ background-position: -160% 0; }
  100%{ background-position: -160% 0; }
}

/* ---------- Navigation ---------- */
.site-nav{
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 28px;
  background: var(--nav-bg);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--card-border);
  /* Verhindert ein bekanntes iOS-Safari-Problem, bei dem fixierte
     Elemente mit backdrop-filter beim Scrollen kurz "mitrutschen"
     bzw. flackern - erzwingt eine eigene, stabile GPU-Ebene. */
  transform: translateZ(0);
  -webkit-transform: translateZ(0);
  -webkit-backface-visibility: hidden;
  isolation: isolate;
  will-change: transform;
}

.site-nav .brand{
  font-size: 1.5rem;
  text-decoration: none;
}

.nav-links{
  display: flex;
  align-items: center;
  gap: 6px;
  list-style: none;
}

.nav-links a{
  display: inline-block;
  padding: 9px 16px;
  border-radius: 999px;
  text-decoration: none;
  font-size: 1.05rem;
  font-family: var(--font-heading);
  opacity: 0.88;
  transition: background 0.2s ease, opacity 0.2s ease;
  white-space: nowrap;
}

.nav-links a:hover,
.nav-links a.active{
  background: rgba(242, 177, 41, 0.22);
  opacity: 1;
}

.nav-links a.nav-cta{
  background: var(--accent);
  color: #ffffff;
  opacity: 1;
}

.nav-links a.nav-cta:hover{
  background: var(--accent-hover);
}

.nav-toggle{
  display: none;
  width: 44px;
  height: 44px;
  border: none;
  background: var(--input-bg);
  border-radius: 12px;
  cursor: pointer;
  color: var(--text);
}

.nav-toggle svg{ width: 20px; height: 20px; }

@media (max-width: 480px){
  .page{ padding: 24px 16px 60px; }
  .card{ padding: 22px 20px; }
  .page-header{ margin-bottom: 28px; }
}

@media (max-width: 880px){
  body{ padding-top: 62px; }
  .site-nav{ padding: 12px 16px; }
  .site-nav .brand{ font-size: 1.25rem; }

  .nav-links{
    position: fixed;
    top: 58px;
    left: 12px;
    right: 12px;
    flex-direction: column;
    align-items: stretch;
    background: var(--nav-bg-mobile);
    backdrop-filter: blur(12px);
    border-radius: var(--radius-md);
    padding: 14px;
    gap: 4px;
    border: 1px solid var(--card-border);
    transform-origin: top;
    transform: scaleY(0);
    opacity: 0;
    pointer-events: none;
    transition: transform 0.25s ease, opacity 0.25s ease;
    max-height: calc(100svh - 80px);
    overflow-y: auto;
  }
  .nav-links.open{
    transform: scaleY(1);
    opacity: 1;
    pointer-events: all;
  }
  .nav-links a{ text-align: center; }
  .nav-toggle{ display: flex; align-items: center; justify-content: center; }
}

/* ---------- Layout-Helfer ---------- */
.page{
  max-width: 900px;
  margin: 0 auto;
  padding: 40px 24px 80px;
}

.page-header{
  text-align: center;
  margin-bottom: 40px;
}

.page-header h1{
  font-size: clamp(2.2rem, 7vw, 3rem);
  margin-bottom: 10px;
}

.page-header p{
  font-weight: 300;
  opacity: 0.9;
  max-width: 560px;
  margin: 0 auto;
  line-height: 1.6;
}

.card{
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-lg);
  padding: 32px;
  box-shadow: 0 20px 45px var(--shadow-soft);
  backdrop-filter: blur(6px);
  margin-bottom: 24px;
}

.heart-divider{
  font-size: 1.1rem;
  margin: 10px 0 18px;
  opacity: 0.9;
  color: var(--heart-accent);
  animation: heartbeat 2.4s ease-in-out infinite;
}

@keyframes heartbeat{
  0%, 100%{ transform: scale(1); }
  15%{ transform: scale(1.18); }
  30%{ transform: scale(1); }
  45%{ transform: scale(1.1); }
  60%{ transform: scale(1); }
}

/* ---------- Buttons ---------- */
.btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 15px 30px;
  font-size: 0.98rem;
  font-weight: 600;
  font-family: var(--font-ui);
  color: #ffffff;
  background: var(--accent);
  border: none;
  border-radius: 999px;
  cursor: pointer;
  text-decoration: none;
  box-shadow: 0 10px 24px rgba(182, 31, 103, 0.35);
  transition: background 0.25s ease, transform 0.2s ease, box-shadow 0.25s ease, opacity 0.2s ease;
}

.btn:hover{
  background: var(--accent-hover);
  transform: translateY(-2px);
  box-shadow: 0 14px 28px rgba(182, 31, 103, 0.42);
}

.btn:disabled{ opacity: 0.7; cursor: default; transform: none; }

.btn-outline{
  background: transparent;
  color: var(--text);
  border: 1.5px solid var(--card-border);
  box-shadow: none;
}

.btn-outline:hover{
  background: var(--input-bg);
  box-shadow: none;
}

/* ---------- Formularelemente ---------- */
.field-group{ position: relative; margin-bottom: 16px; }

.text-input, textarea.text-input{
  width: 100%;
  padding: 15px 20px;
  font-size: 1rem;
  font-family: var(--font-ui);
  color: var(--text);
  background: var(--input-bg);
  border: 1.5px solid var(--input-border);
  border-radius: var(--radius-sm);
  outline: none;
  backdrop-filter: blur(10px);
  transition: border-color 0.25s ease, box-shadow 0.25s ease, background 0.25s ease;
}

.text-input::placeholder{ color: var(--placeholder-color); }

.text-input:focus{
  border-color: var(--text);
  background: var(--input-focus-bg);
  box-shadow: 0 0 0 4px rgba(128,128,128,0.1);
}

textarea.text-input{ resize: vertical; min-height: 100px; }

/* ---------- Footer ---------- */
.site-footer{
  text-align: center;
  padding: 30px 20px 50px;
  opacity: 0.85;
  font-size: 1.05rem;
  font-weight: 400;
  font-family: var(--font-heading);
  line-height: 1.5;
}

.footer-privacy-link{
  display: inline-block;
  margin-top: 4px;
  font-family: var(--font-ui);
  font-size: 0.72rem;
  opacity: 0.55;
  color: inherit;
  text-decoration: underline;
}

/* ---------- Dekorativer floraler Hintergrund ----------
   Nutzt currentColor, damit sich die Linien automatisch an die
   Textfarbe des jeweiligen Farbschemas anpassen (cremefarben auf
   den Gästeseiten, anthrazit im hellen Admin-Design). */
.bg-decor{
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background-color: var(--bg);
  color: var(--text);
}

.bg-decor svg{
  width: 100%;
  height: 100%;
}

/* ---------- Versteckter Admin-Zugang ----------
   Das kleine Fußzeilen-Herz ist gleichzeitig ein Link zum
   Admin-Login – bewusst ohne jede visuelle Kennzeichnung, damit er
   nur findet, wer weiß, dass er dort ist. */
.footer-heart-link{
  display: inline-block;
  color: var(--heart-accent);
  text-decoration: none;
  line-height: 0;
}
.footer-heart-link:visited,
.footer-heart-link:hover,
.footer-heart-link:focus{
  text-decoration: none;
  color: var(--heart-accent);
}
.footer-heart-link svg{
  width: 1em;
  height: 1em;
  vertical-align: -0.05em;
}

/* ---------- Schwebende Herzen (dekorativ) ---------- */
.floating-hearts{
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
}

.floating-heart{
  position: absolute;
  bottom: -10%;
  display: block;
  color: var(--heart-color);
  animation: floatUp linear infinite;
}

.floating-heart svg{
  width: 100%;
  height: 100%;
  display: block;
}

@keyframes floatUp{
  0%{ transform: translateY(0) translateX(0) rotate(0deg); opacity: 0; }
  10%{ opacity: 0.45; }
  90%{ opacity: 0.3; }
  100%{ transform: translateY(-115vh) translateX(20px) rotate(25deg); opacity: 0; }
}

/* ---------- Einheitliche Emoji-Darstellung (Twemoji) ----------
   Twemoji ersetzt Emoji-Zeichen durch <img class="emoji">-Grafiken;
   diese Regel sorgt dafür, dass sie sich sauber in den Textfluss
   einfügen und in der Größe zur jeweiligen Schrift passen. */
img.emoji{
  height: 1.15em;
  width: 1.15em;
  vertical-align: -0.2em;
  display: inline-block;
  margin: 0 0.03em;
}
