:root{--paper:#faf6ed;--ink:#64543d;--red:#a23633;--gold:#b7a170;--muted:#796a55;--serif:'Cormorant Garamond',Georgia,serif;--sans:'Manrope',Arial,sans-serif;--ease:cubic-bezier(.22,1,.36,1)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--paper) url(assets/paper-grain.svg);font:16px/1.65 var(--sans);overflow-x:clip}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0}a{color:inherit;text-underline-offset:5px}button:focus-visible,a:focus-visible{outline:2px solid var(--red);outline-offset:5px}[hidden]{display:none!important}h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}

.welcome{min-height:100svh;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 20px;background:var(--paper) url(assets/paper-grain.svg)}.eyebrow{font:500 12px/1.7 var(--sans);letter-spacing:.15em;margin:0 0 16px}
.envelope-stage{position:relative;width:min(710px,94vw);height:clamp(260px,38vw,390px);margin:0 auto;z-index:2}.envelope-canvas{position:fixed;inset:0;width:100vw;height:100svh;pointer-events:none}.seal{position:absolute;background:transparent;color:transparent;z-index:4;padding:0;border-radius:0}.seal:focus-visible{outline-offset:-5px}.loading .seal{visibility:hidden}.short-rule{display:block;width:42px;height:1px;background:var(--gold);margin:auto}.opening .seal{visibility:hidden}
.hero{padding:40px clamp(14px,4.5vw,72px) 38px;background:transparent}.invitation-paper{position:relative;isolation:isolate;overflow:hidden;width:100%;max-width:1170px;aspect-ratio:1170 / 850;container-type:inline-size;margin:auto;background:linear-gradient(#faf6ed88,#faf6ed88),url(assets/cotton-cardstock.png);background-size:auto,420px 420px;transform:perspective(1800px) rotateX(var(--card-rx,0deg)) rotateY(var(--card-ry,0deg));transform-origin:50% 45%;box-shadow:0 1px 1px #fffdf5 inset,1px 2px 0 #ded3c0,var(--shadow-x,0px) var(--shadow-y,5px) 8px #58482d12,var(--cast-x,0px) var(--cast-y,20px) 38px -12px #58482d28}.invitation-paper::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:url(assets/cotton-cardstock.png);background-size:420px 420px;opacity:.22;mix-blend-mode:multiply}.frame{position:absolute;pointer-events:none;z-index:5;border:1px solid}.frame-red{inset:1.36752cqw;border-color:var(--red);opacity:.78}.frame-gold{inset:1.96581cqw;border-color:var(--gold);box-shadow:0 0.08547cqw 0 #fffdf570 inset}
.invitation-copy{position:relative;z-index:3;text-align:center;width:48%;left:-1.02564cqw;padding:9.40171cqw 2.05128cqw 0;pointer-events:none}.double-happiness{font:3.67521cqw/1.3 'Noto Serif TC',serif;color:var(--red);display:block;margin-bottom:2.64957cqw}.invitation-copy .eyebrow{font-size:0.94017cqw;letter-spacing:.12em;margin-bottom:2.13675cqw}.invitation-copy h2{font:400 5.04274cqw/1.07 var(--serif);letter-spacing:-.02em;margin:0;outline:none}.invitation-copy h2 span,.invitation-copy h2 em{display:block}.invitation-copy h2 em{font-size:2.73504cqw;margin:0.85470cqw 0;color:var(--red)}.chinese{font:1.79487cqw/1.8 'Noto Serif TC',serif;letter-spacing:.055em;margin:2.13675cqw 0 1.53846cqw}.chinese span{display:inline-block;width:1.88034cqw}.invitation-line{font:italic 1.79487cqw/1.4 var(--serif);margin:2.05128cqw 0 3.07692cqw}.date{display:flex;flex-direction:column;gap:0.94017cqw}.date span{font:500 1.02564cqw/1.8 var(--sans);letter-spacing:.09em}.date strong{font:400 2.99145cqw/1.2 var(--serif)}
.painting{position:absolute;left:32%;right:2.13675cqw;top:2.13675cqw;bottom:4.18803cqw;overflow:hidden;z-index:1;pointer-events:none;mask-image:linear-gradient(to right,transparent 0%,#0005 13%,#000c 25%,#000 35%,#000 86%,#000c 92%,#0005 97%,transparent 100%)}.painting img{position:absolute;width:106%;max-width:none;height:auto;left:50%;bottom:1.19658cqw;transform:translateX(-50%);display:block}
.celebration{max-width:760px;margin:auto;padding:100px 32px 64px;text-align:center;scroll-margin-top:30px}
.card-ceremony{margin-top:1.53846cqw}.card-ceremony p{margin:0}.ceremony-time{font:400 1.02564cqw/1.5 var(--serif);letter-spacing:.09em;text-transform:uppercase}.card-ceremony .ceremony-room{font:italic 1.62393cqw/1.4 var(--serif);margin-top:0.42735cqw}.card-ceremony .reception-note{font:italic 1.53846cqw/1.4 var(--serif);margin-top:1.36752cqw}
.venue{padding-top:0}.venue h3{font:400 28px/1.25 var(--serif);margin:0 0 14px}.venue address{font-size:14px;font-style:normal;line-height:1.9;color:var(--muted)}
.venue-actions{display:flex;flex-direction:column;align-items:center;gap:2px;margin-top:22px}.venue-actions a{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:44px;font-size:13px;text-decoration:underline;text-decoration-color:var(--gold);text-underline-offset:5px;text-decoration-thickness:1px}.venue-actions a:hover{text-decoration:underline;text-decoration-color:var(--gold);text-underline-offset:5px}
.timezone{font-size:12px;color:var(--muted);margin:14px 0 0}
footer{text-align:center;padding:45px 24px 55px;background:var(--paper) url(assets/paper-grain.svg)}footer .footer-xi{font:30px 'Noto Serif TC',serif;color:var(--red)}footer p{font:24px var(--serif);margin:18px 0}footer p em{display:block;font-size:34px;margin-top:8px}footer a{display:inline-block;padding:12px;font-size:14px}
body.handoff{overflow:hidden}.handoff #welcome{position:fixed;inset:0;z-index:20}.handoff #invitation{position:relative;z-index:21;pointer-events:none}.handoff .hero{background:transparent}.handoff .invitation-paper{transform-origin:0 0;will-change:transform}.handoff .celebration,.handoff footer{visibility:hidden}
@media(max-width:640px){.welcome{padding:24px 18px}.envelope-stage{height:310px;margin:0}.hero{padding:22px 10px}.celebration{padding:48px 26px 44px}.venue h3{font-size:27px}.venue address{font-size:13px}footer{padding:38px 20px}}
@media(max-height:740px) and (min-width:641px){.welcome{padding:24px 20px}.envelope-stage{height:275px;margin:0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}

@media (prefers-reduced-motion:reduce),(hover:none),(pointer:coarse){.invitation-paper{transform:none}}

.card-details-link{position:absolute;inset:0;z-index:7;cursor:pointer}
.card-details-link:focus-visible{outline-offset:-30px}
.scroll-cue{position:fixed;z-index:25;left:50%;bottom:max(20px,env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;color:var(--ink);background:#faf6ede8;box-shadow:0 2px 8px #64543d1a;text-decoration:none;transition:background .2s,transform .2s}
.scroll-cue:hover{background:var(--paper);transform:translateX(-50%) translateY(2px)}
@media(prefers-reduced-motion:reduce){.scroll-cue{transition:none}.scroll-cue:hover{transform:translateX(-50%)}}
