/* The Garden Letter: an independent, sample-only Occasi invitation. */
:root{color-scheme:light;--ink:#183f4b;--deep:#102e38;--paper:#faf7f0;--cream:#f0ece2;--muted:#5e6f72;--line:#d8dcd7;--coral:#bb6d59;--serif:'Cormorant Garamond',Georgia,serif;--sans:'DM Sans',Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait}button,a,input,select,textarea,summary{outline-offset:5px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--coral)}button{color:inherit}a{color:inherit}img{max-width:100%;display:block}h1,h2,h3,p{margin-top:0}h1,h2{font-family:var(--serif);font-weight:500;line-height:1.08;letter-spacing:-.035em}em{font-weight:400}button:disabled{opacity:.65}[hidden]{display:none!important}fieldset{border:0;padding:0;margin:0}legend{padding:0}dialog{border:0}::selection{background:#e4baae;color:var(--deep)}.skip-link{position:fixed;top:-100px;left:16px;background:var(--ink);color:white;padding:12px;z-index:100}.skip-link:focus{top:10px}.button{min-height:52px;padding:13px 22px;border-radius:5px;display:flex;align-items:center;justify-content:center;gap:22px;text-decoration:none;font-size:15px;font-weight:550;letter-spacing:.01em;border:1px solid transparent;transition:background .2s,transform .2s}.button:hover{transform:translateY(-2px)}.primary{background:var(--ink);color:#fff}.primary:hover{background:var(--deep)}.secondary{background:transparent;border-color:#bec9c6}.text-button{background:none;border:0;padding:10px 0;min-height:44px;text-decoration:underline;text-underline-offset:5px;font-size:14px;display:inline-flex;align-items:center;gap:22px}.quiet-button{background:none;border:0;padding:8px 10px;font-size:13px;min-height:40px}.eyebrow{font-size:10px;letter-spacing:.21em;font-weight:600;margin-bottom:17px;color:var(--muted)}
.demo-bar{height:64px;padding:0 4vw;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(24,63,75,.12);background:var(--paper);position:relative;z-index:30}.wordmark{text-decoration:none;font-family:var(--serif);font-size:29px;letter-spacing:.07em;line-height:1}.wordmark span{font-family:var(--sans);font-size:10px;vertical-align:top;letter-spacing:0}.demo-label{display:flex;align-items:center;gap:12px;font-size:10px;letter-spacing:.16em;font-weight:500}.demo-label i{width:3px;height:3px;background:var(--coral);border-radius:50%}.replay span{font-size:19px;vertical-align:-1px;margin-right:5px}.main{max-width:1180px;margin:auto;padding:44px 46px 32px;min-height:calc(100svh - 191px)}.main:focus{outline:none}.page{animation:page-in .4s ease both}.invitation-footer{max-width:1088px;margin:0 auto 90px;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding:12px 0;font-size:9px;letter-spacing:.16em}.invitation-footer .quiet-button{font-size:11px;letter-spacing:0}.bottom-nav{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);display:flex;background:rgba(250,247,240,.97);border:1px solid #d4dad5;border-radius:10px;padding:6px 12px;box-shadow:0 8px 36px #102e3815;z-index:20;backdrop-filter:blur(15px)}.bottom-nav button{border:0;background:transparent;border-radius:5px;min-width:103px;min-height:52px;font-size:12px;display:flex;align-items:center;justify-content:center;gap:9px;padding:12px 16px}.bottom-nav button span{font-size:20px;line-height:1}.bottom-nav button[aria-current]{background:var(--ink);color:white}.bottom-nav button:hover:not([aria-current]){background:#e8ece6}
/* Opening: real raster stationery pieces articulate around their fold. */
.opening{position:fixed;inset:64px 0 0;z-index:25;background:var(--deep);color:var(--paper);overflow:auto;transition:opacity .75s ease,visibility .75s;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:26px 20px 18px}.opening:before{content:'';position:absolute;inset:0;pointer-events:none;background-image:url('../assets/garden-letter/stationery.png');background-size:cover;background-position:center;opacity:.055}.opening-inner{width:min(100%,510px);position:relative;text-align:center}.opening-eyebrow{font-size:9px;font-weight:550;letter-spacing:.25em;opacity:.7;margin:0 0 14px}.opening h1{font-size:clamp(38px,5vw,58px);line-height:1;margin-bottom:0;letter-spacing:-.02em}.envelope{width:min(100%,370px);aspect-ratio:1.15;position:relative;display:block;margin:0 auto 4px;border:0;background:transparent;padding:0;perspective:1100px;transform:translateY(0);transition:transform .7s}.envelope:hover{transform:translateY(-3px)}.envelope-pocket{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:2;filter:drop-shadow(0 20px 22px #0005)}.envelope-flap{position:absolute;left:0;top:29%;width:100%;height:49%;object-fit:contain;transform-origin:50% 5%;z-index:4;backface-visibility:hidden;transition:transform 1s cubic-bezier(.35,0,.2,1),opacity .2s .7s}.envelope-letter{position:absolute;left:19%;top:35%;width:62%;height:47%;background:var(--paper) url('../assets/garden-letter/stationery.png') center/cover;color:var(--ink);z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 2px 8px #0002;transition:transform 1.15s .35s cubic-bezier(.2,.7,.2,1);overflow:hidden}.envelope-letter>span{font-family:var(--serif);font-size:48px}.envelope-letter .amp{font-style:italic;padding:0 8px;font-size:32px}.envelope-letter small{font-size:10px;letter-spacing:.18em}.envelope-monogram{position:absolute;left:35%;right:35%;bottom:21%;z-index:3;font-family:var(--serif);font-size:18px;letter-spacing:.15em;color:#d5e0df;opacity:.6;pointer-events:none}.opening.is-opening .envelope-flap{transform:rotateX(175deg);opacity:0}.opening.is-opening .envelope-letter{transform:translateY(-52%)}.opening.is-opening .envelope{pointer-events:none}.opening.is-opening .open-cta,.opening.is-opening .opening-eyebrow,.opening.is-opening h1{opacity:0;transition:opacity .6s}.opening.is-leaving{opacity:0;visibility:hidden;pointer-events:none}.open-cta{display:inline-flex;justify-content:center;align-items:center;gap:32px;background:#f4f0e6;color:var(--ink);border:0;padding:13px 24px;border-radius:4px;min-height:48px;font-size:14px;font-weight:500}.open-cta:hover{background:white}.skip-opening{display:block;margin:8px auto 0;min-height:44px;background:none;border:0;color:var(--paper);font-size:12px;text-decoration:underline;text-underline-offset:4px;opacity:.7}.opening-foot{position:relative;font-size:8px;letter-spacing:.22em;opacity:.4;margin:16px 0 0}body.opening-active{overflow:hidden}body.opening-active .invitation-app{visibility:hidden}
/* Invitation */
.invitation-page{display:grid;grid-template-columns:1.08fr 1fr;gap:65px;align-items:center;min-height:630px}.stationery-scene{position:relative;display:flex;align-items:center;justify-content:center;min-height:580px;isolation:isolate}.scene-orbit{position:absolute;width:90%;height:88%;background:#dbe2db;border-radius:48% 48% 40% 45%;transform:rotate(-8deg);z-index:-2;opacity:.55}.scene-envelope{position:absolute;width:120%;max-width:none;height:110%;object-fit:contain;left:-15%;top:-5%;transform:rotate(-11deg);opacity:.96;filter:drop-shadow(0 15px 12px #183f4b16);z-index:-1}.invitation-card{width:345px;min-height:500px;aspect-ratio:2/3;position:relative;background:var(--paper) url('../assets/garden-letter/stationery.png') center/100% 100%;padding:94px 43px 61px;text-align:center;box-shadow:0 16px 50px #203c3c24,0 2px 6px #203c3c20;transform:rotate(2deg);animation:letter-float 10s ease-in-out infinite}.card-kicker{font-size:8px;letter-spacing:.15em;line-height:1.5;margin-bottom:24px}.invitation-card h2{font-size:57px;font-weight:500;line-height:.84;margin:0 auto 14px;letter-spacing:-.03em;max-width:220px}.invitation-card h2 span{display:block;font-style:italic;font-size:37px;line-height:1.1;font-weight:400}.card-script{font:italic 22px/1.3 var(--serif);margin:0}.card-rule{font-size:10px;margin:20px auto 14px;display:flex;gap:10px;align-items:center;justify-content:center;color:var(--coral)}.card-rule:before,.card-rule:after{content:'';height:1px;width:33px;background:#c9ba9f}.card-date{font-size:8px;line-height:2;letter-spacing:.17em;margin-bottom:12px}.card-date strong{font-size:11px;font-weight:500;letter-spacing:.13em}.card-venue{font:italic 24px/1.2 var(--serif);margin:0 0 6px}.card-time{font-size:11px;line-height:1.5;margin:0}.card-closing{font:italic 15px/1.4 var(--serif);margin:22px 0 0}.scene-tag{position:absolute;bottom:1px;right:8px;font:italic 20px/1.2 var(--serif);transform:rotate(-6deg)}.scene-tag em{font-size:22px}.welcome-copy{padding:22px 0}.welcome-copy h1{font-size:86px;line-height:.8;margin-bottom:28px;font-weight:500}.welcome-copy h1 em{font-size:.66em}.welcome-note{font-size:14px;line-height:1.85;color:var(--muted);margin-bottom:25px}.event-essentials{margin:0 0 28px;font-size:13px}.event-essentials>div{display:flex;gap:13px;margin:9px 0}.event-essentials dt{width:65px;color:var(--muted);font-size:11px;display:flex;gap:8px;align-items:center}.event-essentials dt span{font-size:17px}.event-essentials dd{margin:0}.welcome-actions{max-width:330px}.welcome-actions .button{width:100%}.welcome-actions .text-button{display:flex;justify-content:center;width:100%;margin-top:7px}.countdown{display:flex;gap:13px;align-items:center;margin:28px 0 12px;border-top:1px solid var(--line);padding-top:18px;max-width:350px}.countdown>span{display:flex;flex-direction:column;align-items:center;min-width:30px}.countdown b{font:500 28px/1 var(--serif);font-variant-numeric:tabular-nums}.countdown small{font-size:8px;letter-spacing:.1em}.countdown i{font-style:normal;font-size:16px;opacity:.4;align-self:flex-start}.countdown p{font-size:10px;line-height:1.5;color:var(--muted);margin:0 0 0 6px}.countdown p em{display:block;font:italic 21px/1 var(--serif);color:var(--ink)}.reply-by{font-size:10px;color:var(--muted)}.mobile-invitation-actions{display:none}
/* Details and schedule */
.page-intro{text-align:center;margin:12px auto 44px;max-width:600px}.page-intro h1{font-size:64px;margin-bottom:18px}.page-intro>p:last-child{font-size:14px;color:var(--muted)}.details-layout{display:grid;grid-template-columns:1.3fr .8fr;gap:66px;max-width:950px;margin:auto}.venue-card{background:#e8ece5;padding:28px 32px;margin-bottom:36px;border:1px solid #d8e0d6;position:relative}.venue-top{display:flex;justify-content:space-between;align-items:flex-start}.venue-top>span:last-child{font-size:25px}.venue-card h2{font-size:40px;margin:6px 0}.venue-card>p{font-size:14px;margin-bottom:13px}.venue-description{color:var(--muted);line-height:1.8;max-width:410px}.sample-location{display:block;font-size:10px;opacity:.7;margin-top:10px}.section-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.section-title h2{font-size:38px;margin:0}.section-title .eyebrow{font-size:8px;margin-bottom:10px}.calendar-button{border:1px solid #c3ceca;background:transparent;min-height:42px;border-radius:4px;padding:8px 12px;font-size:12px;display:flex;gap:7px;align-items:center}.day{border-bottom:1px solid var(--line)}.day:first-child{border-top:1px solid var(--line)}.day summary{list-style:none;display:flex;align-items:center;gap:18px;padding:20px 0;cursor:pointer;min-height:92px}.day summary::-webkit-details-marker{display:none}.day-date{display:flex;flex-direction:column;align-items:center;width:43px;flex-shrink:0}.day-date b{font:500 34px/1 var(--serif)}.day-date small{font-size:9px;letter-spacing:.16em;margin-top:3px}.day-name{display:flex;flex-direction:column;flex:1}.day-name strong{font-family:var(--serif);font-size:27px;font-weight:500;line-height:1.3}.day-name small{font-size:11px;color:var(--muted);margin-top:3px}.day-toggle{font-size:18px;transition:transform .25s}.day[open] .day-toggle{transform:rotate(45deg)}.day-content{padding:0 0 20px 60px;animation:page-in .25s ease}.timeline{padding:5px 0 0;margin:0;list-style:none}.timeline li{display:grid;grid-template-columns:65px 1fr;gap:17px;position:relative;padding:0 0 23px}.timeline li:before{content:'';position:absolute;left:69px;top:8px;bottom:-7px;border-left:1px solid #c8d2ca}.timeline li:last-child:before{bottom:25px}.timeline li:after{content:'';position:absolute;left:66px;top:8px;width:7px;height:7px;background:var(--coral);border:2px solid var(--paper);border-radius:50%}.timeline time{font-size:11px;white-space:nowrap;line-height:2}.timeline h3{font-size:13px;font-weight:550;margin:0 0 5px;line-height:1.7}.timeline p{font-size:12px;color:var(--muted);margin:0;line-height:1.7}.day-place{font-size:10px;color:var(--muted);margin:0 0 5px}.day-content .text-button{font-size:11px}.dress-note{padding:34px 27px;background:var(--cream) url('../assets/garden-letter/stationery.png') center/100% 100%;border:1px solid #e1ddd1;text-align:center}.dress-note .eyebrow{font-size:8px}.dress-note h2{font-size:34px;line-height:1.12;margin:45px 0 20px}.dress-note p:not(.eyebrow){font-size:12px;line-height:1.8;max-width:220px;margin:0 auto 13px}.dress-note small{font-size:10px;line-height:1.7;display:block;max-width:200px;margin:0 auto 35px;color:var(--muted)}.dress-palette{display:flex;justify-content:center;gap:9px;margin:18px 0}.dress-palette span{width:25px;height:25px;border-radius:50%;background:var(--swatch);border:3px solid var(--paper);outline:1px solid #c4c7bf}.questions{margin:32px 0}.questions h2{font-size:30px;margin-bottom:15px}.questions details{border-bottom:1px solid var(--line)}.questions summary{font-size:12px;min-height:52px;cursor:pointer;padding:15px 0}.questions p{font-size:12px;line-height:1.8;color:var(--muted);margin-bottom:20px}.details-secondary>.button{width:100%;font-size:13px}
/* Photographs */
.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:25px;max-width:950px;margin:0 auto}.photo-card{border:1px solid #ddd8ca;background:#fffdf7;padding:11px 11px 0;box-shadow:0 3px 7px #183f4b08;transition:transform .3s,box-shadow .3s;text-align:left;min-width:0}.photo-card:nth-child(3n+1){transform:rotate(-1.5deg)}.photo-card:nth-child(3n+2){transform:rotate(1deg)}.photo-card:hover{transform:rotate(0) translateY(-5px);box-shadow:0 10px 20px #183f4b18}.photo-card img{width:100%;aspect-ratio:1/1.1;object-fit:cover;background:#e5e7df}.photo-caption{font:italic 22px/1.2 var(--serif);display:block;padding:15px 4px 5px;min-height:46px}.photo-year{font-size:8px;letter-spacing:.1em;display:block;color:var(--muted);padding:0 4px 13px}.gallery-foot{text-align:center;margin:45px auto 10px}.gallery-foot p{font:italic 27px/1.3 var(--serif);margin-bottom:9px}.lightbox{background:var(--deep);color:var(--paper);max-width:min(900px,94vw);max-height:94svh;padding:40px;border-radius:4px;overflow:auto}.lightbox::backdrop,.calendar-dialog::backdrop{background:#0c242ee0;backdrop-filter:blur(5px)}.dialog-close{position:absolute;right:9px;top:5px;border:0;background:none;color:inherit;width:44px;height:44px;font-size:30px;z-index:2}.lightbox-body>img{max-height:70svh;max-width:100%;margin:auto;object-fit:contain;touch-action:pan-y}.lightbox-controls{display:flex;align-items:center;justify-content:space-between;gap:15px;padding-top:16px;text-align:center}.lightbox-controls button{background:none;border:1px solid #ffffff40;color:white;border-radius:50%;width:44px;height:44px;flex-shrink:0;font-size:20px}.lightbox-controls p{font:italic 27px/1.2 var(--serif);margin:0}.lightbox-controls span{font-size:10px;letter-spacing:.15em;opacity:.65}
/* RSVP */
.rsvp-page{display:grid;grid-template-columns:1fr 1.1fr;gap:70px;max-width:1000px;margin:15px auto 35px;align-items:start}.rsvp-aside{padding-top:65px;position:sticky;top:30px}.rsvp-aside h1{font-size:60px;margin:0 0 24px}.rsvp-aside>p:not(.eyebrow){font-size:14px;color:var(--muted)}.rsvp-monogram{font:500 86px/1.5 var(--serif);margin:55px 0 15px;letter-spacing:.01em}.rsvp-monogram em{font-size:.55em;color:var(--coral)}.rsvp-date{font-size:10px!important;letter-spacing:.15em}.rsvp-date span{letter-spacing:0;font-size:12px;line-height:2.5}.rsvp-paper{background:#fffdf7;padding:36px 36px 30px;border:1px solid #deded3;box-shadow:0 7px 30px #183f4b07;min-width:0;border-top:4px solid var(--coral)}.rsvp-paper h1{font-size:47px;margin:0 0 10px}.rsvp-paper .eyebrow{font-size:9px;margin-bottom:13px}.form-intro{font-size:12px;color:var(--muted);margin-bottom:20px}.demo-note{font-size:10px;line-height:1.6;background:#edf0e8;border-left:2px solid #a0b5a2;padding:10px 12px;color:#506359;margin-bottom:25px}.field{display:flex;flex-direction:column;gap:7px;margin:0 0 21px;min-width:0}.field>span,legend{font-size:12px;font-weight:550}.field small,.extra-events legend>span{font-weight:400;font-size:10px;margin-left:4px;color:var(--muted)}.field b,legend b{font-weight:400;color:#9b4c3a}input:not([type=radio]):not([type=checkbox]),select,textarea{width:100%;border:1px solid #c8ceca;border-radius:4px;background:transparent;padding:12px 13px;color:var(--ink);font-size:14px;min-height:47px}input::placeholder,textarea::placeholder{color:#82908e}textarea{resize:vertical;min-height:96px}select{padding-right:20px}input[aria-invalid=true]{border-color:#ac4b3b}.attendance{margin-bottom:23px}.attendance legend{margin-bottom:10px}.attendance>label{display:block;position:relative;margin-bottom:9px}.attendance input{position:absolute;opacity:0;left:16px;top:16px;width:20px;height:20px}.attendance label>span{display:flex;align-items:center;gap:12px;min-height:51px;border:1px solid #c9d0cb;padding:12px 14px;border-radius:4px;font-size:13px;transition:background .2s,color .2s}.attendance label>span>i{display:block;width:18px;height:18px;border:1px solid #a5b3af;border-radius:50%;flex-shrink:0}.attendance label>span>b{margin-left:auto;font-size:22px;line-height:1;font-weight:400}.attendance input:checked+span{background:var(--ink);color:white;border-color:var(--ink)}.attendance input:checked+span>i{background:var(--paper);border-color:var(--paper);position:relative}.attendance input:checked+span>i:after{content:'✓';position:absolute;inset:-2px 0 0;text-align:center;color:var(--ink);font-size:13px}.attendance input:focus-visible+span{outline:3px solid var(--coral);outline-offset:3px}.checkbox-line{display:flex;gap:11px;align-items:flex-start;font-size:12px;padding:10px 0;min-height:45px}.checkbox-line input{accent-color:var(--ink);width:18px;height:18px;margin:2px 0 0;flex-shrink:0}.checkbox-line small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.guest-fields{margin:8px 0 20px;padding:20px 15px 0;border-left:2px solid #c8d8ce;background:#f2f4ed}.extra-events{margin:17px 0 23px;padding-top:17px;border-top:1px solid var(--line)}.extra-events legend{float:left;width:100%;margin-bottom:8px}.extra-events:after{content:'';display:block;clear:both}.extra-events .checkbox-line{clear:both}.send-rsvp{width:100%;margin-top:5px}.form-help{font-size:9px;text-align:center;margin:12px 0 0;color:var(--muted)}.form-errors{padding:12px;background:#f7e9e3;color:#853e31;font-size:12px;border-left:3px solid #b9634e;margin-bottom:20px}.confirmation{text-align:center;padding:25px 0 5px}.confirmation:focus{outline:none}.confirmation-art{width:94px;height:94px;position:relative;margin:10px auto 24px;display:grid;place-items:center}.confirmation-art>span{font:400 67px/1 var(--serif);color:var(--coral);animation:heart-in .6s cubic-bezier(.2,1.5,.4,1) both}.confirmation-art i{position:absolute;width:5px;height:9px;border-radius:2px;background:var(--confetti);left:50%;top:50%;animation:confetti-out 1.7s ease-out both;animation-delay:var(--delay);transform:rotate(var(--angle)) translateY(0);pointer-events:none}.confirmation h1{font-size:49px;margin-bottom:18px}.confirmation>p:not(.eyebrow):not(.demo-note){font-size:13px;color:var(--muted);line-height:1.9}.confirmation-summary{background:#edf0e8;padding:18px 15px;text-align:left;margin:25px 0;display:grid;gap:11px;font-size:12px}.confirmation-summary strong{display:block;font-size:13px;font-weight:550}.confirmation-summary span{font-size:11px;color:var(--muted)}.confirmation .button{width:100%;font-size:12px}.confirmation .text-button{margin:12px 0}.confirmation .demo-note{text-align:left;margin:15px 0 0}
/* Calendar */
.calendar-dialog{background:var(--paper);color:var(--ink);padding:42px 32px 24px;width:410px;max-width:calc(100vw - 28px);border-radius:5px;box-shadow:0 20px 70px #0004}.calendar-dialog .eyebrow{font-size:8px}.calendar-dialog h2{font-size:46px;margin-bottom:14px}.calendar-dialog>p:not(.eyebrow){font-size:12px;color:var(--muted)}.calendar-dialog .button{width:100%;margin:10px 0;font-size:13px}.calendar-dialog .text-button{font-size:11px;width:100%;justify-content:center}.calendar-status{min-height:20px;margin:10px 0 0}.noscript-note{position:fixed;bottom:0;background:#fff;padding:10px;font-size:14px;width:100%;z-index:99}
@keyframes page-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes letter-float{0%,100%{transform:rotate(2deg) translateY(0)}50%{transform:rotate(1deg) translateY(-5px)}}@keyframes heart-in{from{transform:scale(.2);opacity:0}to{transform:scale(1);opacity:1}}@keyframes confetti-out{0%{opacity:0;transform:rotate(var(--angle)) translateY(0) rotate(0)}15%{opacity:1}90%{opacity:.8}100%{opacity:0;transform:rotate(var(--angle)) translateY(-110px) rotate(170deg)}}
.motion-paused *, .motion-paused *:before,.motion-paused *:after{animation-play-state:paused!important}.motion-paused .envelope-flap,.motion-paused .envelope-letter{transition:none!important}
@media(min-width:1400px){.main{padding-top:55px}.invitation-page{min-height:680px}.stationery-scene{min-height:610px}.invitation-card{width:375px;padding-top:107px}.invitation-card h2{font-size:64px}}
@media(max-width:1050px){.main{padding:35px 30px 25px}.invitation-page{gap:35px;grid-template-columns:1fr 1fr}.invitation-card{width:300px;min-height:460px;padding:78px 35px 55px}.invitation-card h2{font-size:52px}.stationery-scene{min-height:535px}.welcome-copy h1{font-size:71px}.welcome-note br{display:none}.details-layout{gap:35px}.rsvp-page{gap:35px}.rsvp-aside h1{font-size:49px}.rsvp-paper{padding:28px}.invitation-footer{margin-left:30px;margin-right:30px}.scene-tag{font-size:17px}.rsvp-monogram{font-size:75px}}
@media(max-width:760px){.demo-bar{height:54px;padding:0 18px}.wordmark{font-size:25px}.demo-label{font-size:8px;letter-spacing:.09em;gap:6px}.replay{font-size:0;padding:4px;min-width:34px}.replay span{font-size:23px;margin:0}.main{padding:24px 22px 24px;min-height:calc(100svh - 150px)}.bottom-nav{bottom:0;left:0;right:0;transform:none;border-radius:0;border-left:0;border-right:0;border-bottom:0;justify-content:space-evenly;padding:4px 10px calc(5px + env(safe-area-inset-bottom));box-shadow:0 -5px 25px #183f4b08}.bottom-nav button{flex:1;min-width:0;min-height:56px;max-width:120px;padding:6px 8px;flex-direction:column;gap:3px;font-size:10px;border-radius:5px}.bottom-nav button span{font-size:19px}.bottom-nav button[aria-current]{background:transparent;color:var(--ink);position:relative}.bottom-nav button[aria-current]:after{content:'';position:absolute;bottom:0;width:25px;height:2px;background:var(--coral)}.bottom-nav button:not([aria-current]){color:#71817e}.invitation-footer{margin:0 22px 78px;padding:7px 0;font-size:7px;letter-spacing:.08em}.invitation-footer .quiet-button{font-size:10px}.invitation-footer>span:first-child{display:none}.opening{inset:54px 0 0;padding:28px 22px 16px}.opening h1{font-size:45px}.opening-eyebrow{font-size:8px;margin-bottom:20px;letter-spacing:.18em}.opening-inner{max-width:380px}.envelope{width:min(100%,340px);aspect-ratio:1.03;margin-top:0;margin-bottom:10px}.opening-foot{font-size:7px;margin-top:17px}.open-cta{font-size:13px;min-height:49px;padding:13px 25px}.opening .envelope-letter>span{font-size:42px}.opening .envelope-letter small{font-size:9px}.invitation-page{display:flex;flex-direction:column;gap:0;min-height:0}.stationery-scene{width:100%;min-height:0;height:auto;padding:18px 5px 15px;max-width:450px}.scene-orbit{width:85%;height:85%;top:5%;opacity:.45}.scene-envelope{width:112%;height:110%;left:-9%;top:-5%;transform:rotate(-8deg);opacity:.9}.invitation-card{width:min(100%,315px);min-height:0;aspect-ratio:2/3;padding:83px 35px 55px;transform:rotate(1deg)}.invitation-card h2{font-size:53px;max-width:200px}.card-kicker{font-size:7px;margin-bottom:20px}.card-script{font-size:21px}.card-rule{margin:17px auto 12px}.card-date{font-size:7px;line-height:1.9;margin-bottom:10px}.card-date strong{font-size:10px}.card-venue{font-size:24px}.card-time{font-size:10px}.card-closing{font-size:14px;margin-top:17px}.scene-tag{display:none}.welcome-copy{display:none}.mobile-invitation-actions{display:block;width:100%;max-width:315px;text-align:center;margin-top:20px}.mobile-invitation-actions .button{width:100%;min-height:49px}.mobile-invitation-actions .text-button{font-size:12px}.mobile-invitation-actions p{font-size:9px;color:var(--muted);margin:3px 0 5px}.page-intro{margin:12px auto 32px}.page-intro h1{font-size:48px;margin-bottom:15px}.page-intro .eyebrow{font-size:8px;letter-spacing:.14em}.page-intro>p:last-child{font-size:12px}.details-layout{display:block}.venue-card{padding:25px;margin-bottom:30px}.venue-card h2{font-size:38px}.venue-description{font-size:12px!important}.venue-card>p{font-size:13px}.details-secondary{margin-top:35px}.dress-note{padding:23px 36px;background-size:100% 100%;max-width:400px;margin:auto}.dress-note h2{margin-top:45px}.dress-note p:not(.eyebrow){font-size:13px}.dress-note small{font-size:11px;margin-bottom:40px}.questions h2{font-size:32px}.questions summary{font-size:14px}.questions p{font-size:13px}.day-name strong{font-size:27px}.day-name small{font-size:11px}.section-title h2{font-size:37px}.section-title .eyebrow{font-size:7px;letter-spacing:.15em}.day-content{padding-left:12px}.timeline{padding-left:0}.timeline li{grid-template-columns:67px 1fr;gap:20px;padding-bottom:22px}.timeline li:before{left:75px}.timeline li:after{left:72px}.timeline time{font-size:11px}.timeline h3{font-size:13px}.timeline p{font-size:12px}.day-place{padding-left:86px;font-size:10px}.day-content .text-button{margin-left:86px;font-size:11px}.photo-grid{grid-template-columns:1fr 1fr;gap:20px 13px}.photo-card{padding:7px 7px 0}.photo-card img{aspect-ratio:1/1.3}.photo-caption{font-size:20px;padding:11px 2px 5px;min-height:44px}.photo-year{font-size:7px;padding:0 2px 10px}.gallery-foot{margin:35px auto 0}.gallery-foot p{font-size:24px}.gallery-foot .text-button{font-size:12px}.lightbox{padding:40px 12px 18px;max-width:100vw;width:100vw;max-height:100svh;border-radius:0}.lightbox-body>img{max-height:73svh;width:100%;object-fit:contain}.lightbox-controls p{font-size:23px}.rsvp-page{display:block;margin:6px auto 10px;max-width:480px}.rsvp-aside{display:none}.rsvp-paper{padding:28px 22px 24px;border-top-width:3px}.rsvp-paper h1{font-size:43px}.field>span,legend{font-size:13px}input:not([type=radio]):not([type=checkbox]),select,textarea{font-size:16px;min-height:48px}.field{margin-bottom:22px}.attendance label>span{font-size:13px}.checkbox-line{font-size:13px}.checkbox-line small{font-size:11px}.extra-events legend>span,.field small{font-size:11px}.form-intro{font-size:13px}.demo-note{font-size:11px;padding:10px}.form-help{font-size:10px}.confirmation h1{font-size:44px}.confirmation>p:not(.eyebrow):not(.demo-note){font-size:14px}.confirmation-summary{font-size:13px}.confirmation-summary strong{font-size:14px}.confirmation-summary span{font-size:12px}.confirmation .button{font-size:13px}.form-errors{font-size:13px}.calendar-dialog{padding:40px 24px 22px}.calendar-dialog .field>span{font-size:12px}.calendar-dialog .text-button{font-size:12px}}
@media(max-width:360px){.demo-label{font-size:7px}.main{padding-left:15px;padding-right:15px}.invitation-card{width:290px;padding-top:76px}.invitation-card h2{font-size:49px}.card-closing{margin-top:11px}.rsvp-paper{padding:24px 17px}.rsvp-paper h1{font-size:39px}.photo-caption{font-size:18px}.opening h1{font-size:39px}.opening-eyebrow{font-size:7px}.envelope{max-width:280px}.open-cta{min-height:44px}.scene-envelope{left:-7%;width:108%}}
@media(max-height:720px) and (max-width:760px){.opening{justify-content:flex-start;padding-top:20px}.opening h1{font-size:37px}.opening-eyebrow{margin-bottom:10px}.envelope{width:265px;aspect-ratio:1.18;margin:0 auto 2px}.opening-foot{display:none}.opening .skip-opening{margin-top:3px}.invitation-card{width:275px;padding:72px 30px 43px}.invitation-card h2{font-size:46px}.card-kicker{margin-bottom:17px}.card-rule{margin:13px auto 10px}.card-closing{margin-top:12px}.card-date strong{font-size:9px}.stationery-scene{padding-top:10px}.mobile-invitation-actions{margin-top:12px}.main{padding-top:15px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.invitation-card{transform:rotate(1deg)}.confirmation-art i{display:none}}
/* Invitation typography refinements. */
.invitation-card:before{content:'';position:absolute;inset:19% 10% 16%;background:#faf7f0e0;z-index:-1}.invitation-card{isolation:isolate}.card-time{font-size:13px}.card-date strong{font-size:13px}.welcome-note{font-size:16px}.event-essentials{font-size:15px}.event-essentials dt{font-size:13px;width:76px}.reply-by{font-size:12px}.text-button{font-size:14px}.timeline h3,.timeline p,.questions summary,.questions p,.day-name small,.venue-description,.dress-note p:not(.eyebrow){font-size:14px}.timeline time{font-size:13px}.day-place,.dress-note small,.sample-location{font-size:12px}.field>span,legend,.attendance label>span,.checkbox-line,.form-intro{font-size:14px}.field small,.extra-events legend>span,.checkbox-line small{font-size:12px}.form-help,.demo-note{font-size:12px}.bottom-nav button{font-size:13px}.calendar-dialog>p:not(.eyebrow),.calendar-dialog .button,.calendar-dialog .text-button{font-size:14px}.confirmation-summary,.confirmation-summary strong,.confirmation-summary span{font-size:14px}.photo-year{font-size:10px}.photo-caption{font-size:24px}
@media(max-width:760px){.envelope{aspect-ratio:4/3;max-width:340px;margin-top:6px;margin-bottom:32px}.opening-inner{padding-bottom:16px}.opening h1{margin-bottom:-25px}.envelope{transform:translateY(-4px)}.opening-eyebrow{font-size:9px}.skip-opening{font-size:13px}.opening-foot{font-size:8px}.invitation-card{min-height:500px;aspect-ratio:auto;padding:90px 33px 56px}.card-date strong{font-size:12px}.card-time{font-size:12px}.card-closing{font-size:16px}.card-script{font-size:22px}.mobile-invitation-actions p{font-size:12px}.mobile-invitation-actions .text-button{font-size:14px}.main{padding-top:24px}.page-intro>p:last-child{font-size:14px}.venue-description{font-size:14px!important}.venue-card>p{font-size:14px}.timeline li{grid-template-columns:78px 1fr;gap:19px}.timeline li:before{left:85px}.timeline li:after{left:82px}.timeline time{font-size:12px}.day-place{padding-left:97px}.day-content .text-button{font-size:12px;margin-left:97px}.day-name strong{font-size:26px}.day-name small{font-size:12px}.day summary{gap:13px}.dress-note small{font-size:12px}.bottom-nav button{font-size:12px}.rsvp-paper h1{font-size:43px}.rsvp-paper{padding-left:21px;padding-right:21px}.gallery-foot .text-button{font-size:14px}.photo-caption{font-size:22px}.photo-year{font-size:9px}.confirmation>p:not(.eyebrow):not(.demo-note){font-size:15px}.form-errors{font-size:14px}.invitation-footer{font-size:8px}.calendar-dialog .field>span{font-size:14px}}
@media(max-height:720px) and (max-width:760px){.envelope{max-width:280px;margin-bottom:22px}.opening h1{font-size:39px;margin-bottom:-18px}.opening-eyebrow{font-size:8px}.invitation-card{width:285px;min-height:475px;padding-top:90px}.invitation-card h2{font-size:48px}.card-rule{margin:15px auto 12px}.card-date strong{font-size:12px}.card-time{font-size:12px}}
.motion-paused .page,.motion-paused .confirmation-art>span{animation:none!important}

/* The frame follows the actual envelope bounds. Both flap faces share one hinge.
   These crop and articulate supplied raster pieces; no illustration is redrawn. */
.opening{padding:40px 24px 24px;transition:opacity .8s cubic-bezier(.22,.7,.2,1)}
/* Fade the stationery to paper before bringing the invitation into view. */
.opening::after{content:'';position:fixed;inset:inherit;z-index:3;background:var(--paper);opacity:0;pointer-events:none;transition:opacity .5s ease-in-out}
.opening.is-dissolving::after{opacity:1}
.opening.is-leaving{visibility:visible}
body.opening-revealing .invitation-app{visibility:visible}
.opening.is-resetting,.opening.is-resetting::after{transition:none!important}
.opening-inner{width:min(100%,510px);padding-bottom:0}
.opening h1{margin-bottom:0;font-size:clamp(42px,5vw,58px)}
.opening-eyebrow{font-size:12px;letter-spacing:.18em;margin-bottom:20px}
.envelope{width:min(100%,420px);max-width:420px;aspect-ratio:1192/560;margin:58px auto 38px;transform:none;perspective:1200px;isolation:isolate}
.envelope:hover{transform:translateY(-3px)}
.envelope:focus-visible{outline-offset:15px;border-radius:3px}
.envelope-pocket{inset:auto;left:-10.7383%;top:-89.2857%;width:121.4765%;max-width:none;height:193.9286%;object-fit:fill;clip-path:inset(46.0405% 0 0);filter:drop-shadow(0 16px 15px #0003);z-index:2;pointer-events:none}
.envelope-flap,.envelope-flap-inner{position:absolute;display:block;left:0;width:100%;height:65.9857%;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;transition:transform 1.05s cubic-bezier(.42,0,.28,1);pointer-events:none}
.envelope-flap{top:0;bottom:auto;transform-origin:50% 0;transform:rotateX(0deg);z-index:4;opacity:1}
.envelope-flap>img{position:absolute;left:-.5701%;top:-16.6667%;width:101.1403%;max-width:none;height:127.4425%;object-fit:fill}
.envelope-flap-inner{top:auto;bottom:100%;transform-origin:50% 100%;transform:rotateX(180deg);z-index:4}
.envelope-flap-inner>img{position:absolute;left:-10.7383%;top:-3.7344%;width:121.4765%;max-width:none;height:225.3112%;object-fit:fill}
.envelope-letter{left:9%;top:3%;width:82%;height:91%;z-index:1;border:1px solid #e0d7c5;border-radius:2px;box-shadow:0 3px 12px #0002;transform:translateY(0);transition:transform 1.15s .72s cubic-bezier(.2,.65,.2,1)}
.envelope-letter>span{font-size:48px}.envelope-letter small{font-size:12px}
.envelope-monogram{bottom:9%;left:30%;right:30%;font-size:18px;letter-spacing:.18em;opacity:.65}
.opening.is-opening .envelope-flap{transform:rotateX(-180deg);opacity:1}
.opening.is-opening .envelope-flap-inner{transform:rotateX(0deg)}
.opening.flap-open .envelope-flap-inner{z-index:0}
.opening.is-opening .envelope-letter{transform:translateY(-76%)}
.open-cta{min-height:52px;font-size:15px;padding:14px 27px;border-radius:4px}
.skip-opening{font-size:14px;margin-top:9px}.opening-foot{font-size:10px;letter-spacing:.18em;margin-top:20px}
.motion-paused .envelope-flap-inner{transition:none!important}
@media(max-width:760px){
 .opening{padding:30px 28px 20px}.opening-inner{width:min(100%,380px);padding-bottom:0}
 .opening h1{font-size:46px;margin-bottom:0}.opening-eyebrow{font-size:10px;margin-bottom:18px;letter-spacing:.14em}
 .envelope{width:100%;max-width:330px;aspect-ratio:1192/560;margin:50px auto 31px;transform:none}
 .envelope-monogram{font-size:15px}.opening .envelope-letter>span{font-size:40px}.opening .envelope-letter small{font-size:11px}
 .open-cta{font-size:14px;min-height:50px}.opening-foot{font-size:9px;margin-top:16px}
}
@media(max-height:720px) and (max-width:760px){
 .opening{justify-content:center;padding:22px 28px 18px}.opening h1{font-size:39px;margin-bottom:0}
 .opening-eyebrow{font-size:9px;margin-bottom:12px}.envelope{width:100%;max-width:292px;aspect-ratio:1192/560;margin:40px auto 26px}
 .opening-foot{display:none}.skip-opening{margin-top:5px}
}
@media(max-height:520px){.opening{justify-content:flex-start}.opening h1{font-size:32px}.opening-eyebrow{display:none}.envelope{max-width:250px;margin-top:26px;margin-bottom:20px}.opening-foot{display:none}}
/* Personalised dress colours and flexible menu courses in the customer preview. */
.guest-dress-palette{display:flex;flex-wrap:wrap;justify-content:center;gap:18px 14px;margin:25px 0 10px}.guest-dress-palette figure{margin:0;max-width:85px;text-align:center}.guest-dress-palette figure>span{display:block;width:49px;height:49px;background:var(--swatch);border:1px solid #153c4933;border-radius:50%;margin:0 auto 9px;box-shadow:0 0 0 4px #ffffff80}.guest-dress-palette figcaption{font-size:13px;line-height:1.4;overflow-wrap:anywhere}.preview-course{margin:24px 0;padding-top:18px;border-top:1px solid #b7b5a64d}.preview-course h3{font-size:24px;margin:0 0 10px}.preview-course p{font-size:15px;margin:6px 0}#studio-schedule .day-name small{display:block;font-size:13px;margin-top:5px;font-weight:400}

/* Keep the complete invitation on phones, including countdown, motion and RSVP context. */
@media(max-width:760px){
 .welcome-copy{display:block;width:100%;max-width:540px;margin:1.5rem auto 0;padding:1.5rem 1rem;text-align:left}
 .welcome-copy h1{font-size:clamp(2.6rem,11vw,3.6rem);line-height:1.08}.welcome-copy>.eyebrow{font-size:12px}
 .welcome-note{font-size:16px}.welcome-copy .countdown{max-width:none;justify-content:center;padding-top:1.5rem;margin-top:1.5rem}
 .welcome-copy .reply-by{text-align:center;font-size:12px}.welcome-actions{display:flex;flex-wrap:wrap;gap:1rem}
 .welcome-copy+.mobile-invitation-actions,.invitation-page>.mobile-invitation-actions{display:none}
 .rsvp-aside{display:block;position:static;padding:1rem 0 2rem;text-align:center}.rsvp-aside h1{font-size:clamp(2.5rem,10vw,3.5rem)}
 .rsvp-aside>p:not(.eyebrow){font-size:16px}.rsvp-aside .rsvp-monogram{font-size:56px;margin:1rem 0}.rsvp-aside .rsvp-date{font-size:12px!important}.rsvp-aside .rsvp-date span{font-size:14px}
}
