@font-face{font-family:Wedding Serif SC;src:url(/fonts/NotoSerifSC-Wedding.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap}:root{--ink:#3d352f;--deep-ink:#2d2824;--soft-ink:#73675e;--paper:#f3efe5;--paper-light:#f8f4ea;--rose:#b98587;--hairline:#3d352f38;--font-serif-cn:"Wedding Serif SC", "Songti SC", "STSong", "Noto Serif CJK SC", "Source Han Serif SC", serif;--font-serif:Georgia, "Times New Roman", serif}*{box-sizing:border-box}html{color:var(--ink);scroll-behavior:smooth;background:#171513}body{min-width:320px;font-family:var(--font-serif-cn);text-rendering:optimizelegibility;background:#171513;margin:0}img{max-width:100%;display:block}figure,blockquote{margin:0}.site-shell{min-height:100vh;padding:clamp(0px,2.8vw,36px) 0}.invitation-paper{background-color:var(--paper);background-image:url(/assets/paper-texture-tile.jpg);background-repeat:repeat;background-size:520px 480px;width:min(100%,760px);margin:0 auto;position:relative;overflow:hidden;box-shadow:0 24px 80px #00000052}.guest-services-dock{z-index:20;right:max(0px,50vw - 380px);bottom:max(18px, env(safe-area-inset-bottom));flex-direction:column;align-items:flex-end;gap:8px;display:flex;position:fixed}.guest-service-bookmark{--bookmark-fill:var(--rose);isolation:isolate;color:#fffaf5;filter:drop-shadow(0 8px 10px #3628283d);clip-path:polygon(16px 0,100% 0,100% 100%,16px 100%,0 50%);touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:#f8f4eaf0;flex-direction:row;justify-content:flex-start;align-items:center;gap:12px;width:clamp(142px,20.4vw,170px);min-height:55px;padding:12px 17px 12px 29px;text-decoration:none;transition:width .18s,filter .18s;display:flex;position:relative}.guest-service-bookmark:before{z-index:-1;background:var(--bookmark-fill);clip-path:polygon(13px 0,100% 0,100% 100%,13px 100%,0 50%);content:"";pointer-events:none;position:absolute;inset:2px 0 2px 3px}.guest-service-bookmark:nth-child(2){--bookmark-fill:#c18f91;width:clamp(130px,19.2vw,158px)}.guest-service-bookmark:nth-child(3){--bookmark-fill:#ae7d80;width:clamp(118px,18vw,146px)}.guest-service-bookmark:focus-visible{filter:drop-shadow(0 11px 14px #3628284d);width:clamp(158px,22.8vw,185px)}@media (hover:hover) and (pointer:fine){.guest-service-bookmark:hover{filter:drop-shadow(0 11px 14px #3628284d);width:clamp(158px,22.8vw,185px)}}.guest-service-bookmark:focus-visible{outline:2px solid var(--deep-ink);outline-offset:3px}.guest-service-bookmark-number{letter-spacing:.12em;opacity:.86;font-family:Georgia,serif;font-size:12px}.guest-service-bookmark-label{box-sizing:border-box;letter-spacing:.12em;text-align:right;white-space:nowrap;justify-content:flex-end;align-items:center;margin:0;padding-left:58px;font-size:16.8px;font-weight:400;line-height:1.1;display:flex;position:absolute;inset:0 17px 0 0}.hero-photo-frame{background:0 0;padding:clamp(16px,4.6vw,36px);position:relative}.hero-photo{object-fit:contain;width:100%;height:auto}.hero-welcome{color:#fffcf6f0;font-family:var(--font-serif);letter-spacing:.24em;text-transform:uppercase;white-space:nowrap;text-shadow:0 1px 8px #261e1947;margin:0;font-size:clamp(9.6px,1.74vw,14.4px);font-weight:400;line-height:1;position:absolute;top:clamp(30px,7vw,58px);left:50%;transform:translate(-50%)}.abstract-panel{background:0 0;padding:8px 0 clamp(30px,5vw,42px);overflow:hidden}.abstract-panel img{width:64%;height:auto;margin:0 auto;transform:translateY(-8px)}.opening-section,.ruled-section{text-align:center;padding-left:clamp(26px,9vw,88px);padding-right:clamp(26px,9vw,88px);position:relative}.opening-section{padding-top:clamp(74px,14vw,126px);padding-bottom:clamp(76px,13vw,118px)}.opening-section .invitation-copy{margin-top:clamp(24px,4vw,36px)}.eyebrow,.section-kicker{color:var(--soft-ink);letter-spacing:.28em;text-transform:uppercase;font-family:Georgia,Times New Roman,serif;font-size:12px}.eyebrow{margin:0 0 30px}.invitation-title{margin:0;font-weight:400}.invitation-title span{display:block}.invitation-title span:first-child{letter-spacing:.035em;font-family:Georgia,Times New Roman,serif;font-size:clamp(34px,7vw,58px);font-style:normal;line-height:1}.invitation-title span:last-child{letter-spacing:.34em;text-indent:.34em;margin-top:18px;font-size:clamp(17px,3vw,23px)}.handdrawn-logo{width:clamp(104px,24vw,166px);color:var(--ink);margin:0 auto 28px}.couple-name{letter-spacing:.11em;justify-content:center;align-items:baseline;gap:clamp(10px,3vw,24px);margin:clamp(54px,9vw,76px) 0 0;font-size:clamp(22px,4.7vw,35px);font-weight:400;display:flex}.couple-name span{color:var(--rose);font-family:Georgia,serif;font-size:.74em;font-style:italic}.animal-portrait{width:min(60%,354px);margin:10px auto 0}.animal-portrait img{width:100%;height:auto}.invitation-copy{letter-spacing:.12em;margin:clamp(56px,11vw,92px) auto 0;padding-top:34px;font-size:clamp(15px,2.8vw,20px);line-height:2.05;position:relative}.invitation-copy:before{background:var(--rose);content:"";width:48px;height:1px;position:absolute;top:0;left:50%;transform:translate(-50%)}.invitation-copy p{margin:0}.meeting-line{color:var(--soft-ink);justify-content:center;align-items:baseline;gap:clamp(16px,4vw,30px);margin-top:10px;font-size:.88em;display:flex}.meeting-line span:last-child{color:var(--rose);letter-spacing:.22em;font-size:1.18em}.ruled-section{padding-top:clamp(84px,15vw,132px);padding-bottom:clamp(84px,15vw,132px)}.date-section{padding-top:clamp(72px,11vw,96px);padding-bottom:clamp(72px,11vw,96px)}.ruled-section:before{background:var(--hairline);content:"";height:1px;position:absolute;top:0;left:clamp(26px,9vw,88px);right:clamp(26px,9vw,88px)}.section-kicker{margin:0 0 22px}.date-line{letter-spacing:.07em;margin:clamp(26px,5vw,42px) 0 0;font-size:clamp(22px,4.8vw,37px);font-weight:400}.lunar-line{color:var(--soft-ink);letter-spacing:.18em;margin:12px 0 0;font-size:16.8px}.details-divider{background:var(--hairline);width:48px;height:1px;margin:clamp(38px,6vw,50px) auto}.section-heading h2{letter-spacing:.28em;text-indent:.28em;margin:0;font-size:clamp(26px,5vw,38px);font-weight:400}.timeline{text-align:left;margin:clamp(62px,12vw,96px) auto 0;padding:0;list-style:none;position:relative}.timeline:before{border-left:1px solid var(--hairline);content:"";border-radius:48% 0 0 52%;width:26px;position:absolute;top:6px;bottom:6px;left:calc(50% - 13px);transform:rotate(-2deg)}.timeline-item{grid-template-columns:minmax(0,1fr) clamp(46px,9vw,62px) minmax(0,1fr);align-items:center;min-height:clamp(108px,19vw,140px);display:grid;position:relative}.timeline-index{z-index:1;width:auto;height:auto;color:var(--rose);text-align:center;grid-area:1/2;justify-self:center;font-family:Georgia,serif;font-size:14.4px;font-weight:700;line-height:1;position:relative}.timeline-time{color:var(--deep-ink);letter-spacing:.03em;text-align:right;white-space:nowrap;grid-area:1/1;justify-content:flex-end;align-items:baseline;gap:5px;padding-right:clamp(12px,3vw,24px);font-family:Georgia,serif;font-size:clamp(15px,3vw,19px);display:flex}.timeline-time small{letter-spacing:.08em;font-size:.7em}.timeline-copy{flex-direction:column;grid-area:1/3;gap:6px;padding-left:clamp(12px,3vw,24px);display:flex}.timeline-item:nth-child(2n) .timeline-time{text-align:left;grid-column:3;justify-content:flex-start;padding-left:clamp(12px,3vw,24px);padding-right:0}.timeline-item:nth-child(2n) .timeline-copy{text-align:right;grid-column:1;align-items:flex-end;padding-left:0;padding-right:clamp(12px,3vw,24px)}.timeline-copy strong{letter-spacing:.12em;font-size:clamp(16px,3vw,21px);font-weight:400}.timeline-copy span{color:var(--soft-ink);letter-spacing:.15em;font-family:Georgia,serif;font-size:10.8px}.wedding-elements{width:min(78%,420px);margin:clamp(56px,11vw,88px) auto 0}.wedding-elements img{width:100%;height:auto}.venue-section h2{letter-spacing:.08em;margin:0;font-size:clamp(22px,4.8vw,37px);font-weight:400}.venue-kicker span{display:block}.venue-kicker span:last-child{font-family:var(--font-serif-cn);letter-spacing:.24em;margin-top:9px;font-size:13.2px}.venue-section h2 span{color:var(--rose);margin:0 .08em;display:inline-block}.venue-address{max-width:500px;color:var(--soft-ink);letter-spacing:.06em;margin:22px auto 0;font-size:clamp(16.8px,3.12vw,20.4px);line-height:1.9}.venue-building{width:min(34%,200px);margin:clamp(34px,6vw,48px) auto 0}.venue-building img{width:100%;height:auto}.venue-mark{justify-content:center;align-items:center;gap:12px;margin-top:28px;display:flex}.venue-mark span{background:var(--hairline);width:38px;height:1px}.venue-mark i{border:1px solid var(--rose);border-radius:50%;width:8px;height:8px}.tips-list{text-align:left;margin:clamp(58px,11vw,88px) 0 0;padding:0;list-style:none}.tips-list li{border-top:1px solid #3d352f21;grid-template-columns:44px 1fr;gap:clamp(16px,4vw,28px);padding:18px 0;display:grid}.tips-list li:last-child{border-bottom:1px solid #3d352f21}.tip-number{color:var(--rose);letter-spacing:.1em;font-family:Georgia,serif;font-size:13.2px}.tips-list p{color:#544a43;letter-spacing:.045em;margin:0;font-size:clamp(16.8px,3.24vw,20.4px);line-height:1.78}.closing-expectation{color:var(--rose);letter-spacing:.2em;text-indent:.2em;margin:clamp(92px,15vw,126px) 0 0;font-size:clamp(15px,2.8vw,19px)}.tips-section{padding-bottom:0}.closing-art{background:0 0}.closing-art img{width:100%;height:auto}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.service-shell{background:#171513;min-height:100vh;padding:clamp(0px,2.8vw,36px) 0}.service-paper{background-color:var(--paper);background-image:url(/assets/paper-texture-tile.jpg);background-repeat:repeat;background-size:520px 480px;width:min(100%,760px);min-height:calc(100vh + -1*clamp(0px,5.6vw,72px));margin:0 auto;padding:clamp(28px,7vw,64px) clamp(26px,9vw,88px) clamp(48px,10vw,86px);position:relative;overflow:hidden;box-shadow:0 24px 80px #00000052}.service-back{color:var(--soft-ink);letter-spacing:.12em;font-size:17.28px;text-decoration:none}.service-back:hover{color:var(--rose)}.service-top-nav{justify-content:space-between;align-items:center;display:flex}.service-heading{text-align:center;margin:clamp(68px,12vw,102px) auto clamp(54px,9vw,72px)}.service-heading img{width:clamp(82px,18vw,126px);margin:0 auto 28px}.service-heading .section-kicker{margin-bottom:18px}.service-heading h1{letter-spacing:.28em;text-indent:.28em;margin:0;font-size:clamp(30px,6vw,44px);font-weight:400}.service-intro{max-width:430px;color:var(--soft-ink);letter-spacing:.08em;margin:24px auto 0;font-size:clamp(16.8px,3.12vw,20.4px);line-height:1.9}.rsvp-form{max-width:520px;margin:0 auto}.form-field{margin-top:30px}.form-field:first-child{margin-top:0}.form-field label,.form-field legend{color:var(--deep-ink);letter-spacing:.12em;font-size:16.8px}.form-field input[type=text],.form-field select,.form-field textarea{border:0;border-bottom:1px solid var(--hairline);width:100%;color:var(--deep-ink);font:inherit;letter-spacing:.05em;background:#fffcf62e;border-radius:0;outline:0;margin-top:12px;font-size:16px;transition:border-color .16s,background-color .16s}.form-field input[type=text],.form-field select{height:52px;padding:0 14px}.guest-count-picker{margin-top:12px;position:relative}.guest-count-trigger{border:0;border-bottom:1px solid var(--hairline);width:100%;height:52px;color:var(--deep-ink);font:inherit;letter-spacing:.05em;cursor:pointer;background:#fffcf62e;justify-content:space-between;align-items:center;padding:0 14px;font-size:16px;transition:border-color .16s,background-color .16s;display:flex}.guest-count-trigger[aria-expanded=true]{border-color:var(--rose);background:#fffcf65c}.guest-count-chevron{color:var(--rose);font-family:Georgia,serif;font-size:19px;line-height:1;transform:translateY(-2px)}.guest-count-menu{z-index:12;background-color:var(--paper);background-image:url(/assets/paper-texture-tile.jpg);background-size:520px 480px;border:1px solid #b9858794;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;width:100%;padding:8px;display:grid;position:absolute;top:calc(100% + 8px);left:0;box-shadow:0 18px 42px #3d352f33}.guest-count-menu button{min-height:48px;color:var(--soft-ink);font:inherit;text-align:center;cursor:pointer;background:#fffcf633;border:1px solid #0000;justify-content:center;align-items:center;gap:5px;line-height:1;display:flex}.guest-count-menu button span{font-family:Georgia,serif;font-size:18px}.guest-count-menu button small{letter-spacing:.1em;font-size:11px}.guest-count-menu button.is-selected{border-color:var(--rose);color:var(--deep-ink);background:#b9858721}.guest-count-trigger:focus-visible,.guest-count-menu button:focus-visible{outline:2px solid var(--rose);outline-offset:2px}.form-field textarea{resize:vertical;min-height:132px;padding:14px;line-height:1.8}.form-field input[type=text]:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--rose);background:#fffcf65c}.form-field input::placeholder,.form-field textarea::placeholder{color:#73675e8f}.attendance-field{border:0;padding:0}.attendance-options{grid-template-columns:1fr 1fr;gap:12px;margin-top:14px;display:grid}.attendance-options label{border:1px solid var(--hairline);min-height:54px;color:var(--soft-ink);cursor:pointer;justify-content:center;align-items:center;transition:border-color .16s,color .16s,background-color .16s;display:flex;position:relative}.attendance-options label.is-selected{border-color:var(--rose);color:var(--deep-ink);background:#b9858714}.attendance-options input{opacity:0;pointer-events:none;position:absolute}.field-label-row{justify-content:space-between;align-items:center;display:flex}.field-label-row span{color:var(--soft-ink);font-family:Georgia,serif;font-size:13.2px}.honeypot{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.form-error{color:#9f5f62;text-align:center;margin:22px 0 0;font-size:15.6px;line-height:1.6}.rsvp-submit{border:1px solid var(--rose);background:var(--rose);width:100%;min-height:56px;color:var(--paper-light);letter-spacing:.18em;cursor:pointer;margin-top:40px;font-family:inherit;font-size:18px;transition:opacity .16s,transform .16s}.rsvp-submit:hover:not(:disabled){transform:translateY(-1px)}.rsvp-submit:disabled{cursor:wait;opacity:.62}.rsvp-submit-wait{color:var(--rose);letter-spacing:.04em;text-align:center;white-space:nowrap;margin:13px 0 0;font-size:13.2px;line-height:1.5}.form-note{color:var(--soft-ink);letter-spacing:.06em;text-align:center;margin:14px 0 0;font-size:13.2px}.rsvp-success{text-align:center;max-width:520px;margin:clamp(70px,12vw,112px) auto}.rsvp-success-mark{border:1px solid var(--rose);width:48px;height:48px;color:var(--rose);border-radius:50%;place-items:center;margin:0 auto 26px;font-family:Georgia,serif;font-size:20px;display:grid}.rsvp-success h2{letter-spacing:.15em;margin:22px 0 0;font-size:clamp(26px,5vw,36px);font-weight:400}.rsvp-success>p:not(.section-kicker){color:var(--soft-ink);letter-spacing:.06em;margin:22px 0 0;font-size:18px;line-height:1.8}.text-button{border:0;border-bottom:1px solid var(--rose);color:var(--rose);letter-spacing:.1em;cursor:pointer;background:0 0;margin-top:30px;padding:8px 0;font-family:inherit;font-size:15.6px}.service-next{border:1px solid var(--hairline);width:fit-content;color:var(--deep-ink);letter-spacing:.12em;margin:28px auto 0;padding:13px 20px;font-size:15.6px;text-decoration:none;display:block}.location-heading{margin-bottom:clamp(42px,7vw,60px)}.location-card{text-align:center;max-width:540px;margin:0 auto}.location-date{color:var(--soft-ink);letter-spacing:.18em;margin:0;font-family:Georgia,serif;font-size:13.2px}.location-card h2{letter-spacing:.08em;margin:24px 0 0;font-size:clamp(25px,5vw,38px);font-weight:400}.location-card h2 span{color:var(--rose);margin:0 .12em;display:inline-block}.location-address{color:var(--soft-ink);letter-spacing:.05em;margin:20px auto 0;font-size:clamp(16.8px,3.12vw,20.4px);line-height:1.8}.location-building{width:min(44%,220px);margin:clamp(38px,7vw,54px) auto}.location-building img{width:100%;height:auto}.navigation-button{border:1px solid var(--rose);background:var(--rose);width:100%;min-height:64px;color:var(--paper-light);cursor:pointer;justify-content:space-between;align-items:center;padding:0 20px;text-decoration:none;list-style:none;display:flex}.navigation-button::-webkit-details-marker{display:none}.navigation-button span{letter-spacing:.1em;white-space:nowrap;font-size:16px}.navigation-button small{letter-spacing:.12em;white-space:nowrap;font-family:Georgia,serif;font-size:8.8px}.map-app-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.map-app-options a{min-height:54px;color:var(--deep-ink);background:#f8f4ea5c;border:1px solid #b985877a;justify-content:space-between;align-items:center;gap:5px;padding:0 11px;text-decoration:none;display:flex}.map-app-options a span{letter-spacing:.045em;white-space:nowrap;flex:none;font-size:13.6px}.map-app-options a small{color:var(--rose);letter-spacing:.07em;white-space:nowrap;flex:0 auto;font-family:Georgia,serif;font-size:8.5px}.map-app-options a:hover,.map-app-options a:focus-visible{background:#b9858724}.copy-address-button{width:100%;min-height:54px;color:var(--ink);font:inherit;cursor:pointer;background:#b9858729;border:1px solid #b985879e;justify-content:space-between;align-items:center;margin-top:10px;padding:0 18px;display:flex}.copy-address-button span{letter-spacing:.08em;font-size:15.6px}.copy-address-button small{color:var(--rose);letter-spacing:.12em;font-family:Georgia,serif;font-size:9.6px}.entrance-original-link{color:var(--rose);letter-spacing:.08em;text-underline-offset:4px;margin-top:10px;font-size:13.2px;display:inline-block}.arrival-notes{border-top:1px solid var(--hairline);max-width:540px;margin:clamp(58px,10vw,82px) auto 0}.arrival-notes article{border-bottom:1px solid var(--hairline);text-align:left;grid-template-columns:38px 1fr;gap:20px;padding:28px 0;display:grid}.arrival-index{color:var(--rose);font-family:Georgia,serif;font-size:13.2px;font-weight:700}.arrival-notes h2{letter-spacing:.12em;margin:0;font-size:17px;font-weight:400}.arrival-notes p{color:#544a43;letter-spacing:.04em;margin:12px 0 0;font-size:clamp(15.6px,3vw,19.2px);line-height:1.85}.entrance-photo{border:1px solid var(--hairline);background:#fffcf633;margin:24px 0 0;padding:clamp(8px,1.8vw,12px)}.entrance-photo img{width:100%;height:auto}.entrance-photo figcaption{color:var(--soft-ink);letter-spacing:.14em;text-align:center;margin-top:10px;font-size:12px}.location-next{margin-top:clamp(48px,9vw,72px)}.photos-heading{margin-bottom:clamp(24px,4vw,36px)}.photo-section-heading{text-align:center}.photo-section-heading .section-kicker{margin-bottom:18px}.photo-section-heading h2{letter-spacing:.22em;text-indent:.22em;margin:0;font-size:clamp(25px,5vw,38px);font-weight:400}.photo-section-heading>p:last-child:not(.section-kicker){max-width:430px;color:var(--soft-ink);letter-spacing:.06em;margin:20px auto 0;font-size:clamp(15.6px,3vw,19.2px);line-height:1.8}.curated-grid{grid-template-columns:1fr 1fr;gap:clamp(14px,3vw,24px);margin-top:clamp(42px,8vw,64px);display:grid}.curated-grid figure,.wall-grid figure{position:relative}.curated-grid img{width:100%;height:auto}.curated-grid a,.wall-grid a{width:fit-content;color:var(--soft-ink);letter-spacing:.1em;margin:12px auto 0;font-size:13.2px;text-decoration:none;display:block}.guest-upload,.public-wall,.photo-qr{border-top:1px solid var(--hairline);margin-top:clamp(92px,16vw,138px);padding-top:clamp(72px,12vw,104px)}.photos-page .combined-gallery{border-top:0;margin-top:0;padding-top:0}.photos-page .guest-upload{border-top:0;margin-top:clamp(34px,6vw,48px);padding-top:0}.combined-gallery-intro{max-width:430px;color:var(--soft-ink);letter-spacing:.06em;text-align:center;margin:0 auto;font-size:clamp(15.6px,3vw,19.2px);line-height:1.8}.curated-gallery{border-top:1px solid var(--hairline);margin-top:clamp(92px,16vw,138px);padding-top:clamp(72px,12vw,104px)}.photo-upload-form{text-align:center;max-width:520px;margin:clamp(40px,7vw,56px) auto 0}.photo-file-input{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.photo-upload-form>.combined-upload-button{border:1px solid var(--rose);background:var(--rose);width:100%;min-height:68px;color:var(--paper-light);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:6px;margin-top:0;padding:11px 16px 10px;font-family:inherit;display:flex}.combined-upload-button>span{letter-spacing:.16em;font-size:16px}.combined-upload-button small{letter-spacing:.04em;opacity:.68;font-size:12px;line-height:1.35}.combined-upload-button small span{font-size:inherit;display:block}.combined-upload-button small span+span{margin-top:2px}.photo-upload-form>.combined-upload-button:disabled{cursor:wait;opacity:.68}.photo-upload-fab{z-index:30;right:20px;bottom:max(20px, env(safe-area-inset-bottom));background:var(--rose);color:#fffaf5;cursor:pointer;border:1px solid #fff8f280;border-radius:50%;place-items:center;width:clamp(58px,9vw,66px);height:clamp(58px,9vw,66px);padding:0;transition:transform .18s,box-shadow .18s,opacity .18s;display:grid;position:fixed;box-shadow:0 12px 30px #462f3047,0 4px 10px #462f3033}.photo-upload-fab svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:30px;height:30px}.photo-upload-fab:hover{transform:translateY(-2px);box-shadow:0 16px 36px #462f3052,0 6px 12px #462f3038}.photo-upload-fab:focus-visible{outline:2px solid var(--deep-ink);outline-offset:4px}.photo-upload-fab:disabled{cursor:wait;opacity:.68;transform:none}.photo-picker{cursor:pointer;background:#fffcf62e;border:1px dashed #3d352f57;flex-direction:column;justify-content:center;align-items:center;min-height:168px;padding:28px;display:flex}.photo-picker input{opacity:0;width:1px;height:1px;position:absolute}.photo-picker span{border-bottom:1px solid var(--rose);color:var(--deep-ink);letter-spacing:.16em;padding-bottom:6px;font-size:16px}.photo-picker small{color:var(--soft-ink);letter-spacing:.06em;margin-top:14px;font-size:13.2px}.selected-files{max-height:154px;color:var(--soft-ink);margin:18px 0 0;padding:0;font-size:14.4px;line-height:1.8;list-style:none;overflow:auto}.upload-selection{text-align:left;background:#fffaf338;border:1px solid #be848e94;margin-top:18px;padding:18px}.upload-selection-heading{color:var(--deep-ink);letter-spacing:.08em;justify-content:space-between;align-items:center;gap:18px;font-size:14px;display:flex}.upload-selection-heading button{color:var(--rose);font:inherit;cursor:pointer;background:0 0;border:0;padding:4px 0}.upload-selection .selected-files{text-align:left;max-height:112px;margin-top:12px;font-size:12px;line-height:1.65}.upload-selection .selected-files li{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.confirm-photo-upload{border:1px solid var(--deep-ink);background:var(--deep-ink);width:100%;min-height:48px;color:var(--paper-light);letter-spacing:.14em;cursor:pointer;margin-top:16px;font-family:inherit;font-size:15px}.confirm-photo-upload:disabled,.upload-selection-heading button:disabled{cursor:wait;opacity:.62}.photo-upload-form>button{border:1px solid var(--deep-ink);background:var(--deep-ink);width:100%;min-height:56px;color:var(--paper-light);letter-spacing:.16em;cursor:pointer;margin-top:24px;font-family:inherit;font-size:18px}.photo-upload-form>button:disabled{cursor:wait;opacity:.62}.upload-message,.empty-wall{color:var(--soft-ink);letter-spacing:.05em;text-align:center;margin:18px 0 0;font-size:15.6px;line-height:1.7}.upload-message.is-success{color:#7b6a58;border:1px solid color-mix(in srgb, var(--rose) 45%, transparent);background:color-mix(in srgb, var(--rose) 8%, transparent);padding:11px 14px}.stacked-carousel{touch-action:pan-y;margin-top:clamp(38px,7vw,56px)}.stacked-carousel-stage{isolation:isolate;height:clamp(390px,82vw,620px);position:relative;overflow:hidden}.stacked-carousel-card{opacity:0;pointer-events:none;backface-visibility:hidden;background:#f8f4ead1;border:1px solid #3d352f29;width:min(70%,400px);height:calc(100% - 28px);margin:0;padding:clamp(7px,1.5vw,11px);transition:transform .65s cubic-bezier(.22,1,.36,1),opacity .42s;position:absolute;top:12px;left:50%;transform:translate(-50%)scale(.84);box-shadow:0 14px 34px #3d352f21}.stacked-carousel-card img{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-touch-callout:default;width:100%;height:100%;display:block}.stacked-carousel-card>a{width:100%;height:100%;display:block}.stacked-carousel-card.is-active{z-index:3;opacity:1;pointer-events:auto;transform:translate(-60%)rotate(-1.4deg)scale(1)}.stacked-carousel-card.is-next{z-index:2;opacity:.72;pointer-events:auto;transform:translate(-30%)rotate(2.1deg)scale(.91)}.stacked-carousel-card.is-prev{z-index:1;opacity:.52;transform:translate(-82%)rotate(-2.5deg)scale(.86)}.stacked-carousel-card.is-active.is-only{transform:translate(-50%)rotate(-.7deg)scale(1)}.stacked-carousel-card.is-hidden{z-index:0;opacity:0;transform:translate(-50%)scale(.78)}.carousel-controls{justify-content:center;align-items:center;gap:22px;margin-top:14px;display:flex}.carousel-controls button{border:1px solid var(--hairline);width:38px;height:38px;color:var(--deep-ink);cursor:pointer;background:#fffcf633;border-radius:50%;place-items:center;padding:0;font-family:Georgia,serif;font-size:16px;display:grid}.carousel-controls span{color:var(--soft-ink);letter-spacing:.14em;font-family:Georgia,serif;font-size:12px}.long-press-hint{color:var(--soft-ink);letter-spacing:.1em;text-align:center;margin:14px 0 0;font-size:13.2px}.wall-sync-status{color:var(--soft-ink);letter-spacing:.08em;text-align:center;margin:12px 0 0;font-size:13.2px}.wall-grid{columns:2;column-gap:clamp(14px,3vw,24px);margin-top:clamp(42px,8vw,64px)}.wall-grid figure{break-inside:avoid;margin:0 0 clamp(22px,4vw,32px)}.wall-grid img{width:100%;height:auto}.photo-qr{grid-template-columns:minmax(0,1fr) minmax(142px,190px);align-items:center;gap:clamp(32px,7vw,62px);display:grid}.photo-qr h2{letter-spacing:.12em;margin:16px 0 0;font-size:clamp(22px,4.4vw,34px);font-weight:400}.photo-qr p:not(.section-kicker){color:var(--soft-ink);letter-spacing:.05em;margin:18px 0 0;font-size:clamp(15.6px,3vw,18px);line-height:1.8}.photo-qr img{border:10px solid #fffcf661;width:100%;height:auto}.admin-heading{margin-bottom:clamp(44px,8vw,66px)}.admin-key-form{text-align:center;max-width:420px;margin:0 auto}.admin-key-form label{color:var(--deep-ink);letter-spacing:.12em;font-size:16.8px;display:block}.admin-key-form input{border:1px solid var(--hairline);width:100%;height:52px;color:var(--deep-ink);font:inherit;background:#fffcf640;margin-top:14px;padding:0 14px}.admin-key-form button{background:var(--deep-ink);width:100%;min-height:52px;color:var(--paper-light);letter-spacing:.12em;border:0;margin-top:16px;font-family:inherit}.admin-key-form p,.admin-error,.admin-loading,.admin-empty{color:var(--soft-ink);text-align:center;font-size:15.6px;line-height:1.7}.admin-notice{color:#8e5f63;letter-spacing:.08em;text-align:center;background:#b87f841a;border:1px solid #b87f846b;max-width:520px;margin:28px auto 0;padding:12px 16px;font-size:14px;line-height:1.6}.admin-summary{border:1px solid var(--hairline);grid-template-columns:repeat(4,1fr);max-width:600px;margin:0 auto;display:grid}.admin-summary div{border-right:1px solid var(--hairline);text-align:center;flex-direction:column;gap:8px;padding:22px 10px;display:flex}.admin-summary div:last-child{border-right:0}.admin-summary strong{font-family:Georgia,serif;font-size:25px;font-weight:400}.admin-summary span{color:var(--soft-ink);letter-spacing:.08em;font-size:12px}.admin-section{border-top:1px solid var(--hairline);margin-top:clamp(72px,12vw,102px);padding-top:clamp(56px,9vw,76px)}.admin-section>header{text-align:center}.admin-section h2{letter-spacing:.16em;margin:16px 0 0;font-size:clamp(24px,4.8vw,34px);font-weight:400}.admin-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:40px;display:grid}.admin-photo-grid article{border:1px solid var(--hairline);background:#fffcf62e;padding:10px}.admin-photo-grid img{aspect-ratio:4/3;object-fit:contain;background:#3d352f0a;width:100%}.admin-photo-meta,.admin-photo-actions{justify-content:space-between;align-items:center;gap:10px;margin-top:12px;display:flex}.admin-photo-meta span{color:var(--rose);font-size:14.4px}.admin-photo-meta small{color:var(--soft-ink);font-size:13.2px}.admin-photo-actions button{border:1px solid var(--deep-ink);min-height:38px;color:var(--deep-ink);cursor:pointer;background:0 0;flex:1;font-family:inherit}.admin-photo-actions button.danger{color:#9f5f62;border-color:#9f5f6280}.admin-rsvp-list{border-top:1px solid var(--hairline);margin-top:40px}.admin-rsvp-export{border:1px solid var(--rose);background:var(--rose);color:#fffaf3;min-height:42px;font:inherit;letter-spacing:.08em;cursor:pointer;margin-top:24px;padding:0 22px;font-size:13.2px}.admin-rsvp-export:disabled{cursor:wait;opacity:.62}.admin-rsvp-list article{border-bottom:1px solid var(--hairline);padding:22px 0}.admin-rsvp-list article>div{justify-content:space-between;align-items:baseline;gap:18px;display:flex}.admin-rsvp-list strong{letter-spacing:.08em;font-size:16px;font-weight:400}.admin-rsvp-list span{color:var(--rose);font-size:14.4px}.admin-rsvp-list p{color:var(--soft-ink);letter-spacing:.04em;margin:12px 0 0;font-size:15.6px;line-height:1.7}.admin-rsvp-delete{color:#9f5f62;min-height:38px;font:inherit;cursor:pointer;background:0 0;border:1px solid #9f5f626b;margin-top:14px;padding:0 16px;font-size:13.2px}.admin-confirm-backdrop{z-index:1000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#1b181580;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.admin-confirm-dialog{text-align:center;background-color:#eee0c7;background-image:url(/assets/paper-texture-tile.jpg);border:1px solid #705d523d;width:min(100%,440px);padding:clamp(30px,7vw,46px);box-shadow:0 24px 60px #1f19153d}.admin-confirm-dialog h2{color:var(--deep-ink);letter-spacing:.1em;margin:14px 0 0;font-size:clamp(22px,5vw,30px);font-weight:400}.admin-confirm-dialog>p:not(.section-kicker){color:var(--soft-ink);margin:20px 0 0;font-size:14px;line-height:1.8}.admin-confirm-actions{grid-template-columns:1fr 1fr;gap:12px;margin-top:28px;display:grid}.admin-confirm-actions button{border:1px solid var(--hairline);min-height:44px;color:var(--deep-ink);font:inherit;letter-spacing:.08em;cursor:pointer;background:#fffcf62e;font-size:14px}.admin-confirm-actions button.danger{border-color:var(--rose);background:var(--rose);color:#fffaf3}.admin-confirm-actions button:disabled{cursor:wait;opacity:.65}.service-footer{border-top:1px solid var(--hairline);max-width:520px;color:var(--soft-ink);letter-spacing:.2em;justify-content:space-between;margin:clamp(68px,12vw,104px) auto 0;padding-top:20px;font-family:Georgia,serif;font-size:10.8px;display:flex}.icp-record{color:#3d352f94;letter-spacing:.08em;text-align:center;justify-content:center;padding:24px 24px 84px;font-size:10px;line-height:1.7;display:flex}.icp-record a{color:inherit;text-decoration:none}.icp-record a:hover,.icp-record a:focus-visible{color:var(--rose)}@media (max-width:759px){.site-shell{padding:0}.invitation-paper{box-shadow:none}.service-shell{padding:0}.service-paper{box-shadow:none}}@media (max-width:480px){.eyebrow,.section-kicker{font-size:10px}.invitation-title span:last-child{font-size:15px}.invitation-copy{font-size:13.5px}.lunar-line{font-size:14px}.venue-kicker span:last-child{font-size:11px}.tips-list p{font-size:14px}.venue-address,.location-address{letter-spacing:0;white-space:nowrap;font-size:clamp(10.5px,3vw,12px)}.timeline-index,.tip-number{font-size:11px}.timeline-time{font-size:13.5px}.timeline-copy strong{font-size:14px}.timeline-copy span{font-size:9px}.closing-expectation{font-size:13px}.service-back{font-size:14px}.service-heading .section-kicker{margin-bottom:14px}.service-intro,.arrival-notes p,.photo-section-heading>p:last-child:not(.section-kicker),.combined-gallery-intro,.photo-qr p:not(.section-kicker),.form-field label,.form-field legend{font-size:14px}.guest-count-trigger{height:48px;font-size:14px}.guest-count-menu button{min-height:44px}.guest-count-menu button span{font-size:16px}.field-label-row span,.form-note,.location-date,.entrance-original-link,.arrival-index,.upload-message,.empty-wall,.long-press-hint,.wall-sync-status{font-size:11px}.rsvp-submit-wait{letter-spacing:0;font-size:clamp(9.5px,2.8vw,11px)}.attendance-options label{min-height:48px;font-size:14px}.rsvp-submit,.navigation-button span,.combined-upload-button>span{font-size:14px}.map-app-options a span,.copy-address-button span{font-size:12.5px}.map-app-options a{gap:4px;padding-inline:9px}.map-app-options a small{letter-spacing:.045em;font-size:7.8px}.arrival-notes h2{font-size:15px}.entrance-photo figcaption,.carousel-controls span{font-size:9px}.combined-upload-button small{letter-spacing:.025em;font-size:10.5px;line-height:1.4}.service-footer{font-size:9px}.guest-services-dock{right:0;bottom:max(12px, env(safe-area-inset-bottom));gap:6px}.guest-service-bookmark,.guest-service-bookmark:focus-visible{gap:7.5px;width:112px;min-height:42px;padding:7.5px 10.5px 7.5px 23px}.guest-service-bookmark:nth-child(2){width:105px}.guest-service-bookmark:nth-child(3){width:97px}.guest-service-bookmark-number{font-size:9px}.guest-service-bookmark-label{letter-spacing:.08em;padding-left:42px;font-size:12.8px;inset:0 10.5px 0 0}.upload-selection{padding:15px}.upload-selection-heading{font-size:12px}.confirm-photo-upload{min-height:44px;font-size:13px}.photo-upload-fab{width:50px;height:50px}.photo-upload-fab svg{width:24px;height:24px}.timeline-item{grid-template-columns:minmax(0,1fr) 42px minmax(0,1fr);min-height:102px}.timeline:before{width:22px;left:calc(50% - 11px)}.timeline-index{width:auto;height:auto;line-height:1}.tips-list li{grid-template-columns:34px 1fr}.curated-grid,.admin-photo-grid{grid-template-columns:1fr}.curated-grid{gap:40px}.photo-qr{text-align:center;grid-template-columns:1fr}.photo-qr img{width:min(58%,190px);margin:0 auto}.admin-summary{grid-template-columns:1fr 1fr}.admin-summary div:nth-child(2){border-right:0}.admin-summary div:nth-child(-n+2){border-bottom:1px solid var(--hairline)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
