.invitation-shell{background:#f7f0e3;flex-direction:column;width:min(100%,480px);height:100dvh;min-height:440px;margin:auto;display:flex;position:relative;overflow:hidden;box-shadow:0 0 90px #0005}@font-face{font-family:Liu Jian Mao Cao;src:url(/fonts/LiuJianMaoCao-Regular.ttf)format("truetype");font-display:swap}@font-face{font-family:LXGW WenKai;src:url(/fonts/LXGWWenKai-Regular.ttf)format("truetype");font-display:swap}@font-face{font-family:Invitation WenKai;src:url(/fonts/Invitation-WenKai.woff2)format("woff2");font-display:swap}@font-face{font-family:Invitation Calligraphy;src:url(/fonts/Invitation-Calligraphy.woff2)format("woff2");font-display:swap}.floating-controls{z-index:80;top:max(14px, env(safe-area-inset-top));gap:8px;display:flex;position:absolute;right:18px}.floating-controls button{color:#6e4436;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#faf6ede8;border:1px solid #876f4d33;border-radius:50%;place-items:center;width:34px;height:34px;padding:0;display:grid;box-shadow:0 2px 8px #3824160a}.floating-controls svg,.map-photo-action svg{display:block}.floating-controls button:hover{background:#fffaf1;border-color:#a17f50}.floating-controls button:focus-visible,.map-photo-button:focus-visible{outline-offset:3px;outline:2px solid #b9975c}.cover-active .floating-controls button{color:#efdbb8;background:#732729a8;border-color:#efdbb855}.invitation-frame{touch-action:pan-x;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;overflow:hidden}.invitation-frame.detail-frame{touch-action:pan-y}.detail-page{overscroll-behavior:contain;width:100%;height:100%;padding:calc(70px + env(safe-area-inset-top)) 20px max(24px, env(safe-area-inset-bottom));touch-action:pan-y;background:#f7f0e3;font-family:Invitation WenKai,Songti SC,serif;overflow-y:auto}.detail-page[hidden]{display:none}.detail-content{flex-direction:column;justify-content:center;min-height:100%;display:flex}.detail-content>section{flex-shrink:0}.album-page{width:100%;height:100%;min-height:0;padding:calc(74px + env(safe-area-inset-top)) 28px max(30px, env(safe-area-inset-bottom));color:#654b3b;background:#f7f0e3;font-family:Invitation WenKai,Songti SC,serif;animation:.45s ease-out album-enter;position:relative;overflow:hidden}.album-photo{background:#eae1d3;min-width:0;min-height:0;margin:0;overflow:hidden}.album-photo img{object-fit:cover;width:100%;height:100%;display:block}.chapter-heading{flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.chapter-heading span{letter-spacing:.16em;color:#9d8566;font-size:11px}.chapter-heading h2{color:#734438;letter-spacing:.2em;margin:0;font-size:32px;font-weight:400;line-height:1.4}.album-portrait{flex-direction:column;display:flex}.album-portrait>.album-photo{background:0 0;flex:1}.album-portrait>.album-photo img{object-fit:contain}.portrait-caption{text-align:center;flex-shrink:0;margin-top:22px}.portrait-caption>p{letter-spacing:.12em;margin:0;font-size:17px;line-height:1.8}.caption-rule{background:#b39565;width:28px;height:1px;margin:18px auto 0;display:block}.portrait-caption .album-date{letter-spacing:.05em;margin-top:12px;font-size:15px}.portrait-caption .album-lunar{color:#9a8264;letter-spacing:.1em;margin-top:3px;font-size:11px}.album-venue-link{color:#78523f;letter-spacing:.08em;background:0 0;border:0;align-items:center;gap:9px;padding:8px 0 0;font-size:12px;display:inline-flex}.album-diptych{grid-template-columns:minmax(0,1fr) 76px;gap:26px;padding-bottom:56px;display:grid}.diptych-photos{flex-direction:column;justify-content:center;gap:24px;height:100%;min-height:0;display:flex}.diptych-photos .album-photo{aspect-ratio:1;flex:0 auto;width:100%;max-height:calc(50% - 12px)}.vertical-poem{flex-direction:column;justify-content:center;align-items:center;gap:28px;display:flex}.vertical-poem h2,.seaside-poem h2{writing-mode:vertical-rl;text-orientation:upright;letter-spacing:.25em;margin:0;font-size:30px;font-weight:400;line-height:1.4}.vertical-poem p,.seaside-poem p{writing-mode:vertical-rl;text-orientation:upright;white-space:pre-line;letter-spacing:.18em;margin:0;font-size:18px;line-height:1.9}.album-stamp{color:#a44939;writing-mode:vertical-rl;letter-spacing:.15em;border:1px solid #a44939;place-items:center;width:26px;padding:6px 2px;font-size:11px;line-height:1.3;display:grid}.album-colophon{color:#9d8566;letter-spacing:.12em;margin:0;font-size:11px;position:absolute;bottom:22px;left:28px}.album-pair{flex-direction:column;display:flex}.pair-main{flex:1.1}.pair-bottom{flex:1;grid-template-columns:1.15fr 1fr;align-items:center;gap:24px;min-height:0;margin-top:24px;display:grid}.pair-bottom .album-photo{height:100%}.pair-bottom p,.ceremony-top p{writing-mode:vertical-rl;text-orientation:upright;letter-spacing:.16em;justify-self:center;margin:0;font-size:18px;line-height:2}.ceremony-top{flex:1;grid-template-columns:1fr .85fr;align-items:center;gap:24px;min-height:0;margin-bottom:24px;display:grid}.ceremony-top .album-photo{background:0 0;height:100%}.ceremony-top img{object-fit:contain}.ceremony-vows{flex:1.15;min-height:0}.ceremony-vows img{object-fit:contain;background:#f7f0e3}.album-seaside{background:#dce6e7;padding:0}.album-seaside>.album-photo{position:absolute;inset:0}.seaside-poem{color:#31404a;flex-direction:row-reverse;align-items:flex-start;gap:20px;display:flex;position:absolute;top:max(100px,13dvh);left:36px}.album-seaside>.album-stamp{background:#f8f3e6cf;position:absolute;bottom:32px;right:28px}.album-cover{padding:calc(94px + env(safe-area-inset-top)) 40px max(52px, env(safe-area-inset-bottom));color:#ead5b2;background:#7c2c2e;flex-direction:column;align-items:center;display:flex}.cover-border{pointer-events:none;border:1px solid #cfad7870;position:absolute;inset:72px 22px 26px}.cover-border:after{content:"";border:1px solid #cfad7833;position:absolute;inset:6px}.cover-caption{letter-spacing:.45em;margin:0;font-size:12px}.cover-centre{flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:0;display:flex}.cover-seal{font-family:Invitation Calligraphy,Songti SC,serif;font-size:clamp(96px,17dvh,154px);line-height:1.25}.cover-centre h1{letter-spacing:.3em;margin:20px 0 18px;font-size:28px;font-weight:400}.cover-verse{letter-spacing:.15em;opacity:.75;margin:0;font-size:13px}.cover-signature{text-align:center;flex-shrink:0}.cover-signature p{letter-spacing:.08em;margin:5px 0;font-size:13px;line-height:1.8}.cover-signature .couple-names{letter-spacing:.15em;margin-bottom:17px;font-size:23px}.cover-signature .cover-lunar{opacity:.7;font-size:11px}.cover-signature button{color:inherit;letter-spacing:.25em;background:0 0;border:0;border-bottom:1px solid #cfad7870;margin-top:18px;padding:0 0 4px;font-size:12px}@keyframes album-enter{0%{opacity:.3;translate:0 8px}to{opacity:1;translate:0}}@media (max-height:660px){.album-page:not(.album-seaside){padding-top:64px;padding-bottom:22px}.chapter-heading{margin-bottom:12px}.chapter-heading h2{font-size:27px}.portrait-caption{margin-top:12px}.portrait-caption>p{font-size:14px}.caption-rule{margin-top:10px}.album-diptych{padding-bottom:42px!important}.vertical-poem{gap:18px}.cover-centre h1{margin:8px 0 12px}.cover-signature .couple-names{margin-bottom:8px}.cover-signature button{margin-top:9px}}.venue-card{color:#74302b;text-align:center;background:#fff3df;border:4px double #c69d68;border-radius:7px;padding:26px 16px 20px;box-shadow:0 12px 35px #39071044}.venue-card .eyebrow{letter-spacing:3px;color:#9d794e;font:11px Invitation WenKai,serif}.venue-card h1{letter-spacing:4px;margin:18px 0 22px;font-size:27px;font-weight:500}.venue-card h2{margin:0 0 10px;font-size:21px;font-weight:400}.venue-card p{margin:0 0 20px;font-size:12px;line-height:1.9}.map-surface{text-align:left;background:#eee5d7;border:1px solid #d5ba95;border-radius:4px;width:100%;height:clamp(230px,34dvh,330px);position:relative;overflow:hidden}.map-photo-button{aspect-ratio:949/712;color:#fff3df;height:auto;padding:0;display:block}.map-photo{width:100%;height:auto;display:block}.map-photo-action{background:#6f1b1ef2;border:1px solid #fac996aa;border-radius:50%;place-items:center;width:44px;height:44px;display:grid;position:absolute;bottom:12px;right:12px;box-shadow:0 3px 12px #35101340}.map-caption{color:#987651;justify-content:space-between;gap:5px;margin:9px 0 20px;font-size:10px;display:flex}.navigation-dialog{width:min(100%,480px);max-width:none;max-height:calc(100dvh - 24px);padding:0 0 env(safe-area-inset-bottom);color:#74302b;overscroll-behavior:contain;background:#fff3df;border:1px solid #c69d68;border-bottom:0;border-radius:22px 22px 0 0;margin:0 auto;position:fixed;inset:auto 0 0;overflow-y:auto}.navigation-dialog[open]{animation:.24s ease-out sheet-enter}.navigation-handle{background:#c5aa89;border-radius:99px;width:38px;height:4px;margin:0 auto 22px}@keyframes sheet-enter{0%{opacity:.5;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.navigation-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#250e10b8}.navigation-options{text-align:center;padding:12px 22px 16px}.navigation-options h2{margin:0 0 12px;font-size:22px}.navigation-options p{margin:0 0 20px;font-size:13px}.navigation-options button,.navigation-options a{color:#fff3df;background:#8c2829;border:1px solid #bd925e;border-radius:5px;width:100%;margin-bottom:12px;padding:13px;font-size:15px;text-decoration:none;display:block}.navigation-options small{color:#987651;font-size:11px;line-height:1.8;display:block}.navigation-options .navigation-cancel{color:#8c2829;background:0 0;border:0;margin:16px 0 0}.venue-card .venue-date{border-top:1px solid #d9bf9a;margin:20px 0 0;padding-top:16px;font-size:12px}.rsvp-card{color:#7d2828;text-align:center;background:#fff3df;border:6px double #bf925e;border-radius:8px;padding:26px 20px;font-family:Invitation WenKai,Songti SC,serif;box-shadow:0 20px 50px #350b1633}.rsvp-card .eyebrow{letter-spacing:4px;color:#9d794e;font:11px Invitation WenKai,serif}.rsvp-card h1{letter-spacing:.2em;margin:18px 0 12px;font-size:28px;font-weight:400}.rsvp-card>p{margin:0 0 22px;font-size:14px}.rsvp-card form{text-align:left;gap:18px;display:grid}.rsvp-card label{letter-spacing:2px;gap:8px;font-size:14px;display:grid}.rsvp-card input,.rsvp-card select,.rsvp-card textarea{color:#622b29;letter-spacing:0;-webkit-user-select:text;user-select:text;background:#fffaf1;border:1px solid #d5b38b;border-radius:5px;width:100%;padding:12px;font-size:16px}.rsvp-card textarea{resize:vertical;max-height:150px}.rsvp-card input::placeholder,.rsvp-card textarea::placeholder{color:#ac8a76}.rsvp-card button{color:#ffe2b5;background:#932729;border:1px solid #b8925f;border-radius:5px;width:100%;padding:14px;font-size:16px;display:block}.rsvp-card small{color:#947861;letter-spacing:0;font-size:12px;line-height:1.6}.form-error{color:#b72035;margin:0;font-size:13px}.rsvp-card .invitation-view-again{color:#915b41;text-underline-offset:4px;background:0 0;border:0;margin-top:14px;font-size:13px;text-decoration:underline}.invitation-preview{width:min(100% - 20px,520px);height:calc(100dvh - 20px - env(safe-area-inset-top) - env(safe-area-inset-bottom));color:#7a3a2c;background:#fbf2e1;border:1px solid #c6a779;border-radius:12px;max-width:none;max-height:none;margin:auto;padding:0;overflow:hidden}.invitation-preview::backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#210d12db}.invitation-preview-content{text-align:center;flex-direction:column;gap:8px;height:100%;min-height:0;padding:12px;display:flex}.invitation-preview header{text-align:left;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;display:flex}.invitation-preview header>div{min-width:0}.invitation-preview header span{letter-spacing:2px;color:#a08563;font-size:10px}.invitation-preview header h2{white-space:nowrap;text-overflow:ellipsis;margin:5px 0 0;font-family:LXGW WenKai,serif;font-size:17px;font-weight:500;overflow:hidden}.rsvp-card .invitation-preview header button{color:#8c6347;background:0 0;border:1px solid #dbc5a3;border-radius:50%;flex:0 0 32px;place-items:center;width:32px;height:32px;padding:0;line-height:1;display:grid}.invitation-preview header button svg{display:block}.invitation-save-hint{color:#9e7e5c;flex-shrink:0;margin:0;font-size:11px;line-height:1.6}.invitation-image-stage{flex:1;justify-content:center;align-items:center;min-width:0;min-height:0;display:flex}.generated-invitation{object-fit:contain;-webkit-touch-callout:default;-webkit-user-select:auto;user-select:auto;touch-action:pinch-zoom;width:100%;height:100%;display:block}.invitation-download{color:#ffedcf;letter-spacing:3px;background:#8a302e;border:1px solid #ad754a;border-radius:5px;flex-shrink:0;padding:11px;font-size:14px;text-decoration:none;display:block}@media (max-height:500px){.invitation-preview-content{gap:5px;padding:8px}.invitation-preview header span,.invitation-save-hint{display:none}.invitation-preview header h2{margin:0;font-size:14px}.invitation-download{padding:7px}}.choice-field{gap:8px;display:grid}.choice-label{letter-spacing:2px;font-size:14px}.rsvp-card .choice-trigger{color:#622b29;text-align:left;letter-spacing:0;background:#fffaf1;border:1px solid #d5b38b;border-radius:5px;justify-content:space-between;align-items:center;gap:16px;min-height:50px;padding:12px 16px 12px 12px;transition:border-color .2s,box-shadow .2s;display:flex}.rsvp-card .choice-trigger:hover,.rsvp-card .choice-trigger[aria-expanded=true]{border-color:#a74b3d;box-shadow:0 0 0 3px #aa7a4020}.choice-chevron{color:#9d6550;flex:0 0 18px;transition:transform .2s}.choice-chevron.expanded{transform:rotate(180deg)}.choice-sheet-content{text-align:center;padding:12px 22px 16px}.choice-sheet-eyebrow{letter-spacing:3px;color:#a17c51;font-size:10px;display:block}.choice-sheet h2{color:#7c302b;letter-spacing:3px;margin:12px 0 8px;font-size:24px;font-weight:500}.choice-sheet-description{color:#98765f;margin:0 0 22px;font-size:12px;line-height:1.8}.choice-options{overscroll-behavior:contain;gap:12px;max-height:min(52dvh,440px);padding:3px;display:grid;overflow-y:auto}.rsvp-card .choice-option{color:#805040;text-align:left;background:#fffaf1;border:1px solid #e0cbb0;border-radius:10px;flex-direction:column;align-items:flex-start;gap:6px;margin:0;padding:18px 44px 18px 18px;display:flex;position:relative}.rsvp-card .choice-option.selected{color:#fff0d7;background:#8f3030;border-color:#8f3030;box-shadow:0 4px 12px #6e25251a}.choice-option-label{font-size:18px}.choice-option-description{opacity:.75;letter-spacing:0;font-size:11px;line-height:1.6}.choice-check{position:absolute;top:19px;right:16px}.count-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.rsvp-card .count-options .choice-option{text-align:center;align-items:center;gap:1px;padding:17px 4px 12px}.count-options .choice-option-label{font:25px Georgia,serif}.count-options .choice-option-description{font-size:10px}.count-options .choice-check{width:12px;height:12px;top:5px;right:5px}.rsvp-card .choice-cancel{color:#8b6650;background:0 0;border:0;margin-top:16px;padding:12px;font-size:14px}.receipt{padding-top:40px;padding-bottom:40px}.receipt p{line-height:1.8}.receipt .happiness{font-size:64px}.receipt .receipt-id{font:12px monospace}.receipt button{margin:24px 0 16px}.notice{z-index:1000;bottom:max(24px, env(safe-area-inset-bottom));color:#792022;overflow-wrap:anywhere;background:#fff2db;border:1px solid #caa16e;border-radius:8px;width:max-content;max-width:min(90%,430px);padding:14px 20px;font-size:14px;line-height:1.7;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 5px 30px #0004}@keyframes invite-up{0%{opacity:0;translate:0 35px}to{opacity:1;translate:0}}@keyframes invite-down{0%{opacity:0;translate:0 -35px}to{opacity:1;translate:0}}@keyframes invite-left{0%{opacity:0;translate:-50px}to{opacity:1;translate:0}}@keyframes invite-right{0%{opacity:0;translate:50px}to{opacity:1;translate:0}}@keyframes invite-zoom{0%{opacity:0;scale:.85}to{opacity:1;scale:1}}@media (prefers-reduced-motion:reduce){.album-page,.navigation-dialog[open]{animation:none!important}}
