:root{--paper:#F3EDDF;--paper-light:#FCFAF4;--ink-green:#29443A;--forest:#29443A;--ink:#262824;--wax-red:#9A443D;--antique-gold:#AD9565;--brass:#AD9565;--morning:var(--paper);--linen:var(--paper);--ivory:var(--paper-light);--wax:var(--wax-red);--sage:var(--ink-green);--deep:var(--ink-green);--gold:var(--antique-gold);--antique:var(--antique-gold);--plum:var(--ink-green);--white:var(--paper-light);--wine:var(--wax-red);--warm:var(--antique-gold);--line:color-mix(in srgb,var(--ink) 16%,transparent)}
body{overflow-x:clip;background:var(--paper);color:var(--ink);font-size:16px;line-height:1.8}
main{position:relative;width:min(1120px,100%);margin:auto;background:var(--paper-light);box-shadow:0 0 45px rgba(40,40,36,.06)}
main:before{content:"";position:absolute;z-index:4;top:0;bottom:0;left:50%;width:1px;pointer-events:none;background:rgba(40,40,36,.045)}
main:after{content:"";position:absolute;z-index:3;top:4%;bottom:9%;left:max(18px,3vw);width:1px;pointer-events:none;background:color-mix(in srgb,var(--wax-red) 28%,transparent)}
.fold,.ceremony-moment,.reply-scene,.final-fold{border-top:1px solid rgba(40,40,36,.09);box-shadow:inset 0 12px 20px rgba(40,40,36,.025)}
.fold{background-color:var(--paper-light);background-image:none}
.fold-number{top:34px;right:26px;color:var(--antique-gold);font:10px var(--mono);letter-spacing:.12em}
.fold-announcement .fold-number:after{content:"  展信"}.fold-journey .fold-number:after{content:"  赴约"}.fold-stay .fold-number:after{content:"  抵达"}.reserved-seat .fold-number:after{content:"  入席"}.little-story .fold-number:after{content:"  故事"}
.journey-copy h2,.fold-stay h2,.seat-copy h2,.story-copy h2{font-size:clamp(34px,4vw,56px)}
.program-fold h2,.practical-fold h2,.reply-heading h2{font-size:clamp(28px,3vw,42px)}
.fold-announcement h2,.ceremony-copy h2{font-size:clamp(48px,7vw,88px)}
.eyebrow{color:var(--ink-green)}
.fold-journey{background-color:var(--paper)}.fold-stay{background-color:var(--paper-light)}.ceremony-moment{background:var(--paper-light)}.reserved-seat{background:var(--paper)}.little-story{background:var(--paper-light)}.program-fold{background:var(--paper-light)}.practical-fold{background:var(--paper)}.reply-scene{background:linear-gradient(180deg,var(--paper) 0,var(--ink-green) 20%)}.final-fold{background:var(--paper)}
.ticket,.venue-card,.hotel-card,.reply-card,.final-paper,.gallery-item{border:0;box-shadow:0 10px 24px rgba(40,40,36,.07)}
.ticket{background:var(--paper-light);border-left:2px solid var(--wax-red);transform:none}.route-map{border-color:rgba(35,58,50,.18)}.route-map svg{stroke:var(--wax-red);stroke-dasharray:none}.route-map circle{fill:var(--wax-red)}
.primary-button,.share-button{background:var(--wax-red)}
.announcement-copy strong,.fold-announcement time,.meal-times b,.schedule time{color:var(--wax-red)}
.chapter-progress{right:8px;gap:7px;width:62px;padding:12px 6px;border-radius:0;background:rgba(255,253,247,.86)}
.chapter-progress a{width:auto;height:auto;border:0;border-radius:0;overflow:visible;text-indent:0;color:var(--ink-green);font:8px var(--mono);text-align:right;text-decoration:none;opacity:.42;white-space:nowrap}
.chapter-progress a.active{color:var(--wax-red);background:none;transform:none;opacity:1}
.music-control{width:36px;min-width:36px;height:36px;min-height:36px;border-color:var(--antique-gold);background:rgba(255,253,247,.88)}
.music-control span{color:var(--ink-green);font-size:12px}
.morning-desk{place-items:end center;padding-bottom:10vh;background:linear-gradient(120deg,var(--paper),var(--paper-light) 58%,var(--paper))}
.sunbeam,.plant-shadow,.desk-still-life,.photo-peek,.envelope-flap,.pulled-letter,.meeting-lines,.ceremony-glow,.reply-stamp{pointer-events:none}.fountain-pen{display:none}
.sealed-envelope{width:min(86vw,760px);transform:rotate(-1.2deg);margin-bottom:4vh}
.envelope-address{display:block;padding:0;background:var(--paper-light);text-align:left}
.envelope-address h1{position:absolute;z-index:7;left:9%;bottom:18%;margin:0;font-size:clamp(17px,2.4vw,28px);letter-spacing:.08em}
.envelope-address p{position:absolute;z-index:7;left:9%;bottom:10%;margin:0;color:var(--ink-green);font-size:9px}
.envelope-flap{background:var(--paper);clip-path:polygon(0 0,50% 53%,100% 0)}
.wax-seal{top:51%;left:50%;width:66px;background:var(--wax-red)}
.wax-seal span{font:15px var(--display);letter-spacing:.05em}
.stamp{right:10vw;bottom:auto;top:14vh;width:96px;color:var(--antique-gold);border:1px solid var(--antique-gold);border-radius:50%;font-size:9px;transform:rotate(7deg)}
.silk-ribbon{left:auto;right:-8vw;bottom:7vh;width:42vw;height:3px;border:0;background:var(--wax-red);transform:rotate(-12deg)}
.photo-peek{position:absolute;z-index:0;left:19vw;bottom:2vh;width:180px;height:220px;padding:8px;background:var(--paper-light);transform:rotate(7deg);box-shadow:0 8px 22px rgba(40,40,36,.1);overflow:hidden}
.photo-peek img{width:100%;height:100%;object-fit:cover}
.open-prompt{bottom:3vh;padding:8px 0;color:var(--ink-green);border-bottom:1px solid var(--antique-gold);letter-spacing:.12em}
.side-picker{gap:14px}
.side-card{min-height:136px;padding:24px;border:1px solid var(--antique-gold);background:var(--paper-light);clip-path:polygon(0 0,calc(100% - 20px) 0,100% 20px,100% 100%,0 100%)}
.side-card:has(input:checked){border:1px solid var(--ink-green);color:var(--paper-light);background:var(--ink-green);box-shadow:none}
.side-card strong{color:var(--ink-green)}.side-card:has(input:checked) strong{color:var(--paper-light)}
.side-seal{background:var(--wax-red)}
.hotel-placeholder{border-color:var(--antique-gold);color:var(--ink-green)}
.hotel-card{border-left:2px solid var(--wax-red);background:var(--paper-light)}
.choice-grid input:checked+span{border-color:var(--ink-green);color:var(--paper-light);background:var(--ink-green)}
.field input:focus,.field textarea:focus{border-color:var(--ink-green);box-shadow:0 2px 0 var(--ink-green)}
.table-scene{min-height:560px;overflow:hidden;background:linear-gradient(112deg,var(--paper),var(--paper-light));box-shadow:inset 0 0 60px color-mix(in srgb,var(--ink) 6%,transparent)}
.table-scene:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 7px,color-mix(in srgb,var(--brass) 4%,transparent) 8px);pointer-events:none}
.plate{left:-13%;top:11%;width:72%;background:radial-gradient(circle,var(--paper-light) 0 43%,var(--brass) 44% 44.5%,var(--paper-light) 45% 68%,transparent 69%)}
.glass{right:9%;top:8%;width:112px;border-color:color-mix(in srgb,var(--brass) 44%,transparent);box-shadow:inset 0 0 0 8px color-mix(in srgb,var(--paper-light) 65%,transparent)}
.place-card{right:8%;bottom:22%;min-width:210px;padding:32px 26px;border-top:1px solid var(--brass);background:var(--paper-light);box-shadow:0 12px 28px color-mix(in srgb,var(--ink) 10%,transparent)}
.place-card:after{content:"";position:absolute;right:-45px;top:50%;width:60px;height:1px;background:var(--wax-red);transform:rotate(12deg)}
.reply-card{background:var(--paper-light)}
.reply-stamp{border-color:var(--wax-red);color:var(--wax-red)}
.music-note-card{background:var(--paper-light)}
.practical-grid{background:rgba(35,58,50,.12)}.practical-grid article{background:var(--paper)}
.ceremony-photo:after{background:linear-gradient(90deg,transparent 65%,var(--paper-light))}.ceremony-copy{background:color-mix(in srgb,var(--paper-light) 88%,transparent)}.meeting-lines b{background:color-mix(in srgb,var(--paper-light) 90%,transparent)}
.final-paper{background:var(--paper-light)}.skip-link{background:var(--forest);color:var(--paper-light)}
.gallery-item{overflow:hidden;aspect-ratio:4/5}.gallery-item.landscape{aspect-ratio:3/2}.gallery-item img{width:100%;height:100%;object-fit:cover;object-position:center 30%}.gallery-item.placeholder{position:relative;background:linear-gradient(145deg,var(--paper),var(--paper-light))}.gallery-item.placeholder:after{content:"";position:absolute;inset:12%;border:1px solid color-mix(in srgb,var(--brass) 38%,transparent)}
.form-status[data-state=error]{color:var(--wax-red)}.form-status[data-state=success]{color:var(--ink-green)}
.side-summary{display:flex;align-items:center;justify-content:space-between;margin:10px 0 0;padding:16px 0;border-block:1px solid var(--brass);color:var(--forest)}.side-summary button{border:0;border-bottom:1px solid var(--wax-red);padding:6px 0;color:var(--wax-red);background:none;cursor:pointer}.side-summary[hidden],.side-picker[hidden]{display:none}
.form-status[data-state=success]{display:grid;gap:4px;margin-top:22px;text-align:center}.form-status[data-state=success] strong{font:11px var(--mono);letter-spacing:.2em;color:var(--wax-red)}.form-status[data-state=success] span{font-size:16px}.form-status[data-state=success] small{font-size:11px;color:var(--ink)}
.reply-card.sent .primary-button{width:64px;min-width:64px;height:64px;min-height:64px;margin:20px auto 0;padding:0;border-radius:50%;font:16px var(--display);letter-spacing:.04em}.reply-card.sent .reply-stamp{display:none}
.field label,.field legend{font-size:14px}.field small,.hotel-sync{font-size:14px}
@media(max-width:760px){
  .chapter-progress{left:auto;right:4px;top:50%;bottom:auto;translate:0 -50%;display:grid;width:49px;gap:6px;padding:8px 4px;background:rgba(255,253,247,.8)}
  .chapter-progress a{width:auto;height:auto;font-size:7px;writing-mode:horizontal-tb}
  .morning-desk{padding-bottom:12vh}
  .sealed-envelope{width:86vw;margin-bottom:8vh}
  .envelope-address h1{left:8%;bottom:20%;max-width:72%;font-size:15px;white-space:nowrap}
  .envelope-address p{left:8%;bottom:10%;font-size:7px;letter-spacing:.12em}
  .wax-seal{width:54px}
  .stamp{right:5vw;top:13vh;width:72px;font-size:7px}
  .photo-peek{left:8vw;bottom:4vh;width:110px;height:140px}
  .silk-ribbon{right:-12vw;bottom:8vh;width:55vw}
  .open-prompt{bottom:3vh}
  .fold-number{top:24px;right:18px;font-size:8px}
  .fold-announcement h2,.ceremony-copy h2{font-size:clamp(36px,12vw,48px)}
  .journey-copy h2,.fold-stay h2,.seat-copy h2,.story-copy h2{font-size:clamp(28px,9vw,34px)}
  .program-fold h2,.practical-fold h2,.reply-heading h2{font-size:28px;max-width:100%;margin-left:0}
  .little-story,.story-copy,.story-photos,.program-fold{min-width:0;max-width:100%}
  .story-copy p{overflow-wrap:anywhere}
  .reply-scene{background:linear-gradient(180deg,var(--paper) 0,var(--ink-green) 16%)}
  .ceremony-photo:after{background:linear-gradient(180deg,transparent 55%,var(--paper-light))}.ceremony-copy{background:linear-gradient(180deg,color-mix(in srgb,var(--paper-light) 75%,transparent),var(--paper-light) 22%)}
  .table-scene{min-height:430px}.plate{left:-25%;top:14%;width:86%}.glass{right:6%;width:84px}.place-card{right:7%;bottom:18%;min-width:185px}.meal-times span{padding:16px 8px}.chapter-progress{pointer-events:none}.chapter-progress a{pointer-events:auto}
}
