@font-face {
  font-family: 'Lora';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/invitation-0.woff2) format('truetype');
}
@font-face {
  font-family: 'Lora';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/invitation-1.woff2) format('truetype');
}
@font-face {
  font-family: 'Lora';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/invitation-2.woff2) format('truetype');
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/invitation-3.woff2) format('truetype');
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/invitation-4.woff2) format('truetype');
}

:root{--paper:#f6f0e5;--ink:#372c28;--wine:#823d46;--line:#d4c9ba;--muted:#6e625a;--white:#fffdf7}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:400 16px/1.5 'Source Sans 3',Arial,sans-serif;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.035' filter='url(%23n)'/%3E%3C/svg%3E")}a{color:inherit}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}:focus-visible{outline:3px solid var(--wine);outline-offset:4px}header{max-width:1320px;margin:auto;padding:24px 48px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:16px}header>span{font-size:14px;color:var(--muted)}.brand{text-decoration:none;font-size:24px;letter-spacing:.1em}.brand span{color:var(--wine)}.rsvp-link{padding:12px 16px;border:1px solid var(--line);border-radius:4px;text-decoration:none;font-size:14px}main{max-width:1200px;margin:auto;display:grid;grid-template-columns:1.15fr 1fr;gap:96px;padding:64px 48px 48px;align-items:start}.eyebrow{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--wine);font-weight:600}h1{position:relative;font:400 clamp(72px,8vw,112px)/.95 'Lora',Georgia,serif;margin:32px 0 16px;color:var(--wine)}h1>span:first-child{display:block;font:400 32px/1.2 'Source Sans 3',Arial,sans-serif;letter-spacing:-.04em;color:var(--ink);margin-bottom:8px}.drawn-heart{display:inline-block;width:64px;vertical-align:top;transform:rotate(9deg);margin:16px 0 0 8px}.drawn-heart svg{width:100%;fill:none;stroke:var(--wine);stroke-width:2.5;stroke-linecap:round}.handwritten{font-family:'Lora',Georgia,serif;font-size:32px;line-height:1.2}.subtitle{margin:0 0 32px;font-size:24px;color:var(--muted)}.letter p{max-width:30em;margin:16px 0}.date-ticket{display:flex;border:1px solid var(--line);background:#fffaf0;border-radius:4px;position:relative}.date-number{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:96px;padding:16px;border-right:1px dashed #b5a590;color:var(--wine)}.date-number span{font-size:12px;letter-spacing:.12em}.date-number strong{font-size:48px;line-height:1.2;font-weight:400}.ticket-details{padding:24px;display:flex;flex-direction:column;gap:4px}.ticket-details strong{font-weight:600}.ticket-details small{font-size:12px;color:var(--muted);margin-top:8px}.birthday-note{font-size:12px;color:var(--muted);margin:12px 0 32px}.table-note{border-left:2px solid var(--wine);padding-left:24px}.table-note .handwritten{color:var(--wine)}.table-note p{font-size:14px;margin:8px 0}.countdown{margin-top:32px}.countdown p{font-size:20px;font-variant-numeric:tabular-nums;margin:8px 0}.rsvp{position:relative;background:var(--white);border:1px solid var(--line);box-shadow:8px 8px 0 #e9dfd0;padding:32px;scroll-margin-top:24px}.card-top{display:flex;justify-content:space-between;color:var(--wine);font-size:12px;letter-spacing:.12em;border-bottom:1px solid var(--line);padding-bottom:16px}.card-top span:last-child{font-size:24px;line-height:1}h2{font:400 48px/1.1 'Lora',Georgia,serif;color:var(--wine);margin:24px 0 8px}.form-intro{font-size:14px;color:var(--muted);margin:0 0 32px}label,legend{font-size:14px;font-weight:600}form>label,#guest-fields>label{display:block;margin:24px 0 8px}label span{font-weight:400}input:not([type=radio]),select{width:100%;min-height:48px;padding:12px;border:1px solid #a99a89;border-radius:4px;background:transparent;color:var(--ink)}input::placeholder{color:var(--muted)}fieldset{border:0;padding:0;margin:24px 0}legend{margin-bottom:12px}.attendance-options{display:grid;grid-template-columns:1fr 1fr 1.3fr;gap:8px}.attendance-options label{position:relative;cursor:pointer}.attendance-options input{position:absolute;opacity:0;width:1px;height:1px}.attendance-options span{display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;border:1px solid var(--line);border-radius:4px;padding:8px;font-size:14px}.attendance-options b{font-weight:400}.attendance-options input:checked+span{background:#f3e6e4;border-color:var(--wine);color:var(--wine);box-shadow:inset 0 0 0 1px var(--wine)}.attendance-options input:focus-visible+span{outline:3px solid var(--wine);outline-offset:4px}.guest-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.guest-row>span{font-size:14px;color:var(--muted)}.stepper{display:flex;align-items:center}.stepper button{width:48px;min-height:48px;background:transparent;border:1px solid var(--line);color:var(--ink);cursor:pointer;font-size:20px}.stepper input{width:48px!important;padding:8px!important;text-align:center;border:0!important;-moz-appearance:textfield}.stepper input::-webkit-inner-spin-button{appearance:none}.primary{width:100%;display:flex;justify-content:space-between;align-items:center;min-height:56px;border:1px solid #71333d;border-radius:4px;background:linear-gradient(170deg,#985360,#753440);color:#fffdf7;padding:16px 24px;margin-top:32px;cursor:pointer;box-shadow:inset 0 1px 0 #ffffff38}.primary:hover{background:#743440}.primary:disabled{opacity:.6;cursor:wait}.privacy{font-size:12px;color:var(--muted);margin:12px 0 0}.card-bottom{font:400 24px/1.2 'Lora',Georgia,serif;text-align:center;color:var(--muted);border-top:1px dashed var(--line);padding-top:24px;margin-top:24px}#status{font-size:16px;margin:24px 0 0}#status:empty{display:none}.saved{border-left:2px solid var(--wine);padding-left:16px}.pending::before{content:'● ● ●';color:var(--wine);display:block;animation:pulse 1s ease-in-out infinite alternate}footer{max-width:1104px;margin:0 auto;padding:32px 0;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:24px}footer .handwritten{color:var(--wine)}footer>span:last-child{font-size:12px;color:var(--muted)}@keyframes pulse{to{opacity:.4}}@media(prefers-reduced-motion:no-preference){.invitation,.rsvp{animation:reveal .65s ease-out}.saved{animation:reveal .3s ease-out}@keyframes reveal{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}}@media(max-width:900px){main{gap:48px;padding:48px 24px}.drawn-heart{width:48px}header{padding:24px}footer{margin:0 24px}}@media(max-width:720px){header>span{display:none}main{grid-template-columns:1fr;gap:48px;padding:32px 24px}h1{font-size:96px}.rsvp{padding:24px;box-shadow:4px 4px 0 #e9dfd0}.ticket-details{padding:16px}.date-number{min-width:80px}footer{align-items:flex-start;flex-direction:column;padding:24px 0;gap:8px}}@media(max-width:380px){h1{font-size:72px}.drawn-heart{width:40px}.attendance-options{grid-template-columns:1fr}.guest-row{gap:8px}}@media(prefers-reduced-motion:reduce){*,*::before{animation:none!important;scroll-behavior:auto!important}}

/* Original components, motion concepts adapted from @zeeuiux Drey Motion 12. */
.table-note{position:relative;padding:24px 96px 24px 24px;border:1px solid var(--line);border-left:2px solid var(--wine);background:#fffcf4;border-radius:2px}.table-sketch{position:absolute;width:96px;height:96px;right:8px;top:24px;fill:none;stroke:var(--wine);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;opacity:.7}.table-note .handwritten{font-size:32px}.table-note p{max-width:22em}#countdown{display:flex;gap:12px;margin-top:12px}.clock-tile{min-width:80px;padding:12px 16px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center}.clock-tile strong{font-size:32px;line-height:1.2;font-weight:400;display:block;color:var(--wine)}.clock-tile small{display:block;font-size:12px;margin-top:4px;color:var(--muted)}.saved{display:flex;align-items:flex-start;gap:16px;padding:16px;background:#f7efe6;border:1px solid var(--line);border-radius:4px}.receipt-seal{display:grid;place-items:center;flex-shrink:0;width:40px;height:40px;border:1px solid var(--wine);border-radius:50%;color:var(--wine);font-size:24px}.saved strong,.saved span span{display:block}.saved strong{font-size:16px;margin-bottom:4px}.saved span span{font-size:14px}.stepper button:disabled{opacity:.4;cursor:not-allowed}@media(prefers-reduced-motion:no-preference){.drawn-heart path{stroke-dasharray:1;stroke-dashoffset:0;animation:heart-draw 1.2s ease-out both}.receipt-seal{animation:receipt-stamp .4s ease-out}@keyframes heart-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes receipt-stamp{from{transform:scale(1.15) rotate(-12deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}}@media(max-width:380px){.table-note{padding-right:24px}.table-sketch{position:static;float:right;width:64px;height:64px;margin-left:8px}.clock-tile{min-width:0;flex:1;padding:12px}}

.letter .bring-callout{font-family:'Lora',Georgia,serif;font-size:32px;line-height:1.3;color:var(--wine);margin:24px 0;padding:16px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.bring-callout span{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;text-decoration-style:wavy}@media(max-width:720px){.letter .bring-callout{font-size:32px}}

.event-at-a-glance{display:flex;flex-direction:column;gap:4px;padding:16px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.event-at-a-glance strong{font-size:16px;font-weight:600;color:var(--wine)}.event-at-a-glance span{font-size:20px}

.portrait-heading{display:grid;grid-template-columns:1fr 180px;gap:16px;align-items:center;margin-top:24px}.portrait-heading h1{font-size:72px;margin-top:16px}.portrait-heading h1>span:first-child{font-size:24px}.portrait-heading .drawn-heart{display:none}.portrait-heading .subtitle{font-size:24px;margin-bottom:16px}.portrait{position:relative;appearance:none;background:transparent;border:1px solid var(--line);border-radius:4px;cursor:pointer;padding:8px;box-shadow:4px 4px 0 #e9dfd0;transition:transform .25s ease;transform-origin:center}.portrait img{display:block;width:100%;height:auto}.portrait-caption{display:block;font:400 20px/1.2 'Lora',Georgia,serif;color:var(--wine);padding-top:8px}.portrait.tilted{transform:rotate(-4deg)}.field-help{font-size:12px;color:var(--muted);margin:8px 0}.text-optin{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:400;min-height:48px;margin:8px 0!important}.text-optin input[type=checkbox]{width:20px;min-height:20px;height:20px;flex-shrink:0;accent-color:var(--wine)}.field-error{color:var(--wine);font-size:14px;margin:8px 0}.field-error:empty{display:none}@media(max-width:1050px) and (min-width:721px){.portrait-heading{grid-template-columns:1fr}.portrait{max-width:180px}.portrait-heading h1{font-size:72px}}@media(max-width:720px){.portrait-heading{grid-template-columns:1fr 128px;gap:8px}.portrait-heading h1{font-size:64px}.portrait-heading h1>span:first-child{font-size:20px}.portrait-caption{font-size:16px}.portrait-heading .subtitle{font-size:20px}}@media(prefers-reduced-motion:reduce){.portrait,.portrait.tilted{transform:none!important;transition:none}}

.portrait img{image-rendering:auto}.portrait-heading>div{min-width:0}.portrait.tilted{transform:none}@media(prefers-reduced-motion:no-preference){.portrait img{animation:pixel-hello 1.4s steps(6,end) 1}.portrait.greeting img{animation:pixel-greeting .8s steps(6,end) 1}@keyframes pixel-hello{0%,100%{transform:translateY(0)}35%{transform:translateY(-8px)}70%{transform:translateY(-4px)}}@keyframes pixel-greeting{0%,100%{transform:translateY(0)}30%{transform:translateY(-12px)}65%{transform:translateY(-4px)}}}@media(max-width:380px){.portrait-heading h1{font-size:48px}.portrait-caption{font-size:16px}}

.header-heart{font-size:32px;color:var(--wine)}.animated-heart{display:inline-block;transform-origin:center}.steak-note{padding:24px}.steak-sketch{display:block;width:100%;max-width:280px;height:auto;margin:0 auto 16px}.steak-note .handwritten,.steak-note p{display:block;text-align:center;max-width:none}#host-contact{margin-top:24px;padding:24px 0 0;border-top:1px solid var(--line)}#host-contact h3{font-size:16px;font-weight:600;margin:0 0 12px}#host-contact a{display:block;font-size:16px;overflow-wrap:anywhere;padding:8px 0}#host-contact p{font-size:20px;font-family:'Lora',Georgia,serif;margin:8px 0 0}@media(prefers-reduced-motion:no-preference){.animated-heart{animation:heart-beat 2.4s ease-in-out 2}@keyframes heart-beat{0%,60%,100%{transform:scale(1)}20%{transform:scale(1.15)}35%{transform:scale(1.03)}45%{transform:scale(1.1)}}}@media(max-width:720px){header{flex-wrap:wrap;gap:12px}.header-heart{display:block!important}.rsvp-link{margin-left:auto}}

.card-top{justify-content:center}.attendance-options input:checked+span b{color:#c5283d}#countdown{gap:8px}.clock-tile{min-width:0;flex:1;padding:12px 4px}.event-at-a-glance small{font-size:14px;color:var(--muted)}

/* Printed invitation typography, tuned for narrow screens. */
.portrait-heading h1{font-size:clamp(42px,5vw,64px);line-height:1.1;letter-spacing:-.04em}
.portrait-heading h1>span:first-child{font-size:20px;letter-spacing:0}
h2{font-size:32px;line-height:1.2;letter-spacing:-.03em}
.handwritten{font-size:24px;line-height:1.35}
.letter .bring-callout{font-size:24px;line-height:1.5}
.portrait-caption{font-size:14px;line-height:1.4}
.portrait-heading .subtitle{font-size:20px;line-height:1.4}
.card-bottom{font-size:20px;line-height:1.4}
.table-note .handwritten{font-size:24px}
input,select{font-size:16px}
.date-ticket{margin-top:24px}
@media(max-width:1050px) and (min-width:721px){main{grid-template-columns:1fr;max-width:760px}.portrait-heading{grid-template-columns:1fr 180px}}
@media(max-width:720px){.portrait-heading{grid-template-columns:minmax(0,1fr) 112px}.portrait-heading h1{font-size:clamp(32px,8.6vw,52px)}.portrait-heading .subtitle{font-size:16px}.portrait-heading h1>span:first-child{font-size:16px}h2{font-size:32px}.letter .bring-callout{font-size:24px}.rsvp{padding:24px}.attendance-options{grid-template-columns:1fr}.portrait-caption{font-size:12px}header>span:not(.header-heart){display:block;font-size:14px}header{gap:12px}.rsvp-link{font-size:14px}}
@media(max-width:360px){main{padding:24px 16px}.portrait-heading{grid-template-columns:minmax(0,1fr) 96px}header{padding:24px 16px}header>span:not(.header-heart){max-width:110px}.guest-row{flex-wrap:wrap}.ticket-details{padding:12px}}
