:root{--paper:#fffaf8;--pink:#f3e3e1;--rose:#985c68;--ink:#513c40;--muted:#806d71;--line:#dec9c9;--serif:"Noto Serif SC","Songti SC","STSong","SimSun",serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:#f1e5e4;color:var(--ink);font-family:"Microsoft YaHei","PingFang SC",sans-serif;-webkit-tap-highlight-color:transparent}body:before{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at 8% 15%,#fffaf8 0,transparent 45%),radial-gradient(ellipse at 90% 82%,#e8ced0 0,transparent 40%);z-index:-1}button,a{touch-action:manipulation}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid var(--rose);outline-offset:5px}img{display:block;width:100%;height:auto}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400}h2{font-size:32px;line-height:1.6;letter-spacing:4px}p{line-height:2}main{max-width:880px;margin:28px auto 0;background:var(--paper);box-shadow:0 15px 90px #7b475519;overflow:hidden}.masthead{padding:24px 40px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.masthead>span{font-size:13px;letter-spacing:5px}.monogram{font-family:Georgia,serif;font-size:27px;letter-spacing:-2px}.monogram span{color:var(--rose);font-style:italic;font-size:.7em;margin:0 4px}.music-control{border:1px solid var(--line);border-radius:30px;padding:10px 13px;background:transparent;color:var(--ink);display:flex;gap:8px;align-items:center;font-size:12px;min-height:42px}.music-bars{display:flex;gap:2px;align-items:center;height:15px}.music-bars i{display:block;width:2px;background:var(--rose);height:6px}.music-bars i:nth-child(2){height:14px}.music-bars i:nth-child(3){height:10px}.music-bars i:nth-child(4){height:12px}.music-control[aria-pressed=true] .music-bars i{animation:bars .9s ease-in-out infinite alternate}.music-bars i:nth-child(2){animation-delay:-.5s!important}.music-bars i:nth-child(3){animation-delay:-.2s!important}.hero{padding:50px 42px 0}.hero-copy{text-align:center}.eyebrow{font-family:Georgia,serif;letter-spacing:3px;font-size:12px;color:var(--rose)}h1{font-size:44px;letter-spacing:7px;display:flex;gap:24px;justify-content:center;align-items:center;margin:17px 0 12px}.amp{font-family:Georgia,serif;font-style:italic;font-size:33px;letter-spacing:0;color:#ac7c86}.hero-subtitle{font-size:15px;letter-spacing:3px;color:var(--muted)}.hero-date{display:flex;align-items:center;justify-content:center;gap:20px;margin:24px 0 30px}.hero-date span{font-size:13px;letter-spacing:3px}.hero-date b{font-family:Georgia,serif;font-weight:400;font-size:34px;border-left:1px solid var(--line);border-right:1px solid var(--line);padding:0 23px}.hero-image{position:relative;max-width:620px;margin:auto;border-radius:310px 310px 2px 2px;overflow:hidden;background:#e9ddcf}.hero-image img{aspect-ratio:4/4.8;object-fit:cover;object-position:center 36%}.photo-caption{position:absolute;bottom:22px;left:0;right:0;text-align:center;color:white;font-family:Georgia,serif;font-size:12px;letter-spacing:6px;text-shadow:0 1px 5px #0007}.hero-foot{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--muted);letter-spacing:1px;padding:25px 0}.hero-foot a{padding:10px 0}.hero-foot a span{font-size:18px;margin-left:8px}.section-pad{padding:90px 62px;text-align:center}.invitation{background:linear-gradient(180deg,#f9edeb,#fffaf8);position:relative}.ornament{font-family:Georgia,serif;display:block;font-size:39px;color:#ba8790;margin:17px 0 10px}.letter{margin:28px 0;font-family:var(--serif);font-size:19px;line-height:2.2}.letter p+p{margin-top:22px}.letter strong{font-weight:400;color:var(--rose)}.signature{font-family:var(--serif);letter-spacing:2px;font-size:20px}.signature span{font-style:italic;color:var(--rose);font-family:Georgia,serif}.signature small{font-size:13px;margin-left:14px}.tiny-flower{font-size:33px;color:#ba8790;margin-top:35px}.together{padding:10px 42px 80px}.chapter-label{display:flex;justify-content:space-between;font-size:10px;letter-spacing:2px;color:var(--muted);padding:19px 0;border-top:1px solid var(--line)}.wide-photo img{aspect-ratio:3/2;object-fit:cover}.moment-copy{text-align:center;padding:44px 5px}.script{font-family:Georgia,"Times New Roman",serif;font-size:33px;font-style:italic;color:var(--rose);line-height:1.4}.moment-copy h2{font-size:28px;margin:15px 0}.moment-copy p:not(.script),.promise-copy>p:not(.eyebrow),.joy>p:not(.joy-symbol){font-size:17px;line-height:2.2;color:var(--muted)}.duo-photos{display:grid;grid-template-columns:1fr 1fr;gap:24px}.duo-photos figure:nth-child(2){padding-top:75px}.duo-photos img{aspect-ratio:2/2.75;object-fit:cover}.duo-photos figcaption{font-family:var(--serif);font-size:14px;padding:17px 0;letter-spacing:1px}.date-section{background:var(--pink)}.date-section h2{margin:16px 0 25px}.date-display{font-family:Georgia,serif;font-size:43px;letter-spacing:2px;line-height:1.5}.date-display span{color:#b08a91;padding:0 4px}.date-weekday{font-size:14px;letter-spacing:3px;margin:9px 0 30px}.calendar{max-width:440px;margin:0 auto;padding:25px 28px;background:#fffaf8b3;border:1px solid #fffaf8}.calendar-title{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:16px;font-family:Georgia,serif;font-size:11px;letter-spacing:2px}.calendar-title b{font-family:var(--serif);font-weight:400;font-size:18px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px 3px;padding-top:18px;align-items:center}.calendar-grid span{font-family:Georgia,serif;font-size:15px;min-width:30px;height:36px;display:flex;align-items:center;justify-content:center}.calendar-grid .weekday{font-family:inherit;font-size:12px;color:var(--muted)}.calendar-grid .wedding-day{background:var(--rose);color:white;border-radius:50%;width:36px;justify-self:center;position:relative}.wedding-day:after{content:"♡";position:absolute;top:-8px;right:-6px;background:#fffaf8;color:var(--rose);border-radius:50%;font-size:14px;width:18px;height:18px;line-height:18px}.schedule{display:flex;justify-content:center;align-items:center;gap:42px;margin:37px 0 20px}.schedule div{display:flex;flex-direction:column;gap:7px}.schedule span{font-size:16px;letter-spacing:3px}.schedule strong{font:38px Georgia,serif}.schedule small{font-size:12px;color:var(--muted)}.schedule i{height:58px;width:1px;background:#cdb2b7}.text-link{border:0;border-bottom:1px solid #b18b93;padding:10px 0;background:transparent;color:var(--rose);font-size:14px;line-height:1.8}.text-link span{margin-left:10px}.promise{display:grid;grid-template-columns:1.08fr 1fr;align-items:center;background:#fdf5f2;padding:70px 42px;gap:30px}.promise-image img{aspect-ratio:2/3;object-fit:cover;border-radius:220px 220px 0 0}.promise-copy{text-align:left}.promise-copy h2{font-size:34px;margin:20px 0}.promise-copy>p:not(.eyebrow){font-size:15px}.promise-copy .script{font-size:23px;display:block;margin-top:29px}.joy{padding-top:35px}.joy .chapter-label{margin-bottom:27px}.joy-symbol{font-family:var(--serif);font-size:60px;color:#ae4c5b;line-height:1.3}.joy h2{margin:16px 0}.red-photos{display:grid;gap:22px;margin-top:35px}.red-photos img{aspect-ratio:3/2;object-fit:cover}.red-photos img:nth-child(2){width:76%;margin-left:auto}.venue{background:#f2e2e0}.venue h2{margin:14px 0}.venue-rule{display:flex;align-items:center;gap:17px;max-width:320px;margin:25px auto 32px;color:#b48a91}.venue-rule:before,.venue-rule:after{content:"";height:1px;background:#cfb1b5;flex:1}.venue-city{font-size:13px;letter-spacing:6px}.venue h3{font-size:37px;letter-spacing:4px;margin:12px 0}.hall{font-family:var(--serif);font-size:24px;letter-spacing:6px}.address{font-size:18px;margin:23px 0 15px;line-height:1.9}.venue-time{font-size:16px;line-height:2}.venue-actions{display:flex;gap:12px;justify-content:center;margin:30px 0 22px}.primary-button,.secondary-button{display:inline-flex;min-height:50px;padding:13px 23px;border:1px solid var(--rose);justify-content:center;align-items:center;font-size:15px;letter-spacing:1px}.primary-button{background:var(--rose);color:white}.primary-button span{margin-left:18px}.secondary-button{color:var(--rose);background:transparent}.venue-tip{font-size:13px;color:var(--muted);line-height:1.9}.closing{position:relative}.closing>img{aspect-ratio:4/4.5;object-fit:cover;object-position:center 32%}.closing:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 25%,#3b24250d 40%,#2d1a1cbf 100%)}.closing-copy{position:absolute;bottom:7%;left:20px;right:20px;z-index:1;color:#fff8f3;text-align:center}.closing-copy .script{color:#fff0e7;font-size:31px}.closing-copy h2{font-size:31px;margin:20px 0 10px}.closing-copy p:not(.script){font-size:16px;letter-spacing:2px}.closing-copy .closing-names{font-family:var(--serif);font-size:24px!important;margin:27px 0 13px}.closing-names span{font:italic 24px Georgia,serif;margin:0 12px}.closing-copy b{font-family:Georgia,serif;letter-spacing:5px;font-weight:400}footer{text-align:center;padding:50px 20px 120px}footer>.monogram{font-size:42px}footer>p{font-family:var(--serif);letter-spacing:5px;font-size:17px;margin:12px 0 22px}.footer-note{font-family:inherit!important;font-size:11px!important;letter-spacing:2px!important;color:var(--muted);margin:30px 0 0!important}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,880px);display:flex;justify-content:space-around;background:#fffaf8f5;backdrop-filter:blur(12px);border-top:1px solid #dec9c9;padding:10px 15px calc(10px + env(safe-area-inset-bottom));z-index:10}.bottom-nav a{display:flex;align-items:center;justify-content:center;gap:9px;font-size:14px;min-height:34px;padding:5px 8px}.bottom-nav span{font-size:23px;color:var(--rose)}.desktop-note{position:fixed;top:50%;left:calc(50% - 620px);width:140px;text-align:center;transform:translateY(-50%);color:#a47b84}.desktop-note>span{font:italic 38px Georgia,serif}.desktop-note>i{display:block;height:55px;width:1px;background:#c7a7ae;margin:25px auto}.desktop-note p{font-family:var(--serif);font-size:13px;letter-spacing:2px;line-height:2.4}.desktop-note small{font:9px Georgia,serif;letter-spacing:2px;display:block;margin-top:35px}.page-progress{position:fixed;top:0;left:0;right:0;z-index:20;height:3px}.page-progress span{display:block;height:100%;background:var(--rose);width:0}.toast{position:fixed;bottom:100px;left:50%;transform:translate(-50%,12px);padding:12px 22px;border-radius:6px;background:#513c40ed;color:white;font-size:14px;z-index:30;opacity:0;pointer-events:none;transition:.2s;max-width:90vw;text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}dialog{max-width:640px;width:calc(100% - 24px);max-height:90vh;padding:20px;border:0;background:var(--paper);color:var(--ink);overscroll-behavior:contain}dialog::backdrop{background:#342028b8}.dialog-head{display:flex;justify-content:space-between;gap:10px;align-items:center;padding-bottom:18px}.dialog-head h2{font-size:23px;letter-spacing:2px}.dialog-head p{font-size:12px;color:var(--muted)}.dialog-head button{background:transparent;border:1px solid var(--line);height:44px;width:44px;flex-shrink:0;color:var(--ink);font-size:25px}dialog>.primary-button{margin-top:18px;width:100%}
.hero-image img{object-position:center top}.desktop-note p{font-size:11px;letter-spacing:1px;white-space:nowrap}.photo-caption{text-shadow:0 1px 6px #2d1a1c}
@keyframes bars{to{transform:scaleY(.35)}}
@media(min-width:760px){.hero{padding-top:58px}.hero-image img{aspect-ratio:4/4.1;object-position:center 32%}.hero-copy h1{font-size:49px}.section-pad{padding-top:100px;padding-bottom:100px}}
@media(max-width:1240px){.desktop-note{display:none}}
@media(max-width:600px){main{margin:0;box-shadow:none}.masthead{padding:16px 22px}.masthead>span{font-size:11px;letter-spacing:3px}.monogram{font-size:25px}.music-control{padding:9px 11px;font-size:11px}.hero{padding:36px 22px 0}h1{font-size:34px;letter-spacing:3px;gap:15px;margin:18px 0 12px}.amp{font-size:27px}.eyebrow{font-size:10px;letter-spacing:2.5px}.hero-subtitle{font-size:13px;letter-spacing:1px}.hero-date{gap:15px;margin:20px 0 25px}.hero-date b{font-size:31px;padding:0 18px}.hero-date span{font-size:11px;letter-spacing:2px}.hero-image img{aspect-ratio:3/4;object-position:center 30%}.photo-caption{font-size:10px;letter-spacing:4px}.hero-foot{font-size:10px;padding:17px 0;letter-spacing:0;gap:10px}.hero-foot a span{margin-left:3px}.section-pad{padding:65px 24px}h2{font-size:26px;letter-spacing:2px}.letter{font-size:17px;margin:26px -3px}.letter p{line-height:2.2}.signature{font-size:18px}.signature small{font-size:12px}.together{padding:8px 22px 55px}.chapter-label{font-size:9px;letter-spacing:1px}.moment-copy{padding:32px 0}.moment-copy h2{font-size:23px;letter-spacing:1px}.moment-copy .script{font-size:28px}.moment-copy p:not(.script),.joy>p:not(.joy-symbol){font-size:15px}.duo-photos{gap:13px}.duo-photos figure:nth-child(2){padding-top:45px}.duo-photos figcaption{font-size:11px;letter-spacing:0;line-height:1.8}.date-section h2{margin-top:14px}.date-display{font-size:34px;letter-spacing:0}.date-weekday{font-size:12px;letter-spacing:2px}.calendar{padding:20px 18px}.calendar-grid{gap:6px 2px}.schedule{gap:27px}.schedule strong{font-size:35px}.schedule span{font-size:15px}.schedule small{font-size:10px}.promise{padding:55px 22px;gap:22px;grid-template-columns:1fr}.promise-image{width:86%;margin:0 auto}.promise-image img{aspect-ratio:3/4.1}.promise-copy{text-align:center;margin-top:14px}.promise-copy h2{font-size:29px;line-height:1.8;margin:15px 0}.promise-copy h2 br{display:none}.promise-copy>p:not(.eyebrow){font-size:16px}.promise-copy .script{margin-top:22px}.joy{padding-top:25px}.joy-symbol{font-size:50px}.joy h2{font-size:24px}.red-photos{gap:15px;margin-top:29px}.red-photos img:nth-child(2){width:90%}.venue h3{font-size:30px;letter-spacing:2px}.hall{font-size:22px}.address{font-size:17px}.venue-time{font-size:15px}.venue-actions{gap:10px}.primary-button,.secondary-button{font-size:14px;padding:13px 16px;letter-spacing:0}.primary-button span{margin-left:9px}.closing>img{aspect-ratio:3/4.5;object-position:center}.closing-copy{bottom:6%;left:10px;right:10px}.closing-copy .script{font-size:23px}.closing-copy h2{font-size:24px;letter-spacing:1px;margin:14px 0 8px}.closing-copy p:not(.script){font-size:13px;letter-spacing:1px}.closing-copy .closing-names{font-size:21px!important;margin:20px 0 12px}.closing-copy b{font-size:13px}.bottom-nav{padding-left:8px;padding-right:8px}.bottom-nav a{font-size:13px;gap:6px}.bottom-nav span{font-size:22px}footer{padding-top:40px;padding-bottom:110px}}
@media(max-width:350px){h1{font-size:29px;gap:10px}.hero-foot{font-size:9px}.letter{font-size:15px}.schedule{gap:17px}.primary-button,.secondary-button{font-size:13px;padding:13px 12px}}
.hero-image img{object-position:center top}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
[hidden]{display:none!important}.bottom-nav{width:100%;max-width:880px}.countdown{margin:30px auto 0;max-width:440px;padding-top:25px;border-top:1px solid #cfb1b5}.countdown>p{font-size:14px;letter-spacing:3px;color:#806d71}.countdown-units{display:flex;justify-content:center;margin-top:18px}.countdown-units>div{flex:1;max-width:100px;border-right:1px solid #d8bfc3;display:flex;flex-direction:column;align-items:center}.countdown-units>div:last-child{border:0}.countdown-units strong{font:34px Georgia,serif;font-variant-numeric:tabular-nums;line-height:1.4;color:#513c40}.countdown-units span{font-size:12px;color:#806d71;line-height:2}.poster-overlay{position:fixed;inset:0;top:0;right:0;bottom:0;left:0;background:#342028b8;z-index:40;overflow-y:auto;padding:24px 12px}.poster-panel{max-width:640px;margin:0 auto;padding:20px;background:#fffaf8;color:#513c40}.poster-panel>.primary-button{margin-top:18px;width:100%}@media(max-width:600px){.countdown-units strong{font-size:30px}.poster-overlay{padding:12px 10px}.poster-panel{padding:16px}}
.music-welcome{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#f4e7e5;display:flex;align-items:center;justify-content:center;overflow:auto;padding:26px 20px;background:radial-gradient(ellipse at 20% 5%,#fffaf8 0,transparent 65%),#f4e7e5}.music-welcome-card{width:100%;max-width:440px;padding:44px 30px 28px;text-align:center;background:#fffaf8;border:1px solid #d8bfc3;outline:1px solid #fffaf8;outline-offset:8px;box-shadow:0 15px 80px #985c681a}.welcome-heart{font:58px/1.4 Georgia,serif;color:#b88390;display:block;margin:18px 0 10px}.music-welcome-card h2{font-size:34px;letter-spacing:5px;line-height:1.6}.welcome-names{font-family:var(--serif);font-size:23px;margin:27px 0 12px;letter-spacing:2px}.welcome-names span{font:italic 23px Georgia,serif;color:#985c68;margin:0 8px}.welcome-date{font:18px Georgia,serif;letter-spacing:3px}.welcome-location{font-size:13px;margin:20px 0 26px;color:#806d71;letter-spacing:1px}.music-welcome-card>.primary-button{width:100%;min-height:54px;letter-spacing:2px}.welcome-silent{display:block;padding:12px 20px;margin:12px auto 0;background:transparent;border:0;color:#806d71;font-size:13px}@media(max-width:600px){.music-welcome-card{padding:30px 22px 20px}.music-welcome-card h2{font-size:29px}.welcome-heart{font-size:49px;margin:13px 0 8px}.welcome-names{font-size:22px;margin-top:22px}.welcome-location{font-size:12px}.music-welcome-card .eyebrow{font-size:11px}}

/* Reviewed hero: DSC09302 二组合, full portrait without cropping. */
.hero-image{border-radius:220px 220px 3px 3px}.hero-image img{aspect-ratio:2/3;object-fit:contain;object-position:center;width:100%;height:auto}
@media(max-width:600px){.hero-image{border-radius:110px 110px 2px 2px}}

/* Decorative overlay: original article width, typography and navigation retained. */
.curtain-rig{position:fixed;top:0;bottom:90px;right:calc(50% - 430px);width:118px;z-index:12;pointer-events:none;background:none;border:0}
.curtain-travel{position:absolute;left:0;top:0;width:100%;height:0;padding-top:150%;transform:translate3d(0,140px,0);will-change:transform;pointer-events:none}
.curtain-art{position:absolute;bottom:0;left:0;width:100%;height:auto;overflow:visible;pointer-events:none}
@media(max-width:900px){.curtain-rig{right:8px;width:108px}}
@media(max-width:600px){.curtain-rig{right:3px;width:76px;bottom:88px}}
@media(max-width:350px){.curtain-rig{right:1px;width:66px}}
@media(prefers-reduced-motion:reduce){.curtain-travel{will-change:auto}}
