:root {
  --bg: #f7eee8;
  --bg-soft: #fffaf6;
  --card: rgba(255, 250, 246, 0.86);
  --text: #43332d;
  --muted: #8a7167;
  --line: rgba(149, 118, 106, 0.16);
  --accent: #cf9583;
  --accent-deep: #aa6a59;
  --shadow: 0 24px 70px rgba(78, 44, 33, 0.12);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: 'Be Vietnam Pro', sans-serif;
  color: var(--text);
  background: linear-gradient(180deg, #fffdfb 0%, var(--bg) 46%, #f2e1d7 100%);
  overflow-x: hidden;
}
a { color: inherit; text-decoration: none; }
img { display: block; width: 100%; max-width: 100%; }
button, input, select, textarea { font: inherit; }
.site-bg {
  position: fixed; inset: 0; pointer-events: none; z-index: -3;
  background:
    radial-gradient(circle at 18% 8%, rgba(255,255,255,.96), transparent 20%),
    radial-gradient(circle at 82% 12%, rgba(255,234,225,.88), transparent 22%),
    linear-gradient(180deg, rgba(255,255,255,.66), rgba(255,245,239,.1));
}
.petals { position: fixed; inset: 0; pointer-events: none; overflow: hidden; z-index: -1; }
.petals span {
  position: absolute; top: -10vh; width: 14px; height: 20px;
  border-radius: 70% 0 70% 0; opacity: .55;
  background: linear-gradient(180deg, rgba(255,220,228,.95), rgba(231,156,163,.72));
  animation: fall linear infinite;
}
.petals-back span { opacity: .3; transform: scale(.8); }
@keyframes fall {
  from { transform: translate3d(0, -10vh, 0) rotate(0deg); }
  to { transform: translate3d(var(--drift), 115vh, 0) rotate(360deg); }
}
.container { width: min(1120px, calc(100% - 28px)); margin: 0 auto; }
.eyebrow {
  margin: 0 0 12px; font-size: 12px; letter-spacing: .28em; text-transform: uppercase; color: rgba(67,51,45,.72);
}
.center { text-align: center; }
.card {
  background: var(--card); border: 1px solid var(--line); border-radius: 32px; box-shadow: var(--shadow); backdrop-filter: blur(12px);
}
.opening {
  position: fixed; inset: 0; z-index: 30; display: grid; place-items: center;
  background: linear-gradient(180deg, rgba(249,237,230,.92), rgba(248,231,222,.96)); transition: opacity .55s ease, visibility .55s ease;
}
.opening.hidden { opacity: 0; visibility: hidden; }
.opening-card {
  width: min(560px, calc(100% - 28px)); text-align: center; padding: 42px 26px; border-radius: 34px;
  background: rgba(255,255,255,.68); border: 1px solid var(--line); box-shadow: var(--shadow);
}
.opening-card h1, .hero-copy h1, .quote-section h2, .detail-card h2, .story-copy h2, .footer h2, .section-head h2, .card h3, .card h2 {
  font-family: 'Playfair Display', serif;
}
.opening-card h1 { margin: 8px 0 14px; font-size: clamp(34px, 5vw, 54px); line-height: .95; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.opening-card h1 .name-block, .hero-copy h1 .name-block { display: block; }
.rings-mark { display: inline-flex; align-items: center; justify-content: center; color: #e9c3b6; }
.rings-mark svg { width: 64px; height: auto; display: block; filter: drop-shadow(0 4px 10px rgba(0,0,0,.08)); }
.opening-date { margin-top: 12px; font-size: 24px; letter-spacing: .2em; color: var(--accent-deep); }
.primary-btn, .ghost-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 14px 22px; border-radius: 999px; border: 0; cursor: pointer;
  transition: transform .2s ease, opacity .2s ease;
}
.primary-btn:hover, .ghost-btn:hover { transform: translateY(-1px); }
.primary-btn { background: linear-gradient(135deg, var(--accent), var(--accent-deep)); color: #fff; box-shadow: 0 14px 30px rgba(171, 110, 93, 0.24); }
.ghost-btn { background: rgba(255,255,255,.8); color: var(--text); border: 1px solid var(--line); }
.music-fab {
  position: fixed; right: 18px; bottom: 18px; z-index: 20; width: 54px; height: 54px; border: 0; border-radius: 999px; cursor: pointer;
  color: #fff; background: linear-gradient(135deg, #d29a8c, #ab6e5d); box-shadow: var(--shadow);
}
.music-fab.playing { animation: pulse 1.8s infinite; }
@keyframes pulse { 0%,100%{transform:scale(1)} 50%{transform:scale(1.08)} }
.hero { padding: 14px 14px 0; }
.hero-media { position: relative; min-height: 100svh; border-radius: 34px; overflow: hidden; box-shadow: var(--shadow); }
.hero-media img { width: 100%; height: 100svh; object-fit: cover; object-position: center center; transform: scale(1.03); }
.hero-overlay {
  position: absolute; inset: 0; background: linear-gradient(180deg, rgba(28,18,14,.08) 0%, rgba(28,18,14,.26) 52%, rgba(28,18,14,.54) 100%);
}
.hero-copy { position: absolute; inset: auto 0 48px; z-index: 2; text-align: center; color: #fff; }
.hero-copy .eyebrow { color: rgba(255,255,255,.84); }
.hero-copy h1 { margin: 0 auto 18px; max-width: 760px; font-size: clamp(34px, 5.8vw, 72px); line-height: .95; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.hero-copy h1 .left { transform: translateX(-6%); }
.hero-copy h1 .right { transform: translateX(6%); }
.hero-copy h1 .rings-mark svg { width: clamp(56px, 7vw, 88px); }
.hero-sub { max-width: 680px; margin: 0 auto 22px; color: rgba(255,255,255,.95); line-height: 1.85; }
.date-pill {
  display: inline-flex; padding: 12px 18px; border-radius: 999px; background: rgba(255,255,255,.18); border: 1px solid rgba(255,255,255,.32); backdrop-filter: blur(10px);
}
.countdown-section { margin-top: -46px; padding: 26px; position: relative; z-index: 3; }
.countdown { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 12px; }
.countdown div { text-align: center; background: rgba(255,255,255,.74); border: 1px solid var(--line); border-radius: 24px; padding: 18px 10px; }
.countdown strong { display: block; font-family: 'Playfair Display', serif; font-size: clamp(34px, 5vw, 52px); line-height: 1; }
.countdown span { color: var(--muted); }
.quote-section { padding: 54px 0 18px; text-align: center; }
.quote-section h2 { margin: 0 auto 16px; max-width: 900px; font-size: clamp(40px, 6vw, 64px); line-height: 1.02; }
.quote-section p:last-child { max-width: 760px; margin: 0 auto; color: var(--muted); line-height: 1.9; }
.couple-section { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 16px; margin-top: 12px; }
.person-card { text-align: center; }
.person-card h3 { margin: 0; font-size: clamp(34px, 5vw, 48px); }
.photo-frame {
  padding: 10px; border-radius: 32px; background: rgba(255,255,255,.7); border: 1px solid var(--line); box-shadow: var(--shadow); margin-bottom: 16px;
}
.photo-frame img { border-radius: 24px; height: 440px; object-fit: cover; }
.photo-frame.tall img { height: 560px; }
.details-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 16px; margin-top: 22px; }
.wide { grid-column: span 2; }
.detail-card, .contact-card, .map-card, #rsvp, .story-layout { padding: 24px; }
.detail-card h2, .section-head h2, .story-copy h2, .map-card h2, #rsvp h2, .footer h2 { margin: 0 0 12px; font-size: clamp(34px, 5vw, 52px); line-height: 1; }
.detail-line { margin: 0 0 8px; color: var(--muted); line-height: 1.8; }
.detail-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.contact-card { text-align: center; display: grid; align-content: center; min-height: 220px; }
.contact-link { display: inline-block; margin-top: 8px; color: var(--accent-deep); font-weight: 700; font-size: 20px; }
.gallery-section { margin-top: 22px; }
.centered-head { text-align: center; }
.section-head { margin-bottom: 14px; }
.gallery-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 12px; }
.gallery-item { grid-column: span 4; overflow: hidden; border-radius: 28px; background: rgba(255,255,255,.74); border: 1px solid var(--line); box-shadow: var(--shadow); padding: 10px; }
.gallery-item.large { grid-column: span 8; }
.gallery-item img { height: 330px; object-fit: cover; object-position: center center; border-radius: 20px; transition: transform .6s ease; }
.gallery-item:hover img { transform: scale(1.04); }
.story-section { margin-top: 22px; }
.story-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; align-items: center; }
.story-copy p:last-child { color: var(--muted); line-height: 1.9; }
.story-photo img { height: 430px; }
.rsvp-wrap { margin-top: 22px; }
.rsvp-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
#map-embed { width: 100%; height: 100%; min-height: 420px; border: 0; border-radius: 24px; }
.rsvp-head-inline { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:12px; }
.admin-link { white-space: nowrap; }
.rsvp-form { display: grid; gap: 14px; }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
label { display: block; font-size: 14px; color: var(--text); }
input, select, textarea { width: 100%; margin-top: 8px; padding: 14px 16px; border-radius: 18px; border: 1px solid var(--line); background: rgba(255,255,255,.88); color: var(--text); }
textarea { resize: vertical; }
.submit-btn { width: 100%; margin-top: 6px; }
.form-status { min-height: 24px; margin: 0; color: var(--accent-deep); }
.thanks-note { margin-top: 16px; padding: 18px 20px; border-radius: 22px; background: rgba(255,255,255,.72); border: 1px solid var(--line); }
.thanks-note h3 { margin: 0 0 8px; font-family: 'Playfair Display', serif; font-size: 28px; }
.thanks-note p { margin: 0; color: var(--muted); line-height: 1.8; }
.footer { padding: 64px 0 84px; text-align: center; }
.footer p:last-child { color: var(--muted); }
.reveal { opacity: 0; transform: translateY(26px); transition: opacity .7s ease, transform .7s ease; }
.reveal.in-view { opacity: 1; transform: translateY(0); }
@media (max-width: 920px) {
  .couple-section, .details-grid, .rsvp-grid, .story-layout { grid-template-columns: 1fr; }
  .wide { grid-column: span 1; }
  .gallery-item, .gallery-item.large { grid-column: span 6; }
}
@media (max-width: 720px) {
  .container { width: min(100% - 20px, 1120px); }
  .hero { padding: 10px 10px 0; }
  .hero-media { border-radius: 26px; min-height: 88svh; }
  .hero-media img { height: 88svh; object-position: 56% 22%; }
  .hero-copy { inset: auto 0 28px; }
  .hero-copy h1 { max-width: 92%; font-size: clamp(30px, 9vw, 50px); gap: 4px; }
  .hero-copy h1 .left, .hero-copy h1 .right { transform: none; }
  .hero-copy h1 .rings-mark svg { width: 54px; }
  .opening-card h1 { font-size: clamp(28px, 8vw, 42px); }
  .countdown-section { margin-top: -26px; padding: 18px; }
  .countdown { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .gallery-grid { column-count: 1; }
  .photo-frame img, .photo-frame.tall img, .story-photo img { height: 340px; }
  .grid-2 { grid-template-columns: 1fr; }
  .detail-actions { flex-direction: column; }
  .rsvp-head-inline { flex-direction: column; align-items: flex-start; }
  .opening-card { padding: 34px 20px; }
}dding: 34px 20px; }
} column; }
  .opening-card { padding: 34px 20px; }
}