:root{--blue:#70bff0;--sky:#bce8ff;--deep:#063c67;--yellow:#ffef55;--paper:#fffdf4;--ink:#102d42;--line:rgba(16,45,66,.17)}
.entry-reset{scroll-behavior:auto!important}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Noto Sans SC",sans-serif;overflow-x:hidden}img{display:block;width:100%}a{color:inherit}.page-progress{position:fixed;z-index:100;inset:0 0 auto;height:4px}.page-progress span{display:block;width:100%;height:100%;background:var(--yellow);transform:scaleX(0);transform-origin:left}.hero{position:relative;height:100svh;min-height:620px;display:grid;place-items:center;overflow:hidden;background:#8acbf3}.hero-blur{position:absolute;inset:-35px;background:url('/assets/photos/hero-cartoon.jpg') center/cover;filter:blur(24px) saturate(.9);opacity:.55;transform:scale(1.08)}.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.12),transparent 20%,transparent 72%,rgba(0,27,47,.4));pointer-events:none}.hero-picture{position:relative;z-index:1;width:auto;height:100%;max-width:min(80vw,900px);object-fit:cover;box-shadow:0 0 55px rgba(5,51,85,.25)}.nav{position:absolute;z-index:3;top:0;left:0;width:100%;padding:28px clamp(22px,5vw,70px);display:flex;align-items:center;justify-content:space-between;color:white}.brand{font:600 25px "Playfair Display";letter-spacing:.08em;text-decoration:none}.brand span{color:var(--yellow)}.nav-rsvp{font-size:11px;font-weight:700;letter-spacing:.13em;text-decoration:none;padding:11px 15px;border:1px solid rgba(255,255,255,.75);border-radius:999px;backdrop-filter:blur(8px)}.hero-scroll{position:absolute;z-index:3;bottom:24px;display:flex;align-items:center;gap:12px;text-decoration:none;color:white;font-size:11px;letter-spacing:.2em}.hero-scroll i{display:grid;place-items:center;width:36px;height:36px;background:var(--yellow);color:var(--deep);border-radius:50%;font-style:normal;animation:bob 1.8s ease-in-out infinite}.hello{position:relative;text-align:center;padding:130px 24px 120px;background:var(--blue);overflow:hidden}.sun-mark{position:absolute;right:-30px;top:-75px;color:var(--yellow);font-size:230px;line-height:1;opacity:.9}.eyebrow{margin:0 0 20px;font:600 11px "Playfair Display";letter-spacing:.3em}.hello .eyebrow{color:var(--deep)}.hello h1,.details h2,.schedule h2,.rsvp h2{margin:0;font-size:clamp(40px,7vw,86px);line-height:1.12;letter-spacing:-.04em}.lead{max-width:650px;margin:35px auto 50px;font-weight:300;line-height:2;color:#164d72}.date-strip{max-width:790px;margin:auto;border-top:1px solid rgba(6,60,103,.32);border-bottom:1px solid rgba(6,60,103,.32);padding:22px 0;display:flex;align-items:center;justify-content:space-between;color:var(--deep)}.date-strip span{font-size:10px;letter-spacing:.18em}.date-strip b{font:italic 42px "Playfair Display";color:var(--yellow);text-shadow:1px 1px 0 var(--deep)}.portrait-feature{position:relative;min-height:100svh;background:var(--deep);overflow:hidden}.portrait-feature img{width:100%;height:100svh;object-fit:cover;object-position:center}.photo-index{position:absolute;right:24px;bottom:20px;color:white;font-size:10px;letter-spacing:.15em}.story-copy{padding:120px max(7vw,24px);display:grid;grid-template-columns:.8fr 1.2fr;gap:9vw;align-items:start}.story-sticky{position:sticky;top:120px;padding-top:50px}.story-sticky h2,.gallery h2{font-size:clamp(40px,6vw,76px);line-height:1.2;letter-spacing:-.04em;margin:0 0 35px}.story-sticky>p:last-child{max-width:420px;line-height:2;color:#5c6f7c}.portrait-card{margin:0;position:relative;transform-style:preserve-3d;transition:transform .25s ease}.portrait-card img{max-height:900px;object-fit:cover}.portrait-card figcaption{margin-top:12px;text-align:right;font:italic 18px "Playfair Display";color:#537086}.wide-feature{position:relative;background:var(--yellow);padding:6vw}.wide-feature img{height:min(72vw,820px);object-fit:cover}.wide-caption{display:flex;justify-content:space-between;padding-top:18px;font-size:11px;letter-spacing:.24em;font-weight:700}.gallery{padding:130px max(5vw,22px);display:grid;grid-template-columns:repeat(12,1fr);gap:5vw 3vw;background:#f4f1df}.gallery-title{grid-column:2/8;margin-bottom:30px}.gallery figure{margin:0;position:relative}.gallery figure span{position:absolute;right:12px;bottom:10px;background:var(--yellow);color:var(--deep);width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font:11px "Playfair Display"}.gallery-a{grid-column:1/7}.gallery-b{grid-column:7/13;align-self:end;margin-top:16vw!important}.gallery-c{grid-column:3/9;margin-top:2vw!important}.gallery img{height:100%;object-fit:cover}.details{padding:130px max(6vw,24px);background:var(--deep);color:white}.details-head{text-align:center;margin-bottom:75px}.details-head .eyebrow{color:var(--yellow)}.details-head>p:last-child{color:#a9c3d5;font-size:13px}.detail-cards{display:grid;grid-template-columns:repeat(3,1fr);max-width:1180px;margin:auto;border-top:1px solid rgba(255,255,255,.2);border-bottom:1px solid rgba(255,255,255,.2)}.detail-cards article{padding:45px 35px;min-height:300px}.detail-cards article+article{border-left:1px solid rgba(255,255,255,.2)}.detail-cards article>span{color:var(--yellow);font:italic 16px "Playfair Display"}.detail-cards h3{font-size:13px;letter-spacing:.2em;margin:45px 0 15px;color:#9fc9e2}.detail-cards strong{font-size:18px}.detail-cards p{font-size:13px;color:#9fc9e2}.detail-cards a{display:inline-block;margin-top:18px;font-size:12px;color:var(--yellow)}.schedule{padding:130px max(7vw,24px);background:var(--yellow)}.schedule-title{text-align:center}.schedule-title .eyebrow{color:#40769b}.schedule ol{list-style:none;padding:0;max-width:850px;margin:80px auto 0}.schedule li{display:grid;grid-template-columns:160px 1fr;gap:30px;padding:30px 0;border-bottom:1px solid rgba(6,60,103,.25)}.schedule time{font:italic 30px "Playfair Display";color:#2d75a7}.schedule strong{font-size:18px}.schedule li p{margin:8px 0 0;color:#537086;font-size:13px}.countdown{text-align:center;margin:95px auto 0}.countdown>p{font-size:11px;letter-spacing:.24em}.countdown>div{display:flex;justify-content:center;gap:clamp(22px,7vw,80px)}.countdown span{display:grid;gap:3px}.countdown b{font:italic 46px "Playfair Display";font-weight:500;color:#2d75a7}.countdown small{font-size:11px}.rsvp{padding:130px max(7vw,24px);display:grid;grid-template-columns:.75fr 1.25fr;gap:8vw;background:var(--blue)}.rsvp-intro{position:sticky;top:100px}.rsvp-intro .eyebrow{color:var(--yellow)}.rsvp-intro p{line-height:1.8;color:#245676}.rsvp-doodle{margin-top:55px;font:italic 72px "Playfair Display";color:var(--yellow);transform:rotate(-8deg)}.rsvp-form{background:var(--paper);padding:55px;box-shadow:14px 14px 0 var(--yellow)}.field,fieldset{margin:0 0 27px}label,legend{display:block;font-size:12px;letter-spacing:.06em;margin-bottom:9px}fieldset{border:0;padding:0}input,select,textarea{width:100%;border:0;border-bottom:1px solid #a9bac5;background:transparent;padding:12px 2px;border-radius:0;color:var(--ink);font:14px "Noto Sans SC";outline:none}input:focus,select:focus,textarea:focus{border-color:#2d75a7}.choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}.choices label{margin:0}.choices input{position:absolute;opacity:0}.choices span{display:block;border:1px solid #a9bac5;padding:14px;text-align:center;cursor:pointer}.choices input:checked+span{background:var(--deep);border-color:var(--deep);color:white}.privacy{display:flex;gap:9px;align-items:start;font-size:11px;color:#637684}.privacy input{width:auto;margin-top:2px}.rsvp-form button{border:0;background:var(--deep);color:white;width:100%;padding:17px 20px;font:14px "Noto Sans SC";letter-spacing:.15em;display:flex;justify-content:center;gap:22px;cursor:pointer}.rsvp-form button:hover{background:#126496}.rsvp-form button:disabled{opacity:.6}.form-status{text-align:center;font-size:12px;min-height:18px}.is-hidden{display:none}footer{padding:110px 7vw 60px;background:#72c5f3;color:var(--deep);text-align:center}footer strong{font:italic clamp(46px,10vw,120px)/.95 "Playfair Display";letter-spacing:-.05em;color:var(--yellow);text-shadow:2px 2px 0 var(--deep)}footer p{margin:50px 0 25px;font-size:11px;letter-spacing:.25em}footer a{font-size:10px;letter-spacing:.15em}.reveal{opacity:0;transform:translateY(35px);transition:opacity .85s cubic-bezier(.22,1,.36,1),transform .85s cubic-bezier(.22,1,.36,1)}.reveal.is-visible{opacity:1;transform:none}.photo-reveal{clip-path:inset(0 0 100% 0);transition:clip-path 1.15s cubic-bezier(.77,0,.18,1)}.photo-reveal.is-visible{clip-path:inset(0)}@keyframes bob{50%{transform:translateY(6px)}}
@media(max-width:760px){.hero{min-height:0}.hero-blur{display:none}.hero-picture{width:100%;max-width:none;height:100%;object-fit:cover}.nav{padding:20px 18px}.nav-rsvp{font-size:9px;padding:9px 11px}.hero-scroll{bottom:15px}.hello{padding:100px 20px 85px}.sun-mark{font-size:150px}.lead br{display:none}.date-strip b{font-size:32px}.portrait-feature,.portrait-feature img{height:auto;min-height:0}.portrait-feature img{aspect-ratio:2/3}.story-copy{padding:85px 20px;grid-template-columns:1fr;gap:50px}.story-sticky{position:static;padding:0}.wide-feature{padding:18px}.wide-feature img{height:auto;aspect-ratio:3/2}.gallery{padding:90px 18px;display:block}.gallery-title{margin-bottom:45px}.gallery figure{margin:0 0 28px!important}.gallery-a img,.gallery-c img{aspect-ratio:2/3}.gallery-b img{aspect-ratio:3/2}.details,.schedule,.rsvp{padding:90px 20px}.detail-cards{grid-template-columns:1fr}.detail-cards article{min-height:0;padding:35px 10px}.detail-cards article+article{border-left:0;border-top:1px solid rgba(255,255,255,.2)}.detail-cards h3{margin-top:25px}.schedule li{grid-template-columns:90px 1fr;gap:15px}.schedule time{font-size:24px}.countdown b{font-size:32px}.countdown>div{gap:22px}.rsvp{grid-template-columns:1fr}.rsvp-intro{position:static}.rsvp-doodle{display:none}.rsvp-form{padding:32px 20px;box-shadow:8px 8px 0 var(--yellow)}.choices{grid-template-columns:1fr}footer{padding-top:85px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.photo-reveal{clip-path:none;transition:none}.hero-scroll i{animation:none}}

/* Preserve the complete composition of the supplied artwork and photographs. */
.hero-picture{width:auto!important;height:100%;max-width:100%;object-fit:contain!important;justify-self:center}.first-photo{padding:120px max(7vw,24px);display:grid;grid-template-columns:.65fr 1fr;gap:8vw;align-items:start;background:#f4f1df}.first-photo-copy{position:sticky;top:120px;padding-top:45px}.first-photo-copy h2{margin:0 0 20px;font-size:clamp(38px,5vw,68px)}.first-photo-copy>p:last-child{color:#627583;line-height:1.8}.portrait-feature{position:relative;min-height:0;margin:0;max-width:680px;justify-self:center;background:transparent;overflow:visible}.portrait-feature img{width:100%;height:auto!important;aspect-ratio:auto!important;object-fit:contain!important}.portrait-feature figcaption{display:flex;justify-content:space-between;align-items:center;padding-top:12px;color:#537086}.portrait-feature figcaption span{font-size:10px;letter-spacing:.16em}.portrait-feature figcaption em{font:italic 18px "Playfair Display"}.portrait-card img,.wide-feature img,.gallery img{height:auto!important;max-height:none!important;aspect-ratio:auto!important;object-fit:contain!important}
@media(max-width:760px){.hero{height:auto;min-height:0;background:#8acbf3}.hero-picture{width:100%!important;height:auto;max-width:none;object-fit:contain!important}.hero:after{background:linear-gradient(180deg,rgba(0,0,0,.08),transparent 25%,transparent 72%,rgba(0,27,47,.28))}.first-photo{padding:85px 20px;grid-template-columns:1fr;gap:35px}.first-photo-copy{position:static;padding:0}}

/* Poster mode: every pixel of the main illustration stays inside one viewport. */
.hero{height:100svh!important;min-height:560px!important}.hero-picture{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;max-width:none!important;object-fit:contain!important;box-shadow:none!important;cursor:zoom-in}.hero-actions{position:absolute;z-index:4;bottom:18px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:10px}.hero-actions .hero-scroll{position:static}.hero-zoom{border:1px solid rgba(255,255,255,.65);background:rgba(6,60,103,.38);backdrop-filter:blur(8px);border-radius:999px;color:#fff;padding:8px 13px;font:10px "Noto Sans SC";letter-spacing:.12em;cursor:pointer}.portrait-feature img,.portrait-card img,.wide-feature img,.gallery img{cursor:zoom-in}.image-viewer{position:fixed;z-index:1000;inset:0;background:rgba(3,22,35,.96);display:grid;place-items:center;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}.image-viewer.is-open{opacity:1;visibility:visible}.image-viewer img{width:calc(100% - 150px);height:calc(100% - 90px);object-fit:contain}.image-viewer button{position:absolute;z-index:2;border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.1);color:white;width:46px;height:46px;border-radius:50%;font-size:22px;cursor:pointer}.viewer-close{right:24px;top:22px}.viewer-prev{left:24px;top:50%;transform:translateY(-50%)}.viewer-next{right:24px;top:50%;transform:translateY(-50%)}.viewer-count{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);color:white;font:11px "Noto Sans SC";letter-spacing:.18em;margin:0}.viewer-open{overflow:hidden}
@media(max-width:760px){.hero{height:100svh!important;min-height:0!important}.hero-picture{width:100%!important;height:100%!important;object-fit:contain!important}.hero-actions{bottom:14px}.image-viewer img{width:100%;height:calc(100% - 130px)}.image-viewer button{width:40px;height:40px}.viewer-close{right:14px;top:14px}.viewer-prev{left:10px;top:auto;bottom:18px;transform:none}.viewer-next{right:10px;top:auto;bottom:18px;transform:none}}

/* The lightbox image is anchored to the viewport, never to document flow. */
.image-viewer{display:block!important;overflow:hidden}.image-viewer>img{position:absolute!important;left:50%!important;top:50%!important;transform:translate(-50%,-50%)!important;width:auto!important;height:auto!important;max-width:calc(100vw - 160px)!important;max-height:calc(100svh - 80px)!important;object-fit:contain!important;margin:0!important}.image-viewer .viewer-count{z-index:3}
@media(max-width:760px){.image-viewer>img{max-width:calc(100vw - 20px)!important;max-height:calc(100svh - 125px)!important}.image-viewer .viewer-count{bottom:30px}}

/* Playful postcard and outdoor-album layout. */
.postcards{position:relative;padding:130px max(6vw,24px);background:var(--blue);display:grid;grid-template-columns:repeat(12,1fr);gap:3vw;overflow:hidden}.postcard-note{grid-column:2/8;margin:0 0 45px;font-size:clamp(24px,3vw,42px);font-weight:700;line-height:1.35}.postcard-note i{font:italic 18px "Playfair Display";font-weight:500;color:var(--yellow)}.postcard{margin:0;background:white;padding:13px 13px 20px;box-shadow:12px 15px 0 rgba(6,60,103,.14)}.postcard img{height:auto!important;object-fit:contain!important;cursor:zoom-in}.postcard figcaption{padding-top:14px;text-align:center;color:#5b7180;font-size:12px}.postcard-left{grid-column:1/8;transform:rotate(-2.5deg)}.postcard-right{grid-column:8/13;margin-top:15vw;transform:rotate(3deg)}.postcard-sticker{position:absolute;z-index:2;right:40%;top:48%;width:130px;height:130px;border-radius:50%;display:grid;place-items:center;text-align:center;background:var(--yellow);color:var(--deep);font:italic 18px/1.2 "Playfair Display";transform:rotate(9deg);box-shadow:5px 6px 0 var(--deep)}.gallery{grid-auto-flow:row}.gallery figure figcaption{padding:13px 3px 0;color:#536d7e;font-size:12px;line-height:1.6}.gallery-a{grid-column:1/6}.gallery-b{grid-column:6/13;margin-top:11vw!important}.gallery-c{grid-column:2/7;margin-top:-3vw!important}.gallery-d{grid-column:8/13;margin-top:5vw!important}.gallery-title:after{content:"SEA · GRASS · SUNSHINE · CHEERS";display:block;margin-top:22px;color:#6e7d86;font:10px "Playfair Display";letter-spacing:.2em}.first-photo-copy h2{line-height:1.25}.details-head p:last-child{letter-spacing:.08em}
@media(max-width:760px){.postcards{padding:90px 18px;display:block}.postcard-note{margin-bottom:45px}.postcard{margin:0 6px 45px!important}.postcard-left{transform:rotate(-1.5deg)}.postcard-right{transform:rotate(1.5deg)}.postcard-sticker{right:12px;top:45%;width:92px;height:92px;font-size:13px;box-shadow:3px 4px 0 var(--deep)}.gallery figure figcaption{padding-bottom:8px}.gallery-d{margin-bottom:0!important}}

/* Venue update, tighter postcards, and four-edge tropical details. */
.detail-cards.two-cards{grid-template-columns:repeat(2,1fr);max-width:860px}.detail-cards.two-cards article{min-height:285px}.postcards{padding-top:90px;padding-bottom:90px;gap:2vw}.postcard-note{margin-bottom:12px}.postcard-left{grid-column:1/7}.postcard-right{grid-column:7/13;margin-top:2vw}.postcard-sticker{right:45%;top:54%;width:108px;height:108px;font-size:15px}.site-decor{position:fixed;z-index:52;pointer-events:none;opacity:.78;filter:drop-shadow(0 5px 7px rgba(7,67,46,.08))}.site-decor img{width:100%;height:auto}.decor-top{top:68px;left:50%;width:135px;transform:translateX(-50%)}.decor-bottom{bottom:-3px;left:50%;width:190px;transform:translateX(-50%)}.decor-left{left:-15px;top:32%;width:92px}.decor-right{right:-18px;top:57%;width:105px}
@media(max-width:760px){.detail-cards.two-cards{grid-template-columns:1fr}.postcards{padding-top:75px;padding-bottom:65px}.postcard-note{margin-bottom:30px}.postcard-right{margin-top:0!important}.postcard-sticker{top:48%;right:3px}.site-decor{opacity:.67}.decor-top{top:70px;width:90px}.decor-bottom{width:130px}.decor-left{left:-26px;width:72px}.decor-right{right:-28px;width:80px}}

.couple-brand{display:flex;flex-direction:column;gap:5px;font-family:"Noto Sans SC",sans-serif;letter-spacing:0;text-decoration:none}.couple-brand strong{font-size:16px;font-weight:500;letter-spacing:.12em}.couple-brand strong i{font:italic 18px "Playfair Display";color:var(--yellow)}.couple-brand small{font:600 8px "Playfair Display";letter-spacing:.16em;opacity:.92}.couple-brand:hover strong i{display:inline-block;transform:scale(1.15)}
@media(max-width:760px){.couple-brand{gap:3px}.couple-brand strong{font-size:13px}.couple-brand strong i{font-size:15px}.couple-brand small{font-size:6.5px;letter-spacing:.11em}}

.music-toggle{position:fixed;z-index:90;right:18px;bottom:18px;display:flex;align-items:center;gap:9px;border:1px solid rgba(255,255,255,.65);border-radius:999px;padding:7px 12px 7px 7px;background:rgba(6,60,103,.82);backdrop-filter:blur(10px);color:white;box-shadow:0 7px 22px rgba(6,60,103,.2);cursor:pointer}.music-toggle b{font:500 10px "Noto Sans SC";letter-spacing:.08em}.music-disc{width:31px;height:31px;border-radius:50%;display:grid;place-items:center;background:var(--yellow);color:var(--deep);box-shadow:inset 0 0 0 5px rgba(6,60,103,.08)}.music-disc i{font-style:normal;font-size:14px}.music-toggle.is-playing .music-disc{animation:music-spin 4s linear infinite}.music-toggle.is-playing b:after{content:" · 播放中";color:var(--yellow)}@keyframes music-spin{to{transform:rotate(360deg)}}
@media(max-width:760px){.music-toggle{right:12px;bottom:12px;padding:6px}.music-toggle b{display:none}.music-disc{width:34px;height:34px}}
@media(prefers-reduced-motion:reduce){.music-toggle.is-playing .music-disc{animation:none}}

/* Fast local font stack and optimized first-paint artwork. */
body,input,select,textarea,button{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
.hero-blur{background-image:url('https://lyjyyq-wedding-1407081172.cos.ap-guangzhou.myqcloud.com/assets/photos/web/hero-cartoon.webp')}
.music-toggle.is-loading .music-disc{animation:music-spin 1s linear infinite;opacity:.72}
picture{display:block;width:100%}
