@font-face{font-family:Wedding Calligraphy;src:url(/wedding-calligraphy.woff2) format("woff2");font-style:normal;font-weight:400;font-display:swap}:root{--paper: #ffffff;--paper-light: #ffffff;--ink: #6f0000;--muted: #8a3a36;--red: #a60000;--red-dark: #780000;--sage: #687464;--gold: #d4af37;--line: rgba(166,0,0,.16);--body-font: "Noto Serif SC", "Source Han Serif SC", "Songti SC", SimSun, serif;--display-font: "Wedding Calligraphy", "STKaiti", "KaiTi", "FangSong", var(--body-font);--utility-font: "PingFang SC", "Microsoft YaHei", ui-sans-serif, system-ui, sans-serif;font-family:var(--body-font);color:var(--ink);background:#fff;font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-snap-type:y proximity;background:#fff}body{width:min(100%,430px);min-width:320px;margin:0 auto;overflow-x:hidden;background:var(--paper);box-shadow:0 0 55px #78000014}a{color:inherit}img{display:block;max-width:100%}.shell{width:calc(100% - 28px);margin:0 auto}.chapter{position:relative;min-height:100svh;display:grid;align-items:center;overflow:hidden;scroll-snap-align:start}.eyebrow{margin:0;color:var(--red);font:500 .68rem/1.4 ui-sans-serif,system-ui;letter-spacing:.2em;text-transform:uppercase}.chapter-number{margin:0 0 12px;color:color-mix(in srgb,var(--muted) 62%,transparent);font:500 .63rem/1 ui-sans-serif,system-ui;letter-spacing:.2em;text-transform:uppercase}.chapter-copy h2,.moments-copy h2,.editorial-copy h2,.ceremony-copy h2,.celebration-content h2{font-family:var(--display-font);font-weight:400;letter-spacing:.04em}.hero{align-items:start;isolation:isolate;background:linear-gradient(rgba(166,0,0,.014) 1px,transparent 1px),linear-gradient(90deg,rgba(166,0,0,.01) 1px,transparent 1px),#fff;background-size:34px 34px}.hero-mark{position:absolute;top:16%;right:-34px;z-index:-1;color:#a600000d;font-size:15rem;line-height:.8}.hero-grid{padding:38px 0 72px}.hero-copy{container-type:inline-size;position:relative;z-index:2}.hero h1{margin:18px 0;color:var(--ink);font-family:var(--display-font);font-size:clamp(2.45rem,13.1cqi,3.5rem);font-weight:500;line-height:1;text-align:center;white-space:nowrap}.hero h1 i{display:inline;margin:0 .48em;color:var(--red);font-family:var(--body-font);font-size:.42em;font-style:normal;font-weight:600;vertical-align:.24em}.hero-lead{margin:0 0 17px;color:var(--muted);font-size:.86rem;line-height:1.7}.essential-details{margin:0;border-top:1px solid var(--ink)}.essential-details div{display:grid;grid-template-columns:57px 1fr;gap:12px;padding:8px 0;border-bottom:1px solid var(--line);align-items:baseline}.essential-details dt{color:var(--muted);font-size:.7rem;letter-spacing:.18em}.essential-details dd{margin:0;font-size:.83rem;font-weight:600;letter-spacing:.03em}.hero-actions{display:flex;align-items:center;gap:12px;margin-top:14px}.primary-action{display:inline-flex;align-items:center;min-height:38px;padding:0 14px;border:1px solid var(--red-dark);background:var(--red-dark);color:#fffaf3;font-size:.76rem;letter-spacing:.06em;text-decoration:none}.countdown-summary{color:var(--red-dark);font-size:.7rem;white-space:nowrap}.photo-frame{position:relative;width:100%;height:100%;overflow:hidden;border:1px solid rgba(166,0,0,.15);background:#fff}.photo-frame img{width:100%;height:100%;object-fit:cover}.hero-photo{width:calc(100% - 42px);height:min(38svh,335px);margin:27px 42px 0 0;box-shadow:13px 15px #68746421}.hero-photo .photo-frame img{object-position:50% 55%}.scroll-cue{display:none}.story-chapter{align-items:start;background:var(--paper-light)}.story-grid{display:flex;min-height:100svh;flex-direction:column;padding:58px 0 46px}.story-chapter .chapter-copy h2{margin:12px 0 20px;font-size:2.85rem;font-weight:500;line-height:1.12}.story-message{margin:0;color:var(--muted);font-size:.96rem;line-height:2;text-align:justify}.story-signature{margin:16px 0 0;color:var(--red);font-size:.72rem;letter-spacing:.14em}.portrait-photo{width:72%;height:min(43svh,365px);margin:28px auto 0;box-shadow:12px 14px #a600000f}.portrait-photo img{object-position:50% 48%}.moments-chapter{color:#fff;background:#80746b}.moments-photo,.moments-shade{position:absolute;inset:0}.moments-photo .photo-frame{border:0}.moments-photo .photo-frame:before,.moments-photo .photo-frame:after{display:none}.moments-photo img{object-position:55% 50%}.moments-shade{background:linear-gradient(180deg,#1e19171a,#1e191714 52%,#1e1917b8)}.moments-copy{position:relative;z-index:2;align-self:end;padding-bottom:52px}.moments-copy .chapter-number{color:#ffffff9e}.moments-copy .eyebrow{color:#f3d9b5}.moments-copy h2{margin:10px 0 0;font-size:2.75rem;font-weight:400;line-height:1.15}.editorial-chapter{align-items:start;background:#fff}.editorial-layout{position:relative;min-height:100svh;padding:42px 0 35px}.editorial-copy{position:relative;z-index:3}.editorial-copy h2{margin:9px 0 0;font-size:2.55rem;font-weight:500;line-height:1.12}.editorial-portrait{position:absolute;top:210px;right:0;width:64%;height:54svh;z-index:1;box-shadow:10px 12px #a600000f}.editorial-portrait .photo-frame img{object-position:50% 42%}.editorial-wide{position:absolute;left:0;bottom:63px;width:61%;height:25svh;z-index:2;border:8px solid #ffffff;box-shadow:0 10px 22px #7610141a}.editorial-wide .photo-frame{border:0}.editorial-wide .photo-frame:before,.editorial-wide .photo-frame:after{display:none}.editorial-wide .photo-frame img{object-position:50% 52%}.editorial-caption{position:absolute;right:0;bottom:32px;margin:0;color:var(--muted);font:500 .54rem/1.55 ui-sans-serif,system-ui;letter-spacing:.12em;text-align:right}.ceremony-chapter{background:#fff}.ceremony-card{padding:72px 22px 58px}.ceremony-copy h2{margin:11px 0 22px;font-size:2.75rem;font-weight:500;line-height:1.13}.schedule{border-top:1px solid var(--ink)}.event{display:grid;grid-template-columns:48px 1fr;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}.event time{color:var(--red);font-size:.7rem;letter-spacing:.06em}.event h3{margin:-2px 0 3px;font-size:.92rem;font-weight:500}.event p{margin:0;color:var(--muted);font-size:.75rem;line-height:1.55}.location-module{display:grid;grid-template-columns:28px 1fr;gap:0 10px;margin-top:22px;padding:15px;border:1px solid rgba(166,0,0,.18);background:#ffffffe6;text-decoration:none;box-shadow:0 12px 28px #7800000f}.location-pin{grid-row:1/3;display:grid;place-items:center;width:26px;height:26px;margin-top:2px;border-radius:50%;background:var(--red);color:#fff;font-size:.44rem}.location-module span:nth-child(2){display:flex;flex-direction:column;min-width:0}.location-module small{color:var(--muted);font-size:.65rem;letter-spacing:.12em}.location-module strong{margin-top:4px;font-size:1rem;font-weight:600}.location-module em{margin-top:3px;color:var(--muted);font-size:.71rem;font-style:normal}.location-module b{grid-column:2;margin-top:12px;color:var(--red-dark);font:600 .74rem/1 ui-sans-serif,system-ui}.celebration-chapter{color:#fff9f0;background:var(--red-dark)}.celebration-photo,.celebration-shade{position:absolute;inset:0}.celebration-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 50%}.celebration-shade{background:linear-gradient(180deg,#3e070ae0,#4c0b0da6 39%,#4c0b0d1f 67%,#4c0b0d38)}.celebration-content{position:relative;z-index:2;align-self:start;padding-top:27px;text-align:center}.celebration-content .chapter-number{display:none}.celebration-content .eyebrow{color:#edc891}.closing-sticker{width:61px;height:auto;margin:0 auto;filter:drop-shadow(0 8px 16px rgba(47,7,8,.2))}.celebration-content h2{margin:7px 0 9px;font-size:3.05rem;font-weight:400;line-height:1}.closing-date,.closing-place{margin:4px 0;font-size:.87rem;letter-spacing:.06em}.closing-note{display:none}footer{padding:20px;background:#4e1113;color:#fff9f0b8;font-size:.62rem;text-align:center;letter-spacing:.16em}.reveal{opacity:1;transform:none}.reveal.visible{animation:reveal-in .75s cubic-bezier(.2,.7,.2,1) both}.hero-copy>*{opacity:0;animation:enter .7s ease forwards}.hero-copy>:nth-child(2){animation-delay:.1s}.hero-copy>:nth-child(3){animation-delay:.2s}.hero-copy>:nth-child(4){animation-delay:.3s}.hero-copy>:nth-child(5){animation-delay:.4s}.hero-photo{opacity:0;animation:photo-enter .9s .2s cubic-bezier(.2,.7,.2,1) forwards}.joy-symbol{position:fixed;top:-32px;z-index:20;color:#a60000a3;font-family:var(--display-font);font-style:normal;font-weight:600;line-height:1;text-shadow:0 3px 10px rgba(120,0,0,.12);pointer-events:none;will-change:transform,opacity;animation:joy-fall linear forwards}@keyframes enter{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes photo-enter{0%{opacity:0;transform:translate(14px,10px)}to{opacity:1;transform:none}}@keyframes reveal-in{0%{opacity:.25;transform:translateY(22px)}to{opacity:1;transform:none}}@keyframes joy-fall{0%{transform:translate3d(0,-5vh,0) rotate(0) scale(var(--scale));opacity:0}10%{opacity:.82}36%{transform:translate3d(var(--drift-back),34vh,0) rotate(var(--rotation-mid)) scale(var(--scale))}68%{transform:translate3d(var(--drift),69vh,0) rotate(var(--rotation-late)) scale(var(--scale));opacity:.58}to{transform:translate3d(var(--drift-end),106vh,0) rotate(var(--rotation)) scale(var(--scale));opacity:0}}@media(min-width:431px){.joy-symbol{display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}.joy-symbol{display:none}}
