/* Volt Raceway booking and checkout UI */
.booking-hero {
  padding: 9rem 0 4rem;
  background:
    linear-gradient(180deg, rgba(10,10,10,0.55), rgba(10,10,10,0.95)),
    radial-gradient(circle at top right, rgba(227,24,55,0.18), transparent 38%);
  border-bottom: 1px solid var(--gray-800);
}
.booking-hero-content { max-width: 760px; }
.booking-hero .eyebrow {
  display: inline-block;
  font-family: var(--font-display);
  color: var(--red);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: 0.8rem;
  margin-bottom: 0.75rem;
}
.booking-hero h1 {
  font-family: var(--font-display);
  font-size: clamp(2.4rem, 5vw, 4.75rem);
  line-height: 0.95;
  text-transform: uppercase;
  margin-bottom: 1rem;
}
.booking-hero p { color: var(--gray-300); max-width: 620px; line-height: 1.7; }
.checkout-hero { padding-bottom: 3rem; }

.booking-steps { background: var(--black); border-bottom: 1px solid var(--gray-800); padding: 1.2rem 0; }
.steps-track { display: flex; align-items: center; justify-content: center; gap: 0.75rem; }
.step { display: flex; align-items: center; gap: 0.5rem; color: var(--gray-500); font-family: var(--font-display); text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.78rem; }
.step-num { width: 2rem; height: 2rem; border-radius: 999px; border: 1px solid var(--gray-700); display: grid; place-items: center; color: var(--gray-400); }
.step.active, .step.done { color: var(--white); }
.step.active .step-num, .step.done .step-num { background: var(--red); border-color: var(--red); color: var(--white); }
.step-line { width: 5rem; height: 1px; background: var(--gray-800); }
.step-line.active, .step-line.done { background: var(--red); }

.booking-toolbar { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; }
.booking-toolbar h2, .checkout-section-title { font-family: var(--font-display); text-transform: uppercase; letter-spacing: 0.04em; }
.booking-toolbar p { color: var(--gray-400); margin-top: 0.35rem; }
.category-filter { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-bottom: 2rem; }
.cat-btn { background: #151515; color: var(--gray-300); border: 1px solid var(--gray-800); border-radius: 999px; padding: 0.65rem 1rem; cursor: pointer; font-family: var(--font-display); text-transform: uppercase; letter-spacing: 0.06em; transition: all 0.2s; }
.cat-btn:hover, .cat-btn.active { border-color: var(--red); color: var(--white); background: rgba(227,24,55,0.15); }
.venue-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1.25rem; }
.venue-grid.popular-view .price-card.featured::before { display: none; }
.venue-product-grid { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 1.25rem; }
.venue-product-grid > .price-card { grid-column: span 2; min-width: 0; }
.venue-product-grid--count-1 > .price-card:first-child { grid-column: 4 / span 2; }
.venue-product-grid--count-2 > .price-card:first-child { grid-column: 3 / span 2; }
.venue-product-grid--count-3 > .price-card:first-child { grid-column: 2 / span 2; }
.featured-badge { display: inline-block; background: var(--red); color: var(--white); border-radius: 999px; padding: 0.2rem 0.7rem; font-family: var(--font-display); font-size: 0.7rem; letter-spacing: 0.1em; margin-bottom: 0.75rem; }
.loading-state { grid-column: 1 / -1; color: var(--gray-400); text-align: center; padding: 2rem; }
.spinner { width: 28px; height: 28px; border: 3px solid var(--gray-800); border-top-color: var(--red); border-radius: 50%; margin: 0 auto 1rem; animation: spin 0.9s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

.modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.82); z-index: 3000; display: none; align-items: center; justify-content: center; padding: 1rem; overflow-y: auto; }
.modal-overlay.open { display: flex; }
.modal { background: #101010; border: 1px solid var(--gray-800); border-radius: 16px; color: var(--white); box-shadow: 0 24px 80px rgba(0,0,0,0.55); position: relative; }
.booking-modal { width: min(980px, 100%); max-height: 92vh; overflow-y: auto; }
.modal-close { position: absolute; top: 0.85rem; right: 1rem; background: transparent; border: 0; color: var(--gray-400); font-size: 2rem; cursor: pointer; z-index: 2; }
.modal-close:hover { color: var(--white); }
.modal-layout { display: grid; grid-template-columns: 0.9fr 1.1fr; }
.modal-media { min-height: 100%; background: #171717; border-radius: 16px 0 0 16px; overflow: hidden; }
.modal-media img { width: 100%; height: 100%; min-height: 520px; object-fit: cover; display: block; }
.modal-img-placeholder { min-height: 520px; display: grid; place-items: center; color: var(--gray-400); font-family: var(--font-display); font-size: 2rem; }
.modal-content { padding: 2.25rem; }
.modal-meta-row { display: flex; gap: 0.75rem; flex-wrap: wrap; color: var(--gray-400); font-size: 0.85rem; margin-bottom: 0.8rem; }
.modal-content h2 { font-family: var(--font-display); text-transform: uppercase; font-size: 2rem; margin-bottom: 0.5rem; padding-right: 2rem; }
.modal-price { color: var(--red); font-family: var(--font-display); font-size: 1.25rem; font-weight: 700; margin-bottom: 0.75rem; }
.modal-desc { color: var(--gray-400); line-height: 1.6; margin-bottom: 1.25rem; }
.modal-ecom-details { color: var(--gray-300); line-height: 1.55; margin: -0.35rem 0 1.25rem; padding: 0.9rem 1rem; border: 1px solid var(--gray-800); border-radius: 10px; background: rgba(255,255,255,0.03); white-space: pre-line; font-size: 0.92rem; }
.booking-control { border-top: 1px solid var(--gray-800); padding-top: 1.1rem; margin-top: 1.1rem; }
.booking-control h3 { font-family: var(--font-display); text-transform: uppercase; margin-bottom: 0.75rem; font-size: 1rem; }
.qty-control { display: inline-flex; align-items: center; border: 1px solid var(--gray-800); border-radius: 999px; overflow: hidden; }
.qty-control button { width: 42px; height: 42px; background: #171717; color: var(--white); border: 0; cursor: pointer; font-size: 1.2rem; }
.qty-control span { min-width: 54px; text-align: center; font-family: var(--font-display); font-size: 1.2rem; }
.qty-subtotal { color: var(--gray-400); margin-top: 0.65rem; }
.date-picker { display: grid; grid-template-columns: repeat(7, 1fr); gap: 0.5rem; }
.date-btn, .time-slot { background: #171717; color: var(--white); border: 1px solid var(--gray-800); border-radius: 10px; cursor: pointer; transition: all 0.2s; }
.date-btn { padding: 0.6rem 0.3rem; font-family: var(--font-display); }
.date-day, .date-month { display: block; color: var(--gray-500); font-size: 0.7rem; text-transform: uppercase; }
.date-num { display: block; font-size: 1.35rem; line-height: 1; margin: 0.15rem 0; }
.date-btn:hover, .date-btn.selected, .time-slot:hover, .time-slot.selected { border-color: var(--red); background: rgba(227,24,55,0.13); }
.time-slots { display: grid; grid-template-columns: repeat(auto-fit, minmax(112px, 1fr)); gap: 0.6rem; }
.time-slot { padding: 0.75rem 0.6rem; }
.time-slot.unavailable { opacity: 0.38; cursor: not-allowed; }
.slot-time { font-family: var(--font-display); font-size: 1.05rem; }
.slot-avail { color: var(--gray-500); font-size: 0.8rem; margin-top: 0.2rem; }
.btn-full { width: 100%; justify-content: center; }
.btn:disabled, button:disabled { opacity: 0.55; cursor: not-allowed; }
.cart-float { position: fixed; left: 50%; bottom: 1rem; transform: translateX(-50%); z-index: 2500; width: min(520px, calc(100% - 2rem)); }
.cart-float-link { display: flex; align-items: center; justify-content: space-between; gap: 1rem; color: var(--white); text-decoration: none; background: #111; border: 1px solid var(--red); border-radius: 999px; box-shadow: 0 16px 50px rgba(0,0,0,0.45); padding: 0.85rem 1.1rem; font-family: var(--font-display); text-transform: uppercase; letter-spacing: 0.04em; }
.cart-action { background: var(--red); padding: 0.45rem 0.9rem; border-radius: 999px; }

.checkout-layout { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(340px, 0.85fr); gap: 2rem; align-items: start; }
.checkout-cart, .checkout-payment, .order-summary { background: #111; border: 1px solid var(--gray-800); border-radius: 14px; padding: 1.5rem; }
.checkout-payment { position: sticky; top: 6.5rem; }
.checkout-section-title { margin-bottom: 1rem; }
.checkout-item { display: grid; grid-template-columns: 88px minmax(0, 1fr) auto; gap: 1rem; padding: 1rem 0; border-bottom: 1px solid var(--gray-800); align-items: center; }
.checkout-item-img { width: 88px; height: 72px; overflow: hidden; border-radius: 10px; background: #1a1a1a; }
.checkout-item-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.checkout-item-info { min-width: 0; }
.checkout-item-info h4 { margin: 0 0 0.35rem; color: var(--white); font-family: var(--font-display); font-size: 1.08rem; letter-spacing: 0.035em; line-height: 1.05; text-transform: uppercase; }
.item-detail, .checkout-item-meta, .checkout-food-desc { color: var(--gray-400); font-size: 0.9rem; line-height: 1.5; }
.checkout-item-actions { display: grid; justify-items: end; gap: 0.55rem; }
.checkout-item-price { font-family: var(--font-display); font-size: 1.1rem; color: var(--white); white-space: nowrap; }
.checkout-item-remove { min-height: 36px; padding: 0.4rem 0.65rem; border: 1px solid var(--gray-700); border-radius: 999px; background: transparent; color: var(--gray-300); cursor: pointer; font: 600 0.7rem var(--font-display); letter-spacing: 0.07em; text-transform: uppercase; transition: color 0.2s, border-color 0.2s, background 0.2s; }
.checkout-item-remove:hover, .checkout-item-remove:focus-visible { border-color: var(--red); background: rgba(227,24,55,0.12); color: var(--white); outline: none; }
.add-more-link { display: inline-flex; align-items: center; gap: 0.4rem; color: var(--red); font-family: var(--font-display); text-transform: uppercase; text-decoration: none; margin: 1rem 0 1.5rem; }
.checkout-food-section { margin-top: 1rem; }
.checkout-party-space-section { margin: 1.25rem 0 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--gray-800); }
.party-space-option-card { display: grid; gap: 0.8rem; margin-top: 1rem; padding: 1rem; border: 1px solid var(--gray-800); border-radius: 10px; background: #0c0c0c; }
.party-space-option-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; color: var(--gray-300); }
.party-space-option-head strong { color: var(--white); font-family: var(--font-display); text-transform: uppercase; letter-spacing: 0.035em; }
.party-space-choice-group { display: flex; flex-wrap: wrap; gap: 0.75rem; }
.party-space-choice-group .btn { min-height: 44px; }
.food-grid { display: grid; gap: 0.75rem; margin-top: 1rem; }
.food-card { display: grid; grid-template-columns: 1fr auto; gap: 1rem; border: 1px solid var(--gray-800); border-radius: 10px; padding: 1rem; background: #0c0c0c; }
.food-card { align-items: center; }
.food-card.in-cart { border-color: rgba(227,24,55,0.6); }
.food-card h5 { font-family: var(--font-display); font-size: 1rem; text-transform: uppercase; margin-bottom: 0.25rem; }
.food-card-info span { color: var(--gray-500); font-size: 0.85rem; }
.food-card-price { color: var(--red); font-family: var(--font-display); font-weight: 700; }
.food-card-qty { display: flex; align-items: center; gap: 0.5rem; }
.food-qty-btn { width: 44px; height: 44px; border-radius: 999px; border: 1px solid var(--gray-700); background: #161616; color: var(--white); cursor: pointer; font-size: 1.25rem; line-height: 1; }
.food-qty-btn:hover { border-color: var(--red); }
.food-qty-val { min-width: 1.5rem; text-align: center; font-family: var(--font-display); font-size: 1.1rem; }
.food-service-controls { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(180px, .8fr); gap: .75rem; margin: 1rem 0; padding: 1rem; border: 1px solid var(--gray-800); border-radius: 10px; background: #0c0c0c; }
.food-service-field { display: grid; gap: .42rem; }
.food-service-field label { color: var(--gray-300); font: 600 .75rem var(--font-display); letter-spacing: .06em; text-transform: uppercase; }
.food-service-field select { width: 100%; min-height: 44px; padding: .65rem .75rem; border: 1px solid var(--gray-700); border-radius: 8px; background: #101010; color: var(--white); font: inherit; }
.food-service-field select:focus-visible { border-color: var(--red); outline: 3px solid rgba(227,24,55,.35); outline-offset: 2px; }
.food-service-note { grid-column: 1 / -1; margin: 0; color: var(--gray-400); font-size: .82rem; line-height: 1.45; }
.food-service-empty { margin: 0; color: var(--gray-400); font-size: .9rem; line-height: 1.5; }
.order-summary { margin-top: 1.5rem; }
.summary-line { display: flex; justify-content: space-between; gap: 1rem; padding: 0.45rem 0; color: var(--gray-300); }
.summary-total { display: flex; justify-content: space-between; border-top: 1px solid var(--gray-800); margin-top: 0.8rem; padding-top: 1rem; font-family: var(--font-display); font-size: 1.35rem; color: var(--white); }
.checkout-details-jump { display: none; align-items: center; justify-content: center; gap: .65rem; min-height: 50px; margin-top: 1rem; border: 1px solid rgba(227,24,55,.7); border-radius: 9px; background: rgba(227,24,55,.12); color: var(--white); font: 600 .88rem var(--font-display); letter-spacing: .07em; text-align: center; text-decoration: none; text-transform: uppercase; }
.checkout-details-jump span { color: var(--red); font-size: 1.1rem; }
.checkout-details-jump:focus-visible, .checkout-details-jump:hover { background: var(--red); outline: none; }
.checkout-details-jump:focus-visible span, .checkout-details-jump:hover span { color: var(--white); }
#checkoutDetails { scroll-margin-top: 6.5rem; }
.checkout-form label { display: block; font-family: var(--font-display); text-transform: uppercase; letter-spacing: 0.05em; font-size: 0.8rem; margin-bottom: 0.4rem; }
.form-group { margin-bottom: 1rem; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.checkout-form input, .checkout-form textarea { width: 100%; background: #0b0b0b; border: 1px solid var(--gray-800); color: var(--white); border-radius: 8px; padding: 0.85rem 1rem; font: inherit; }
.checkout-form input:focus, .checkout-form textarea:focus { outline: none; border-color: var(--red); }
.checkout-form input.checkout-field-missing { border-color: var(--red); box-shadow: 0 0 0 1px var(--red); }
.promo-row { display: flex; gap: 0.5rem; }
.payment-card-wrap { min-height: 94px; background: #0b0b0b; border: 1px solid var(--gray-800); border-radius: 10px; padding: 1rem; margin-bottom: 1rem; }
.payment-card-wrap[hidden] { display: none !important; }
.payment-wallets { display: grid; gap: 0.75rem; margin-bottom: 1rem; }
.payment-wallets[hidden] { display: none !important; }
.wallet-payment-heading { margin: 0; color: var(--gray-300); font: 600 0.78rem var(--font-display); letter-spacing: 0.07em; text-align: center; text-transform: uppercase; }
.apple-pay-button { width: 100%; min-height: 48px; border: 0; border-radius: 10px; -webkit-appearance: -apple-pay-button; -apple-pay-button-type: buy; -apple-pay-button-style: black; cursor: pointer; }
.apple-pay-button[hidden], .google-pay-button[hidden] { display: none !important; }
.google-pay-button { min-height: 48px; overflow: hidden; border-radius: 10px; }
.wallet-payment-divider { display: flex; align-items: center; gap: 0.75rem; color: var(--gray-500); font-size: 0.78rem; text-align: center; }
.wallet-payment-divider::before, .wallet-payment-divider::after { content: ''; height: 1px; flex: 1; background: var(--gray-800); }
.wallet-payment-divider[hidden] { display: none !important; }
.complimentary-payment-notice { display: grid; gap: 0.35rem; background: rgba(34,197,94,0.1); border: 1px solid rgba(74,222,128,0.55); border-radius: 10px; padding: 1rem; margin-bottom: 1rem; color: #bbf7d0; }
.complimentary-payment-notice[hidden] { display: none !important; }
/* The card and complimentary states are mutually exclusive. This is a
   defensive visual guard for async checkout refreshes; JavaScript applies the
   data attribute from the same server-verified total shown in the summary. */
body[data-verified-payment-mode='complimentary'] .payment-card-wrap,
body[data-verified-payment-mode='complimentary'] #paymentSecurityNote { display: none !important; }
body[data-verified-payment-mode='complimentary'] #complimentaryPaymentNotice { display: grid !important; }
body[data-verified-payment-mode='card'] #complimentaryPaymentNotice { display: none !important; }
.complimentary-payment-notice strong { color: #4ade80; font-family: var(--font-display); text-transform: uppercase; letter-spacing: 0.04em; }
.complimentary-payment-notice span { color: var(--gray-300); font-size: 0.9rem; line-height: 1.45; }
.checkout-btn { display: flex; align-items: center; justify-content: center; gap: 0.75rem; }
.checkout-secure { color: var(--gray-500); font-size: 0.85rem; margin-top: 0.85rem; text-align: center; }
.checkout-legal { color: var(--gray-500); font-size: 0.8rem; line-height: 1.5; margin-top: 0.6rem; text-align: center; }
.checkout-legal a { color: var(--gray-300); text-decoration: underline; text-underline-offset: 2px; }
.checkout-legal a:hover { color: var(--white); }
.confirm-modal { width: min(560px, 100%); padding: 2rem; text-align: center; }
.confirm-icon { width: 64px; height: 64px; display: grid; place-items: center; background: var(--red); border-radius: 50%; margin: 0 auto 1rem; font-family: var(--font-display); font-size: 2rem; }
.confirm-ref, .confirm-email { color: var(--gray-400); margin: 0.75rem 0; }
.confirm-actions { display: flex; gap: 0.75rem; justify-content: center; flex-wrap: wrap; margin-top: 1.5rem; }
.empty-cart { text-align: center; padding: 2rem; color: var(--gray-400); border: 1px dashed var(--gray-800); border-radius: 12px; }

@media (max-width: 900px) {
  .steps-track { justify-content: flex-start; overflow-x: auto; padding-bottom: 0.4rem; }
  .step-line { width: 2rem; flex: 0 0 2rem; }
  .checkout-layout { grid-template-columns: minmax(0, 1fr); }
  .modal-layout { grid-template-columns: 1fr; }
  .checkout-payment { position: static; }
  .modal-media, .modal-media img, .modal-img-placeholder { min-height: 260px; border-radius: 16px 16px 0 0; }
  .date-picker { grid-template-columns: repeat(4, 1fr); }
}
@media (max-width: 620px) {
  .booking-toolbar, .form-row { grid-template-columns: 1fr; display: grid; align-items: stretch; }
  .checkout-item { grid-template-columns: 92px minmax(0, 1fr); gap: 0.85rem; align-items: start; }
  .promo-row { flex-wrap: wrap; }
  .promo-row input { flex: 1 1 100%; }
  .promo-row .btn { flex: 1 1 0; }
  .checkout-item-img { width: 92px; height: 92px; }
  .checkout-item-info h4 { font-size: 1rem; }
  .item-detail { font-size: .84rem; }
  .checkout-item-actions { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; padding-top: 0.15rem; }
  .checkout-item-remove { min-height: 42px; padding-inline: 0.85rem; }
  .checkout-details-jump { display: flex; }
  .party-space-option-head { align-items: flex-start; flex-direction: column; gap: 0.25rem; }
  .party-space-choice-group { display: grid; grid-template-columns: 1fr; }
  .date-picker { grid-template-columns: repeat(2, 1fr); }
  .time-slots { grid-template-columns: repeat(2, 1fr); }
  .food-service-controls { grid-template-columns: 1fr; }
}


.member-gate {
  border: 1px solid var(--gray-800);
  border-radius: 12px;
  background: rgba(255,255,255,0.03);
  padding: 1rem;
  margin-bottom: 1.25rem;
}
.member-gate-verified {
  border-color: rgba(74, 222, 128, 0.35);
  background: rgba(74, 222, 128, 0.08);
}
.member-status strong {
  display: block;
  color: var(--white);
  font-family: var(--font-display);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 0.4rem;
}
.member-status span {
  display: block;
  color: var(--gray-400);
  font-size: 0.9rem;
  line-height: 1.5;
}
.member-actions {
  display: grid;
  gap: 0.75rem;
  margin-top: 1rem;
}
.member-actions .btn {
  text-align: center;
}
.member-small-note {
  color: var(--gray-500);
  font-size: 0.82rem;
  line-height: 1.45;
  margin-top: 0.75rem;
}


/* ---- BOOKING UX: occasion-first routing and compact progress ---------------- */
.booking-route-strip { padding: 2.25rem 0; background: linear-gradient(115deg, #111 0%, #151012 55%, #100d0e 100%); border-bottom: 1px solid var(--gray-800); }
.booking-route-heading { display:flex; align-items:end; justify-content:space-between; gap:2rem; margin-bottom:1.35rem; }
.booking-route-heading h2 { margin-top:0.25rem; font-family:var(--font-display); font-size:clamp(1.7rem,3.2vw,2.4rem); line-height:1; text-transform:uppercase; }
.booking-route-heading p { max-width:34rem; color:var(--gray-400); font-size:0.92rem; }
.booking-route-grid { display:grid; grid-template-columns:repeat(5, minmax(0,1fr)); gap:0.75rem; }
.booking-route { min-height:156px; display:flex; flex-direction:column; justify-content:flex-start; gap:0.45rem; padding:1rem; border:1px solid var(--gray-800); border-radius:12px; background:rgba(255,255,255,0.025); color:var(--gray-300); text-align:left; text-decoration:none; cursor:pointer; transition:transform .2s ease,border-color .2s ease,background .2s ease; }
.booking-route:hover, .booking-route:focus-visible, .booking-route.selected { transform:translateY(-2px); border-color:rgba(227,24,55,.75); background:rgba(227,24,55,.10); outline:none; }
.booking-route-kicker { color:var(--red); font-family:var(--font-display); font-size:0.68rem; font-weight:600; letter-spacing:.12em; text-transform:uppercase; }
.booking-route strong { color:var(--white); font-family:var(--font-display); font-size:1.1rem; letter-spacing:.03em; text-transform:uppercase; }
.booking-route > span:last-child { color:var(--gray-400); font-size:.84rem; line-height:1.45; }
.booking-route-event { border-color:rgba(227,24,55,.5); background:linear-gradient(135deg,rgba(227,24,55,.18),rgba(255,255,255,.025)); }
.booking-prep-note { margin:0 0 1.4rem; padding:.8rem 1rem; border:1px solid rgba(227,24,55,.28); border-radius:10px; background:rgba(227,24,55,.065); color:var(--gray-300); font-size:.88rem; line-height:1.5; }
.booking-prep-note strong { color:var(--white); }
.booking-prep-note a { color:var(--white); text-decoration:underline; text-underline-offset:3px; }
.step-mobile-summary { display:none; }
.booking-product-card { display:flex; flex-direction:column; min-height:100%; }
.booking-card-facts { display:flex; flex-wrap:wrap; gap:.45rem; margin:.55rem 0 .8rem; }
.booking-card-facts span { padding:.24rem .48rem; border:1px solid var(--gray-700); border-radius:999px; color:var(--gray-300); font-size:.72rem; font-weight:600; }
.booking-card-features { margin-bottom:.45rem; }
.booking-card-details { margin:.2rem 0 1rem; color:var(--gray-400); }
.booking-card-details summary { cursor:pointer; color:var(--gray-300); font-size:.84rem; font-weight:600; }
.booking-card-details .price-features { margin-top:.7rem; }
.booking-card-cta { width:100%; margin-top:auto; border:none; cursor:pointer; }

@media (max-width: 980px) {
  .booking-route-grid { grid-template-columns:repeat(3, minmax(0,1fr)); }
  .venue-product-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .venue-product-grid > .price-card { grid-column: span 2; }
  .venue-product-grid--count-1 > .price-card:first-child { grid-column: 3 / span 2; }
  .venue-product-grid--count-2 > .price-card:first-child { grid-column: 2 / span 2; }
  .venue-product-grid--count-3 > .price-card:first-child { grid-column: auto / span 2; }
}
@media (max-width: 620px) {
  .booking-route-strip { padding:1.65rem 0; }
  .venue-product-grid { grid-template-columns: 1fr; }
  .venue-product-grid > .price-card,
  .venue-product-grid--count-1 > .price-card:first-child,
  .venue-product-grid--count-2 > .price-card:first-child,
  .venue-product-grid--count-3 > .price-card:first-child { grid-column: 1; }
  .booking-route-heading { align-items:flex-start; flex-direction:column; gap:.6rem; }
  .booking-route-heading p { font-size:.88rem; }
  .booking-route-grid { grid-template-columns:1fr 1fr; gap:.6rem; }
  .booking-route { min-height:132px; padding:.85rem; }
  .booking-route-event { grid-column:1 / -1; min-height:112px; }
  .steps-track { display:none; }
  .step-mobile-summary { display:flex; align-items:center; justify-content:space-between; gap:1rem; min-height:48px; padding:.65rem .8rem; border:1px solid var(--gray-800); border-radius:10px; background:#111; color:var(--gray-300); font-size:.84rem; }
  .step-mobile-summary strong { color:var(--white); font-family:var(--font-display); font-size:1rem; letter-spacing:.04em; text-transform:uppercase; }
  .booking-prep-note { font-size:.84rem; }
  .booking-toolbar { gap:.85rem; }
  .booking-toolbar .btn { min-height:48px; justify-content:center; }
}


/* Guest-first planning: real-cart itinerary */
.cart-itinerary { background:linear-gradient(135deg,#171717,#0e0e0e); border:1px solid #3a3a3a; border-radius:14px; padding:clamp(1rem,2vw,1.4rem); margin:1.25rem 0; }
.cart-itinerary[hidden] { display:none; }
.itinerary-heading { display:flex; justify-content:space-between; align-items:flex-start; gap:1rem; }
.itinerary-heading h3 { margin:0.25rem 0 0; font-size:1.35rem; }
.itinerary-status { color:#fbbf24; background:rgba(251,191,36,0.1); border:1px solid rgba(251,191,36,0.28); border-radius:999px; padding:0.35rem 0.6rem; white-space:nowrap; font-size:0.78rem; }
.itinerary-intro { color:var(--gray-400); font-size:0.86rem; line-height:1.5; margin:0.8rem 0 1rem; }
.itinerary-list { list-style:none; padding:0; margin:0; }
.itinerary-item { display:grid; grid-template-columns:12px minmax(76px,0.42fr) minmax(0,1fr); gap:0.75rem; align-items:start; position:relative; padding:0.6rem 0; }
.itinerary-item:not(:last-child)::after { content:''; position:absolute; left:5px; top:1.45rem; bottom:-0.75rem; width:2px; background:#3d3d3d; }
.itinerary-marker { width:12px; height:12px; border-radius:50%; margin-top:0.25rem; background:var(--red); box-shadow:0 0 0 4px rgba(227,24,55,0.12); z-index:1; }
.itinerary-time strong, .itinerary-detail strong { display:block; font-family:'Oswald',sans-serif; letter-spacing:0.035em; text-transform:uppercase; }
.itinerary-time span, .itinerary-detail span { display:block; color:var(--gray-400); font-size:0.8rem; margin-top:0.18rem; }
.itinerary-buffer { display:flex; gap:0.45rem; align-items:center; margin:0.05rem 0 0.1rem 1.25rem; color:#86efac; font-size:0.8rem; }
.itinerary-buffer.needs-review { color:#fbbf24; }
@media (max-width: 800px) {
  .itinerary-heading { flex-direction:column; gap:0.6rem; }
  .itinerary-status { white-space:normal; }
  .itinerary-item { grid-template-columns:12px 82px minmax(0,1fr); gap:0.55rem; }
}


/* ---- Guided booking and checkout clarity release -------------------------------- */
.booking-modal-step-label { color:var(--red); font-family:var(--font-display); font-size:.68rem; font-weight:600; letter-spacing:.12em; text-transform:uppercase; }
.booking-modal-step { padding-top:1.1rem; border-top:1px solid rgba(255,255,255,.08); }
.booking-modal-step:first-of-type { padding-top:0; border-top:0; }
.booking-next-overlay { position:fixed; inset:0; z-index:4000; display:flex; align-items:center; justify-content:center; padding:1rem; background:rgba(0,0,0,.76); }
.booking-next-modal { width:min(100%,430px); padding:clamp(1.35rem,4vw,2.2rem); border:1px solid rgba(227,24,55,.5); border-radius:16px; background:linear-gradient(145deg,#181112,#0f0f0f); box-shadow:0 24px 60px rgba(0,0,0,.55); text-align:center; }
.booking-next-mark { width:42px; height:42px; display:grid; place-items:center; margin:0 auto .8rem; border-radius:50%; background:var(--red); color:#fff; font-weight:800; }
.booking-next-modal h3 { margin:.35rem 0 .6rem; font-family:var(--font-display); font-size:1.5rem; text-transform:uppercase; }
.booking-next-modal p { margin:0; color:var(--gray-400); line-height:1.55; }
.booking-next-actions { display:grid; grid-template-columns:1fr 1fr; gap:.7rem; margin-top:1.35rem; }
.booking-next-actions .btn { display:flex; align-items:center; justify-content:center; min-height:48px; text-decoration:none; }
.checkout-section-intro { margin:-.25rem 0 1rem; color:var(--gray-400); font-size:.9rem; line-height:1.5; }
.checkout-food-section > .eyebrow { display:block; margin-bottom:.35rem; }
.member-gate-not-required { border-color:rgba(74,222,128,.32); background:rgba(74,222,128,.06); }
.member-gate-not-required .member-status strong { color:#bbf7d0; }
@media (max-width:800px) {
  .booking-next-actions { grid-template-columns:1fr; }
}

.time-slot-more { grid-column:1 / -1; min-height:44px; padding:.7rem 1rem; border:1px dashed rgba(255,255,255,.32); border-radius:8px; background:transparent; color:var(--white); font:600 .84rem var(--font-body); cursor:pointer; }
.time-slot-more:hover,.time-slot-more:focus-visible { border-color:var(--red); background:rgba(227,24,55,.10); outline:none; }

/* ---- Mobile-first race scheduler ------------------------------------------- */
.booking-modal-scheduler { width:min(1160px, 100%); overflow:hidden; }
.booking-modal-scheduler .modal-content { padding:clamp(1.15rem, 3vw, 2.1rem); }
.booking-modal-header { padding-right:2.5rem; border-bottom:1px solid var(--gray-800); }
.booking-modal-header .modal-desc { max-width:74ch; margin-bottom:.8rem; }
.scheduler-rule-summary { margin:0 0 1.2rem; color:var(--gray-300); font-size:.9rem; line-height:1.5; }
.scheduler-grid { display:grid; grid-template-columns:minmax(190px,.76fr) minmax(285px,1.08fr) minmax(265px,1fr); gap:1rem; align-items:stretch; padding:1.25rem 0; }
.scheduler-panel { min-width:0; padding:1rem; border:1px solid var(--gray-800); border-radius:12px; background:rgba(255,255,255,.025); }
.scheduler-panel h3 { margin:.35rem 0 .85rem; font-family:var(--font-display); font-size:1.03rem; letter-spacing:.04em; text-transform:uppercase; }
.scheduler-drivers .qty-control { min-height:50px; }
.scheduler-drivers .qty-control button { width:48px; height:48px; }
.scheduler-drivers .qty-control span { min-width:62px; font-size:1.35rem; }
.scheduler-helper { min-height:2.8em; margin:.85rem 0 0; color:var(--gray-400); font-size:.82rem; line-height:1.45; }
.variable-booking-control { margin-top:1rem; padding-top:1rem; border-top:1px solid var(--gray-800); }
.variable-booking-control[hidden], .scheduler-duration[hidden] { display:none !important; }
.variable-booking-control label, .scheduler-duration label { display:block; margin:0 0 .55rem; color:var(--gray-300); font:600 .78rem var(--font-display); letter-spacing:.06em; text-transform:uppercase; }
.variable-booking-control label span { color:var(--gray-500); font-family:var(--font-body); font-weight:400; letter-spacing:0; text-transform:none; }
.scheduler-duration select { width:100%; min-height:48px; padding:.7rem .8rem; border:1px solid var(--gray-700); border-radius:8px; background:#101010; color:var(--white); font:inherit; }
.scheduler-duration select:focus-visible { outline:3px solid rgba(227,24,55,.7); outline-offset:2px; border-color:var(--red); }
.scheduler-duration select:disabled { opacity:.6; cursor:not-allowed; }
.scheduler-attraction-resource[hidden] { display:none !important; }
.attraction-resource-label { display:block; margin:0 0 .55rem; color:var(--gray-300); font:600 .78rem var(--font-display); letter-spacing:.06em; text-transform:uppercase; }
.scheduler-attraction-resource select { width:100%; min-height:48px; padding:.7rem .8rem; border:1px solid var(--gray-700); border-radius:8px; background:#101010; color:var(--white); font:inherit; }
.scheduler-attraction-resource select:focus-visible { outline:3px solid rgba(227,24,55,.7); outline-offset:2px; border-color:var(--red); }
.scheduler-attraction-resource select:disabled { opacity:.6; cursor:not-allowed; }
.scheduler-dates .date-picker { grid-template-columns:repeat(7, minmax(0,1fr)); gap:.38rem; }
.scheduler-dates .date-btn { min-height:86px; padding:.45rem .15rem; }
.scheduler-more-dates { width:100%; min-height:44px; margin-top:.65rem; border:1px dashed rgba(255,255,255,.32); border-radius:8px; background:transparent; color:var(--white); font:600 .8rem var(--font-body); cursor:pointer; }
.scheduler-more-dates:hover,.scheduler-more-dates:focus-visible { border-color:var(--red); background:rgba(227,24,55,.1); outline:none; }
.scheduler-times .time-slots { grid-template-columns:repeat(3,minmax(0,1fr)); max-height:420px; overflow:auto; padding-right:.25rem; }
.scheduler-times .time-slot { min-height:52px; padding:.6rem .45rem; font:inherit; }
.scheduler-times .time-slot .slot-time { display:block; font-family:var(--font-display); font-size:1.05rem; }
.scheduler-times .time-slot:focus-visible,.date-btn:focus-visible,.qty-control button:focus-visible { outline:3px solid rgba(227,24,55,.7); outline-offset:2px; }
.scheduler-times .time-slot.unavailable,.scheduler-times .time-slot:disabled { opacity:.42; }
.scheduler-footer { display:flex; justify-content:flex-end; padding-top:1rem; border-top:1px solid var(--gray-800); }
.scheduler-footer .btn { width:min(420px,100%); min-height:52px; }

@media (max-width:980px) {
  .scheduler-grid { grid-template-columns:220px minmax(0,1fr); }
  .scheduler-times { grid-column:1/-1; }
  .scheduler-times .time-slots { grid-template-columns:repeat(4,minmax(0,1fr)); max-height:270px; }
}
@media (max-width:640px) {
  .modal-overlay { align-items:flex-end; padding:0; }
  .booking-modal-scheduler { width:100%; max-height:94vh; border-radius:16px 16px 0 0; }
  .booking-modal-scheduler .modal-content { padding:1.1rem 1rem max(1.25rem, env(safe-area-inset-bottom)); }
  .booking-modal-header { padding-right:2.1rem; }
  .booking-modal-header h2 { font-size:1.6rem; }
  .scheduler-grid { grid-template-columns:1fr; gap:.75rem; padding:1rem 0; }
  .scheduler-panel { padding:.9rem; }
  .scheduler-helper { min-height:0; }
  .scheduler-dates .date-picker { display:flex; overflow-x:auto; scroll-snap-type:x mandatory; gap:.5rem; padding-bottom:.25rem; }
  .scheduler-dates .date-btn { flex:0 0 72px; min-height:78px; scroll-snap-align:start; }
  .scheduler-times .time-slots { grid-template-columns:repeat(2,minmax(0,1fr)); max-height:none; overflow:visible; }
  .scheduler-times .time-slot { min-height:54px; }
  .scheduler-footer { position:sticky; bottom:0; margin:0 -1rem -1.1rem; padding:1rem; background:linear-gradient(180deg,rgba(16,16,16,.92),#101010 26%); }
  .scheduler-footer .btn { width:100%; }
}
@media (prefers-reduced-motion:reduce) { .date-btn,.time-slot,.scheduler-more-dates { transition:none; } }

/* ---- Secure Pool collection checkout -------------------------------------- */
.pool-collection-page { background:#0a0a0a; }
.collection-hero { padding-top:8rem; }
.collection-section { min-height:48vh; }
.collection-status-card { width:min(100%,680px); margin:0 auto; padding:clamp(1.5rem,4vw,2.5rem); border:1px solid var(--gray-800); border-radius:16px; background:#111; text-align:center; }
.collection-status-card[hidden], .collection-payment[hidden], .checkout-layout[hidden] { display:none !important; }
.collection-status-card h2 { margin:.25rem 0 .7rem; font-family:var(--font-display); text-transform:uppercase; }
.collection-status-card p { max-width:48ch; margin:0 auto 1.25rem; color:var(--gray-400); line-height:1.6; }
.collection-status-error { border-color:rgba(227,24,55,.5); }
.collection-status-success { border-color:rgba(74,222,128,.5); }
.collection-success-mark { display:grid; place-items:center; width:58px; height:58px; margin:0 auto 1rem; border-radius:50%; background:rgba(74,222,128,.18); color:#86efac; font:700 2rem var(--font-display); }
.collection-item { grid-template-columns:40px minmax(0,1fr) auto; }
.collection-item-marker { display:grid; place-items:center; width:32px; height:32px; border:1px solid rgba(227,24,55,.52); border-radius:50%; background:rgba(227,24,55,.1); color:var(--red); font-weight:800; }
.collection-payment { align-self:start; }
.collection-review-lock { padding:1rem; border:1px solid rgba(227,24,55,.38); border-radius:10px; background:rgba(227,24,55,.07); }
.collection-review-lock p { margin:.75rem 0 0; color:var(--gray-400); font-size:.87rem; line-height:1.5; }
.collection-review-check { display:flex; align-items:flex-start; gap:.7rem; color:var(--white); cursor:pointer; font-weight:600; line-height:1.45; }
.collection-review-check input { width:20px; height:20px; flex:0 0 auto; margin:.05rem 0 0; accent-color:var(--red); }
.collection-expiry { margin:1rem 0 0; color:var(--gray-500); font-size:.8rem; line-height:1.5; text-align:center; }
.collection-footer { margin-top:0; }
@media (max-width:620px) {
  .collection-hero { padding-top:6.4rem; padding-bottom:2.5rem; }
  .collection-item { grid-template-columns:36px minmax(0,1fr); }
  .collection-item .checkout-item-actions { grid-column:2; display:block; padding-top:0; }
  .collection-item-marker { width:28px; height:28px; }
  .collection-steps { padding:.7rem 0; }
}

/* ---- Race readiness checkpoints ------------------------------------------------ */
.member-gate-error { border-color:rgba(227,24,55,.52); background:rgba(227,24,55,.07); }
.member-gate-error .member-status strong { color:#fecaca; }
.member-gate .member-actions .btn { min-height:48px; display:flex; align-items:center; justify-content:center; }
.member-gate .member-actions .btn + .btn { margin-top:.1rem; }

/* Keep the phone scheduler focused on choosing a valid race time. */
@media (max-width:640px) {
  .booking-modal-scheduler .modal-desc { display:none; }
  .booking-modal-scheduler .modal-ecom-details { margin-top:.65rem; padding:.7rem .8rem; font-size:.84rem; line-height:1.42; }
  .booking-modal-scheduler .scheduler-rule-summary { margin:.7rem 0; font-size:.82rem; }
  .booking-modal-scheduler .scheduler-grid { padding-top:.7rem; }
  .booking-modal-scheduler .scheduler-panel h3 { margin-bottom:.6rem; }
}


/* ---- Full-page product scheduler ------------------------------------------ */
.booking-scheduler-page {
  min-height: 100vh;
  padding: clamp(7rem, 10vw, 9rem) 0 5rem;
  background:
    radial-gradient(circle at 82% 8%, rgba(227,24,55,.14), transparent 34%),
    linear-gradient(180deg, #0a0a0a 0%, #101010 100%);
}
.booking-scheduler-page[hidden], [data-booking-view="browse"][hidden] { display:none !important; }
.booking-scheduler-container { max-width: 1240px; }
.scheduler-page-nav {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  margin-bottom:1.25rem;
}
.scheduler-back {
  min-height:48px;
  padding:.7rem 1rem;
  border:1px solid var(--gray-700);
  border-radius:999px;
  background:#151515;
  color:var(--white);
  font:600 .86rem var(--font-display);
  letter-spacing:.05em;
  text-transform:uppercase;
  cursor:pointer;
}
.scheduler-back:hover,.scheduler-back:focus-visible { border-color:var(--red); outline:none; }
.booking-scheduler-shell {
  border:1px solid var(--gray-800);
  border-radius:18px;
  background:#101010;
  box-shadow:0 24px 80px rgba(0,0,0,.34);
  padding:clamp(1.2rem, 3vw, 2.35rem);
}
.booking-scheduler-page .booking-modal-header {
  padding:0 0 1.35rem;
  border-bottom:1px solid var(--gray-800);
}
.booking-scheduler-page .booking-modal-header h1 {
  max-width:900px;
  margin:.15rem 0 .5rem;
  font-family:var(--font-display);
  font-size:clamp(2rem, 4.5vw, 3.5rem);
  line-height:1;
  letter-spacing:.02em;
  text-transform:uppercase;
}
.booking-scheduler-page .booking-modal-header h1:focus { outline:none; }
.booking-scheduler-page .modal-desc { max-width:78ch; }
.booking-scheduler-page .scheduler-grid {
  grid-template-columns:minmax(190px,.72fr) minmax(360px,1.15fr) minmax(360px,1.25fr);
  align-items:start;
}
.booking-scheduler-page .scheduler-panel h2 {
  margin:.35rem 0 .85rem;
  font-family:var(--font-display);
  font-size:1.08rem;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.booking-scheduler-page .scheduler-times .time-slots {
  grid-template-columns:repeat(3,minmax(108px,1fr));
  max-height:none;
  overflow:visible;
  padding-right:0;
}
.booking-scheduler-page .scheduler-footer {
  position:sticky;
  bottom:0;
  z-index:4;
  margin:0 -1rem -1rem;
  padding:1rem;
  background:linear-gradient(180deg,rgba(16,16,16,.82),#101010 28%);
}
body.scheduler-page-active .cart-float { display:none !important; }
/* On narrow screens the chat bubble would sit on top of the cart bar or the scheduler's Add button. */
@media (max-width:767px) {
  body.cart-float-visible #volt-chat-widget,
  body.scheduler-page-active #volt-chat-widget { bottom: 96px; }
  body.cart-float-visible #volt-chat-window,
  body.scheduler-page-active #volt-chat-window { bottom: 168px; max-height: calc(100vh - 184px); max-height: calc(100dvh - 184px); }
}

@media (max-width:1050px) {
  .booking-scheduler-page .scheduler-grid { grid-template-columns:220px minmax(0,1fr); }
  .booking-scheduler-page .scheduler-times { grid-column:1/-1; }
  .booking-scheduler-page .scheduler-times .time-slots { grid-template-columns:repeat(4,minmax(0,1fr)); }
}
@media (max-width:700px) {
  .booking-scheduler-page { padding:5.7rem 0 3.5rem; }
  .scheduler-page-nav { align-items:stretch; }
  .scheduler-page-nav .btn,.scheduler-back { min-height:46px; padding:.65rem .75rem; font-size:.75rem; }
  .booking-scheduler-shell { padding:1rem; border-radius:14px; }
  .booking-scheduler-page .booking-modal-header { padding-bottom:.85rem; }
  .booking-scheduler-page .booking-modal-header h1 { font-size:1.85rem; }
  .booking-scheduler-page .modal-desc { display:none; }
  .booking-scheduler-page .modal-ecom-details { margin:.6rem 0; padding:.65rem .75rem; font-size:.82rem; line-height:1.4; }
  .booking-scheduler-page .scheduler-rule-summary { margin:.65rem 0 0; font-size:.8rem; }
  .booking-scheduler-page .scheduler-grid { grid-template-columns:1fr; gap:.8rem; padding:.9rem 0; }
  .booking-scheduler-page .scheduler-times { grid-column:auto; }
  .booking-scheduler-page .scheduler-panel { padding:.9rem; }
  .booking-scheduler-page .scheduler-dates .date-picker { display:flex; overflow-x:auto; scroll-snap-type:x mandatory; gap:.5rem; padding:0 0 .3rem; }
  .booking-scheduler-page .scheduler-dates .date-btn { flex:0 0 72px; min-height:78px; scroll-snap-align:start; }
  .booking-scheduler-page .scheduler-times .time-slots { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .booking-scheduler-page .scheduler-footer { margin:0 -.4rem -.4rem; padding:.9rem .4rem .4rem; }
}

/* Final scroll-safety refinements: no sticky action or nested vertical region. */
.booking-scheduler-page .scheduler-footer {
  position:static;
  margin:0;
  padding:1rem 0 0;
  background:transparent;
}
.scheduler-requirements {
  margin:.75rem 0;
  border:1px solid var(--gray-800);
  border-radius:10px;
  background:rgba(255,255,255,.03);
}
.scheduler-requirements[hidden] { display:none !important; }
.scheduler-requirements summary {
  min-height:44px;
  display:flex;
  align-items:center;
  padding:.7rem .9rem;
  color:var(--white);
  font:600 .82rem var(--font-display);
  letter-spacing:.06em;
  text-transform:uppercase;
  cursor:pointer;
}
.scheduler-requirements .modal-ecom-details {
  margin:0;
  border:0;
  border-top:1px solid var(--gray-800);
  border-radius:0;
  background:transparent;
}
@media (max-width:700px) {
  .booking-scheduler-page .scheduler-footer { margin:0; padding:.7rem 0 0; }
  .scheduler-requirements { margin:.55rem 0; }
}


/* ---- Online race driver assignment --------------------------------------- */
.race-driver-assignments { margin-bottom: 1rem; padding-bottom: 1rem; border-bottom: 1px solid rgba(148,163,184,.18); }
.race-driver-assignments[hidden] { display: none !important; }
.race-driver-title { margin: 0 0 .35rem; color: var(--white); font: 600 .92rem var(--font-display); text-transform: uppercase; letter-spacing: .04em; }
.race-driver-note { margin: 0 0 .8rem; color: var(--gray-400); font-size: .78rem; line-height: 1.45; }
.race-driver-line { margin-top: .75rem; padding: .8rem; border: 1px solid var(--gray-800); border-radius: 9px; background: rgba(0,0,0,.2); }
.race-driver-line-title { margin: 0 0 .55rem; color: var(--white); font: 600 .78rem var(--font-display); text-transform: uppercase; letter-spacing: .04em; }
.race-driver-slot { display: grid; gap: .45rem; margin-top: .55rem; }
.race-driver-slot label { color: var(--gray-300); font: 600 .72rem var(--font-display); text-transform: uppercase; letter-spacing: .04em; }
.race-driver-slot select,
.race-driver-slot input { width: 100%; min-height: 42px; border: 1px solid var(--gray-800); border-radius: 8px; background: #0b0b0b; color: var(--white); padding: .65rem .75rem; font: inherit; }
.race-driver-slot select:focus,
.race-driver-slot input:focus { outline: none; border-color: var(--red); }
.race-driver-guest-fields { display: grid; grid-template-columns: minmax(0,1fr) 110px; gap: .5rem; }
.race-driver-status { color: #fbbf24; font-size: .72rem; line-height: 1.4; }
.race-driver-status.ready { color: #86efac; }
@media (max-width: 520px) { .race-driver-guest-fields { grid-template-columns: 1fr; } }
