.oc-opening{position:fixed;inset:0;z-index:100;background:var(--oc-paper);color:var(--oc-ink);overflow:hidden;isolation:isolate;transition:opacity .9s ease,visibility .9s;--oc-progress:0}.oc-opening *{box-sizing:border-box}.oc-opening .intro-brand{position:absolute;z-index:7;top:max(22px,env(safe-area-inset-top));right:26px;color:var(--oc-ink);font-family:var(--serif);font-size:24px;opacity:.75}.oc-opening .intro-skip{z-index:9;top:max(23px,env(safe-area-inset-top));left:23px;right:auto;background:color-mix(in srgb,var(--oc-paper) 85%,transparent);color:var(--oc-ink);border:1px solid color-mix(in srgb,var(--oc-gold) 65%,transparent);border-radius:30px;padding:12px 17px;min-height:44px;font-family:var(--sans);font-size:12px}.oc-opening .envelope-stage{position:absolute;inset:0;z-index:5;transition:opacity .7s,transform .9s;overflow:auto;padding-top:max(55px,env(safe-area-inset-top));padding-bottom:35px}.oc-opening .envelope-heading{color:var(--oc-ink);font-size:clamp(26px,4vw,43px);max-width:650px;margin-inline:auto;padding-inline:20px}.oc-opening .envelope-eyebrow,.oc-opening .envelope-template-name,.oc-opening .envelope-names,.oc-opening .envelope-hint{color:var(--oc-ink)}.oc-opening .envelope-eyebrow{letter-spacing:0}.oc-opening .envelope-play-status{position:absolute;z-index:8;bottom:max(20px,env(safe-area-inset-bottom));color:var(--oc-ink);font-size:12px;left:25px;right:25px;text-align:center;pointer-events:none;min-height:22px}.oc-opening-scene{position:absolute;inset:0;transition:filter 1.5s,transform 3.5s,opacity 1.5s}.oc-opening.awaiting-envelope .oc-opening-scene{opacity:.2;filter:blur(9px);transform:scale(1.08)}.oc-playing .envelope-stage{opacity:0;transform:translateY(-30px) scale(1.05);pointer-events:none}.oc-playing .oc-opening-scene{opacity:1;filter:none;transform:none}.oc-dismissed{opacity:0;visibility:hidden;pointer-events:none}.oc-scene{position:absolute;inset:0;color:var(--oc-ink);overflow:hidden;background:var(--oc-paper)}.oc-scenery{display:block;width:100%;height:100%;max-width:560px;margin:auto;overflow:visible}.oc-opening-copy{position:absolute;z-index:3;left:20px;right:20px;bottom:17%;text-align:center;opacity:0;transform:translateY(24px);color:var(--oc-ink);pointer-events:none}.oc-opening-copy>p{font-size:13px;line-height:1.8;margin:0 0 15px}.oc-opening-copy h2{font-family:var(--serif);font-weight:400;font-size:clamp(37px,7vw,62px);line-height:1.5;margin:0 auto 12px;max-width:720px;overflow-wrap:anywhere}.oc-opening-copy>span{font-size:13px;line-height:1.8;opacity:.8}.oc-playing .oc-opening-copy{animation:oc-copy-in 1.7s ease 2.2s both}.oc-progress{position:absolute;z-index:9;bottom:0;height:3px;background:color-mix(in srgb,var(--oc-gold) 25%,transparent);left:0;right:0}.oc-progress i{display:block;width:100%;height:100%;background:var(--oc-gold);transform-origin:left;transform:scaleX(var(--oc-progress));will-change:transform}.oc-main-art{transform-origin:195px 260px}.oc-playing .oc-main-art{animation:oc-art-arrive 3.2s cubic-bezier(.2,.7,.3,1) both}.oc-halo{transform-origin:195px 245px;animation:oc-halo 8s ease-in-out infinite}.oc-spark{transform-box:fill-box;transform-origin:center;animation:oc-twinkle 4s ease-in-out infinite;animation-delay:calc(var(--part)*.6s)}.oc-cloud-one{animation:oc-cloud-left 14s ease-in-out infinite alternate}.oc-cloud-two{animation:oc-cloud-right 16s ease-in-out infinite alternate}.oc-curtain{position:absolute;inset-block:0;width:51%;z-index:2;background:linear-gradient(90deg,var(--oc-paper),color-mix(in srgb,var(--oc-gold) 21%,var(--oc-paper)));transition:transform 3.8s cubic-bezier(.2,.7,.2,1);box-shadow:0 0 35px #0000000d}.oc-curtain:after{content:'';position:absolute;inset:5% 10px;border-inline:1px solid var(--oc-gold);opacity:.3}.oc-curtain-left{left:0;transform-origin:left}.oc-curtain-right{right:0;transform:scaleX(-1);transform-origin:center}.oc-playing .oc-curtain-left,.oc-settled .oc-curtain-left{transform:translateX(-101%)}.oc-playing .oc-curtain-right,.oc-settled .oc-curtain-right{transform:translateX(101%) scaleX(-1)}.oc-scene:not(.oc-gala):not(.oc-roses) .oc-curtain{display:none}.oc-dust{position:absolute;inset:0;pointer-events:none;overflow:hidden}.oc-dust i{position:absolute;width:3px;height:3px;background:var(--oc-gold);border-radius:50%;left:var(--x);bottom:8%;opacity:0}.oc-playing .oc-dust i,.oc-settled .oc-dust i{animation:oc-dust-rise 6s ease-in-out infinite;animation-delay:calc(var(--part)*.3s)}.oc-flame{transform-box:fill-box;transform-origin:center bottom;opacity:0}.oc-playing .oc-flame{animation:oc-light-flame 1.2s ease both,oc-flame-flicker 2s ease-in-out infinite;animation-delay:calc(.65s + var(--part)*.7s),calc(1.9s + var(--part)*.7s)}.oc-settled .oc-flame{opacity:1;animation:oc-flame-flicker 2s ease-in-out infinite}.oc-playing .oc-gift-lid{animation:oc-open-gift 3.2s ease-in-out .4s both;transform-origin:195px 195px}.oc-settled .oc-gift-lid{transform:translateY(-38px) rotate(-6deg);transform-origin:195px 195px}.oc-playing .oc-cap{animation:oc-cap-flight 4s cubic-bezier(.2,.8,.2,1) .1s both;transform-origin:195px 240px}.oc-playing .oc-diploma{animation:oc-unroll 3s cubic-bezier(.2,.7,.3,1) .4s both;transform-origin:195px 160px}.oc-leaf{transform-box:fill-box;transform-origin:center;opacity:1}.oc-playing .oc-leaf{animation:oc-leaf-appear 1.4s ease both;animation-delay:calc(.25s + var(--part)*.21s)}.oc-playing .oc-moon{animation:oc-moon-rise 4.7s ease both}.oc-hanging{transform-origin:195px 90px;animation:oc-swing 6s ease-in-out infinite alternate}.oc-balloon{animation:oc-bob 7s ease-in-out infinite alternate;animation-delay:calc(var(--part)*-.9s)}.oc-playing .oc-balloon{animation:oc-balloon-rise 5s ease both,oc-bob 7s ease-in-out 5s infinite alternate;animation-delay:calc(var(--part)*.35s),5s}.oc-hand-line{stroke-dasharray:1100;stroke-dashoffset:0}.oc-playing .oc-hand-line{animation:oc-draw-hand 3.5s ease both}.oc-playing .oc-henna-ink{animation:oc-copy-in 1.7s ease 2s both}.oc-petal{transform-box:fill-box;transform-origin:center bottom}.oc-playing .oc-petal{animation:oc-petal-unfold 2.4s ease both;animation-delay:calc(var(--part)*.09s)}.oc-door-left,.oc-door-right{transform-box:fill-box;backface-visibility:hidden}.oc-door-left{transform-origin:left}.oc-door-right{transform-origin:right}.oc-playing .oc-door-left{animation:oc-door-open-left 4s ease .1s both}.oc-playing .oc-door-right{animation:oc-door-open-right 4s ease .1s both}.oc-settled .oc-door-left{transform:perspective(700px) rotateY(-83deg);opacity:.7}.oc-settled .oc-door-right{transform:perspective(700px) rotateY(83deg);opacity:.7}.oc-flower{transform-box:fill-box;transform-origin:center}.oc-playing .oc-flower{animation:oc-flower-bloom 3s ease both;animation-delay:calc(.3s + var(--part)*.35s)}.oc-playing .oc-ray{animation:oc-ray-show 1.5s ease both;animation-delay:calc(var(--part)*.035s)}.oc-paused *,.oc-paused *:before,.oc-paused *:after{animation-play-state:paused!important}
/* The invitation retains the final scene, then continues into the event details. */
.public-shell.oc-invitation{padding:0 0 45px;border-radius:0;max-width:840px;width:100%;background:var(--oc-paper);color:var(--oc-ink);overflow:hidden;--occasion-ink:var(--oc-ink);--occasion-accent:var(--oc-gold);--occasion-paper:var(--oc-paper)}.oc-invitation .oc-invitation-hero{position:relative;isolation:isolate;overflow:hidden;width:100%;max-width:none;min-height:900px;min-height:100svh;border:0;outline:0;border-radius:0;box-shadow:none;margin:0;padding:49vh 30px 80px;display:flex;align-items:center;justify-content:flex-end;flex-direction:column;background:var(--oc-paper);color:var(--oc-ink)}.oc-hero-scenery{position:absolute;inset:0;z-index:-1;pointer-events:none}.oc-invitation-hero>.occasion-illustration,.oc-invitation-hero>.ornament,.oc-invitation-hero>.occasion-category{display:none}.oc-invitation-hero>h3{font-family:var(--serif);font-size:clamp(39px,6vw,62px);line-height:1.55;margin:13px 0;color:inherit;max-width:650px;overflow-wrap:anywhere;outline:0}.oc-invitation-hero .card-kicker,.oc-hero-eyebrow{font-size:13px;line-height:1.9;color:inherit;max-width:450px;margin:8px 0}.oc-hero-eyebrow{font-size:11px;opacity:.8}.oc-invitation-hero .card-divider{background:var(--oc-gold);width:50px}.oc-invitation-hero .card-date,.oc-invitation-hero .card-place,.oc-invitation-hero .card-message{color:inherit;max-width:440px;line-height:2;font-size:14px}.oc-invitation-hero .card-message{font-size:15px;opacity:.85;margin-top:15px;white-space:pre-line}.oc-invitation .personal-cover{position:relative;max-height:220px;width:min(300px,90%);margin-bottom:20px;object-fit:cover;border-radius:120px 120px 8px 8px}.oc-event-details{margin:0!important;padding:65px 32px!important;background:transparent;border:0!important;position:relative}.oc-section-kicker{font-size:11px;letter-spacing:2px;color:var(--oc-ink);text-align:center;margin-bottom:30px;opacity:.7}.oc-invitation .event-calendar h3,.oc-invitation .legacy-details h2{color:var(--oc-ink)}.oc-invitation .calendar-week{color:var(--oc-gold)}.oc-invitation .calendar-days .selected-day{background:var(--oc-ink);color:var(--oc-paper);outline-color:var(--oc-gold)}.oc-invitation .legacy-countdown{color:var(--oc-ink);border-block:1px solid var(--oc-gold);padding:25px 0}.oc-invitation .map-link{display:inline-flex;margin:25px auto;padding:12px 20px;border:1px solid var(--oc-gold);border-radius:25px;color:var(--oc-ink)}.oc-invitation .rsvp-section{margin:15px 25px;background:#fffaf2;border:1px solid var(--oc-gold);border-radius:15px;color:#4b4237}.oc-invitation .rsvp-section h2{color:#675742}.oc-farewell{text-align:center;padding:70px 25px 35px;color:var(--oc-ink)}.oc-farewell>span{font-size:36px;color:var(--oc-gold)}.oc-farewell h2{font-family:var(--serif);font-size:30px;font-weight:400;line-height:1.8}.oc-farewell p{font-size:14px;opacity:.8}.oc-farewell button{color:inherit;border-color:var(--oc-gold);background:transparent;margin-top:20px;min-height:44px}.oc-invitation>.closing-custom{display:none}
@keyframes oc-copy-in{from{opacity:0;transform:translateY(25px)}to{opacity:1;transform:translateY(0)}}@keyframes oc-art-arrive{from{opacity:0;transform:translateY(18px) scale(.92)}to{opacity:1;transform:none}}@keyframes oc-halo{50%{opacity:.7;transform:scale(1.08)}}@keyframes oc-twinkle{50%{opacity:.2;transform:scale(.65)}}@keyframes oc-cloud-left{to{transform:translateX(24px)}}@keyframes oc-cloud-right{to{transform:translateX(-27px)}}@keyframes oc-dust-rise{0%{opacity:0;transform:translate(0,0)}25%{opacity:.65}90%,100%{opacity:0;transform:translate(var(--drift),-430px)}}@keyframes oc-light-flame{from{opacity:0;transform:scale(.1)}to{opacity:1;transform:scale(1)}}@keyframes oc-flame-flicker{50%{transform:scale(.88,1.08);opacity:.8}}@keyframes oc-open-gift{to{transform:translateY(-38px) rotate(-6deg)}}@keyframes oc-cap-flight{0%{transform:translateY(140px) rotate(-10deg);opacity:0}50%{transform:translateY(-25px) rotate(8deg);opacity:1}100%{transform:none;opacity:1}}@keyframes oc-unroll{from{transform:scaleY(.08);opacity:0}to{transform:scaleY(1);opacity:1}}@keyframes oc-leaf-appear{from{opacity:0;scale:.2}to{opacity:1;scale:1}}@keyframes oc-moon-rise{from{opacity:0;transform:translate(24px,90px)}to{opacity:1;transform:none}}@keyframes oc-swing{to{transform:rotate(4deg)}}@keyframes oc-bob{to{translate:0 -12px}}@keyframes oc-balloon-rise{from{translate:0 150px;opacity:0}to{translate:0 0;opacity:1}}@keyframes oc-draw-hand{from{stroke-dashoffset:1100}to{stroke-dashoffset:0}}@keyframes oc-petal-unfold{from{scale:.2;opacity:0}to{scale:1;opacity:1}}@keyframes oc-door-open-left{to{transform:perspective(700px) rotateY(-83deg);opacity:.7}}@keyframes oc-door-open-right{to{transform:perspective(700px) rotateY(83deg);opacity:.7}}@keyframes oc-flower-bloom{from{scale:.1;opacity:0}to{scale:1;opacity:1}}@keyframes oc-ray-show{from{opacity:0;stroke-dasharray:0 100}to{opacity:1;stroke-dasharray:100 0}}
@media(max-width:600px){.oc-opening .envelope-stage{padding-top:75px}.oc-opening .envelope-heading{font-size:28px;line-height:1.7}.oc-opening .envelope-eyebrow{font-size:11px}.oc-opening .intro-brand{font-size:19px;right:18px}.oc-opening .intro-skip{font-size:11px;padding:10px 13px;left:14px}.oc-opening-copy{bottom:18%;left:22px;right:22px}.oc-opening-copy h2{font-size:38px}.oc-opening-copy>p,.oc-opening-copy>span{font-size:12px}.oc-opening .envelope-play-status{font-size:10px;bottom:26px}.oc-invitation .oc-invitation-hero{min-height:850px;min-height:100svh;padding:48vh 24px 65px}.oc-invitation-hero>h3{font-size:38px}.oc-invitation-hero .card-kicker,.oc-hero-eyebrow{font-size:11px}.oc-invitation-hero .card-message{font-size:13px}.oc-event-details{padding:45px 22px!important}.oc-invitation .rsvp-section{margin-inline:16px;padding:25px 18px}.oc-farewell h2{font-size:27px}.oc-invitation .legacy-gallery{grid-template-columns:1fr 1fr}}
@media(orientation:landscape) and (max-height:550px){.oc-opening .envelope-stage{padding-top:42px;transform:scale(.72);transform-origin:center}.oc-opening .envelope-eyebrow,.oc-opening .envelope-template-name{display:none}.oc-opening-copy{bottom:12%}.oc-opening-copy h2{font-size:32px}.oc-opening-copy>p{margin-bottom:4px}.oc-opening-copy>span{font-size:11px}.oc-invitation .oc-invitation-hero{min-height:650px}}
@media(prefers-reduced-motion:reduce){.oc-opening *,.oc-invitation *{animation:none!important;transition:none!important}.oc-opening-copy{opacity:1;transform:none}.oc-playing .oc-flame{opacity:1}.oc-curtain{display:none!important}}
.oc-opening.intro-overlay{background:var(--oc-paper)}body.intro-is-open:has(.oc-opening){overflow:hidden}.oc-opening .oc-scene{background:var(--oc-paper)}

/* Cinematic originals: the same photograph continues beneath the opening and the invitation. */
.oc-cinematic-backdrop{position:absolute;inset:-2%;background-size:cover;background-position:center;transform:scale(1.035);will-change:transform}.oc-cinematic-shade{position:absolute;inset:0;z-index:1;background:linear-gradient(to bottom,transparent 30%,color-mix(in srgb,var(--oc-paper) 30%,transparent) 51%,color-mix(in srgb,var(--oc-paper) 93%,transparent) 80%,var(--oc-paper));pointer-events:none}.has-cinematic .oc-scenery{position:relative;z-index:2}.has-cinematic .oc-scenery>rect,.has-cinematic .oc-architecture,.has-cinematic .oc-floor{display:none}.has-cinematic .oc-main-art{mix-blend-mode:soft-light}.has-cinematic .oc-main-art>g,.has-cinematic .oc-main-art>path,.has-cinematic .oc-main-art>rect,.has-cinematic .oc-main-art>ellipse{opacity:.25}.has-cinematic.oc-settled .oc-main-art{opacity:.12}.has-cinematic .oc-clouds{opacity:.12}.has-cinematic .oc-halo{mix-blend-mode:screen}.oc-playing .oc-cinematic-backdrop,.oc-settled .oc-cinematic-backdrop{animation:oc-camera-drift 18s ease-in-out infinite alternate}.oc-playing .oc-cap .oc-cinematic-backdrop,.oc-playing .oc-diploma .oc-cinematic-backdrop{animation:oc-camera-rise 9s ease both}.oc-playing .oc-moon .oc-cinematic-backdrop,.oc-playing .oc-balloon .oc-cinematic-backdrop{animation:oc-camera-clouds 12s ease both}.oc-gift .oc-cinematic-backdrop{background-position:46% center;filter:hue-rotate(-7deg)}.oc-balloons .oc-cinematic-backdrop{filter:hue-rotate(9deg)}.oc-laurel .oc-cinematic-backdrop{filter:sepia(.15)}.oc-mobile .oc-cinematic-backdrop{filter:hue-rotate(-11deg)}.oc-rosette .oc-cinematic-backdrop{filter:hue-rotate(9deg)}.oc-table .oc-cinematic-backdrop{filter:brightness(1.08)}.oc-opening .oc-opening-scene{background:var(--oc-paper)}.oc-opening-copy{z-index:4;text-shadow:0 1px 15px var(--oc-paper)}.oc-hero-scenery .oc-cinematic-shade{background:linear-gradient(to bottom,transparent 27%,color-mix(in srgb,var(--oc-paper) 20%,transparent) 45%,color-mix(in srgb,var(--oc-paper) 95%,transparent) 75%,var(--oc-paper))}@keyframes oc-camera-drift{from{transform:scale(1.035) translateY(0)}to{transform:scale(1.085) translateY(-1%)}}@keyframes oc-camera-rise{from{transform:scale(1.14) translateY(3%)}to{transform:scale(1.04) translateY(0)}}@keyframes oc-camera-clouds{from{transform:scale(1.12) translateY(2%)}to{transform:scale(1.04) translateY(-1%)}}
@media(prefers-reduced-motion:reduce){.oc-cinematic-backdrop{animation:none!important;transform:none;will-change:auto}}

body.oc-intro-open{overflow:hidden}@supports not (color:color-mix(in srgb,white,black)){.oc-cinematic-shade,.oc-hero-scenery .oc-cinematic-shade{background:linear-gradient(transparent 30%,var(--oc-paper) 83%)}.oc-opening .intro-skip{background:var(--oc-paper);border-color:var(--oc-gold)}.oc-curtain{background:var(--oc-paper)}}

.phone-tour-paused .oc-scene *{animation-play-state:paused!important}
