:root{
  --burgundy:#6B2035;--wine:#3B151F;--ivory:#F6F0E7;--paper:#E8DCCB;--olive:#74785A;--ink:#241F1C;--taupe:#A99C8D;--gold:#B88935;--white:#fff;
  --serif:"Cormorant Garamond",Georgia,serif;--sans:"DM Sans",Arial,sans-serif;--script:"Parisienne",cursive;
  --shadow:0 24px 70px rgba(41,18,21,.18);--line:rgba(36,31,28,.16);--max:1240px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--ivory)}body{margin:0;background:var(--ivory);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.7;-webkit-font-smoothing:antialiased;overflow-x:hidden}body.menu-open,body.invitation-open{overflow:hidden}img{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}button,input{font:inherit}.screen-reader-text,.skip-link{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link:focus{clip:auto;width:auto;height:auto;margin:0;top:10px;left:10px;padding:.5rem 1rem;background:#fff;z-index:99999}.page-shell{width:min(calc(100% - 40px),var(--max));margin-inline:auto}.prose-shell{max-width:850px;padding-block:150px}.generic-main h1,.inner-main h1,.home-main h1,.home-main h2{font-family:var(--serif);font-weight:500}.button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 22px;text-transform:uppercase;letter-spacing:.15em;font-size:11px;font-weight:600;border:1px solid currentColor;transition:.25s ease}.button:hover{transform:translateY(-2px)}.button-burgundy{background:var(--burgundy);border-color:var(--burgundy);color:var(--ivory)}.button-outline{background:transparent;color:var(--burgundy)}.button-olive{background:var(--olive);border-color:var(--olive);color:#fff}.text-link{display:inline-block;font-size:12px;text-transform:uppercase;letter-spacing:.16em;border-bottom:1px solid currentColor;padding-bottom:4px}.script-eyebrow,.script-signoff,.footer-script{font-family:var(--script);font-size:clamp(31px,8vw,50px);line-height:1.05}.section-kicker{text-transform:uppercase;letter-spacing:.22em;font-size:10px;font-weight:600;margin:0 0 14px}.section-kicker.light{color:var(--paper)}.centered{text-align:center}.scene{position:relative}.decorative-stamp{display:grid;place-items:center;width:94px;height:94px;border:1px solid currentColor;border-radius:50%;font-size:8px;line-height:1.35;letter-spacing:.18em;text-align:center;transform:rotate(9deg)}

/* Header */
.site-header{position:fixed;z-index:700;top:0;left:0;width:100%;height:70px;padding:0 20px;display:flex;align-items:center;gap:24px;background:rgba(246,240,231,.88);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid rgba(36,31,28,.08);transition:opacity .35s,transform .35s,background .35s}.invitation-open .site-header{opacity:0;pointer-events:none;transform:translateY(-100%)}.site-brand{margin-right:auto;font-family:var(--serif);font-size:26px;line-height:1}.site-brand-short{display:none}.desktop-nav,.header-rsvp{display:none}.menu-toggle{width:44px;height:44px;border:0;background:transparent;display:flex;flex-direction:column;justify-content:center;gap:5px;padding:10px;cursor:pointer}.menu-toggle span:not(.screen-reader-text){width:23px;height:1px;background:var(--ink);display:block}.mobile-menu{position:fixed;z-index:900;inset:0;background:var(--wine);color:var(--ivory);padding:24px;display:flex;flex-direction:column;opacity:0;visibility:hidden;transform:translateY(-10px);transition:.3s ease}.mobile-menu.is-open{opacity:1;visibility:visible;transform:none}.mobile-menu-top{display:flex;align-items:center;justify-content:space-between}.mobile-menu-brand{font-family:var(--serif);font-size:28px}.mobile-menu-close{border:0;background:transparent;color:inherit;font-family:var(--serif);font-size:42px;line-height:1;width:44px;height:44px}.mobile-nav-list{list-style:none;padding:8vh 0 0;margin:0}.mobile-nav-list li{border-bottom:1px solid rgba(246,240,231,.18)}.mobile-nav-list a{display:block;padding:13px 0;font-family:var(--serif);font-size:clamp(34px,11vw,50px);line-height:1.1}.mobile-menu-foot{margin-top:auto;padding-top:22px;border-top:1px solid rgba(246,240,231,.18);display:flex;justify-content:space-between;align-items:end;gap:20px;font-size:11px;text-transform:uppercase;letter-spacing:.12em}.mobile-menu-foot p{margin:0}.replay-link,.footer-replay{border:0;background:none;color:inherit;text-decoration:underline;text-underline-offset:4px;padding:0;cursor:pointer;font-size:11px;text-transform:uppercase;letter-spacing:.12em}

/* Invitation intro */
.invitation-intro{position:fixed;z-index:1200;inset:0;background:radial-gradient(circle at 50% 36%,#542232 0,var(--wine) 48%,#2c0f17 100%);display:grid;place-items:center;overflow:hidden;color:var(--ivory);transition:opacity .7s ease,visibility .7s ease}.invitation-intro::before{content:"";position:absolute;inset:0;opacity:.18;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 120 120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.20'/%3E%3C/svg%3E")}.invitation-intro.is-finished{opacity:0;visibility:hidden;pointer-events:none}.invitation-skip{position:absolute;z-index:5;top:max(16px,env(safe-area-inset-top));right:18px;border:0;background:transparent;color:rgba(246,240,231,.72);font-size:10px;text-transform:uppercase;letter-spacing:.18em;padding:10px}.invite-stage{width:min(92vw,430px);position:relative;text-align:center;perspective:1600px}.invite-envelope{position:relative;width:88%;aspect-ratio:.82;margin:auto;cursor:pointer;transform-style:preserve-3d;filter:drop-shadow(0 30px 50px rgba(0,0,0,.27));transition:transform .8s cubic-bezier(.2,.8,.2,1)}.envelope-back,.envelope-front,.envelope-flap{position:absolute;inset:0;border-radius:2px}.envelope-back{background:#e9ddc9}.envelope-front{z-index:4;overflow:hidden;background:linear-gradient(135deg,transparent 49.5%,#e9ddc9 50%) 0 0/50% 100% no-repeat,linear-gradient(225deg,transparent 49.5%,#e3d4bd 50%) 100% 0/50% 100% no-repeat,linear-gradient(0deg,#efe5d4,#e8dbc6);clip-path:polygon(0 38%,50% 68%,100% 38%,100% 100%,0 100%)}.envelope-flap{z-index:6;transform-origin:top center;background:linear-gradient(180deg,#f0e5d3,#dfceb4);clip-path:polygon(0 0,100% 0,50% 59%);transition:transform 1s cubic-bezier(.2,.75,.2,1),z-index 0s .52s}.invite-envelope.is-open .envelope-flap{transform:rotateX(178deg);z-index:1}.envelope-address{position:absolute;z-index:8;top:47%;left:50%;transform:translate(-50%,-50%);width:80%;color:#3d3028;font-size:9px;letter-spacing:.22em;text-transform:uppercase;line-height:1.8;transition:opacity .25s}.envelope-address p{margin:0}.invite-envelope.is-open .envelope-address,.invite-envelope.is-open .envelope-postmark,.invite-envelope.is-open .wax-seal{opacity:0}.envelope-postmark{position:absolute;z-index:8;top:20%;right:10%;width:68px;height:68px;border:1px solid rgba(63,47,37,.62);border-radius:50%;display:grid;place-items:center;color:#58463b;font-size:7px;letter-spacing:.11em;line-height:1.25;transition:opacity .25s}.wax-seal{position:absolute;z-index:10;left:50%;top:57%;width:102px;height:102px;transform:translate(-50%,-50%);border-radius:50%;overflow:visible;transition:transform .25s,opacity .25s}.wax-seal:active{transform:translate(-50%,-50%) scale(.95)}.lfw-monogram{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply}.wax-monogram{filter:drop-shadow(0 8px 10px rgba(0,0,0,.18))}.envelope-card{position:absolute;z-index:2;left:7%;top:4%;width:86%;height:93%;background:var(--paper);color:var(--ink);transform:translateY(24%);transition:transform 1.2s .45s cubic-bezier(.2,.8,.2,1),z-index 0s .5s;box-shadow:0 8px 30px rgba(0,0,0,.16)}.invite-envelope.is-open .envelope-card{transform:translateY(-42%);z-index:5}.stamp-card-edge{position:absolute;inset:8px;background:#f2e9db;padding:11px;display:flex;flex-direction:column;clip-path:polygon(0 2%,2% 2%,2% 0,4% 0,4% 2%,6% 2%,6% 0,8% 0,8% 2%,10% 2%,10% 0,12% 0,12% 2%,14% 2%,14% 0,16% 0,16% 2%,18% 2%,18% 0,20% 0,20% 2%,22% 2%,22% 0,24% 0,24% 2%,26% 2%,26% 0,28% 0,28% 2%,30% 2%,30% 0,32% 0,32% 2%,34% 2%,34% 0,36% 0,36% 2%,38% 2%,38% 0,40% 0,40% 2%,42% 2%,42% 0,44% 0,44% 2%,46% 2%,46% 0,48% 0,48% 2%,50% 2%,50% 0,52% 0,52% 2%,54% 2%,54% 0,56% 0,56% 2%,58% 2%,58% 0,60% 0,60% 2%,62% 2%,62% 0,64% 0,64% 2%,66% 2%,66% 0,68% 0,68% 2%,70% 2%,70% 0,72% 0,72% 2%,74% 2%,74% 0,76% 0,76% 2%,78% 2%,78% 0,80% 0,80% 2%,82% 2%,82% 0,84% 0,84% 2%,86% 2%,86% 0,88% 0,88% 2%,90% 2%,90% 0,92% 0,92% 2%,94% 2%,94% 0,96% 0,96% 2%,98% 2%,98% 0,100% 0,100% 100%,0 100%)}.invite-photo-wrap{margin:0;position:relative;height:53%;overflow:hidden}.invite-photo{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.04);object-position:center 38%}.invite-postmark-photo{position:absolute;top:10px;right:10px;width:58px;height:58px;border:1px solid rgba(250,247,240,.8);border-radius:50%;display:grid;place-items:center;color:#fff;font-size:6px;letter-spacing:.1em;line-height:1.25;transform:rotate(10deg);background:rgba(42,28,25,.15)}.invite-card-copy{padding:11px 9px 4px;display:flex;flex-direction:column;align-items:center}.invite-names{font-family:var(--serif);font-size:33px;margin:0;line-height:1}.invite-kicker,.invite-date,.invite-location{margin:6px 0 0;text-transform:uppercase;letter-spacing:.18em;font-size:7px}.save-date{margin:7px 0 0;font-family:var(--serif);font-size:18px;letter-spacing:.08em}.save-date em{font-family:var(--script);font-size:21px;letter-spacing:0}.invite-enter{border:0;background:none;margin-top:7px;font-size:7px;letter-spacing:.18em;text-transform:uppercase;color:var(--burgundy);padding:6px}.tap-open{margin:22px 0 0;font-size:9px;letter-spacing:.25em;text-transform:uppercase;transition:opacity .3s}.invite-stage.has-opened .tap-open{opacity:0}.invitation-intro.is-exiting .invite-envelope{transform:scale(1.9) translateY(-5%);opacity:0;transition:transform .8s cubic-bezier(.5,0,.5,1),opacity .55s .2s}.invitation-intro.is-exiting{background:var(--ivory)}

/* Homepage scenes */
.scene-hero{min-height:100svh;padding:120px 22px 50px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;overflow:hidden;background:var(--ivory)}.hero-paper-grain{position:absolute;inset:0;opacity:.18;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.11'/%3E%3C/svg%3E")}.hero-copy{position:relative;z-index:2;max-width:720px}.hero-copy .script-eyebrow{margin:0 0 -8px}.scene-hero h1{font-size:clamp(64px,20vw,132px);line-height:.78;letter-spacing:.03em;margin:0;color:var(--burgundy);font-weight:500}.hero-rule{display:flex;align-items:center;gap:15px;justify-content:center;margin:24px auto 16px;color:var(--burgundy)}.hero-rule::before,.hero-rule::after{content:"";width:64px;height:1px;background:rgba(107,32,53,.4)}.hero-date{font-family:var(--serif);font-size:20px;letter-spacing:.08em;margin:0}.hero-venue{text-transform:uppercase;font-size:9px;line-height:1.7;letter-spacing:.16em;margin:12px 0 28px}.hero-illustration{width:min(740px,105vw);margin:35px auto -32px;color:#715e52}.hero-illustration svg{width:100%;overflow:visible}.draw-line{fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1800;stroke-dashoffset:1800}.draw-line.olive{color:var(--olive);stroke-width:1.8}.draw-line.dark{color:#51443b}.draw-line.slow{stroke-width:.8;opacity:.55}.is-visible .draw-line,.reveal-draw.is-visible .draw-line{animation:draw 2.2s ease forwards}.is-visible .draw-line.slow{animation-duration:3.5s}@keyframes draw{to{stroke-dashoffset:0}}.hero-stamp{color:rgba(107,32,53,.34)}

.scene-note{padding:105px 22px 120px;display:grid;gap:55px;background:#f9f4ec}.note-copy{max-width:650px;margin:auto}.note-copy h2,.venue-copy h2{font-size:clamp(48px,13vw,86px);line-height:.88;margin:0 0 26px;font-weight:500}.note-copy p:not(.section-kicker):not(.script-signoff):not(.note-signature){font-family:var(--serif);font-size:21px;line-height:1.55}.script-signoff{font-size:35px;color:var(--burgundy);margin:30px 0 0}.note-signature{text-transform:uppercase;letter-spacing:.2em;font-size:10px}.print-photo{position:relative;margin:0 auto;width:min(90%,510px);background:#fff;padding:10px 10px 42px;box-shadow:var(--shadow);transform:rotate(1.5deg)}.print-photo img{aspect-ratio:4/3;object-fit:cover;filter:grayscale(1) contrast(1.04)}.print-photo figcaption{position:absolute;bottom:10px;left:18px;font-family:var(--script);font-size:22px;color:#655348}

.scene-borgo{background:var(--wine);color:var(--ivory);padding:100px 22px 0;overflow:hidden}.borgo-intro{width:min(100%,var(--max));margin:auto}.borgo-intro h2{font-family:var(--serif);font-size:clamp(55px,13vw,115px);line-height:.82;margin:0;max-width:850px}.borgo-card{position:relative;z-index:2;background:var(--paper);color:var(--ink);width:min(100%,850px);margin:55px auto -55px;padding:28px 24px;box-shadow:var(--shadow);transform:rotate(-.6deg)}.borgo-sketch svg{width:100%}.borgo-card-copy{text-align:center;border-top:1px solid rgba(36,31,28,.16);padding-top:18px}.borgo-card-copy p{margin:3px 0}.borgo-card-copy .script-eyebrow{font-size:36px}.coordinates{font-size:9px;letter-spacing:.18em;text-transform:uppercase}.borgo-card-copy .text-link{margin-top:14px}.borgo-reveal{margin:0 -22px;position:relative;max-height:880px;overflow:hidden}.borgo-reveal img{width:100%;height:min(850px,110svh);object-fit:cover;object-position:center center}.image-note{position:absolute;right:8%;bottom:8%;font-family:var(--script);font-size:42px;color:#fff;transform:rotate(-8deg);text-shadow:0 2px 20px rgba(0,0,0,.35);max-width:220px;text-align:center}

.scene-weekend{padding:115px 20px;background:var(--ivory)}.section-heading h2{font-family:var(--serif);font-size:clamp(52px,15vw,100px);line-height:.9;margin:0 0 48px}.section-heading .script-eyebrow{font-size:35px;margin:0 0 2px}.weekend-grid{display:grid;gap:17px;max-width:1100px;margin:0 auto 46px}.weekend-card{background:#fbf7ef;border:1px solid rgba(36,31,28,.13);padding:28px 24px 32px;min-height:390px;position:relative;box-shadow:0 13px 35px rgba(56,38,31,.04)}.weekend-card:nth-child(odd){transform:rotate(-.45deg)}.weekend-card:nth-child(even){transform:rotate(.45deg)}.weekend-number{font-family:var(--serif);font-size:36px;color:var(--burgundy);margin:0;line-height:1}.weekend-day{font-size:8px;letter-spacing:.16em;text-transform:uppercase;margin:3px 0 34px}.weekend-icon{font-family:var(--serif);font-size:42px;color:var(--olive);margin-bottom:12px}.weekend-card h3{font-family:var(--serif);font-weight:500;font-size:28px;letter-spacing:.06em;margin:0}.weekend-card h4{font-family:var(--serif);font-weight:500;font-size:22px;margin:3px 0 12px}.weekend-card p:last-child{font-size:14px;line-height:1.65}.weekend-card::after{content:"";position:absolute;left:24px;right:24px;bottom:20px;height:1px;background:rgba(36,31,28,.1)}

.scene-film{background:var(--wine);color:var(--ivory);padding:80px 0 100px;overflow:hidden}.film-caption{text-align:center;margin:0 20px 36px;font-size:34px}.film-window{position:relative;overflow:hidden}.film-track{display:flex;gap:0;width:max-content;padding:24px 0;background:#15100f;border-top:17px dotted var(--paper);border-bottom:17px dotted var(--paper);will-change:transform}.film-frame{margin:0;width:260px;height:220px;border-right:7px solid #15100f;overflow:hidden}.film-frame img{width:100%;height:100%;object-fit:cover;filter:sepia(.2) saturate(.9) contrast(1.05)}.photobooth-strip{display:grid;grid-template-columns:repeat(4,130px);width:max-content;margin:80px auto 0;background:#111;padding:8px;gap:5px;transform:rotate(-2deg);box-shadow:0 20px 45px rgba(0,0,0,.25)}.photobooth-strip img{width:130px;height:170px;object-fit:cover;filter:grayscale(1) contrast(1.07)}

.scene-travel{padding:115px 22px 130px;background:#f7f1e7;overflow:hidden}.travel-copy{max-width:610px;margin:0 auto 70px;text-align:center}.travel-copy h2{font-family:var(--serif);font-size:clamp(65px,20vw,125px);line-height:.78;color:var(--olive);margin:5px 0 35px}.travel-copy>p:last-of-type{font-family:var(--serif);font-size:21px}.route-line{height:70px;position:relative;display:flex;align-items:center;justify-content:center;gap:10px;margin:0 0 24px;color:var(--burgundy);font-size:8px;letter-spacing:.16em}.route-line i{display:block;width:43%;border-top:1px dashed var(--burgundy);position:relative}.route-line b{font-size:20px;font-weight:400;position:absolute;left:46%;top:10px;transform:rotate(10deg)}.travel-postcards{position:relative;height:530px;width:min(100%,600px);margin:auto}.postcard{position:absolute;margin:0;background:#fff;padding:8px 8px 38px;box-shadow:var(--shadow);width:72%;max-width:360px}.postcard img{aspect-ratio:4/3;object-fit:cover}.postcard figcaption{font-family:var(--script);font-size:24px;position:absolute;bottom:7px;left:13px}.postcard-one{top:0;left:2%;transform:rotate(-5deg)}.postcard-two{top:145px;right:0;transform:rotate(5deg)}.postcard-three{bottom:0;left:11%;transform:rotate(-1deg)}

.scene-video{height:100svh;min-height:620px;background:#1e1815;overflow:hidden;display:grid;place-items:center;color:#fff}.borgo-video,.video-overlay{position:absolute;inset:0;width:100%;height:100%}.borgo-video{object-fit:cover;object-position:center}.video-overlay{background:linear-gradient(180deg,rgba(20,12,9,.12),rgba(20,12,9,.48))}.video-copy{position:relative;z-index:2;text-align:center;padding:20px;text-shadow:0 5px 35px rgba(0,0,0,.32)}.video-copy p{font-family:var(--serif);font-size:clamp(38px,12vw,92px);line-height:.84;letter-spacing:.03em;margin:4px}.video-copy .script-eyebrow{display:block;margin-top:24px;font-size:40px}

.scene-countdown{padding:120px 18px;text-align:center;background:var(--ivory);overflow:hidden}.scene-countdown>.script-eyebrow{font-size:42px;margin:0 0 35px}.countdown{display:grid;grid-template-columns:repeat(4,1fr);width:min(100%,780px);margin:0 auto 45px}.countdown div{border-right:1px solid rgba(36,31,28,.14);padding:7px}.countdown div:last-child{border-right:0}.countdown strong{display:block;font-family:var(--serif);font-size:clamp(35px,10vw,72px);font-weight:400;line-height:1}.countdown span{display:block;margin-top:8px;font-size:7px;letter-spacing:.13em;text-transform:uppercase}.countdown-stamp{position:absolute;right:-12px;top:40px;color:rgba(107,32,53,.34);transform:rotate(14deg)}

.scene-venue-postcard{padding:110px 22px;background:#eee4d5;display:grid;gap:70px;overflow:hidden}.venue-collage{position:relative;height:520px;max-width:580px;width:100%;margin:auto}.venue-collage figure{position:absolute;margin:0;background:#fff;padding:8px;box-shadow:var(--shadow)}.venue-collage img{width:100%;height:100%;object-fit:cover}.venue-main{width:72%;height:350px;left:3%;top:20px;transform:rotate(-3deg)}.venue-small{width:46%;height:220px}.venue-small-one{right:0;top:160px;transform:rotate(4deg)}.venue-small-two{left:17%;bottom:0;transform:rotate(2deg)}.venue-copy{max-width:580px;margin:auto}.venue-copy p:not(.section-kicker){font-family:var(--serif);font-size:20px}.venue-copy .text-link{margin-top:10px}

.scene-save-date{padding:105px 20px;background:var(--burgundy);background-image:radial-gradient(circle at 20% 20%,rgba(255,255,255,.04),transparent 35%)}.save-card{position:relative;width:min(100%,840px);margin:auto;background:var(--paper);padding:75px 28px 65px;text-align:center;box-shadow:var(--shadow);border:1px solid rgba(91,63,43,.17)}.save-card h2{font-family:var(--serif);font-size:clamp(43px,12vw,80px);font-weight:500;line-height:.95;margin:10px 0 24px}.save-card p{max-width:560px;margin:12px auto}.save-card-seal{position:absolute;width:120px;height:120px;right:-10px;top:-47px}.save-monogram{mix-blend-mode:multiply;filter:drop-shadow(0 8px 12px rgba(0,0,0,.14))}.save-emphasis{font-size:9px!important;letter-spacing:.2em;text-transform:uppercase;margin-top:32px!important}.save-actions{display:flex;flex-direction:column;align-items:center;gap:18px;margin-top:32px}

/* Footer */
.site-footer{background:var(--wine);color:var(--ivory);padding:70px 22px max(35px,env(safe-area-inset-bottom));text-align:center}.footer-inner{max-width:950px;margin:auto}.footer-seal{width:110px;height:110px;margin:0 auto 25px}.footer-monogram{mix-blend-mode:screen;filter:sepia(1) saturate(.5) brightness(1.2)}.footer-names{font-family:var(--serif);font-size:36px;margin:0}.footer-date{font-size:10px;line-height:1.7;text-transform:uppercase;letter-spacing:.17em}.footer-links{list-style:none;padding:25px 0;margin:25px 0;border-top:1px solid rgba(246,240,231,.15);border-bottom:1px solid rgba(246,240,231,.15);display:flex;flex-wrap:wrap;justify-content:center;gap:13px 22px}.footer-links a{font-size:9px;text-transform:uppercase;letter-spacing:.14em}.footer-script{font-size:36px;margin:26px 0}.footer-replay{color:rgba(246,240,231,.7)}

/* Inner pages */
.inner-main{padding-top:70px;background:var(--ivory);min-height:80vh}.inner-hero{min-height:58svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:70px 20px;background:#f7f1e8}.inner-hero .script-eyebrow{margin:0 0 5px}.inner-hero h1{font-family:var(--serif);font-size:clamp(64px,18vw,140px);font-weight:500;line-height:.78;margin:0;color:var(--burgundy)}.inner-hero p:last-child{font-size:10px;letter-spacing:.16em;text-transform:uppercase;margin-top:24px}.inner-hero-wedding{background:linear-gradient(rgba(40,22,21,.25),rgba(40,22,21,.55)),url('../images/invite-alt.webp') center/cover;color:#fff}.inner-hero-wedding h1{color:#fff}.editorial-split,.venue-feature{padding-block:110px;display:grid;gap:55px;align-items:center}.prose-block h2{font-family:var(--serif);font-size:clamp(45px,12vw,75px);line-height:.95;font-weight:500;margin:0 0 22px}.prose-block p:not(.section-kicker){font-family:var(--serif);font-size:20px}.editorial-photo{margin:0;background:#fff;padding:9px 9px 42px;transform:rotate(1deg);box-shadow:var(--shadow)}.editorial-photo img{filter:grayscale(1);aspect-ratio:4/5;object-fit:cover}.quote-section{background:var(--wine);color:var(--ivory);padding:105px 25px;text-align:center}.quote-section p{font-family:var(--script);font-size:clamp(42px,11vw,75px);line-height:1.1;max-width:850px;margin:auto}.timeline{padding-block:100px}.timeline-day{display:grid;grid-template-columns:74px 1fr;gap:24px;padding:45px 0;border-bottom:1px solid var(--line)}.timeline-date{width:68px;height:86px;border:1px solid rgba(107,32,53,.4);display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--burgundy)}.timeline-date span{font-family:var(--serif);font-size:40px;line-height:.9}.timeline-date small{font-size:8px;letter-spacing:.16em}.timeline-day h2{font-family:var(--serif);font-size:39px;line-height:1;margin:0 0 12px}.timeline-day p:last-child{font-family:var(--serif);font-size:18px}.venue-hero{background:var(--wine);color:var(--ivory)}.venue-hero h1{color:var(--ivory)}.venue-feature-image{margin:0}.venue-feature-image img{width:100%;max-height:800px;object-fit:cover}.image-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding-bottom:110px}.image-grid img{width:100%;aspect-ratio:1;object-fit:cover}.travel-hero{background:#e8e3d4}.travel-hero h1{color:var(--olive)}.travel-intro{padding:80px 0 20px}.travel-intro p{font-family:var(--serif);font-size:24px;text-align:center}.city-grid{display:grid;gap:30px;padding-block:60px 110px}.city-grid article{background:#fff;padding:10px 10px 30px}.city-grid img{width:100%;aspect-ratio:4/3;object-fit:cover}.city-grid h2{font-family:var(--serif);font-size:36px;margin:20px 15px 5px}.city-grid p{margin:0 15px;font-size:15px}.faq-list{padding-block:80px 120px;max-width:900px}.faq-item{border-bottom:1px solid var(--line)}.faq-question{width:100%;background:none;border:0;padding:23px 0;display:flex;align-items:center;justify-content:space-between;text-align:left;font-family:var(--serif);font-size:25px;color:var(--ink);cursor:pointer}.faq-question b{font-family:var(--sans);font-weight:300;font-size:29px;transition:transform .2s}.faq-question[aria-expanded="true"] b{transform:rotate(45deg)}.faq-answer{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease}.faq-answer>p{overflow:hidden;margin:0;font-size:15px}.faq-item.is-open .faq-answer{grid-template-rows:1fr}.faq-item.is-open .faq-answer>p{padding:0 0 25px}.rsvp-page{background:var(--burgundy);padding-bottom:100px}.rsvp-page .inner-hero{background:var(--burgundy);color:var(--ivory)}.rsvp-page .inner-hero h1{color:var(--ivory)}.rsvp-paper{position:relative;background:var(--paper);padding:85px 25px;text-align:center;max-width:780px;box-shadow:var(--shadow)}.rsvp-paper h2{font-family:var(--serif);font-size:clamp(45px,12vw,75px);line-height:.95;margin:8px 0 18px}.rsvp-paper>p{max-width:580px;margin:12px auto}.rsvp-paper-seal{position:absolute;width:120px;height:120px;right:-8px;top:-52px}.rsvp-placeholder{max-width:380px;margin:35px auto 0;display:grid;gap:10px}.rsvp-placeholder p{font-size:9px;letter-spacing:.18em}.rsvp-placeholder input{height:50px;border:1px solid rgba(36,31,28,.22);background:#f9f3ea;text-align:center;letter-spacing:.2em}.rsvp-placeholder :disabled{opacity:.6}

/* Reveal animations */
.reveal-up,.reveal-card,.reveal-image{opacity:0;transform:translateY(30px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.8,.2,1)}.reveal-card{transform:translateY(35px) rotate(var(--rot,0deg))}.reveal-image{transform:scale(.985)}.is-visible.reveal-up,.is-visible.reveal-card,.is-visible.reveal-image{opacity:1;transform:none}.weekend-card:nth-child(1){transition-delay:.02s}.weekend-card:nth-child(2){transition-delay:.08s}.weekend-card:nth-child(3){transition-delay:.14s}.weekend-card:nth-child(4){transition-delay:.20s}

@media (min-width:760px){
 body{font-size:18px}.site-header{height:78px;padding:0 40px}.site-brand{font-size:30px}.menu-toggle{display:none}.desktop-nav,.header-rsvp{display:block}.desktop-nav-list{list-style:none;display:flex;gap:28px;margin:0;padding:0;align-items:center}.desktop-nav-list a{font-size:9px;text-transform:uppercase;letter-spacing:.15em}.header-rsvp{border:1px solid rgba(36,31,28,.35);padding:9px 20px;font-size:9px;text-transform:uppercase;letter-spacing:.17em}.scene-hero{padding-top:130px}.scene-note{grid-template-columns:1fr 1fr;padding:150px max(35px,5vw);gap:8vw}.note-copy{margin-left:auto}.print-photo{margin-right:auto;align-self:center;width:min(100%,560px)}.scene-borgo{padding-top:140px}.borgo-card{display:grid;grid-template-columns:1.45fr .8fr;gap:30px;align-items:center;padding:35px}.borgo-card-copy{border-top:0;border-left:1px solid rgba(36,31,28,.16);padding:15px 0 15px 30px;text-align:left}.borgo-reveal{margin:0 -22px}.weekend-grid{grid-template-columns:repeat(2,1fr)}.film-frame{width:390px;height:290px}.photobooth-strip{grid-template-columns:repeat(4,180px)}.photobooth-strip img{width:180px;height:230px}.scene-travel{display:grid;grid-template-columns:.8fr 1.2fr;align-items:center;gap:7vw;padding-inline:max(40px,7vw)}.travel-copy{text-align:left;margin:0 0 0 auto}.route-line{justify-content:flex-start}.travel-postcards{margin:0}.scene-venue-postcard{grid-template-columns:1.1fr .9fr;align-items:center;padding-inline:max(35px,6vw)}.venue-collage{margin-left:auto}.venue-copy{margin-left:0}.save-card{padding:85px 75px}.save-card-seal{width:150px;height:150px;right:-50px;top:-60px}.save-actions{flex-direction:row;justify-content:center}.editorial-split,.venue-feature{grid-template-columns:1fr 1fr;gap:8vw}.timeline-day{grid-template-columns:110px 1fr;gap:50px}.timeline-date{width:95px;height:110px}.timeline-date span{font-size:53px}.city-grid{grid-template-columns:repeat(3,1fr)}.image-grid{grid-template-columns:repeat(4,1fr)}
}

@media (min-width:1100px){
 .weekend-grid{grid-template-columns:repeat(4,1fr);gap:0}.weekend-card{transform:none!important;border-right:0;min-height:450px}.weekend-card:last-child{border-right:1px solid rgba(36,31,28,.13)}.scene-borgo{padding-left:max(40px,6vw);padding-right:max(40px,6vw)}.borgo-reveal{margin-left:calc(max(40px,6vw) * -1);margin-right:calc(max(40px,6vw) * -1)}.hero-illustration{margin-top:50px}.travel-postcards{height:620px}.postcard{max-width:420px}.scene-video{height:92vh}.venue-main{height:390px}.venue-collage{height:600px}
}

@media (prefers-reduced-motion:reduce){
 html{scroll-behavior:auto}.reveal-up,.reveal-card,.reveal-image{opacity:1;transform:none;transition:none}.draw-line{stroke-dashoffset:0;animation:none!important}.invite-envelope,.envelope-flap,.envelope-card,.invitation-intro{transition-duration:.01ms!important}.film-track{transform:none!important}.borgo-video{display:none}.scene-video{background:url('../images/borgo-road.webp') center/cover}.parallax-photo{transform:none!important}
}

/* =========================================================
   Invitation v2 — mobile-first landscape envelope
   ========================================================= */
.invitation-intro{
  padding:0;
  place-items:stretch;
  background:
    radial-gradient(circle at 50% 22%,rgba(112,38,55,.38),transparent 36%),
    radial-gradient(circle at 50% 55%,#551c2c 0,#40131f 48%,#2b0d15 100%);
}
.invite-stage{
  width:min(100%,520px);
  min-height:100svh;
  margin-inline:auto;
  padding:clamp(58px,8svh,88px) 16px max(34px,env(safe-area-inset-bottom));
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  position:relative;
  text-align:center;
  perspective:1600px;
}
.invite-intro-heading{
  position:relative;
  z-index:3;
  width:100%;
  margin:0 auto clamp(24px,4.6svh,42px);
  color:#d7b25b;
  transition:opacity .38s ease,transform .45s ease;
}
.invite-destination,
.invite-script-names,
.invite-intro-date{margin:0}
.invite-destination{
  font-size:9px;
  font-weight:500;
  letter-spacing:.34em;
  text-transform:uppercase;
}
.invite-script-names{
  margin-top:8px;
  font-family:var(--script);
  font-size:clamp(36px,11.5vw,52px);
  line-height:1.08;
  color:#dfbd6a;
}
.invite-intro-date{
  margin-top:8px;
  font-family:var(--serif);
  font-size:13px;
  letter-spacing:.38em;
  color:#e3c16d;
}
.invite-heading-rule{
  width:62px;
  height:1px;
  display:block;
  margin:18px auto 0;
  background:rgba(224,190,104,.78);
}
.invite-stage.has-opened .invite-intro-heading{
  opacity:0;
  transform:translateY(-18px);
  pointer-events:none;
}
.invite-olive{
  position:absolute;
  z-index:1;
  display:block;
  height:auto;
  pointer-events:none;
  user-select:none;
  opacity:1;
  object-fit:contain;
  filter:drop-shadow(0 11px 16px rgba(0,0,0,.18));
}
.invite-olive-one{
  width:clamp(150px,23vw,360px);
  left:0;
  top:0;
  transform:none;
}
.invite-olive-two{
  width:clamp(155px,22vw,350px);
  right:0;
  bottom:0;
  transform:none;
}

.invite-envelope{
  position:relative;
  z-index:3;
  width:min(94vw,420px);
  aspect-ratio:1.36/1;
  margin:0 auto;
  cursor:pointer;
  transform-style:preserve-3d;
  filter:drop-shadow(0 24px 34px rgba(0,0,0,.3));
  transition:transform .8s cubic-bezier(.2,.8,.2,1),opacity .55s ease;
  isolation:isolate;
}
.invite-envelope::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:12;
  border:1px solid rgba(107,76,51,.14);
  pointer-events:none;
  box-shadow:inset 0 0 34px rgba(96,68,43,.05);
}
.envelope-back,.envelope-front,.envelope-flap{border-radius:2px}
.envelope-back{
  background:
    linear-gradient(rgba(255,255,255,.14),rgba(255,255,255,.14)),
    repeating-linear-gradient(35deg,rgba(99,72,46,.025) 0 1px,transparent 1px 4px),
    #eee3d1;
}
.envelope-front{
  z-index:4;
  overflow:visible;
  background:
    linear-gradient(140deg,transparent 49.5%,#eadcc8 50%) 0 0/50% 100% no-repeat,
    linear-gradient(220deg,transparent 49.5%,#e5d5bd 50%) 100% 0/50% 100% no-repeat,
    linear-gradient(0deg,#f2e8d8,#e7d8c3);
  clip-path:polygon(0 36%,50% 72%,100% 36%,100% 100%,0 100%);
}
.envelope-flap{
  z-index:6;
  transform-origin:top center;
  background:
    repeating-linear-gradient(35deg,rgba(100,72,45,.025) 0 1px,transparent 1px 4px),
    linear-gradient(180deg,#f4eadb,#e2d1b9);
  clip-path:polygon(0 0,100% 0,50% 64%);
  backface-visibility:hidden;
  transition:transform .9s cubic-bezier(.2,.75,.2,1),z-index 0s .48s;
}
.invite-envelope.is-open .envelope-flap{transform:rotateX(178deg);z-index:1}
.envelope-address{
  position:absolute;
  z-index:8;
  top:30%;
  left:50%;
  transform:translate(-50%,-50%);
  width:84%;
  color:#3b312a;
  text-transform:uppercase;
  line-height:1.65;
  transition:opacity .22s ease;
}
.envelope-address::before{
  content:"";
  display:block;
  width:74px;
  height:18px;
  margin:0 auto 10px;
  background:
    linear-gradient(155deg,transparent 42%,#a18139 43% 49%,transparent 50%) center/28px 18px no-repeat;
  opacity:.75;
}
.envelope-address p:first-of-type{font-family:var(--serif);font-size:13px;letter-spacing:.24em;font-weight:600}
.envelope-address p:last-of-type{font-size:7px;letter-spacing:.26em;margin-top:2px}
.envelope-flourish{display:none}
.envelope-postmark{
  z-index:8;
  top:49%;
  right:5%;
  width:60px;
  height:60px;
  border:1px solid rgba(89,65,48,.5);
  color:#654d3f;
  font-size:6.5px;
  background:rgba(246,236,221,.12);
  transform:rotate(8deg);
}
.wax-seal{
  z-index:10;
  left:50%;
  top:61%;
  width:clamp(104px,30vw,128px);
  height:clamp(104px,30vw,128px);
  transform:translate(-50%,-50%);
  border-radius:50%;
  overflow:visible;
  background:transparent;
  transition:transform .22s ease,opacity .25s ease;
}
.wax-seal:active{transform:translate(-50%,-50%) scale(.96)}
.lfw-monogram{
  width:100%;
  height:100%;
  object-fit:contain;
  background:transparent!important;
  mix-blend-mode:normal!important;
}
.wax-monogram{filter:drop-shadow(0 9px 8px rgba(54,30,13,.24))}
.invite-envelope.is-open .envelope-address,
.invite-envelope.is-open .envelope-postmark,
.invite-envelope.is-open .wax-seal{opacity:0;pointer-events:none}

.envelope-card{
  z-index:2;
  left:12%;
  top:8%;
  width:76%;
  height:auto;
  aspect-ratio:.72/1;
  background:var(--paper);
  color:var(--ink);
  opacity:0;
  transform:translateY(32%);
  transform-origin:center bottom;
  transition:
    transform 1.05s .42s cubic-bezier(.2,.8,.2,1),
    opacity .14s .43s ease,
    z-index 0s .46s;
  box-shadow:0 10px 34px rgba(0,0,0,.18);
}
.invite-envelope.is-open .envelope-card{
  opacity:1;
  transform:translateY(-76%);
  z-index:5;
}
.invite-stage.has-opened .invite-envelope{transform:translateY(clamp(70px,11svh,100px))}
.stamp-card-edge{inset:7px;padding:10px}
.invite-photo-wrap{height:52%}
.invite-photo{object-position:center 34%}
.invite-card-copy{padding:9px 7px 3px}
.invite-names{font-size:clamp(27px,8.2vw,35px)}
.invite-kicker,.invite-date,.invite-location{font-size:6.5px}
.save-date{font-size:17px}
.save-date em{font-size:20px}
.invite-enter{font-size:6.8px;margin-top:6px;padding:7px 5px}
.tap-open{
  position:relative;
  z-index:3;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:14px;
  width:min(86vw,340px);
  margin:clamp(26px,4svh,38px) auto 0;
  color:#e0bd68;
  font-size:9px;
  font-weight:500;
  letter-spacing:.3em;
  text-transform:uppercase;
}
.tap-open span{width:46px;height:1px;background:rgba(224,189,104,.72);display:block}
.invite-stage.has-opened .tap-open{opacity:0;pointer-events:none}

/* Keep the opening compact on shorter phones. */
@media (max-width:520px){
  .invite-olive-one{width:38vw;max-width:155px}
  .invite-olive-two{width:36vw;max-width:148px}
}
@media (max-height:700px){
  .invite-stage{padding-top:42px;padding-bottom:24px;justify-content:center}
  .invite-intro-heading{margin-bottom:16px}
  .invite-script-names{font-size:37px}
  .invite-intro-date{margin-top:4px}
  .invite-heading-rule{margin-top:10px}
  .invite-envelope{width:min(84vw,360px)}
  .tap-open{margin-top:20px}
  .invite-stage.has-opened .invite-envelope{transform:translateY(68px)}
}
@media (min-width:760px){
  .invite-stage{width:min(94vw,720px);padding-top:70px;padding-bottom:55px}
  .invite-intro-heading{margin-bottom:38px}
  .invite-envelope{width:min(72vw,650px);max-width:650px}
  .wax-seal{width:142px;height:142px}
  .envelope-address p:first-of-type{font-size:16px}
  .envelope-address p:last-of-type{font-size:8px}
  .envelope-postmark{width:76px;height:76px;font-size:8px;right:6%}
  .envelope-card{left:22%;width:56%;top:4%}
  .invite-envelope.is-open .envelope-card{transform:translateY(-68%)}
  .invite-stage.has-opened .invite-envelope{transform:translateY(125px)}
  .invite-olive-one{left:0;top:0;width:min(24vw,380px)}
  .invite-olive-two{right:0;bottom:0;width:min(23vw,365px)}
}
@media (prefers-reduced-motion:reduce){
  .invite-stage.has-opened .invite-envelope{transform:none}
  .invite-envelope.is-open .envelope-card{transform:translateY(-72%);opacity:1}
}
.invitation-intro.is-exiting .invite-stage.has-opened .invite-envelope{
  transform:scale(1.75) translateY(-4%);
  opacity:0;
}

/* =========================================================
   v0.3 content + three-day celebration system
   ========================================================= */
.hero-borgo-sketch{width:min(920px,108vw);margin:32px auto -25px;position:relative;z-index:1;pointer-events:none}
.hero-borgo-sketch img{width:100%;mix-blend-mode:normal;opacity:1}
.hero-borgo-sketch .hero-stamp{display:grid;position:absolute;right:4%;bottom:8%;width:clamp(82px,22vw,108px);height:clamp(82px,22vw,108px);color:rgba(107,32,53,.34);background:rgba(246,240,231,.08);z-index:2}
.section-lede{max-width:700px;margin:-24px auto 48px;font-family:var(--serif);font-size:19px;line-height:1.55;color:#5b5049}
.celebration-grid{max-width:1000px}
.departure-card{width:min(100%,1000px);margin:0 auto 46px;padding:28px 24px;background:var(--wine);color:var(--ivory);display:grid;grid-template-columns:90px 1fr;gap:24px;align-items:center;box-shadow:var(--shadow)}
.departure-date{display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid rgba(246,240,231,.28);padding-right:20px;color:var(--paper)}
.departure-date strong{font-family:var(--serif);font-size:48px;font-weight:400;line-height:.9}
.departure-date span{font-size:7px;letter-spacing:.15em;text-transform:uppercase;margin-top:7px;text-align:center}
.departure-card h3{font-family:var(--serif);font-size:31px;line-height:1;margin:0 0 7px;font-weight:500}
.departure-card p{margin:4px 0;font-size:14px}
.venue-links{display:flex;flex-wrap:wrap;gap:18px 28px;margin-top:18px}
.borgo-art-card{grid-template-columns:1fr!important}
.borgo-sketch-image{margin:0;overflow:hidden}
.borgo-sketch-image img{width:100%;mix-blend-mode:multiply}
.scene-stay-teaser{background:#dde0cf;padding:100px 22px;display:grid;gap:48px;align-items:center}
.stay-teaser-copy{max-width:620px;margin:auto}
.stay-teaser-copy h2{font-family:var(--serif);font-size:clamp(48px,12vw,78px);font-weight:500;line-height:.92;margin:0 0 25px;color:var(--burgundy)}
.stay-teaser-copy p{font-family:var(--serif);font-size:19px}
.stay-teaser-image{margin:0;box-shadow:var(--shadow);overflow:hidden}
.stay-teaser-image img{width:100%;aspect-ratio:1.2/1;object-fit:cover}
.footer-monogram,.save-monogram{mix-blend-mode:normal!important;filter:drop-shadow(0 8px 12px rgba(0,0,0,.16))!important}

/* The Wedding */
.wedding-story{padding-bottom:110px}
.wedding-story-art{max-width:900px;margin:0 auto 40px}
.wedding-story-art img{width:100%;mix-blend-mode:multiply}
.story-grid{display:grid;gap:28px}
.story-card{background:#fbf6ed;border:1px solid var(--line);padding:34px 26px}
.story-card h2{font-family:var(--serif);font-size:43px;line-height:.95;margin:0 0 18px;font-weight:500}
.story-card p:not(.section-kicker){font-family:var(--serif);font-size:18px}
.editorial-photo-landscape img{aspect-ratio:4/3}
.travel-callout{background:var(--wine);color:var(--ivory);padding:95px 0}
.travel-callout-inner{display:grid;gap:28px;align-items:end}
.travel-callout h2{font-family:var(--serif);font-size:clamp(48px,12vw,78px);line-height:.9;font-weight:500;margin:0 0 20px}
.travel-callout p:not(.section-kicker){font-family:var(--serif);font-size:19px;max-width:760px}
.final-note{padding-block:115px;text-align:center;max-width:880px}
.final-note h2{font-family:var(--serif);font-size:clamp(48px,12vw,78px);line-height:.92;font-weight:500;margin:5px 0 22px}
.final-note>p:not(.script-eyebrow):not(.note-signature){font-family:var(--serif);font-size:20px}
.final-note .button{margin-top:20px}

/* Celebration schedule */
.weekend-hero h1{font-size:clamp(52px,14vw,120px)}
.compact-prose{padding-block:70px;text-align:center}
.compact-prose p{font-family:var(--serif);font-size:22px;max-width:800px;margin:0 auto 15px}
.timeline-content>p:not(.section-kicker){font-family:var(--serif);font-size:18px}
.event-tags{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0}
.event-tags span{border:1px solid rgba(107,32,53,.25);padding:6px 10px;font-size:8px;letter-spacing:.12em;text-transform:uppercase;color:var(--burgundy);background:#fbf7ef}
.dress-card{background:#e9eadf;border-left:3px solid var(--olive);padding:22px;margin-top:25px}
.dress-card h3{font-family:var(--serif);font-size:28px;line-height:1;margin:0 0 10px;font-weight:500}
.dress-card p:not(.section-kicker){font-size:15px!important;font-family:var(--sans)!important;margin:8px 0}
.departure-section{background:var(--wine);color:var(--ivory);padding:85px 0}
.departure-section-inner{display:grid;grid-template-columns:95px 1fr;gap:28px;align-items:center}
.departure-date.big{border-right-color:rgba(246,240,231,.25)}
.departure-date.big strong{font-size:60px}
.departure-section h2{font-family:var(--serif);font-size:clamp(42px,10vw,70px);line-height:.94;font-weight:500;margin:0 0 16px}
.departure-section p:not(.section-kicker):not(.script-eyebrow){font-family:var(--serif);font-size:18px}
.departure-section .script-eyebrow{font-size:34px;margin-top:20px}
.join-note{padding-block:100px;display:grid;gap:45px;align-items:start}
.paper-note{background:var(--paper);padding:35px 28px;box-shadow:var(--shadow);transform:rotate(1deg)}
.paper-note p{font-family:var(--serif);font-size:18px}
.paper-note strong{display:block;margin-top:18px;font-family:var(--serif);font-size:20px;line-height:1.6;color:var(--burgundy)}

/* Venue + sketches */
.venue-sketch-stage{padding:55px 0 25px}
.venue-sketch-large{margin:0 auto;max-width:1050px}
.venue-sketch-large img{width:100%;mix-blend-mode:multiply}
.venue-practical{background:#e9eadf;padding:85px 0 105px}
.feature-cards{display:grid;gap:18px}
.feature-cards article{background:#fbf7ef;border:1px solid rgba(36,31,28,.12);padding:30px 25px}
.feature-cards article>span{font-family:var(--serif);font-size:35px;color:var(--burgundy)}
.feature-cards h2,.feature-cards h3{font-family:var(--serif);font-size:31px;line-height:1;font-weight:500;margin:7px 0 12px}
.feature-cards p{font-size:15px;margin:0}

/* Stay */
.stay-hero{background:#e9eadf}
.stay-hero h1{color:var(--olive)}
.stay-photo img{filter:none;aspect-ratio:1/1}
.stay-details{padding-block:80px 110px}
.stay-feature-cards{grid-template-columns:1fr 1fr}
.family-section{background:var(--wine);color:var(--ivory);padding:100px 0}
.family-grid{display:grid;gap:45px;align-items:center}
.family-grid figure{margin:0;box-shadow:var(--shadow)}
.family-grid img{width:100%;aspect-ratio:1/1;object-fit:cover}
.family-grid .prose-block h2{color:var(--ivory)}
.family-grid .prose-block p:not(.section-kicker){color:var(--ivory)}
.allocation-section{padding-block:105px;display:grid;gap:50px;align-items:start}
.allocation-steps{display:grid;gap:10px}
.allocation-steps article{display:grid;grid-template-columns:50px 1fr;align-items:center;border-bottom:1px solid var(--line);padding:14px 0}
.allocation-steps strong{font-family:var(--serif);font-size:35px;color:var(--burgundy);font-weight:400}
.allocation-steps span{font-family:var(--serif);font-size:20px}
.stay-bottom-card{margin:0 auto 110px}

/* Travel */
.airport-section{padding-block:30px 110px}
.airport-grid{display:grid;gap:28px}
.airport-card{background:#fff;box-shadow:0 18px 55px rgba(41,18,21,.09)}
.airport-card figure{margin:0}
.airport-card figure img{width:100%;aspect-ratio:16/10;object-fit:cover}
.airport-card>div{padding:28px 24px 34px}
.airport-card h3{font-family:var(--serif);font-size:42px;line-height:1;margin:0 0 16px;font-weight:500}
.airport-card p:not(.section-kicker){font-family:var(--serif);font-size:18px}
.airport-card.recommended{outline:2px solid var(--olive);outline-offset:-2px}
.recommend-line{display:inline-block;margin-top:8px;color:var(--burgundy);font-size:11px;text-transform:uppercase;letter-spacing:.14em}
.drive-section{background:var(--wine);color:var(--ivory);padding:100px 0}
.drive-grid{display:grid;gap:50px;align-items:center}
.drive-grid .prose-block h2,.drive-grid .prose-block p{color:var(--ivory)}
.travel-route-card{background:var(--paper);color:var(--ink);padding:30px;box-shadow:var(--shadow)}
.travel-route-card ol{list-style:none;padding:0;margin:15px 0 0}
.travel-route-card li{display:grid;grid-template-columns:52px 1fr;align-items:center;border-bottom:1px solid rgba(36,31,28,.14);padding:14px 0}
.travel-route-card li:last-child{border-bottom:0}
.travel-route-card span{font-family:var(--serif);font-size:31px;color:var(--burgundy)}
.travel-route-card strong{font-family:var(--serif);font-size:22px;font-weight:500}
.transport-section{padding-block:100px;display:grid;gap:25px}
.transport-card{padding:34px 28px;border:1px solid var(--line);background:#fbf7ef}
.transport-card h2{font-family:var(--serif);font-size:clamp(38px,9vw,58px);line-height:.95;font-weight:500;margin:0 0 18px}
.transport-card p:not(.section-kicker),.simple-list{font-family:var(--serif);font-size:18px}
.simple-list{padding-left:22px}
.taxi-card{background:#e9eadf}
.arrival-departure{background:var(--olive);color:#fff;padding:90px 0}
.arrival-grid{display:grid;gap:45px}
.arrival-grid article{border-top:1px solid rgba(255,255,255,.28);padding-top:25px}
.arrival-grid h2{font-family:var(--serif);font-size:42px;line-height:1;font-weight:500;margin:0 0 15px}
.arrival-grid p:not(.section-kicker):not(.script-eyebrow){font-family:var(--serif);font-size:18px}
.arrival-grid .script-eyebrow{font-size:32px;margin-top:18px}
.longer-trip-callout{padding-block:105px;display:grid;gap:45px;align-items:center}
.longer-trip-callout figure{margin:0;box-shadow:var(--shadow)}
.longer-trip-callout img{width:100%;aspect-ratio:4/3;object-fit:cover}

/* Tuscany guide */
.tuscany-hero{background:linear-gradient(rgba(44,37,25,.18),rgba(44,37,25,.38)),url('../images/tuscany-hills.jpg') center/cover;color:#fff}
.tuscany-hero h1{color:#fff}
.tuscany-intro{padding-bottom:25px}
.destination-grid{display:grid;gap:24px;padding-bottom:110px}
.destination-card{background:#fff;box-shadow:0 16px 45px rgba(41,18,21,.08)}
.destination-card img{width:100%;aspect-ratio:4/3;object-fit:cover}
.destination-card>div{padding:24px}
.destination-card h2{font-family:var(--serif);font-size:38px;line-height:1;margin:0 0 12px;font-weight:500}
.destination-card p:not(.section-kicker){font-size:15px;margin-bottom:0}

/* Extra header room for expanded navigation */
@media (min-width:760px) and (max-width:1100px){
  .site-header{padding-inline:24px;gap:16px}
  .site-brand{font-size:25px}
  .desktop-nav-list{gap:13px!important}
  .desktop-nav-list a{font-size:7.5px!important;letter-spacing:.11em!important}
  .header-rsvp{padding:8px 12px!important}
}

@media (min-width:760px){
  .hero-borgo-sketch{margin-top:45px}
  .celebration-grid{grid-template-columns:repeat(3,1fr)!important;gap:0!important}
  .celebration-grid .weekend-card{transform:none!important;border-right:0;min-height:450px}
  .celebration-grid .weekend-card:last-child{border-right:1px solid rgba(36,31,28,.13)}
  .departure-card{grid-template-columns:120px 1fr;padding:35px 42px}
  .scene-stay-teaser{grid-template-columns:1fr 1fr;padding:130px max(40px,7vw);gap:7vw}
  .story-grid{grid-template-columns:1fr 1fr}
  .travel-callout-inner{grid-template-columns:1fr auto}
  .join-note{grid-template-columns:1.35fr .65fr}
  .feature-cards{grid-template-columns:repeat(3,1fr)}
  .stay-feature-cards{grid-template-columns:repeat(4,1fr)}
  .family-grid,.allocation-section,.drive-grid,.longer-trip-callout{grid-template-columns:1fr 1fr;gap:7vw}
  .airport-grid,.transport-section,.arrival-grid{grid-template-columns:1fr 1fr}
  .destination-grid{grid-template-columns:repeat(2,1fr)}
  .destination-card-wide{grid-column:1/-1;display:grid;grid-template-columns:1.2fr .8fr}
  .destination-card-wide img{height:100%;aspect-ratio:auto}
}

@media (min-width:1100px){
  .desktop-nav-list{gap:20px!important}
  .destination-grid{grid-template-columns:repeat(3,1fr)}
  .destination-card-wide{grid-column:2/4}
}

@media (min-width:760px) and (max-width:1020px){
  .menu-toggle{display:flex!important}
  .desktop-nav,.header-rsvp{display:none!important}
  .site-header{height:70px;padding:0 20px}
  .site-brand{font-size:26px}
}
.mobile-menu{overflow-y:auto}
@media (max-height:720px){
  .mobile-nav-list{padding-top:5vh}
  .mobile-nav-list a{font-size:clamp(28px,9vw,42px);padding:10px 0}
}

/* v0.3.1 — invitation reveal portrait supplied by Faye & Liam */
.invite-photo{object-position:center 35%;}

/* =========================================================
   v0.3.2.4 — site-wide mobile refinement
   Keeps the editorial scale while preventing iPhone overflow,
   trims desktop-sized vertical spacing and keeps all 4 photobooth
   frames visible as one strip.
   ========================================================= */
@media (max-width:759px){
  /* Global mobile rhythm */
  .page-shell{width:min(calc(100% - 32px),var(--max))}
  .prose-shell{padding-block:88px}
  .site-header{height:68px;padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right))}
  .site-brand{font-size:25px}
  .inner-main{padding-top:68px}

  /* Inner-page heroes: stop long editorial words clipping on narrow phones */
  .inner-hero{
    min-height:clamp(350px,48svh,450px);
    padding:54px 18px 46px;
    overflow:hidden;
  }
  .inner-hero h1{
    width:100%;
    max-width:100%;
    font-size:clamp(52px,16vw,74px);
    line-height:.84;
    letter-spacing:0;
  }
  .weekend-hero h1{font-size:clamp(43px,11.7vw,54px);line-height:.88}
  .weekend-hero h1 span{display:block}
  .inner-hero p:last-child{margin-top:20px}

  /* Homepage celebration title + cards */
  .scene-weekend{padding:84px 16px 86px}
  .section-heading{max-width:100%;overflow:hidden}
  .section-heading .script-eyebrow{font-size:32px}
  .section-heading h2{
    width:100%;
    max-width:100%;
    font-size:clamp(43px,11.7vw,54px);
    line-height:.86;
    margin-bottom:34px;
    letter-spacing:0;
  }
  .section-heading h2 span{display:block}
  .section-lede{margin:-12px auto 34px;font-size:18px;line-height:1.5;padding-inline:4px}
  .weekend-grid{gap:14px;margin-bottom:34px}
  .weekend-card{
    min-height:0;
    height:auto;
    padding:25px 22px 32px;
  }
  .weekend-number{font-size:34px}
  .weekend-day{margin:3px 0 18px}
  .weekend-icon{font-size:36px;line-height:1;margin-bottom:9px}
  .weekend-card h3{font-size:28px;line-height:1.03}
  .weekend-card h4{font-size:21px;line-height:1.1;margin:6px 0 11px}
  .weekend-card p:last-child{margin-bottom:0}
  .weekend-card::after{left:22px;right:22px;bottom:17px}
  .departure-card{grid-template-columns:76px minmax(0,1fr);gap:18px;padding:26px 20px;margin-bottom:38px}
  .departure-date{padding-right:15px}
  .departure-date strong{font-size:44px}
  .departure-card h3{font-size:29px}

  /* Film / photobooth: all four lower photos must stay visible */
  .scene-film{padding:58px 0 66px}
  .film-caption{font-size:31px;margin:0 18px 26px}
  .film-track{padding:19px 0;border-top-width:14px;border-bottom-width:14px}
  .film-frame{width:min(66vw,280px);height:auto;aspect-ratio:260/220}
  .photobooth-strip{
    grid-template-columns:repeat(4,minmax(0,1fr));
    width:min(calc(100% - 24px),620px);
    max-width:calc(100vw - 24px);
    margin:42px auto 0;
    padding:6px;
    gap:4px;
    transform:rotate(-1deg);
  }
  .photobooth-strip img{
    width:100%;
    min-width:0;
    height:auto;
    aspect-ratio:130/170;
    object-fit:cover;
  }

  /* Destination section */
  .scene-travel{padding:88px 18px 98px}
  .travel-copy{max-width:100%;margin:0 auto 50px}
  .travel-copy h2{
    width:100%;
    max-width:100%;
    font-size:clamp(58px,17vw,72px);
    line-height:.82;
    margin:5px 0 29px;
  }
  .travel-copy>p:last-of-type{max-width:350px;margin-inline:auto;font-size:19px;line-height:1.55}
  .route-line{width:min(100%,340px);height:58px;margin:0 auto 22px;gap:9px}
  .route-line i{width:auto;min-width:0;flex:1 1 auto}
  .route-line b{left:50%;top:6px;transform:translateX(-50%) rotate(9deg);font-family:Georgia,var(--serif);font-size:19px}
  .travel-postcards{height:500px}

  /* General mobile section spacing */
  .editorial-split,.venue-feature{padding-block:82px;gap:42px}
  .compact-prose{padding-block:58px}
  .compact-prose p{font-size:20px;line-height:1.5}
  .timeline{padding-block:72px}
  .timeline-day{grid-template-columns:66px minmax(0,1fr);gap:18px;padding:38px 0}
  .timeline-date{width:62px;height:80px}
  .timeline-date span{font-size:37px}
  .timeline-day h2{font-size:35px}
  .timeline-content>p:not(.section-kicker){font-size:17px}
  .departure-section{padding:68px 0}
  .departure-section-inner{grid-template-columns:76px minmax(0,1fr);gap:20px}
  .departure-date.big{padding-right:15px}
  .departure-date.big strong{font-size:52px}
  .departure-section h2{font-size:clamp(36px,9.4vw,48px)}

  /* Make media/grid children shrink rather than force horizontal overflow */
  .weekend-grid>*,.celebration-grid>*,.timeline>*,.airport-grid>*,.transport-section>*,.arrival-grid>*,.story-grid>*,.feature-cards>*,.destination-grid>*{min-width:0;max-width:100%}
  .editorial-photo,.print-photo,.airport-card,.destination-card,.transport-card,.paper-note{max-width:100%}
}

@media (max-width:390px){
  .section-heading h2,.weekend-hero h1{font-size:43px}
  .travel-copy h2{font-size:58px}
  .inner-hero h1{font-size:clamp(49px,15.5vw,62px)}
  .site-brand{font-size:24px}
}

/* =========================================================
   v0.3.2.5 — mobile invitation seal spacing
   Keep the wax seal on the envelope fold without covering the
   "Special delivery / for our favourite people" address copy.
   ========================================================= */
@media (max-width:759px){
  .envelope-address{
    top:23.5%;
    width:80%;
    line-height:1.55;
  }
  .envelope-address::before{
    margin-bottom:6px;
  }
  .envelope-address p:first-of-type{
    font-size:12px;
    line-height:1.35;
  }
  .envelope-address p:last-of-type{
    font-size:6.5px;
    line-height:1.45;
    margin-top:4px;
  }
  .wax-seal{
    top:65%;
    width:clamp(98px,26vw,112px);
    height:clamp(98px,26vw,112px);
  }
}



@media (min-width:760px){
  .hero-borgo-sketch .hero-stamp{right:5%;bottom:9%;width:112px;height:112px}
}

/* =========================================================
   v0.3.2.6 — responsive QA consolidation
   - Frame the homepage Borgo watercolour within the same gutters on phones/tablets.
   - Smooth the 760–1020px typography jump for long editorial headings.
   - Keep Stay cards comfortable on smaller tablets.
   - Prevent the homepage travel grid from collapsing its postcard column.
   - Keep the Save the Date seal inside the tablet viewport.
   - Match inner-page offset to the 78px desktop header.
   ========================================================= */
@media (max-width:900px){
  .hero-borgo-sketch{width:100%;max-width:920px}
}

@media (min-width:760px) and (max-width:1020px){
  .section-heading h2{font-size:clamp(68px,9.5vw,96px)}
  .weekend-hero h1{font-size:clamp(68px,9.5vw,96px)}
}

@media (min-width:760px) and (max-width:900px){
  .stay-feature-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media (min-width:760px) and (max-width:959px){
  .save-card-seal{right:-18px}
}

@media (min-width:760px){
  .scene-travel>*{min-width:0}
  .travel-postcards{max-width:100%}
}

@media (min-width:1021px){
  .inner-main{padding-top:78px}
}

/* =========================================================
   v0.3.2.7 — accessibility, sharing & guest-utility polish
   ========================================================= */
main{scroll-margin-top:92px}
button:not(:disabled){cursor:pointer}
:where(a,button,input,select,textarea,[tabindex]):focus-visible{
  outline:3px solid #fff;
  outline-offset:3px;
  box-shadow:0 0 0 6px var(--ink);
  border-radius:2px;
}
.site-header :where(a,button):focus-visible,
.page-shell :where(a,button,input):focus-visible,
.scene :where(a,button):focus-visible{
  outline-color:#fff;
  box-shadow:0 0 0 6px var(--burgundy);
}
.mobile-menu :where(a,button):focus-visible,
.site-footer :where(a,button):focus-visible,
.invitation-intro :where(a,button,[tabindex]):focus-visible{
  outline-color:var(--ivory);
  box-shadow:0 0 0 6px #111;
}
.text-link{min-height:28px;padding-top:3px}
.replay-link,.footer-replay{min-height:40px;display:inline-flex;align-items:center}
.invitation-skip{min-height:44px;min-width:76px}
.tap-open{cursor:pointer;user-select:none}
.invite-enter{min-height:30px;padding:7px 10px}
.mobile-menu{overscroll-behavior:contain}
.header-rsvp{min-height:40px;display:flex;align-items:center;justify-content:center}
.footer-links a{display:inline-flex;align-items:center;min-height:30px;padding-inline:3px}
.desktop-nav-list a[aria-current="page"],.mobile-nav-list a[aria-current="page"],.footer-links a[aria-current="page"]{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}

.map-actions{display:flex;flex-wrap:wrap;gap:12px 20px;margin-top:24px}
.travel-map-links{margin-top:30px;margin-bottom:30px;padding:18px 20px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px 22px;text-align:center}
.travel-map-links>span{font-family:var(--serif);font-size:20px}

.rsvp-placeholder label{font-size:9px;letter-spacing:.18em;text-transform:uppercase}

.error-page{background:var(--ivory);padding-bottom:100px}
.error-card{max-width:820px;padding:clamp(92px,14vw,150px) 20px;text-align:center}
.error-code{margin:0 0 4px;font-family:var(--serif);font-size:clamp(92px,22vw,180px);line-height:.7;color:rgba(107,32,53,.13)}
.error-card h1{max-width:720px;margin:20px auto 18px;font-family:var(--serif);font-size:clamp(44px,10vw,76px);font-weight:500;line-height:.92;color:var(--burgundy)}
.error-card>p:not(.section-kicker,.error-code){max-width:580px;margin:0 auto;font-family:var(--serif);font-size:21px}
.error-actions{margin-top:34px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:18px 26px}

@media (max-width:759px){
  .travel-map-links{width:min(calc(100% - 32px),var(--max));margin-top:22px;margin-bottom:22px;padding-inline:8px}
  .map-actions{gap:10px 18px}
  .error-page{padding-bottom:70px}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .button:hover{transform:none}
}
.button:disabled,.button[aria-disabled="true"]{cursor:not-allowed;transform:none}
.weekend-calendar-action{margin-top:-28px;margin-bottom:24px}
@media (max-width:759px){.weekend-calendar-action{margin-top:-18px;margin-bottom:8px}}
#main[tabindex="-1"]:focus{outline:none;box-shadow:none}

@media print{
  @page{margin:16mm}
  html,body{background:#fff!important;color:#000!important;overflow:visible!important}
  body{font-size:11pt;line-height:1.45}
  .site-header,.mobile-menu,.site-footer,.invitation-intro,.button,.text-link,.decorative-stamp,.scene-film,.scene-video,.replay-link,.footer-replay{display:none!important}
  .inner-main,.home-main,.generic-main{padding-top:0!important;background:#fff!important}
  .page-shell,.prose-shell{width:100%!important;max-width:none!important;padding-left:0!important;padding-right:0!important}
  .inner-hero{min-height:0!important;padding:18mm 0 10mm!important;background:#fff!important;color:#000!important}
  .inner-hero h1,.inner-hero p,.inner-hero .script-eyebrow{color:#000!important}
  .scene,.editorial-split,.venue-feature,.timeline,.family-section,.allocation-section,.airport-section,.transport-section,.arrival-grid,.destination-grid{padding-top:10mm!important;padding-bottom:10mm!important}
  img{max-height:120mm;object-fit:contain}
  article,figure,.paper-note,.dress-card,.airport-card,.destination-card{break-inside:avoid;page-break-inside:avoid}
}


/* =========================================================
   v0.3.2.11 — homepage Borgo postcard refinement
   - make the Borgo panel feel like an intentional postcard rather than a flat box
   - preserve the approved artwork and content while softening the container edges
   ========================================================= */
.borgo-art-card{
  position:relative;
  isolation:isolate;
  width:min(100%,900px);
  background:#efe4d2;
  border:1px solid rgba(95,67,49,.20);
  padding:clamp(18px,2.2vw,34px);
  box-shadow:0 20px 40px rgba(25,16,13,.16);
  transform:rotate(-0.35deg);
}
.borgo-art-card::before{
  content:"";
  position:absolute;
  inset:14px;
  border:1px solid rgba(95,67,49,.14);
  pointer-events:none;
  z-index:0;
}
.borgo-art-card::after{
  content:"";
  position:absolute;
  inset:14px -14px -14px 14px;
  background:rgba(242,233,221,.82);
  border:1px solid rgba(95,67,49,.10);
  z-index:-1;
  transform:rotate(1.05deg);
  box-shadow:0 10px 26px rgba(25,16,13,.10);
}
.borgo-art-card > *{position:relative;z-index:1}
.borgo-sketch-image{margin:0;padding:clamp(8px,1.2vw,12px)}
.borgo-sketch-image img{width:100%;mix-blend-mode:multiply;filter:saturate(.98) contrast(1.01)}
.borgo-card-copy{
  display:grid;
  grid-template-columns:1fr auto;
  align-items:end;
  gap:16px 22px;
  margin-top:14px;
  padding:18px clamp(10px,1.2vw,14px) 8px;
  border-top:1px solid rgba(36,31,28,.15)!important;
  border-left:0!important;
  text-align:left;
}
.borgo-card-copy p{
  margin:0;
  font-family:var(--serif);
  font-size:clamp(22px,2.1vw,28px);
  line-height:1.18;
}
.borgo-card-copy .text-link{
  margin-top:0;
  align-self:end;
  white-space:nowrap;
}

@media (max-width:759px){
  .borgo-art-card{width:min(calc(100% - 28px),900px);margin:42px auto -42px;transform:rotate(-0.22deg)}
  .borgo-art-card::before{inset:10px}
  .borgo-art-card::after{inset:10px -10px -10px 10px}
  .borgo-card-copy{grid-template-columns:1fr;gap:10px;padding:16px 8px 6px}
  .borgo-card-copy p{font-size:clamp(18px,6.6vw,22px)}
}

@media (min-width:760px){
  .borgo-art-card{padding:28px}
}

@media (min-width:1021px){
  .borgo-art-card{width:min(100%,920px)}
}


/* =========================================================
   v0.3.2.13 — homepage Borgo stamp-card refinement
   - replace the heavy layered postcard with a refined postal-stamp style card
   - use the transparent Borgo artwork and live script title
   - add subtle perforated stamp edges and a softer shadow
   ========================================================= */
.scene-borgo .borgo-art-card{
  position:relative;
  isolation:isolate;
  display:block;
  width:min(100%,940px);
  margin:56px auto -60px;
  padding:28px 28px 24px;
  background:#f4ecdf;
  color:var(--ink);
  border:1px solid rgba(97,72,56,.22);
  box-shadow:0 26px 42px rgba(18,8,11,.30);
  transform:none;
  overflow:visible;
}
.scene-borgo .borgo-art-card::before{
  content:"";
  position:absolute;
  inset:18px;
  border:1px solid rgba(97,72,56,.16);
  pointer-events:none;
  z-index:1;
}
.scene-borgo .borgo-art-card::after{content:none}

.stamp-edge{
  position:absolute;
  pointer-events:none;
  z-index:3;
}
.stamp-edge-top,
.stamp-edge-bottom{
  left:18px;
  right:18px;
  height:16px;
  background:radial-gradient(circle at 8px 8px,var(--wine) 0 7px,transparent 7.2px) left top/20px 16px repeat-x;
}
.stamp-edge-top{top:-8px}
.stamp-edge-bottom{bottom:-8px}
.stamp-edge-left,
.stamp-edge-right{
  top:18px;
  bottom:18px;
  width:16px;
  background:radial-gradient(circle at 8px 8px,var(--wine) 0 7px,transparent 7.2px) left top/16px 20px repeat-y;
}
.stamp-edge-left{left:-8px}
.stamp-edge-right{right:-8px}

.scene-borgo .borgo-sketch-image{
  margin:0;
  padding:18px 18px 4px;
  overflow:visible;
  position:relative;
  z-index:2;
}
.scene-borgo .borgo-sketch-image img{
  width:100%;
  mix-blend-mode:normal;
  filter:none;
}
.borgo-script-title{
  position:relative;
  z-index:2;
  margin:-10px 0 10px;
  text-align:center;
  font-family:var(--script);
  font-size:clamp(52px,8vw,86px);
  line-height:.95;
  color:#2b241f;
}
.borgo-postmark{
  position:absolute;
  right:26px;
  top:54%;
  width:clamp(96px,10vw,122px);
  height:clamp(96px,10vw,122px);
  color:rgba(107,32,53,.43);
  background:rgba(244,236,223,.46);
  z-index:3;
}
.borgo-postmark::after{
  content:"";
  position:absolute;
  left:calc(100% - 3px);
  top:50%;
  width:56px;
  height:1px;
  background:currentColor;
  opacity:.65;
  box-shadow:0 -10px 0 currentColor,0 10px 0 currentColor;
}
.scene-borgo .borgo-card-copy{
  position:relative;
  z-index:2;
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:24px;
  margin-top:6px;
  padding:22px 18px 10px;
  border-top:1px solid rgba(36,31,28,.14)!important;
  border-left:0!important;
  text-align:left;
}
.scene-borgo .borgo-card-copy p{
  margin:0;
  font-family:var(--serif);
  font-size:clamp(19px,2.5vw,28px);
  line-height:1.12;
}
.scene-borgo .borgo-card-copy .text-link{
  margin-top:0;
  padding-bottom:5px;
  white-space:nowrap;
}

@media (max-width:759px){
  .scene-borgo .borgo-art-card{
    width:min(calc(100% - 18px),940px);
    margin:40px auto -44px;
    padding:20px 18px 18px;
  }
  .scene-borgo .borgo-art-card::before{inset:12px}
  .stamp-edge-top,.stamp-edge-bottom{left:12px;right:12px;height:14px;background-size:18px 14px}
  .stamp-edge-top{top:-7px}
  .stamp-edge-bottom{bottom:-7px}
  .stamp-edge-left,.stamp-edge-right{top:12px;bottom:12px;width:14px;background-size:14px 18px}
  .stamp-edge-left{left:-7px}
  .stamp-edge-right{right:-7px}
  .scene-borgo .borgo-sketch-image{padding:12px 12px 0}
  .borgo-script-title{font-size:clamp(36px,11.5vw,56px);margin:-2px 0 12px}
  .borgo-postmark{
    right:12px;
    top:auto;
    bottom:98px;
    width:86px;
    height:86px;
  }
  .borgo-postmark::after{width:34px;box-shadow:0 -7px 0 currentColor,0 7px 0 currentColor}
  .scene-borgo .borgo-card-copy{
    display:grid;
    grid-template-columns:1fr;
    justify-items:center;
    gap:10px;
    text-align:center;
    padding:18px 10px 8px;
  }
  .scene-borgo .borgo-card-copy p{font-size:clamp(18px,6.2vw,22px)}
}

@media (min-width:760px) and (max-width:1020px){
  .scene-borgo .borgo-art-card{width:min(100%,900px)}
  .borgo-postmark{right:20px;top:52%;width:106px;height:106px}
}


/* =========================================================
   v0.3.2.14 — proper postage perforation refinement
   - change the edge treatment from visible dots to inward scalloped stamp perforations
   - keep the card fully on burgundy so the perforations read as real cut-outs
   - tighten the transparent artwork crop and retain a soft lifted-paper shadow
   ========================================================= */
.scene-borgo .borgo-art-card{
  margin:56px auto 56px;
  padding:26px 28px 24px;
  transform:rotate(-.12deg);
  box-shadow:0 26px 46px rgba(16,7,10,.28),0 7px 14px rgba(16,7,10,.13);
}

/* The four edge strips now sit INSIDE the paper and create semicircular bites.
   They no longer draw circles outside the card. */
.stamp-edge{z-index:4;background-color:transparent!important}
.stamp-edge-top,
.stamp-edge-bottom{
  left:14px;
  right:14px;
  height:11px;
}
.stamp-edge-top{
  top:0;
  background-image:radial-gradient(circle at 50% 0,var(--wine) 0 5.5px,transparent 5.8px)!important;
  background-size:20px 11px!important;
  background-repeat:repeat-x!important;
}
.stamp-edge-bottom{
  bottom:0;
  background-image:radial-gradient(circle at 50% 100%,var(--wine) 0 5.5px,transparent 5.8px)!important;
  background-size:20px 11px!important;
  background-repeat:repeat-x!important;
}
.stamp-edge-left,
.stamp-edge-right{
  top:14px;
  bottom:14px;
  width:11px;
}
.stamp-edge-left{
  left:0;
  background-image:radial-gradient(circle at 0 50%,var(--wine) 0 5.5px,transparent 5.8px)!important;
  background-size:11px 20px!important;
  background-repeat:repeat-y!important;
}
.stamp-edge-right{
  right:0;
  background-image:radial-gradient(circle at 100% 50%,var(--wine) 0 5.5px,transparent 5.8px)!important;
  background-size:11px 20px!important;
  background-repeat:repeat-y!important;
}
.scene-borgo .borgo-sketch-image{padding:22px 20px 0}
.scene-borgo .borgo-sketch-image img{width:100%;height:auto}
.borgo-script-title{margin:0 0 10px}

@media (max-width:759px){
  .scene-borgo .borgo-art-card{
    margin:42px auto 42px;
    padding:18px 18px 17px;
    transform:none;
  }
  .stamp-edge-top,.stamp-edge-bottom{left:10px;right:10px;height:9px}
  .stamp-edge-top{background-size:17px 9px!important;background-image:radial-gradient(circle at 50% 0,var(--wine) 0 4.6px,transparent 4.9px)!important}
  .stamp-edge-bottom{background-size:17px 9px!important;background-image:radial-gradient(circle at 50% 100%,var(--wine) 0 4.6px,transparent 4.9px)!important}
  .stamp-edge-left,.stamp-edge-right{top:10px;bottom:10px;width:9px}
  .stamp-edge-left{background-size:9px 17px!important;background-image:radial-gradient(circle at 0 50%,var(--wine) 0 4.6px,transparent 4.9px)!important}
  .stamp-edge-right{background-size:9px 17px!important;background-image:radial-gradient(circle at 100% 50%,var(--wine) 0 4.6px,transparent 4.9px)!important}
  .scene-borgo .borgo-sketch-image{padding:16px 12px 0}
  .borgo-postmark{bottom:92px}
}


/* =========================================================
   v0.3.2.15 — soften the stamp edge border treatment
   - reduce the visible light border band so the card feels less outlined
   - pull the perforation treatment in and lower the inner border contrast
   ========================================================= */
.scene-borgo .borgo-art-card{
  background:#f1e7d7;
  border-color:rgba(97,72,56,.16);
}
.scene-borgo .borgo-art-card::before{
  inset:10px;
  border-color:rgba(97,72,56,.10);
}
.stamp-edge-top,
.stamp-edge-bottom{
  left:8px;
  right:8px;
  height:8px;
}
.stamp-edge-top{
  background-size:18px 8px!important;
  background-image:radial-gradient(circle at 50% 0,var(--wine) 0 4.2px,transparent 4.45px)!important;
}
.stamp-edge-bottom{
  background-size:18px 8px!important;
  background-image:radial-gradient(circle at 50% 100%,var(--wine) 0 4.2px,transparent 4.45px)!important;
}
.stamp-edge-left,
.stamp-edge-right{
  top:8px;
  bottom:8px;
  width:8px;
}
.stamp-edge-left{
  background-size:8px 18px!important;
  background-image:radial-gradient(circle at 0 50%,var(--wine) 0 4.2px,transparent 4.45px)!important;
}
.stamp-edge-right{
  background-size:8px 18px!important;
  background-image:radial-gradient(circle at 100% 50%,var(--wine) 0 4.2px,transparent 4.45px)!important;
}
.scene-borgo .borgo-sketch-image{padding:18px 18px 0}

@media (max-width:759px){
  .scene-borgo .borgo-art-card::before{inset:8px}
  .stamp-edge-top,.stamp-edge-bottom{left:6px;right:6px;height:7px}
  .stamp-edge-top{background-size:15px 7px!important;background-image:radial-gradient(circle at 50% 0,var(--wine) 0 3.7px,transparent 4px)!important}
  .stamp-edge-bottom{background-size:15px 7px!important;background-image:radial-gradient(circle at 50% 100%,var(--wine) 0 3.7px,transparent 4px)!important}
  .stamp-edge-left,.stamp-edge-right{top:6px;bottom:6px;width:7px}
  .stamp-edge-left{background-size:7px 15px!important;background-image:radial-gradient(circle at 0 50%,var(--wine) 0 3.7px,transparent 4px)!important}
  .stamp-edge-right{background-size:7px 15px!important;background-image:radial-gradient(circle at 100% 50%,var(--wine) 0 3.7px,transparent 4px)!important}
  .scene-borgo .borgo-sketch-image{padding:14px 12px 0}
}


/* =========================================================
   v0.3.2.16 — proper SVG stamp card for homepage Borgo panel
   - replaces CSS-made edge dots with a true SVG stamp-frame asset
   - keeps the preferred shadow and overall generated look
   - removes the bright outer band and lets the frame read as one intentional object
   ========================================================= */
.scene-borgo .borgo-art-card{
  position:relative;
  isolation:isolate;
  display:block;
  width:min(100%, 1220px);
  margin:58px auto 56px;
  padding:64px 78px 48px;
  background:transparent;
  border:0;
  box-shadow:none;
  transform:none;
  overflow:visible;
}
.scene-borgo .borgo-art-card::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  background:url('../images/borgo-stamp-frame.svg') center/100% 100% no-repeat;
  pointer-events:none;
}
.scene-borgo .borgo-art-card::after{content:none}
.stamp-edge{display:none !important}

.scene-borgo .borgo-sketch-image{
  position:relative;
  z-index:1;
  margin:0;
  padding:0;
}
.scene-borgo .borgo-sketch-image img{
  width:100%;
  height:auto;
  mix-blend-mode:normal;
  filter:none;
}
.borgo-script-title{
  position:relative;
  z-index:1;
  margin:-6px 0 16px;
  text-align:center;
  font-family:var(--script);
  font-size:clamp(64px,8vw,96px);
  line-height:.95;
  color:#2d2520;
}
.borgo-postmark{
  position:absolute;
  z-index:2;
  right:86px;
  top:50%;
  width:clamp(110px,10vw,136px);
  height:clamp(110px,10vw,136px);
  color:rgba(107,32,53,.42);
  background:transparent;
}
.borgo-postmark::after{
  content:"";
  position:absolute;
  left:calc(100% - 1px);
  top:50%;
  width:68px;
  height:1px;
  background:currentColor;
  opacity:.8;
  box-shadow:0 -11px 0 currentColor,0 11px 0 currentColor;
}
.scene-borgo .borgo-card-copy{
  position:relative;
  z-index:1;
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:24px;
  margin-top:12px;
  padding:18px 4px 0;
  border-top:1px solid rgba(94,74,58,.18) !important;
  border-left:0 !important;
  text-align:left;
}
.scene-borgo .borgo-card-copy p{
  margin:0;
  font-family:var(--serif);
  font-size:clamp(20px,2.6vw,28px);
  line-height:1.14;
  color:#2e2824;
}
.scene-borgo .borgo-card-copy .text-link{
  margin-top:0;
  padding-bottom:4px;
  white-space:nowrap;
}

@media (max-width:1020px){
  .scene-borgo .borgo-art-card{
    width:min(100%, 980px);
    padding:54px 50px 42px;
  }
  .borgo-postmark{
    right:56px;
    top:48%;
    width:110px;
    height:110px;
  }
}

@media (max-width:759px){
  .scene-borgo .borgo-art-card{
    width:min(calc(100% - 8px), 760px);
    margin:36px auto 40px;
    padding:28px 28px 26px;
  }
  .borgo-script-title{
    font-size:clamp(40px, 10vw, 60px);
    margin:2px 0 12px;
  }
  .borgo-postmark{
    right:18px;
    top:auto;
    bottom:108px;
    width:84px;
    height:84px;
  }
  .borgo-postmark::after{
    width:32px;
    box-shadow:0 -7px 0 currentColor,0 7px 0 currentColor;
  }
  .scene-borgo .borgo-card-copy{
    display:grid;
    grid-template-columns:1fr;
    justify-items:center;
    gap:10px;
    text-align:center;
    padding:16px 2px 0;
  }
  .scene-borgo .borgo-card-copy p{
    font-size:clamp(18px,5.7vw,22px);
  }
}


/* =========================================================
   v0.3.2.17 — burgundy header and menu polish
   - switches the live site header to the approved burgundy / cream colourway
   - keeps the current layout and mobile menu structure unchanged
   ========================================================= */
.site-header{
  background:rgba(59,21,31,.94);
  color:var(--ivory);
  border-bottom:1px solid rgba(246,240,231,.14);
  box-shadow:0 8px 22px rgba(23,8,13,.14);
}
.site-header .site-brand,
.site-header a,
.site-header button{
  color:inherit;
}
.menu-toggle span:not(.screen-reader-text){
  background:var(--ivory);
}
.desktop-nav-list a,
.mobile-nav-list a,
.mobile-menu-brand,
.mobile-menu-foot,
.replay-link,
.footer-replay{
  color:inherit;
}
.desktop-nav-list a{
  color:rgba(246,240,231,.92);
  transition:opacity .2s ease,color .2s ease;
}
.desktop-nav-list a:hover,
.desktop-nav-list a:focus-visible{
  color:var(--ivory);
  opacity:1;
}
.header-rsvp{
  color:var(--ivory);
  border-color:rgba(246,240,231,.28);
  background:rgba(246,240,231,.04);
}
.header-rsvp:hover,
.header-rsvp:focus-visible{
  background:rgba(246,240,231,.10);
}
.site-header :where(a,button):focus-visible{
  outline-color:var(--ivory);
  box-shadow:0 0 0 6px rgba(17,17,17,.55);
}
.desktop-nav-list a[aria-current="page"]{
  text-decoration-color:rgba(246,240,231,.95);
}
@media (max-width:759px){
  .site-header{
    background:rgba(59,21,31,.96);
  }
}


/* =========================================================
   v0.3.2.19 — desktop small-type readability polish
   - increases navigation and small uppercase/meta typography on desktop
   - preserves mobile sizing and the approved editorial hierarchy
   ========================================================= */
@media (min-width:1021px){
  .site-header{height:82px;padding-inline:44px}
  .site-brand{font-size:32px}
  .desktop-nav-list{gap:28px!important}
  .desktop-nav-list a{
    font-size:11px!important;
    letter-spacing:.13em!important;
    line-height:1.2;
  }
  .header-rsvp{
    font-size:11px!important;
    letter-spacing:.14em;
    padding:10px 18px!important;
  }

  .section-kicker{font-size:12px;letter-spacing:.20em}
  .hero-venue{font-size:11.5px;letter-spacing:.15em;line-height:1.65}
  .note-signature{font-size:11.5px;letter-spacing:.18em}
  .coordinates{font-size:10.5px;letter-spacing:.16em}
  .weekend-day{font-size:10px;letter-spacing:.15em}
  .route-line{font-size:10px;letter-spacing:.15em}
  .countdown span{font-size:9px;letter-spacing:.12em}
  .save-emphasis{font-size:10.5px!important;letter-spacing:.18em}
  .footer-date{font-size:11px;letter-spacing:.15em}
  .footer-links a{font-size:10.5px;letter-spacing:.13em}
  .inner-hero p:last-child{font-size:11.5px;letter-spacing:.15em}
  .timeline-date small{font-size:9.5px;letter-spacing:.14em}
  .event-tags span{font-size:9.5px;letter-spacing:.11em}
  .rsvp-placeholder p,.rsvp-placeholder label{font-size:10.5px;letter-spacing:.16em}
  .button{font-size:12px;letter-spacing:.14em}
  .text-link{font-size:12.5px;letter-spacing:.14em}
}

/* Compact desktop widths still need readable navigation. */
@media (min-width:1021px) and (max-width:1100px){
  .site-header{padding-inline:24px;gap:14px}
  .site-brand{font-size:27px}
  .desktop-nav-list{gap:13px!important}
  .desktop-nav-list a{font-size:10px!important;letter-spacing:.095em!important}
}


/* =========================================================
   v0.3.2.20 — desktop invitation typography readability
   - enlarges the small text in the one-time envelope opening on desktop
   - preserves the approved artwork, animation, proportions and mobile sizing
   ========================================================= */
@media (min-width:1021px){
  .invitation-skip{
    font-size:12px;
    letter-spacing:.16em;
    padding:12px 14px;
  }
  .invite-stage{
    width:min(94vw,800px);
  }
  .invite-intro-heading{
    margin-bottom:42px;
  }
  .invite-destination{
    font-size:12px;
    letter-spacing:.30em;
  }
  .invite-script-names{
    font-size:58px;
  }
  .invite-intro-date{
    font-size:16px;
    letter-spacing:.30em;
  }
  .invite-heading-rule{
    width:78px;
    margin-top:20px;
  }

  .invite-envelope{
    width:min(68vw,700px);
    max-width:700px;
  }
  .envelope-address p:first-of-type{
    font-size:19px;
    letter-spacing:.20em;
  }
  .envelope-address p:last-of-type{
    font-size:10px;
    letter-spacing:.22em;
    margin-top:4px;
  }
  .envelope-address::before{
    width:86px;
    margin-bottom:12px;
  }
  .envelope-postmark{
    width:84px;
    height:84px;
    font-size:9px;
    letter-spacing:.10em;
  }
  .wax-seal{
    width:152px;
    height:152px;
  }

  .envelope-card{
    left:21%;
    width:58%;
  }
  .invite-card-copy{
    padding:12px 10px 6px;
  }
  .invite-names{
    font-size:40px;
  }
  .invite-kicker,
  .invite-date,
  .invite-location{
    font-size:9px;
    letter-spacing:.16em;
  }
  .save-date{
    font-size:21px;
    margin-top:8px;
  }
  .save-date em{
    font-size:25px;
  }
  .invite-enter{
    font-size:9px;
    letter-spacing:.15em;
    margin-top:8px;
    padding:8px 8px;
  }
  .invite-postmark-photo{
    width:68px;
    height:68px;
    font-size:8px;
    letter-spacing:.09em;
  }
  .tap-open{
    width:min(86vw,420px);
    font-size:11.5px;
    letter-spacing:.24em;
    gap:18px;
  }
  .tap-open span{
    width:62px;
  }
}

/* Slightly larger invitation labels on landscape tablets without changing phone sizing. */
@media (min-width:760px) and (max-width:1020px){
  .invite-destination{font-size:10px}
  .invite-intro-date{font-size:14px}
  .envelope-address p:first-of-type{font-size:17px}
  .envelope-address p:last-of-type{font-size:9px}
  .invite-kicker,.invite-date,.invite-location{font-size:7.5px}
  .invite-enter{font-size:7.8px}
  .tap-open{font-size:10px}
}


/* =========================================================
   v0.3.2.21 — clean opening invitation photo edge fix
   - remove the jagged top artifact on the opened invitation card
   - keep the larger desktop typography from v0.3.2.20
   ========================================================= */
.stamp-card-edge{
  clip-path:none;
  -webkit-clip-path:none;
  border:1px solid rgba(95,74,59,.16);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.28);
  overflow:hidden;
}
.invite-photo-wrap{
  margin:0;
  position:relative;
  height:52%;
  overflow:hidden;
  border-bottom:1px solid rgba(95,74,59,.10);
}
.invite-photo{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 35%;
}


/* =========================================================
   v0.3.2.22 — opening card divider cleanup
   - removes the unwanted horizontal divider appearing through the opened invitation card
   - softens the transition between the photo and text without a visible rule
   ========================================================= */
.invite-photo-wrap{
  border-bottom:0;
}
.invite-card-copy{
  padding-top:16px;
}
.invite-names{
  margin-top:2px;
}
.invite-kicker{
  margin-top:4px;
}


/* =========================================================
   v0.3.2.24 — The Wedding page editorial polish
   - preserve the approved page structure and photography
   - integrate the Borgo illustration more softly
   - make story sections feel editorial rather than boxed
   ========================================================= */
.wedding-story{
  padding-top:28px;
  padding-bottom:120px;
}
.wedding-story-art{
  max-width:780px;
  margin:0 auto 58px;
  padding-inline:12px;
}
.wedding-story-art img{
  width:100%;
  mix-blend-mode:normal;
  opacity:.92;
  filter:saturate(.92) contrast(.99);
}
.story-grid{
  gap:0;
  border-top:1px solid rgba(36,31,28,.13);
  border-bottom:1px solid rgba(36,31,28,.13);
}
.story-card{
  background:transparent;
  border:0;
  padding:42px 8px 44px;
}
.story-card + .story-card{
  border-top:1px solid rgba(36,31,28,.13);
}
.story-card h2{
  font-size:clamp(42px,7vw,56px);
  margin-bottom:22px;
}
.story-card p:not(.section-kicker){
  font-size:19px;
  line-height:1.65;
}
.wedding-feel .editorial-photo{
  transform:rotate(-.65deg);
}
.travel-callout p:not(.section-kicker){
  line-height:1.65;
}
.final-note>p:not(.script-eyebrow):not(.note-signature){
  max-width:720px;
  margin-left:auto;
  margin-right:auto;
}

@media (min-width:760px){
  .wedding-story-art{margin-bottom:64px}
  .story-grid{grid-template-columns:1fr 1fr}
  .story-card{padding:48px 34px 50px}
  .story-card + .story-card{
    border-top:0;
    border-left:1px solid rgba(36,31,28,.13);
  }
}

@media (min-width:1100px){
  .wedding-story-art{max-width:830px}
  .story-card{padding-inline:46px}
}


/* =========================================================
   v0.3.2.25 — Weekend / Celebrations page polish
   ========================================================= */
.weekend-hero{min-height:64svh;padding-bottom:56px}
.weekend-hero .script-eyebrow{margin-bottom:10px}
.weekend-hero-monogram{width:clamp(82px,8vw,112px);margin:28px auto -8px;opacity:.92}
.weekend-hero-monogram .weekend-monogram{width:100%;height:auto;display:block;filter:drop-shadow(0 8px 12px rgba(49,24,16,.10))}
.weekend-intro{padding-top:70px;padding-bottom:30px;max-width:920px;text-align:center}
.weekend-intro p{font-family:var(--serif);font-size:clamp(20px,2vw,25px);line-height:1.6;margin:0}
.weekend-calendar-action{padding-bottom:58px}
.celebration-timeline{padding-top:26px}
.timeline-event{padding-block:58px}
.timeline-event .timeline-content{max-width:920px}
.timeline-event .timeline-date{background:#f5ede2;border-color:rgba(107,32,53,.32);box-shadow:0 10px 24px rgba(64,32,26,.06)}
.timeline-event h2{font-size:clamp(40px,5vw,58px);margin-bottom:18px}
.timeline-content>p:not(.section-kicker){font-size:clamp(18px,1.65vw,21px);line-height:1.65}
.event-tags{margin-top:22px}
.dress-card{margin-top:28px;background:#f7efe4;border:1px solid rgba(107,32,53,.16);padding:26px 28px;box-shadow:0 12px 30px rgba(54,26,21,.05)}
.dress-card h3{font-family:var(--serif);font-size:clamp(29px,3vw,38px);line-height:1;margin:3px 0 12px;font-weight:500}
.dress-card p:not(.section-kicker){font-size:16px;line-height:1.65}
.departure-section-inner{padding-block:84px}
.join-note{padding-top:110px;padding-bottom:120px;align-items:start}
.weekend-plan-note{display:grid;grid-template-columns:auto 1fr;gap:8px 20px;align-items:baseline}
.weekend-plan-note .section-kicker{grid-column:1/-1;margin-bottom:14px}
.weekend-plan-note strong{font-family:var(--serif);font-size:18px;font-weight:600}
.weekend-plan-note p{margin:0;font-family:var(--serif);font-size:17px}

@media (max-width:759px){
  .weekend-hero{min-height:58svh;padding-bottom:38px}
  .weekend-hero-monogram{width:72px;margin:22px auto -2px}
  .weekend-intro{padding-top:52px;padding-bottom:22px}
  .weekend-intro p{font-size:19px}
  .weekend-calendar-action{padding-bottom:42px}
  .timeline-event{padding-block:42px}
  .dress-card{padding:22px 20px}
  .join-note{padding-top:82px;padding-bottom:92px}
  .weekend-plan-note{grid-template-columns:1fr;gap:2px}
  .weekend-plan-note strong{margin-top:11px}
}


/* =========================================================
   v0.3.2.26 — Celebrations hero composition correction
   - remove the oversized blank hero space introduced in v0.3.2.25
   - restore a deliberate date style after adding the monogram
   - place the monogram and intro as one balanced visual sequence
   ========================================================= */
.weekend-hero{
  min-height:0;
  padding:88px 24px 42px;
}
.weekend-hero .script-eyebrow{
  margin:0 0 4px;
  font-size:clamp(42px,4.3vw,58px);
  line-height:1;
}
.weekend-hero h1{
  width:min(100%,1180px);
  font-size:clamp(76px,8vw,116px);
  line-height:.82;
  margin:0 auto;
}
.weekend-hero > p:not(.script-eyebrow){
  margin:24px 0 0;
  font-family:var(--sans);
  font-size:11.5px;
  line-height:1.4;
  font-weight:500;
  letter-spacing:.13em;
  text-transform:uppercase;
  color:#463d37;
}
.weekend-hero-monogram{
  width:128px;
  margin:26px auto 0;
  opacity:.94;
}
.weekend-hero-monogram .weekend-monogram{
  width:100%;
  height:auto;
  display:block;
  filter:drop-shadow(0 9px 14px rgba(49,24,16,.12));
}
.weekend-intro{
  max-width:780px;
  padding:36px 20px 18px;
  text-align:center;
}
.weekend-intro p{
  margin:0;
  font-family:var(--serif);
  font-size:21px;
  line-height:1.5;
}
.weekend-calendar-action{
  margin-top:0;
  margin-bottom:0;
  padding-top:8px;
  padding-bottom:68px;
}
.weekend-calendar-action .button{
  min-height:50px;
  padding:13px 25px;
  font-size:11px;
}
.celebration-timeline{padding-top:18px}

@media (min-width:1100px){
  .weekend-hero{padding-top:96px;padding-bottom:44px}
  .weekend-hero-monogram{width:136px;margin-top:28px}
  .weekend-intro{padding-top:38px}
}

@media (max-width:759px){
  .weekend-hero{
    min-height:0;
    padding:58px 18px 30px;
  }
  .weekend-hero .script-eyebrow{
    font-size:clamp(34px,10vw,44px);
    margin-bottom:6px;
  }
  .weekend-hero h1{
    font-size:clamp(43px,11.7vw,54px);
    line-height:.88;
  }
  .weekend-hero h1 span{display:block}
  .weekend-hero > p:not(.script-eyebrow){
    margin-top:19px;
    font-size:9.5px;
    letter-spacing:.11em;
    max-width:320px;
  }
  .weekend-hero-monogram{
    width:92px;
    margin-top:21px;
  }
  .weekend-intro{
    max-width:620px;
    padding:30px 20px 16px;
  }
  .weekend-intro p{
    font-size:18px;
    line-height:1.52;
  }
  .weekend-calendar-action{
    padding-top:6px;
    padding-bottom:48px;
  }
}

/* =========================================================
   v0.3.2.30 — reduce repeated Borgo illustration use
   - homepage keeps the illustrated Borgo only in its postage-stamp card
   - Wedding story becomes cleaner and photography-led
   - Venue becomes a photographic editorial page
   ========================================================= */

/* With the secondary hero illustration removed, keep the approved homepage
   headline composition centred rather than leaving space for a missing asset. */
.scene-hero{
  min-height:clamp(680px,88svh,920px);
  padding-bottom:80px;
}

/* The Wedding: the story now follows naturally from the couple photography. */
.wedding-story{
  padding-top:72px;
}

/* Venue: let the real place do the visual work. */
.venue-feature-first{
  padding-top:clamp(78px,8vw,120px);
  padding-bottom:clamp(82px,8vw,120px);
}
.venue-feature-photo{
  position:relative;
  overflow:hidden;
  background:#e9e3d8;
  box-shadow:0 24px 60px rgba(52,37,31,.10);
}
.venue-feature-photo::after{
  content:"";
  position:absolute;
  inset:12px;
  border:1px solid rgba(246,240,231,.55);
  pointer-events:none;
}
.venue-feature-photo img{
  width:100%;
  aspect-ratio:1/1;
  max-height:none;
  object-fit:cover;
  display:block;
}
.venue-feature-first .prose-block p:not(.section-kicker){
  line-height:1.65;
}
.venue-feature-first .map-actions{
  margin-top:18px;
}

.venue-gallery-wrap{
  background:#f4eee5;
  padding-top:clamp(72px,8vw,110px);
  padding-bottom:clamp(82px,8vw,118px);
}
.venue-gallery-heading{
  max-width:720px;
  margin:0 auto clamp(34px,5vw,58px);
  text-align:center;
}
.venue-gallery-heading h2{
  margin:0;
  font-family:var(--serif);
  color:var(--burgundy);
  font-weight:500;
  font-size:clamp(44px,7vw,72px);
  line-height:.95;
}
.venue-image-grid{
  padding-bottom:0;
  gap:12px;
}
.venue-image-grid img{
  transition:transform .5s ease;
}
@media (hover:hover){
  .venue-image-grid img:hover{transform:scale(1.012)}
}

.venue-practical{
  padding-top:clamp(82px,8vw,110px);
  padding-bottom:clamp(88px,8vw,120px);
}
.venue-feature-cards article{
  padding:34px 28px 38px;
}
.venue-feature-cards article>span{
  display:block;
  margin-bottom:12px;
  font-size:32px;
}
.venue-feature-cards h2{
  font-size:clamp(30px,3vw,38px);
  line-height:1.02;
  margin-bottom:16px;
}
.venue-feature-cards p{
  font-family:var(--serif);
  font-size:17px;
  line-height:1.6;
}

.venue-closing{
  background:var(--wine);
  color:var(--ivory);
  padding:clamp(84px,9vw,125px) 20px;
  text-align:center;
}
.venue-closing-inner{
  max-width:980px;
}
.venue-closing-script{
  font-family:var(--script);
  font-size:clamp(48px,8vw,82px);
  line-height:1.08;
  margin:8px auto 0;
}

@media (max-width:759px){
  .scene-hero{
    min-height:78svh;
    padding-top:115px;
    padding-bottom:62px;
  }
  .wedding-story{padding-top:52px}
  .venue-feature-first{padding-top:68px;padding-bottom:72px}
  .venue-feature-photo{max-width:520px;margin-inline:auto}
  .venue-gallery-wrap{padding-top:68px;padding-bottom:72px}
  .venue-image-grid{grid-template-columns:1fr 1fr;gap:8px}
  .venue-feature-cards article{padding:30px 24px 34px}
  .venue-closing{padding:76px 18px 82px}
}

/* =========================================================
   v0.3.2.31 — Stay page polish
   ========================================================= */
.stay-intro{padding-block:105px 90px}
.stay-details{padding-block:85px 115px}
.stay-feature-cards{gap:14px}
.stay-feature-cards article{display:flex;flex-direction:column;min-height:230px;padding:30px 24px 28px}
.stay-feature-cards article>span{font-size:29px;line-height:1;margin-bottom:8px}
.stay-feature-cards h3{font-size:30px;margin:6px 0 14px}
.stay-feature-cards p{line-height:1.65}
.family-grid .prose-block{max-width:600px}
.allocation-steps article{padding:17px 0}
.allocation-steps span{line-height:1.25}

@media (max-width:759px){
  .stay-intro{padding-block:72px 65px}
  .stay-details{padding-block:70px 82px}
  .stay-feature-cards{grid-template-columns:1fr;gap:12px}
  .stay-feature-cards article{min-height:0;padding:26px 22px}
  .family-section{padding-block:78px}
  .allocation-section{padding-block:78px}
  .allocation-steps article{grid-template-columns:42px 1fr;padding:15px 0}
  .allocation-steps strong{font-size:31px}
  .allocation-steps span{font-size:19px}
}

/* =========================================================
   v0.3.2.32 — Travel page polish
   Clearer hierarchy, softer practical cards and more balanced
   spacing without introducing extra decorative motifs.
   ========================================================= */
.travel-hero{
  background:#e8e3d4;
  padding-bottom:clamp(72px,9vw,112px);
}
.travel-hero h1{
  color:var(--olive);
  letter-spacing:.015em;
}
.travel-hero p:last-child{
  margin-top:20px;
}
.travel-intro{
  max-width:860px;
  padding-top:clamp(58px,7vw,82px);
  padding-bottom:22px;
}
.travel-intro p{
  max-width:820px;
  margin-left:auto;
  margin-right:auto;
  line-height:1.42;
}
.travel-intro p + p{margin-top:18px}
.airport-grid{align-items:stretch}
.airport-card{
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.airport-card>div{
  flex:1;
  padding:32px 28px 38px;
}
.airport-card.recommended{
  outline:1px solid var(--olive);
  outline-offset:-1px;
}
.transport-card{
  padding:clamp(32px,4vw,46px);
}
.transport-card h2{
  max-width:560px;
}
.transport-card p strong{
  color:var(--burgundy);
}
.taxi-card .simple-list{
  margin-bottom:0;
}
.arrival-grid article{
  padding-top:30px;
}
.longer-trip-callout{
  padding-top:clamp(82px,9vw,110px);
  padding-bottom:clamp(90px,10vw,120px);
}
.longer-trip-callout .prose-block p:not(.section-kicker){
  max-width:620px;
}
@media (max-width:759px){
  .travel-hero{padding-bottom:64px}
  .travel-intro{padding-top:50px}
  .travel-intro p{font-size:21px}
  .airport-section{padding-bottom:80px}
  .drive-section{padding-block:78px}
  .transport-section{padding-block:78px}
  .arrival-departure{padding-block:72px}
  .longer-trip-callout{padding-block:78px 90px}
}

/* =========================================================
   v0.3.2.33 — Toscana guide polish
   - turns the placeholder Tuscany page into a finished, editorial travel guide
   - uses the Italian hero title while keeping English body copy natural
   - gives photography more presence, cards more breathing room and a stronger final landscape feature
   ========================================================= */
.tuscany-intro{
  padding-top:72px;
  padding-bottom:50px;
  max-width:820px;
  text-align:center;
}
.tuscany-intro p{
  max-width:760px;
  margin-left:auto;
  margin-right:auto;
}
.tuscany-intro p + p{margin-top:14px}

.destination-grid{
  gap:30px;
  padding-top:10px;
  padding-bottom:120px;
}
.destination-card{
  display:flex;
  flex-direction:column;
  overflow:hidden;
  background:#fff;
  box-shadow:0 18px 48px rgba(41,18,21,.075);
}
.destination-card img{
  width:100%;
  aspect-ratio:16/11;
  object-fit:cover;
}
.destination-card>div{
  flex:1;
  padding:30px 30px 34px;
}
.destination-card h2{
  font-size:clamp(38px,5vw,48px);
  margin-bottom:16px;
}
.destination-card p:not(.section-kicker){
  font-family:var(--serif);
  font-size:17px;
  line-height:1.58;
  color:rgba(36,31,28,.86);
}
.destination-card p:not(.section-kicker) + p:not(.section-kicker){
  margin-top:12px;
}
.destination-card-wide{
  background:#f5efe5;
}
.destination-card-wide h2{
  font-size:clamp(42px,5.3vw,60px);
}

@media (min-width:760px){
  .destination-grid{gap:32px}
  .destination-card-wide{
    grid-template-columns:minmax(0,1.35fr) minmax(300px,.85fr);
  }
  .destination-card-wide img{
    height:100%;
    min-height:430px;
    aspect-ratio:auto;
  }
  .destination-card-wide>div{
    display:flex;
    flex-direction:column;
    justify-content:center;
    padding:44px 42px;
  }
}

@media (min-width:1100px){
  .destination-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
    max-width:1180px;
  }
  .destination-card-wide{
    grid-column:1/-1;
  }
  .destination-card img{aspect-ratio:16/10.5}
}

@media (max-width:759px){
  .tuscany-intro{
    padding-top:50px;
    padding-bottom:34px;
    text-align:left;
  }
  .destination-grid{
    gap:22px;
    padding-bottom:90px;
  }
  .destination-card>div{padding:25px 22px 28px}
  .destination-card h2{font-size:40px}
  .destination-card p:not(.section-kicker){font-size:17px}
}

/* =========================================================
   v0.3.2.34 — FAQ page polish
   - shorter practical hero
   - finished guest-ready wording
   - improved accordion rhythm and multi-paragraph answers
   ========================================================= */
.faq-hero{
  min-height:clamp(310px,42svh,430px);
  padding-top:58px;
  padding-bottom:58px;
}
.faq-hero h1{
  font-size:clamp(68px,14vw,128px);
}
.faq-hero p:last-child{
  margin-top:20px;
}
.faq-list{
  max-width:900px;
  padding-top:64px;
  padding-bottom:120px;
}
.faq-question{
  gap:28px;
  padding:26px 0;
  font-size:27px;
  line-height:1.12;
}
.faq-question span{max-width:760px}
.faq-question b{flex:0 0 auto}
.faq-answer{
  display:grid;
  grid-template-rows:0fr;
  transition:grid-template-rows .3s ease;
}
.faq-answer-inner{
  overflow:hidden;
  max-width:760px;
  color:rgba(36,31,28,.84);
}
.faq-answer-inner p{
  margin:0;
  font-family:var(--serif);
  font-size:17px;
  line-height:1.62;
}
.faq-answer-inner p + p{margin-top:12px}
.faq-item.is-open .faq-answer{grid-template-rows:1fr}
.faq-item.is-open .faq-answer-inner{padding:0 0 28px}
.faq-answer-inner strong{font-weight:600;color:var(--ink)}

@media (max-width:759px){
  .faq-hero{
    min-height:300px;
    padding-top:48px;
    padding-bottom:48px;
  }
  .faq-hero h1{font-size:72px}
  .faq-list{
    padding-top:44px;
    padding-bottom:88px;
  }
  .faq-question{
    padding:22px 0;
    gap:18px;
    font-size:23px;
  }
  .faq-answer-inner p{font-size:16.5px}
  .faq-item.is-open .faq-answer-inner{padding-bottom:24px}
}

/* =========================================================
   v0.3.2.35 — final Save-the-Date sitewide responsive QA
   - consistent spacing from 320px phones through tablets and desktop
   - safer long hero titles and card grids
   - tablet portrait uses editorial stacks instead of squeezed columns
   - compact desktop keeps the hamburger until full navigation fits cleanly
   ========================================================= */

/* Predictable gutters and shrink behaviour everywhere. */
html{overflow-x:clip}
body{min-width:0}
.page-shell{width:min(calc(100% - clamp(32px,5vw,72px)),var(--max))}
.scene,.inner-main,.inner-hero,.page-shell,.prose-shell,
.editorial-split,.venue-feature,.family-grid,.allocation-section,.drive-grid,
.longer-trip-callout,.story-grid,.feature-cards,.airport-grid,.transport-section,
.arrival-grid,.destination-grid{min-width:0}
:is(.editorial-split,.venue-feature,.family-grid,.allocation-section,.drive-grid,
.longer-trip-callout,.story-grid,.feature-cards,.airport-grid,.transport-section,
.arrival-grid,.destination-grid)>*{min-width:0}
img,video{max-width:100%}

/* Inner heroes: maintain hierarchy without wasting screen height. */
.inner-hero{
  min-height:clamp(360px,52svh,620px);
  padding:clamp(58px,7vw,92px) clamp(18px,4vw,52px);
}
.inner-hero h1{
  max-width:min(1180px,100%);
  text-wrap:balance;
}
.inner-hero p:last-child{
  max-width:min(680px,100%);
  text-wrap:balance;
}
.venue-hero h1{font-size:clamp(58px,10.5vw,126px);line-height:.8}

/* Keep buttons and text links easy to tap without making them oversized. */
.button{min-height:48px;max-width:100%;text-align:center;line-height:1.25}
.text-link{line-height:1.35}

/* Balanced section rhythm on inner pages. */
.editorial-split,.venue-feature{padding-block:clamp(72px,8vw,112px)}
.prose-block p:not(.section-kicker){line-height:1.62}
.prose-block h2{text-wrap:balance}
.final-note{padding-block:clamp(82px,9vw,116px)}
.travel-callout{padding-block:clamp(78px,8vw,100px)}
.family-section,.drive-section{padding-block:clamp(78px,8vw,104px)}
.allocation-section{padding-block:clamp(78px,8vw,108px)}
.arrival-departure{padding-block:clamp(76px,8vw,96px)}

/* Cards should grow naturally rather than forcing mismatched text to clip. */
.feature-cards article,.airport-card,.transport-card,.destination-card{min-width:0}
.feature-cards h2,.feature-cards h3,.airport-card h3,.transport-card h2,.destination-card h2{
  overflow-wrap:normal;
  text-wrap:balance;
}

/* Compact desktop / landscape tablet: don't squeeze seven nav items into 1024px. */
@media (min-width:1021px) and (max-width:1179px){
  .site-header{height:78px;padding-inline:26px}
  .site-brand{font-size:29px}
  .menu-toggle{display:flex!important}
  .desktop-nav,.header-rsvp{display:none!important}
  .inner-main{padding-top:78px}
}

/* Tablet portrait: preserve editorial proportions by stacking wide split layouts. */
@media (min-width:760px) and (max-width:899px){
  .scene-note,.scene-travel,.scene-venue-postcard,.scene-stay-teaser,
  .editorial-split,.venue-feature,.family-grid,.allocation-section,
  .drive-grid,.longer-trip-callout{
    grid-template-columns:1fr!important;
  }
  .scene-note,.scene-travel,.scene-venue-postcard,.scene-stay-teaser{
    gap:52px;
    padding-inline:clamp(34px,6vw,54px);
  }
  .note-copy,.print-photo,.travel-copy,.travel-postcards,.venue-collage,.venue-copy,
  .stay-teaser-copy,.stay-teaser-image{margin-inline:auto}
  .travel-copy{text-align:center}
  .route-line{justify-content:center}
  .travel-callout-inner{grid-template-columns:1fr;align-items:start}
  .travel-callout-inner .button{justify-self:start}
  .family-grid figure,.venue-feature-photo,.editorial-photo{width:min(100%,620px);margin-inline:auto}
  .stay-feature-cards{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .venue-feature-cards{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .venue-feature-cards article:last-child{grid-column:1/-1}
  .photobooth-strip{
    grid-template-columns:repeat(4,minmax(0,1fr));
    width:min(calc(100% - 44px),760px);
  }
  .photobooth-strip img{width:100%;height:auto;aspect-ratio:180/230}
}

/* Mid-tablet: keep four accommodation cards readable rather than narrow columns. */
@media (min-width:900px) and (max-width:1099px){
  .stay-feature-cards{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* Phone QA: tighter heroes, generous readable gutters and natural-height cards. */
@media (max-width:759px){
  .page-shell{width:min(calc(100% - 32px),var(--max))}
  .inner-hero{
    min-height:clamp(310px,43svh,390px);
    padding:48px 16px 42px;
  }
  .inner-hero .script-eyebrow{font-size:clamp(32px,9vw,42px)}
  .inner-hero h1{font-size:clamp(50px,15vw,70px);line-height:.84}
  .venue-hero h1{font-size:clamp(47px,13.4vw,60px);line-height:.82}
  .inner-hero p:last-child{font-size:9.5px;line-height:1.55;letter-spacing:.12em;margin-top:18px}

  .prose-block h2{font-size:clamp(42px,12vw,58px);line-height:.94}
  .prose-block p:not(.section-kicker){font-size:18px;line-height:1.6}
  .editorial-split,.venue-feature{padding-block:68px;gap:38px}
  .editorial-photo{padding:8px 8px 34px}

  .feature-cards,.airport-grid,.transport-section,.arrival-grid,.destination-grid{grid-template-columns:1fr!important}
  .feature-cards article,.transport-card,.airport-card>div{padding-left:22px;padding-right:22px}
  .venue-feature-cards article:last-child{grid-column:auto}

  .timeline-day{grid-template-columns:60px minmax(0,1fr);gap:16px;padding:36px 0}
  .timeline-date{width:58px;height:76px}
  .timeline-date span{font-size:35px}
  .timeline-day h2{font-size:34px}
  .timeline-content>p:not(.section-kicker){font-size:17px;line-height:1.62}
  .event-tags{gap:7px}
  .event-tags span{font-size:8.5px;padding:6px 9px}
  .dress-card{margin-top:24px}

  .departure-section-inner{grid-template-columns:68px minmax(0,1fr);gap:17px}
  .departure-date.big{padding-right:13px}
  .departure-date.big strong{font-size:48px}
  .departure-date.big span{font-size:6.8px;line-height:1.35;letter-spacing:.11em}

  .weekend-hero{padding:52px 16px 28px}
  .weekend-hero .script-eyebrow{font-size:clamp(34px,9.5vw,43px)}
  .weekend-hero h1{font-size:clamp(43px,11.6vw,54px);line-height:.88}
  .weekend-hero > p:not(.script-eyebrow){font-size:9.5px;line-height:1.5;letter-spacing:.105em;margin-top:17px}
  .weekend-hero-monogram{width:96px;margin-top:19px}
  .weekend-intro{padding:28px 16px 14px}
  .weekend-calendar-action{padding-bottom:46px}

  .venue-gallery-heading h2{font-size:clamp(42px,12vw,56px)}
  .venue-image-grid{grid-template-columns:1fr 1fr;gap:8px}
  .venue-closing-script{font-size:clamp(44px,12.5vw,60px)}

  .stay-bottom-card{width:min(calc(100% - 32px),840px);padding:64px 22px 54px}
  .stay-bottom-card h2{font-size:clamp(42px,12vw,58px)}

  .travel-intro{padding-top:48px}
  .travel-intro p{font-size:19px;line-height:1.55}
  .travel-route-card{padding:24px 20px}
  .travel-route-card li{grid-template-columns:44px minmax(0,1fr)}
  .travel-route-card span{font-size:28px}
  .travel-route-card strong{font-size:20px}

  .tuscany-intro{text-align:left;padding-top:48px}
  .destination-card h2{font-size:clamp(38px,11vw,46px)}

  .faq-question{font-size:22px;line-height:1.18;gap:14px}
  .faq-answer-inner{max-width:100%}

  .footer-links{gap:10px 16px}
  .footer-links a{min-height:34px;display:inline-flex;align-items:center}
}

/* Extra-small phones (320–374px): protect the longest headings and controls. */
@media (max-width:374px){
  .site-brand{font-size:22px}
  .inner-hero h1{font-size:48px}
  .venue-hero h1{font-size:44px}
  .weekend-hero h1{font-size:40px}
  .section-heading h2{font-size:40px}
  .prose-block h2{font-size:40px}
  .button{padding-inline:17px;font-size:10.5px;letter-spacing:.12em}
  .departure-section-inner{grid-template-columns:60px minmax(0,1fr);gap:14px}
  .departure-date.big strong{font-size:43px}
  .weekend-plan-note{padding:28px 22px}
}

/* Large screens: cap line lengths and avoid over-expanded compositions. */
@media (min-width:1440px){
  .page-shell{max-width:1240px}
  .prose-block p:not(.section-kicker){max-width:680px}
  .inner-hero{min-height:560px}
  .venue-feature-first{gap:90px}
}

/* Preserve the deliberately compact practical/celebration heroes after the global hero QA. */
.weekend-hero{
  min-height:0;
  padding:clamp(72px,6vw,96px) 24px 42px;
}
.faq-hero{
  min-height:clamp(300px,38svh,410px);
  padding:52px 18px;
}
.travel-hero{
  min-height:clamp(350px,48svh,520px);
  padding-bottom:clamp(58px,7vw,84px);
}

@media (min-width:760px) and (max-width:899px){
  .story-grid{grid-template-columns:1fr!important}
  .story-card + .story-card{
    border-left:0;
    border-top:1px solid rgba(36,31,28,.13);
  }
  .weekend-hero{padding-top:76px;padding-bottom:38px}
  .weekend-hero h1{font-size:clamp(70px,9.5vw,84px)}
  .weekend-hero-monogram{width:118px;margin-top:24px}
  .weekend-intro{padding-top:34px}
}

@media (max-width:759px){
  .faq-hero{min-height:285px;padding:44px 16px}
  .faq-hero h1{font-size:clamp(64px,19vw,76px)}
  .travel-hero{min-height:315px;padding-bottom:54px}
}

/* v0.3.2.40 — conservative fabric overlays: no head, hair or scooter body in moving layers */
.scene-hero{isolation:isolate}
.hero-vespa-stage{
  position:absolute;
  z-index:1;
  left:0;
  bottom:4px;
  width:clamp(220px,22vw,340px);
  pointer-events:none;
  opacity:0;
  transform:translate3d(-120%,0,0);
  will-change:transform,opacity;
  backface-visibility:hidden;
  contain:layout paint style;
}
.hero-vespa-stack{
  position:relative;
  width:100%;
  transform-origin:50% 84%;
  backface-visibility:hidden;
  will-change:transform;
}
.hero-vespa-art{
  width:100%;
  height:auto;
  display:block;
  backface-visibility:hidden;
  user-select:none;
  -webkit-user-drag:none;
}
.hero-vespa-base{
  position:relative;
  z-index:1;
  filter:drop-shadow(0 9px 10px rgba(55,31,24,.06));
}
.hero-vespa-layer{
  position:absolute;
  inset:0;
  z-index:2;
  pointer-events:none;
  will-change:transform;
  opacity:.84;
}
/* Moving overlays contain only free-standing fabric. Hair, heads and scooter stay in the base image. */
.hero-vespa-veil{transform-origin:27% 28%;opacity:.88}
.hero-vespa-dress{transform-origin:25% 68%;opacity:.86}
.hero-vespa-jacket{transform-origin:58% 43%;opacity:.48}

/* Only the wheel-spoke overlays rotate; the scooter body never does. */
.hero-vespa-wheel-motion{
  position:absolute;
  z-index:3;
  width:17.2%;
  aspect-ratio:1;
  pointer-events:none;
  color:rgba(72,55,47,.28);
  opacity:.72;
  transform-origin:50% 50%;
  will-change:transform;
}
.hero-vespa-wheel-motion svg{
  width:100%;
  height:100%;
  display:block;
  overflow:visible;
}
.hero-vespa-wheel-spokes{
  fill:none;
  stroke:currentColor;
  stroke-width:2.1;
  stroke-linecap:round;
  vector-effect:non-scaling-stroke;
}
.hero-vespa-wheel-spokes circle{
  fill:rgba(240,233,224,.12);
  stroke-width:1.8;
}
.hero-vespa-wheel-rear{left:28.65%;top:77.55%}
.hero-vespa-wheel-front{left:80.55%;top:77.15%}

@media (max-width:767px){
  .hero-vespa-stage{
    width:clamp(172px,49vw,218px);
    bottom:2px;
  }
  .hero-vespa-wheel-motion{opacity:.62}
}
@media (max-width:359px){
  .hero-vespa-stage{width:162px;bottom:0}
}
@media (prefers-reduced-motion:reduce){
  .hero-vespa-stage{
    opacity:.985;
    will-change:auto;
  }
  .hero-vespa-stack,
  .hero-vespa-layer,
  .hero-vespa-wheel-motion{
    transform:none!important;
    animation:none!important;
    will-change:auto;
  }
}

/* v0.3.2.41 — static Tuscan landscape behind the homepage Vespa */
.hero-tuscany-backdrop{
  position:absolute;
  z-index:0;
  right:-1.5vw;
  bottom:-1px;
  width:min(62vw,960px);
  max-width:none;
  height:auto;
  opacity:.72;
  pointer-events:none;
  user-select:none;
  -webkit-user-drag:none;
  filter:saturate(.82) sepia(.05);
}
.hero-paper-grain{z-index:0}
.hero-copy{z-index:2}
.hero-vespa-stage{z-index:1}

@media (min-width:1600px){
  .hero-tuscany-backdrop{width:min(58vw,1040px);right:0}
}
@media (max-width:1023px){
  .hero-tuscany-backdrop{width:min(76vw,760px);right:-12vw;opacity:.62}
}
@media (max-width:767px){
  .hero-tuscany-backdrop{
    width:118vw;
    right:-58vw;
    bottom:0;
    opacity:.44;
  }
}
@media (max-width:420px){
  .hero-tuscany-backdrop{width:126vw;right:-66vw;opacity:.38}
}
@media (prefers-reduced-motion:reduce){
  .hero-tuscany-backdrop{transform:none!important}
}

/* v0.3.2.42 — preferred Vespa artwork + opaque foreground compositing */
.hero-vespa-stage{
  width:clamp(230px,23vw,360px);
}
.hero-vespa-shield{
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
}
.hero-vespa-base{
  position:relative;
  z-index:1;
  opacity:1;
}
.hero-vespa-layer{
  z-index:2;
}
/* These masks only cover loose fabric / jacket tail; heads, hair and scooter body stay in the solid base. */
.hero-vespa-veil{transform-origin:40% 29%;opacity:.96}
.hero-vespa-dress{transform-origin:39% 61%;opacity:.96}
.hero-vespa-jacket{transform-origin:54% 48%;opacity:.68}
.hero-vespa-wheel-motion{
  width:16%;
  opacity:.68;
}
.hero-vespa-wheel-rear{left:35.5%;top:75.1%}
.hero-vespa-wheel-front{left:79.2%;top:75.1%}
@media (max-width:767px){
  .hero-vespa-stage{width:clamp(180px,52vw,230px)}
  .hero-vespa-wheel-motion{opacity:.58}
}
@media (max-width:359px){
  .hero-vespa-stage{width:170px}
}
@media (prefers-reduced-motion:reduce){
  .hero-vespa-stage{opacity:1}
}


/* v0.3.2.44 — restrained Tuscan country strip: scenery stays at the bottom and never competes with hero copy */
.hero-tuscany-backdrop{
  left:0;
  right:auto;
  bottom:-1px;
  width:100vw;
  max-width:none;
  height:auto;
  opacity:.92;
  filter:none;
  transform:none;
  pointer-events:none;
}
.hero-copy{z-index:3}
.hero-vespa-stage{z-index:2}
.hero-tuscany-backdrop{z-index:1}
.hero-paper-grain{z-index:0}

@media (min-width:1600px){
  .hero-tuscany-backdrop{width:100vw;left:0;opacity:.94}
}
@media (min-width:768px) and (max-width:1199px){
  .hero-tuscany-backdrop{width:112vw;left:-12vw;opacity:.82}
}
@media (max-width:767px){
  .hero-tuscany-backdrop{
    width:170vw;
    left:-70vw;
    bottom:0;
    opacity:.62;
  }
}
@media (max-width:420px){
  .hero-tuscany-backdrop{width:178vw;left:-78vw;opacity:.56}
}
@media (prefers-reduced-motion:reduce){
  .hero-tuscany-backdrop{transform:none!important}
}


/* v0.3.2.44 compositing fix — no cream silhouette/box around the moving couple */
.hero-vespa-shield{display:none!important}
.hero-vespa-base{opacity:1!important}

/* v0.3.2.45 — minimal lower-hero Tuscany scene + cleaned foreground compositing */
.hero-tuscany-backdrop{
  left:auto;
  right:-1vw;
  bottom:-8px;
  width:min(58vw,980px);
  max-width:none;
  height:auto;
  opacity:.62;
  filter:saturate(.86) sepia(.03);
  transform:none;
  pointer-events:none;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.25) 18%,#000 52%);
  mask-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.25) 18%,#000 52%);
}
.hero-copy{z-index:3}
.hero-vespa-stage{z-index:2}
.hero-tuscany-backdrop{z-index:1}
.hero-paper-grain{z-index:0}

/* The base illustration is the complete opaque foreground. Motion layers now contain line detail only. */
.hero-vespa-base{opacity:1!important}
.hero-vespa-veil{opacity:.92}
.hero-vespa-dress{opacity:.88}
.hero-vespa-jacket{opacity:.58}

@media (min-width:1600px){
  .hero-tuscany-backdrop{width:min(56vw,1020px);right:0;bottom:-10px;opacity:.64}
}
@media (min-width:768px) and (max-width:1199px){
  .hero-tuscany-backdrop{width:min(70vw,760px);right:-10vw;bottom:-5px;opacity:.5}
}
@media (max-width:767px){
  .hero-tuscany-backdrop{
    width:108vw;
    right:-46vw;
    left:auto;
    bottom:0;
    opacity:.34;
    -webkit-mask-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.18) 24%,#000 58%);
    mask-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.18) 24%,#000 58%);
  }
}
@media (max-width:420px){
  .hero-tuscany-backdrop{width:116vw;right:-53vw;opacity:.3}
}
@media (prefers-reduced-motion:reduce){
  .hero-tuscany-backdrop{transform:none!important}
}

/* v0.3.2.47 — rebuilt homepage hero end sequence.
   One clean sprite rides across the cream hero, then crossfades into a single composed
   Tuscany/Borgo scene. This removes transparency seams, white patches and moving mask artefacts. */
.scene-hero{isolation:isolate}
.hero-paper-grain{z-index:0}
.hero-copy{position:relative;z-index:4;max-width:720px}

.hero-vespa-final-scene{
  position:absolute;
  z-index:1;
  left:5vw;
  bottom:0;
  width:90vw;
  max-width:none;
  height:auto;
  opacity:0;
  pointer-events:none;
  user-select:none;
  -webkit-user-drag:none;
  transition:opacity .42s ease;
}
.hero-vespa-settling .hero-vespa-final-scene,
.hero-vespa-settled .hero-vespa-final-scene{opacity:1}

.hero-vespa-stage{
  position:absolute;
  z-index:3;
  left:0;
  bottom:.6vw;
  width:42.5vw;
  max-width:760px;
  pointer-events:none;
  opacity:0;
  transform:translate3d(-120%,0,0);
  will-change:transform,opacity;
  transition:opacity .26s ease;
  backface-visibility:hidden;
  contain:layout paint style;
}
.hero-vespa-stack{
  position:relative;
  width:100%;
  transform-origin:50% 85%;
  backface-visibility:hidden;
  will-change:transform;
}
.hero-vespa-art{
  display:block;
  width:100%;
  height:auto;
  user-select:none;
  -webkit-user-drag:none;
  backface-visibility:hidden;
}
.hero-vespa-base{
  position:relative;
  z-index:1;
  opacity:1!important;
  filter:drop-shadow(0 8px 9px rgba(55,31,24,.04));
}
/* No independent veil/dress/jacket image masks in this version: those were the source of the visible blocks. */
.hero-vespa-layer,.hero-vespa-veil,.hero-vespa-dress,.hero-vespa-jacket,.hero-vespa-shield{display:none!important}

.hero-vespa-wheel-motion{
  position:absolute;
  z-index:2;
  width:15%;
  aspect-ratio:1;
  pointer-events:none;
  color:rgba(72,55,47,.28);
  opacity:.62;
  transform-origin:50% 50%;
  will-change:transform;
}
.hero-vespa-wheel-motion svg{width:100%;height:100%;display:block;overflow:visible}
.hero-vespa-wheel-spokes{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;vector-effect:non-scaling-stroke}
.hero-vespa-wheel-spokes circle{fill:rgba(240,233,224,.10);stroke-width:1.6}
.hero-vespa-wheel-rear{left:33.9%;top:75.7%}
.hero-vespa-wheel-front{left:80.4%;top:76.0%}

@media (min-width:1600px){
  .hero-vespa-final-scene{left:5vw;width:90vw}
  .hero-vespa-stage{width:42.5vw;max-width:760px;bottom:.5vw}
}
@media (min-width:768px) and (max-width:1199px){
  .hero-vespa-final-scene{left:1vw;width:104vw}
  .hero-vespa-stage{width:49vw;max-width:560px;bottom:.4vw}
}
@media (max-width:767px){
  .scene-hero{padding-bottom:42px}
  .hero-vespa-final-scene{
    left:-10vw;
    width:125vw;
    bottom:0;
  }
  .hero-vespa-stage{
    width:60vw;
    max-width:300px;
    bottom:2px;
  }
  .hero-vespa-wheel-motion{opacity:.52}
}
@media (max-width:420px){
  .hero-vespa-final-scene{left:-14vw;width:132vw}
  .hero-vespa-stage{width:62vw;max-width:270px}
}
@media (prefers-reduced-motion:reduce){
  .hero-vespa-stage{display:none!important}
  .hero-vespa-final-scene{opacity:1!important;transition:none!important}
}


/* v0.3.2.48 — locked final homepage hero repair.
   Existing HTML hero typography stays untouched. The lower hero contains only a minimal
   Borgo/Tuscany scene plus one clean cream-matched Vespa sprite with visible bride legs. */
.scene-hero{isolation:isolate}
.hero-paper-grain{z-index:0}
.hero-copy{position:relative;z-index:4;max-width:720px}
.hero-vespa-final-scene{display:none!important}
.hero-tuscany-backdrop{
  position:absolute;
  z-index:1;
  left:0;
  right:auto;
  bottom:0;
  width:100vw;
  max-width:none;
  height:auto;
  opacity:1;
  filter:none;
  transform:none;
  pointer-events:none;
  user-select:none;
  -webkit-user-drag:none;
  -webkit-mask-image:none;
  mask-image:none;
}
.hero-vespa-stage{
  position:absolute;
  z-index:3;
  left:0;
  bottom:0;
  width:clamp(350px,39vw,680px);
  max-width:none;
  pointer-events:none;
  opacity:0;
  transform:translate3d(-120%,0,0);
  will-change:transform,opacity;
  backface-visibility:hidden;
  contain:layout paint style;
}
.hero-vespa-stack{position:relative;width:100%;transform-origin:50% 86%;backface-visibility:hidden;will-change:transform}
.hero-vespa-art{display:block;width:100%;height:auto;user-select:none;-webkit-user-drag:none;backface-visibility:hidden}
.hero-vespa-base{position:relative;z-index:1;opacity:1!important;filter:none}
.hero-vespa-layer,.hero-vespa-veil,.hero-vespa-dress,.hero-vespa-jacket,.hero-vespa-shield,.hero-vespa-wheel-motion{display:none!important}
@media (min-width:1600px){
  .hero-vespa-stage{width:clamp(380px,38vw,700px)}
}
@media (min-width:768px) and (max-width:1199px){
  .hero-tuscany-backdrop{width:116vw;left:-4vw}
  .hero-vespa-stage{width:clamp(300px,46vw,500px)}
}
@media (max-width:767px){
  .scene-hero{padding-bottom:44px}
  .hero-tuscany-backdrop{width:145vw;left:-17vw;bottom:0}
  .hero-vespa-stage{width:clamp(205px,59vw,285px);bottom:0}
}
@media (max-width:420px){
  .hero-tuscany-backdrop{width:154vw;left:-22vw}
  .hero-vespa-stage{width:clamp(190px,61vw,255px)}
}
@media (prefers-reduced-motion:reduce){
  .hero-vespa-stage{display:block!important;opacity:1!important;will-change:auto}
  .hero-vespa-stack{transform:none!important;will-change:auto}
}

/* =========================================================
   v0.3.2.49 — site-wide responsive alignment and overflow QA
   - aligns the Celebrations hero as one centred composition
   - rationalises header/content offsets at phone, tablet and desktop widths
   - prevents long headings/cards from overflowing on small screens
   - stacks editorial grids before they become cramped
   - protects decorative elements, buttons and maps from edge collisions
   ========================================================= */

/* Core viewport safety */
html,body{max-width:100%;overflow-x:clip}
body{min-width:0}
main,.scene,.inner-main,.inner-hero,.page-shell,.prose-shell,
.editorial-split,.venue-feature,.story-grid,.feature-cards,.family-grid,
.allocation-section,.drive-grid,.airport-grid,.transport-section,.arrival-grid,
.longer-trip-callout,.destination-grid,.join-note,.travel-callout-inner{min-width:0}
:is(.editorial-split,.venue-feature,.story-grid,.feature-cards,.family-grid,
.allocation-section,.drive-grid,.airport-grid,.transport-section,.arrival-grid,
.longer-trip-callout,.destination-grid,.join-note,.travel-callout-inner)>*{min-width:0}
img,video,svg{max-width:100%;height:auto}
.page-shell{width:min(calc(100% - clamp(32px,5.5vw,76px)),var(--max))}
.button{max-width:100%;white-space:normal;text-align:center}
.section-heading,.prose-block,.compact-prose,.timeline-content{min-width:0}
.section-heading h2,.prose-block h2,.timeline-content h2,.feature-cards h2,.feature-cards h3,
.airport-card h3,.transport-card h2,.destination-card h2,.arrival-grid h2{
  overflow-wrap:normal;
  word-break:normal;
  text-wrap:balance;
}

/* Header: use the compact menu until the full desktop navigation genuinely fits. */
@media (max-width:1199px){
  .site-header{height:78px;padding-inline:clamp(20px,3.5vw,34px);gap:16px}
  .site-brand{font-size:clamp(25px,3.1vw,30px)}
  .menu-toggle{display:flex!important;margin-left:auto}
  .desktop-nav,.header-rsvp{display:none!important}
  .inner-main{padding-top:78px}
}
@media (min-width:1200px){
  .site-header{height:82px;padding-inline:clamp(34px,3.3vw,54px);gap:24px}
  .site-brand{font-size:32px}
  .menu-toggle{display:none!important}
  .desktop-nav,.header-rsvp{display:block!important}
  .desktop-nav-list{gap:clamp(20px,2vw,30px)!important}
  .inner-main{padding-top:82px}
}
@media (max-width:759px){
  .site-header{height:68px;padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right))}
  .site-brand{font-size:25px}
  .inner-main{padding-top:68px}
  .mobile-menu{padding:max(20px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left))}
  .mobile-nav-list{padding-top:clamp(28px,7vh,64px)}
  .mobile-nav-list a{font-size:clamp(31px,10vw,44px);padding:11px 0}
  .mobile-menu-foot{flex-wrap:wrap;align-items:flex-start}
}

/* All inner-page heroes: centre every line around the same axis and remove legacy mobile bars. */
.inner-hero{
  width:100%;
  min-height:clamp(340px,49svh,570px);
  padding:clamp(58px,6.5vw,92px) clamp(18px,5vw,72px);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  overflow:hidden;
}
.inner-hero>*{margin-left:auto;margin-right:auto}
.inner-hero .script-eyebrow{width:100%;text-align:center;margin-top:0}
.inner-hero h1{
  width:auto;
  max-width:min(100%,1220px);
  margin-inline:auto;
  text-align:center;
  line-height:.82;
  box-shadow:none!important;
  text-wrap:balance;
}
.inner-hero>p:last-of-type{
  width:min(100%,760px);
  margin-left:auto;
  margin-right:auto;
  text-align:center;
  line-height:1.5;
}
.inner-hero-wedding h1{font-size:clamp(62px,10vw,128px)}
.venue-hero h1{font-size:clamp(58px,9.2vw,118px);line-height:.82}
.stay-hero h1,.travel-hero h1,.tuscany-hero h1{font-size:clamp(66px,11vw,132px)}
.faq-hero h1{font-size:clamp(68px,11vw,120px)}

/* Celebrations hero: all five elements share one exact centre line. */
.weekend-hero{
  width:100%;
  min-height:0;
  padding:clamp(70px,5.5vw,92px) clamp(20px,4vw,64px) clamp(38px,3vw,46px);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  text-align:center;
}
.weekend-hero .script-eyebrow{
  width:100%;
  margin:0 auto 6px;
  text-align:center;
  font-size:clamp(42px,4.1vw,58px);
  line-height:1;
}
.weekend-hero h1{
  width:auto;
  max-width:calc(100vw - clamp(40px,7vw,112px));
  margin:0 auto;
  padding:0;
  display:flex;
  align-items:baseline;
  justify-content:center;
  gap:.20em;
  white-space:nowrap;
  text-align:center;
  font-size:clamp(72px,7.1vw,116px);
  line-height:.84;
  letter-spacing:0;
}
.weekend-hero h1 span{display:inline-block;margin:0;padding:0}
.weekend-hero>p:not(.script-eyebrow){
  width:min(100%,780px);
  margin:26px auto 0;
  text-align:center;
}
.weekend-hero-monogram{display:block;width:clamp(104px,7.5vw,136px);margin:27px auto 0}
.weekend-intro{width:min(calc(100% - 32px),780px);margin-inline:auto;text-align:center}
.weekend-intro p{max-width:100%;margin-inline:auto}
.weekend-calendar-action{text-align:center}

/* Editorial splits: do not force two columns before there is enough room. */
@media (max-width:959px){
  .scene-note,.scene-travel,.scene-venue-postcard,.scene-stay-teaser,
  .editorial-split,.venue-feature,.family-grid,.allocation-section,.drive-grid,
  .longer-trip-callout,.travel-callout-inner,.join-note{
    grid-template-columns:1fr!important;
  }
  .scene-note,.scene-travel,.scene-venue-postcard,.scene-stay-teaser{gap:clamp(38px,6vw,56px)}
  .note-copy,.print-photo,.travel-copy,.travel-postcards,.venue-collage,.venue-copy,
  .stay-teaser-copy,.stay-teaser-image,.editorial-photo,.venue-feature-photo,
  .family-grid figure,.longer-trip-callout figure{margin-left:auto;margin-right:auto}
  .travel-copy{text-align:center}
  .route-line{justify-content:center}
  .travel-callout-inner .button{justify-self:start}
  .join-note .paper-note{width:min(100%,620px);margin-inline:auto}
}

/* Grids use practical breakpoints rather than squeezing cards. */
@media (max-width:639px){
  .feature-cards,.stay-feature-cards,.venue-feature-cards,.airport-grid,.transport-section,
  .arrival-grid,.destination-grid{grid-template-columns:1fr!important}
  .venue-feature-cards article:last-child{grid-column:auto!important}
}
@media (min-width:640px) and (max-width:959px){
  .feature-cards,.stay-feature-cards,.venue-feature-cards{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .venue-feature-cards article:last-child{grid-column:1/-1}
  .airport-grid,.transport-section,.arrival-grid{grid-template-columns:1fr!important}
  .destination-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media (min-width:760px) and (max-width:899px){
  .story-grid{grid-template-columns:1fr!important}
  .story-card + .story-card{border-left:0;border-top:1px solid rgba(36,31,28,.13)}
  .celebration-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:14px!important}
  .celebration-grid .weekend-card{border:1px solid rgba(36,31,28,.13)!important;min-height:0}
  .celebration-grid .weekend-card:last-child{grid-column:1/-1}
}
@media (min-width:900px){
  .celebration-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
}

/* Celebration hero switches to a deliberate two-line title before it can become cramped. */
@media (max-width:899px){
  .weekend-hero{padding-top:clamp(60px,7vw,76px);padding-bottom:34px}
  .weekend-hero .script-eyebrow{font-size:clamp(36px,7vw,48px);margin-bottom:8px}
  .weekend-hero h1{
    max-width:min(100%,700px);
    flex-direction:column;
    align-items:center;
    gap:0;
    white-space:normal;
    font-size:clamp(56px,9.6vw,82px);
    line-height:.84;
  }
  .weekend-hero>p:not(.script-eyebrow){max-width:560px;margin-top:21px}
  .weekend-hero-monogram{width:clamp(92px,13vw,118px);margin-top:22px}
}

/* Phone sizing and spacing. */
@media (max-width:759px){
  .page-shell{width:min(calc(100% - 32px),var(--max))}
  .inner-hero{min-height:clamp(300px,42svh,380px);padding:46px 16px 40px}
  .inner-hero .script-eyebrow{font-size:clamp(31px,9vw,41px)}
  .inner-hero h1{font-size:clamp(48px,14vw,68px);line-height:.86}
  .inner-hero-wedding h1{font-size:clamp(46px,13.2vw,64px)}
  .venue-hero h1{font-size:clamp(43px,12vw,58px);line-height:.84}
  .stay-hero h1,.travel-hero h1,.tuscany-hero h1{font-size:clamp(55px,16vw,72px)}
  .faq-hero h1{font-size:clamp(58px,17vw,74px)}
  .inner-hero>p:last-of-type{font-size:9.5px;letter-spacing:.11em;line-height:1.5;margin-top:18px}

  .weekend-hero{padding:50px 16px 28px}
  .weekend-hero .script-eyebrow{font-size:clamp(33px,9.2vw,42px)}
  .weekend-hero h1{font-size:clamp(43px,12vw,56px);line-height:.88}
  .weekend-hero>p:not(.script-eyebrow){font-size:9.5px;line-height:1.5;letter-spacing:.10em;max-width:330px;margin-top:18px}
  .weekend-hero-monogram{width:94px;margin-top:20px}
  .weekend-intro{width:min(calc(100% - 32px),680px);padding:28px 0 14px}
  .weekend-intro p{font-size:18px;line-height:1.52}
  .weekend-calendar-action{width:min(calc(100% - 32px),680px);padding-bottom:44px}

  .section-heading{max-width:100%;overflow:visible}
  .section-heading .script-eyebrow{font-size:clamp(30px,8.8vw,38px)}
  .section-heading h2{max-width:100%;font-size:clamp(40px,11.2vw,54px);line-height:.9;text-wrap:balance}
  .stay-details .section-heading h2{font-size:clamp(36px,10.3vw,48px)}

  .editorial-split,.venue-feature{padding-block:clamp(62px,10vw,74px);gap:36px}
  .prose-block h2{font-size:clamp(40px,11.5vw,56px);line-height:.95}
  .prose-block p:not(.section-kicker){font-size:18px;line-height:1.6}
  .editorial-photo,.paper-note{transform:none!important}

  .timeline-day{grid-template-columns:58px minmax(0,1fr);gap:15px;padding:34px 0}
  .timeline-date{width:56px;height:74px}
  .timeline-date span{font-size:34px}
  .timeline-day h2{font-size:clamp(31px,9vw,38px);line-height:.98}
  .timeline-content>p:not(.section-kicker){font-size:17px;line-height:1.6}
  .dress-card{padding:21px 18px}
  .dress-card h3{font-size:clamp(27px,8vw,34px)}
  .event-tags{gap:6px}
  .event-tags span{font-size:8px;padding:6px 8px}

  .departure-section{padding:64px 0}
  .departure-section-inner{grid-template-columns:64px minmax(0,1fr);gap:15px}
  .departure-date.big{padding-right:12px}
  .departure-date.big strong{font-size:45px}
  .departure-section h2{font-size:clamp(35px,9.5vw,46px)}

  .venue-image-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .venue-image-grid img{min-width:0}
  .venue-feature-cards article,.stay-feature-cards article,.transport-card,.airport-card>div,.destination-card>div{padding-left:21px;padding-right:21px}

  .travel-map-links{display:grid;grid-template-columns:1fr;justify-items:center;gap:10px;padding-inline:8px}
  .map-actions{display:flex;flex-wrap:wrap;gap:10px 16px}
  .travel-route-card{padding:23px 19px}
  .travel-route-card li{grid-template-columns:42px minmax(0,1fr);gap:6px}
  .travel-route-card span{font-size:28px}
  .travel-route-card strong{font-size:19px}

  .destination-card h2{font-size:clamp(37px,11vw,46px)}
  .faq-question{font-size:clamp(20px,6vw,23px);line-height:1.18;gap:14px}
  .faq-answer-inner{max-width:100%}

  .save-card{width:min(calc(100% - 32px),840px);padding:64px 22px 54px}
  .save-card h2,.stay-bottom-card h2{font-size:clamp(40px,11.5vw,56px)}
  .save-card-seal{width:96px;height:96px;right:10px;top:-44px}
  .rsvp-paper-seal{width:96px;height:96px;right:8px;top:-42px}

  .venue-collage{height:clamp(390px,118vw,520px);max-width:520px}
  .venue-main{height:68%;max-height:350px}
  .venue-small{height:42%;max-height:220px}
  .scene-countdown{padding:88px 12px}
  .countdown{width:100%;margin-bottom:36px}
  .countdown div{padding-inline:3px}
  .countdown strong{font-size:clamp(30px,9.2vw,45px)}
  .countdown span{font-size:6.5px;letter-spacing:.08em}
  .countdown-stamp{display:none}

  .footer-links{gap:9px 14px;padding-inline:4px}
  .footer-links a{font-size:9px;letter-spacing:.11em}
}

/* Extra-small phones: favour wrapping and readable content over decorative scale. */
@media (max-width:374px){
  .page-shell{width:min(calc(100% - 28px),var(--max))}
  .site-brand{font-size:22px}
  .inner-hero h1{font-size:46px}
  .inner-hero-wedding h1{font-size:42px}
  .venue-hero h1{font-size:40px}
  .weekend-hero h1{font-size:40px}
  .section-heading h2{font-size:38px}
  .stay-details .section-heading h2{font-size:34px}
  .prose-block h2{font-size:38px}
  .button{padding-inline:16px;font-size:10px;letter-spacing:.105em}
  .timeline-day{grid-template-columns:52px minmax(0,1fr);gap:12px}
  .timeline-date{width:50px;height:70px}
  .departure-section-inner{grid-template-columns:58px minmax(0,1fr);gap:12px}
  .departure-date.big strong{font-size:41px}
  .venue-image-grid{grid-template-columns:1fr}
  .mobile-menu-foot{font-size:9.5px}
}

/* Tablet landscape / small laptop: keep card text comfortable and title lines controlled. */
@media (min-width:960px) and (max-width:1199px){
  .editorial-split,.venue-feature,.family-grid,.allocation-section,.drive-grid,.longer-trip-callout{gap:clamp(42px,5vw,64px)}
  .story-card{padding-inline:30px}
  .feature-cards article{padding-inline:22px}
  .airport-card>div,.transport-card{padding-inline:24px}
  .weekend-hero h1{font-size:clamp(72px,7.8vw,96px)}
}

/* Very wide screens: retain deliberate line lengths rather than stretching compositions. */
@media (min-width:1600px){
  .page-shell{max-width:1240px}
  .inner-hero{min-height:560px}
  .weekend-hero h1{font-size:116px}
  .weekend-hero .script-eyebrow{font-size:58px}
  .prose-block p:not(.section-kicker){max-width:700px}
}

/* =========================================================
   v0.3.2.50 — homepage hero vertical composition
   - fills the viewport instead of ending early
   - gives desktop art/copy more breathing room
   - keeps the Vespa/Borgo scene below the CTA on phones
   - preserves the approved hero artwork, animation and copy
   ========================================================= */
.home-main .scene-hero{
  min-height:100svh;
  padding:clamp(198px,24svh,232px) 22px clamp(24px,3svh,38px);
  justify-content:flex-start;
}
.home-main .scene-hero .hero-copy{
  width:min(100%,720px);
  margin:0 auto;
}
.home-main .scene-hero .hero-tuscany-backdrop{
  bottom:-4px;
}
.home-main .scene-hero .hero-vespa-stage{
  bottom:-2px;
  width:clamp(340px,36vw,640px);
}

@media (min-width:1600px){
  .home-main .scene-hero{
    min-height:100svh;
    padding-top:clamp(210px,24svh,250px);
  }
  .home-main .scene-hero .hero-vespa-stage{width:clamp(360px,35vw,660px)}
}

@media (min-width:760px) and (max-width:1199px){
  .home-main .scene-hero{
    min-height:max(100svh,760px);
    padding:clamp(160px,18svh,190px) 22px 28px;
  }
  .home-main .scene-hero .hero-copy{width:min(100%,680px)}
  .home-main .scene-hero .hero-vespa-stage{
    width:clamp(285px,43vw,455px);
    bottom:-2px;
  }
  .home-main .scene-hero .hero-tuscany-backdrop{bottom:-2px}
}

@media (max-width:759px){
  .home-main .scene-hero{
    min-height:max(100svh,720px);
    padding:clamp(145px,18svh,168px) 16px 20px;
    justify-content:flex-start;
  }
  .home-main .scene-hero .hero-copy{
    width:min(100%,390px);
    margin-inline:auto;
  }
  .home-main .scene-hero .hero-copy .script-eyebrow{
    font-size:clamp(38px,10.8vw,46px);
    line-height:1;
    margin-bottom:-5px;
  }
  .home-main .scene-hero h1{
    font-size:clamp(68px,19vw,82px);
    line-height:.80;
    letter-spacing:.02em;
  }
  .home-main .scene-hero .hero-rule{margin:27px auto 21px}
  .home-main .scene-hero .hero-date{font-size:18px;line-height:1.2}
  .home-main .scene-hero .hero-venue{
    max-width:340px;
    margin:15px auto 23px;
    font-size:9px;
    line-height:1.65;
  }
  .home-main .scene-hero .button{
    min-height:52px;
    max-width:min(100%,330px);
    padding:13px 22px;
  }
  .home-main .scene-hero .hero-vespa-stage{
    width:clamp(215px,58vw,275px);
    bottom:-2px;
  }
  .home-main .scene-hero .hero-tuscany-backdrop{
    width:145vw;
    left:-17vw;
    bottom:-2px;
  }
}

@media (max-width:420px){
  .home-main .scene-hero{
    min-height:max(100svh,710px);
    padding-top:clamp(140px,18svh,158px);
  }
  .home-main .scene-hero h1{font-size:clamp(66px,18.7vw,78px)}
  .home-main .scene-hero .hero-vespa-stage{width:clamp(205px,59vw,255px)}
  .home-main .scene-hero .hero-tuscany-backdrop{width:150vw;left:-20vw}
}

/* Short landscape screens still get enough vertical room for the composition to breathe. */
@media (min-width:760px) and (max-height:620px){
  .home-main .scene-hero{
    min-height:720px;
    padding-top:145px;
  }
}
