@font-face{font-family:Cormorant;src:url('/assets/fonts/cormorant-garamond-latin-300-normal.woff2') format('woff2');font-style:normal;font-weight:300;font-display:swap}@font-face{font-family:Cormorant;src:url('/assets/fonts/cormorant-garamond-latin-400-normal.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Cormorant;src:url('/assets/fonts/cormorant-garamond-latin-500-normal.woff2') format('woff2');font-style:normal;font-weight:500;font-display:swap}@font-face{font-family:Cormorant;src:url('/assets/fonts/cormorant-garamond-latin-400-italic.woff2') format('woff2');font-style:italic;font-weight:400;font-display:swap}@font-face{font-family:Italianno;src:url('/assets/fonts/italianno-latin-400-normal.woff2') format('woff2');font-display:swap}@font-face{font-family:Nimbus;src:url('/assets/nimbus.woff') format('woff');font-display:swap}
:root{--green:#071b12;--gold:#d6b481;--paper:#f3e6cf;--ink:#302a1c;--unit:calc(100vw / 1024);font-synthesis:none;scroll-behavior:smooth}*{box-sizing:border-box}body{margin:0;background:var(--green);color:var(--paper);font:400 16px/1.45 Cormorant,Georgia,serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button{color:inherit}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.symbols{position:absolute;width:0;height:0;overflow:hidden}p,h1,h2,blockquote{margin:0}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:5px}.page{overflow:clip}.hero,.story,.invitation,.wedding-details,.blessing{position:relative}.scene{position:absolute;inset:0;z-index:0;background-image:url('/assets/reference-art.webp');background-size:100vw auto;background-repeat:no-repeat;background-position:center calc(var(--scene-y,0)*var(--unit)*-1);pointer-events:none}.hero{height:calc(600*var(--unit));min-height:540px;--scene-y:0;isolation:isolate}.hero-scene{animation:scene-open 2.7s ease both;transform-origin:65% 40%}.hero-shade{position:absolute;inset:0 0 17%;background:linear-gradient(90deg,rgba(0,8,4,.18),transparent 75%);pointer-events:none}.header{position:absolute;inset:0 0 auto;display:flex;align-items:center;z-index:5;padding:calc(17*var(--unit)) 2.5vw 0 9.6vw}.monogram{font-weight:300;font-size:clamp(24px,3.1vw,48px);line-height:.75;color:var(--gold);width:48px;letter-spacing:-.12em}.monogram span{display:block;margin-left:13px}nav{display:flex;align-items:center;gap:2.45vw;margin-left:8.05vw}nav a,nav button{position:relative;border:0;background:none;padding:8px 0;font:400 clamp(12px,1.02vw,16px)/1 Cormorant,serif;text-transform:uppercase;letter-spacing:.07em;white-space:nowrap}nav a.active{color:var(--gold)}nav a.active:after{content:'';position:absolute;bottom:2px;left:0;right:0;height:1px;background:var(--gold)}.music-button{margin-left:auto;display:flex;align-items:center;gap:8px;border:1px solid #e5dbc270;border-radius:24px;background:#18302133;backdrop-filter:blur(8px);min-height:36px;padding:6px 14px;font:12px/1 Cormorant,serif;text-transform:uppercase;white-space:nowrap;letter-spacing:.06em}.music-button svg{width:17px;height:17px}.music-button[aria-pressed=true]{background:#d6b48122;border-color:var(--gold)}.menu-toggle{display:none}.hero-content{position:absolute;top:calc(96*var(--unit));left:14.15%;width:62%}.hero-kicker{font:clamp(12px,1.05vw,16px)/1.55 Nimbus,Arial,sans-serif;letter-spacing:.28em;text-transform:uppercase;width:150px}.small-rule{display:block;width:35px;height:1px;background:var(--gold)}.hero-content>.small-rule{margin:10px 0 13px}.couple-names{font-size:clamp(56px,6.52vw,108px);font-weight:300;line-height:.94;letter-spacing:-.035em}.couple-names>span{display:block;white-space:nowrap}.couple-names>span+span{margin-top:.07em}.couple-names b{font-weight:300;color:#e3bf81}.couple-names em{font-family:Italianno,cursive;font-style:normal;font-size:1.38em;line-height:.65;vertical-align:baseline;color:#dec69c}.hero-tagline{font-size:clamp(12px,1vw,16px);letter-spacing:.2em;text-transform:uppercase;margin:21px 0 20px}.countdown{display:flex;gap:9px}.time-box{display:flex;flex-direction:column;justify-content:center;align-items:center;min-width:82px;width:calc(84*var(--unit));height:calc(73*var(--unit));min-height:73px;border:1px solid #d6b481b0;border-radius:6px;background:linear-gradient(145deg,#73653d33,#05170e55);box-shadow:inset 0 0 13px #ffe4a608;backdrop-filter:blur(6px)}.time-value{font-size:clamp(32px,3.15vw,54px);font-variant-numeric:tabular-nums;line-height:1}.time-label{font-size:clamp(14px,1.16vw,18px)}#countdownMessage:empty{display:none}#countdownMessage{margin-top:10px}.hero-date{display:flex;align-items:center;gap:10px;margin-top:15px;font-size:clamp(14px,1.4vw,22px);letter-spacing:.1em;text-transform:uppercase}.hero-date svg{width:17px;height:17px}.hero-date i{font-style:normal;opacity:.7}.hero-note{position:absolute;right:4.4%;top:68%;font:clamp(28px,3.7vw,60px)/.78 Italianno,cursive;transform:rotate(-9deg);text-align:center}.hero-note span{display:block;margin-top:12px}.hero-note i{display:block;width:50px;height:1px;background:#d6b48166;margin:12px auto 0}.scroll-prompt{position:absolute;left:50%;bottom:calc(33*var(--unit));transform:translateX(-50%);text-align:center;font:12px/1.6 Nimbus,Arial,sans-serif;letter-spacing:.17em;color:var(--ink)}.mouse{display:block;width:12px;height:21px;border:1px solid #625542;border-radius:10px;margin:0 auto 10px}.mouse:after{content:'';display:block;width:1px;height:5px;background:#625542;margin:4px auto}.transition-caption{position:absolute;right:1.7%;bottom:calc(37*var(--unit));color:#605540;font:12px/1.7 Nimbus,Arial,sans-serif;letter-spacing:.17em;text-align:right;padding-right:40px}.transition-caption span{position:absolute;right:0;top:15px;width:24px;height:1px;background:#a28b5d}.eyebrow{font:clamp(12px,1vw,16px)/1.4 Nimbus,Arial,sans-serif;text-transform:uppercase;letter-spacing:.23em}.script{display:block;font:1.48em/.72 Italianno,cursive;color:#655039}.story{height:calc(298*var(--unit));--scene-y:600;color:var(--ink)}.story-copy{position:absolute;left:53.75%;top:calc(17*var(--unit));width:31%}.story h2{font-size:clamp(36px,4.2vw,68px);font-weight:400;line-height:1.1;margin:7px 0 24px;white-space:nowrap}.story h2 .script{margin:4px 0 0 10px}.story .small-rule{margin-bottom:12px}.story-copy>p:not(.eyebrow){font-size:clamp(16px,1.35vw,22px);line-height:1.35;margin:0 0 21px}.button{display:inline-flex;align-items:center;justify-content:center;gap:14px;min-height:38px;padding:9px 21px;border:1px solid #ceb58a99;border-radius:30px;font:12px/1.2 Nimbus,Arial,sans-serif;letter-spacing:.18em;text-transform:uppercase;transition:transform .25s,filter .25s}.button:hover{filter:brightness(1.12);transform:translateY(-2px)}.button svg{width:15px;height:15px}.button-green{background:linear-gradient(110deg,#1c3e2b,#08251a);color:var(--paper);box-shadow:0 4px 12px #1c321220}.button-gold{background:linear-gradient(110deg,#f0d5a8,#c89f66);color:#23321b;box-shadow:0 4px 12px #0003}.story-verse{position:absolute;right:2.5%;bottom:32px;width:13%;text-align:center}.story-verse p{font:12px/1.55 Nimbus,Arial,sans-serif;text-transform:uppercase;letter-spacing:.22em;margin-bottom:13px}.story-verse>span{font-size:12px;white-space:nowrap}.invitation{height:calc(312*var(--unit));background:var(--green)}.invitation-stage{position:absolute;inset:0;--scene-y:898}.invitation-copy{position:absolute;left:5.7%;top:calc(44*var(--unit));width:34%}.invitation h2{font-size:clamp(40px,4.8vw,80px);line-height:1;font-weight:400;margin:6px 0 23px;white-space:nowrap}.invitation h2 .script{font-size:.90em;margin-top:10px;line-height:.8;color:#ead7b7}.invitation-copy>p:not(.eyebrow){font-size:clamp(16px,1.36vw,22px);line-height:1.25;max-width:81%;margin-bottom:18px}.printed-card{position:absolute;left:46.9%;top:28%;width:19.5%;height:48%;transform:rotate(-11deg);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#483322;font-size:clamp(18px,2.12vw,35px);line-height:1.1;text-align:center}.printed-card span{white-space:nowrap}.printed-card em{font:1.4em/.8 Italianno,cursive;margin:2px 0}.printed-card small{font-size:clamp(12px,1vw,16px);line-height:1.6;text-transform:uppercase;margin-top:20px;letter-spacing:.08em}.seal-mark{position:absolute;left:71.5%;top:46%;width:5.3%;color:#64513a;font-size:clamp(16px,2.05vw,34px);line-height:.72;text-align:center;transform:rotate(-10deg);opacity:.85}.invitation-values{position:absolute;right:5.75%;bottom:calc(26*var(--unit));font:12px/1.9 Nimbus,Arial,sans-serif;letter-spacing:.2em;text-transform:uppercase}.invitation-values .small-rule{margin-top:13px}.wedding-details{height:calc(178*var(--unit));--scene-y:1210;color:var(--ink)}.details-content{position:absolute;left:34.5%;top:calc(38*var(--unit));width:63.5%}.details-content h2{font-size:clamp(30px,3.1vw,50px);font-weight:400;line-height:1.1;margin:4px 0 24px}.details-grid{display:grid;grid-template-columns:1fr 1fr 1.13fr 1.28fr}.detail{display:flex;align-items:center;gap:14px;padding:0 16px;border-right:1px solid #a089564d}.detail:first-child{padding-left:0}.detail:last-child{border-right:0}.detail svg{width:27px;height:27px;color:#705b37}.detail p{font-size:clamp(14px,1.1vw,19px);line-height:1.25}.detail strong{font-weight:500}.blessing{height:calc(148*var(--unit));--scene-y:1388}.blessing-content{position:relative;text-align:center;padding-top:calc(33*var(--unit));width:60%;margin:auto}.blessing blockquote{font-style:italic;font-size:clamp(20px,1.85vw,32px);line-height:1.2;margin-bottom:12px}.blessing p{font:12px/1.4 Nimbus,Arial,sans-serif;text-transform:uppercase;letter-spacing:.2em;margin-bottom:14px}.blessing .small-rule{margin:auto}.intro-arrival{animation:text-open 1.5s both}.hero-kicker{animation-delay:.2s}.hero-content>.small-rule{animation-delay:.3s}.couple-names{animation-delay:.45s}.hero-tagline{animation-delay:.65s}.countdown{animation-delay:.8s}.hero-date{animation-delay:1s}.hero-note{animation-delay:1.2s}.js .arrival{opacity:0;translate:0 25px;transition:opacity 1.1s,translate 1.1s}.js .arrival.in-view{opacity:1;translate:0 0}dialog{width:min(92vw,590px);max-height:90svh;overflow:auto;padding:15px;border:0;background:#f4e8d3;color:var(--ink);box-shadow:0 20px 90px #0007}dialog::backdrop{background:#001108c9;backdrop-filter:blur(7px)}.invitation-paper,.simple-dialog{border:1px solid #bc9b6477;padding:40px 28px;text-align:center}.dialog-close{position:absolute;right:17px;top:17px;width:44px;height:44px;border:0;background:transparent;color:#604b2e;font-size:32px;line-height:1}.cross{font-size:38px;color:#a98851;margin-bottom:20px}dialog h2{font-size:44px;font-weight:400;line-height:1.1;margin:15px 0 35px}dialog h2 .script{font-size:1.15em;margin-top:9px}dialog p:not(.eyebrow){font-size:20px;line-height:1.45;margin-bottom:24px}.dialog-names{font-size:35px!important;line-height:1.2!important}.dialog-names .script{margin:7px 0}.dialog-date{letter-spacing:.08em}dialog .small-rule{margin:0 auto 24px}dialog #calendarStatus{font:14px/1.4 Nimbus,Arial,sans-serif;margin:15px 0 0}dialog #calendarStatus:empty{display:none}.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:20;background:#f4e8d3;color:#302a1c;font:14px/1.4 Nimbus,Arial,sans-serif;padding:12px 20px;border-radius:24px;text-align:center;box-shadow:0 5px 30px #0005}.toast:empty{display:none}.skip-link{position:fixed;top:12px;left:12px;z-index:30;padding:10px 15px;color:var(--ink);background:var(--paper);transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.no-script{position:fixed;bottom:0;background:var(--paper);color:var(--ink);padding:10px;text-align:center;width:100%}@keyframes scene-open{from{transform:scale(1.055);filter:brightness(.65)}to{transform:scale(1);filter:brightness(1)}}@keyframes text-open{from{opacity:0;translate:0 18px}to{opacity:1;translate:0 0}}
@media(min-width:1700px){.button{min-height:46px;font-size:14px}.hero-tagline{margin:28px 0}.story-copy>p:not(.eyebrow){margin-bottom:28px}}
@media(min-width:768px) and (max-width:1023px){.header{padding-left:6vw}nav{margin-left:6vw;gap:2vw}.hero-content{top:75px;left:12vw}.couple-names{font-size:6.3vw}.hero-kicker{font-size:12px;line-height:1.35}.story{height:320px}.story-copy{left:50%;width:34%;top:16px}.story h2{font-size:34px}.invitation{height:325px}.invitation-copy{top:36px;width:38%}.wedding-details{height:195px}.details-content{left:32%;width:66%;top:30px}.detail{gap:8px;padding:0 8px}.blessing{height:160px}}
@media(max-width:767px){.header{padding:22px 24px}.monogram{font-size:34px}.music-button{min-height:42px;margin-left:auto;font-size:12px}.menu-toggle{display:flex;order:3;flex-direction:column;justify-content:center;gap:6px;width:44px;height:44px;padding:11px;border:1px solid #e5dbc270;border-radius:50%;background:#18302155;margin-left:10px}.menu-toggle span{display:block;width:20px;height:1px;background:var(--paper)}nav{display:none;position:absolute;left:24px;right:24px;top:88px;margin:0;padding:22px;background:#09251eef;backdrop-filter:blur(16px);border:1px solid #d6b48160;box-shadow:0 12px 30px #0003;border-radius:4px}nav.is-open{display:flex;align-items:flex-start;flex-direction:column;gap:14px}nav a,nav button{font-size:16px;padding:7px}.hero{height:auto;min-height:max(810px,100svh);padding:135px 25px 150px}.hero .scene{background-size:auto 256%;background-position:58% top}.hero-shade{inset:0;background:linear-gradient(90deg,#00120877,#071b1222),linear-gradient(0deg,#f1e3c7 0%,transparent 22%)}.hero-content{position:relative;top:auto;left:auto;width:100%}.hero-kicker{font-size:12px;line-height:1.5}.hero-content>.small-rule{margin:12px 0 19px}.couple-names{font-size:clamp(43px,10.5vw,78px)}.hero-tagline{font-size:12px;letter-spacing:.13em;line-height:1.8;max-width:325px;margin:24px 0 22px}.countdown{width:100%;max-width:360px;gap:8px}.time-box{width:calc((100% - 24px)/4);min-width:0;height:76px;min-height:0}.time-value{font-size:36px}.time-label{font-size:14px}.hero-date{font-size:14px;gap:8px;margin-top:20px;letter-spacing:.07em}.hero-note{top:auto;bottom:108px;right:27px;font-size:31px}.scroll-prompt{bottom:32px}.transition-caption{display:none}.story{height:auto;min-height:540px;padding:210px 28px 42px;background:#f3e6cf}.story .scene{background-size:auto 515.44%;background-position:20% 48.465%;opacity:.7;mask-image:linear-gradient(#000,transparent 95%)}.story:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(0deg,#f3e6cf 14%,#f3e6cf33 80%,transparent)}.story-copy{position:relative;z-index:1;left:auto;top:auto;width:100%;max-width:460px}.story h2{font-size:43px;margin-bottom:27px}.story h2 .script{margin-top:8px}.story-copy>p:not(.eyebrow){font-size:18px;line-height:1.45;max-width:335px;margin-bottom:24px}.story-verse{display:none}.invitation{height:730px;overflow:hidden}.invitation-stage{width:1050px;height:320px;left:calc(50% - 590px);top:385px;--unit:calc(1050px / 1024)}.invitation-stage .scene{background-size:1050px auto}.invitation-copy{left:28px;right:28px;top:44px;width:auto}.invitation h2{font-size:46px;margin-bottom:24px}.invitation h2 .script{font-size:.95em}.invitation-copy>p:not(.eyebrow){font-size:18px;line-height:1.45;max-width:320px}.printed-card{font-size:24px}.printed-card small{font-size:12px}.seal-mark{font-size:24px}.invitation-values{display:none}.wedding-details{height:auto;min-height:395px;padding:40px 26px 42px;background:#f3e6cf}.wedding-details .scene{background-size:auto 862.92%;background-position:10% 89.102%;opacity:.18}.details-content{position:relative;left:auto;top:auto;width:100%}.details-content h2{font-size:36px;margin-bottom:30px}.details-grid{grid-template-columns:1fr 1fr;gap:24px 16px}.detail{border:0;padding:0;gap:11px;align-items:flex-start}.detail p{font-size:16px}.detail svg{width:26px;height:26px}.blessing{height:auto;min-height:230px;padding:45px 23px 35px}.blessing .scene{background-size:auto 1037.84%;background-position:right bottom;opacity:.8}.blessing-content{width:100%;padding:0}.blessing blockquote{font-size:25px;line-height:1.25;margin-bottom:18px}.blessing p{font-size:12px;margin-bottom:18px}.invitation-paper,.simple-dialog{padding:44px 18px 28px}dialog h2{font-size:36px}dialog p:not(.eyebrow){font-size:18px}.dialog-names{font-size:30px!important}}
@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js .arrival{opacity:1;translate:none}.hero-scene{transform:none!important;translate:none!important}}
/* Reference proportions at the original 1024px canvas size. */
@media(min-width:768px){.hero-kicker{font-size:clamp(9px,.88vw,15px)}.hero-tagline{font-size:clamp(10px,.98vw,16px)}.eyebrow{font-size:clamp(9px,.88vw,15px)}.story-copy>p:not(.eyebrow){font-size:clamp(14px,1.35vw,22px)}.button{min-height:32px;font-size:clamp(9px,.88vw,14px);padding:8px 21px}.story-verse p{font-size:clamp(9px,.88vw,14px)}.story-verse>span{font-size:clamp(8px,.78vw,12px)}.invitation h2{font-size:clamp(38px,4.5vw,78px)}.invitation-copy>p:not(.eyebrow){font-size:clamp(14px,1.36vw,22px)}.invitation-values{font-size:clamp(9px,.88vw,14px)}.detail p{font-size:clamp(11px,1.1vw,19px)}.detail{gap:14px;padding:0 16px}.scroll-prompt,.transition-caption{font-size:clamp(8px,.78vw,13px)}.blessing p{font-size:clamp(10px,.98vw,15px)}}
@media(min-width:768px){.hero .scene{background-size:100% 256%;background-position:center top}.story .scene{background-size:100% 515.436%;background-position:center 48.465%}.invitation-stage .scene{background-size:100% 492.308%;background-position:center 73.366%}.wedding-details .scene{background-size:100% 862.921%;background-position:center 89.102%}.blessing .scene{background-size:100% 1037.838%;background-position:center bottom}}
@media(min-width:768px) and (max-width:1023px){.hero{min-height:0}.hero-tagline{margin:17px 0}.story-copy{width:36%}.story-copy>p:not(.eyebrow){font-size:15px}.story h2{margin-bottom:25px}}

/* Keep the invitation readable without text selection or mobile long-press callouts. */
body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
/* Opening the seal focuses this reading heading; it is not an interactive control. */
#names:focus{outline:none}
