/* 用户选定的树影纸感背景，取代玻璃折光。 */
body{background:#d7dbc5}
.hero:before{background:url('assets/forest-paper.webp') center / cover}
.hero:after{background:linear-gradient(90deg,#13231314,#162519b3)}
.prologue{background:linear-gradient(#e6e7d88c,#e6e7d8a6),url('assets/forest-paper.webp') center / cover}
.reel-divider{background:linear-gradient(#172419b0,#172419b0),url('assets/forest-paper.webp') center 40% / cover}
.green-chapter:before{background:linear-gradient(#152b1bad,#152b1b94),url('assets/forest-paper.webp') center / cover}
.joy{background:linear-gradient(#e5e4d2bd,#e5e4d28c),url('assets/forest-paper.webp') center / cover;color:#273424}
.joy .chapter,.joy figcaption,.joy-heading p{color:#4a5942;border-color:#4a594244}
.joy-heading h2 span{color:#566342}
.invitation{background:linear-gradient(#e5e4d29c,#e5e4d2bf),url('assets/forest-paper.webp') center / cover}
.rsvp{background:linear-gradient(#1b2e20bf,#1b2e20bf),url('assets/forest-paper.webp') center / cover}
.closing{background:linear-gradient(#162419c2,#162419d9),url('assets/forest-paper.webp') center bottom / cover;padding-bottom:165px}
.tour-bar{position:fixed;right:18px;bottom:calc(max(16px,env(safe-area-inset-bottom)) + 66px);z-index:9;display:flex;align-items:center;gap:2px;padding:5px;border-radius:28px;border:1px solid #ffffff50;background:#eff0e4f5;color:#2c3d28;box-shadow:0 4px 24px #17271920}
.tour-bar button,.tour-bar a{font:12px/1.3 sans-serif;white-space:nowrap;padding:12px 11px;min-height:42px;border:0;border-radius:22px;background:transparent;color:inherit;display:flex;align-items:center;justify-content:center;text-decoration:none}
.tour-bar button{background:#34492d;color:#f3f0df}
.tour-bar a:hover{background:#34492d12}.tour-bar :focus-visible{outline:2px solid #9a7138;outline-offset:2px}
.gallery-open .tour-bar{visibility:hidden}
html.auto-touring{scroll-behavior:auto!important}
@media(max-width:760px){.hero:before{background-position:35% top}.hero:after{background:linear-gradient(#14241612 30%,#142416a3 65%,#142416c7)}.tour-bar{right:10px;max-width:calc(100vw - 20px)}.tour-bar button,.tour-bar a{padding:12px 10px;font-size:11px}.prologue,.green-chapter:before,.joy,.invitation{background-position:30% center}}

/* 精简照片与赴约内容，完整照片可点开查看。 */
.compact-gallery{padding:48px 9%}
.compact-gallery h2{margin:24px 0;font-size:32px}
.compact-photos{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.compact-photos figcaption{color:#d8dec9;font-size:12px;padding-top:8px}
.invitation.section-pad,.rsvp.section-pad{padding-top:40px;padding-bottom:40px}
.invitation-heading{margin:20px 0 26px}
.invitation-heading h2{margin:0}
.event-grid{grid-template-columns:1fr;gap:16px}
.closing{padding-top:22px;padding-bottom:165px}
.closing>a{font-size:12px;color:#c5cbbd}
@media(max-width:760px){.compact-gallery{padding:32px 20px}.compact-gallery h2{font-size:26px;margin:20px 0}.compact-gallery .chapter{font-size:11px}.compact-photos{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 12px}.compact-photos figure:last-child{grid-column:1/-1;width:calc(50% - 6px);justify-self:center}.compact-photos figcaption{font-size:11px;letter-spacing:0}.invitation-heading h2{font-size:30px}.rsvp{gap:20px}.rsvp h2{margin-bottom:10px}.title-block{padding-top:24px}.hero-invitation{margin-top:20px}.hero-date{margin-top:20px}}

/* 两张大照片开篇，成组小照片过渡，再以比心照片收尾。 */
.compact-gallery{padding-top:65px;padding-bottom:65px}
.gallery-intro{color:#c8d2be;font:17px/2 var(--serif);margin:0 0 40px}
.compact-photos{grid-template-columns:repeat(2,minmax(0,1fr));gap:36px 28px;max-width:1050px;margin:auto}
.album-interlude{grid-column:1/-1;text-align:center;padding:32px 0}
.album-interlude>span{font:11px var(--sans);letter-spacing:.2em;color:#b9c6ad}
.album-interlude>p{font:26px/1.9 var(--serif);margin:18px 0}
.compact-photos figure:last-child{grid-column:1/-1;width:60%;justify-self:center;margin-top:28px}
.rsvp{grid-template-columns:1fr;gap:20px}
.rsvp-card{width:100%;max-width:860px;margin:0 auto;padding:12px;background:#fff;color:#263326}
#rsvp-frame{display:block;border:0;width:100%;height:760px;background:#fff}
.rsvp-card .rsvp-note{color:#52634c;padding:0 12px}
.closing{padding-top:55px}.closing .closing-title{font:42px/1.5 var(--serif);color:#e8e4d7}
@media(max-width:760px){.compact-gallery{padding-top:48px;padding-bottom:48px}.compact-photos{gap:26px 14px}.compact-photos figure:nth-child(1),.compact-photos figure:nth-child(2){grid-column:1/-1;width:100%}.compact-photos figure:last-child{width:85%;margin-top:18px}.album-interlude{padding:24px 0}.album-interlude>p{font-size:23px}.gallery-intro{font-size:16px;margin-bottom:28px}.rsvp-card{padding:4px;margin-top:24px}#rsvp-frame{height:820px}.rsvp.section-pad{padding-left:16px;padding-right:16px}}

/* 新相册：浅绿开篇、森林双页、暖纸合影。 */
.new-album .section-pad{padding:70px max(24px,9vw)}
.album-spring,.album-studio{color:#283a2e;background:#eeeee3}
.album18 .album-studio{color:#263a2c;background:linear-gradient(180deg,rgba(151,168,143,.88),rgba(193,204,177,.94) 30%,rgba(183,197,166,.93) 75%,rgba(169,185,153,.9)),url('assets/forest-paper.webp') center/cover}
.album18 .album-studio .album-signoff{color:#344a37}
.album-spring{background:#dfe6d8}
.album-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin:0 auto 38px;max-width:1100px}
.album-heading h2{font:clamp(28px,3.2vw,44px)/1.5 var(--serif);margin:0;letter-spacing:.025em}
.album-heading p{font:15px/1.9 var(--serif);margin:0;max-width:25em}
.new-album figure{margin:0;min-width:0}
.new-album .photo{display:block;width:100%}
.new-album .photo img{width:100%;height:auto;object-fit:contain;display:block}
.new-album figcaption{color:inherit;font:12px/1.6 var(--serif);padding-top:10px;letter-spacing:.03em}
.spring-layout,.forest-duo,.forest-triptych,.studio-layout{max-width:1100px;margin:0 auto;display:grid;gap:24px}
.spring-layout{grid-template-columns:1.05fr 1fr;align-items:center;gap:40px}
.spring-pair{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.spring-pair figure:last-child{padding-top:75px}
.album-forest{color:#ecebdc;position:relative;isolation:isolate}
.album-forest .album-heading{position:relative}
.forest-duo{grid-template-columns:1fr 1fr;max-width:820px;gap:30px}
.forest-duo figure:last-child{margin-top:50px}
.forest-triptych{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:60px;gap:36px 28px}
.forest-triptych figure:first-child{grid-column:1/-1;width:58%;justify-self:center;margin-bottom:18px}
.studio-layout{grid-template-columns:repeat(2,minmax(0,1fr));gap:44px 28px}
.studio-layout figure:nth-child(2){grid-column:1/-1;width:58%;justify-self:center;margin:12px 0 18px}
.studio-wide{grid-column:1/-1;width:86%;justify-self:center;margin-bottom:10px!important}
.album-signoff{font:18px/1.9 var(--serif);text-align:center;margin:46px 0 0}
@media(max-width:760px){
 .new-album .section-pad{padding:44px 20px}
 .album-heading{display:block;margin-bottom:26px}.album-heading h2{font-size:29px}.album-heading p{margin-top:12px;font-size:14px}
 .spring-layout{grid-template-columns:1fr;gap:25px}.spring-main{width:80%;justify-self:center}.spring-pair{gap:14px}.spring-pair figure:last-child{padding-top:30px}
 .forest-duo{gap:14px}.forest-duo figure:last-child{margin-top:32px}.forest-triptych{gap:28px 14px;margin-top:40px}.forest-triptych figure:first-child{width:86%;margin-bottom:4px}
 .new-album figcaption{font-size:11px;letter-spacing:0;padding-top:8px}.forest-triptych figcaption{font-size:10px}
 .studio-layout{gap:30px 14px}.studio-layout figure:nth-child(2){width:86%;margin:4px 0}.studio-wide{width:100%;margin-bottom:0!important}.album-signoff{font-size:16px;margin-top:40px}
}

/* 私人首映：真实纸纹、翻盖抽卡、原片交接。 */
body.welcome-open{overflow:hidden}
.welcome-open .atmosphere-controls,.welcome-open .tour-bar{visibility:hidden}
#welcome-dialog{width:100vw;height:100dvh;max-width:100vw;max-height:100dvh;margin:0;padding:20px;border:0;color:#e6d8b6;background:radial-gradient(ellipse at 16% 7%,#61746040,transparent 55%),linear-gradient(#09140cbf,#08130ce8),url('assets/premiere-paper.webp') center/600px;overflow:hidden;box-shadow:none;transition:opacity .28s}
#welcome-dialog[open]{display:flex;align-items:center;justify-content:center}
#welcome-dialog::backdrop{background:#0d1910}
.welcome-scene{width:min(100%,650px);height:min(800px,90dvh);position:relative;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:45px 0 25px;text-align:center}
#welcome-title{font:10px/1.6 Georgia,serif;letter-spacing:.55em;margin:0;color:#d0c097;font-weight:400}
.envelope-arrival{position:absolute;top:46%;left:50%;width:min(460px,90%);transform:translate(-50%,-35%);perspective:1400px;animation:premiere-arrive 1.1s cubic-bezier(.2,.8,.2,1) both}
#welcome-enter{position:relative;display:block;width:100%;aspect-ratio:1.48;padding:0;border:0;background:none;isolation:isolate;perspective:1200px;transform:rotate(-3deg);transition:transform .45s;overflow:visible;cursor:pointer}
#welcome-enter:focus-visible{outline:1px solid #cbbb8b88;outline-offset:14px}
@media(hover:hover){#welcome-enter:hover{transform:rotate(-1deg) translateY(-4px)}}
.envelope-back{position:absolute;inset:0;background:linear-gradient(#050d0655,#0008),url('assets/premiere-paper.webp') center/440px;border:1px solid #a1b49a30;box-shadow:0 28px 50px #0008,0 5px 7px #0007;z-index:0}
.letter-pocket{position:absolute;left:0;right:0;bottom:0;height:280%;overflow:hidden;z-index:1}
.envelope-letter{position:absolute;left:8%;bottom:4%;width:84%;display:flex;flex-direction:column;align-items:center;padding:18px 18px 15px;background:#f0ebdf;box-shadow:0 0 0 1px #f9f3e1 inset,0 0 0 2px #b8ac8c44 inset,0 4px 12px #0003;transform:translateY(65%);transition:transform .8s cubic-bezier(.22,.7,.2,1) .6s}
.letter-photo{display:block;width:100%;height:auto;aspect-ratio:2/3;object-fit:contain}
.letter-names{font:12px/1.8 var(--serif);color:#75603f;letter-spacing:.14em;margin-bottom:12px}
.letter-title{font:26px/1.5 var(--serif);color:#735e3c;margin:10px 0 4px;letter-spacing:.03em}
.letter-date{font:9px/1.5 Georgia,serif;letter-spacing:.22em;color:#8a7959}
.envelope-front{position:absolute;inset:0;z-index:3;clip-path:polygon(0 0,50% 50%,100% 0,100% 100%,0 100%);background:linear-gradient(145deg,transparent 49.6%,#0006 49.9%,#aabb9522 50%,transparent 50.4%),linear-gradient(215deg,transparent 49.6%,#0005 49.9%,#aabb951c 50%,transparent 50.4%),linear-gradient(125deg,#82977915,#08150a88),url('assets/premiere-paper.webp') center/440px;box-shadow:inset 0 0 0 1px #a3b19444}
.envelope-flap{position:absolute;top:0;left:0;width:100%;height:64%;clip-path:polygon(0 0,100% 0,51.5% 99%,50% 100%,48.5% 99%);background:linear-gradient(165deg,#bccdaa30,#04110766),url('assets/premiere-paper.webp') center/440px;transform-origin:50% 0;transform:rotateX(0deg);backface-visibility:visible;z-index:4;transition:transform .75s cubic-bezier(.35,0,.2,1),z-index 0s .38s;border-top:1px solid #c4cfb444}
.envelope-address{position:absolute;top:33%;left:0;right:0;z-index:5;color:#dcc897;display:flex;flex-direction:column;align-items:center;text-shadow:0 1px 1px #071508,0 -1px #fff2;transition:opacity .25s}
.envelope-address>span{font:20px/1.6 var(--serif);letter-spacing:.24em}.envelope-address>small{font:9px/1.8 Georgia,serif;letter-spacing:.35em;margin-top:10px}
#welcome-description{margin:auto 0 0;padding-top:24px;font:13px/1.8 var(--serif);letter-spacing:.15em;color:#d1bf94;transition:opacity .3s}#welcome-description>span{margin:0 12px;color:#908562}
.welcome-music-note{font:10px/1.8 var(--serif);letter-spacing:.12em;color:#87947f;margin:12px 0 0;transition:opacity .3s}
.is-opening #welcome-enter{transform:rotate(0deg);cursor:default}
.is-opening .envelope-address,.is-opening #welcome-description,.is-opening .welcome-music-note{opacity:0}
.is-opening .envelope-flap{transform:rotateX(180deg);z-index:0}
.is-opening .letter-pocket{overflow:hidden}
.is-opening .envelope-letter{transform:translateY(22%)}
#welcome-dialog.is-handoff{background:transparent}#welcome-dialog.is-handoff::backdrop{background:transparent}
.is-handoff .welcome-scene{opacity:0;transition:opacity .4s}
.premiere-photo-flight{position:fixed;z-index:10;max-width:none;object-fit:contain;pointer-events:none;box-shadow:0 10px 40px #0004}
@keyframes premiere-arrive{from{opacity:0;transform:translate(-50%,-20%) rotate(3deg)}to{opacity:1;transform:translate(-50%,-35%) rotate(0deg)}}
@media(max-width:520px){.welcome-scene{height:88dvh;padding:35px 0 30px}.envelope-arrival{width:96%;top:49%}#welcome-title{font-size:9px;letter-spacing:.4em}.envelope-address>span{font-size:17px}.envelope-letter{padding:12px}.letter-names{font-size:10px;margin-bottom:8px}.letter-title{font-size:23px}#welcome-description{font-size:12px;letter-spacing:.07em}#welcome-description>span{margin:0 6px}}
@media(max-height:650px){.welcome-scene{padding:15px 0;height:91dvh}.envelope-arrival{width:min(350px,86%);top:47%}.envelope-letter{padding:10px}.letter-title{font-size:20px}.letter-names{margin-bottom:6px}.welcome-music-note{margin-top:6px}}
@media(prefers-reduced-motion:reduce){.envelope-arrival{animation:none}.envelope-letter,.envelope-flap,#welcome-enter{transition:none}}


/* 赴约回函：暖纸与森绿，清晰可填写的书信布局。 */
.native-rsvp{position:relative;z-index:8;width:min(100%,560px);margin:0 auto;background:#f2eddf;color:#2b3d30;padding:44px 48px 30px;box-shadow:0 18px 48px #081a1633;box-sizing:border-box}
.reply-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:24px;border-bottom:1px solid #b4b59c}
.native-rsvp h2{font:400 clamp(30px,4vw,40px)/1.45 var(--serif);margin:0;letter-spacing:.06em}
.reply-date{font:13px/1.8 Georgia,serif;text-align:right;color:#657054;letter-spacing:.12em}
.reply-date b{font-size:23px;font-weight:400;letter-spacing:.04em}
.reply-intro{font:19px/1.8 var(--serif);margin:24px 0 30px;color:#49553d}
.rsvp-field{display:block;margin:0 0 24px}
.reply-label{display:flex;align-items:center;justify-content:space-between;font:17px/1.6 var(--serif);margin-bottom:8px}
.reply-label small{font:12px/1.6 var(--sans);color:#666b55}
.rsvp-field input{display:block;width:100%;min-height:52px;padding:12px 14px;border:1px solid #b5b79f;border-radius:2px;background:#faf7ef;color:#243729;font:18px/1.5 var(--serif);box-sizing:border-box;transition:border-color .2s,background-color .2s}
.rsvp-field input::placeholder{color:#747563;opacity:1}
.rsvp-field input:focus{border-color:#344d37;background:#fffdf6;outline:2px solid #344d37;outline-offset:2px}
.native-rsvp #guest-count-help{font:15px/1.6 var(--serif);color:#61684f;margin:-14px 0 26px}
.rsvp-submit{width:100%;min-height:54px;background:#304b38;color:#faf3de;border:0;border-radius:2px;font:400 19px/1.5 var(--serif);letter-spacing:.12em;cursor:pointer;transition:background-color .2s}
.rsvp-submit:hover:not(:disabled){background:#456149}.rsvp-submit:focus-visible{outline:2px solid #40533b;outline-offset:3px}
#rsvp-status{font:14px/1.7 var(--sans);color:#61684f;margin:18px 0 0}
.rsvp-submit:disabled{cursor:default;opacity:.7}.rsvp-field input[readonly]{background:#e9e9dc}
@media(max-width:520px){.native-rsvp{padding:30px 25px 24px}.native-rsvp h2{font-size:32px}.reply-intro{font-size:18px;margin:20px 0 26px}.reply-heading{padding-bottom:20px}}

/* 放大阅读文字，只调整字号，保留字体、字重和标题层级。 */
.album-heading p,.hero-invitation p,.album-signoff{font-size:22px}
.new-album figcaption,.forest-triptych figcaption{font-size:18px}
.venue-address,.event-note,.closing>p:not(.closing-title){font-size:18px}
.native-rsvp #guest-count-help,#rsvp-status{font-size:15px}
#welcome-description{font-size:16px}
.welcome-music-note{font-size:14px}
@media(max-width:760px){
 .album-heading p,.hero-invitation p,.album-signoff{font-size:20px}
 .new-album figcaption,.forest-triptych figcaption{font-size:16px}
 .venue-address,.event-note,.closing>p:not(.closing-title){font-size:17px}
}

#rsvp-status:empty{margin:0}

/* 入场时集中渲染照片，飞行只使用合成层变换。 */
.welcome-open .falling-particles{visibility:hidden}
.welcome-open .particle{animation-play-state:paused}
.envelope-letter{will-change:transform;backface-visibility:hidden}
.premiere-photo-flight{will-change:transform;backface-visibility:hidden;box-shadow:none}
.is-handoff .letter-photo{visibility:hidden}

/* 暖纸上的森绿来信，与正文相纸边呼应。 */
#welcome-dialog{color:#324835;background:linear-gradient(#f1eddfed,#e9e6d6df),url('assets/forest-paper.webp') center/cover}
#welcome-dialog::backdrop{background:#e9e6d6}
.welcome-scene{height:min(880px,94dvh);padding:20px 0 22px}
.welcome-heading{align-self:flex-start;text-align:left;padding-left:9%;position:relative;z-index:1;transition:opacity .3s}
#welcome-title{font:400 clamp(28px,4.6vw,44px)/1.45 var(--serif);letter-spacing:.08em;color:#314832}
.welcome-heading p{font:16px/1.6 var(--serif);color:#52614a;margin:16px 0 0;letter-spacing:.08em}
.welcome-heading i{font-family:Georgia,serif;font-weight:400;color:#90774a;padding:0 10px}
.envelope-arrival{top:53%;width:min(460px,85%)}
.envelope-arrival:before{content:'WEDDING INVITATION';position:absolute;inset:6% -2% -5% 1%;background:#f9f5e9;color:#8a7e61;border:1px solid #cdc6b2;transform:rotate(5deg);font:10px/1.5 Georgia,serif;letter-spacing:.18em;text-align:right;padding:12px 18px;box-shadow:0 12px 30px #2337231f;transition:opacity .4s}
.envelope-back{box-shadow:0 22px 40px #26332140,0 3px 7px #14271940}
.envelope-address{top:23%}.envelope-address>span{font-size:21px}.envelope-address>small{font-size:11px;letter-spacing:.26em;margin-top:8px}
.envelope-imprint{position:absolute;z-index:5;bottom:16%;left:50%;transform:translateX(-50%);padding:7px 15px;border-top:1px solid #c8b8848c;border-bottom:1px solid #c8b8848c;font:19px/1.4 Georgia,serif;letter-spacing:.12em;color:#dccb99;pointer-events:none;transition:opacity .25s}
.envelope-imprint i{font-size:13px;font-weight:400}
.envelope-postscript{position:absolute;left:7%;right:7%;bottom:6%;z-index:5;display:flex;justify-content:space-between;color:#c8c5a4;font:10px/1.5 var(--serif);letter-spacing:.13em;transition:opacity .25s}
#welcome-description{color:#354d37;font-size:16px}#welcome-description>span{color:#8c8c69}
.welcome-music-note{color:#61694f;font-size:13px}
.is-opening .welcome-heading,.is-opening .envelope-imprint,.is-opening .envelope-postscript,.is-opening .envelope-arrival:before{opacity:0}
.hero-portrait{padding:12px 12px 0;background:#eee9da;box-shadow:0 16px 48px #07190f33}
.hero-portrait .cover-photo{border:0;box-shadow:none}
.hero-portrait .cover-index{display:block;position:static;color:#556049;font:18px/1.7 var(--serif);letter-spacing:.08em;text-align:center;margin:0;padding:13px 0}
@media(max-width:520px){
 .welcome-scene{padding:20px 0;height:92dvh}.welcome-heading{padding-left:5%}#welcome-title{font-size:31px;letter-spacing:.06em}.welcome-heading p{font-size:14px;margin-top:12px}
 .envelope-arrival{width:91%;top:54%}.envelope-address>span{font-size:18px}.envelope-imprint{font-size:16px;padding:4px 12px}.envelope-postscript{font-size:9px}
 #welcome-description{font-size:14px}.welcome-music-note{font-size:12px}.hero-portrait{padding:9px 9px 0}
}
@media(max-height:650px){.welcome-scene{padding:8px 0}#welcome-title{font-size:24px}.welcome-heading p{margin-top:6px;font-size:12px}.envelope-arrival{width:min(320px,74%);top:53%}#welcome-description{font-size:12px}.welcome-music-note{font-size:11px;margin-top:6px}}
.album18 .forest-panels{max-width:1000px;margin:56px auto 0;display:grid;grid-template-columns:1fr 1fr;gap:40px 28px;align-items:start}
.album18 .forest-lead{grid-column:1/-1;width:72%;justify-self:center}
.album18 .forest-ending{grid-column:1/-1;width:58%;justify-self:end;margin:12px 5% 0 0}
.album18 .studio18{max-width:1000px;margin:auto}
.album18 .studio-intro{width:66%;margin:0 auto 56px}
.album18 .studio-pair{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start}
.album18 .studio-pair figure:last-child{margin-top:64px}
.album18 .studio-finale{width:72%;margin:56px auto 0}
@media(max-width:760px){
 .album18 .forest-panels{gap:28px 14px;margin-top:36px}
 .album18 .forest-lead{width:100%}
 .album18 .forest-ending{width:78%;margin:8px auto 0;justify-self:center}
 .album18 .studio-intro{width:88%;margin-bottom:36px}
 .album18 .studio-pair{gap:14px}
 .album18 .studio-pair figure:last-child{margin-top:32px}
 .album18 .studio-finale{width:100%;margin-top:36px}
}
#film-title:focus{outline:none}

/* Photos are static in the invitation. */
.photo{cursor:default}
.cover-photo,.photo img{animation:none;transition:none;transform:none}
.photo:hover img{transform:none}
.js-motion .new-album figure.reveal{opacity:1;transform:none;transition:none}

/* 全篇共用森林底图，章节只承载内容，滚动时不再切换底色。 */
:root{--forest37-background:linear-gradient(#152b1bc3,#152b1bb1),url('assets/forest-paper.webp') center/cover;--forest37-position:center;--ink:#f4f0de;--muted:#e0e2d1}
html{background:#13231b}
body{background:#13231b;color:var(--ink);isolation:isolate}
body:before{z-index:-1;opacity:1;background:var(--forest37-background);background-position:var(--forest37-position)}
.masthead,.hero,.new-album,.album-spring,.green-chapter,.album18 .album-studio,.invitation,.rsvp,.closing{background:transparent;color:var(--ink)}
.hero:before,.hero:after,.green-chapter:before{content:none;background:none}
.invitation{--muted:#e0e2d1}
.masthead .wordmark span,.title-block>.overline,.cast i,.ticket-names i{color:#f0e2c4}
.english-title,.hero-invitation p,.hero-date,.invitation .chapter,.album18 .album-studio .album-signoff,.new-album figcaption,.closing>p:not(.closing-title),.closing>a{color:var(--muted)}
.masthead,.hero-invitation,.invitation .chapter{border-color:#e0e2d140}
.ticket,.native-rsvp{background:#142a1e4d;color:var(--ink);box-shadow:0 18px 48px #081a1626}
.ticket,.ticket .event-grid,.ticket-stub,.native-rsvp .reply-heading{border-color:#e0e2d14d}
.invitation .invitation-stamp{color:#f0c3a4;border-color:#dfb18f;outline-color:#dfb18f}
.native-rsvp .reply-date,.native-rsvp .reply-intro,.native-rsvp .reply-label small,.native-rsvp #guest-count-help,.native-rsvp #rsvp-status,.native-rsvp .return-detail{color:var(--muted)}
.native-rsvp .reply-return{color:var(--ink)}
.rsvp-field input{background:#233b2b;color:var(--ink);border-color:#b5c4a6;color-scheme:dark}
.rsvp-field input::placeholder{color:#d4ddc8}
.rsvp-field input:focus{background:#2b4734;border-color:#f0e2c4;outline-color:#f0e2c4}
.rsvp-field input[readonly]{background:#304332}
.navigate,.rsvp-submit{background:#ded2b6;color:#243729;border-color:#ded2b6}
.navigate:hover,.rsvp-submit:hover:not(:disabled){background:#eee2c8}
.navigate:focus-visible,.rsvp-submit:focus-visible{outline-color:#f0e2c4}
#welcome-dialog{background:var(--forest37-background);background-position:var(--forest37-position);color:var(--ink)}
#welcome-dialog::backdrop{background:#13231b}
#welcome-title,#welcome-description{color:var(--ink)}
.welcome-heading p,.welcome-music-note{color:var(--muted)}
.welcome-heading i,#welcome-description>span{color:#f0e2c4}
@media(max-width:760px){:root{--forest37-position:30% center}}

/* 统一背景上的相册节奏：标题成组，照片相邻，章节之间适度留白。 */
.new-album .section-pad{padding-top:48px;padding-bottom:40px}
.new-album .album-heading{display:flex;flex-direction:column;align-items:center;gap:10px;max-width:1000px;margin:0 auto 28px;text-align:center}
.new-album .album-heading h2{font-size:clamp(26px,3.2vw,40px);line-height:1.5;text-wrap:balance}
.new-album .album-heading p{margin:0;max-width:32em;font-size:18px;line-height:1.85;color:var(--muted);text-wrap:pretty}
.new-album .spring-layout{align-items:start;column-gap:28px}
.new-album .spring-pair{margin-top:48px}
.new-album .spring-pair figure:last-child{padding-top:48px}
.new-album .forest-duo figure:last-child{margin-top:32px}
.album18 .forest-panels{margin-top:36px;row-gap:32px}
.album18 .studio-intro{margin-bottom:36px}
.album18 .studio-pair figure:last-child{margin-top:32px}
.album18 .studio-finale{margin-top:36px}
.new-album .album-signoff{margin-top:28px}
@media(max-width:760px){
 .new-album .section-pad{padding-top:32px;padding-bottom:28px}
 .new-album .album-heading{gap:8px;margin-bottom:22px}
 .new-album .album-heading p{font-size:16px;line-height:1.85}
 .new-album .spring-layout{row-gap:24px}
 .new-album .spring-pair{margin-top:0}
 .new-album .spring-pair figure:last-child{padding-top:24px}
 .new-album .forest-duo figure:last-child{margin-top:24px}
 .album18 .forest-panels{margin-top:28px;row-gap:24px}
 .album18 .studio-intro{margin-bottom:24px}
 .album18 .studio-pair figure:last-child{margin-top:24px}
 .album18 .studio-finale{margin-top:28px}
 .new-album .album-signoff{margin-top:24px}
}
