@font-face{font-family:'Anastasia Script';src:url('assets/fonts/AnastasiaScript.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:'Lora';src:url('assets/fonts/Lora-Variable.ttf') format('truetype');font-style:normal;font-weight:400 700;font-display:swap}
:root{--paper:#faf6eb;--ink:#183967;--yellow:#f3d85e;--line:#18396730;--serif:'Lora',Georgia,serif;--body:'Lora',Georgia,serif;--art:url('assets/dolce-vita-blue-lemon.webp')}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:25px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.75 var(--body)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit;text-underline-offset:5px}button:focus-visible,a:focus-visible{outline:3px solid #b0820c;outline-offset:6px}::selection{background:var(--yellow);color:var(--ink)}[hidden]{display:none!important}em{font-weight:400}
.topbar{height:76px;padding:0 6%;display:flex;align-items:center;justify-content:space-between;background:#f5e9b8;border-bottom:1px solid var(--line);position:relative;z-index:2}.topbar>span{font-size:12px;letter-spacing:.12em}.monogram{font:italic 40px var(--serif);text-decoration:none}.sound{border:0;background:none;display:flex;gap:10px;align-items:center;font-size:13px;color:var(--ink);padding:10px}.sound-bars{display:flex;gap:3px;height:20px;align-items:center}.sound-bars i{height:8px;width:2px;background:currentColor}.sound-bars i:nth-child(2){height:18px}.sound-bars i:nth-child(3){height:13px}.sound[aria-pressed=true] i{animation:bars .8s ease-in-out infinite alternate}.sound i:nth-child(2){animation-delay:.2s}.sound i:nth-child(3){animation-delay:.4s}
/* One illustrated world throughout. Each layer keeps the image's natural aspect ratio. */
.hero,.section,footer{position:relative;isolation:isolate;overflow:hidden;background-color:var(--paper);padding:160px 12% 250px;border-bottom:1px solid var(--line)}
.hero:before,.section:before,footer:before{content:'';position:absolute;inset:0 0 auto;height:clamp(240px,38vw,570px);background:var(--art) center top/100% auto no-repeat;z-index:-2;pointer-events:none}
.hero:after,.section:after,footer:after{content:'';position:absolute;inset:auto 0 0;height:clamp(150px,20vw,300px);background:var(--art) center bottom/100% auto no-repeat;z-index:-2;pointer-events:none}
.hero{min-height:900px;text-align:center;padding-top:155px}.hero-copy{max-width:680px;margin:auto;animation:arrive 1.1s ease both}.hero-copy,.letter-copy,.meeting-content,.dress-grid,.wishlist-copy{position:relative}.hero-copy:before,.letter-copy:before,.meeting-content:before,.dress-grid:before,.wishlist-copy:before{content:'';position:absolute;inset:-30px -45px;background:#faf6ebdf;z-index:-1;border-radius:46% 46% 18px 18px/12% 12% 18px 18px}.eyebrow,.section-label{font-size:12px;letter-spacing:.16em;font-weight:600}.section-label{text-align:center;margin:0 0 42px;position:relative;z-index:1}.guest{font:italic 29px/1.3 var(--serif);margin:25px 0 20px}h1{font:500 clamp(86px,9vw,138px)/.87 var(--serif);letter-spacing:-.04em;margin:30px 0}h1 em{display:inline-block;font-weight:400;line-height:1.1;margin-left:16%}.intro{font-size:16px;line-height:1.9}.hero-date{display:flex;justify-content:center;gap:35px;margin:28px 0;font-size:14px;letter-spacing:.1em}.hero-date span+span{border-left:1px solid var(--line);padding-left:35px}.signature{font:italic 28px var(--serif);margin:26px 0 0}
h2{font:500 clamp(48px,5.2vw,76px)/1.05 var(--serif);letter-spacing:-.03em;margin:0 0 28px;text-wrap:balance}.atmosphere-grid{max-width:660px;margin:auto}.letter-copy h2{text-align:center}.letter-copy p{font-size:16px;line-height:1.95;margin:22px 0}.atmosphere{padding-top:180px}.meeting{text-align:center;padding-top:160px}.meeting-content{max-width:650px;margin:auto}.meeting h2{font-size:clamp(90px,11vw,150px);font-style:italic;margin:18px 0 0}.address{font-size:16px}.when{display:flex;justify-content:center;margin:40px auto 26px}.when>div{display:flex;flex-direction:column;min-width:240px;padding:0 35px}.when>div+div{border-left:1px solid var(--line)}.when span{font-size:12px;letter-spacing:.08em}.when strong{font:400 75px/1.4 var(--serif)}.text-link{display:inline-flex;gap:30px;padding:12px 0;border-bottom:1px solid currentColor;text-decoration:none;font-size:15px}.text-link:hover{color:#33639b}
.dress{text-align:center;padding-top:175px;min-height:900px}.dress-grid{max-width:700px;display:flex;flex-direction:column;gap:25px;margin:auto}.dress h2 br{display:none}.dress h2 em{display:block}.dress p{max-width:450px;margin:0 auto;font-size:16px;line-height:1.9}.palette{width:100%;max-width:650px;display:grid;grid-template-columns:repeat(4,1fr);gap:22px;margin:10px auto 0}.palette>div:nth-child(even){padding-top:20px}.palette span{display:block;background:var(--swatch);aspect-ratio:1.15;clip-path:polygon(5% 18%,20% 10%,18% 5%,49% 9%,66% 4%,93% 13%,88% 24%,98% 32%,92% 47%,97% 59%,88% 70%,92% 82%,74% 87%,61% 83%,46% 94%,24% 87%,9% 91%,13% 77%,3% 66%,8% 48%,2% 37%);transform:rotate(-7deg);transition:transform .4s}.palette>div:nth-child(even) span{transform:rotate(6deg)}.palette span:hover{transform:rotate(0deg) translateY(-8px)}.palette p{font-size:13px;line-height:1.5;margin-top:18px}
.wishlist{text-align:center;padding-top:170px}.wishlist-copy{max-width:600px;margin:auto}.wishlist h2{margin:12px 0 20px}.wishlist-copy p{font-size:16px;margin-bottom:30px}.asterisk{font-size:48px;color:#ae810f;display:inline-block}.primary{display:inline-flex;align-items:center;justify-content:space-between;gap:40px;min-height:56px;background:var(--ink);color:white;border:1px solid var(--ink);padding:14px 23px;text-decoration:none;font-size:15px;transition:background .2s,transform .2s}.primary:hover{background:#285086;transform:translateY(-3px)}.primary span{font-size:23px}
footer{text-align:center;padding-top:155px;padding-bottom:220px}.farewell{font:500 clamp(38px,5vw,70px)/1.12 var(--serif);letter-spacing:-.03em;margin:28px auto;max-width:660px}.footer-meta{border-top:1px solid var(--line);margin:45px auto 0;max-width:680px;padding-top:20px;display:flex;justify-content:space-between;letter-spacing:.1em;font-size:11px}.reading-progress{position:fixed;top:0;left:0;height:3px;width:0;background:#d5ac1b;z-index:20}.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--ink);color:white;padding:15px 22px;max-width:calc(100% - 30px);width:max-content;font-size:14px;z-index:30;box-shadow:0 4px 25px #0003}.js-motion .reveal{opacity:1;transition:translate .8s}.js-motion .reveal:not(.visible){translate:0 15px}
@keyframes arrive{from{opacity:.5;translate:0 15px}to{opacity:1;translate:0 0}}@keyframes bars{to{transform:scaleY(.35)}}
@media(min-width:1700px){.hero,.section,footer{padding-top:210px;padding-bottom:300px}}
@media(max-width:760px){.topbar{height:64px;padding:0 6%}.topbar>span{font-size:10px;letter-spacing:.06em}.monogram{font-size:34px}.sound{font-size:0}.hero,.section,footer{padding:125px 8% 145px;min-height:0}.hero:before,.section:before,footer:before{height:180px}.hero:after,.section:after,footer:after{height:95px;background-size:100% auto}.hero{padding-top:100px}.hero-copy:before,.letter-copy:before,.meeting-content:before,.dress-grid:before,.wishlist-copy:before{inset:-12px -10px;background:#faf6ebef;border-radius:0}.eyebrow,.section-label{font-size:11px;letter-spacing:.1em}.section-label{margin-bottom:32px}.guest{font-size:25px;line-height:1.35;margin:25px 0}h1{font-size:clamp(80px,22vw,125px);margin:26px 0;letter-spacing:-.04em}.intro{font-size:16px}.hero-date{font-size:13px;gap:22px}.hero-date span+span{padding-left:22px}.signature{font-size:27px}h2{font-size:52px}.letter-copy p{font-size:16px;line-height:1.85}.meeting h2{font-size:86px}.address{font-size:15px}.meeting .eyebrow{font-size:10px}.when{margin-top:30px}.when>div{min-width:0;width:50%;padding:0 8px}.when strong{font-size:56px}.when span{font-size:10px;letter-spacing:.02em}.dress h2{font-size:56px}.dress p{font-size:16px}.palette{gap:10px}.palette p{font-size:11px;line-height:1.5}.palette>div:nth-child(even){padding-top:14px}.wishlist h2{font-size:52px}.farewell{font-size:42px}.footer-meta{font-size:10px;gap:15px}.primary{font-size:14px}.dress-grid{gap:18px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js-motion .reveal{translate:none!important}}
/* Calligraphic lettering and saturated cobalt from the supplied style references. */
:root{--ink:#202c87;--line:#202c8733;--script:'Anastasia Script',cursive;--cyrillic-script:'Anastasia Script',cursive}.topbar{background:#f7edc5}h1{font-family:var(--script);font-weight:400;font-size:clamp(112px,12vw,178px);line-height:.82;letter-spacing:0;transform:rotate(-5deg);margin:38px 0 40px}h1 em{font-style:normal;line-height:.94;margin-left:16%}h2,.signature,.guest,.farewell{font-family:var(--cyrillic-script);font-weight:400;letter-spacing:0}.guest{font-size:28px}.signature{font-size:30px}h2{font-size:clamp(48px,5.2vw,72px);line-height:1.16}h2 em,.farewell em{font-style:normal}.meeting h2{font-family:var(--script);font-style:normal;font-size:clamp(104px,12vw,164px);line-height:1.1}.farewell{font-size:clamp(40px,5vw,66px);line-height:1.24}
@media(max-width:760px){h1{font-size:clamp(92px,26vw,142px);line-height:.87;margin:32px 0 40px}.guest{font-size:25px}h2,.dress h2,.wishlist h2{font-size:48px}.meeting h2{font-size:100px}.farewell{font-size:36px}.hero{padding-top:108px}}
/* Feather the painted edges into the paper instead of cutting them off. */
.hero:before,.section:before,footer:before{-webkit-mask-image:linear-gradient(#000 0 72%,transparent 100%);mask-image:linear-gradient(#000 0 72%,transparent 100%)}.hero:after,.section:after,footer:after{-webkit-mask-image:linear-gradient(transparent 0,#000 30%);mask-image:linear-gradient(transparent 0,#000 30%)}.hero-copy:before,.letter-copy:before,.meeting-content:before,.dress-grid:before,.wishlist-copy:before{background:radial-gradient(ellipse,#faf6ebf5 45%,#faf6ebbd 70%,transparent 100%);border-radius:0;inset:-40px -55px}
@media(max-width:760px){.hero-copy:before,.letter-copy:before,.meeting-content:before,.dress-grid:before,.wishlist-copy:before{inset:-15px -10px}}

/* Make the addressee the first clear personal focal point. */
.guest{margin:28px 0 20px;font-style:normal}.guest-name{display:block;font-family:var(--cyrillic-script);font-size:clamp(58px,6vw,88px);line-height:1.2;color:var(--ink);text-wrap:balance}.guest-note{display:block;margin-top:8px;font:400 16px/1.6 var(--body)}
@media(max-width:760px){.guest{margin:26px 0 18px}.guest-name{font-size:clamp(48px,13vw,64px);line-height:1.22}.guest-note{font-size:14px;margin-top:7px}}

/* Distinct sections, one shared Italian color and lettering system. */
.sound{position:fixed;right:16px;top:16px;z-index:40;background:var(--paper);border:1px solid var(--line);border-radius:40px;padding:12px 16px}
.hero{padding-top:140px;min-height:900px}
.section:before,.section:after,footer:before,footer:after{content:none}
.atmosphere{padding:90px 8%;background:#faf6eb}.atmosphere .section-label{text-align:left;max-width:1200px;margin:0 auto 35px}.atmosphere-grid{max-width:1200px;display:grid;grid-template-columns:.85fr 1fr;gap:8%;align-items:center}.coastal-window{margin:0;transform:translateY(var(--drift,0px)) rotate(-2deg);transition:transform .15s linear}.coastal-window img{display:block;width:100%;height:auto}.letter-copy:before{content:none}.letter-copy h2{text-align:left}.letter-copy p{font-size:16px}
.meeting{padding:90px 8%;min-height:850px;display:flex;flex-direction:column;justify-content:center;background:#c6e1ef}.meeting:before{content:'';position:absolute;inset:-35px 0;height:auto;background:url('assets/italian-bay.webp') center/cover no-repeat;mask-image:none;-webkit-mask-image:none;transform:translateY(var(--drift,0px));z-index:-2}.meeting .section-label{margin:0 auto;padding:25px 45px 0;background:var(--paper);width:min(650px,100%);border-radius:180px 180px 0 0}.meeting-content{width:min(650px,100%);padding:24px 30px 40px;background:var(--paper);outline:1px solid #202c8750;outline-offset:-14px}.meeting-content:before{content:none}.meeting h2{margin-top:14px}.meeting .when>div{min-width:0;width:50%}
.dress{padding:70px 9%;min-height:0;background:url('assets/majolica.webp') center/340px auto repeat}.dress-paper{max-width:1060px;margin:auto;background:var(--paper);padding:68px 9% 75px;border-radius:48% 48% 45% 45% / 7% 7% 7% 7%;outline:2px solid var(--ink);outline-offset:10px}.dress .section-label{margin-bottom:28px}.dress-grid:before{content:none}.dress .palette{max-width:620px}.dress .palette>div{transition:translate .5s}.dress .palette>div:hover{translate:0 -5px}
.wishlist{padding:105px 12%;background:#f4de83;border-bottom:0}.wishlist:before{content:'';inset:0 auto 0 0;width:72px;height:auto;background:url('assets/majolica.webp') left top/288px auto repeat-y;mask-image:none;-webkit-mask-image:none}.wishlist:after{content:'';inset:0 0 0 auto;width:72px;height:auto;background:url('assets/majolica.webp') right top/288px auto repeat-y;mask-image:none;-webkit-mask-image:none}.wishlist-copy:before{content:none}.wishlist-copy{max-width:600px}.wishlist .asterisk{color:var(--ink);font-size:62px;transition:transform .7s}.wishlist-copy:hover .asterisk{transform:rotate(90deg)}
footer{padding:85px 8% 38px;background:#202c87;color:var(--paper);border:0}footer .footer-meta{border-color:#faf6eb55}.farewell{margin-top:25px}
@media(max-width:760px){.hero{padding-top:100px;min-height:0}.atmosphere{padding:55px 8% 65px}.atmosphere-grid{grid-template-columns:1fr;gap:35px}.atmosphere .section-label{text-align:center;margin-bottom:24px}.coastal-window{max-width:320px;margin:auto;order:1}.letter-copy{order:2}.coastal-window img{width:100%;max-height:390px;object-fit:contain}.letter-copy h2{text-align:center}.meeting{padding:105px 6% 150px;min-height:760px}.meeting:before{background-position:44% center}.meeting .section-label{padding:30px 12px 5px;border-radius:100px 100px 0 0;font-size:11px}.meeting-content{padding:25px 14px 36px;outline-offset:-7px}.meeting h2{font-size:92px}.meeting .when>div{padding:0 3px}.meeting .when span{font-size:9px}.meeting .when strong{font-size:50px}.dress{padding:35px 7%;background-size:240px auto}.dress-paper{padding:48px 7% 50px;outline-offset:6px;outline-width:1px}.dress h2{font-size:44px}.dress p{font-size:15px}.dress .palette{gap:7px}.dress .palette p{font-size:10px}.wishlist{padding:65px 12%}.wishlist:before,.wishlist:after{width:20px;background-size:160px auto}.wishlist h2{font-size:46px}.wishlist .primary{gap:20px;font-size:14px}footer{padding:65px 8% 30px}.farewell{font-size:36px}}
@media(prefers-reduced-motion:reduce){.coastal-window,.meeting:before{transform:none!important}}
/* The static invitation uses the same fabric swatch treatment. */
.palette span{clip-path:polygon(0 2%,25% 4%,50% 0,75% 3%,100% 1%,99% 98%,76% 96%,50% 100%,24% 97%,0 99%);background:linear-gradient(100deg,transparent 4%,#ffffff99 20%,#18396728 36%,#ffffff66 54%,#18396722 74%,transparent 94%),var(--swatch);transform:rotate(-3deg)}
.palette>div:nth-child(even) span{transform:rotate(3deg)}
.palette>div{min-width:0}
.color-brush{display:block;width:104px;max-width:100%;height:24px;margin:18px auto 0;background:var(--true-color);clip-path:polygon(2% 23%,13% 15%,10% 8%,34% 11%,48% 3%,70% 8%,93% 3%,98% 25%,91% 42%,100% 58%,94% 88%,74% 84%,59% 97%,33% 87%,7% 96%,3% 69%,8% 46%);transform:rotate(-3deg)}
.venue-intro{letter-spacing:.035em;line-height:1.7}
.venue-hotel{font-size:14px;line-height:1.6;margin:8px 0 4px}

/* The occasion and the personal salutation are two distinct reading groups. */
.hero-copy>.eyebrow{margin:0 auto 26px;text-align:center;line-height:1.55}
.hero-copy>.eyebrow:after{content:'';display:block;width:64px;height:1px;background:var(--ink);opacity:.45;margin:20px auto 0}
.hero-copy>.guest{margin-top:0}

/* Retain the original title lettering independently of the other headings. */
.hero-copy h1{font-family:'Allura',cursive}

@media(max-width:760px){
 main .eyebrow,main .section-label,main .when span,main .footer-meta{font-size:13px}
 main .intro,main .letter-copy p,main .dress p,main .wishlist-copy p{font-size:18px;line-height:1.75}
 main .hero-date,main .address,main .venue-hotel,main .venue-intro{font-size:17px}
 main .text-link,main .primary{font-size:17px;min-height:48px}
 main .palette{grid-template-columns:repeat(2,1fr);gap:22px}
 main .palette p{font-size:14px}
 main .guest-note{font-size:17px}
}

/* Keep outbound arrows identical across browser font renderers. */
.outbound-arrow{display:block;flex:none;width:21px;height:21px;align-self:center}
