@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,400;9..144,500&family=Gloock&family=Libre+Caslon+Display&family=Lora:wght@400&family=Newsreader:opsz,wght@6..72,400&family=Playfair+Display:wght@400&family=Young+Serif&display=swap');
:root{--paper:#fefbee;--ink:#68472d;--blue:#3d5488;--orange:#b76132;--line:#d9cbb1;font-family:'DM Sans',sans-serif;color:var(--ink);background:var(--paper);color-scheme:light;font-size:16px}*{box-sizing:border-box}body{margin:0}button,input,textarea{font:inherit}button{cursor:pointer}a{color:inherit}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--blue);outline-offset:5px}[hidden]{display:none!important}.sr-only,.skip:not(:focus){position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.skip:focus{position:fixed;z-index:5;background:var(--paper);padding:16px}.paper{max-width:1440px;min-height:100svh;margin:0 auto;background:var(--paper);position:relative;padding:0 64px;overflow:hidden}.page-edge{position:absolute;inset:18px;border:1px solid #bba78370;pointer-events:none}.masthead{max-width:990px;margin:auto;display:grid;grid-template-columns:1fr 160px 1fr;align-items:center;padding-top:36px;gap:40px}.header-note{font-size:10px;letter-spacing:.23em;line-height:1.6}.header-note:last-child{text-align:right}.logo{display:block;width:160px;aspect-ratio:1290/1020;overflow:hidden;position:relative;mix-blend-mode:multiply;}.logo img{position:absolute;max-width:none;width:113.5659%;height:auto;left:-7.2093%;top:-25.4902%}.invitation{text-align:center}.save-date{width:min(520px,78%);aspect-ratio:704/103;margin:22px auto 0;overflow:hidden;position:relative;mix-blend-mode:multiply}.save-date img{position:absolute;max-width:none;width:208.094%;height:auto;left:-52.8409%;top:-155.3398%}.date-line{font-size:11px;letter-spacing:.24em;font-weight:500;margin:17px 0 0}.house{position:relative;max-width:800px;width:85%;aspect-ratio:810/330;overflow:hidden;margin:28px auto 5px;mix-blend-mode:multiply}.house img{position:absolute;max-width:none;width:100%;height:auto;left:0;top:-40%}.venue{margin-top:20px}.venue-eyebrow{font-size:9px;letter-spacing:.25em;margin:0 0 9px}.venue h2{font:400 clamp(36px,4.4vw,53px)/1.05 'Fraunces',Georgia,serif;letter-spacing:-.055em;margin:0}.venue-location{font-size:13px;margin:11px 0 0;letter-spacing:.035em}.rsvp-button{display:inline-flex;align-items:center;gap:48px;justify-content:center;min-width:206px;min-height:55px;margin-top:27px;padding:15px 26px;border:1px solid var(--blue);border-radius:47% 4% 43% 4% / 5% 46% 5% 48%;background:var(--blue);color:var(--paper);font-size:14px;box-shadow:3px 4px 0 #3d548820;transition:background .2s}.rsvp-button:hover{background:#304578}.rsvp-button span{font-size:18px}.love-note{font:italic 16px/1.5 Georgia,serif;margin:15px 0 0;color:#88694e}.tile-art{position:relative;width:115px;aspect-ratio:571/201;overflow:hidden;margin:26px auto 28px;mix-blend-mode:multiply}.tile-art img{position:absolute;max-width:none;width:256.5674%;height:auto;left:-80.5604%;top:-793.0348%}footer{max-width:990px;margin:auto;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:20px 0 30px;font-size:10px;letter-spacing:.09em}footer a{text-underline-offset:4px}footer span{font-size:9px;letter-spacing:.16em}body:has(dialog[open]){overflow:hidden}
/* An RSVP tucked inside the invitation. */
dialog{border:1px solid var(--line);border-radius:6px;max-width:550px;width:calc(100% - 32px);max-height:calc(100svh - 40px);padding:43px 40px 35px;background:var(--paper);color:var(--ink);box-shadow:0 25px 100px #24190e33}dialog::backdrop{background:#302c2166;backdrop-filter:blur(5px)}.close-dialog{position:absolute;right:17px;top:10px;width:36px;height:36px;border:0;background:none;color:var(--ink);font-size:30px;font-weight:400}.eyebrow{font-size:11px;letter-spacing:.17em;line-height:1.7;margin:0 0 12px;color:var(--blue);font-weight:600}.rsvp-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.rsvp-heading h2{font:400 38px/1.1 Fraunces,Georgia,serif;letter-spacing:-.04em;margin:0 0 12px}.number{font-size:12px;white-space:nowrap;color:var(--blue)}.intro{font-size:14px;line-height:1.65;margin:0 0 24px}.field{margin-bottom:19px}label,legend{font-size:14px;font-weight:500}label>span:not(.optional),legend>span{color:var(--orange)}.field label{display:block;margin-bottom:9px}input:not([type=radio]),textarea{width:100%;background:transparent;border:1px solid #beac8e;border-radius:3px;padding:13px 14px;color:var(--ink);font-size:16px}input::placeholder,textarea::placeholder{color:#8b7a62;opacity:1}textarea{resize:vertical;min-height:75px;line-height:1.5}.hint{font-size:12px;margin:7px 0 0;line-height:1.55;color:#807057}fieldset{padding:0;border:0;margin:24px 0}legend{margin-bottom:12px}.choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}.choice{display:flex;align-items:center;gap:8px;border:1px solid #beac8e;border-radius:3px;min-height:58px;padding:12px;cursor:pointer;font-size:13px}.choice:has(input:checked){background:#e9edec;border:1.5px solid var(--blue);color:var(--blue)}.choice input{accent-color:var(--blue);width:15px;height:15px;margin:0;flex-shrink:0}.choice>span{color:inherit!important}.choice-symbol{margin-left:auto;font-size:22px}.primary{width:100%;min-height:54px;border:1px solid var(--blue);border-radius:3px;background:var(--blue);color:var(--paper);padding:15px 20px;font-size:14px;display:flex;align-items:center;justify-content:space-between;gap:20px;transition:background .2s}.primary:hover{background:#273d6b}.primary:disabled{opacity:.65;cursor:wait}.optional{font-size:12px;font-weight:400;margin-left:5px;opacity:.7}.privacy{font-size:12px;line-height:1.6;margin:8px 0 20px;opacity:.8}.actions{display:flex;gap:20px;align-items:center}.back{border:0;background:none;color:var(--ink);font-size:14px;white-space:nowrap;padding:10px 0}.honey{position:absolute;left:-10000px}#error{color:#9d321d;line-height:1.6;font-size:14px}#success{padding:22px 0 35px}#success h3{font:400 36px Fraunces,Georgia,serif;margin:12px 0}#success p{line-height:1.6}.success-mark{font-size:52px;color:var(--orange)}.confirmation{font-size:13px;font-weight:600;color:var(--blue)}.small{font-size:13px;line-height:1.65}.text-link{font-size:14px;text-underline-offset:4px}
@media(min-width:1400px){.masthead{padding-top:42px}.save-date{margin-top:30px}.house{margin-top:34px}.venue{margin-top:26px}.tile-art{margin-bottom:35px}}@media(max-width:700px){.paper{padding:0 27px}.page-edge{inset:10px}.masthead{grid-template-columns:1fr 130px 1fr;gap:5px;padding-top:30px}.logo{width:130px}.header-note{font-size:8px;letter-spacing:.11em;max-width:80px}.header-note:last-child{justify-self:end}.save-date{width:96%;margin-top:32px}.date-line{font-size:10px;letter-spacing:.15em;margin-top:18px}.house{width:calc(100% + 18px);max-width:none;margin:35px -9px 0;aspect-ratio:810/330}.venue{margin-top:31px}.venue h2{font-size:39px}.venue-eyebrow{font-size:9px;margin-bottom:12px}.venue-location{font-size:13px}.rsvp-button{margin-top:26px;min-height:56px}.love-note{font-size:14px}.tile-art{margin-top:29px;margin-bottom:30px}footer{gap:12px;padding-bottom:28px;flex-wrap:wrap;font-size:10px}footer span{margin-left:auto}dialog{padding:40px 24px 28px}.rsvp-heading h2{font-size:34px}.choice{padding:12px 9px;font-size:12px}.choice-symbol{display:none}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.house img{filter:brightness(1.08)}
.header-note{font-size:12px;letter-spacing:.15em}.date-line{font-size:12px;letter-spacing:.2em}.venue-eyebrow{font-size:12px;letter-spacing:.2em}footer,footer span{font-size:12px}footer span{letter-spacing:.1em}@media(max-width:700px){.masthead{display:flex;justify-content:center}.header-note{display:none}.date-line{font-size:12px;letter-spacing:.1em}.venue-eyebrow{font-size:12px}footer,footer span{font-size:12px}}

.logo{clip-path:polygon(0 0,100% 0,100% 82%,40% 82%,40% 100%,0 100%)}
.date-art{position:relative;width:152px;aspect-ratio:632/302;overflow:hidden;margin:20px auto 0}
.date-art img{position:absolute;max-width:none;width:231.8038%;height:auto;left:-99.6835%;top:-367.5497%}
@media(max-width:700px){.date-art{width:132px;margin-top:20px}}

/* A continuous sheet of the illustration's pale yellow paper. */
body{background:var(--paper)}
.house{mix-blend-mode:normal;mask-image:linear-gradient(to bottom,transparent,#000 5%,#000 95%,transparent)}
.house img{filter:none}
.venue h2{font-family:var(--venue-font,'Fraunces'),Georgia,serif;font-weight:400;font-size:clamp(42px,4.8vw,60px);line-height:1.12;letter-spacing:var(--venue-tracking,-.055em)}
footer span{letter-spacing:.025em}
.font-picker{margin:18px auto 0}
.font-picker button{display:inline-flex;align-items:center;gap:9px;min-height:38px;padding:8px 15px;border:1px solid #68472d35;border-radius:24px;background:transparent;color:var(--ink);font-size:12px;letter-spacing:0}
.font-picker button:hover{background:#68472d08}
.font-picker p{font-size:10px;letter-spacing:.04em;margin:6px 0 0;opacity:.65}
/* The RSVP occupies the viewport, with a quiet, centered reading column. */
dialog{position:fixed;inset:0;margin:0;width:100%;max-width:none;height:100%;height:100dvh;max-height:none;border:0;border-radius:0;box-shadow:none;padding:100px 28px 60px;overflow-y:auto;overscroll-behavior:contain}
dialog::backdrop{background:var(--paper);backdrop-filter:none}
#rsvp{width:100%;max-width:540px;margin:0 auto}
.close-dialog{position:fixed;top:20px;right:28px;display:flex;align-items:center;gap:14px;width:auto;height:44px;padding:0 12px;background:var(--paper);z-index:2}
.close-label{font-size:12px;letter-spacing:.02em}
.rsvp-heading h2{font-family:'Fraunces',Georgia,serif;font-size:48px;letter-spacing:-.025em}
.intro{max-width:470px;margin-bottom:30px}
@media(max-width:700px){dialog{padding:90px 24px 40px}.close-dialog{right:12px;top:14px}.rsvp-heading h2{font-size:40px}.venue h2{font-size:44px}footer{padding-top:14px}}

/* Fit the invitation to the available screen, reserving space for its controls. */
.paper{height:100svh;height:100dvh;min-height:0;max-width:none;padding:clamp(10px,2dvh,24px) clamp(16px,4vw,64px);display:flex;flex-direction:column;gap:clamp(6px,1.2dvh,14px)}
.masthead{display:flex;justify-content:center;flex:0 0 auto;margin:0;padding:0;max-width:none;gap:0}
.logo{width:min(140px,17dvh,30vw);flex:none}
.invitation{display:flex;flex-direction:column;align-items:center;gap:clamp(5px,1.1dvh,13px);flex:1;min-height:0;width:100%;max-width:1080px;margin:0 auto}
.save-date{width:min(460px,54dvh,88vw);margin:0;flex:none}
.date-art{width:min(128px,15dvh,28vw);margin:0;flex:none}
.house{flex:1;min-height:0;width:100%;max-width:820px;aspect-ratio:auto;margin:0;display:flex;align-items:center;justify-content:center;container-type:size;overflow:visible;mask-image:none}
.house-art{position:relative;width:min(100cqw,245.4545cqh);aspect-ratio:810/330;overflow:hidden;mask-image:linear-gradient(to bottom,transparent,#000 5%,#000 95%,transparent)}
.venue{margin:0;flex:none;width:100%}
.venue h2{font-size:clamp(28px,min(5.5dvh,8.5vw),54px);line-height:1.1}
.venue-location{margin:5px 0 0;font-size:clamp(11px,1.6dvh,13px)}
.rsvp-button{flex:none;margin:0;min-height:44px;height:clamp(44px,6dvh,54px);padding:10px 25px}
.tile-art{flex:none;width:min(102px,12dvh);margin:0}
footer{flex:none;max-width:none;width:100%;margin:0;padding:0;min-height:24px;gap:10px;flex-wrap:nowrap;font-size:clamp(10px,1.5dvh,12px);letter-spacing:.025em}
footer span{font-size:inherit;white-space:nowrap}
footer a{padding:5px 0;white-space:nowrap}
.font-picker{margin:7px auto 0}
.font-picker button{min-height:32px;padding:5px 12px;font-size:11px}
.font-picker p{display:none}
@media(max-height:540px) and (min-aspect-ratio:6/5){
 .paper{padding:12px 28px}
 .masthead{position:absolute;top:14px;left:26%;transform:translateX(-50%)}
 .logo{width:min(110px,25dvh)}
 .invitation{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr) auto auto auto;column-gap:24px;row-gap:6px;max-width:1100px;width:100%;height:100%;align-items:center;justify-items:center}
 .save-date{grid-column:2;grid-row:1;width:min(280px,65dvh,100%)}
 .date-art{grid-column:2;grid-row:2;width:min(90px,22dvh)}
 .house{grid-column:1;grid-row:1/6;align-self:stretch;max-width:none;width:100%;height:100%;padding-top:min(105px,29dvh)}
 .venue{grid-column:2;grid-row:3}
 .venue h2{font-size:clamp(26px,8dvh,40px)}
 .rsvp-button{grid-column:2;grid-row:4;min-width:180px}
 .tile-art{grid-column:2;grid-row:5;width:min(75px,18dvh)}
 footer{grid-column:1/-1;grid-row:6}
 .font-picker{margin-top:4px}
}

.celebrating-at{margin:0 0 6px;font-size:clamp(10px,1.5dvh,12px);letter-spacing:.065em;line-height:1.3}
.rsvp-button{position:relative;background:transparent;border:0;border-radius:0;color:var(--ink);box-shadow:none;font-family:'Fraunces',Georgia,serif;font-size:16px;gap:34px}
.rsvp-button:hover,.rsvp-button:active{background:transparent;color:#4c301d;box-shadow:none}
.rsvp-button .button-outline{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.rsvp-button>span{position:relative}
.rsvp-button .button-label{font-size:16px}
@media(max-height:540px) and (min-aspect-ratio:6/5){.celebrating-at{margin-bottom:3px;font-size:10px}}

.venue-map{cursor:pointer;text-decoration:none;text-underline-offset:6px;text-decoration-thickness:1px}.venue-map:hover{text-decoration:underline}footer{justify-content:center;text-align:center}footer span{margin-left:0}
