:root {
  --wine: #6f2933;
  --wine-dark: #40151d;
  --taupe: #9a7d67;
  --paper: #f3eee8;
  --paper-light: #faf8f4;
  --ink: #1c1919;
  --muted: #756e69;
  --envelope: #373331;
  --envelope-dark: #242222;
  --envelope-light: #4a4541;
  --line: rgba(28, 25, 25, .18);
  --section-space: clamp(52px, 4.6vw, 72px);
  --serif: 'Cormorant Garamond', Georgia, serif;
  --script: 'Allura', cursive;
  --sans: 'DM Sans', Arial, sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; background: #181313; overscroll-behavior: none; }
body.editorial-page { margin: 0; min-width: 320px; overflow-x: hidden; overscroll-behavior: none; background: var(--paper); color: var(--ink); font: 400 16px/1.65 var(--sans); }
body.editorial-page img { max-width: 100%; }
body.editorial-page a { color: inherit; text-decoration: none; }
body.editorial-page button, body.editorial-page input, body.editorial-page select, body.editorial-page textarea { font: inherit; }
.editorial-invitation { overflow: hidden; background: var(--paper); }
.editorial-shell { width: min(1160px, calc(100% - 48px)); margin-inline: auto; }
.grain { position: fixed; inset: 0; z-index: 50; pointer-events: none; opacity: .045; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E"); }
.section-label { margin: 0 0 15px; color: currentColor; font-size: .67rem; font-weight: 600; letter-spacing: .24em; text-transform: uppercase; }

/* Apertura con sobre */
body.envelope-locked { overflow: hidden; }
.invitation-opening { position: fixed; inset: 0; z-index: 100; min-height: 100dvh; display: grid; place-items: center; overflow: hidden; padding: max(28px, env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) max(28px, env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left)); background: radial-gradient(circle at 50% 38%, #faf7f2 0%, #eee5dc 55%, #d6c6bb 100%); transition: opacity .7s ease, visibility .7s ease; }
.invitation-opening::before { content: ''; position: absolute; inset: 22px; border: 1px solid rgba(55, 51, 49, .17); pointer-events: none; }
.opening-glow { position: absolute; width: min(54vw, 750px); aspect-ratio: 1; border-radius: 50%; background: rgba(55, 51, 49, .1); filter: blur(75px); }
.opening-glow--left { left: -30%; bottom: -44%; }
.opening-glow--right { right: -32%; top: -48%; }
.opening-stage { width: min(94vw, 680px); position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; text-align: center; }
.opening-overline { margin: 0 0 clamp(28px, 4vh, 44px); color: var(--envelope-dark); font-size: .64rem; font-weight: 600; letter-spacing: .27em; text-transform: uppercase; }
.editorial-envelope { width: min(76vw, 560px); aspect-ratio: 1.68 / 1; position: relative; padding: 0; border: 0; background: transparent; cursor: pointer; perspective: 1300px; filter: drop-shadow(0 26px 27px rgba(55, 24, 27, .24)); -webkit-tap-highlight-color: transparent; }
.editorial-envelope:focus-visible { outline: 2px solid var(--wine); outline-offset: 14px; }
.editorial-envelope:disabled { cursor: default; }
.envelope-back, .envelope-letter, .envelope-pocket, .envelope-flap, .envelope-seal { position: absolute; display: block; }
.envelope-back { inset: 0; z-index: 1; border: 1px solid rgba(20, 18, 18, .42); border-radius: 3px; background: linear-gradient(145deg, rgba(255,255,255,.12), transparent 40%), var(--envelope-dark); }
.envelope-letter { z-index: 2; left: 7%; bottom: 6%; width: 86%; height: 84%; padding: clamp(23px, 4vw, 45px) 20px; overflow: hidden; border: 1px solid rgba(55,51,49,.23); background: var(--paper-light); color: var(--ink); transform: translateY(0); transition: transform .9s cubic-bezier(.2,.72,.2,1) .38s, z-index 0s linear .53s, box-shadow .45s ease .48s; }
.envelope-letter::before { content: ''; position: absolute; inset: 10px; border: 1px solid rgba(55,51,49,.13); }
.envelope-letter small, .envelope-letter em { position: relative; display: block; font-style: normal; font-size: clamp(.48rem, 1.2vw, .63rem); font-weight: 600; letter-spacing: .22em; text-transform: uppercase; }
.envelope-letter strong { position: relative; display: flex; align-items: center; justify-content: center; margin: clamp(13px, 3vw, 27px) 0; font: 500 clamp(3.8rem, 9vw, 6.7rem)/.68 var(--serif); letter-spacing: -.08em; }
.envelope-letter strong i { margin-inline: .07em; font-size: .39em; font-weight: 400; font-style: italic; letter-spacing: 0; }
.envelope-pocket { inset: 0; z-index: 4; border-radius: 3px; clip-path: polygon(0 0, 50% 56%, 100% 0, 100% 100%, 0 100%); background: linear-gradient(150deg, transparent 49.6%, rgba(255,255,255,.08) 50%), linear-gradient(210deg, transparent 49.6%, rgba(0,0,0,.2) 50%), var(--envelope); }
.envelope-flap { inset: 0; z-index: 5; clip-path: polygon(0 0, 100% 0, 50% 59%); background: linear-gradient(160deg, rgba(255,255,255,.1), transparent 43%), var(--envelope-light); transform-origin: top center; transition: transform .72s cubic-bezier(.3,.72,.2,1), z-index 0s linear .52s; backface-visibility: hidden; }
.envelope-seal { z-index: 6; left: 50%; top: 51%; width: clamp(70px, 10vw, 94px); aspect-ratio: 1; transform: translate(-50%, -30%); display: flex; align-items: center; justify-content: center; border: 5px double rgba(61,12,20,.46); border-radius: 50%; background: radial-gradient(circle at 34% 27%, rgba(255,255,255,.24), transparent 23%), #842f3b; box-shadow: 0 10px 18px rgba(49,12,18,.38); color: #f6e8dd; font: 500 clamp(1.2rem, 2.3vw, 1.75rem)/1 var(--serif); transition: opacity .28s ease, transform .45s ease; }
.envelope-seal i { margin-inline: .08em; font-size: .57em; font-weight: 400; font-style: italic; }
.opening-action { margin: clamp(30px, 4vh, 44px) 0 0; color: var(--envelope-dark); font: 400 clamp(1.45rem, 2.5vw, 1.9rem)/1 var(--script); }
.invitation-opening.is-opening .envelope-flap { z-index: 1; transform: rotateX(180deg); }
.invitation-opening.is-opening .envelope-letter { z-index: 7; transform: translateY(-69%); box-shadow: 0 20px 35px rgba(54,23,27,.22); }
.invitation-opening.is-opening .envelope-seal { opacity: 0; transform: translate(-50%, -30%) scale(.72); }
.invitation-opening.is-opening .opening-overline, .invitation-opening.is-opening .opening-action { opacity: 0; transition: opacity .32s ease; }
.invitation-opening.is-open { opacity: 0; visibility: hidden; pointer-events: none; }

/* Portada fotográfica */
.editorial-hero { height: 100vh; height: 100dvh; min-height: 100svh; position: relative; display: flex; flex-direction: column; isolation: isolate; overflow: hidden; color: #fff; background: #211b1b; }
.editorial-hero__photo, .date-poster > img, .rsvp-editorial__photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.07); z-index: -3; }
.editorial-hero__shade { position: absolute; inset: 0; z-index: -2; background: linear-gradient(180deg, rgba(15, 10, 10, .52), rgba(15, 10, 10, .14) 36%, rgba(20, 9, 12, .62) 100%); }
.editorial-nav { width: min(1320px, calc(100% - 64px)); margin-inline: auto; padding-top: max(28px, env(safe-area-inset-top)); display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 25px; position: relative; z-index: 2; }
.editorial-nav > a:not(.editorial-nav__mark) { font-size: .66rem; font-weight: 600; letter-spacing: .23em; text-transform: uppercase; }
.editorial-nav > a:last-child { justify-self: end; }
.editorial-nav__mark { font: 500 3rem/.8 var(--serif); letter-spacing: -.08em; }
.editorial-nav__mark span { margin-inline: .05em; font: italic 400 .46em/1 var(--serif); vertical-align: .22em; }
.editorial-hero__content { flex: 1; width: min(1050px, calc(100% - 48px)); margin: auto; padding: 80px 0 120px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.personal-invite { margin: 0 0 22px; padding: 8px 16px; border: 1px solid rgba(255,255,255,.5); font-size: .63rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; backdrop-filter: blur(4px); }
.editorial-kicker { margin: 0 0 10px; font: 400 clamp(2.7rem, 5vw, 4.7rem)/.8 var(--script); }
.editorial-hero h1 { margin: 0; display: grid; grid-template-columns: auto .36em auto; align-items: center; font: 400 clamp(6rem, 16vw, 13.5rem)/.66 var(--serif); letter-spacing: -.075em; }
.editorial-hero h1 small { margin: 0 .08em; font: italic 400 .27em/1 var(--serif); letter-spacing: 0; }
.editorial-date { margin: 38px 0 4px; font-size: .86rem; font-weight: 600; letter-spacing: .28em; }
.editorial-location { margin: 0; font: 400 1.25rem var(--serif); letter-spacing: .05em; }
.scroll-cue { position: absolute; bottom: max(25px, env(safe-area-inset-bottom)); left: 50%; width: min(470px, calc(100% - 56px)); transform: translateX(-50%); display: flex; justify-content: space-between; gap: 20px; padding: 14px 0; border-bottom: 1px solid rgba(255,255,255,.65); font-size: .63rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }
.scroll-cue b { font-size: 1.05rem; }

/* Texto de invitación */
.invitation-letter { padding: var(--section-space) 0; background: var(--paper-light); text-align: center; }
.invitation-letter__inner { max-width: 790px; }
.invitation-letter h2 { margin: 0; font: 500 clamp(4.2rem, 9vw, 8rem)/.8 var(--serif); letter-spacing: -.06em; }
.invitation-letter h2 span { display: inline-block; margin-inline: .08em; color: var(--wine); font: 400 .55em var(--script); }
.fine-rule { width: min(470px, 82%); margin: 25px auto; display: flex; align-items: center; gap: 18px; }
.fine-rule i { flex: 1; height: 1px; background: var(--line); }
.fine-rule b { color: var(--wine); font: 500 .76rem var(--serif); letter-spacing: .12em; }
.invitation-copy { max-width: 650px; margin: 18px auto 0; color: #3a3532; font: 400 clamp(1.35rem, 2.5vw, 1.8rem)/1.55 var(--serif); }

/* Póster de fecha */
.date-poster { height: 100vh; height: 100dvh; min-height: 100svh; position: relative; display: grid; place-items: center; isolation: isolate; overflow: hidden; color: #fff; background: #262020; }
.date-poster__shade { position: absolute; inset: 0; z-index: -2; background: linear-gradient(180deg, rgba(26, 13, 16, .26), rgba(39, 13, 19, .62)); }
.date-poster__content { text-align: center; text-transform: uppercase; }
.date-poster__content p { margin: 0 0 20px; font-size: .8rem; font-weight: 600; letter-spacing: .48em; }
.date-poster__content strong { display: block; font: 500 clamp(4.5rem, 11vw, 8rem)/.7 var(--serif); letter-spacing: -.03em; }
.date-poster__content h2 { margin: 24px 0 15px; font: 400 clamp(5.8rem, 15vw, 12rem)/.65 var(--serif); letter-spacing: -.05em; }

/* Lugares */
.places-section { padding: var(--section-space) 0; background: var(--paper); }
.section-heading-new { margin: 0 auto clamp(34px, 3.5vw, 48px); text-align: center; }
.section-heading-new h2, .itinerary-heading h2, .dress-layout h2, .gifts-card h2, .rsvp-copy-new h2 { margin: 0; font: 500 clamp(3.4rem, 7vw, 6rem)/.85 var(--serif); letter-spacing: -.055em; }
.places-grid { max-width: 1000px; margin-inline: auto; display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.place-card { display: grid; grid-template-rows: clamp(220px, 22vw, 300px) auto; background: var(--taupe); color: #fff; }
.place-card--wine { background: var(--wine); }
.place-card figure { margin: 0; overflow: hidden; }
.place-card figure img { width: 100%; height: 100%; display: block; object-fit: cover; filter: grayscale(1) contrast(1.03); transition: transform .8s ease; }
.place-card:hover figure img { transform: scale(1.025); }
.place-card__content { min-height: 215px; padding: clamp(25px, 2.7vw, 34px); display: flex; flex-direction: column; align-items: flex-start; }
.place-card__content h3 { max-width: 440px; margin: 0; font: 500 clamp(2rem, 3.1vw, 3.1rem)/.95 var(--serif); }
.place-card__time { margin: 16px 0 3px; font-size: .66rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; }
.place-card__content > p:not(.section-label):not(.place-card__time) { margin: 0; opacity: .85; }
.outline-button { margin-top: auto; padding: 10px 15px; border: 1px solid rgba(255,255,255,.75); font-size: .59rem; font-weight: 600; letter-spacing: .15em; text-transform: uppercase; transition: background .25s, color .25s; }
.outline-button:hover { background: #fff; color: var(--ink); }
.outline-button span { margin-left: 13px; }

/* Itinerario */
.itinerary-section { padding: var(--section-space) 0; background: var(--paper-light); }
.itinerary-layout { display: grid; grid-template-columns: .78fr 1.22fr; gap: clamp(50px, 7vw, 92px); align-items: start; }
.itinerary-heading { position: sticky; top: 55px; }
.itinerary-heading > p:last-child { max-width: 330px; margin: 22px 0 0; color: var(--muted); }
.timeline-list { position: relative; }
.timeline-list::before { content: ''; position: absolute; top: 38px; bottom: 38px; left: 39px; width: 1px; background: rgba(111, 41, 51, .36); }
.timeline-item { min-height: 116px; display: grid; grid-template-columns: 80px 1fr; gap: 28px; position: relative; }
.timeline-marker { display: flex; justify-content: center; position: relative; z-index: 1; }
.timeline-marker span { width: 44px; height: 44px; margin-top: 15px; display: grid; place-items: center; border: 1px solid rgba(111,41,51,.38); border-radius: 50%; background: var(--paper-light); color: var(--wine); font: 600 .68rem var(--serif); }
.timeline-copy { padding: 7px 0 24px; border-bottom: 1px solid var(--line); }
.timeline-item:last-child .timeline-copy { border-bottom: 0; }
.timeline-copy p { margin: 0 0 3px; color: var(--wine); font-size: .62rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; }
.timeline-copy h3 { margin: 0; font: 500 clamp(2.2rem, 4vw, 3.4rem)/1 var(--serif); }
.timeline-copy small { display: block; margin-top: 9px; color: var(--muted); font-size: .82rem; }

/* Vestimenta y regalos */
.dress-section { padding: var(--section-space) 0; background: var(--wine-dark); color: var(--paper-light); }
.dress-layout { max-width: 900px; display: grid; grid-template-columns: 210px 1fr; gap: clamp(40px, 6vw, 72px); align-items: center; }
.dress-icon { min-height: 195px; display: flex; align-items: flex-end; justify-content: center; gap: 2px; border-bottom: 1px solid rgba(255,255,255,.36); color: #d9c5b4; }
.dress-icon span:first-child { font-size: 7.5rem; line-height: .9; }
.dress-icon span:last-child { font-size: 8.4rem; line-height: .85; }
.dress-layout .section-label { color: #c8aaa0; }
.dress-layout h2 { color: #fff; font-style: italic; }
.dress-layout p:last-child { max-width: 560px; margin: 22px 0 0; color: #dfd4ce; }
.gifts-section { padding: var(--section-space) 0; background: #d8ccc1; }
.gifts-card { max-width: 850px; text-align: center; }
.gifts-card h2 { max-width: 760px; margin-inline: auto; }
.gifts-card > p:not(.section-label) { max-width: 625px; margin: 22px auto; }
.bank-detail { width: min(590px, 100%); margin: 24px auto 0; padding: 16px 25px; display: grid; gap: 6px; border-top: 1px solid rgba(28,25,25,.3); border-bottom: 1px solid rgba(28,25,25,.3); }
.bank-detail span { color: var(--muted); font-size: .61rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }
.bank-detail strong { font: 500 1.5rem var(--serif); letter-spacing: .03em; }

/* RSVP */
.rsvp-editorial { min-height: 100vh; min-height: 100svh; padding: var(--section-space) 0; position: relative; display: grid; align-items: center; isolation: isolate; overflow: hidden; color: #fff; background: var(--wine-dark); }
.rsvp-editorial__shade { position: absolute; inset: 0; z-index: -2; background: linear-gradient(105deg, rgba(25,10,13,.92) 0%, rgba(42,13,19,.77) 46%, rgba(25,10,13,.46) 100%); }
.rsvp-layout-new { display: grid; grid-template-columns: .82fr 1.18fr; gap: clamp(45px, 6vw, 82px); align-items: start; }
.rsvp-copy-new { padding-top: 45px; }
.rsvp-copy-new .section-label { color: #dabcb2; }
.rsvp-copy-new h2 { max-width: 430px; color: #fff; }
.rsvp-copy-new > p, .rsvp-greeting { color: rgba(255,255,255,.78); }
.rsvp-greeting { margin-top: 30px; padding: 17px 0; border-top: 1px solid rgba(255,255,255,.23); border-bottom: 1px solid rgba(255,255,255,.23); }
.rsvp-greeting p { margin: 0 0 4px; }
.rsvp-greeting p:last-child { margin-bottom: 0; }
.demo-notice { margin-top: 24px; padding-left: 13px; border-left: 2px solid #dabcb2; font-size: .77rem; }
.form-wrap-editorial { padding: clamp(27px, 3.2vw, 38px); background: rgba(250,248,244,.97); color: var(--ink); box-shadow: 0 28px 70px rgba(0,0,0,.22); }
.rsvp-form { display: grid; gap: 19px; }
.attendance-field { margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 9px; border: 0; }
.attendance-field legend, .form-group label { margin-bottom: 8px; font-size: .63rem; font-weight: 600; letter-spacing: .15em; text-transform: uppercase; }
.attendance-field label { position: relative; cursor: pointer; }
.attendance-field input { position: absolute; opacity: 0; pointer-events: none; }
.attendance-field span { min-height: 50px; padding: 12px; display: grid; place-items: center; border: 1px solid var(--line); text-align: center; font-size: .75rem; transition: background .2s, color .2s; }
.attendance-field input:checked + span { background: var(--wine); color: #fff; }
#attending-fields { display: grid; gap: 19px; }
.form-group { display: grid; }
.form-group small { font-weight: 400; letter-spacing: 0; text-transform: none; }
.form-group input, .form-group select, .form-group textarea { width: 100%; padding: 10px 0; border: 0; border-bottom: 1px solid rgba(28,25,25,.35); border-radius: 0; outline: 0; background: transparent; color: var(--ink); }
.form-group input:focus, .form-group select:focus, .form-group textarea:focus { border-color: var(--wine); }
.form-group textarea { resize: vertical; }
.editorial-button { width: 100%; margin-top: 7px; padding: 16px 20px; border: 1px solid var(--wine); background: var(--wine); color: #fff; cursor: pointer; font-size: .66rem; font-weight: 600; letter-spacing: .17em; text-transform: uppercase; transition: background .25s, color .25s; }
.editorial-button:hover { background: transparent; color: var(--wine); }
.editorial-button:disabled { opacity: .65; cursor: wait; }
.rsvp-success { padding: 55px 10px; text-align: center; }
.rsvp-success > span { color: var(--wine); font-size: 2rem; }
.rsvp-success h3 { margin: 5px 0 10px; font: 500 3.3rem/.9 var(--serif); }
.rsvp-success p { margin: 0; color: var(--muted); }
.text-button { margin-top: 23px; padding: 5px 0; border: 0; border-bottom: 1px solid var(--wine); background: transparent; color: var(--wine); cursor: pointer; font-size: .65rem; font-weight: 600; letter-spacing: .15em; text-transform: uppercase; }
.rsvp-error { margin: 18px 0 0; color: #a12e3f; font-size: .82rem; }

/* Pie */
.editorial-footer { padding: 54px 24px max(42px, env(safe-area-inset-bottom)); display: flex; flex-direction: column; align-items: center; gap: 12px; background: #181313; color: rgba(255,255,255,.72); text-align: center; }
.editorial-footer__mark { margin: 0; color: #fff; font: 500 3.7rem/.8 var(--serif); letter-spacing: -.07em; }
.editorial-footer__mark span { margin-inline: .08em; font-size: .4em; font-style: italic; vertical-align: .25em; }
.editorial-footer > p:not(.editorial-footer__mark), .editorial-footer a { margin: 0; font-size: .6rem; letter-spacing: .17em; text-transform: uppercase; }
.editorial-footer a { margin-top: 12px; border-bottom: 1px solid currentColor; }

.reveal { opacity: 0; transform: translateY(24px); transition: opacity .8s ease, transform .8s ease; }
.reveal.visible { opacity: 1; transform: none; }
[hidden] { display: none !important; }

@media (max-width: 800px) {
  .editorial-shell { width: min(100% - 36px, 640px); }
  .editorial-nav { width: calc(100% - 38px); }
  .editorial-nav__mark { font-size: 2.55rem; }
  .editorial-hero__content { width: calc(100% - 32px); padding: 64px 0 100px; }
  .editorial-hero h1 { grid-template-columns: 1fr; font-size: clamp(5rem, 22vw, 7.2rem); line-height: .62; }
  .editorial-hero h1 small { margin: .2em 0 .24em; font-size: .26em; }
  .editorial-date { margin-top: 42px; }
  .places-grid { grid-template-columns: 1fr; }
  .place-card { grid-template-rows: clamp(190px, 48vw, 240px) auto; }
  .place-card__content { min-height: 205px; }
  .itinerary-layout { grid-template-columns: 1fr; gap: 55px; }
  .itinerary-heading { position: static; text-align: center; }
  .itinerary-heading > p:last-child { margin-inline: auto; }
  .dress-layout { grid-template-columns: 1fr; text-align: center; }
  .dress-icon { width: 170px; min-height: 160px; margin-inline: auto; }
  .dress-layout p:last-child { margin-inline: auto; }
  .rsvp-layout-new { grid-template-columns: 1fr; }
  .rsvp-copy-new { max-width: 570px; padding-top: 0; text-align: center; }
  .rsvp-copy-new h2 { margin-inline: auto; }
}

@media (max-width: 520px) {
  :root { --section-space: 46px; }
  .invitation-opening::before { inset: 12px; }
  .opening-stage { transform: translateY(-1vh); }
  .opening-overline { margin-bottom: 34px; }
  .editorial-envelope { width: min(88vw, 430px); aspect-ratio: 1.64 / 1; }
  .envelope-letter { left: 6%; width: 88%; height: 82%; padding: 27px 15px; }
  .envelope-letter strong { margin: 17px 0; font-size: clamp(4rem, 19vw, 5.8rem); }
  .envelope-seal { width: 72px; }
  .opening-action { margin-top: 34px; font-size: 1.55rem; }
  .editorial-hero { height: 100vh; height: 100dvh; min-height: 100svh; }
  .editorial-nav > a:not(.editorial-nav__mark) { font-size: .54rem; letter-spacing: .14em; }
  .editorial-hero h1 { font-size: clamp(4.5rem, 21vw, 6.1rem); }
  .editorial-kicker { font-size: 2.6rem; }
  .scroll-cue { font-size: .54rem; letter-spacing: .14em; }
  .invitation-letter { padding-block: var(--section-space); }
  .invitation-letter h2 { font-size: 3.75rem; }
  .invitation-copy { font-size: 1.25rem; }
  .date-poster { height: 100vh; height: 100dvh; min-height: 100svh; }
  .places-section, .itinerary-section { padding-block: var(--section-space); }
  .place-card__content { padding: 24px 22px; }
  .timeline-item { grid-template-columns: 68px 1fr; gap: 18px; }
  .timeline-list::before { left: 33px; }
  .timeline-marker span { width: 40px; height: 40px; }
  .timeline-item { min-height: 104px; }
  .timeline-copy h3 { font-size: 2rem; }
  .dress-icon span:first-child { font-size: 6.3rem; }
  .dress-icon span:last-child { font-size: 7.1rem; }
  .attendance-field { grid-template-columns: 1fr; }
  .form-wrap-editorial { padding: 30px 23px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
  .reveal { opacity: 1; transform: none; }
  .invitation-opening.is-opening { opacity: 0; visibility: hidden; }
}
