:root {
  /* Editorial palette — parchment, ink, bordeaux, antique brass */
  --bone:#F2ECE1;
  --paper:#FBF8F3;
  --ink:#211D19;
  --wine:#5C1622;
  --wine-deep:#2A0F14;
  --brass:#A9822F;
  --stone:#CBBFAC;

  --font-display:"Bodoni Moda", Georgia, "Times New Roman", serif;
  --font-script:"Cormorant Garamond", Georgia, serif;
  --font-sans:"Jost", Arial, Helvetica, sans-serif;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--bone); color:var(--ink); font-family:var(--font-script); font-size:1.14rem; font-weight:500; }
a { color:inherit; }
h1,h2,h3,p { margin-top:0; }
h1,h2,h3 { font-family:var(--font-display); font-weight:400; letter-spacing:-.01em; }
.script,.hero__date,.countdown strong,.monogram { font-family:var(--font-display); font-weight:400; }
h2 { margin-bottom:1.4rem; font-size:clamp(2.5rem,5.6vw,5rem); line-height:1.02; }
h3 { font-size:clamp(1.5rem,2.6vw,2.05rem); }
p { line-height:1.75; }
.section { position:relative; padding:clamp(5.5rem,10vw,10rem) max(1.25rem,6vw); text-align:center; overflow:hidden; }
.section > * { max-width:1180px; margin-left:auto; margin-right:auto; }

/* ---- editorial print-frame signature ---- */
.page-frame { position:fixed; inset:18px; z-index:60; pointer-events:none; border:1px solid rgba(255,255,255,.55); mix-blend-mode:difference; }
@media(max-width:760px){ .page-frame{ inset:10px; } }

.eyebrow { margin-bottom:1.1rem; font-family:var(--font-sans); font-size:.72rem; font-weight:600; letter-spacing:.32em; text-transform:uppercase; color:var(--wine); }
.section--sage .eyebrow,.location-card--dark .eyebrow,footer .eyebrow { color:#D9C48F; }
.script { margin-bottom:.6rem; color:var(--wine); font-size:clamp(1.65rem,3.6vw,2.5rem); font-style:italic; }
.lead { max-width:720px; margin:0 auto 2.6rem; color:#4a443d; font-family:var(--font-script); font-size:clamp(1.12rem,2vw,1.32rem); }
.dropcap { float:left; margin:.05em .12em 0 0; color:var(--wine); font-family:var(--font-display); font-size:3.4em; line-height:.82; }

.button { display:inline-flex; min-height:50px; align-items:center; justify-content:center; padding:.9rem 1.7rem; border:1px solid var(--ink); background:transparent; color:var(--ink); font-family:var(--font-sans); font-size:.72rem; font-weight:600; letter-spacing:.18em; text-decoration:none; text-transform:uppercase; transition:background .3s ease,color .3s ease,border-color .3s ease; }
.button:hover { background:var(--wine); border-color:var(--wine); color:var(--paper); }
.button--light { border-color:rgba(255,255,255,.7); color:white; }
.button--light:hover { background:var(--paper); border-color:var(--paper); color:var(--ink); }
.button--outline { background:transparent; color:var(--wine); border-color:var(--wine); }
.is-disabled { cursor:not-allowed; pointer-events:none; background:transparent; color:#9a948b; border-color:var(--stone); opacity:.7; }

.hero { position:relative; display:grid; min-height:100svh; place-items:center; overflow:hidden; color:white; text-align:center; }
.hero__photo,.hero__overlay { position:absolute; inset:0; width:100%; height:100%; }
.hero__photo { object-fit:cover; object-position:center 48%; scale:1.025; filter:saturate(.88) contrast(1.03); animation:heroZoom 14s ease-out both; }
.hero__overlay { background:linear-gradient(140deg,rgba(20,9,12,.82),rgba(42,15,20,.5)),linear-gradient(0deg,rgba(0,0,0,.4),transparent 55%); }
.hero__watermark { position:absolute; z-index:1; top:50%; left:50%; transform:translate(-50%,-52%); color:rgba(255,255,255,.07); font-family:var(--font-display); font-style:italic; font-size:min(60vw,44rem); line-height:1; pointer-events:none; user-select:none; }
.hero__content { position:relative; z-index:2; width:min(92%,1050px); animation:heroIn 1.2s .15s both; }
.hero .eyebrow { color:#E4CE96; }
.hero h1 { margin:.4rem 0; font-size:clamp(3.6rem,9.5vw,8.8rem); line-height:.9; letter-spacing:-.02em; }
.hero h1 span { display:inline-block; font-size:.5em; font-style:italic; color:var(--brass); }
.hero__rule { position:relative; width:150px; height:1px; margin:2.4rem auto; background:rgba(255,255,255,.55); }
.hero__rule::after { content:"✦"; position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); padding:0 .7rem; background:transparent; color:var(--brass); font-size:.8rem; }
.hero__date { display:flex; align-items:center; justify-content:center; gap:1rem; margin-bottom:2.4rem; font-size:clamp(1.1rem,2.6vw,1.7rem); letter-spacing:.08em; text-transform:uppercase; }
.hero__date span { font-size:1.6em; }
.scroll-cue { position:absolute; z-index:3; bottom:1.3rem; left:50%; width:26px; height:42px; border:1px solid rgba(255,255,255,.6); border-radius:20px; transform:translateX(-50%); }
.scroll-cue span { position:absolute; top:8px; left:11px; width:3px; height:8px; border-radius:3px; background:var(--brass); animation:scroll 1.9s infinite; }

.intro { background:var(--bone); }
.monogram { display:flex; width:104px; height:104px; margin:2.6rem auto; align-items:center; justify-content:center; border:1px solid var(--brass); border-radius:50%; color:var(--wine); font-size:2rem; letter-spacing:-.06em; }
.monogram span { margin:0 .13em; color:var(--brass); font-size:.6em; font-style:italic; }
.countdown { display:grid; grid-template-columns:repeat(4,1fr); max-width:760px; margin:4rem auto 0; border-top:1px solid var(--stone); border-bottom:1px solid var(--stone); }
.countdown__unit { padding:1.8rem .5rem; border-right:1px solid var(--stone); }
.countdown__unit:last-child { border-right:0; }
.countdown strong { display:block; color:var(--wine); font-size:clamp(1.75rem,4.6vw,3.4rem); font-variant-numeric:lining-nums; }
.countdown span { font-family:var(--font-sans); font-size:.64rem; letter-spacing:.16em; text-transform:uppercase; color:#6b6157; }

.section--sage { background:var(--wine-deep); color:#EFE7DC; }
.timeline { position:relative; max-width:850px; margin-top:4.2rem; text-align:left; }
.timeline:before { content:""; position:absolute; top:20px; bottom:20px; left:30%; width:1px; background:rgba(217,196,143,.35); }
.timeline__item { display:grid; grid-template-columns:30% 34px 1fr; min-height:180px; align-items:start; }
.timeline time { padding-top:.3rem; padding-right:1.5rem; text-align:right; font-family:var(--font-display); font-style:italic; font-size:1.35rem; color:#D9C48F; }
.timeline__dot { position:relative; z-index:1; width:11px; height:11px; margin:10px auto 0; border:2px solid var(--brass); border-radius:50%; background:var(--wine-deep); }
.timeline__item h3 { margin-bottom:.45rem; font-weight:400; }
.timeline__item p { opacity:.85; font-size:1.02rem; }

.location-grid { display:grid; grid-template-columns:1fr 1fr; margin-top:4.2rem; box-shadow:0 30px 80px rgba(33,29,25,.14); text-align:left; }
.location-card { position:relative; min-height:660px; padding:clamp(2rem,5vw,5rem); background:var(--paper); }
.location-card--dark { background:var(--wine-deep); color:#EFE7DC; }
.location-card__number { display:inline-block; margin-bottom:2.2rem; font-family:var(--font-sans); font-size:.78rem; font-weight:600; letter-spacing:.22em; color:var(--brass); }
.travel { margin:2rem 0 2.5rem; padding-top:1.6rem; border-top:1px solid var(--stone); }
.location-card--dark .travel { border-top-color:rgba(217,196,143,.3); }
.travel h4 { margin-bottom:.35rem; font-family:var(--font-sans); font-size:.72rem; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--wine); }
.location-card--dark .travel h4 { color:#D9C48F; }
.travel p { margin-bottom:1.4rem; opacity:.8; }

.details { background:var(--paper); }
.detail-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; margin-top:4.2rem; background:var(--stone); }
.detail-card { min-height:320px; padding:3.2rem 2rem; background:var(--paper); }
.detail-card span { display:block; margin-bottom:1.5rem; color:var(--brass); font-family:var(--font-display); font-style:italic; font-size:1.9rem; }
.detail-card p { color:#57514a; }
.section--cream { background:var(--bone); }
.menu-actions,.rsvp__actions { display:flex; flex-wrap:wrap; gap:1rem; justify-content:center; margin:2.6rem auto; }
.fine-print { font-family:var(--font-sans); color:#7a7267; font-size:.76rem; letter-spacing:.02em; }
.rsvp { background:var(--paper); }
.rsvp strong { color:var(--wine); font-style:italic; }

footer { padding:4.5rem 1.5rem; background:var(--wine-deep); color:#EFE7DC; text-align:center; }
.monogram--light { margin-top:0; border-color:var(--brass); color:#EFE7DC; }
.monogram--light span { color:var(--brass); }
footer p { font-family:var(--font-sans); font-size:.85rem; letter-spacing:.04em; opacity:.75; }
footer a { display:inline-block; margin-top:.6rem; font-family:var(--font-sans); font-size:.7rem; letter-spacing:.16em; text-transform:uppercase; color:#D9C48F; }

.reveal { opacity:0; transform:translateY(34px); transition:opacity .8s var(--delay,0ms),transform .8s var(--delay,0ms); }
.reveal.is-visible { opacity:1; transform:none; }
@keyframes heroIn { from{opacity:0;transform:translateY(24px)} to{opacity:1;transform:none} }
@keyframes heroZoom { from{scale:1.08} to{scale:1.025} }
@keyframes scroll { 0%{opacity:0;transform:translateY(0)} 40%{opacity:1} 100%{opacity:0;transform:translateY(14px)} }

@media(max-width:760px){
  body { font-size:1.05rem; }
  .hero h1 span { display:block; margin:.25em 0; }
  .hero__watermark { font-size:min(80vw,26rem); }
  .section { padding-left:1.1rem; padding-right:1.1rem; }
  .countdown { grid-template-columns:repeat(2,1fr); }
  .countdown__unit:nth-child(2) { border-right:0; }
  .countdown__unit:nth-child(-n+2) { border-bottom:1px solid var(--stone); }
  .timeline:before { left:12px; }
  .timeline__item { grid-template-columns:25px 1fr; min-height:200px; }
  .timeline time { grid-column:2; padding:0; text-align:left; }
  .timeline__dot { grid-row:1 / span 2; grid-column:1; margin:3px 0; }
  .timeline__item>div:last-child { grid-column:2; }
  .location-grid,.detail-grid { grid-template-columns:1fr; }
  .location-card { min-height:0; padding:4rem 1.5rem; }
  .detail-card { min-height:0; }
  .rsvp__actions .button,.menu-actions .button { width:100%; }
}
@media(prefers-reduced-motion:reduce){
  html { scroll-behavior:auto; }
  .hero__photo,.hero__content,.scroll-cue span { animation:none; }
  .reveal { opacity:1; transform:none; transition:none; }
}