:root{--wine:#a64144;--body:#70645f;--gold:#bc9855;--serif:'Cormorant Garamond',Georgia,serif;--script:'Armelie',cursive;--sans:'DM Sans',Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--body);font:24px/1.75 var(--serif);background:radial-gradient(ellipse at 10% 25%,#dce9dfaa,transparent 60%),radial-gradient(ellipse at 45% 12%,#d6e4edbb,transparent 52%),radial-gradient(ellipse at 90% 80%,#f5d8c68c,transparent 55%),#f8f1e3;background-attachment:fixed}body:before{content:'';pointer-events:none;position:fixed;inset:0;z-index:50;opacity:.045;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23513b26' filter='url(%23n)' opacity='.5' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:400}h1,h2,h3,.amp{font-family:var(--script);color:var(--wine);line-height:1.25}h2{font-size:clamp(52px,5.2vw,86px);margin:18px auto 50px}h3{font-size:clamp(35px,3.3vw,53px)}button,input,textarea{font:inherit}button,a,input,textarea{outline-offset:5px}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--wine)}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}.eyebrow{font-family:var(--sans);font-size:13px;font-weight:400;letter-spacing:.26em;line-height:1.7}.gold{color:var(--gold)}.section{text-align:center;padding:90px 7%;position:relative}.hero{height:100svh;min-height:740px;display:grid;place-items:center;text-align:center;background:#f5ded1 url('reference-hero.png') center/cover no-repeat;position:relative}.hero-inner{padding:50px 20px;position:relative}.monogram{width:118px;height:118px;border:1px solid #c8a77870;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:62px;color:#b86e6e;position:relative;margin:0 auto 25px;background:#fff8ee35;box-shadow:0 0 0 5px #fff8ee50,0 0 0 6px #c8a77830}.monogram:before,.monogram:after{content:'❧';font-size:43px;color:#889977;position:absolute;left:-18px;top:24px;transform:rotate(-80deg)}.monogram:after{left:auto;right:-18px;transform:rotate(100deg)}.monogram i{font-size:26px;margin:0 -10px;transform:translateY(8px)}.hero .eyebrow{color:var(--wine);font-family:var(--serif);font-size:21px;letter-spacing:.34em;margin-bottom:20px}.hero h1{font-size:clamp(85px,8.3vw,155px);line-height:1.08}.hero h1 em{display:block;font-size:.32em;line-height:1.35;margin:9px 0;font-weight:400}.scroll-cue{font-family:var(--sans);font-size:13px;letter-spacing:.3em;display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:45px;color:#775957}.scroll-cue span{height:40px;width:1px;background:#ad8580}.floral-ornament{width:300px;height:100px;margin:0 auto 30px;display:flex;justify-content:center;align-items:center}.floral-ornament img{width:100%;height:100%;object-fit:contain}.floral-ornament.garland{width:450px;height:190px;margin-bottom:-20px}.story>.eyebrow{color:#8a9e88}.story{padding-top:65px}.chapters{max-width:1000px;margin:auto}.chapters article{margin:65px auto 80px}.chapters h3{color:#935763;margin-bottom:24px}.chapters p{max-width:930px;margin:auto;line-height:1.9}.moments{overflow:hidden;padding-left:0;padding-right:0;padding-top:35px}.moments>h2{margin-bottom:25px}.coverflow{height:540px;position:relative;max-width:1600px;margin:auto;perspective:1400px;touch-action:pan-y;overflow:hidden}.slide{position:absolute;left:50%;top:20px;width:370px;height:500px;margin-left:-185px;padding:0;border:0;border-radius:14px;overflow:hidden;background:#eee2d4;transform:translateX(calc(var(--offset)*235px)) scale(calc(1 - var(--distance)*.09));transform-origin:center center;transition:transform .65s ease,filter .65s ease;filter:brightness(calc(1 - var(--distance)*.05));box-shadow:0 8px 30px #5749320c}.slide img{width:100%;height:100%;object-fit:cover}.photo-placeholder{height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;background:linear-gradient(140deg,#d6e4d8,#f0e5d8 65%,#e5c8c7);color:#8f7971;gap:20px;border:1px solid #cab693}.photo-placeholder>.monogram{opacity:.6}.photo-placeholder>span{font-family:var(--script);font-size:35px}.photo-placeholder small{font-family:var(--sans);font-size:11px;letter-spacing:.1em}.gallery-nav{display:flex;align-items:center;justify-content:center;gap:25px;margin:25px auto}.round{width:40px;height:40px;border:1px solid var(--gold);border-radius:50%;background:transparent;color:#8d693b;font-size:23px;line-height:1;display:inline-grid;place-items:center}.dots{display:flex;gap:12px}.dots button{border:0;width:11px;height:11px;padding:0;background:#d7ada8;border-radius:50%;position:relative}.dots button:before{content:'';position:absolute;inset:-10px}.dots button[aria-pressed=true]{background:var(--wine)}.film-slot{font-size:18px;max-width:550px;margin:25px auto}.film-slot summary{cursor:pointer;color:#976369;list-style:none;border-bottom:1px solid #bc985550;display:inline-block}.film-slot p{margin-top:20px}.film-slot video{width:100%;margin-top:25px}.invitation{padding-top:90px;padding-bottom:120px}.invitation h2{margin-bottom:15px}.invitation h3{font-size:clamp(70px,6.5vw,105px);margin:45px 0 0}.full-name{font-size:20px;color:#9b7740;letter-spacing:.03em}.amp{font-size:47px;display:block;margin:35px 0 0}.blessings{margin-top:45px}.blessings>.eyebrow{font-size:11px;margin-bottom:12px}.blessings>p:not(.eyebrow){font-size:24px}.blessings>p:last-child{font-size:20px}.reveal{padding-top:50px;min-height:880px}.reveal h2{font-size:clamp(45px,4.8vw,78px);margin-bottom:25px}.heart{position:relative;width:500px;max-width:100%;aspect-ratio:1;margin:auto}.hidden-date{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 640'%3E%3Cpath d='M320 590 C275 545 38 385 38 210 C38 58 239 30 320 163 C401 30 602 58 602 210 C602 385 365 545 320 590Z' fill='%23efdfbd' stroke='%23bc9855' stroke-width='1'/%3E%3C/svg%3E") center/contain no-repeat;padding-bottom:15px;color:#9b6938}.hidden-date span{font-size:13px;font-family:var(--sans);letter-spacing:.17em}.hidden-date strong{font-family:var(--script);font-size:60px;font-weight:400;margin:15px 0;color:var(--wine)}canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair;transition:opacity .5s}canvas.revealed{opacity:0;pointer-events:none}.text-button{border:0;border-bottom:1px solid #b59d7560;background:transparent;color:#8e655c;font-family:var(--serif);font-size:17px;padding:6px 3px;min-height:40px}.heart.sparkle:after{content:'✧';position:absolute;right:4%;top:20%;font-size:55px;color:var(--gold);animation:sparkle 1.4s both;pointer-events:none}@keyframes sparkle{0%,100%{opacity:0}40%{opacity:1}}.countdown{min-height:760px;padding-top:40px}.clock-frame{width:min(930px,100%);aspect-ratio:2.55;position:relative;margin:65px auto 0}.clock-frame>img{position:absolute;width:100%;height:100%;object-fit:fill;pointer-events:none}#clock{position:absolute;inset:26% 14%;display:flex;justify-content:center;align-items:center}#clock>div{width:25%;position:relative;line-height:1.2}#clock>div:not(:last-child):after{content:'';position:absolute;right:0;top:30%;height:42%;width:1px;background:var(--gold)}#clock strong{display:block;color:#94555f;font:400 65px/1.15 var(--serif);font-variant-numeric:tabular-nums}#clock span{font:11px var(--sans);letter-spacing:.22em;text-transform:uppercase;display:block;margin-top:12px}.time-note{font-size:16px;margin-top:24px;color:#88786c}.celebrations{padding-top:45px}.event-invitations{display:flex;flex-direction:column;gap:65px;align-items:center}.event-invitation{width:min(740px,100%);aspect-ratio:.5;min-height:1050px;background:url('event-background.png') center/100% 100% no-repeat;border-radius:16px;box-shadow:0 8px 28px #58432d24;position:relative;overflow:hidden}.event-copy{position:absolute;inset:26% 16% auto;text-align:center;color:#9d3d2e}.event-copy h3{font-size:clamp(48px,5vw,76px);color:#9a352b}.event-date{font-size:25px;text-transform:uppercase;line-height:1.4;margin:22px auto 14px}.event-schedule{margin:15px auto 24px}.event-schedule p{line-height:1.5;font-size:21px}.event-schedule span{margin-right:12px}.event-schedule strong{font-weight:500}.event-copy .eyebrow{font:12px var(--serif);letter-spacing:.14em;margin-top:22px}.event-venue{font-size:23px;text-transform:uppercase;line-height:1.4;margin:8px auto 20px}.pill{display:inline-flex;background:#9c392b;color:#fff9e9;border-radius:30px;padding:10px 22px;font:11px var(--serif);font-weight:600;letter-spacing:.03em;min-height:40px;align-items:center}.save-date{display:block;margin:10px auto;font-size:14px;color:#8d4236}.bhog{filter:saturate(.73)}.jaggo{filter:saturate(1.07)}.event-invitation.wedding .event-copy{top:22%}.reception{background-image:linear-gradient(#13253c99,#13253c00),url('reception.png');color:#fff4dd}.reception .event-copy{color:#fff4dd;top:19%}.reception h3{color:#fff4dd}.reception .save-date{color:#fff4dd}.reception .pill{background:#f2dfbe;color:#684d35}.map-note{font-size:15px;max-width:500px;margin:35px auto 0}.family{padding-bottom:45px}.family h2{margin-bottom:50px}.family-columns{display:flex;max-width:850px;margin:auto;justify-content:center}.family-columns>div{width:50%;padding:0 35px}.family-columns>div+div{border-left:1px solid #c6a96866}.family-columns .eyebrow{font-size:11px;letter-spacing:.16em;border-bottom:1px solid #c6a96866;padding-bottom:20px;margin-bottom:22px;color:#ac6667}.family-columns p:not(.eyebrow){font-size:23px}.rsvp{padding-top:60px;padding-bottom:70px}.rsvp-panel{max-width:650px;margin:auto;padding:45px 40px;border:1px solid #d0ab755e;border-radius:15px;background:#fffaf480;box-shadow:0 12px 45px #71552e04}.rsvp-panel .floral-ornament{width:210px;height:70px;margin-bottom:20px}.rsvp h2{margin:0 auto 20px;font-size:77px}.rsvp-panel>p{font-size:20px;line-height:1.65}form{text-align:left;margin-top:40px}form>label,legend{display:block;font:11px var(--serif);letter-spacing:.12em;margin-bottom:10px}input:not([type=checkbox]),textarea{border:0;border-bottom:1px solid #c9a15d88;background:transparent;width:100%;padding:8px 0;font-family:var(--serif);font-size:20px;color:#69504b;margin-bottom:28px;border-radius:0}input::placeholder,textarea::placeholder{color:#a09488}.stepper{display:flex;align-items:center;gap:15px;margin-bottom:28px}.stepper input{width:38px;margin:0;border:0;text-align:center;appearance:textfield;padding:0}.stepper input::-webkit-inner-spin-button{appearance:none}.stepper .round{width:40px;height:40px;font-size:20px}fieldset{border:0;padding:0;margin:0 0 25px}fieldset label{display:flex;align-items:center;gap:12px;font-size:18px;min-height:35px}input[type=checkbox]{width:18px;height:18px;accent-color:#a64144;margin:0}.submit{border:0;background:#9e4244;color:#fff8ed;width:100%;min-height:49px;font:14px var(--serif);letter-spacing:.06em;border-radius:2px;margin-top:10px}.form-note{font-size:13px;line-height:1.5;margin:13px 0;text-align:center}.form-status,.wish-status{font-size:18px;line-height:1.5}.form-status:empty,.wish-status:empty{display:none}#clear{font-size:13px;display:block;margin:15px auto 0}.wishes{padding-top:35px}.wishes form{max-width:530px;margin:0 auto}.wishes input,.wishes textarea{border:1px solid #d0ab7544;background:#fffaf480;padding:12px 15px;margin-bottom:16px;border-radius:4px}.counter{text-align:right;font-size:13px}.guest-wishes{font-size:20px;max-width:700px;margin:35px auto}.guest-wishes blockquote{margin:25px 0}.guest-wishes cite{display:block;font-size:16px}footer{text-align:center;padding:70px 20px 35px;background:#f5ecdf40}footer>.eyebrow{font-size:10px;margin-bottom:28px}footer>p:not(.eyebrow){font-size:22px;line-height:1.8}footer .monogram{width:76px;height:76px;font-size:43px;margin:38px auto 25px}footer .monogram i{font-size:19px}footer .monogram:before,footer .monogram:after{font-size:30px;top:14px;left:-14px}footer .monogram:after{left:auto;right:-14px}footer h2{font-size:65px;margin:0 auto 40px}.back-top{display:block;width:1px;height:50px;background:#bb985166;margin:auto}.music{position:fixed;right:28px;bottom:28px;border:1px solid var(--wine);border-radius:50%;height:60px;width:60px;background:#fcf7eded;color:var(--wine);font-size:27px;z-index:30}.music-status{position:fixed;right:28px;bottom:95px;background:#fff7e9;border:1px solid #bc985555;padding:12px 18px;font:14px var(--sans);z-index:30;max-width:240px}.skip{position:fixed;top:-100px;background:white;padding:12px;z-index:100}.skip:focus{top:10px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}dialog{border:1px solid var(--gold);background:#faf3e7;color:var(--body);max-width:94vw;max-height:94svh;padding:55px 20px 20px}dialog::backdrop{background:#34282cdb}dialog img{max-height:70svh;width:auto;margin:auto}dialog p{font-size:18px;text-align:center}.close{position:absolute;right:10px;top:10px}@media(max-width:760px){body{font-size:20px}.section{padding:65px 6%}.hero{min-height:740px;background-size:auto 100%}.hero-inner{padding:40px 28px}.hero .monogram{width:92px;height:92px;font-size:50px;margin-bottom:35px}.hero .eyebrow{font-size:13px;letter-spacing:.26em;max-width:290px;margin:0 auto 30px}.hero h1{font-size:clamp(78px,19vw,110px)}.hero h1 em{margin:15px 0}.scroll-cue{font-size:10px;margin-top:45px}.floral-ornament.garland{width:310px;max-width:100%;height:150px;margin-bottom:-5px}.floral-ornament{width:220px;height:80px;margin-bottom:22px}.eyebrow{font-size:10px;letter-spacing:.2em}h2{font-size:48px;margin-bottom:35px}.chapters article{margin:40px auto 50px}.chapters h3{font-size:35px;line-height:1.4}.chapters p{font-size:20px;line-height:1.75}.moments{padding-left:0;padding-right:0}.coverflow{height:370px}.slide{width:245px;height:330px;margin-left:-122.5px;transform:translateX(calc(var(--offset)*150px)) scale(calc(1 - var(--distance)*.11));border-radius:9px}.photo-placeholder>span{font-size:27px}.photo-placeholder .monogram{width:85px;height:85px;font-size:46px}.photo-placeholder small{font-size:10px}.gallery-nav{gap:12px;margin-top:10px}.dots{gap:11px}.dots button{width:8px;height:8px}.gallery-nav .round{width:36px;height:36px}.film-slot{padding:0 7%;font-size:17px}.invitation h2{font-size:45px}.invitation h3{font-size:74px;margin-top:40px}.full-name{font-size:18px}.blessings>p:not(.eyebrow){font-size:21px}.amp{font-size:36px;margin-top:25px}.reveal{min-height:0}.reveal h2{font-size:43px;line-height:1.3}.heart{width:340px}.hidden-date strong{font-size:40px}.hidden-date span{font-size:10px}.countdown{min-height:0;padding-left:3%;padding-right:3%}.countdown h2{font-size:43px}.clock-frame{aspect-ratio:2.35;margin-top:35px}#clock{inset:24% 13%}#clock strong{font-size:30px}#clock span{font-size:7px;letter-spacing:.12em;margin-top:8px}.time-note{font-size:13px}.celebrations{padding-left:7%;padding-right:7%}.celebrations h2{font-size:46px}.event-invitations{gap:35px}.event-invitation{width:100%;min-height:0;aspect-ratio:.455;border-radius:10px}.event-copy{inset:27% 14% auto}.event-copy h3{font-size:36px;line-height:1.1}.event-date{font-size:17px;margin:15px auto 10px}.event-schedule{margin:10px auto 16px}.event-schedule p{font-size:15px}.event-schedule span{display:block;margin:0}.event-copy .eyebrow{font-size:9px;margin-top:12px}.event-venue{font-size:15px;margin:7px auto 12px}.pill{font-size:9px;min-height:34px;padding:9px 15px}.save-date{font-size:12px;min-height:35px;margin:5px auto}.event-invitation.wedding{aspect-ratio:.4}.event-invitation.wedding .event-copy{top:24%}.event-invitation.reception .event-copy{top:20%}.map-note{font-size:13px}.family-columns{flex-direction:column;align-items:center;gap:35px}.family-columns>div{width:100%;max-width:340px;padding:0 20px}.family-columns>div+div{border:0}.family-columns .eyebrow{padding-bottom:15px;margin-bottom:15px}.family h2{font-size:44px}.family-columns p:not(.eyebrow){font-size:24px}.rsvp-panel{padding:35px 22px;border-radius:12px}.rsvp h2{font-size:64px}.rsvp-panel>p{font-size:18px}.rsvp-panel .floral-ornament{width:190px;height:65px}.rsvp form{margin-top:30px}fieldset label{font-size:17px;min-height:40px}.submit{font-size:12px;min-height:48px}.wishes h2{font-size:46px}footer h2{font-size:53px}footer>p:not(.eyebrow){font-size:18px}footer{padding:60px 8% 35px}.music{height:48px;width:48px;right:16px;bottom:16px;font-size:23px}.music-status{bottom:75px;right:16px}.form-note{font-size:12px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

/* A soft petal shower over the opening illustration. */
.hero{overflow:hidden;isolation:isolate}.hero-inner{z-index:2}
.falling-petals{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1;contain:paint}
.petal-track{position:absolute;left:var(--left);top:-35px;width:var(--size);height:calc(var(--size)*1.3);opacity:0;animation:petal-fall var(--fall) linear var(--delay) infinite;will-change:transform}
.petal-track i{display:block;width:100%;height:100%;border-radius:80% 12% 70% 25%;background:radial-gradient(ellipse at 25% 20%,#f9d8da 0%,#e7a6b1 48%,#c87b90 100%);box-shadow:inset 1px 0 2px #fff4df66;animation:petal-turn var(--sway) ease-in-out var(--delay) infinite alternate;transform:rotate(var(--turn))}
@keyframes petal-fall{0%{transform:translate3d(0,-30px,0);opacity:0}8%{opacity:var(--alpha)}88%{opacity:var(--alpha)}100%{transform:translate3d(var(--drift),calc(100svh + 100px),0);opacity:0}}
@keyframes petal-turn{0%{transform:translateX(-14px) rotate(var(--turn)) rotateY(0deg)}100%{transform:translateX(14px) rotate(calc(var(--turn) + 95deg)) rotateY(65deg)}}
.falling-petals.paused .petal-track,.falling-petals.paused .petal-track i{animation-play-state:paused}
@media(max-width:760px){.petal-track:nth-child(n+15){display:none}@keyframes petal-fall{0%{transform:translate3d(0,-30px,0);opacity:0}8%{opacity:var(--alpha)}88%{opacity:var(--alpha)}100%{transform:translate3d(var(--drift),max(850px,calc(100svh + 100px)),0);opacity:0}}}
@media(prefers-reduced-motion:reduce){.falling-petals{display:none}}

/* Fluid composition from small phones through wide desktop screens. */
:root{--page-gutter:clamp(18px,5vw,100px);--section-space:clamp(54px,7vw,110px);--slide-width:clamp(210px,29vw,370px);--slide-height:clamp(300px,39vw,500px);--slide-step:clamp(132px,18vw,235px)}
body{font-size:clamp(18px,1.65vw,25px)}
.section{padding:var(--section-space) var(--page-gutter)}
.hero{height:auto;min-height:100svh;padding:clamp(34px,5vh,72px) 0}
.hero-inner{width:100%;padding:clamp(25px,4vh,60px) var(--page-gutter)}
.hero h1{font-size:clamp(70px,10vw,155px);line-height:1.12;overflow-wrap:normal}
.hero .eyebrow{font-size:clamp(11px,1.35vw,21px);letter-spacing:clamp(.13em,.32vw,.34em)}
.monogram{width:clamp(85px,8vw,118px);height:clamp(85px,8vw,118px);font-size:clamp(44px,4.4vw,62px)}
.section h2{font-size:clamp(42px,5.4vw,86px);max-width:1100px;line-height:1.3}
.chapters h3{font-size:clamp(32px,3.5vw,53px)}
.chapters p{font-size:clamp(18px,1.65vw,25px)}
.floral-ornament{width:min(300px,75vw);height:clamp(70px,8vw,100px)}
.floral-ornament.garland{width:min(450px,86vw);height:clamp(140px,16vw,190px)}
.moments{padding-left:0;padding-right:0}.moments>.eyebrow,.moments>h2{padding-inline:var(--page-gutter)}
.coverflow{height:calc(var(--slide-height) + 40px);width:100%}
.slide{width:var(--slide-width);height:var(--slide-height);margin-left:calc(var(--slide-width)/-2);transform:translateX(calc(var(--offset)*var(--slide-step))) scale(calc(1 - var(--distance)*.09))}
.gallery-nav{gap:clamp(8px,2vw,25px)}.dots{gap:clamp(9px,1.2vw,14px)}
.invitation h3{font-size:clamp(62px,7.4vw,105px)}
.heart{width:clamp(280px,38vw,500px);max-width:100%}
.hidden-date strong{font-size:clamp(37px,4.5vw,60px)}
.countdown,.reveal{min-height:0}
.clock-frame{width:min(930px,100%);aspect-ratio:2.55;margin-top:clamp(30px,5vw,65px);container-type:inline-size}
#clock strong{font-size:clamp(27px,7.2cqi,65px)}#clock span{font-size:clamp(8px,1.3cqi,12px);letter-spacing:.12em}
.event-invitations{gap:clamp(35px,5vw,70px)}
.event-invitation,.event-invitation.wedding{width:min(740px,100%);min-height:0;aspect-ratio:auto;container-type:inline-size}
.event-copy,.event-invitation.wedding .event-copy,.event-invitation.reception .event-copy{position:relative;inset:auto;padding:50% 14% 76%;width:100%;min-width:0}
.event-copy h3{font-size:clamp(34px,10cqi,76px);line-height:1.2;overflow-wrap:normal}
.event-date{font-size:clamp(16px,3.8cqi,27px)}
.event-schedule p{font-size:clamp(16px,3.2cqi,24px)}
.event-venue{font-size:clamp(16px,3.4cqi,25px);overflow-wrap:anywhere}
.event-copy .eyebrow{font-size:clamp(10px,1.8cqi,13px)}
.event-invitation.reception .event-copy{padding-top:38%;padding-bottom:92%}
.pill{min-height:44px;font-size:clamp(11px,1.8cqi,14px);padding:10px 20px}
.save-date{font-size:clamp(14px,2.2cqi,17px);min-height:44px}
.family-columns{max-width:850px;gap:0}.family-columns>div{min-width:0}
.rsvp-panel{width:100%;max-width:650px;padding:clamp(28px,4vw,45px) clamp(20px,4vw,40px)}
.rsvp h2{font-size:clamp(56px,6vw,77px)}
input:not([type=checkbox]),textarea{font-size:clamp(18px,1.5vw,22px)}
.rsvp-panel>p,fieldset label{font-size:clamp(17px,1.5vw,21px)}
fieldset label{min-height:44px}.submit{min-height:48px;font-size:clamp(13px,1.1vw,16px)}
.form-note{font-size:clamp(12px,1vw,14px)}
footer h2{font-size:clamp(45px,5.5vw,70px)}
footer>p:not(.eyebrow){font-size:clamp(18px,1.7vw,24px)}
.round{min-width:40px;min-height:40px}.scroll-cue{min-height:44px}
/* Only opacity and translation animate; dimensions remain stable. */
.scroll-enter{opacity:0;transform:translate3d(0,26px,0);transition:opacity 1.15s ease var(--entrance-delay,0ms),transform 1.15s cubic-bezier(.2,.65,.3,1) var(--entrance-delay,0ms)}
.scroll-enter.has-entered,.scroll-enter:focus-within{opacity:1;transform:translate3d(0,0,0)}
@media(min-width:761px) and (max-width:1050px){.family-columns{flex-direction:row}.family-columns>div{width:50%;padding-inline:22px}}
@media(max-width:760px){.family-columns{gap:30px}.family-columns>div{width:100%}.hero h1{font-size:clamp(68px,19vw,110px)}.hero .eyebrow{max-width:90%;margin-inline:auto}.event-copy h3{font-size:clamp(32px,10cqi,54px)}.clock-frame{width:100%}.section.countdown{padding-inline:12px}.heart{width:min(340px,100%)}.gallery-nav .round{width:40px;height:40px}.event-schedule span{display:block;margin-right:0}}
@media(max-width:350px){.dots{gap:9px}.dots button{width:7px;height:7px}.gallery-nav{gap:6px}.event-copy,.event-invitation.wedding .event-copy{padding-inline:12%}.hero .eyebrow{letter-spacing:.12em}#clock span{letter-spacing:.04em}}
@media(prefers-reduced-motion:reduce){.scroll-enter{opacity:1;transform:none;transition:none!important}}
@media print{.scroll-enter{opacity:1;transform:none}.falling-petals,.music{display:none}}

/* The scratch reveal celebration never covers or blocks the controls. */
.heart{isolation:isolate}
.heart::before{content:'';position:absolute;inset:3%;background:radial-gradient(circle at var(--scratch-x,50%) var(--scratch-y,45%),#fff5bfb0 0%,#efc86d40 12%,transparent 30%);opacity:0;z-index:3;pointer-events:none;transition:opacity .28s ease;clip-path:polygon(50% 22%,65% 6%,85% 8%,97% 26%,96% 47%,83% 66%,50% 97%,17% 66%,4% 47%,3% 26%,15% 8%,35% 6%)}
.heart.is-scratching::before{opacity:1}
.heart.is-scratching canvas{filter:drop-shadow(0 0 12px #ebc56588) drop-shadow(0 0 24px #efca7555)}
.heart .hidden-date{transition:filter .3s ease}
.heart.is-scratching .hidden-date{filter:drop-shadow(0 0 16px #dfb75c66)}
.heart.reveal-pulse .hidden-date{animation:heart-reveal-pulse .85s ease-in-out both}
@keyframes heart-reveal-pulse{0%{filter:brightness(1) drop-shadow(0 0 0 #e9c37000)}45%{filter:brightness(1.16) drop-shadow(0 0 20px #eac371bb) drop-shadow(0 0 42px #f4d58c88)}100%{filter:brightness(1) drop-shadow(0 0 0 #e9c37000)}}
.reveal-petal-shower{position:fixed;inset:0;overflow:hidden;z-index:45;pointer-events:none;contain:strict}
.reveal-petal{position:absolute;left:var(--x);top:-40px;width:var(--size);height:calc(var(--size)*1.3);opacity:0;animation:reveal-petal-fall var(--duration) linear var(--delay) both;will-change:transform}
.reveal-petal i{display:block;width:100%;height:100%;border-radius:80% 15% 70% 22%;background:radial-gradient(ellipse at 25% 20%,#ffe3df,#eaa8b0 50%,#bc7185);box-shadow:inset 1px 0 2px #fff7e980;animation:reveal-petal-flutter 2.2s ease-in-out var(--delay) infinite alternate;transform:rotate(var(--rotation))}
@keyframes reveal-petal-fall{0%{transform:translate3d(0,-35px,0);opacity:0}8%{opacity:var(--opacity)}85%{opacity:var(--opacity)}100%{transform:translate3d(var(--drift),calc(100svh + 100px),0);opacity:0}}
@keyframes reveal-petal-flutter{from{transform:translateX(-15px) rotate(var(--rotation)) rotateY(0)}to{transform:translateX(15px) rotate(calc(var(--rotation) + 110deg)) rotateY(65deg)}}
@media(prefers-reduced-motion:reduce){.heart::before,.reveal-petal-shower{display:none}.heart.is-scratching canvas,.heart.is-scratching .hidden-date,.heart.reveal-pulse .hidden-date{filter:none;animation:none!important}}


/* Landscape photographs in Our Moments. */
.moments{--slide-width:min(780px,86vw);--slide-height:calc(min(780px,86vw) * .8);--slide-step:min(820px,92vw)}
.moments .slide{border-radius:12px;background:#eee7dc}.moments .slide img{object-fit:contain;width:100%;height:100%}

/* Ivory paper heart and stacked date, matching the supplied reveal reference. */
.heart{container-type:inline-size}
.heart .hidden-date{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 640'%3E%3Cpath d='M320 590 C275 545 38 385 38 210 C38 58 239 30 320 163 C401 30 602 58 602 210 C602 385 365 545 320 590Z' fill='%23fcfaf4'/%3E%3C/svg%3E") center/contain no-repeat;filter:drop-shadow(0 14px 20px #79674d16);padding:0 8% 8%;gap:0;color:var(--wine)}
.heart .hidden-date span{display:block;font-family:Georgia,'Times New Roman',serif;font-weight:400;letter-spacing:0;line-height:1.14;color:var(--wine)}
.heart .hidden-date .revealed-day{font-size:18cqw}
.heart .hidden-date .revealed-month{font-size:10cqw;margin:1.5cqw 0 2cqw}
.heart .hidden-date .revealed-year{font-size:13cqw}

/* Refined, comfortably spaced gallery navigation. */
.gallery-nav{gap:20px;margin:28px auto 12px;width:fit-content;padding:8px 10px;border:1px solid #bc98552b;border-radius:999px;background:#fff9ed80;box-shadow:0 5px 20px #73574108}
.gallery-nav .round{width:50px;height:50px;min-width:50px;padding:0;border:1px solid #bc985575;background:linear-gradient(145deg,#fffaf0,#f3e8d8);color:#945e4e;box-shadow:0 2px 6px #7357410c;transition:background .22s ease,color .22s ease,box-shadow .22s ease,transform .22s ease}
.gallery-nav .round svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round}
.gallery-nav .round:focus-visible{outline:2px solid var(--wine);outline-offset:4px}
.gallery-nav .round:active{transform:scale(.96)}
.gallery-nav .dots{gap:0;align-items:center}
.gallery-nav .dots button{width:30px;height:44px;border-radius:0;background:transparent;display:grid;place-items:center}
.gallery-nav .dots button:before{position:static;inset:auto;content:'';width:7px;height:7px;border-radius:999px;background:#cfaaa0;transition:width .25s ease,background .25s ease}
.gallery-nav .dots button[aria-pressed=true]{background:transparent}
.gallery-nav .dots button[aria-pressed=true]:before{width:20px;background:var(--wine)}
@media(hover:hover){.gallery-nav .round:hover{background:#a64144;color:#fff8ee;border-color:#a64144;box-shadow:0 4px 12px #a6414424;transform:translateY(-2px)}.gallery-nav .dots button:hover:before{background:#a64144}}
@media(max-width:480px){.gallery-nav{gap:14px}.gallery-nav .round{width:48px;height:48px;min-width:48px}}
@media(prefers-reduced-motion:reduce){.gallery-nav .round,.gallery-nav .dots button:before{transition:none}.gallery-nav .round:hover,.gallery-nav .round:active{transform:none}}

/* Pearl foil, feathered reveal, and a family dedication on fine stationery. */
#reveal .eyebrow.gold{color:#9b7970}#reveal h2{max-width:850px}
#scratch{filter:drop-shadow(0 12px 18px #765e4f16);transition:opacity 1s ease,filter .5s ease}
.heart.is-scratching canvas{filter:drop-shadow(0 0 12px #f5e9dba0) drop-shadow(0 9px 22px #ae83792b)}
.heart::before{background:radial-gradient(circle at var(--scratch-x,50%) var(--scratch-y,45%),#fff9ed99, #edd6ce28 13%,transparent 27%)}
.foil-fleck{position:absolute;width:7px;height:13px;border-radius:80% 10% 70% 20%;background:linear-gradient(135deg,#fffaf1,#d5b6a2);pointer-events:none;z-index:4;animation:foil-lift .85s ease-out both}
@keyframes foil-lift{0%{opacity:.85;transform:translate(-50%,-50%) rotate(var(--fleck-turn)) scale(.5)}100%{opacity:0;transform:translate(12px,-42px) rotate(100deg) scale(.15)}}
#reveal-date{font-size:16px;color:#8d625d;letter-spacing:.03em;border-bottom-color:#b8958070;padding-inline:10px}
.family{padding-block:clamp(60px,8vw,115px)}
.family-dedication{position:relative;max-width:900px;margin:auto;padding:clamp(35px,6vw,75px) clamp(22px,5vw,65px);border:1px solid #bea27d50;border-radius:180px 180px 8px 8px;background:radial-gradient(ellipse at 50% 0,#fffaf3b0,transparent 70%),linear-gradient(135deg,#f9f3e870,#f3e6dd60);box-shadow:0 16px 60px #755e4306}
.family-dedication:before{content:'';position:absolute;inset:10px;border:1px solid #bea27d28;border-radius:inherit;pointer-events:none}
.family-dedication .floral-ornament{width:min(340px,90%);height:105px;margin-bottom:12px}
.family-dedication>.eyebrow{font-size:10px;letter-spacing:.25em;color:#837965}
.family-dedication h2{font-size:clamp(46px,5.5vw,74px);margin:17px 0 28px}
.family-hairline{width:90px;height:1px;margin:26px auto;background:linear-gradient(90deg,transparent,#b59770,transparent)}
.family-blessing-label{font:italic 23px/1.5 var(--serif);color:#8a776a;margin:26px 0 20px}
.family-names{display:flex;flex-direction:column;align-items:center;gap:5px}
.family-names p{font:400 clamp(29px,3.7vw,44px)/1.25 var(--serif);color:#795050;text-wrap:balance}
.family-names span{font:400 38px/1.35 var(--script);color:#b08b6d;margin:3px 0}
.family-closing{font:italic 21px/1.5 var(--serif);color:#8a776a;margin-top:24px}
@media(max-width:480px){.family-dedication{border-radius:110px 110px 8px 8px;padding:32px 20px}.family-dedication .floral-ornament{height:85px}.family-dedication>.eyebrow{font-size:8px}.family-names p{font-size:30px}}
@media(prefers-reduced-motion:reduce){.foil-fleck{display:none}}


/* Original transparent watercolor ornaments. */
.floral-ornament.supplied-ornament{width:min(380px,83vw);height:auto;aspect-ratio:3/1;margin:0 auto 28px;pointer-events:none;mix-blend-mode:normal}
.floral-ornament.supplied-ornament img{width:100%;height:100%;object-fit:contain;mask-image:none;-webkit-mask-image:none}
.floral-ornament.supplied-ornament.art-invitation{width:min(440px,86vw)}
.floral-ornament.supplied-ornament.art-countdown{width:min(340px,80vw)}
.family-dedication .floral-ornament.supplied-ornament.art-family{width:min(340px,94%);height:auto;aspect-ratio:3/1;padding:0;margin:0 auto 24px}

.floral-ornament.supplied-ornament.art-story{width:min(430px,86vw);margin-bottom:24px}
.rsvp-panel .floral-ornament.supplied-ornament.art-rsvp{width:min(320px,100%);height:auto;aspect-ratio:3/1;margin-bottom:24px}
.floral-ornament.supplied-ornament.art-wishes{width:min(370px,84vw)}

/* Dissolve the opening artwork into the page's continuous watercolor background. */
.hero{background:transparent}
.hero::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:#f5ded1 url('reference-hero.png') center/cover no-repeat;-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 62%,rgba(0,0,0,.97) 70%,rgba(0,0,0,.82) 78%,rgba(0,0,0,.5) 86%,rgba(0,0,0,.17) 94%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0%,#000 62%,rgba(0,0,0,.97) 70%,rgba(0,0,0,.82) 78%,rgba(0,0,0,.5) 86%,rgba(0,0,0,.17) 94%,transparent 100%)}
.hero .falling-petals{-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 72%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0%,#000 72%,transparent 100%)}
@media(max-width:760px){.hero::before{background-size:auto 100%}}

/* Locally hosted Armelie and a fluid invitation typography scale. */
@font-face{font-family:'Armelie';src:url('Armelie-Regular.otf') format('opentype');font-weight:400;font-style:normal;font-display:swap}
:root{--script:'Armelie',cursive;--page-gutter:clamp(22px,5vw,96px);--section-space:clamp(60px,7.5vw,112px);--text-body:clamp(19px,1.05rem + .4vw,24px);--text-title:clamp(48px,2.25rem + 3.4vw,86px);--text-subtitle:clamp(37px,1.7rem + 1.7vw,58px);--space-heading:clamp(24px,3vw,46px)}
body{font-size:var(--text-body);line-height:1.7}
h1,h2,h3{font-weight:400;font-synthesis:none;text-wrap:balance}
p{text-wrap:pretty}
.section{padding-block:var(--section-space)}
.section h2{font-family:var(--script);font-size:var(--text-title);line-height:1.16;margin:14px auto var(--space-heading);max-width:1000px}
.eyebrow{font-size:clamp(10px,.58rem + .18vw,12px);line-height:1.7;letter-spacing:.2em}
.hero-inner{max-width:1200px;padding-block:clamp(45px,7vh,90px)}
.hero h1{font-family:var(--script);font-size:clamp(88px,5rem + 6vw,172px);line-height:1.02}
.hero h1 em{font-family:var(--script);font-style:normal;font-size:.36em;line-height:1.1;margin:8px 0 5px}
.hero .eyebrow{font-size:clamp(11px,.55rem + .55vw,17px);letter-spacing:clamp(.16em,.3vw,.3em);margin-bottom:clamp(24px,3vw,40px)}
.scroll-cue{font-size:clamp(10px,.55rem + .22vw,12px);letter-spacing:.24em;margin-top:clamp(32px,4vw,56px)}
.floral-ornament.supplied-ornament{margin-bottom:clamp(18px,2.5vw,32px)}
.chapters{max-width:820px}.chapters article{margin:clamp(36px,4.5vw,64px) auto}
.chapters article:last-child{margin-bottom:0}.chapters h3{font-size:var(--text-subtitle);line-height:1.25;margin-bottom:16px}
.chapters p{font-size:var(--text-body);line-height:1.75;max-width:58ch}
.moments>h2{margin-bottom:clamp(28px,3vw,44px)}.film-slot{font-size:clamp(17px,1rem + .25vw,20px);margin-top:24px;line-height:1.65}
.invitation h2{margin-bottom:18px}.invitation>p:not(.eyebrow):not(.full-name){font-size:var(--text-body)}
.invitation h3{font-size:clamp(70px,3rem + 4vw,118px);line-height:1.13;margin:clamp(28px,3vw,44px) 0 2px}
.invitation .full-name{font-size:clamp(19px,1rem + .45vw,24px);line-height:1.5;letter-spacing:.01em;padding-inline:8px}
.invitation>.amp{font-size:clamp(36px,2rem + 1vw,50px);line-height:1.1;margin:22px 0 -7px}
.blessings{margin-top:clamp(35px,4vw,56px)}.blessings>.eyebrow{font-size:11px;margin-bottom:14px}
.blessings>p:not(.eyebrow){font-size:clamp(21px,1.1rem + .45vw,26px);line-height:1.55}.blessings>p:last-child{font-size:clamp(18px,1rem + .3vw,22px);margin-top:8px}
#reveal h2{font-size:clamp(43px,2rem + 3vw,76px);max-width:850px;margin-bottom:clamp(18px,2.5vw,34px)}
#countdown h2{margin-bottom:0}.clock-frame{margin-top:clamp(28px,4vw,58px)}.time-note{font-size:clamp(14px,.8rem + .25vw,17px);line-height:1.6;margin-top:20px}
.event-invitations{gap:clamp(36px,5vw,72px)}
.event-copy h3{font-family:var(--script);font-size:clamp(38px,11cqi,82px);line-height:1.1;margin:0 auto 20px;text-wrap:balance}
.event-date{font-size:clamp(17px,3.6cqi,26px);line-height:1.45;letter-spacing:.025em;margin:0 auto 18px}
.event-schedule{margin:0 auto 25px}.event-schedule p{font-size:clamp(17px,3.2cqi,23px);line-height:1.55;margin:7px 0}.event-schedule strong{font-weight:600}
.event-venue{font-size:clamp(16px,3.15cqi,23px);line-height:1.5;letter-spacing:.02em;margin:10px auto 23px;overflow-wrap:normal}
.event-copy .eyebrow{font-family:var(--sans);font-size:clamp(10px,1.7cqi,12px);letter-spacing:.2em;margin-top:24px}
.family-dedication h2{font-size:clamp(48px,2.2rem + 3vw,78px);margin:16px auto 26px}
.family-names p{font-size:clamp(29px,1.45rem + 1.3vw,44px);line-height:1.35}.family-names span{font-family:var(--script);font-size:42px;line-height:1.1;margin:8px 0}
.family-blessing-label,.family-closing{font-size:clamp(20px,1.05rem + .35vw,24px);line-height:1.6}
.rsvp-panel{padding:clamp(32px,4vw,54px) clamp(22px,4vw,48px)}.rsvp-panel h2{font-size:clamp(62px,3rem + 3vw,88px);margin:0 auto 20px}
.rsvp-panel>p{font-size:clamp(18px,1rem + .3vw,22px);line-height:1.7}
form{margin-top:clamp(28px,3vw,42px)}form>label,legend{font-family:var(--sans);font-size:11px;line-height:1.6;letter-spacing:.13em;margin-bottom:10px}
input:not([type=checkbox]),textarea{font-size:clamp(19px,1rem + .35vw,22px);line-height:1.5;padding-block:10px;margin-bottom:26px}
fieldset label{font-size:clamp(18px,1rem + .25vw,21px);line-height:1.5;min-height:44px}
.submit{font-family:var(--sans);font-size:12px;letter-spacing:.13em;min-height:50px}.form-note{font-family:var(--sans);font-size:12px;line-height:1.7;margin-top:17px}
.wishes form{max-width:560px}.guest-wishes{font-size:var(--text-body);line-height:1.7;margin-top:30px}
footer{padding:clamp(65px,7vw,105px) var(--page-gutter) 40px}footer>p:not(.eyebrow){font-size:var(--text-body);line-height:1.75;max-width:650px;margin-inline:auto}
footer>.eyebrow{margin:0 0 24px}footer>p+ .eyebrow{margin-top:34px}footer h2{font-family:var(--script);font-size:clamp(54px,2.6rem + 3vw,84px);line-height:1.2;margin:12px auto 35px}
@media(max-width:600px){.hero h1{font-size:clamp(78px,22vw,126px)}.hero-inner{padding-inline:22px}.hero .eyebrow{max-width:290px}.section h2{padding-inline:2px}.event-copy,.event-invitation.wedding .event-copy,.event-invitation.reception .event-copy{padding-inline:11%}.invitation .full-name{max-width:310px;margin-inline:auto}.family-dedication h2{font-size:clamp(43px,11vw,58px)}}

/* Editorial hierarchy: serif headings, selective romantic script, clear practical details. */
:root{--script:'Great Vibes',cursive;--text-body:clamp(19px,1.08rem + .28vw,22px);--section-space:clamp(64px,7vw,104px);--space-heading:clamp(26px,3vw,42px)}
body{font-size:var(--text-body);line-height:1.7;color:#665650}
h1,h2,h3{font-synthesis:none}
.section h2,.family-dedication h2,.rsvp-panel h2,#reveal h2{font-family:var(--serif);font-weight:400;font-size:clamp(36px,1.6rem + 2.6vw,64px);line-height:1.16;letter-spacing:-.025em;max-width:900px;margin:14px auto var(--space-heading);text-wrap:balance}
.hero h1{font-family:var(--script);font-size:clamp(86px,4rem + 6.5vw,160px);line-height:1.16;letter-spacing:0}
.hero h1 em{font-family:var(--serif);font-style:italic;font-size:.3em;line-height:1.3;margin:5px 0 8px}
.hero .eyebrow{font-family:var(--sans);font-size:clamp(10px,.56rem + .28vw,13px);letter-spacing:.24em;line-height:1.8;margin-bottom:30px}
.eyebrow{font-family:var(--sans);font-size:clamp(10px,.58rem + .12vw,12px);letter-spacing:.2em;color:#8b7367}
.chapters{max-width:720px}.chapters h3{font-family:var(--serif);font-style:italic;font-weight:400;font-size:clamp(28px,1.3rem + 1.25vw,40px);line-height:1.3;letter-spacing:-.015em;margin-bottom:16px}
.chapters article{margin:clamp(36px,4vw,56px) auto}.chapters p{max-width:52ch;font-size:var(--text-body);line-height:1.75}
.invitation h2{font-family:var(--script);font-size:clamp(49px,2rem + 3vw,78px);line-height:1.25;letter-spacing:0;margin-bottom:18px}
.invitation h3{font-family:var(--script);font-size:clamp(68px,2.9rem + 4vw,108px);line-height:1.24;letter-spacing:0;margin-top:34px}
.invitation .full-name{font-family:var(--serif);font-size:clamp(20px,1.05rem + .4vw,25px);line-height:1.5;color:#83654b}
.invitation>.amp{font-family:var(--serif);font-style:italic;font-size:36px;color:#b09172;margin:22px auto -8px}
#reveal h2{max-width:660px;font-size:clamp(34px,1.6rem + 2.1vw,56px)}
#countdown h2{margin-bottom:0}#clock strong{font-family:var(--serif);font-weight:500}#clock span{font-family:var(--sans);letter-spacing:.14em}
.event-copy h3{font-family:var(--serif);font-weight:500;font-style:italic;font-size:clamp(34px,8.4cqi,62px);line-height:1.14;letter-spacing:-.025em;margin-bottom:22px}
.event-date{font-family:var(--serif);font-weight:500;font-size:clamp(18px,3.6cqi,26px);line-height:1.4;letter-spacing:.025em}
.event-schedule p{font-family:var(--serif);font-size:clamp(18px,3.3cqi,24px);line-height:1.5}.event-schedule strong{font-weight:600}.event-venue{font-size:clamp(17px,3.2cqi,23px);line-height:1.5;letter-spacing:0;text-transform:none}
.event-copy .eyebrow{font-family:var(--sans);font-size:10px;letter-spacing:.18em;color:inherit;opacity:.85}
.pill,.save-date{font-family:var(--sans);font-size:11px;letter-spacing:.055em}.pill{font-weight:500}.save-date{font-size:12px;letter-spacing:.02em}
.family-dedication h2{font-size:clamp(35px,1.5rem + 2.3vw,58px)}
.family-names p{font-family:var(--serif);font-size:clamp(28px,1.4rem + 1vw,39px);font-weight:500;line-height:1.4;color:#815558}
.family-names span{font-family:var(--serif);font-style:italic;font-size:30px;line-height:1.2;margin:8px 0;color:#ac896e}
.family-blessing-label,.family-closing{font:italic clamp(19px,1rem + .3vw,22px)/1.6 var(--serif)}
.rsvp-panel h2{font-family:var(--serif);font-size:clamp(40px,1.8rem + 2vw,60px);letter-spacing:.065em;margin:0 auto 20px}
.rsvp-panel>p{font-size:clamp(18px,1rem + .25vw,21px);line-height:1.65}
form>label,legend{font-family:var(--sans);font-size:10px;font-weight:500;letter-spacing:.14em}
input:not([type=checkbox]),textarea,fieldset label{font-family:var(--serif);font-size:clamp(19px,1rem + .3vw,22px);line-height:1.5}
.form-note,.map-note,.time-note{color:#78695d}.form-note{font-size:12px;line-height:1.7}
footer h2{font-family:var(--script);font-size:clamp(49px,2.3rem + 2.5vw,73px);line-height:1.25;letter-spacing:0;margin-top:16px}
footer>p:not(.eyebrow){max-width:620px;font-size:var(--text-body);line-height:1.7}
@media(max-width:600px){.hero h1{font-size:clamp(76px,20vw,118px)}.hero-inner{padding-inline:24px}.hero .eyebrow{font-size:10px;letter-spacing:.19em}.family-dedication h2{font-size:clamp(32px,8.5vw,45px)}.event-schedule span{font-size:.94em}.event-copy h3{font-size:clamp(32px,9.5cqi,49px)}}

/* Portrait invitation cards: phone stack and desktop rows. */
.celebrations .event-invitations{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:clamp(22px,2.4vw,36px);max-width:1440px;margin-inline:auto}
.celebrations .event-invitation{flex:0 0 calc((100% - 72px)/3);width:auto;max-width:440px;aspect-ratio:9/16;min-height:0;container-type:inline-size;background-size:100% 100%;border-radius:14px}
.celebrations .event-invitation .event-copy{position:absolute;inset:18% 9% 12%;padding:0;width:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;background:radial-gradient(ellipse,#faf0e3d9 0%,#faf0e3aa 55%,transparent 76%)}
.celebrations .event-copy h3{font-size:clamp(28px,8.5cqi,40px);line-height:1.08;letter-spacing:-.02em;margin:0 0 3cqi}
.celebrations .event-date{font-size:clamp(16px,4.4cqi,20px);line-height:1.25;margin:0 0 3cqi}
.celebrations .event-schedule{margin:0 0 3cqi;width:100%}
.celebrations .event-schedule p{font-size:clamp(16px,4.3cqi,19px);line-height:1.3;margin:1.5cqi 0}
.celebrations .event-schedule span{display:inline;margin-right:8px;font-size:inherit}
.celebrations .event-copy .eyebrow{font-size:10px;margin:0 0 1.5cqi;line-height:1.4}
.celebrations .event-venue{font-size:clamp(15px,4cqi,18px);line-height:1.3;margin:0 0 3cqi;text-transform:none}
.celebrations .pill{font-size:10px;min-height:44px;padding:8px 17px;flex-shrink:0}
.celebrations .save-date{font-size:11px;min-height:44px;margin:0;padding:6px 3px;flex-shrink:0}
.celebrations .event-invitation.reception .event-copy{inset:18% 9% 12%;padding:0;background:radial-gradient(ellipse,#13253ce8 0%,#13253cb8 55%,transparent 78%)}
@media(min-width:761px) and (max-width:1100px){.celebrations .event-invitation{flex-basis:calc((100% - 28px)/2)}}
@media(max-width:760px){.celebrations .event-invitations{flex-direction:column;align-items:center;gap:32px}.celebrations .event-invitation{flex:none;width:100%;max-width:440px}.celebrations .event-invitation .event-copy{inset:16% 8% 10%}.celebrations .event-invitation.reception .event-copy{inset:16% 8% 10%}}
/* Fill the landscape frames without stretching; full photo remains in the lightbox. */
.moments .slide img{object-fit:cover;object-position:center;width:100%;height:100%}

/* Event-specific hand-painted stationery, with live centered typography. */
.celebrations .event-invitation{filter:none;background-color:#faf3e6;background-size:100% 100%;background-position:center}
.celebrations .event-invitation .event-copy,.celebrations .event-invitation.reception .event-copy{background:none;text-align:center;color:#493c36}
.celebrations .event-copy h3{font-family:var(--serif);font-style:normal;font-weight:600;letter-spacing:-.015em;color:#793f43}
.celebrations .bhog .event-copy h3{color:#465d48}
.celebrations .mehendi .event-copy h3{color:#805327}
.celebrations .jaggo .event-copy h3{color:#873d4c}
.celebrations .event-date{font-weight:600;color:inherit}
.celebrations .event-schedule p,.celebrations .event-venue{font-weight:500;color:inherit}
.celebrations .event-schedule strong{font-weight:600}
.celebrations .event-copy .eyebrow{opacity:1;font-weight:500}
.celebrations .event-invitation.reception .event-copy{color:#fff3df}
.celebrations .reception .event-copy h3{color:#f7dfae}
.celebrations .save-date{color:#704741;border-bottom-color:#70474170}
.celebrations .reception .save-date{color:#fff3df;border-bottom-color:#f7dfae80}

/* Center each text group on the artwork's blank writing area. */
.celebrations .event-invitation.bhog{--writing-top:22%;--writing-bottom:28%}
.celebrations .event-invitation.mehendi{--writing-top:21%;--writing-bottom:27%}
.celebrations .event-invitation.jaggo{--writing-top:22%;--writing-bottom:29%}
.celebrations .event-invitation.wedding{--writing-top:23%;--writing-bottom:24%}
.celebrations .event-invitation.reception{--writing-top:21%;--writing-bottom:26%}
.celebrations .event-invitation .event-copy,.celebrations .event-invitation.reception .event-copy{inset:var(--writing-top) 12% var(--writing-bottom);justify-content:center;align-items:center;text-align:center}

/* Scenic 9:16 collection, centered on the open sky rather than the entire scene. */
.celebrations .event-invitation.bhog{--writing-top:18%;--writing-bottom:36%}
.celebrations .event-invitation.mehendi{--writing-top:21%;--writing-bottom:34%}
.celebrations .event-invitation.jaggo{--writing-top:21%;--writing-bottom:35%}
.celebrations .event-invitation.wedding{--writing-top:22%;--writing-bottom:32%}
.celebrations .event-invitation.reception{--writing-top:22%;--writing-bottom:34%}
.celebrations .event-copy h3{margin-bottom:2cqi}
.celebrations .event-date,.celebrations .event-schedule,.celebrations .event-venue{margin-bottom:2cqi}
.celebrations .event-schedule p{margin:1cqi 0}
.celebrations .event-invitation .event-copy{color:#49342f}
.celebrations .event-invitation.reception .event-copy{color:#fff6e9}
