@font-face{font-family:Ambroise;src:url('ambroise-std-francois.otf') format('opentype');font-display:swap}@font-face{font-family:Sloop;src:url('Sloop Script Three BETA Medium.ttf') format('truetype');font-display:swap}
:root{--wine:#651c2d;--paper:#f5f0e5;--ink:#561b29;--muted:#876e68;--line:#651c2d33;--motion:cubic-bezier(.22,1,.36,1)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:35px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Ambroise,Georgia,serif;font-size:21px;-webkit-font-smoothing:antialiased}body.sealed{overflow:hidden}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid #b08a59;outline-offset:5px}[hidden]{display:none!important}p{line-height:1.5;margin:0 0 24px}h1,h2,h3,figure{margin:0}h2{font-weight:400;font-size:clamp(44px,5.6vw,76px);line-height:1.03;letter-spacing:-.02em;margin-bottom:28px}h3{font-size:35px;font-weight:400;margin-bottom:12px;line-height:1.12}.script{font-family:Sloop,cursive;font-weight:400;letter-spacing:0}.eyebrow,.small,.text-link,.primary,.time,.menu-toggle,.clock span,.photo-number,.discover,.form-note,.edition,label,legend{font-family:Georgia,serif}.eyebrow{font-size:10px;letter-spacing:.19em;line-height:1.7}.small{font-size:12px;line-height:1.7;color:var(--muted)}.opening{position:fixed;inset:0;background:#531224;z-index:20;display:grid;place-items:center;transition:opacity .9s var(--motion)}.opening video{height:100%;width:100%;object-fit:cover}.open-envelope{position:absolute;inset:0;width:100%;border:0;background:transparent;color:var(--paper);display:flex;flex-direction:column;justify-content:space-between;align-items:center;padding:9dvh 20px 8dvh;font:10px Georgia,serif;letter-spacing:.25em}.opening-top{opacity:.9}.opening-bottom{display:flex;flex-direction:column;align-items:center;gap:18px;text-shadow:0 1px 8px #390b17}.tiny-diamond{font-size:28px}.opening-note{font-family:Ambroise,serif;font-size:21px;letter-spacing:0}.skip{position:absolute;bottom:30px;border:1px solid #f5f0e566;background:#651c2d;color:var(--paper);font-size:16px;padding:12px 24px;border-radius:30px}.video-status{position:absolute;top:20px;font-size:16px;color:var(--paper);text-align:center}.opening.leaving{opacity:0;pointer-events:none}.masthead{max-width:1440px;margin:auto;padding:28px 6%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.masthead .eyebrow{margin:0}.monogram{font-size:34px;letter-spacing:-5px}.monogram span{font-family:Sloop;font-size:27px;margin:0 4px}.menu-toggle{background:none;border:0;font-size:10px;letter-spacing:.1em;min-height:44px}.menu-toggle span{font-size:21px;margin-left:13px}#menu{position:absolute;right:5%;top:93px;z-index:5;background:var(--paper);border:1px solid var(--line);padding:25px 35px;box-shadow:0 15px 50px #651c2d12}#menu a{display:block;padding:12px;font-size:24px}.hero{max-width:1280px;margin:auto;padding:80px 7% 95px;display:grid;grid-template-columns:1.1fr 1fr;gap:10%;align-items:center}.hero-copy{text-align:center}.hero h1{display:flex;flex-direction:column;font-weight:400;font-size:clamp(75px,8vw,120px);line-height:.83;letter-spacing:-.035em}.hero h1 i{font-family:Sloop;font-size:.63em;font-weight:400;line-height:.55;margin:18px 0 5px}.hero .eyebrow{margin-bottom:46px}.hero-script{font-size:55px;margin-top:28px;margin-bottom:18px}.date-line{display:flex;align-items:center;gap:18px;justify-content:center}.date-line p{font:10px Georgia;letter-spacing:.16em;margin:0;white-space:nowrap}.date-line span{width:32px;height:1px;background:var(--line)}.hero-message{font-size:23px;line-height:1.3;margin:28px 0}.discover{display:inline-flex;flex-direction:column;gap:16px;align-items:center;font-size:8px;letter-spacing:.15em}.discover span{font-size:23px}.hero-photo{position:relative;padding:14px 14px 48px;border:1px solid var(--line);transform:rotate(2deg)}.photo-frame{padding:5px;background:#e8e0d3}.hero-photo img{width:100%;height:auto;display:block;aspect-ratio:2/3;object-fit:cover}.hero-photo figcaption{font-family:Sloop;font-size:35px;position:absolute;bottom:5px;left:0;width:100%;text-align:center}.photo-number{position:absolute;right:-30px;top:30%;font-size:8px;letter-spacing:.15em;writing-mode:vertical-rl}.love-note{text-align:center;padding:90px 24px 105px;border-top:1px solid var(--line)}.love-note h2{font-size:clamp(42px,5vw,68px)}.love-note h2 em{font-size:1.4em}.love-note p:not(.eyebrow){font-size:22px}.ornament{font-size:51px;display:block;line-height:1.4}.countdown{background:var(--wine);color:var(--paper);padding:75px 20px;text-align:center}.countdown h2{font-size:45px}.countdown h2 .script{font-size:70px}.clock{display:flex;justify-content:center;gap:30px;margin:35px 0}.clock div{min-width:65px;display:flex;flex-direction:column;gap:12px}.clock b{font-size:65px;line-height:1;font-weight:400;font-variant-numeric:tabular-nums}.clock span{font-size:8px;letter-spacing:.15em}.clock i{font-style:normal;font-size:32px;opacity:.5}.countdown .small{color:#dfc9c8}.section-pad{max-width:1200px;margin:auto;padding:110px 7%}.celebration{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}.section-heading h2 .script{font-size:1.25em}.venue-card{border:1px solid var(--line);outline:1px solid var(--line);outline-offset:-9px;padding:48px 30px 34px;text-align:center;background:#ede5d640}.venue-card h3{font-size:35px}.venue-card p{font-size:20px}.venue-card .eyebrow{font-size:9px}.venue-card .ornament{margin-bottom:20px}.venue-bottom{border-top:1px solid var(--line);padding-top:20px;display:flex;align-items:center;flex-direction:column;gap:15px}.text-link{border:0;border-bottom:1px solid currentColor;background:none;padding:12px 0;font-size:9px;letter-spacing:.12em;display:inline-flex;align-items:center;gap:20px;min-height:44px}.text-link span{display:grid;place-items:center;width:24px;height:24px;border:1px solid var(--line);border-radius:50%;font-size:15px;transition:transform .4s var(--motion)}.text-link:hover span{transform:translate(2px,-2px)}.itinerary{padding-top:40px;text-align:center}.itinerary h2 .script{font-size:1.2em}.timeline{max-width:720px;margin:55px auto 24px;text-align:left}.timeline article{display:grid;grid-template-columns:48px 1fr auto;gap:22px;position:relative;align-items:center;padding:27px 0;border-bottom:1px solid var(--line)}.timeline article:first-child{border-top:1px solid var(--line)}.step{font-size:30px;color:#a17c70}.timeline .eyebrow{font-size:8px}.timeline h3{margin:6px 0;font-size:33px}.timeline p{margin:0;font-size:19px}.time{font-size:10px;font-style:italic;color:var(--muted)}.wide-photo{height:580px;position:relative;background:#26241f}.wide-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 55%;opacity:.83}.wide-photo figcaption{position:absolute;bottom:40px;left:0;right:0;color:var(--paper);text-align:center;font-family:Sloop;font-size:clamp(39px,6vw,85px);text-shadow:0 2px 15px #0006}.details{text-align:center}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px;text-align:left;margin-top:60px}.detail-grid article{border-top:1px solid var(--line);padding-top:24px}.detail-number{font-size:20px;font-style:italic;color:var(--muted);display:block;margin-bottom:22px}.detail-grid p{font-size:22px;max-width:370px}.gifts{border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}.gift-mark{width:230px;height:285px;border:1px solid var(--line);border-radius:50%;outline:1px solid var(--line);outline-offset:8px;margin:auto;text-align:center;padding-top:48px;font-size:72px;line-height:1}.gift-mark .script{font-size:92px}.gifts h2 .script{font-size:1.25em}.gifts p{font-size:21px}.gifts .eyebrow{font-size:10px}.playlist{max-width:none;background:#e9e0d2;display:flex;justify-content:center;align-items:center;gap:100px}.record{width:270px;height:270px;border-radius:50%;background:repeating-radial-gradient(circle,#292326 0,#292326 2px,#3c3436 3px,#292326 4px);display:grid;place-items:center;box-shadow:5px 10px 30px #4d28391a}.record>div{width:105px;height:105px;border-radius:50%;background:var(--wine);color:var(--paper);display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid #eadac12a}.record span{font-size:30px}.record small{font:6px Georgia;letter-spacing:.12em;margin-top:8px}.playlist h2 .script{font-size:1.45em}.playlist .small{margin-top:15px}.rsvp{text-align:center;max-width:800px}.rsvp h2{font-size:65px}.rsvp h2 .script{font-size:1.28em}.rsvp form{max-width:460px;margin:45px auto 0;text-align:left}label,legend{display:block;font-size:11px;letter-spacing:.035em;margin-bottom:25px}input:not([type=radio]),textarea{display:block;width:100%;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;padding:16px 0;font-family:Ambroise,serif;font-size:22px;color:var(--ink);outline-offset:3px}input::placeholder,textarea::placeholder{color:#967b73;opacity:1}textarea{resize:vertical}fieldset{border:0;padding:0;margin:30px 0 25px}legend{margin-bottom:17px}.radio-option{display:inline-flex;align-items:center;gap:8px;margin:0 20px 10px 0;font-size:12px;min-height:35px}.radio-option input{accent-color:var(--wine);width:17px;height:17px}.primary{border:1px solid var(--wine);border-radius:50px;background:var(--wine);color:var(--paper);display:flex;align-items:center;justify-content:space-between;gap:30px;padding:12px 15px 12px 27px;font-size:10px;letter-spacing:.12em;min-height:54px;transition:transform .4s var(--motion)}.primary:active{transform:scale(.98)}.primary span{width:30px;height:30px;border:1px solid #f5f0e555;border-radius:50%;display:grid;place-items:center;font-size:17px}.rsvp .primary{width:100%}.form-note{font-size:10px;color:var(--muted);text-align:center;line-height:1.7;margin:18px 0}#formStatus{font-size:19px;text-align:center;margin-top:20px}footer{padding:65px 20px 30px;background:var(--wine);color:var(--paper);text-align:center}.footer-names{font-size:70px;margin:25px 0 0;line-height:1.2}.footer-names .script{font-size:75px}.footer-script{font-size:48px;margin:5px 0 30px}footer .text-link{font-size:8px}footer .text-link span{border-color:#f5f0e544}.edition{font-size:7px;letter-spacing:.17em;margin:60px 0 0;opacity:.65}dialog{border:1px solid var(--line);background:var(--paper);color:var(--wine);padding:65px 35px 35px;max-width:460px;width:calc(100% - 32px)}dialog::backdrop{background:#290911aa;backdrop-filter:blur(6px)}dialog h2{font-size:43px}dialog p{font-size:21px}dialog .eyebrow{font-size:9px}.close-dialog{position:absolute;top:12px;right:12px;width:44px;height:44px;border:0;background:none;font-size:30px}.reveal{opacity:0;transform:translateY(28px);transition:opacity 1s var(--motion),transform 1s var(--motion)}.reveal.visible{opacity:1;transform:none}
@media(min-width:800px){.opening video{max-width:56.3dvh;object-fit:contain}.open-envelope{left:50%;transform:translateX(-50%);max-width:56.3dvh}.opening:before,.opening:after{content:'S';position:absolute;left:15%;top:40%;font-family:Sloop;font-size:140px;color:#f5f0e512}.opening:after{content:'R';left:auto;right:15%}}
@media(max-width:767px){body{font-size:20px}.masthead{padding:14px 24px}.masthead>.eyebrow{font-size:7px;letter-spacing:.1em}.monogram{font-size:29px}.menu-toggle{font-size:8px}.menu-toggle span{margin-left:6px}.hero{padding:65px 25px 65px;display:flex;flex-direction:column;gap:55px}.hero h1{font-size:99px}.hero .eyebrow{font-size:8px;margin-bottom:40px}.hero-script{font-size:55px}.hero-message{font-size:24px}.hero-photo{width:88%;max-width:370px;transform:none;padding:10px 10px 42px}.hero-photo figcaption{font-size:32px}.photo-number{right:-20px;font-size:7px}.love-note{padding:80px 25px}.love-note .eyebrow{max-width:260px;margin:0 auto 25px;font-size:8px}.love-note h2{font-size:41px}.love-note p:not(.eyebrow){font-size:21px}.desktop-break{display:none}.countdown{padding:65px 22px}.countdown h2{font-size:35px}.countdown h2 .script{font-size:58px}.clock{gap:12px;margin:32px 0}.clock div{min-width:49px}.clock b{font-size:46px}.clock i{font-size:25px}.clock span{font-size:7px}.countdown .small{font-size:10px;max-width:270px;margin:auto}.section-pad{padding:75px 27px}.celebration{display:block}.section-heading{text-align:center}.section-heading h2{font-size:48px}.section-heading>p:last-child{max-width:270px;margin:0 auto 35px}.venue-card{padding:35px 25px 28px}.venue-card h3{font-size:32px}.venue-card p{font-size:20px}.venue-card .eyebrow{font-size:8px}.itinerary{padding-top:20px}.itinerary h2{font-size:43px}.itinerary>p:not(.eyebrow){font-size:20px}.timeline{margin-top:36px}.timeline article{grid-template-columns:25px 1fr;gap:17px;padding:25px 0}.timeline h3{font-size:32px}.timeline .eyebrow{font-size:7px}.timeline p{font-size:18px}.time{grid-column:2;font-size:9px;margin-top:-8px}.step{font-size:25px}.wide-photo{height:420px}.wide-photo img{object-position:57% center}.wide-photo figcaption{font-size:41px;bottom:28px;padding:0 15px}.details h2{font-size:47px}.detail-grid{display:block;margin-top:40px}.detail-grid article+article{margin-top:40px}.detail-grid p{font-size:21px}.detail-grid h3{font-size:35px}.detail-number{margin-bottom:14px}.gifts{display:flex;flex-direction:column;gap:48px;text-align:center}.gift-mark{width:150px;height:185px;font-size:48px;padding-top:28px}.gift-mark .script{font-size:65px}.gifts h2{font-size:51px}.gifts p{font-size:20px}.playlist{flex-direction:column;gap:40px;text-align:center}.record{width:190px;height:190px}.record>div{width:83px;height:83px}.record span{font-size:25px}.playlist h2{font-size:55px}.playlist .eyebrow{font-size:8px}.playlist p{font-size:21px}.playlist .small{font-size:10px}.rsvp h2{font-size:49px}.rsvp .eyebrow{font-size:8px}.rsvp>p{font-size:21px}.rsvp form{margin-top:35px}.radio-option{margin-right:12px;font-size:11px}.footer-names{font-size:45px}.footer-names .script{font-size:60px}.footer-script{font-size:38px}footer>.eyebrow{font-size:7px}#menu{top:80px;left:20px;right:20px}#menu a{font-size:25px;min-height:48px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}.reveal{opacity:1;transform:none}}
/* The opened letter stays on screen; the rest of the invitation follows below. */
.opening.opened{position:relative;inset:auto;height:100dvh;min-height:100dvh;z-index:0;overflow:hidden}
.letter-names{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;padding:28px;color:var(--wine)}
.letter-names h1{margin:0;text-align:center;font-family:Ambroise,Georgia,serif;font-weight:400;font-size:clamp(58px,17vw,86px);line-height:1.08;letter-spacing:.025em}
.name-line{display:block;white-space:nowrap}
.name-line.name-connector{font-size:.42em;line-height:1.8;letter-spacing:0}
.name-line>span{display:inline-block;opacity:0;transform:translateY(14px);animation:letter-arrive 1.3s var(--motion) var(--letter-delay) forwards}
@keyframes letter-arrive{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:800px){.letter-names h1{font-size:clamp(58px,8.5dvh,96px)}}
@media(prefers-reduced-motion:reduce){.name-line>span{opacity:1;transform:none}}
.letter-names{display:flex;flex-direction:column;justify-content:center;align-items:center}
.letter-announcement{font-size:clamp(43px,12vw,61px);line-height:1.2;margin:23px 0 20px;opacity:0;animation:letter-arrive 1.4s var(--motion) 1.85s forwards}
.letter-date{font-family:Georgia,serif;font-size:9px;letter-spacing:.2em;line-height:1.7;text-align:center;margin:0;opacity:0;animation:letter-arrive 1.4s var(--motion) 2.3s forwards}
@media(min-width:800px){.letter-announcement{font-size:clamp(43px,6dvh,67px)}}
@media(prefers-reduced-motion:reduce){.letter-announcement,.letter-date{opacity:1;transform:none}}

/* The names and date appear only on the opened letter. */
.hero{display:flex;justify-content:center}
.hero-photo{width:100%;max-width:430px}
@media(max-width:767px){.hero-photo{width:88%;max-width:370px}}
/* Botanical relief bridges the letter and the invitation's paper. */
.opening.opened{background:var(--paper)}
.opening.opened video{-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 calc(100% - 105px),transparent calc(100% - 8px));mask-image:linear-gradient(to bottom,#000 0%,#000 calc(100% - 105px),transparent calc(100% - 8px))}
#invitation{position:relative}
.letter-seam{position:absolute;top:0;left:0;width:100%;height:0;z-index:1;pointer-events:none;display:flex;justify-content:center}
.letter-seam img{display:block;width:min(92%,700px);height:auto;flex:none;align-self:flex-start;transform:translateY(-53%)}
#invitation .masthead{padding-top:95px}
@media(max-width:767px){.letter-seam img{width:108%;max-width:600px}.letter-seam{clip-path:inset(-150px 0 -150px)}#invitation .masthead{padding-top:63px}.opening.opened video{-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 calc(100% - 80px),transparent calc(100% - 8px));mask-image:linear-gradient(to bottom,#000 0%,#000 calc(100% - 80px),transparent calc(100% - 8px))}}
@media(max-width:767px){.letter-seam img{width:100%;transform:translateY(-53%)}}
/* Reveal the connected calligraphy continuously, like ink crossing the paper. */
.letter-announcement{opacity:1;transform:none;clip-path:inset(0 100% 0 -8%);padding:0 .12em;animation:calligraphy-write 3.2s cubic-bezier(.35,.08,.25,1) 1.85s both}
.letter-date{animation-delay:4.8s}
@keyframes calligraphy-write{0%{clip-path:inset(0 100% 0 -8%)}100%{clip-path:inset(0 -8% 0 -8%)}}
@media(prefers-reduced-motion:reduce){.letter-announcement{clip-path:none;animation:none}.letter-date{opacity:1}}
/* A central bloom opens outward as the floral divider enters view. */
.letter-seam img{opacity:0;clip-path:inset(0 50% 0 50%);transform:translateY(-53%) scale(.94);transform-origin:50% 58%}
.letter-seam.in-bloom img{animation:floral-unfurl 2.6s cubic-bezier(.22,1,.36,1) both}
@keyframes floral-unfurl{0%{opacity:0;clip-path:inset(0 50% 0 50%);transform:translateY(-53%) scale(.94)}25%{opacity:1}100%{opacity:1;clip-path:inset(0 0 0 0);transform:translateY(-53%) scale(1)}}
@media(prefers-reduced-motion:reduce){.letter-seam img{opacity:1;clip-path:none;transform:translateY(-53%)}.letter-seam.in-bloom img{animation:none}}
/* Match the first name letter's 240 ms delay after the video finishes. */
.letter-seam.in-bloom img{animation-delay:240ms}
/* Generated embossed stationery with real transparent rounded edges. */
.love-note{border-top:0;padding:35px 16px 90px}
.love-card{position:relative;max-width:580px;margin:auto;isolation:isolate;min-height:700px;display:grid;place-items:center;color:#fff}
.love-card-art{position:absolute;inset:0;width:100%;height:100%;z-index:-1;object-fit:fill}
.love-card-copy{width:65%;padding:135px 0 125px}
.love-note .eyebrow{font-size:9px;max-width:280px;margin:0 auto 28px;line-height:1.9}
.love-note h2{font-size:49px;line-height:1.1;margin-bottom:26px}
.love-note h2 em{display:block;font-size:1.45em;margin-top:9px}
.love-note p:not(.eyebrow){font-size:23px;line-height:1.55;margin-bottom:20px}
.love-note .desktop-break{display:none}
.love-note .ornament{font-size:32px;opacity:.8}
@media(max-width:767px){.love-card{min-height:570px;max-width:430px}.love-card-copy{width:64%;padding:100px 0 95px}.love-note .eyebrow{font-size:7px;letter-spacing:.12em;line-height:1.9;margin-bottom:24px}.love-note h2{font-size:36px}.love-note p:not(.eyebrow){font-size:21px;line-height:1.45}.love-note{padding:15px 12px 65px}}
/* Quiet capsule border: all copy stays safely inside the plain center. */
.love-card{max-width:540px;min-height:790px}
.love-card-copy{width:60%;padding:155px 0}
.love-note .ornament{display:none}
.love-note .eyebrow{max-width:240px}
@media(max-width:767px){.love-card{min-height:620px;max-width:430px}.love-card-copy{width:59%;padding:130px 0}.love-note h2{font-size:35px}.love-note p:not(.eyebrow){font-size:20px;line-height:1.5}.love-note .eyebrow{font-size:7px;line-height:1.9}}
/* Transparent rococo frame on the same ivory paper as the preceding section. */
.countdown{background:var(--paper);color:var(--wine);padding:10px 18px 85px}
.countdown-frame{position:relative;isolation:isolate;display:grid;place-items:center;max-width:600px;min-height:780px;margin:auto}
.countdown-frame-art{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;z-index:-1;pointer-events:none}
.countdown-copy{width:69%;padding:150px 0}
.countdown h2{font-size:47px;line-height:1.12}
.countdown h2 .script{font-size:1.5em}
.countdown .small{color:var(--muted);max-width:280px;margin:0 auto 18px}
.countdown .clock{gap:13px;margin:35px 0}
.countdown .clock div{min-width:53px}
.countdown .clock b{font-size:57px}
.countdown .text-link{font-size:9px}
@media(max-width:767px){.countdown{padding:0 10px 65px}.countdown-frame{min-height:610px;max-width:430px}.countdown-copy{width:67%;padding:110px 0}.countdown .eyebrow{font-size:8px;margin-bottom:22px}.countdown h2{font-size:35px;margin-bottom:24px}.countdown .clock{gap:5px;margin:30px 0}.countdown .clock div{min-width:43px;gap:10px}.countdown .clock b{font-size:40px}.countdown .clock span{font-size:6px;letter-spacing:.09em}.countdown .clock i{font-size:20px}.countdown .small{font-size:10px;max-width:200px}.countdown .text-link{font-size:8px;letter-spacing:.08em;gap:10px}}
/* Caption above the unchanged square-edged photograph; capsule overlaps below. */
.hero{padding-bottom:0}
.hero-photo figcaption{top:auto;bottom:calc(100% + 18px);left:0;width:100%;white-space:nowrap}
.hero-photo{margin-top:48px}
.love-note{position:relative;z-index:1;margin-top:-65px;padding-top:0}
@media(max-width:767px){.hero{padding-bottom:0}.hero-photo{margin-top:36px}.hero-photo figcaption{bottom:calc(100% + 16px);font-size:32px}.love-note{margin-top:-55px;padding-top:0}}
/* Let the calligraphic caption cross the upper photo edge like a signature. */
.hero-photo figcaption{top:19px;bottom:auto;left:50%;width:max-content;max-width:none;transform:translate(-50%,-50%) rotate(-5deg);z-index:1;font-size:clamp(35px,4vw,49px);line-height:1.2;text-shadow:0 1px 0 var(--paper),0 -1px 0 var(--paper)}
@media(max-width:767px){.hero-photo figcaption{top:15px;bottom:auto;font-size:35px}}
/* Increase the overlap between the photograph and burgundy capsule. */
.love-note{margin-top:-95px}
@media(max-width:767px){.love-note{margin-top:-80px}}
.hero-photo figcaption{font-size:clamp(40px,4.5vw,55px)}
@media(max-width:767px){.hero-photo figcaption{font-size:40px}}
/* The countdown unfolds from its upper crest, followed by its live content. */
.countdown.reveal{opacity:1;transform:none;transition:none}
.countdown .countdown-frame-art{opacity:0;clip-path:inset(0 0 100% 0)}
.countdown.visible .countdown-frame-art{animation:countdown-frame-reveal 2.4s cubic-bezier(.22,1,.36,1) both}
@keyframes countdown-frame-reveal{0%{opacity:0;clip-path:inset(0 0 100% 0)}18%{opacity:1}100%{opacity:1;clip-path:inset(0 0 0 0)}}
.countdown-copy> *{opacity:0;transform:translateY(12px)}
.countdown.visible .countdown-copy> *{animation:countdown-ink-arrive 1.4s cubic-bezier(.22,1,.36,1) both;animation-delay:var(--countdown-delay,.5s)}
.countdown-copy>.eyebrow{--countdown-delay:.45s}
.countdown-copy>h2{--countdown-delay:.75s}
.countdown-copy>.clock{--countdown-delay:1.1s}
.countdown-copy>.small{--countdown-delay:1.4s}
.countdown-copy>.text-link{--countdown-delay:1.65s}
@keyframes countdown-ink-arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.countdown .countdown-frame-art{opacity:1;clip-path:none}.countdown-copy> *{opacity:1;transform:none}.countdown.visible .countdown-frame-art,.countdown.visible .countdown-copy> *{animation:none}}
/* A slower, restrained reveal: frame first, then quiet fades of the text. */
.countdown.visible .countdown-frame-art{animation:countdown-frame-reveal 5.8s cubic-bezier(.45,0,.55,1) .25s both}
.countdown-copy> *{transform:none}
.countdown.visible .countdown-copy> *{animation:countdown-soft-fade 2.5s cubic-bezier(.4,0,.6,1) both;animation-delay:var(--countdown-delay,2.2s)}
.countdown-copy>.eyebrow{--countdown-delay:2.2s}
.countdown-copy>h2{--countdown-delay:2.8s}
.countdown-copy>.clock{--countdown-delay:3.5s}
.countdown-copy>.small{--countdown-delay:4.1s}
.countdown-copy>.text-link{--countdown-delay:4.6s}
@keyframes countdown-soft-fade{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.countdown.visible .countdown-frame-art,.countdown.visible .countdown-copy> *{animation:none;opacity:1;clip-path:none;transform:none}}
/* Keep the full caption's layout stable while connected script is typed. */
.hero-photo figcaption .caption-sizer{visibility:hidden;display:block}
.hero-photo figcaption .caption-ink{position:absolute;left:0;top:0;white-space:pre;text-align:left}
/* Preserve all calligraphic joins; a feathered ink reveal avoids typing jumps. */
.hero-photo figcaption{-webkit-mask-image:linear-gradient(to right,#000 0%,#000 42%,transparent 50%,transparent 100%);mask-image:linear-gradient(to right,#000 0%,#000 42%,transparent 50%,transparent 100%);-webkit-mask-size:240% 100%;mask-size:240% 100%;-webkit-mask-position:100% 0;mask-position:100% 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.hero-photo figcaption.signature-visible{animation:signature-ink 4.8s cubic-bezier(.4,0,.35,1) .3s both}
@keyframes signature-ink{from{-webkit-mask-position:100% 0;mask-position:100% 0}to{-webkit-mask-position:0% 0;mask-position:0% 0}}
@media(prefers-reduced-motion:reduce){.hero-photo figcaption{-webkit-mask-image:none;mask-image:none}.hero-photo figcaption.signature-visible{animation:none}}
/* A transparent curtain reveals the actual textured card, with no color seam. */
.curtain-line{display:block;clip-path:inset(-.25em -.45em -0.35em -.45em);white-space:pre}
.curtain-ink{display:block;opacity:0;transform:translateY(10px);clip-path:inset(0 -.45em 100% -.45em)}
.curtain-visible .curtain-ink{animation:card-line-curtain .9s cubic-bezier(.16,1,.3,1) var(--line-delay) both}
@keyframes card-line-curtain{from{opacity:0;transform:translateY(10px);clip-path:inset(-.25em -.45em 100% -.45em)}to{opacity:1;transform:translateY(0);clip-path:inset(-.25em -.45em -.35em -.45em)}}
.love-note h2 .curtain-line .script{display:inline;font-size:1.45em;margin:0}
@media(prefers-reduced-motion:reduce){.curtain-ink{opacity:1;transform:none;clip-path:none}.curtain-visible .curtain-ink{animation:none}}
/* Allow the card copy to settle into view before its slower curtain opens. */
.curtain-visible .curtain-ink{animation-duration:1.5s}
.countdown{padding-bottom:25px}
.celebration{padding-top:35px}
@media(max-width:767px){.countdown{padding-bottom:12px}.celebration{padding-top:20px}}
.hero-photo figcaption.signature-visible{animation-delay:0s}
.celebration{display:block;max-width:1000px;text-align:center}
.celebration .section-heading{max-width:560px;margin:0 auto 20px}
.venue-card{border:0;outline:0;background:transparent;padding:0;max-width:740px;margin:auto}
.venue-watercolor{width:100%;margin:0 auto 30px}
.venue-watercolor img{display:block;width:100%;height:auto;opacity:0;mask-image:linear-gradient(135deg,#000 38%,transparent 52%);mask-size:300% 300%;mask-position:100% 100%;mask-repeat:no-repeat}
.venue-watercolor.painted img{animation:watercolor-paint 6s cubic-bezier(.35,0,.3,1) both}
@keyframes watercolor-paint{0%{opacity:0;mask-position:100% 100%}20%{opacity:.3}65%{opacity:.75}100%{opacity:1;mask-position:0% 0%}}
.venue-card h3{font-size:42px;line-height:1.12;letter-spacing:.015em}
.venue-card .venue-city{font-style:italic;font-size:23px;margin-bottom:12px}
.venue-card #venueText{font-family:Georgia,serif;font-size:12px;color:var(--muted)}
.venue-card .venue-bottom{border:0;flex-direction:row;justify-content:center;gap:28px;padding-top:0}
@media(max-width:767px){.venue-card{padding:0}.venue-watercolor{width:calc(100% + 30px);margin-left:-15px;margin-bottom:28px}.venue-card h3{font-size:32px}.venue-card .venue-city{font-size:21px}.venue-card .venue-bottom{gap:15px}.venue-card .text-link{font-size:7px;gap:9px}}
@media(prefers-reduced-motion:reduce){.venue-watercolor img{opacity:1;mask-image:none}.venue-watercolor.painted img{animation:none}}
.itinerary .itinerary-title{font-family:Ambroise,Georgia,serif;line-height:1.05}
.itinerary-title>span{display:block}
.itinerary .itinerary-title>.script{font-family:Sloop,cursive;font-size:1.2em;font-weight:400;margin-top:8px;line-height:1.2}
/* A continuous botanical spine with alternating moments, composed for phones. */
.floral-timeline{position:relative;isolation:isolate;max-width:780px;padding:35px 0;margin:30px auto 24px}
.timeline-vine{position:absolute;inset:0;pointer-events:none;z-index:-1;clip-path:inset(0 0 calc(100% - var(--vine-progress,0%)) 0);transition:clip-path 1.1s cubic-bezier(.16,1,.3,1)}
.timeline-vine img{display:block;position:absolute;left:50%;transform:translateX(-50%);width:260px;height:100%;object-fit:fill}
.floral-timeline article,.floral-timeline article:first-child{position:relative;display:flex;flex-direction:column;justify-content:center;align-items:flex-end;text-align:right;width:38%;min-height:260px;gap:10px;padding:28px 0;border:0;opacity:0;transform:translateY(16px);transition:opacity 1.4s cubic-bezier(.16,1,.3,1),transform 1.4s cubic-bezier(.16,1,.3,1)}
.floral-timeline article:nth-of-type(even){margin-left:62%;text-align:left;align-items:flex-start}
.floral-timeline article.moment-visible{opacity:1;transform:none}
.floral-timeline .step{font-family:Sloop,cursive;font-size:40px;line-height:1;color:var(--wine)}
.floral-timeline .time{margin:5px 0 0;font-size:10px;color:var(--muted)}
.floral-timeline h3{font-size:36px;margin:10px 0}
.floral-timeline p{font-size:21px;line-height:1.4}
.vine-checkpoint{position:absolute;left:50%;height:1px;width:1px;pointer-events:none}
@media(max-width:767px){.itinerary{padding-left:20px;padding-right:20px}.floral-timeline{padding:25px 0}.timeline-vine img{width:155px}.floral-timeline article,.floral-timeline article:first-child{width:36%;min-height:245px;padding:18px 0;gap:8px}.floral-timeline article:nth-of-type(even){margin-left:64%}.floral-timeline h3{font-size:29px;line-height:1.1}.floral-timeline p{font-size:18px;line-height:1.4}.floral-timeline .eyebrow{font-size:6px;letter-spacing:.07em}.floral-timeline .step{font-size:34px}.floral-timeline .time{font-size:9px}}
@media(prefers-reduced-motion:reduce){.timeline-vine{clip-path:none}.floral-timeline article,.floral-timeline article:first-child{opacity:1;transform:none;transition:none}}
.itinerary .itinerary-title>span:not(.script){font-size:1.12em}
.itinerary .itinerary-title>.script{margin-top:-7px}
/* Fit the complete illustration without stretching its original proportions. */
.timeline-vine img{width:100%;height:100%;object-fit:contain}
.timeline-vine{transition:clip-path .65s cubic-bezier(.16,1,.3,1)}
@media(max-width:767px){.floral-timeline article,.floral-timeline article:first-child{width:31%}.floral-timeline article:nth-of-type(even){margin-left:69%}.floral-timeline h3{font-size:27px}.floral-timeline p{font-size:17px}}
.wide-photo.oval-photo{height:auto;background:var(--paper);padding:35px 20px 50px;text-align:center}
.oval-photo-card{position:relative;width:100%;max-width:520px;aspect-ratio:2/3;margin:0 auto}
.oval-photo-card .oval-card-art{display:block;width:100%;height:100%;object-fit:contain;opacity:1}
.oval-photo-card .oval-couple{position:absolute;left:18%;top:15%;width:64%;height:70%;object-fit:cover;object-position:62% 50%;border-radius:50%;opacity:1}
.wide-photo.oval-photo figcaption{position:static;color:var(--wine);font-family:Sloop,cursive;font-size:clamp(34px,5vw,65px);line-height:1.3;text-shadow:none;padding:0;margin:28px auto 0;max-width:650px}
@media(max-width:767px){.wide-photo.oval-photo{padding:25px 15px 35px}.wide-photo.oval-photo figcaption{font-size:37px;margin-top:22px}}
.details-title>span{display:block;font-family:Ambroise,Georgia,serif;line-height:1.05}
.details-title>.script{font-family:Sloop,cursive;font-size:1.2em;line-height:1.2;margin-top:-7px}
/* Original neutral ivory frame; clip the preview backdrop outside its ellipse. */
.oval-photo-card .oval-card-art{clip-path:ellipse(46% 47% at 50% 49.3%)}
.oval-photo-card .oval-couple{left:21.8%;top:16%;width:57.4%;height:66.6%;object-position:62% 50%}
/* Bring the framed photograph closer to the floral itinerary. */
.itinerary{padding-bottom:25px}
.floral-timeline{margin-bottom:0;padding-bottom:0}
.wide-photo.oval-photo{padding-top:0}
.details-title>span:not(.script){font-size:1.12em}
.details-title>.script{font-size:1.05em}
@media(max-width:767px){.itinerary{padding-bottom:12px}.wide-photo.oval-photo{padding-top:0}}
.stay-watercolor{display:block;width:100%;max-width:390px;height:auto;margin:30px auto}
.stay-detail h4{font-family:Ambroise,Georgia,serif;font-size:33px;font-weight:400;margin:0 0 8px}
.stay-detail .hotel-collection{font-family:Georgia,serif;font-size:10px;letter-spacing:.04em;margin-bottom:15px}
.stay-detail .hotel-address{font-size:20px;line-height:1.4}
@media(max-width:767px){.stay-watercolor{max-width:320px;margin:25px auto}}
/* Editorial stagger: letters drift up and right into their final position. */
.itinerary-title>span,.details-title>span{overflow:visible}
.title-character{display:inline-block;white-space:pre;opacity:0;transform:translate(-7px,24px);vertical-align:baseline}
.characters-visible .title-character{animation:title-character-arrive 1.1s cubic-bezier(.16,1,.3,1) var(--character-delay) both}
@keyframes title-character-arrive{from{opacity:0;transform:translate(-7px,24px)}to{opacity:1;transform:translate(0,0)}}
@media(prefers-reduced-motion:reduce){.title-character{opacity:1;transform:none}.characters-visible .title-character{animation:none}}
.stay-painting{margin:30px auto;max-width:430px}
.stay-painting .stay-watercolor{max-width:none;margin:0;opacity:0;mask-image:linear-gradient(135deg,#000 38%,transparent 52%);mask-size:300% 300%;mask-position:100% 100%;mask-repeat:no-repeat}
.stay-painting.painted .stay-watercolor{animation:watercolor-paint 6s cubic-bezier(.35,0,.3,1) both}
@media(prefers-reduced-motion:reduce){.stay-painting .stay-watercolor{opacity:1;mask-image:none}.stay-painting.painted .stay-watercolor{animation:none}}
.dress-detail{text-align:center}
.dress-detail>p{margin-left:auto;margin-right:auto}
.dress-stationery{position:relative;width:100%;max-width:620px;margin:15px auto 24px}
.dress-paper{display:block;width:100%;height:auto}
.dress-gallery{position:absolute;left:29%;top:24%;width:44%;height:41%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));gap:6px 3px;align-items:center;justify-items:center}
.dress-gallery img{display:block;width:100%;height:100%;object-fit:contain}
.dress-gallery img:last-child{grid-column:2}
.dress-detail .dress-palette{font-family:Georgia,serif;font-size:11px;line-height:2;color:var(--wine)}
@media(min-width:768px){.detail-grid{align-items:start}.dress-stationery{width:calc(100% + 80px);max-width:none;margin-left:-40px}}
@media(max-width:767px){.dress-stationery{width:calc(100% + 40px);margin-left:-20px}.dress-detail .dress-palette{font-size:10px}}
.detail-grid article{border-top:0}
.gifts{border-top:0}
.gift-present{position:relative;width:100%;max-width:440px;margin:auto;container-type:inline-size}
.gift-present>img{display:block;width:100%;height:auto}
.gift-tag{position:absolute;left:31.2%;top:71.8%;width:38.1%;height:15.5%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--wine);font-family:Ambroise,Georgia,serif;font-size:7cqw;line-height:.8;gap:3px}
.gift-tag .script{font-family:Sloop,cursive;font-size:9cqw;line-height:.9}
.gifts-title>span{display:block;font-family:Ambroise,Georgia,serif;line-height:1.05}
.gifts .gifts-title>.script{font-family:Sloop,cursive;font-size:1.2em;line-height:1.2;margin-top:-7px}
@media(max-width:767px){.gift-present{max-width:350px}.gifts{gap:42px}.gifts .gifts-title{font-size:48px}}
/* Six shades, arranged as three pairs on the invitation paper. */
.dress-gallery{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));column-gap:9px}
.dress-gallery img:last-child{grid-column:auto}
.dress-detail>h3,.dress-detail>p:not(.dress-palette){text-align:right;margin-left:auto;margin-right:0}
.dress-gallery img{opacity:0;clip-path:inset(0 0 100% 0);filter:grayscale(1);transform:translateY(7px)}
.dress-gallery.colors-revealed img{animation:dress-color-reveal 1.8s cubic-bezier(.16,1,.3,1) both;animation-delay:var(--dress-delay)}
.dress-gallery img:nth-child(1){--dress-delay:0s}.dress-gallery img:nth-child(2){--dress-delay:.18s}.dress-gallery img:nth-child(3){--dress-delay:.36s}.dress-gallery img:nth-child(4){--dress-delay:.54s}.dress-gallery img:nth-child(5){--dress-delay:.72s}.dress-gallery img:nth-child(6){--dress-delay:.9s}
@keyframes dress-color-reveal{0%{opacity:0;clip-path:inset(0 0 100% 0);filter:grayscale(1);transform:translateY(7px)}45%{opacity:1;filter:grayscale(1)}100%{opacity:1;clip-path:inset(0);filter:grayscale(0);transform:none}}
@media(prefers-reduced-motion:reduce){.dress-gallery img{opacity:1;clip-path:none;filter:none;transform:none}.dress-gallery.colors-revealed img{animation:none}}
/* Larger dresses, grouped more closely within the blank card. */
.dress-gallery{left:33%;width:36%;top:24%;height:43%;gap:0}
.dress-gallery img{width:112%;height:108%;max-width:none}
.dress-gallery img{width:128%;height:112%}
.playlist{background:var(--paper);display:flex;flex-direction:column;gap:0;text-align:center}
.playlist-title>span{display:block;font-family:Ambroise,Georgia,serif;line-height:1.05}
.playlist .playlist-title>.script{font-family:Sloop,cursive;font-size:1.2em;line-height:1.2;margin-top:-7px}
.playlist>p{margin-bottom:25px}
/* Shared square coordinates keep all three original layers aligned at every size. */
.turntable{position:relative;width:100%;max-width:540px;aspect-ratio:1;margin:0 auto 15px}
/* Bottom layer: stationary original base. */
.turntable-base{display:block;width:100%;height:auto}
/* Centered at the base spindle: (44.8%, 46.9%). Placement never rotates. */
.vinyl-position{position:absolute;left:10.8%;top:12.9%;width:68%;aspect-ratio:1}
/* Middle layer: only the vinyl rotates, around its exact central spindle. */
.turntable-vinyl{display:block;width:100%;height:auto;transform-origin:50% 50%;animation:vinyl-spin 2.25s linear infinite;animation-play-state:paused}
.turntable.is-playing .turntable-vinyl{animation-play-state:running}
/* Top layer: stationary tonearm, pivot aligned with the base mounting point. */
.turntable-arm{position:absolute;left:44.2%;top:18.9%;width:42%;height:auto;pointer-events:none}
@keyframes vinyl-spin{to{transform:rotate(360deg)}}
.music-controls{width:100%;max-width:420px;margin:0 auto 15px}
.song-choice{width:100%;display:flex;align-items:center;gap:15px;text-align:left;background:transparent;border:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:20px 0;color:var(--wine)}
.song-choice strong{display:block;font-size:28px;font-weight:400}.song-choice small{display:block;font-family:Georgia,serif;font-size:11px;margin-top:5px}.song-symbol{font-size:30px}.song-indicator{margin-left:auto;font-family:Georgia,serif;font-size:8px;letter-spacing:.08em}.song-choice[aria-current=true]{background:#651c2d06}
.music-toggle{margin:22px auto 15px;min-width:190px}.playlist #musicStatus{font-size:11px;min-height:20px}
@media(max-width:767px){.playlist .playlist-title{font-size:50px}.turntable{width:calc(100% + 24px);max-width:430px}.song-choice strong{font-size:26px}}
/* Handwritten tag, preserving the exact font shapes and joins. */
.gift-tag>span{mask-image:linear-gradient(to right,#000 42%,transparent 50%);mask-size:240% 100%;mask-position:100% 0;mask-repeat:no-repeat}
.gift-tag.written>span{animation:signature-ink 2.1s cubic-bezier(.4,0,.35,1) both}
.gift-tag.written>.script{animation-delay:1.2s;animation-duration:2.8s}
/* Pressed lettering above the tactile burgundy RSVP card. */
.rsvp .rsvp-embossed{font-family:Ambroise,Georgia,serif;font-size:clamp(90px,15vw,150px);letter-spacing:.08em;font-weight:400;line-height:1;color:#d9cebb;text-shadow:1px 2px 1px #fffaf0,-1px -1px 1px #9f8a6b,0 1px 0 #b8a88d;margin:0 0 35px}
.rsvp{max-width:850px}
.rsvp-card{position:relative;isolation:isolate;max-width:650px;margin:0 auto;color:#fff}
.rsvp-card-art{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;z-index:-1;pointer-events:none}
.rsvp-card-content{width:64%;margin:auto;padding:150px 0}
.rsvp-card-content>p{font-size:22px;text-align:center;line-height:1.4}
.rsvp-card form{width:100%;margin:30px auto 0}
.rsvp-card label,.rsvp-card legend{color:#fff;font-size:11px;line-height:1.6}
.rsvp-card input:not([type=radio]),.rsvp-card textarea{color:#fff;border-color:#fff6;font-size:21px}
.rsvp-card input::placeholder,.rsvp-card textarea::placeholder{color:#e7d4d6;opacity:1}
.rsvp-card input[type=radio]{accent-color:#f5f0e5}
.rsvp-card .radio-option{display:flex;margin:6px 0;font-size:11px}
.rsvp-card .primary{background:var(--paper);color:var(--wine);border-color:var(--paper);padding-left:18px;font-size:9px;letter-spacing:.05em}
.rsvp-card .primary span{border-color:var(--line)}
.rsvp #formStatus{font-size:18px;color:white}
.rsvp .rsvp-signoff{font-family:Sloop,cursive;font-size:clamp(43px,6vw,72px);line-height:1.3;margin:30px 0 0}
@media(max-width:767px){.rsvp{padding-left:8px;padding-right:8px}.rsvp-card-content{width:60%;padding:115px 0}.rsvp-card-content>p{font-size:21px}.rsvp-card input:not([type=radio]),.rsvp-card textarea{font-size:19px}.rsvp-card .primary{gap:8px;padding-left:12px;padding-right:10px;font-size:8px}.rsvp-card label,.rsvp-card legend{font-size:10px}}
@media(prefers-reduced-motion:reduce){.gift-tag>span{mask-image:none}.gift-tag.written>span{animation:none}}
.rsvp .rsvp-embossed{margin-bottom:4px}
.rsvp .rsvp-signoff{margin:0 0 30px}
.rsvp{padding-bottom:0}
/* A text-only action pressed into the burgundy paper, still a real button. */
.rsvp-card .primary{background:transparent;border:0;border-radius:0;box-shadow:none;color:#f3dce0;text-shadow:0 1px 0 #2f0714,0 -1px 0 #ffffff38;justify-content:center;padding:15px 0;font-family:Ambroise,Georgia,serif;font-size:22px;letter-spacing:.04em;gap:12px}
.rsvp-card .primary span{border:0;border-radius:0;font-size:25px;width:auto;height:auto}
.rsvp-card .primary:hover{color:#fff4f4}
footer.closing{position:relative;z-index:1;background:var(--paper);color:var(--wine);padding:0 8px 45px;margin:-95px auto 0;max-width:850px;background:transparent}
.closing-card{position:relative;isolation:isolate;max-width:650px;min-height:600px;margin:auto;display:grid;place-items:center}
.closing-card>img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;z-index:-1}
.closing-copy{width:59%;padding:110px 0;text-align:center}
.closing-copy .closing-thanks{font-family:Sloop,cursive;font-size:72px;line-height:1.2;margin:0 0 25px}
.closing-copy>p{font-size:23px;line-height:1.45;margin-bottom:20px}
.closing-copy .closing-signature{font-family:Ambroise,Georgia,serif;font-size:30px;margin:25px 0 0}
@media(max-width:767px){.rsvp{padding-bottom:0}footer.closing{margin-top:-85px}.closing-card{min-height:480px}.closing-copy{padding:95px 0;width:58%}.closing-copy .closing-thanks{font-size:56px}.closing-copy>p{font-size:20px}.closing-copy .closing-signature{font-size:27px}.rsvp-card .primary{font-size:19px}}
/* Optical alignment accounts for Sloop's asymmetrical flourishes. */
.gifts-title>.script,.playlist-title>.script,.rsvp-signoff>.script,.closing-thanks>.script{transform:translateX(var(--optical-shift,0px))}
.rsvp-signoff>.script,.closing-thanks>.script{display:block}
.playlist{padding-bottom:35px}
.rsvp{padding-top:35px}
@media(max-width:767px){.playlist{padding-bottom:20px}.rsvp{padding-top:25px}}

/* Small optical corrections for the script capitals and their flourishes. */
.rsvp-signoff>.script{transform:translateX(calc(var(--optical-shift,0px) - .12em))}
.itinerary-title>.script,.details-title>.script{transform:translateX(-.12em)}
