:root{--paper:#f3f0ef;--ink:#2d2725;--muted:#655c58;--wine:#5b1725;--wine-deep:#3f1520;--rose:#e9d5d7;--surface:#e9e4e2;--white:#fff;--display:"Songti SC", "Noto Serif CJK SC", "STSong", serif;--body:"PingFang SC", "Microsoft YaHei", sans-serif;--ease:cubic-bezier(.16, 1, .3, 1);--gutter:calc(clamp(20px, 3vw, 48px))}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:40px}body{background:var(--paper);color:var(--ink);font-family:var(--body);margin:0;font-size:16px;line-height:1.65}button,input,select,textarea{font:inherit}a,button{-webkit-tap-highlight-color:transparent;transition:opacity .2s,transform .3s var(--ease),background-color .2s}button{cursor:pointer;color:inherit;background:0 0;border:0}button:disabled{cursor:wait;opacity:.65}a{color:inherit;text-decoration:none}img{-o-object-fit:cover;object-fit:cover;max-width:100%;height:auto;display:block}figure,h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--display);text-wrap:balance;font-weight:400}h2{letter-spacing:-.04em;font-size:calc(clamp(36px,4vw,60px));line-height:1.3}h3{font-size:32px;line-height:1.35}p{text-wrap:pretty}a,button,input,select,textarea{outline-offset:5px}:focus-visible{outline:2px solid}::selection{background:var(--rose);color:var(--wine)}.button:active,button:active{transform:scale(.97)}a:hover,button:hover{opacity:.8}.button{background:var(--wine);min-height:54px;color:var(--paper);white-space:nowrap;justify-content:center;align-items:center;gap:20px;padding:14px 24px;font-size:16px;display:inline-flex}.button-paper{background:var(--paper);color:var(--wine)}.button span{font-size:13px}.text-link{align-items:center;gap:20px;min-height:44px;display:inline-flex}.text-button{padding:0;text-decoration:underline}.section-pad{padding:120px var(--gutter)}.skip-link{z-index:100;background:var(--paper);padding:10px;position:fixed;top:8px;left:16px;transform:translateY(-150%)}.skip-link:focus{transform:none}.site-header{z-index:5;width:100%;padding:24px var(--gutter);color:var(--paper);justify-content:space-between;align-items:center;display:flex;position:absolute;top:0;left:0}.site-wordmark{font-family:var(--display);font-size:20px}.site-header nav{align-items:center;gap:30px;display:flex}.music-control{color:inherit;align-items:center;gap:9px;min-height:44px;padding:10px 0;display:flex}.music-control span{font-size:13px}.hero{background:var(--wine);height:100svh;min-height:780px;max-height:1200px;color:var(--paper);isolation:isolate;position:relative;overflow:hidden}.hero-photos{z-index:-2;position:absolute;inset:0}.hero-photos picture{display:block;position:absolute;inset:0}.hero-photos img{-o-object-position:50% 37%;object-position:50% 37%;width:100%;height:100%}.hero-alternate{opacity:0;transition:opacity 1.6s}.hero-alternate.active{opacity:1}.hero:after{content:"";z-index:-1;background:linear-gradient(#0003,#0000 25% 48%,#000000a6);position:absolute;inset:0}.hero-content{bottom:38px;left:var(--gutter);right:var(--gutter);position:absolute}.hero-copy{justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:20px;display:flex}.hero-copy p{font-size:18px}.hero-copy .hero-date{margin-top:9px;font-size:16px}.hero h1{white-space:nowrap;letter-spacing:-.055em;text-align:center;font-size:calc(clamp(70px,12vw,190px));line-height:1.1}.hero h1.long-name{font-size:calc(clamp(44px,8vw,120px))}.letter{grid-template-columns:1fr 1fr;align-items:center;gap:8%;padding-top:140px;padding-bottom:140px;display:grid}.letter-image{aspect-ratio:4/5;width:88%;overflow:hidden}.details-photo img,.landscape-moment>img,.letter-image img,.photo-pair img{width:100%;height:100%}.letter-copy h2{margin-bottom:38px}.statement{font-family:var(--display);max-width:22ch;font-size:calc(clamp(22px,2.1vw,30px));line-height:1.65}.letter-copy>p:not(.statement){margin-top:32px}.letter-copy .text-link{margin-top:30px}.moments{background:var(--surface);padding-top:100px;padding-bottom:96px}.section-heading{justify-content:space-between;align-items:end;gap:24px;margin-bottom:52px;display:flex}.section-heading>p{max-width:32em}.landscape-moment{aspect-ratio:3/2;position:relative;overflow:hidden}.detail-label,figcaption{font-size:14px}.landscape-moment figcaption{color:var(--white);background:#0000008c;padding:5px 12px;position:absolute;bottom:22px;left:24px}.photo-pair{grid-template-columns:5fr 6fr;align-items:start;gap:10%;margin-top:110px;display:grid}.photo-pair figure{position:relative;overflow:hidden}.photo-pair figure:first-child{aspect-ratio:2/3}.photo-pair figure:last-child{aspect-ratio:4/5;margin-top:130px}.photo-pair figcaption{background:var(--surface);min-height:38px;padding-top:14px;position:absolute;bottom:0;left:0;right:0}.pair-white figure:last-child{aspect-ratio:3/2}.pair-warm{grid-template-columns:6fr 5fr}.pair-warm figure:first-child{aspect-ratio:4/5}.pair-warm figure:last-child{aspect-ratio:2/3;margin-top:90px}.album-link-row{justify-content:space-between;align-items:center;gap:24px;margin-top:70px;display:flex}.wedding-details{background:var(--wine);color:var(--paper);grid-template-columns:1fr 1.2fr;gap:50px 8%;display:grid}.details-heading p{margin-top:28px}.details-content{grid-area:2/1}.detail-label{color:var(--rose);margin-bottom:12px}.display-date{font-family:var(--display);font-size:calc(clamp(28px,3.2vw,48px));line-height:1.4}.date-block>p+p{margin-top:10px}.venue-block>p:not(.detail-label){max-width:34em;margin-top:18px}.venue-block .button{margin-top:26px}.venue-note{color:var(--rose)}.details-photo{grid-area:1/2/3;align-self:stretch;min-height:600px;overflow:hidden}.details-photo img{-o-object-position:center;object-position:center}.wishes{grid-template-columns:1fr 1.2fr;align-items:center;gap:8%;padding-top:130px;padding-bottom:130px;display:grid}.wishes-copy>.button,.wishes-copy>p{margin-top:30px}.wish-count{color:var(--muted);font-size:14px}.wish-list{background:var(--surface);min-width:0;padding:32px 40px}.wish-list blockquote{overflow-wrap:anywhere;margin:0;padding:24px 0}.wish-list blockquote+blockquote{margin-top:10px}.wish-list blockquote>p{font-family:var(--display);font-size:23px;line-height:1.55}.wish-list blockquote footer{color:var(--muted);margin-top:12px;font-size:13px}.empty-wishes{padding:45px 0}.empty-wishes>p{font-family:var(--display);margin-top:25px;font-size:26px}.empty-wishes>span{color:var(--muted);margin-top:12px;display:block}.inline-note{color:var(--muted);margin-top:20px;font-size:14px}.closing{color:var(--paper);padding:0 var(--gutter) 130px;background:#252b22;overflow:hidden}.closing-photos{grid-template-columns:1fr 1fr 1fr;gap:20px;padding-top:50px;display:grid;overflow:hidden}.closing-photos img{aspect-ratio:3/4;width:100%}.closing-copy{padding-top:65px}.closing-name{font-family:var(--display);letter-spacing:-.05em;font-size:calc(clamp(54px,11vw,160px));line-height:1.5}.closing-copy .text-link{font-size:14px}.guest-toolbar{z-index:20;background:var(--paper);padding:10px 20px calc(10px + env(safe-area-inset-bottom));justify-content:center;gap:50px;min-height:65px;display:flex;position:fixed;bottom:0;left:0;right:0}.guest-toolbar>button{justify-content:center;align-items:center;gap:10px;min-width:85px;min-height:44px;font-size:14px;display:flex}.danmaku,.guest-toolbar .like-control{color:var(--wine)}.danmaku-label{font-size:18px;font-family:var(--display)}.danmaku-stage{pointer-events:none;z-index:10;height:132px;position:fixed;bottom:95px;left:0;right:0;overflow:hidden}.danmaku{white-space:nowrap;background:var(--paper);align-items:center;gap:12px;max-width:none;padding:7px 16px;font-size:14px;animation:13s linear forwards danmaku;display:flex;position:absolute;left:100%}.danmaku>span{color:var(--muted);font-size:13px}.danmaku small{font-size:12px}.particle-stage{pointer-events:none;z-index:22;width:1px;height:1px;position:fixed;bottom:65px;right:calc(50% - 110px)}.flying-heart{color:var(--wine);animation:float-heart 2.3s var(--ease) forwards;position:absolute;bottom:0}.flying-heart svg{fill:var(--rose)}@keyframes float-heart{0%{opacity:0;transform:translate(0)rotate(0)scale(.5)}15%{opacity:1}to{transform:translate(var(--x),-300px) rotate(var(--rotation)) scale(1.2);opacity:0}}@keyframes danmaku{to{transform:translate(calc(-100vw - 100%))}}.gift-celebration{z-index:30;background:var(--paper);color:var(--wine);text-align:center;pointer-events:none;max-width:90vw;padding:35px 45px;position:fixed;top:45%;left:50%;transform:translate(-50%,-50%);box-shadow:0 20px 80px #0003}.gift-celebration svg{margin:auto}.gift-celebration p{white-space:nowrap;font-family:var(--display);margin-top:16px;font-size:22px}.toast-notice{z-index:60;background:var(--ink);color:var(--paper);width:max-content;max-width:calc(min(500px,90vw));padding:13px 22px;font-size:14px;position:fixed;bottom:95px;left:50%;transform:translate(-50%);box-shadow:0 5px 30px #0002}.toast-enter-active,.toast-leave-active{transition:opacity .3s}.toast-enter-from,.toast-leave-to{opacity:0}.modal{background:var(--paper);color:var(--ink);overscroll-behavior:contain;border:0;width:min(600px,100% - 32px);max-height:85svh;padding:0;overflow:auto}.modal::backdrop{background:#180d10a6}.modal-inner{padding:30px}.modal-header{justify-content:space-between;align-items:center;gap:20px;margin-bottom:25px;display:flex}.modal-header h2{font-size:28px}.icon-button{place-items:center;min-width:44px;min-height:44px;display:grid}.modal-description{margin-bottom:25px}.wish-form>p{margin-bottom:24px}.wish-form label{margin-top:22px;font-size:14px;display:block}.wish-form label>span{color:var(--muted);margin-left:6px;font-size:13px}input,select,textarea{width:100%;color:var(--ink);background:var(--white);border:1px solid #bab0aa;border-radius:0;min-width:0;margin-top:8px;padding:12px 14px;display:block}textarea{resize:vertical}input::-moz-placeholder{color:var(--muted)}textarea::-moz-placeholder{color:var(--muted)}input::placeholder,textarea::placeholder{color:var(--muted)}.form-caption{color:var(--muted);justify-content:space-between;gap:20px;margin-top:10px;font-size:12px;display:flex}.wish-form .button{width:100%;margin-top:25px}.form-error{color:var(--wine);font-size:14px;margin:16px 0!important}.gift-options{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.gift-options>button{background:var(--surface);flex-direction:column;align-items:center;gap:12px;min-width:0;padding:25px 8px;display:flex}.gift-options strong{font-family:var(--display);font-size:20px;font-weight:400}.gift-options span{font-size:12px}.gift-options>button>svg,.gift-send{color:var(--wine)}.gift-send{align-items:center;gap:10px;margin-top:10px;display:flex}.modal-wide{width:min(1080px,100% - 32px)}.album-filters{flex-wrap:wrap;gap:8px;margin-bottom:25px;display:flex}.album-filters button{min-height:40px;padding:7px 12px;font-size:14px}.album-filters button[aria-pressed=true]{background:var(--wine);color:var(--paper)}.album-grid{grid-template-columns:repeat(3,1fr);gap:15px;display:grid}.album-grid button{padding:0}.album-grid img{aspect-ratio:3/4;width:100%}.lightbox img{-o-object-fit:contain;object-fit:contain;max-width:100%;max-height:60svh;margin:auto}.lightbox-controls{justify-content:space-between;margin-top:20px;display:flex}.lightbox-controls button{min-height:44px;padding:5px 10px}@media (width>=1500px){.hero-photos img{-o-object-position:center 37%;object-position:center 37%}.hero h1{max-width:1700px;margin:auto;font-size:12vw}.letter,.moments,.wedding-details,.wishes{padding-left:max(var(--gutter),50vw - 720px);padding-right:max(var(--gutter),50vw - 720px)}}@media (width<=1000px){.hero{min-height:740px}.section-pad{padding-top:85px;padding-bottom:85px}.letter{gap:6%}.letter-image{width:100%}.hero h1{font-size:12vw}.photo-pair{gap:7%;margin-top:80px}.photo-pair figure:last-child{margin-top:90px}.details-photo{min-height:530px}.wedding-details{gap:40px 6%}.wish-list{padding:24px}.wishes{gap:6%}.section-heading{align-items:start}.section-heading>p{max-width:21em}}@media (width<=640px){.site-header{padding:18px 20px}.site-wordmark{font-size:17px}.site-header nav{gap:20px;font-size:14px}.site-header nav>a{display:none}.music-control span{font-size:13px}.hero{height:100svh;min-height:680px;max-height:1000px}.hero-photos img{-o-object-position:50% 34%;object-position:50% 34%}.hero-content{bottom:92px}.hero-copy{margin-bottom:22px;display:block}.hero-copy p{font-size:16px}.hero-copy .button{min-height:48px;margin-top:24px;padding:10px 19px;font-size:14px}.hero h1{letter-spacing:-.065em;text-align:left;font-size:12.2vw}.hero h1.long-name{white-space:normal;font-size:9vw;line-height:1.3}.hero:after{background:linear-gradient(#00000038,#0000 20% 42%,#000c)}.section-pad{padding:72px 20px}.letter{grid-template-columns:1fr;gap:42px}.letter-copy{grid-row:1}.letter-copy h2{margin-bottom:26px}.statement{max-width:24ch;font-size:23px}.letter-copy>p:not(.statement){margin-top:24px}.letter-image{aspect-ratio:3/4;justify-self:end;width:84%}.letter-copy .text-link{margin-top:20px}.section-heading{margin-bottom:32px;display:block}.section-heading>p{max-width:none;margin-top:24px;font-size:15px}.landscape-moment{aspect-ratio:4/5}.landscape-moment img{-o-object-position:50% center;object-position:50% center}.landscape-moment figcaption{font-size:13px;bottom:14px;left:14px}.photo-pair{flex-direction:column;gap:44px;margin-top:48px;display:flex}.photo-pair figure:first-child{aspect-ratio:3/4;align-self:start;width:82%}.photo-pair figure:last-child{aspect-ratio:4/5;align-self:end;width:90%;margin-top:0}.pair-white figure:last-child{aspect-ratio:3/2}.pair-warm figure:first-child{aspect-ratio:3/4;width:90%}.pair-warm figure:last-child{aspect-ratio:3/4;width:82%}.photo-pair figcaption{font-size:13px}.album-link-row{margin-top:40px;display:block}.album-link-row>p{margin-bottom:20px;font-size:14px}.album-link-row .button{width:100%;font-size:14px}.wedding-details{grid-template-columns:1fr;gap:38px}.details-heading p{margin-top:20px}.details-content{grid-area:2/1}.details-photo{aspect-ratio:4/5;grid-area:3/1;min-height:0}.date-block .display-date{font-size:32px}.venue-block{margin-top:36px}.venue-block h3{font-size:28px}.wishes{grid-template-columns:1fr;gap:35px}.wishes-copy>.button,.wishes-copy>p{margin-top:24px}.wish-list{padding:20px 24px}.empty-wishes{padding:25px 0}.closing{padding:0 20px 115px}.closing-photos{grid-template-columns:1fr 1fr;gap:12px;padding-top:30px}.closing-photos img{aspect-ratio:3/4}.closing-photos img:last-child{display:none}.closing-copy{padding-top:34px}.closing-name{margin:10px 0 18px;font-size:12vw}.closing-copy>p:first-child{font-size:14px}.guest-toolbar{padding:5px 10px calc(5px + env(safe-area-inset-bottom));justify-content:space-around}.guest-toolbar>button{flex:1;gap:6px;min-width:0;min-height:48px;font-size:12px}.particle-stage{right:35%}.modal-inner{padding:22px}.modal-header h2{font-size:25px}.gift-options{gap:8px}.gift-options>button{padding:22px 5px}.gift-options strong{font-size:17px}.gift-options>button>span:not(.gift-send){max-width:6em;font-size:12px}.modal-description{font-size:14px}.album-grid{grid-template-columns:1fr 1fr;gap:10px}.album-filters{gap:4px}.album-filters button{padding:5px 8px;font-size:13px}.gift-celebration{padding:26px}.gift-celebration p{font-size:19px}.form-caption{font-size:12px}.danmaku-stage{bottom:85px}.toast-notice{bottom:82px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.danmaku-stage,.hero-alternate,.particle-stage{display:none!important}[data-parallax]{transform:none!important}}.hero-content{bottom:100px}.hero h1{margin-bottom:30px}.hero-copy{margin-bottom:0}.hero-copy>div>p:first-child{font-size:18px}.guest-toolbar{left:auto;right:var(--gutter);gap:12px;width:520px;padding-left:16px;padding-right:16px}.guest-toolbar>button{flex:1}.display-date,.venue-block h3{font-size:calc(clamp(28px,3.2vw,46px))}.empty-wishes>p{font-size:30px}.site-wordmark{font-size:18px}.closing-name{font-size:calc(clamp(70px,12vw,190px))}@media (width<=1000px){.guest-toolbar{gap:4px;width:470px}.hero h1{margin-bottom:28px}}@media (width<=640px){.hero-photos img{-o-object-position:20% 34%;object-position:20% 34%}.hero h1{margin-bottom:28px;font-size:15.4vw}.hero-content{bottom:94px}.hero-copy .hero-date{font-size:14px}.hero-copy>div>p:first-child{font-size:16px}.hero-copy .button{margin-top:20px}.guest-toolbar{gap:0;width:100%;padding-left:10px;padding-right:10px;left:0;right:0}.closing-name{font-size:15vw}.empty-wishes>p{font-size:23px}}:root{--type-heading:calc(clamp(36px, 4vw, 60px));--type-lead:calc(clamp(24px, 2.1vw, 30px))}.invitation-site .hero-copy>div>p:first-child,.invitation-site .site-wordmark{font-size:16px}.invitation-site .button span,.invitation-site .music-control span,.invitation-site .wish-count,.invitation-site figcaption{font-size:14px}.invitation-site .empty-wishes>p,.invitation-site .statement,.invitation-site .wish-list blockquote>p{font-size:var(--type-lead)}.invitation-site .display-date,.invitation-site .venue-block h3{font-size:var(--type-heading)}@media (width<=640px){.invitation-site .section-heading>p{font-size:16px}.invitation-site .closing-name{font-size:15.4vw}.invitation-site .closing-copy .text-link{font-size:14px}}.venue-block{margin-top:80px}.invitation-site .empty-wishes>p{font-family:var(--body);font-size:16px}
