@font-face{font-family:WeddingElegant;src:url('fonts/wedding-elegant.woff2') format('woff2');font-weight:300 400;font-display:swap}
:root{--serif:WeddingElegant,'Songti SC','SimSun',serif;--brush:var(--serif)}
body{font-weight:400}h2,.theme-name,.names,.signature,.ending-copy>p:last-of-type{font-weight:300}.cover h1{font-weight:400}.theme-name{letter-spacing:.6em;padding-left:.6em}.names{font-size:23px;letter-spacing:.18em}.letter h2{letter-spacing:.16em;line-height:1.9}.letter-body{font-size:17px;line-height:2.5;letter-spacing:.08em}.english-line{font:italic 22px/1.5 var(--western);color:#8d7556;margin:12px 0 24px;letter-spacing:.015em}.chapter-head .english-line{margin-bottom:0}.chapter-sunset .english-line,.ending .english-line{color:#c8b291}.duet-copy .english-line{font:italic 21px/1.5 var(--western);margin:12px 0 24px}.letter-body p.translation{font:italic 18px/1.75 var(--western);color:#8b7965;letter-spacing:.015em;margin:8px 0 30px}.english-kicker{display:block;font:11px/1.8 var(--western);letter-spacing:.24em;margin-top:8px}.vow-ornament{display:flex;align-items:center;gap:14px;margin:22px 0;max-width:170px}.vow-ornament span{height:1px;flex:1;background:linear-gradient(90deg,transparent,#b99d6c)}.vow-ornament span:last-child{transform:rotate(180deg)}.vow-ornament svg{width:22px;height:22px;fill:none;stroke:#d7bd94;stroke-width:.8;animation:ornament-glow 6s ease-in-out infinite}.details dt small{display:block;font:10px/2 var(--western);letter-spacing:.17em;color:#907953;margin-top:6px}.open-link small{display:block;font:9px/1.7 var(--western);letter-spacing:.15em;margin-top:3px}.cover-photo:after{content:'';position:absolute;inset:6px;border:1px solid #e4c99a30;border-radius:inherit;pointer-events:none}.cover-photo{animation:portrait-arrive 2s cubic-bezier(.2,.65,.3,1) both}.cover-copy{animation:copy-arrive 1.6s ease both}.cover .sky:before{content:'';position:absolute;inset:-20%;background:radial-gradient(ellipse at 30% 30%,#dac59813,transparent 45%),radial-gradient(ellipse at 70% 70%,#b2a28a10,transparent 48%);animation:light-drift 28s ease-in-out infinite alternate}.stardust{position:absolute;inset:0;animation:stardust-drift 35s ease-in-out infinite alternate}.star{animation-name:silk-twinkle;animation-duration:var(--duration,7s)}.shooting-star{position:absolute;left:10%;top:16%;height:1px;width:100px;background:linear-gradient(90deg,transparent,#f6e6c8);opacity:0;transform:rotate(27deg);animation:shooting-star 19s ease-in-out infinite;animation-delay:7s}.shooting-star.second{top:32%;left:42%;width:65px;animation-delay:17s;animation-duration:29s}.orbit{animation-duration:36s}.orbit.second{animation-duration:42s}.reveal-ready{transform:translateY(30px);transition:opacity 1.7s ease,transform 1.7s cubic-bezier(.16,.7,.25,1)}.feature:after{content:'';position:absolute;left:12%;right:12%;bottom:-15px;height:1px;background:linear-gradient(90deg,transparent,#b69b6c66,transparent);pointer-events:none}.letter{position:relative}.letter:before{content:'';position:absolute;top:28px;left:calc(50% - 30px);width:60px;height:1px;background:#ad916465}.chapter-indoor{background:radial-gradient(ellipse at 10% 0%,#f1e9de66,transparent 60%),linear-gradient(115deg,#d6c9b7,#e6ddd0 52%,#d6c9b7)}.details{background:radial-gradient(ellipse at center,#fffaf070,transparent 68%)}
@keyframes silk-twinkle{0%,100%{opacity:.15;transform:scale(.8)}45%{opacity:.65;transform:scale(1.15)}65%{opacity:.4;transform:scale(1)}}@keyframes stardust-drift{to{transform:translate3d(8px,-12px,0)}}@keyframes light-drift{to{transform:translate3d(3%,2%,0);opacity:.5}}@keyframes shooting-star{0%,82%{opacity:0;transform:translate3d(-60px,-30px,0) rotate(27deg)}84%{opacity:.65}90%,100%{opacity:0;transform:translate3d(230px,115px,0) rotate(27deg)}}@keyframes ornament-glow{50%{opacity:.45;transform:scale(.88)}}@keyframes portrait-arrive{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes copy-arrive{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.sky:before,.stardust,.shooting-star,.vow-ornament svg{animation-play-state:var(--page-motion,running)}.motion-paused *:before,.motion-paused *:after{animation-play-state:paused!important}.motion-paused .cover-copy,.motion-paused .cover-photo{animation:none;opacity:1;transform:none}
@media(max-width:700px){.cover h1{font-size:clamp(64px,18.5vw,82px)}.theme-name{font-size:17px;letter-spacing:.45em;padding-left:.45em}.names{font-size:20px;letter-spacing:.1em}.vow-ornament{margin:18px auto;max-width:140px}.english-kicker{font-size:9px;letter-spacing:.15em}.cover-copy .eyebrow{letter-spacing:.18em}.letter h2{font-size:28px;letter-spacing:.11em}.letter-body{font-size:16px;line-height:2.4;letter-spacing:.04em}.letter-body p.translation{font-size:17px;margin:8px 0 28px}.english-line{font-size:19px;margin-top:10px}.chapter-head .english-line{font-size:17px;line-height:1.5}.duet-copy .english-line{font-size:17px}.chapter-head{align-items:flex-start}.chapter-number{padding-top:10px}.chapter-head h2{letter-spacing:.06em}.cover-photo{margin-top:28px}.ending .english-line{font-size:20px}.details .venue-row{grid-template-columns:68px 1fr}.open-link small{font-size:8px}.open-link{padding:9px 24px}.feature:after{bottom:-10px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.cover-copy,.cover-photo,.reveal-ready{opacity:1;transform:none}.shooting-star{display:none}}
