/* A warm paper invitation, with the original poster as the landscape. */
:root{--paper:#f7f3e9;--green:#183f3b;--gold:#ab7c32;--ink:#314c46;--muted:#72786c;--line:#d9d7c6;--serif:"Songti SC","STSong","Noto Serif CJK SC",serif;--sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:35px}body{margin:0;background:var(--paper);color:var(--green);font-family:var(--sans);-webkit-font-smoothing:antialiased}body:has(dialog[open]){overflow:hidden}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:6px}::selection{background:#e4d3a5}h1,h2,h3,p{margin:0}h2{font-family:var(--serif);font-weight:400;font-size:clamp(32px,4vw,52px);line-height:1.6;letter-spacing:.07em}.progress{position:fixed;top:0;left:0;width:100%;height:3px;background:var(--gold);transform:scaleX(0);transform-origin:left;z-index:30}.masthead{position:absolute;z-index:5;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:space-between;padding:32px 5%}.brand{font-family:var(--serif);font-size:20px;letter-spacing:.12em}.brand span{display:block;font:8px var(--sans);letter-spacing:.26em;margin-top:8px}.header-link{font-size:12px;letter-spacing:.12em}.header-link span{margin-left:12px;color:var(--gold)}.hero{position:relative;min-height:880px;height:100svh;max-height:1100px;isolation:isolate;overflow:hidden;background:radial-gradient(ellipse at 70% 20%,#fdfaf1,transparent 65%),var(--paper)}.hero-content{position:relative;z-index:2;text-align:center;padding-top:145px}.eyebrow{font-size:10px;letter-spacing:.28em;line-height:1.8;color:var(--gold)}.invitation-label{display:flex;align-items:center;justify-content:center;gap:18px;font-size:11px;letter-spacing:.18em;margin:24px 0 12px}.invitation-label span{height:1px;width:38px;background:#bdac83}.hero h1{font-family:var(--serif);font-size:clamp(72px,9vw,118px);font-weight:400;letter-spacing:.12em;line-height:1.35;padding-left:.12em}.hero h1 span{color:var(--gold)}.hero-subtitle{font-family:var(--serif);font-size:clamp(19px,2.4vw,27px);letter-spacing:.34em;padding-left:.34em;margin-top:8px}.hero-line{font-size:13px;letter-spacing:.16em;margin-top:26px;color:#617063}.hero-date{margin:32px auto 0;display:flex;align-items:center;justify-content:center;gap:24px}.hero-date span{font-size:11px;letter-spacing:.16em}.hero-date b{font-family:Georgia,serif;font-size:30px;font-weight:400;letter-spacing:.12em;border-left:1px solid #c9bea4;border-right:1px solid #c9bea4;padding:0 25px}.scroll-cue{display:inline-flex;flex-direction:column;gap:9px;margin-top:32px;font-size:10px;letter-spacing:.2em}.scroll-cue i{font-style:normal;font-size:21px;animation:cue 2.6s ease-in-out infinite}.hero-scenery{position:absolute;bottom:0;width:100%;height:38%;background-image:linear-gradient(var(--paper),#f7f3e900 30%),url('assets/poster.jpg');background-position:center bottom;background-size:100% 100%,auto max(880px,75vw);background-repeat:no-repeat;z-index:-1}.scene-caption{position:absolute;bottom:28px;left:5%;right:5%;display:flex;justify-content:space-between;font-size:8px;letter-spacing:.25em;color:white;text-shadow:0 1px 5px #274134}.falling-leaves{position:absolute;inset:0;pointer-events:none;z-index:1}.falling-leaves i{position:absolute;top:-65px;left:8%;width:35px;height:35px;background:url('assets/leaf.svg') center/contain no-repeat;opacity:0;animation:fall 19s linear infinite}.falling-leaves i:nth-child(2){left:28%;width:20px;animation-delay:-12s;animation-duration:23s}.falling-leaves i:nth-child(3){left:82%;width:30px;animation-delay:-7s;animation-duration:21s}.falling-leaves i:nth-child(4){left:64%;width:18px;animation-delay:-16s;animation-duration:25s}.falling-leaves i:nth-child(5){left:93%;width:24px;animation-delay:-3s;animation-duration:27s}.section-pad{padding:100px max(6%,calc((100vw - 1080px)/2))}.section-number{font-size:10px;letter-spacing:.18em;color:var(--gold);margin-bottom:60px;display:flex;align-items:center;gap:20px}.section-number:after{content:"";height:1px;width:60px;background:#c9b994}.letter{background:linear-gradient(115deg,#f7f3e9,#fcf9f2)}.letter-layout{display:grid;grid-template-columns:1fr 1.15fr;gap:70px}.leaf-mark{width:54px;height:54px;object-fit:contain;margin-bottom:25px}.letter-heading h2{line-height:1.7}.small-english{font:italic 13px Georgia,serif;color:var(--gold);letter-spacing:.1em;margin-top:30px}.letter-copy{font-size:15px;line-height:2.4;letter-spacing:.06em}.letter-copy p{margin-bottom:25px}.salutation{color:var(--gold)}.letter-emphasis{color:var(--green)}.signature{font-family:var(--serif);font-size:19px;margin-top:35px;border-top:1px solid var(--line);padding-top:25px}.signature span{font-family:var(--sans);font-size:11px;margin-left:15px;color:var(--muted)}.atmosphere{position:relative;min-height:520px;display:flex;align-items:center;isolation:isolate;overflow:hidden;background:#284742;color:#fff7e7}.atmosphere-scenery{position:absolute;inset:0;z-index:-1;background-image:linear-gradient(90deg,#163b38e0,#14312d55),url('assets/poster.jpg');background-size:100% 100%,auto max(1450px,90vw);background-position:center,bottom center}.atmosphere-content{padding:80px max(6%,calc((100vw - 1080px)/2));width:100%}.atmosphere .eyebrow{color:#e6c787}.atmosphere h2{font-size:clamp(42px,5.5vw,68px);margin-top:20px;line-height:1.5}.atmosphere p:not(.eyebrow){font-size:13px;line-height:2.4;letter-spacing:.13em;margin-top:24px}.music-line{display:flex;align-items:center;gap:16px;color:#e6c787;margin-top:27px;font-size:25px}.music-line i{width:140px;height:1px;background:#e6c78788}.section-heading{display:flex;align-items:flex-end;justify-content:space-between}.section-heading p{font-size:9px;letter-spacing:.2em;color:var(--gold);padding-bottom:14px}.moment-grid{margin-top:58px;display:grid;grid-template-columns:repeat(3,1fr);gap:38px}.moment{border-top:1px solid var(--line);padding-top:22px}.moment-icon{display:flex;align-items:center;justify-content:space-between;color:var(--gold);font:italic 14px Georgia,serif}.moment-icon svg{width:65px;height:65px;fill:none;stroke:var(--gold);stroke-width:1.2}.moment h3{font-family:var(--serif);font-size:25px;font-weight:400;letter-spacing:.08em;margin:25px 0 15px}.moment p{font-size:13px;line-height:2.2;color:#687366}.moment small{display:block;font-size:8px;letter-spacing:.17em;color:var(--gold);margin-top:30px}.details{background:#eeeddf}.details-layout{display:grid;grid-template-columns:1fr 1.15fr;gap:70px}.details h2{margin-top:20px}.large-date{font:96px Georgia,serif;letter-spacing:-.04em;color:var(--gold);margin-top:24px}.large-date span{font-size:55px;margin:0 13px;color:#c0ad82}.date-foot{font-size:12px;letter-spacing:.2em;margin-top:8px}.calendar-link{display:inline-flex;gap:25px;font-size:12px;letter-spacing:.08em;border-bottom:1px solid var(--gold);padding-bottom:10px;margin-top:30px}.calendar-link span{color:var(--gold)}.detail-list{margin:0;padding:0}.detail-list div{display:grid;grid-template-columns:85px 1fr;gap:20px;border-bottom:1px solid #cfcebb;padding:24px 0}.detail-list dt{font-size:11px;color:#747c6c;line-height:2}.detail-list dd{margin:0;font-size:15px;line-height:1.9;letter-spacing:.04em}.share-layout{display:grid;grid-template-columns:1.25fr 1fr;gap:70px;align-items:center}.share-section h2{margin-top:20px}.share-copy>p:not(.eyebrow){font-size:13px;line-height:2.3;margin-top:24px;color:#667162}.button{display:inline-flex;gap:32px;align-items:center;justify-content:center;border:1px solid var(--green);padding:16px 25px;font-size:12px;letter-spacing:.12em;transition:background .2s,transform .2s}.button:hover{transform:translateY(-2px)}.button-dark{background:var(--green);color:#fff8e8}.share-copy .button{margin-top:28px}.share-copy .share-note{font-size:10px;color:var(--muted);margin-top:14px}.closing{text-align:center;background:radial-gradient(ellipse at center,#fffaf0,transparent 65%),#f1ecdf;border-top:1px solid #e5ddc9}.closing .leaf-mark{width:45px;margin-bottom:20px}.closing h2{font-size:clamp(40px,5vw,62px);margin:28px 0 20px}.closing>p:not(.eyebrow){font-size:12px;letter-spacing:.18em}.closing-date{display:block;font:22px Georgia,serif;letter-spacing:.14em;color:var(--gold);margin-top:24px}.closing-host{font-family:var(--serif);font-size:15px;letter-spacing:.1em;margin-top:45px}footer{display:flex;justify-content:space-between;padding:25px 6% 100px;font-size:9px;letter-spacing:.12em;color:var(--muted)}.bottom-bar{position:fixed;bottom:0;left:0;right:0;z-index:10;display:flex;align-items:center;justify-content:space-between;background:#f7f3e9f5;backdrop-filter:blur(15px);border-top:1px solid #dfd7c4;padding:12px max(6%,calc((100vw - 1080px)/2)) calc(12px + env(safe-area-inset-bottom));box-shadow:0 -4px 30px #173a3405}.bottom-bar>a{font:22px Georgia,serif;color:var(--gold)}.bottom-bar>a span{font:11px var(--sans);color:var(--green);margin-left:12px;letter-spacing:.1em}.bottom-bar button{border:0;padding:13px 25px;background:var(--green);color:var(--paper);font-size:11px;letter-spacing:.12em}.bottom-bar button span{margin-left:24px}dialog{border:1px solid #d5c6a7;background:var(--paper);color:var(--green);padding:50px 30px 30px;width:min(90vw,440px);max-height:88svh;overflow:auto;box-shadow:0 20px 90px #11272244}dialog::backdrop{background:#153b38a8;backdrop-filter:blur(6px)}.dialog-close{position:absolute;right:12px;top:10px;border:0;background:none;color:var(--green);font-size:27px;width:36px;height:36px}.dialog-close:hover{background:#eae5d7}#share-dialog h2{font-size:30px;margin-top:22px}#share-instructions{font-size:13px;line-height:2.2;margin-top:24px}.share-arrow{position:absolute;right:28px;top:60px;font-size:36px;color:var(--gold)}#copy-link{margin-top:25px;width:100%}.link-label{display:block;font-size:10px;color:var(--muted);margin:20px 0 8px}#share-url{width:100%;min-width:0;border:1px solid #d5c6a7;background:#fffaf2;font-size:11px;color:var(--green);padding:12px}.copy-status{min-height:35px;font-size:11px;line-height:1.8;color:var(--gold);margin-top:12px}.will-reveal{opacity:0;transform:translateY(24px);transition:opacity 1s ease,transform 1s ease}.will-reveal.visible{opacity:1;transform:translateY(0)}.moment:nth-child(2){transition-delay:.12s}.moment:nth-child(3){transition-delay:.24s}@keyframes cue{0%,100%{transform:translateY(0)}50%{transform:translateY(7px)}}@keyframes fall{0%{transform:translate(0,-20px) rotate(-25deg);opacity:0}8%{opacity:.55}45%{transform:translate(45px,45vh) rotate(80deg)}90%{opacity:.4}100%{transform:translate(-25px,110vh) rotate(200deg);opacity:0}}
.hero-venue{font-size:11px;letter-spacing:.06em;color:var(--muted);margin-top:18px}.hero-date span{white-space:nowrap}.hero-content .scroll-cue{margin-top:23px}.venue-address{font-size:12px;color:var(--muted)}.venue-module{margin-top:65px;border-top:1px solid #cfcebb;padding-top:40px}.venue-intro h3{font:400 28px/1.6 var(--serif);letter-spacing:.06em;margin:12px 0}.venue-intro>p:last-child{font-size:12px;color:var(--muted);line-height:2}.venue-map{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;margin-top:25px;min-height:280px;overflow:hidden;border:1px solid #d3d0b8;background:radial-gradient(ellipse at center,#fdfaf0 0 19%,transparent 20%),repeating-radial-gradient(ellipse at center,#dedcc33d 0 1px,transparent 2px 48px),#e8e8d8;isolation:isolate}.venue-map:before{content:"";position:absolute;width:130px;height:130px;border:1px solid #b6aa7b55;border-radius:50%;top:25px;z-index:-1}.venue-compass{position:absolute;right:22px;top:20px;font:11px Georgia,serif;color:var(--gold);letter-spacing:.12em}.venue-pin svg{width:37px;height:47px;fill:var(--green);stroke:var(--paper);stroke-width:1.5}.venue-map strong{font:400 25px/1.6 var(--serif);margin-top:13px;letter-spacing:.07em}.venue-map-address{font-size:11px;letter-spacing:.08em;margin-top:7px;color:var(--muted)}.venue-map-action{font-size:10px;letter-spacing:.08em;margin-top:25px;color:var(--gold);border-bottom:1px solid #c7b17b;padding-bottom:7px}.navigation-links{display:flex;gap:15px;margin-top:20px}.navigation-links .button{flex:1}.navigation-note{font-size:10px;line-height:2;color:var(--muted);margin-top:15px;max-width:680px}.closing .closing-venue{margin-top:18px;font-size:11px}
@media(min-width:1600px){.hero-scenery{background-size:100% 100%,100% auto}}
@media(max-width:700px){.masthead{padding:25px 24px}.brand{font-size:16px}.brand span{font-size:7px}.header-link{font-size:10px}.hero{height:100svh;min-height:790px;max-height:980px}.hero-content{padding:125px 20px 0}.hero .eyebrow{font-size:8px;letter-spacing:.2em}.invitation-label{margin-top:25px;font-size:10px}.hero h1{font-size:76px;letter-spacing:.07em}.hero-subtitle{font-size:18px;letter-spacing:.18em;margin-top:14px}.hero-line{font-size:11px;letter-spacing:.05em;margin-top:22px}.hero-date{gap:17px;margin-top:28px}.hero-date b{font-size:26px;padding:0 18px}.hero-date span{font-size:10px}.scroll-cue{margin-top:29px;font-size:9px}.hero-scenery{height:34%;background-size:100% 100%,auto 800px}.scene-caption{bottom:22px;left:24px;right:24px;font-size:7px}.section-pad{padding:68px 28px}.section-number{font-size:9px;margin-bottom:36px;gap:16px}.section-number:after{width:40px}.letter-layout,.details-layout,.share-layout{grid-template-columns:1fr;gap:35px}.letter-heading{position:relative}.letter-heading .leaf-mark{position:absolute;right:8px;top:20px;width:60px;transform:rotate(14deg);opacity:.8}.letter-heading h2{font-size:37px}.small-english{margin-top:18px;font-size:11px}.letter-copy{font-size:13px;line-height:2.45;letter-spacing:.035em}.letter-copy p{margin-bottom:23px}.signature{font-size:17px;margin-top:30px}.atmosphere{min-height:490px}.atmosphere-content{padding:65px 28px}.atmosphere-scenery{background-image:linear-gradient(90deg,#163b38d9,#14312d44),url('assets/poster.jpg');background-size:100% 100%,auto 1700px;background-position:center,bottom 0 right 32%}.atmosphere h2{font-size:46px}.atmosphere p:not(.eyebrow){font-size:12px;letter-spacing:.05em}.section-heading{display:block}.section-heading h2{font-size:32px}.section-heading p{margin-top:20px;padding:0;font-size:8px}.moment-grid{grid-template-columns:1fr;gap:30px;margin-top:38px}.moment{position:relative;padding-top:20px;padding-right:62px}.moment-icon svg{position:absolute;right:0;top:24px;width:53px;height:53px}.moment h3{font-size:25px;margin-top:17px;margin-bottom:12px}.moment p{font-size:12px;line-height:2}.moment small{margin-top:17px;font-size:7px}.details h2{font-size:36px}.large-date{font-size:86px;margin-top:15px}.large-date span{font-size:48px}.date-foot{font-size:10px}.calendar-link{font-size:11px;margin-top:25px}.detail-list div{padding:20px 0;grid-template-columns:72px 1fr;gap:12px}.detail-list dd{font-size:13px}.detail-list dt{font-size:10px}.share-layout{gap:43px}.share-section h2{font-size:36px}.share-copy>p:not(.eyebrow){font-size:12px}.closing h2{font-size:42px}.closing .eyebrow{font-size:8px}.closing>p:not(.eyebrow){font-size:10px;letter-spacing:.1em}.closing-date{font-size:20px}.closing-host{font-size:13px}footer{padding:24px 28px 105px;font-size:8px}.bottom-bar{padding:10px 20px calc(10px + env(safe-area-inset-bottom))}.bottom-bar>a{font-size:22px}.bottom-bar>a span{font-size:10px;margin-left:8px}.bottom-bar button{padding:13px 17px;font-size:10px}.bottom-bar button span{margin-left:17px}}
@media(max-width:360px){.hero h1{font-size:65px}.hero-subtitle{font-size:16px}.section-pad{padding-left:23px;padding-right:23px}.bottom-bar>a span{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.falling-leaves{display:none}.will-reveal{opacity:1;transform:none}}

@media(max-width:700px){.hero-venue{font-size:10px;letter-spacing:0;margin-top:16px}.hero-date{gap:12px}.hero-date b{padding:0 13px}.hero-content .scroll-cue{margin-top:20px}.venue-module{margin-top:40px;padding-top:30px}.venue-intro h3{font-size:25px}.venue-intro>p:last-child{font-size:11px}.venue-map{min-height:265px}.navigation-links{gap:10px}.navigation-links .button{font-size:10px;padding:14px 10px;gap:12px;letter-spacing:.04em}.navigation-note{font-size:9px}.closing .closing-venue{font-size:9px;letter-spacing:0}.bottom-bar>a span{font-size:9px}}


/* ---------- 背景音乐按钮 ---------- */
.music-toggle{position:fixed;right:18px;bottom:calc(env(safe-area-inset-bottom,0px) + 84px);z-index:20;width:44px;height:44px;padding:0;border-radius:50%;border:1px solid #dfd7c4;background:#f7f3e9f2;color:var(--green);display:inline-flex;align-items:center;justify-content:center;font-size:19px;line-height:1;box-shadow:0 6px 18px rgba(63,93,67,.15);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:transform .3s ease,color .3s ease,box-shadow .3s ease}
.music-toggle .music-note{display:block;transform:translateY(-1px)}
.music-toggle:active{transform:scale(.92)}
.music-toggle.is-playing{color:var(--gold);box-shadow:0 6px 20px rgba(63,93,67,.22)}
.music-toggle.is-playing .music-note{animation:bgm-breathe 2.6s ease-in-out infinite}
@keyframes bgm-breathe{0%,100%{opacity:.72;transform:translateY(-1px) scale(1)}50%{opacity:1;transform:translateY(-1px) scale(1.1)}}
@media (max-width:700px){.music-toggle{right:14px;bottom:calc(env(safe-area-inset-bottom,0px) + 78px);width:40px;height:40px;font-size:17px}}
@media (prefers-reduced-motion:reduce){.music-toggle.is-playing .music-note{animation:none}}


/* ---------- 微信转发引导遮罩 ---------- */
.wechat-guide{position:fixed;inset:0;z-index:60;display:flex;flex-direction:column;align-items:center;text-align:center;padding:0 34px;background:rgba(16,24,19,.8);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);color:#f7f3e9;animation:guide-fade .3s ease}
.wechat-guide[hidden]{display:none}
.wechat-guide__arrow{position:absolute;top:calc(env(safe-area-inset-top,0px) + 4px);right:16px;display:flex;align-items:center;gap:6px}
.wechat-guide__dots{font-size:29px;line-height:1;letter-spacing:.08em;color:#3f5d43;background:#f7f3e9;border-radius:999px;padding:0 11px 9px;box-shadow:0 0 0 7px rgba(247,243,233,.16)}
.wechat-guide__hand{font-size:33px;line-height:1;color:var(--gold);animation:guide-nudge 1.5s ease-in-out infinite}
@keyframes guide-nudge{0%,100%{transform:translate(7px,7px);opacity:.5}50%{transform:translate(-2px,-2px);opacity:1}}
.wechat-guide__title{margin:calc(env(safe-area-inset-top,0px) + 96px) 0 0;font-size:19px;letter-spacing:.1em}
.wechat-guide__text{margin:15px 0 0;font-size:15px;line-height:2.1;color:#e9e2cf}
.wechat-guide__copy{margin-top:38px;padding:13px 32px;border:1px solid rgba(247,243,233,.45);border-radius:999px;background:transparent;color:#f7f3e9;font-size:14px;letter-spacing:.12em}
.wechat-guide__copy:active{background:rgba(247,243,233,.12)}
.wechat-guide__status{margin:14px 0 0;width:100%;min-height:20px;font-size:13px;color:var(--gold)}
.wechat-guide__close{margin:auto 0 calc(env(safe-area-inset-bottom,0px) + 48px);font-size:12px;letter-spacing:.2em;color:rgba(247,243,233,.5)}
@keyframes guide-fade{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.wechat-guide{animation:none}.wechat-guide__hand{animation:none}}
