:root{--header:64px;--olive:#495b36;--ink:#36472c;--gold:#ad8d43;--paper:#fffdf5}html{scroll-padding-top:calc(var(--header) + 20px)}.site-header{position:fixed;z-index:40;inset:0 0 auto;min-height:var(--header);padding:env(safe-area-inset-top) max(14px,env(safe-area-inset-right)) 0 max(14px,env(safe-area-inset-left));background:#344529;color:#fffdf3;display:flex;align-items:center;justify-content:space-between;box-shadow:0 1px 0 #b59b6277}.brand{display:flex;align-items:center;gap:9px;color:inherit;text-decoration:none;min-height:64px;font-size:1rem}.brand-seal{font-size:1.1rem;letter-spacing:.02em;border:1px solid #c6b37f;border-radius:50%;width:35px;height:35px;display:grid;place-items:center}.header-actions{display:flex;align-items:center;gap:5px}.site-header .sound-toggle{position:static;min-width:0;min-height:44px;padding:8px;font-size:.6875rem;background:transparent;color:#fffdf3;border:0;box-shadow:none}.site-header #menu-open{font-size:1.5rem;width:44px;height:44px;background:none;border:0;color:#fffdf3}.site-header a:focus-visible,.site-header button:focus-visible{outline-color:#e5cf91}.skip-link{z-index:50}
#site-menu{position:fixed;inset:calc(var(--header) + env(safe-area-inset-top) + 12px) 12px auto auto;margin:0;width:min(360px,calc(100vw - 24px));padding:42px 30px 28px;border:1px solid #b9a366;background:#fffdf5;color:#344529}#site-menu::backdrop{background:#1a291bbb}#site-menu nav{display:flex;flex-direction:column}#site-menu nav a{padding:13px 0;font-size:1.75rem;color:#344529;text-decoration:none;border-top:1px solid #d5c9a9}#menu-close{position:absolute;top:4px;right:5px;height:44px;width:44px;background:none;border:0;font-size:1.8rem;color:#344529}
.opening-story{height:220vh;height:220svh;padding-top:0}.sticky-scene{top:calc(var(--header) + env(safe-area-inset-top));height:calc(100vh - var(--header) - env(safe-area-inset-top));height:calc(100svh - var(--header) - env(safe-area-inset-top));background:#ece6d8;perspective:none}.envelope-scene{filter:none;perspective:none;width:min(100vw,calc((100svh - var(--header) - 110px)*.5625));flex:none}.hero-intro{position:absolute;z-index:9;top:8px;left:0;right:0;text-align:center;transition:none;pointer-events:none}.hero-intro p{font-size:1.3rem;margin:0 0 5px;line-height:1.25}.hero-intro a{display:inline-flex;align-items:center;min-height:44px;font:.75rem var(--sans);color:#3e4d30;pointer-events:auto;text-underline-offset:4px}.envelope-scene{margin-top:48px}.moving-flap{transform-origin:50% 0;backface-visibility:visible;-webkit-backface-visibility:visible;filter:none}.flap-image{clip-path:polygon(0 0,100% 0,50.56% 54.06%)}.envelope-body{clip-path:polygon(0 0,50.56% 54.06%,100% 0,100% 100%,0 100%);filter:none}.moving-seal{clip-path:ellipse(17.78% 10.31% at 50.56% 53.125%)}.photo-layer{object-fit:fill}.exact-poster{object-fit:fill}.scroll-cue{bottom:7px;padding:7px 14px;background:#fffdf4dd;font-size:.6875rem;pointer-events:none}.emerging-letter{background:#fffdf5 url('botanical-paper.jpg') center/cover}.invitation-section{scroll-margin-top:calc(var(--header) + 20px)}
.invitation-flow{max-width:900px;background:#fffdf5}.invitation-section.invitation{background:#fffef9}.invitation-section.invitation:before{opacity:.7}.invitation .section-inner:before{border-color:#ad8d43a6}.names{color:#3d522e}.names em{color:#ad8d43}.intro{color:#55654a}
#fecha{background:#415732;color:#fffdf3}#fecha:before{opacity:.1;mix-blend-mode:screen;background-size:100% 100%}#fecha .eyebrow,#fecha .script-heading,#fecha .date-feature>span,#fecha .date-feature small{color:#fffdf0}#fecha .script-heading{color:#e1cf9f}#fecha .calendar{color:#fffdf3}#fecha .weekday{color:#d1dabc}#fecha .chosen{background:#f8f1db;color:#3e512d;border-color:#d7bc77}#fecha .section-inner{padding:95px 40px 100px}#fecha .date-feature>span{font-size:8rem}#fecha .date-feature small{padding:0 0 22px;border-bottom:1px solid #b5a06b}
.details{background:#fffef9}.details:before{opacity:.17;background-size:100% 100%}.details h2{color:#425632}.details .section-inner{align-items:stretch;max-width:680px;margin:auto}.details .eyebrow,.details h2{text-align:center}.event{max-width:none;text-align:left;display:grid;grid-template-columns:1fr auto;gap:6px 20px;border-radius:0;background:#fffef5;padding:30px;border:1px solid #c2b27b;border-left:4px solid #64794b;box-shadow:0 7px 20px #3e4e2810}.event+.event{padding:30px;border-top:1px solid #c2b27b}.event-index{grid-column:1;grid-row:1;color:#8b7847;margin:0}.event .time{grid-column:2;grid-row:1/3;font-size:2rem;align-self:center;color:#8c7038}.event h3{grid-column:1;grid-row:2;font-size:1.65rem}.event .pending{grid-column:1/-1;margin:5px 0 14px;max-width:none}.event .directions{grid-column:1/-1;justify-self:start;background:#435b33;color:#fffef3;border-color:#435b33}.event .directions:hover{background:#304625}.dress{align-self:center;max-width:none;margin-top:25px;border-top:1px solid #cbb987;padding-top:30px}.dress>p:last-child{text-align:center}.closing{background:#e9eddf}.closing:before{opacity:.15}.closing .section-inner{min-height:740px}.closing h2{color:#344a2a}.photo-veil{background:linear-gradient(#fffef9,#eff1e1a8 25%,#e9eddf66 48%,#e9eddfdf 78%,#e9eddf)}.address-panel{background:#fffdf5;color:#344529}.address-panel .directions{background:#435b33;color:white}
@media(min-width:800px){.opening-story{height:255svh}.envelope-scene{width:min(520px,calc((100svh - var(--header) - 105px)*.5625))}.brand{font-size:1.2rem}.site-header{padding-left:30px;padding-right:30px}.hero-intro{top:12px}.details .section-inner{max-width:760px}.event{padding:35px 40px}.event+.event{padding:35px 40px}}
@media(max-width:360px){.brand{font-size:.85rem;gap:6px}.brand-seal{width:30px;height:30px;font-size:.95rem}.site-header{padding-left:10px;padding-right:7px}.site-header .sound-toggle{font-size:.625rem;padding:5px}.event,.event+.event{padding:25px 18px;column-gap:10px}.event h3{font-size:1.4rem}.event .time{font-size:1.75rem}.event .time span{font-size:1rem}}
@media(prefers-reduced-motion:reduce){.opening-story{height:100vh;height:100svh}.sticky-scene{position:relative;top:var(--header)}.hero-intro{opacity:1!important}.exact-poster{opacity:1!important}}
.opening-story.art-failed{height:100vh;height:100svh}.art-failed .sticky-scene{top:var(--header)}

/* Timed opening: a single normal-flow screen, independent of scroll. */
.opening-story,.opening-story.art-failed{height:100vh;height:100svh;padding-top:calc(var(--header) + env(safe-area-inset-top))}
.opening-story .sticky-scene{position:relative;top:0;height:calc(100vh - var(--header) - env(safe-area-inset-top));height:calc(100svh - var(--header) - env(safe-area-inset-top))}
@media(prefers-reduced-motion:reduce){.opening-story .exact-poster{opacity:0!important}.opening-story .emerging-letter{visibility:visible;opacity:1;transform:translateY(-2%)}.opening-story .hero-intro{visibility:hidden}.opening-story .scroll-cue{opacity:1!important}}

@font-face{font-family:'Invitation Calligraphy';src:url('fonts/GreatVibes-Regular.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
.names,.emerging-letter h1{font-family:'Invitation Calligraphy',cursive;font-weight:400;font-style:normal;letter-spacing:0;color:#59633b;line-height:1.18;padding:8px 15px;font-size:clamp(3.7rem,15vw,6.5rem)}
.names em,.emerging-letter h1 i{font-family:inherit;font-style:normal;font-size:.58em;line-height:1.15;color:inherit;margin:4px 0}
.emerging-letter h1{font-size:clamp(2.5rem,12.8vw,4.5rem);margin:10px -12px;padding:8px 10px}
@media(max-height:500px) and (min-width:600px){.emerging-letter h1{font-size:1.7rem;line-height:.95}.emerging-letter{padding:8px}.emerging-letter .eyebrow{font-size:.45rem;margin:0}.emerging-letter .date-line{font-size:.4rem;letter-spacing:.04em}}

#replay-opening{position:absolute;z-index:12;bottom:45px;left:50%;transform:translateX(-50%);min-height:44px;padding:10px 18px;border:1px solid #899374;background:#fffdf5ed;color:#435b33;border-radius:3px;font:.75rem var(--sans);white-space:nowrap}#replay-opening[hidden]{display:none}
.opening-story.replay-motion:not(.art-failed) .exact-poster{opacity:0!important}.opening-story.replay-motion:not(.art-failed)[data-progress="0.000"] .exact-poster{opacity:1!important}
.opening-story.replay-motion:not(.art-failed) .moving-flap,.opening-story.replay-motion:not(.art-failed) .moving-seal,.opening-story.replay-motion:not(.art-failed) .emerging-letter,.opening-story.replay-motion:not(.art-failed) .envelope-body,.opening-story.replay-motion:not(.art-failed) .envelope-lining{visibility:visible}
.opening-story.replay-motion .hero-intro{opacity:var(--intro-opacity,0)!important}

/* A brief sticky runway keeps the automatic opening visible after the first scroll. */
.opening-story{height:140vh;height:140svh}.opening-story .sticky-scene{position:sticky;top:calc(var(--header) + env(safe-area-inset-top))}
.opening-story.art-failed{height:100vh;height:100svh}.opening-story.art-failed .sticky-scene{position:relative;top:0}
@media(prefers-reduced-motion:reduce){.opening-story{height:100vh;height:100svh}.opening-story .sticky-scene{position:relative;top:0}}

[hidden],.site-header[hidden],.invitation-flow[hidden],.opening-story[hidden]{display:none!important}
body.welcome{overflow:hidden;height:100vh;height:100svh}.welcome .opening-story{height:100vh;height:100svh;padding:0}.welcome .opening-story .sticky-scene{position:relative;top:0;height:100vh;height:100svh;padding:0}.welcome .envelope-scene{margin-top:0;width:min(100vw,calc((100svh - 110px)*.5625))}.welcome .hero-intro{top:max(12px,env(safe-area-inset-top));opacity:1!important;visibility:visible}.welcome .hero-intro p{font-size:1.45rem}.welcome .is-opening .hero-intro{visibility:hidden}
#open-invitation{position:absolute;z-index:12;bottom:max(20px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);min-height:52px;padding:14px 30px;white-space:nowrap;border:1px solid #b9a16a;border-radius:3px;background:#435632;color:#fffdf3;font:1rem var(--sans);box-shadow:0 4px 18px #23361925}#open-invitation:disabled{opacity:.85;cursor:wait}
body:not(.welcome) main{padding-top:calc(var(--header) + env(safe-area-inset-top))}
@media(prefers-reduced-motion:reduce){.welcome .opening-story .exact-poster{opacity:1!important}.welcome .emerging-letter{visibility:hidden}.welcome .hero-intro{visibility:visible}}
body.welcome{position:fixed;inset:0;width:100%}
