:root {
  --ink: #082757;
  --cobalt: #0a3d83;
  --royal: #1453a1;
  --porcelain: #f8f7f2;
  --mist: #e9eef5;
  --line: rgba(8, 39, 87, .22);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: #c7dfff;
  color: var(--ink);
  font-family: "Manrope", sans-serif;
  font-size: 16px;
  font-weight: 300;
  line-height: 1.8;
}
body.gate-open { overflow: hidden; }
.password-gate {
  position: fixed;
  inset: 0;
  z-index: 250;
  display: grid;
  place-items: center;
  padding: 1.5rem;
  color: white;
  background:
    linear-gradient(rgba(0,26,89,.72),rgba(0,26,89,.72)),
    url("amsterdam-delft-hero.png") center / cover no-repeat;
  transition: opacity .65s ease, visibility .65s ease;
}
.password-gate.unlocked { opacity: 0; visibility: hidden; }
.password-card {
  width: min(100%, 470px);
  padding: clamp(2rem,7vw,4rem);
  border: 1px solid rgba(255,255,255,.46);
  text-align: center;
  background: rgba(0,47,167,.78);
  box-shadow: 0 30px 90px rgba(0,12,70,.36);
  backdrop-filter: blur(14px);
}
.gate-kicker, .password-card label {
  display: block;
  margin: 0 0 1rem;
  text-transform: uppercase;
  letter-spacing: .25em;
  font-size: .68rem;
  font-weight: 500;
}
.password-card h2 {
  margin: 0 0 2.3rem;
  font: 400 clamp(2.4rem,7vw,4.2rem)/1 "Cormorant Garamond",serif;
}
.password-row { display: flex; border-bottom: 1px solid rgba(255,255,255,.72); }
.password-row input {
  min-width: 0;
  flex: 1;
  border: 0;
  outline: 0;
  padding: .8rem .2rem;
  color: white;
  background: transparent;
  font: inherit;
}
.password-row button {
  border: 0;
  padding: .8rem 0 .8rem 1.2rem;
  color: white;
  background: transparent;
  text-transform: uppercase;
  letter-spacing: .18em;
  font: 500 .68rem "Manrope",sans-serif;
  cursor: pointer;
}
.password-error { min-height: 1.4em; margin: 1rem 0 0; font-size: .75rem; }
.stage-reveal {
  position: fixed;
  inset: 0;
  z-index: 100;
  overflow: hidden;
  display: grid;
  place-items: center;
  background: #002fa7;
  animation: stage-clear 3.25s ease .15s both;
  pointer-events: none;
  will-change: transform, opacity;
}
.blue-curtain {
  position: absolute;
  inset: 0;
  background: #002fa7 url("klein-blue-curtain.png") center / cover no-repeat;
  opacity: 1;
  filter: saturate(1.12) contrast(1.04);
  animation: curtain-emerge 1.05s ease .1s both;
  box-shadow: inset 0 -30px 55px rgba(0,12,82,.35);
}
.paint-surface {
  position: absolute;
  width: min(72vmin, 690px);
  aspect-ratio: 1;
  z-index: 2;
  border: 1px solid rgba(255,255,255,.28);
  background: #002fa7 url("klein-blue-curtain.png") center / cover no-repeat;
  box-shadow: 0 32px 100px rgba(0,10,72,.55);
  animation: painting-fall 2.7s cubic-bezier(.66,.01,.3,1) .25s both;
}
@keyframes curtain-emerge { from{opacity:0;transform:scaleX(1.025)} to{opacity:1;transform:scaleX(1)} }
@keyframes painting-fall {
  0%,43% { transform: translate3d(0,0,0) rotate(0); opacity:1; }
  100% { transform: translate3d(0,125vh,0) rotate(8deg); opacity:1; }
}
@keyframes stage-clear { 0%,76%{opacity:1} 100%{opacity:0;visibility:hidden} }

.hero {
  position: relative;
  min-height: 100svh;
  overflow: hidden;
  isolation: isolate;
  color: white;
}
.celebration-layer {
  position: absolute;
  inset: 0;
  z-index: 5;
  overflow: hidden;
  pointer-events: none;
}
.page-confetti {
  position:fixed;
  inset:0;
  z-index:40;
  overflow:hidden;
  pointer-events:none;
}
.confetti-field { position: absolute; inset: 0; overflow: hidden; }
.confetti-piece {
  position: absolute;
  top: -12vh;
  left: var(--x);
  width: var(--w);
  height: var(--h);
  border-radius: 1px;
  background: var(--color);
  opacity: 0;
  animation: confetti-fall var(--duration) cubic-bezier(.12,.62,.25,1) var(--delay) both;
}
.confetti-piece.circle { border-radius: 50%; }
.confetti-piece.shamrock {
  width:auto;
  height:auto;
  background:none;
  color:#68a75a;
  font-size:var(--shamrock-size);
  line-height:1;
  text-shadow:0 3px 9px rgba(0,25,33,.28);
}
.confetti-piece.bubble {
  width:var(--bubble-size);
  height:var(--bubble-size);
  border:1px solid rgba(255,255,255,.78);
  border-radius:50%;
  background:
    radial-gradient(circle at 30% 25%,rgba(255,255,255,.86) 0 5%,transparent 7%),
    radial-gradient(circle at 65% 70%,rgba(102,169,255,.16),rgba(255,255,255,.05) 55%,transparent 70%);
  box-shadow:inset 0 0 9px rgba(255,255,255,.34),0 5px 15px rgba(0,44,112,.12);
}
@keyframes confetti-fall {
  0% { opacity: 0; transform: translate3d(0,-8vh,0) rotate(0deg); }
  10% { opacity: 1; }
  100% { opacity: .92; transform: translate3d(var(--drift),118vh,0) rotate(var(--spin)); }
}
.vintage-bottle {
  position: absolute;
  bottom: -22vh;
  width: min(27vw, 350px);
  margin: 0;
  opacity: 0;
  filter: drop-shadow(0 28px 40px rgba(0, 12, 40, .45));
}
.vintage-label {
  position: absolute;
  left: 50%;
  top: 57%;
  transform: translate(-50%,-50%);
  display: grid;
  place-items: center;
  width: 47%;
  aspect-ratio: 1.25;
  border: 2px solid #b6914c;
  border-radius: 48% 48% 56% 56%;
  background: linear-gradient(145deg,#fff8df,#d9c397);
  color:#102348;
  box-shadow:0 4px 12px rgba(0,0,0,.25), inset 0 0 0 4px rgba(255,255,255,.4);
  font-family:"Italiana",serif;
  font-size:clamp(1.6rem,4vw,3.8rem);
  letter-spacing:-.04em;
}
.vintage-bottle img { display: block; width: 100%; height: auto; }
.bottle-left { left: 2.5vw; transform: translate(-35vw, 30vh) rotate(-18deg); }
.bottle-right { right: 2.5vw; transform: translate(35vw, 30vh) rotate(18deg); }
.hero-celebration.playing .bottle-left { animation: bottle-left-pop 4.8s cubic-bezier(.16,.82,.22,1) .1s both; }
@keyframes bottle-left-pop {
  0% { opacity:0; transform:translate(-34vw,34vh) rotate(-20deg) scale(.65); }
  16% { opacity:1; }
  43%,66% { opacity:1; transform:translate(25vw,-22vh) rotate(-5deg) scale(1.18); }
  100% { opacity:0; transform:translate(82vw,-72vh) rotate(13deg) scale(.92); }
}
@keyframes bottle-right-pop {
  0% { opacity:0; transform:translate(34vw,34vh) rotate(20deg) scale(.65); }
  16% { opacity:1; }
  43%,66% { opacity:1; transform:translate(-25vw,-22vh) rotate(5deg) scale(1.18); }
  100% { opacity:0; transform:translate(-82vw,-72vh) rotate(-13deg) scale(.92); }
}
.flying-cork {
  position: absolute;
  width: min(8vw, 85px);
  opacity: 0;
  filter: drop-shadow(0 12px 10px rgba(0,0,0,.3));
}
.cork-left { left: 17vw; bottom: 47vh; }
.hero-celebration.playing .cork-left { animation: cork-left-flight 2.2s cubic-bezier(.12,.66,.18,1) .75s both; }
@keyframes cork-left-flight {
  0% { opacity: 0; transform: translate(0,28vh) rotate(0) scale(.55); }
  12% { opacity: 1; }
  100% { opacity: 0; transform: translate(62vw,-48vh) rotate(1050deg) scale(1); }
}
@keyframes cork-right-flight {
  0% { opacity: 0; transform: translate(0,28vh) rotate(0) scale(.55); }
  12% { opacity: 1; }
  100% { opacity: 0; transform: translate(-62vw,-48vh) rotate(-1050deg) scale(1); }
}
.hero-image {
  position: absolute;
  inset: 0;
  z-index: -3;
  background: url("amsterdam-delft-hero.png") center center / cover no-repeat;
  transform: scale(1.015);
}
.hero-wash {
  position: absolute;
  inset: 0;
  z-index: -2;
  background:
    linear-gradient(180deg, rgba(2, 23, 61, .48) 0%, rgba(7, 49, 109, .25) 42%, rgba(2, 23, 61, .63) 100%),
    linear-gradient(110deg, rgba(6, 44, 99, .46), rgba(29, 89, 160, .12));
}
.hero::after {
  content: "";
  position: absolute;
  inset: 18px;
  border: 1px solid rgba(255,255,255,.43);
  pointer-events: none;
}
.masthead {
  position: absolute;
  z-index: 2;
  top: 35px;
  left: 40px;
}
.mark {
  color: white;
  text-decoration: none;
  text-transform: uppercase;
  font-size: .78rem;
  font-weight: 500;
  letter-spacing: .24em;
}
.hero-frame {
  min-height: 100svh;
  display: grid;
  place-content: center;
  text-align: center;
  padding: 8rem 2rem 7rem;
}
.eyebrow, .section-kicker {
  margin: 0 0 1.2rem;
  text-transform: uppercase;
  letter-spacing: .3em;
  font-size: .72rem;
  font-weight: 500;
}
.hero h1 {
  margin: 0;
  font-family: "Italiana", serif;
  font-size: clamp(5rem, 15vw, 12rem);
  font-weight: 400;
  line-height: .9;
  letter-spacing: -.04em;
  text-shadow: 0 18px 50px rgba(0, 24, 71, .28);
}
.hero-details {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.25rem;
  margin-top: 3rem;
  text-transform: uppercase;
  letter-spacing: .18em;
  font-size: .72rem;
  font-weight: 500;
}
.hero-details p { margin: 0; }
.hero-details span { width: 3px; height: 3px; border-radius: 50%; background: currentColor; }
.scroll {
  position: absolute;
  bottom: 38px;
  left: 50%;
  width: 1px;
  height: 48px;
  background: rgba(255,255,255,.42);
}
.scroll span {
  display: block;
  width: 1px;
  height: 18px;
  background: white;
  animation: drift 2s ease-in-out infinite;
}
@keyframes drift { 0%,100% { transform: translateY(0); } 50% { transform: translateY(30px); } }

.invitation {
  max-width: 980px;
  margin: 0 auto;
  padding: clamp(6rem, 12vw, 10rem) 2rem;
  text-align:center;
  background:transparent;
}
.invitation-page {
  position:relative;
  padding:clamp(2rem,5vw,4.5rem);
  border:1px solid rgba(6,54,119,.2);
  background:rgba(244,249,255,.34);
  box-shadow:0 30px 90px rgba(8,39,87,.08);
  font-family:"Cormorant Garamond",serif;
}
.ornament { margin-bottom: 2.4rem; color: var(--royal); font-size: .9rem; }
.invitation .lead {
  margin:0 auto 2rem;
  font-family: "Cormorant Garamond", serif;
  font-size: clamp(2.25rem, 5vw, 4rem);
  line-height: 1.12;
  font-weight: 400;
}
.invitation-date {
  display:block;
  margin-top:.18em;
  white-space:nowrap;
  font-size:clamp(1.75rem,4.4vw,3.6rem);
}
.invitation-date .ordinal {
  font-size:.48em;
  vertical-align:super;
  margin-left:.03em;
}
.invitation > p:not(.lead) {
  max-width: 630px;
  margin: 0;
  color: #365274;
}
.invitation-page > p:not(.lead) { max-width:660px; margin-inline:auto; color:#2b4b78; }
.invitation-page .toast-line {
  font-size:clamp(1.55rem,3vw,2.25rem);
  line-height:1.42;
}
.pen-underline {
  position:relative;
  display:inline-block;
  font-style:italic;
  color:var(--royal);
}
.pen-underline::after {
  content:"";
  position:absolute;
  left:-.08em;
  right:-.12em;
  bottom:.02em;
  height:.13em;
  border-radius:50%;
  background:var(--royal);
  transform:rotate(-2deg) skewX(-18deg);
  opacity:.76;
}
.signature { margin-top: 4.4rem; }
.signature p {
  display:inline-grid;
  justify-items:start;
  margin:0;
  font-family:"Allura",cursive;
  font-size:clamp(5rem,10vw,8.5rem);
  font-weight:400;
  line-height:.61;
  letter-spacing:.01em;
  transform:rotate(-3deg);
}
.signature p > span:first-child { font-size:.7em; }
.signature-name {
  position:relative;
  display:inline-block;
  padding-right:.5em;
}
.signature-name::after {
  content:"";
  position:absolute;
  left:65%;
  bottom:-.08em;
  width:1.35em;
  height:.34em;
  border-bottom:2px solid currentColor;
  border-radius:50%;
  transform:rotate(-8deg) skewX(-20deg);
  transform-origin:left center;
}
.signature small {
  display: block;
  margin-top: 1.1rem;
  text-transform: uppercase;
  letter-spacing: .24em;
  font-size: .62rem;
}

.party {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  min-height:100svh;
  display:grid;
  place-items:center;
  padding: clamp(6rem, 11vw, 9rem) 2rem;
  text-align: center;
  color: white;
  background: #002fa7 url("yves-klein-impasto.png") center / cover no-repeat;
}
.party::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg,rgba(0,16,92,.18),rgba(0,20,75,.44));
}
.party > * { position: relative; z-index: 3; }
.party-copy { width:min(100%,650px); text-align:center; }
.party-rory {
  position:absolute;
  right:-10.5rem;
  bottom:-5rem;
  width:min(28vw,290px);
  height:auto;
  opacity:0;
  object-fit:contain;
  filter:drop-shadow(0 32px 48px rgba(0,0,0,.36));
  will-change:transform,opacity;
  z-index:2;
  pointer-events:none;
  transform:translate3d(9rem,9rem,0) rotate(4deg) scale(.88);
}
.rsvp-box.rory-playing .party-rory { animation:party-rory-arrive 7s cubic-bezier(.16,.82,.22,1) both; }
@keyframes party-rory-arrive {
  0% { opacity:0; transform:translate3d(9rem,9rem,0) rotate(4deg) scale(.88); }
  18%,72% { opacity:1; transform:translate3d(0,0,0) rotate(0) scale(1); }
  100% { opacity:0; transform:translate3d(3rem,5rem,0) rotate(2deg) scale(.96); }
}
.party-celebration { z-index: 1; }
.party-object {
  position: absolute;
  opacity: 0;
  object-fit: contain;
  filter: drop-shadow(0 24px 36px rgba(0,0,0,.32));
}
.party-object.crystal { left: 4vw; bottom: -4vh; width: min(25vw,320px); }
.party-object.incense { right: 3vw; bottom: -5vh; width: min(28vw,360px); }
.party-bottle { left: 4vw; bottom: -17vh; }
.party-celebration.playing .party-bottle { animation: party-bottle-pop 5.2s cubic-bezier(.16,.82,.22,1) .08s both; }
@keyframes party-bottle-pop {
  0% { opacity:0; transform:translate(-28vw,34vh) rotate(-20deg) scale(.62); }
  20%,76% { opacity:1; transform:translate(2vw,-8vh) rotate(-7deg) scale(1.05); }
  100% { opacity:0; transform:translate(12vw,-60vh) rotate(9deg) scale(.9); }
}
.party-celebration.playing .crystal { animation: crystal-arrive 5.2s cubic-bezier(.16,.82,.22,1) both; }
.party-celebration.playing .incense { animation: incense-arrive 5.2s cubic-bezier(.16,.82,.22,1) .12s both; }
@keyframes crystal-arrive {
  0% { opacity:0; transform: translate(-28vw,30vh) rotate(-18deg) scale(.62); }
  18%,78% { opacity:.92; transform: translate(0,0) rotate(-3deg) scale(1); }
  100% { opacity:0; transform: translate(-6vw,16vh) rotate(-8deg) scale(.9); }
}
@keyframes incense-arrive {
  0% { opacity:0; transform: translate(28vw,30vh) rotate(16deg) scale(.62); }
  18%,78% { opacity:.9; transform: translate(0,0) rotate(2deg) scale(1); }
  100% { opacity:0; transform: translate(6vw,16vh) rotate(7deg) scale(.9); }
}
.disco-crown {
  position: absolute;
  inset: -5vh 0 auto;
  height: 72vh;
  opacity: 0;
  overflow: hidden;
}
.disco-crown i {
  position: absolute;
  top: -8%;
  left: calc(12% + var(--n) * 18%);
  width: 14vw;
  height: 75vh;
  transform-origin: top center;
  background: linear-gradient(180deg, rgba(131,193,255,.55), rgba(44,111,209,.12) 55%, transparent 100%);
  clip-path: polygon(45% 0,55% 0,100% 100%,0 100%);
  filter: blur(3px);
}
.disco-crown i:nth-child(1){--n:0; transform:rotate(-14deg)}
.disco-crown i:nth-child(2){--n:1; transform:rotate(-7deg)}
.disco-crown i:nth-child(3){--n:2; transform:rotate(0)}
.disco-crown i:nth-child(4){--n:3; transform:rotate(7deg)}
.disco-crown i:nth-child(5){--n:4; transform:rotate(14deg)}
.party-celebration.playing .disco-crown { animation: disco-glow 5s ease-in-out both; }
@keyframes disco-glow { 0%,100%{opacity:0} 18%,72%{opacity:.82} 35%,55%{opacity:.48} 45%,65%{opacity:1} }
.party h2, .travel h2 {
  margin: 0;
  font-family: "Italiana", serif;
  font-weight: 400;
  font-size: clamp(3.2rem, 8vw, 7rem);
  line-height: 1.02;
}
.rule { width: 1px; height: 64px; margin: 2.6rem auto; background: rgba(255,255,255,.55); }
.party-detail { margin: .15rem 0; font-family: "Cormorant Garamond", serif; font-size: 1.6rem; }
.rsvp-box {
  position:relative;
  overflow:visible;
  width: min(100%, 620px);
  margin: clamp(3rem,7vw,5rem) auto 0;
  padding: clamp(1.4rem,4vw,2.2rem);
  display: grid;
  gap: .45rem;
  border: 1px solid rgba(255,255,255,.62);
  color: white;
  text-decoration: none;
  background: rgba(0,34,132,.3);
  box-shadow: 0 24px 70px rgba(0,13,65,.22);
  backdrop-filter: blur(7px);
  transition: transform .25s ease, background .25s ease, border-color .25s ease;
}
.rsvp-box > span,
.rsvp-box > strong,
.rsvp-box > small { position:relative; z-index:3; }
.rsvp-box:hover,
.rsvp-box:focus-visible {
  transform: translateY(-3px);
  border-color: white;
  background: rgba(0,34,132,.48);
  outline: none;
}
.rsvp-box span,
.rsvp-box small {
  text-transform: uppercase;
  letter-spacing: .25em;
  font-size: .68rem;
  font-weight: 500;
}
.rsvp-box strong {
  font: 400 clamp(1.65rem,4vw,2.4rem)/1.2 "Cormorant Garamond",serif;
}
.rsvp-box small { opacity: .64; }

.travel {
  position: relative;
  overflow: hidden;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  max-width: 1200px;
  margin: auto;
  padding: clamp(6rem, 12vw, 10rem) 2rem;
  gap: clamp(3rem, 8vw, 8rem);
  align-items: end;
  max-width:none;
  padding-inline:max(2rem,calc((100vw - 1200px)/2));
  background:linear-gradient(180deg,#0a3d83 0,#82afe5 4%,#c7dfff 38%,#dbeaff 100%);
}
.travel-copy { width:min(100%,840px); margin-inline:auto; }
.travel > :not(.celebration-layer) { position: relative; z-index: 2; }
.travel h2 { margin-bottom: 2.5rem; font-size: clamp(3.1rem, 7vw, 6rem); }
.travel-copy > p:not(.section-kicker), .stay p { color: #365274; max-width: 650px; }
.travel-copy .dress-code {
  margin-top:2rem;
  font-family:"Cormorant Garamond",serif;
  font-size:clamp(1.5rem,2.6vw,2rem);
  color:var(--ink);
}
.dress-code strong { font-weight:500; }
.travel-copy .rsvp-box-secondary {
  margin-top:clamp(2.5rem,5vw,4rem);
  margin-left:auto;
  margin-right:auto;
  text-align:center;
  color:var(--ink);
  border-color:rgba(0,47,167,.4);
  background:rgba(255,255,255,.36);
  box-shadow:0 24px 70px rgba(22,61,111,.12);
}
.travel-copy .rsvp-box-secondary:hover,
.travel-copy .rsvp-box-secondary:focus-visible {
  border-color:#002fa7;
  background:rgba(255,255,255,.62);
}
.stay { padding: 2.5rem; border: 1px solid var(--line); background: rgba(255,255,255,.48); }
.stay h3 {
  margin: 0 0 1.3rem;
  font-family: "Cormorant Garamond", serif;
  font-weight: 500;
  font-size: 2.1rem;
  line-height: 1.2;
}
.musings-celebration { z-index: 1; }
.musings-object {
  position: absolute;
  bottom: -7vh;
  opacity: 0;
  object-fit: contain;
  filter: drop-shadow(0 25px 40px rgba(8,39,87,.2));
  will-change: transform, opacity;
}
.musings-object.crystal { left: 2vw; width: min(20vw,270px); }
.musings-object.incense { right: 1vw; width: min(23vw,310px); }
.musings-celebration.playing .crystal { animation: musing-crystal 6.4s cubic-bezier(.16,.82,.22,1) both; }
.musings-celebration.playing .incense { animation: musing-incense 6.4s cubic-bezier(.16,.82,.22,1) .12s both; }
@keyframes musing-crystal {
  0% { opacity:0; transform:translate3d(-18vw,24vh,0) rotate(-12deg) scale(.75); }
  18%,84% { opacity:.78; transform:translate3d(0,0,0) rotate(-3deg) scale(1); }
  100% { opacity:0; transform:translate3d(-3vw,12vh,0) rotate(-6deg) scale(.94); }
}
@keyframes musing-incense {
  0% { opacity:0; transform:translate3d(18vw,24vh,0) rotate(12deg) scale(.75); }
  18%,84% { opacity:.74; transform:translate3d(0,0,0) rotate(2deg) scale(1); }
  100% { opacity:0; transform:translate3d(3vw,12vh,0) rotate(5deg) scale(.94); }
}

footer {
  border-top: 1px solid var(--line);
  padding: 2rem;
  text-align: center;
  text-transform: uppercase;
  letter-spacing: .2em;
  font-size: .68rem;
  color:white;
  background:#082757;
}
footer span { padding: 0 .65rem; color: var(--royal); }

@media (max-width: 760px) {
  .hero { min-height: 88svh; }
  .hero-frame { min-height: 88svh; padding-inline: 1.25rem; }
  .hero::after { inset: 10px; }
  .masthead { top: 25px; left: 25px; }
  .hero-image { background-position: 57% center; }
  .hero-details { flex-direction: column; gap: .35rem; margin-top: 2.4rem; }
  .hero-details span { display: none; }
  .scroll { display: none; }
  .travel { grid-template-columns: 1fr; }
  .stay { padding: 2rem 1.5rem; }
  .invitation-page { padding:2rem 1.25rem; }
  .vintage-bottle { width: min(38vw,230px); bottom:-10vh; }
  .bottle-left { left:-4vw; }
  .bottle-right { right:-4vw; }
  .party-object.crystal { width: 38vw; left:-6vw; }
  .party-object.incense { width: 42vw; right:-8vw; }
  .party-bottle { width: 34vw; left:-7vw; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .scroll span { animation: none; }
  .celebration-layer { display: none; }
  .stage-reveal { display:none; }
}

/* Final entrance: one continuous Yves Klein painting that breaks into falling tiles. */
.password-gate {
  overflow: hidden;
  isolation: isolate;
  background: #002fa7 url("yves-klein-impasto.png") center / cover no-repeat;
  transition: visibility 0s linear 2.45s;
}
.password-gate::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: radial-gradient(circle at 50% 47%, rgba(0,21,120,.08), rgba(0,13,72,.28));
  pointer-events: none;
  transition: opacity .3s ease;
}
.paint-tiles {
  position: absolute;
  inset: 0;
  z-index: 0;
  display: grid;
  grid-template-columns: repeat(var(--columns), 1fr);
  grid-template-rows: repeat(var(--rows), 1fr);
  perspective: 1100px;
}
.paint-tiles i {
  position: relative;
  display: block;
  overflow: hidden;
  margin: -.65px;
  box-shadow: inset 0 0 0 .4px rgba(0,31,150,.08);
  will-change: transform, opacity;
}
.paint-tiles i::before {
  content: "";
  position: absolute;
  left: var(--offset-x);
  top: var(--offset-y);
  width: 100vw;
  height: 100vh;
  background: #002fa7 url("yves-klein-impasto.png") center / cover no-repeat;
}
.password-card {
  position: relative;
  z-index: 2;
  border: 0;
  background: rgba(0,26,116,.12);
  box-shadow: none;
  backdrop-filter: blur(2px);
  transition: opacity .25s ease, transform .45s cubic-bezier(.2,.75,.2,1);
}
.password-card h2 {
  margin-bottom: 2.8rem;
  font-family: "Italiana",serif;
  font-size: clamp(2.9rem,9vw,6.8rem);
  line-height:.95;
  letter-spacing: .055em;
}
.password-card .gate-title {
  margin:0 0 2.8rem;
  font-family:"Italiana",serif;
  font-size:clamp(3rem,9vw,6.8rem);
  font-weight:400;
  line-height:.95;
  letter-spacing:.035em;
  text-transform:none;
}
.password-gate.unlocking {
  background: transparent;
  pointer-events: none;
}
.password-gate.unlocking::after { opacity: 0; }
.password-gate.unlocking .password-card { opacity: 0; transform: scale(.96); }
.password-gate.unlocking .paint-tiles i {
  animation: klein-tile-fall 1.72s cubic-bezier(.58,.02,.82,.4) var(--delay) both;
}
.password-gate.unlocked { visibility: hidden; opacity: 0; transition: none; }
@keyframes klein-tile-fall {
  0% { opacity: 1; transform: translate3d(0,0,0) rotateX(0) rotateZ(0); }
  22% { opacity: 1; transform: translate3d(calc(var(--tile-drift) * .12),2vh,16px) rotateX(2deg) rotateZ(calc(var(--turn) * .08)); }
  100% { opacity: .98; transform: translate3d(var(--tile-drift),124vh,60px) rotateX(18deg) rotateZ(var(--turn)); }
}

/* The page-wide celebration layer is deliberately confetti-only. */
.page-confetti .vintage-bottle,
.page-confetti .flying-cork { display: none; }

/* Restore the original ornate 1996 bottle and keep it above the props. */
.party-bottle {
  position: absolute;
  z-index: 6;
  left: clamp(.5rem,3vw,3rem);
  bottom: -14%;
  width: min(29vw,390px);
  height: auto;
  opacity: 0;
  object-fit: contain;
  filter: drop-shadow(0 32px 48px rgba(0,0,0,.48));
}
.party-celebration.playing .party-bottle {
  animation: original-bottle-arrive 5.6s cubic-bezier(.16,.82,.22,1) .05s both;
}
@keyframes original-bottle-arrive {
  0% { opacity:0; transform:translate3d(-20vw,28vh,0) rotate(-10deg) scale(.72); }
  18%,82% { opacity:1; transform:translate3d(0,-5vh,0) rotate(-3deg) scale(1); }
  100% { opacity:0; transform:translate3d(4vw,-56vh,0) rotate(5deg) scale(.96); }
}
.party-object.crystal {
  z-index: 2;
  left: auto;
  right: -2vw;
  width: min(21vw,270px);
}
.party-object.incense {
  z-index: 1;
  right: 18vw;
  width: min(19vw,245px);
}

@media (max-width: 760px) {
  .password-card { padding: 2rem 1.2rem; }
  .party-bottle { width: 44vw; left: -6vw; bottom: -7%; }
  .party-object.crystal { width: 29vw; right: -7vw; }
  .party-object.incense { width: 24vw; right: 15vw; }
  .party { padding-bottom:clamp(7rem,24vw,9rem); }
  .party-rory { right:-4.5rem; bottom:-9rem; width:min(46vw,220px); }
  .musings-object.crystal { width: 34vw; left: -9vw; }
  .musings-object.incense { width: 38vw; right: -12vw; }
  .travel-copy .rsvp-box-secondary { margin-bottom:clamp(8rem,28vw,11rem); }
}

@media (prefers-reduced-motion: reduce) {
  .password-gate { transition: none; }
  .password-gate.unlocked { opacity: 0; visibility: hidden; }
  .page-confetti { display:none; }
  .party-rory { opacity:1; transform:none; }
  .party-celebration { display: block; }
  .party-celebration .confetti-field,
  .party-celebration .disco-crown,
  .party-celebration .party-object { display: none; }
  .party-bottle { opacity: 1; transform: translateY(-5vh); }
  .musings-celebration { display: block; }
  .musings-object { opacity: .55; transform: none; }
}

/* Native RSVP */
.rsvp-section { background:#082b65; color:#f6f5f0; padding:clamp(5rem,11vw,9rem) 1.5rem; scroll-margin-top:1rem; }
.rsvp-panel { max-width:850px; margin:0 auto; }
.rsvp-panel h2 { font-family:"Italiana",Georgia,serif; font-weight:400; font-size:clamp(3.2rem,8vw,6.8rem); line-height:1; margin:.7rem 0 2.6rem; }
.rsvp-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.5rem 1.8rem; }
.rsvp-fields label { display:flex; flex-direction:column; gap:.55rem; font:500 .9rem/1.5 Manrope,Arial,sans-serif; letter-spacing:.02em; }
.rsvp-fields label span { font-weight:300; opacity:.75; }
.rsvp-fields input,.rsvp-fields select,.rsvp-fields textarea { width:100%; min-height:3.2rem; border:1px solid rgba(255,255,255,.65); border-radius:0; padding:.7rem .85rem; color:#082b65; background:#fbfaf6; font:400 1rem/1.4 Manrope,Arial,sans-serif; }
.rsvp-fields textarea { resize:vertical; }
.rsvp-fields :focus-visible { outline:3px solid #8ebdff; outline-offset:3px; }
.rsvp-wide { grid-column:1/-1; }
.rsvp-panel button { border:1px solid #f6f5f0; background:#f6f5f0; color:#082b65; font:500 .9rem Manrope,Arial,sans-serif; padding:1rem 2.1rem; margin-top:2rem; cursor:pointer; }
.rsvp-panel button:hover,.rsvp-panel button:focus-visible { background:#d9e7ff; }
.rsvp-panel button:disabled { opacity:.65; cursor:wait; }
.rsvp-status { min-height:1.5em; margin:1rem 0 0; font:400 1rem/1.5 Manrope,Arial,sans-serif; }
.rsvp-trap { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
@media(max-width:640px){ .rsvp-fields { grid-template-columns:1fr; } .rsvp-wide { grid-column:auto; } }

.rsvp-dialog { width:min(92vw,760px); max-height:min(90vh,900px); overflow-y:auto; border:1px solid rgba(255,255,255,.75); padding:0; margin:auto; background:#082b65; color:#f6f5f0; box-shadow:0 25px 90px rgba(0,13,53,.5); }
.rsvp-dialog::backdrop { background:rgba(0,15,45,.73); backdrop-filter:blur(5px); }
.rsvp-dialog .rsvp-panel { max-width:none; padding:clamp(2rem,6vw,4rem); position:relative; }
.rsvp-dialog .rsvp-panel h2 { margin:.25rem 0 2.4rem; font-size:clamp(3.5rem,9vw,6rem); }
.rsvp-dialog .rsvp-fields { grid-template-columns:repeat(2,minmax(0,1fr)); }
.rsvp-dialog .rsvp-panel .rsvp-close { position:absolute; right:1.15rem; top:.9rem; padding:.2rem .55rem; margin:0; border:0; background:transparent; color:#f6f5f0; font:300 2.3rem/1 Manrope,Arial,sans-serif; }
.rsvp-dialog .rsvp-panel .rsvp-close:hover,.rsvp-dialog .rsvp-panel .rsvp-close:focus-visible { background:rgba(255,255,255,.14); }
.rsvp-dialog .rsvp-thanks { padding:1.2rem 0 1rem; }
.rsvp-dialog .rsvp-thanks p { font:400 clamp(1.1rem,2.4vw,1.4rem)/1.6 Manrope,Arial,sans-serif; }
.rsvp-dialog [hidden] { display:none; }
@media(max-width:640px) { .rsvp-dialog .rsvp-fields { grid-template-columns:1fr; } }

/* Yves Klein blue RSVP and attendance choices */
.rsvp-dialog { background:#002fa7; border-color:#e6edff; box-shadow:0 30px 100px rgba(0,12,66,.62); }
.rsvp-dialog::backdrop { background:rgba(0,10,58,.77); }
.rsvp-dialog .rsvp-fields input,.rsvp-dialog .rsvp-fields textarea { color:#001c6b; }
.rsvp-dialog .rsvp-fields textarea { min-height:6rem; }
.attendance-choices { border:0; padding:0; margin:0; min-width:0; }
.attendance-choices legend { padding:0 0 .7rem; font:500 .9rem/1.5 Manrope,Arial,sans-serif; letter-spacing:.02em; }
.attendance-buttons { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.8rem; }
.rsvp-dialog .attendance-buttons label { display:block; cursor:pointer; }
.attendance-buttons input { position:absolute; width:1px!important; height:1px!important; min-height:0!important; opacity:0; padding:0!important; border:0!important; }
.attendance-buttons span { display:flex; align-items:center; justify-content:center; min-height:4.1rem; padding:.8rem; border:1px solid #eaf0ff; color:white; background:rgba(255,255,255,.06); text-align:center; font:500 .92rem/1.35 Manrope,Arial,sans-serif; transition:background .2s,color .2s,transform .2s; }
.attendance-buttons label:hover span { background:rgba(255,255,255,.2); transform:translateY(-2px); }
.attendance-buttons input:checked + span { color:#002fa7; background:white; }
.attendance-buttons input:focus-visible + span { outline:3px solid #fff; outline-offset:3px; }
@media(max-width:560px) { .attendance-buttons { grid-template-columns:1fr; } }

/* Full-screen RSVP celebration */
.rsvp-success { inset:0; width:100vw; max-width:none; height:100dvh; max-height:none; margin:0; padding:0; border:0; overflow:hidden; background:#002fa7; color:white; }
.rsvp-success::backdrop { background:#002fa7; }
.rsvp-success .success-close { position:absolute; z-index:4; top:1.2rem; right:clamp(1rem,4vw,3rem); border:0; background:rgba(255,255,255,.12); color:white; width:3rem; height:3rem; font:300 2rem/1 Manrope,Arial,sans-serif; cursor:pointer; }
.rsvp-success .success-close:hover,.rsvp-success .success-close:focus-visible { background:rgba(255,255,255,.3); }
.disco-pile { position:absolute; inset:0; z-index:1; overflow:hidden; pointer-events:none; }
.disco-pile span { position:absolute; left:var(--x); bottom:var(--bottom); width:var(--size); height:var(--size); background:url('disco-ball-silver.png') center/contain no-repeat; filter:drop-shadow(0 6px 5px rgba(0,0,60,.33)); animation:disco-land 1.15s cubic-bezier(.17,.77,.32,1.15) var(--delay) both; }
@keyframes disco-land { 0% { transform:translate3d(0,-150vh,0) rotate(-100deg); } 75% { transform:translate3d(0,8px,0) rotate(var(--angle)); } 100% { transform:translate3d(0,0,0) rotate(var(--angle)); } }
.champagne-scene { display:none; position:absolute; inset:0; z-index:1; overflow:hidden; pointer-events:none; }
.rsvp-success.attending .champagne-scene { display:block; }
.champagne-bottle-wrap { position:absolute; left:clamp(-1rem,8vw,10rem); bottom:-12vh; width:min(38vw,360px); aspect-ratio:2/3; filter:drop-shadow(0 18px 32px rgba(0,0,50,.4)); transform-origin:55% 90%; animation:bottle-cross 1.3s cubic-bezier(.14,.8,.27,1) .3s both; }
.champagne-pop-bottle { position:absolute; inset:0; z-index:1; width:100%; height:100%; object-fit:contain; }
.champagne-sealed { animation:sealed-hide .01s linear 1.7s forwards; }
.champagne-open { opacity:0; animation:opened-show .01s linear 1.7s forwards; }
.champagne-spray { position:absolute; z-index:2; left:50%; bottom:95%; width:min(100vw,1600px); max-width:none; transform-origin:0 100%; filter:drop-shadow(0 0 24px rgba(255,242,178,.7)); animation:spray-bloom 1.55s cubic-bezier(.12,.78,.24,1) 1.7s both; }
.champagne-pop-cork { position:absolute; z-index:3; left:50%; top:0; width:30%; transform-origin:center; animation:cork-pop 1.8s cubic-bezier(.13,.7,.28,1) 1.7s both; }
@keyframes bottle-cross { 0% { opacity:0; transform:translate3d(-65vw,22vh,0) rotate(-20deg); } 75% { opacity:1; transform:translate3d(3vw,-2vh,0) rotate(5deg); } 100% { opacity:1; transform:translate3d(0,0,0) rotate(-5deg); } }
@keyframes sealed-hide { to { opacity:0; } }
@keyframes opened-show { to { opacity:1; } }
@keyframes cork-pop { 0% { opacity:0; transform:translate3d(-50%,0,0) scale(.45) rotate(-30deg); } 3% { opacity:1; } 65% { opacity:1; transform:translate3d(calc(-50% + 46vw),-55vh,0) scale(1) rotate(230deg); } 100% { opacity:0; transform:translate3d(calc(-50% + 78vw),-90vh,0) scale(.8) rotate(400deg); } }
@keyframes spray-bloom { 0% { opacity:0; transform:scale(.02) rotate(-8deg); } 18% { opacity:1; } 75% { opacity:1; transform:scale(1.15) rotate(0); } 100% { opacity:.8; transform:scale(1.2) rotate(0); } }
.champagne-sparkles { position:absolute; inset:0; z-index:4; }
.champagne-sparkles i { position:absolute; left:50%; top:0; width:var(--size); height:var(--size); border-radius:50%; background:#f9e7aa; box-shadow:0 0 11px #fff; animation:sparkle-pop 1.45s ease-out var(--delay) both; }
@keyframes sparkle-pop { 0% { opacity:0; transform:translate(0,0) scale(.3); } 20% { opacity:1; } 100% { opacity:0; transform:translate(var(--dx),var(--dy)) scale(.1); } }
.champagne-fizz { position:absolute; inset:0; z-index:2; overflow:hidden; pointer-events:none; }
.champagne-fizz::before { content:""; position:absolute; inset:0; background:linear-gradient(165deg,transparent 35%,rgba(247,209,95,.11) 70%,rgba(255,248,212,.18)); animation:fizz-glow 2s ease 1.8s both; }
@keyframes fizz-glow { from { opacity:0; } to { opacity:1; } }
.champagne-fizz i { position:absolute; left:var(--x); bottom:-8vh; width:var(--size); height:var(--size); border:1px solid rgba(255,246,199,.85); border-radius:50%; background:radial-gradient(circle at 28% 24%,rgba(255,255,255,.8),rgba(247,212,122,.27) 35%,rgba(255,233,174,.08) 70%); box-shadow:0 0 15px rgba(255,236,173,.55),inset 0 0 6px rgba(255,255,255,.5); animation:bubble-rise var(--duration) ease-in var(--delay) infinite; }
@keyframes bubble-rise { from { opacity:0; transform:translate3d(0,0,0) scale(.5); } 15% { opacity:.9; } to { opacity:0; transform:translate3d(var(--drift),-145vh,0) scale(1.2); } }
.success-copy { position:relative; z-index:2; display:flex; min-height:100dvh; flex-direction:column; align-items:center; justify-content:center; padding:5rem 1.5rem; color:#073e83; text-align:center; text-shadow:0 1px 2px rgba(255,255,255,.92); }
.rsvp-success.attending .success-copy { animation:success-reveal .8s ease 2.1s both; }
.rsvp-success.declining .success-copy { animation:success-reveal .8s ease 1.7s both; }
@keyframes success-reveal { from { opacity:0; transform:translateY(1rem); } to { opacity:1; transform:translateY(0); } }
.success-copy h2 { margin:0 0 1.4rem; font:400 clamp(3.5rem,10vw,9rem)/.95 Italiana,Georgia,serif; }
.success-copy p { max-width:19ch; margin:0; font:400 clamp(1.45rem,3.5vw,2.8rem)/1.3 "Cormorant Garamond",Georgia,serif; }
@media(max-width:600px) { .champagne-bottle-wrap { width:65vw; left:-15vw; bottom:-7vh; } }
@media(prefers-reduced-motion:reduce) { .disco-pile span { animation:none; } .champagne-bottle-wrap { animation:none; opacity:1; transform:rotate(-4deg); } .champagne-sealed { display:none; } .champagne-open { animation:none; opacity:1; } .champagne-pop-cork,.champagne-sparkles,.champagne-fizz { display:none; } .champagne-spray { animation:none; opacity:.65; transform:scale(.85); } .rsvp-success .success-copy { animation:none; opacity:1; transform:none; } }

/* Simple invitation CTA and envelope submission */
.party .rsvp-button-simple { width:min(100%,620px); display:flex; align-items:center; justify-content:center; padding:clamp(1.4rem,4vw,2.2rem); background:rgba(0,34,132,.3); color:white; border:1px solid rgba(255,255,255,.62); backdrop-filter:blur(7px); box-shadow:0 24px 70px rgba(0,13,65,.22); }
.party .rsvp-button-simple span { font:500 1rem/1.2 Manrope,Arial,sans-serif; letter-spacing:.16em; }
.party .rsvp-button-simple:hover,.party .rsvp-button-simple:focus-visible { background:rgba(0,34,132,.48); color:white; border-color:white; outline:2px solid white; outline-offset:5px; }
.rsvp-panel .rsvp-send { position:relative; display:block; width:220px; height:112px; padding:0; border:0; background:transparent; color:#fbfaf6; overflow:visible; transition:transform .2s ease; }
.rsvp-panel .rsvp-send:hover,.rsvp-panel .rsvp-send:focus-visible { background:transparent; transform:translateY(-3px); outline:2px solid #c1d9ff; outline-offset:6px; }
.rsvp-panel .rsvp-send:disabled { opacity:1; transform:none; }
.send-envelope { position:absolute; inset:0; width:100%; height:100%; filter:drop-shadow(0 8px 12px rgba(0,12,66,.2)); }
.send-label { position:absolute; left:0; right:0; top:73px; color:#002fa7; font:600 1rem/1.2 Manrope,Arial,sans-serif; letter-spacing:.03em; }
.send-plane { position:absolute; width:110px; height:88px; left:55px; top:12px; opacity:0; pointer-events:none; }
.is-flying .send-envelope,.is-flying .send-label { animation:letter-fold .3s ease-in forwards; }
.is-flying .send-plane { position:fixed; left:var(--plane-left); top:var(--plane-top); z-index:10; animation:letter-flight .9s cubic-bezier(.35,.05,.75,.4) .22s both; }
@keyframes letter-fold { to { opacity:0; transform:scale(.35) rotate(-12deg); } }
@keyframes letter-flight { 0% { opacity:0; transform:translate(0,0) scale(.5) rotate(10deg); } 12% { opacity:1; } 35% { opacity:1; transform:translate(45px,-35px) scale(1) rotate(-8deg); } 100% { opacity:0; transform:translate(110vw,-85vh) scale(.6) rotate(-22deg); } }
.rsvp-success.attending .disco-pile { display:none; }
.rsvp-success.attending .success-copy { color:#ffb7d5; text-shadow:0 2px 10px rgba(0,12,66,.65); }
@media(prefers-reduced-motion:reduce) { .rsvp-panel .rsvp-send { transition:none; } }

/* Keep the invitation still while the RSVP form scrolls. */
body.rsvp-modal-open { position:fixed; top:var(--rsvp-scroll-top); left:0; right:0; width:100%; overflow:hidden; }
.rsvp-dialog { max-height:90dvh; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; touch-action:pan-y; }
.rsvp-success { overscroll-behavior:none; touch-action:none; }
.rsvp-success.attending { background:#002fa7 url("yves-klein-impasto.png") center/cover no-repeat; }
.rsvp-success.attending .champagne-fizz::before { display:none; }
.rsvp-success.attending .champagne-spray { filter:none; }
.champagne-pop-bottle { clip-path:polygon(47% .7%,54% .7%,58% 2%,59% 5%,58% 9%,60% 12%,59% 15%,58% 17%,58% 24%,59.5% 28%,62% 34%,68% 44%,72% 51%,74% 58%,74% 92%,73% 96%,69% 98%,60% 99%,40% 99%,31% 98%,27% 96%,26% 92%,25.5% 58%,28% 51%,32% 44%,38% 34%,40.5% 28%,42% 24%,42% 17%,41% 15%,40.5% 12%,42% 9%,42% 5%,43% 2%); }

.invitation-page .hope-line { margin:1.1rem auto 0; font-size:clamp(1.45rem,3vw,2.1rem); line-height:1.3; }
.invitation-page .signature { margin-top:3.3rem; }
@media(max-width:760px) {
  .invitation-page .ornament { margin-bottom:1.4rem; }
  .invitation .lead { margin-bottom:1.6rem; }
  .invitation-page .signature { margin-top:2.8rem; }
}

/* Compact white RSVP stationery, including narrow phone screens. */
.rsvp-dialog { color:#fff; }
.rsvp-dialog .rsvp-panel { padding:1.4rem 1.5rem; }
.rsvp-dialog .rsvp-panel h2 { margin:0 0 1rem; font-size:clamp(2.6rem,7vw,4rem); }
.rsvp-dialog .rsvp-fields { grid-template-columns:repeat(2,minmax(0,1fr)); gap:.85rem 1rem; }
.rsvp-dialog .rsvp-wide { grid-column:1/-1; }
.rsvp-dialog .rsvp-fields label { gap:.3rem; font-size:.875rem; line-height:1.35; }
.rsvp-dialog .rsvp-fields input,.rsvp-dialog .rsvp-fields textarea { min-height:2.75rem; padding:.55rem .65rem; background:#fff; }
.rsvp-dialog .rsvp-fields textarea { min-height:3.75rem; height:3.75rem; }
.rsvp-dialog .attendance-buttons { grid-template-columns:repeat(2,minmax(0,1fr)); gap:.6rem; }
.rsvp-dialog .attendance-buttons span { min-height:3.2rem; padding:.55rem; font-size:.875rem; }
.rsvp-dialog .rsvp-close { color:#fff!important; }
.rsvp-dialog .rsvp-send { width:168px; height:84px; margin-top:1rem; color:#fff; }
.rsvp-dialog .send-label { top:55px; font-size:.875rem; }
.rsvp-status:empty { display:none; }
.rsvp-panel .rsvp-send.is-flying { outline:none!important; border:0!important; box-shadow:none!important; background:transparent!important; }
.rsvp-panel .rsvp-send.is-flying:focus-visible { outline:none!important; }
.musings-celebration:not(.playing) .musings-object { opacity:0; animation:none; }
.rsvp-success.attending .success-copy { color:#fff; }
.rsvp-success.attending .success-copy h2 { position:absolute; top:clamp(2rem,6vh,4rem); left:clamp(1.5rem,5vw,5rem); margin:0; font-size:clamp(2.6rem,6vw,5.5rem); line-height:1.02; text-align:left; }
.rsvp-success.attending .success-copy h2 span { display:block; }
.rsvp-success.attending .success-copy p { color:#fff; }
@media(max-width:380px) {
  .rsvp-dialog .rsvp-panel { padding:1.15rem 1rem; }
  .rsvp-dialog .rsvp-fields { gap:.65rem .7rem; }
  .rsvp-dialog .rsvp-send { margin-top:.8rem; }
}
@media(prefers-reduced-motion:reduce) {
  .musings-celebration.playing .musings-object { opacity:.55; animation:none; transform:none; }
}

/* Set the celebration lettering beneath the champagne's rising arc. */
.rsvp-success.attending .success-copy h2 { font-size:clamp(2.3rem,4.8vw,4.5rem); letter-spacing:-.025em; }
.rsvp-success.attending .success-copy p { position:absolute; right:clamp(1.5rem,6vw,6rem); bottom:clamp(4rem,12vh,8rem); width:10ch; max-width:48vw; margin:0; font:400 clamp(2.3rem,6vw,6rem)/1.04 Italiana,Georgia,serif; letter-spacing:-.025em; text-align:right; text-wrap:balance; }
@media(max-width:600px) {
  .rsvp-success.attending .success-copy p { right:1.4rem; bottom:12dvh; width:10ch; max-width:49vw; font-size:clamp(2rem,7vw,3.2rem); }
  .rsvp-success.attending .success-copy h2 { top:2rem; left:1.4rem; }
}

.rsvp-success.declining .success-copy { color:#fff; text-shadow:none; }
.rsvp-success.declining .success-copy h2,.rsvp-success.declining .success-copy p { background:rgba(0,35,125,.94); padding:.18em .35em; }
