/* One fabric system from the hero through the whole invitation. */
#kinetic-cloth{position:fixed;top:0;pointer-events:none;z-index:2}
.cloth-ready .continuous-fabric{opacity:0}
.invitation{background:#f7f0e5}
.opening-art{mask-image:linear-gradient(transparent 30%,#000 48%,#000 84%,transparent 100%);clip-path:inset(0 14%);transform:none!important;z-index:0}
.opening-copy{z-index:3}
.woven-paper,.woven-celebration{position:relative;z-index:3}
.woven-infinity{position:relative;z-index:3}
.opening{overflow:visible}
.monogram-art{width:100%;aspect-ratio:1.05;background:url('assets/couple-monograms.png') left center/200% auto no-repeat;margin:0 auto 20px}
.monogram-art.jm{background-position:right center}
.couple-pair{gap:26px}.couple h2{font-size:28px;letter-spacing:.04em}.couple .weds{margin:12px 0;font-size:22px}.couple h2 > span:not(.glow-word){font-size:9px;letter-spacing:.15em;margin-top:9px}
.host-name{font-size:42px;letter-spacing:-.025em;text-shadow:0 1px #fff9e8}.family .lineage{font-size:20px;line-height:1.5}.family .joining{margin-top:30px}
.rose-particle{filter:blur(.25px);animation-name:rose-drift}
@keyframes rose-drift{0%{transform:translate3d(0,-30px,0) rotate(-15deg) rotateY(0);opacity:0}12%{opacity:.4}45%{transform:translate3d(calc(var(--drift) * -.4),48vh,0) rotate(35deg) rotateY(45deg);opacity:.45}85%{opacity:.4}100%{transform:translate3d(var(--drift),110vh,0) rotate(var(--turn)) rotateY(-35deg);opacity:0}}
.scratch-card{height:310px;background:radial-gradient(ellipse at top,#fffaf1,#efe4d3);box-shadow:inset 0 0 0 8px #faf5e9,inset 0 0 0 9px #c1a576}
#scratch-canvas{transition:opacity 1.5s ease}.scratch-card.revealed #scratch-canvas{opacity:0;pointer-events:none}.scratch-date{padding:35px 15px}.scratch-date strong{font-size:90px}
.reference-confetti{position:fixed;inset:0;pointer-events:none;z-index:80}
.map-error{position:absolute;inset:75px 30px auto;background:#fff9ee;padding:18px;z-index:3;font:12px/1.5 Manrope;border:1px solid #bba17c}
.host-name.is-visible{animation:host-arrive 1.2s both}.monogram-art{transition:transform 1s cubic-bezier(.16,1,.3,1)}.couple.is-visible .monogram-art{animation:monogram-arrive 1.4s both}
@keyframes host-arrive{from{opacity:0;transform:translateY(16px);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}
@keyframes monogram-arrive{from{opacity:0;transform:translateY(20px) scale(.92)}to{opacity:1;transform:none}}
@media(max-width:480px){.host-name{font-size:29px}.family .lineage{font-size:17px}.couple-pair{gap:20px}.couple h2{font-size:22px}.couple h2 > span:not(.glow-word){font-size:8px}.monogram-art{margin-bottom:15px}.scratch-card{height:270px}.scratch-date strong{font-size:76px}}
@media(prefers-reduced-motion:reduce){.host-name.is-visible,.couple.is-visible .monogram-art{animation:none}}
.petal-shower{left:50%;right:auto;width:min(100%,660px);transform:translateX(-50%)}
