/* Measured scroll layout and motifs from the Royal Gateway preview. */
.parchment {
  background: radial-gradient(ellipse 75% 65% at 50% 45%,#fffaf2 0%,#fbeedd 45%,#f3d9c4 80%,#e9c3a6 100%) fixed;
}
.parchment::before {
  inset: 0;
  margin: 0;
  border: 0;
  background: url('assets/reference/motif-tile.svg') 0 0 / 72px 72px repeat;
  opacity: .12;
}
.parchment::after {
  display: block;
  content: '';
  position: absolute;
  inset: 18px;
  border: 1px solid #c68d3266;
  pointer-events: none;
  z-index: -1;
}
.royal-gate-vignette {
  background: radial-gradient(ellipse at center,transparent 45%,rgba(17,2,0,.55)),linear-gradient(to top,#080e2c 0%,#080e2cc4 8%,transparent 28%);
  opacity: 1;
}
.tap-circle svg { width: 24px; height: 24px; }
.countdown-items strong.count-flip { animation: royal-count-flip .45s cubic-bezier(.2,.7,.25,1); transform-origin: 50% 48%; backface-visibility: hidden; }
@keyframes royal-count-flip {
  0% { transform: rotateX(-75deg); opacity: .35; }
  58% { transform: rotateX(8deg); opacity: 1; }
  100% { transform: rotateX(0); opacity: 1; }
}
@media (prefers-reduced-motion: reduce) { .countdown-items strong.count-flip { animation: none; } }

@media (min-width: 901px) {
  .plaque-venue { margin-bottom: 410px; }
  .invitation .section-heading { margin-bottom: 33px; }
  .invitation .section-heading > .script { font-size: 61px; }
  .invitation .section-heading .invitation-message { max-width: 900px; font: italic 600 36px/1.2 'Cormorant Garamond',Georgia,serif; }
  .countdown > .eyebrow { font-size: 48px; line-height: 1.2; }
  .countdown-items > div { aspect-ratio: 100 / 150; }
  .scratch-card { margin-top: 65px; }
  .invitation { padding-bottom: 10px; margin-bottom: -18px; }
  .fan-left { width: 840px; height: 840px; left: -355px; bottom: -160px; }

  .families { padding-bottom: 197px; }
  .family-member { width: min(864px,100%); margin: 0 auto 60px; }
  .family-member .small-frame { margin-left: 0; }
  .family-member .family-ribbon { margin-left: -13px; width: 268px; font-size: 13px; }
  .family-member h4 { width: 242px; text-align: center; margin-left: 0; font-size: 27px; }
  .family-member > h3 { text-align: center; font-size: 56px; }

  .celebrations { padding-top: 51px; }
  .event { min-height: 646px; margin-bottom: 42px; }
  .event-scroll { width: 416px; height: 624px; }
  .event-scroll .velvet-body { top: 11.7188%; height: 72.2656%; }
  .event-scroll .scroll-top { top: 0; height: 52.0833%; }
  .event-scroll .scroll-bottom { top: 82.6823%; height: 17.3177%; }
  .event-copy { top: 78px; bottom: 45px; }
  .event-copy h3 { font-size: 40px; }
  .event-date > .script { font-size: 64px; }

  .couple { padding-bottom: 74px; }
  .story { padding-bottom: 131px; }
  .families { padding-bottom: 128px; }
  .celebrations { padding-top: 63px; padding-bottom: 101px; margin-bottom: 0; }
  .gallery { padding-top: 117px; padding-bottom: 203px; margin-bottom: 0; }
  .gallery .section-heading { margin-bottom: 33px; }
  .venue { padding-bottom: 154px; }
  .rsvp { padding-top: 112px; padding-bottom: 112px; }
  .rsvp .section-heading { margin-bottom: 56px; }
  .rsvp .section-heading > .script { font-size:40px; line-height:1.2; margin-bottom:8px; }
  .rsvp .section-heading h2 { font-size:60px; line-height:1; }
  .rsvp .section-heading .ornamental-line { margin-top:16px; line-height:28px; }
  .rsvp-card { width:672px; max-width:100%; height:975px; padding:40px 56px 54px; }
  .rsvp-card .rsvp-seal { width:112px; height:112px; line-height:108px; font-size:25px; margin-bottom:16px; border:3px double #f2ce77; outline:2px solid #e8bd69; outline-offset:5px; box-shadow:0 0 0 8px #7a281e,inset 0 0 0 5px #b97c2f,0 0 18px #f2ce7799; }
  .rsvp-card > h3 { height:60px; font-size:60px; line-height:1; margin:0 0 4px; }
  .rsvp-card .rsvp-names { font:600 16px/1 'Cinzel Decorative',Georgia,serif; margin:0 0 68px; }
  .rsvp-card .rsvp-names::after { content:'❖'; position:absolute; top:264px; left:0; right:0; text-align:center; font:28px/28px Georgia,serif; color:#d8ac5c; }
  #rsvp-form { position:relative; height:605px; }
  #rsvp-form > label, #rsvp-form > input, #rsvp-form > fieldset, #rsvp-form > .guest-stepper, #rsvp-form > textarea, #rsvp-form > .gold-button { position:absolute; left:0; width:100%; margin:0; }
  #rsvp-form > label[for="guestName"] { top:0; }
  #rsvp-form > #guestName { top:24px; min-height:54px; height:54px; }
  #rsvp-form > fieldset { top:102px; height:146px; }
  #rsvp-form .attendance-options span { min-height:122px; }
  #rsvp-form > label[for="guests"] { top:271px; }
  #rsvp-form > .guest-stepper { top:295px; height:66px; min-height:66px; }
  #rsvp-form > label[for="message"] { top:385px; }
  #rsvp-form > #message { top:409px; height:110px; min-height:110px; }
  #rsvp-form > .gold-button { top:549px; height:56px; min-height:56px; }
  .wishes { padding:40px 0; margin:0; }
  .wishes.section-reveal { opacity:1; transform:none; transition:none; }
  .wishes-panel { padding-top:64px; padding-bottom:17px; }
  .contacts { min-height:597px; padding-bottom:28px; }
}

.event-scroll { container-type: inline-size; }
.venue-reference .venue-card { box-shadow:0 20px 42px #4b101c5c,0 0 0 2px #f6d584,0 0 22px #dfad6270,inset 0 0 20px #e4a05e30; }
.venue-reference .venue-card::before { border:1px solid #f7d584ab; box-shadow:inset 0 0 0 1px #bc873d70; }
.venue-reference .venue-card::after { content:''; inset:8px; width:auto; height:auto; background:url('assets/card-corner-gem.svg') left top/22px 22px no-repeat,url('assets/card-corner-gem.svg') right top/22px 22px no-repeat,url('assets/card-corner-gem.svg') left bottom/22px 22px no-repeat,url('assets/card-corner-gem.svg') right bottom/22px 22px no-repeat; pointer-events:none; }
.rsvp-card { border:3px solid #e8bd69; box-shadow:0 18px 42px #4b101c55,0 0 0 1px #f4d78b,0 0 18px #dfad6261,inset 0 0 26px #d0986333; }
.rsvp-card::before { border:1px dashed #f3cc82a6; box-shadow:0 0 0 4px #f0c6753d; }
.rsvp-card::after { content:''; position:absolute; inset:10px; background:url('assets/card-corner-gem.svg') left top/19px 19px no-repeat,url('assets/card-corner-gem.svg') right top/19px 19px no-repeat,url('assets/card-corner-gem.svg') left bottom/19px 19px no-repeat,url('assets/card-corner-gem.svg') right bottom/19px 19px no-repeat; pointer-events:none; }
.section-reveal { opacity:0; transform:translateY(110px); transition:opacity .85s ease,transform .9s cubic-bezier(.22,1,.36,1); }
.section-reveal.visible { opacity:1; transform:none; }
.section-reveal .section-heading.reveal:not(.visible) { transform:translateY(90px); }
.timeline-car { position:absolute; top:var(--car-top,0px); left:50%; width:96px; height:auto; margin:0; float:none; transform:translateX(-50%); }
.event-copy {
  inset: 14% 23% 10%;
  justify-content: center;
  color: #fbe3b4;
}
.event-copy > .eyebrow {
  order: 0;
  font: 400 3.2cqw/1 'Cinzel Decorative',serif;
  letter-spacing: .35em;
  color: #dea645;
}
.event-copy .event-symbol { order: 1; margin: 4cqw 0 0; font-size: 9cqw; line-height: 1; }
.event-copy h3 {
  order: 2; margin: 3cqw 0 0;
  font: 700 9.5cqw/1.05 'Cinzel Decorative',serif;
  text-transform: uppercase;
  background: linear-gradient(#fff4ca,#d49d40);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  text-shadow: 0 2px 2px #28000044;
}
.event-copy > .script { order: 3; margin-top: 3cqw; font: 400 6.4cqw/1.1 'Great Vibes',cursive; }
.event-copy .event-divider { order: 4; display:flex; align-items:center; gap:2cqw; margin: 5cqw 0; color:#dea645; font-size:3.4cqw; }
.event-divider::before,.event-divider::after { content:''; width:10cqw; height:1px; background:linear-gradient(to right,transparent,#dea645); }
.event-divider::after { transform:scaleX(-1); }
.event-copy p.event-line {
  display:inline-flex; align-items:center; justify-content:center; gap:1.6cqw;
  width:100%; margin:0 !important; font:600 4.2cqw/1.2 'Cormorant Garamond',serif !important;
  color:#fff1d6;
}
.event-copy p.event-date-line { order: 5; }
.event-copy p.event-date-line + p { order: 6; margin:1.4cqw 0 0 !important; font:600 4.2cqw/1.2 'Cormorant Garamond',serif !important; color:#fff1d6; }
.event-copy p.event-venue-line { order: 7; margin-top:3cqw; font-style:italic; color:#fbe3b4; }
.event-line svg { width:4cqw; height:4cqw; flex:none; fill:none; stroke:#dea645; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.event-copy .event-dress-label { order:8; display:flex; align-items:center; gap:1.6cqw; margin-top:3.5cqw; font:400 2.6cqw/1 'Cinzel Decorative',serif; letter-spacing:.3em; color:#dea645; }
.event-dress-label::before,.event-dress-label::after { content:''; width:5cqw; height:1px; background:linear-gradient(to right,transparent,#dea645); }
.event-dress-label::after { transform:scaleX(-1); }
.event-copy p.event-dress-pill { order:9; margin:1.4cqw 0 0 !important; border:1px solid #dea64599; border-radius:100px; background:#dea6451a; padding:.6cqw 4cqw; font:400 5.6cqw/1.15 'Great Vibes',cursive !important; color:#fbe3b4; box-shadow:inset 0 0 8px #dea64540; }
.event-timeline::before { background:#c9973a; }
.timeline-node { background:#dea645; width:13px; height:13px; color:transparent; box-shadow:0 0 0 5px #f9e6cc; }
@media(min-width:901px) {
  .event-scroll { justify-self:start; }
  .event.reverse .event-scroll { justify-self:end; }
}

@media (max-width: 600px) {
  .gate-copy { bottom: 3%; }
  .scroll-cue span { background:rgba(20,16,39,.78); border-radius:999px; padding:5px 12px; }
  .parchment::before { background-size: 72px 72px; }
  .parchment::after { inset: 9px; }
  .invitation { position:relative; padding-top:19px; padding-bottom:200px; }
  .invitation::after { content:'⌄'; position:absolute; top:231px; left:50%; transform:translateX(-50%); color:#9e141e; font:26px/1 Georgia,serif; }
  .plaque-venue { margin-bottom: calc(min(92vw,38rem) * .168 + 186px); }
  .invitation .section-heading { margin-bottom: 75px; }
  .countdown-items > div { aspect-ratio: 100 / 150; }
  .family-member { width: 100%; }
  .scratch-card { margin-top:56px; }
  .fan-left { bottom:-270px; }
  .couple { margin-top:-110px; padding-bottom:64px; }
  .couple .painted-frame { height:219px; aspect-ratio:auto; }
  .couple .person-role.script { margin-top:33px; }
  .couple .person > p:last-child { margin-top:17px; }
  .story { padding-top:54px; padding-bottom:65px; }
  .story .story-timeline { gap:64px; }
  .story .story-timeline .story-row { min-height:459px; }
  .families { padding-top:55px; padding-bottom:7px; }
  .families .family-member { min-height:400px; margin-bottom:56px; }
  .families .small-frame { width:167px; }
  .celebrations { padding-top:56px; padding-bottom:63px; }
  .event-timeline { margin-top:21px; }
  .event:last-child { height:471px; margin-bottom:0; }
  .timeline-car { width:36px; left:20px; transform:translateX(-50%); }
  .gallery { padding-top:73px; padding-bottom:80px; }
  .gallery-slide { top:38px; width:254px; margin-left:-127px; }
  .gallery-banner { margin-top:-10px; padding-bottom:5px; }
  .gallery-controls { margin-top:10px; }
  .venue-reference { padding-top:34px; padding-bottom:64px; }
  .venue-reference > .section-heading { position:relative; top:24px; }
  .venue-stack { gap:48px; }
  .venue-reference .venue-card:first-child { min-height:1126px; }
  .venue-reference .venue-card:nth-child(2), .venue-reference .venue-card:nth-child(3) { min-height:900px; }
  .rsvp { padding:55px 16px 63px; }
  .rsvp-card { width:358px; max-width:100%; min-height:961px; border-radius:32px; background:radial-gradient(ellipse at 50% 8%,#a3172f,#6d0a1d 62%,#3a0410); }
  .rsvp-card::before { inset:11px; border-radius:23px; }
  .rsvp-seal { width:88px; height:88px; line-height:82px; border:3px double #f2ce77; outline:2px solid #e8bd69; outline-offset:4px; box-shadow:0 0 0 8px #7a281e,inset 0 0 0 4px #b97c2f,0 0 14px #f2ce7799; }
  .attendance-options { gap:12px; }
  .attendance-options span { min-height:132px; border-radius:48px 48px 12px 12px; border:1px solid #dfb96a73; background:#fff9ec0d; }
  .attendance-options input:checked+span { background:linear-gradient(160deg,#fff1b8,#e3b44c 40%,#b98321); border-color:#f5d486; color:#5f271d; box-shadow:0 8px 18px #17030675,inset 0 1px 0 #fff4ca; }
  .wishes { position:relative; z-index:2; padding-bottom:44px; margin-top:0; margin-bottom:-5px; }
  .wishes-panel { padding:64px 17px 40px; }
  .wish-form { margin-top:53px; }
  .contact-grid { max-width:358px; gap:24px; }
  .contact-grid article { min-height:189px; padding:10px; }
  .contact-grid h3 { font:700 24px/1.2 'Cinzel Decorative',Georgia,serif; color:#9e1b29; }
  .contact-grid article p.script { font:400 26px/1.2 'Great Vibes',cursive; color:#a36d2c; }
  .contact-grid article .contact-number { font:400 13px/1.4 'Cormorant Garamond',Georgia,serif; letter-spacing:3px; margin:14px 0; }
  .contact-actions { display:flex; justify-content:center; gap:12px; }
  .contact-actions button { height:36px; min-width:0; padding:7px 10px; font-size:10px; }
  .contact-actions button:first-child { width:99px; }
  .contact-actions button:last-child { width:142px; }
}
@media (prefers-reduced-motion: reduce) { .section-reveal { opacity:1; transform:none; transition:none; } }
