:root{
  --navy:#13223c;
  --navy-2:#1b2c4d;
  --steel:#1B6B93;
  --gold:#F0C85A;
  --gold-2:#d4a843;
  --off:#F7F3EA;
  --red:#a5232b;
  --muted:rgba(247,243,234,.72);
  --line:rgba(240,200,90,.28);
  --shadow:0 18px 48px rgba(8,14,28,.35);
}
*{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none!important}
html,body{
  background:var(--navy);
  color:var(--off);
  font:16px/1.55 Oswald,sans-serif;
  font-weight:400;
}
body{min-height:100vh}
.staging-banner{
  position:sticky;top:0;z-index:40;
  background:var(--red);color:var(--off);
  text-align:center;
  font-family:Oswald,sans-serif;
  font-weight:600;
  letter-spacing:.14em;
  text-transform:uppercase;
  font-size:12px;
  padding:8px 12px;
}
a{color:var(--gold);text-decoration:none}
a:hover,a:focus{color:#fff;text-decoration:underline}
.wrap{max-width:980px;margin:0 auto;padding:22px 16px 96px}
.hero{
  position:relative;
  min-height:100svh;
  min-height:100vh;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  overflow:hidden;
  color:var(--off);
}
.hero-slot{
  position:absolute;inset:0;
  background:#13223c center/cover no-repeat;
}
.hero-slot picture{display:contents;}
.hero-slot img{
  width:100%;height:100%;object-fit:cover;object-position:center 28%;
  display:block;
}
.hero-veil{
  position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(19,34,60,.18) 0%,rgba(19,34,60,.12) 38%,rgba(19,34,60,.55) 72%,rgba(19,34,60,.92) 100%);
  pointer-events:none;
}
.hero-copy{
  position:relative;
  z-index:1;
  text-align:center;
  padding:18px 16px 28px;
  max-width:920px;
  margin:0 auto;
  width:100%;
}
@media (max-width:719px){
  /* Photo gets its own band so the room and the table settings are never covered. */
  .hero{
    min-height:0;
    display:block;
    background:var(--navy);
  }
  .hero-slot{
    position:relative;
    inset:auto;
    width:100%;
    aspect-ratio:4 / 3;
  }
  .hero-slot img{object-position:center center;}
  .hero-veil{display:none;}
  .hero-copy{
    background:var(--navy);
    padding-top:18px;
    padding-bottom:32px;
    margin-top:-1px;
  }
  .reserve-dock.is-hero-visible{display:none;}
}
.eyebrow{
  font-family:Oswald,sans-serif;
  font-weight:400;
  letter-spacing:.3em;
  text-transform:uppercase;
  font-size:clamp(13px,2.4vw,16px);
  color:#fff;
  text-shadow:0 1px 8px rgba(19,34,60,.45);
}
.hero h1{
  font-family:"Playfair Display",Georgia,serif;
  font-weight:900;
  font-size:clamp(34px,9vw,72px);
  line-height:.95;
  color:var(--navy);
  margin:14px 12px 12px;
  text-shadow:0 1px 0 rgba(247,243,234,.35);
  -webkit-text-stroke:1.5px #fff;
  paint-order:stroke fill;
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:0 .18em;
}
.hero h1 .h1-line,
.hero h1 .h1-amp{display:inline;}
@media (max-width:719px){
  .hero h1 .h1-line{flex-basis:100%;}
  .hero h1 .h1-amp{flex-basis:100%;}
  .hero h1{
    color:var(--off);
    text-shadow:none;
    background:transparent;
    padding:6px 12px 8px;
    margin-left:0;
    margin-right:0;
  }
}
.sub-band{
  display:inline-block;
  background:rgba(19,34,60,.55);
  color:var(--off);
  font-family:"Playfair Display",Georgia,serif;
  font-style:italic;
  font-weight:400;
  font-size:clamp(16px,4.2vw,26px);
  padding:6px 18px 8px;
  margin:0 auto 18px;
}
.when,.where{
  font-family:Oswald,sans-serif;
  font-weight:600;
  letter-spacing:.14em;
  text-transform:uppercase;
}
.when{font-size:clamp(15px,3.6vw,22px);color:var(--off);margin-top:8px}
.where{font-size:clamp(13px,3vw,16px);color:var(--gold);margin-top:8px}
.where.address{
  color:var(--off);
  font-size:clamp(12px,2.6vw,15px);
  letter-spacing:.1em;
}
.music{
  font-family:"Playfair Display",Georgia,serif;
  font-style:italic;
  font-weight:400;
  font-size:clamp(16px,3.8vw,22px);
  margin-top:14px;
}
.special-guest{
  font-family:"Playfair Display",Georgia,serif;
  font-style:italic;
  font-weight:400;
  font-size:clamp(17px,4vw,24px);
  margin-top:14px;
  color:var(--off);
}
.special-guest strong{
  font-family:Oswald,sans-serif;
  font-style:normal;
  font-weight:600;
  letter-spacing:.18em;
  text-transform:uppercase;
  font-size:clamp(13px,3vw,18px);
  color:var(--gold);
}
.attire{
  font-family:Oswald,sans-serif;
  letter-spacing:.22em;
  text-transform:uppercase;
  font-size:clamp(13px,2.8vw,16px);
  color:rgba(247,243,234,.85);
  margin-top:16px;
}
.cta{
  display:inline-block;
  margin-top:18px;
  background:var(--gold);
  color:var(--navy)!important;
  font-family:Oswald,sans-serif;
  font-weight:600;
  letter-spacing:.14em;
  text-transform:uppercase;
  text-decoration:none!important;
  padding:14px 22px;
  border-radius:2px;
}
.cta:hover,.cta:focus{background:#fff;color:var(--navy)!important}
.cta-row{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:18px}
.cta-row .cta{margin-top:0}
.donate-cta{
  background:transparent;
  color:var(--gold)!important;
  border:1px solid var(--gold);
}
.donate-cta:hover,.donate-cta:focus{background:var(--gold);color:var(--navy)!important}
.rule{
  width:1.1in;height:1px;background:var(--gold-2);margin:16px auto;
}
.panel,.card{
  background:var(--navy-2);
  border:1px solid var(--gold-2);
  outline:1px solid var(--gold-2);
  outline-offset:6px;
  padding:22px 18px;
  margin:28px 16px;
  box-shadow:var(--shadow);
}
.wrap > .panel,.wrap > .card{margin-left:0;margin-right:0}
.kicker{
  font-family:Oswald,sans-serif;
  letter-spacing:.22em;
  text-transform:uppercase;
  font-size:12px;
  color:var(--gold);
  text-align:center;
}
.panel h2,.card h2,.wrap h1{
  font-family:"Playfair Display",Georgia,serif;
  font-weight:700;
  font-size:clamp(26px,6vw,40px);
  text-align:center;
  color:var(--off);
  margin:6px 0 4px;
}
.gold-italic{
  font-family:"Playfair Display",Georgia,serif;
  font-style:italic;
  font-weight:400;
  color:var(--gold);
  text-align:center;
  font-size:clamp(16px,3.5vw,22px);
}
.when-block{text-align:center;margin:8px 0 4px}
.details{
  display:grid;
  gap:0;
  margin-top:8px;
}
.details > div{
  display:grid;
  grid-template-columns:1fr;
  gap:6px;
  padding:14px 0;
  border-top:1px solid var(--line);
  color:var(--off);
}
.details b{
  font-family:Oswald,sans-serif;
  font-weight:600;
  letter-spacing:.16em;
  text-transform:uppercase;
  font-size:12px;
  color:var(--gold);
}
.table-tier-list,
.giving-options{
  margin:0;
  padding-left:20px;
  color:var(--off);
}
.table-tier-list li + li,
.giving-options li + li{margin-top:6px}
.giving-options{
  margin-top:14px;
  color:var(--muted);
}
.giving-options .giving-other{
  color:var(--muted);
  font-size:14px;
}
.giving-link{color:var(--gold)}
.artist-name{
  display:block;
  font-family:"Playfair Display",Georgia,serif;
  font-size:22px;
  color:var(--off);
}
.artist-bio{
  display:block;
  margin-top:6px;
  color:var(--off);
}
.auction{
  margin-top:18px;
  text-align:right;
  font-family:"Playfair Display",Georgia,serif;
  font-style:italic;
  color:var(--gold);
  font-size:clamp(16px,3.4vw,20px);
}
.auction strong{
  display:block;
  font-style:italic;
  font-weight:700;
  font-size:clamp(22px,5vw,32px);
  color:var(--gold);
}
.legend{
  display:flex;flex-wrap:wrap;gap:10px 14px;
  margin:12px 0 16px;font-size:13px;color:var(--muted);justify-content:center;
}
.legend span{display:inline-flex;align-items:center;gap:6px}
.swatch{width:14px;height:14px;border-radius:50%;border:2px solid var(--steel);display:inline-block;background:transparent}
.swatch.circle{border-color:var(--gold);box-shadow:0 0 0 2px rgba(240,200,90,.25)}
.swatch.reserved{border-color:var(--off);background:rgba(247,243,234,.12)}
.swatch.sold{background:var(--navy);border-color:var(--off)}
.floor{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
}
.tbl{
  aspect-ratio:1;
  border-radius:50%;
  border:2px solid rgba(247,243,234,.55);
  background:rgba(19,34,60,.55);
  color:var(--off);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;cursor:pointer;padding:8px;min-height:92px;
}
.tbl .code{font-family:Oswald,sans-serif;letter-spacing:.08em;font-size:15px;font-weight:600}
.tbl .price,.tbl .host,.tbl .wine{font-size:11px;color:var(--muted);max-width:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tbl .wine{color:var(--gold-2)}
.tbl.senators_circle{
  border-color:var(--gold);
  box-shadow:0 0 0 3px rgba(240,200,90,.22);
  background:rgba(240,200,90,.08);
}
.tbl.reserved{border-color:rgba(247,243,234,.35);background:rgba(247,243,234,.08);cursor:not-allowed}
.tbl.sold{background:#0c1728;color:#fff;border-color:#0c1728;cursor:not-allowed;position:relative}
.tbl.sold .x{position:absolute;font-size:42px;opacity:.35;font-family:Oswald,sans-serif}
.tbl.open:hover,.tbl.open:focus{transform:scale(1.03);outline:none;box-shadow:0 0 0 3px rgba(27,107,147,.45)}
.tbl[aria-pressed="true"]{box-shadow:0 0 0 3px var(--gold)}
form label{
  display:block;
  font-family:Oswald,sans-serif;
  letter-spacing:.12em;
  text-transform:uppercase;
  font-size:12px;
  margin:12px 0 6px;
  color:var(--gold);
}
input,textarea{
  width:100%;
  border:1px solid var(--line);
  border-radius:8px;
  padding:12px 12px;
  font:16px Oswald,sans-serif;
  background:rgba(19,34,60,.65);
  color:var(--off);
}
input:focus,textarea:focus{outline:2px solid var(--gold);outline-offset:1px}
.guests{display:grid;grid-template-columns:1fr;gap:8px}
.actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
button,.btn{
  font-family:Oswald,sans-serif;
  letter-spacing:.08em;
  text-transform:uppercase;
  border:0;border-radius:8px;
  padding:13px 16px;
  cursor:pointer;
  text-decoration:none;
  display:inline-block;
  text-align:center;
}
.primary{background:var(--gold);color:var(--navy);font-weight:600}
.primary:disabled{opacity:.5;cursor:not-allowed}
.payment-disabled{
  opacity:.72;
  cursor:not-allowed;
  pointer-events:auto;
}
.giving-link.payment-disabled{color:var(--muted)}
.ghost{background:transparent;border:1px solid var(--steel);color:var(--off)}
.err{color:#f0b4b8;min-height:20px;margin-top:8px}
.note{font-size:14px;color:var(--muted);margin-top:10px}
.compliance{
  text-align:center;
  font-size:11px;
  letter-spacing:.04em;
  color:var(--muted);
  margin-top:20px;
  max-width:36rem;
  margin-left:auto;
  margin-right:auto;
}
.powered-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  margin:10px auto 0;
  padding:6px 10px;
  border:1px solid var(--gold-2);
  border-radius:2px;
  color:var(--gold);
  font-family:Oswald,sans-serif;
  font-size:11px;
  font-weight:600;
  letter-spacing:.12em;
  line-height:1.2;
  text-transform:uppercase;
}
.powered-badge span{
  color:var(--muted);
  font-size:9px;
  font-weight:400;
}
.share-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.qr-box{display:flex;flex-direction:column;align-items:center;margin:10px 0}
.guest-list{margin:12px 0 0;padding-left:20px;color:var(--off)}
.musician-slot{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:12px;width:100%}
.musician-credit{
  font-family:Oswald,sans-serif;letter-spacing:.14em;text-transform:uppercase;
  font-size:9px;color:var(--muted);text-align:center;
}
.musician-ph{
  display:inline-flex;align-items:center;justify-content:center;
  width:100%;max-width:360px;min-height:72px;border-radius:4px;
  border:1px dashed var(--gold-2);color:var(--gold-2);
  font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  text-align:center;padding:8px;line-height:1.2;
}
a.primary{background:var(--gold);color:var(--navy);font-weight:600}
.admin-table{width:100%;border-collapse:collapse;font-size:14px;color:var(--off)}
.admin-table th,.admin-table td{border-bottom:1px solid var(--line);padding:8px 6px;text-align:left;vertical-align:top}
.admin-table button{padding:8px 10px;font-size:12px}
.token-bar{display:flex;gap:8px;align-items:end;flex-wrap:wrap}
.site-footer{
  max-width:980px;
  margin:8px auto 28px;
  padding:8px 16px 28px;
  display:grid;
  gap:14px;
  justify-items:center;
  text-align:center;
}
.site-footer .logo{width:148px;height:auto;display:block}
.contact{font-size:15px;color:var(--off)}
.contact a{color:var(--gold)}
.reserve-dock{
  position:fixed;left:0;right:0;bottom:0;z-index:20;
  padding:10px 12px calc(10px + env(safe-area-inset-bottom));
  background:linear-gradient(180deg,transparent,rgba(19,34,60,.92) 28%,var(--navy));
  text-align:center;
}
.reserve-dock .cta{width:100%;max-width:420px}
.reserve-dock{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.reserve-dock .donate-cta{max-width:220px}
@media(min-width:720px){
  .hero{min-height:78vh}
  .hero-copy{padding:28px 24px 40px}
  .details > div{
    grid-template-columns:140px 1fr;
    gap:16px;
    align-items:start;
  }
  .floor{grid-template-columns:repeat(5,minmax(0,1fr))}
  .guests{grid-template-columns:1fr 1fr}
  .tbl{min-height:92px}
  .panel,.card{padding:28px 32px;margin:32px auto}
  .site-footer{
    grid-template-columns:148px 1fr;
    justify-items:start;
    text-align:left;
    align-items:end;
  }
  .reserve-dock{display:none}
}
@media(min-width:720px){
  .hero h1{flex-wrap:nowrap;white-space:nowrap;}
  .hero h1 .h1-line,.hero h1 .h1-amp{flex-basis:auto;}
}
@media(min-width:980px){
  .hero h1{font-size:78px}
}
.place-grid{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:10px;
  margin-top:14px;
}
.place-grid figure{margin:0;flex:0 1 300px;max-width:300px;}
.place-grid img{
  width:100%;
  height:170px;
  object-fit:cover;
  border:1px solid var(--gold-2);
  border-radius:4px;
  display:block;
}
@media (max-width:719px){
  .place-grid figure{flex-basis:260px;max-width:260px;}
  .place-grid img{height:150px;}
}
.place-note{
  font-family:Oswald,sans-serif;
  letter-spacing:.16em;
  text-transform:uppercase;
  font-size:10px;
  color:var(--muted);
  text-align:center;
  margin-top:14px;
}
.menu-list{
  max-width:34rem;
  margin:16px auto 0;
  text-align:center;
  font-size:15px;
  line-height:1.6;
  color:var(--off);
}
@media (max-width:719px){
  .menu-list{font-size:14px;}
}
.place-grid figcaption{
  font-family:Oswald,sans-serif;
  letter-spacing:.1em;
  text-transform:uppercase;
  font-size:9px;
  color:var(--muted);
  text-align:center;
  margin-top:6px;
}
.place-grid figure.place-wide{grid-column:1/-1;}
.place-grid figure.place-wide img{
  height:auto;
  aspect-ratio:16/9;
  object-fit:cover;
  object-position:center;
}
.seat-poster{padding:8px 0;}
.seat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px;}
.seat-tbl{border:1px solid var(--line);border-radius:8px;padding:12px;}
.seat-name{font-family:"Playfair Display",Georgia,serif;font-size:18px;text-align:center;}
.seat-tag{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-2);text-align:center;margin:4px 0 8px;}
.seat-tbl ul{list-style:none;text-align:center;}
.seat-tbl li{font-size:15px;line-height:1.7;}
.seat-tbl .open-seat{color:var(--muted);font-style:italic;}
@media(min-width:720px){
  .place-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
  .seat-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
}
