body.rsvp-page{ background:var(--forest); color:var(--cream); }
.rsvp-page .nav{ color:var(--cream); }
.rsvp-page .nav.solid{ background:color-mix(in oklab,var(--forest) 92%,transparent); color:var(--cream); border-bottom:1px solid color-mix(in oklab,var(--cream) 13%,transparent); }
.rsvp-brand{ display:inline-flex; align-items:center; }
.rsvp-brand__logo{ width:70px; height:70px; object-fit:contain; display:block; border-radius:0; box-shadow:none; }

.rsvp-hero{ min-height:100svh; position:relative; display:grid; place-items:center; overflow:hidden; color:var(--cream); text-align:center; }
.rsvp-hero__media{ position:absolute; inset:0; z-index:0; background:var(--forest-deep); }
.rsvp-hero__media img{ width:100%; height:100%; object-fit:cover; object-position:center; opacity:0.9; filter:saturate(0.94) contrast(1.04); }
.rsvp-hero__veil{ position:absolute; inset:0; z-index:1; background:radial-gradient(circle at 50% 45%,rgba(1,42,31,0.08),rgba(1,42,31,0.56) 58%,rgba(1,42,31,0.82)), linear-gradient(180deg,rgba(1,42,31,0.22),rgba(1,42,31,0.74)); }
.rsvp-hero__inner{ position:relative; z-index:2; padding-top:96px; display:grid; place-items:center; }
.rsvp-hero__content{ max-width:900px; margin-inline:auto; display:grid; justify-items:center; }
.rsvp-hero h1{ font-size:clamp(74px,11vw,190px); line-height:0.84; margin:24px 0 28px; }
.rsvp-hero .lead{ max-width:40ch; margin-inline:auto; color:color-mix(in oklab,var(--cream) 88%,transparent); }
.rsvp-hero .btn{ margin-top:34px; }
.hero-scroll{
  margin-top:34px; min-height:44px; display:inline-flex; align-items:center; gap:14px; color:var(--cream);
  font-size:11px; font-weight:700; letter-spacing:0.22em; text-transform:uppercase; text-decoration:none; opacity:0.78;
}
.hero-scroll__line{ width:54px; height:1px; background:color-mix(in oklab,var(--cream) 45%,transparent); position:relative; overflow:hidden; }
.hero-scroll__line::after{ content:""; position:absolute; inset:0; background:var(--orange); transform:translateX(-100%); animation:rsvp-scroll-line 2.2s cubic-bezier(.7,0,.3,1) infinite; }
@keyframes rsvp-scroll-line{ 0%{ transform:translateX(-100%); } 50%,100%{ transform:translateX(100%); } }

.rsvp-intro{ background:var(--cream); color:var(--forest); padding:clamp(80px,11vh,150px) 0; }
.rsvp-intro__grid{ display:grid; grid-template-columns:minmax(0,1.05fr) minmax(280px,0.75fr); gap:clamp(34px,6vw,90px); align-items:end; }
.rsvp-intro h2{ font-size:clamp(46px,6.4vw,118px); line-height:0.92; margin-top:22px; }
.rsvp-intro .lead{ opacity:0.76; }

.rsvp-venue{ background:var(--forest); color:var(--cream); padding:clamp(84px,12vh,160px) 0; }
.rsvp-venue__grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(340px,0.48fr); gap:clamp(36px,6vw,92px); align-items:stretch; }
.rsvp-venue__copy{
  max-width:980px; min-height:clamp(360px,34vw,520px); display:grid; align-content:center;
  padding-block:clamp(18px,2.4vw,34px); border-top:1px solid color-mix(in oklab,var(--cream) 22%,transparent);
  border-bottom:1px solid color-mix(in oklab,var(--cream) 14%,transparent);
}
.rsvp-venue__copy h2{ font-size:clamp(46px,6.6vw,118px); line-height:0.92; margin:22px 0 24px; }
.rsvp-venue__copy .lead{ max-width:58ch; opacity:0.82; }
.rsvp-location{
  padding:clamp(24px,3.4vw,44px); border:1px solid color-mix(in oklab,var(--cream) 20%,transparent);
  border-left-color:color-mix(in oklab,var(--forest) 58%,var(--cream)); display:grid; gap:18px; max-width:none;
  justify-self:stretch; width:100%; min-height:100%; align-content:center;
  background:linear-gradient(145deg,color-mix(in oklab,var(--cream) 5%,transparent),color-mix(in oklab,var(--rust) 22%,transparent));
}
.rsvp-location h3{ margin:0; font-family:var(--font-display); font-size:clamp(30px,3vw,50px); line-height:1; font-weight:600; }
.rsvp-location p{ margin:0; opacity:0.74; line-height:1.7; }
.rsvp-location .btn{ --bc:var(--cream); justify-self:start; margin-top:4px; }
.rsvp-location__actions{ display:flex; flex-wrap:wrap; align-items:center; gap:12px 18px; margin-top:4px; }
.rsvp-social-link{
  min-height:48px; display:inline-grid; align-content:center; gap:3px; color:var(--cream); text-decoration:none;
  padding:0 0 0 18px; border-left:1px solid color-mix(in oklab,var(--forest) 54%,var(--cream));
  transition:opacity .25s ease, transform .25s ease;
}
.rsvp-social-link:hover{ opacity:0.82; transform:translateY(-1px); }
.rsvp-social-link span:first-child{ font-size:10px; font-weight:800; letter-spacing:0.18em; text-transform:uppercase; opacity:0.56; }
.rsvp-social-link span:last-child{ font-size:14px; font-weight:700; letter-spacing:0.02em; }
.rsvp-sports{
  display:grid; grid-template-columns:minmax(220px,0.42fr) 1fr; gap:clamp(30px,5vw,78px); align-items:start;
  margin-top:clamp(52px,8vh,98px); padding-top:clamp(34px,5vh,58px);
  border-top:1px solid color-mix(in oklab,var(--cream) 22%,transparent);
}
.rsvp-sports h3{ font-size:clamp(42px,5vw,88px); line-height:0.92; margin-top:18px; }
.rsvp-sports__grid{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border:1px solid color-mix(in oklab,var(--cream) 18%,transparent); }
.rsvp-sport-card{
  min-height:320px; display:grid; align-content:space-between; gap:22px; padding:clamp(22px,3vw,34px);
  border-right:1px solid color-mix(in oklab,var(--cream) 14%,transparent);
  background:linear-gradient(145deg,color-mix(in oklab,var(--cream) 5%,transparent),color-mix(in oklab,var(--forest) 20%,transparent));
}
.rsvp-sport-card:last-child{ border-right:0; }
.rsvp-sport-card__icon{
  width:46px; height:46px; display:block; object-fit:contain; opacity:0.9;
  filter:invert(94%) sepia(8%) saturate(650%) hue-rotate(330deg) brightness(106%) contrast(98%);
}
.rsvp-sport-card > span{ font-family:'Space Mono', ui-monospace, monospace; font-size:12px; opacity:0.54; }
.rsvp-sport-card h4{ margin:0; font-family:var(--font-display); font-size:clamp(34px,3.6vw,58px); line-height:0.95; font-style:italic; font-weight:600; }
.rsvp-sport-card p{ margin:0; color:color-mix(in oklab,var(--cream) 74%,transparent); line-height:1.65; }
.rsvp-facilities{ display:grid; grid-template-columns:minmax(220px,0.42fr) 1fr; gap:clamp(30px,5vw,78px); align-items:start; margin-top:clamp(44px,7vh,86px); padding-top:clamp(28px,4vh,48px); border-top:1px solid color-mix(in oklab,var(--cream) 22%,transparent); }
.rsvp-facilities h3{ font-size:clamp(42px,5vw,88px); line-height:0.92; }
.rsvp-facilities ul{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0 clamp(24px,4vw,58px); }
.rsvp-facilities li{ min-height:46px; display:flex; align-items:center; border-bottom:1px solid color-mix(in oklab,var(--cream) 14%,transparent); font-weight:600; opacity:0.82; }

.rsvp-register{ background:var(--rust); color:var(--cream); padding:clamp(80px,11vh,150px) 0; }
.rsvp-card{
  width:min(100%,1080px); margin-inline:auto; padding:clamp(24px,4vw,58px);
  border:1px solid color-mix(in oklab,var(--cream) 24%,transparent); border-radius:8px;
  background:color-mix(in oklab,var(--rust) 86%,var(--forest)); box-shadow:0 50px 90px -70px rgba(0,0,0,0.55);
}
.rsvp-card__head{ display:grid; gap:14px; margin-bottom:clamp(30px,4vh,48px); }
.rsvp-card__head h2,.success-state h2{ font-size:clamp(48px,6vw,112px); line-height:0.88; }
.rsvp-card__head p{ max-width:42ch; opacity:0.72; }
.rsvp-form{ display:grid; gap:clamp(22px,3vw,34px); }
.form-section{
  display:grid; gap:clamp(18px,2.6vw,28px); padding-top:clamp(22px,3vw,34px);
  border-top:1px solid color-mix(in oklab,var(--cream) 18%,transparent);
}
.rsvp-card__head + .form-section{ padding-top:0; border-top:0; }
.form-section__head{ display:grid; grid-template-columns:minmax(180px,0.34fr) minmax(0,1fr); gap:clamp(18px,3vw,38px); align-items:start; }
.form-section__head p{ margin:0; max-width:48ch; font-size:15px; line-height:1.7; opacity:0.68; }
.field{ display:grid; gap:10px; }
.field label,.sport-field legend,.time-field legend{
  font-weight:700; font-size:12px; letter-spacing:0.18em; text-transform:uppercase; opacity:0.78;
}
.field label span{ font-weight:600; opacity:0.5; letter-spacing:0.12em; margin-left:8px; }
.field input,.select-shell select{
  display:block; width:100%; height:60px; border:1px solid color-mix(in oklab,var(--cream) 22%,transparent);
  border-radius:8px; background:color-mix(in oklab,var(--cream) 4%,transparent); color:var(--cream); padding:0 18px;
  font:600 16px/1 var(--font-sans); outline:none; transition:border-color .25s ease, background .25s ease, box-shadow .25s ease;
  caret-color:var(--cream);
}
.field input::placeholder{ color:color-mix(in oklab,var(--cream) 48%,transparent); }
.field input:-webkit-autofill,
.field input:-webkit-autofill:hover,
.field input:-webkit-autofill:focus{
  -webkit-text-fill-color:var(--cream);
  caret-color:var(--cream);
  border-color:color-mix(in oklab,var(--cream) 28%,transparent);
  box-shadow:0 0 0 1000px color-mix(in oklab,var(--rust) 88%,var(--forest)) inset;
  transition:background-color 9999s ease-out, color 9999s ease-out;
}
.select-shell{ position:relative; display:block; }
.select-shell::after{ content:""; position:absolute; right:17px; top:50%; width:8px; height:8px; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform:translateY(-70%) rotate(45deg); opacity:0.78; pointer-events:none; }
.select-shell select{ appearance:none; padding-right:46px; }
.select-shell select option{ color:var(--forest); background:var(--cream); }
.field input:focus,.select-shell select:focus{ border-color:var(--cream); background:color-mix(in oklab,var(--cream) 8%,transparent); }
.field input.has-error,.select-shell select.has-error{ border-color:var(--cream); box-shadow:0 0 0 1px var(--cream); }
.field-error{ min-height:18px; font-size:12.5px; line-height:1.4; color:var(--cream); opacity:0.86; }
.form-grid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; }
.field--wide{ grid-column:1 / -1; }

.sport-field,.time-field{ border:0; padding:0; margin:4px 0 0; display:grid; gap:12px; }
.sport-field{ margin-bottom:clamp(10px,1.8vw,18px); }
.sport-grid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:2px; }
.time-grid{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-top:2px; }
.sport-option,
.time-option{
  min-height:118px; border:1px solid color-mix(in oklab,var(--cream) 22%,transparent); border-radius:8px;
  display:grid; align-content:space-between; justify-items:start; padding:18px; color:var(--cream);
  background:linear-gradient(145deg,color-mix(in oklab,var(--cream) 6%,transparent),color-mix(in oklab,var(--forest) 12%,transparent)); cursor:pointer;
  font:700 15px/1.2 var(--font-sans); transition:background .25s ease, color .25s ease, border-color .25s ease, transform .25s ease;
}
.sport-option{ min-height:132px; }
.sport-option:hover,
.time-option:hover{ transform:translateY(-2px); border-color:color-mix(in oklab,var(--cream) 56%,transparent); }
.sport-option.is-selected,
.time-option.is-selected{
  background:linear-gradient(145deg,color-mix(in oklab,var(--forest) 92%,var(--cream)),var(--forest));
  border-color:color-mix(in oklab,var(--cream) 72%,transparent);
  color:var(--cream);
  box-shadow:0 18px 44px -32px rgba(0,0,0,0.8), inset 0 0 0 1px color-mix(in oklab,var(--cream) 18%,transparent);
}
.sport-option__count,
.time-option__count{ font-family:'Space Mono', ui-monospace, monospace; font-size:11px; opacity:0.58; }
.sport-option__main,
.time-option__main{ font-size:clamp(18px,1.55vw,24px); line-height:1; letter-spacing:0; }
.sport-option__main{ font-size:clamp(30px,3.4vw,52px); font-family:var(--font-display); font-style:italic; font-weight:600; }
.sport-option__meta,
.time-option__meta{ font-size:11px; letter-spacing:0.16em; text-transform:uppercase; opacity:0.58; }
.sport-option.is-selected .sport-option__count,
.sport-option.is-selected .sport-option__meta,
.time-option.is-selected .time-option__count,.time-option.is-selected .time-option__meta{ opacity:0.76; }
.field-note{ font-size:12.5px; opacity:0.64; }
.submit-error{ min-height:20px; color:var(--cream); font-size:13px; opacity:0.9; }
.submit-btn{
  justify-content:center; min-height:62px; background:var(--forest); border-color:var(--forest); color:var(--cream);
  box-shadow:0 18px 42px -30px rgba(0,0,0,0.75);
}
.submit-btn .dot{ background:var(--cream); }
.submit-btn:hover{ background:color-mix(in oklab,var(--forest) 86%,#000); border-color:color-mix(in oklab,var(--cream) 35%,var(--forest)); }
.submit-btn.is-loading{ opacity:0.72; pointer-events:none; }
.submit-btn.is-loading .dot{ animation:rsvp-pulse 0.8s ease-in-out infinite alternate; }
@keyframes rsvp-pulse{ from{ transform:scale(0.7); opacity:0.45; } to{ transform:scale(1.3); opacity:1; } }

.success-state{ min-height:620px; display:grid; align-content:center; justify-items:start; gap:18px; }
.success-state[hidden]{ display:none; }
.success-state p{ max-width:48ch; font-size:clamp(17px,1.4vw,22px); line-height:1.55; opacity:0.82; }
.success-state .btn{ --bc:var(--cream); margin-top:18px; }

.rsvp-footer{ background:var(--forest); color:var(--cream); padding:36px 0; }
.rsvp-footer__inner{ display:flex; align-items:center; justify-content:space-between; gap:24px; border-top:1px solid color-mix(in oklab,var(--cream) 18%,transparent); padding-top:26px; }
.rsvp-footer .rsvp-brand__logo{ width:62px; height:62px; }
.rsvp-footer span{ font-size:12px; letter-spacing:0.18em; text-transform:uppercase; opacity:0.64; }

@media (max-width:900px){
  .rsvp-intro__grid{ grid-template-columns:1fr; align-items:start; }
  .rsvp-venue__grid,.rsvp-sports,.rsvp-facilities{ grid-template-columns:1fr; }
  .rsvp-venue__copy{ min-height:auto; align-content:start; }
  .rsvp-location{ min-height:auto; }
  .rsvp-sports__grid{ grid-template-columns:1fr; }
  .rsvp-sport-card{ min-height:240px; border-right:0; border-bottom:1px solid color-mix(in oklab,var(--cream) 14%,transparent); }
  .rsvp-sport-card:last-child{ border-bottom:0; }
  .rsvp-facilities ul{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .sport-grid,
  .time-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .form-section__head{ grid-template-columns:1fr; }
}
@media (max-width:720px){
  .rsvp-page .nav-links{ display:none; }
  .rsvp-hero h1{ font-size:clamp(64px,20vw,118px); }
  .rsvp-card{ padding:24px 18px; }
  .rsvp-location__actions{ display:grid; justify-items:start; }
  .rsvp-social-link{ padding-left:0; border-left:0; }
  .rsvp-facilities ul{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 18px; }
  .rsvp-facilities li{ min-height:42px; font-size:14px; line-height:1.35; }
  .form-grid{ grid-template-columns:1fr; }
  .field--wide{ grid-column:auto; }
  .sport-grid,
  .time-grid{ grid-template-columns:1fr; }
  .rsvp-footer__inner{ display:grid; }
}
