/* ============================================
   TICKETALITY FRONTEND CSS - CONSOLIDATED
   ============================================ */

/* Season ticket window banner (renewal/public/closed) */
.tktas-season-window{
  margin:16px 0 18px;
  padding:14px 16px;
  border-radius:12px;
  border:1px solid rgba(0,0,0,0.08);
  background:#fff;
  box-shadow:0 8px 20px rgba(0,0,0,0.04);
}
.tktas-season-window__title{
  font-weight:700;
  font-size:16px;
  margin:0 0 6px;
}
.tktas-season-window__sub{
  font-size:13px;
  line-height:1.5;
  margin:0 0 10px;
  color:rgba(0,0,0,0.72);
}
.tktas-season-window .tktas-renew-autofill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  border-radius:10px;
  padding:10px 14px;
  line-height:40px;
}

/* Widget container */
/* =========================================================================
   SEAT SELECTION WIDGET — premium layout (v3.48.5)

   Design intent: the widget reads as a box-office panel, not a form control.
   The map is the hero; controls float on it the way they do on a real venue
   map (SeatGeek/AXS convention); the selection is an order line with a count
   badge, not a debug readout. All colour derives from the school's own
   palette via the --tktas-* custom properties emitted by the branding layer
   (v3.47.2), so Howard renders in Howard's colours without any per-school CSS.
   ========================================================================= */
.tktas-widget{
    /* v3.49.3: flat and native. No border, shadow, padding, or background of its
       own — the widget should read as part of the page, in the theme's own type
       (nothing here sets font-family or text colour; the theme's cascade wins). */
    --tk-brand: var(--mt-color__primary, var(--tktas-school-primary, #0b4c84));
    --tk-brand-ink: var(--tktas-on-primary, #ffffff);
    --tk-accent: var(--tktas-secondary, #d97706);
    margin:16px 0 40px; /* v3.49.4: clear separation from the tabs below */
    padding:0;
    border:none;
    border-radius:0;
    background:transparent;
    box-shadow:none;
}
.tktas-widget-header{
    display:flex;align-items:center;justify-content:space-between;
    gap:12px;margin-bottom:14px;flex-wrap:wrap;
}
.tktas-title{
    margin:0;font-family:inherit;color:inherit;font-size:1.1em;font-weight:700;
}
/* Stage (map container) — the hero. Taller, deeper, controls float on it. */
.tktas-stage{position:relative;width:100%;border:1px solid #e6e9ef;border-radius:14px;overflow:hidden;background:radial-gradient(120% 90% at 50% 0%, #ffffff 0%, #f4f6fa 100%);height:440px;display:flex;align-items:center;justify-content:center;touch-action:none}
.tktas-svg-host{width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;contain:layout paint}

/* Inline SVG styling */
.tktas-inline-svg,.tktas-inline-svg:hover,.tktas-svg-host svg,.tktas-svg-host:hover svg,body.tktas-enabled .tktas-stage .tktas-svg-host>svg:hover,body.tktas-enabled .tktas-stage .tktas-svg-host>svg:focus,body.tktas-enabled .tktas-stage .tktas-svg-host>svg:active{width:100%!important;height:100%!important;max-width:none!important;max-height:100%!important;display:block;transform:none!important;transform-origin:center center!important;transition:none!important;scale:1!important;translate:0 0!important;rotate:0deg!important;vertical-align:middle!important}
body.tktas-enabled .tktas-stage .tktas-svg-host>svg image,body.tktas-enabled .tktas-stage .tktas-svg-host>svg image:hover{transform:none!important;scale:1!important;translate:0 0!important;transition:none!important}
.tktas-inline-svg image{pointer-events:none}

/* Error box */
.tktas-error-box{margin:12px;padding:12px;border:1px solid #d63638;background:#fff5f5;color:#7a0000;border-radius:8px;font-size:14px;line-height:1.35}

/* ============================================
   STAGE HEADER (focus mode overlay)
   ============================================ */
.tktas-stage-header{
  position:absolute;
  top:10px;
  left:10px;
  right:10px;
  z-index:5;
  display:flex;
  align-items:center;
  justify-content:center;
  pointer-events:auto;
}

.tktas-stage-title{
  pointer-events:auto;
  max-width:85%;
  padding:8px 14px;
  border:1px solid rgba(0,0,0,0.10);
  background:rgba(255,255,255,0.95);
  border-radius:12px;
  font-size:14px;
  font-weight:700;
  letter-spacing:0.2px;
  box-shadow:0 6px 18px rgba(0,0,0,0.08);
}

/* Back button (returns to stadium view) */
.tktas-stage-back{
  pointer-events:auto;
  position:absolute !important;
  left:auto !important;
  right:0 !important;
  top:0 !important;
  z-index:20 !important;
  border:1px solid rgba(15,23,42,.08) !important;
  background:rgba(255,255,255,.72) !important;
  backdrop-filter:blur(8px) !important;
  -webkit-backdrop-filter:blur(8px) !important;
  color:#0f172a !important;
  border-radius:10px !important;
  width:34px !important;
  height:34px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  cursor:pointer !important;
  box-shadow:0 6px 18px rgba(0,0,0,0.08) !important;
}


.tktas-stage-back .tktas-icon{color:#0f172a !important;opacity:1 !important}
.tktas-stage-back:hover{background:rgba(255,255,255,.95) !important}

/* ============================================
   LEGEND
   ============================================ */
.tktas-stage-legend{
  /* v3.48.6: moved to bottom-left. The zoom cluster owns bottom-right, and the
     price/section pill was stacking underneath it — both anchored to the same
     corner. Legend left, controls right is the map convention. */
  position:absolute;
  bottom:12px;
  left:12px;
  right:auto;
  z-index:15;
  border:1px solid rgba(0,0,0,0.10);
  background:rgba(255,255,255,0.98);
  border-radius:12px;
  box-shadow:0 8px 20px rgba(0,0,0,0.08);
  font-size:13px;
  line-height:1.25;
  color:#1f2937;
  min-width:unset;
  overflow:hidden;
  pointer-events:auto;
}
.tktas-legend-toggle{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:10px 14px;
  cursor:pointer;
  user-select:none;
  font-weight:600;
  font-size:13px;
  line-height:1.4;
  color:#111827;
  background:#fff;
  border-radius:12px 12px 0 0;
}
.tktas-stage-legend:not(.is-expanded) .tktas-legend-toggle{
  border-radius:12px;
}
.tktas-legend-toggle:hover{
  background:#f9fafb;
}
.tktas-legend-toggle-text{
  flex:1;
}
.tktas-legend-toggle-icon{
  font-size:10px;
  transition:transform 0.2s ease;
  color:#666;
}
.tktas-stage-legend.is-expanded .tktas-legend-toggle-icon{
  transform:rotate(180deg);
}
.tktas-legend-content{
  max-height:0;
  overflow:hidden;
  transition:max-height 0.25s ease, padding 0.25s ease;
  padding:0 12px;
}
.tktas-stage-legend.is-expanded .tktas-legend-content{
  max-height:200px;
  padding:0 12px 10px 12px;
}
.tktas-legend-title{font-weight:700;margin-bottom:8px;color:#111827}
.tktas-legend-row{display:flex;align-items:center;gap:8px;margin:6px 0}
/* v3.49.14: first row = Available. Out-specify the JS inline style so the swatch
   matches the seat fill even when a stale bundle paints the legacy colour. */
.tktas-legend-row:first-child .tktas-swatch:not([class*="--"]){
    background:var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) !important;
}
.tktas-swatch{width:12px;height:12px;border-radius:999px;display:inline-block;border:1px solid rgba(0,0,0,0.15)}
.tktas-swatch--held{background:#9ca3af}
.tktas-swatch--cart{background:#f59e0b}
.tktas-swatch--other{background:#10b981}
.tktas-swatch--resale{background:#8b5cf6}

/* Row labels inside focus-mode SVG */
#tktas-row-labels text{font-size:5px !important;font-weight:400 !important;fill:rgba(0,0,0,0.55) !important}

/* ============================================
   TOOLTIP
   ============================================ */
.tktas-tooltip{
  position:absolute;
  z-index:6;
  padding:8px 10px;
  border-radius:10px;
  background:rgba(15,15,15,0.92);
  color:#fff;
  font-size:12px;
  line-height:1.2;
  box-shadow:0 12px 30px rgba(0,0,0,0.18);
  pointer-events:auto;
  transform:translate(10px, 10px);
  white-space:nowrap;
}

/* ============================================
   SECTIONS (clickable areas in stadium SVG)
   ============================================ */
.tktas-section,[id^="section-"]{cursor:pointer;pointer-events:auto;stroke:rgba(0,0,0,0.35);stroke-width:2;fill:rgba(0,0,0,0.06)}
.tktas-section:hover,[id^="section-"]:hover{stroke:rgba(0,0,0,0.7);fill:rgba(0,0,0,0.10)}
.tktas-section-active{stroke:rgba(0,0,0,0.9) !important;fill:rgba(0,0,0,0.14) !important}

/* ============================================
   SEATS (individual seat circles)
   ============================================ */
.tktas-seat,[id^="seat-"]{cursor:pointer}
.tktas-seat{fill:rgba(0,0,0,0.35);stroke:rgba(0,0,0,0.55);stroke-width:0.6}
.tktas-seat.is-selected,[id^="seat-"].is-selected{fill:rgba(0,0,0,0.65);opacity:0.85}
.tktas-seat.is-held,[id^="seat-"].is-held{fill:rgba(0,0,0,0.20);opacity:0.45;cursor:not-allowed}
.tktas-seat.is-sold,[id^="seat-"].is-sold{fill:rgba(0,0,0,0.12);opacity:0.25;cursor:not-allowed}
.tktas-seat.is-resale,[id^="seat-"].is-resale{fill:#8b5cf6;opacity:0.75;cursor:not-allowed}

/* ============================================
   BUTTONS (theme-hardened)
   ============================================ */
.tktas-widget .tktas-btn{
  font:inherit !important;
  text-decoration:none !important;
  background-image:none !important;
  border-image:none !important;
  outline:none !important;
  box-sizing:border-box !important;
  -webkit-appearance:none !important;
  appearance:none !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:8px !important;
  border:1px solid rgba(0,0,0,0.10) !important;
  background:var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) !important;
  border-radius:12px !important;
  padding:10px 14px !important;
  line-height:1 !important;
  font-weight:700 !important;
  text-transform:none !important;
  letter-spacing:0 !important;
  box-shadow:0 10px 22px rgba(0,0,0,0.08) !important;
  cursor:pointer !important;
  min-width:0 !important;
}
.tktas-widget .tktas-btn .tktas-icon{color:#fff !important;display:inline-flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;opacity:0.85}
.tktas-widget .tktas-btn:hover{box-shadow:0 14px 30px rgba(0,0,0,0.12)}

/* Ultra theme-proof sizing */
.tktas-widget button.tktas-btn{
  min-width:0 !important;
  line-height:1 !important;
}

/* ============================================
   ZOOM CONTROLS
   ============================================ */
/* Zoom cluster floats bottom-right of the map. It lives in .tktas-stage-wrap,
   OUTSIDE .tktas-stage, because the stage's pan/zoom gesture layer captures
   pointer events — inside it the buttons never receive their clicks. */
.tktas-stage-wrap{position:relative}
.tktas-stage-wrap .tktas-zoom,
.tktas-stage .tktas-zoom{
    position:absolute;right:12px;bottom:12px;z-index:6;
    display:flex;flex-direction:column;gap:6px;margin:0;
}
.tktas-stage-wrap .tktas-zoom .tktas-btn,
.tktas-stage .tktas-zoom .tktas-btn{
    width:36px;height:36px;padding:0;margin:0;border-radius:10px;
    display:flex;align-items:center;justify-content:center;
}
.tktas-zoom{display:flex;gap:10px;align-items:center;flex-wrap:wrap}

/* v3.48.6: this legacy override painted every map control solid navy at 44px,
   defeating the floating treatment — those are the opaque blocks sitting on the
   seating chart. Controls over the map are now frosted glass: visually transparent,
   icon-forward, but with just enough backdrop to stay visible over both red and
   navy sections. Bare icons with no chip disappear against a busy chart. */
.tktas-widget .tktas-zoom .tktas-btn{
  width:36px !important;
  height:36px !important;
  padding:0 !important;
  background:rgba(255,255,255,.72) !important;
  backdrop-filter:blur(8px) !important;
  -webkit-backdrop-filter:blur(8px) !important;
  border:1px solid rgba(15,23,42,.08) !important;
  box-shadow:0 2px 10px -2px rgba(15,23,42,.18) !important;
}
.tktas-widget .tktas-zoom .tktas-btn:hover{
  background:rgba(255,255,255,.95) !important;
  box-shadow:0 4px 14px -2px rgba(15,23,42,.25) !important;
}
.tktas-widget .tktas-zoom .tktas-btn .tktas-icon{
  color:#0f172a !important;
  opacity:1 !important;
}

/* ============================================
   FOCUS MODE
   ============================================ */

/* Panel positioning */
.tktas-widget.tktas-focus-mode .tktas-panel{
  position:relative !important;
}

/* Stage background */
.tktas-widget.tktas-focus-mode .tktas-stage{background:#f3f4f6}
.tktas-widget.tktas-focus-mode .tktas-svg-host svg image{opacity:0 !important}
.tktas-widget.tktas-focus-mode .tktas-svg-host svg > *:not(#tktas-seat-overlay):not(defs){opacity:0 !important}
.tktas-widget.tktas-focus-mode .tktas-svg-host svg #tktas-seat-overlay{opacity:1}

/* Focus bar visibility */
.tktas-focusbar{display:none}
.tktas-widget.tktas-focus-mode .tktas-focusbar{display:none !important}
.tktas-widget.tktas-focus-mode .tktas-stage-header{
  display:flex !important;
  position:absolute !important;
  top:12px !important;
  left:12px !important;
  right:12px !important;
  z-index:50 !important;
  justify-content:center !important;
  align-items:center !important;
  pointer-events:auto !important;
}

/* Focus mode back button - FINAL STYLES */
.tktas-widget.tktas-focus-mode .tktas-stage-back{
  position:absolute !important;
  right:0 !important;
  left:auto !important;
  top:0 !important;
  z-index:60 !important;
  width:40px !important;
  height:40px !important;
  padding:0 !important;
  border-radius:12px !important;
  pointer-events:auto !important;
  background:var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) !important;
}
.tktas-widget.tktas-focus-mode .tktas-stage-back .tktas-icon{font-size:16px !important;line-height:1 !important;opacity:1}
.tktas-widget.tktas-focus-mode .tktas-stage-header .tktas-stage-title{pointer-events:none !important;}

/* Focus mode zoom buttons - FINAL STYLES */
/* v3.48.7: focus mode previously repainted the controls solid navy at 44px — the
   "buttons change colour when seats load" bug. Controls keep ONE appearance across
   both views: frosted chip, dark icon. Only rule kept is icon opacity. */
.tktas-widget.tktas-focus-mode .tktas-zoom .tktas-btn .tktas-icon{opacity:1}

/* Focus mode seat styling */
.tktas-widget.tktas-focus-mode .tktas-seat{fill:var(--mt-color__primary, var(--tktas-school-primary, #0b4c84));stroke:rgba(0,0,0,0.32);stroke-width:0.6}
.tktas-widget.tktas-focus-mode .tktas-seat.is-selected{
  fill:#ffffff !important;
  stroke:rgba(0,0,0,0.35) !important;
  stroke-width:1.2 !important;
}
.tktas-widget.tktas-focus-mode .tktas-seat.is-held{fill:rgba(0,0,0,0.20)}
.tktas-widget.tktas-focus-mode .tktas-seat.is-sold{fill:#9ca3af !important;opacity:0.95;cursor:not-allowed}
.tktas-widget.tktas-focus-mode .tktas-seat.is-resale{fill:#8b5cf6 !important;opacity:0.85;cursor:not-allowed}

/* Status colors (must match legend) */
.tktas-widget.tktas-focus-mode .tktas-seat.is-reserved{fill:#9ca3af !important;opacity:0.95;cursor:not-allowed}
.tktas-widget.tktas-focus-mode .tktas-seat.is-in-cart{fill:#f59e0b !important;opacity:0.9;cursor:not-allowed}
.tktas-widget.tktas-focus-mode .tktas-seat.is-held-other{fill:#10b981 !important;opacity:0.85;cursor:not-allowed}

/* Mine-held seats remain clickable */
.tktas-widget.tktas-focus-mode .tktas-seat.is-held.is-held-mine{cursor:pointer;opacity:0.95}
.tktas-widget.tktas-focus-mode .tktas-seat.is-held.is-held-mine.is-in-cart{cursor:not-allowed}

/* ============================================
   MULTI-TAB SELECTION LOCK
   ============================================ */
.tktas-readonly .tktas-svg-host{pointer-events:none;opacity:0.98}
.tktas-tab-lock{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:10px 12px;
  margin:0 0 10px 0;
  border:1px solid rgba(0,0,0,0.08);
  border-radius:10px;
  background:rgba(0,0,0,0.03);
}
.tktas-tab-lock__text{font-size:13px;line-height:1.2}
.tktas-tab-lock__take{
  appearance:none;
  border:0;
  border-radius:8px;
  padding:8px 10px;
  cursor:pointer;
  line-height:40px;
}

/* ============================================
   BUY NOW BUTTON HIDING (when seating active)
   ============================================ */
body.tktas-enabled:not(.tktas-no-seats) form.cart .buy_now_button,
body.tktas-enabled:not(.tktas-no-seats) form.cart .buy-now,
body.tktas-enabled:not(.tktas-no-seats) form.cart .buy-now-button,
body.tktas-enabled:not(.tktas-no-seats) form.cart .motta-buy-now,
body.tktas-enabled:not(.tktas-no-seats) form.cart .motta-buy-now-button,
body.tktas-enabled:not(.tktas-no-seats) form.cart .motta-buy-now-btn,
body.tktas-enabled:not(.tktas-no-seats) form.cart .single_buy_now_button,
body.tktas-enabled:not(.tktas-no-seats) form.cart button[name="buy_now"],
body.tktas-enabled:not(.tktas-no-seats) form.cart button[name="wc_buy_now"],
body.tktas-enabled:not(.tktas-no-seats) form.cart a[name="buy_now"],
body.tktas-enabled:not(.tktas-no-seats) form.cart .wc-buy-now,
body.tktas-enabled:not(.tktas-no-seats) form.cart .wc-buy-now-button,
body.tktas-enabled:not(.tktas-no-seats) form.cart a.buy_now_button,
body.tktas-enabled:not(.tktas-no-seats) form.cart button.buy_now_button{display:none !important;}

form.cart{flex-wrap:wrap;}

/* Add to cart button full width when seating enabled */
body.tktas-enabled:not(.tktas-no-seats) .single-product div.product.has-buy-now form.cart .single_add_to_cart_button,
body.tktas-enabled:not(.tktas-no-seats) .single-product div.product.has-buy-now form.cart button.single_add_to_cart_button,
/* Reserved seating controls quantity from selected seats only.
   Do not show the manual Woo quantity input on seated products. */
body.tktas-enabled:not(.tktas-no-seats).single-product form.cart .quantity,
body.tktas-enabled:not(.tktas-no-seats).single-product form.cart .motta-quantity,
body.tktas-enabled:not(.tktas-no-seats).single-product form.cart .motta-qty{
  display:none !important;
}

/* v3.49.4: layout only — colours, radius, type, and hover belong to the THEME.
   (The v3.48.5 school-primary paint lived here; it out-specified the native-CTA
   intent, so it is gone rather than overridden.) */
body.tktas-enabled:not(.tktas-no-seats) form.cart .single_add_to_cart_button{
  flex:1 1 100% !important;
  width:100% !important;
  font-size:14px !important;
  max-width:100% !important;
  float:none !important;
  display:inline-flex !important;
  justify-content:center !important;
  align-items:center !important;
  margin-top:12px !important;
  margin-right:0 !important;
  margin-left:0 !important;
}

/* ============================================
   NO-SEATS FALLBACK (when seating enabled but no seats generated)
   ============================================ */
body.tktas-no-seats.single-product form.cart{
  display:flex !important;
  flex-wrap:nowrap !important;
  align-items:center !important;
  gap:12px !important;
}
body.tktas-no-seats.single-product form.cart .quantity{
  margin:0 !important;
  flex:0 0 auto !important;
  width:auto !important;
}
body.tktas-no-seats.single-product form.cart .single_add_to_cart_button,
body.tktas-no-seats.single-product form.cart button.single_add_to_cart_button,
body.tktas-no-seats.single-product form.cart .buy_now_button,
body.tktas-no-seats.single-product form.cart .motta-buy-now,
body.tktas-no-seats.single-product form.cart .motta-buy-now-button,
body.tktas-no-seats.single-product form.cart .single_buy_now_button,
body.tktas-no-seats.single-product form.cart .wc-buy-now-button{
  margin:0 !important;
  margin-top:0 !important;
  width:auto !important;
  max-width:none !important;
  flex:1 1 220px !important;
  display:inline-flex !important;
  justify-content:center !important;
  align-items:center !important;
  min-width:160px !important;
  min-height:48px !important;
}

/* ============================================
   RESPONSIVE
   ============================================ */
@media (max-width: 640px){
  .tktas-stage{height:400px}
  body.tktas-no-seats.single-product form.cart{flex-wrap:wrap !important}
  body.tktas-no-seats.single-product form.cart .quantity{flex:1 1 100% !important}
  body.tktas-no-seats.single-product form.cart .single_add_to_cart_button,
  body.tktas-no-seats.single-product form.cart button.single_add_to_cart_button,
  body.tktas-no-seats.single-product form.cart .buy_now_button,
  body.tktas-no-seats.single-product form.cart .motta-buy-now,
  body.tktas-no-seats.single-product form.cart .motta-buy-now-button,
  body.tktas-no-seats.single-product form.cart .single_buy_now_button,
  body.tktas-no-seats.single-product form.cart .wc-buy-now-button{
    flex:1 1 100% !important;
    width:100% !important;
  }
}

@media (max-width: 480px){
  .tktas-widget{padding:10px}
  /* Keep zoom controls anchored to the map corner on mobile. The legacy
     full-width flex rule made the controls reflow toward the center when tapped. */
  .tktas-stage-wrap .tktas-zoom{width:auto!important;right:10px!important;bottom:10px!important;justify-content:flex-start!important;flex-direction:column!important}
  .tktas-stage-wrap .tktas-zoom .tktas-btn{flex:0 0 auto!important;min-width:36px!important;box-sizing:border-box;touch-action:manipulation}
}

/* Reserve warning message */
.tktas-reserve-warning {
  color: #fff;
  font-size: 13px;
}

@media (max-width: 1024px) {
  .tktas-reserve-warning {
    font-size: 11px;
  }
}

/* ============================================
   CHECKOUT CARDS - All Devices (v3.3.24 style)
   ============================================ */

.tktas-checkout-sidebar {
  display: flex;
  flex-direction: column;
  gap: 16px;
  margin-bottom: 24px;
  width: 100%;
  box-sizing: border-box;
}

.tktas-checkout-card {
  background: #fff;
  border: 1px solid var(--tktas-border, #e0e0e0);
  border-radius: 10px;
  overflow: hidden;
  box-shadow: var(--tktas-shadow-sm, 0 1px 3px rgba(0,0,0,0.06));
  width: 100%;
}

.tktas-checkout-card-header {
  padding: 14px 18px;
  background: #fff;
  border-bottom: 1px solid var(--tktas-border, #e0e0e0);
}

.tktas-checkout-card-title h3 {
  font-size: 15px;
  font-weight: 600;
  color: var(--tktas-black, #1e293b);
  margin: 0;
  padding: 0;
  border: none;
  background: none;
  line-height: 1.3;
}

.tktas-checkout-card-title p {
  font-size: 12px;
  margin: 3px 0 0;
  line-height: 1.3;
}

.tktas-checkout-card-body {
  padding: 16px 18px;
}

/* Card fields styling */
.tktas-checkout-card-body .form-row {
  margin-bottom: 12px !important;
  padding: 0 !important;
  width: 100% !important;
  float: none !important;
}

.tktas-checkout-card-body .form-row:last-child {
  margin-bottom: 0 !important;
}

.tktas-checkout-card-body .form-row label {
  font-size: 13px;
  font-weight: 500;
  color: var(--tktas-gray-700, #334155);
  margin-bottom: 5px;
  display: block;
}

.tktas-checkout-card-body select,
.tktas-checkout-card-body input[type="text"],
.tktas-checkout-card-body input[type="number"]:not([name="tktas_checkout_donation_custom"]),
.tktas-checkout-card-body textarea {
  width: 100% !important;
  max-width: 100% !important;
  height: 40px !important;
  padding: 0 12px !important;
  font-size: 14px !important;
  line-height: 40px !important;
  background-color: #fff;
  border: 1px solid #d1d5db !important;
  border-radius: 6px !important;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
  -webkit-appearance: none;
  appearance: none;
  box-sizing: border-box !important;
}

/* Donation custom amount input - separate styling */
.tktas-checkout-card-body input[name="tktas_checkout_donation_custom"] {
  width: 100px !important;
  height: 40px !important;
  padding: 0 12px !important;
  font-size: 14px !important;
  line-height: 40px !important;
  background-color: #fff;
  border: 1px solid #d1d5db !important;
  border-radius: 6px !important;
  box-sizing: border-box !important;
}

/* Stronger selectors for checkout card fields */
.woocommerce-checkout .tktas-checkout-card-body select,
.woocommerce-checkout .tktas-checkout-card-body input[type="text"],
.woocommerce-checkout .tktas-checkout-card-body input[type="number"]:not([name="tktas_checkout_donation_custom"]),
#order_review .tktas-checkout-card-body select,
#order_review .tktas-checkout-card-body input[type="text"],
#order_review .tktas-checkout-card-body input[type="number"]:not([name="tktas_checkout_donation_custom"]) {
  height: 40px !important;
  min-height: 40px !important;
  max-height: 40px !important;
  line-height: 40px !important;
  padding: 0 12px !important;
}

.tktas-checkout-card-body textarea {
  height: auto !important;
  min-height: 80px;
  padding: 10px 12px !important;
  line-height: 1.4 !important;
}

/* Align donation fee amount to right in checkout order review */
#order_review table tfoot tr.fee td,
#order_review table tfoot tr.fee th,
.woocommerce-checkout-review-order table tfoot tr.fee td,
.woocommerce-checkout-review-order table tfoot tr.fee th {
  text-align: right !important;
}

.tktas-checkout-card-body select {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
  background-position: right 10px center;
  background-repeat: no-repeat;
  background-size: 14px;
  padding-right: 32px;
  cursor: pointer;
}

.tktas-checkout-card-body select:focus,
.tktas-checkout-card-body input:focus {
  border-color: #0ea5e9;
  box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.1);
  outline: none;
}

/* Two-column grid for HBCU fields */
.tktas-card-field-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.tktas-card-field-grid .form-row {
  margin-bottom: 0 !important;
}

/* Chapter code validation result */
#tktas_chapter_code_result {
  margin-top: 6px;
}

#tktas_chapter_code_result .chapter-valid {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 10px;
  background: var(--tktas-success-light, #dcfce7);
  border: 1px solid #86efac;
  border-radius: 6px;
  color: #166534;
  font-size: 12px;
}

#tktas_chapter_code_result .chapter-valid::before {
  content: "✓";
  font-weight: 700;
}

#tktas_chapter_code_result .chapter-invalid {
  padding: 8px 10px;
  background: #fef2f2;
  border: 1px solid #fecaca;
  border-radius: 6px;
  color: #991b1b;
  font-size: 12px;
}

/* Mobile adjustments */
@media (max-width: 600px) {
  .tktas-checkout-card-body select,
  .tktas-checkout-card-body input {
    font-size: 16px; /* Prevent iOS zoom */
  }
  
  .tktas-card-field-grid {
    grid-template-columns: 1fr;
    gap: 12px;
  }
}

/* ============================================
   Checkout Review Order Padding
   ============================================ */

form.checkout .woocommerce-checkout-review-order {
  padding: 30px;
}

@media (max-width: 767px) {
  .woocommerce-checkout.checkout .woocommerce-checkout-review-order {
    padding: 30px 24px;
  }
}

/* ── Updates 91: Ticket Cards ── */
.tktas-ticket-card-meta,
.tktas-my-tickets .tktas-ticket-card-meta,
.woocommerce-MyAccount-content .tktas-ticket-card-meta { color: #666 !important; font-weight: 400 !important; font-size: 13px !important; }
.tktas-ticket-card-badge.upcoming { background: #fff !important; color: var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) !important; border: 1px solid var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) !important; }
.tktas-ticket-card-event h3 { font-size: 16px !important; font-weight: 500 !important; }

/* Hide icons inside ticket card action buttons */
.tktas-ticket-card-actions .tktas-btn > i,
.tktas-ticket-card-actions .tktas-btn-outline > i,
.tktas-ticket-card-actions .tktas-btn-primary > i,
.tktas-my-tickets .tktas-ticket-card-actions a i { display: none; }

/* ── Updates 91: Event Cards ── */
.tktas-event-card .tktas-card-image img,
.tktas-event-img img { border-bottom: 1px solid #e0e0e0; }

/* ── Updates 91: Add-to-Cart ── */
body.tktas-enabled:not(.tktas-no-seats) form.cart .single_add_to_cart_button { margin-top: 3px !important; line-height: 40px; font-size: 14px; }

/* ── Updates 91: Marketplace / Affiliate Headings ── */
.tktas-section-header { margin-bottom: 30px !important; padding-bottom: 0 !important; border-bottom: none !important; border-left: none !important; padding-left: 0 !important; }
.tktas-mp-header h2 { display: none !important; }
.tktas-affiliate-form h2 { display: none !important; }
.tktas-affiliate-form .subtitle { margin-top: -10px !important; }

/* ── Updates 91: Promo Code ── */
.tktas-promo-code-wrapper > h3 { font-size: 1.75rem !important; }
.tktas-promo-code-wrapper { padding: 15px 30px !important; border-radius: 8px !important; background: #fbfbfc !important; }
@media (max-width: 767px) {
    .tktas-promo-code-wrapper { padding: 10px 30px 50px !important; }
    #tktas_promo_code_input { margin-bottom: 20px !important; }
}

/* ── Updates 91: Single Event ── */
.tktas-single-event-address { color: #7c818b !important; }
.tktas-sold-by-logo { border: none !important; }
/* ---- Selection summary bar (v3.48.5) --------------------------------- */
.tktas-col-main{min-width:0}
.tktas-panel{margin-top:14px}
.tktas-selection-bar{
    display:flex;align-items:center;gap:14px;
    padding:14px 16px;border:1px solid #e6e9ef;border-radius:12px;
    background:#f8fafc;
    transition:border-color .18s ease, background .18s ease;
}
.tktas-selection-bar.has-seats{
    border-color:var(--mt-color__primary, var(--tktas-school-primary, #0b4c84));
    background:color-mix(in srgb, var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) 5%, #fff);
}
.tktas-selection-count{
    flex:0 0 40px;height:40px;border-radius:12px;
    display:flex;align-items:center;justify-content:center;
    font-size:16px;font-weight:800;font-variant-numeric:tabular-nums;
    color:#64748b;background:#e9edf3;
    transition:background .18s ease, color .18s ease;
}
.tktas-selection-bar.has-seats .tktas-selection-count{
    color:var(--tk-brand-ink);background:var(--mt-color__primary, var(--tktas-school-primary, #0b4c84));
}
.tktas-selection-body{min-width:0}
.tktas-selection-label{
    font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
    color:#94a3b8;margin-bottom:3px;
}
.tktas-selection-bar.has-seats .tktas-selection-label{color:var(--mt-color__primary, var(--tktas-school-primary, #0b4c84))}
.tktas-clear-seats{
    margin-left:auto;flex:0 0 auto;display:none;
    background:var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) !important;border:none !important;box-shadow:none !important;
    color:#fff !important;font-size:12px;font-weight:500;font-family:inherit;
    text-decoration:none;border-radius:8px;
    padding:6px !important;min-width:0 !important;line-height:1.3 !important;
    cursor:pointer;
}
.tktas-clear-seats:hover{color:#fff !important;background:var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) !important}
.tktas-selection-bar.has-seats .tktas-clear-seats{display:inline-block}
.tktas-selected{margin:0;font-size:14px;font-weight:500;color:#0f172a;line-height:1.45;overflow-wrap:anywhere}
.tktas-selected .tktas-selected-list:empty::before{content:"None"}

.tktas-reserve-warning{
    /* v3.49.6 revision: brand gold. Fixed colour by design — never derived from
       the school accent, so red-palette schools don't read it as an error. */
    margin-top:10px;padding:20px 14px;border-radius:10px;
    font-size:13px;line-height:1.5;color:#fff;
    background:var(--tktas-school-secondary, #fead13);border:1px solid var(--tktas-school-secondary, #fead13);
}
.tktas-help{
    margin:10px 2px 0;font-size:12.5px;color:#94a3b8;
}
.tktas-focusbar{display:flex;gap:10px;align-items:center;margin-bottom:10px}
.tktas-focus-label{font-weight:600}
@media (max-width:560px){
    .tktas-widget{padding:14px;border-radius:14px}
    .tktas-stage{height:340px}
    .tktas-stage .tktas-zoom .tktas-btn{width:42px;height:42px}
}

/* ── Updates 91: Holdbar ── */
.tktas-holdbar { margin-top: 10px !important; margin-bottom: 22px !important; background-color: var(--tktas-school-secondary, #fead13) !important; color: #fff !important; }

/* ── Updates 91: Resale ── */
.tktas-resale-btn-primary { line-height: 40px !important; font-size: 14px !important; }

/* ── Updates 91: EF Button ── */
.tktas-ef-btn-primary { font-size: 40px !important; }




/* ============================================================================
   SEASON TICKET CARDS — My Account (v3.24)
   ============================================================================
   Clean, professional card design. No gradients, no emojis.
   Dark bg → light text. Light bg → dark text. Consistent spacing.
   ============================================================================ */

/* ── Card Shell ── */
.tktas-st-card {
    border: 1px solid #d1d5db !important;
    border-radius: 12px !important;
    overflow: hidden !important;
    margin-bottom: 24px !important;
    background: #fff !important;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06) !important;
}
.tktas-st-card.tktas-st-active {
    border-color: var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) !important;
}

/* ── Card Header (dark blue for active, light gray for inactive) ── */
.tktas-st-header {
    padding: 20px 24px !important;
    background: #f3f4f6 !important;
    color: #374151 !important;
}
.tktas-st-active .tktas-st-header {
    background: var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) !important;
    color: #fff !important;
}
.tktas-st-header-inner {
    display: flex !important;
    justify-content: space-between !important;
    align-items: flex-start !important;
    flex-wrap: wrap !important;
    gap: 12px !important;
}

/* Type label */
.tktas-st-type {
    font-size: 13px !important;
    font-weight: 500 !important;
    margin-bottom: 4px !important;
    opacity: 1 !important;
    color: inherit !important;
}

/* Title — force correct contrast in all contexts */
.tktas-st-title {
    margin: 0 !important;
    font-size: 20px !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
}
/* Inactive card: dark text */
.tktas-st-card .tktas-st-title,
.tktas-st-card .tktas-st-header .tktas-st-title,
.tktas-st-card .tktas-st-header h2,
.tktas-st-card .tktas-st-header h3 {
    color: #1e293b !important;
}
/* Active card: white text */
.tktas-st-active .tktas-st-title,
.tktas-st-active .tktas-st-header .tktas-st-title,
.tktas-st-active .tktas-st-header h2,
.tktas-st-active .tktas-st-header h3,
.tktas-st-card.tktas-st-active .tktas-st-title {
    color: #fff !important;
}

/* Venue subtitle */
.tktas-st-venue {
    font-size: 14px !important;
    margin-top: 4px !important;
    opacity: 1 !important;
    color: inherit !important;
}

/* Force all header children to inherit correct color */
.tktas-st-card .tktas-st-header .tktas-st-type,
.tktas-st-card .tktas-st-header .tktas-st-venue {
    color: #4b5563 !important;
}
.tktas-st-card.tktas-st-active .tktas-st-header .tktas-st-type,
.tktas-st-card.tktas-st-active .tktas-st-header .tktas-st-venue {
    color: #fff !important;
}

/* ── Status Badge ── */
.tktas-st-badge {
    display: inline-block !important;
    padding: 5px 14px !important;
    border-radius: 20px !important;
    font-size: 12px !important;
    font-weight: 500;
    white-space: nowrap !important;
    letter-spacing: 0.2px !important;
}
/* Active badge on dark bg */
.tktas-st-active .tktas-st-badge {
    background: rgba(255,255,255,0.18) !important;
    color: #fff !important;
}
/* Pending renewal — gold on white */
.tktas-st-badge--pending_renewal {
    background: var(--tktas-school-secondary, #fead13) !important;
    color: #fff !important;
}
/* Expired — neutral gray */
.tktas-st-badge--expired {
    background: #e5e7eb !important;
    color: #4b5563 !important;
}
/* Cancelled */
.tktas-st-badge--cancelled {
    background: #fee2e2 !important;
    color: #991b1b !important;
}

/* ── Card Body ── */
.tktas-st-body {
    padding: 24px !important;
}

/* ── Info Row (Seat / Zone / Games) ── */
.tktas-st-info-row {
    display: flex !important;
    gap: 12px !important;
    flex-wrap: wrap !important;
    margin-bottom: 20px !important;
}
.tktas-st-info-box {
    padding: 14px 18px !important;
    border-radius: 10px !important;
    border: 1px solid #e5e7eb !important;
    background: #f9fafb !important;
    min-width: 120px !important;
}
.tktas-st-seat-box {
    flex: 1 !important;
    min-width: 140px !important;
}
.tktas-st-info-label {
    font-size: 11px !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    color: #6b7280 !important;
    margin-bottom: 4px !important;
    font-weight: 600 !important;
}
.tktas-st-info-value {
    font-weight: 700 !important;
    color: var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) !important;
}
.tktas-st-seat-box .tktas-st-info-value { font-size: 18px !important; }
.tktas-st-zone-box .tktas-st-info-value { font-size: 16px !important; }
.tktas-st-games-box .tktas-st-info-value { font-size: 16px !important; color: #166534 !important; }
.tktas-st-games-box {
    background: #f0fdf4 !important;
    border-color: #bbf7d0 !important;
}

/* ── Engagement Row (Tenure / Streak / Referral) ── */
.tktas-st-engagement-row {
    display: flex !important;
    gap: 12px !important;
    flex-wrap: wrap !important;
    margin-bottom: 20px !important;
}
.tktas-st-engagement-card {
    padding: 14px 16px !important;
    border-radius: 10px !important;
    flex: 1 !important;
    min-width: 140px !important;
    text-align: center !important;
    border: 1px solid #e5e7eb !important;
    background: #f9fafb !important;
}
.tktas-st-engagement--tenure {
    background: #fffbeb !important;
    border-color: #fde68a !important;
}
.tktas-st-engagement--streak {
    background: #fff7ed !important;
    border-color: #fed7aa !important;
}
.tktas-st-engagement--referral {
    background: #eff6ff !important;
    border-color: #bfdbfe !important;
}
.tktas-st-engagement-card .tktas-st-info-label {
    font-size: 11px !important;
    text-transform: uppercase !important;
    color: #6b7280 !important;
    margin-bottom: 4px !important;
}
.tktas-st-engagement-value {
    font-weight: 700 !important;
    font-size: 16px !important;
    color: #1e293b !important;
}
.tktas-st-tenure-value { color: #92400e !important; }
.tktas-st-streak-value { font-size: 20px !important; color: #c2410c !important; }
.tktas-st-referral-code {
    font-size: 16px !important;
    color: #1e40af !important;
    font-family: "SF Mono", Monaco, Consolas, monospace !important;
    letter-spacing: 2px !important;
}
.tktas-st-engagement-detail {
    font-size: 11px !important;
    color: #6b7280 !important;
    margin-top: 4px !important;
}
.tktas-st-discount {
    font-size: 11px !important;
    color: #059669 !important;
    margin-top: 4px !important;
}

/* ── Seat Selection Prompt ── */
.tktas-st-seat-select {
    background: #fffbeb !important;
    border-radius: 10px !important;
    padding: 20px !important;
    margin-bottom: 20px !important;
    border: 1px solid #fde68a !important;
}
.tktas-st-seat-select-title {
    margin: 0 0 8px !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    color: #92400e !important;
}
.tktas-st-seat-select-desc {
    margin: 0 0 16px !important;
    color: #78350f !important;
    font-size: 14px !important;
}

/* ── Mini Plan Prompt ── */
.tktas-st-mini-plan {
    background: #f5f3ff !important;
    border-radius: 10px !important;
    padding: 20px !important;
    margin-bottom: 20px !important;
    border: 1px solid #c4b5fd !important;
}
.tktas-st-mini-plan-title {
    margin: 0 0 8px !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    color: #5b21b6 !important;
}
.tktas-st-mini-plan-desc {
    margin: 0 0 16px !important;
    color: #6d28d9 !important;
    font-size: 14px !important;
}

/* ── Wallet Link ── */
.tktas-st-wallet { margin-bottom: 20px !important; }
.tktas-st-wallet-link {
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
    background: #111 !important;
    color: #fff !important;
    padding: 10px 20px !important;
    border-radius: 8px !important;
    text-decoration: none !important;
    font-weight: 600 !important;
    font-size: 14px !important;
}
.tktas-st-wallet-link:hover { opacity: 0.85 !important; }

/* ── Renewal Section ── */
.tktas-st-renewal {
    background: #fffbeb !important;
    border: 1px solid #fde68a !important;
    border-radius: 10px !important;
    padding: 20px !important;
    margin-bottom: 20px !important;
}
.tktas-st-renewal-label {
    font-weight: 700 !important;
    color: #92400e !important;
    font-size: 15px !important;
}
.tktas-st-renewal-desc {
    margin: 8px 0 !important;
    color: #78350f !important;
    font-size: 14px !important;
}
.tktas-st-renewal-actions {
    display: flex !important;
    gap: 10px !important;
    flex-wrap: wrap !important;
    margin-top: 14px !important;
}

/* ── Buttons ── */
.tktas-st-btn {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border: none !important;
    padding: 10px 20px !important;
    border-radius: 8px !important;
    font-weight: 600 !important;
    font-size: 14px !important;
    line-height: 1.4 !important;
    cursor: pointer !important;
    text-decoration: none !important;
    white-space: nowrap !important;
    transition: opacity 0.15s ease !important;
    background: var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) !important;
    color: #fff !important;
}
.tktas-st-btn:hover { opacity: 0.88 !important; }
/* Renew = gold bg, dark text for contrast */
.tktas-st-btn--renew {
    background: var(--tktas-school-secondary, #fead13) !important;
    color: #1e293b !important;
}
.tktas-st-btn--plan  { background: var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) !important; color: #fff !important; }
.tktas-st-btn--change { background: var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) !important; color: #fff !important; }
.tktas-st-btn--cancel { background: #dc2626 !important; color: #fff !important; }

/* ── Game Tickets ── */
.tktas-st-games-heading {
    margin: 0 0 12px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    color: #1e293b !important;
}
.tktas-st-games-list {
    display: grid !important;
    gap: 10px !important;
}
.tktas-st-game-row {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    padding: 14px 16px !important;
    background: #fff !important;
    border: 1px solid #e5e7eb !important;
    border-radius: 8px !important;
    gap: 12px !important;
    flex-wrap: wrap !important;
}
.tktas-st-game-past { background: #f9fafb !important; }
.tktas-st-game-info {
    flex: 1 !important;
    min-width: 200px !important;
}
.tktas-st-game-name {
    font-size: 14px !important;
    font-weight: 700 !important;
    color: #1e293b !important;
}
.tktas-st-game-muted { color: #9ca3af !important; }
.tktas-st-game-opponent {
    color: #6b7280 !important;
    font-size: 13px !important;
}
.tktas-st-game-date {
    font-size: 13px !important;
    color: #6b7280 !important;
    margin-top: 2px !important;
}
.tktas-st-game-actions {
    display: flex !important;
    gap: 8px !important;
    align-items: center !important;
}
.tktas-st-ticket-code {
    background: #f0f9ff !important;
    padding: 4px 10px !important;
    border-radius: 6px !important;
    font-size: 12px !important;
    font-family: monospace !important;
    color: #1e293b !important;
    border: 1px solid #e0ecf7 !important;
}
.tktas-st-game-actions .button.button-small,
.tktas-st-game-actions .tktas-st-btn {
    font-size: 13px !important;
    line-height: 32px !important;
    padding: 0 12px !important;
    height: 32px !important;
    border-radius: 6px !important;
    background: var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) !important;
    color: #fff !important;
    border: none !important;
}
.tktas-st-game-status {
    font-size: 13px !important;
    font-weight: 500 !important;
}
.tktas-st-status--transferred { color: #2563eb !important; }
.tktas-st-status--resold { color: #7c3aed !important; }
.tktas-st-status--attended { color: #16a34a !important; }
.tktas-st-status--voided { color: #ef4444 !important; }

/* ── Mobile ── */
/* ── Checkout donation card ── */
.tktas-checkout-card-donation .tktas-apply-btn { background: var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)); }
.tktas-checkout-card-donation .tktas-option-amount { color: var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)); }

@media (max-width: 640px) {
    .tktas-st-header { padding: 16px !important; }
    .tktas-st-body { padding: 16px !important; }
    .tktas-st-info-row { gap: 10px !important; }
    .tktas-st-info-box { min-width: 100% !important; }
    .tktas-st-engagement-card { min-width: 100% !important; }
    .tktas-st-renewal-actions { flex-direction: column !important; }
    .tktas-st-renewal-actions .tktas-st-btn { width: 100% !important; }
    .tktas-st-game-row { flex-direction: column !important; align-items: flex-start !important; }
}

/* v3.29.1: related event cards */
.tktas-related-products .tktas-card-image{height:220px;overflow:hidden;background:#f8fafc;}
.tktas-related-products .tktas-card-image img{width:100%;height:100%;object-fit:contain;object-position:center;display:block;background:#fff;}


/* Checkout order review: cleaner fee/tax/total layout */
.woocommerce-checkout #order_review table.shop_table tfoot tr.fee th,
.woocommerce-checkout #order_review table.shop_table tfoot tr.fee td,
.woocommerce-checkout #order_review table.shop_table tfoot tr.tax-rate th,
.woocommerce-checkout #order_review table.shop_table tfoot tr.tax-rate td,
.woocommerce-checkout .woocommerce-checkout-review-order table.shop_table tfoot tr.fee th,
.woocommerce-checkout .woocommerce-checkout-review-order table.shop_table tfoot tr.fee td,
.woocommerce-checkout .woocommerce-checkout-review-order table.shop_table tfoot tr.tax-rate th,
.woocommerce-checkout .woocommerce-checkout-review-order table.shop_table tfoot tr.tax-rate td {
  padding-top: 10px !important;
  padding-bottom: 10px !important;
  border-top: 1px solid #e5e7eb !important;
  vertical-align: middle !important;
}

.woocommerce-checkout #order_review table.shop_table tfoot tr.fee th,
.woocommerce-checkout #order_review table.shop_table tfoot tr.tax-rate th,
.woocommerce-checkout .woocommerce-checkout-review-order table.shop_table tfoot tr.fee th,
.woocommerce-checkout .woocommerce-checkout-review-order table.shop_table tfoot tr.tax-rate th {
  color: #1f2937 !important;
  font-weight: 500;
  letter-spacing: 0.01em;
}

.woocommerce-checkout #order_review table.shop_table tfoot tr.fee td,
.woocommerce-checkout #order_review table.shop_table tfoot tr.tax-rate td,
.woocommerce-checkout .woocommerce-checkout-review-order table.shop_table tfoot tr.fee td,
.woocommerce-checkout .woocommerce-checkout-review-order table.shop_table tfoot tr.tax-rate td {
  color: #111827 !important;
  font-weight: 500;
}

.woocommerce-checkout #order_review table.shop_table tfoot tr.fee:first-of-type th,
.woocommerce-checkout #order_review table.shop_table tfoot tr.fee:first-of-type td,
.woocommerce-checkout .woocommerce-checkout-review-order table.shop_table tfoot tr.fee:first-of-type th,
.woocommerce-checkout .woocommerce-checkout-review-order table.shop_table tfoot tr.fee:first-of-type td {
  border-top: 2px solid #dbe3ee !important;
}

.woocommerce-checkout #order_review table.shop_table tfoot tr.fee th::before,
.woocommerce-checkout .woocommerce-checkout-review-order table.shop_table tfoot tr.fee th::before {
  content: "Service fee";
  display: inline-block;
  margin-right: 0;
}

.woocommerce-checkout #order_review table.shop_table tfoot tr.fee th,
.woocommerce-checkout .woocommerce-checkout-review-order table.shop_table tfoot tr.fee th {
  font-size: 0;
}

.woocommerce-checkout #order_review table.shop_table tfoot tr.fee th::before,
.woocommerce-checkout .woocommerce-checkout-review-order table.shop_table tfoot tr.fee th::before,
.woocommerce-checkout #order_review table.shop_table tfoot tr.tax-rate th,
.woocommerce-checkout .woocommerce-checkout-review-order table.shop_table tfoot tr.tax-rate th {
  font-size: 15px;
}

.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total th,
.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total td,
.woocommerce-checkout .woocommerce-checkout-review-order table.shop_table tfoot tr.order-total th,
.woocommerce-checkout .woocommerce-checkout-review-order table.shop_table tfoot tr.order-total td {
  padding-top: 14px !important;
  border-top: 2px solid #cfd8e3 !important;
}

/* ── Cart totals: right-align tax amount (fixes theme override) ─────────────── */
.woocommerce-cart .cart_totals table.shop_table tr.tax-rate td,
.woocommerce .cart_totals .shop_table tr.tax-rate td,
.woocommerce table.shop_table tr[class*="tax-rate"] td {
    text-align: right;
}


/* v3.45.7 card parity + no gray media backgrounds */
.tktas-events-simple,
.tktas-events-grid,
.tktas-places-grid,
.tktas-vendor-events-grid,
.tktas-event-cards-grid { align-items: stretch !important; }
.tktas-events-simple .tktas-event-card,
.tktas-events-grid .tktas-event-card,
.tktas-vendor-events-grid .tktas-event-card,
.tktas-event-cards-grid .tktas-event-card,
.tktas-places-grid .tktas-place-card { height: 100% !important; }
.tktas-events-simple .tktas-card-link,
.tktas-events-grid .tktas-event-link,
.tktas-vendor-events-grid .tktas-event-card-link,
.tktas-event-cards-grid .tktas-card-link,
.tktas-places-grid .tktas-place-card { height: 100% !important; }
.tktas-card-image,
.tktas-event-img,
.tktas-place-img,
.tktas-event-card-image,
.tktas-card-no-image { background: #fff !important; }
.tktas-card-content,
.tktas-event-info,
.tktas-place-info,
.tktas-event-card-body { min-height: 100% !important; }
.tktas-card-content,
.tktas-event-info,
.tktas-place-info { justify-content: flex-start !important; }
.tktas-card-venue,
.tktas-event-venue,
.tktas-place-btns,
.tktas-event-price { margin-top: 0 !important; }


/* Phase 11: nested add-on and place school association polish */
.tktas-card-addons .tktas-card-addon-item strong,
.tktas-card-addons .price { font-weight: 700; }
.tktas-card-addon-list { margin: 0; }
.tktas-place-school-pill {
  display:inline-flex;
  align-items:center;
  padding:4px 8px;
  border-radius:999px;
  background:#f8fafc;
  border:1px solid #e2e8f0;
  color:#334155;
  font-size:12px;
}

/* =========================================================================
   TWO-COLUMN SEAT LAYOUT + SIDEBAR (v3.48.7)
   Chart left (~68%), Best Available / add-ons / CTA right (~32%).
   ========================================================================= */
.tktas-layout{
    display:grid;
    grid-template-columns:minmax(0,68fr) minmax(260px,32fr);
    gap:16px;
    align-items:start;
}
.tktas-layout .tktas-stage{height:520px}
.tktas-sidebar{
    /* v3.49.120: one contained purchase rail aligned to the full left seating
       column. Best Available scrolls inside this rail instead of making the
       page several screens taller than the map. */
    display:flex;flex-direction:column;gap:12px;min-width:0;min-height:0;
    position:sticky;top:96px;
    height:var(--tktas-seat-column-height, 604px);
    max-height:var(--tktas-seat-column-height, 604px);
    overflow:hidden;
    padding:14px;
    border:1px solid #e6e9ef;
    border-radius:14px;
    background:#fff;
}
.tktas-sidebar-block{
    border:0;border-radius:0;background:transparent;padding:0;
}
.tktas-best-available{
    display:flex;
    flex:1 1 auto;
    flex-direction:column;
    min-height:0;
    overflow:hidden;
}
.tktas-sidebar-title{
    margin:0 0 10px;font-size:12px;font-weight:800;letter-spacing:.08em;
    text-transform:uppercase;color:#64748b;
}
.tktas-best-list{display:flex;flex:1 1 auto;min-height:0;flex-direction:column;gap:8px;overflow-y:auto;overscroll-behavior:contain;padding-right:4px;scrollbar-gutter:stable}
.tktas-best-loading{font-size:13px;color:#94a3b8;padding:6px 2px}
/* v3.49.3: these are <button> elements, so Motta's global button:hover
   (background: var(--mt-color__primary--dark); white text) was repainting them
   dark navy on hover. Explicit background and colour, base and hover, at higher
   specificity than the theme's rule. Hover is a light brand tint, not a fill. */
.tktas-widget button.tktas-best-item,
.tktas-best-item{
    display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:center!important;align-content:center!important;column-gap:12px;
    width:100%;min-height:104px;height:auto!important;text-align:left;cursor:pointer;
    padding:12px 14px!important;border:1px solid #e6e9ef;border-radius:11px;
    background:#fff !important;
    color:inherit !important;
    font-family:inherit;
    box-shadow:none;
    transition:border-color .15s ease, background .15s ease;
}
.tktas-widget button.tktas-best-item:hover,
.tktas-best-item:hover{
    background:color-mix(in srgb, var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) 6%, #fff) !important;
    color:inherit !important;
    border-color:color-mix(in srgb, var(--mt-color__primary, var(--tktas-school-primary, #0b4c84)) 45%, #e6e9ef);
    box-shadow:none;
    transform:none;
}
/* Picks match the section cards exactly — no special border or fill. */
.tktas-best-pick{border-color:#e6e9ef;background:#fff !important}
.tktas-best-main{display:flex!important;flex-direction:column;justify-content:center!important;align-items:flex-start!important;gap:4px;min-width:0;align-self:center!important;height:auto!important;margin:0!important;padding:0!important;line-height:1.35}
.tktas-best-main strong{display:block;margin:0!important;padding:0!important;font-size:13.5px;line-height:1.35;color:#0f172a}
.tktas-best-sub{display:block;margin:0!important;padding:0!important;font-size:12px;color:#64748b;line-height:1.35}
.tktas-best-price{
    flex:0 0 auto;align-self:center!important;justify-self:end!important;margin:0!important;padding:0!important;font-size:13px;font-weight:800;color:var(--mt-color__primary, var(--tktas-school-primary, #0b4c84));
    font-variant-numeric:tabular-nums;white-space:nowrap;
}
/* Add-ons relocated into the sidebar: tighten to fit the column. */
.tktas-sidebar .tktas-event-addons{margin:0}
.tktas-sidebar .tktas-addons-title{font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#64748b}
.tktas-sidebar .tktas-addon-card{padding:11px 12px;border-radius:11px}

.tktas-sidebar-slot-addons{flex:0 0 auto;min-height:0}
.tktas-sidebar-slot-cta{flex:0 0 auto}
.tktas-sidebar .tktas-best-list::-webkit-scrollbar{width:7px}
.tktas-sidebar .tktas-best-list::-webkit-scrollbar-thumb{background:#d7dce3;border-radius:999px}
.tktas-sidebar .tktas-best-list::-webkit-scrollbar-track{background:transparent}

/* v3.49.4: the booking button is THEME-NATIVE. No colours, radius, type, or
   icon of ours — Motta's own .single_add_to_cart_button styling applies in
   full, so it matches every other button on the site. The plugin contributes
   placement only: full width of the sidebar column, no stray margins. */
.tktas-sidebar .single_add_to_cart_button,
body.tktas-enabled:not(.tktas-no-seats) form.cart .tktas-sidebar .single_add_to_cart_button{
    width:100% !important;
    height:60px !important;
    font-size:14px !important;
    margin:0 !important;
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
}
.tktas-sidebar .single_add_to_cart_button::after{content:none !important}
@media (max-width: 900px){
    .tktas-layout{grid-template-columns:1fr}
    .tktas-layout .tktas-stage{height:380px}
    .tktas-sidebar{
        position:static;
        height:auto;
        max-height:none;
        overflow:visible;
    }
    .tktas-best-available{overflow:visible}
    .tktas-best-list{overflow:visible;padding-right:0}
}

/* =========================================================================
   EVENT HEADER (v3.48.9) — plugin-owned

   Rendered by the plugin inside the widget with its own data. The theme's
   originals are hidden by featured-image matching in JS (.tktas-hidden-dup),
   never by guessing wrapper class names. The summary width release applies
   only after that hiding succeeded (body.tktas-header-built), so if the JS
   finds nothing the theme's layout is left completely alone.
   ========================================================================= */
.tktas-hidden-dup{display:none !important}

/* v3.49.5: "in the middle of the header" — the image + text lockup is centred
   HORIZONTALLY in the header band, and the two pieces centre on one vertical
   axis. Flex, not grid: the info column no longer stretches to a track, so
   vertical centring is intrinsic instead of fought over. !important beats the
   previously-cached grid rules in aggregated stylesheets. */
.tktas-event-header{
    display:flex !important;
    justify-content:flex-start !important; /* v3.49.8: lockup back to LEFT; vertical centring kept */
    align-items:center !important;
    gap:18px;
    margin:0 0 16px;
    padding:0 0 16px;
    border-bottom:1px solid #eef1f5;
}
.tktas-event-header .tktas-event-media img{
    width:104px;height:104px;object-fit:cover;border-radius:12px;display:block;
}
/* v3.49.3: header text inherits the THEME's font and colour — no hardcoded
   families or inks. Sizes are relative so they scale with the theme's base. */
.tktas-event-header .tktas-event-media{flex:0 0 auto;display:flex;align-items:center}
.tktas-event-header .tktas-event-info{
    flex:0 1 auto;min-width:0;
    display:flex;flex-direction:column;justify-content:center;
}
.tktas-event-info > *{margin:0 !important;padding:0 !important}
.tktas-event-title{
    font-family:inherit;color:inherit;
    font-size:1.5em;font-weight:700;line-height:1.2;
    margin:0 0 .25em !important;
}
.tktas-event-when{font-family:inherit;color:inherit;opacity:1;font-size:.95em;font-weight:500;line-height:1.45}
.tktas-event-venue{font-family:inherit;color:inherit;opacity:1;font-size:.9em;font-weight:500;line-height:1.45}

body.tktas-header-built.single-product div.product .summary,
body.tktas-header-built.single-product div.product .entry-summary{
    width:100% !important;max-width:100% !important;float:none !important;
}

/* v3.49.1: when the server stripped the theme chrome at the hook level, the
   summary is the only child left — release it unconditionally. This is safe
   because the class is only added after removals actually landed. */
body.tktas-theme-stripped.single-product div.product .summary,
body.tktas-theme-stripped.single-product div.product .entry-summary{
    width:100% !important;max-width:100% !important;float:none !important;margin:0 !important;
}
body.tktas-theme-stripped.single-product .product-gallery-summary{
    display:block !important; /* belt-and-braces if a cached page kept the wrapper */
}
/* v3.49.2: full content width. With the chrome gone the summary may still carry
   the padding/grid the layout reserved for the gallery column — zero it so the
   seat panel runs the true length of the page container. */
body.tktas-theme-stripped.single-product div.product{
    display:block !important;
}
body.tktas-theme-stripped.single-product div.product .summary,
body.tktas-theme-stripped.single-product div.product .entry-summary{
    padding:0 !important;
}
body.tktas-theme-stripped.single-product .tktas-widget{
    width:100% !important;
    margin-left:0 !important;
    margin-right:0 !important;
}
/* Sidebar order is structural now: Best Available, add-ons, booking button. */
body.tktas-theme-stripped .tktas-sidebar .tktas-event-addons{margin-top:0}

/* -------------------------------------------------------------------------
   CONTAINER ESCAPE (v3.49.0)

   Motta ships six single-product layouts switchable per page
   (?product_layout=1..6), each wrapping the gallery/summary differently —
   which is why no width release aimed at ".summary" can be relied on. The
   widget therefore escapes its column entirely with the standard full-bleed
   technique (left:50% / margin-left:-50vw), which positions relative to the
   VIEWPORT and needs no knowledge of any ancestor. An inner max-width keeps
   it aligned with the site container. Applied at >=1024px only; on smaller
   screens the column is full width anyway.
   ------------------------------------------------------------------------- */
/* The escape is measured in JS (tktasEscapeContainer): the classic pure-CSS
   full-bleed (left:50% / margin-left:-50vw) assumes the element's containing
   block is centred in the viewport, which Motta's summary column is not — it
   shifted the whole widget off-screen left in simulation. JS measures the
   widget's real offset and cancels it, which also avoids transform-based
   tricks that would break the sticky sidebar (position:sticky is defeated by
   any transformed ancestor). This class is applied only >=1024px. */
body.tktas-enabled:not(.tktas-no-seats).single-product .tktas-widget.tktas-escaped{
    border:none;
    border-radius:0;
    box-shadow:none;
    background:transparent;
}
body.tktas-enabled:not(.tktas-no-seats).single-product .tktas-widget.tktas-escaped > *{
    max-width:1280px;
    margin-left:auto;
    margin-right:auto;
}
@media (max-width: 700px){
    .tktas-event-header{grid-template-columns:76px minmax(0,1fr);column-gap:12px}
    .tktas-event-header .tktas-event-media img{width:76px;height:76px}
}

/* v3.49.66: external-commerce CTA uses Motta/WooCommerce native button styling.
   Ticketality controls placement only; the theme controls visual treatment. */
.tktas-external-ticket-wrap{width:100%;margin:18px 0}
.tktas-external-ticket-wrap .single_add_to_cart_button{width:100% !important;margin:0 !important}


/* v3.49.122: Best Available stops on a complete recommendation card.
   JS computes an exact whole-card viewport on desktop; this subtle bottom
   breathing room keeps the scroll region visually separate from Event Add-ons. */
@media (min-width: 901px){
    .tktas-best-available{padding-bottom:4px}
    .tktas-best-list{scroll-padding-block:0}
    .tktas-best-item{scroll-snap-align:start}
}
