:root{
  --preview-content:min(1080px,calc(100% - var(--safe-left) - var(--safe-right) - 32px));
  --preview-card:rgba(255,251,246,.76);
  --preview-line:rgba(167,112,78,.24);
  --preview-shadow:0 22px 55px rgba(91,65,48,.09);
}

.topbar nav>a:not(.rsvp-preview){text-decoration:none;white-space:nowrap}
.topbar nav>a:not(.rsvp-preview):hover{text-decoration:underline;text-underline-offset:6px}
.rsvp-preview{text-decoration:none}

.preview-section{position:relative;isolation:isolate;overflow:hidden}
.preview-section[data-reveal]{opacity:1;transform:none}
.preview-inner{width:var(--preview-content);margin:0 auto;padding:clamp(82px,10vw,132px) 0;text-align:center}
.preview-title{margin:0;color:var(--ink);font:400 clamp(42px,5.3vw,72px)/1.04 var(--display);letter-spacing:-.035em}
.preview-copy{max-width:660px;margin:26px auto 0;color:var(--ink-soft);font:400 clamp(18px,2vw,23px)/1.55 var(--editorial)}
.preview-section .eyebrow{margin-bottom:20px}

.details{border-top:1px solid rgba(120,97,77,.06)}
.details-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,2.6vw,32px);width:var(--preview-content);margin:48px auto 0}
.detail-card{position:relative;min-height:245px;padding:44px 28px 38px;border:1px solid var(--preview-line);border-radius:24px;background:linear-gradient(180deg,rgba(255,255,255,.54),rgba(255,255,255,.18));box-shadow:0 18px 46px rgba(91,65,48,.06);display:grid;align-content:center;justify-items:center}
.detail-card::before{content:"";width:34px;height:1px;margin-bottom:28px;background:var(--terracotta)}
.detail-card h3{margin:0;font:500 clamp(27px,2.8vw,36px)/1.08 var(--editorial);color:var(--ink)}
.detail-card p{margin:13px 0 0;font:400 18px/1.4 var(--editorial);color:var(--ink-soft)}
.detail-card .detail-time{margin-top:28px;font-family:var(--ui);font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--olive)}

.palette{background-image:linear-gradient(rgba(255,255,255,.08),rgba(255,255,255,.02)),url('assets/paper-texture.webp')}
.swatches{display:flex;justify-content:center;align-items:center;gap:clamp(13px,2.2vw,24px);margin:48px auto 0;padding:0;max-width:720px}
.swatch{display:block;width:clamp(62px,8vw,92px);aspect-ratio:1;border-radius:50%;border:7px solid rgba(255,255,255,.55);box-shadow:0 8px 22px rgba(84,63,48,.12),inset 0 0 0 1px rgba(92,70,52,.08)}
.swatch-1{background:#E3AC8B}
.swatch-2{background:#EDC4A8}
.swatch-3{background:#F2DCC4}
.swatch-4{background:#A7A687}
.swatch-5{background:#817C5A}

.location{display:grid;place-items:center;min-height:clamp(480px,62vw,680px);padding:clamp(76px,9vw,116px) var(--safe-right) clamp(76px,9vw,116px) var(--safe-left);background:
  radial-gradient(circle at 74% 24%,rgba(227,172,139,.34),transparent 26rem),
  radial-gradient(circle at 18% 72%,rgba(129,124,90,.20),transparent 24rem),
  linear-gradient(145deg,#e9d3c2 0%,#f5e8dc 44%,#d9d7c0 100%)}
.location::before{content:"";position:absolute;inset:0;opacity:.28;background:url('assets/paper-texture.webp') repeat;background-size:512px 512px;mix-blend-mode:multiply;pointer-events:none}
.location-card{position:relative;z-index:2;width:min(700px,100%);padding:clamp(52px,7vw,78px) clamp(34px,6vw,72px);text-align:center;border:1px solid rgba(255,255,255,.64);border-radius:32px;background:rgba(255,248,241,.48);box-shadow:0 28px 70px rgba(80,60,47,.13);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.location-card .eyebrow{color:#625f50}

.rsvp .preview-inner{max-width:760px}
.rsvp-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:42px auto 0;max-width:620px}
.rsvp-btn{min-height:54px;padding:13px 22px;border:1px solid var(--terracotta);border-radius:999px;background:transparent;color:var(--terracotta);font:500 15px/1.2 var(--editorial);letter-spacing:.035em;cursor:pointer;transition:background-color .22s ease,color .22s ease,transform .22s ease,box-shadow .22s ease}
.rsvp-btn:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(189,109,69,.12)}
.rsvp-btn.is-active,.rsvp-btn[aria-pressed="true"]{background:var(--terracotta);color:#fff}
.rsvp-status{min-height:28px;margin:22px auto 0;color:var(--olive);font:500 18px/1.45 var(--editorial)}

.final{min-height:clamp(500px,64vw,720px);display:grid;place-items:center;text-align:center;background-image:
  radial-gradient(circle at 50% 45%,rgba(255,255,255,.68),transparent 29rem),
  linear-gradient(rgba(255,255,255,.08),rgba(255,255,255,.02)),
  url('assets/paper-texture.webp')}
.final-inner{width:var(--preview-content);padding:clamp(90px,12vw,150px) 0}
.final h2{margin:0;font-family:var(--display);font-size:clamp(68px,9vw,128px);font-weight:400;line-height:.82;letter-spacing:-.055em}
.final h2 span{display:block}
.final h2 em{display:block;margin:.18em 0 .15em;color:var(--terracotta);font-size:.46em;font-weight:400;line-height:1;font-style:italic}
.final .date{margin-top:32px}

.motion-ready .preview-section[data-reveal]{opacity:0;transform:translate3d(0,20px,0)}
.motion-ready .preview-section[data-reveal].is-visible{opacity:1;transform:none;transition:opacity .8s ease,transform .8s var(--ease)}

.motion-ready [data-reveal="materialize"] .detail-card{opacity:0;transform:translateY(22px);filter:blur(8px)}
.motion-ready [data-reveal="materialize"].is-visible .detail-card{opacity:1;transform:none;filter:none;transition:opacity .72s ease,transform .72s var(--ease),filter .72s ease}
.motion-ready [data-reveal="materialize"].is-visible .detail-card:nth-child(2){transition-delay:90ms}
.motion-ready [data-reveal="materialize"].is-visible .detail-card:nth-child(3){transition-delay:180ms}

[data-reveal="curtain"]::after{content:"";position:absolute;z-index:10;inset:0;background:var(--paper);transform-origin:top;transform:scaleY(0);pointer-events:none}
.motion-ready [data-reveal="curtain"]::after{transform:scaleY(1)}
.motion-ready [data-reveal="curtain"].is-visible::after{transform:scaleY(0);transition:transform .9s var(--ease)}

.motion-ready [data-reveal="glass"] .location-card{opacity:0;transform:translateY(18px) scale(.985);-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}
.motion-ready [data-reveal="glass"].is-visible .location-card{opacity:1;transform:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:opacity .78s ease,transform .78s var(--ease),backdrop-filter .78s ease}

[data-type-on] span{display:inline-block}
.motion-ready .is-visible [data-type-on] span{animation:typeOn .42s both;animation-delay:calc(var(--char-index) * 22ms)}
@keyframes typeOn{from{opacity:0;transform:translateY(.22em);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}

@media (max-width:900px){
  .topbar nav>a:not(.rsvp-preview){display:none}
  .preview-inner{padding:76px 0}
  .details-grid{gap:16px;margin-top:38px}
  .detail-card{min-height:220px;padding:34px 22px}
}

@media (max-width:640px){
  :root{--preview-content:min(100% - var(--safe-left) - var(--safe-right),560px)}
  .preview-inner{padding:68px 0}
  .preview-title{font-size:clamp(39px,12vw,56px)}
  .preview-copy{font-size:19px;line-height:1.48}
  .details-grid{grid-template-columns:1fr;width:var(--preview-content);gap:14px}
  .detail-card{min-height:180px;padding:30px 22px}
  .swatches{gap:9px;margin-top:36px}
  .swatch{width:clamp(49px,14vw,68px);border-width:5px}
  .location{min-height:520px;padding:68px var(--safe-right) 68px var(--safe-left)}
  .location-card{border-radius:24px;padding:52px 24px}
  .rsvp-options{grid-template-columns:1fr;gap:12px;margin-top:34px}
  .rsvp-btn{width:100%;min-height:50px}
  .final{min-height:600px}
  .final h2{font-size:clamp(64px,20vw,88px)}
  .final .date{font-size:clamp(22px,7vw,28px);letter-spacing:.10em}
}

@media (max-width:360px){
  .preview-inner{padding:58px 0}
  .preview-title{font-size:38px}
  .preview-copy{font-size:18px}
  .detail-card h3{font-size:28px}
  .swatches{gap:6px}
  .swatch{width:52px;border-width:4px}
  .rsvp-btn{min-height:44px;padding-inline:16px}
  .final h2{font-size:64px}
}

@media (prefers-reduced-motion:reduce){
  .preview-section[data-reveal],
  .motion-ready .preview-section[data-reveal],
  .motion-ready .preview-section[data-reveal].is-visible,
  .motion-ready [data-reveal="materialize"] .detail-card,
  .motion-ready [data-reveal="materialize"].is-visible .detail-card,
  .motion-ready [data-reveal="glass"] .location-card,
  .motion-ready [data-reveal="glass"].is-visible .location-card{
    opacity:1!important;transform:none!important;filter:none!important;transition:none!important;animation:none!important
  }
  [data-reveal="curtain"]::after,
  .motion-ready [data-reveal="curtain"]::after,
  .motion-ready [data-reveal="curtain"].is-visible::after{display:none!important;transition:none!important}
  [data-type-on] span{animation:none!important}
}
