:root{--paper:#fbfaf6;--green:#174b35;--gold:#b89857;--muted:#5c6b60;--line:#dfd7c5;--serif:Georgia,'Times New Roman',serif;--sans:Arial,Helvetica,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--green);font-family:var(--serif);line-height:1.5}button,input,textarea{font:inherit}a{color:inherit}button{cursor:pointer}[hidden]{display:none!important}:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.card{position:relative;isolation:isolate;min-height:min(100svh,760px);display:grid;place-items:center;background:#fff;margin:0 auto;max-width:1100px;overflow:hidden}.card:before{content:'';position:absolute;inset:12px;border:1px solid var(--gold);z-index:-1}.floral{position:absolute;height:auto;z-index:-1;mix-blend-mode:multiply;pointer-events:none}.top{width:190px;top:0;right:0}.bottom{width:135px;bottom:0;left:0}.card-inner{text-align:center;padding:52px 34px 46px;width:100%}.monogram{display:block;width:53px;height:auto;mix-blend-mode:multiply;margin:0 auto 14px}.eyebrow{font:10px/1.5 var(--sans);text-transform:uppercase;letter-spacing:2px;color:var(--muted);margin:0 0 15px}h1{font-size:clamp(29px,4.6vw,49px);font-weight:400;line-height:1.2;letter-spacing:-1px;max-width:700px;margin:0 auto 15px}h1 em{display:block;color:var(--gold);font-weight:400;font-size:23px;margin:4px 0}.verse{font-size:clamp(13px,1.6vw,17px);font-style:italic;max-width:520px;margin:0 auto 12px}.verse span{white-space:nowrap}.invite{font-size:14px;margin:0 0 13px}.date{display:flex;align-items:center;justify-content:center;gap:12px;color:var(--green);margin:0 0 13px}.date strong{font:normal 54px/1 var(--serif)}.date span{text-align:left;font:11px/1.8 var(--sans);text-transform:uppercase;letter-spacing:1.1px}.venue{font-size:13px;margin:0 0 18px;line-height:1.5}.venue strong{font-weight:400;font-size:16px}.location-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;max-width:300px;margin:2px auto 0}.location-row>span{grid-column:2}.location-row a{grid-column:3;justify-self:start;margin-left:12px;white-space:nowrap;font:11px var(--sans);text-underline-offset:4px}.actions{display:flex;align-items:center;justify-content:center;gap:24px}.button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:11px 20px;border:1px solid var(--green);border-radius:2px;background:var(--green);color:#fff;text-decoration:none;font:12px var(--sans)}.button:hover{background:#103a28}.details{max-width:1100px;margin:auto;padding:52px 50px 0;text-align:center}.details-top{max-width:440px;margin:0 auto}h2{font-size:33px;font-weight:400;margin:0 0 5px}.intro{font-size:14px;margin:0 0 15px}.rsvp-card{text-align:left;background:#fff;border:1px solid var(--line);border-top:2px solid var(--gold);padding:20px}.rsvp-card label{display:block;font:12px var(--sans);margin:0 0 6px}.rsvp-card input{display:block;width:100%;min-height:46px;border:1px solid #a6b0a4;background:#fff;padding:10px;margin:0 0 15px;border-radius:2px;color:var(--green);font:16px var(--sans)}.rsvp-card input[type=number]{appearance:textfield;-moz-appearance:textfield}.rsvp-card input[type=number]::-webkit-outer-spin-button,.rsvp-card input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.full{width:100%;margin-top:0}.demo-note{font:11px/1.5 var(--sans);color:var(--muted);margin:11px 0 0;text-align:center}.error{font:12px/1.4 var(--sans);color:#963a3a;margin:0 0 8px}.error:empty{display:none}.result{background:#f1f4ee;border:1px solid var(--green);padding:12px;font:13px/1.5 var(--sans);margin:12px 0 0}.phone{font:12px var(--sans);color:var(--muted);margin:10px 0}.phone a{text-underline-offset:3px}.couple{display:block;width:min(360px,100%);height:auto;margin:-10px auto -32px;mix-blend-mode:multiply}.closing{position:relative;font-size:15px;font-style:italic;margin:0;padding:0 0 24px}.rsvp-card #confirmation{text-align:center;padding:10px 0}@media(max-width:700px){.card{min-height:min(100svh,740px);margin:0 8px}.card-inner{padding:46px 26px 40px}.top{width:150px}.bottom{width:110px}.monogram{width:48px}h1{font-size:31px;max-width:300px}.eyebrow{font-size:9px;letter-spacing:1.5px}.verse{max-width:290px}.details{padding:28px 20px 0}.rsvp h2{font-size:26px}.intro{font-size:13px;margin:0 0 10px}.rsvp-card{padding:15px}.demo-note{font-size:10px}.couple{width:220px;margin:-12px auto -25px}.closing{font-size:13px;padding-bottom:15px}}@media(max-width:360px){.card-inner{padding-left:20px;padding-right:20px}h1{font-size:28px}.card{min-height:690px}.details{padding-left:14px;padding-right:14px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* A brief, no-click reveal of the card. Only opacity and transform animate. */
@media (prefers-reduced-motion: no-preference){
  .card:before{animation:frame-appear .75s ease-out both}
  .card .floral{animation:floral-appear .85s ease-out both}
  .card .bottom{animation-delay:.12s}
  .card-inner>*{animation:line-appear .55s cubic-bezier(.2,.7,.2,1) both}
  .card-inner>:nth-child(1){animation-delay:.08s}
  .card-inner>:nth-child(2){animation-delay:.16s}
  .card-inner>:nth-child(3){animation-delay:.25s}
  .card-inner>:nth-child(4){animation-delay:.34s}
  .card-inner>:nth-child(5){animation-delay:.41s}
  .card-inner>:nth-child(6){animation-delay:.48s}
  .card-inner>:nth-child(7){animation-delay:.55s}
  .card-inner>:nth-child(8){animation-delay:.62s}
  @keyframes frame-appear{from{opacity:0}to{opacity:1}}
  @keyframes floral-appear{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
  @keyframes line-appear{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
}
