:root{--ink:#3a2624;--muted:#806b67;--paper:#fffaf5;--blush:#f6e5df;--red:#b63d3d;--red-deep:#8f292f;--gold:#c49b63;--line:rgba(58,38,36,.14)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#d7c3ba;color:var(--ink);font-family:"Noto Serif SC",serif}.invitation{max-width:680px;margin:0 auto;background:var(--paper);overflow:hidden;box-shadow:0 0 42px rgba(65,34,26,.18)}
.music-toggle{position:fixed;z-index:20;top:17px;right:max(17px,calc((100vw - 680px)/2 + 17px));display:flex;align-items:center;gap:8px;border:1px solid rgba(255,255,255,.72);padding:6px 11px 6px 6px;border-radius:999px;background:rgba(92,32,31,.42);color:#fff;backdrop-filter:blur(12px);cursor:pointer;font:12px "Noto Serif SC",serif}.music-ring{width:28px;height:28px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.85);border-radius:50%}.music-icon{font-size:15px;line-height:1}.music-toggle.is-playing .music-ring{animation:spin 4s linear infinite}.music-toggle.is-playing .music-icon{color:#ffd7ca}.music-label{opacity:.94}
.hero{position:relative;min-height:100svh;background:var(--red-deep);color:#fff}.hero-image-wrap,.hero-image,.hero-wash{position:absolute;inset:0;width:100%;height:100%}.hero-image{object-fit:cover;object-position:center 32%;filter:saturate(.76)}.hero-wash{background:linear-gradient(180deg,rgba(78,17,18,.22),rgba(78,17,18,.08) 44%,rgba(47,12,16,.87))}.hero:before{content:"囍";position:absolute;z-index:1;top:25px;left:23px;color:rgba(255,245,224,.74);font-size:32px;font-family:"Noto Serif SC",serif}.hero-content{position:relative;z-index:2;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;text-align:center;padding:28px 24px 41px}.hero-content:before{content:"";position:absolute;left:18px;right:18px;bottom:21px;height:58%;border:1px solid rgba(255,231,203,.55);border-bottom:0;pointer-events:none}.hero-content:after{content:"";position:absolute;left:29px;right:29px;bottom:32px;height:58%;border:1px solid rgba(255,231,203,.25);border-bottom:0;pointer-events:none}.eyebrow{font:11px/1.8 Arial,sans-serif;letter-spacing:.25em;opacity:.85}.hero h1{margin:10px 0 12px;font-family:"ZCOOL XiaoWei","Noto Serif SC",serif;font-size:clamp(38px,10vw,67px);font-weight:400;letter-spacing:.11em;text-shadow:0 2px 16px rgba(0,0,0,.16)}.hero h1 span{font-family:Georgia,serif;font-size:.47em;font-style:italic;vertical-align:middle;margin:0 .12em}.hero-note{font-size:15px;line-height:2;letter-spacing:.15em;margin:0;color:rgba(255,247,235,.95)}.scroll-cue{margin-top:39px;font-size:11px;letter-spacing:.12em;opacity:.76}.scroll-cue span{display:inline-block;width:1px;height:31px;background:#fff3df;vertical-align:middle;margin-right:11px;animation:scroll 1.8s ease-in-out infinite}
.section{padding:76px 27px}.section-kicker{margin:0 0 17px;color:var(--red);font:11px Arial,sans-serif;letter-spacing:.23em}.intro{text-align:center;padding-top:91px;padding-bottom:86px;position:relative}.intro:before{content:"";position:absolute;top:46px;left:50%;width:56px;height:1px;background:var(--gold);transform:translateX(-50%)}.intro h2,.location h2{font-size:clamp(28px,7vw,43px);font-weight:500;line-height:1.5;letter-spacing:.07em;margin:0 0 23px}.intro h2 em,.location h2 em{font-style:normal;color:var(--red)}.body-copy{max-width:430px;margin:0 auto;color:var(--muted);font-size:14px;line-height:2.15}.signature{margin-top:34px;font:34px Georgia,serif;font-style:italic;letter-spacing:.14em;color:var(--red-deep)}.signature span{font:18px "Noto Serif SC",serif;color:var(--gold);margin:0 8px}
.photo-story{padding-top:20px;background:var(--blush)}.story-heading{display:flex;align-items:baseline;justify-content:space-between}.story-heading span{color:#aa847c;font:italic 12px Georgia,serif}.photo-grid{display:grid;grid-template-columns:1.04fr .96fr;gap:14px;align-items:start}.photo-card{margin:0}.photo-card img{display:block;width:100%;object-fit:cover;filter:saturate(.86);border-radius:11px;box-shadow:0 8px 20px rgba(103,53,45,.12)}.photo-card--large{grid-row:span 2}.photo-card--large img{height:468px}.photo-card--small img{height:224px}.photo-card--wide{grid-column:1/-1}.photo-card--wide img{height:255px}.photo-card figcaption{padding:10px 3px 1px;color:#8e716a;font-size:12px;letter-spacing:.07em}
.details{padding-top:74px;padding-bottom:78px}.date-block{display:flex;align-items:flex-end;gap:17px;padding:12px 0 27px;border-bottom:1px solid var(--line)}.date-number{font:96px/.8 Georgia,serif;color:var(--red);font-weight:400}.date-block div{display:flex;flex-direction:column;gap:6px;padding-bottom:3px}.date-month{font:13px Arial,sans-serif;letter-spacing:.25em}.date-year{font:12px Arial,sans-serif;letter-spacing:.18em;color:var(--muted)}.detail-list{padding-top:11px}.detail-row{display:flex;justify-content:space-between;gap:18px;padding:16px 0;border-bottom:1px solid var(--line);font-size:13px}.detail-label{color:var(--muted)}.detail-row strong{font-weight:500}
.location{padding-top:17px}.location-card{display:flex;justify-content:space-between;min-height:305px;padding:32px 27px;background:var(--red-deep);color:#fff8ef;position:relative;overflow:hidden;border-radius:16px}.location .section-kicker{color:#f1c6af}.location h2{font-size:35px;margin-bottom:17px}.location h2 em{color:#f8d8c3}.location-copy{color:#e8b9ae;font-size:13px;line-height:1.9}.map-mark{position:absolute;right:-26px;bottom:-34px;width:220px;height:220px;border:1px solid rgba(245,205,177,.45);border-radius:50%;display:grid;place-items:center;color:#f5cdb6;font-size:13px}.map-mark:before,.map-mark:after{content:"";position:absolute;border:1px solid rgba(245,205,177,.3);border-radius:50%}.map-mark:before{inset:22px}.map-mark:after{inset:49px}.map-mark span{position:absolute;width:8px;height:8px;background:#f6c6ae;border-radius:50%;top:55px;left:94px;box-shadow:0 0 0 7px rgba(246,198,174,.16)}.map-link{display:flex;justify-content:space-between;padding:17px 3px;color:var(--red);text-decoration:none;font-size:13px;letter-spacing:.08em}.map-link span{font-size:18px}.footer{text-align:center;padding:36px 20px 54px;color:var(--muted)}.footer-flower{font-size:18px;color:var(--red);margin-bottom:12px}.footer p{font-size:12px;letter-spacing:.15em;margin:0 0 22px}.footer strong{display:block;font:26px Georgia,serif;font-style:italic;letter-spacing:.17em;color:var(--ink)}.footer small{display:block;margin-top:12px;font:10px Arial,sans-serif;letter-spacing:.3em;color:#ae9b91}
.reveal{animation:rise .9s ease both}.photo-story{animation-delay:.12s}.details{animation-delay:.18s}.location{animation-delay:.24s}@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes scroll{0%,100%{transform:scaleY(.5);transform-origin:top;opacity:.4}50%{transform:scaleY(1);transform-origin:top;opacity:1}}@media (max-width:560px){.section{padding-left:21px;padding-right:21px}.photo-grid{gap:11px}.photo-card--large img{height:390px}.photo-card--small img{height:187px}.photo-card--wide img{height:215px}.music-label{display:none}.music-toggle{padding-right:7px}}@media (prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}
/* second photo chapter */
.photo-story--dress{background:#f5f4f1}.photo-story--dress .section-kicker{color:#9c8077}.photo-story--dress{animation-delay:.16s}.details{animation-delay:.2s}.location{animation-delay:.26s}
/* 日期日历 */
.calendar-card{margin:27px 0 28px;padding:20px 18px 17px;border:1px solid rgba(182,61,61,.22);border-radius:14px;background:#fffdf9;box-shadow:0 8px 24px rgba(87,45,39,.06)}.calendar-head{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:14px;border-bottom:1px solid var(--line);color:var(--red)}.calendar-head span{font:13px Arial,sans-serif;letter-spacing:.25em}.calendar-head strong{font:12px Arial,sans-serif;letter-spacing:.16em;font-weight:400;color:var(--muted)}.calendar-week,.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;align-items:center}.calendar-week{padding:14px 0 8px;color:var(--muted);font-size:11px}.calendar-days{row-gap:9px;color:var(--ink);font:13px Arial,sans-serif}.calendar-days span{width:29px;height:29px;display:grid;place-items:center;justify-self:center;border-radius:50%}.calendar-days .is-muted{color:#c6b6ae}.calendar-days .is-selected{background:var(--red);color:#fffaf5;box-shadow:0 0 0 4px rgba(182,61,61,.13);font-weight:700}.calendar-note{margin:15px 0 0;text-align:center;color:var(--red);font-size:12px;letter-spacing:.12em}
/* Inspiration: 婚贝《首选和永远》——深红封面、金色颗粒与下半幅照片 */
.hero{background:var(--red-deep);overflow:hidden}.hero:after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;opacity:.38;background-image:radial-gradient(circle at 14% 22%,#f4d49a 0 1px,transparent 1.8px),radial-gradient(circle at 78% 14%,#f4d49a 0 1px,transparent 1.7px),radial-gradient(circle at 88% 41%,#f4d49a 0 1px,transparent 1.6px),radial-gradient(circle at 23% 52%,#f4d49a 0 1px,transparent 1.7px),radial-gradient(circle at 66% 29%,#f4d49a 0 1px,transparent 1.5px),radial-gradient(circle at 48% 9%,#f4d49a 0 1px,transparent 1.4px)}.hero-image-wrap{top:43%;bottom:auto;height:57%;inset-inline:0}.hero-image-wrap .hero-image{object-position:center 35%}.hero-wash{background:linear-gradient(180deg,rgba(143,41,47,.18),rgba(47,12,16,.2) 70%,rgba(47,12,16,.58))}.hero-content{justify-content:flex-start;padding-top:86px}.hero-content:before{left:34px;right:34px;bottom:35px;height:40%;border-color:rgba(255,231,203,.32);border-bottom:1px solid rgba(255,231,203,.32)}.hero-content:after{display:none}.hero-content .eyebrow{color:#f2d8ae}.hero h1{font-size:clamp(36px,9vw,62px);margin-top:22px}.hero-note{color:#f7e4c7}.scroll-cue{position:absolute;bottom:47px;margin-top:0;color:#f1d8b4}.hero:before{color:#f4d8a8}
