/* Page controls; the original Weeztix widget supplies its own floating UI. */
.ticket-picker{display:flex;justify-content:space-between;align-items:center;gap:16px;border-top:1px solid var(--ink);padding-top:20px}
.ticket-picker-label{font-weight:700;font-size:16px}.ticket-availability{display:block;font-weight:400;font-size:12px;margin-top:4px}
.ticket-stepper{display:flex;align-items:center;gap:12px;flex-shrink:0}
.ticket-stepper button{width:44px;height:44px;border:1px solid var(--ink);border-radius:50%;background:var(--paper);color:var(--ink);font:700 24px/1 Arial,sans-serif;cursor:pointer}
.ticket-stepper output{min-width:24px;text-align:center;font:900 24px/1 Spartan,Arial,sans-serif}
.ticket-stepper button:disabled{opacity:.35;cursor:default}.ticket-stepper button:not(:disabled):hover{background:var(--ink);color:var(--paper)}

/* Brand only the provider's existing launcher. Counts, loading, open/close,
   reservations and checkout stay under Weeztix control. The cross-origin
   checkout uses the colours saved in the Weeztix dashboard separately. */
.ot-shop-widget[data-ot-shop-widget="v1"]{
  --ot-internal-shop-widget-color-core-brand:var(--lime);
  --ot-internal-shop-widget-color-core-brand-invert:var(--ink);
}
.ot-shop-widget__button .ot-shop-widget__button__button[data-ot-shop-widget="v1"]{
  background:var(--lime);color:var(--ink);border:1px solid var(--ink);
  border-radius:50%;box-shadow:3px 4px 0 #30032224;
  font-family:SpartanText,Arial,sans-serif;
}
.ot-shop-widget__button .ot-shop-widget__button__label[data-ot-shop-widget="v1"]{
  background:var(--lilac);color:var(--ink);border:1px solid var(--ink);
  border-radius:12px;padding:12px 16px;font-family:SpartanText,Arial,sans-serif;
  font-weight:700;box-shadow:3px 4px 0 #30032218;
}
.ot-shop-widget__button .button__logo[data-ot-shop-widget="v1"]{
  content:url('/assets/icon-cart-ticket-v1.svg');width:40px;height:40px;object-fit:contain;
}
.ot-shop-widget__button__wrapper[data-ot-shop-widget="v1"]:focus-visible{
  outline:3px solid var(--ink);outline-offset:5px;border-radius:50%;
}
/* Weeztix appends notifications outside its widget root, so they need their
   own colour scope. Preserve the provider's warning and error distinctions. */
.ot-notification-container .ot-notification.is-info{
  --ot-internal-shop-widget-color-core-brand:var(--lilac);
  --ot-internal-shop-widget-color-core-brand-invert:var(--ink);
  border:1px solid var(--ink);font-family:SpartanText,Arial,sans-serif;
}
.ot-notification-container .ot-notification.is-info button:focus-visible{
  outline:2px solid var(--ink);outline-offset:2px;
}
@media(prefers-reduced-motion:reduce){
  .ot-shop-widget__button .ot-shop-widget__button__button[data-ot-shop-widget="v1"].animateShake{animation:none}
}
.ticket-note{font-size:13px;max-width:760px;margin:16px 0 0}.ticket-status{min-height:24px;font-size:14px}.ticket-fallback{font-size:14px;margin:10px 0 0;text-underline-offset:4px}
@media(max-width:600px){.ticket-picker{gap:8px}.ticket-stepper{gap:8px}.ticket-picker-label{font-size:14px}}

/* Leave a full launcher-height of scrollable space after the footer on phones.
   This keeps the final links reachable above the fixed provider control. */
@media(max-width:624px){
  body{padding-bottom:calc(104px + env(safe-area-inset-bottom,0px))}
  html{scroll-padding-bottom:calc(104px + env(safe-area-inset-bottom,0px))}
  .ot-shop-widget .ot-shop-widget__button[data-ot-shop-widget="v1"]{
    bottom:calc(16px + env(safe-area-inset-bottom,0px));
    right:max(16px,env(safe-area-inset-right,0px));
  }
}

.ticket-stepper button{touch-action:manipulation}

/* Sold-out cards follow provider status; the limited notice is ticket-specific. */
.package .ticket-badge{display:table;max-width:100%;margin:0 0 18px;padding:10px 14px;border:1px solid currentColor;border-radius:8px;background:#555;color:#fff;font-size:14px;font-weight:800;line-height:1.4}
.package .ticket-badge[hidden]{display:none}
.package .ticket-badge-limited{background:var(--lime);color:var(--ink);box-shadow:3px 3px 0 var(--ink)}
.package.package-sold-out{background:#e5e5e5;color:#595959;border-color:#999;box-shadow:none}
.package-sold-out .package-price,.package-sold-out .ticket-description,.package-sold-out .fee-note{color:#595959}
.package-sold-out .ticket-picker{border-color:#999}
.package-sold-out .ticket-stepper button{background:#f4f4f4;color:#595959;border-color:#999}

/* Round kickoff notice: reserve room beside the heading so the sticker never
   covers the ticket name, price or controls, including narrow phone screens. */
.package .ticket-badge-limited{position:absolute;top:24px;right:24px;display:flex;align-items:center;justify-content:center;width:116px;height:116px;max-width:none;box-sizing:border-box;margin:0;padding:14px;border:2px solid var(--ink);border-radius:50%;background:var(--lime);color:var(--ink);box-shadow:4px 4px 0 var(--ink);font-size:14px;font-weight:800;line-height:1.25;text-align:center;transform:rotate(9deg)}
.package:has(>.ticket-badge-limited:not([hidden])) h3{padding-right:132px;min-height:116px}
@media(max-width:420px){
  .package .ticket-badge-limited{top:22px;right:18px;width:108px;height:108px;font-size:13px;padding:12px}
  .package:has(>.ticket-badge-limited:not([hidden])) h3{padding-right:116px;min-height:108px;font-size:28px}
}
@media(max-width:360px){
  .package .ticket-badge-limited{right:14px;width:100px;height:100px;font-size:12px}
  .package:has(>.ticket-badge-limited:not([hidden])) h3{padding-right:103px;font-size:26px}
}
