:root{--ink:#98492f;--olive:#68704d;--paper:#f8f1e5;--line:#c6ad86;--dark:#453d32}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--dark);font:22px/1.5 'Cormorant Garamond',Georgia,serif;overflow-x:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible{outline:2px solid var(--ink);outline-offset:5px}[hidden]{display:none!important}header{position:absolute;top:0;left:0;width:100%;padding:24px 5vw;display:flex;align-items:center;justify-content:space-between;z-index:30;pointer-events:none}.home,nav{pointer-events:auto}.home svg{width:76px;height:55px}nav{display:flex;gap:12px}nav button{font-size:27px;background:#fff8e855;border:1px solid transparent;border-radius:5px;padding:4px;opacity:.65}nav button[aria-pressed=true]{border-color:var(--line);opacity:1}.intro{display:none}.stage{display:none}.js:not(.revealed){height:100svh;overflow:hidden}.js .stage{display:block;position:fixed;inset:0;z-index:20;perspective:1800px;background:#eadcc6;overflow:hidden}.envelope-button{position:absolute;inset:0;width:100%;height:100%;border:0;padding:0;background:none;color:var(--ink);perspective:1800px}.envelope{display:block;position:absolute;inset:0;perspective:1800px}.back{position:absolute;inset:0;background:radial-gradient(ellipse,#faf6ec,#d6c4a6)}.inside-paper{position:absolute;inset:0;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;background:#352e28;isolation:isolate}.portrait{position:absolute;width:100%;height:100%;object-fit:cover;object-position:50% 42%;filter:saturate(.65);z-index:-2}.inside-paper:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 35%,#241e1799);z-index:-1}.photo-caption{color:#fff8ee;font-size:clamp(38px,6vw,80px);margin-bottom:12vh}.inside-paper small{color:#fff8ee;position:absolute;bottom:8vh;font:12px Jost,sans-serif;letter-spacing:.4em}.panel,.front,.flap{position:absolute;inset:-1px;backface-visibility:hidden;background-color:#eee2cd;background-image:url(grain.svg),repeating-linear-gradient(96deg,#ffffff15 0 1px,#8d754b0a 1px 2px,transparent 2px 5px),linear-gradient(120deg,#fff8e699,#bea78244);will-change:transform;z-index:3}.panel:after,.front:after,.flap:after{content:'';position:absolute;inset:0;background:url(emboss.svg) center/contain no-repeat;opacity:.8;filter:drop-shadow(1px 2px 1px #9a825455)}.panel-left{clip-path:polygon(0 0,51% 50%,0 100%);transform-origin:left}.panel-right{clip-path:polygon(100% 0,49% 50%,100% 100%);transform-origin:right;background-color:#f3e9d7}.panel-left:after{transform:rotate(90deg);background-size:45% 85%;background-position:50% 100%}.panel-right:after{transform:rotate(-90deg);background-size:45% 85%;background-position:50% 100%}.front{clip-path:polygon(0 100%,50% 49%,100% 100%);transform-origin:bottom;z-index:4;background-color:#e9dbc2}.front:after{background-size:38% 52%;background-position:center 105%;transform:rotate(180deg);background-position:center -5%}.flap{clip-path:polygon(0 0,100% 0,50% 53%);transform-origin:top;z-index:5}.flap:after{background-size:38% 52%;background-position:center 3%}.ribbon{position:absolute;top:50%;width:51%;height:clamp(22px,4vh,40px);z-index:6;background:linear-gradient(#9f997b,#ece4ce 20%,#c6bfa0 55%,#a29b7a 90%,#ede3ca);box-shadow:0 3px 8px #57482c33}.ribbon-left{left:0;transform:rotate(2deg)}.ribbon-right{right:0;transform:rotate(-2deg)}.seal{position:absolute;top:51%;left:50%;width:clamp(95px,12vw,140px);aspect-ratio:1;transform:translate(-50%,-50%);z-index:8;border-radius:46% 49% 45% 48%;background:conic-gradient(#884026,#dda06e,#a55332,#78321e,#dda175,#854027);box-shadow:2px 5px 5px #63311d66,0 15px 28px #42322333,inset 0 2px 2px #ffe0ad;display:grid;place-items:center}.seal:before{content:'';position:absolute;inset:10%;border:1px solid #dca77b;border-radius:50%;background:radial-gradient(at 30% 20%,#bc7952,#97482b);box-shadow:inset 1px 2px 4px #622e21,0 1px 2px #5f2919}.seal svg{width:65%;height:55%;position:relative;filter:brightness(0) invert(.83) sepia(.45);opacity:.9}.open-label{position:absolute;z-index:9;left:15px;right:15px;bottom:12vh;font:12px Jost,sans-serif;letter-spacing:.25em;text-transform:uppercase}.delicate{position:absolute;bottom:6vh;left:12px;right:12px;text-align:center;font-style:italic;font-size:18px;pointer-events:none;z-index:9}.opening .seal{animation:unseal 1.1s cubic-bezier(.4,0,.15,1) forwards}.opening .ribbon-left{animation:ribbonLeft 1.5s .35s cubic-bezier(.4,0,.2,1) forwards}.opening .ribbon-right{animation:ribbonRight 1.5s .35s cubic-bezier(.4,0,.2,1) forwards}.opening .flap{animation:topOpen 2.6s .65s cubic-bezier(.33,0,.15,1) forwards}.opening .front{animation:bottomOpen 2.7s .85s cubic-bezier(.33,0,.15,1) forwards}.opening .panel-left{animation:leftOpen 2.8s 1s cubic-bezier(.33,0,.15,1) forwards}.opening .panel-right{animation:rightOpen 2.8s 1.1s cubic-bezier(.33,0,.15,1) forwards}.opening .portrait{animation:zoomPhoto 5.2s ease forwards}.opening .open-label,.opening .delicate{opacity:0;transition:opacity .4s}.opening .stage{animation:veil 1.2s 4s ease forwards;pointer-events:none}.opening header{opacity:0;transition:opacity .5s}.revealed header{opacity:1}.invitation{max-width:none;text-align:center}.card{position:relative;isolation:isolate;overflow:hidden}.card-frame{display:none}.card-copy{padding:150px 20px 360px;position:relative;z-index:1}.eyebrow{font:11px/1.5 Jost,sans-serif;text-transform:uppercase;letter-spacing:.28em;color:var(--ink);margin:0 0 28px}h2{font-size:clamp(58px,9vw,120px);font-weight:400;line-height:.95;color:var(--ink);margin:0}h2:focus{outline:none}h2 em{font-size:.65em}.invite-text{font-size:26px;line-height:1.4;margin:30px auto}.date{display:flex;justify-content:center;align-items:center;gap:25px}.date span{font:12px Jost,sans-serif;letter-spacing:.15em;color:var(--olive);text-transform:uppercase}.date b{font-weight:400;font-size:64px;color:var(--ink);padding:0 25px;border-inline:1px solid var(--line)}.city{font-size:40px;color:var(--olive);margin:20px 0 0}.ceremony{font-size:20px}.watercolor{position:absolute;bottom:0;left:0;width:100%;height:520px;object-fit:cover;object-position:center bottom;z-index:-1;mask-image:linear-gradient(transparent,#000 40%)}.detail-slide{padding:110px max(24px,calc((100vw - 1000px)/2));background:url(grain.svg),#efe5d5}.detail-slide h2{font-size:clamp(48px,6vw,82px);max-width:800px;margin:auto}.programme{max-width:850px;list-style:none;padding:0;margin:70px auto 0;text-align:left}.programme li{display:grid;grid-template-columns:180px 1fr;gap:35px;border-top:1px solid #bda78477;padding:32px 0}.programme time{font-size:29px;color:var(--ink);font-style:italic}.programme h3{font-size:34px;line-height:1.1;font-weight:400;margin:0 0 10px;color:var(--olive)}.programme p{margin:0;font-size:22px}.detail-slide[data-slide="2"]{background:url(grain.svg),#f8f2e7}.detail-slide[data-slide="3"]{background:#697054;color:#fff9ef}.detail-slide[data-slide="3"] h2,.detail-slide[data-slide="3"] .eyebrow,.detail-slide[data-slide="3"] .signature{color:#fff4df}.detail-text{font-size:clamp(24px,3vw,32px);max-width:640px;margin:30px auto;line-height:1.5}.ornament{color:#ba9f77;font-size:50px;margin:30px 0}.signature{font-size:30px;font-style:italic;color:var(--ink);margin:35px 0 0}.actions{display:flex;justify-content:center;gap:20px;flex-wrap:wrap;padding:55px 24px 25px;background:#697054}.button{font:12px Jost,sans-serif;letter-spacing:.13em;text-transform:uppercase;text-decoration:none;border:1px solid #f7edda88;padding:20px 30px;border-radius:2px;color:#fff4df;min-width:260px}.actions #rsvp{order:-1;background:#f7edda;color:#63543c}.replay{display:block;margin:25px auto;border:0;border-bottom:1px solid var(--line);background:none;color:var(--olive);font-size:18px;padding:5px}footer{text-align:center;padding:20px;font:11px Jost,sans-serif;letter-spacing:.15em}footer a{display:block;margin-bottom:20px}.js:not(.revealed) footer{position:fixed;bottom:15px;z-index:25;left:0;right:0;font-size:10px}.js:not(.revealed) footer span{display:none}.revealed #skip{display:none}@keyframes unseal{to{transform:translate(-50%,-80%) rotate(-15deg) scale(1.15);opacity:0}}@keyframes ribbonLeft{to{transform:translateX(-105%) rotate(5deg);opacity:0}}@keyframes ribbonRight{to{transform:translateX(105%) rotate(-5deg);opacity:0}}@keyframes topOpen{to{transform:rotateX(155deg)}}@keyframes bottomOpen{to{transform:rotateX(-155deg)}}@keyframes leftOpen{to{transform:rotateY(-155deg)}}@keyframes rightOpen{to{transform:rotateY(155deg)}}@keyframes zoomPhoto{from{transform:scale(1)}to{transform:scale(1.04)}}@keyframes veil{to{opacity:0}}@media(min-width:900px){.portrait{object-fit:contain;background:#463d32}.inside-paper:before{content:'';position:absolute;inset:0;background:url(../assets/img/nous-1.jpg) center 42%/cover;filter:blur(35px);opacity:.4;z-index:-3}}@media(max-width:600px){header{padding:18px}.home svg{width:60px;height:45px}nav{gap:7px}nav button{font-size:24px}.flap:after,.front:after{background-size:85% 52%}.panel-left:after,.panel-right:after{background-size:85% 85%}.card-copy{padding:130px 20px 290px}.watercolor{height:320px}.invite-text{font-size:23px}.detail-slide{padding:80px 24px}.programme{margin-top:45px}.programme li{grid-template-columns:85px 1fr;gap:20px;padding:25px 0}.programme time{font-size:21px}.programme h3{font-size:27px}.programme p{font-size:19px}.actions{gap:14px;padding-top:35px}.button{width:100%;max-width:380px}.photo-caption{font-size:36px}.delicate{font-size:16px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
.open-label{bottom:17vh}.delicate{bottom:10vh}.js:not(.revealed) footer{bottom:12px;padding:10px}.js:not(.revealed) footer a{margin:0}
/* Full-screen paper unfolding: the letter itself advances into view. */
.stage{transform-style:preserve-3d}.envelope{perspective:2300px}.panel,.front,.flap{transition:none;box-shadow:inset 0 0 90px #79603d1c}.panel:before,.front:before,.flap:before{content:'';position:absolute;inset:0;background:linear-gradient(120deg,#fffdf540,transparent 35%,#6e563322 70%,#fff5db22);pointer-events:none}.seal{box-shadow:3px 6px 4px #572c1f66,0 20px 35px #52362144,inset 0 2px 3px #ffe3b6}.opening .seal{animation:sealRelease 1.3s cubic-bezier(.45,0,.12,1) forwards}.opening .flap{animation:topOpen 3.4s .7s cubic-bezier(.25,.05,.15,1) forwards}.opening .front{animation:bottomOpen 3.5s .95s cubic-bezier(.25,.05,.15,1) forwards}.opening .panel-left{animation:leftOpen 3.3s 1.2s cubic-bezier(.25,.05,.15,1) forwards}.opening .panel-right{animation:rightOpen 3.4s 1.35s cubic-bezier(.25,.05,.15,1) forwards}.opening .stage{animation:veil 1.6s 4.4s ease forwards}.opening .portrait{animation:zoomPhoto 6.4s cubic-bezier(.2,.6,.2,1) forwards}.opening .invitation{position:relative;z-index:21;transform-origin:center top;animation:letterUnfold 6.4s cubic-bezier(.2,.65,.2,1) both;pointer-events:none}.opening .card-copy{animation:letterInk 6.4s ease both}.opening header{opacity:0}.revealed .invitation{transform:none}.card[data-slide="0"]{min-height:100svh;background:var(--paper);background-image:url(grain.svg);box-shadow:0 -20px 90px #33251922}.card-copy{min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding:130px 24px 270px}.card-copy .eyebrow{margin-bottom:20px}.card-copy .invite-text{margin:25px 0}.card-copy .ceremony{margin:12px 0 0}.watercolor{z-index:0;height:42svh;opacity:.85;pointer-events:none}.scroll-cue{display:flex;flex-direction:column;gap:14px;align-items:center;font:10px/1.6 Jost,sans-serif;text-transform:uppercase;letter-spacing:.2em;color:var(--ink);text-decoration:none;margin:30px auto 0}.scroll-cue span:last-child{font:25px Georgia,serif}.detail-slide{min-height:100svh;display:flex;flex-direction:column;justify-content:center}.detail-slide[data-slide="1"]{min-height:100svh}.programme{width:100%;margin:65px auto 0}.detail-slide h2{margin:0 auto}.detail-slide[data-slide="2"]{background:url(emboss.svg) right bottom/220px auto no-repeat,url(grain.svg),#f8f2e7}.detail-slide[data-slide="3"]{min-height:70svh}.actions{padding-top:20px;padding-bottom:50px}.opening footer{opacity:0;pointer-events:none}.revealed footer{opacity:1}@keyframes sealRelease{0%{transform:translate(-50%,-50%)}35%{transform:translate(-50%,-50%) scale(1.08) rotate(-3deg)}100%{transform:translate(-50%,-85%) scale(1.3) rotate(-20deg);opacity:0}}@keyframes letterUnfold{0%,58%{opacity:0;transform:translateY(100svh) perspective(1600px) rotateX(16deg) scale(.94)}68%{opacity:1}100%{opacity:1;transform:translateY(0) perspective(1600px) rotateX(0) scale(1)}}@keyframes letterInk{0%,70%{opacity:0;transform:translateY(30px)}100%{opacity:1;transform:translateY(0)}}@media(max-width:600px){.card-copy{min-height:100svh;padding:110px 22px 24svh;justify-content:flex-start}.card-copy h2{font-size:clamp(62px,17vw,92px)}.card-copy .eyebrow{font-size:10px;margin-bottom:24px}.card-copy .invite-text{font-size:22px;margin:22px 0}.card-copy .date{gap:17px}.date b{font-size:56px;padding-inline:19px}.date span{font-size:10px}.card-copy .city{font-size:36px;margin-top:12px}.card-copy .ceremony{font-size:17px}.watercolor{height:30svh}.scroll-cue{margin-top:25px;font-size:9px}.detail-slide{padding:85px 26px}.detail-slide h2{font-size:clamp(46px,12vw,64px)}.programme{margin-top:48px}.programme li{padding:30px 0;grid-template-columns:85px 1fr}.programme h3{font-size:29px}.programme p{font-size:20px}.detail-text{font-size:27px}.detail-slide[data-slide="3"]{min-height:75svh}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
/* Venue portraits, softly coloured photographic paper and direct navigation. */
.invitation-shortcuts{position:sticky;top:0;z-index:15;display:flex;justify-content:center;gap:30px;background:#f8f1e5ed;border-bottom:1px solid #ccb99566;padding:16px 20px;backdrop-filter:blur(12px)}.invitation-shortcuts a{font:10px Jost,sans-serif;letter-spacing:.16em;text-transform:uppercase;text-decoration:none;color:var(--ink)}.opening .invitation-shortcuts{visibility:hidden}.venue-spread{display:grid;grid-template-columns:1fr 1fr;background:#eee3d4}.venue-spread figure{margin:0;overflow:hidden}.venue-spread img{width:100%;height:440px;object-fit:cover;filter:saturate(.55) contrast(.82) brightness(1.18);display:block}.venue-spread figcaption{padding:45px 24px 60px}.venue-spread h2{font-size:44px;line-height:1.1}.venue-spread p{font-size:21px}.venue-spread a{font:11px Jost,sans-serif;text-underline-offset:6px;letter-spacing:.1em}.flap:after,.front:after{opacity:.48}.panel:after{opacity:.42}.seal{border-radius:48%;background:conic-gradient(#9a693e,#e5c18b,#aa7647,#765032,#d8b47b,#98673d)}.seal:before{background:radial-gradient(at 30% 20%,#c3a06a,#a57a4f);border-color:#efd7a6}.opening .flap{animation:topOpen 3.6s .75s cubic-bezier(.22,.05,.12,1) forwards}.opening .front{animation:bottomOpen 3.6s 1s cubic-bezier(.22,.05,.12,1) forwards}.opening .panel-left{animation:leftOpen 3.5s 1.15s cubic-bezier(.22,.05,.12,1) forwards}.opening .panel-right{animation:rightOpen 3.5s 1.25s cubic-bezier(.22,.05,.12,1) forwards}.opening .seal:after{content:'';position:absolute;inset:0;border-radius:inherit;background:linear-gradient(110deg,transparent 30%,#fff8dd88 50%,transparent 70%);animation:waxLight .9s ease both}@keyframes waxLight{from{opacity:0;transform:translateX(-30%)}45%{opacity:1}to{opacity:0;transform:translateX(30%)}}#invitation-programme{scroll-margin-top:65px}@media(max-width:600px){.venue-spread{grid-template-columns:1fr}.venue-spread img{height:auto;min-height:230px}.venue-spread h2{font-size:39px}.venue-spread figcaption{padding:35px 24px 50px}.invitation-shortcuts{gap:22px}.invitation-shortcuts a{font-size:9px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
.invitation-shortcuts{margin-top:100px}.card-copy{padding-top:70px}@media(max-width:600px){.invitation-shortcuts{margin-top:88px}.card-copy{padding-top:50px}}
/* Pastel illustration extends to the very top, including beneath the masthead. */
.invitation{position:relative}.card[data-slide="0"]{overflow:visible}.pastel-canopy{position:absolute;z-index:0;top:-150px;left:0;right:0;height:calc(100% + 150px);overflow:hidden;pointer-events:none;background:#f6ecdd}.pastel-canopy img{width:100%;height:100%;object-fit:cover;object-position:48% top;filter:saturate(.3) contrast(.68) brightness(1.32);opacity:.48}.pastel-canopy:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#faf3e56e,#faf3e5d9 25%,#faf3e5e8 50%,#faf3e5d9 75%,#faf3e56e),linear-gradient(transparent 65%,#f8f1e5 100%)}.card[data-slide="0"] .card-copy{background:transparent}.card[data-slide="0"] .watercolor{opacity:.7;mask-image:linear-gradient(transparent,#000 65%)}.invitation-shortcuts{background:#f8f1e5bb}.revealed header{background:transparent}@media(max-width:600px){.pastel-canopy{top:-138px;height:calc(100% + 138px)}.pastel-canopy img{object-position:43% top;opacity:.5}.pastel-canopy:after{background:linear-gradient(90deg,#faf3e56e,#faf3e5d9 20%,#faf3e5ed 50%,#faf3e5d9 80%,#faf3e56e),linear-gradient(transparent 65%,#f8f1e5 100%)}}
/* Orange blossom stationery, discreet photographic keepsake and in-page RSVP. */
.floral-canopy{position:absolute;top:-150px;left:0;right:0;height:650px;pointer-events:none;z-index:0;overflow:hidden}.floral-canopy img{position:absolute;mix-blend-mode:multiply;opacity:.78;width:clamp(180px,25vw,340px);height:auto;filter:saturate(.75)}.floral-left{left:0;top:0}.floral-right{right:0;top:45px}.card[data-slide="0"]{background:#f8f1e5 url(grain.svg)}.card[data-slide="0"] .watercolor{display:none}.card-copy{padding-bottom:85px}.inside-paper{background:#f3eadc url(grain.svg);justify-content:center;overflow:visible}.inside-paper:before,.inside-paper:after{display:none}.photo-strip{display:flex;flex-direction:column;gap:9px;width:clamp(140px,23vw,220px);background:#fff9ec;padding:12px 12px 18px;box-shadow:0 14px 45px #4c342b28;transform:translateY(50vh) rotate(-8deg);opacity:0;border:1px solid #d5c9b7}.photo-strip img{display:block;width:100%;height:clamp(105px,17vh,160px);object-fit:cover;object-position:50% 40%;filter:saturate(.55) contrast(.93)}.photo-strip img:nth-child(2){object-position:center}.photo-strip small{position:static;color:#9a6349;font:12px/1.6 'Cormorant Garamond',serif;letter-spacing:.1em;margin-top:3px}.opening .photo-strip{animation:stripFloat 8.8s cubic-bezier(.25,.65,.2,1) both}.opening .stage{animation:veil 1.8s 6.6s ease forwards}.opening .invitation{animation:stationeryReveal 8.8s cubic-bezier(.2,.65,.2,1) both}.opening .card-copy{animation:stationeryInk 8.8s ease both}@keyframes stripFloat{0%,25%{opacity:0;transform:translateY(55vh) rotate(-10deg)}40%{opacity:1}52%,70%{opacity:1;transform:translateY(0) rotate(-5deg)}100%{opacity:0;transform:translateY(-12vh) rotate(2deg) scale(.92)}}@keyframes stationeryReveal{0%,75%{opacity:0;transform:translateY(35vh)}100%{opacity:1;transform:translateY(0)}}@keyframes stationeryInk{0%,80%{opacity:0}100%{opacity:1}}.venue-spread{grid-template-columns:1fr;background:#f8f1e5}.venue-spread figure{max-width:1100px;margin:auto}.venue-spread img{height:auto;filter:none;max-height:650px;object-fit:contain;mix-blend-mode:multiply}.actions{background:#f8f1e5;padding:30px 24px}.actions #rsvp{background:var(--ink);color:#fff9ef}.inline-rsvp{scroll-margin-top:70px;padding:85px 24px 70px;background:#f3e9da url(grain.svg);text-align:center}.inline-rsvp h2{font-size:clamp(44px,7vw,75px);max-width:850px;margin:auto}.rsvp-deadline{font-size:21px;max-width:600px;margin:25px auto 45px}#rsvp-mount{max-width:760px;margin:auto;text-align:left}.inline-rsvp .cache{display:none}.inline-rsvp .champ{margin-bottom:26px}.inline-rsvp fieldset{margin:0;padding:0;border:0}.inline-rsvp label,.inline-rsvp legend{display:block;font-size:24px;font-weight:500;color:var(--ink);margin-bottom:12px;line-height:1.3}.inline-rsvp .champ--question{background:#fffaf066;border:1px solid #d5bfa077;padding:25px;border-radius:7px;margin-bottom:25px}.inline-rsvp .choix{display:flex;gap:14px;flex-wrap:wrap}.inline-rsvp .choix label{flex:1;display:flex;align-items:center;gap:10px;background:#fffdf6;border:1px solid #d8c6ac;border-radius:5px;padding:15px;font:14px Jost,sans-serif;min-width:170px;margin:0}.inline-rsvp .choix label:has(input:checked){border-color:var(--ink);background:#f1dfcd}.inline-rsvp input:not([type=radio]):not([type=hidden]),.inline-rsvp select,.inline-rsvp textarea{display:block;width:100%;padding:15px;border:1px solid #d3bfa4;border-radius:4px;background:#fffcf5;color:var(--dark);font:16px/1.5 Jost,sans-serif}.inline-rsvp input[type=radio]{accent-color:var(--ink);width:18px;height:18px;flex-shrink:0}.inline-rsvp textarea{min-height:130px;resize:vertical}.inline-rsvp .champ__aide{font-size:17px;color:#786a59;margin:10px 0 0;line-height:1.4}.inline-rsvp .champ__option{font-size:17px;color:#786a59}.inline-rsvp .deux-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}.inline-rsvp .btn{font:12px Jost,sans-serif;text-transform:uppercase;letter-spacing:.12em;padding:20px 30px;border:0;background:var(--ink);color:#fff9ec;border-radius:4px;cursor:pointer}.rsvp__envoi{text-align:center;margin-top:35px}.rsvp__statut{font-size:18px}#rsvp-success{max-width:600px;margin:35px auto;font-size:28px}.inline-rsvp button:disabled{opacity:.6}.detail-slide[data-slide="3"]{min-height:0;padding-bottom:50px}@media(max-width:600px){.floral-canopy{top:-138px;height:480px}.floral-canopy img{width:155px;opacity:.65}.floral-right{width:115px!important;top:115px}.card-copy{padding-bottom:65px}.photo-strip{width:165px;padding:10px;gap:8px}.photo-strip img{height:120px}.inline-rsvp{padding:65px 20px}.inline-rsvp .champ--question{padding:20px}.inline-rsvp .deux-col{grid-template-columns:1fr;gap:0}.inline-rsvp label,.inline-rsvp legend{font-size:22px}.inline-rsvp .choix{flex-direction:column}.inline-rsvp .btn{width:100%}.venue-spread img{min-height:0}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Fade the floral paper edges into the invitation. */
.floral-canopy img{mask-image:linear-gradient(to bottom,#000 65%,transparent 100%)}
@media(max-width:600px){.floral-right{right:-52px!important;opacity:.52!important}.floral-left{left:-16px!important}}

/* A continuous illustrated sheet, with navigation below the opening page. */
.invitation-shortcuts{margin-top:0;background:#f8f1e5f2;border:0;box-shadow:0 5px 22px #79634509;padding:18px 20px}
.card[data-slide="0"]{overflow:hidden;box-shadow:none}
.floral-canopy{top:0;height:100%;overflow:visible}
.floral-canopy img{mask-image:linear-gradient(to bottom,#000 45%,transparent 98%);mix-blend-mode:multiply}
.floral-left{left:0;top:0;width:clamp(190px,26vw,390px)}
.floral-right{right:0;top:14%;width:clamp(140px,20vw,300px)}
.card-copy{padding-top:160px;padding-bottom:65px;min-height:100svh}
.malaga-scene{position:relative;padding:20px 0 70px;background:var(--paper);overflow:hidden;text-align:center}
.malaga-scene>img{display:block;width:min(100%,1000px);height:auto;max-height:85svh;object-fit:contain;margin:auto;mix-blend-mode:multiply;mask-image:linear-gradient(transparent,#000 10%,#000 78%,transparent)}
.scene-caption{position:relative;margin:-15px auto 0;padding:0 24px}.scene-caption h2{font-size:clamp(40px,6vw,68px);line-height:1.1}.scene-caption p:last-child{font-size:20px}
.venue-spread{padding:20px 0 45px}.venue-spread img{mask-image:linear-gradient(transparent,#000 8%,#000 85%,transparent)}
.reveal-scene>img,.reveal-scene>figure{opacity:0;transform:translateY(45px) scale(.97);transition:opacity 1.8s ease,transform 2.3s cubic-bezier(.2,.65,.2,1)}
.reveal-scene.in-view>img,.reveal-scene.in-view>figure{opacity:1;transform:none}
/* Deliberate opening: wax, ribbon, folds, photographs, then the illustrated letter. */
.opening .flap{animation:topOpen 4.2s .85s cubic-bezier(.3,0,.12,1) forwards}
.opening .front{animation:bottomOpen 4.5s 1.2s cubic-bezier(.3,0,.12,1) forwards}
.opening .panel-left{animation:leftOpen 4.2s 1.5s cubic-bezier(.3,0,.12,1) forwards}
.opening .panel-right{animation:rightOpen 4.3s 1.7s cubic-bezier(.3,0,.12,1) forwards}
.inside-paper{background:radial-gradient(ellipse at center,#fffaf0,#e8dcc7)}
.inside-paper:before{display:block;content:'';position:absolute;inset:0;background:url(../assets/img/malaga-aquarelle-complete.png) center/cover;opacity:.16;z-index:-1;filter:none}
.opening .photo-strip{animation:keepsakeJourney 10.4s cubic-bezier(.22,.61,.2,1) both}
.opening .stage{animation:veil 2.6s 7.6s ease forwards}
.opening .invitation{animation:illustratedLetter 10.4s cubic-bezier(.22,.61,.2,1) both}
.opening .card-copy{animation:invitationInk 10.4s ease both}
.opening .floral-left{animation:botanicalLeft 10.4s ease both;transform-origin:top left}
.opening .floral-right{animation:botanicalRight 10.4s ease both;transform-origin:right center}
@keyframes keepsakeJourney{0%,22%{opacity:0;transform:translateY(55svh) rotate(-12deg) scale(.9)}38%{opacity:1}50%,68%{opacity:1;transform:translateY(-2svh) rotate(-5deg) scale(1)}83%{opacity:.6;transform:translate(-14vw,-9svh) rotate(-9deg) scale(.88)}100%{opacity:0;transform:translate(-20vw,-16svh) rotate(-11deg) scale(.84)}}
@keyframes illustratedLetter{0%,70%{opacity:0;transform:translateY(38svh) scale(.94)}82%{opacity:1}100%{opacity:1;transform:none}}
@keyframes invitationInk{0%,79%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:none}}
@keyframes botanicalLeft{0%,72%{opacity:0;transform:translate(-25px,-20px) rotate(-7deg) scale(1.08)}100%{opacity:1;transform:none}}
@keyframes botanicalRight{0%,76%{opacity:0;transform:translateX(25px) rotate(6deg) scale(1.08)}100%{opacity:1;transform:none}}
@media(max-width:600px){.card-copy{padding-top:160px;padding-bottom:60px}.floral-left{left:0!important;width:165px!important;top:0}.floral-right{right:0!important;top:320px;width:85px!important;opacity:.4!important}.floral-canopy{top:0;height:100%}.invitation-shortcuts{margin-top:0}.malaga-scene{padding-bottom:40px}.scene-caption{margin:0 auto}.scene-caption h2{font-size:40px}.malaga-scene>img{max-height:none;width:100%}.photo-strip{width:190px}.photo-strip img{height:130px}}
@media(prefers-reduced-motion:reduce){.reveal-scene>img,.reveal-scene>figure{opacity:1;transform:none}*,*:before,*:after{animation:none!important;transition:none!important}}
/* Feather both edges of each scanned botanical illustration. */
.floral-left{mask-image:linear-gradient(to right,#000 68%,transparent 100%),linear-gradient(to bottom,#000 48%,transparent 100%)!important;mask-composite:intersect}
.floral-right{mask-image:linear-gradient(to left,#000 65%,transparent 100%),linear-gradient(to bottom,#000 48%,transparent 100%)!important;mask-composite:intersect}

.scene-caption .maps-link,.venue-spread .maps-link{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:14px 20px;border:1px solid #c6ad86;border-radius:3px;font:12px/1.5 Jost,sans-serif;letter-spacing:.06em;color:var(--ink);text-decoration:none;background:#fffaf066}.maps-link:hover{background:#eee0cb}
/* Illustrated itinerary on softly washed stationery. */
#invitation-programme{background:radial-gradient(ellipse at 0 25%,#e6ddd14d,transparent 45%),radial-gradient(ellipse at 100% 70%,#dce3d24d,transparent 45%),url(grain.svg),#faf4e9;padding-inline:24px}
.illustrated-programme{max-width:820px;margin-top:55px;position:relative}.illustrated-programme:before{content:'';position:absolute;left:50%;top:0;bottom:0;width:1px;background:linear-gradient(transparent,#cbbb9b77 10%,#cbbb9b77 90%,transparent)}
.programme .moment{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:25px;border:0;padding:30px 0;position:relative}.moment-copy{padding:25px;text-align:left}.programme time{display:block;font:12px/1.6 Jost,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#a77a60;margin-bottom:14px}.programme h3{font-size:34px;color:#68745e}.programme p{font-size:21px;line-height:1.5;color:#746854}.programme .moment-0,.programme .moment-1,.programme .moment-2{display:block;text-align:center}.moment-0 .moment-copy,.moment-1 .moment-copy,.moment-2 .moment-copy{text-align:center;position:relative;background:#faf4e9;max-width:550px;margin:auto}.programme-venue{position:relative;text-align:center;padding-bottom:25px;background:#faf4e9}.venue-art{overflow:hidden;position:relative;mask-image:linear-gradient(transparent,#000 13%,#000 80%,transparent);mix-blend-mode:multiply}.cathedral .venue-art{height:410px;max-width:530px;margin:auto}.cathedral img{position:absolute;width:210%;max-width:none;height:auto;left:-3%;bottom:-8%}.alamo .venue-art img{width:100%;display:block}.programme .venue-name{font-size:29px;color:var(--ink);margin:15px 0 4px}.programme .venue-address{font-size:18px;margin:0 0 12px}.programme .maps-link{display:inline-block;padding:12px 18px;color:var(--ink);font:11px/1.5 Jost,sans-serif;text-decoration:none;border:1px solid #c6ad8688;border-radius:3px;min-height:44px;background:#fff9ef}.moment-art{width:155px;height:155px;margin:auto;display:grid;place-items:center;border-radius:47% 53% 62% 38%;background:radial-gradient(ellipse,#e6d6c5a8,transparent 73%);color:#a97b62}.moment-art svg{width:105px;height:105px;filter:drop-shadow(1px 2px 1px #b9a48c22)}.moment:nth-child(even) .moment-art{grid-column:2;grid-row:1}.moment:nth-child(even) .moment-copy{grid-column:1;grid-row:1;text-align:right}.moment-4 .moment-art,.moment-7 .moment-art{background:radial-gradient(ellipse,#d8dfd0cc,transparent 73%);color:#7b896e}.moment-5 .moment-art,.moment-8 .moment-art{background:radial-gradient(ellipse,#eddbd4cc,transparent 73%);color:#b68576}.moment-copy{background:#faf4e9dd}.moment:after{content:'';position:absolute;left:calc(50% - 3px);top:50%;width:6px;height:6px;border:1px solid #bca98a;border-radius:50%;background:#faf4e9}.moment-0:after,.moment-1:after,.moment-2:after{display:none}
.inside-paper{flex-direction:row;gap:28px}.photo-strip{flex-shrink:0}.opening .strip-0{animation:keepsakeLeft 10.4s cubic-bezier(.22,.61,.2,1) both}.opening .strip-1{animation:keepsakeRight 10.4s cubic-bezier(.22,.61,.2,1) both}
@keyframes keepsakeLeft{0%,20%{opacity:0;transform:translate(-15px,65svh) rotate(-12deg)}40%{opacity:1}51%,70%{opacity:1;transform:translate(0,-3svh) rotate(-7deg)}100%{opacity:0;transform:translate(-18vw,-18svh) rotate(-12deg) scale(.85)}}
@keyframes keepsakeRight{0%,28%{opacity:0;transform:translate(15px,65svh) rotate(12deg)}47%{opacity:1}57%,74%{opacity:1;transform:translate(0,3svh) rotate(7deg)}100%{opacity:0;transform:translate(18vw,-12svh) rotate(12deg) scale(.85)}}
@media(max-width:600px){.inside-paper{gap:15px}.photo-strip{width:145px;padding:8px;gap:7px}.photo-strip img{height:125px}.photo-strip small{font-size:10px;letter-spacing:.05em}.programme .moment{gap:14px;padding:20px 0;grid-template-columns:1fr 1fr}.moment-copy{padding:14px 8px}.programme h3{font-size:27px}.programme p{font-size:18px}.programme time{font-size:10px;letter-spacing:.08em}.moment-art{width:120px;height:120px}.moment-art svg{width:85px;height:85px}.cathedral .venue-art{height:320px}.cathedral img{bottom:0;width:235%;left:-5%}.programme .moment-0,.programme .moment-1,.programme .moment-2{display:block}.programme .venue-name{font-size:28px}.programme .venue-address{font-size:17px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
#invitation-programme{background:#faf4e9 url(grain.svg)}
.moment-copy,.moment-0 .moment-copy,.moment-1 .moment-copy,.moment-2 .moment-copy,.programme-venue{background:transparent}
.illustrated-programme:before{background:linear-gradient(transparent,#cbbb9b55 5%,#cbbb9b55 95%,transparent)}
.programme .moment-1 .moment-copy{text-align:center}.cathedral .venue-art{height:530px}.cathedral img{top:0;bottom:auto;width:170%;left:0}
@media(max-width:600px){.cathedral .venue-art{height:380px}.cathedral img{top:0;bottom:auto;width:200%;left:-4%}}
.illustrated-programme:before{display:none}.programme .moment:nth-child(n+4):before{content:'';position:absolute;left:50%;top:0;bottom:0;width:1px;background:#cbbb9b55}
/* Watercolour details and generous, readable times. */
.programme time{font:500 29px/1.3 'Cormorant Garamond',Georgia,serif;letter-spacing:.03em;text-transform:none;color:#985d43;margin-bottom:18px}.programme .moment:nth-child(n+4):before,.moment:after{display:none}.programme .moment:nth-child(n+4){border-top:0;padding-block:38px}.programme .moment:nth-child(n+4):after{display:block;content:'';width:60%;height:1px;left:20%;top:0;border:0;border-radius:50%;background:linear-gradient(90deg,transparent,#cdb99b88,transparent)}
.cathedral .venue-art{height:auto;max-width:100%;mask-image:none}.cathedral img{display:block;position:static;left:auto;top:auto;bottom:auto;width:100%;height:auto;mix-blend-mode:multiply}.programme-venue.cathedral{margin:12px -24px 0}.watercolor-icon{width:220px;height:220px;background-image:url(../assets/img/moments-aquarelles-v12.png)!important;background-size:300% 200%!important;border-radius:0;mix-blend-mode:multiply;mask-image:radial-gradient(ellipse,#000 52%,transparent 74%)}.art-cocktail{background-position:0 0}.art-photos{background-position:50% 0}.art-sorbet{background-position:100% 0}.art-dinner{background-position:0 100%}.art-dance{background-position:50% 100%}.art-recena{background-position:100% 100%}
.silk-bow{position:absolute;top:calc(51% - 160px);left:0;width:100%;height:320px;overflow:visible;z-index:6;filter:drop-shadow(0 5px 4px #68543933);pointer-events:none}.silk-left,.silk-right{transform-box:fill-box;transform-origin:center;stroke-dasharray:1500;stroke-dashoffset:0}.opening .silk-left{animation:silkUnlaceLeft 4.5s .45s cubic-bezier(.35,0,.18,1) forwards}.opening .silk-right{animation:silkUnlaceRight 4.8s .65s cubic-bezier(.35,0,.18,1) forwards}.opening .flap{animation-delay:2.1s}.opening .front{animation-delay:2.3s}.opening .panel-left{animation-delay:2.5s}.opening .panel-right{animation-delay:2.7s}
@keyframes silkUnlaceLeft{0%{transform:none;opacity:1}22%{transform:translate(-12px,8px) rotate(-2deg);stroke-dashoffset:40}55%{transform:translate(-65px,25px) rotate(-7deg);opacity:1}100%{transform:translate(-440px,100px) rotate(-16deg);stroke-dashoffset:1500;opacity:0}}
@keyframes silkUnlaceRight{0%{transform:none;opacity:1}22%{transform:translate(12px,8px) rotate(2deg);stroke-dashoffset:40}55%{transform:translate(65px,35px) rotate(7deg);opacity:1}100%{transform:translate(440px,115px) rotate(16deg);stroke-dashoffset:1500;opacity:0}}
@media(max-width:600px){.programme time{font-size:25px}.watercolor-icon{width:155px;height:155px}.programme .moment{gap:10px}.programme-venue.cathedral{margin-inline:-24px}.silk-bow{width:170%;left:-35%;height:270px;top:calc(51% - 135px)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
.art-cocktail{background-position:0 0!important}.art-photos{background-position:50% 0!important}.art-sorbet{background-position:100% 0!important}.art-dinner{background-position:0 100%!important}.art-dance{background-position:50% 100%!important}.art-recena{background-position:100% 100%!important}

/* A fine terracotta thread links the illustrated moments. */
.programme .moment:nth-child(n+4):before{display:block;content:'';position:absolute;left:calc(50% - 8px);top:0;bottom:0;width:16px;background:none;border-left:1px solid #b67c5655;border-radius:50%;transform:rotate(3deg);pointer-events:none}
.programme .moment:nth-child(even):before{border-left:0;border-right:1px solid #b67c5655;transform:rotate(-3deg)}
.programme .moment:nth-child(n+4):after{width:9px;height:9px;left:calc(50% - 5px);top:48%;border:1px solid #bc927466;background:#faf4e9;border-radius:2px;transform:rotate(45deg)}
.programme-venue:after{content:'❦';display:block;color:#b68f6e;font-size:29px;margin:24px auto 0;opacity:.6}

/* Four edge-to-edge satin lengths, tied under the wax seal. */
.satin-band{position:absolute;display:block;z-index:6;pointer-events:none;--satin-width:clamp(48px,7vw,80px);background-color:#b96343;background-image:linear-gradient(180deg,#713322 0%,#aa5135 5%,#d98b68 13%,#f2b99a 23%,#c47754 39%,#aa5134 59%,#cc7c57 78%,#edaa82 92%,#8b3c29 100%);box-shadow:0 5px 8px #42231740,inset 0 1px 1px #ffd9bc88,inset 0 -1px 1px #59231755;transform-style:preserve-3d}
.satin-band:after{content:'';position:absolute;inset:2px 0;background:repeating-linear-gradient(0deg,#fff0db0b 0 1px,transparent 1px 3px),linear-gradient(100deg,transparent 15%,#fff5e82b 38%,transparent 55%,#592a1712 78%,transparent);mix-blend-mode:soft-light}
.satin-west,.satin-east{top:calc(51% - var(--satin-width)/2);height:var(--satin-width);width:50.5%}.satin-west{left:0;transform-origin:right center}.satin-east{right:0;transform-origin:left center}
.satin-north,.satin-south{left:calc(50% - var(--satin-width)/2);width:var(--satin-width);background-image:linear-gradient(90deg,#713322 0%,#aa5135 5%,#d98b68 13%,#f2b99a 23%,#c47754 39%,#aa5134 59%,#cc7c57 78%,#edaa82 92%,#8b3c29 100%);box-shadow:5px 0 8px #42231735,inset 1px 0 1px #ffd9bc88,inset -1px 0 1px #59231755}
.satin-north{top:0;height:51%;transform-origin:center bottom}.satin-south{top:51%;bottom:0;transform-origin:center top}.satin-north:after,.satin-south:after{background:repeating-linear-gradient(90deg,#fff0db0b 0 1px,transparent 1px 3px),linear-gradient(170deg,transparent,#fff5e833 40%,transparent 60%)}
.silk-bow{z-index:7;filter:drop-shadow(2px 7px 4px #57291866)}
.opening .satin-west{animation:satinWest 4.5s .6s cubic-bezier(.32,0,.18,1) forwards}.opening .satin-east{animation:satinEast 4.7s .8s cubic-bezier(.32,0,.18,1) forwards}.opening .satin-north{animation:satinNorth 4.4s 1s cubic-bezier(.32,0,.18,1) forwards}.opening .satin-south{animation:satinSouth 4.5s 1.2s cubic-bezier(.32,0,.18,1) forwards}
@keyframes satinWest{0%{transform:none}25%{transform:translateX(-2%) rotate(-3deg) rotateY(15deg)}65%{opacity:1;transform:translateX(-40%) rotate(8deg) rotateY(25deg)}100%{opacity:0;transform:translateX(-110%) rotate(18deg) rotateY(35deg)}}
@keyframes satinEast{0%{transform:none}25%{transform:translateX(2%) rotate(3deg) rotateY(-15deg)}65%{opacity:1;transform:translateX(40%) rotate(-8deg) rotateY(-25deg)}100%{opacity:0;transform:translateX(110%) rotate(-18deg) rotateY(-35deg)}}
@keyframes satinNorth{0%{transform:none}25%{transform:translateY(-2%) rotate(2deg) rotateX(-12deg)}65%{opacity:1;transform:translateY(-40%) rotate(-7deg) rotateX(-25deg)}100%{opacity:0;transform:translateY(-110%) rotate(-14deg) rotateX(-35deg)}}
@keyframes satinSouth{0%{transform:none}25%{transform:translateY(2%) rotate(-2deg) rotateX(12deg)}65%{opacity:1;transform:translateY(40%) rotate(7deg) rotateX(25deg)}100%{opacity:0;transform:translateY(110%) rotate(14deg) rotateX(35deg)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
.open-label{left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:90%;padding:10px 18px;background:#f8f1e5eb;border-radius:3px;box-shadow:0 2px 12px #4b2c1710}.delicate{left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:90%;padding:5px 12px;background:#f8f1e5de;border-radius:3px}
/* A calm, continuous timeline with aligned milestones. */
.programme .moment:nth-child(n+4):before{content:'';display:block;position:absolute;left:50%;top:0;bottom:0;width:1px;border:0;border-radius:0;transform:none;background:#c5ab8966;pointer-events:none}
.programme .moment:nth-child(n+4):after{content:'';display:block;position:absolute;left:calc(50% - 4px);top:57px;width:8px;height:8px;border:1px solid #b69473;border-radius:50%;transform:none;background:#faf4e9;box-shadow:0 0 0 5px #faf4e9}
.programme .moment:nth-child(n+4){padding-block:38px;gap:52px;align-items:center}.programme .moment:nth-child(n+4) .moment-copy{padding:12px 0}.programme .moment:nth-child(n+4) time{position:relative;margin-bottom:16px}.programme .moment:nth-child(n+4) .moment-art{max-width:100%}
.programme .moment-3:before{top:61px}.programme .moment-8:before{bottom:calc(100% - 61px)}
.programme-venue:after{content:'';display:block;width:64px;height:1px;background:linear-gradient(90deg,transparent,#b6947388,transparent);margin:28px auto 10px}
@media(max-width:600px){.programme .moment:nth-child(n+4){gap:36px;padding-block:32px}.programme .moment:nth-child(n+4):after{top:49px}.programme .moment-3:before{top:53px}.programme .moment-8:before{bottom:calc(100% - 53px)}.programme .moment:nth-child(n+4) .moment-copy{padding:8px 0}.programme .moment:nth-child(n+4) .moment-art{width:140px;height:140px}.programme .moment:nth-child(n+4) h3{font-size:26px}}
.programme .moment.moment-3:before{top:61px}.programme .moment.moment-8:before{bottom:calc(100% - 61px)}
@media(max-width:600px){.programme .moment.moment-3:before{top:53px}.programme .moment.moment-8:before{bottom:calc(100% - 53px)}}

/* Satin belongs to each paper flap and follows its exact 3D movement. */
.opening .satin-band{animation:none!important;opacity:1;transform:none}.panel .satin-band,.flap .satin-band,.front .satin-band{z-index:2}
.panel .satin-west,.panel .satin-east{top:calc(50% - var(--satin-width)/2)}.flap .satin-north{height:53%}.front .satin-south{top:49%}
/* The chronology starts with the very first appointment. */
.programme .moment:nth-child(-n+3){position:relative;padding-block:36px}.programme .moment:nth-child(-n+3):before{display:block;content:'';position:absolute;left:50%;top:0;bottom:0;width:1px;background:#c5ab8966;border:0;transform:none;border-radius:0}
.programme .moment:nth-child(-n+3) .moment-copy,.programme .moment:nth-child(-n+3) .programme-venue{position:relative;background:#faf4e9 url(grain.svg);z-index:1}
.programme .moment:nth-child(-n+3) .moment-copy{padding-top:28px;padding-bottom:24px}.programme .moment:nth-child(-n+3) .moment-copy:before{content:'';display:block;position:absolute;top:0;left:calc(50% - 4px);width:8px;height:8px;border:1px solid #b69473;border-radius:50%;background:#faf4e9;box-shadow:0 0 0 5px #faf4e9}
.programme .moment.moment-0:before{top:40px}.programme .moment.moment-3:before{top:0}.programme-venue:after{display:none}
#invitation-programme{scroll-margin-top:0}.card-copy{padding-bottom:70px}.inline-rsvp{scroll-margin-top:20px}

/* Selected concept 4: small silk bow below the central wax seal. */
.silk-bow{width:190px;height:119px;left:calc(50% - 95px);top:calc(51% + 15px);filter:drop-shadow(1px 3px 2px #57291844)}
.seal{width:clamp(95px,10vw,120px)}
@media(max-width:600px){.silk-bow{width:165px;height:103px;left:calc(50% - 82.5px);top:calc(51% + 17px)}}

/* Photographic fabric and embossed paper from the selected concept. */
.panel,.front,.flap{inset:0;background:#f2e3d0 url(../assets/img/enveloppe-tissu-v18.png) center/100% 100% no-repeat;box-shadow:none}.panel:before,.panel:after,.front:before,.front:after,.flap:before,.flap:after{display:none}
.panel-left{clip-path:polygon(0 0,50% 50%,0 100%)}.panel-right{clip-path:polygon(100% 0,50% 50%,100% 100%)}.flap{clip-path:polygon(0 0,100% 0,50% 50%)}.front{clip-path:polygon(0 100%,50% 50%,100% 100%)}
.seal{top:50%;width:clamp(110px,13vw,155px);background:none;border-radius:0;box-shadow:none;filter:drop-shadow(2px 5px 3px #542b1b55)}.seal:before,.seal:after,.opening .seal:after{display:none}.seal img{display:block;width:100%;height:100%;object-fit:contain}.opening .seal{animation:sealRelease 1.8s cubic-bezier(.4,0,.15,1) forwards}
/* Unwrap first, open only the top flap, then release the photographs. */
header{justify-content:flex-end}.panel,.front,.flap{background-image:url(../assets/img/enveloppe-papier-v19.png)}
.unroll{position:absolute;inset:0;z-index:7;background:url(../assets/img/enveloppe-tissu-v18.png) center/100% 100% no-repeat;pointer-events:none;will-change:clip-path,transform}
.unroll-left{clip-path:inset(44.5% 50% 44.5% 0)}.unroll-right{clip-path:inset(44.5% 0 44.5% 50%)}.unroll-top{clip-path:inset(0 41.6% 50% 41.6%)}.unroll-bottom{clip-path:inset(50% 41.6% 0 41.6%)}
.opening .unroll-left{animation:unwrapLeft 3.4s .45s cubic-bezier(.45,0,.2,1) forwards}.opening .unroll-right{animation:unwrapRight 3.5s .6s cubic-bezier(.45,0,.2,1) forwards}.opening .unroll-top{animation:unwrapTop 3.1s .8s cubic-bezier(.45,0,.2,1) forwards}.opening .unroll-bottom{animation:unwrapBottom 3.3s .9s cubic-bezier(.45,0,.2,1) forwards}
@keyframes unwrapLeft{0%{clip-path:inset(44.5% 50% 44.5% 0);transform:none}65%{transform:translateY(7px)}100%{clip-path:inset(44.5% 100% 44.5% 0);transform:translateY(16px)}}
@keyframes unwrapRight{0%{clip-path:inset(44.5% 0 44.5% 50%);transform:none}65%{transform:translateY(-7px)}100%{clip-path:inset(44.5% 0 44.5% 100%);transform:translateY(-16px)}}
@keyframes unwrapTop{to{clip-path:inset(0 41.6% 100% 41.6%)}}
@keyframes unwrapBottom{to{clip-path:inset(100% 41.6% 0 41.6%)}}
.opening .panel-left,.opening .panel-right,.opening .front{animation:none;transform:none}.opening .flap{animation:topOpen 3.2s 4.3s cubic-bezier(.3,0,.15,1) forwards}
.inside-paper{z-index:6;background:transparent}.inside-paper:before{display:none}.opening .strip-0{animation:photoGlideLeft 12s cubic-bezier(.22,.61,.2,1) both}.opening .strip-1{animation:photoGlideRight 12s cubic-bezier(.22,.61,.2,1) both}
@keyframes photoGlideLeft{0%,43%{opacity:0;transform:translateY(60svh) rotate(-4deg)}51%{opacity:1}65%,80%{opacity:1;transform:translateY(-3svh) rotate(-5deg)}100%{opacity:0;transform:translate(-12vw,-20svh) rotate(-7deg)}}
@keyframes photoGlideRight{0%,47%{opacity:0;transform:translateY(65svh) rotate(4deg)}55%{opacity:1}69%,82%{opacity:1;transform:translateY(3svh) rotate(5deg)}100%{opacity:0;transform:translate(12vw,-15svh) rotate(7deg)}}
.opening .stage{animation:paperDepart 2.4s 9.5s ease forwards}.opening .invitation{animation:illustratedLetter 12s cubic-bezier(.22,.61,.2,1) both}.opening .card-copy{animation:invitationInk 12s ease both}.opening .floral-left,.opening .floral-right{animation-duration:12s}
@keyframes paperDepart{to{opacity:0;transform:translateY(8svh)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
/* Pull back from the envelope, lift the keepsakes out of its mouth, dissolve. */
.stage{background:#e9dece url(grain.svg)!important}.envelope{transform-origin:50% 65%}.opening .envelope{animation:envelopePullback 14s cubic-bezier(.25,.65,.2,1) both}
.opening .inside-paper{z-index:3;overflow:visible}.opening .panel-left,.opening .panel-right{z-index:2}.opening .front{z-index:4}.opening .flap{z-index:5}
.opening .strip-0{animation:keepsakeOutLeft 14s cubic-bezier(.22,.61,.2,1) both}.opening .strip-1{animation:keepsakeOutRight 14s cubic-bezier(.22,.61,.2,1) both}
@keyframes envelopePullback{0%,25%{transform:translateY(0) scale(1)}43%,70%{transform:translateY(12svh) scale(.56)}84%{opacity:1;transform:translateY(13svh) scale(.52)}100%{opacity:0;transform:translateY(14svh) scale(.48)}}
@keyframes keepsakeOutLeft{0%,38%{opacity:0;transform:translate(-8px,49svh) rotate(-4deg)}44%{opacity:1}64%,80%{opacity:1;transform:translate(-12px,-39svh) rotate(-8deg)}100%{opacity:0;transform:translate(-18px,-46svh) rotate(-9deg)}}
@keyframes keepsakeOutRight{0%,43%{opacity:0;transform:translate(8px,52svh) rotate(4deg)}49%{opacity:1}69%,83%{opacity:1;transform:translate(12px,-32svh) rotate(7deg)}100%{opacity:0;transform:translate(18px,-41svh) rotate(8deg)}}
.opening .stage{animation:sceneDissolve 3.2s 10.8s ease forwards}.opening .invitation{animation:invitationDissolve 14s ease both}.opening .card-copy{animation:invitationDissolve 14s ease both}.opening .floral-left,.opening .floral-right{animation-duration:14s}
@keyframes sceneDissolve{to{opacity:0}}
@keyframes invitationDissolve{0%,76%{opacity:0;transform:scale(1.025)}100%{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Four paper folds carry the intact fabric away; no ribbon clipping. */
.panel,.front,.flap{background-image:url(../assets/img/enveloppe-tissu-v18.png)}
.opening .envelope{animation:none;transform:none;opacity:1}.opening .panel-left{z-index:3;animation:leftOpen 4s 1.35s cubic-bezier(.3,0,.15,1) forwards}.opening .panel-right{z-index:3;animation:rightOpen 4s 1.55s cubic-bezier(.3,0,.15,1) forwards}.opening .front{z-index:4;animation:bottomOpen 4s 1.15s cubic-bezier(.3,0,.15,1) forwards}.opening .flap{z-index:5;animation:topOpen 4s .95s cubic-bezier(.3,0,.15,1) forwards}
.opening .inside-paper{z-index:2;background:#f3eadc url(grain.svg)}.opening .strip-0{animation:unfoldPhotosLeft 12s cubic-bezier(.22,.61,.2,1) both}.opening .strip-1{animation:unfoldPhotosRight 12s cubic-bezier(.22,.61,.2,1) both}
@keyframes unfoldPhotosLeft{0%,28%{opacity:0;transform:translate(-8px,40svh) rotate(-4deg) scale(.94)}42%{opacity:1}58%,80%{opacity:1;transform:translate(-8px,-4svh) rotate(-6deg) scale(1)}100%{opacity:0;transform:translate(-25px,-14svh) rotate(-8deg) scale(.95)}}
@keyframes unfoldPhotosRight{0%,33%{opacity:0;transform:translate(8px,45svh) rotate(4deg) scale(.94)}47%{opacity:1}63%,82%{opacity:1;transform:translate(8px,3svh) rotate(6deg) scale(1)}100%{opacity:0;transform:translate(25px,-10svh) rotate(8deg) scale(.95)}}
.opening .stage{animation:sceneDissolve 2.5s 9.5s ease forwards}.opening .invitation,.opening .card-copy,.opening .floral-left,.opening .floral-right{animation-duration:12s}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Preserve the original colours of the couple photographs. */
.photo-strip img{filter:none}

/* Final opening choreography: physical folds, gently retreating camera, keepsakes. */
.opening .envelope{animation:stationeryCamera 10.8s cubic-bezier(.32,.05,.2,1) both;transform-origin:center;will-change:transform}
.opening .seal{animation:waxLift 1.7s cubic-bezier(.25,.1,.2,1) both}
.opening .flap{animation:topOpen 3.7s 1.05s cubic-bezier(.38,.02,.16,1) forwards}
.opening .panel-left{animation:leftOpen 3.9s 1.4s cubic-bezier(.38,.02,.16,1) forwards}
.opening .panel-right{animation:rightOpen 4s 1.65s cubic-bezier(.38,.02,.16,1) forwards}
.opening .front{animation:bottomOpen 4.1s 1.95s cubic-bezier(.38,.02,.16,1) forwards}
.opening .inside-paper{background:radial-gradient(ellipse at 45% 35%,#fffbf2,#eee2d0);box-shadow:inset 0 0 90px #99836b18}
.inside-paper:after{background:none}
.opening .strip-0{animation:memoriesLeft 10.8s cubic-bezier(.25,.55,.2,1) both}
.opening .strip-1{animation:memoriesRight 10.8s cubic-bezier(.25,.55,.2,1) both}
.photo-strip{box-shadow:0 18px 35px #49351f24,0 3px 7px #49351f12}
.opening .stage{animation:sceneDissolve 2.4s 8.4s ease-in-out forwards}
.opening .invitation{animation:letterArrival 10.8s ease-in-out both}
.opening .card-copy{animation:letterInk 10.8s ease both}
.opening .floral-left,.opening .floral-right{animation-duration:10.8s}
@keyframes stationeryCamera{0%,8%{transform:scale(1)}37%,72%{transform:scale(.88) translateY(1svh)}100%{transform:scale(.96) translateY(-2svh)}}
@keyframes waxLift{0%,10%{opacity:1;transform:translate(-50%,-50%) scale(1)}48%{opacity:1;transform:translate(-50%,-56%) rotate(-5deg) scale(1.12)}100%{opacity:0;transform:translate(-50%,-75%) rotate(-9deg) scale(1.24)}}
@keyframes memoriesLeft{0%,24%{opacity:0;transform:translate(-7px,34svh) rotate(-3deg) scale(.97)}40%{opacity:1}58%,77%{opacity:1;transform:translate(-9px,-3svh) rotate(-6deg) scale(1.06)}100%{opacity:0;transform:translate(-16px,-8svh) rotate(-7deg) scale(1.1)}}
@keyframes memoriesRight{0%,29%{opacity:0;transform:translate(7px,38svh) rotate(3deg) scale(.97)}45%{opacity:1}63%,80%{opacity:1;transform:translate(9px,3svh) rotate(6deg) scale(1.06)}100%{opacity:0;transform:translate(16px,-3svh) rotate(7deg) scale(1.1)}}
@keyframes letterArrival{0%,75%{opacity:0;transform:translateY(22px) scale(1.015)}100%{opacity:1;transform:none}}
@keyframes letterInk{0%,80%{opacity:0;transform:translateY(12px)}100%{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Brighter Mediterranean watercolours, revealed as the letter is read. */
.floral-canopy img{filter:saturate(1.28) contrast(1.035);opacity:.94!important}
.floral-right{opacity:.88!important}
.botanical-accent{height:130px;width:210px;margin:20px auto -15px;overflow:hidden;pointer-events:none;mix-blend-mode:multiply;mask-image:radial-gradient(ellipse,#000 40%,transparent 74%)}
.botanical-accent img{width:100%;height:100%;object-fit:cover;object-position:center 38%;filter:saturate(1.3) contrast(1.035)}
.js .scroll-reveal{opacity:0;transform:translateY(26px);transition:opacity 1.15s ease,transform 1.35s cubic-bezier(.2,.65,.2,1)}
.js .scroll-reveal.moment-art{transform:translateY(22px) rotate(-3deg);transition-delay:.12s}
.js .scroll-reveal.venue-art{transform:translateY(30px) scale(.98)}
.js .scroll-reveal.in-view{opacity:1;transform:none}
@media(max-width:600px){.floral-canopy .floral-right{opacity:.85!important}.botanical-accent{height:105px;width:175px}}
@media(prefers-reduced-motion:reduce){.js .scroll-reveal{opacity:1;transform:none;transition:none}}
@media print{.js .scroll-reveal{opacity:1;transform:none}}

/* A single intact pocket slides down; the photographs remain on the table. */
.envelope-button>.inside-paper{z-index:1;justify-content:center;background:transparent;overflow:visible;pointer-events:none}
.envelope{z-index:2;transform-origin:50% 50%}
.envelope .panel-left,.envelope .panel-right{display:none}
.envelope .front{clip-path:polygon(0 0,50% 50%,100% 0,100% 100%,0 100%);z-index:4;backface-visibility:visible}
.envelope .flap{z-index:5}
.opening .envelope{animation:envelopeLeaves 11s cubic-bezier(.33,0,.2,1) both}
.opening .envelope .front{animation:none;transform:none}
.opening .envelope .flap{animation:upperFlapOnly 3.2s .8s cubic-bezier(.35,0,.18,1) forwards}
.opening .envelope .back{animation:liningFades 3.2s .8s ease forwards}
.opening .inside-paper{background:transparent;box-shadow:none;z-index:1}
.opening .strip-0{animation:tablePhotosLeft 11s cubic-bezier(.25,.6,.2,1) both}
.opening .strip-1{animation:tablePhotosRight 11s cubic-bezier(.25,.6,.2,1) both}
.opening .stage{animation:sceneDissolve 2.5s 8.5s ease-in-out forwards}
.opening .invitation,.opening .card-copy,.opening .floral-left,.opening .floral-right{animation-duration:11s}
@keyframes upperFlapOnly{0%{transform:rotateX(0)}100%{transform:rotateX(165deg)}}
@keyframes liningFades{0%,30%{opacity:1}100%{opacity:0}}
@keyframes envelopeLeaves{0%,12%{transform:none}34%{transform:translateY(8svh) scale(.95)}68%,100%{transform:translateY(120svh) scale(.95)}}
@keyframes tablePhotosLeft{0%,15%{opacity:0;transform:translate(-8px,12svh) rotate(-3deg) scale(.94)}31%{opacity:1}61%,78%{opacity:1;transform:translate(-8px,-2svh) rotate(-6deg) scale(1)}100%{opacity:0;transform:translate(-12px,-6svh) rotate(-7deg) scale(1.025)}}
@keyframes tablePhotosRight{0%,20%{opacity:0;transform:translate(8px,15svh) rotate(3deg) scale(.94)}36%{opacity:1}65%,80%{opacity:1;transform:translate(8px,3svh) rotate(6deg) scale(1)}100%{opacity:0;transform:translate(12px,-2svh) rotate(7deg) scale(1.025)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Responsive stationery: preserve the portrait artwork on a wide screen. */
@media(min-width:701px){
 body{background:#e9e0d3 url(grain.svg)}
 .stage{background:radial-gradient(ellipse at 50% 40%,#faf5ed,#ded1be)!important}
 .envelope-button{inset:0;margin:auto;width:min(540px,66.666svh);height:min(810px,100svh);overflow:visible}
 .envelope{box-shadow:0 24px 80px #5d402a30}
 .envelope-button>.inside-paper{gap:22px}
 .photo-strip{width:40%;padding:10px 10px 16px;gap:8px}
 .photo-strip img{height:clamp(85px,16svh,135px)}
 .photo-strip small{font-size:11px;letter-spacing:.06em}
 .invitation{max-width:1040px;margin:0 auto;background:var(--paper);box-shadow:0 12px 70px #5d402a12}
 .card-copy{min-height:min(900px,100svh);padding:100px 160px 80px;justify-content:center}
 .card-copy h2{font-size:clamp(65px,6.5vw,100px);line-height:1.05}
 .floral-left{width:290px!important}.floral-right{width:220px!important}
 .detail-slide{padding-inline:64px}
 #invitation-programme{padding-inline:64px}
 .illustrated-programme{width:100%;margin-inline:auto}
 .inline-rsvp{padding-inline:64px}
}
@media(min-width:701px) and (max-height:650px){
 .card-copy{min-height:650px;padding-top:90px;padding-bottom:70px}
 .photo-strip{padding:7px;gap:5px}.photo-strip img{height:15svh}.photo-strip small{font-size:9px}
}
@media(max-width:700px){
 .envelope-button{width:100%;height:100%;inset:0}
 .envelope-button>.inside-paper{gap:clamp(12px,4vw,22px)}
 .photo-strip{width:36vw;max-width:190px;padding:8px;gap:7px}
 .photo-strip img{height:clamp(75px,16svh,140px)}
 .photo-strip small{font-size:10px;letter-spacing:.04em}
 .invitation{width:100%;max-width:100%;margin:0}
 .card-copy{padding-inline:22px}
 .card-copy h2{font-size:clamp(51px,15.5vw,90px)}
 #invitation-programme{padding-inline:20px}
 .programme-venue.cathedral{margin-inline:-20px}
 .programme time{font-size:clamp(23px,6.3vw,29px)}
 .programme .moment:nth-child(n+4){gap:28px}
 .programme .moment:nth-child(n+4) h3{font-size:clamp(23px,6.4vw,29px)}
 .programme .moment:nth-child(n+4) .moment-art{width:min(140px,36vw);height:min(140px,36vw)}
 .inline-rsvp{padding-inline:20px}
}

/* Consistent stationery typography and a lighter RSVP introduction. */
.invitation{--serif:'Cormorant Garamond',Georgia,serif;--sans:Jost,sans-serif}
.invitation h2,.invitation h3,.invitation p,.invitation time,.signature,.date{font-family:var(--serif)}
.invitation .eyebrow{font-family:var(--sans)}
.detail-slide[data-slide="3"]{background:#fff;min-height:0;padding-top:48px;padding-bottom:24px}
.detail-slide[data-slide="3"] h2{color:#77796a;font-size:clamp(36px,6vw,56px);margin:0 auto 20px;line-height:1.15}
.detail-slide[data-slide="3"] .card-frame,.detail-slide[data-slide="3"] .ornament{display:none}
.detail-slide[data-slide="3"] .detail-text{margin:0 auto;max-width:620px;font-size:23px;line-height:1.5}
.detail-slide[data-slide="3"] .signature{margin:16px auto 0;font-size:27px}
.inline-rsvp{background:#fff;padding-top:30px}
.inline-rsvp .champ--question{background:#fff;border-color:#e5ddd3}
.inline-rsvp input,.inline-rsvp select,.inline-rsvp textarea,.inline-rsvp .choix label{background:#fff;font-family:var(--sans);font-size:16px}
.inline-rsvp label,.inline-rsvp legend{font-family:var(--sans);font-size:18px;line-height:1.5}
.inline-rsvp .champ__aide,.inline-rsvp .champ__option,.inline-rsvp .rsvp__statut{font-family:var(--sans);font-size:14px;line-height:1.6}
.invitation .maps-link,.inline-rsvp .btn{font-family:var(--sans);font-size:14px;letter-spacing:.03em}
@media(max-width:700px){.detail-slide[data-slide="3"]{padding:40px 24px 20px}.detail-slide[data-slide="3"] .detail-text{font-size:21px}.inline-rsvp{padding-top:25px}}
.detail-slide[data-slide="3"] .detail-text{color:#655e53}
.detail-slide[data-slide="3"] .signature{color:#98492f;font-style:normal}

/* The RSVP begins one continuous sage-green section. */
.detail-slide[data-slide="3"],.inline-rsvp{background:#e3e7db url(grain.svg)}
.detail-slide[data-slide="3"] h2{color:#606b56}
.detail-slide[data-slide="3"] .detail-text{color:#51594a}
.inline-rsvp .champ--question{background:#f8f1e5;border-color:#cbd1bf}
.inline-rsvp input,.inline-rsvp select,.inline-rsvp textarea,.inline-rsvp .choix label{background:#f8f1e5}

/* A sage introduction, followed by a separate framed ivory reply card. */
.inline-rsvp{background:#f8f1e5 url(grain.svg);position:relative;isolation:isolate;padding-top:65px;padding-bottom:65px}
.inline-rsvp:before{content:'';position:absolute;inset:25px;border:1px solid #c5c9b7;border-radius:5px;pointer-events:none;z-index:-1}
.inline-rsvp .champ--question{background:#fcf8f0;border-color:#ded8ca}
.inline-rsvp input,.inline-rsvp select,.inline-rsvp textarea,.inline-rsvp .choix label{background:#fffcf6}
@media(max-width:700px){.inline-rsvp{padding:52px 28px}.inline-rsvp:before{inset:16px 12px}.inline-rsvp .champ--question{padding:18px 14px}.inline-rsvp h2{font-size:clamp(32px,8.5vw,46px)}}

/* Olive foliage tone and inset, consistent select arrows. */
.detail-slide[data-slide="3"]{background:#dce0cf url(grain.svg)}
.detail-slide[data-slide="3"] h2{color:#606b46}
.inline-rsvp select{appearance:none;-webkit-appearance:none;padding-right:52px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='12' viewBox='0 0 18 12'%3E%3Cpath d='m3 3 6 6 6-6' fill='none' stroke='%2368704d' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 20px center;background-size:16px 11px}

/* Watercolour edges dissolve into the same paper as the surrounding programme. */
.cathedral .venue-art,.alamo .venue-art{mask-image:linear-gradient(to bottom,transparent 0%,#000 12%,#000 76%,transparent 100%),linear-gradient(to right,transparent 0%,#000 9%,#000 91%,transparent 100%);mask-composite:intersect;-webkit-mask-composite:source-in;mix-blend-mode:multiply}
#invitation-programme{background:linear-gradient(to bottom,#f8f1e5,#faf4e9 150px),url(grain.svg)}
.detail-slide[data-slide="3"]{background:linear-gradient(to bottom,#faf4e9 0%,#dce0cf 90px,#dce0cf calc(100% - 75px),#f8f1e5 100%);padding-top:95px;padding-bottom:85px}
.inline-rsvp{padding-top:45px}
/* Shadows stay attached to the paper, with a separate soft shadow on the table. */
.envelope-button:before{content:'';position:absolute;inset:3% 3%;z-index:0;border-radius:10px;background:#60472f;filter:blur(24px);opacity:.16;transform:translateY(18px);pointer-events:none}
.envelope{box-shadow:0 2px 3px #4d321e1f,0 12px 28px #4d321e26,0 35px 65px #4d321e19}
.envelope .front:before{display:block;content:'';position:absolute;inset:0;background:linear-gradient(145deg,#fff9e812,transparent 46%,#63452b18);transform:none;opacity:1;pointer-events:none}
.envelope .flap:after{display:block;content:'';position:absolute;inset:0;background:linear-gradient(to bottom,#fff8e908 0%,transparent 25%,#62472d28 52%,transparent 55%);transform:none;filter:none;opacity:.45;pointer-events:none}
.opening .envelope-button:before{animation:tableShadow 11s ease both}
.opening .envelope{animation-name:envelopeLeaves;box-shadow:0 4px 6px #4d321e22,0 22px 48px #4d321e30,0 45px 85px #4d321e18}
.opening .envelope .flap:after{animation:foldLight 3.2s .8s ease both}
.opening .envelope .front:before{animation:pocketShadow 5s .8s ease both}
@keyframes tableShadow{0%,12%{opacity:.16;transform:translateY(18px) scale(1);filter:blur(24px)}35%{opacity:.24;transform:translateY(10svh) scale(.96);filter:blur(32px)}68%,100%{opacity:0;transform:translateY(115svh) scale(.92);filter:blur(42px)}}
@keyframes foldLight{0%{opacity:.45}35%{opacity:1;background-color:#5b3d2920}70%{opacity:.7}100%{opacity:.2}}
@keyframes pocketShadow{0%{opacity:.8}32%{opacity:1;background-color:#6b4c3020}65%{opacity:.5}100%{opacity:.25;background-color:transparent}}
@media(max-width:700px){.detail-slide[data-slide="3"]{padding:85px 24px 75px}.inline-rsvp{padding-top:42px}.envelope-button:before{filter:blur(18px)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
.programme .moment:nth-child(-n+3) .moment-copy,.programme .moment:nth-child(-n+3) .programme-venue{background:#faf4e9}
.cathedral .venue-art,.alamo .venue-art{mask-composite:intersect}
/* The photographed fold and animated seam now meet behind the central seal. */
.envelope .front,.envelope .flap{background-image:url(../assets/img/enveloppe-tissu-v32.png)}
.envelope .flap{clip-path:polygon(0 0,100% 0,50% 50%)}
.envelope .front{clip-path:polygon(0 0,50% 50%,100% 0,100% 100%,0 100%)}

/* Match the visible fold in the paper texture with the animated pocket seam. */
.stage{background:#f8f1e5 url(grain.svg)!important}
.envelope{--fold-tip:52.5%}
.envelope .flap{clip-path:polygon(0 0,100% 0,50% var(--fold-tip))}
.envelope .front{clip-path:polygon(0 0,50% var(--fold-tip),100% 0,100% 100%,0 100%)}
.envelope .flap:before{display:block;content:'';position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 1500' preserveAspectRatio='none'%3E%3Cpath d='M0 0L500 787.5L1000 0' fill='none' stroke='%23644a32' stroke-opacity='.20' stroke-width='7'/%3E%3Cpath d='M0 0L500 787.5L1000 0' fill='none' stroke='%23fff8e8' stroke-opacity='.45' stroke-width='2'/%3E%3C/svg%3E") center/100% 100% no-repeat;transform:none;opacity:1;filter:none;pointer-events:none}
/* Continuous warm ivory around the invitation and photograph strips. */
body,.stage,.envelope-button>.inside-paper,.opening .inside-paper{background:#f8f1e5!important}
.card[data-slide="0"]{background:#f8f1e5;box-shadow:none}
.card[data-slide="0"] .watercolor{display:none}
.floral-left{mask-image:linear-gradient(to right,#000 60%,transparent 100%),linear-gradient(to bottom,#000 35%,transparent 100%)!important;mask-composite:intersect}
.floral-right{mask-image:linear-gradient(to left,#000 55%,transparent 100%),linear-gradient(to bottom,#000 30%,transparent 100%)!important;mask-composite:intersect}
.photo-strip{background:#fff9ec}
