:root {
  --rice: #fbf8f2;
  --rice-light: #fffdf9;
  --paper: #f5eee7;
  --ink: #25301f;
  --ink-soft: #5e6650;
  --lacquer: #9b1724;
  --cinnabar: #bc2838;
  --wine: #64131a;
  --jade: #22301d;
  --jade-light: #3d5130;
  --bronze: #9a7c4b;
  --bronze-light: #c9b68f;
  --rose: #b73241;
  --blush: #e5a0a2;
  --petal: #f5d9d7;
  --ivory-flower: #fffdfa;
  --display: "Bodoni Moda", "Times New Roman", serif;
  --script: "Great Vibes", "Segoe Script", cursive;
  --body: "Manrope", Arial, sans-serif;
  --chinese: "Noto Serif SC", "SimSun", serif;
  --pastel-art: url("variante-roses-lys-fond-mobile.png");
  --hero-art: url("variante-roses-lys-hero-mobile.png");
  --scroll: 0;
  --trip: 0;
  --marker-x: 7.4%;
  --marker-y: 21.9%;
}

@media (min-width: 681px) {
  :root {
    --pastel-art: url("variante-roses-lys-fond-desktop.png");
    --hero-art: url("variante-roses-lys-hero-desktop.png");
  }
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  background: var(--rice);
}

body {
  min-width: 320px;
  margin: 0;
  overflow-x: hidden;
  color: var(--ink);
  background:
    radial-gradient(circle at 18% 20%, rgb(255 255 255 / 0.82), transparent 24rem),
    linear-gradient(112deg, var(--rice-light), var(--rice) 58%, #f0e7df);
  font-family: var(--body);
  font-weight: 400;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

::selection {
  color: var(--rice-light);
  background: var(--lacquer);
}

a {
  color: inherit;
}

button,
a {
  -webkit-tap-highlight-color: transparent;
}

a:focus-visible {
  outline: 2px solid var(--cinnabar);
  outline-offset: 5px;
}

sup {
  position: relative;
  top: -0.25em;
  font-size: 0.52em;
}

.svg-defs {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
}

.skip-link {
  position: fixed;
  z-index: 100;
  top: 1rem;
  left: 1rem;
  padding: 0.8rem 1rem;
  color: var(--rice-light);
  background: var(--lacquer);
  font-size: 0.78rem;
  font-weight: 600;
  transform: translateY(-180%);
  transition: transform 180ms ease;
}

.skip-link:focus {
  transform: translateY(0);
}

.page-atmosphere,
.paper-grain,
.vignette,
.petal-field {
  position: fixed;
  z-index: 20;
  inset: 0;
  pointer-events: none;
}

.page-atmosphere {
  overflow: hidden;
}

.paper-grain {
  opacity: 0.18;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.88' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.36'/%3E%3C/svg%3E");
  mix-blend-mode: multiply;
}

.vignette {
  box-shadow: inset 0 0 13vw rgb(87 42 34 / 0.13);
}

.petal-field {
  perspective: 800px;
}

.floating-petal {
  --petal-size: 13px;
  --petal-x: 50vw;
  --petal-y: 50vh;
  --petal-mid-x: 18px;
  --petal-end-x: 38px;
  --petal-exit-x: 52px;
  --petal-mid-rotate: 130deg;
  --petal-end-rotate: 290deg;
  --petal-exit-rotate: 430deg;
  position: absolute;
  top: 0;
  left: 0;
  width: var(--petal-size);
  height: calc(var(--petal-size) * 0.68);
  transform: translate3d(var(--petal-x), var(--petal-y), 0);
  will-change: transform;
}

.floating-petal::before {
  position: absolute;
  inset: 0;
  border-radius: 80% 12% 80% 12%;
  opacity: 0;
  background: var(--petal-color, var(--blush));
  box-shadow:
    inset 2px 1px 3px rgb(255 255 255 / 0.48),
    0 3px 7px rgb(46 28 27 / 0.12);
  content: "";
  transform-origin: 50% 60%;
  animation: petal-flight var(--petal-duration, 13s) linear var(--petal-delay, 0s) infinite;
  will-change: transform, opacity;
}

.scroll-meter {
  position: fixed;
  z-index: 25;
  top: 50%;
  left: 2rem;
  display: flex;
  align-items: center;
  gap: 1rem;
  color: var(--wine);
  transform: translate(-46%, -50%) rotate(-90deg);
  transform-origin: center;
}

.scroll-meter__label {
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  white-space: nowrap;
}

.scroll-meter__track {
  position: relative;
  display: block;
  width: 8rem;
  height: 1px;
  overflow: hidden;
  background: rgb(114 26 36 / 0.2);
}

.scroll-meter__track i {
  position: absolute;
  inset: 0;
  background: var(--lacquer);
  transform: scaleX(var(--scroll));
  transform-origin: left;
}

.chapter-nav {
  position: fixed;
  z-index: 25;
  top: 50%;
  right: 1.6rem;
  display: grid;
  gap: 1rem;
  transform: translateY(-50%);
}

.chapter-nav a {
  position: relative;
  display: grid;
  width: 0.85rem;
  height: 0.85rem;
  place-items: center;
  text-decoration: none;
}

.chapter-nav a::after {
  width: 0.32rem;
  height: 0.32rem;
  border: 1px solid var(--lacquer);
  background: transparent;
  content: "";
  transform: rotate(45deg);
  transition:
    transform 220ms ease,
    background 220ms ease;
}

.chapter-nav a:hover::after,
.chapter-nav a.is-active::after {
  background: var(--lacquer);
  transform: rotate(45deg) scale(1.65);
}

.chapter-nav span {
  position: absolute;
  top: 50%;
  right: 1.4rem;
  padding: 0.35rem 0.5rem;
  color: var(--rice-light);
  background: var(--wine);
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  white-space: nowrap;
  opacity: 0;
  transform: translate(0.4rem, -50%);
  transition:
    opacity 180ms ease,
    transform 180ms ease;
}

.chapter-nav a:hover span,
.chapter-nav a:focus-visible span {
  opacity: 1;
  transform: translate(0, -50%);
}

.journey-section {
  position: relative;
  z-index: 1;
}

.eyebrow {
  margin: 0;
  color: var(--lacquer);
  font-size: clamp(0.62rem, 0.95vw, 0.78rem);
  font-weight: 600;
  letter-spacing: 0.35em;
  line-height: 1.5;
  text-transform: uppercase;
}

.hero {
  display: grid;
  min-height: 100svh;
  overflow: hidden;
  place-items: center;
  isolation: isolate;
}

.hero__art {
  position: absolute;
  z-index: -4;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
}

.hero__art picture,
.hero__art img {
  display: block;
  width: 100%;
  height: 100%;
}

.hero__art picture {
  position: relative;
  z-index: 0;
}

.hero__art img {
  object-fit: cover;
  object-position: center;
}

.hero__art::before,
.hero__art::after {
  position: absolute;
  z-index: 1;
  inset: 0;
  background: var(--hero-art) center / cover no-repeat;
  content: "";
  pointer-events: none;
  transform: translateZ(0);
  will-change: transform;
}

.hero__art::before {
  -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 25%, transparent 62%);
  mask-image: linear-gradient(180deg, #000 0%, #000 25%, transparent 62%);
  transform-origin: 0 0;
  animation: flora-wind-top 5.8s cubic-bezier(0.37, 0, 0.63, 1) -2.1s infinite alternate;
}

.hero__art::after {
  -webkit-mask-image: linear-gradient(0deg, #000 0%, #000 25%, transparent 62%);
  mask-image: linear-gradient(0deg, #000 0%, #000 25%, transparent 62%);
  transform-origin: 100% 100%;
  animation: flora-wind-bottom 6.8s cubic-bezier(0.37, 0, 0.63, 1) -4.7s infinite alternate;
}

.js .hero__art::before,
.js .hero__art::after {
  animation-play-state: paused;
  will-change: auto;
}

.js .hero__art.is-wind-active::before,
.js .hero__art.is-wind-active::after {
  animation-play-state: running;
  will-change: transform;
}

.js .hero__art img {
  transform: scale(1.035);
}

.js.is-ready .hero__art img {
  transform: scale(1);
  transition: transform 2.8s cubic-bezier(0.16, 1, 0.3, 1) 900ms;
}

.hero::before {
  position: absolute;
  z-index: -3;
  inset: 0;
  background:
    radial-gradient(circle at 50% 45%, rgb(255 253 247 / 0.9), transparent 35rem),
    linear-gradient(90deg, transparent 49.94%, rgb(165 28 36 / 0.06) 50%, transparent 50.06%);
  content: "";
}

.hero::after {
  position: absolute;
  z-index: 3;
  right: 0;
  bottom: -1px;
  left: 0;
  height: min(22vh, 14rem);
  background: linear-gradient(180deg, transparent, rgb(247 238 235 / 0.96));
  content: "";
  pointer-events: none;
}

.opening {
  display: none;
}

.js .opening {
  position: absolute;
  z-index: 40;
  top: 0;
  bottom: 0;
  display: block;
  width: 50.15%;
  overflow: hidden;
  background:
    linear-gradient(90deg, rgb(80 10 18 / 0.15), transparent 10%, transparent 90%, rgb(80 10 18 / 0.16)),
    repeating-linear-gradient(90deg, transparent 0 54px, rgb(255 255 255 / 0.025) 54px 56px),
    var(--lacquer);
  transition: transform 1.35s cubic-bezier(0.77, 0, 0.18, 1) 400ms;
}

.js .opening::before,
.js .opening::after {
  position: absolute;
  border: 1px solid rgb(239 209 157 / 0.72);
  content: "";
}

.js .opening::before {
  inset: 1.2rem;
}

.js .opening::after {
  inset: 1.65rem;
}

.opening span {
  position: absolute;
  top: 50%;
  width: 5.5rem;
  height: 5.5rem;
  border: 1px solid var(--bronze-light);
  border-radius: 50%;
  transform: translateY(-50%);
}

.opening--left {
  left: 0;
}

.opening--left span {
  right: -2.75rem;
}

.opening--right {
  right: 0;
}

.opening--right span {
  left: -2.75rem;
}

.is-ready .opening--left {
  transform: translateX(-101%);
}

.is-ready .opening--right {
  transform: translateX(101%);
}

.frame {
  position: absolute;
  z-index: 5;
  pointer-events: none;
}

.frame--outer {
  inset: clamp(0.7rem, 1.5vw, 1.5rem);
  border: 1px solid var(--bronze);
}

.frame--inner {
  inset: clamp(1rem, 2vw, 2rem);
  border: 1px solid rgb(167 128 74 / 0.5);
}

.frame::before,
.frame::after {
  position: absolute;
  width: 1.2rem;
  height: 1.2rem;
  border-color: var(--bronze);
  content: "";
}

.frame::before {
  top: -1px;
  left: -1px;
  border-top: 4px double;
  border-left: 4px double;
}

.frame::after {
  right: -1px;
  bottom: -1px;
  border-right: 4px double;
  border-bottom: 4px double;
}

.hero__content {
  position: relative;
  z-index: 4;
  display: grid;
  width: min(78rem, 89vw);
  justify-items: center;
  padding: clamp(6rem, 10vh, 8rem) 0 clamp(3.5rem, 7vh, 6rem);
  text-align: center;
}

@media (min-width: 681px) {
  .hero__content::before {
    position: absolute;
    z-index: -1;
    inset: 2% 9%;
    background: radial-gradient(
      ellipse at center,
      rgb(255 250 240 / 0.98) 0%,
      rgb(255 250 240 / 0.9) 48%,
      transparent 78%
    );
    content: "";
    filter: blur(12px);
  }
}

.js .hero__content {
  opacity: 0;
  transform: translateY(1.5rem);
}

.js.is-ready .hero__content {
  opacity: 1;
  transform: translateY(0);
  transition:
    opacity 1s ease 1.3s,
    transform 1.2s cubic-bezier(0.16, 1, 0.3, 1) 1.3s;
}

.hero__eyebrow {
  margin-bottom: clamp(1.1rem, 2.4vh, 2rem);
}

.double-happiness {
  position: relative;
  display: grid;
  width: clamp(6.5rem, 9.5vw, 9rem);
  aspect-ratio: 1;
  margin-bottom: clamp(3.5rem, 5.5vh, 4.4rem);
  place-items: center;
  color: var(--lacquer);
}

.double-happiness__orbit {
  position: absolute;
  inset: 0;
  border: 1px solid var(--bronze);
  border-radius: 50%;
}

.double-happiness__orbit::before,
.double-happiness__orbit::after {
  position: absolute;
  border: 1px solid var(--bronze-light);
  border-radius: 50%;
  content: "";
}

.double-happiness__orbit::before {
  inset: 0.42rem;
}

.double-happiness__orbit::after {
  inset: -0.38rem;
  border-style: dotted;
  opacity: 0.52;
  animation: orbit 24s linear infinite;
}

.double-happiness__character {
  position: relative;
  font-family: var(--chinese);
  font-size: clamp(3.4rem, 5.4vw, 5rem);
  font-weight: 700;
  line-height: 1;
}

.double-happiness__knot {
  position: absolute;
  top: calc(100% + 0.35rem);
  left: 50%;
  width: 1.25rem;
  height: 2.8rem;
  transform: translateX(-50%);
}

.double-happiness__knot i {
  position: absolute;
  display: block;
  background: var(--lacquer);
}

.double-happiness__knot i:nth-child(1) {
  top: 0;
  left: 50%;
  width: 0.8rem;
  height: 0.8rem;
  border: 1px solid var(--lacquer);
  background: transparent;
  transform: translateX(-50%) rotate(45deg);
}

.double-happiness__knot i:nth-child(2),
.double-happiness__knot i:nth-child(3) {
  top: 0.7rem;
  width: 1px;
  height: 2rem;
  transform-origin: top;
}

.double-happiness__knot i:nth-child(2) {
  left: 0.45rem;
  transform: rotate(7deg);
}

.double-happiness__knot i:nth-child(3) {
  right: 0.45rem;
  transform: rotate(-7deg);
}

.couple {
  display: grid;
  margin: 0;
  color: var(--lacquer);
  font-family: var(--script);
  font-size: clamp(3.6rem, 9.2vw, 9.2rem);
  font-style: normal;
  font-weight: 400;
  letter-spacing: 0.01em;
  line-height: 0.9;
}

.couple span {
  white-space: nowrap;
}

.couple b {
  margin: 0.18em 0 0.12em;
  color: var(--bronze);
  font-family: var(--display);
  font-size: 0.36em;
  font-style: normal;
  font-weight: 400;
  letter-spacing: 0;
  line-height: 1;
}

.hero__invitation {
  width: min(90%, 42rem);
  margin: clamp(2rem, 4.5vh, 3.6rem) 0 0;
  color: var(--ink);
  background: radial-gradient(
    ellipse at center,
    rgb(255 253 248 / 0.96) 0%,
    rgb(255 253 248 / 0.78) 54%,
    transparent 80%
  );
  font-family: var(--display);
  font-size: clamp(0.95rem, 1.45vw, 1.2rem);
  font-weight: 500;
  letter-spacing: 0.12em;
  line-height: 1.58;
  text-shadow:
    0 1px 0 rgb(255 255 255 / 0.95),
    0 0 12px rgb(255 255 255 / 0.9);
  text-transform: uppercase;
}

.scroll-cue {
  display: grid;
  justify-items: center;
  gap: 0.75rem;
  margin-top: clamp(2rem, 4vh, 3.5rem);
  color: var(--ink-soft);
  font-size: 0.65rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-decoration: none;
  text-transform: uppercase;
}

.scroll-cue i {
  position: relative;
  display: block;
  width: 1px;
  height: 2.8rem;
  overflow: hidden;
  background: rgb(165 28 36 / 0.22);
}

.scroll-cue i::after {
  position: absolute;
  top: -100%;
  left: 0;
  width: 100%;
  height: 100%;
  background: var(--lacquer);
  content: "";
  animation: cue 2.2s ease-in-out infinite;
}

.hero__media-actions {
  position: relative;
  z-index: 4;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.75rem;
  margin-top: 1.35rem;
}

.media-btn {
  min-height: 2.7rem;
  padding: 0.7rem 1.25rem;
  border: 1px solid rgb(165 28 36 / 0.45);
  color: var(--lacquer);
  background: rgb(255 250 240 / 0.72);
  font-family: var(--body);
  font-size: 0.64rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  cursor: pointer;
  backdrop-filter: blur(6px);
  transition:
    color 180ms ease,
    background 180ms ease,
    border-color 180ms ease,
    transform 180ms ease;
}

.media-btn:hover,
.media-btn:focus-visible {
  color: var(--rice-light);
  border-color: var(--lacquer);
  background: var(--lacquer);
  transform: translateY(-0.1rem);
}

.media-modal {
  position: fixed;
  z-index: 80;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 1.25rem;
}

.media-modal[hidden] {
  display: none;
}

.media-modal__backdrop {
  position: absolute;
  inset: 0;
  border: 0;
  background: rgb(46 28 27 / 0.48);
  cursor: pointer;
}

.media-modal__panel {
  position: relative;
  z-index: 1;
  display: grid;
  width: min(28rem, 100%);
  justify-items: center;
  padding: clamp(2rem, 6vw, 3rem) clamp(1.4rem, 5vw, 2.6rem);
  border: 1px solid rgb(167 128 74 / 0.55);
  background:
    linear-gradient(rgb(255 250 240 / 0.94), rgb(255 248 236 / 0.96)),
    var(--pastel-art);
  background-position: center;
  background-size: cover;
  text-align: center;
  box-shadow: 0 2rem 5rem rgb(46 28 27 / 0.28);
  transform: translateY(0.8rem) scale(0.985);
  opacity: 0;
  transition:
    opacity 280ms ease,
    transform 380ms cubic-bezier(0.16, 1, 0.3, 1);
}

.media-modal.is-open .media-modal__panel {
  opacity: 1;
  transform: translateY(0) scale(1);
}

.media-modal__panel::before,
.media-modal__panel::after {
  position: absolute;
  width: 2.8rem;
  height: 2.8rem;
  border-color: var(--bronze);
  content: "";
}

.media-modal__panel::before {
  top: 0.85rem;
  left: 0.85rem;
  border-top: 1px solid;
  border-left: 1px solid;
}

.media-modal__panel::after {
  right: 0.85rem;
  bottom: 0.85rem;
  border-right: 1px solid;
  border-bottom: 1px solid;
}

.media-modal__close {
  position: absolute;
  top: 0.7rem;
  right: 0.7rem;
  display: grid;
  width: 2.2rem;
  aspect-ratio: 1;
  place-items: center;
  border: 1px solid rgb(165 28 36 / 0.28);
  border-radius: 50%;
  color: var(--lacquer);
  background: transparent;
  font-size: 1.35rem;
  line-height: 1;
  cursor: pointer;
}

.media-modal__panel h2 {
  margin: 0.55rem 0 0;
  color: var(--lacquer);
  font-family: var(--script);
  font-size: clamp(2.4rem, 8vw, 3.3rem);
  font-style: normal;
  font-weight: 400;
  letter-spacing: 0.01em;
  line-height: 1.05;
}

.media-modal__panel p:not(.eyebrow) {
  margin: 1.1rem 0 0;
  color: var(--ink-soft);
  font-family: var(--display);
  font-size: clamp(1rem, 3.4vw, 1.15rem);
  font-style: italic;
  line-height: 1.45;
}

.media-modal__ok {
  margin-top: 1.7rem;
  min-height: 2.6rem;
  padding: 0.65rem 1.5rem;
  border: 1px solid var(--lacquer);
  color: var(--rice-light);
  background: var(--lacquer);
  font-family: var(--body);
  font-size: 0.64rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  cursor: pointer;
}

.media-modal__ok:hover,
.media-modal__ok:focus-visible {
  background: var(--wine);
}

body.modal-open {
  overflow: hidden;
}

.botanical {
  position: absolute;
  z-index: 2;
  pointer-events: none;
  will-change: transform;
}

.botanical--hero {
  top: -3vw;
  right: -5vw;
  width: min(44rem, 56vw);
  transform-origin: top right;
}

.botanical--lower {
  bottom: -10vw;
  left: -4vw;
  width: min(34rem, 44vw);
  transform-origin: bottom left;
}

@media (min-width: 681px) {
  .botanical--hero,
  .botanical--lower {
    display: none;
  }
}

.branch {
  fill: none;
  stroke: #75433a;
  stroke-linecap: round;
  stroke-width: 5;
}

.branch--fine {
  stroke-width: 2.5;
}

.branch--light {
  stroke: #ecd2c7;
}

.blossom {
  color: var(--rose);
}

.blossom--rose {
  color: var(--rose);
}

.blossom--blush {
  color: var(--blush);
}

.blossom--ivory {
  color: var(--ivory-flower);
}

.blossom--pale {
  color: var(--petal);
}

.flower-petals {
  fill: currentColor;
  stroke: rgb(114 26 36 / 0.18);
  stroke-width: 0.6;
}

.flower-heart {
  fill: var(--wine);
}

.flower-dot {
  fill: var(--rice-light);
}

.buds--red {
  color: var(--cinnabar);
}

.leaves--coral {
  color: #bd6f6b;
}

.cloud {
  position: absolute;
  z-index: 1;
  width: clamp(7rem, 14vw, 12rem);
  overflow: visible;
  fill: none;
  stroke: var(--bronze-light);
  stroke-linecap: round;
  stroke-width: 1.1;
}

.cloud--one {
  top: 32%;
  left: 9%;
  opacity: 0.58;
}

main {
  position: relative;
  overflow: clip;
}

.route {
  position: absolute;
  z-index: 0;
  inset: 0;
  pointer-events: none;
}

.route svg {
  width: 100%;
  height: 100%;
  overflow: visible;
}

.route path {
  fill: none;
  stroke-linecap: round;
  vector-effect: non-scaling-stroke;
}

.route__shadow {
  stroke: rgb(165 28 36 / 0.1);
  stroke-width: 1.5;
}

.route__progress {
  stroke: var(--lacquer);
  stroke-width: 2;
}

.date-scene {
  display: grid;
  min-height: 118svh;
  overflow: hidden;
  place-items: center;
  background-image:
    linear-gradient(180deg, rgb(255 250 244 / 0.56), rgb(247 234 232 / 0.7)),
    var(--pastel-art);
  background-position: center;
  background-size: cover;
}

.date-scene__halo {
  position: absolute;
  top: 50%;
  left: 50%;
  width: min(70vw, 52rem);
  aspect-ratio: 1;
  border: 1px solid rgb(165 28 36 / 0.11);
  border-radius: 50%;
  transform: translate(-50%, -50%) scale(calc(0.78 + var(--scroll) * 0.2));
}

.date-scene__halo::before,
.date-scene__halo::after {
  position: absolute;
  border: 1px solid rgb(167 128 74 / 0.18);
  border-radius: 50%;
  content: "";
}

.date-scene__halo::before {
  inset: 8%;
}

.date-scene__halo::after {
  inset: 17%;
  border-style: dashed;
}

.date-lockup {
  position: relative;
  z-index: 2;
  display: grid;
  justify-items: center;
  width: min(65rem, 90vw);
  text-align: center;
}

.date-lockup__main {
  display: grid;
  grid-template-columns: auto 1px auto;
  grid-template-rows: auto auto;
  align-items: center;
  margin-top: 1.7rem;
  column-gap: clamp(1rem, 4vw, 4rem);
}

.date-lockup__day {
  grid-row: 1 / 3;
  color: var(--lacquer);
  font-family: var(--display);
  font-size: clamp(8rem, 23vw, 19rem);
  font-weight: 400;
  letter-spacing: -0.1em;
  line-height: 0.72;
}

.date-lockup__rule {
  grid-row: 1 / 3;
  width: 1px;
  height: 70%;
  background: var(--bronze);
}

.date-lockup__month,
.date-lockup__year {
  justify-self: start;
  font-family: var(--display);
}

.date-lockup__month {
  align-self: end;
  font-family: var(--script);
  font-size: clamp(3.2rem, 9vw, 8rem);
  font-style: normal;
  line-height: 0.95;
}

.date-lockup__year {
  align-self: start;
  color: var(--ink-soft);
  font-size: clamp(2.2rem, 5.7vw, 5rem);
  letter-spacing: 0.16em;
  line-height: 1.2;
}

.date-lockup__place {
  margin: 3.5rem 0 0;
  color: var(--ink-soft);
  font-size: 0.76rem;
  font-weight: 600;
  letter-spacing: 0.4em;
  text-transform: uppercase;
}

.date-seal {
  position: absolute;
  right: clamp(2.2rem, 8vw, 9rem);
  bottom: 13%;
  display: grid;
  width: 6.5rem;
  aspect-ratio: 0.82;
  border: 2px solid rgb(165 28 36 / 0.64);
  place-items: center;
  color: var(--lacquer);
  transform: rotate(3deg);
}

.date-seal::before {
  position: absolute;
  inset: 0.35rem;
  border: 1px solid rgb(165 28 36 / 0.42);
  content: "";
}

.date-seal span {
  font-family: var(--chinese);
  font-size: 2.4rem;
  line-height: 1;
}

.date-seal small {
  position: absolute;
  top: calc(100% + 0.75rem);
  font-size: 0.55rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  white-space: nowrap;
}

.event-scene {
  display: flex;
  min-height: 132svh;
  align-items: center;
  overflow: hidden;
  padding: 10vh max(7vw, 2rem);
  isolation: isolate;
}

.event-scene--ceremony {
  justify-content: flex-start;
  background-image:
    linear-gradient(180deg, rgb(255 248 242 / 0.72), rgb(246 232 230 / 0.82)),
    var(--pastel-art);
  background-position: center;
  background-size: cover;
}

.event-scene--ceremony::after {
  position: absolute;
  z-index: 2;
  right: 0;
  bottom: -1px;
  left: 0;
  height: min(25vh, 16rem);
  background: linear-gradient(180deg, transparent, #8e1e2b);
  content: "";
  pointer-events: none;
}

.event-scene--reception {
  justify-content: flex-end;
  color: var(--rice-light);
  background:
    radial-gradient(circle at 28% 34%, rgb(104 126 79 / 0.3), transparent 26rem),
    linear-gradient(145deg, #324429, #1b2818 64%, #111b10);
}

.event-scene--reception::after {
  position: absolute;
  z-index: 2;
  right: 0;
  bottom: -1px;
  left: 0;
  height: min(24vh, 15rem);
  background: linear-gradient(180deg, transparent, #f4e6e5);
  content: "";
  pointer-events: none;
}

.reception__art {
  position: absolute;
  z-index: 0;
  top: 0;
  right: 0;
  width: min(59vw, 68rem);
  height: 100%;
  overflow: hidden;
  opacity: 0.82;
  pointer-events: none;
  -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 28%, #000 100%);
  mask-image: linear-gradient(90deg, transparent 0%, #000 28%, #000 100%);
}

.reception__art img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: right center;
  transform-origin: 100% 78%;
  animation: flora-wind-reception 6.4s cubic-bezier(0.37, 0, 0.63, 1) -3.2s infinite alternate;
  will-change: transform;
}

.js .reception__art img {
  animation-play-state: paused;
  will-change: auto;
}

.js .reception__art.is-wind-active img {
  animation-play-state: running;
  will-change: transform;
}

.event-scene--reception .event-scene__number {
  z-index: 1;
}

.event-scene__wash {
  position: absolute;
  z-index: -2;
  width: min(76vw, 74rem);
  aspect-ratio: 1.55;
  opacity: 0.95;
  filter: blur(0.2px);
  transform: rotate(-8deg);
}

.event-scene__wash--red {
  top: 13%;
  left: -19%;
  background:
    radial-gradient(ellipse at 55% 50%, rgb(165 28 36 / 0.19), transparent 56%),
    radial-gradient(ellipse at 38% 42%, rgb(217 127 124 / 0.18), transparent 48%);
}

.event-scene__wash--jade {
  right: -22%;
  bottom: 4%;
  background: radial-gradient(ellipse at 50%, rgb(216 170 157 / 0.13), transparent 58%);
}

.event-card {
  position: relative;
  z-index: 3;
  display: grid;
  grid-template-columns: auto 1fr;
  width: min(45rem, 62vw);
  min-height: 35rem;
  padding: clamp(2rem, 5vw, 5rem);
  border: 1px solid rgb(167 128 74 / 0.5);
  background: rgb(255 250 240 / 0.76);
  box-shadow: 0 2.5rem 7rem rgb(81 39 34 / 0.12);
  clip-path: polygon(0 0, calc(100% - 2.3rem) 0, 100% 2.3rem, 100% 100%, 2.3rem 100%, 0 calc(100% - 2.3rem));
  column-gap: clamp(1.4rem, 3.8vw, 3.6rem);
}

.event-card::before,
.event-card::after {
  position: absolute;
  width: 4rem;
  height: 4rem;
  border-color: var(--bronze);
  content: "";
}

.event-card::before {
  top: 1rem;
  right: 1rem;
  border-top: 1px solid;
  border-right: 1px solid;
}

.event-card::after {
  bottom: 1rem;
  left: 1rem;
  border-bottom: 1px solid;
  border-left: 1px solid;
}

.event-card--right {
  color: var(--ink);
  background: rgb(255 248 236 / 0.94);
  box-shadow: 0 2.5rem 8rem rgb(3 20 17 / 0.35);
}

.event-card__step {
  display: grid;
  align-content: start;
  justify-items: center;
  gap: 1rem;
}

.event-card__step span {
  color: var(--lacquer);
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.2em;
}

.event-card__step i {
  width: 1px;
  height: 9rem;
  background: linear-gradient(var(--lacquer), transparent);
}

.event-card__content {
  align-self: center;
}

.event-card h2 {
  margin: 0.4rem 0 0.25rem;
  color: var(--lacquer);
  font-family: var(--script);
  font-size: clamp(4.4rem, 9vw, 7.6rem);
  font-style: normal;
  font-weight: 400;
  letter-spacing: 0.01em;
  line-height: 1;
}

.event-card time {
  display: block;
  margin-bottom: clamp(2.8rem, 5vh, 4rem);
  color: var(--ink);
  font-family: var(--display);
  font-size: clamp(1.45rem, 3vw, 2.2rem);
}

.event-card address {
  display: grid;
  gap: 0.38rem;
  font-style: normal;
}

.event-card address strong {
  margin-bottom: 0.25rem;
  font-family: var(--display);
  font-size: clamp(1.5rem, 2.4vw, 2rem);
  font-weight: 500;
}

.event-card address span {
  color: var(--ink-soft);
  font-size: 0.84rem;
  letter-spacing: 0.07em;
  line-height: 1.55;
  text-transform: uppercase;
}

.map-link {
  display: inline-flex;
  align-items: center;
  gap: 0.65rem;
  margin-top: 2.3rem;
  color: var(--lacquer);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-decoration: none;
  text-transform: uppercase;
}

.map-link span {
  background-image: linear-gradient(currentColor, currentColor);
  background-position: 0 100%;
  background-repeat: no-repeat;
  background-size: 0 1px;
  transition: background-size 240ms ease;
}

.map-link:hover span {
  background-size: 100% 1px;
}

.map-link svg {
  width: 1rem;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.4;
  transition: transform 240ms ease;
}

.map-link:hover svg {
  transform: translate(0.2rem, -0.2rem);
}

.event-scene__number {
  position: absolute;
  z-index: -1;
  top: 50%;
  right: 3vw;
  color: transparent;
  font-family: var(--display);
  font-size: clamp(15rem, 36vw, 38rem);
  font-weight: 500;
  letter-spacing: -0.1em;
  line-height: 0.7;
  -webkit-text-stroke: 1px rgb(165 28 36 / 0.12);
  transform: translateY(-48%);
}

.event-scene__number--right {
  right: auto;
  left: -3vw;
  -webkit-text-stroke-color: rgb(245 222 209 / 0.12);
}

.cloud--two {
  right: 7%;
  bottom: 18%;
  opacity: 0.52;
  will-change: transform;
}

.travel-scene {
  min-height: 235svh;
  color: var(--rice-light);
  background:
    radial-gradient(circle at 75% 30%, rgb(190 58 73 / 0.48), transparent 25rem),
    radial-gradient(circle at 18% 76%, rgb(73 10 19 / 0.76), transparent 31rem),
    linear-gradient(145deg, #9c2330, #64131a 58%, #3e0b11);
}

.travel-scene::before {
  position: absolute;
  z-index: 1;
  inset: 0;
  background: linear-gradient(
    180deg,
    #8e1e2b 0%,
    transparent 11%,
    transparent 87%,
    var(--jade) 100%
  );
  content: "";
  pointer-events: none;
}

.travel-scene::after {
  position: absolute;
  inset: 0;
  opacity: 0.11;
  background:
    linear-gradient(90deg, transparent 49.9%, var(--rice-light) 50%, transparent 50.1%),
    linear-gradient(0deg, transparent 49.9%, var(--rice-light) 50%, transparent 50.1%);
  background-size: 8rem 8rem;
  content: "";
  mask-image: linear-gradient(transparent, black 25%, black 75%, transparent);
}

.travel-scene__sticky {
  position: sticky;
  z-index: 2;
  top: 0;
  display: grid;
  min-height: 100svh;
  align-content: center;
  justify-items: center;
  overflow: hidden;
  padding: 6rem 5vw 3rem;
}

.travel-scene__heading {
  position: relative;
  z-index: 3;
  text-align: center;
}

.travel-scene__heading .eyebrow {
  color: var(--petal);
}

.travel-scene__heading h2 {
  margin: 0.55rem 0 0;
  font-family: var(--script);
  font-size: clamp(3.6rem, 9vw, 7.4rem);
  font-style: normal;
  font-weight: 400;
  letter-spacing: 0.01em;
  line-height: 1.05;
}

.travel-map {
  --marker-x: 7.4%;
  --marker-y: 21.9%;
  position: relative;
  width: min(70rem, 89vw);
  aspect-ratio: 1000 / 420;
  margin-top: clamp(1.8rem, 4vh, 3.5rem);
}

.travel-map__line {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
}

.travel-map__line path {
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}

.travel-map__track {
  stroke: rgb(255 247 237 / 0.2);
  stroke-width: 2;
  stroke-dasharray: 3 8;
}

.travel-map__draw {
  stroke: var(--petal);
  stroke-width: 2.5;
}

.travel-stop {
  position: absolute;
  z-index: 3;
  display: grid;
  gap: 0.28rem;
  width: 12rem;
  transform: translate(-0.5rem, -50%);
}

.travel-stop i {
  position: absolute;
  top: 50%;
  left: -1.5rem;
  width: 0.76rem;
  aspect-ratio: 1;
  border: 2px solid var(--petal);
  background: var(--wine);
  transform: translateY(-50%) rotate(45deg);
}

.travel-stop span {
  font-family: var(--display);
  font-size: clamp(1rem, 2vw, 1.45rem);
  font-weight: 500;
  line-height: 1.1;
}

.travel-stop small {
  color: var(--petal);
  font-size: 0.6rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.travel-stop--start {
  top: 21.9%;
  left: 7.4%;
}

.travel-stop--end {
  top: 79.3%;
  left: 93.3%;
  text-align: right;
  transform: translate(calc(-100% + 0.5rem), -50%);
}

.travel-stop--end i {
  right: -1.5rem;
  left: auto;
}

.travel-marker {
  position: absolute;
  z-index: 4;
  top: var(--marker-y);
  left: var(--marker-x);
  display: grid;
  width: clamp(2.8rem, 5vw, 4.25rem);
  aspect-ratio: 1;
  border: 1px solid var(--petal);
  border-radius: 50%;
  place-items: center;
  color: var(--lacquer);
  background: var(--rice-light);
  box-shadow: 0 0.75rem 2.5rem rgb(30 3 8 / 0.3);
  transform: translate(-50%, -50%) rotate(calc(var(--trip) * 360deg));
  will-change: top, left, transform;
}

.travel-marker::after {
  position: absolute;
  inset: -0.35rem;
  border: 1px dotted rgb(255 240 225 / 0.72);
  border-radius: 50%;
  content: "";
}

.travel-marker span {
  font-family: var(--chinese);
  font-size: clamp(1.35rem, 2.5vw, 2.05rem);
  line-height: 1;
}

.travel-scene__note {
  margin: clamp(1.5rem, 4vh, 3rem) 0 0;
  color: rgb(255 244 233 / 0.76);
  font-family: var(--display);
  font-size: clamp(1.05rem, 2vw, 1.4rem);
  font-style: italic;
  text-align: center;
}

.botanical--reception {
  display: none;
}

.finale {
  display: grid;
  min-height: 112svh;
  overflow: hidden;
  place-items: center;
  background-image:
    radial-gradient(circle at 50% 50%, rgb(255 253 247 / 0.9), transparent 34rem),
    linear-gradient(rgb(249 240 243 / 0.34), rgb(241 230 234 / 0.42)),
    var(--pastel-art);
  background-position: center;
  background-size: cover;
}

.finale::before,
.finale::after {
  position: absolute;
  width: 22rem;
  aspect-ratio: 1;
  border-radius: 50%;
  content: "";
  filter: blur(1px);
}

.finale::before {
  top: -10rem;
  right: -7rem;
  background: radial-gradient(circle, rgb(217 127 124 / 0.3), transparent 68%);
}

.finale::after {
  bottom: -11rem;
  left: -7rem;
  background: radial-gradient(circle, rgb(165 28 36 / 0.15), transparent 68%);
}

.finale__ring {
  position: absolute;
  top: 50%;
  left: 50%;
  aspect-ratio: 1;
  border: 1px solid rgb(167 128 74 / 0.22);
  border-radius: 50%;
  transform: translate(-50%, -50%);
}

.finale__ring--one {
  width: min(78vw, 62rem);
}

.finale__ring--two {
  width: min(63vw, 49rem);
  border-style: dashed;
  transform: translate(-50%, -50%) rotate(calc(var(--scroll) * 40deg));
}

.finale__card {
  position: relative;
  z-index: 2;
  display: grid;
  width: min(44rem, 88vw);
  justify-items: center;
  padding: clamp(3rem, 7vw, 6rem);
  border: 1px solid rgb(167 128 74 / 0.54);
  background: rgb(255 250 240 / 0.7);
  text-align: center;
  box-shadow: 0 3rem 8rem rgb(82 47 38 / 0.1);
  backdrop-filter: blur(8px);
}

.finale__card::before,
.finale__card::after {
  position: absolute;
  width: 4.5rem;
  height: 4.5rem;
  border-color: var(--bronze);
  content: "";
}

.finale__card::before {
  top: 1.1rem;
  left: 1.1rem;
  border-top: 1px solid;
  border-left: 1px solid;
}

.finale__card::after {
  right: 1.1rem;
  bottom: 1.1rem;
  border-right: 1px solid;
  border-bottom: 1px solid;
}

.archive-stamp {
  position: relative;
  width: clamp(5rem, 9vw, 7rem);
  aspect-ratio: 640 / 866;
  margin: 1.9rem 0;
  overflow: hidden;
  mix-blend-mode: multiply;
}

.archive-stamp img {
  display: block;
  width: auto;
  max-width: none;
  height: 100%;
  transform: translateX(0);
}

.finale__card h2 {
  margin: 0;
  color: var(--lacquer);
  font-family: var(--script);
  font-size: clamp(2.8rem, 7vw, 5.2rem);
  font-style: normal;
  font-weight: 400;
  letter-spacing: 0.01em;
  line-height: 1.08;
}

.finale__card > p:not(.eyebrow) {
  margin: 1.5rem 0 0;
  color: var(--ink-soft);
  font-family: var(--display);
  font-size: clamp(1.1rem, 2.2vw, 1.45rem);
  font-style: italic;
}

.finale__back {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  margin-top: 2.6rem;
  color: var(--lacquer);
  font-size: 0.66rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-decoration: none;
  text-transform: uppercase;
}

.finale__back i {
  display: grid;
  width: 1.75rem;
  aspect-ratio: 1;
  border: 1px solid rgb(165 28 36 / 0.35);
  border-radius: 50%;
  place-items: center;
  font-style: normal;
  transition:
    color 180ms ease,
    background 180ms ease,
    transform 180ms ease;
}

.finale__back:hover i {
  color: var(--rice-light);
  background: var(--lacquer);
  transform: translateY(-0.2rem);
}

footer {
  position: relative;
  z-index: 2;
  display: flex;
  min-height: 7.5rem;
  align-items: center;
  justify-content: center;
  gap: 1.1rem;
  padding: 2rem;
  color: rgb(255 250 240 / 0.76);
  background: var(--jade);
  font-family: var(--display);
  font-size: clamp(0.85rem, 1.5vw, 1.05rem);
  letter-spacing: 0.08em;
}

footer i {
  color: var(--petal);
  font-family: var(--chinese);
  font-size: 1.3rem;
  font-style: normal;
}

.reveal {
  opacity: 1;
  transform: none;
}

.js .reveal {
  opacity: 0;
  filter: blur(5px);
  transform: translate3d(0, 2rem, 0) scale(0.988);
  transition:
    opacity 1s ease,
    filter 900ms ease,
    transform 1.25s cubic-bezier(0.16, 1, 0.3, 1);
}

.js .reveal.is-visible {
  opacity: 1;
  filter: blur(0);
  transform: translate3d(0, 0, 0) scale(1);
}

@keyframes petal-flight {
  0% {
    opacity: 0;
    transform: translate3d(0, -24vh, 0) rotate(0deg) rotateX(68deg);
  }

  14% {
    opacity: var(--petal-opacity, 0.34);
  }

  43% {
    opacity: var(--petal-opacity, 0.34);
    transform:
      translate3d(var(--petal-mid-x), 16vh, 0)
      rotate(var(--petal-mid-rotate))
      rotateX(8deg);
  }

  72% {
    transform:
      translate3d(var(--petal-end-x), 42vh, 0)
      rotate(var(--petal-end-rotate))
      rotateY(62deg);
  }

  87% {
    opacity: var(--petal-opacity, 0.34);
  }

  100% {
    opacity: 0;
    transform:
      translate3d(var(--petal-exit-x), 72vh, 0)
      rotate(var(--petal-exit-rotate))
      rotateX(76deg);
  }
}

@keyframes flora-wind-top {
  0% {
    transform: translate3d(-9px, 4px, 0) rotate(-0.65deg) scale(1.012);
  }

  55% {
    transform: translate3d(5px, -4px, 0) rotate(0.28deg) scale(1.018);
  }

  100% {
    transform: translate3d(14px, 6px, 0) rotate(0.82deg) scale(1.014);
  }
}

@keyframes flora-wind-bottom {
  0% {
    transform: translate3d(11px, 5px, 0) rotate(0.6deg) scale(1.014);
  }

  52% {
    transform: translate3d(-5px, -4px, 0) rotate(-0.25deg) scale(1.02);
  }

  100% {
    transform: translate3d(-15px, 6px, 0) rotate(-0.85deg) scale(1.015);
  }
}

@keyframes flora-wind-reception {
  0% {
    transform: translate3d(12px, 5px, 0) rotate(0.55deg) scale(1.018);
  }

  52% {
    transform: translate3d(-6px, -6px, 0) rotate(-0.28deg) scale(1.026);
  }

  100% {
    transform: translate3d(-18px, 8px, 0) rotate(-0.95deg) scale(1.02);
  }
}

@keyframes orbit {
  to {
    transform: rotate(360deg);
  }
}

@keyframes cue {
  0% {
    transform: translateY(0);
  }
  60%,
  100% {
    transform: translateY(200%);
  }
}

@media (max-width: 900px) {
  .scroll-meter {
    left: 1rem;
  }

  .chapter-nav {
    right: 0.8rem;
  }

  .botanical--hero {
    top: -1rem;
    right: -11rem;
    width: 38rem;
    opacity: 0.8;
  }

  .botanical--lower {
    bottom: -8rem;
    left: -8rem;
    width: 29rem;
    opacity: 0.84;
  }

  .cloud--one {
    top: 26%;
    left: 4%;
  }

  .event-card {
    width: min(42rem, 78vw);
  }

  .event-scene__number {
    right: -8vw;
  }

  .botanical--reception {
    right: -9rem;
    width: 35rem;
  }
}

@media (max-width: 680px) {
  .scroll-meter,
  .chapter-nav {
    display: none;
  }

  .hero__art img {
    object-position: center;
  }

  .botanical--hero,
  .botanical--lower {
    display: none;
  }

  .frame--outer {
    inset: 0.55rem;
  }

  .frame--inner {
    inset: 0.85rem;
  }

  .hero__content {
    width: 91vw;
    padding-top: 5.5rem;
  }

  .double-happiness {
    width: 6.2rem;
    margin-bottom: 3.8rem;
  }

  .double-happiness__knot {
    height: 2.35rem;
  }

  .double-happiness__knot i:nth-child(2),
  .double-happiness__knot i:nth-child(3) {
    height: 1.55rem;
  }

  .couple {
    width: 100%;
    font-size: clamp(3.4rem, 16.5vw, 6.2rem);
    letter-spacing: 0.01em;
    line-height: 0.92;
  }

  .couple span {
    white-space: normal;
  }

  .hero__invitation {
    width: 84%;
    font-size: 0.84rem;
    letter-spacing: 0.08em;
  }

  .scroll-cue {
    margin-top: 2rem;
  }

  .scroll-cue i {
    height: 1.8rem;
  }

  .hero__media-actions {
    width: 100%;
    gap: 0.6rem;
    margin-top: 1.1rem;
  }

  .media-btn {
    flex: 1 1 9.5rem;
    min-height: 2.55rem;
    padding-inline: 0.9rem;
  }

  .botanical--hero {
    top: 0;
    right: -14.5rem;
    width: 35rem;
    opacity: 0.62;
  }

  .botanical--lower {
    bottom: -7rem;
    left: -10rem;
    width: 27rem;
    opacity: 0.7;
  }

  .cloud--one {
    display: none;
  }

  .route {
    opacity: 0.56;
  }

  .date-scene {
    min-height: 108svh;
    background-position: center;
  }

  .date-lockup__main {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto;
    margin-top: 2.2rem;
    row-gap: 0.35rem;
  }

  .date-lockup__day {
    grid-row: auto;
    font-size: clamp(8.5rem, 42vw, 12rem);
    line-height: 0.68;
  }

  .date-lockup__rule {
    display: none;
  }

  .date-lockup__month,
  .date-lockup__year {
    justify-self: center;
  }

  .date-lockup__month {
    font-size: clamp(3.4rem, 17vw, 5.4rem);
  }

  .date-lockup__year {
    font-size: clamp(2rem, 10vw, 3.1rem);
  }

  .date-lockup__place {
    margin-top: 2.5rem;
  }

  .date-seal {
    right: 1.5rem;
    bottom: 7%;
    width: 4.3rem;
    opacity: 0.62;
  }

  .date-seal span {
    font-size: 1.7rem;
  }

  .event-scene {
    min-height: 118svh;
    padding: 9vh 1.15rem;
  }

  .event-card {
    grid-template-columns: 1fr;
    width: 100%;
    min-height: 0;
    padding: 3rem 2.1rem 3.4rem;
    clip-path: polygon(0 0, calc(100% - 1.6rem) 0, 100% 1.6rem, 100% 100%, 1.6rem 100%, 0 calc(100% - 1.6rem));
  }

  .event-card__step {
    display: flex;
    align-items: center;
    justify-content: start;
    gap: 0.7rem;
    margin-bottom: 1.6rem;
  }

  .event-card__step i {
    width: 4rem;
    height: 1px;
    background: linear-gradient(90deg, var(--lacquer), transparent);
  }

  .event-card h2 {
    font-size: clamp(4.3rem, 20vw, 5.8rem);
  }

  .event-card time {
    margin-bottom: 2.4rem;
  }

  .event-card address span {
    font-size: 0.72rem;
  }

  .event-scene__number {
    top: 13%;
    right: -15vw;
    font-size: 70vw;
    transform: none;
  }

  .event-scene__number--right {
    right: auto;
    left: -19vw;
  }

  .cloud--two {
    display: none;
  }

  .travel-scene {
    min-height: 205svh;
  }

  .travel-scene__sticky {
    justify-content: stretch;
    padding: 4.5rem 1rem 2.5rem;
  }

  .travel-scene__heading h2 {
    font-size: clamp(3.5rem, 17vw, 5.2rem);
  }

  .travel-map {
    width: 100%;
    margin-top: 3.5rem;
    margin-bottom: 3.8rem;
  }

  .travel-stop {
    width: 7.6rem;
  }

  .travel-stop span {
    font-size: 0.88rem;
  }

  .travel-stop small {
    font-size: 0.52rem;
  }

  .travel-stop i {
    left: -0.8rem;
    width: 0.55rem;
  }

  .travel-stop--start {
    top: 18%;
    left: 7.4%;
    padding-bottom: 0;
    transform: translate(-0.2rem, -110%);
  }

  .travel-stop--start i {
    top: auto;
    bottom: -0.55rem;
    left: 0;
    transform: translateY(50%) rotate(45deg);
  }

  .travel-stop--end {
    top: auto;
    bottom: -3.35rem;
    left: auto;
    right: 0;
    width: auto;
    max-width: 48%;
    padding-top: 0;
    text-align: right;
    transform: none;
  }

  .travel-stop--end i {
    display: none;
  }

  .travel-map::after {
    position: absolute;
    top: 79.3%;
    left: 93.3%;
    width: 0.55rem;
    aspect-ratio: 1;
    border: 2px solid var(--petal);
    background: var(--wine);
    content: "";
    transform: translate(-50%, -50%) rotate(45deg);
  }

  .travel-marker {
    width: 2.2rem;
  }

  .travel-marker span {
    font-size: 1.05rem;
  }

  .travel-scene__note {
    width: 78%;
    margin-top: 2rem;
  }

  .botanical--reception {
    display: none;
  }

  .reception__art {
    width: 100%;
    opacity: 0.46;
    -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 25%, #000 100%);
    mask-image: linear-gradient(180deg, transparent 0%, #000 25%, #000 100%);
  }

  .reception__art img {
    object-position: right bottom;
  }

  .finale__ring--one {
    width: 125vw;
  }

  .finale__ring--two {
    width: 101vw;
  }

  .finale__card {
    width: calc(100vw - 2rem);
    padding: 3.5rem 1.7rem;
  }

  .finale__card h2 {
    font-size: clamp(3rem, 13vw, 4.5rem);
  }

  .js .reveal {
    filter: none;
    transform: translate3d(0, 1.35rem, 0) scale(0.992);
  }

  footer {
    flex-wrap: wrap;
    gap: 0.7rem;
    text-align: center;
  }
}

@media (max-height: 720px) and (min-width: 681px) {
  .hero__content {
    padding-top: 4.2rem;
    padding-bottom: 3rem;
  }

  .double-happiness {
    width: 5.5rem;
    margin-bottom: 3.2rem;
  }

  .couple {
    font-size: clamp(3.2rem, 7.8vw, 6.4rem);
  }

  .hero__invitation {
    margin-top: 1.7rem;
  }

  .scroll-cue {
    margin-top: 1.5rem;
  }

  .travel-scene__sticky {
    padding-top: 3.5rem;
  }
}

