:root{--paper:#f4eee3;--cream:#fffaf0;--ink:#311b18;--muted:#80675b;--red:#7d181c;--gold:#c8995d}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--paper)}body{background:var(--paper);color:var(--ink);margin:0;font-family:Songti SC,STSong,Noto Serif CJK SC,serif}a{color:inherit}img{display:block}.invitation{width:100%;padding-bottom:72px;overflow:hidden}.section-shell{width:min(100%,760px);margin-inline:auto}.hero{color:#fff9ee;background:#3d2b25;min-height:100svh;position:relative}.hero-photo{object-fit:cover;object-position:52% 38%;width:100%;height:100%;position:absolute;inset:0}.hero-shade{background:linear-gradient(#1b100d75 0%,#1b100d08 35%,#1b100d2e 61%,#1b100dd6 100%);position:absolute;inset:0}.hero-topline{z-index:1;width:100%;padding:max(22px,env(safe-area-inset-top)) 22px 0;letter-spacing:.2em;justify-content:space-between;font-family:Georgia,serif;font-size:9px;display:flex;position:absolute;top:0;left:0}.hero-copy{z-index:1;text-align:center;text-shadow:0 2px 20px #00000059;animation:.9s ease-out both rise;position:absolute;bottom:76px;left:20px;right:20px}.hero-kicker{letter-spacing:.28em;margin:0 0 14px;font-size:11px}.hero-copy h1{white-space:nowrap;letter-spacing:.05em;justify-content:center;align-items:center;gap:10px;margin:0;font-size:clamp(31px,9.5vw,58px);font-weight:400;display:flex}.hero-copy h1 i{color:#f2d6a1;border:1px solid #fff7e8b3;border-radius:50%;flex:0 0 40px;place-items:center;width:40px;height:40px;font-size:23px;font-style:normal;display:grid}.hero-date{letter-spacing:.15em;margin:14px 0 0;font-size:13px}.hero-rule{background:#ffffff8c;width:48px;height:1px;margin:17px auto 13px}.hero-place{letter-spacing:.1em;margin:0;font-size:13px;line-height:1.7}.scroll-cue{z-index:1;letter-spacing:.22em;opacity:.8;flex-direction:column;align-items:center;gap:1px;font-size:9px;text-decoration:none;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.scroll-cue b{font-family:sans-serif;font-size:21px;line-height:.8;animation:1.7s ease-in-out infinite drift}.section-eyebrow{color:#a2775c;letter-spacing:.3em;margin:0 0 18px;font:10px/1 Georgia,serif}.letter{text-align:center;background:radial-gradient(circle at 50% 32%, #fffaf1, var(--paper) 72%);padding:112px 26px 96px;position:relative}.letter:before,.letter:after{content:"";background:#cdbbab;width:1px;height:48px;position:absolute;left:50%}.letter:before{top:34px}.letter:after{bottom:30px}.double-happiness{color:#7d181c0e;font-size:170px;line-height:1;position:absolute;top:82px;right:-5px}.letter h2,.gallery-header h2,.details>h2{color:var(--red);letter-spacing:.14em;margin:0;font-size:clamp(38px,11vw,54px);font-weight:400;line-height:1.35}.letter-copy{color:var(--muted);letter-spacing:.08em;margin:28px auto 38px;font-size:14px;line-height:2.1;position:relative}.calendar-card{background:#fffbf4b8;border:1px solid #d7c5b6;width:min(100%,420px);margin:0 auto;padding:23px 20px 20px;position:relative;box-shadow:0 18px 45px #51332512}.calendar-card:before,.calendar-card:after{content:"";border-color:var(--red);width:11px;height:11px;position:absolute}.calendar-card:before{border-top:1px solid;border-left:1px solid;top:7px;left:7px}.calendar-card:after{border-bottom:1px solid;border-right:1px solid;bottom:7px;right:7px}.calendar-month{color:var(--red);letter-spacing:.22em;border-bottom:1px solid #dccabd;justify-content:space-between;align-items:end;padding-bottom:15px;font:11px/1 Georgia,serif;display:flex}.calendar-month strong{letter-spacing:0;font-size:32px;font-weight:400;line-height:.8}.calendar-days,.calendar-row{grid-template-columns:repeat(7,1fr);align-items:center;font-size:10px;display:grid}.calendar-days{color:#a68a78;padding:16px 0 10px}.calendar-row span{color:#aa968b;font-family:Georgia,serif}.calendar-row b{color:#fff;z-index:0;place-items:center;height:44px;font:18px/1 Georgia,serif;display:grid;position:relative}.calendar-row b:before{content:"";background:var(--red);z-index:-1;border-radius:50%;width:40px;height:40px;margin:auto;position:absolute;inset:0}.calendar-row b i{color:var(--red);font:12px/1 serif;position:absolute;top:-7px;right:-2px}.calendar-card>p{color:#765d51;letter-spacing:.12em;border-top:1px solid #dccabd;margin:16px 0 0;padding-top:14px;font-size:12px}.portrait-story{padding:36px 25px 106px;position:relative}.portrait-frame{border:1px solid #c9ae9b;width:84%;margin-left:auto;padding:8px;position:relative}.portrait-frame img{aspect-ratio:4/5;object-fit:cover;object-position:center 18%;width:100%}.portrait-frame>span{color:var(--red);opacity:.14;font:italic 72px/.8 Georgia,serif;position:absolute;top:-29px;right:17px}.portrait-note{color:#fffaf1;background:var(--red);width:170px;padding:18px 14px 15px 20px;position:absolute;bottom:76px;left:20px;box-shadow:9px 9px #d8c4b3}.portrait-note span{letter-spacing:.15em;opacity:.7;font:11px/1 Georgia,serif}.portrait-note p{letter-spacing:.12em;margin:10px 0 0;font-size:18px;line-height:1.7}.english-note{color:#9c8170;letter-spacing:.22em;text-align:right;margin:50px 0 0;font:9px/1.7 Georgia,serif}.gallery-section{background:#eee3d6;padding:92px 0 0}.gallery-header{text-align:center;padding:0 27px 68px}.gallery-header>p:last-child{color:var(--muted);letter-spacing:.08em;margin:20px 0 0;font-size:13px;line-height:2}.photo-group{width:min(100%,760px);margin:0 auto;padding:58px 14px 66px}.photo-group-vintage{color:#f7ebdb;background:#5b4338}.photo-group-garden{color:#f4f3df;background:#40513a}.photo-group-chinese-red{color:#fff0df;background:#8a171c}.photo-group-main-bridal{color:#5c4438;background:linear-gradient(145deg,#fffdf8,#eadfd2)}.photo-group-main-bridal .group-grid figure{background:#dfd2c3;border:1px solid #7757412e}.group-heading{padding:0 8px}.group-heading h3{letter-spacing:.12em;margin:0;font-size:26px;font-weight:400}.group-description{white-space:pre-line;letter-spacing:.08em;opacity:.74;margin:24px 8px 30px;font-size:13px;line-height:2}.group-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.group-grid figure{background:#0000001f;min-width:0;margin:0;position:relative;overflow:hidden}.group-grid img{aspect-ratio:4/5;object-fit:cover;width:100%;transition:transform .8s}.promise-photo{color:#fff;height:76svh;min-height:560px;position:relative;overflow:hidden}.promise-photo:after{content:"";background:linear-gradient(#15190d14,#18130eb8);position:absolute;inset:0}.promise-photo img{object-fit:cover;object-position:34% center;width:100%;height:100%}.promise-photo>div{z-index:1;text-align:center;text-shadow:0 2px 15px #00000059;position:absolute;bottom:60px;left:0;right:0}.promise-photo p{letter-spacing:.28em;margin:0 0 14px;font-size:12px}.promise-photo h2{letter-spacing:.14em;margin:0;font-size:44px;font-weight:400;line-height:1.4}.promise-photo span{letter-spacing:.34em;margin-top:20px;font:9px/1 Georgia,serif;display:block}.countdown{color:#fff5e8;text-align:center;background:var(--red);padding:95px 24px 90px;position:relative}.countdown:before{content:"囍";color:#ffffff0d;font-size:160px;position:absolute;top:11px;right:-18px}.countdown .section-eyebrow{color:#ddb98a}.countdown h2{letter-spacing:.18em;margin:0;font-size:24px;font-weight:400}.countdown-grid{grid-template-columns:repeat(3,1fr);width:min(100%,430px);margin:34px auto 28px;display:grid}.countdown-grid div{border-right:1px solid #fff3;justify-content:center;align-items:end;gap:5px;display:flex}.countdown-grid div:last-child{border:0}.countdown-grid strong{font:400 42px/.9 Georgia,serif}.countdown-grid span{opacity:.72;font-size:11px}.countdown>p:last-child{letter-spacing:.13em;opacity:.74;margin:0;font-size:11px}.details{text-align:center;background:var(--cream);padding:100px 22px 110px}.detail-card{text-align:left;background:#f6eee3;border:1px solid #d7c2af;width:min(100%,470px);margin:36px auto 0;padding:28px 24px 24px;box-shadow:0 18px 50px #4c2b1f14}.detail-date{color:var(--red);border-bottom:1px solid #d7c2af;align-items:center;gap:13px;padding-bottom:22px;display:flex}.detail-date strong{font:400 64px/.85 Georgia,serif}.detail-date span{letter-spacing:.14em;font:12px/1.55 Georgia,serif}.detail-copy{padding:10px 0}.detail-copy p{color:#5f463b;grid-template-columns:50px 1fr;margin:14px 0;font-size:13px;line-height:1.75;display:grid}.detail-copy p span{color:#a07a63;letter-spacing:.18em;font-size:11px}.detail-actions{grid-template-columns:1fr 1fr;gap:10px;margin-top:5px;display:grid}.detail-actions a{border:1px solid var(--red);color:var(--red);text-align:center;letter-spacing:.08em;padding:13px 7px;font-size:12px;text-decoration:none}.detail-actions a:first-child{color:#fff;background:var(--red)}.warm-tip{color:#9a8174;letter-spacing:.04em;margin:20px auto 0;font-size:11px}.footer{color:#fff;background:#625148;width:min(100%,760px);height:76svh;min-height:570px;margin:0 auto;position:relative}.footer>img{object-fit:cover;object-position:50% 36%;width:100%;height:100%}.footer-shade{background:linear-gradient(#0000 36%,#1d110ed1);position:absolute;inset:0}.footer-copy{text-align:center;position:absolute;bottom:68px;left:20px;right:20px}.footer-copy p{letter-spacing:.36em;margin:0 0 13px;font:10px/1 Georgia,serif}.footer-copy h2{letter-spacing:.15em;margin:0;font-size:44px;font-weight:400}.footer-copy span{letter-spacing:.12em;margin-top:13px;font-size:18px;display:block}.footer-copy small{letter-spacing:.13em;opacity:.8;margin-top:16px;font-size:11px;display:block}.music-toggle{z-index:22;top:max(16px,env(safe-area-inset-top));color:#fff7ea;-webkit-backdrop-filter:blur(12px);background:#42201cb3;border:1px solid #ffffff6b;border-radius:999px;align-items:center;gap:7px;height:38px;padding:0 11px 0 6px;display:flex;position:fixed;right:14px;box-shadow:0 6px 22px #21110e33}.music-disc{border:1px solid #ffffff8c;border-radius:50%;place-items:center;width:27px;height:27px;font:15px/1 Georgia,serif;display:grid}.music-label{letter-spacing:.08em;font-size:10px}.music-toggle.is-playing .music-disc{animation:4s linear infinite spin}.bottom-bar{z-index:20;left:50%;bottom:max(10px,env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#3f1b19eb;border:1px solid #ffffff4d;border-radius:16px;grid-template-columns:1fr 1fr;width:min(100% - 24px,420px);display:grid;position:fixed;overflow:hidden;transform:translate(-50%);box-shadow:0 10px 30px #2a171245}.bottom-bar a{color:#fff5e8;letter-spacing:.08em;justify-content:center;align-items:center;gap:8px;min-height:50px;font-size:12px;text-decoration:none;display:flex}.bottom-bar a+a{border-left:1px solid #ffffff2e}.bottom-bar span{color:#ecc792;font-size:17px}@keyframes drift{50%{transform:translateY(5px)}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}@keyframes spin{to{transform:rotate(360deg)}}@media (hover:hover){.group-grid figure:hover img{transform:scale(1.025)}.detail-actions a:hover{filter:brightness(.92)}}@media (min-width:720px){.hero{min-height:880px;max-height:1000px}.hero-topline{padding-left:48px;padding-right:48px}.hero-copy{bottom:94px}.portrait-frame{width:65%}.portrait-note{width:210px;bottom:130px;left:85px}.photo-group{padding-left:26px;padding-right:26px}.group-grid{gap:16px}.promise-photo img{object-position:left center;transform-origin:0;transform:scale(1.12)}.countdown,.details{margin-inline:auto}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.scroll-cue b,.hero-copy,.music-toggle.is-playing .music-disc{animation:none}.group-grid img{transition:none}}
