@font-face{font-family:'Cormorant';font-style:normal;font-weight:300 700;font-display:swap;src:url(/fonts/cormorant.woff2) format('woff2')}
@font-face{font-family:'Cormorant';font-style:italic;font-weight:300 700;font-display:swap;src:url(/fonts/cormorant-italic.woff2) format('woff2')}
@font-face{font-family:'Jost';font-style:normal;font-weight:300 600;font-display:swap;src:url(/fonts/jost.woff2) format('woff2')}

:root{
  --bg:#100e0c;
  --bg-2:#17140f;
  --card:#1a1612;
  --line:#3a3125;
  --gold:#c9a96e;
  --gold-soft:#a88c5a;
  --cream:#f0e8da;
  --muted:#a39682;
  --err:#e08a7a;
  --serif:'Cormorant','Cormorant Garamond',Georgia,'Times New Roman',serif;
  --sans:'Jost','Helvetica Neue',Arial,sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;background:var(--bg);color:var(--cream);
  font-family:var(--serif);font-size:20px;line-height:1.55;font-weight:400;
  background-image:radial-gradient(ellipse 90% 55% at 50% 0%,#2a2016 0%,rgba(16,14,12,0) 70%);
  background-repeat:no-repeat;
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
a{color:inherit}
::selection{background:var(--gold);color:var(--bg)}

/* top bar */
.topbar{
  position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;
  padding:calc(14px + env(safe-area-inset-top)) 22px 14px;
  background:linear-gradient(var(--bg) 40%,rgba(16,14,12,0));
}
.mark{font-family:var(--sans);font-size:12px;letter-spacing:.32em;color:var(--gold-soft)}
.lang{font-family:var(--sans);font-size:12px;letter-spacing:.2em;color:var(--line);display:flex;gap:6px;align-items:center}
.lang button{
  background:none;border:0;padding:8px 4px;color:var(--muted);font:inherit;letter-spacing:inherit;cursor:pointer;
  border-bottom:1px solid transparent;
}
.lang button[aria-pressed="true"]{color:var(--cream);border-bottom-color:var(--gold)}

main{max-width:640px;margin:0 auto;padding:0 24px}

/* hero */
.hero{text-align:center;padding:9vh 0 6vh;min-height:calc(100svh - 60px);display:flex;flex-direction:column;justify-content:center;align-items:center}
.kicker{font-family:var(--sans);font-size:12px;letter-spacing:.42em;text-transform:uppercase;color:var(--muted);margin:0 0 8px}
.hero-title{margin:0;font-weight:300;line-height:.9;display:flex;flex-direction:column;align-items:center}
.fifty{
  font-style:italic;font-weight:300;color:var(--gold);
  font-size:clamp(170px,48vw,280px);line-height:1;letter-spacing:-.02em;
  background:linear-gradient(180deg,#e2c891 0%,#c9a96e 45%,#8f7344 100%);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  padding:.04em .12em .16em;margin:-.12em 0 -.1em;
  animation:rise 1.4s cubic-bezier(.2,.7,.2,1) both;
}
.name{font-size:clamp(56px,15vw,84px);font-weight:300;letter-spacing:.02em;margin-top:-.05em;animation:rise 1.4s .15s cubic-bezier(.2,.7,.2,1) both}
.date{font-style:italic;font-size:26px;margin:22px 0 2px;animation:fade 1.2s .5s both}
.city{font-family:var(--sans);font-size:12px;letter-spacing:.42em;text-transform:uppercase;color:var(--gold);margin:6px 0 0;animation:fade 1.2s .6s both}
.lead{max-width:30em;margin:34px auto 0;color:#d9cfbf;font-size:21px;animation:fade 1.2s .75s both}
.scroll-cta{
  margin-top:38px;font-family:var(--sans);font-size:12px;letter-spacing:.32em;text-transform:uppercase;text-decoration:none;
  color:var(--cream);border:1px solid var(--gold-soft);padding:15px 30px;transition:background .25s,color .25s;animation:fade 1.2s .9s both
}
.scroll-cta:hover,.scroll-cta:focus-visible{background:var(--gold);color:var(--bg)}
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes fade{from{opacity:0}to{opacity:1}}

.ornament{display:flex;align-items:center;justify-content:center;gap:16px;color:var(--gold-soft);font-size:12px;margin:10px 0}
.ornament span{height:1px;width:64px;background:var(--line)}

.section-title{font-weight:300;font-style:italic;font-size:46px;text-align:center;margin:56px 0 30px;color:var(--cream);line-height:1.1}

/* program */
.program{padding-bottom:40px;text-align:center}
.event{
  border:1px solid var(--line);background:linear-gradient(180deg,var(--card),var(--bg-2));
  padding:34px 24px 30px;margin:0 0 18px;position:relative;
}
.event::before{content:"";position:absolute;inset:5px;border:1px solid rgba(201,169,110,.08);pointer-events:none}
.event-time{font-family:var(--sans);font-size:13px;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin:0}
.event-name{font-weight:300;font-size:38px;margin:6px 0 2px;line-height:1.15}
.event-venue{font-style:italic;font-size:24px;margin:0;color:#e6dccb}
.event-address{font-style:normal;font-family:var(--sans);font-weight:300;font-size:14px;letter-spacing:.04em;color:var(--muted);margin:10px 0 0;line-height:1.6}
.event-desc{margin:16px auto 0;max-width:24em;color:#d9cfbf}
.maps{
  display:inline-block;margin-top:16px;font-family:var(--sans);font-size:12px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--gold);text-decoration:none;border-bottom:1px solid rgba(201,169,110,.4);padding-bottom:3px
}
.maps:hover{border-bottom-color:var(--gold)}
.note{font-style:italic;font-size:22px;margin:30px auto 28px;max-width:26em;color:#e6dccb}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;
  font-family:var(--sans);font-size:13px;letter-spacing:.24em;text-transform:uppercase;text-decoration:none;
  padding:17px 28px;border:1px solid var(--gold-soft);transition:background .25s,color .25s,opacity .25s;
  -webkit-tap-highlight-color:transparent
}
.btn-ghost{background:transparent;color:var(--cream)}
.btn-ghost:hover,.btn-ghost:focus-visible{background:rgba(201,169,110,.12)}
.btn-solid{background:var(--gold);color:#17120b;border-color:var(--gold);width:100%;font-weight:500}
.btn-solid:hover,.btn-solid:focus-visible{background:#d8bb85}
.btn[disabled]{opacity:.55;cursor:progress}

/* rsvp */
.rsvp{padding-bottom:40px}
.deadline{text-align:center;color:#d9cfbf;margin:-12px 0 34px}
.deadline strong{font-weight:500;color:var(--gold)}
form{margin:0}
.field{margin:0 0 26px;border:0;padding:0;min-width:0}
.field label,.field legend{
  display:block;font-family:var(--sans);font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin:0 0 10px;padding:0
}
.field label em{font-style:normal;text-transform:none;letter-spacing:.04em;color:#6f6556;margin-left:4px}
input[type=text],input[type=number],textarea{
  width:100%;background:transparent;color:var(--cream);border:0;border-bottom:1px solid var(--line);
  font-family:var(--serif);font-size:23px;padding:8px 2px 10px;border-radius:0;outline:none;transition:border-color .2s;
  -webkit-appearance:none;appearance:none
}
textarea{resize:vertical;min-height:90px;line-height:1.4;border:1px solid var(--line);padding:12px 14px}
input:focus,textarea:focus{border-color:var(--gold)}
.choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.field .choice{
  position:relative;display:flex;flex-direction:column;gap:2px;cursor:pointer;
  border:1px solid var(--line);padding:16px 14px 14px;margin:0;transition:border-color .2s,background .2s;
  text-transform:none;letter-spacing:normal
}
.choice input{position:absolute;opacity:0;pointer-events:none}
.choice span{font-family:var(--serif);font-size:24px;margin-bottom:2px;color:var(--cream);line-height:1.15}
.choice small{font-family:var(--sans);font-size:11px;letter-spacing:.08em;color:var(--muted)}
.choice:has(input:checked){border-color:var(--gold);background:rgba(201,169,110,.10)}
.choice:has(input:checked) span{color:var(--gold)}
.choice:has(input:focus-visible){outline:1px solid var(--gold);outline-offset:2px}
.choice.checked{border-color:var(--gold);background:rgba(201,169,110,.10)}
.stepper{display:flex;align-items:center;gap:0;max-width:200px;border:1px solid var(--line)}
.stepper input{text-align:center;border:0;font-size:26px;padding:8px 0;-moz-appearance:textfield}
.stepper input::-webkit-outer-spin-button,.stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.step{background:none;border:0;color:var(--gold);font-size:26px;width:56px;height:52px;cursor:pointer;font-family:var(--serif)}
.step:hover{background:rgba(201,169,110,.1)}
#persons-field.is-hidden{display:none}
.err{display:none;color:var(--err);font-family:var(--sans);font-size:13px;margin:8px 0 0}
.field.invalid .err{display:block}
.field.invalid input[type=text]{border-color:var(--err)}
.hp{position:absolute !important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}
.form-status{min-height:1.4em;text-align:center;font-family:var(--sans);font-size:14px;color:var(--err);margin:14px 0 0}
.privacy{text-align:center;font-family:var(--sans);font-weight:300;font-size:13px;color:#7d7262;margin:8px auto 0;max-width:34em;line-height:1.6}

.thanks{text-align:center;border:1px solid var(--line);padding:44px 24px 36px;background:linear-gradient(180deg,var(--card),var(--bg-2));outline:none}
.thanks-mark{color:var(--gold);margin:0;font-size:18px}
.thanks h3{font-weight:300;font-style:italic;font-size:40px;margin:10px 0 8px;line-height:1.15}
.thanks p{color:#d9cfbf;margin:0 auto 26px;max-width:26em}

.footer{text-align:center;padding:30px 24px calc(60px + env(safe-area-inset-bottom));color:var(--muted);font-style:italic}
.footer p{margin:0}
.footer-sig{font-size:34px;color:var(--gold);margin-top:4px !important}

@media (min-width:760px){
  body{font-size:21px}
  .topbar{padding-left:36px;padding-right:36px}
  .event{padding:42px 40px 36px}
}
@media (prefers-reduced-motion:reduce){*{animation:none !important;transition:none !important}html{scroll-behavior:auto}}
