:root{
  --navy:#0b162a; --navy2:#13233f; --navy3:#1c2f52;
  --orange:#c83803; --orange-hi:#ff7d45; --cream:#f5f1e8; --paper:#fbf9f4;
  --ink:#0b162a; --muted:#4a5568; --line:rgba(11,22,42,.16); --line-lt:rgba(255,255,255,.18);
  --disp:"Big Shoulders Display", Impact, "Arial Narrow", sans-serif;
  --serif:"Newsreader", Georgia, serif;
  --mono:"JetBrains Mono", ui-monospace, Menlo, monospace;
  --wrap:1240px; --gut:clamp(16px,4vw,48px);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--navy);color:var(--ink);font:400 18px/1.55 var(--serif);overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
h1,h2{margin:0;font-family:var(--disp);text-transform:uppercase;line-height:.9;letter-spacing:.005em}
.skip{position:absolute;left:-9999px;top:8px;z-index:100;background:#fff;color:var(--navy);padding:10px 14px}
.skip:focus{left:8px}
:focus-visible{outline:3px solid var(--orange-hi);outline-offset:3px}

/* ---------- buttons + links ---------- */
.btn{display:inline-flex;align-items:center;gap:.6em;background:var(--orange);color:#fff;text-decoration:none;
  font:800 22px/1 var(--disp);text-transform:uppercase;letter-spacing:.03em;padding:16px 24px 15px;border:0;border-radius:4px;cursor:pointer;
  transition:background .2s, transform .2s}
.btn span{transition:transform .25s}
.btn:hover{background:#a82f02}
.btn:hover span{transform:translateX(5px)}
.btn--sm{font-size:18px;padding:10px 16px 9px}
.btn--big{font-size:28px;padding:20px 30px 18px;width:100%;justify-content:center}
.tlink{font:600 15px/1.2 var(--mono);text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:3px;display:inline-flex;gap:.4em}
.tlink:hover{color:var(--orange-hi)}
.label{font:600 13px/1.2 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--orange);margin:0 0 14px}
.label--lt{color:var(--orange-hi)}
.serif{font-family:var(--serif)}
.k{font:600 12px/1.2 var(--mono);text-transform:uppercase;letter-spacing:.06em}

/* ---------- top bar ---------- */
.bar{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:10px var(--gut);background:rgba(11,22,42,.92);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line-lt);color:#fff}
.bar__mark{font:900 24px/1 var(--disp);text-decoration:none;letter-spacing:.02em}
.bar__mark span{color:var(--orange-hi)}
.bar__meta{margin:0;display:flex;gap:18px;font:400 13px/1 var(--mono);color:rgba(255,255,255,.78)}
@media (max-width:720px){.bar__meta{display:none}}

/* ---------- hero ---------- */
.hero{position:relative;color:#fff;overflow:hidden;background:
  radial-gradient(120% 90% at 85% 100%, #1d3563 0%, rgba(11,22,42,0) 60%), var(--navy)}
.field{position:absolute;inset:0;pointer-events:none;opacity:.55;
  background:
   repeating-linear-gradient(90deg, rgba(255,255,255,.07) 0 1px, transparent 1px 10%),
   repeating-linear-gradient(90deg, transparent 0 calc(2% - 1px), rgba(255,255,255,.05) calc(2% - 1px) 2%);
  -webkit-mask:linear-gradient(180deg,#000 0 30%,transparent 30% 34%,#000 34% 64%,transparent 64% 68%,#000 68%);
          mask:linear-gradient(180deg,#000 0 30%,transparent 30% 34%,#000 34% 64%,transparent 64% 68%,#000 68%)}
.hero__inner{position:relative;max-width:var(--wrap);margin:0 auto;padding:clamp(24px,5vw,64px) var(--gut) 0;
  display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(16px,3vw,48px);align-items:end}
.hero__copy{padding-bottom:clamp(40px,6vw,80px)}
.kicker{margin:0 0 10px;font:italic 400 clamp(20px,2.2vw,26px)/1.2 var(--serif);color:rgba(255,255,255,.86)}
.name{font-weight:900;font-size:clamp(72px,9.4vw,140px);line-height:.82;display:flex;flex-direction:column}
.name__last{color:#fff}
.name__first{color:var(--orange-hi)}
.hero__title{margin:18px 0 0;font:800 clamp(26px,3.4vw,44px)/1 var(--disp);text-transform:uppercase;letter-spacing:.02em;display:flex;gap:.3em;flex-wrap:wrap}
.hero__title span:last-child{-webkit-text-stroke:1.5px #fff;color:transparent}
.lede{margin:22px 0 0;max-width:30ch;font:400 clamp(19px,1.7vw,23px)/1.4 var(--serif);color:rgba(255,255,255,.92)}
.facts{margin:28px 0 0;display:grid;grid-template-columns:auto auto;gap:0;border-top:1px solid var(--line-lt);max-width:640px}
.facts div{padding:14px 20px 0 0}
.facts div+div{padding-left:20px;border-left:1px solid var(--line-lt)}
.facts dt{font:600 12px/1 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--orange-hi);margin-bottom:8px}
.facts dd{margin:0;font:700 clamp(19px,1.7vw,22px)/1.2 var(--disp);text-transform:uppercase;letter-spacing:.02em}
.cta{margin-top:30px;display:flex;align-items:center;gap:26px;flex-wrap:wrap}
.cta .tlink{color:#fff}

.hero__liz{position:relative;margin:0;align-self:end;display:flex;justify-content:flex-end;align-items:flex-end;overflow:hidden;padding-top:12px}
.panel{position:absolute;left:10%;right:0;bottom:0;height:68%;background:var(--orange);border-radius:6px 6px 0 0;overflow:hidden}
.panel__num{position:absolute;right:-.06em;bottom:-.22em;font:900 clamp(260px,30vw,420px)/1 var(--disp);color:rgba(11,22,42,.16)}
.panel__tag{position:absolute;left:14px;top:14px;font:600 12px/1 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:#fff;
  writing-mode:vertical-rl;transform:rotate(180deg);transform-origin:center;top:auto;bottom:16px}
.hero__liz img{position:relative;z-index:1;width:min(100%,500px);height:auto;filter:drop-shadow(0 18px 30px rgba(0,0,0,.35))}
.stripes{height:22px;background:linear-gradient(180deg,var(--orange) 0 6px,#fff 6px 10px,var(--orange) 10px 16px,var(--navy) 16px)}

/* hero intro motion */
@media (prefers-reduced-motion:no-preference){
  .name span,.hero__title,.lede,.facts,.cta,.kicker{opacity:0;transform:translateY(24px);animation:up .8s cubic-bezier(.2,.7,.2,1) forwards}
  .kicker{animation-delay:.05s}.name__first{animation-delay:.12s}.name__last{animation-delay:.22s}.hero__title{animation-delay:.34s}
  .lede{animation-delay:.44s}.facts{animation-delay:.52s}.cta{animation-delay:.6s}
  .panel{transform:translateY(100%);animation:rise .9s .1s cubic-bezier(.2,.7,.2,1) forwards}
  .hero__liz img{opacity:0;transform:translateY(40px);animation:up 1s .35s cubic-bezier(.2,.7,.2,1) forwards}
}
@keyframes up{to{opacity:1;transform:none}}
@keyframes rise{to{transform:none}}

@media (max-width:960px){
  .hero__inner{grid-template-columns:1fr;padding-top:18px}
  .hero__liz{order:-1;max-width:420px;width:100%;justify-self:center}
  .hero__copy{padding-bottom:44px}
  .name{flex-direction:row;flex-wrap:wrap;gap:0 .22em;font-size:clamp(64px,17vw,120px)}
}
@media (max-width:480px){
  .facts{grid-template-columns:1fr}
  .facts div+div{padding-left:0;border-left:0;border-top:1px solid var(--line-lt);margin-top:14px}
}

/* ---------- countdown ---------- */
.clock{background:var(--navy2);color:#fff;text-align:center;padding:30px var(--gut) 34px;border-bottom:1px solid var(--line-lt)}
.clock__label{margin:0 0 14px;font:600 13px/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--orange-hi)}
.clock__board{display:inline-grid;grid-template-columns:repeat(4,minmax(74px,130px));border:1px solid var(--line-lt);border-radius:6px;overflow:hidden}
.clock__board div{padding:14px 8px 12px;background:var(--navy)}
.clock__board div+div{border-left:1px solid var(--line-lt)}
.clock__board b{display:block;font:800 clamp(44px,7vw,76px)/1 var(--disp);font-variant-numeric:tabular-nums}
.clock__board span{display:block;margin-top:6px;font:400 11px/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.7)}
.clock__note{margin:14px 0 0;font:italic 400 17px/1.3 var(--serif);color:rgba(255,255,255,.8)}
.clock.is-live .clock__board b{color:var(--orange-hi)}

/* ---------- photo reel ---------- */
.reel{background:var(--cream);padding:clamp(36px,5vw,64px) 0;overflow:hidden;display:grid;gap:12px}
.reel__row{overflow:hidden;transform:rotate(-1.6deg);margin:0 -40px}
.reel__row+.reel__row{transform:rotate(-1.6deg) translateX(-60px)}
.reel__track{display:flex;gap:12px;width:max-content;padding:0 6px}
.reel__track img{height:clamp(150px,17vw,230px);width:auto;border-radius:3px;background:#ddd}
@media (prefers-reduced-motion:no-preference){
  .reel__row[data-dir="l"] .reel__track{animation:slideL var(--dur,80s) linear infinite}
  .reel__row[data-dir="r"] .reel__track{animation:slideR var(--dur,80s) linear infinite}
  .reel:hover .reel__track{animation-play-state:paused}
}
@keyframes slideL{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes slideR{from{transform:translateX(-50%)}to{transform:translateX(0)}}
@media (prefers-reduced-motion:reduce){.reel__row{overflow-x:auto}}

/* ---------- host ---------- */
.host{background:var(--paper);position:relative;overflow:hidden}
.host__inner{max-width:var(--wrap);margin:0 auto;padding:clamp(48px,7vw,96px) var(--gut) 0;display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(24px,5vw,72px);align-items:end}
.host__sean{margin:0;position:relative;align-self:end}
.host__sean::before{content:"46";position:absolute;left:50%;top:6%;transform:translateX(-50%);font:900 clamp(220px,26vw,380px)/.8 var(--disp);
  color:transparent;-webkit-text-stroke:2px rgba(200,56,3,.35);z-index:0}
.host__sean img{position:relative;z-index:1;max-height:620px;width:auto;margin:0 auto}
.host__sean::after{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;background:var(--orange);z-index:2}
.host__copy{padding-bottom:clamp(48px,7vw,96px)}
.host__copy h2{font-weight:800;font-size:clamp(40px,5.2vw,72px);line-height:.92;max-width:14ch}
.hl{color:var(--orange);display:inline}
.snap{margin:30px 0 0;max-width:520px}
.snap img{border-radius:3px}
.snap figcaption{margin-top:10px;font:400 13px/1.3 var(--mono);color:var(--muted);border-top:1px solid var(--line);padding-top:10px}
@media (max-width:760px){
  .host__inner{grid-template-columns:1fr}
  .host__copy{order:-1;padding-bottom:0}
  .host__sean img{max-height:460px}
}

/* ---------- '85 ---------- */
.eightyfive{background:var(--orange);color:#fff;position:relative;overflow:hidden;padding:clamp(56px,8vw,110px) 0 0}
.big85{position:absolute;right:-.04em;top:-.08em;font:900 clamp(260px,40vw,620px)/.8 var(--disp);color:transparent;-webkit-text-stroke:3px rgba(11,22,42,.5);pointer-events:none;user-select:none}
.eightyfive__copy{position:relative;max-width:var(--wrap);margin:0 auto;padding:0 var(--gut) clamp(48px,7vw,96px)}
.eightyfive h2{font-weight:900;font-size:clamp(42px,6.6vw,96px);line-height:.9;max-width:15ch}
.eightyfive h2 span{color:var(--navy);display:inline}
.eightyfive .label--lt{color:#fff}
.ticker{background:var(--navy);overflow:hidden;border-top:4px solid #fff}
.ticker__t{display:flex;width:max-content;align-items:center;gap:22px;padding:16px 0;font:800 24px/1 var(--disp);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
.ticker__t i{font-style:normal;color:var(--orange-hi);font-size:16px}
@media (prefers-reduced-motion:no-preference){.ticker__t{animation:slideL 40s linear infinite}}

/* ---------- venue ---------- */
.venue{background:var(--cream)}
.venue__inner{max-width:var(--wrap);margin:0 auto;padding:clamp(56px,8vw,110px) var(--gut);display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(28px,5vw,72px);align-items:center}
.venue h2{font-weight:900;font-size:clamp(44px,5.6vw,80px)}
.venue address{font:italic 400 22px/1.3 var(--serif);margin:12px 0 0}
.venue__list{list-style:none;margin:26px 0 0;padding:0;border-top:1px solid var(--line)}
.venue__list li{display:grid;grid-template-columns:110px 1fr;gap:12px;align-items:baseline;padding:13px 0;border-bottom:1px solid var(--line);font:700 22px/1.2 var(--disp);text-transform:uppercase;letter-spacing:.02em}
.venue__list .k{color:var(--orange)}
.free{font-size:21px;line-height:1.45;margin:24px 0 0;max-width:34ch}
.links{display:flex;gap:26px;flex-wrap:wrap;margin:24px 0 0}
.links .tlink:hover{color:var(--orange)}
.plates{position:relative;display:grid;grid-template-columns:repeat(6,1fr);grid-auto-rows:minmax(0,auto);gap:12px}
.plate{margin:0;overflow:hidden;border-radius:3px}
.plate img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.plate:hover img{transform:scale(1.05)}
.plate--a{grid-column:1/5;aspect-ratio:3/2}
.plate--b{grid-column:3/7;aspect-ratio:3/2;margin-top:-18%;outline:8px solid var(--cream)}
.plate--c{grid-column:1/4;aspect-ratio:4/3;margin-top:-8%;outline:8px solid var(--cream)}
.credit{grid-column:4/7;align-self:end;margin:0;font:400 12px/1.3 var(--mono);color:var(--muted);text-align:right}
@media (max-width:860px){.venue__inner{grid-template-columns:1fr}}

/* ---------- RSVP ---------- */
.rsvp{position:relative;background:var(--navy);color:#fff;overflow:hidden}
.rsvp::before{content:"";position:absolute;inset:0;opacity:.5;background:repeating-linear-gradient(90deg, rgba(255,255,255,.06) 0 1px, transparent 1px 10%);pointer-events:none}
.rsvp__inner{position:relative;max-width:980px;margin:0 auto;padding:clamp(56px,8vw,110px) var(--gut)}
.rsvp h2{font-weight:900;font-size:clamp(56px,9vw,120px)}
.rsvp__head .serif{margin:14px 0 0;font-size:20px;color:rgba(255,255,255,.85)}
.form{margin-top:36px;display:grid;gap:22px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:22px}
@media (max-width:620px){.row2{grid-template-columns:1fr}}
.form label{display:grid;gap:8px;font:600 12px/1.2 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:rgba(255,255,255,.85)}
.form label>span small{margin-left:.4em}
.form small{font-size:12px;font-weight:400;text-transform:none;letter-spacing:0;color:rgba(255,255,255,.6)}
.form input:not([type=radio]){width:100%;font:400 20px/1.3 var(--serif);color:#fff;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.28);border-radius:4px;padding:13px 14px;text-transform:none;letter-spacing:0}
.form input:not([type=radio]):focus{outline:none;border-color:var(--orange-hi);background:rgba(255,255,255,.1);box-shadow:0 0 0 3px rgba(255,125,69,.25)}
.form input[aria-invalid=true]{border-color:#ff9a8a}
.party{border:0;margin:0;padding:0}
.party legend{font:600 12px/1.2 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:rgba(255,255,255,.85);margin-bottom:10px;padding:0}
.seg{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid rgba(255,255,255,.28);border-radius:4px;overflow:hidden;max-width:420px}
.seg label{display:block;position:relative;cursor:pointer}
.seg label+label{border-left:1px solid rgba(255,255,255,.28)}
.seg input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.seg span{display:block;text-align:center;padding:12px 0 10px;font:800 28px/1 var(--disp);color:#fff;transition:background .15s}
.seg input:checked+span{background:var(--orange)}
.seg input:focus-visible+span{outline:3px solid var(--orange-hi);outline-offset:-3px}
.seg label:hover span{background:rgba(255,255,255,.08)}
.seg input:checked:hover+span,.seg label:hover input:checked+span{background:var(--orange)}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.status{margin:0;min-height:1.4em;font:400 19px/1.4 var(--serif)}
.status.err{color:#ffb4a6}
.form.done{display:none}
.thanks{margin-top:36px;border-top:4px solid var(--orange);padding-top:26px}
.thanks h3{margin:0;font:900 clamp(40px,6vw,72px)/.9 var(--disp);text-transform:uppercase}
.thanks p{font-size:21px;margin:14px 0 0;max-width:40ch}
.thanks .tlink{color:#fff;margin-top:20px}
#confetti{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}

/* ---------- learn more ---------- */
.more{background:var(--paper);border-top:1px solid var(--line)}
.more__link{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:10px 24px;max-width:var(--wrap);margin:0 auto;padding:clamp(36px,5vw,64px) var(--gut);text-decoration:none}
.more__link .label{margin:0}
.more__url{font:900 clamp(44px,7vw,104px)/.9 var(--disp);text-transform:uppercase;color:var(--navy);transition:color .2s}
.more__url span{display:inline-block;transition:transform .25s;color:var(--orange)}
.more__link:hover .more__url{color:var(--orange)}
.more__link:hover .more__url span{transform:translate(6px,-6px)}

/* ---------- footer ---------- */
.foot{background:var(--navy);color:#fff;padding:34px var(--gut) 40px;text-align:center;border-top:6px solid var(--orange)}
.foot p{margin:0}
.foot a{font:700 clamp(22px,3vw,30px)/1.2 var(--disp);text-transform:none;text-decoration:none;border-bottom:2px solid var(--orange);word-break:break-word}
.foot a:hover{color:var(--orange-hi)}
.foot .k{display:block;color:var(--orange-hi);margin-bottom:10px}
.foot__fine{margin-top:22px!important;font:400 12px/1.5 var(--mono);color:rgba(255,255,255,.6)}

/* ---------- scroll reveal ---------- */
@media (prefers-reduced-motion:no-preference){
  .rv{opacity:0;transform:translateY(30px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
  .rv.in{opacity:1;transform:none}
}
