@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=Plus+Jakarta+Sans:wght@400;500;600;700&family=Libre+Caslon+Display&family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&display=swap');
:root{--cream:#f6f2ec;--green:#39332f;--lime:#e4d3c4;--p:0}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--cream);color:var(--green);font:14px/1.6 'DM Sans',sans-serif}h1,h2,p{margin:0}button,input,textarea,select{font:inherit}a{color:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}[hidden]{display:none!important}:focus-visible{outline:3px solid #adbd7e;outline-offset:5px}header{position:fixed;z-index:50;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:20px 4vw;color:white;transition:color .4s;pointer-events:none}header>*{pointer-events:auto}header.dark{color:var(--green)}.brand{font-size:35px;font-weight:500;letter-spacing:-7px;text-decoration:none;line-height:1}.brand span{display:inline-block;transform:translateY(9px);margin-left:5px}.date-link{text-decoration:none;font-size:13px}.pill{display:inline-flex;padding:12px 22px;border-radius:100px;text-decoration:none;border:1px solid currentColor;font-size:12px;background:transparent;align-items:center;justify-content:center;transition:background .3s,color .3s}.pill:hover{background:var(--lime);color:var(--green);border-color:var(--lime)}.dock{position:fixed;z-index:60;bottom:20px;left:50%;transform:translateX(-50%);padding:7px;display:flex;gap:5px;background:#f3f0e6dd;border:1px solid #ffffff50;border-radius:50px;backdrop-filter:blur(18px);box-shadow:0 4px 30px #14261a15}.dock a{border-radius:50%;height:32px;width:32px;display:grid;place-items:center;font-size:10px;text-decoration:none;transition:background .3s}.dock a.active{background:var(--green);color:var(--lime)}.opening{height:180svh;position:relative}.scene{height:100svh;min-height:600px;position:sticky;top:0;overflow:hidden;background:#c2b4a5;clip-path:inset(calc(var(--p)*4%) calc(var(--p)*5%) round calc(var(--p)*110px));transform:translateY(calc(var(--p)*-1px))}.landscape{position:absolute;inset:-7%;background:url('assets/cover.jpg') center 53%/cover;transform:scale(calc(1.02 + var(--p)*.18)) translateY(calc(var(--p)*-3%));will-change:transform}.vignette{position:absolute;inset:0;background:linear-gradient(#1a2f2525,transparent 40%,#12251e99)}.name{position:absolute;color:#f6f3eb;font-size:clamp(100px,16vw,260px);font-family:'Plus Jakarta Sans',sans-serif;letter-spacing:-.07em;line-height:.85;text-shadow:0 2px 35px #12251e20}.first{top:16%;left:5%;transform:translateX(calc(var(--p)*-15vw));animation:come 1.3s both}.second{bottom:19%;right:5%;transform:translateX(calc(var(--p)*15vw));animation:come 1.3s .15s both}.amp{position:absolute;top:45%;left:9%;font-family:'Plus Jakarta Sans',sans-serif;font-size:85px;color:var(--lime);transform:rotate(-15deg);opacity:calc(1 - var(--p))}.scene-bottom{position:absolute;bottom:35px;left:5%;right:5%;display:flex;justify-content:space-between;align-items:center;color:white;font-size:12px}.scene-bottom>span:last-child{text-align:right}.scroll-button{width:50px;height:65px;border:1px solid #ffffff77;border-radius:40px;display:grid;place-items:center;font-size:25px;text-decoration:none;animation:bob 2s infinite}.memories{min-height:900px;padding:120px 9vw 100px;position:relative;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:7vw}.section-number{font-size:12px;display:block;margin-bottom:30px}.memory-title h1,.day-intro h2{font-size:clamp(65px,8vw,120px);font-weight:500;letter-spacing:-.07em;line-height:.95}em{font-family:'Plus Jakarta Sans',sans-serif;font-weight:400;font-style:normal}.memory-title p{margin-top:30px;font-size:13px}.photo-stack{height:520px;position:relative;perspective:1000px}.print{position:absolute;inset:0;border:0;padding:12px 12px 15px;background:#fffdf8;border-radius:28px;box-shadow:0 25px 60px #18352828;transition:transform .75s cubic-bezier(.2,.8,.2,1),opacity .35s;transform-origin:center 80%;overflow:hidden}.print img{width:100%;height:calc(100% - 40px);object-fit:cover;border-radius:20px;pointer-events:none}.print span{display:flex;justify-content:space-between;padding:12px 10px 0;color:var(--green);font-size:11px}.print b{font-size:20px;font-weight:400;line-height:1}.print.leaving{transform:translate(100px,-80px) rotate(24deg)!important;opacity:0}.photo-hint{grid-column:2;text-align:center;font-size:11px;margin-top:-10px}.day{background:var(--green);color:var(--cream);border-radius:70px 70px 0 0;padding:110px 8vw;display:grid;grid-template-columns:1fr 1fr;gap:9vw}.day-intro{position:sticky;top:130px;align-self:start}.day-intro em{color:var(--lime)}.day-bottom{margin-top:50px;display:flex;gap:35px;align-items:center}.day-bottom>span{font-size:50px;letter-spacing:-3px}.schedule details{border-bottom:1px solid #ffffff30;padding:28px 0}.schedule summary{display:grid;grid-template-columns:62px 1fr 30px;gap:20px;align-items:start;cursor:pointer;list-style:none}.schedule summary::-webkit-details-marker{display:none}.schedule time{color:var(--lime);font-size:13px;padding-top:8px}.schedule summary>span{font-size:clamp(32px,4vw,55px);letter-spacing:-.04em;line-height:1.1}.schedule summary>b{border:1px solid #ffffff50;border-radius:50%;width:30px;height:30px;display:grid;place-items:center;font-weight:400;transition:transform .4s}.schedule details[open] summary>b{transform:rotate(45deg);background:var(--lime);color:var(--green)}.detail{padding:25px 30px 5px 82px;font-size:13px;color:#d3dace;animation:come .5s}.detail a{display:inline-block;margin-top:15px;text-decoration:none;border-bottom:1px solid #bfc8b5;padding-bottom:3px}.rsvp-section{background:var(--green);color:var(--cream);padding:90px 8vw 80px;position:relative}.rsvp-section::before{content:'';position:absolute;left:8vw;right:8vw;top:0;height:1px;background:#ffffff30}.rsvp-heading h2{font-size:clamp(100px,20vw,290px);letter-spacing:-.09em;line-height:.85;font-weight:400}.rsvp-heading h2>span{display:inline-block;color:var(--lime);font-family:'Plus Jakarta Sans',sans-serif;transform:rotate(12deg)}.rsvp-heading>p{margin:35px 0 65px;color:#ced6c9;font-size:13px}.form-wrap{max-width:750px;margin-left:auto}form{display:grid;grid-template-columns:1fr 1fr;gap:28px}form>fieldset,form>#details,form>label:has(textarea),.form-note,form>.button{grid-column:1/-1}label{display:block;font-size:12px}input:not([type=radio]),textarea,select{width:100%;display:block;padding:15px 17px;background:#ffffff08;border:1px solid #ffffff30;color:var(--cream);border-radius:17px;margin-top:9px;outline-offset:3px}select option{color:#25362f;background:var(--cream)}textarea{resize:vertical;min-height:70px}textarea::placeholder{font-size:11px;color:#bac5b4}fieldset{padding:0;margin:0;border:0}legend{font-size:12px;margin-bottom:12px}.options{display:flex;gap:10px}.options label{position:relative}.options input{position:absolute;opacity:0}.options span{display:block;padding:13px 24px;border:1px solid #ffffff40;border-radius:50px;cursor:pointer}.options input:checked+span{background:var(--lime);color:var(--green);border-color:var(--lime)}.options input:focus-visible+span{outline:2px solid white;outline-offset:3px}#details,#plus{display:grid;gap:25px}.button{background:var(--lime);color:var(--green);border:0;border-radius:50px;padding:18px 26px;display:flex;justify-content:space-between;align-items:center;font-size:13px;text-decoration:none;transition:transform .3s}.button:hover{transform:translateY(-3px)}.form-note{font-size:10px;max-width:520px;color:#b6c2b0}.text-link{color:var(--cream);background:none;border:0;border-bottom:1px solid #ffffff60;padding:8px 0;margin-top:20px;cursor:pointer}#result pre{white-space:pre-wrap;overflow-wrap:anywhere;padding:25px;background:#ffffff08;border-radius:20px;font:13px/1.8 'DM Sans',sans-serif}#result h3{font-size:30px;font-weight:400}#result p{font-size:12px;margin:15px 0}.gift{margin-top:70px;max-width:750px;margin-left:auto;border-top:1px solid #ffffff30;padding-top:25px;font-size:12px}.gift summary{display:flex;justify-content:space-between;cursor:pointer;list-style:none}.gift p{color:#c4cfbf;margin-top:20px}footer{background:var(--green);color:#b9c5b1;padding:30px 8vw 105px;display:flex;justify-content:space-between;gap:20px;font-size:10px}footer a{text-decoration:none}.memory-title,.photo-stack,.day-intro,.schedule details,.rsvp-heading,.form-wrap{opacity:0;translate:0 35px;transition:opacity 1s,translate 1s}.in{opacity:1!important;translate:0 0!important}@keyframes come{from{opacity:0;filter:blur(8px)}to{opacity:1;filter:none}}@keyframes bob{50%{translate:0 7px}}@media(max-width:760px){header{padding:22px 24px}.date-link{font-size:11px}.pill{padding:10px 16px;font-size:11px}.opening{height:155svh}.scene{min-height:600px}.landscape{background-position:52% center;inset:-4%}.first{top:20%;left:6%;font-size:24vw}.second{bottom:23%;right:6%;font-size:24vw}.amp{font-size:60px;top:40%;left:8%}.scene-bottom{bottom:85px;font-size:10px;left:6%;right:6%}.scroll-button{width:38px;height:50px}.memories{padding:65px 28px 85px;min-height:900px;grid-template-columns:1fr;gap:50px}.memory-title h1{font-size:76px}.memory-title p{margin-top:20px}.section-number{margin-bottom:24px}.photo-stack{height:440px;max-width:330px;width:calc(100% - 25px);margin:auto}.photo-hint{grid-column:1;margin:0}.day{padding:65px 28px;border-radius:40px 40px 0 0;grid-template-columns:1fr;gap:35px}.day-intro{position:static}.day-intro h2{font-size:76px}.day-bottom{margin-top:30px;justify-content:space-between}.day-bottom>span{font-size:36px}.schedule summary{grid-template-columns:50px 1fr 30px;gap:14px}.schedule summary>span{font-size:39px}.detail{padding-left:64px;padding-right:0}.rsvp-section{padding:60px 28px}.rsvp-section::before{left:28px;right:28px}.rsvp-heading h2{font-size:24vw}.rsvp-heading>p{margin:30px 0 40px;font-size:12px}form{grid-template-columns:1fr}form>label{grid-column:1/-1}.options span{padding:13px 20px}footer{padding-inline:28px;flex-wrap:wrap}.dock{bottom:15px}.gift{margin-top:45px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}.scene{clip-path:none;transform:none}.landscape,.first,.second{transform:none}.memory-title,.photo-stack,.day-intro,.schedule details,.rsvp-heading,.form-wrap{opacity:1;translate:none}}

form>label:first-child{grid-column:1/-1}

/* Warm paper, readable type and a lighter invitation rhythm. */
body{background:#f6f2ec;color:#39332f;font-size:15px}
header{padding:23px 5vw}header.dark{color:#39332f;background:#f6f2eceb;backdrop-filter:blur(14px);border-radius:0 0 24px 24px}
.brand{font-family:'Plus Jakarta Sans',sans-serif;font-size:21px;font-weight:600;letter-spacing:-1px}.brand span{font-size:16px;transform:none;margin:0 4px;font-weight:400}
.pill{background:#fffaf025;border-color:currentColor;font-size:13px}.pill:hover{background:#eadbce;color:#39332f;border-color:#d3bca7}
.opening{height:165svh}.scene{min-height:640px;background:#c2b4a5}.landscape{background-position:center 55%}.vignette{background:linear-gradient(#30251b38,transparent 40%,#33281e75)}
.name{font-family:'Plus Jakarta Sans',sans-serif;font-weight:600;font-size:clamp(80px,11.5vw,175px);letter-spacing:-.065em;line-height:1;color:#fffdf7;text-shadow:0 2px 24px #31281e22}
.first{top:16%;left:6%}.second{bottom:21%;right:6%}.amp{font:500 70px 'Plus Jakarta Sans',sans-serif;color:#f3e0cb;top:44%;left:9%;transform:rotate(-8deg)}
.scene-bottom{bottom:45px;font-size:13px;line-height:1.65}.hero-invite{font-weight:500}.celebrate-mark{position:absolute;right:7%;top:19%;z-index:2;color:#f6e5ce;font-size:75px;line-height:1;animation:turn 35s linear infinite;opacity:calc(1 - var(--p))}
.scroll-button{background:#fffcf315;backdrop-filter:blur(5px);height:58px;width:46px}
.memories{padding-top:100px;padding-bottom:100px;min-height:800px;background:#f6f2ec}.memory-title{position:relative}.flower{display:block;font-size:65px;color:#b28570;line-height:1;margin-bottom:25px;animation:sway 6s ease-in-out infinite}.section-number{font-size:14px;letter-spacing:0;margin-bottom:25px;font-weight:500}
.memory-title h1,.day-intro h2{font-family:'Plus Jakarta Sans',sans-serif;font-size:clamp(60px,6.7vw,104px);font-weight:600;letter-spacing:-.06em;line-height:1.05}em{font-family:'Plus Jakarta Sans',sans-serif;font-weight:500;font-style:normal}.memory-title p{font-size:16px;margin-top:25px}.photo-stack{height:480px}.photo-hint{font-size:12px;color:#796c60}.print{box-shadow:0 22px 45px #5545361c;border-radius:28px}.print span{justify-content:flex-end}.print b{font-weight:500;font-size:12px;padding:2px 4px}.print:hover img{filter:saturate(1.08)}
.day{background:#eae0d5;color:#39332f;border-radius:65px 65px 0 0;padding-block:95px;gap:8vw}.day-intro em{color:#77604e}.day-bottom>span{font-size:36px;font-weight:500;letter-spacing:-1.5px}.day-bottom .pill{background:#faf6ef;border-color:#c2b1a0}.schedule details{border-color:#baa89570;padding:26px 0}.schedule time{color:#7d604d;font-size:15px}.schedule summary>span{font-size:clamp(30px,3.3vw,47px);font-weight:500;line-height:1.16;letter-spacing:-.04em}.schedule summary>b{border-color:#bca692;color:#6b5342}.schedule details[open] summary>b{background:#f8f3e9;color:#6b5342}.detail{font-size:14px;color:#695d52}.detail a{border-color:#a18d7a;color:#4c4037}
.rsvp-section{background:#fcfaf6;color:#39332f;padding-top:90px;padding-bottom:70px;border-radius:65px 65px 0 0;margin-top:-1px}.rsvp-section::before{display:none}.rsvp-heading h2{font:500 clamp(90px,13vw,190px)/1 'Plus Jakarta Sans',sans-serif;letter-spacing:-.075em}.rsvp-heading h2>span{color:#b28570;font-family:inherit;transform:rotate(9deg)}.rsvp-heading>p{color:#6b5f54;font-size:14px;margin:28px 0 50px}.form-wrap{max-width:740px}form{gap:25px}label,legend{font-size:14px}input:not([type=radio]),textarea,select{color:#39332f;border:1px solid #cdbfaf;background:#f5f0e8;border-radius:18px;padding:15px 18px;font-size:16px}select option{background:#fcfaf6;color:#39332f}textarea::placeholder{color:#867768;font-size:13px}.options span{border-color:#bca994;background:#fffdf9;font-size:14px}.options input:checked+span{background:#e8d8c8;color:#39332f;border-color:#ac8e75}.options input:focus-visible+span{outline-color:#8f7059}.button{background:#e1cbb6;color:#39332f;font-weight:600;font-size:14px;padding:19px 25px}.button:hover{background:#d5b89d}.text-link{color:#695447;border-color:#bba590}.form-note{color:#827467;font-size:11px}.gift{border-color:#d3c5b5;font-size:14px}.gift p{color:#736255;font-size:13px}#result pre{background:#f2eae0;color:#39332f;font:14px/1.8 'DM Sans',sans-serif}#result p{font-size:14px}
footer{background:#fcfaf6;color:#7c6a5b;padding:28px 8vw 45px;font-size:12px;border-top:1px solid #e7ddd2}
.confetti{position:fixed;inset:0;z-index:100;pointer-events:none;overflow:hidden}.confetti i{position:absolute;left:var(--x);top:-25px;width:8px;height:14px;border-radius:2px;background:var(--color);animation:fall 2s var(--delay) ease-in forwards}@keyframes fall{to{translate:20px 105vh;rotate:var(--r);opacity:0}}@keyframes turn{to{rotate:360deg}}@keyframes sway{50%{rotate:18deg;scale:1.05}}
@media(max-width:760px){header{padding:20px 24px}.brand{font-size:19px}.date-link{font-size:12px}.pill{font-size:12px;padding:10px 15px}.scene{min-height:620px}.opening{height:145svh}.name{font-size:18vw}.first{top:21%;left:7%}.second{bottom:25%;right:7%}.amp{font-size:48px;top:43%;left:8%}.celebrate-mark{font-size:45px;top:32%;right:10%}.scene-bottom{bottom:35px;font-size:11px}.memories{padding:70px 28px 75px;min-height:850px;gap:45px}.flower{font-size:48px;margin-bottom:15px}.memory-title h1,.day-intro h2{font-size:61px}.memory-title p{font-size:15px}.photo-stack{height:410px}.section-number{font-size:13px;margin-bottom:20px}.day{padding:65px 28px;border-radius:38px 38px 0 0}.schedule summary>span{font-size:34px}.schedule time{font-size:14px;padding-top:4px}.detail{font-size:14px}.rsvp-section{padding:60px 28px;border-radius:38px 38px 0 0}.rsvp-heading h2{font-size:21vw}.rsvp-heading>p{font-size:14px;margin-bottom:35px}.gift{font-size:13px}footer{padding:25px 28px 35px;font-size:11px}.form-note{font-size:11px}}
@media(prefers-reduced-motion:reduce){.celebrate-mark,.flower{animation:none}.confetti{display:none}}

/* Portrait-led opening: continuous zoom, white dissolve, then the invitation. */
.opening{height:210svh}.scene{clip-path:none;transform:none;border-radius:0;min-height:0;isolation:isolate}.landscape{inset:0;background-position:50% 55%;transform-origin:50% 42%;transform:scale(var(--zoom,1.02));will-change:transform}.white-veil{position:absolute;inset:-1px;z-index:4;background:#f6f2ec;opacity:var(--veil,0);pointer-events:none;will-change:opacity}.vignette{opacity:calc(1 - var(--p))}.name{font-family:'Libre Caslon Display',Georgia,serif;font-weight:400;font-size:clamp(100px,14vw,210px);letter-spacing:-.025em;line-height:.9;opacity:var(--title-opacity,1);animation:none}.first{transform:translateY(calc(var(--p)*-45px));top:16%}.second{transform:translateY(calc(var(--p)*35px));bottom:21%}.scene-bottom{opacity:var(--title-opacity,1);z-index:2}.brand{font-family:'Libre Caslon Display',Georgia,serif;font-size:27px;font-weight:400;letter-spacing:0}.date-link,.pill{font-family:'DM Sans',sans-serif}.pill{font-size:13px}
.memories{position:relative;margin-top:-18svh;z-index:5;background:transparent;padding-top:85px;min-height:820px}.memory-title h1,.day-intro h2,.rsvp-heading h2{font-family:'Libre Caslon Display',Georgia,serif;font-weight:400;letter-spacing:-.025em;line-height:.98}.memory-title h1,.day-intro h2{font-size:clamp(70px,8vw,120px)}em{font-family:inherit;font-weight:400}.rsvp-heading h2{font-size:clamp(105px,16vw,225px)}.rsvp-heading h2>span{font-family:inherit;transform:none}.section-number{font-family:'DM Sans',sans-serif;font-size:13px;font-weight:400}.memory-title{transition:opacity 1.1s,translate 1.1s}.photo-stack{transition:opacity 1.2s .18s,translate 1.2s .18s}.memory-title:not(.in){translate:0 48px}.photo-stack:not(.in){translate:0 65px}.schedule summary>span{font-family:'Libre Caslon Display',Georgia,serif;font-size:clamp(36px,4vw,57px);font-weight:400;letter-spacing:-.015em}.day-bottom>span{font-family:'Libre Caslon Display',Georgia,serif;font-size:45px}.day-intro em{color:#77604e}
@media(max-width:760px){.opening{height:195svh}.landscape{background-position:52% center;transform-origin:50% 40%}.name{font-size:24vw}.first{top:20%;left:7%}.second{bottom:24%;right:7%}.brand{font-size:25px}.memories{margin-top:-12svh;padding-top:65px;min-height:850px}.memory-title h1,.day-intro h2{font-size:75px}.rsvp-heading h2{font-size:27vw}.schedule summary>span{font-size:42px}.scene-bottom{bottom:35px}}
@media(prefers-reduced-motion:reduce){.opening{height:100svh}.landscape{transform:none}.white-veil{display:none}.name,.scene-bottom{opacity:1;transform:none}.memories{margin-top:0}.memory-title:not(.in),.photo-stack:not(.in){translate:none}.name{animation:none}}
.memories{margin-top:-80svh}@media(max-width:760px){.memories{margin-top:-65svh}}@media(prefers-reduced-motion:reduce){.memories{margin-top:0}}

/* An open, illustrated wedding-day journey. */
:root{--cream:#fffdf9;--green:#353b46;--lime:#d9e7f5}body{background:#fffdf9;color:#353b46}header.dark{background:#fffdf9ed;color:#353b46}.white-veil{background:#fffdf9}.memories{color:#353b46}.section-number{color:#626b78}.photo-hint{color:#657082}.print{background:#fff;box-shadow:0 18px 45px #526d8d18}.print span{color:#535f71}.pill:hover{background:#e4edf8;color:#353b46;border-color:#b7cbe3}.pill{color:inherit}.adventure{padding:85px 7vw 75px;background:#edf4fb;border-radius:65px 65px 0 0;position:relative}.adventure-heading{text-align:center;max-width:620px;margin:0 auto 35px}.adventure-heading h2{font:400 clamp(66px,7.5vw,110px)/.98 'Libre Caslon Display',Georgia,serif;letter-spacing:-.02em;color:#353b46}.adventure-heading h2 em{color:#637fa4}.adventure-heading p{font-size:15px;margin:25px 0}.adventure-heading .pill{border-color:#bdcee1;background:#fffdf9;font-size:12px}.route{position:relative;max-width:1000px;margin:0 auto}.route-line{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.route-line path{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.route-base{stroke:#b9cde3;stroke-dasharray:5 9}.route-progress{stroke:#7294bb;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .15s linear}.stop{position:relative;min-height:200px;display:flex;align-items:center}.stop-icon{position:absolute;left:50%;top:50%;translate:-50% -50%;background:#fffdf9;border:1px solid #d2e0ef;width:70px;height:70px;border-radius:50%;display:grid;place-items:center;box-shadow:0 8px 22px #6b8db012;scale:.85;transition:scale .7s,rotate .7s}.stop-icon svg{height:34px;width:34px;fill:none;stroke:#6585ad;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.stop-info{width:39%;text-align:right;padding:10px 0;opacity:.4;translate:0 14px;transition:opacity .7s,translate .7s}.stop:nth-of-type(even) .stop-info{margin-left:61%;text-align:left}.stop.arrived .stop-info{opacity:1;translate:0 0}.stop.arrived .stop-icon{scale:1;rotate:-6deg}.stop:nth-of-type(even).arrived .stop-icon{rotate:6deg}.stop time{font:500 14px 'DM Sans',sans-serif;color:#6883a3;display:block;margin-bottom:10px}.stop h3{font:500 clamp(25px,2.7vw,36px)/1.15 'Plus Jakarta Sans',sans-serif;letter-spacing:-.04em;margin:0 0 12px}.stop p{font-size:13px;line-height:1.7;color:#677386}.map-link{font-size:12px;color:#4f719b;display:inline-block;margin-top:12px;text-decoration:none;border-bottom:1px solid #a5bbd7;padding-bottom:3px}.stop small{display:block;font-size:10px;color:#7a8595;margin-top:9px}.rsvp-section{background:#fffdf9;color:#353b46;border-radius:0;padding-top:85px}.rsvp-heading h2>span{color:#d99b99}.rsvp-heading>p{color:#687385}.rsvp-section label,.rsvp-section legend{color:#505c6e}input:not([type=radio]),textarea,select{background:#f4f7fb;border-color:#d0dbe8;color:#353b46}textarea::placeholder{color:#8a94a3}select option{background:white;color:#353b46}.options span{background:white;border-color:#c4d3e5}.options input:checked+span{background:#dce9f7;border-color:#95b1d2;color:#353b46}.button{background:#d6e5f6;color:#35455c}.button:hover{background:#bfd4ec}.form-note{color:#7a8595}.text-link{color:#58779d;border-color:#b8cce1}#result pre{background:#edf4fb;color:#353b46}.wedding-extras{display:grid;grid-template-columns:1fr 1fr;gap:0;background:#fffdf9;padding:35px 6vw 80px}.wedding-extras article{padding:55px 8%;text-align:center;min-width:0}.present-panel{background:#f3f1fa;border-radius:45px 0 0 45px}.album-panel{background:#f9eeee;border-radius:0 45px 45px 0}.extra-icon{height:52px;width:52px;stroke:#8c85a8;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;margin:0 auto 22px}.album-panel .extra-icon{stroke:#bf8d8a}.wedding-extras h2{font:400 clamp(42px,4.3vw,66px)/1.02 'Libre Caslon Display',Georgia,serif;letter-spacing:-.02em;color:#424353}.wedding-extras p{font-size:13px;line-height:1.8;max-width:360px;margin:25px auto;color:#727183}.bank-info{max-width:340px;margin:28px auto 0;padding:25px 20px;border-block:1px solid #d5d0e4}.bank-info dl{margin:0}.bank-info dt{font-size:10px;color:#8c849f;text-transform:uppercase;letter-spacing:.1em;margin-bottom:4px}.bank-info dd{font-size:13px;color:#585266;margin:0 0 16px}.bank-info dd:last-child{margin:0}.album-preview{display:flex;justify-content:center;margin:30px auto 25px}.snapshot{width:110px;height:130px;background:#fffdf9;padding:15px 14px 25px;box-shadow:0 5px 18px #8c5d6212;rotate:-10deg;border-radius:6px;display:grid;place-items:center}.snapshot+ .snapshot{rotate:10deg;margin-left:-15px;translate:0 8px}.snapshot svg{width:75px;fill:none;stroke:#d3aeac;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}.wedding-extras .album-pending{font-size:11px;max-width:290px;color:#a17d7c;margin-bottom:0}footer{background:#fffdf9;color:#7d8794;border-color:#e4eaf2}
@media(max-width:760px){.adventure{padding:65px 24px 45px;border-radius:38px 38px 0 0}.adventure-heading{margin-bottom:25px}.adventure-heading h2{font-size:68px}.adventure-heading p{font-size:14px}.route{margin-top:30px}.route-line{display:none}.route:before{content:'';position:absolute;left:31px;top:55px;bottom:65px;border-left:2px dashed #bad0e8}.stop{min-height:188px;align-items:center}.stop-icon{left:32px;width:58px;height:58px}.stop-icon svg{height:29px;width:29px}.stop-info,.stop:nth-of-type(even) .stop-info{margin-left:84px;width:calc(100% - 84px);text-align:left}.stop h3{font-size:26px}.stop p{font-size:12px}.stop time{font-size:13px}.rsvp-section{padding-top:65px}.wedding-extras{grid-template-columns:1fr;padding:0 20px 45px;gap:15px}.wedding-extras article{border-radius:32px;padding:42px 22px}.wedding-extras h2{font-size:52px}.wedding-extras p{font-size:13px}.extra-icon{width:45px;height:45px}.present-panel{border-radius:32px}.bank-info{padding:22px 5px}.stop small{font-size:10px}}
@media(prefers-reduced-motion:reduce){.stop-info{opacity:1;translate:none}.stop-icon{scale:1;rotate:none}.route-progress{transition:none}}

.stop-info{opacity:1}.stop:nth-of-type(3) .stop-icon svg,.stop:nth-of-type(5) .stop-icon svg{stroke:#c28d91}.stop:nth-of-type(3) time,.stop:nth-of-type(5) time{color:#aa777c}

.rsvp-section{padding:70px 8vw}.rsvp-heading{text-align:center}.rsvp-heading h2{font-size:clamp(62px,8vw,110px);line-height:1.05}.rsvp-heading .section-number{margin-bottom:18px}.rsvp-heading>p{margin:20px 0 35px}.form-wrap{margin:0 auto;max-width:590px}form{gap:18px;grid-template-columns:1fr}form>label,form>fieldset,form>#details{grid-column:1/-1}#details,#plus{gap:18px}input:not([type=radio]),select{padding:11px 15px;border-radius:12px;margin-top:7px;font-size:15px}textarea{padding:12px 15px;min-height:65px;margin-top:7px;border-radius:12px;font-size:15px}label,legend{font-size:13px}.options span{padding:10px 20px;font-size:13px}.button{padding:15px 23px;font-size:13px}.rsvp-section .button{margin-top:2px}legend{margin-bottom:10px}#result h3{font:400 42px 'Libre Caslon Display',serif}.stop-icon{border:0;background:transparent;box-shadow:none;width:160px;height:130px;border-radius:0;scale:1;rotate:0!important}.stop-icon svg{height:65px;width:65px}.route-base,.route-progress{opacity:.65}.stop-info{width:35%}.stop:nth-of-type(even) .stop-info{margin-left:65%}
@media(max-width:760px){.rsvp-section{padding:55px 25px}.rsvp-heading h2{font-size:58px}.rsvp-heading>p{margin-bottom:28px;font-size:13px}.stop-icon{left:42px;width:92px;height:90px}.stop-info,.stop:nth-of-type(even) .stop-info{margin-left:105px;width:calc(100% - 105px)}.route:before{left:42px}.stop{min-height:200px}.stop h3{font-size:24px}.stop p{font-size:12px}.options span{padding:10px 17px}}

.adventure{background:#f5f8fc}.stop{min-height:255px}.stop-icon.artwork{width:205px;height:205px;background-image:url('assets/wedding-engraving-sheet.png');background-size:300% 200%;background-repeat:no-repeat;mix-blend-mode:multiply;border-radius:0;rotate:0!important;scale:1!important}.art-0{background-position:0 0}.art-1{background-position:50% 0}.art-2{background-position:100% 0}.art-3{background-position:0 100%}.art-4{background-position:50% 100%}.art-5{background-position:100% 100%}.stop-info{width:34%}.stop:nth-of-type(even) .stop-info{margin-left:66%}.route-base,.route-progress{stroke-width:1.4;opacity:.4}
@media(max-width:760px){.adventure{padding-inline:18px}.stop{min-height:215px}.stop-icon.artwork{width:105px;height:105px;left:44px}.stop-info,.stop:nth-of-type(even) .stop-info{margin-left:110px;width:calc(100% - 110px)}.stop h3{font-size:23px}.route:before{left:44px;opacity:.45}.stop p{font-size:12px}.map-link{font-size:11px}.stop small{font-size:10px}}

.stop-icon.artwork{clip-path:inset(2% 6%)}

.iban-row{display:flex;align-items:center;justify-content:center;gap:9px;flex-wrap:wrap}#gift-iban{font-variant-numeric:tabular-nums;font-size:13px;user-select:all}#copy-iban{border:1px solid #cac4dc;background:#ffffff80;color:#666078;border-radius:30px;padding:5px 10px;font:11px 'DM Sans',sans-serif;white-space:nowrap;cursor:pointer;transition:background .2s}#copy-iban:hover{background:white}#copy-iban:focus-visible{outline:2px solid #8b83a5;outline-offset:3px}.iban-status{flex-basis:100%;font-size:10px;color:#7d748f}.iban-status:empty{display:none}

#copy-iban{border:0;border-radius:0;background:transparent;padding:2px 0;margin-left:2px;font-size:10px;font-weight:400;color:#8c8599;line-height:1.5}#copy-iban:hover{background:transparent;color:#625a75;text-decoration:underline;text-underline-offset:3px}.iban-row{gap:8px}

/* Safe areas and a compact mobile composition, including Safari's browser bars. */
:root{--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--header-height:calc(66px + var(--safe-top))}html{scroll-padding-top:calc(var(--header-height) + 18px);background:#fffdf9}body{overflow-x:clip}header{padding-top:calc(16px + var(--safe-top));padding-left:max(5vw,env(safe-area-inset-left,0px));padding-right:max(5vw,env(safe-area-inset-right,0px))}a,button,input,select,textarea{touch-action:manipulation}footer{padding-bottom:calc(35px + var(--safe-bottom))}a,button{font-variant-emoji:text}
@media(max-width:760px){
html{scroll-padding-top:calc(var(--header-height) + 16px)}header,header.dark{height:var(--header-height);min-height:var(--header-height);padding:calc(10px + var(--safe-top)) max(18px,env(safe-area-inset-right,0px)) 10px max(18px,env(safe-area-inset-left,0px));gap:12px;border-radius:0;box-sizing:border-box}header.dark{border-bottom:1px solid #e9edf2;background:#fffdf9f5}.brand{font-size:23px;line-height:1;flex-shrink:0}.date-link{font-size:11px;white-space:nowrap;min-height:44px;display:flex;align-items:center}.pill{min-height:44px;line-height:1.2;padding:10px 15px;font-size:12px;white-space:nowrap}.opening{height:155vh;height:155svh}.scene{height:100vh;height:100svh;min-height:0}.name{font-size:clamp(70px,23vw,100px);line-height:.95}.first{top:calc(var(--header-height) + 55px);left:6%}.second{bottom:calc(19% + var(--safe-bottom));right:6%}.scene-bottom{bottom:calc(20px + var(--safe-bottom));left:max(22px,env(safe-area-inset-left,0px));right:max(22px,env(safe-area-inset-right,0px));font-size:10px;gap:12px}.scroll-button{width:40px;height:48px;flex-shrink:0}.landscape{transform-origin:50% 40%}
.memories{margin-top:-100vh;margin-top:-100svh;padding:calc(var(--header-height) + 30px) max(26px,env(safe-area-inset-right,0px)) 55px max(26px,env(safe-area-inset-left,0px));min-height:0;display:flex;flex-direction:column;align-items:center;gap:30px;opacity:var(--intro-opacity,1);pointer-events:none;transition:none}.memories.intro-ready{pointer-events:auto}.memory-title{width:100%;max-width:350px}.memory-title .section-number{font-size:12px;margin-bottom:15px}.memory-title h1{font-size:clamp(53px,15vw,68px);line-height:1.02;letter-spacing:-.02em}.memory-title p{font-size:14px;margin-top:18px;line-height:1.6}.memory-title:not(.in){translate:0 20px}.photo-stack:not(.in){translate:0 28px}.photo-stack{flex:none;width:min(72vw,285px);height:clamp(285px,44svh,380px);max-width:none;margin:0 auto 5px;align-self:center}.print{padding:9px 9px 13px;border-radius:22px;box-shadow:0 15px 30px #526d8d12}.print img{border-radius:15px;height:calc(100% - 31px)}.print span{padding:9px 5px 0}.print b{font-size:11px}.photo-hint{font-size:11px;margin:0;line-height:1.4}
.adventure{padding:55px max(20px,env(safe-area-inset-right,0px)) 35px max(20px,env(safe-area-inset-left,0px));border-radius:30px 30px 0 0}.adventure-heading h2{font-size:clamp(52px,15vw,68px)}.adventure-heading p{font-size:13px;margin:19px 0}.route{margin-top:20px}.stop{min-height:205px}.stop h3{font-size:clamp(21px,6vw,25px)}.stop-icon.artwork{width:95px;height:95px;left:37px}.route:before{left:37px}.stop-info,.stop:nth-of-type(even) .stop-info{margin-left:95px;width:calc(100% - 95px)}.stop p{font-size:12px;line-height:1.65}.stop time{font-size:12px;margin-bottom:8px}.stop small{font-size:10px}.map-link{min-height:38px;display:inline-flex;align-items:center;margin-top:3px;padding:0;border:0;text-decoration:underline;text-underline-offset:4px}.stop small{margin-top:2px}
.rsvp-section{padding:50px max(23px,env(safe-area-inset-right,0px)) 45px max(23px,env(safe-area-inset-left,0px))}.rsvp-heading h2{font-size:clamp(40px,11.5vw,57px);overflow-wrap:normal}.rsvp-heading .section-number{margin-bottom:14px}.rsvp-heading>p{font-size:12px;margin:18px 0 26px}input:not([type=radio]),select,textarea{font-size:16px;min-height:46px}form{gap:17px}#details,#plus{gap:17px}.options span{min-height:44px;display:flex;align-items:center;padding:10px 17px}.button{min-height:48px}.wedding-extras{padding:0 max(18px,env(safe-area-inset-right,0px)) 35px max(18px,env(safe-area-inset-left,0px));gap:14px}.wedding-extras article{padding:35px 21px;border-radius:27px}.wedding-extras h2{font-size:clamp(39px,11.5vw,51px)}#gift-iban{font-size:12px;white-space:nowrap}#copy-iban{min-height:28px;min-width:36px;font-size:10px}.bank-info{padding-inline:0}.iban-row{gap:6px}footer{padding:25px max(23px,env(safe-area-inset-right,0px)) calc(25px + var(--safe-bottom)) max(23px,env(safe-area-inset-left,0px));font-size:10px}.text-link{min-height:44px}
}
@media(max-width:360px){header{gap:8px}.brand{font-size:21px}.date-link{font-size:10px}.pill{font-size:11px;padding-inline:12px}.memory-title h1{font-size:53px}.stop-info,.stop:nth-of-type(even) .stop-info{margin-left:84px;width:calc(100% - 84px)}.stop-icon.artwork{width:84px;height:84px;left:31px}.route:before{left:31px}.options{gap:8px}.options span{padding-inline:13px}.wedding-extras article{padding-inline:16px}#gift-iban{font-size:11px}}
@media(max-width:760px) and (orientation:landscape){.opening{height:175svh}.name{font-size:clamp(54px,12vw,85px)}.first{top:calc(var(--header-height) + 15px)}.second{bottom:23%}.scene-bottom{font-size:9px;bottom:calc(12px + var(--safe-bottom))}.photo-stack{height:320px;width:250px}.memory-title{max-width:450px}.memories{padding-top:calc(var(--header-height) + 20px)}}
@media(prefers-reduced-motion:reduce){.opening{height:100svh}.memories{margin-top:0;opacity:1;pointer-events:auto}.memory-title,.photo-stack{transition:none}}

.rsvp-heading h2{margin-bottom:32px}@media(max-width:760px){.rsvp-heading h2{margin-bottom:26px}}
@media(max-width:760px){.memories{padding-top:30px}}@media(max-width:760px) and (orientation:landscape){.memories{padding-top:25px}}

/* A more personal invitation typeface, retaining the existing opening movement. */
.landscape{background-image:url('assets/cover-new.jpeg')}.name,.brand,.memory-title h1,.adventure-heading h2,.rsvp-heading h2,.wedding-extras h2,.wedding-album h2,#result h3{font-family:'Cormorant Garamond',Georgia,serif;font-weight:500}.name{letter-spacing:-.025em}.memory-title em,.adventure-heading em,.present-panel em,.album-panel em{font-style:italic;font-weight:400}.art-1.artwork{background-image:url('assets/convent-engraving.png');background-size:contain;background-position:center;clip-path:none}.photo-playback{text-align:center;grid-column:2;margin-top:-5px}#photo-toggle{font:11px 'DM Sans',sans-serif;color:#8b929e;background:transparent;border:0;padding:8px;cursor:pointer;text-underline-offset:3px}#photo-toggle:hover{text-decoration:underline}.bus-note{margin-top:9px;display:inline-block;text-align:inherit;max-width:270px}.bus-note summary{font-size:11px;color:#77869c;cursor:pointer;text-decoration:underline;text-underline-offset:3px;list-style:none}.bus-note summary::-webkit-details-marker{display:none}.bus-note p{font-size:11px;line-height:1.6;margin-top:8px;padding:10px 12px;background:#fffdf9b0;border-radius:10px;color:#788392}.wedding-extras{display:block;background:#fffdf9;padding:55px 7vw 80px}.wedding-extras .present-panel{max-width:900px;margin:0 auto;padding:50px 8%;background:transparent;border-radius:0;border-top:1px solid #e0e5ed;border-bottom:1px solid #e0e5ed}.wedding-extras h2{font-size:clamp(55px,6vw,82px);line-height:.95;letter-spacing:-.025em}.wedding-extras .present-panel>p{max-width:490px;font-size:15px;line-height:1.9;margin:30px auto;color:#747d8b}.bank-info{max-width:470px;border:0;padding:14px 0 0;margin-top:25px}.bank-info dt{font-size:10px;color:#9097a2;letter-spacing:.13em;margin-bottom:10px}.account-holders{font-size:clamp(24px,3vw,32px)!important;font-family:'Cormorant Garamond',Georgia,serif;line-height:1.3;margin-bottom:25px!important;color:#4e5869!important}.bank-info #gift-iban{font-size:15px;letter-spacing:.02em;color:#505c70}.wedding-album{padding:35px 7vw 90px;background:#fffdf9}.wedding-album .album-panel{max-width:1000px;margin:0 auto;border-radius:42px;padding:60px 8%;text-align:center;background:#f5f7fb}.wedding-album h2{font-size:clamp(52px,6vw,78px);line-height:.98;letter-spacing:-.025em}.wedding-album p{font-size:14px;line-height:1.8;max-width:400px;margin:25px auto;color:#7b8492}.wedding-album .album-pending{font-size:11px;max-width:320px;color:#929ba8}.wedding-album .snapshot svg{stroke:#a6b6cd}.album-preview{margin:30px auto}.rsvp-heading h2{font-weight:500}
@media(max-width:760px){.photo-playback{grid-column:auto;align-self:center;margin-top:-20px}.wedding-extras{padding:30px 24px 40px}.wedding-extras .present-panel{padding:38px 0;border-radius:0}.wedding-extras h2{font-size:59px}.wedding-extras .present-panel>p{font-size:14px;max-width:320px;line-height:1.85;margin:25px auto}.account-holders{font-size:27px!important}.bank-info #gift-iban{font-size:12px}.wedding-album{padding:10px 20px 40px}.wedding-album .album-panel{padding:40px 22px;border-radius:28px}.wedding-album h2{font-size:54px}.wedding-album p{font-size:13px}.bus-note{max-width:210px}.bus-note summary{font-size:11px;min-height:28px;display:inline-flex;align-items:center}.bus-note p{font-size:11px}.stop-info p{overflow-wrap:break-word}}

.scene{--title-opacity:0}header{opacity:var(--header-opacity,0);transition:opacity .2s,color .4s}header:focus-within{opacity:1}.name-and{font-size:.48em;font-weight:400;font-style:italic;margin-left:.1em;vertical-align:middle}.name{filter:blur(calc((1 - var(--title-opacity,0))*3px))}.first{translate:0 calc((1 - var(--title-opacity,0))*16px)}.second{translate:0 calc((1 - var(--title-opacity,0))*22px)}@media(prefers-reduced-motion:reduce){header{opacity:1}.name{filter:none}.first,.second{translate:none}}

/* A continuous pale-blue invitation, with navigation only when needed. */
:root{--cream:#f5f8fc}html,body{background:#f5f8fc}.white-veil{background:#f5f8fc}.memories,.rsvp-section,.wedding-extras,.wedding-album,footer{background:#f5f8fc}.adventure{background:#f5f8fc;border-radius:0}.wedding-extras .present-panel{background:transparent;border-color:#d5e0ed}.wedding-album .album-panel{background:#eaf1f9}footer{border-color:#dce5ef}.rsvp-section input:not([type=radio]),.rsvp-section textarea,.rsvp-section select{background:#ffffff9e}.options span{background:#ffffff8c}.bus-note p{background:#ffffffa6}.scene{background:#f5f8fc}.present-panel .bank-info{background:transparent}header,header.dark{transition:translate .35s ease,opacity .25s,color .4s;background:transparent;backdrop-filter:none;border-bottom:0;box-shadow:none;border-radius:0}header.scroll-hidden{translate:0 -110%;opacity:0!important;pointer-events:none}header.scroll-hidden>*{pointer-events:none}header:focus-within{translate:0 0;opacity:1!important;pointer-events:auto}header:focus-within>*{pointer-events:auto}header.dark:not(.scroll-hidden){background:#f5f8fced;backdrop-filter:blur(12px)}
@media(max-width:760px){header,header.dark{border:0;box-shadow:none;border-radius:0}.rsvp-section,.wedding-extras,.wedding-album{background:#f5f8fc}.adventure{border-radius:0}}@media(prefers-reduced-motion:reduce){header{transition:none}}
@media(max-width:600px) and (orientation:portrait){.landscape{background-image:none}.landscape::before{content:'';position:absolute;inset:-8%;background:url('assets/cover-new.jpeg') 55% center/cover no-repeat;filter:blur(24px);opacity:.75}.landscape::after{content:'';position:absolute;inset:0;background:url('assets/cover-new.jpeg') 55% center/auto 72% no-repeat;mask-image:linear-gradient(transparent 3%,#000 24%,#000 76%,transparent 97%);-webkit-mask-image:linear-gradient(transparent 3%,#000 24%,#000 76%,transparent 97%)}}
@media(max-width:600px) and (orientation:portrait){.landscape::after{background-size:100% auto;background-position:center;mask-image:linear-gradient(transparent 20%,#000 36%,#000 64%,transparent 80%);-webkit-mask-image:linear-gradient(transparent 20%,#000 36%,#000 64%,transparent 80%)}}
@media(max-width:600px) and (orientation:portrait){.landscape::after{mask-image:linear-gradient(transparent 30%,#000 40%,#000 60%,transparent 70%);-webkit-mask-image:linear-gradient(transparent 30%,#000 40%,#000 60%,transparent 70%)}}

.contact-footer{display:block;padding:45px 8vw calc(30px + env(safe-area-inset-bottom,0px));background:#f5f8fc;color:#66768c;border-top:1px solid #dce5ef}.footer-contact{max-width:1000px;margin:0 auto 40px}.footer-contact h2{font:500 46px 'Cormorant Garamond',Georgia,serif;color:#46566d;text-align:center;margin-bottom:30px}.contact-links{display:flex;justify-content:center;gap:65px;flex-wrap:wrap}.contact-links a,.contact-links p{margin:0;font-size:13px;line-height:1.8;color:#65758b;text-align:center}.contact-links a{text-decoration:none;padding:5px 0}.contact-links a:hover{text-decoration:underline;text-underline-offset:4px}.contact-links span{display:block;font-size:11px;color:#8c98a8;margin-bottom:4px}.footer-bottom{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #e0e7f0;padding-top:22px;gap:20px;font-size:10px}.footer-bottom a{font-size:10px;text-decoration:none}@media(max-width:760px){.contact-footer{padding:35px max(24px,env(safe-area-inset-right,0px)) calc(25px + env(safe-area-inset-bottom,0px)) max(24px,env(safe-area-inset-left,0px))}.footer-contact h2{font-size:40px;margin-bottom:22px}.contact-links{gap:18px 35px}.contact-links a{min-height:48px}.contact-links p{width:100%;margin-top:3px}.footer-contact{margin-bottom:28px}.footer-bottom{flex-wrap:wrap;justify-content:center;text-align:center}.footer-bottom>a{width:auto}}

.bus-actions{display:flex;flex-direction:column;align-items:flex-end;gap:7px;margin-top:11px;max-width:100%}.bus-actions>.map-link{display:inline-flex;align-items:center;margin:0;padding:3px 0;line-height:1.5;min-height:30px;flex-shrink:0}.bus-actions .bus-note{display:block;margin:0;width:100%;max-width:285px;min-width:0;text-align:right}.bus-actions .bus-note summary{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-height:36px;padding:5px 0;line-height:1.5;font-size:11px;text-decoration:none;list-style:none;color:#7c8ba0}.bus-note summary span{border-bottom:1px dotted #b7c4d5;padding-bottom:2px;overflow-wrap:break-word}.bus-note summary::after{content:'';width:5px;height:5px;border-right:1px solid #8899ae;border-bottom:1px solid #8899ae;rotate:45deg;flex-shrink:0;transition:rotate .2s;margin-right:2px;margin-top:-3px}.bus-note[open] summary::after{rotate:225deg;margin-top:3px}.bus-actions .bus-note p{margin:6px 0 0;padding:12px 14px;font-size:11px;line-height:1.7;max-width:100%;border-radius:10px;background:#ffffffa8;text-align:left;overflow-wrap:break-word}.bus-note summary:focus-visible{outline:2px solid #9db5d1;outline-offset:3px;border-radius:4px}@media(max-width:760px){.bus-actions{align-items:flex-start;gap:3px;margin-top:8px}.bus-actions .bus-note{text-align:left;max-width:100%}.bus-actions .bus-note summary{justify-content:flex-start;min-height:38px;font-size:11px;gap:7px}.bus-actions>.map-link{min-height:34px;padding:4px 0}.stop:first-of-type{min-height:240px}.bus-actions .bus-note p{padding:11px 12px;margin-top:4px;font-size:11px}}
/* Spring wedding stationery: colored paper bands and hand-cut transitions. */
:root{--spring-sky:#e7f2fb;--spring-butter:#fff1c7;--spring-blush:#ffe5df;--spring-ivory:#fff8ee;--spring-lilac:#eee5f8;--spring-ink:#34475f;--spring-coral:#bd5d68;--spring-blue:#5477a3;--cream:var(--spring-sky)}html,body{background:var(--spring-sky);color:var(--spring-ink)}.white-veil{background:var(--spring-sky)}.memories{background:var(--spring-sky);padding-bottom:110px}.memory-title h1{color:var(--spring-ink)}.memory-title h1 em{color:var(--spring-coral)}.memory-title p{color:#5f778f}.section-number{color:#6e88a3}.print{background:#fffdf9;box-shadow:0 18px 40px #486a8c19}.print b{color:#7286a3}.adventure{background:var(--spring-butter);padding-top:100px;padding-bottom:95px;position:relative;isolation:isolate;z-index:6}.adventure-heading h2{color:#425772}.adventure-heading h2 em{color:#bc6772}.adventure-heading p{color:#747c87}.adventure-heading .section-number{color:#8e8190}.adventure-heading .pill{border-color:#d9c899;background:#fffaf0;color:#7d7890}.route-base{stroke:#c1a4ad;opacity:.45}.route-progress{stroke:#ba7d92;opacity:.65}.route:before{border-color:#ccabb7}.stop h3{color:#4b5d77}.stop time,.stop:nth-of-type(3) time,.stop:nth-of-type(5) time{color:#ba6170}.stop p{color:#7d7c85}.map-link{color:#6481a8;border-color:#bdc6c9}.bus-actions .bus-note summary{color:#8b8390}.bus-note summary span{border-color:#c3afbc}.bus-actions .bus-note p{background:#fffaf0;color:#897b87}.rsvp-section{background:var(--spring-blush);position:relative;isolation:isolate;z-index:7;padding-top:95px;padding-bottom:90px}.rsvp-heading h2{color:#a95867}.rsvp-heading .section-number{color:#b07783}.rsvp-section label,.rsvp-section legend{color:#786d7f}.rsvp-section input:not([type=radio]),.rsvp-section textarea,.rsvp-section select{background:#fffaf4cf;border-color:#e2c9c9;color:#5d6479}.rsvp-section input:focus,.rsvp-section textarea:focus,.rsvp-section select:focus{border-color:#c48c97;outline:2px solid #e5bec540}.options span{background:#fffaf3aa;border-color:#d8b9be;color:#8b6d7a}.options input:checked+span{background:#f5bcc0;color:#764e60;border-color:#cd939c}.rsvp-section .button{background:#5579a6;color:#fffdf8;box-shadow:0 5px 15px #58708c12}.rsvp-section .button:hover{background:#466a96}#result pre{background:#fffaf3a6;color:#796377}.text-link{color:#a26378;border-color:#d4a4af}.wedding-extras{background:var(--spring-ivory);position:relative;isolation:isolate;z-index:8;padding-top:70px;padding-bottom:85px}.wedding-extras .present-panel{border:0;padding-top:30px;padding-bottom:20px}.wedding-extras h2{color:#a65c70}.wedding-extras .present-panel>p{color:#867486}.bank-info dt{color:#ad8998}.account-holders{color:#8a6b86!important}.bank-info #gift-iban{color:#7c6e89}#copy-iban{color:#b29bab}.wedding-album{background:var(--spring-lilac);position:relative;isolation:isolate;z-index:9;padding-top:75px;padding-bottom:85px}.wedding-album .album-panel{background:transparent;padding-top:20px;padding-bottom:20px}.wedding-album h2{color:#7e6499}.wedding-album p{color:#8e7d9f}.wedding-album .album-pending{color:#a28bb5}.wedding-album .snapshot{background:#fffaf2;box-shadow:0 6px 20px #73568e16}.wedding-album .snapshot svg{stroke:#af8fae}.contact-footer{background:#dcecf6;position:relative;isolation:isolate;z-index:10;border:0;padding-top:55px}.footer-contact h2{color:#56759b}.contact-links a,.contact-links p{color:#6a7f99}.contact-links span{color:#92a2b6}.footer-bottom{border-color:#c7dce9;color:#7a8ca5}header.dark:not(.scroll-hidden){background:#f9f5edef;color:#536a86}.brand{color:inherit}.name{color:#fffaf0}
.adventure::before,.rsvp-section::before,.wedding-extras::before,.wedding-album::before,.contact-footer::before{content:'';display:block;position:absolute;left:-1%;right:auto;top:-26px;width:102%;height:28px;z-index:-1;background:inherit;pointer-events:none;clip-path:polygon(0 72%,2% 62%,3% 75%,5% 48%,7% 65%,9% 40%,11% 60%,13% 32%,15% 55%,17% 46%,19% 70%,21% 37%,23% 54%,25% 28%,27% 43%,29% 58%,31% 39%,33% 58%,35% 25%,37% 49%,39% 32%,41% 57%,43% 36%,45% 52%,47% 26%,49% 45%,51% 33%,53% 63%,55% 40%,57% 56%,59% 30%,61% 52%,63% 39%,65% 59%,67% 34%,69% 57%,71% 42%,73% 64%,75% 37%,77% 53%,79% 29%,81% 49%,83% 35%,85% 59%,87% 40%,89% 63%,91% 42%,93% 69%,95% 46%,97% 67%,99% 56%,100% 70%,100% 100%,0 100%);animation:paper-breathe 12s ease-in-out infinite alternate}.rsvp-section::before,.wedding-album::before{scale:-1 1;animation-direction:alternate-reverse}.rsvp-section::before{border:0;margin:0}.contact-footer::before{height:24px;top:-22px}@keyframes paper-breathe{to{translate:5px 2px}}
@media(max-width:760px){.memories{padding-bottom:80px}.adventure{padding-top:75px;padding-bottom:65px}.rsvp-section{padding-top:70px;padding-bottom:70px}.wedding-extras{padding-top:55px;padding-bottom:65px}.wedding-album{padding-top:55px;padding-bottom:65px}.wedding-album .album-panel{padding:15px 4px}.wedding-extras .present-panel{padding-top:15px}.contact-footer{padding-top:45px}.adventure::before,.rsvp-section::before,.wedding-extras::before,.wedding-album::before{height:23px;top:-21px;left:-2%;width:104%}.rsvp-section input:not([type=radio]),.rsvp-section textarea,.rsvp-section select{background:#fffaf4cf}.adventure-heading .pill{min-height:44px}}
@media(prefers-reduced-motion:reduce){.adventure::before,.rsvp-section::before,.wedding-extras::before,.wedding-album::before,.contact-footer::before{animation:none}}
.stop p,.adventure-heading p{color:#686b78}.stop time,.stop:nth-of-type(3) time,.stop:nth-of-type(5) time{color:#a64f60}.rsvp-section label,.rsvp-section legend{color:#6e6172}.rsvp-heading .section-number{color:#936275}.bank-info dt{color:#826c7c}.wedding-extras .present-panel>p{color:#776676}.wedding-album p{color:#7e6b90}.wedding-album .album-pending{color:#8c769c}.contact-links a,.contact-links p{color:#5d748f}.contact-links span{color:#7488a0}#copy-iban{color:#8f7c8d}
.adventure::before,.rsvp-section::before,.wedding-extras::before,.wedding-album::before,.contact-footer::before{left:0;right:0;width:100%}@keyframes paper-breathe{to{translate:0 2px}}
.stop-icon.artwork{background-image:url('assets/wedding-spring-watercolor.png');background-size:300% 200%;filter:none}.art-1.artwork{background-image:url('assets/wedding-spring-watercolor.png');background-size:300% 200%;background-position:50% 0;clip-path:inset(2% 6%)}.art-0{background-position:0 0}.art-2{background-position:100% 0}.art-3{background-position:0 100%}.art-4{background-position:50% 100%}.art-5{background-position:100% 100%}
/* Two background colors throughout: sky blue and butter yellow. */
:root{--spring-blush:var(--spring-sky);--spring-ivory:var(--spring-butter);--spring-lilac:var(--spring-sky);--spring-coral:#5679a0}.memories,.rsvp-section,.wedding-album{background:var(--spring-sky)}.adventure,.wedding-extras,.contact-footer{background:var(--spring-butter)}.wedding-album .album-panel,.wedding-extras .present-panel{background:transparent}.memory-title h1 em,.adventure-heading h2 em,.rsvp-heading h2,.wedding-extras h2,.wedding-album h2,.footer-contact h2{color:#55769c}.rsvp-heading .section-number,.bank-info dt{color:#7187a0}.rsvp-section label,.rsvp-section legend{color:#64778e}.rsvp-section input:not([type=radio]),.rsvp-section textarea,.rsvp-section select{background:#fffdf5;border-color:#c7d7e7;color:#4c617b}.rsvp-section input:focus,.rsvp-section textarea:focus,.rsvp-section select:focus{border-color:#8eadd0;outline:2px solid #afc8e333}.options span{background:#fffdf5;border-color:#c0d0e1;color:#69809b}.options input:checked+span{background:#bfd7ed;border-color:#8eaed0;color:#456282}.account-holders{color:#5e7695!important}.bank-info #gift-iban{color:#647b97}.wedding-extras .present-panel>p,.wedding-album p{color:#6e8097}.wedding-album .album-pending{color:#8396ab}#copy-iban{color:#91a0b4}.text-link{color:#6e85a2;border-color:#b5c7dc}#result pre{background:#fffdf5;color:#617895}.route-progress{stroke:#7c9bb9}.route-base{stroke:#a7bdd1}.stop time,.stop:nth-of-type(3) time,.stop:nth-of-type(5) time{color:#6a88a9}.route:before{border-color:#b2c7db}.contact-links a,.contact-links p{color:#6b8099}.contact-links span{color:#8b98aa}.footer-bottom{border-color:#e0d9b4;color:#8c95a1}header.dark:not(.scroll-hidden){background:var(--spring-sky)}
/* Mobile-first portrait: one sharp photograph, no duplicated or blurred layers. */
@media(max-width:760px){
:root{--mobile-hero-height:min(72svh,145vw)}.opening{height:calc(var(--mobile-hero-height) + 240px)}.scene{height:var(--mobile-hero-height);min-height:0}.landscape{background:url('assets/cover-new.jpeg') 52% 48%/cover no-repeat;filter:none;mask:none;-webkit-mask:none;transform-origin:52% 45%}.landscape::before,.landscape::after{display:none!important;content:none!important;background:none!important;filter:none!important;mask:none!important;-webkit-mask:none!important}.first{top:calc(35px + env(safe-area-inset-top,0px));left:6%}.second{bottom:24%;right:6%}.name{font-size:clamp(68px,22vw,96px);filter:none;translate:none}.scene-bottom{bottom:20px;left:max(20px,env(safe-area-inset-left,0px));right:max(20px,env(safe-area-inset-right,0px));font-size:10px;gap:10px}.scroll-button{width:36px;height:44px;font-size:20px}.memories{margin-top:calc(-1 * var(--mobile-hero-height));padding:35px max(26px,env(safe-area-inset-right,0px)) 75px max(26px,env(safe-area-inset-left,0px));gap:26px;min-height:0}.memory-title{max-width:340px}.memory-title h1{font-size:clamp(52px,15vw,65px)}.memory-title p{font-size:14px}.photo-stack{width:min(70vw,280px);height:clamp(280px,42svh,370px);margin-bottom:6px}.print{border-radius:20px}.print img{border-radius:14px}.adventure{padding-top:60px;padding-bottom:55px}.adventure-heading h2{font-size:clamp(52px,14vw,64px)}.adventure-heading p{font-size:13px;max-width:300px;margin:20px auto}.route{margin-top:22px}.stop{min-height:190px}.stop:first-of-type{min-height:230px}.stop-info,.stop:nth-of-type(even) .stop-info{margin-left:98px;width:calc(100% - 98px);min-width:0}.stop h3{font-size:clamp(21px,5.7vw,25px);overflow-wrap:break-word}.stop p{font-size:12px;line-height:1.65}.stop-icon.artwork{left:38px;width:92px;height:92px}.route:before{left:38px}.rsvp-section{padding-top:60px;padding-bottom:55px}.rsvp-heading h2{font-size:clamp(39px,10.8vw,48px);margin-bottom:24px}.rsvp-heading .section-number{font-size:12px}.form-wrap{width:100%;max-width:550px}input:not([type=radio]),textarea,select{font-size:16px;min-height:46px;max-width:100%;box-sizing:border-box}.options{flex-wrap:wrap;gap:9px}.options span{min-height:44px;padding-inline:16px}.button{min-height:48px;width:100%;font-size:13px}.wedding-extras{padding:45px max(24px,env(safe-area-inset-right,0px)) 55px max(24px,env(safe-area-inset-left,0px))}.wedding-extras .present-panel{padding:12px 0}.wedding-extras h2{font-size:clamp(48px,14vw,60px)}.wedding-extras .present-panel>p{font-size:14px;line-height:1.8}.account-holders{font-size:26px!important}.bank-info #gift-iban{font-size:12px;letter-spacing:0}.iban-row{gap:6px}.wedding-album{padding:45px 24px 55px}.wedding-album h2{font-size:clamp(45px,13vw,56px)}.contact-links{gap:16px 30px}.contact-links a{font-size:13px;min-height:48px}.contact-links p{font-size:12px}.footer-bottom{font-size:10px}
}
@media(max-width:360px){.stop-info,.stop:nth-of-type(even) .stop-info{margin-left:86px;width:calc(100% - 86px)}.stop-icon.artwork{left:31px;width:80px;height:80px}.route:before{left:31px}.name{font-size:22vw}.account-holders{font-size:24px!important}.bank-info #gift-iban{font-size:11px}.bus-actions .bus-note summary{font-size:10px}}
@media(max-width:760px) and (orientation:landscape){:root{--mobile-hero-height:100svh}.first{top:calc(22px + env(safe-area-inset-top,0px))}.name{font-size:clamp(50px,12vw,78px)}.second{bottom:24%}.scene-bottom{font-size:9px;bottom:12px}.landscape{background-position:52% 43%}.memories{padding-top:30px}.photo-stack{height:310px;width:235px}.memory-title{max-width:420px}.rsvp-heading h2{font-size:49px}.contact-links p{width:auto}}
@media(prefers-reduced-motion:reduce){.opening{height:var(--mobile-hero-height,100svh)}.memories{margin-top:0;opacity:1;pointer-events:auto}}
.memories,.adventure,.rsvp-section,.wedding-extras,.wedding-album{background:var(--spring-sky)}.contact-footer{background:var(--spring-butter);padding-top:65px;padding-bottom:calc(38px + env(safe-area-inset-bottom,0px))}.footer-contact{max-width:1080px;margin-bottom:48px}.footer-contact h2{font-size:60px;margin-bottom:36px}.contact-links{gap:35px 85px;align-items:start}.contact-links a,.contact-links p{font-size:20px;color:#526c8c;line-height:1.65}.contact-links span{font-size:15px;color:#7a899d;margin-bottom:8px}.footer-bottom{font-size:12px;padding-top:26px}.footer-bottom a{font-size:12px}.adventure-heading .pill{background:#fffdf5;border-color:#c4d4e5;color:#657d9b}
@media(max-width:760px){.memories,.adventure,.rsvp-section,.wedding-extras,.wedding-album{background:var(--spring-sky)}.contact-footer{padding:50px max(25px,env(safe-area-inset-right,0px)) calc(32px + env(safe-area-inset-bottom,0px)) max(25px,env(safe-area-inset-left,0px))}.footer-contact h2{font-size:51px;margin-bottom:28px}.footer-contact{margin-bottom:35px}.contact-links{display:grid;grid-template-columns:1fr;gap:21px;text-align:center}.contact-links a,.contact-links p{font-size:19px;min-height:0;width:100%;line-height:1.6}.contact-links a{padding:5px 0}.contact-links span{font-size:14px;margin-bottom:5px}.footer-bottom{font-size:11px;gap:14px;padding-top:22px}.footer-bottom a{font-size:11px}}

.rsvp-heading .rsvp-welcome{max-width:570px;margin:0 auto 32px;font-size:14px;line-height:1.8;color:#6c819c}.rsvp-heading:has(.rsvp-welcome) h2{margin-bottom:22px}.memory-title>p{max-width:420px;line-height:1.8}@media(max-width:760px){.rsvp-heading .rsvp-welcome{font-size:13px;line-height:1.75;max-width:340px;margin-bottom:27px}.rsvp-heading:has(.rsvp-welcome) h2{margin-bottom:18px}.memory-title>p{font-size:14px;max-width:310px}}
/* Beige only for the day's journey and the final contact footer. */
.adventure,.contact-footer{background:var(--spring-butter)}@media(max-width:760px){.adventure,.contact-footer{background:var(--spring-butter)}}

/* A joyful scroll-led announcement. */
.memory-title .announcement{font-size:clamp(84px,9vw,138px);line-height:.94;letter-spacing:-.025em;overflow:visible;--announce:0;--announce-lift:26px;--announce-turn:2.4deg;--announce-pop:1}.announcement-first,.memory-title .announcement em{display:block;will-change:transform,opacity;transform-origin:30% 60%;opacity:calc(.25 + var(--announce)*.75)}.announcement-first{transform:translate(calc((1 - var(--announce))*-12px),var(--announce-lift)) rotate(calc(var(--announce-turn)*-1))}.memory-title .announcement em{color:#5477a3;-webkit-text-stroke:0;text-shadow:none;transform:translate(calc((1 - var(--announce))*12px),var(--announce-lift)) rotate(var(--announce-turn)) scale(var(--announce-pop));transform-origin:35% 60%;margin-top:6px}.memory-title>p{margin-top:30px}@media(max-width:760px){.memory-title .announcement{font-size:clamp(67px,19vw,84px);line-height:.98}.memory-title .announcement em{margin-top:3px;-webkit-text-stroke:0}.memory-title>p{margin-top:25px}.memories{gap:30px}}@media(max-width:360px){.memory-title .announcement{font-size:18.5vw}}@media(prefers-reduced-motion:reduce){.announcement-first,.memory-title .announcement em{transform:none;opacity:1;will-change:auto}}

/* Keep the portrait sharp: one image, a small camera move, and a natural handoff. */
.opening{--hero-height:100svh;--hero-travel:clamp(140px,25svh,240px);height:calc(var(--hero-height) + var(--hero-travel))}
.scene{height:var(--hero-height);min-height:0;position:sticky;top:0;overflow:hidden;background:var(--spring-sky);clip-path:none;transform:none}
.landscape{position:absolute;inset:0;background:none;transform:scale(var(--hero-scale,1));transform-origin:50% 44%;filter:none;mask:none}
.landscape::before,.landscape::after{content:none!important;display:none!important}
.landscape img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 41%}
.scene .vignette{inset:0;background:linear-gradient(0deg,rgba(16,25,36,.65),rgba(16,25,36,.16) 30%,transparent 63%);opacity:var(--hero-title,0);pointer-events:none}
.scene .hero-names{inset:auto 16px max(125px,15svh);width:auto;text-align:center;font-size:clamp(66px,10vw,160px);line-height:.92;color:#fffdf6;letter-spacing:-.04em;z-index:3;filter:none;opacity:var(--hero-title,0);transform:translateY(var(--hero-lift,16px));text-shadow:0 3px 25px #14202c70}
.hero-names em{font-size:.67em;font-weight:400}
.scene .scene-bottom{opacity:var(--hero-title,0);bottom:calc(32px + var(--safe-bottom));z-index:3}
.scene-bottom a:focus-visible{outline:2px solid #fff;outline-offset:4px}
.scene:focus-within .scene-bottom{opacity:1}
.memories{margin-top:0;opacity:1;pointer-events:auto;min-height:0;padding-block:clamp(75px,9vw,135px);gap:clamp(30px,7vw,100px)}
.memory-title.in{transform:none;opacity:1}
.memory-title .announcement em{color:#385e89}
.memory-title>p{max-width:31ch;line-height:1.65}
.adventure-heading h2 em{color:#3f6289}
.route-base{stroke:#93a9bd;opacity:.65}.route-progress{stroke:#587da2;opacity:.9}
.stop h3{font-family:'Cormorant Garamond',Georgia,serif;font-size:clamp(32px,3.6vw,49px);font-weight:600;letter-spacing:-.02em;line-height:.95}
.stop p{color:#4f5d6d;line-height:1.6}.map-link{color:#385e89;text-underline-offset:4px}
.bus-actions .bus-note summary{color:#485d73}
.wedding-extras .present-panel{max-width:780px;margin-inline:auto}
@media(max-width:760px){
  .opening{--hero-height:min(72svh,116vw);--hero-travel:clamp(95px,14svh,140px)}
  .landscape img{object-position:50% 44%}
  .scene .hero-names{font-size:clamp(35px,10.5vw,78px);bottom:calc(61px + var(--safe-bottom))}
  .scene .scene-bottom{bottom:calc(13px + var(--safe-bottom));left:max(15px,env(safe-area-inset-left));right:max(15px,env(safe-area-inset-right))}
  .memories{padding-block:56px 77px;gap:36px}
  .stop h3{font-size:clamp(28px,7vw,34px)}
}
@media(max-width:760px) and (orientation:landscape){
  .opening{--hero-height:100svh}
  .scene .hero-names{bottom:63px}
}
@media(prefers-reduced-motion:reduce){
  .opening{height:var(--hero-height)}
  .scene .hero-names{opacity:1;transform:none}
  .scene .vignette,.scene .scene-bottom{opacity:1}
  .landscape{transform:none}
}
.memory-title,.memory-title:not(.in){opacity:1;translate:none;transform:none}
@media(max-width:760px) and (orientation:portrait){
  .opening{height:var(--hero-height);--hero-height:min(65svh,109vw)}
  .scene{position:relative}
  .memories{padding-top:34px}
  .scene .hero-names{bottom:calc(70px + var(--safe-bottom))}
}
.stop-icon.artwork{background-image:url('assets/itinerary-transparent.png');mix-blend-mode:normal;clip-path:inset(0 1% 1%);background-color:transparent}

/* White paper and a soft, rounded edge wherever the beige changes. */
:root{--spring-sky:#fff}
.adventure::before,.rsvp-section::before,.contact-footer::before{
  height:clamp(24px,3vw,36px);top:auto;bottom:calc(100% - 2px);left:0;right:0;width:100%;
  clip-path:none;mask:url('assets/paper-edge.svg') center / 100% 100% no-repeat;
  -webkit-mask:url('assets/paper-edge.svg') center / 100% 100% no-repeat;
  animation:none
}
.wedding-extras::before,.wedding-album::before{display:none}
@media(max-width:760px) and (orientation:portrait){
  .opening{--hero-height:calc(min(82vw,52svh) + var(--safe-top))}
  .scene .landscape img{object-position:50% 42%}
  .scene .hero-names{bottom:calc(53px + var(--safe-bottom));font-size:clamp(29px,9.9vw,65px)}
  .memories{padding-top:clamp(27px,7vw,46px);gap:30px}
  .memory-title{text-align:center;max-width:none}
  .memory-title .announcement{font-size:clamp(41px,12.7vw,76px);line-height:1.08;letter-spacing:-.035em}
  .memory-title .announcement em,.memory-title .announcement-first{display:inline;opacity:1;transform:none;margin:0;will-change:auto}
  .memory-title>p{margin:13px auto 0}
}

/* The portrait cover is its own screen, before the invitation begins. */
.landscape picture{display:block;width:100%;height:100%}
body{background:#fff}
@media(max-width:760px) and (orientation:portrait){
  .opening{--hero-height:100vh;--hero-travel:clamp(125px,20svh,190px);height:calc(var(--hero-height) + var(--hero-travel))}
  @supports(height:100lvh){.opening{--hero-height:100lvh}}
  .scene{position:sticky;top:0;background:#518ed5}
  .scene .landscape img{object-position:50% 49%}
  .scene .hero-names{bottom:calc(105px + var(--safe-bottom));font-size:clamp(38px,10.2vw,68px);line-height:1.03}
  .scene .scene-bottom{bottom:calc(39px + var(--safe-bottom))}
  .scene .vignette{background:linear-gradient(0deg,#172432b8, #17243235 27%,transparent 53%)}
  .memories{padding-top:52px}
}
@media(max-width:760px) and (orientation:portrait) and (prefers-reduced-motion:reduce){
  .opening{height:var(--hero-height)}
  .scene{position:relative}
}

/* Keep the bank number readable and give the discreet action a full touch target. */
html,body{background:#fff}
#gift-iban,#gift-iban a{color:#526d8b;text-decoration:none}
@media(max-width:760px){
  .bank-info .iban-row{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;column-gap:4px;row-gap:0}
  .bank-info #gift-iban{font-size:clamp(12px,3.3vw,16px);white-space:nowrap;font-variant-numeric:tabular-nums}
  #copy-iban{min-height:44px;min-width:48px;padding:0 5px;margin:0;font-size:12px;color:#536d8b}
}

.memory-title .announcement{font-size:clamp(92px,10vw,150px)}
html{scroll-padding-top:24px}
@media(max-width:760px){
  .memory-title .announcement{font-size:clamp(49px,15.2vw,86px)}
}

.contact-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:min(100%,600px);margin-inline:auto;gap:28px 40px;text-align:center}
.contact-person{display:grid;min-width:0;justify-items:center}
.contact-links .contact-person a{display:block;width:auto;min-height:0;padding:4px 0}
.contact-links .contact-person .contact-email{font-size:15px;overflow-wrap:anywhere}
.contact-person a:focus-visible{text-decoration:underline}
@media(max-width:760px){
  .contact-links{grid-template-columns:1fr;gap:22px}
  .contact-links .contact-person a{display:grid;place-items:center;min-height:44px;padding:0 6px}
}
