@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Manrope:wght@400;500;600&display=swap');
:root{--bg:#151614;--panel:#1c1d19;--paper:#e5decf;--ink:#ede7da;--muted:#aaa89b;--gold:#b6a27c;--line:#393a31;--serif:'Cormorant Garamond',Georgia,serif;--sans:Manrope,Arial,sans-serif;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:32px}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.8;-webkit-font-smoothing:antialiased}body.cover-locked{overflow:hidden}button,input,textarea,select{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.3;cursor:default}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--gold);outline-offset:6px}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:400}h2{font-family:var(--serif);font-size:clamp(44px,7.5vw,76px);line-height:1.05;letter-spacing:-1.5px}h2 em{font-weight:400;color:var(--gold)}.eyebrow{display:block;font-size:9px;letter-spacing:3px;font-weight:500;line-height:1.8;color:var(--gold)}.monogram{width:65px;filter:invert(85%) sepia(15%) saturate(470%) hue-rotate(355deg);height:auto}.section{padding:90px 26px;max-width:1000px;margin:auto}.section-heading{text-align:center;margin-bottom:38px}.section-heading h2{margin-top:19px}.section-heading p{color:var(--muted);font-size:12px;margin-top:20px}.muted{color:var(--muted)}.button{display:flex;align-items:center;justify-content:space-between;border:1px solid #68614d;background:transparent;color:var(--ink);min-height:52px;padding:12px 23px;font-size:11px;letter-spacing:1px;gap:30px}.button span{font-size:20px}.button.filled{background:var(--paper);color:#24251e;border-color:var(--paper)}.skip{position:fixed;top:-100px;left:20px;z-index:100;background:var(--paper);color:#111;padding:10px}.skip:focus{top:10px}.cover{position:fixed;inset:0;z-index:50;background:#161713;min-height:100svh;display:flex;align-items:center;justify-content:space-between;flex-direction:column;text-align:center;padding:calc(38px + env(safe-area-inset-top)) 28px calc(28px + env(safe-area-inset-bottom));transform-origin:left center;transition:transform 1.1s cubic-bezier(.7,0,.2,1),opacity .9s;overflow:hidden}.cover.opening{transform:perspective(1800px) rotateY(-75deg) translateX(-25%);opacity:0;pointer-events:none}.cover-photo{position:absolute;inset:0;background:url('assets/studio_stand_couple-720.jpg') center 42%/cover no-repeat;opacity:.65}.cover-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,16,13,.2),rgba(15,16,13,.1) 30%,rgba(15,16,13,.85) 75%,#11130f)}.cover-top,.cover-title,.cover-bottom{position:relative;z-index:1}.cover-top .monogram{margin:0 auto 22px;width:75px}.cover-top .eyebrow{color:#e6dfce}.cover-title{margin-top:auto;margin-bottom:20px}.cover-title h1{font-family:var(--serif);font-size:clamp(48px,12vw,85px);line-height:1.1;letter-spacing:-2px}.cover-title h1 span{font-style:italic;font-size:.7em;color:#c9b692}.cover-title p{font-family:var(--serif);font-style:italic;font-size:20px;color:#c1baac;margin-top:10px}.cover-bottom{width:100%;max-width:320px;margin-top:26px}.cover-bottom p{font-size:13px;margin:8px 0 20px}.cover-bottom .button{width:100%}.cover-bottom .cover-foot{font-size:7px;letter-spacing:2px;color:var(--muted);margin:22px 0 0}.masthead{height:80px;display:flex;align-items:center;justify-content:space-between;max-width:1200px;margin:auto;padding:0 24px}.masthead .monogram{width:45px}.masthead .eyebrow{font-size:7px;letter-spacing:2px}.tiny-link{font-size:10px;padding:12px 0}.hero{height:calc(100svh - 80px);min-height:570px;max-height:1040px;position:relative;margin:0 12px;overflow:hidden}.hero-image{position:absolute;inset:0}.hero-image:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.08) 25%,rgba(12,14,10,.15) 45%,rgba(12,14,10,.88))}.hero-image img{height:100%;width:100%;object-fit:cover;object-position:center 40%}.hero-content{position:absolute;bottom:100px;left:15px;right:15px;text-align:center}.hero-content .eyebrow{color:var(--ink)}.hero-content h2{font-size:clamp(52px,12vw,100px);margin-top:20px;letter-spacing:-2px}.hero-content h2 i{font-size:.65em;color:#d0be98}.hero-rule{height:1px;width:42px;background:var(--gold);margin:23px auto}.hero-content>p:last-child{font-size:8px;letter-spacing:2px}.scroll-note{position:absolute;bottom:25px;left:0;right:0;text-align:center;font-size:7px;letter-spacing:2px}.scroll-note span{display:block;font-size:20px;margin-top:8px}.invitation-note{text-align:center;max-width:650px}.invitation-note h2{margin:26px 0}.fine-line{display:block;width:1px;height:45px;background:var(--gold);margin:30px auto}.invitation-note p{font-size:13px;line-height:2.1;margin:0 auto 15px;max-width:440px}.couple{padding-top:15px}.couple-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px;position:relative}.portrait-image{aspect-ratio:2/3;background:#272821;overflow:hidden;margin-bottom:24px}.portrait-image img{width:100%;height:100%;object-fit:cover}.portrait h3{font-family:var(--serif);font-size:42px;line-height:1.2;margin-top:8px}.portrait .eyebrow{font-size:8px;letter-spacing:2px}.groom{padding-top:65px}.couple-amp{font-family:var(--serif);position:absolute;left:45%;top:50%;z-index:2;color:var(--gold);font-size:65px;font-style:italic;pointer-events:none}.event{border-top:1px solid var(--line);text-align:center}.event h2{margin:24px 0 38px}.event-details{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:32px 0}.date-block{padding-bottom:29px;border-bottom:1px solid var(--line)}.date-block p{font-family:var(--serif);font-size:28px;margin:12px 0 3px}.date-block .muted{font-size:11px}.venue-block{padding-top:29px}.venue-block h3{font-family:var(--serif);font-size:32px;margin:12px 0 3px}.venue-block p{font-size:11px;color:var(--muted)}.venue-block .button{margin:26px auto 2px;max-width:260px}.event-foot{margin-top:25px;color:var(--muted);font-family:var(--serif);font-size:20px;font-style:italic}.interlude{height:650px;max-height:90svh;position:relative;overflow:hidden;max-width:1000px;margin:auto}.interlude>img{height:100%;width:100%;object-fit:cover;object-position:center 35%}.interlude:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 45%,rgba(12,14,10,.9))}.interlude-text{position:absolute;bottom:55px;left:24px;right:24px;text-align:center;z-index:1}.interlude-text p{font-family:var(--serif);font-size:39px;margin-top:12px}.interlude-text em{color:var(--gold)}.album-section{padding-left:18px;padding-right:18px;overflow:hidden}.album-tabs{display:flex;justify-content:center;gap:18px;margin:35px 0 28px}.album-tabs button{background:none;border:0;border-bottom:1px solid transparent;padding:10px 0;color:var(--muted);font-size:9px;letter-spacing:.4px;min-height:44px}.album-tabs button.active{color:var(--ink);border-color:var(--gold)}.album-stage{padding:7px 8px 15px;perspective:1600px}.book{position:relative;width:100%;max-width:390px;aspect-ratio:3/4;margin:auto;background:#e5decf;box-shadow:4px 2px 0 #a8a18f,7px 4px 0 #57584b,10px 7px 0 #25271e,0 25px 45px #0008;touch-action:pan-y;outline-offset:18px!important;isolation:isolate}.book-right,.book-left{position:absolute;inset:0;overflow:hidden}.book-left{display:none}.album-page{position:absolute;inset:0;background:var(--paper);color:#3b3b30;padding:22px 22px 13px;display:flex;flex-direction:column;backface-visibility:hidden}.album-page .page-top{font-size:7px;letter-spacing:2px;display:flex;justify-content:space-between;margin-bottom:15px;color:#6a6558}.page-image{flex:1;min-height:0;overflow:hidden;background:#c9c1af}.page-image img{height:100%;width:100%;object-fit:cover}.album-page.landscape .page-image{display:flex;align-items:center;background:#d8cfbe}.album-page.landscape .page-image img{height:auto;object-fit:contain}.page-caption{display:flex;justify-content:space-between;align-items:center;padding-top:14px;font-family:var(--serif);font-size:19px;line-height:1.3}.page-caption span:last-child{font-family:var(--sans);font-size:8px;color:#756e5e}.book-spine{position:absolute;left:0;top:0;bottom:0;width:17px;background:linear-gradient(90deg,#0003,transparent);pointer-events:none;z-index:3}.book-cover{position:absolute;inset:0;z-index:5;background:linear-gradient(100deg,#11130f,#292b22 5%,#22241c 9%,#1b1d17);border:1px solid #494b38;padding:34px 20px 25px;display:flex;align-items:center;flex-direction:column;justify-content:space-between;transform-origin:left;box-shadow:inset 0 0 0 10px #1b1d17,inset 0 0 0 11px #51503b;color:var(--gold);transition:transform 1s cubic-bezier(.5,0,.2,1),opacity .8s}.book-cover .eyebrow{font-size:7px;letter-spacing:2px}.book-cover .monogram{width:100px;margin:auto}.book-cover-name{font-family:var(--serif);font-size:33px}.book-cover-name i{font-size:.8em}.cover-album-caption{font-size:6px;letter-spacing:2px;margin:10px 0 35px}.book-open-label{font-size:10px}.book-cover.open{transform:perspective(1000px) rotateY(-110deg);opacity:0;pointer-events:none}.flip-layer{position:absolute;inset:0;z-index:4;pointer-events:none;perspective:1200px;transform-style:preserve-3d}.flip-sheet{position:absolute;inset:0;transform-style:preserve-3d;transform-origin:left center;transform:rotateY(0deg);transition:transform .98s cubic-bezier(.4,0,.2,1);filter:drop-shadow(0 7px 7px #0005);will-change:transform}.flip-sheet.turn-forward{transform:rotateY(-180deg)}.flip-sheet.turn-back{transform-origin:left center;transform:rotateY(-180deg)}.flip-face{position:absolute;inset:0;overflow:hidden;backface-visibility:hidden;background:var(--paper)}.flip-face.front{transform:rotateY(0deg) translateZ(.5px)}.flip-face.back{transform:rotateY(180deg) translateZ(.5px)}.flip-face:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(31,29,22,.22),transparent 14%,transparent 82%,rgba(31,29,22,.12));opacity:.65}.flip-face.back:after{background:linear-gradient(270deg,rgba(31,29,22,.2),transparent 18%,transparent 82%,rgba(31,29,22,.08))}.album-controls{display:flex;align-items:center;justify-content:space-between;gap:10px;max-width:650px;margin:30px auto 0}.round-button{width:44px;height:44px;flex-shrink:0;background:transparent;border:1px solid #585846;border-radius:50%;font-size:20px;display:inline-flex;align-items:center;justify-content:center}.album-controls p{font-size:9px;letter-spacing:.8px;text-align:center;color:var(--muted)}.album-extras{display:flex;align-items:center;justify-content:space-between;max-width:650px;margin:19px auto 0;border-top:1px solid var(--line);padding-top:17px;gap:10px}.album-extras>span{font-size:7px;letter-spacing:1px;color:var(--muted)}.album-extras button{border:none;background:none;font-size:10px;padding:10px 0;min-height:44px}.rsvp{background:#1b1d18;max-width:780px}.rsvp h2{margin:24px 0}.rsvp>p{font-size:12px;color:var(--muted);line-height:2}.rsvp form{margin-top:35px}.rsvp label,.rsvp legend{font-size:11px;display:block;margin-bottom:9px}.rsvp input:not([type=radio]),.rsvp select,.rsvp textarea{display:block;width:100%;background:transparent;color:var(--ink);border:1px solid #484b3d;padding:14px;min-height:50px;border-radius:0;font-size:16px;margin-bottom:24px}.rsvp input::placeholder,.rsvp textarea::placeholder{color:#96988a;font-size:12px}.rsvp select option{background:var(--panel)}.rsvp fieldset{padding:0;margin:0 0 24px;border:0}.attendance-options{display:grid;grid-template-columns:1fr 1fr;gap:8px}.attendance-options label{position:relative;margin:0}.attendance-options input{position:absolute;left:14px;top:16px;accent-color:var(--gold);width:14px;height:14px;margin:0}.attendance-options span{display:block;padding:14px 8px 14px 36px;border:1px solid #484b3d;font-size:10px;min-height:50px}.attendance-options input:checked+span{border-color:var(--gold);background:#b6a27c0a}.optional{color:var(--muted)}.rsvp .button{width:100%}.form-note{font-size:10px;text-align:center;color:var(--muted);margin-top:14px}.closing{position:relative;min-height:720px;height:95svh;max-height:1000px;overflow:hidden;margin-top:70px}.closing-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:49% center}.closing:after{content:'';position:absolute;inset:0;background:linear-gradient(#151614bd,#15161430 50%,#151614ee)}.closing-content{position:relative;z-index:1;text-align:center;padding:60px 20px 0}.closing-content h2{font-size:48px;margin:20px 0}.closing-content p{font-size:11px;color:#dedacc}.closing-names{font-family:var(--serif);font-size:31px;margin-top:25px}.closing-content .monogram{margin:24px auto;width:48px}.closing-foot{position:absolute;bottom:110px;left:20px;right:20px;z-index:1;text-align:center;font-size:7px;letter-spacing:2px;color:#c0bdad}.bottom-nav{position:fixed;bottom:calc(14px + env(safe-area-inset-bottom));left:24px;right:24px;max-width:470px;margin:auto;z-index:20;background:#20221de8;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid #555441;display:flex;justify-content:space-around;align-items:center;height:58px;box-shadow:0 8px 35px #0003;transition:opacity .3s,transform .3s}.bottom-nav a{font-size:10px;min-height:48px;display:flex;align-items:center;padding:0 14px;gap:5px}.bottom-nav a:first-child{font-family:var(--serif);font-size:21px;color:var(--gold)}.nav-amp{font-size:14px;font-style:italic}.cover-locked .bottom-nav{opacity:0;transform:translateY(100px)}dialog{position:fixed;border:0;padding:55px 14px 20px;max-width:100vw;width:100vw;max-height:100dvh;height:100dvh;background:#11130ff5;color:var(--ink);overflow:auto}dialog::backdrop{background:#000d}dialog>img{max-height:calc(100dvh - 180px);max-width:100%;width:auto;object-fit:contain;margin:auto}dialog>p{text-align:center;font-family:var(--serif);font-size:22px;margin-top:12px}.dialog-close{position:fixed;right:18px;top:calc(12px + env(safe-area-inset-top));background:#151614;z-index:2}.dialog-nav{display:flex;justify-content:center;gap:25px;margin-top:12px}.reveal{opacity:1}.motion-ready .reveal:not(.visible){opacity:0;transform:translateY(20px)}.motion-ready .reveal{transition:opacity .8s,transform .8s}
@media(min-width:600px){.section{padding:110px 55px}.cover-photo{background-size:auto 100%;background-color:#181914}.cover-title{margin-bottom:30px}.hero{margin:0 28px}.hero-content{bottom:120px}.couple-grid{max-width:650px;margin:auto;gap:60px}.couple-amp{left:46%;font-size:90px}.portrait h3{font-size:52px}.event-details{display:grid;grid-template-columns:1fr 1fr;padding:40px 0}.date-block{border:0;border-right:1px solid var(--line);display:flex;justify-content:center;flex-direction:column;padding:0 20px}.venue-block{padding:0 20px}.album-section{padding-left:40px;padding-right:40px}.album-tabs{gap:35px}.album-tabs button{font-size:11px}.album-stage{padding:20px}.rsvp{padding:80px;max-width:700px}.closing-content h2{font-size:66px}.closing-content{padding-top:80px}.closing{margin-top:100px}.masthead{padding:0 40px}.masthead .eyebrow{font-size:9px}.masthead .monogram{width:55px}}
@media(min-width:900px) and (orientation:landscape){.book{max-width:780px;aspect-ratio:3/2}.book-left{display:block;right:50%}.book-right{left:50%}.book-spine{left:calc(50% - 10px);width:20px;background:linear-gradient(90deg,transparent,#0003,transparent)}.flip-layer{left:50%}.book-cover{left:50%}.book:has(.book-cover:not(.open)){background:#20221b}.book:has(.book-cover:not(.open)) .book-left{opacity:.15}.hero{max-width:1000px;margin:auto;min-height:720px}.hero-image img{object-position:center 45%}.hero-content h2{font-size:100px}.closing-photo{object-position:center 60%}.closing{max-width:1200px;margin-left:auto;margin-right:auto}.album-section{max-width:1100px}}
@media(max-height:700px){.cover{padding-top:20px;padding-bottom:20px}.cover-top .monogram{width:50px;margin-bottom:12px}.cover-title h1{font-size:48px}.cover-title p{font-size:17px}.cover-bottom{margin-top:10px}.cover-bottom p{margin:5px 0 12px}.cover-bottom .cover-foot{margin-top:12px}.cover-title{margin-bottom:8px}}
.album-intro{align-items:center;justify-content:center;text-align:center;gap:35px}.album-intro .eyebrow{color:#73684c;font-size:8px}.album-intro p{font-family:var(--serif);font-size:36px;line-height:1.2;font-style:italic}.album-intro>span:last-child{font-family:var(--serif);font-size:24px}.rsvp [hidden]{display:none}
.cover{justify-content:space-between;padding:calc(7svh + env(safe-area-inset-top)) 28px calc(6svh + env(safe-area-inset-bottom));cursor:pointer;touch-action:pan-y;user-select:none;-webkit-user-select:none;transform-origin:center top;transition:transform 1.05s cubic-bezier(.72,0,.18,1),opacity .9s,filter .9s}.cover:focus-visible{outline:2px solid var(--gold);outline-offset:-9px}.cover-photo{background-image:url('assets/studio_stand_couple-720.jpg');background-position:center 42%;background-size:cover;opacity:.82;transform:scale(1);transition:transform 1.4s cubic-bezier(.2,.65,.3,1)}.cover-shade{background:linear-gradient(180deg,rgba(13,14,12,.55),rgba(18,19,16,.08) 30%,rgba(18,19,16,.15) 48%,rgba(15,16,13,.78) 76%,#11130f)}.cover-top{margin:auto auto 0;display:flex;flex-direction:column;align-items:center;gap:18px}.cover-top .monogram{width:52px;margin:0;filter:invert(83%) sepia(12%) saturate(600%) hue-rotate(355deg)}.cover-top .eyebrow{font-size:8px;letter-spacing:3.2px}.cover-title{margin:auto 0 4vh;max-width:100%;}.cover-title>.eyebrow{font-size:8px;letter-spacing:2.4px;color:#d0c6ae;margin-bottom:16px}.cover-title h1{font-size:clamp(53px,12vw,78px);letter-spacing:-1.9px;white-space:nowrap}.cover-title h1 span{color:#cbb58c;font-style:italic}.cover-title>p:last-child{font-size:19px;color:#ddd5c5;margin-top:9px}.cover-bottom{max-width:none;margin:0 auto;text-align:center;padding-bottom:2px}.cover-bottom .eyebrow{font-size:8px;letter-spacing:2.4px}.cover-bottom>p{font-family:var(--serif);font-size:17px;margin:5px 0 21px}.cover-hint{display:flex;flex-direction:column;align-items:center;gap:15px;font-size:7px;letter-spacing:2.1px;color:#e4dece}.cover-hint i{display:block;height:31px;width:1px;background:linear-gradient(var(--gold),#d5c6a1 55%,transparent);position:relative;animation:hint-rise 1.8s ease-in-out infinite}.cover-hint i:after{content:'';position:absolute;bottom:3px;left:-3px;width:6px;height:6px;border-right:1px solid #d5c6a1;border-bottom:1px solid #d5c6a1;transform:rotate(45deg)}.cover.opening{transform:translateY(-100%);opacity:0;filter:brightness(.75)}.cover.opening .cover-photo{transform:scale(1.08)}
@keyframes hint-rise{0%,100%{transform:translateY(3px);opacity:.5}55%{transform:translateY(-4px);opacity:1}}
@media(min-width:600px){.cover{padding-top:calc(6vh + env(safe-area-inset-top));padding-bottom:calc(5vh + env(safe-area-inset-bottom))}.cover-photo{background-size:cover;background-position:center 43%}.cover-title{margin-bottom:4vh}.cover-bottom{margin-top:0}.cover-top .monogram{width:62px}.cover-bottom>p{font-size:20px}}
@media(max-height:700px){.cover{padding-top:calc(20px + env(safe-area-inset-top));padding-bottom:calc(16px + env(safe-area-inset-bottom))}.cover-top .monogram{width:42px}.cover-top{gap:10px}.cover-title{margin-bottom:20px}.cover-title h1{font-size:clamp(44px,10vw,62px)}.cover-title>.eyebrow{margin-bottom:7px}.cover-bottom>p{margin-bottom:9px}.cover-hint{gap:7px}.cover-hint i{height:22px}}
@media(prefers-reduced-motion:reduce){.cover-hint i{animation:none}.cover.opening{transform:translateY(-100%);filter:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.motion-ready .reveal:not(.visible){opacity:1;transform:none}.cover.opening{transform:none}.book-cover.open{transform:none}}

/* Restore the original cover header arrangement. */
.cover{padding-top:calc(38px + env(safe-area-inset-top));padding-bottom:calc(28px + env(safe-area-inset-bottom))}.cover-top{margin:0 auto;gap:0}.cover-top .monogram{width:75px;margin:0 auto 22px}

.slide-canvas{min-height:100svh;background:var(--bg)}

/* One continuous portrait from the cover into the first page. */
.cover.opening{transform:none;opacity:1;filter:none;transition:none}
.cover-photo,.first-photo{transform-origin:0 0;transition:transform 3.2s cubic-bezier(.22,.65,.25,1),opacity 3.2s ease}
.cover-top,.cover-title,.cover-bottom{transition:opacity .8s ease,filter .8s ease}
.cover.opening .cover-top,.cover.opening .cover-title,.cover.opening .cover-bottom{opacity:0;filter:blur(3px)}
.cover.opening .cover-photo,.invitation-entering .first-photo{transform:var(--portrait-transform);opacity:.9}
.cover-shade{transition:opacity 3.2s ease}.cover.opening .cover-shade{opacity:0}
.first-shade{background:linear-gradient(180deg,rgba(15,16,13,.25),transparent 26%,rgba(21,22,20,.12) 44%,rgba(21,22,20,.83) 67%,#151614 90%)}
.first-slide{position:relative;height:var(--portrait-viewport-height,100svh);min-height:var(--portrait-viewport-height,100svh);overflow:hidden;isolation:isolate;background:#161713;text-align:center;outline:none!important}
.first-photo{position:absolute;inset:0;background:url('assets/studio_stand_couple-720.jpg') center 42%/cover no-repeat;opacity:.82;will-change:transform}
.first-shade{position:absolute;inset:0;pointer-events:none}
.first-mark{position:absolute;top:calc(35px + env(safe-area-inset-top));left:0;right:0;opacity:0;transition:opacity 1s ease .1s}
.first-mark .monogram{width:43px;margin:auto}
.first-content{position:absolute;bottom:calc(12svh + env(safe-area-inset-bottom));left:18px;right:18px;opacity:0;transform:translateY(14px);transition:opacity 1s ease,transform 1s cubic-bezier(.22,.65,.25,1)}
.first-content .eyebrow{font-size:8px;letter-spacing:3px;color:#d4c4a7}
.first-content h2{font-size:clamp(49px,12.6vw,82px);letter-spacing:-1.8px;line-height:1.14;margin:19px 0 0;white-space:nowrap}
.first-content h2 i{color:#cbb58c;font-size:.8em}
.first-rule{display:block;width:32px;height:1px;background:var(--gold);margin:25px auto 20px;opacity:.65}
.first-promise{font-family:var(--serif);font-style:italic;font-size:21px;color:#cec5b4}
.invitation-ready .first-content{opacity:1;transform:none}
.invitation-ready .first-mark{opacity:.85}
@media(min-width:600px){.first-photo{background-position:center 43%}.first-content{bottom:12svh}.first-content h2{font-size:82px}.first-promise{font-size:25px}.first-mark .monogram{width:49px}}
@media(orientation:landscape){.first-content{bottom:7svh}.first-content h2{font-size:clamp(42px,7vw,76px);margin-top:10px}.first-rule{margin:17px auto 13px}.first-mark{top:22px}.first-promise{font-size:21px}}
@media(max-width:360px){.first-content h2{font-size:45px}.first-promise{font-size:19px}}
@media(prefers-reduced-motion:reduce){.cover.opening .cover-top,.cover.opening .cover-title,.cover.opening .cover-bottom{filter:none}.first-photo{will-change:auto}}

.cover-photo,.first-photo{background-image:url('assets/studio_stand_couple-1440.jpg')}
.cover:after{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;opacity:0;background:linear-gradient(180deg,rgba(15,16,13,.25),transparent 26%,rgba(21,22,20,.12) 44%,rgba(21,22,20,.83) 67%,#151614 90%);transition:opacity 3.2s ease}
.cover.opening:after{opacity:1}
.invitation-ready .first-photo{will-change:auto}@media(orientation:landscape){.cover-photo,.first-photo{inset:auto;left:var(--photo-left);top:var(--photo-top);width:var(--photo-width);height:var(--photo-height);background-size:100% 100%;background-position:0 0}}
/* The first portrait sits over the couple's own film. */
.first-backdrop{position:absolute;inset:0;overflow:hidden;background:#151614}
.first-backdrop video{width:100%;height:100%;object-fit:cover;object-position:center;filter:blur(3px) saturate(.65);transform:scale(1.04);opacity:.8}
.video-shadow{position:absolute;inset:0;background:linear-gradient(180deg,rgba(12,14,12,.65),rgba(12,14,12,.46) 40%,#151614 98%)}
.first-photo{background-image:url('assets/crop.png');filter:drop-shadow(0 15px 25px #0009)}
.invitation-entering .first-photo{opacity:1}
.cover.opening{animation:reveal-film 3.4s linear both}
@keyframes reveal-film{0%,38%{opacity:1}65%{opacity:.75}85%{opacity:.3}100%{opacity:0}}
.first-scroll{position:absolute;bottom:calc(21px + env(safe-area-inset-bottom));left:0;right:0;width:max-content;margin:auto;display:flex;align-items:center;flex-direction:column;gap:10px;opacity:0;transition:opacity 1s ease .3s;color:#c3b596;font-size:7px;letter-spacing:2px;padding:8px 25px}
.first-scroll i{display:block;width:1px;height:21px;background:linear-gradient(var(--gold),transparent)}
.invitation-ready .first-scroll{opacity:.9}
.second-slide{min-height:100svh;display:flex;align-items:center;justify-content:center;text-align:center;padding:95px 25px 75px;background:var(--bg)}
.second-content{max-width:570px;width:100%;margin:auto}
.second-content .eyebrow{font-size:8px;letter-spacing:2.8px}
.second-content h2{font-size:clamp(48px,8vw,72px);line-height:1.12;letter-spacing:-1.4px;margin:30px 0 0}
.invitation-line{display:block;width:1px;height:42px;background:linear-gradient(transparent,var(--gold),transparent);margin:32px auto}
.second-content>p{font-size:12px;line-height:2.05;color:#d1ccbf;max-width:370px;margin:0 auto}
.second-content>p.invitation-restu{margin-top:21px;color:var(--muted)}
.second-signature{font-family:var(--serif);font-size:29px;line-height:1.2;margin-top:42px}
.second-signature i{color:var(--gold);font-size:.8em}
.chapter-number{display:block;font-size:7px;letter-spacing:3px;color:#777a6b;margin-top:48px}
.scroll-motion .second-content{opacity:0;transform:translateY(22px);transition:opacity 1s ease,transform 1s cubic-bezier(.22,.65,.25,1)}
.scroll-motion .second-slide.is-visible .second-content{opacity:1;transform:none}
@media(min-width:600px){.second-slide{padding:110px 40px}.second-content>p{font-size:13px}.second-content h2{margin-top:35px}.second-signature{font-size:33px}}
@media(max-width:360px){.wide-break{display:none}.second-content h2{font-size:43px}}
@media(max-height:600px) and (orientation:landscape){.first-scroll{bottom:8px;gap:3px}.first-scroll i{height:10px}.first-content{bottom:17svh}.second-slide{min-height:100svh;padding-top:65px;padding-bottom:65px}}
@media(prefers-reduced-motion:reduce){.cover.opening{animation:none}.scroll-motion .second-content{opacity:1;transform:none}}
html{scrollbar-width:none}html::-webkit-scrollbar{display:none}
.video-shadow{background:radial-gradient(ellipse at 50% 35%,transparent 22%,rgba(0,0,0,.3) 100%),linear-gradient(180deg,rgba(12,14,12,.78),rgba(12,14,12,.6) 40%,#151614 98%)}
/* One fixed film behind both slides; only the first foreground fades. */
#invitation{position:relative;isolation:isolate}
.first-backdrop{position:fixed;inset:0;z-index:0;pointer-events:none}
.first-slide{z-index:1;background:transparent}
.second-slide{position:relative;z-index:1;background:transparent}
.first-backdrop:after{content:'';position:absolute;inset:0;background:rgb(8,10,8);opacity:var(--chapter-dim,0);pointer-events:none}
.first-photo{-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 65%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0%,#000 65%,transparent 100%)}
.first-portrait-layer{position:absolute;inset:0;pointer-events:none;-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 65%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0%,#000 65%,transparent 100%)}
.first-shade{position:absolute;inset:0;height:auto;z-index:0;background:linear-gradient(to bottom,transparent calc(var(--portrait-viewport-height,100svh) * .25),rgba(8,10,8,.12) calc(var(--portrait-viewport-height,100svh) * .45),rgba(8,10,8,.62) calc(var(--portrait-viewport-height,100svh) * .72),rgba(8,10,8,.62) 100%);opacity:1;transition:none}
.first-content{color:#f5eee0;text-shadow:0 2px 18px rgba(0,0,0,.65),0 1px 3px rgba(0,0,0,.5)}
.first-content .eyebrow{color:#e4d4b5}
.first-promise{color:#e6decd}
.invitation-ready .first-photo{opacity:var(--first-foreground-opacity,1)}
.invitation-ready .first-content{opacity:var(--first-text-opacity,1)}
.invitation-ready .first-mark{opacity:calc(var(--first-foreground-opacity,1) * .85)}
.invitation-ready .first-scroll{opacity:calc(var(--first-foreground-opacity,1) * .9)}
.invitation-ready .first-photo{transition:opacity .1s linear}
.first-portrait-layer{opacity:1;transition:opacity 2s ease}
.film-revealed .first-portrait-layer{opacity:0}
.first-backdrop video{transition:filter 2s ease,opacity 2s ease}
.film-revealed .first-backdrop video{filter:blur(0) saturate(.9);opacity:1}
.video-shadow{transition:opacity 2s ease}
.film-revealed .video-shadow{opacity:.55}
@media(prefers-reduced-motion:reduce){.first-portrait-layer,.first-backdrop video,.video-shadow{transition:none}}
.has-scrolled .first-content,.has-scrolled .first-mark,.has-scrolled .first-scroll,.has-scrolled .first-shade{transition:opacity .1s linear}
.music-toggle{position:fixed;z-index:25;right:calc(18px + env(safe-area-inset-right));bottom:calc(20px + env(safe-area-inset-bottom));width:44px;height:44px;display:flex;align-items:center;justify-content:center;border:1px solid #b6a27c55;border-radius:50%;background:#151614bd;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--gold);padding:0}
.music-toggle[hidden]{display:none}
.music-toggle .music-slash{opacity:.7}
.music-toggle.is-playing .music-slash{opacity:0}
.music-toggle.is-playing{box-shadow:0 0 0 4px #b6a27c08}
.opening-light{position:absolute;inset:-15%;z-index:1;pointer-events:none;opacity:0;background:linear-gradient(112deg,transparent 32%,rgba(182,162,124,.015) 41%,rgba(245,227,186,.12) 48%,rgba(255,242,212,.16) 50%,rgba(182,162,124,.04) 54%,transparent 65%);filter:blur(18px);transform:translate3d(-65%,0,0);mix-blend-mode:screen}
.cover.opening .opening-light{animation:champagne-sweep 2.9s cubic-bezier(.22,.65,.25,1) both}
@keyframes champagne-sweep{0%{opacity:0;transform:translate3d(-65%,0,0)}20%{opacity:.8}52%{opacity:.7}82%{opacity:0}100%{opacity:0;transform:translate3d(65%,0,0)}}
@media(prefers-reduced-motion:reduce){.opening-light{display:none}}
/* A personal greeting, with room for couples and family names on phones. */
.invitation-recipient{margin:0 auto 25px;max-width:430px}
.invitation-recipient>p:first-child{font-size:11px;color:#c9c2b2;margin-bottom:9px}
#invitation-guest-name{font-family:var(--serif);font-size:clamp(27px,6.5vw,36px);line-height:1.25;color:#f5eee0;overflow-wrap:anywhere;text-wrap:balance}
.second-content{position:relative;text-shadow:0 2px 14px #0009}
.second-content>p{font-size:14px;line-height:1.95;color:#e1dacc;text-wrap:pretty}
.second-content>p.invitation-restu{color:#c9c2b2;margin-top:18px}
.second-content .invitation-line{height:30px;margin:25px auto}
.second-signature{margin-top:30px}
.chapter-number{margin-top:30px}
.second-slide{padding-top:75px;padding-bottom:70px}
.cover-bottom #guest-name{overflow-wrap:anywhere}
.diamond-rain{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1;-webkit-mask-image:linear-gradient(transparent,#000 12%,#000 75%,transparent);mask-image:linear-gradient(transparent,#000 12%,#000 75%,transparent)}
.diamond-rain>span{position:absolute;top:-24px;left:var(--diamond-x);width:var(--diamond-size);height:calc(var(--diamond-size) * 1.6);opacity:0;animation:diamond-fall var(--diamond-duration) var(--diamond-delay) linear infinite}
.diamond-rain i{display:block;width:100%;height:100%;background:linear-gradient(120deg,#fff6dc 0%,#b6a27c80 42%,#fff6dc 49%,#b6a27c66 65%,#fff6dc 100%);clip-path:polygon(50% 0,100% 37%,70% 75%,50% 100%,30% 75%,0 37%);animation:diamond-glimmer 4.8s var(--diamond-delay) ease-in-out infinite}
.cover-top,.cover-title,.cover-bottom,.first-mark,.first-content,.first-scroll{z-index:2}
.invitation-ready .first-slide .diamond-rain{opacity:var(--first-foreground-opacity,1)}
.cover.opening .diamond-rain{opacity:0;transition:opacity .35s}
@keyframes diamond-fall{0%{transform:translate3d(0,-25px,0);opacity:0}12%{opacity:.4}65%{opacity:.25}90%{opacity:.12}100%{transform:translate3d(var(--diamond-drift),calc(100svh + 50px),0);opacity:0}}
@keyframes diamond-glimmer{0%,100%{transform:rotate(-12deg);opacity:.4}45%{transform:rotate(12deg);opacity:1}65%{opacity:.5}}
@media(max-width:600px){.diamond-rain>span:nth-child(n+15){display:none}}
@media(prefers-reduced-motion:reduce){.diamond-rain{display:none}}
@media(min-width:600px){.second-slide{padding-top:100px;padding-bottom:100px}.second-content>p{font-size:15px}}
/* Stop at each chapter; taller chapters retain native scrolling inside them. */
html{scroll-snap-type:y mandatory;scroll-padding-top:0}
#invitation>section{scroll-snap-align:start;scroll-snap-stop:always;min-height:100svh}
.closing-section{position:relative;z-index:1;background:#11130f;padding:90px 26px;text-align:center}
.chapter-wrap{width:100%;max-width:860px;margin:auto}
.closing-section .chapter-number{display:block}
.closing-section .section-heading>p{max-width:390px;margin-left:auto;margin-right:auto;line-height:1.9}
.location-chapter{display:flex;align-items:center;background:radial-gradient(ellipse at 50% 40%,#25261e,#11130f 75%)}
.venue-card{max-width:590px;margin:auto;border:1px solid #b6a27c40;padding:40px 24px;background:#15171388}
.venue-monogram{display:block;font-family:var(--serif);font-size:45px;letter-spacing:8px;color:var(--gold);margin-bottom:27px}
.venue-monogram i{font-size:30px;letter-spacing:0}
.venue-card h3{font-family:var(--serif);font-size:clamp(29px,6vw,38px);line-height:1.2}
.venue-card>p{margin-top:20px;font-size:12px;line-height:2;color:#c9c2b2}
/* A quiet, three-photo stage: the original portraits keep their full proportions. */
.memories-chapter{overflow:hidden}
.memories-chapter .section-heading{margin-bottom:12px}
.memory-grid{--memory-card-width:min(64vw,310px);--memory-spread:210px;position:relative;isolation:isolate;width:calc(100% + 52px);height:520px;height:clamp(350px,114vw,520px);margin:0 -26px;perspective:1200px;touch-action:pan-y;user-select:none;-webkit-user-select:none;cursor:grab}
.memory-grid::before{content:'';position:absolute;inset:10% 0 0;background:radial-gradient(ellipse at center,#b6a27c16,transparent 65%);pointer-events:none}
.memory-grid:active{cursor:grabbing}
.memory-photo{position:absolute;left:50%;top:50%;width:var(--memory-card-width);aspect-ratio:2/3;padding:5px;border:1px solid #b6a27c40;border-radius:2px;background:#20221b;overflow:hidden;backface-visibility:hidden;transform:translate(-50%,-50%) translateX(var(--memory-x,0px)) translateZ(var(--memory-z,-160px)) rotateY(var(--memory-yaw,0deg)) scale(var(--memory-scale,.82));opacity:var(--memory-opacity,0);z-index:var(--memory-depth,0);visibility:hidden;pointer-events:none;box-shadow:0 22px 50px #0007;transition:transform .75s cubic-bezier(.22,.68,.18,1),opacity .55s,filter .55s,visibility .75s;filter:brightness(.55)}
.memory-photo.is-active,.memory-photo.is-prev,.memory-photo.is-next{visibility:visible;pointer-events:auto}
.memory-photo.is-active{filter:none;border-color:#b6a27c99;box-shadow:0 30px 65px #0009,0 0 0 4px #b6a27c08}
.memory-photo img{width:100%;height:100%;object-fit:contain;pointer-events:none}
.memory-photo.is-active::after{content:'↗';position:absolute;right:14px;bottom:14px;display:grid;place-items:center;width:32px;height:32px;border:1px solid #ede7da55;border-radius:50%;color:#fff;background:#11130f60;font-size:17px}
.memory-navigation{display:flex;align-items:center;justify-content:center;gap:24px;margin:5px auto 24px}
.memory-arrow{display:grid;place-items:center;flex-shrink:0;width:46px;height:46px;background:transparent;border:1px solid #b6a27c55;border-radius:50%;color:var(--paper);font-size:22px;line-height:1;transition:background .25s,border-color .25s}
.memory-arrow:hover{background:#b6a27c20;border-color:var(--gold)}
.memory-details{width:210px}
.memory-count{font-size:9px;letter-spacing:3px;color:var(--gold);font-variant-numeric:tabular-nums}
.memory-details p{font-family:var(--serif);font-size:23px;font-style:italic;line-height:1.35;margin-top:5px}
.memory-thumbnails{display:flex;justify-content:center;gap:10px}
.memory-thumb{width:38px;height:52px;padding:2px;background:transparent;border:1px solid transparent;opacity:.4;transition:opacity .3s,border-color .3s,transform .3s}
.memory-thumb img{width:100%;height:100%;object-fit:cover;pointer-events:none}
.memory-thumb[aria-current="true"]{opacity:1;border-color:var(--gold);transform:translateY(-3px)}
.memory-thumb:hover{opacity:1}
.memory-hint{font-size:7px;letter-spacing:1.3px;color:var(--muted);margin:24px auto 0;line-height:2}
.memory-hint span{margin:0 6px;color:var(--gold)}
.memory-dialog{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:70px 20px 25px;background:#10120ff7;color:#ede7da;border:0}
.memory-dialog::backdrop{background:#000e}
.memory-dialog[open]{display:flex;flex-direction:column;align-items:center;justify-content:center}
.memory-dialog img{max-width:100%;max-height:calc(100dvh - 230px);width:auto;height:auto;object-fit:contain}
.memory-dialog>p{font-size:11px;margin-top:18px;text-align:center}
.memory-dialog-nav{display:flex;align-items:center;gap:28px;margin-top:18px}
#memory-full-count{font-size:10px;letter-spacing:3px;color:var(--gold);min-width:60px;text-align:center}
#memory-close{position:absolute;right:18px;top:16px;width:44px;height:44px;font-size:32px;background:none;border:1px solid #b6a27c50;border-radius:50%;line-height:1}
html:has(.memory-dialog[open]){overflow:hidden}
@media(max-width:649px){.memories-chapter{padding:52px 26px 32px}.memory-grid{--memory-card-width:min(60vw,310px);height:clamp(300px,96vw,520px)}.memory-navigation{margin-bottom:18px}.memory-hint{margin-top:18px}.memories-chapter .chapter-number{margin-top:16px}}
@media(max-width:360px){.memory-navigation{gap:12px}.memory-details{width:180px}.memory-hint{max-width:240px}.memory-thumbnails{gap:7px}}
.rsvp-chapter{background:linear-gradient(#11130f,#1c1e17)}
.rsvp-wrap{max-width:550px}
.rsvp-fields{text-align:left}
.rsvp-fields label{display:block;font-size:11px;letter-spacing:.4px;color:#cfc8b9;margin:22px 0 8px}
.rsvp-fields label span{color:#999b8c}
.rsvp-fields input,.rsvp-fields select,.rsvp-fields textarea{width:100%;min-height:50px;background:#151713;color:#ede7da;border:1px solid #b6a27c40;border-radius:0;padding:12px 14px;font-size:14px}
.rsvp-fields textarea{resize:vertical}
.rsvp-fields input::placeholder,.rsvp-fields textarea::placeholder{color:#929486}
.rsvp-fields .calendar-link{width:100%;background:#e5decf;color:#24251e;min-height:54px}
.rsvp-fields .calendar-link:hover{background:#f4eddf}
.rsvp-note{color:#aaa89b;font-size:11px;line-height:1.8;margin-top:16px;text-align:center}
.thanks-chapter{display:flex;align-items:center;background:radial-gradient(ellipse at center,#292a20,#11130f 75%)}
.thanks-chapter .monogram{margin:0 auto 36px;width:60px}
.thanks-chapter h2{margin-top:24px}
.thanks-chapter h2+p{font-size:13px;line-height:2;color:#c9c2b2;max-width:450px;margin:30px auto}
.thanks-signature{font-family:var(--serif);font-size:44px;margin-top:35px}
.thanks-signature i{color:var(--gold);font-size:.7em}
.thanks-date{font-size:8px;letter-spacing:3px;color:var(--gold);margin-top:15px}
@media(min-width:650px){.closing-section{padding:110px 55px}.memory-grid{--memory-card-width:330px;width:calc(100% + 110px);height:590px;margin:0 -55px}.memory-thumb{width:44px;height:60px}}
@media(prefers-reduced-motion:reduce){.memory-photo,.memory-photo img{animation:none;transition:none}}
/* Every chapter shares one canvas so chapter backgrounds cannot create seams. */
#invitation{background:#11130f}
#invitation>section{background:transparent}
/* Chapter three: portraits connected by a line drawn with the scroll. */
.couple-chapter{position:relative;z-index:1;padding:150px 26px 90px;background:linear-gradient(to bottom,transparent,#11130f 170px);overflow:hidden}
.couple-chapter-inner{position:relative;max-width:860px;margin:auto}
.couple-intro{text-align:center;margin-bottom:65px}
.couple-intro h2{margin-top:23px;font-size:clamp(49px,9vw,72px);line-height:1.12}
.couple-intro>p{font-family:var(--serif);font-style:italic;font-size:20px;color:#c6bdab;margin-top:23px}
.couple-editorial{position:relative;padding-left:23px}
.couple-profile{max-width:390px;margin:auto}
.profile-image{position:relative;aspect-ratio:4/5;overflow:hidden;background:#252720;border:1px solid #b6a27c26}
.profile-image img{width:100%;height:100%;object-fit:cover;filter:saturate(.78);transform:scale(1.05) translateY(var(--portrait-drift,0px));transition:transform .2s linear}
.bride-image img{object-position:65% 48%;transform:translateY(var(--portrait-drift,0px)) scale(1.65);transform-origin:65% 42%}
.groom-image img{object-position:50% 45%}
.profile-image:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 70%,#11130f55);pointer-events:none}
.portrait-corner{position:absolute;left:13px;top:13px;width:28px;height:28px;border-top:1px solid #e5decf80;border-left:1px solid #e5decf80}
.profile-caption{position:relative;padding:27px 3px 0}
.profile-caption .eyebrow{font-size:8px;letter-spacing:2.6px}
.profile-caption h3{font-family:var(--serif);font-size:clamp(35px,9vw,45px);letter-spacing:-.7px;line-height:1.1;margin:12px 0 0;color:#f5eee0;text-wrap:balance}
.profile-caption>p{font-size:13px;line-height:1.9;color:#c9c2b2;margin-top:18px;white-space:pre-line}
.profile-caption>p.profile-degree{margin-top:9px;font-size:12px;letter-spacing:1px;color:#b6a27c}
.profile-caption>p>span{color:#999b8c;font-size:11px}
.couple-connector{display:block;text-align:center;font-family:var(--serif);font-style:italic;font-size:86px;line-height:1;color:#b6a27c8c;margin:35px 0 39px;padding-left:0}
.couple-thread{position:absolute;left:0;top:260px;bottom:170px;width:1px;background:#b6a27c16;pointer-events:none}
.couple-thread span{display:block;width:100%;height:100%;background:linear-gradient(#b6a27c20,#c7b68f 22%,#b6a27c80);transform:scaleY(var(--thread-progress,0));transform-origin:top}
.couple-thread:after{content:'';position:absolute;top:0;left:-3px;width:7px;height:7px;border:1px solid #b6a27c80;transform:rotate(45deg);background:#11130f}
.couple-chapter-foot{text-align:center;margin-top:75px}
.fine-gold-line{display:block;width:36px;height:1px;background:#b6a27c70;margin:0 auto 25px}
.couple-chapter-foot>p{font-family:var(--serif);font-style:italic;font-size:22px;color:#c6bdab}
.chapter-reveal{opacity:1}
.scroll-motion .chapter-reveal{opacity:0;transform:translateY(28px);transition:opacity 1.1s ease,transform 1.2s cubic-bezier(.22,.65,.25,1)}
.scroll-motion .chapter-reveal.is-visible{opacity:1;transform:none}
.scroll-motion .couple-profile .profile-image{clip-path:inset(0 0 14% 0);transition:clip-path 1.4s cubic-bezier(.22,.65,.25,1)}
.scroll-motion .couple-profile.is-visible .profile-image{clip-path:inset(0)}
@media(min-width:650px){.couple-chapter{padding:180px 55px 100px}.couple-editorial{display:grid;grid-template-columns:1fr 1fr;gap:60px;padding-left:0;align-items:start}.couple-profile{width:100%;max-width:none}.groom-profile{margin-top:150px}.couple-connector{position:absolute;left:calc(50% - 22px);top:240px;font-size:70px;margin:0}.couple-thread{left:50%;top:280px;bottom:180px}.couple-intro{margin-bottom:80px}}
@media(prefers-reduced-motion:reduce){.scroll-motion .chapter-reveal{opacity:1;transform:none}.scroll-motion .couple-profile .profile-image{clip-path:none}.profile-image img{transform:none}.bride-image img{transform:scale(1.65)}.couple-thread span{transform:none}}
.celebration-chapter{position:relative;z-index:1;background:#11130f;padding:75px 28px 85px;text-align:center;overflow:hidden;isolation:isolate}
.celebration-backdrop{position:absolute;inset:0;z-index:0;pointer-events:none;-webkit-mask-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.02) 5%,rgba(0,0,0,.1) 11%,rgba(0,0,0,.3) 18%,rgba(0,0,0,.65) 27%,#000 40%,#000 75%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.02) 5%,rgba(0,0,0,.1) 11%,rgba(0,0,0,.3) 18%,rgba(0,0,0,.65) 27%,#000 40%,#000 75%,transparent 100%)}
.celebration-backdrop img{width:100%;height:100%;object-fit:cover;object-position:50% 58%;filter:saturate(.7) brightness(.9)}
.celebration-photo-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(17,19,15,.68),rgba(17,19,15,.7) 55%,rgba(17,19,15,.84))}
.scroll-motion .celebration-backdrop{transform:none;transition:opacity 1.8s ease}
.celebration-inner{position:relative;z-index:1;max-width:760px;margin:auto;text-shadow:0 2px 12px #0007}
.celebration-heading h2{margin-top:24px;font-size:clamp(49px,9vw,72px);line-height:1.12}
.wedding-date{margin:45px auto 0;color:#f5eee0}
.date-day{font-size:10px;letter-spacing:3px;text-transform:uppercase;color:#c6bdab}
.wedding-date time{display:block}
.date-number{display:block;font-family:var(--serif);font-size:112px;line-height:1;letter-spacing:-5px;margin:12px auto 3px}
.date-month{display:block;font-family:var(--serif);font-size:29px;line-height:1.3}
.date-month>span{color:#b6a27c}
.wedding-countdown{display:grid;grid-template-columns:repeat(4,1fr);max-width:345px;margin:33px auto 48px;gap:10px}
.wedding-countdown>div{border-top:1px solid #b6a27c40;padding-top:12px}
.wedding-countdown span{display:block;font-family:var(--serif);font-size:32px;line-height:1.2;font-variant-numeric:tabular-nums}
.wedding-countdown small{display:block;font-size:7px;letter-spacing:2px;color:#aaa89b;margin-top:7px}
.schedule-status{font-size:10px;color:#b6a27c;letter-spacing:.5px;margin-bottom:25px}
.wedding-agenda{max-width:470px;text-align:left;margin:auto;padding-left:27px;border-left:1px solid #b6a27c45}
.agenda-item{position:relative;padding:0 0 32px}
.agenda-item+.agenda-item{padding-top:32px;border-top:1px solid #b6a27c26}
.agenda-dot{position:absolute;left:-31px;top:6px;width:7px;height:7px;background:#b6a27c;transform:rotate(45deg)}
.agenda-item+.agenda-item .agenda-dot{top:38px}
.agenda-item .eyebrow{font-size:7px;letter-spacing:2.4px}
.agenda-item h3{font-family:var(--serif);font-size:38px;line-height:1.2;color:#f5eee0;margin-top:11px}
.agenda-time{display:flex;align-items:baseline;gap:12px;font-family:var(--serif);font-size:28px;line-height:1.3;margin-top:14px}
.agenda-time>span{font-size:20px;color:#b6a27c}
.agenda-time small{font-family:var(--sans);font-size:8px;letter-spacing:1.5px;color:#b6a27c}
.celebration-venue{margin:45px auto 0;max-width:470px;border-top:1px solid #b6a27c26;padding-top:35px}
.celebration-venue .eyebrow{font-size:7px;letter-spacing:2.4px}
.celebration-venue h3{font-family:var(--serif);font-size:32px;line-height:1.2;margin:16px auto 13px}
.celebration-venue>p{font-size:12px;color:#c9c2b2;line-height:1.9}
.calendar-link{display:inline-flex;gap:12px;align-items:center;justify-content:center;margin-top:29px;min-height:50px;padding:13px 23px;border:1px solid #b6a27c65;font-size:9px;letter-spacing:1.6px;color:#e5decf;transition:background .3s}
.calendar-link:hover{background:#b6a27c12}
.venue-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:500px;margin:0 auto}
.venue-actions .calendar-link{width:100%;margin-top:29px;padding:13px 14px;gap:9px;white-space:nowrap}
.venue-actions svg{flex:none}
.celebration-venue>p.calendar-note{font-size:10px;color:#939687;margin-top:15px;max-width:260px;margin-left:auto;margin-right:auto}
@media(max-width:600px){.venue-actions{grid-template-columns:1fr;max-width:320px;gap:0}.venue-actions .calendar-link{margin-top:16px}}
@media(min-width:650px){.celebration-chapter{padding:90px 55px 110px}.wedding-agenda{max-width:610px;display:grid;grid-template-columns:1fr 1fr;gap:40px}.agenda-item+.agenda-item{padding-top:0;padding-left:35px;border-top:0;border-left:1px solid #b6a27c26}.agenda-item+.agenda-item .agenda-dot{display:none}.celebration-venue{max-width:610px}}
/* The First Light — a single emblem carried from darkness into the cover. */
html.first-light-pending{overflow:hidden}
.first-light{display:none;position:fixed;inset:0;z-index:90;overflow:hidden;isolation:isolate;cursor:default;touch-action:none;outline:none!important}
.first-light-pending .first-light{display:block;animation:first-light-failsafe 0s 12s forwards}
.first-light-veil{position:absolute;inset:0;background:#0d100d}
.first-light-aura{position:absolute;inset:0;opacity:0;background:radial-gradient(ellipse at 50% 50%,#b9985820,transparent 48%);pointer-events:none}
.first-light-emblem{position:absolute;top:50%;left:50%;width:min(240px,65vw);aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:none}
.first-light-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-95deg);overflow:visible}
.first-light-ring circle{stroke-dasharray:1;stroke-dashoffset:1}
.first-light-orbit{transform:rotate(155deg);transform-origin:center}
.first-light-star{position:absolute;left:45.6%;top:3.9%;width:9px;height:9px;opacity:0;border-radius:50%;background:#fff3d0;box-shadow:0 0 12px 3px #e0c48a66,0 0 32px 8px #b9985828}
.first-light-star::before,.first-light-star::after{content:'';position:absolute;left:50%;top:50%;width:36px;height:1px;transform:translate(-50%,-50%);background:linear-gradient(90deg,transparent,#fbe4ad,transparent)}
.first-light-star::after{transform:translate(-50%,-50%) rotate(90deg);width:23px}
.first-light-logo{position:absolute;left:50%;top:50%;width:min(152px,42vw);transform:translate(-50%,-50%);transform-origin:center;opacity:0;will-change:transform,opacity}
.first-light-logo .monogram{width:100%;height:auto;filter:invert(83%) sepia(12%) saturate(600%) hue-rotate(355deg)}
.first-light-glint{position:absolute;inset:0;background:linear-gradient(110deg,transparent 40%,#fff2cd 49%,transparent 58%);background-size:250% 100%;background-position:180% 0;-webkit-mask:url('assets/logo.png') center/100% 100% no-repeat;mask:url('assets/logo.png') center/100% 100% no-repeat;mix-blend-mode:screen;opacity:0}
.first-light-running .cover-top .monogram{opacity:0}
.first-light-running .cover .diamond-rain{visibility:hidden}
@keyframes first-light-failsafe{to{visibility:hidden;pointer-events:none}}
@media(max-height:500px){.first-light-emblem{width:175px}.first-light-logo{width:125px}}
@media(prefers-reduced-motion:reduce){.first-light-logo{opacity:1}.first-light-ring circle{stroke-dashoffset:0}.first-light-aura{opacity:.5}}

/* A restrained reading pause between the invitation and the couple portraits. */
#invitation>.quran-interlude{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;min-height:100svh;padding:clamp(78px,12svh,118px) 28px;background:radial-gradient(ellipse at 50% 48%,#b6a27c0b,transparent 58%),#151614;text-align:center;scroll-snap-align:start;scroll-snap-stop:always}
.quran-verse-wrap{width:min(100%,660px);margin:auto}
.quran-verse{margin:0;border:0}
.quran-verse p{color:#e5decf;font-family:var(--serif);font-size:clamp(20px,5.4vw,27px);font-weight:400;line-height:1.7;letter-spacing:.05px;text-wrap:pretty}
.quran-verse p+p{margin-top:20px}
.quran-verse p:nth-child(2){font-size:clamp(24px,6.2vw,32px);color:#f1eadc}
.scroll-motion .quran-verse .chapter-reveal:nth-child(2){transition-delay:.12s}
.scroll-motion .quran-verse .chapter-reveal:nth-child(3){transition-delay:.24s}
.quran-rule{position:relative;display:block;width:34px;height:1px;margin:30px auto 18px;background:#b6a27c8a;overflow:hidden}
.quran-rule::after{content:"";position:absolute;inset:0;background:#f0d7a5;transform:scaleX(0);transform-origin:center}
.quran-rule.is-visible::after{animation:quran-rule-reveal 1.2s .4s cubic-bezier(.22,.65,.25,1) forwards}
.quran-attribution{color:#c6b38c;font-family:var(--sans);font-size:9px;font-style:normal;font-weight:500;letter-spacing:2.2px;text-transform:uppercase}
.quran-attribution span{padding:0 4px;color:#777565}
@keyframes quran-rule-reveal{to{transform:scaleX(1)}}
@media(min-width:650px){.quran-verse-wrap{width:min(100%,720px)}.quran-verse p{font-size:27px}.quran-verse p:nth-child(2){font-size:33px}}
@media(prefers-reduced-motion:reduce){.quran-rule::after{animation:none;transform:scaleX(1)}}

/* Let the shared portrait film blend gently through the verse interlude. */
#invitation>.quran-interlude{background:transparent}
#invitation>.quran-interlude::before{display:none}
#invitation>.quran-interlude>.quran-verse-wrap{position:relative;z-index:1}

/* Full-bleed couple portrait and the original Quran gift artwork. */
#invitation>.quran-interlude{isolation:isolate;overflow:hidden;padding:clamp(48px,7svh,78px) 26px;background:transparent}
#invitation>.quran-interlude>.quran-backdrop{position:absolute;inset:0;z-index:0;pointer-events:none;-webkit-mask-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.02) 5%,rgba(0,0,0,.1) 11%,rgba(0,0,0,.3) 18%,rgba(0,0,0,.65) 27%,#000 40%,#000 75%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.02) 5%,rgba(0,0,0,.1) 11%,rgba(0,0,0,.3) 18%,rgba(0,0,0,.65) 27%,#000 40%,#000 75%,transparent 100%)}
.quran-backdrop img{width:100%;height:100%;object-fit:cover;object-position:50% 27%;filter:saturate(.7) brightness(.9)}
.quran-photo-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(17,19,15,.68),rgba(17,19,15,.7) 55%,rgba(17,19,15,.84))}
#invitation>.quran-interlude>.quran-verse-wrap{width:min(100%,720px)}
.quran-gift-art{display:block;width:clamp(190px,34vw,270px);height:auto;margin:0 auto 17px;filter:drop-shadow(0 12px 22px rgba(0,0,0,.38))}
@media(max-height:700px){.quran-gift-art{width:clamp(150px,25vw,210px);margin-bottom:10px}#invitation>.quran-interlude{padding-top:40px;padding-bottom:40px}}

.first-light-fallback img,.first-light-fallback .first-light-glint{display:none}
.first-light-fallback::before{content:"NW";display:block;color:var(--gold);font-family:var(--serif);font-size:60px;line-height:1.2;letter-spacing:-5px;text-align:center}

/* Quran interlude: editorial, left-aligned typography inspired by the reference. */
#invitation>.quran-interlude{align-items:flex-start;justify-content:flex-start;padding:clamp(48px,7svh,78px) clamp(16px,4vw,52px)}
#invitation>.quran-interlude>.quran-verse-wrap{width:min(100%,720px);margin:0;position:relative;z-index:2;text-align:left}
#invitation>.quran-interlude .quran-attribution{display:block;margin:0 0 24px;text-align:left}
#invitation>.quran-interlude .quran-verse p{text-align:left}
#invitation>.quran-interlude .quran-rule{margin:22px 0 0}

/* Quietly reduce the verse and keep every line at the same scale. */
#invitation>.quran-interlude .quran-verse p{font-size:clamp(16px,2vw,20px);line-height:1.65}
#invitation>.quran-interlude .quran-verse p:nth-child(2){font-size:clamp(16px,2vw,20px);line-height:1.65;color:#e5decf}

@media(max-width:649px){.memory-photo.is-active::after{display:none}}

/* Keep forms usable with a phone keyboard, browser bars, and notched screens. */
html.form-focused{scroll-snap-type:none}
.rsvp-fields input,.rsvp-fields textarea,.rsvp-fields select{font-size:16px}
.rsvp-fields :focus-visible,.calendar-link:focus-visible,.memory-thumb:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
.rsvp-fields input,.rsvp-fields textarea,.rsvp-fields select{scroll-margin-block:100px}
@media(max-width:649px){.rsvp-section,.wishes-section,.closing-section{padding-bottom:calc(80px + env(safe-area-inset-bottom))}.memory-controls button,.memory-thumb{min-width:44px;min-height:44px}}
@media(prefers-reduced-motion:reduce){.first-portrait-layer,.first-photo{transition:none!important}}

/* A compact event overview for phones; keep the date and both ceremonies together. */
@media(max-width:649px){
  #slide-04{padding:44px 24px 48px}
  .celebration-heading h2{margin-top:14px;font-size:40px;line-height:1.08}
  .wedding-date{margin-top:24px}
  .date-day{font-size:9px;letter-spacing:2.4px}
  .wedding-date time{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:7px}
  .date-number{font-size:76px;letter-spacing:-3px;margin:0}
  .date-month{font-size:25px;text-align:left}
  .date-month>span{display:block;font-size:20px;margin-top:2px}
  .wedding-countdown{max-width:300px;margin:20px auto 24px;gap:12px}
  .wedding-countdown>div{padding-top:9px}
  .wedding-countdown span{font-size:27px}
  .wedding-countdown small{margin-top:4px;font-size:8px;letter-spacing:1.3px}
  .schedule-status{margin-bottom:17px;font-size:9px;letter-spacing:1.2px}
  .wedding-agenda{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding-left:0;border-left:0;text-align:center}
  .agenda-item{padding:0;min-width:0}
  .agenda-item+.agenda-item{padding:0 0 0 16px;border-top:0;border-left:1px solid #b6a27c40}
  .agenda-dot{display:none}
  .agenda-item .eyebrow{font-size:7px;letter-spacing:1.1px}
  .agenda-item h3{font-size:clamp(23px,6.6vw,29px);margin-top:8px;white-space:nowrap}
  .agenda-time{display:grid;grid-template-columns:auto auto auto;justify-content:center;gap:4px 5px;font-size:22px;margin-top:9px}
  .agenda-time>span{font-size:16px}
  .agenda-time small{grid-column:1/-1;font-size:8px;letter-spacing:1px}
  .celebration-venue{margin-top:26px;padding-top:23px}
  .celebration-venue h3{font-size:27px;max-width:310px;margin:11px auto 10px}
  .celebration-venue>p{font-size:12px;line-height:1.65}
  .celebration-venue .venue-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-width:390px;margin-top:17px}
  .celebration-venue .venue-actions .calendar-link{min-height:46px;margin-top:0;padding:10px 8px;gap:6px;font-size:8px;letter-spacing:.7px}
  .celebration-venue .venue-actions svg{width:15px;height:15px}
  .celebration-venue>p.calendar-note{margin-top:11px;font-size:9px;max-width:none}
}
@media(max-width:359px){
  #slide-04{padding-left:20px;padding-right:20px}
  .celebration-heading h2{font-size:36px}
  .wedding-agenda{gap:10px}.agenda-item+.agenda-item{padding-left:10px}
  .agenda-time{font-size:21px;column-gap:4px}
  .celebration-venue .venue-actions{grid-template-columns:1fr;gap:8px;max-width:280px}
}

/* A quiet gold reflection follows the monogram from the intro to the cover. */
.cover-logo{position:relative;display:block;width:75px;margin:0 auto 22px;line-height:0;isolation:isolate}
.cover-top .cover-logo .monogram{width:100%;margin:0}
.logo-sheen{position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 38%,#fff7de 49%,#f2d497 52%,transparent 63%);background-size:250% 100%;background-position:180% 0;-webkit-mask:url('assets/logo.png') center/100% 100% no-repeat;mask:url('assets/logo.png') center/100% 100% no-repeat;mix-blend-mode:screen;opacity:0;animation:monogram-sheen 7.5s ease-in-out infinite 1s}
.cover-logo::after{content:'';position:absolute;left:77%;top:17%;width:7px;height:7px;background:#fff2cd;clip-path:polygon(50% 0,60% 39%,100% 50%,60% 61%,50% 100%,40% 61%,0 50%,40% 39%);opacity:0;pointer-events:none;animation:monogram-spark 7.5s ease-in-out infinite 1s}
.first-light-running .cover-logo .logo-sheen,.first-light-running .cover-logo::after{animation-play-state:paused;visibility:hidden}
.cover.opening .logo-sheen,.cover.opening .cover-logo::after{animation-play-state:paused}
@keyframes monogram-sheen{0%,8%{background-position:180% 0;opacity:0}14%{opacity:.9}28%{background-position:-80% 0;opacity:0}100%{background-position:-80% 0;opacity:0}}
@keyframes monogram-spark{0%,14%,30%,100%{opacity:0;transform:scale(.4) rotate(0)}21%{opacity:.8;transform:scale(1) rotate(18deg)}}
@media(max-height:700px){.cover-logo{width:75px}}

/* An arched keepsake panel gives the verse a complete composition on phones. */
#invitation>.quran-interlude{align-items:center;justify-content:center;padding:58px 24px 66px}
#invitation>.quran-interlude>.quran-verse-wrap{width:min(100%,620px);margin:0 auto;padding:46px 34px 30px;text-align:left;border:1px solid #b6a27c50;border-radius:210px 210px 3px 3px;background:linear-gradient(180deg,#171b15a6,#12150fd9);box-shadow:0 20px 60px #0002}
.quran-verse-wrap::before{content:'';position:absolute;inset:8px;border:1px solid #b6a27c20;border-radius:inherit;pointer-events:none}
.quran-heading{text-align:center;margin-bottom:23px}
.quran-ornament{display:block;width:130px;height:36px;margin:0 auto 14px;color:#c5ae80}
.quran-kicker{display:block;font-size:8px;letter-spacing:1.8px;color:#baa986}
.quran-heading h2{font-family:var(--serif);font-size:clamp(32px,7.7vw,44px);font-weight:400;line-height:1.12;margin:14px 0 0;color:#f0e8d8;letter-spacing:-.6px}
.quran-heading h2 em{color:#cbb58c;font-weight:400}
#invitation>.quran-interlude .quran-attribution{text-align:center;margin:0 0 23px;font-size:8px;letter-spacing:1.8px}
#invitation>.quran-interlude .quran-verse p{font-size:18px;line-height:1.65;color:#d9d4c8}
#invitation>.quran-interlude .quran-verse p+p{margin-top:18px}
#invitation>.quran-interlude .quran-verse p:nth-child(2){font-size:25px;line-height:1.35;font-style:italic;color:#ead8b3;padding:17px 0;border-block:1px solid #b6a27c35}
#invitation>.quran-interlude .quran-rule{width:44px;margin:25px auto 14px}
.quran-signature{text-align:center;font-family:var(--serif);font-size:22px;color:#e5decf;line-height:1.3}
.quran-signature span{font-style:italic;color:#b6a27c;padding:0 5px}
@media(max-width:649px){
  #invitation>.quran-interlude{padding:42px 22px 50px}
  #invitation>.quran-interlude>.quran-verse-wrap{padding:40px 26px 28px;border-radius:160px 160px 3px 3px}
  #invitation>.quran-interlude .quran-verse p{font-size:17px;line-height:1.6}
  #invitation>.quran-interlude .quran-verse p:nth-child(2){font-size:23px;line-height:1.35}
}
@media(max-width:359px){
  #invitation>.quran-interlude{padding:36px 16px 44px}
  #invitation>.quran-interlude>.quran-verse-wrap{padding:36px 22px 26px}
  .quran-heading h2{font-size:29px}.quran-kicker{font-size:7px;letter-spacing:1.4px}
  #invitation>.quran-interlude .quran-verse p{font-size:16px}
  #invitation>.quran-interlude .quran-verse p:nth-child(2){font-size:22px}
}
@media(prefers-reduced-motion:reduce){.logo-sheen,.cover-logo::after{animation:none;opacity:0}}
.thanks-chapter{flex-direction:column;justify-content:center}
.creator-credit{flex-shrink:0;margin-top:44px;padding-top:18px;border-top:1px solid #b6a27c24;text-align:center;color:var(--muted);font-size:10px;line-height:1.8;letter-spacing:1px}
.creator-credit .creator-logo{display:block;width:44px;height:44px;object-fit:contain;margin:0 auto 10px}
.creator-label{display:block;margin-bottom:9px}
.creator-credit small{display:block;font-size:9px;letter-spacing:.5px;margin-top:4px}
@media(max-width:649px){.creator-credit{margin-top:32px}}
