:root{--paper:#f5f2eb;--ink:#36382e;--olive:#6c7259;--muted:#707065;--line:#d8d8ca;--serif:'Cormorant Garamond',Georgia,serif;--sans:'DM Sans',sans-serif;--window-w:220px;--window-h:310px;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 var(--sans);-webkit-font-smoothing:antialiased}button,input,textarea{font:inherit}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--olive);outline-offset:5px}button{border:0;background:none}::selection{background:#dce0cc}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400}em{font-weight:400}img{display:block;max-width:100%}.eyebrow{font:10px/1.5 var(--sans);letter-spacing:.2em;text-transform:uppercase}.site-header{position:absolute;inset:0 0 auto;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:21px 7%;height:94px}.wordmark{font:31px/1 var(--serif);display:flex;align-items:center;min-height:44px;letter-spacing:-.06em}.wordmark span{font-size:18px;font-style:italic;margin:0 4px}.site-header nav{display:flex;gap:22px;align-items:center}.site-header nav a{font-size:11px;letter-spacing:.02em;min-height:44px;display:flex;align-items:center;gap:16px}.site-header nav button{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;font-size:25px;line-height:1}.journey{height:390svh}.stage{height:100svh;min-height:640px;position:sticky;top:0;overflow:hidden;isolation:isolate;background:var(--paper);perspective:1800px}.sky,.arrival,.paper-surround,.cover,.inside-copy,.arrival-copy{position:absolute;inset:0}.sky{background:#bdc9cb url('assets/sky.jpg') center 45%/cover;transform:scale(1.05);z-index:0}.sky:after{content:'';position:absolute;inset:0;background:linear-gradient(#e5d8bd24,#f2e7d833)}.arrival{background:#778171 url('assets/madrid.jpg') center 57%/cover;opacity:0;z-index:1;filter:saturate(.55)}.arrival:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#191f1910,#19231c70)}.paper-surround{z-index:2;pointer-events:none;display:flex;align-items:center;justify-content:center}.window-rim{width:var(--window-w);height:var(--window-h);border-radius:47% 47% 45% 45% / 35% 35% 35% 35%;box-shadow:0 0 0 150vmax var(--paper),inset 0 0 0 1px #979b8570,0 0 0 8px #e6e6da,0 0 0 9px #c3c7b6;position:relative;transform:translateY(20px)}.inside-copy{z-index:3;display:flex;align-items:center;flex-direction:column;justify-content:space-between;text-align:center;padding:15svh 24px 10svh;pointer-events:none}.inside-copy p{position:absolute;top:calc(50% + 195px);font:32px/1.1 var(--serif)}.inside-copy .small-caption{font-size:9px;letter-spacing:.2em;margin-top:auto}.cover{background:var(--paper);z-index:5;transform-origin:left center;will-change:transform;backface-visibility:hidden}.cover:before{content:'';position:absolute;inset:20px;border:1px solid #6c72591c;pointer-events:none}.cover:after,.invitation:after{content:'';position:absolute;inset:0;pointer-events:none;opacity:.18;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%2381816f' filter='url(%23n)' opacity='.2' d='M0 0h160v160H0z'/%3E%3C/svg%3E")}.cover-inner{width:min(100% - 112px,1120px);height:100%;margin:auto;display:flex;flex-direction:column;align-items:center;padding:121px 0 43px;text-align:center}.cover-top{display:flex;justify-content:space-between;width:100%;color:var(--olive)}.edition{font:10px/1.5 var(--sans);letter-spacing:.16em}.cover-title{margin:auto 0;position:relative;padding:25px 0 30px}.tiny-flower{display:block;color:var(--olive);font-size:23px;margin:0 0 26px}.intro-line{font:italic 21px/1.3 var(--serif);color:var(--muted);margin-bottom:20px}h1{font-size:clamp(88px,10.2vw,150px);letter-spacing:-.065em;line-height:.76}h1 .amp{font-size:.57em;letter-spacing:-.07em;font-style:italic;vertical-align:middle;color:var(--olive);margin-left:.08em}h1 .second-name{display:inline-block;margin-left:.5em;margin-top:.12em}.cover-subtitle{font:14px/1.5 var(--sans);color:var(--muted);margin:35px 0 0}.cover-bottom{width:100%;display:flex;flex-direction:column;align-items:center;position:relative}.bottom-rule{width:42px;height:1px;background:#a8ad95;margin:0 0 17px}.cover-bottom .eyebrow{font-size:9px}.discover{display:flex;align-items:center;flex-direction:column;font-size:10px;letter-spacing:.03em;margin-top:24px;min-height:44px}.scroll-line{height:25px;width:1px;background:var(--olive);margin-top:12px;position:relative;transform-origin:top;animation:breathe 2.8s ease-in-out infinite}.scroll-line:after{content:'';position:absolute;bottom:0;width:5px;height:5px;border-right:1px solid var(--olive);border-bottom:1px solid var(--olive);transform:translateX(-2px) rotate(45deg)}.skip{position:absolute;right:0;bottom:0;font-size:10px;color:var(--muted);min-height:44px;display:flex;align-items:center;gap:12px}.fold-light{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 65%,#77775d20 85%,#ffffef80);opacity:0}.chapter-indicator{position:absolute;bottom:24px;left:7%;right:7%;display:flex;align-items:center;gap:15px;font-size:8px;letter-spacing:.12em;z-index:6;opacity:0;pointer-events:none;color:var(--ink)}.chapter-indicator .track{width:60px;height:1px;background:#a3a791}.track i{height:1px;display:block;background:currentColor;transform:scaleX(0);transform-origin:left}.arrival-copy{z-index:4;opacity:0;color:#fffdf3;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:25px}.arrival-copy .eyebrow{max-width:260px}.arrival-copy p{font:clamp(70px,9vw,130px)/.9 var(--serif);letter-spacing:-.045em;margin:30px 0}.arrival-location{font-size:10px;letter-spacing:.2em;margin-top:25px}.journey-marker{position:absolute;top:100%;pointer-events:none}.section-pad{padding:120px max(7%,24px)}.invitation{position:relative;text-align:center;min-height:760px;display:flex;align-items:center;flex-direction:column;justify-content:center}.invitation h2{font-size:clamp(42px,5.2vw,72px);line-height:1.05;letter-spacing:-.035em;margin:28px 0 40px}.invitation h2 em{color:var(--olive)}.invitation-body{max-width:390px;position:relative;z-index:1}.ornament{color:var(--olive);display:block;font-size:21px;margin-bottom:25px}.invitation-body p{font-size:14px;color:#67695e;margin:15px 0;line-height:1.9}.invitation-body p:first-of-type{font-size:17px;color:var(--ink)}.signature{display:block;font:italic 34px/1.3 var(--serif);margin-top:30px}.text-link{display:flex;align-items:center;gap:50px;font-size:11px;border-bottom:1px solid var(--line);padding:12px 0;min-height:44px;margin-top:42px;z-index:1}.destination{height:620px;position:relative;margin:0 28px;overflow:hidden;background:#636f61}.destination img{width:100%;height:100%;object-fit:cover;filter:saturate(.55);object-position:50% 55%}.destination:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent,#14201780)}.destination-content{position:absolute;z-index:1;left:7%;bottom:65px;color:#fffdf2}.destination-content p{font:110px/.95 var(--serif);letter-spacing:-.04em;margin:20px 0}.destination-content>span:last-child{font-size:13px}.photo-note{position:absolute;right:20px;bottom:18px;z-index:1;font-size:9px;color:#fff9}.details{display:grid;grid-template-columns:1fr 1fr;gap:8%;max-width:1400px;margin:auto}.section-heading h2{font-size:64px;line-height:1;letter-spacing:-.03em;margin-top:25px}.section-heading h2 em{color:var(--olive)}.detail-list article{display:flex;gap:22px;border-top:1px solid var(--line);padding:27px 0 30px}.detail-number{font-size:10px;color:var(--olive);padding-top:10px}.detail-list h3{font-size:34px;line-height:1.2;margin-bottom:11px}.detail-list p{font-size:13px}.detail-note{font-size:11px;display:block;color:var(--muted);margin-top:5px}.detail-symbol{margin-left:auto;padding-top:9px;color:var(--olive)}.rsvp{text-align:center;background:#e8ebdf}.rsvp h2{font-size:clamp(48px,6vw,76px);line-height:1.1;letter-spacing:-.04em;margin:25px 0 15px}.rsvp>p{font-size:13px;color:#5d6552}.primary-button{background:var(--ink);color:var(--paper);min-height:54px;padding:15px 27px;display:inline-flex;justify-content:space-between;align-items:center;gap:40px;font-size:12px;transition:background .25s,transform .25s}.primary-button:hover{background:#525a42;transform:translateY(-2px)}.rsvp .primary-button{margin-top:35px}.demo-note{font-size:10px;display:block;margin-top:16px;color:#5d6552}footer{text-align:center;padding:65px 24px 25px}footer .wordmark{justify-content:center}footer p{font:italic 21px var(--serif);margin:20px 0}footer .replay{font-size:11px;min-height:44px}footer small{display:block;font-size:9px;color:var(--muted);margin-top:35px}dialog{border:1px solid var(--line);background:var(--paper);color:var(--ink);padding:50px 35px 35px;width:min(480px,calc(100% - 32px));max-height:calc(100svh - 40px);overflow:auto}dialog::backdrop{background:#23271d80;backdrop-filter:blur(5px)}.close-dialog{position:absolute;top:10px;right:10px;font-size:26px;width:44px;height:44px}dialog h2{font-size:50px;line-height:1.2;margin:20px 0 8px}.dialog-intro{font-size:12px;color:var(--muted);margin-bottom:25px}form>label,legend{display:block;font-size:12px;margin-bottom:8px}form>label span{color:var(--muted)}input[type=text],input:not([type]),textarea{width:100%;border:1px solid var(--line);border-radius:0;padding:12px;background:transparent;color:var(--ink);font-size:16px}fieldset{border:0;padding:0;margin:24px 0}.choice{display:flex;gap:12px;align-items:center;min-height:44px;font-size:14px}.choice input{accent-color:var(--olive);width:18px;height:18px}form .primary-button{width:100%;margin-top:20px}.form-status{font-size:13px;margin-top:15px}.reduce-motion .journey{height:100svh}.reduce-motion .stage{position:relative}.reduce-motion .scroll-line{animation:none}.reduce-motion .discover{display:none}.reduce-motion .cover-title{padding-top:15px}.reduce-motion .cover{transform:none!important;opacity:1!important}.reduce-motion .skip{position:static;margin-top:18px}.reduce-motion .chapter-indicator{display:none!important}@keyframes breathe{0%,100%{transform:scaleY(.75);opacity:.5}50%{transform:scaleY(1);opacity:1}}
@media(min-width:1100px){.cover-title:before{content:'';position:absolute;width:230px;height:340px;border:1px solid #aeb49845;border-radius:120px;top:40px;left:-190px;transform:rotate(-13deg);z-index:-1}.cover-title:after{content:'';position:absolute;width:230px;height:340px;border:1px solid #aeb49845;border-radius:120px;top:40px;right:-190px;transform:rotate(13deg);z-index:-1}}
@media(max-width:640px){.site-header{height:84px;padding:16px 27px}.site-header nav{gap:12px}.site-header nav a{font-size:10px;gap:10px}.site-header nav button{width:38px;height:44px;border:0}.cover:before{inset:12px}.cover-inner{width:calc(100% - 54px);padding:105px 0 28px}.cover-top{justify-content:center}.cover-top .eyebrow{font-size:9px}.edition{display:none}.cover-title{padding:20px 0 35px;width:100%}.tiny-flower{margin-bottom:28px;font-size:20px}.intro-line{font-size:19px;margin-bottom:30px}h1{font-size:clamp(80px,22vw,115px);line-height:.8;letter-spacing:-.065em}h1 .second-name{margin-left:.14em;margin-top:.15em}.cover-subtitle{font-size:11px;max-width:230px;margin:30px auto 0;line-height:1.7}.cover-bottom .eyebrow{font-size:8px}.discover{margin-top:20px}.skip{position:static;font-size:9px;gap:15px;margin-top:10px}.bottom-rule{margin-bottom:13px}.stage{min-height:680px}.inside-copy{padding-top:16svh;padding-bottom:9svh}.inside-copy>.eyebrow{font-size:8px}.inside-copy p{font-size:27px;top:calc(50% + 190px)}.inside-copy .small-caption{font-size:8px}.arrival-copy .eyebrow{font-size:8px;max-width:230px}.arrival-copy p{font-size:76px}.section-pad{padding:82px 26px}.invitation{min-height:740px}.invitation>.eyebrow{font-size:9px}.invitation h2{font-size:42px;margin:25px -8px 30px}.invitation-body{max-width:295px}.invitation-body p{font-size:13px}.signature{font-size:31px}.destination{height:520px;margin:0 12px}.destination img{object-position:43% 50%}.destination-content{left:26px;bottom:54px}.destination-content .eyebrow{font-size:8px}.destination-content p{font-size:85px}.destination-content>span:last-child{font-size:11px}.photo-note{font-size:8px}.details{display:block}.section-heading h2{font-size:53px;margin:20px 0 45px}.detail-list article{gap:18px;padding:23px 0 26px}.detail-list h3{font-size:31px}.detail-list p{font-size:12px}.detail-note{font-size:10px}.rsvp h2{font-size:49px}.rsvp>.eyebrow{font-size:8px}.rsvp>p{font-size:12px}.rsvp .primary-button{margin-top:28px}.demo-note{font-size:9px}.chapter-indicator{left:27px;right:27px;bottom:25px}.reduce-motion .journey{height:auto}.reduce-motion .stage{height:100svh;min-height:680px}}
@media(max-height:740px) and (max-width:640px){.cover-inner{padding-top:92px;padding-bottom:22px}.tiny-flower{margin-bottom:15px}.intro-line{margin-bottom:22px}.cover-title{padding:15px 0 20px}.cover-subtitle{margin-top:25px}.discover{margin-top:14px}.scroll-line{height:18px}.skip{margin-top:4px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.journey{height:auto}.stage{position:relative}.cover{transform:none!important;opacity:1!important}.chapter-indicator{display:none}.discover{display:none}.skip{position:static;margin-top:16px}}
/* Reading and navigation remain comfortable on a phone. */
.site-header{position:fixed;transition:color .25s}
.on-image .site-header{color:#fffdf3}.on-image .site-header nav button{border-color:#fff6}
.invitation-body p{font-size:16px;line-height:1.85}.invitation-body p:first-of-type{font-size:18px}
.detail-list p{font-size:16px}.detail-note{font-size:13px}.rsvp>p{font-size:16px}
@media(max-width:640px){.invitation{min-height:810px}.invitation-body p{font-size:16px}.detail-list p{font-size:16px}.detail-note{font-size:13px}.rsvp>p{font-size:15px}.detail-list article{gap:14px}.detail-list h3{font-size:33px}}
.paper-bend{position:absolute;inset:0;z-index:5;pointer-events:none;transform-style:preserve-3d;visibility:hidden}
.paper-strip{position:absolute;left:0;top:0;height:100%;overflow:hidden;transform-origin:left center;backface-visibility:hidden;will-change:transform}
.paper-strip .strip-face{position:absolute;top:0;bottom:0;right:auto;transform:none;visibility:visible;backface-visibility:visible}
.strip-shade{position:absolute;inset:0;background:linear-gradient(90deg,#363b29,transparent);pointer-events:none}
.reduce-motion .paper-bend{display:none}
@media(prefers-reduced-motion:reduce){.paper-bend{display:none}}
.site-header{padding-top:max(16px,env(safe-area-inset-top));padding-left:max(7%,env(safe-area-inset-left));padding-right:max(7%,env(safe-area-inset-right))}
@media(max-width:640px){.site-header{padding-left:max(27px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right))}.site-header nav button{width:44px;min-height:44px}}
/* Second direction: warm paper opens onto a cool, sculpted cabin. */
:root{--cabin:#9bafb6;--cabin-ink:#243d46;--window-w:232px;--window-h:324px}
.sky{background-image:url('assets/sky-altitude.jpg');background-position:center 64%;filter:saturate(.77);will-change:transform}
.sky:after{background:linear-gradient(125deg,#fff6e615,transparent 55%,#e3f1f012)}
.paper-surround:after{content:'';position:absolute;inset:0;background:linear-gradient(115deg,#f7fbf52a,transparent 47%,#263f4920);pointer-events:none}
.window-rim{border-radius:45% 45% 43% 43% / 32% 32% 32% 32%;box-shadow:0 0 0 150vmax var(--cabin),0 0 0 8px #d9e0df,0 0 0 10px #f0f2e8,0 0 0 13px #81969d;will-change:transform;transform-origin:center}
.window-rim:before{content:'';position:absolute;inset:-12px;border-radius:inherit;border:1px solid #eef3e7b0;box-shadow:inset 5px 5px 10px #344b5550,inset -4px -5px 7px #ffffff90,7px 10px 22px #344d5740;pointer-events:none}
.window-glass{position:absolute;inset:0;overflow:hidden;border-radius:inherit;box-shadow:inset 4px 5px 17px #28455030,inset -2px -3px 5px #fff5}
.window-glass:after{content:'';position:absolute;inset:-40%;background:linear-gradient(115deg,transparent 42%,#ffffff26 48%,#ffffff08 57%,transparent 62%);transform:translateX(var(--glass-x,-12%))}
.cabin-seam{position:absolute;top:-10%;height:120%;width:25%;border-radius:50%;border-left:1px solid #edf2ee32;box-shadow:-1px 0 0 #4c65701a}
.seam-left{left:5%}.seam-right{right:-20%}
.inside-copy{color:var(--cabin-ink)}.inside-copy>.eyebrow{letter-spacing:.24em}.inside-copy p{font-size:34px;top:calc(50% + 212px)}.inside-copy .small-caption{font-size:8px;letter-spacing:.14em;color:#304c57}
.window-enter{position:absolute;left:50%;top:calc(50% + 20px);transform:translate(-50%,-50%);width:var(--window-w);height:var(--window-h);border-radius:45% 45% 43% 43% / 32% 32% 32% 32%;z-index:4;opacity:0;pointer-events:none;color:var(--cabin-ink);outline-offset:19px}
.window-enter:disabled{cursor:default}.window-action{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:16px;white-space:nowrap;font-size:10px;letter-spacing:.03em;background:#f2f6eecc;padding:9px 14px;border:1px solid #fff5;border-radius:30px;backdrop-filter:blur(5px);transition:background .3s,transform .3s}
.window-enter:not(:disabled):hover .window-action{background:#f9fcf1;transform:translateX(-50%) translateY(-3px)}
.window-enter:not(:disabled):active .window-action{transform:translateX(-50%) scale(.96)}
.in-cabin .chapter-indicator{color:var(--cabin-ink)}
.primary-button span,.text-link span,.replay span{transition:transform .3s}.primary-button:hover span{transform:translate(3px,-3px)}.text-link:hover span{transform:translateY(4px)}
.destination img{transition:transform 1s cubic-bezier(.2,.65,.3,1)}.destination:hover img{transform:scale(1.025)}
@media(max-width:640px){.inside-copy p{font-size:29px;top:calc(50% + 212px)}.inside-copy .small-caption{font-size:7px;letter-spacing:.12em}.seam-left{left:-10%}.seam-right{right:-36%}}
.reduce-motion .window-enter{display:none}
@media(prefers-reduced-motion:reduce){.window-enter{display:none}.destination:hover img{transform:none}}
.journey{overflow-anchor:none}
.arrival-copy{pointer-events:none}
/* A short aircraft passage precedes the cabin. */
.journey{height:490svh}
.flight-scene{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:hidden;background:radial-gradient(ellipse at 20% 0%,#ecede3,transparent 65%),#c6d0ca;color:#2b403d}
.flight-scene:before{content:'';position:absolute;width:140%;height:140%;left:-20%;top:-20%;border:1px solid #829b8940;border-radius:50%;transform:rotate(-22deg)}
.flight-copy{position:absolute;left:0;right:0;top:15%;text-align:center;z-index:2}
.flight-copy .eyebrow{font-size:10px;letter-spacing:.18em;font-weight:500}.flight-copy p{font:clamp(51px,6.5vw,90px)/.98 var(--serif);letter-spacing:-.04em;margin-top:22px}
.flight-plane{position:absolute;left:50%;top:55%;width:min(38vw,340px);transform:translate(-50%,-50%);will-change:transform;filter:drop-shadow(18px 34px 17px #334b4533)}.flight-plane img{width:100%;height:auto}
.flight-caption{position:absolute;left:0;right:0;bottom:9%;text-align:center;font-size:9px;letter-spacing:.16em}.flight-caption span{margin:0 16px;color:#596d62}
/* Photography begins in normal flow; JS progressively enables the spatial sequence. */
.memories{background:#eae8e0;position:relative}.memories-stage{position:relative;padding:85px 7%;overflow:hidden;isolation:isolate}
.memory-title{text-align:center;position:relative;z-index:4}.memory-title .eyebrow{font-size:10px;letter-spacing:.16em;color:#555d4e}.memory-title h2{font-size:clamp(45px,5vw,68px);line-height:1;letter-spacing:-.035em;margin:22px 0 45px}.memory-title em{color:#616d54}
.memory-canvas{display:grid;grid-template-columns:repeat(3,1fr);gap:25px;position:relative}
.memory-frame{margin:0;position:relative;overflow:hidden;box-shadow:0 15px 45px #313b281c;background:#acb3a6;border:5px solid #f8f6ef;height:350px}
.memory-frame img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.55);object-position:55% 50%}.memory-left img{object-position:60% 50%}.memory-right img{object-position:60% 55%}
.memory-caption{position:relative;text-align:center;padding:45px 0 20px}.memory-caption .eyebrow{font-size:10px;letter-spacing:.17em}.memory-caption p{font:52px/1 var(--serif);letter-spacing:-.035em;margin:20px 0}.memory-next{font-size:13px;min-height:44px;display:inline-flex;align-items:center;gap:40px;border-bottom:1px solid #76806e55;padding:12px 0}
.memory-reference{position:relative;display:block;text-align:center;font-size:9px;letter-spacing:.12em;color:#4e594c;margin-top:25px}.memory-scroll{display:none}
.has-motion .memories{height:245svh}.has-motion .memories-stage{height:100svh;min-height:680px;padding:0;position:sticky;top:0;perspective:1200px}
.has-motion .memory-title{position:absolute;left:20px;right:20px;top:13%;z-index:4;pointer-events:none}.has-motion .memory-title h2{margin-bottom:0}
.has-motion .memory-canvas{display:block;position:absolute;inset:0;perspective:1200px;transform-style:preserve-3d;pointer-events:none}
.has-motion .memory-frame{position:absolute;will-change:transform;transform-origin:center;backface-visibility:hidden}
.has-motion .memory-left{width:clamp(160px,23vw,320px);height:clamp(210px,28vw,400px);left:21%;top:51%;z-index:1}
.has-motion .memory-right{width:clamp(160px,23vw,320px);height:clamp(210px,28vw,400px);left:81%;top:61%;z-index:2}
.has-motion .memory-main{width:clamp(230px,31vw,450px);height:clamp(330px,37vw,510px);left:50%;top:58%;z-index:3}
.has-motion .memory-main:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#0b171b0a 20%,#10221d35 45%,#0b191be8);opacity:var(--caption-shade,0)}
.has-motion .memory-caption{position:absolute;z-index:5;left:8%;right:8%;bottom:13%;padding:0;color:#fffdf2;text-align:left;opacity:0;pointer-events:none;text-shadow:0 2px 15px #0004}
.has-motion .memory-caption p{font-size:clamp(45px,5.5vw,76px);font-weight:500}.has-motion .memory-next{border-color:#fff8;color:#fffdf2;pointer-events:auto}
.has-motion .memory-reference{position:absolute;z-index:6;left:20px;right:20px;bottom:5%;font-size:9px;pointer-events:none;margin:0;letter-spacing:.1em;transition:color .3s}
.has-motion .memory-scroll{display:flex;position:absolute;z-index:4;bottom:10%;left:0;right:0;justify-content:center;align-items:center;gap:18px;font-size:9px;letter-spacing:.1em;pointer-events:none}
/* Readable light type rests on a local vignette, preserving the city around it. */
.arrival:after{background:radial-gradient(ellipse 85% 66% at 50% 47%,#0c1d21ba 0%,#12232669 50%,#17252128 85%),linear-gradient(180deg,#101e2366,transparent 40%,#0a1b20a6)}
.arrival-copy{color:#fffdf2}.arrival-copy .eyebrow{font-size:11px;font-weight:500;letter-spacing:.17em;line-height:1.8;max-width:310px;text-shadow:0 2px 10px #0007}
.arrival-copy p{font-weight:500;text-shadow:0 3px 25px #0005}.arrival-location{font-size:12px;font-weight:500;letter-spacing:.18em;text-shadow:0 2px 10px #0008}
.arrival-copy .eyebrow:before{content:'';display:block;width:30px;height:1px;background:#fffbd9c0;margin:0 auto 22px}
.on-image .site-header{color:#fffdf2;background:linear-gradient(180deg,#10202690,#10202600);text-shadow:0 1px 12px #0006}
.on-image .site-header nav a{font-size:12px;font-weight:500}.on-image .site-header nav button{background:#152b2630;backdrop-filter:blur(6px);border-color:#fff9}
.destination:after{background:linear-gradient(90deg,#0b1d2299,transparent 90%),linear-gradient(180deg,transparent 20%,#0b1d22bd)}
.destination-content{color:#fffdf2;text-shadow:0 2px 18px #0005}.destination-content .eyebrow{font-size:11px;font-weight:500;letter-spacing:.16em}.destination-content p{font-weight:500}.destination-content>span:last-child{font-size:16px}.photo-note{color:#fffdf2;background:#0e222947;padding:5px 9px;border-radius:2px}
@media(max-width:640px){.flight-copy{top:16%}.flight-copy p{font-size:52px}.flight-copy .eyebrow{font-size:9px}.flight-plane{width:260px;top:60%}.flight-caption{font-size:8px;bottom:8%}.flight-caption span{margin:0 9px}.memory-canvas{grid-template-columns:1fr;max-width:360px;margin:auto}.memory-frame{height:340px}.memories-stage{padding:75px 24px}.memory-title h2{font-size:45px}.has-motion .memory-title{top:14%}.has-motion .memory-title .eyebrow{font-size:9px}.has-motion .memory-left{width:145px;height:205px;left:13%;top:53%}.has-motion .memory-right{width:145px;height:205px;left:88%;top:60%}.has-motion .memory-main{width:220px;height:325px;top:59%}.has-motion .memory-caption{left:27px;right:27px;bottom:15%}.has-motion .memory-caption p{font-size:48px}.has-motion .memory-reference{font-size:8px;bottom:5%}.arrival-copy .eyebrow{font-size:10px;max-width:270px}.arrival-copy p{font-size:78px}.arrival-location{font-size:12px}.destination-content .eyebrow{font-size:10px}.destination-content>span:last-child{font-size:15px}.photo-note{font-size:9px}.on-image .site-header nav a{font-size:11px}}
.reduce-motion .flight-scene{display:none}.reduce-motion .memory-frame,.reduce-motion .memory-title,.reduce-motion .memory-caption{transform:none!important;opacity:1!important}.reduce-motion .memory-next{pointer-events:auto!important}
@media(prefers-reduced-motion:reduce){.flight-scene{display:none}.memories{height:auto!important}.memories-stage{height:auto!important;position:relative!important}.memory-frame{transform:none!important}.memory-reference{transition:none}}
/* Spatial layers must not become browser scroll anchors while they scale. */
.memories,.memories-stage,.memory-canvas,.memory-frame{overflow-anchor:none}
.has-motion .memory-reference{font-size:10px}
@media(max-width:640px){.has-motion .memory-reference{font-size:9px}}
@media(min-width:900px){
 .flight-copy{left:10%;right:auto;width:44%;top:32%;text-align:left}
 .flight-plane{left:73%;top:54%;width:min(31vw,390px)}
 .flight-caption{left:10%;right:auto;text-align:left}
 .has-motion .memory-main{top:64%;height:clamp(310px,52svh,510px)}
 .has-motion .memory-left{top:57%;height:clamp(210px,36svh,400px)}
 .has-motion .memory-right{top:68%;height:clamp(210px,36svh,400px)}
 .has-motion .memory-scroll{bottom:6.5%}
 .has-motion .memory-reference{bottom:2.5%}
}
.on-image .site-header{background:linear-gradient(180deg,#102026cc,#10202680 65%,#10202600)}
/* The couple's own emblem and photographs replace the provisional identity. */
:root{--olive:#816d43}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}
.cover-title{width:min(720px,100%)}
.couple-emblem{display:block;position:relative;aspect-ratio:2 / 1;overflow:hidden}
.couple-emblem img{position:absolute;left:-13.333%;top:-43.333%;width:128%;max-width:none;height:auto;display:block}
.cover-emblem{width:min(680px,100%);margin:12px auto 0}
.cover-title .intro-line{margin-bottom:0}
.cover-title .cover-subtitle{margin-top:18px}
.cover-title:before,.cover-title:after{display:none}
.footer-emblem{width:min(280px,100%);margin:auto}
.invitation-date{font:24px/1.3 var(--serif);color:var(--olive);margin:-16px 0 30px}
.invitation-date span{display:block;font:11px/1.5 var(--sans);letter-spacing:.12em;margin-top:10px;text-transform:uppercase;color:#626558}
.memory-frame img{filter:none}
.memory-main img{object-position:50% 40%}
.memory-left img{object-position:50% 52%}
.memory-right img{object-position:50% 70%}
@media(max-width:640px){
 .cover-title{padding:20px 0 35px}
 .cover-emblem{width:100%;margin-top:18px}
 .cover-title .intro-line{font-size:20px}
 .cover-title .cover-subtitle{margin-top:24px;font-size:12px;max-width:250px}
 .cover-bottom>.eyebrow{font-size:8px;letter-spacing:.12em}
 .invitation-date{font-size:24px;margin:-8px 0 28px}
 .invitation{min-height:890px}
}
.couple-emblem img{width:120%}
@media(min-width:641px) and (max-height:800px){
 .cover-emblem{width:min(560px,100%)}
 .cover-title{padding:15px 0 20px}
 .cover-inner{padding-top:110px;padding-bottom:30px}
 .cover-title .cover-subtitle{margin-top:10px}
}
/* Native deep links jump directly; intentional transitions use explicit JS scrolling. */
html{scroll-behavior:auto}
.emblem-fallback{font:clamp(42px,12vw,80px)/1 var(--serif);letter-spacing:-.04em;margin:28px 0}
.footer-logo-fallback{font:italic 34px/1.3 var(--serif)}
.memory-title em{color:var(--olive)}

/* Proposal: resample the source at its displayed size, never magnify a small GPU texture. */
.has-motion .memory-main{will-change:auto;background:#f2f1ed}
.memory-main img{object-position:50% 76%;filter:none}
.has-motion .memory-caption{top:16%;bottom:auto;color:#303a37;text-shadow:none}
.has-motion .memory-caption p{font-size:clamp(38px,4.3vw,66px);line-height:1.04}
.has-motion .memory-caption .memory-next{color:inherit;border-color:#303a3766}
@media(min-width:700px){
 .has-motion .memory-main img{object-fit:contain}
 .has-motion .memory-caption{left:6%;right:auto;top:27%;width:29%}
 .has-motion .memory-caption p{font-size:clamp(32px,3.8vw,58px)}
}
@media(max-width:640px){
 .has-motion .memory-caption{top:16%;left:30px;right:25px}
 .has-motion .memory-caption p{font-size:40px;margin:12px 0 18px}
 .has-motion .memory-caption .eyebrow{font-size:8px}
 .has-motion .memory-caption .memory-next{font-size:11px;max-width:160px}
}
.reduce-motion .memory-main{width:auto!important;height:350px!important;border-width:5px!important}
@media(prefers-reduced-motion:reduce){.memory-main{width:auto!important;height:350px!important;border-width:5px!important}}

/* Quiet glass navigation and a warmer, lighter invitation finish. */
.site-header nav{gap:12px}
.site-header nav a{position:relative;isolation:isolate;overflow:hidden;min-height:44px;padding:0 17px;gap:13px;border:1px solid #ffffffb0;border-radius:100px;background:linear-gradient(145deg,#ffffff79,#ffffff26);box-shadow:inset 0 1px 0 #ffffffd9,inset 0 -1px 0 #fff5,0 3px 16px #493d2910;backdrop-filter:blur(18px) saturate(125%);-webkit-backdrop-filter:blur(18px) saturate(125%);transition:background .3s,box-shadow .3s,transform .3s}
.site-header nav a:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(115deg,transparent 10%,#ffffff65 45%,transparent 75%);opacity:.5;pointer-events:none}
.site-header nav a:hover{background:#ffffff8c;box-shadow:inset 0 1px 0 #fff,0 5px 20px #493d2914;transform:translateY(-1px)}
.site-header nav a:active{transform:scale(.98)}
.on-image .site-header nav a{background:linear-gradient(135deg,#ffffff29,#ffffff0d);border-color:#ffffff50;box-shadow:inset 0 1px 0 #ffffff50,0 4px 18px #00000012}
.on-image .site-header nav a:hover{background:#ffffff35}
.cover{background:radial-gradient(ellipse at 50% 43%,#fffdf6 0%,#f5f1e8 58%,#eee7da 100%)}
.cover:before{inset:23px;border-color:#9f88652e;border-radius:3px}
.cover-inner{position:relative}
.cover-top{color:#7b705e}
.cover-title .intro-line{font-size:22px;font-style:italic;color:#7c6c54}
.cover-emblem{width:min(500px,82%);margin:25px auto 0}
.cover-title .cover-subtitle{font-size:12px;letter-spacing:.035em;color:#756d60;margin-top:27px}
.bottom-rule{background:#a98d6245;width:42px}
.cover-bottom>.eyebrow{color:#7b705e}
.flight-plane{width:min(47vw,420px)}
.flight-plane img{object-fit:contain}
.rsvp{position:relative;background:radial-gradient(ellipse at 50% 40%,#fbf8f2,#f0e9df);border-top:1px solid #ab8e6220;border-bottom:1px solid #ab8e621a}
.rsvp>.eyebrow{color:#8a7556}
.rsvp h2{color:#443b31;font-weight:400}
.rsvp>p{color:#84796c}
#open-rsvp{position:relative;border:1px solid #ae92705c;border-radius:100px;background:#ffffff52;color:#6b5439;min-height:56px;padding:8px 9px 8px 25px;gap:30px;font-size:12px;letter-spacing:.025em;box-shadow:inset 0 1px 0 #fff,0 5px 18px #79604407;transition:background .3s,border-color .3s,box-shadow .3s,transform .3s}
#open-rsvp span{display:grid;place-items:center;width:36px;height:36px;border:1px solid #ae927028;border-radius:50%;background:#b49b7612;font-size:15px;transition:transform .3s,background .3s}
#open-rsvp:hover{background:#fff9;border-color:#ae9270a0;box-shadow:inset 0 1px 0 #fff,0 8px 24px #79604410;transform:translateY(-2px)}
#open-rsvp:hover span{transform:rotate(45deg);background:#b49b7625}
#open-rsvp:active{transform:translateY(0) scale(.98)}
.rsvp .demo-note{color:#938678;font-size:10px;margin-top:19px}
footer{padding-top:48px;background:#f7f3ec}
.footer-emblem{width:165px;opacity:.62;filter:grayscale(1) sepia(.15)}
footer p{font-size:18px;color:#8b7c6a;margin-top:14px}
footer .replay{color:#8b7c6a;font-size:10px}
footer small{color:#a29789;font-size:8px;margin-top:25px}
@media(min-width:900px){.flight-plane{width:min(38vw,480px)}}
@media(max-width:640px){
 .site-header nav{gap:8px}
 .site-header nav a,.on-image .site-header nav a{font-size:10px;padding:0 14px;gap:10px}
 .cover:before{inset:14px}
 .cover-title .intro-line{font-size:20px}
 .cover-emblem{width:84%;margin-top:26px}
 .cover-title .cover-subtitle{margin-top:26px;font-size:11px;max-width:225px}
 .cover-title{padding-bottom:34px}
 .cover-top .eyebrow{letter-spacing:.18em;font-size:8px}
 .flight-plane{width:min(82vw,325px);top:62%}
 .rsvp{padding:90px 26px 80px}
 .rsvp h2{font-size:46px}
 .rsvp>p{font-size:14px;line-height:1.7;max-width:260px;margin-left:auto;margin-right:auto}
 .rsvp .demo-note{font-size:9px}
 .footer-emblem{width:145px}
}

/* Readable supporting type on compact phones; preserve the invitation's established scale. */
.ornament{width:28px;height:28px;margin:0 auto 25px;overflow:visible}
.cover-top .eyebrow,.cover-top .edition{font-size:12px;letter-spacing:.12em;color:#74634d}
.cover-title .intro-line{font-size:26px;color:#74634d}
.cover-title .cover-subtitle{font-size:16px;line-height:1.65;letter-spacing:0;color:#665d50;max-width:350px}
.cover-bottom>.eyebrow{font-size:12px;letter-spacing:.08em;color:#74634d;line-height:1.6}
.discover{font-size:14px;line-height:1.5}
.skip{font-size:13px;color:#6b6255}
.site-header nav a,.on-image .site-header nav a{font-size:12px}
.flight-copy .eyebrow,.memory-title .eyebrow,.has-motion .memory-title .eyebrow,.memory-caption .eyebrow,.has-motion .memory-caption .eyebrow{font-size:12px;letter-spacing:.1em}
.flight-caption{font-size:12px;letter-spacing:.08em}
.inside-copy>.eyebrow{font-size:12px;letter-spacing:.1em;max-width:300px;line-height:1.7}
.inside-copy .small-caption{font-size:11px;letter-spacing:.06em;max-width:300px;line-height:1.6}
.arrival-copy .eyebrow,.destination-content .eyebrow{font-size:12px;letter-spacing:.1em}
.arrival-location{font-size:13px}
.chapter-indicator,.has-motion .memory-reference,.memory-scroll,.photo-note{font-size:11px}
.has-motion .memory-next{font-size:14px}
.rsvp>.eyebrow{font-size:12px;letter-spacing:.1em}
#open-rsvp{font-size:14px}
.rsvp .demo-note{font-size:12px;line-height:1.6;color:#7c6e5e}
footer .replay{font-size:13px}
footer small{font-size:11px;line-height:1.6;color:#827666}
@media(max-width:640px){
 .site-header nav a,.on-image .site-header nav a{font-size:12px;padding:0 14px}
 .cover-top .eyebrow{font-size:12px;letter-spacing:.1em}
 .cover-title .intro-line{font-size:24px;line-height:1.35;max-width:290px;margin:0 auto}
 .cover-title .cover-subtitle{font-size:16px;max-width:285px;line-height:1.55;margin-top:20px}
 .cover-bottom>.eyebrow{font-size:12px;letter-spacing:.055em}
 .discover{font-size:14px;margin-top:17px}
 .skip{font-size:13px;margin-top:6px;gap:10px;line-height:1.5}
 .cover-title{padding:20px 0 26px}
 .cover-emblem{margin-top:18px}
 .flight-caption{font-size:11px;letter-spacing:.045em}
 .flight-copy .eyebrow{font-size:12px;max-width:290px;margin:auto}
 .inside-copy .small-caption{font-size:11px;letter-spacing:.035em}
 .arrival-copy .eyebrow{font-size:12px;max-width:285px}
 .destination-content .eyebrow{font-size:12px}
 .has-motion .memory-caption .eyebrow,.has-motion .memory-title .eyebrow{font-size:12px}
 .has-motion .memory-reference{font-size:11px}
 .rsvp>.eyebrow{font-size:12px;letter-spacing:.08em}
 .rsvp .demo-note{font-size:12px;max-width:270px;margin-left:auto;margin-right:auto}
}
@media(max-width:360px){
 .cover-title .intro-line{font-size:23px}
 .cover-bottom>.eyebrow{letter-spacing:.015em}
 .cover-title .cover-subtitle{max-width:255px}
}
/* Keep the cabin's enlarged supporting type separated on short phone viewports. */
@media(max-width:640px) and (max-height:740px){
 .inside-copy p{top:calc(50% + 190px);font-size:27px}
}

/* Cover uses only the names and infinity mark; the date is introduced inside. */
.cover-emblem{aspect-ratio:2.9 / 1}
.cover-emblem img{top:-62.8333%}

/* Two fine botanical accents share one small SVG; no continuously running animation. */
.spring-sprig{position:absolute;height:auto;pointer-events:none;user-select:none;opacity:.7}
.cover{overflow:hidden}
.cover-inner{z-index:1}
.spring-cover{width:clamp(130px,16vw,220px);right:1%;top:15%;transform:rotate(14deg);transform-origin:bottom center;animation:spring-arrive 1.6s ease-out both}
.paper-strip .spring-cover{animation:none}
footer{position:relative;isolation:isolate;overflow:hidden}
.spring-footer{width:clamp(120px,13vw,170px);left:9%;bottom:-40px;transform:rotate(-24deg);opacity:.6}
footer>.couple-emblem,footer>p,footer>button,footer>small{position:relative;z-index:1}
@keyframes spring-arrive{from{opacity:0;transform:translateY(8px) rotate(12deg)}to{opacity:.7;transform:translateY(0) rotate(14deg)}}
@media(max-width:640px){
 .spring-cover{width:110px;right:-8px;top:12%;opacity:.7}
 .spring-footer{width:110px;left:-28px;bottom:-33px;transform:rotate(-19deg)}
}
.reduce-motion .spring-sprig{animation:none}
@media(prefers-reduced-motion:reduce){.spring-sprig{animation:none}}

/* Approved watercolor artwork: one cached alpha image reused in the two corners. */
.spring-cover{width:clamp(260px,28vw,380px);top:-30px;right:-25px;opacity:.94;transform:none;transform-origin:top right;animation:watercolor-arrive 1.5s ease-out both}
.spring-cover-bottom{width:clamp(190px,20vw,280px);left:0;bottom:-15px;transform:rotate(180deg);opacity:.86;animation:watercolor-lower-arrive 1.7s ease-out both}
.paper-strip .spring-cover,.paper-strip .spring-cover-bottom{animation:none}
.spring-footer{width:190px;left:2%;bottom:-20px;transform:rotate(180deg);opacity:.8}
@keyframes watercolor-arrive{from{opacity:0;translate:0 -5px}to{opacity:.94;translate:0 0}}
@keyframes watercolor-lower-arrive{from{opacity:0;translate:0 5px}to{opacity:.86;translate:0 0}}
@media(max-width:640px){
 .spring-cover{width:185px;top:-10px;right:-25px;opacity:.94}
 .spring-cover-bottom{width:180px;left:0;bottom:-5px;opacity:.86}
 .spring-footer{width:160px;left:0;bottom:-20px;opacity:.8}
 .cover-top{position:relative;z-index:1}
}
.reduce-motion .spring-sprig{animation:none}
@media(prefers-reduced-motion:reduce){.spring-sprig{animation:none}}
.cover-title .cover-subtitle{margin-left:auto;margin-right:auto}
.cover-top .edition{display:none}
/* Let the watercolor frame extend inward, beyond the corners. */
.spring-cover{width:clamp(340px,35vw,480px);right:0;top:-12px}
.spring-cover-bottom{width:clamp(245px,26vw,355px);left:12px;bottom:0}
@media(max-width:640px){
 .spring-cover{width:245px;right:-4px;top:0}
 .spring-cover-bottom{width:205px;left:5px;bottom:3px}
}
@media(max-width:640px){
 .spring-cover-bottom{bottom:-30px}
 .cover-top{justify-content:flex-start}
 .cover-top .eyebrow{max-width:145px;text-align:left;line-height:1.6}
}
@media(max-width:640px){
 .cover-bottom .skip{align-self:flex-end;width:180px;max-width:180px;text-align:right;justify-content:flex-end}
}
