:root {
  --wine: #6f394f;
  --wine-dark: #4c2637;
  --mauve: #a16d83;
  --dusty: #c994a8;
  --blush: #eed9dc;
  --ivory: #fffaf2;
  --paper: #fffdf8;
  --sage: #83937b;
  --ink: #4a3a3e;
  --gold: #b49562;
  --shadow: 0 20px 60px rgba(79, 42, 58, .16);
  --serif: "Cormorant Garamond", Georgia, serif;
  --script: "Great Vibes", cursive;
  --sans: "Montserrat", system-ui, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--ivory); font-family: var(--sans); overflow-x: hidden; }
body.gate-open { overflow: hidden; }
img { display: block; width: 100%; }
a { color: inherit; }
button, input, textarea, select { font: inherit; }

#petal-layer { position: fixed; inset: 0; pointer-events: none; z-index: 40; overflow: hidden; }
.petal { position: absolute; width: 14px; height: 19px; border-radius: 65% 35% 70% 30%; background: rgba(211,151,174,.38); filter: blur(.1px); animation: fall linear forwards; }
@keyframes fall { to { transform: translate3d(var(--drift), 110vh, 0) rotate(520deg); opacity: .15; } }

.invitation-gate { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; min-height: 100svh; transition: opacity .9s ease, visibility .9s ease; }
.invitation-gate.closed { opacity: 0; visibility: hidden; }
.gate-bg { position: absolute; inset: 0; background: url('assets/images/gallery/photo-02.jpg') center 38% / cover no-repeat; transform: scale(1.02); }
.gate-overlay { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(51,29,39,.32), rgba(51,29,39,.63)); backdrop-filter: blur(1px); }
.gate-card { width: min(90vw, 520px); padding: 36px 28px 32px; text-align: center; position: relative; color: #fff; border: 1px solid rgba(255,255,255,.42); background: rgba(79,42,58,.36); box-shadow: 0 30px 90px rgba(0,0,0,.28); backdrop-filter: blur(8px); }
.gate-card::before, .gate-card::after { content:""; position:absolute; width:64px; height:64px; border-color:rgba(255,255,255,.7); }
.gate-card::before { top:10px; left:10px; border-top:1px solid; border-left:1px solid; }
.gate-card::after { bottom:10px; right:10px; border-bottom:1px solid; border-right:1px solid; }
.gate-kicker, .eyebrow { letter-spacing:.18em; text-transform:uppercase; font-size:.72rem; font-weight:600; }
.gate-monogram { width: 96px; height: 96px; object-fit: cover; border-radius: 50%; margin: 16px auto 2px; opacity:.98; }
.gate-card h1 { font: 400 clamp(3rem,9vw,5.4rem)/.95 var(--script); margin: 8px 0; }
.gate-card h1 span, .hero h2 span, .closing-content h2 span { font-family: var(--serif); font-size:.6em; }
.gate-date { font: 500 1.05rem var(--serif); letter-spacing:.08em; }
.guest-welcome { min-height: 1.4em; margin: 14px 0 4px; font: italic 500 1.05rem var(--serif); }
.gate-hint { font-size:.68rem; opacity:.8; margin:10px 0 0; }

.primary-btn, .outline-btn { display:inline-flex; align-items:center; justify-content:center; gap:8px; text-decoration:none; border:0; cursor:pointer; letter-spacing:.09em; text-transform:uppercase; font-size:.72rem; font-weight:600; transition:.25s ease; }
.primary-btn { padding:14px 24px; background:var(--wine); color:#fff; box-shadow:0 10px 25px rgba(78,38,56,.24); }
.primary-btn:hover { transform:translateY(-2px); background:var(--wine-dark); }
.primary-btn:disabled { cursor:wait; opacity:.72; transform:none; }
.gate-card .primary-btn { background:#fff; color:var(--wine-dark); margin-top:16px; }
.outline-btn { padding:12px 18px; border:1px solid rgba(111,57,79,.38); color:var(--wine); background:transparent; }
.outline-btn:hover { background:var(--wine); color:#fff; }

.site-header { position:fixed; top:0; left:0; right:0; z-index:50; height:70px; display:flex; align-items:center; justify-content:space-between; padding:0 clamp(18px,5vw,72px); color:#fff; transition:.35s ease; }
.site-header.scrolled { background:rgba(255,250,242,.96); color:var(--wine-dark); box-shadow:0 8px 24px rgba(70,39,51,.08); backdrop-filter:blur(10px); }
.brand { text-decoration:none; font:400 1.8rem var(--serif); }
.brand span { font-size:.7em; color:var(--gold); }
.site-header nav { display:flex; gap:28px; align-items:center; }
.site-header nav a { text-decoration:none; font-size:.7rem; text-transform:uppercase; letter-spacing:.12em; font-weight:600; }
.menu-toggle { display:none; background:none; border:0; color:inherit; font-size:1.4rem; cursor:pointer; }

.music-button { position:fixed; right:18px; bottom:18px; z-index:60; width:46px; height:46px; border-radius:50%; border:1px solid rgba(255,255,255,.65); background:rgba(111,57,79,.9); color:#fff; cursor:pointer; box-shadow:0 8px 25px rgba(0,0,0,.18); }
.music-button.playing { animation:pulse 2s infinite; }
#backgroundMusic { display:none; }
@keyframes pulse { 50% { box-shadow:0 0 0 10px rgba(161,109,131,.12), 0 8px 25px rgba(0,0,0,.18); } }
.music-frame-wrap { position:fixed; left:0; bottom:0; width:2px; height:2px; opacity:.001; overflow:hidden; pointer-events:none; z-index:-1; }
.music-frame-wrap iframe { width:180px; height:180px; border:0; }

.hero { min-height:100svh; position:relative; display:grid; place-items:center; background:url('assets/images/gallery/photo-02.jpg') center 42% / cover no-repeat; color:#fff; text-align:center; }
.hero-shade { position:absolute; inset:0; background:linear-gradient(180deg, rgba(40,26,31,.15) 10%, rgba(65,34,47,.58) 100%); }
.hero-content { position:relative; z-index:2; width:min(92vw,900px); padding:110px 20px 60px; text-shadow:0 2px 20px rgba(0,0,0,.18); }
.eyebrow { color:rgba(255,255,255,.9); }
.eyebrow.dark { color:var(--mauve); }
.eyebrow.light { color:#ead8df; }
.eyebrow.center { text-align:center; }
.hero h2 { margin:8px 0 0; font:400 clamp(4.5rem,12vw,9rem)/.83 var(--script); }
.hero-fullnames { margin:22px 0 0; font-size:.7rem; letter-spacing:.2em; font-weight:500; }
.ornament { margin:20px auto 12px; font:1.8rem var(--serif); color:#f3d8df; }
.hero-date { margin:0; font:500 clamp(1.2rem,3vw,1.7rem) var(--serif); letter-spacing:.07em; }
.hero-place { margin:7px 0 0; font-size:.78rem; letter-spacing:.13em; text-transform:uppercase; }
.scroll-cue { position:absolute; z-index:3; bottom:18px; color:#fff; text-decoration:none; font-size:2rem; animation:bob 1.7s infinite ease-in-out; }
@keyframes bob { 50% { transform:translateY(7px); } }

.section-inner { width:min(1180px,90vw); margin:auto; padding:100px 0; }
.section-inner.narrow { width:min(930px,90vw); }
.section-title { margin:5px 0 40px; text-align:center; color:var(--wine-dark); font:500 clamp(2.8rem,7vw,5.2rem)/1 var(--script); }
.section-title.left { text-align:left; }
.section-title.light { color:#fff; }
.section-intro { max-width:700px; text-align:center; line-height:1.8; margin:-18px auto 42px; color:#755e67; }

.countdown-section { background:radial-gradient(circle at 50% 20%, #fff 0, var(--ivory) 64%, #f4e5e5 100%); position:relative; }
.countdown-section::before { content:"❀"; position:absolute; font-size:11rem; left:-40px; top:16px; color:rgba(161,109,131,.08); transform:rotate(-15deg); }
.countdown { display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.countdown div { padding:24px 10px; text-align:center; background:rgba(255,255,255,.64); border:1px solid #ecdce0; box-shadow:0 12px 35px rgba(87,44,61,.06); }
.countdown strong { display:block; font:500 clamp(2.5rem,6vw,4.6rem) var(--serif); color:var(--wine); line-height:1; }
.countdown span { display:block; font-size:.67rem; margin-top:8px; letter-spacing:.15em; text-transform:uppercase; color:#8b737b; }
.countdown-note { text-align:center; margin:28px 0 0; font:italic 500 1.2rem var(--serif); color:#705461; }

.story-section { background:var(--paper); overflow:hidden; }
.story-grid { display:grid; grid-template-columns:1fr 1fr; gap:80px; align-items:center; }
.story-photo { position:relative; padding:0 55px 55px 0; }
.story-photo > img { height:650px; object-fit:cover; object-position:center; box-shadow:var(--shadow); }
.story-photo::before { content:""; position:absolute; left:-30px; top:-30px; width:78%; height:75%; border:1px solid #d8b5c2; z-index:0; }
.story-photo > img { position:relative; z-index:1; }
.story-photo-small { position:absolute; z-index:2; width:220px; right:0; bottom:0; border:10px solid var(--paper); box-shadow:var(--shadow); }
.story-photo-small img { height:270px; object-fit:cover; }
.story-copy p { font:400 1.06rem/1.95 var(--serif); color:#6b555d; }
.story-flourish { font:400 3rem var(--script); color:var(--mauve); margin:-24px 0 15px; }
.story-flourish span { font-family:var(--serif); font-size:.55em; }
blockquote { margin:28px 0 0; padding:18px 0 18px 24px; border-left:2px solid var(--dusty); font:italic 500 1.28rem/1.6 var(--serif); color:var(--wine); }

.details-section { background:#f7e9eb; }
.venue-grid { display:grid; grid-template-columns:1fr 1fr; gap:28px; }
.venue-card { background:#fff; box-shadow:var(--shadow); overflow:hidden; border-radius:2px; }
.venue-photo { height:280px; overflow:hidden; background:#eee3e4; }
.venue-photo img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .6s ease; }
.venue-card:hover .venue-photo img { transform:scale(1.025); }
.venue-map { height:230px; background:#e9dfdf; }
.venue-map iframe { border:0; width:100%; height:100%; }
.venue-copy { position:relative; padding:34px; }
.venue-number { position:absolute; right:28px; top:22px; font:400 4rem/1 var(--serif); color:rgba(111,57,79,.09); }
.venue-copy h3 { font:500 2.15rem var(--serif); color:var(--wine-dark); margin:7px 0 10px; }
.venue-copy p { line-height:1.7; color:#745d65; margin:0 0 20px; }



.schedule-section {
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(circle at top left, rgba(233, 206, 215, .35), transparent 28%),
    radial-gradient(circle at bottom right, rgba(203, 175, 185, .25), transparent 25%),
    linear-gradient(180deg, #fffaf9 0%, #f7ecef 100%);
}
.schedule-section::before,
.schedule-section::after {
  content:"";
  position:absolute;
  width:360px;
  height:360px;
  border-radius:50%;
  border:1px solid rgba(154, 102, 120, .10);
  pointer-events:none;
}
.schedule-section::before { top:-220px; left:-120px; }
.schedule-section::after { right:-130px; bottom:-210px; }
.schedule-grid {
  display:grid;
  grid-template-columns:.88fr 1.12fr;
  gap:60px;
  align-items:center;
}
.schedule-photo {
  position:relative;
  padding:20px 0 0 20px;
}
.schedule-photo::before {
  content:"";
  position:absolute;
  inset:0 70px 70px 0;
  border:1px solid rgba(154, 102, 120, .24);
}
.schedule-photo-frame {
  position:relative;
  background:#fff;
  padding:16px;
  box-shadow:0 20px 50px rgba(87, 44, 61, .14);
}
.schedule-photo img {
  display:block;
  width:100%;
  height:760px;
  object-fit:cover;
}
.schedule-photo-note {
  position:absolute;
  right:-10px;
  bottom:34px;
  min-width:220px;
  padding:18px 24px;
  background:rgba(118, 73, 92, .92);
  color:#fffaf9;
  box-shadow:0 18px 34px rgba(87, 44, 61, .18);
  backdrop-filter:blur(4px);
}
.schedule-photo-note span {
  display:block;
  margin-bottom:6px;
  font:500 .76rem/1.4 var(--sans);
  letter-spacing:.22em;
  text-transform:uppercase;
  color:rgba(255,255,255,.78);
}
.schedule-photo-note strong {
  font:400 1.3rem/1.35 var(--script);
  color:#fff;
}
.schedule-copy { position:relative; }
.schedule-card {
  position:relative;
  padding:52px 40px 38px 46px;
  background:rgba(255,255,255,.82);
  border:1px solid rgba(154, 102, 120, .16);
  box-shadow:0 24px 60px rgba(87, 44, 61, .10);
  backdrop-filter:blur(10px);
}
.schedule-card::before {
  content:"";
  position:absolute;
  top:18px;
  left:18px;
  right:18px;
  bottom:18px;
  border:1px solid rgba(154, 102, 120, .12);
  pointer-events:none;
}
.schedule-intro {
  margin:-18px 0 32px;
  font:400 1.03rem/1.9 var(--serif);
  color:#705b63;
}
.timeline-list {
  position:relative;
  display:grid;
  gap:22px;
  margin:0 0 28px;
}
.timeline-list::before {
  content:"";
  position:absolute;
  left:86px;
  top:10px;
  bottom:10px;
  width:1px;
  background:linear-gradient(180deg, rgba(139,91,110,.55), rgba(139,91,110,.10));
}
.timeline-item {
  position:relative;
  display:grid;
  grid-template-columns:18px 110px 1fr;
  gap:18px;
  align-items:start;
}
.timeline-marker {
  width:13px;
  height:13px;
  margin-top:12px;
  border-radius:50%;
  background:var(--rose);
  border:3px solid #fff;
  box-shadow:0 0 0 1px rgba(139,91,110,.35);
  position:relative;
  z-index:1;
}
.timeline-time {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:38px;
  padding:8px 16px;
  border-radius:999px;
  background:#fbf4f5;
  border:1px solid rgba(154, 102, 120, .18);
  font:600 1rem/1.2 var(--sans);
  letter-spacing:.08em;
  color:var(--wine-dark);
  text-transform:uppercase;
}
.timeline-text {
  padding:2px 0 0;
}
.timeline-text h3 {
  margin:0 0 8px;
  font:600 1.18rem/1.3 var(--serif);
  color:var(--wine-dark);
}
.timeline-text p {
  margin:0;
  font:400 .98rem/1.78 var(--serif);
  color:#715d65;
}
.schedule-closing {
  margin:10px 0 0;
  padding-top:24px;
  border-top:1px solid rgba(154, 102, 120, .15);
  font:italic 400 1rem/1.8 var(--serif);
  color:#7a646d;
}

.attire-section { background:linear-gradient(135deg,#5e3045,#7c465b 50%,#99687a); color:#fff; position:relative; overflow:hidden; }
.attire-section::before { content:""; position:absolute; inset:0; opacity:.08; background-image:radial-gradient(circle at 20% 20%, #fff 0 1px, transparent 1px); background-size:28px 28px; }
.attire-grid { position:relative; display:grid; grid-template-columns:.85fr 1.15fr; gap:55px; align-items:center; }
.attire-copy p { line-height:1.8; color:#f4e9ec; }
.attire-block h3 { font:500 1.55rem var(--serif); margin:25px 0 5px; }
.palette { display:flex; gap:12px; margin:30px 0 12px; }
.palette span { width:54px; height:54px; border-radius:50%; background:var(--swatch); border:3px solid rgba(255,255,255,.7); box-shadow:0 7px 16px rgba(0,0,0,.15); }
.attire-note { font-size:.72rem; letter-spacing:.08em; }
.attire-image { background:#fff; padding:10px; box-shadow:0 25px 70px rgba(0,0,0,.25); transform:rotate(1deg); }

.reminders-section { background:var(--ivory); }
.reminders-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
.reminder { padding:35px 26px; text-align:center; border:1px solid #ead8dd; background:#fff; }
.reminder-icon { font:2rem var(--serif); width:56px; height:56px; display:grid; place-items:center; margin:0 auto 16px; border-radius:50%; background:#f2e2e6; color:var(--wine); }
.reminder h3 { font:600 1.35rem var(--serif); color:var(--wine-dark); margin:8px 0; }
.reminder p { margin:0; font:400 1rem/1.7 var(--serif); color:#755e67; }

.entourage-section { background:#fff; }
.entourage-panels { width:min(900px,100%); margin:auto; }
.entourage-panel { margin:14px 0; border:1px solid #e6d2d8; background:#fffaf7; }
.entourage-panel summary { cursor:pointer; list-style:none; padding:20px 26px; text-align:center; font:500 2rem var(--script); color:var(--wine); position:relative; }
.entourage-panel summary::-webkit-details-marker { display:none; }
.entourage-panel summary::after { content:"+"; position:absolute; right:24px; top:50%; transform:translateY(-50%); font:300 1.5rem var(--sans); }
.entourage-panel[open] summary::after { content:"–"; }
.names, .party-grid { border-top:1px solid #eadce0; padding:26px 30px 32px; }
.names.two-col { display:grid; grid-template-columns:1fr 1fr; text-align:center; gap:30px; }
.names p, .party-grid p { margin:7px 0; font:500 1.06rem var(--serif); color:#6a4c57; }
.sponsors-grid { display:grid; grid-template-columns:1fr 1fr; gap:6px 40px; text-align:center; }
.party-grid { display:grid; grid-template-columns:1fr 1fr; gap:30px 50px; text-align:center; }
.party-grid h4 { margin:0 0 8px; font:500 1.7rem var(--script); color:var(--wine); }

.photo-break { height:72vh; min-height:520px; position:relative; overflow:hidden; }
.photo-break > img { width:100%; height:100%; object-fit:cover; object-position:center 48%; }
.photo-break::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg, transparent 30%, rgba(57,32,42,.55)); }
.photo-break-quote { position:absolute; z-index:2; left:50%; bottom:12%; transform:translateX(-50%); width:90%; text-align:center; color:#fff; font:400 clamp(2.8rem,7vw,5.2rem) var(--script); text-shadow:0 2px 20px rgba(0,0,0,.25); }

.gallery-section { background:#f8edef; }
.gallery-grid { display:grid; grid-template-columns:repeat(4,1fr); grid-auto-rows:230px; grid-auto-flow:dense; gap:10px; }
.gallery-item { padding:0; border:0; cursor:zoom-in; overflow:hidden; background:#ddd; }
.gallery-item img { width:100%; height:100%; object-fit:cover; transition:transform .6s ease, filter .4s ease; }
.gallery-item:hover img { transform:scale(1.045); filter:saturate(1.06); }
.gallery-item.tall { grid-row:span 2; }
.gallery-item.wide { grid-column:span 2; }

.gifts-section { background:linear-gradient(135deg,#603047,#8a5266); color:#fff; }
.gifts-grid { display:grid; grid-template-columns:1.05fr 1fr; gap:52px; align-items:center; }
.gift-copy p { font:400 1.08rem/1.9 var(--serif); color:#f5e9ed; }
.gift-line { margin-top:28px; font:400 2.4rem var(--script); color:#f2d9e1; }
.gift-qr-list { display:grid; grid-template-columns:1fr 1fr; gap:18px; align-items:start; }
.gift-qr-card { background:#fff; color:var(--ink); padding:18px; width:100%; text-align:center; box-shadow:0 25px 70px rgba(0,0,0,.22); }
.gift-qr-card img { width:100%; max-height:430px; object-fit:contain; display:block; margin:0 auto; }
.qr-label { margin:0 0 14px; font:500 1.4rem var(--serif); color:var(--wine); }
.qr-caption { font-size:.72rem; line-height:1.6; color:#78636c; }

.rsvp-section { background:var(--ivory); }
.rsvp-grid { display:grid; grid-template-columns:.8fr 1.2fr; gap:65px; align-items:start; }
.rsvp-intro { position:sticky; top:110px; }
.rsvp-intro > p { font:400 1.05rem/1.85 var(--serif); color:#725d64; }
.personal-reservation { margin:26px 0; padding:22px; border:1px solid #ddbfc9; background:#fff; text-align:center; }
.personal-reservation span { display:block; font-size:.68rem; letter-spacing:.15em; text-transform:uppercase; color:#9b7885; }
.personal-reservation strong { display:block; margin:6px 0 2px; font:500 1.65rem var(--serif); color:var(--wine); }
.personal-reservation p { margin:4px 0 0; font-size:.78rem; }
.rsvp-mini-note { margin-top:26px; padding:18px 20px; border-left:3px solid var(--dusty); background:#f8e9ed; font:400 .92rem/1.7 var(--serif); }
.rsvp-deadline { margin:22px 0 0; padding:16px 18px; border:1px solid #dfc3cb; background:rgba(255,255,255,.72); text-align:center; letter-spacing:.03em; }
.rsvp-deadline span { display:block; font:500 .78rem/1.3 var(--sans); text-transform:uppercase; letter-spacing:.16em; color:var(--dusty-dark); }
.rsvp-deadline strong { display:block; margin-top:6px; font:600 1.12rem/1.2 var(--serif); color:var(--wine); }
.rsvp-form { display:grid; grid-template-columns:1fr 1fr; gap:18px; padding:38px; background:#fff; box-shadow:var(--shadow); border:1px solid #ead8dc; }
.field { display:flex; flex-direction:column; gap:7px; }
.field.full, .accept-fields { grid-column:1 / -1; }
.accept-fields { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.accept-fields[hidden] { display:none; }
.field label, fieldset legend { font-size:.74rem; text-transform:uppercase; letter-spacing:.08em; font-weight:600; color:#73535f; }
.field input, .field textarea, .field select { width:100%; padding:13px 14px; border:1px solid #dbc8ce; background:#fffdfb; color:var(--ink); outline:none; border-radius:0; }
.field input:focus, .field textarea:focus, .field select:focus { border-color:var(--mauve); box-shadow:0 0 0 3px rgba(161,109,131,.09); }
.field small { color:#99828a; font-size:.7rem; }
fieldset.field { border:0; padding:0; margin:0; display:grid; grid-template-columns:1fr 1fr; gap:12px; }
fieldset.field legend { grid-column:1/-1; margin-bottom:2px; }
.radio-card { position:relative; padding:18px 16px !important; border:1px solid #dcc8cf; cursor:pointer; text-transform:none !important; letter-spacing:0 !important; display:grid; grid-template-columns:32px 1fr; align-items:center; column-gap:8px; background:#fffdfb; }
.radio-card input { position:absolute; opacity:0; }
.radio-card > span { grid-row:1/3; font-size:1.6rem; color:var(--mauve); }
.radio-card b { font:600 1rem var(--serif); color:var(--wine-dark); }
.radio-card small { font-size:.7rem; font-weight:400; color:#8f7881; }
.radio-card:has(input:checked) { border-color:var(--wine); background:#f8e8ed; box-shadow:0 0 0 2px rgba(111,57,79,.08); }
.submit-btn { grid-column:1/-1; width:100%; margin-top:4px; min-height:50px; }
.privacy-note { grid-column:1/-1; text-align:center; font-size:.65rem; color:#98848b; margin:0; }
.form-status { grid-column:1/-1; text-align:center; min-height:1.3em; font:500 .85rem/1.5 var(--serif); color:var(--wine); }

.closing-section { min-height:75vh; position:relative; display:grid; place-items:center; background:url('assets/images/gallery/photo-16.jpg') center 46% / cover no-repeat; color:#fff; }
.closing-shade { position:absolute; inset:0; background:linear-gradient(180deg,rgba(49,27,37,.18),rgba(49,27,37,.62)); }
.closing-content { position:relative; text-align:center; z-index:2; }
.closing-content p { text-transform:uppercase; letter-spacing:.18em; font-size:.72rem; }
.closing-content h2 { font:400 clamp(4.5rem,11vw,8rem)/.9 var(--script); margin:10px 0 5px; }
.closing-date { letter-spacing:.25em; font:500 1rem var(--serif); }
footer { text-align:center; padding:24px; background:#3f2630; color:#dbc8cf; font-size:.68rem; letter-spacing:.04em; }

.lightbox { position:fixed; inset:0; z-index:120; display:grid; place-items:center; padding:30px; background:rgba(31,19,24,.94); }
.lightbox[hidden] { display:none; }
.lightbox img { max-width:min(1100px,92vw); max-height:90vh; width:auto; box-shadow:0 25px 80px rgba(0,0,0,.45); }
.lightbox button { position:absolute; right:22px; top:14px; border:0; background:none; color:#fff; font-size:2.5rem; cursor:pointer; }

.reveal { opacity:0; transform:translateY(28px); transition:opacity .8s ease, transform .8s ease; }
.reveal.visible { opacity:1; transform:none; }

@media (max-width: 920px) {
  .site-header nav { position:absolute; top:70px; right:16px; left:16px; display:none; flex-direction:column; align-items:stretch; gap:0; background:rgba(255,250,242,.98); color:var(--wine-dark); box-shadow:var(--shadow); padding:8px; }
  .site-header nav.open { display:flex; }
  .site-header nav a { padding:14px; border-bottom:1px solid #f0e3e6; }
  .menu-toggle { display:block; }
  .story-grid, .schedule-grid, .attire-grid, .gifts-grid, .rsvp-grid { grid-template-columns:1fr; gap:45px; }
  .story-photo { max-width:620px; margin:auto; }
  .story-copy, .schedule-copy { max-width:720px; margin:auto; }
  .schedule-photo { max-width:620px; margin:auto; padding:16px 0 0 16px; }
  .schedule-photo::before { inset:0 54px 54px 0; }
  .schedule-photo-note { right:8px; bottom:24px; min-width:unset; }
  .schedule-card { padding:38px 24px 28px 28px; }
  .venue-grid { grid-template-columns:1fr; }
  .attire-image { max-width:720px; margin:auto; }
  .gift-qr-list { grid-template-columns:1fr 1fr; max-width:720px; margin:0 auto; }
  .gift-qr-card { justify-self:center; }
  .rsvp-intro { position:static; }
  .gallery-grid { grid-template-columns:repeat(3,1fr); }
  .reminders-grid { grid-template-columns:1fr; max-width:720px; margin:auto; }
}

@media (max-width: 640px) {
  .section-inner { width:min(92vw,1180px); padding:72px 0; }
  .hero { background-position:58% center; }
  .hero-content { padding-top:90px; }
  .hero-fullnames { line-height:1.7; }
  .countdown { grid-template-columns:repeat(2,1fr); gap:10px; }
  .countdown div { padding:18px 8px; }
  .story-grid, .schedule-grid { gap:46px; }
  .story-photo { padding:0 26px 38px 0; }
  .story-photo > img { height:500px; }
  .story-photo-small { width:150px; border-width:7px; }
  .story-photo-small img { height:190px; }
  .section-title.left { text-align:center; }
  .schedule-photo img { height:auto; max-height:620px; }
  .schedule-photo-note { position:relative; right:auto; bottom:auto; margin: -18px auto 0; width:calc(100% - 44px); text-align:center; }
  .timeline-list::before { left:6px; }
  .timeline-item { grid-template-columns:18px 1fr; gap:10px 14px; text-align:left; }
  .timeline-time { justify-content:flex-start; width:max-content; font-size:.96rem; padding:7px 14px; grid-column:2; }
  .timeline-text { grid-column:2; }
  .timeline-marker { margin-top:13px; }
  .schedule-closing { text-align:left; }
  .story-copy .eyebrow, .attire-copy .eyebrow, .gift-copy .eyebrow, .rsvp-intro .eyebrow { text-align:center; display:block; }
  .story-flourish, .gift-line { text-align:center; }
  .venue-map { height:260px; }
  .venue-copy { padding:28px 24px; }
  .attire-copy { text-align:center; }
  .palette { justify-content:center; flex-wrap:wrap; }
  .palette span { width:46px; height:46px; }
  .names.two-col, .sponsors-grid, .party-grid { grid-template-columns:1fr; gap:16px; }
  .sponsors-grid p:nth-child(odd) { margin-top:13px; }
  .photo-break { height:62vh; min-height:440px; }
  .photo-break > img { object-position:center; }
  .gallery-grid { grid-template-columns:repeat(2,1fr); grid-auto-rows:170px; }
  .gallery-item.wide { grid-column:span 2; }
  .rsvp-form { grid-template-columns:1fr; padding:25px 20px; }
  .accept-fields { grid-template-columns:1fr; }
  fieldset.field { grid-template-columns:1fr; }
  fieldset.field legend { grid-column:auto; }
  .gate-card { padding:30px 18px 27px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration:.01ms !important; animation-iteration-count:1 !important; scroll-behavior:auto !important; transition-duration:.01ms !important; }
  .reveal { opacity:1; transform:none; }
  #petal-layer { display:none; }
}

/* Background-music status / fallback */
.music-notice {
  position: fixed;
  right: 18px;
  bottom: 76px;
  z-index: 61;
  width: min(330px, calc(100vw - 36px));
  padding: 13px 14px;
  background: rgba(255, 250, 247, .97);
  border: 1px solid #e2cbd2;
  box-shadow: 0 10px 35px rgba(48, 29, 37, .16);
  color: #6a4c57;
  font: 500 .75rem/1.5 var(--sans);
}
.music-notice[hidden] { display: none; }
.music-notice a {
  display: inline-block;
  margin-left: 6px;
  color: var(--wine);
  font-weight: 700;
  text-decoration: underline;
}

@media (max-width: 620px) {
  .gift-qr-list { grid-template-columns:1fr; max-width:360px; }
  .venue-photo { height:230px; }
}
