.halo-logo{display:block;width:118px;max-width:100%;height:auto;object-fit:contain;flex-shrink:0}.halo-logo.invoice-brand-logo{width:78px;margin-bottom:14px}.halo-entry{--entry-ink: #123c30;--entry-muted: #647267;--entry-line: #e1dfd1;min-height:100dvh;padding:30px clamp(20px,5vw,76px) 22px;display:flex;flex-direction:column;background:#f5f1e7;color:var(--entry-ink);font-family:Outfit,sans-serif;font-size:14px;line-height:1.6}.halo-entry-header{width:100%;max-width:1280px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;gap:20px}.halo-entry-brand{display:block;flex-shrink:0}.halo-entry-brand .halo-logo{width:96px}.halo-entry-header-right{display:flex;align-items:center;gap:22px}.halo-entry-label,.halo-entry-kicker{font-size:10px;font-weight:500;letter-spacing:1.8px;text-transform:uppercase;color:var(--entry-muted)}.halo-entry .halo-entry-text-button{min-height:40px;padding:8px 0;border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--entry-ink);font-size:13px;text-underline-offset:5px}.halo-entry .halo-entry-text-button:hover{text-decoration:underline}.halo-entry-body{flex:1;display:grid;place-items:center;padding:54px 0 64px}.halo-entry-panel{width:min(100%,540px);border:1px solid var(--entry-line);border-radius:20px;background:#fffdf8;box-shadow:0 20px 65px #263b2d07;overflow:hidden}.halo-entry-content{min-width:0;padding:clamp(28px,4vw,48px)}.halo-entry h1{margin:14px 0 16px;font:400 clamp(32px,3.2vw,42px)/1.12 Georgia,serif;letter-spacing:-1.4px;text-wrap:balance;color:var(--entry-ink)}.halo-entry-intro{color:var(--entry-muted);line-height:1.75;margin:0 0 24px}.halo-entry-account{padding:13px 0 0;margin-top:22px;border-top:1px solid var(--entry-line);color:var(--entry-muted);font-size:12px;overflow-wrap:anywhere}.halo-entry-account span{display:block;color:var(--entry-ink);font-size:13px;margin-top:2px}.halo-entry-footer{text-align:center;color:var(--entry-muted);font-size:11px}.halo-entry-footer span{padding:0 6px;color:#b1a583}.halo-entry .halo-entry-primary{display:flex;width:100%;min-height:48px;padding:12px 18px;border-radius:9px;border:1px solid var(--entry-ink);background:var(--entry-ink);box-shadow:none;color:#fffdf8;font-size:14px;font-weight:500;transition:background .2s,transform .2s}.halo-entry .halo-entry-primary:hover{background:#245643;border-color:#245643}.halo-entry .halo-entry-primary:active{transform:translateY(1px)}.halo-entry button:disabled{cursor:wait;opacity:.6}.halo-entry :focus-visible{outline:3px solid #9cae9b;outline-offset:4px}.halo-entry-notice{padding:13px 15px;border:1px solid #e7cfbb;border-radius:9px;background:#fbf2e8;color:#815332;font-size:13px;line-height:1.65;margin:16px 0;overflow-wrap:anywhere}.halo-entry-progress{display:flex;padding:0;margin:0 0 35px;list-style:none;gap:8px}.halo-entry-progress li{display:flex;align-items:center;flex:1;gap:7px;color:var(--entry-muted);font-size:10px;line-height:1.35}.halo-entry-progress li+li:before{content:"";width:14px;height:1px;background:var(--entry-line);margin-right:3px;flex-shrink:0}.halo-entry-progress i{width:21px;height:21px;display:grid;place-items:center;border:1px solid var(--entry-line);border-radius:50%;font-style:normal;font-size:10px;flex-shrink:0}.halo-entry-progress [aria-current=step]{color:var(--entry-ink);font-weight:600}.halo-entry-progress [aria-current=step] i{background:var(--entry-ink);border-color:var(--entry-ink);color:#fffdf8}.halo-entry-progress .is-complete i{background:#edf2e9;border-color:#edf2e9;color:#3d654b}.halo-entry-invitation{padding:25px 22px;margin:0 0 24px;background:#f5f3e9;border-radius:12px;position:relative;overflow:hidden}.halo-entry-invitation>svg{position:absolute;right:-14px;bottom:-16px;width:100px;height:100px;color:#dcdcc9;transform:rotate(-25deg)}.halo-entry-invitation h2{position:relative;font:400 29px/1.25 Georgia,serif;letter-spacing:-.8px;margin:9px 0 0;overflow-wrap:anywhere}.halo-entry-invitation p{position:relative;font-size:12px;color:var(--entry-muted);margin:10px 0 0}.halo-entry-helper{margin:13px 0 0;color:var(--entry-muted);text-align:center;font-size:11px}.halo-entry-skeleton{padding:7px 0 26px}.halo-entry-skeleton span{display:block;height:13px;margin-top:16px;background:#eeeee4;border-radius:4px;animation:halo-entry-pulse 1.5s ease-in-out infinite alternate}.halo-entry-skeleton span:first-child{width:65%;height:31px}.halo-entry-skeleton span:last-child{width:83%}@keyframes halo-entry-pulse{to{opacity:.45}}.halo-entry-split .halo-entry-panel{max-width:1000px;width:100%;display:grid;grid-template-columns:1fr 1fr}.halo-entry-split .halo-entry-content{display:flex;flex-direction:column;justify-content:center;padding:clamp(32px,4.2vw,60px)}.halo-entry-aside{background:#183e31;color:#f6f1e4;padding:clamp(35px,4.5vw,64px);min-height:520px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.halo-entry-aside:after{content:"";width:340px;height:430px;border:1px solid #e2d7aa1f;border-radius:50% 50% 0 0;position:absolute;right:-155px;top:80px;transform:rotate(-18deg);pointer-events:none}.halo-entry-aside>*{position:relative;z-index:1}.halo-entry-aside .halo-entry-kicker{color:#c7c8b1}.halo-entry-aside h2{color:#f6f1e4;font:400 clamp(34px,3.4vw,46px)/1.14 Georgia,serif;letter-spacing:-1.2px;text-wrap:balance;margin:28px 0 20px}.halo-entry-aside p{color:#c6cdbf;font-size:13px;line-height:1.85;max-width:30ch}.halo-entry-aside small{display:flex;align-items:center;gap:10px;color:#c6cdbf;font-size:11px;margin-top:36px}.halo-entry-form{display:grid;gap:20px;margin-top:4px}.halo-entry-form label{display:block;font-size:12px;font-weight:500;margin-bottom:8px}.halo-entry-form input{width:100%;min-height:48px;border:1px solid #dcded2;border-radius:8px;background:#fffefa;color:var(--entry-ink);padding:12px 14px;font:inherit;font-size:14px}.halo-entry-form input::placeholder{color:#92998b}.halo-entry-password{position:relative}.halo-entry-password input{padding-right:88px}.halo-entry .halo-entry-password button{position:absolute;right:4px;top:4px;min-height:40px;padding:8px 10px;font-size:11px;border:0;background:transparent;border-radius:5px;color:var(--entry-muted)}.halo-entry-form .halo-entry-notice{margin:0}.halo-entry-help{color:var(--entry-muted);font-size:11px;line-height:1.75;margin:22px 0 0}.halo-account-exit{position:fixed;top:8px;right:8px;z-index:20}@media(max-width:700px){.halo-entry{padding:23px 18px 20px}.halo-entry-body{padding:38px 0}.halo-entry-header-right{gap:15px}.halo-entry-label{font-size:8px;letter-spacing:1.2px}.halo-entry-split .halo-entry-panel{grid-template-columns:1fr;max-width:490px}.halo-entry-aside{min-height:auto;padding:28px}.halo-entry-aside h2{color:#f6f1e4;font-size:30px;max-width:19ch;margin:14px 0 0}.halo-entry-aside p,.halo-entry-aside small{display:none}.halo-entry-split .halo-entry-content{padding:30px 28px}.halo-entry-progress{gap:5px}.halo-entry-progress li{font-size:9px;gap:5px}.halo-entry-progress li+li:before{width:6px;margin-right:0}}@media(prefers-reduced-motion:reduce){.halo-entry-skeleton span{animation:none}.halo-entry .halo-entry-primary{transition:none}}@media(min-width:701px)and (max-height:800px){.halo-entry{padding-top:20px;padding-bottom:16px}.halo-entry-brand{font-size:32px}.halo-entry-body{padding:24px 0}.halo-entry-content,.halo-entry-split .halo-entry-content{padding:30px 40px}.halo-entry h1{font-size:36px;margin:12px 0}.halo-entry-intro{font-size:13px;line-height:1.65;margin-bottom:20px}.halo-entry-progress{margin-bottom:24px}.halo-entry-invitation{padding:20px;margin-bottom:20px}.halo-entry-account{margin-top:18px;padding-top:10px}.halo-entry-aside{min-height:490px;padding:44px}.halo-entry-form{gap:16px}.halo-entry-help{margin-top:18px}}@media(max-width:700px),(min-width:701px)and (max-height:800px){.halo-entry-brand .halo-logo{width:78px}}.halo-entry-guest-actions{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 20px;border-top:1px solid var(--entry-line);margin-top:24px;padding-top:13px}.halo-entry .halo-entry-guest-actions button{font-size:12px}.halo-entry-notice.is-success{color:#305a41;background:#eff4e9;border-color:#dce5d2}@font-face{font-family:Cormorant;src:url(/assets/serif.woff2) format("woff2");font-display:swap;font-weight:400 600}@font-face{font-family:WeddingScript;src:url(/assets/script.woff2) format("woff2");font-display:swap;font-weight:400}:root{font-family:Cormorant,Georgia,serif;color:#365773;background:#e6eff5;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button{font:inherit;cursor:pointer}button:disabled{cursor:wait}button:focus-visible{outline:2px solid #365773;outline-offset:5px}.page-shell{min-height:100dvh;display:grid;place-items:center;position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 40%,#fafdff,#dfebf3)}.stage{position:relative;isolation:isolate;overflow:hidden;width:min(100%,480px);height:100dvh;min-height:480px;max-height:1000px;background:#eaf4fa;box-shadow:0 12px 80px #385b7724;container-type:size}.scenery,.veil,.landscape{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.scenery{overflow:hidden;z-index:-2}.landscape{object-fit:cover}.veil{background:radial-gradient(ellipse at 50% 36%,#f7fcffb0,transparent 65%);z-index:1}.penjor{position:absolute;width:87%;height:100%;top:0;z-index:3;transform-origin:bottom center;pointer-events:none}.penjor img{width:100%;height:100%;object-fit:contain;object-position:left top}.penjor-left{left:-13%}.penjor-right{right:-13%}.penjor-right img{transform:scaleX(-1)}.inner-rule{position:absolute;inset:14px;z-index:-1;border:1px solid #6e98b544;pointer-events:none}.invitation-entry{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:22cqh 22px 27cqh;text-align:center}.entry-heading{width:100%}.scene-label{display:block;font:8px Arial,sans-serif;letter-spacing:.23em;margin-bottom:30px;color:#6e8fa6}.eyebrow{font-size:12px;letter-spacing:.23em;margin:0 0 18px;font-weight:500}.names{margin:0;display:flex;flex-direction:column;align-items:center;font-family:WeddingScript,Brush Script MT,cursive;font-weight:400;font-size:clamp(29px,8.7cqw,44px);line-height:1.4;color:#315d80;text-shadow:0 1px 12px #fff}.names>span{white-space:nowrap}.names i{font-family:Cormorant,Georgia,serif;font-size:27px;line-height:1.2;font-weight:400;color:#8ba8bd}.ornament{font-size:25px;color:#8ba8bd;line-height:1;margin-top:15px}.entry-action{position:relative;z-index:9}.guest-label{font-size:13px;margin:0 0 5px}.guest-name{font-size:22px;margin:0 0 19px;font-weight:500}.open-button,.load-error button{display:inline-flex;gap:12px;align-items:center;justify-content:center;border:1px solid #6b8ca7;background:#426c8b;color:#fff;padding:12px 24px;border-radius:30px;font-size:15px;min-height:46px;transition:background .2s}.open-button:hover{background:#315673}.open-button:disabled{opacity:.7}.open-button>span{font-size:18px}.load-caption{font-size:11px;margin:12px 0 0;min-height:15px}.load-error{background:#f8fcfff0;padding:12px;border-radius:8px}.load-error p{margin:0 0 8px}.final-copy{position:absolute;left:6%;right:6%;top:29%;text-align:center;visibility:hidden}.final-copy h1{margin:0;outline:none}.final-copy .names{font-size:clamp(30px,9cqw,46px)}.vow{font-size:17px;line-height:1.6;margin:20px 0;font-style:italic}.quiet-button{position:absolute;right:25px;border:1px solid #97b3c655;background:#f5fbfff0;color:#365773;z-index:20;font-size:13px;padding:10px 14px;border-radius:25px;display:flex;gap:12px;align-items:center}.skip-button{top:max(25px,env(safe-area-inset-top))}.replay-button{bottom:max(26px,env(safe-area-inset-bottom))}.desktop-note{position:absolute;left:7%;top:12%;max-width:230px}.wordmark{font-size:35px;letter-spacing:-2px}.wordmark>span{font-size:12px;letter-spacing:.03em;margin-left:6px}.note-line{display:block;width:36px;height:1px;background:#91aebe;margin:50px 0 30px}.desktop-note p{font-size:30px;line-height:1.4;margin:0}.desktop-note em{font-weight:400}.edition{display:block;font:9px Arial,sans-serif;letter-spacing:.2em;margin-top:24px;color:#64859e}.desktop-footer{position:absolute;bottom:8%;right:5%;font-size:18px;font-style:italic;text-align:right}.desktop-footer span{display:block;font:10px Arial,sans-serif;letter-spacing:.07em;margin-top:12px;color:#64859e}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(min-width:900px){.stage{height:94dvh;min-height:650px;max-height:960px;width:auto;aspect-ratio:9/17;margin:3dvh 0}}@media(max-width:1100px){.desktop-note{left:3%;max-width:180px}.desktop-note p{font-size:24px}.desktop-footer{right:3%;max-width:160px}}@media(max-width:899px){.desktop-note,.desktop-footer{display:none}.stage{box-shadow:none}}@media(max-height:690px){.invitation-entry{padding-top:16cqh;padding-bottom:25cqh}.scene-label{margin-bottom:20px;font-size:7px}.eyebrow{margin-bottom:10px;font-size:10px}.names{font-size:8.2cqw}.guest-label{font-size:12px}.guest-name{font-size:19px;margin-bottom:12px}.load-caption{font-size:10px}.final-copy{top:24%}.vow{font-size:15px}.ornament{margin-top:8px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}.load-caption{background:#f7fcffe6;border-radius:15px;padding:4px 10px}html{scroll-behavior:auto;scroll-padding-top:24px}a{color:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #365773;outline-offset:4px}.page-shell{display:block;overflow:clip;min-height:100dvh}.invitation-column{width:min(100%,480px);margin:0 auto;background:#f7fbfe;box-shadow:0 0 90px #385b771a}.stage{width:100%;max-height:none;box-shadow:none}.desktop-note,.desktop-footer{position:fixed}.hero-date{font-size:14px;letter-spacing:.04em;margin:22px 0 0}.final-copy .vow{margin-top:12px}.bottom-nav{position:fixed;z-index:50;bottom:0;left:50%;transform:translate(-50%);width:min(100%,480px);display:grid;grid-template-columns:repeat(4,1fr);padding:13px 8px calc(13px + env(safe-area-inset-bottom));background:#f6fbfff5;border-top:1px solid #adc4d461;box-shadow:0 -4px 25px #36577309}.bottom-nav a{font-family:Cormorant,Georgia,serif;text-decoration:none;font-size:14px;text-align:center;min-height:28px;display:grid;place-items:center}.bottom-nav a:hover{color:#1c4262;text-decoration:underline;text-underline-offset:5px}.invitation-section{position:relative;isolation:isolate;text-align:center;padding:92px 36px;overflow:hidden;background:#f7fbfe;scroll-margin-top:0}.section-heading{margin-bottom:30px}.section-heading .eyebrow{font-size:10px;letter-spacing:.2em;margin-bottom:18px;color:#54748c}.section-heading h2{font-family:WeddingScript,cursive;font-size:clamp(36px,9vw,47px);font-weight:400;line-height:1.35;margin:0;color:#315d80}.heading-rule,.fine-rule{display:block;width:40px;height:1px;background:#91aebe;margin:24px auto 0}.reading{font-size:19px;line-height:1.8;max-width:340px;margin:0 auto 28px;text-wrap:pretty}.section-art{position:absolute;inset:0;z-index:-2;background:#edf5fb}.section-art>img{width:100%;height:100%;object-fit:cover}.art-retry{position:absolute;bottom:15px;left:50%;transform:translate(-50%);background:#f5fbff;border:1px solid #8ba8bd;border-radius:20px;color:#365773;padding:6px 12px;white-space:nowrap;font-size:12px}.section-body{position:relative}.greeting-section{min-height:830px;padding-top:110px;padding-bottom:250px}.greeting-section:after,.story-section:after,.event-section:after,.closing-section:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(#f7fbfecc,#f7fbfe55 65%,transparent)}blockquote{font-size:25px;line-height:1.6;font-style:italic;margin:40px auto;max-width:330px;color:#426580}.signature{font-size:17px;line-height:1.8}.couple-section{padding-top:95px;padding-bottom:100px;background:#eff6fb}.side-botanical{position:absolute;width:330px;height:90%;object-fit:contain;left:-235px;top:5%;opacity:.5;z-index:-1}.couple-profiles,.person{padding:15px 0}.person-caption,.chapter-label{font:9px/1.7 Arial,sans-serif;letter-spacing:.18em;color:#55778f;margin:0 0 14px}.person h3{font-family:WeddingScript,cursive;font-weight:400;font-size:42px;line-height:1.4;margin:0 0 12px}.person-full{font-size:22px;line-height:1.5;margin:0 0 14px}.parents{font-size:17px;line-height:1.8;max-width:240px;margin:auto}.couple-amp{font-size:45px;color:#8cabc0;font-style:italic;display:block;margin:22px auto}.portrait{width:170px;height:210px;object-fit:cover;border-radius:100px 100px 0 0;margin-bottom:25px}.story-section{min-height:1000px;padding-bottom:220px}.story-timeline{padding:12px 0 0 25px;list-style:none;text-align:left;position:relative}.story-timeline:before{content:"";position:absolute;top:15px;bottom:40px;left:0;border-left:1px solid #99b4c8}.story-timeline li{position:relative;margin:0 0 42px}.story-timeline li:before{content:"";position:absolute;left:-29px;top:5px;width:7px;height:7px;border:1px solid #7598b1;background:#eef6fb;transform:rotate(45deg)}.story-timeline h3{font-family:WeddingScript,cursive;font-size:32px;line-height:1.4;font-weight:400;margin:10px 0}.story-timeline li>p:last-child{font-size:18px;line-height:1.75;margin:0}.event-section{padding-bottom:225px}.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0 auto 42px;max-width:330px}.countdown span{font-size:37px;line-height:1.3;display:block;font-variant-numeric:tabular-nums}.countdown small{font-size:14px;color:#55778f}.event-detail{background:#f9fcffe8;border:1px solid #b6ccdc7a;padding:34px 20px;margin-bottom:22px}.event-detail h3{font-family:WeddingScript,cursive;font-size:35px;line-height:1.4;font-weight:400;margin:10px 0 22px}.event-detail p{font-size:17px;line-height:1.6;margin:8px 0}.event-detail .chapter-label{font:9px Arial,sans-serif;letter-spacing:.17em}.event-detail .event-date{font-size:20px}.event-detail .venue-name{font-size:21px;margin-top:22px}.fine-rule{width:28px;margin:22px auto}.solid-button,.outline-button{display:inline-flex;align-items:center;justify-content:center;min-height:46px;max-width:100%;padding:11px 25px;border-radius:28px;font:16px Cormorant,Georgia,serif;line-height:1.4;text-decoration:none;cursor:pointer;transition:background .2s}.solid-button{background:#426c8b;color:#fff;border:1px solid #426c8b}.outline-button{background:#f8fcff;color:#365773;border:1px solid #8daabe;margin-top:16px}.solid-button:hover{background:#315673}.outline-button:hover{background:#e6f0f7}button:disabled{opacity:.55;cursor:not-allowed}.text-button{background:transparent;border:0;border-bottom:1px solid #8daabe;padding:4px 0;color:#365773;font-size:16px;line-height:1.5}.location-section{padding:85px 0 90px}.location-section .section-heading{padding:0 28px}.location-illustration{height:290px;position:relative;overflow:hidden;margin:35px 0 30px}.location-illustration img{width:100%;height:100%;object-fit:cover;object-position:50% 85%}.location-illustration>span{position:absolute;bottom:8px;right:12px;background:#f7fbfee8;padding:4px 8px;font-size:12px}.location-copy{padding:0 38px}.location-copy h3{font-size:25px;font-weight:400;margin:0 0 14px}.location-copy p{font-size:18px;line-height:1.7}.location-copy .solid-button{margin-top:16px}.selectable{-webkit-user-select:all;user-select:all;overflow-wrap:anywhere}.small-note{font-size:13px!important;line-height:1.65!important;color:#5a7183;max-width:320px;margin:14px auto 0}.rsvp-section{background:#e7f1f8;padding-top:90px;padding-bottom:80px}.rsvp-section .reading{font-size:18px}.letter-form{text-align:left;background:#fbfdff;padding:28px 24px;border:1px solid #b3cbdc75;margin-top:28px}.letter-form label{display:block;font-size:17px;margin:0 0 9px}.letter-form input,.letter-form select,.letter-form textarea{width:100%;border:1px solid #b1c6d5;border-radius:2px;background:#fff;color:#365773;padding:12px;font:16px/1.5 Cormorant,Georgia,serif;margin:0 0 23px}.letter-form textarea{resize:vertical;min-height:125px}.letter-form .solid-button{width:100%}.feedback{display:block;font-size:14px;line-height:1.6;overflow-wrap:anywhere}.feedback:empty{display:none}.feedback.success{padding:12px;background:#edf5fa;margin-bottom:0}.form-error{color:#8c3544;font-size:15px}.wishes-section{padding-top:85px;background:#f4f9fc}.wish-list{text-align:left;margin-top:30px}.wish{padding:24px 2px;border-bottom:1px solid #c4d6e3}.wish>div{display:flex;gap:10px;align-items:baseline;justify-content:space-between}.wish h3{font-size:22px;font-weight:400;margin:0}.wish small{font:8px Arial,sans-serif;letter-spacing:.09em;color:#5a7183}.wish p{font-size:17px;line-height:1.7;margin:13px 0 0;overflow-wrap:anywhere;white-space:pre-wrap}.closing-section{min-height:850px;padding-top:90px;padding-bottom:270px}.closing-names{font-family:WeddingScript,cursive;font-size:37px;line-height:1.5;margin:35px auto}.closing-names span{display:block;font:italic 26px Cormorant,Georgia,serif;color:#8ca8bd}.closing-credit{font-size:13px;letter-spacing:.08em;margin-top:34px;color:#55778f}.gifts-section{background:#eaf3f9}.gift-account{padding:25px 15px;border-top:1px solid #bad0df}.gift-account h3{font-size:24px;font-weight:400}.gift-account p{font-size:18px;line-height:1.6}.account-number{font-size:25px!important}.copy-control{margin:18px auto}.copy-control .feedback{margin-top:10px}.gallery-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.gallery-grid button{padding:0;border:0;background:#e5eff6;min-height:180px;overflow:hidden}.gallery-grid img{width:100%;height:100%;aspect-ratio:3/4;object-fit:cover}.photo-dialog{max-width:min(92vw,800px);max-height:90dvh;border:1px solid #a6bfce;background:#f5fbff;color:#365773;padding:20px;text-align:center}.photo-dialog::backdrop{background:#142f46d9}.photo-dialog>img{max-width:100%;max-height:65dvh;object-fit:contain}.dialog-close,.dialog-controls button{background:#426c8b;border:0;color:#fff;border-radius:25px;padding:10px 18px;font-size:16px}.dialog-close{display:block;margin:0 0 15px auto}.dialog-controls{display:flex;justify-content:space-between;gap:15px}.photo-dialog p{font-size:18px}.invitation-content{padding-bottom:64px}.hero-date{max-width:90%;margin-left:auto;margin-right:auto}.phase-open .replay-button{bottom:85px}@media(min-width:900px){.invitation-column{width:480px;margin-top:3dvh;margin-bottom:3dvh}.stage{height:94dvh;min-height:650px;max-height:960px;aspect-ratio:auto;width:100%;margin:0}.page-shell:not(.is-open){padding-bottom:3dvh}}@media(max-width:359px){.invitation-section{padding-left:24px;padding-right:24px}.section-heading h2{font-size:35px}.reading{font-size:18px}.letter-form{padding:24px 18px}.location-section{padding-left:0;padding-right:0}.person h3{font-size:36px}.closing-names{font-size:32px}.event-detail{padding-left:12px;padding-right:12px}.countdown{gap:7px}.countdown span{font-size:32px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1!important;transform:none!important}}.greeting-section:after{background:linear-gradient(#f7fbfef2 0%,#f7fbfef0 55%,#f7fbfe88 73%,transparent 92%)}.story-section:after{background:linear-gradient(#f7fbfef5 0%,#f7fbfeeb 72%,#f7fbfe55 90%,transparent)}.couple-section{padding-bottom:210px}.couple-section:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(#f7fbfecc,#f7fbfeb3 70%,transparent)}.rsvp-section:before,.wishes-section:before{content:"";position:absolute;width:180px;height:260px;bottom:-80px;left:-95px;background:url(/assets/bali-penjor.png) left bottom/contain no-repeat;opacity:.16;pointer-events:none;z-index:-1}.portrait-frame{position:relative;width:190px;aspect-ratio:3/4;margin:0 auto 18px;padding:7px;border:1px solid #779ab4;border-radius:110px 110px 6px 6px;background:#f7fbfe;box-shadow:0 9px 30px #36577312}.portrait-frame:before{content:"";position:absolute;inset:-7px;border:1px solid #b1c8d980;border-radius:118px 118px 10px 10px;pointer-events:none}.portrait-frame .portrait{display:block;width:100%;height:100%;margin:0;object-fit:cover;object-position:center 24%;border-radius:103px 103px 2px 2px}.portrait-placeholder{height:100%;display:grid;place-content:center;font-size:19px;line-height:1.7;background:#e9f2f9;border-radius:103px 103px 2px 2px;color:#5a7890}.sample-photo-label{font-size:11px;letter-spacing:.05em;margin:0 0 18px;color:#607b90}.person{padding-top:28px}.couple-amp{margin:35px auto 22px}.event-actions{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;margin-top:25px}.event-actions .outline-button{margin:0}.event-actions .solid-button,.event-actions .outline-button{padding-left:19px;padding-right:19px;min-width:125px}.gallery-section{background:#f1f7fb;padding-bottom:85px}.gallery-note{font-size:13px;line-height:1.7;color:#5a7183;max-width:300px;margin:-6px auto 30px}.gallery-grid{gap:13px}.gallery-grid button{position:relative;min-height:0;padding:5px;background:#fff;border:1px solid #c4d6e3;box-shadow:0 5px 15px #36577309}.gallery-grid button:first-child,.gallery-grid button:last-child{grid-column:1/-1}.gallery-grid button:first-child img,.gallery-grid button:last-child img{aspect-ratio:4/3;object-position:center 40%}.gallery-grid img{display:block;transition:transform .5s;object-position:center 24%}.gallery-grid button:hover img{transform:scale(1.025)}.optional-label{font-size:13px;color:#607b90}.wishes-intro{margin:45px auto 0}.wishes-intro h3{font-family:WeddingScript,cursive;font-weight:400;font-size:32px;line-height:1.4;margin:0 0 12px}.wishes-intro p{font-size:16px;line-height:1.7;margin:0}.rsvp-section .wish-list{margin-top:10px}.bottom-nav{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:1fr}@media(max-width:359px){.portrait-frame{width:165px}.event-actions{gap:10px}.bottom-nav a{font-size:13px}}@media(prefers-reduced-motion:reduce){.gallery-grid img{transition:none}.gallery-grid button:hover img{transform:none}}.invitation-content{padding-bottom:0}.greeting-section{min-height:660px;padding-top:100px;padding-bottom:290px}.gallery-grid{margin-top:34px}.person{padding-top:32px}.portrait-frame{margin-bottom:30px}.phase-open .replay-button{bottom:26px}@media(max-width:359px){.greeting-section{min-height:620px;padding-top:85px;padding-bottom:270px}}@keyframes photo-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.photo-dialog[open]>img{animation:photo-enter .65s cubic-bezier(.22,.61,.36,1) both}@media(prefers-reduced-motion:reduce){.photo-dialog[open]>img{animation:none}}.names{font-size:clamp(48px,15cqw,72px)}.final-copy .names{font-size:clamp(54px,16cqw,78px)}@media(max-height:690px){.names,.final-copy .names{font-size:46px;line-height:1.18}.invitation-entry{padding-top:12cqh;padding-bottom:22cqh}.scene-label{margin-bottom:16px}}.final-copy{top:22%}.envelope-section{background:#eaf3f9;padding-bottom:90px}.envelope-section .reading,.delivery-section .reading{font-size:18px;line-height:1.8}.bank-accounts{display:grid;gap:22px;margin-top:35px}.bank-card{position:relative;padding:30px 22px 24px;text-align:left;background:#fbfdff;border:1px solid #a9c3d7;border-radius:8px;box-shadow:0 9px 24px #36577307}.bank-card h3{font:500 23px Cormorant,Georgia,serif;letter-spacing:.09em;text-transform:uppercase;margin:0;color:#315d80}.bank-card-rule{display:block;width:36px;height:1px;margin:20px 0 24px;background:#b1c9da}.bank-card .account-number{font-size:27px!important;line-height:1.5;letter-spacing:.08em;margin:0 0 18px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.account-holder{font-size:14px;line-height:1.8;margin:0}.account-holder span{font-size:18px}.bank-card .copy-control{margin:25px 0 0}.bank-card .text-button{font-size:15px}.delivery-section{padding-bottom:145px;min-height:720px}.delivery-section:after{content:"";position:absolute;inset:0;z-index:-1;background:#f7fbfed9}.delivery-card{margin:35px auto 0;padding:30px 20px;border:1px solid #b4ccdc;background:#fbfdfff2}.delivery-label{font:9px Arial,sans-serif;letter-spacing:.17em;color:#55778f;margin:0 0 17px}.delivery-card h3{font-family:WeddingScript,cursive;font-size:36px;line-height:1.4;font-weight:400;margin:0 0 22px}.delivery-address{font-size:18px;line-height:1.85;margin:0 auto 22px;max-width:270px}.delivery-card .copy-control{margin-bottom:0}@media(max-width:359px){.bank-card{padding:26px 20px}.bank-card .account-number{font-size:23px!important}.delivery-card{padding:26px 16px}}.gallery-grid.gallery-masonry{display:block;columns:2;column-gap:13px}.gallery-grid.gallery-masonry button{display:block;width:100%;margin:0 0 13px;break-inside:avoid;page-break-inside:avoid;min-height:0;grid-column:auto}.gallery-grid.gallery-masonry img,.gallery-grid.gallery-masonry button:first-child img,.gallery-grid.gallery-masonry button:last-child img{width:100%;height:auto;aspect-ratio:auto;object-fit:contain}@media(max-width:359px){.gallery-grid.gallery-masonry{column-gap:10px}.gallery-grid.gallery-masonry button{margin-bottom:10px;padding:4px}}.invitation-loader{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:#f2f8fc;color:#365773;opacity:1;transition:opacity .35s ease;touch-action:none}.invitation-loader:before{content:"";position:absolute;inset:0;background:linear-gradient(#f2f8fce8,#f2f8fce8),url(/assets/botanical.webp) center/cover no-repeat;pointer-events:none}.loader-leaving{opacity:0;pointer-events:none}.loader-content{position:relative;z-index:1;text-align:center;padding:30px;max-width:360px}.loader-eyebrow{font-size:11px;letter-spacing:.24em;margin:0 0 26px}.loader-monogram{font-family:WeddingScript,cursive;font-size:72px;line-height:1.4;color:#315d80;animation:loader-breathe 2.6s ease-in-out infinite}.loader-monogram>span{font-family:Cormorant,Georgia,serif;font-size:33px;color:#87a4b9;margin:0 8px}.loader-caption{font-size:17px;margin:25px 0 20px;letter-spacing:.02em}.loader-progress{height:2px;width:130px;background:#d2e1ec;overflow:hidden;margin:auto}.loader-progress>span{display:block;height:100%;background:#648ca8;transition:width .35s ease}.loader-brand{position:absolute;bottom:max(35px,env(safe-area-inset-bottom));left:0;right:0;text-align:center;font-size:13px;letter-spacing:.07em;color:#67869c}.loader-error p{font-size:17px;line-height:1.75;margin:22px 0}.scroll-cue{position:absolute;z-index:12;left:50%;bottom:max(30px,env(safe-area-inset-bottom));transform:translate(-50%);width:44px;height:54px;display:grid;place-items:center;color:#315d80;text-decoration:none;background:#f6fbffde;border:1px solid #97b3c655;border-radius:28px;animation:cue-appear .65s ease both}.scroll-arrow{display:block;font-family:Georgia,serif;font-size:29px;line-height:1;animation:cue-drift 2.6s ease-in-out infinite}.scroll-cue:hover{background:#fff}.scroll-cue:focus-visible{outline:2px solid #365773;outline-offset:5px}@keyframes loader-breathe{0%,to{opacity:.6}50%{opacity:1}}@keyframes cue-appear{0%{opacity:0}to{opacity:1}}@keyframes cue-drift{0%,to{transform:translateY(-3px);opacity:.65}50%{transform:translateY(4px);opacity:1}}@media(prefers-reduced-motion:reduce){.loader-monogram,.scroll-cue,.scroll-arrow{animation:none}.invitation-loader,.loader-progress>span{transition:none}}.music-player{position:fixed;z-index:70;bottom:max(18px,env(safe-area-inset-bottom));right:max(18px,calc((100vw - 480px)/2 + 18px));color:#365773;font-family:Cormorant,Georgia,serif}.music-controls{display:flex;align-items:center;width:max-content;margin-left:auto;background:#f7fbfff5;border:1px solid #9bb7ca;border-radius:28px;box-shadow:0 4px 20px #36577314;overflow:hidden}.music-toggle{background:transparent;border:0;color:#365773;min-height:44px;cursor:pointer;display:flex;align-items:center;gap:8px;padding:8px 14px;font-size:15px}.music-toggle:hover{background:#eaf3f9}.music-note{font-family:Georgia,serif;font-size:21px;line-height:1}.music-playing .music-note{animation:music-sway 3s ease-in-out infinite}@keyframes music-sway{0%,to{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}@media(prefers-reduced-motion:reduce){.music-note{animation:none!important}}.invitation-quote{margin:32px auto;max-width:340px;white-space:pre-wrap;overflow-wrap:anywhere}.invitation-quote blockquote{margin:0;font-size:22px}.invitation-quote figcaption{margin-top:16px;font-size:15px;line-height:1.6;color:#54748c}.quotes-section{min-height:640px;display:grid;align-items:start;padding-top:95px;padding-bottom:235px}.quotes-section:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(#f7fbfef0,#f7fbfedb 65%,#f7fbfe66)}.quotes-title{font-family:WeddingScript,cursive;font-weight:400;font-size:40px;line-height:1.4;margin:0 0 28px;color:#315d80}.wedding-quote{margin:0 auto;max-width:330px;font-size:25px;font-style:italic;line-height:1.7;color:#426580}.wedding-quote p{margin:0;text-wrap:pretty}.quote-signature{font-family:WeddingScript,cursive;font-size:28px;line-height:1.5;margin:30px 0 0;color:#55778f}@media(max-width:359px){.wedding-quote{font-size:23px}.quotes-section{min-height:590px;padding-top:80px;padding-bottom:200px}}.live-streaming-section{background:#edf5fa;padding-top:85px;padding-bottom:90px}.live-streaming-section .reading{font-size:19px;max-width:320px}.streaming-links{display:grid;gap:14px;max-width:280px;margin:32px auto 0}.streaming-links .solid-button{width:100%;white-space:normal;text-align:center}.renderer-state{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px;text-align:center;color:#0c3b2e;background:#f7f1e5}.renderer-state>span{font:11px sans-serif;letter-spacing:3px}.renderer-state h1{font:36px Georgia,serif;margin:24px 0 16px}.renderer-state p{font:14px/1.7 sans-serif;max-width:450px}.renderer-state button{background:#536459;color:#fff;border:0;padding:12px 20px;border-radius:8px;cursor:pointer}.preview-badge{position:fixed;z-index:1000;top:8px;left:50%;transform:translate(-50%);background:#0c3b2e;color:#fffdf7;padding:9px 14px;border-radius:6px;font:10px/1.5 sans-serif;letter-spacing:.5px;max-width:calc(100% - 24px);text-align:center;pointer-events:none}.renderer-rsvp-note{font:11px/1.6 sans-serif;text-align:center;color:#536459;padding:18px 24px;margin:0}
