:root {
  --bg: #fffdf3;
  --bg-soft: #fff9ec;
  --text: #3b3425;
  --muted: #7b715e;
  --primary: #efcf58;
  --primary-strong: #d4b13d;
  --card: rgba(255, 255, 255, 0.82);
  --border: rgba(208, 172, 58, 0.42);
  --shadow: 0 12px 30px rgba(147, 122, 43, 0.16);
  --ease-soft: cubic-bezier(0.33, 1, 0.68, 1);
  --ease-gentle: cubic-bezier(0.22, 1, 0.36, 1);
  --duration-soft: 1.05s;
  --duration-reveal: 1.15s;
}
* { box-sizing: border-box; }
body {
  margin: 0; font-family: "Manrope", Arial, sans-serif; color: var(--text);
  background: radial-gradient(circle at top right, #fff4b4, transparent 40%), var(--bg);
  position: relative;
  overflow-x: hidden;
}
.lemon-bg{
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  overflow: hidden;
}
.bg-item{
  position: absolute;
  user-select: none;
  -webkit-user-drag: none;
  filter: saturate(0.95) contrast(1.02);
}
.bg-botanical{
  left: -120px;
  bottom: -180px;
  width: clamp(300px, 36vw, 560px);
  opacity: 0.52;
}
.bg-row{
  top: -42px;
  left: 18%;
  width: clamp(320px, 34vw, 560px);
  opacity: 0.28;
}
.bg-pattern{
  top: -50px;
  right: -210px;
  width: clamp(520px, 54vw, 960px);
  opacity: 0.22;
}
.hero,.section{position:relative;z-index:2}
.hero,.section{width:min(1080px,92%);margin:1rem auto;padding:clamp(1.1rem,3vw,2.2rem);border:1px solid var(--border);border-radius:24px;background:var(--card);box-shadow:var(--shadow)}
.hero{text-align:center}
.kicker{margin:0;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
h1{margin:.5rem 0 0;font-size:clamp(2.2rem,6vw,4.2rem);font-weight:500}
.names{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:.9rem;
  font-family:"Great Vibes",cursive;
  font-weight:400;
  font-size:clamp(2.9rem,8vw,5.4rem);
  color:#bb911a;
  letter-spacing:.02em;
  text-shadow:0 4px 20px rgba(187,145,26,.18);
}
.ring-icon{
  width:clamp(24px,3vw,34px);
  height:clamp(24px,3vw,34px);
  border:2.6px solid #d8b23e;
  border-radius:50%;
  display:inline-block;
  position:relative;
  transform:translateY(7px);
  box-shadow:0 0 0 2px rgba(255,245,199,.65), inset 0 0 0 1px rgba(255,231,145,.5);
}
.ring-icon::after{
  content:"";
  position:absolute;
  width:100%;
  height:100%;
  border:2.6px solid #bd9524;
  border-radius:50%;
  left:46%;
  top:18%;
  transform:scale(.84);
  opacity:.92;
}
h2{margin-top:0;font-size:clamp(1.5rem,4vw,2.2rem)}
.lead,.date{max-width:650px;margin-inline:auto;color:var(--muted)}
.hero-actions{display:flex;gap:.65rem;justify-content:center;align-items:center;flex-wrap:wrap;margin:1rem 0}
.music-label{flex-basis:100%;margin:0;text-align:center;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.map-link{color:var(--primary-strong);font-weight:600}
.gifts-text p{margin:.75rem 0}
.gifts-text p:first-child{margin-top:0}
.gifts-text p:last-child{margin-bottom:0}
.field-hint{display:block;font-size:.85rem;color:var(--muted);font-weight:400;margin:.25rem 0 .4rem}
.btn{
  display:inline-block;border:1px solid transparent;padding:.7rem 1.1rem;border-radius:999px;
  text-decoration:none;cursor:pointer;font:inherit;
  transition:background .55s var(--ease-soft),color .55s var(--ease-soft),border-color .55s var(--ease-soft),transform .55s var(--ease-soft),box-shadow .55s var(--ease-soft);
}
.btn-primary{background:var(--primary);color:#2d2402;box-shadow:0 4px 14px rgba(212,177,61,.22)}
.btn-primary:hover{background:var(--primary-strong);transform:translateY(-1px);box-shadow:0 8px 20px rgba(212,177,61,.28)}
.btn-ghost{border-color:var(--border);color:var(--text);background:transparent}
.btn-ghost:hover{background:rgba(255,255,255,.55);transform:translateY(-1px)}
.countdown-wrap>p{color:var(--muted);letter-spacing:.02em}
.countdown{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}
.countdown-unit{
  min-width:100px;padding:1rem .75rem;border-radius:18px;
  border:1px dashed rgba(208,172,58,.48);
  background:rgba(255,255,255,.45);
  box-shadow:0 6px 18px rgba(82,78,50,.05);
  transition:transform .7s var(--ease-soft),box-shadow .7s var(--ease-soft),border-color .7s var(--ease-soft);
}
.countdown-unit:hover{
  transform:translateY(-2px);
  box-shadow:0 10px 24px rgba(82,78,50,.08);
  border-color:rgba(208,172,58,.65);
}
.countdown-flip{
  height:1em;
  overflow:hidden;
  margin:0 auto;
  font-size:clamp(2.1rem,6vw,3rem);
  line-height:1;
}
.countdown-track{
  display:flex;
  flex-direction:column;
  will-change:transform;
}
.countdown-track.is-animate{
  transition:transform .62s var(--ease-soft);
}
#seconds .countdown-track.is-animate{
  transition-duration:.48s;
}
.countdown-num{
  display:flex;
  align-items:center;
  justify-content:center;
  height:1em;
  flex-shrink:0;
  font-size:1em;
  font-weight:700;
  line-height:1;
  color:var(--text);
  letter-spacing:-.02em;
}
.countdown-unit span{display:block;margin-top:.4rem;font-size:.8rem;color:var(--muted);letter-spacing:.01em}
.gallery-title{
  text-align:center;
  font-weight:500;
  letter-spacing:.03em;
  margin-bottom:0;
}
.gallery-title::after{
  content:"";
  display:block;
  width:52px;
  height:2px;
  margin:.75rem auto 1.35rem;
  background:linear-gradient(90deg,transparent,var(--primary-strong),transparent);
  border-radius:2px;
}
.moments-carousel{
  position:relative;
  border-radius:24px;
  border:1px solid rgba(208,172,58,.28);
  overflow:hidden;
  background:
    radial-gradient(ellipse 80% 60% at 50% 0%,rgba(239,207,88,.12),transparent 70%),
    linear-gradient(165deg,#fffefb 0%,#faf6ee 48%,#f5f0e4 100%);
  box-shadow:
    0 4px 6px rgba(82,78,50,.04),
    0 24px 56px rgba(82,78,50,.1),
    inset 0 1px 0 rgba(255,255,255,.85);
}
.moments-carousel::before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  z-index:1;
  background:linear-gradient(180deg,transparent 72%,rgba(82,78,50,.06) 100%);
}
.moments-carousel.carousel-fade .carousel-item{
  opacity:0;
  transition:opacity 1.35s var(--ease-gentle);
}
.moments-carousel.carousel-fade .carousel-item.active{
  opacity:1;
  z-index:1;
}
.moments-carousel .carousel-inner{
  min-height:min(72vh,520px);
}
.moments-carousel .carousel-indicators{
  list-style:none;
  z-index:3;
  bottom:1.35rem;
  margin-bottom:0;
}
.moments-carousel .carousel-indicators li{
  width:7px;
  height:7px;
  margin:0 5px;
  border:0;
  border-radius:999px;
  background:rgba(255,255,255,.55);
  box-shadow:0 1px 6px rgba(82,78,50,.25);
  opacity:.65;
  transition:width .45s cubic-bezier(.4,0,.2,1),opacity .35s ease,background .35s ease;
}
.moments-carousel .carousel-indicators .active{
  width:32px;
  opacity:1;
  background:linear-gradient(90deg,var(--primary),var(--primary-strong));
}
.moments-carousel .carousel-slide-inner{
  min-height:min(72vh,520px);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:2rem 3.5rem 2.75rem;
}
.carousel-photo-frame{
  position:relative;
  width:min(100%,400px);
  margin:0;
  aspect-ratio:3/4;
  border-radius:20px;
  overflow:hidden;
  box-shadow:
    0 28px 60px rgba(82,78,50,.18),
    0 10px 24px rgba(82,78,50,.08),
    inset 0 0 0 1px rgba(255,255,255,.4);
}
.carousel-photo-frame::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,.06) 0%,transparent 35%,rgba(82,78,50,.08) 100%);
}
.carousel-photo-frame img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center top;
  transform:scale(1);
  transition:transform 9s var(--ease-gentle);
  will-change:transform;
}
.moments-carousel .carousel-item.active .carousel-photo-frame img{
  transform:scale(1.06);
}
.moments-carousel .carousel-control-prev,
.moments-carousel .carousel-control-next{
  z-index:3;
  width:48px;
  height:48px;
  top:50%;
  bottom:auto;
  transform:translateY(-50%);
  border-radius:50%;
  background:rgba(255,255,255,.78);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border:1px solid rgba(255,255,255,.65);
  box-shadow:0 8px 24px rgba(82,78,50,.12);
  opacity:0;
  transition:opacity .4s ease,transform .35s ease,background .35s ease;
}
.moments-carousel:hover .carousel-control-prev,
.moments-carousel:hover .carousel-control-next{opacity:1}
.moments-carousel .carousel-control-prev{left:1rem}
.moments-carousel .carousel-control-next{right:1rem}
.moments-carousel .carousel-control-prev:hover,
.moments-carousel .carousel-control-next:hover{
  background:rgba(255,255,255,.95);
  transform:translateY(-50%) scale(1.04);
}
.moments-carousel-icon{
  display:block;
  width:11px;
  height:11px;
  margin:0 auto;
  border-top:2px solid #524e32;
  border-right:2px solid #524e32;
}
.moments-carousel .carousel-control-prev .moments-carousel-icon{
  transform:rotate(-135deg) translate(1px,-1px);
}
.moments-carousel .carousel-control-next .moments-carousel-icon{
  transform:rotate(45deg) translate(-1px,-1px);
}
@media (max-width:680px){
  .moments-carousel .carousel-slide-inner{padding:1.5rem 1.25rem 2.5rem}
  .carousel-photo-frame{width:min(100%,320px);border-radius:16px}
  .moments-carousel .carousel-control-prev,
  .moments-carousel .carousel-control-next{opacity:.92;width:42px;height:42px}
  .moments-carousel .carousel-control-prev{left:.65rem}
  .moments-carousel .carousel-control-next{right:.65rem}
}
.dress-code-card .dress-code-lead{margin-top:0}
.dress-palette{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:1rem 1.25rem;
  list-style:none;
  margin:1.1rem 0 1.25rem;
  padding:0;
}
.dress-palette li{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:.45rem;
  min-width:72px;
  font-size:.82rem;
  color:var(--muted);
  text-align:center;
}
.dress-palette .swatch{
  width:44px;
  height:44px;
  border-radius:50%;
  background:var(--swatch);
  border:2px solid rgba(82,78,50,.2);
  box-shadow:0 4px 12px rgba(82,78,50,.15);
}
.cards{display:grid;gap:.85rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.card{
  border-radius:16px;border:1px solid var(--border);padding:1rem;background:var(--bg-soft);
  transition:transform .65s var(--ease-soft),box-shadow .65s var(--ease-soft),border-color .65s var(--ease-soft);
}
.card:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(82,78,50,.07)}
.dress-palette .swatch{transition:transform .55s var(--ease-soft),box-shadow .55s var(--ease-soft)}
.dress-palette li:hover .swatch{transform:scale(1.08);box-shadow:0 8px 18px rgba(82,78,50,.18)}
.hero,.section{
  transition:box-shadow .8s var(--ease-soft),border-color .8s var(--ease-soft);
}
.rsvp-form{display:grid;gap:.85rem}
input[type="text"],input[type="number"]{width:100%;border:1px solid var(--border);border-radius:12px;padding:.7rem .8rem;margin-top:.35rem}
fieldset{border:1px solid var(--border);border-radius:12px;padding:.7rem .8rem}
.inline{display:inline-flex;align-items:center;margin-right:1rem;gap:.35rem}
.form-status{min-height:1.4rem;margin:0;color:#286a1f}.form-status.error{color:#a22424}
.reveal{
  opacity:0;
  transform:translateY(14px);
  transition:opacity var(--duration-reveal) var(--ease-soft),transform var(--duration-reveal) var(--ease-soft);
  transition-delay:var(--reveal-delay,0s);
}
.reveal.visible{opacity:1;transform:translateY(0)}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
  }
  .reveal{opacity:1;transform:none}
  .carousel-photo-frame img,.countdown-track{transform:none!important;transition:none!important}
}
@media (max-width:1024px){
  .bg-botanical{left:-140px;bottom:-190px;width:clamp(280px,42vw,470px);opacity:.44}
  .bg-row{top:-30px;left:12%;width:clamp(300px,44vw,480px);opacity:.24}
  .bg-pattern{top:-20px;right:-240px;width:clamp(440px,68vw,860px);opacity:.18}
}
@media (max-width:680px){
  .countdown-unit{min-width:78px;padding:.85rem .5rem}
  .countdown-flip{font-size:clamp(1.85rem,8vw,2.35rem)}
  .bg-botanical{left:-120px;bottom:-140px;width:clamp(220px,56vw,330px);opacity:.34}
  .bg-row{top:-18px;left:8%;width:clamp(220px,64vw,360px);opacity:.18}
  .bg-pattern{top:-8px;right:-180px;width:clamp(330px,94vw,560px);opacity:.14}
}

.site-nav{
  position:fixed;
  right:1rem;
  bottom:1rem;
  z-index:5;
}
.site-nav a{
  font-size:.78rem;
  color:var(--muted);
  text-decoration:none;
  padding:.35rem .55rem;
  border-radius:999px;
  background:rgba(255,255,255,.55);
  border:1px dashed rgba(208,172,58,.35);
}
.site-nav a:hover{color:var(--text)}

.report-page .report-main{
  position:relative;
  z-index:1;
  max-width:960px;
  margin:0 auto;
  padding:2rem 1.25rem 3rem;
}
.report-header{margin-bottom:1.5rem}
.report-header h1{
  margin:.25rem 0;
  font-size:clamp(1.8rem,5vw,2.6rem);
  font-weight:500;
}
.report-subtitle{color:var(--muted);margin:0}
.report-back{
  display:inline-block;
  margin-bottom:.75rem;
  color:var(--muted);
  text-decoration:none;
  font-size:.9rem;
}
.report-back:hover{color:var(--text)}
.report-card,.report-panel{
  background:var(--card);
  border:1px dashed var(--border);
  border-radius:20px;
  padding:1.25rem 1.35rem;
  box-shadow:var(--shadow);
}
.report-panel[hidden]{display:none!important}
.report-login-form{max-width:360px}
.report-stats{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(120px,1fr));
  gap:.75rem;
  margin-bottom:1.25rem;
}
.report-stat{
  padding:.85rem 1rem;
  border-radius:14px;
  background:rgba(255,255,255,.55);
  border:1px dashed rgba(208,172,58,.35);
  text-align:center;
}
.report-stat strong{
  display:block;
  font-size:1.6rem;
  line-height:1.1;
  color:var(--text);
}
.report-stat span{
  display:block;
  margin-top:.25rem;
  font-size:.82rem;
  color:var(--muted);
}
.report-table-wrap{overflow-x:auto}
.report-table{
  width:100%;
  border-collapse:collapse;
  font-size:.92rem;
}
.report-table th,
.report-table td{
  padding:.65rem .5rem;
  text-align:left;
  border-bottom:1px solid rgba(208,172,58,.22);
}
.report-table th{
  font-weight:600;
  color:var(--muted);
  font-size:.8rem;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.report-badge{
  display:inline-block;
  padding:.2rem .55rem;
  border-radius:999px;
  font-size:.82rem;
  font-weight:600;
}
.report-badge.yes{
  background:rgba(152,149,86,.2);
  color:#524e32;
}
.report-badge.no{
  background:rgba(123,113,94,.15);
  color:var(--muted);
}
.report-empty{
  text-align:center;
  color:var(--muted);
  padding:1.5rem 0;
}
.report-logout{margin-top:1.25rem}
