:root{--paper:#fff;--paper-deep:#f5f5f3;--ink:#111;--muted:#77736f;--red:#7d1f2a;--rose:#a44e5a;--line:#11111124;--page-progress:0;color:var(--ink);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background:#fff;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Helvetica Neue,sans-serif}*{box-sizing:border-box}html{background:#fff;min-width:320px}html:not(.is-ready),html:not(.is-ready) body{overflow:hidden}body{background:#fff;min-width:320px;margin:0;overflow-x:hidden}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}img{max-width:100%;display:block}.invitation-app{width:min(100%,430px);min-height:100vh;box-shadow:none;opacity:0;background:#fff;margin:0 auto;transition:opacity .7s;position:relative;overflow:clip}.is-ready .invitation-app{opacity:1}.preloader{z-index:100;color:var(--ink);opacity:1;background:#fff;place-items:center;padding:28px;transition:opacity .7s,visibility .7s;display:grid;position:fixed;inset:0}.is-ready .preloader{visibility:hidden;opacity:0;pointer-events:none}.preloader-inner{text-align:center;width:min(100%,300px)}.preloader-kicker{color:var(--red);letter-spacing:4px;margin:0 0 32px;font-family:Georgia,Times New Roman,serif;font-size:10px}.preloader h1{letter-spacing:4px;margin:0;font-family:Songti SC,STSong,serif;font-size:30px;font-weight:400}.preloader h1 span{color:var(--red);font-family:Georgia,Times New Roman,serif;font-size:20px}.preloader-message{color:var(--muted);letter-spacing:2px;margin:18px 0 36px;font-family:PingFang SC,Microsoft YaHei,sans-serif;font-size:12px}.preloader-track{background:#19191924;width:100%;height:1px;overflow:hidden}.preloader-track span{background:var(--red);transform-origin:0;width:100%;height:100%;transition:transform .18s;display:block;transform:scaleX(0)}.preloader-percent{color:var(--muted);margin-top:12px;font-family:Georgia,Times New Roman,serif;font-size:10px;font-weight:400;display:block}.reading-progress{z-index:30;background:#19191914;width:min(100%,430px);height:2px;position:fixed;top:0;left:50%;transform:translate(-50%)}.reading-progress span{background:var(--red);transform-origin:0;will-change:transform;width:100%;height:100%;display:block;transform:scaleX(0)}.floating-controls{top:max(16px, env(safe-area-inset-top));z-index:32;pointer-events:none;justify-content:flex-end;gap:8px;width:min(100%,430px);padding:0 16px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.motion-toggle,.music-toggle{width:40px;height:40px;color:var(--ink);-webkit-backdrop-filter:blur(12px);cursor:pointer;pointer-events:auto;background:#ffffffe6;border:1px solid #11111124;border-radius:50%;padding:0}.motion-toggle span{letter-spacing:0;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,sans-serif;font-size:10px;line-height:38px;display:block}.music-toggle{place-items:center;display:grid}.music-symbol{transform-origin:50%;font-family:Georgia,Times New Roman,serif;font-size:19px;line-height:1;display:block}.music-toggle.is-playing .music-symbol{animation:3.8s linear infinite music-spin}.music-toggle:not(.is-playing){color:var(--ink);background:#ffffffe6;border-color:#1919191f}@keyframes music-spin{to{transform:rotate(360deg)}}.motion-toggle.is-paused{color:var(--ink);background:#ffffffe6;border-color:#1919191f}.story-reel{position:relative}.section-block{padding:0 22px;position:relative}.section-block[data-reveal]{opacity:1;transform:none}.section-block[data-reveal] .photo-frame{opacity:.18;transition:opacity .85s,transform 1s cubic-bezier(.2,.75,.2,1);transform:translateY(18px)}.section-block[data-reveal].is-visible .photo-frame,.opening[data-reveal] .photo-frame{opacity:1;transform:translate(0,0)}.opening{min-height:1420px;padding-top:max(42px, env(safe-area-inset-top))}.opening-meta{gap:18px;display:grid}.opening-meta p{letter-spacing:1.2px;margin:0;font-size:13px;font-weight:500;line-height:1.65}.opening-meta div{align-items:center;gap:24px;font-size:10px;line-height:1;display:flex}.opening-meta time{color:var(--red);letter-spacing:1.5px}.opening-meta span{color:var(--muted);letter-spacing:2px}.record-player{color:#fff;background:#111;border-radius:0;height:210px;margin-top:30px;position:relative;overflow:hidden}.record-player:after{content:"";pointer-events:none;background:linear-gradient(90deg,#00000005,#000000b3);position:absolute;inset:0}.record-player img{object-fit:cover;object-position:50% 42%;width:100%;height:100%}.record-copy{z-index:1;text-align:left;gap:7px;width:40%;font-family:PingFang SC,Microsoft YaHei,sans-serif;display:grid;position:absolute;top:34px;right:22px}.record-copy small{opacity:.7;font-size:9px}.record-copy strong{font-family:Georgia,Times New Roman,serif;font-size:19px;font-weight:400}.record-copy span{opacity:.82;font-size:11px}.opening-title{text-align:center;margin:72px 0 46px}.opening-title img{width:min(100%,330px);height:auto;margin:0 auto}.opening-title p{letter-spacing:5px;margin:18px 0 0;font-family:Georgia,Times New Roman,serif;font-size:11px}.intro-copy,.center-copy,.poem,.side-copy,.offset-copy{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,sans-serif}.intro-copy{text-align:center;gap:11px;margin:0 auto 48px;display:grid}.intro-copy p,.center-copy p,.poem p{margin:0;font-size:12px;line-height:2.15}.photo-frame{background:#f2f2f0;margin:0;overflow:hidden}.photo-frame img{object-fit:cover;width:100%;height:100%}.opening-photo{width:calc(100% + 44px);height:560px;margin-left:-22px}.opening-photo img{object-position:50% 48%}.chapter{padding-top:120px;padding-bottom:92px}.chapter-number{color:var(--red);letter-spacing:2px;font-family:Georgia,Times New Roman,serif;font-size:11px;line-height:1;position:absolute;top:94px;left:22px;right:auto}.chapter-number:after{content:"";background:currentColor;width:34px;height:1px;margin:0 0 3px 10px;display:inline-block}.chapter-heading{z-index:1;text-align:right;width:84%;margin:0 0 32px auto;position:relative}.chapter-heading span,.offset-copy span,.micro-heading{color:var(--red);letter-spacing:3px;font-family:Georgia,Times New Roman,serif;font-size:11px}.chapter-heading h2,.offset-copy h2{letter-spacing:1px;margin:12px 0 0;font-size:19px;font-weight:400;line-height:1.8}.portrait-tall{height:520px}.side-copy{text-align:right;width:86%;margin:34px 0 0 auto;font-size:12px;line-height:2.15}.micro-heading{justify-content:space-between;margin-bottom:18px;display:flex}.landscape{height:250px}.poem{gap:14px;margin-top:42px;display:grid}.paired-section{padding-top:74px}.paired-photos,.two-up{grid-template-columns:1fr 1fr;gap:10px;display:grid}.paired-photos .photo-frame,.two-up .photo-frame{height:270px}.name-lockup{text-align:center;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;margin:36px 0 28px;display:grid}.name-lockup strong{letter-spacing:3px;font-family:Songti SC,STSong,serif;font-size:19px;font-weight:400}.name-lockup span{color:var(--red);font-family:Georgia,Times New Roman,serif;font-size:28px}.center-copy{text-align:center;gap:9px;display:grid}.wide-photo{width:calc(100% + 44px);height:260px;margin-left:-22px}.offset-copy{text-align:right;width:80%;margin:36px 0 42px auto}.offset-copy p{margin:14px 0 0;font-size:12px;line-height:2}.full-bleed-chapter{min-height:760px;padding-top:72px;padding-bottom:0}.english-line{text-align:right;margin:0 0 22px;font-family:Georgia,Times New Roman,serif;font-size:14px}.full-bleed-photo{width:calc(100% + 44px);height:610px;margin-left:-22px}.vertical-note{color:#fff;writing-mode:vertical-rl;text-shadow:0 1px 12px #00000080;-webkit-backdrop-filter:blur(7px);background:#ffffff38;padding:18px 10px;font-size:12px;line-height:1.9;position:absolute;top:170px;right:38px}.long-copy{gap:14px;margin-bottom:46px}.overlap-photo{border:8px solid var(--paper);width:74%;height:210px;margin:-76px 0 0 auto}.cloud-copy{gap:18px;margin-top:62px}.cloud-copy strong{color:var(--red);letter-spacing:2px;font-size:15px;font-weight:400}.statement-mark{color:var(--red);text-align:center;opacity:.3;margin-bottom:28px;font-family:Georgia,Times New Roman,serif;font-size:66px;line-height:1}.final-story-photo{margin-top:10px}.information{text-align:center;padding-top:130px;padding-bottom:120px}.information-kicker{letter-spacing:5px;margin:0;font-family:Georgia,Times New Roman,serif;font-size:11px}.double-happiness{color:var(--red);margin:28px 0 24px;font-size:24px;display:block}.information-lettering{width:min(100%,360px);height:auto;margin:0 auto 26px}.information>p:not(.information-kicker){margin:7px 0;font-size:12px;line-height:1.5}.calendar{border-top:1px solid var(--line);border-bottom:1px solid var(--line);text-align:left;background:0 0;margin:52px auto 42px;padding:30px 24px}.calendar-title{color:var(--red);align-items:baseline;gap:7px;display:flex}.calendar-title strong{font-family:Georgia,Times New Roman,serif;font-size:40px;font-weight:400}.calendar-title span{font-family:Georgia,Times New Roman,serif;font-size:13px}.calendar-title b{margin-left:auto;font-family:Georgia,Times New Roman,serif;font-size:14px;font-weight:400}.weekdays,.calendar-days{text-align:center;grid-template-columns:repeat(7,1fr);display:grid}.weekdays{color:var(--red);border-bottom:1px solid #9b20253d;margin:18px 0 8px;padding-bottom:10px;font-size:11px}.calendar-days span{place-items:center;min-height:38px;font-family:Georgia,Times New Roman,serif;font-size:12px;display:grid;position:relative}.calendar-days span:first-child{grid-column:2}.calendar-days .is-wedding-day{color:#fff}.calendar-days .is-wedding-day:before{content:"";z-index:-1;background:var(--red);border-radius:50%;width:32px;height:32px;position:absolute}.venue-link{border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:inherit;gap:8px;padding:23px 18px;text-decoration:none;display:grid}.venue-link span,.venue-link small{color:var(--muted);font-family:PingFang SC,Microsoft YaHei,sans-serif;font-size:11px}.venue-link strong{letter-spacing:1px;font-size:16px;font-weight:400}.after-information .center-copy{margin-bottom:44px}.after-information .portrait-tall{margin-top:10px}.after-information .center-copy:last-child{margin:48px 0 0}.rsvp{text-align:center;padding-top:100px;padding-bottom:110px}.rsvp .information-kicker{letter-spacing:3px;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,sans-serif;font-size:12px}.rsvp-form{text-align:left;gap:18px;margin-top:42px;display:grid}.rsvp-form label{gap:8px;display:grid}.rsvp-form label>span{color:var(--muted);font-family:PingFang SC,Microsoft YaHei,sans-serif;font-size:11px}.rsvp-form input,.rsvp-form select,.rsvp-form textarea{border:0;border-bottom:1px solid var(--line);width:100%;min-height:48px;color:var(--ink);background:0 0;border-radius:0;outline:0;padding:13px 0;font-family:PingFang SC,Microsoft YaHei,sans-serif;font-size:14px}.rsvp-form textarea{resize:vertical}.rsvp-form input:focus,.rsvp-form select:focus,.rsvp-form textarea:focus{border-bottom-color:var(--red)}.rsvp-form button{background:var(--ink);color:#fff;cursor:pointer;border:0;border-radius:0;min-height:48px;margin-top:10px;font-family:PingFang SC,Microsoft YaHei,sans-serif;font-size:14px}.form-result{min-height:22px;color:var(--red);text-align:center;margin:0;font-family:PingFang SC,Microsoft YaHei,sans-serif;font-size:12px;line-height:1.8}.rsvp-form.is-submitted button{background:#5d5854}.farewell{text-align:center;gap:28px;padding-bottom:0;display:grid}.farewell p{margin:0;font-family:PingFang SC,Microsoft YaHei,sans-serif;font-size:12px;line-height:2}.farewell-lettering{width:min(100%,230px);height:auto;margin:8px auto 0}.farewell-photo{width:calc(100% + 44px);height:470px;margin-left:-22px}.final-card{min-height:100svh;padding:74px 30px max(74px, env(safe-area-inset-bottom));place-items:center;display:grid;overflow:hidden}.final-card:after{content:"";z-index:0;background:linear-gradient(#00000014,#0000009e);position:absolute;inset:0}.final-card>img{object-fit:cover;object-position:50% 45%;filter:saturate(.82);width:100%;height:100%;position:absolute;inset:0}.final-card-panel{z-index:1;color:#fff;text-align:center;text-shadow:0 2px 20px #00000059;background:0 0;border:0;align-content:center;gap:22px;width:100%;min-height:420px;padding:44px 16px;display:grid;position:relative}.final-card-panel p{color:#ffffffb8;letter-spacing:3px;margin:0;font-family:Georgia,Times New Roman,serif;font-size:12px}.final-card-panel h2{letter-spacing:4px;margin:0;font-family:Songti SC,STSong,serif;font-size:28px;font-weight:400}.final-card-panel span{letter-spacing:2px;font-family:Georgia,Times New Roman,serif;font-size:13px}.final-card-panel strong{letter-spacing:2px;margin-top:24px;font-size:15px;font-weight:400}.site-record{bottom:max(18px, env(safe-area-inset-bottom));z-index:2;text-align:center;width:100%;position:absolute;left:0}.site-record a{color:#ffffffc2;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,sans-serif;font-size:10px;text-decoration:none}@media (width>=700px){body{padding:0}.invitation-app,.opening,.final-card{border-radius:0}}@media (width<=359px){.section-block{padding-left:18px;padding-right:18px}.opening-photo,.wide-photo,.full-bleed-photo,.farewell-photo{width:calc(100% + 36px);margin-left:-18px}.opening-meta p{font-size:18px}.opening-title img{width:min(100%,300px)}.paired-photos .photo-frame,.two-up .photo-frame{height:240px}}@media (prefers-reduced-motion:reduce){.section-block[data-reveal] .photo-frame{opacity:1;transition:none;transform:none}.music-toggle.is-playing .music-symbol{animation:none}}
