/* Motion is an enhancement: the complete page remains available without scripts. */
.hero-line{display:block;overflow:hidden;padding-block:.14em;margin-block:-.14em}
.hero-line>span,.hero-line>em{display:inline-block}
.chapters{position:relative;isolation:isolate}
.chapters::before,.chapters::after{content:'';position:absolute;left:13px;top:18px;bottom:30px;width:1px;z-index:-1;pointer-events:none}
.chapters::before{background:var(--line)}
.chapters::after{background:#8a9b74;transform-origin:top;transform:scaleY(var(--chapter-progress,0))}
.chapter-number{align-self:start;position:relative;background:var(--paper);line-height:1.5}
.button>span,.text-link>span,.light-link>span,.header-cta>span{display:inline-block;transition:transform .3s cubic-bezier(.2,.7,.3,1)}
.plan{transition:transform .4s cubic-bezier(.2,.7,.3,1),box-shadow .4s,border-color .4s}
.faq-items details,.planner-details{box-sizing:border-box}
.faq-items summary{transition:color .25s}
.faq-items summary:hover{color:#526c3c}
.hero-photo>img{transform:translate3d(0,var(--hero-shift,0px),0) scale(1.09)}
.floating-invite{transform:translate3d(0,var(--invite-shift,0px),0) rotate(-8deg)}
.photo-caption{letter-spacing:2px}
@media(prefers-reduced-motion:no-preference){
  .hero-copy>.eyebrow{animation:gentle-arrival .85s .08s both}
  .hero-line>span,.hero-line>em{animation:line-arrival 1.15s cubic-bezier(.16,1,.3,1) both}
  .hero-line:nth-child(1)>span{animation-delay:.18s}
  .hero-line:nth-child(2)>span{animation-delay:.36s}
  .hero-line:nth-child(3)>em{animation-delay:.54s}
  .hero-description{animation:gentle-arrival .9s .66s both}
  .hero-actions{animation:gentle-arrival .9s .82s both}
  .hero-note{animation:gentle-arrival .9s .98s both}
  .hero-art{animation:portrait-arrival 1.5s cubic-bezier(.2,.7,.3,1) both}
  .hero-photo>img{animation:portrait-zoom 2.4s cubic-bezier(.18,.65,.3,1) both}
  .floating-invite{animation:invitation-arrival 1.5s .5s cubic-bezier(.16,1,.3,1) both}
  .round-stamp{animation:seal-arrival 1.2s .75s cubic-bezier(.16,1,.3,1) both}
  .photo-caption{animation:gentle-arrival 1s 1.1s both}
  .nav.open{animation:menu-arrival .3s ease-out both}
  #plan-dialog[open]{animation:dialog-arrival .4s cubic-bezier(.16,1,.3,1) both}
  #plan-dialog[open]::backdrop{animation:backdrop-arrival .3s both}
  @keyframes line-arrival{from{opacity:0;transform:translateY(105%) rotate(2deg)}to{opacity:1;transform:translateY(0) rotate(0)}}
  @keyframes gentle-arrival{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}
  @keyframes portrait-arrival{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
  @keyframes portrait-zoom{from{transform:translate3d(0,var(--hero-shift,0px),0) scale(1.17)}to{transform:translate3d(0,var(--hero-shift,0px),0) scale(1.09)}}
  @keyframes invitation-arrival{from{opacity:0;transform:translate3d(0,38px,0) rotate(-14deg)}to{opacity:1;transform:translate3d(0,var(--invite-shift,0px),0) rotate(-8deg)}}
  @keyframes seal-arrival{from{opacity:0;transform:rotate(3deg) scale(.9)}to{opacity:1;transform:rotate(13deg) scale(1)}}
  @keyframes menu-arrival{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
  @keyframes dialog-arrival{from{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
  @keyframes backdrop-arrival{from{opacity:0}to{opacity:1}}
}
@media(hover:hover) and (pointer:fine){
  .button:hover>span,.text-link:hover>span,.light-link:hover>span,.header-cta:hover>span{transform:translate(3px,-3px)}
  .plan:hover{transform:translateY(-6px);box-shadow:0 17px 35px #3444320c;border-color:#7f906b}
}
@media(max-width:800px){.chapters::before,.chapters::after{left:10px}}
@media(max-width:600px){
  .chapters::before,.chapters::after{left:14px}
  .hero-photo>img{transform:scale(1.045)}
  .floating-invite{transform:rotate(-7deg)}
  @keyframes portrait-zoom{from{transform:scale(1.08)}to{transform:scale(1.045)}}
  @keyframes invitation-arrival{from{opacity:0;transform:translateY(22px) rotate(-11deg)}to{opacity:1;transform:rotate(-7deg)}}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .hero-photo>img{transform:none}
  .chapters::after{transform:scaleY(1)}
}
