/**
 * Kvit Tickets — UI layer on top of Pretix (Bootstrap 3).
 * Loaded after compressed bundles so these rules can refine layout & affordances.
 */
:root {
  --kvit-bg: #f5f7fb;
  --kvit-surface: #ffffff;
  --kvit-ink: #121827;
  --kvit-muted: #5d667a;
  --kvit-border: #dde4ef;
  --kvit-accent: #cf2449;
  --kvit-accent-hover: #a81737;
  --kvit-accent-soft: rgba(207, 36, 73, 0.13);
  --kvit-success: #0f8f65;
  --kvit-success-hover: #0a7552;
  --kvit-warning: #c57a00;
  --kvit-warning-hover: #a86400;
  --kvit-danger: #dc2626;
  --kvit-danger-hover: #b91c1c;
  --kvit-info: #4f46e5;
  --kvit-info-hover: #4338ca;
  --kvit-radius: 12px;
  --kvit-radius-sm: 8px;
  --kvit-shadow: 0 1px 3px rgba(18, 24, 39, 0.08), 0 14px 36px rgba(18, 24, 39, 0.08);
  --kvit-focus: 0 0 0 3px rgba(207, 36, 73, 0.34);
  --kvit-font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

/* --- Global typography & focus (clickability / a11y) --- */
body {
  font-family: var(--kvit-font) !important;
  color: var(--kvit-ink);
  -webkit-font-smoothing: antialiased;
}

a,
button:not(:disabled),
.btn,
input[type="submit"],
label {
  cursor: pointer;
}

a:focus-visible,
button:focus-visible,
.btn:focus-visible,
summary:focus-visible,
[tabindex]:not([tabindex="-1"]):focus-visible {
  outline: none;
  box-shadow: var(--kvit-focus);
  border-radius: 4px;
}

/* --- Control: top bar --- */
.navbar-inverse {
  background:
    radial-gradient(circle at 10% 12%, rgba(207, 36, 73, 0.36), transparent 26%),
    radial-gradient(circle at 88% 16%, rgba(63, 86, 134, 0.28), transparent 30%),
    linear-gradient(132deg, #070b18 0%, #121827 54%, #2a1020 100%) !important;
  border: none !important;
  box-shadow: 0 2px 12px rgba(15, 23, 42, 0.3), inset 0 -1px 0 rgba(255, 255, 255, 0.06);
}

.navbar-inverse .navbar-brand {
  font-weight: 600;
  letter-spacing: -0.02em;
  padding: 14px 16px;
}

.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
  color: #fff !important;
  opacity: 0.92;
}

.navbar-inverse .navbar-brand img,
.navbar-inverse .navbar-brand .kvit-navbar-wordmark {
  height: 30px;
  width: auto;
  max-width: min(180px, 36vw);
  object-fit: contain;
  margin-inline-end: 0;
  vertical-align: middle;
  background: transparent;
  /* white matte in wordmark PNG — blend into dark navbar */
  mix-blend-mode: darken;
}

.kvit-navbar-brand {
  display: inline-flex !important;
  align-items: center;
  gap: 0;
}

/* Event / organizer selector card — logo top-right */
.context-selector > a.dropdown-toggle.kvit-context-toggle {
  display: flex !important;
  align-items: center;
  flex-wrap: nowrap;
  gap: 10px;
}

.context-selector .kvit-context-mark {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  object-fit: cover;
  flex-shrink: 0;
  margin-inline-start: auto;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.12);
}

.context-selector .context-indicator {
  flex: 1 1 auto;
  min-width: 0;
}

.navbar-top-links > li > a,
.navbar-top-links > li > form .btn-link {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  padding: 12px 14px !important;
  border-radius: var(--kvit-radius-sm);
  transition: background 0.15s ease, color 0.15s ease;
}

.navbar-top-links > li > a:hover,
.navbar-top-links > li > a:focus,
.navbar-top-links > li > form .btn-link:hover {
  background: rgba(255, 255, 255, 0.08) !important;
  color: #fff !important;
  text-decoration: none;
}

.navbar-top-links .btn-link {
  color: rgba(255, 255, 255, 0.92) !important;
  border: none;
  text-decoration: none !important;
}

.navbar-top-links .dropdown-menu > li > a {
  padding: 10px 16px;
  border-radius: 6px;
  margin: 2px 6px;
}

.navbar-top-links .dropdown-menu > li > a:hover {
  background: var(--kvit-accent-soft);
  color: var(--kvit-accent-hover) !important;
}

/* --- Sidebar --- */
.navbar-default.sidebar {
  background: var(--kvit-surface) !important;
  border-inline-end: 1px solid var(--kvit-border) !important;
  box-shadow: 4px 0 24px rgba(15, 23, 42, 0.04);
}

.sidebar .sidebar-nav ul li a {
  border-radius: var(--kvit-radius-sm);
  margin: 2px 8px;
  padding: 11px 14px !important;
  transition: background 0.12s ease, color 0.12s ease;
  color: #334155 !important;
}

.sidebar .sidebar-nav ul li a:hover,
.sidebar .sidebar-nav ul li a:focus {
  background: var(--kvit-accent-soft) !important;
  color: var(--kvit-accent-hover) !important;
  text-decoration: none;
}

.sidebar .sidebar-nav ul li.active > a,
.sidebar .sidebar-nav ul li.active > a:hover {
  background: var(--kvit-accent) !important;
  color: #fff !important;
}

.sidebar .nav-second-level li a {
  padding-inline-start: 28px !important;
}

.context-selector > a.dropdown-toggle {
  border-radius: var(--kvit-radius-sm);
  margin: 8px;
  padding: 12px !important;
  border: 1px solid var(--kvit-border);
  background: #f8fafc;
}

.context-selector > a.dropdown-toggle:hover {
  border-color: var(--kvit-accent);
  background: #fff;
}

/* --- Page canvas --- */
#page-wrapper {
  background: var(--kvit-bg) !important;
  min-height: 100vh;
}

/* Main page title: Kvit mark (replaces default browser / pretix-only favicon feel) */
#page-wrapper .container-fluid > h1:first-of-type {
  padding-inline-start: 48px;
  background: url("kvit-mark.e9f1dcfd7269.png") 0 0.08em / 36px 36px no-repeat;
  background-size: 36px 36px;
}

/* Organizer area should remain logo-free in headings */
body[data-organizer] #page-wrapper .container-fluid > h1:first-of-type {
  padding-inline-start: 0;
  background: none;
}

#page-wrapper .navbar-static-top {
  margin-bottom: 0;
}

/* Panels & wells → cards */
.panel {
  border: 1px solid var(--kvit-border) !important;
  border-radius: var(--kvit-radius) !important;
  box-shadow: var(--kvit-shadow);
  overflow: hidden;
}

/* Phone-prefix combobox: .kvit-combobox-list is position:absolute below the input.
   overflow:hidden on .panel clips it to a thin strip. Let panels that host the
   combobox paint the dropdown outside the card bounds. */
.panel:has(.kvit-combobox),
.well:has(.kvit-combobox) {
  overflow: visible;
}

/* Same for the flex row that wraps prefix + national number */
.nameparts-form-group:has(.kvit-combobox) {
  overflow: visible;
}

.panel-heading {
  font-weight: 600;
  border-bottom-color: var(--kvit-border) !important;
  background: #f8fafc !important;
}

.well {
  border-radius: var(--kvit-radius) !important;
  border-color: var(--kvit-border) !important;
  background: var(--kvit-surface) !important;
  box-shadow: var(--kvit-shadow);
}

/* Buttons */
.btn {
  border-radius: var(--kvit-radius-sm) !important;
  font-weight: 500;
  transition: transform 0.08s ease, box-shadow 0.15s ease, background 0.15s ease;
}

.btn:active {
  transform: translateY(1px);
}

.btn-primary {
  background: var(--kvit-accent) !important;
  border-color: var(--kvit-accent-hover) !important;
}

.btn-primary:hover,
.btn-primary:focus {
  background: var(--kvit-accent-hover) !important;
  border-color: var(--kvit-accent-hover) !important;
}

.btn-default:hover {
  border-color: var(--kvit-accent);
  color: var(--kvit-accent-hover);
}

/* Semantic colors: actions + stateful components */
.btn-success {
  background: var(--kvit-success) !important;
  border-color: var(--kvit-success-hover) !important;
}

.btn-success:hover,
.btn-success:focus {
  background: var(--kvit-success-hover) !important;
}

.btn-warning {
  background: var(--kvit-warning) !important;
  border-color: var(--kvit-warning-hover) !important;
}

.btn-warning:hover,
.btn-warning:focus {
  background: var(--kvit-warning-hover) !important;
}

.btn-danger {
  background: var(--kvit-danger) !important;
  border-color: var(--kvit-danger-hover) !important;
}

.btn-danger:hover,
.btn-danger:focus {
  background: var(--kvit-danger-hover) !important;
}

/* Tables readability */
.table > thead > tr > th {
  border-bottom-width: 2px;
  font-weight: 600;
  color: var(--kvit-muted);
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.table > tbody > tr:hover > td {
  background: #f8fafc !important;
}

/* Forms */
.form-control:focus {
  border-color: var(--kvit-accent);
  box-shadow: 0 0 0 2px var(--kvit-accent-soft);
}

/* Alerts */
.alert {
  border-radius: var(--kvit-radius-sm) !important;
  border-width: 1px;
}

.alert-success {
  background: rgba(15, 143, 101, 0.1) !important;
  border-color: rgba(15, 143, 101, 0.3) !important;
  color: #0a5a40 !important;
}

.alert-info {
  background: rgba(79, 70, 229, 0.1) !important;
  border-color: rgba(79, 70, 229, 0.28) !important;
  color: #312e81 !important;
}

.alert-warning {
  background: rgba(197, 122, 0, 0.1) !important;
  border-color: rgba(197, 122, 0, 0.3) !important;
  color: #7c4700 !important;
}

.alert-danger {
  background: rgba(220, 38, 38, 0.1) !important;
  border-color: rgba(220, 38, 38, 0.3) !important;
  color: #8f1d1d !important;
}

/* --- Auth shell (login, hello page) --- */
body > .container {
  max-width: 520px;
  margin-top: 48px;
  margin-bottom: 48px;
}

body > .container > .kvit-auth-brand {
  display: block;
  text-align: center;
  margin-bottom: 20px;
}

.kvit-logo-main {
  max-height: 52px;
  width: auto;
  max-width: min(280px, 90vw);
  height: auto;
  vertical-align: middle;
  background: transparent;
  /* kvit-wordmark.png has a white matte — blend into light auth background */
  mix-blend-mode: multiply;
}

body > .container footer {
  margin-top: 32px;
  text-align: center;
  font-size: 13px;
  color: var(--kvit-muted);
}

body > .container footer a {
  color: var(--kvit-accent);
  font-weight: 500;
  text-decoration: none;
}

body > .container footer a:hover {
  text-decoration: underline;
}

/* --- Kvit welcome (presale index / hello) --- */
.kvit-welcome {
  background: var(--kvit-surface);
  border-radius: var(--kvit-radius);
  box-shadow: var(--kvit-shadow);
  border: 1px solid var(--kvit-border);
  padding: 28px 24px 26px;
  text-align: center;
}

/* Brand accent (logos) — scoped to welcome card only */
.kvit-welcome--brand {
  --kvit-accent: #cf2449;
  --kvit-accent-hover: #a81737;
  --kvit-accent-soft: rgba(207, 36, 73, 0.16);
}

.kvit-welcome__brand {
  display: flex;
  justify-content: center;
  margin-bottom: 18px;
}

.kvit-welcome__logo-small {
  width: 72px;
  height: 72px;
  object-fit: contain;
  border-radius: 0;
  border: 0;
  box-shadow: 0 2px 12px rgba(208, 24, 85, 0.25);
}

.kvit-welcome h1 {
  font-size: 1.75rem;
  font-weight: 700;
  letter-spacing: -0.03em;
  margin: 0 0 12px;
  color: var(--kvit-ink);
}

.kvit-welcome__lead {
  color: var(--kvit-muted);
  font-size: 1rem;
  line-height: 1.55;
  margin: 0 auto 24px;
  max-width: 38em;
}

.kvit-welcome__actions {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 8px;
}

@media (min-width: 480px) {
  .kvit-welcome__actions {
    flex-direction: row;
    justify-content: center;
    flex-wrap: wrap;
  }
}

a.kvit-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 48px;
  padding: 0 22px;
  border-radius: var(--kvit-radius-sm);
  font-weight: 600;
  font-size: 15px;
  text-decoration: none !important;
  border: 2px solid transparent;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease, transform 0.08s ease;
}

a.kvit-btn:active {
  transform: translateY(1px);
}

.kvit-btn--primary {
  background: var(--kvit-accent);
  color: #fff !important;
  border-color: var(--kvit-accent-hover);
}

.kvit-btn--primary:hover,
.kvit-btn--primary:focus {
  background: var(--kvit-accent-hover);
  color: #fff !important;
}

.kvit-btn--secondary {
  background: #fff;
  color: var(--kvit-ink) !important;
  border-color: var(--kvit-border);
}

.kvit-btn--secondary:hover,
.kvit-btn--secondary:focus {
  border-color: var(--kvit-accent);
  color: var(--kvit-accent-hover) !important;
  background: #f8fafc;
}

.kvit-welcome__hint {
  margin-top: 20px;
  font-size: 13px;
  color: var(--kvit-muted);
  line-height: 1.5;
}

.kvit-welcome__hint a {
  color: var(--kvit-accent);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.kvit-welcome__hint a:hover {
  color: var(--kvit-accent-hover);
}

/* --- Presale shop (customer-facing) --- */
.main-box {
  padding-top: 24px;
  padding-bottom: 32px;
}

.main-box footer nav ul {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 20px;
  justify-content: center;
  list-style: none;
  padding: 0;
  margin: 24px 0 0;
}

.main-box footer nav ul li a {
  font-weight: 500;
  color: var(--kvit-accent);
  text-decoration: none;
  padding: 6px 4px;
  border-radius: 4px;
}

.main-box footer nav ul li a:hover {
  text-decoration: underline;
}

/*
 * AGPL / license attribution (pretix + modified source): keep text and links
 * real, readable, and keyboard-focusable — only visually de-emphasised.
 */
.main-box footer .powered-by,
body > .container footer .powered-by {
  flex-basis: 100%;
  width: 100%;
  margin-top: 6px;
  padding-top: 12px;
  border-top: 1px solid var(--kvit-border);
  font-size: 10px;
  line-height: 1.45;
  color: #94a3b8;
  letter-spacing: 0.01em;
}

.main-box footer .powered-by a,
body > .container footer .powered-by a {
  color: #7c8ea0;
  font-weight: 400;
  text-decoration: underline;
  text-decoration-color: rgba(148, 163, 184, 0.55);
  text-underline-offset: 2px;
}

.main-box footer .powered-by a:hover,
.main-box footer .powered-by a:focus-visible,
body > .container footer .powered-by a:hover,
body > .container footer .powered-by a:focus-visible {
  color: var(--kvit-accent);
  text-decoration-color: var(--kvit-accent);
}

body.kvit-event-page .main-box footer .powered-by {
  border-top-color: var(--bi2-line);
  color: #6b8aaf;
}

body.kvit-event-page .main-box footer .powered-by a {
  color: #5a7a9c;
}

body.kvit-event-page .main-box footer .powered-by a:hover,
body.kvit-event-page .main-box footer .powered-by a:focus-visible {
  color: var(--kvit-accent);
  text-decoration-color: var(--kvit-accent);
}

/* Event hero wrappers are opt-in skins. Keep them inert for regular events. */
.kvit-event-hero__media,
.kvit-event-hero__glow,
.kvit-event-hero__scroll {
  display: none;
}

/* --- Kvit event landing page --- */
body.kvit-event-page {
  --bi2-bg: #f5f7fb;
  --bi2-surface: rgba(255, 255, 255, 0.9);
  --bi2-surface-strong: rgba(255, 255, 255, 0.96);
  --bi2-line: rgba(207, 36, 73, 0.18);
  --bi2-ink: #121827;
  --bi2-muted: #586277;
  --bi2-red: #cf2449;
  --bi2-red-bright: #f0445f;
  --bi2-navy: #121827;
  --bi2-shadow: 0 26px 80px rgba(18, 24, 39, 0.16);
  background:
    radial-gradient(circle at 16% 12%, rgba(207, 36, 73, 0.16), transparent 34%),
    radial-gradient(circle at 86% 10%, rgba(18, 24, 39, 0.1), transparent 32%),
    linear-gradient(135deg, #ffffff 0%, #f6f8fc 48%, #edf2f8 100%);
  color: var(--bi2-ink);
}

body.kvit-event-page::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: -1;
  background:
    linear-gradient(rgba(18, 24, 39, 0.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(207, 36, 73, 0.04) 1px, transparent 1px);
  background-size: 72px 72px;
  mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.55), transparent 74%);
}

body.kvit-event-page > .container.main-box,
body.kvit-event-page > header .container {
  width: 100%;
  max-width: none;
}

body.kvit-event-page > .container.main-box {
  margin: 0;
  padding: 0;
  min-height: 100vh;
  background: transparent;
}

body.kvit-event-page #content {
  position: relative;
  overflow: hidden;
}

body.kvit-event-page .page-header-links {
  position: absolute;
  top: 18px;
  left: 50%;
  z-index: 5;
  transform: translateX(-50%);
  max-width: 1180px;
  padding-inline: 22px;
  color: var(--bi2-ink);
}

body.kvit-event-page .page-header-links a,
body.kvit-event-page .page-header-links .btn-link {
  color: var(--bi2-ink);
  text-shadow: 0 1px 12px rgba(255, 255, 255, 0.7);
}

body.kvit-event-page .kvit-event-hero {
  position: relative;
  min-height: clamp(560px, 70svh, 820px);
  display: flex;
  align-items: flex-end;
  isolation: isolate;
  padding: clamp(220px, 32vh, 340px) 20px clamp(64px, 9vh, 110px);
  perspective: 1400px;
}

body.kvit-event-page .kvit-event-hero__media,
body.kvit-event-page .kvit-event-hero__glow {
  display: block;
  position: absolute;
  inset: 0;
  pointer-events: none;
}

body.kvit-event-page .kvit-event-hero__media {
  z-index: -3;
  background:
    url("kvit-logo-main.277e829db521.png") center clamp(28px, 5vh, 70px) / clamp(360px, 44vw, 620px) auto no-repeat,
    radial-gradient(circle at 18% 24%, rgba(207, 36, 73, 0.24), transparent 33%),
    radial-gradient(circle at 82% 18%, rgba(18, 24, 39, 0.16), transparent 31%),
    linear-gradient(135deg, #ffffff 0%, #f7f9fd 42%, #edf2f8 100%);
  transform: scale(1.01);
  animation: bi2HeroDrift 18s ease-in-out infinite alternate;
}

body.kvit-event-bi-2 .kvit-event-hero {
  padding-top: clamp(420px, 50vh, 560px);
}

body.kvit-event-bi-2 .kvit-event-hero__media {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0) 46%, rgba(245, 247, 251, 0.92) 86%, rgba(237, 242, 248, 0.98) 100%),
    linear-gradient(90deg, rgba(245, 247, 251, 0.76) 0%, rgba(245, 247, 251, 0) 18%, rgba(245, 247, 251, 0) 82%, rgba(245, 247, 251, 0.76) 100%),
    url("kvit-logo-main.277e829db521.png") center clamp(275px, 36vw, 425px) / clamp(250px, 28vw, 420px) auto no-repeat,
    url("bi2-hero-band.1e504d79bb4c.png") center top / 100% auto no-repeat,
    radial-gradient(circle at 18% 34%, rgba(207, 36, 73, 0.22), transparent 32%),
    radial-gradient(circle at 82% 28%, rgba(18, 24, 39, 0.13), transparent 30%),
    linear-gradient(135deg, #ffffff 0%, #f7f9fd 44%, #edf2f8 100%);
}

body.kvit-event-page .kvit-event-hero__glow {
  z-index: -2;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(249, 251, 254, 0.44) 58%, rgba(237, 242, 248, 0.92) 100%),
    radial-gradient(circle at 20% 72%, rgba(207, 36, 73, 0.18), transparent 30%),
    radial-gradient(circle at 74% 34%, rgba(18, 24, 39, 0.1), transparent 26%);
  filter: blur(8px);
  opacity: 0.9;
}

body.kvit-event-page .kvit-event-hero__content {
  width: min(1180px, 100%);
  margin: 0 auto;
  transform-style: preserve-3d;
  animation: bi2RiseIn 0.9s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

body.kvit-event-page .page-header {
  width: min(460px, 100%);
  margin: 0;
  padding: clamp(22px, 3vw, 34px);
  border: 1px solid rgba(207, 36, 73, 0.18);
  border-radius: 26px;
  background:
    linear-gradient(135deg, rgba(255, 255, 255, 0.98), rgba(247, 249, 253, 0.88)),
    var(--bi2-surface);
  box-shadow: var(--bi2-shadow), inset 0 1px 0 rgba(255, 255, 255, 0.85);
  backdrop-filter: blur(18px) saturate(1.15);
  transform: rotateX(0deg) rotateY(-2deg) translateZ(0);
  transition: transform 0.35s ease, border-color 0.35s ease, box-shadow 0.35s ease;
}

body.kvit-event-page .page-header:hover {
  border-color: rgba(207, 36, 73, 0.28);
  box-shadow: 0 34px 96px rgba(18, 24, 39, 0.18), 0 0 44px rgba(207, 36, 73, 0.18);
  transform: rotateX(1deg) rotateY(0deg) translateY(-4px);
}

body.kvit-event-page .page-header h1,
body.kvit-event-page .content-header {
  color: var(--bi2-ink);
  font-size: clamp(2.4rem, 4.6vw, 4.9rem);
  line-height: 0.96;
  font-weight: 850;
  letter-spacing: -0.055em;
  text-transform: none;
  text-wrap: balance;
}

body.kvit-event-page .page-header h1 {
  margin: 0;
}

body.kvit-event-page .page-header h1 a,
body.kvit-event-page .page-header h1 a:hover,
body.kvit-event-page .page-header h1 a:focus {
  color: inherit;
  text-decoration: none;
}

body.kvit-event-page .page-header h1 small,
body.kvit-event-page .content-header small {
  display: block;
  margin-top: 14px;
  color: var(--bi2-muted);
  font-size: clamp(1.3rem, 1.55vw, 1.75rem);
  line-height: 1.25;
  letter-spacing: 0.02em;
  text-transform: none;
}

body.kvit-event-page .event-logo {
  max-width: min(640px, 100%);
  max-height: 48vh;
  object-fit: contain;
  filter: drop-shadow(0 18px 40px rgba(0, 0, 0, 0.46));
}

body.kvit-event-page .kvit-event-hero__scroll {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  margin-top: 16px;
  padding: 0 20px;
  border: 1px solid rgba(255, 255, 255, 0.38);
  border-radius: 999px;
  background: linear-gradient(135deg, var(--bi2-red-bright), var(--bi2-red));
  color: #fff;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none;
  box-shadow: 0 16px 34px rgba(168, 23, 55, 0.28);
  transition: transform 0.2s ease, box-shadow 0.2s ease, filter 0.2s ease;
}

body.kvit-event-page .kvit-event-hero__scroll:hover,
body.kvit-event-page .kvit-event-hero__scroll:focus {
  color: #fff;
  filter: brightness(1.08);
  text-decoration: none;
  transform: translateY(-3px) translateZ(28px);
  box-shadow: 0 22px 44px rgba(168, 23, 55, 0.34);
}

/* Boombox: full-viewport hero photo, title + CTA top-left, location/date strip on photo */
body.kvit-boombox-front > .container.main-box {
  padding-top: 0;
  padding-left: 0;
  padding-right: 0;
}

body.kvit-boombox-front .kvit-event-hero__photo-wrap {
  display: block;
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}

body.kvit-boombox-front .kvit-event-hero__photo {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 42%;
  image-rendering: auto;
  filter: saturate(1.04) contrast(1.06);
}

body.kvit-boombox-front .kvit-event-hero__media {
  background:
    radial-gradient(circle at 18% 24%, rgba(207, 36, 73, 0.08), transparent 40%),
    radial-gradient(circle at 82% 18%, rgba(18, 24, 39, 0.07), transparent 38%),
    linear-gradient(135deg, rgba(7, 11, 24, 0.2) 0%, rgba(18, 24, 39, 0.12) 100%);
  animation: none;
  transform: none;
}

/* Hero without a photo: neutral branded backdrop instead of a dark wash */
body.kvit-boombox-front:not(.kvit-hero-has-photo) .kvit-event-hero__media {
  background:
    url("kvit-logo-main.277e829db521.png") center clamp(28px, 5vh, 70px) / clamp(300px, 40vw, 520px) auto no-repeat,
    radial-gradient(circle at 18% 24%, rgba(207, 36, 73, 0.16), transparent 36%),
    radial-gradient(circle at 82% 18%, rgba(18, 24, 39, 0.1), transparent 34%),
    linear-gradient(135deg, #ffffff 0%, #f7f9fd 44%, #edf2f8 100%);
}

body.kvit-boombox-front .kvit-event-hero__glow {
  opacity: 0.16;
}

body.kvit-boombox-front .kvit-event-hero {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-start;
  min-height: clamp(620px, 88svh, 860px);
  min-height: clamp(620px, 88dvh, 860px);
  padding: 0;
  perspective: none;
}

body.kvit-boombox-front .kvit-event-hero__content {
  flex: 1 1 auto;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-start;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: clamp(72px, 12vh, 120px) clamp(16px, 3vw, 28px) 10px;
  position: relative;
  z-index: 1;
}

body.kvit-boombox-front .kvit-event-info--hero-foot {
  position: relative;
  z-index: 1;
  flex: 0 0 auto;
  align-self: center;
  width: min(1180px, calc(100% - 32px));
  max-width: calc(100% - 24px);
  margin: 0 auto clamp(12px, 2.5vh, 26px);
  padding: 10px 14px !important;
  border-radius: 16px !important;
  gap: 10px !important;
  animation: bi2RiseIn 0.75s 0.06s ease both;
}

body.kvit-boombox-front .kvit-event-info--hero-foot .info-row {
  padding: 12px 14px;
}

body.kvit-boombox-front .page-header {
  width: 100%;
  max-width: min(300px, 88vw);
  padding: 10px 14px;
  border-radius: 14px;
  transform: none;
}

body.kvit-boombox-front .page-header:hover {
  transform: translateY(-2px);
}

body.kvit-boombox-front .page-header h1,
body.kvit-boombox-front .page-header .content-header {
  font-size: clamp(0.95rem, 2.4vw, 1.15rem);
  line-height: 1.22;
  letter-spacing: -0.02em;
}

body.kvit-boombox-front .page-header h1 small,
body.kvit-boombox-front .page-header .content-header small {
  margin-top: 4px;
  font-size: clamp(0.75rem, 1.8vw, 0.85rem);
}

body.kvit-boombox-front .kvit-event-hero__scroll {
  margin-top: 8px;
  min-height: 38px;
  padding: 0 14px;
  font-size: 0.7rem;
  letter-spacing: 0.06em;
}

body.kvit-boombox-front .kvit-event-layout {
  margin-top: clamp(6px, 1.5vh, 16px);
}

/* Checkout / order / payment: compact event title instead of full hero */
body.kvit-event-page.kvit-event-subpage > .container.main-box {
  padding-top: 14px;
}

body.kvit-event-page.kvit-event-subpage .page-header-links {
  position: static;
  transform: none;
  margin: 0 auto 10px;
  padding-inline: 16px;
}

body.kvit-event-page.kvit-event-subpage #content {
  overflow: visible;
}

.kvit-event-header-compact {
  width: min(1180px, calc(100% - 28px));
  margin: 0 auto 18px;
  padding: 12px 16px;
  border-radius: var(--kvit-radius, 12px);
  border: 1px solid var(--kvit-border, #e2e8f0);
  background: var(--kvit-surface, #fff);
  box-shadow: var(--kvit-shadow, 0 1px 3px rgba(15, 23, 42, 0.08));
}

body.kvit-event-page.kvit-event-subpage .kvit-event-header-compact {
  border-color: var(--bi2-line, rgba(207, 36, 73, 0.18));
  background: linear-gradient(135deg, rgba(255, 255, 255, 0.98), rgba(247, 249, 253, 0.9));
  color: var(--bi2-ink, #05204f);
}

.kvit-event-header-compact__title {
  margin: 0;
  font-size: 1.15rem;
  font-weight: 750;
  line-height: 1.3;
  max-width: min(100%, 560px);
}

.kvit-event-header-compact__title a {
  color: inherit;
  text-decoration: none;
}

body.kvit-event-page.kvit-event-subpage .kvit-event-header-compact__title a:hover,
body.kvit-event-page.kvit-event-subpage .kvit-event-header-compact__title a:focus {
  color: var(--kvit-accent);
}

/* Compact header layout: [poster] · title + (date / venue) · locale switcher.
   Shared by all kvit brands; colours are themed per brand below. */
.kvit-event-header-compact__row {
  display: flex;
  align-items: center;
  gap: 16px;
}
.kvit-event-header-compact__lead {
  display: flex;
  align-items: center;
  gap: 14px;
  flex: 1 1 auto;
  min-width: 0;
}
.kvit-event-header-compact__poster {
  flex: none;
  display: block;
  line-height: 0;
}
.kvit-event-header-compact__poster img {
  width: 52px;
  height: 66px;
  object-fit: cover;
  border-radius: 8px;
  display: block;
}
.kvit-event-header-compact__text {
  flex: 1 1 auto;
  min-width: 0;
}
.kvit-event-header-compact__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 2px 18px;
  margin-top: 4px;
  font-size: 0.86rem;
  line-height: 1.35;
}
.kvit-event-header-compact__metaitem {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
}
.kvit-event-header-compact__metaitem .fa {
  flex: none;
  opacity: 0.85;
}
.kvit-event-header-compact__metaitem > span:last-child {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 44ch;
}
/* Language switcher: short codes (УКР / ENG) in a neat aligned pill row */
.kvit-event-header-compact .loginbox {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: none;
}
.kvit-event-header-compact__locales ul {
  display: flex;
  align-items: center;
  gap: 4px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.kvit-event-header-compact__locales li {
  margin: 0;
}
.kvit-event-header-compact__locales a {
  display: inline-block;
  padding: 4px 9px;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-decoration: none;
}

body.kvit-event-page .kvit-event-layout {
  position: relative;
  z-index: 1;
  width: min(1280px, calc(100% - 32px));
  margin: clamp(-86px, -8vh, -44px) auto 0;
  padding: 0 0 56px;
}

body.kvit-event-page .kvit-event-layout::before {
  content: "";
  position: absolute;
  top: -92px;
  left: 50%;
  width: min(980px, 92vw);
  height: 220px;
  transform: translateX(-50%);
  pointer-events: none;
  background: radial-gradient(ellipse, rgba(207, 36, 73, 0.18), transparent 68%);
  filter: blur(18px);
  z-index: -1;
}

body.kvit-event-page .kvit-event-layout > .alert,
body.kvit-event-page .kvit-event-info,
body.kvit-event-page .kvit-event-booking-form,
body.kvit-event-page aside.front-page {
  border: 1px solid var(--bi2-line) !important;
  border-radius: 26px !important;
  background:
    linear-gradient(135deg, rgba(255, 255, 255, 0.34), rgba(255, 255, 255, 0.08)),
    var(--bi2-surface-strong) !important;
  color: var(--bi2-ink);
  box-shadow: 0 22px 70px rgba(18, 24, 39, 0.12);
  backdrop-filter: blur(16px) saturate(1.04);
}

body.kvit-event-page .kvit-event-layout > .alert,
body.kvit-event-page .kvit-event-info,
body.kvit-event-page aside.front-page {
  padding: clamp(20px, 3vw, 32px);
  margin-bottom: 24px;
}

body.kvit-event-page .kvit-event-info {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 18px;
  transform: translateZ(0);
  animation: bi2RiseIn 0.7s 0.08s ease both;
}

body.kvit-event-page .info-row {
  margin: 0;
  padding: 18px;
  border-radius: 18px;
  background: rgba(248, 250, 253, 0.9);
  border: 1px solid rgba(18, 24, 39, 0.08);
}

body.kvit-event-page .info-row p {
  color: var(--bi2-muted);
}

body.kvit-event-page .info-row a,
body.kvit-event-page aside.front-page a {
  color: var(--bi2-red);
  font-weight: 700;
  text-decoration-color: rgba(207, 36, 73, 0.38);
  text-underline-offset: 3px;
}

body.kvit-event-page .info-row-icon {
  color: var(--bi2-red);
}

body.kvit-event-page .kvit-event-booking-form {
  padding: clamp(16px, 3vw, 30px);
  animation: bi2RiseIn 0.7s 0.16s ease both;
}

body.kvit-event-page .kvit-event-seating-shell {
  margin: 0 0 30px;
}

body.kvit-event-page .pretix-seating-renderer {
  margin: 0;
}

body.kvit-event-page .pretix-seating-renderer .seating-stage {
  min-height: clamp(620px, 78vh, 980px);
  height: 78vh;
  max-height: 980px;
  border: 1px solid rgba(18, 24, 39, 0.08);
  border-radius: 28px;
  background: radial-gradient(circle at 50% 0%, rgba(207, 36, 73, 0.12), rgba(255, 255, 255, 0.98) 42%, #f5f7fb 100%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.94), 0 28px 70px rgba(18, 24, 39, 0.13);
  transform: translateZ(0);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

body.kvit-event-page .pretix-seating-renderer .seating-stage:hover {
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.94), 0 34px 88px rgba(18, 24, 39, 0.16), 0 0 40px rgba(207, 36, 73, 0.16);
  transform: translateY(-3px);
}

body.kvit-event-page .pretix-seating-renderer .seating-toolbar,
body.kvit-event-page .pretix-seating-renderer .seating-sidebar {
  background: rgba(255, 255, 255, 0.94);
  border-color: rgba(18, 24, 39, 0.08);
  color: var(--bi2-ink);
}

body.kvit-event-page .pretix-seating-renderer .seating-svg-wrapper {
  min-height: 560px;
  background:
    radial-gradient(circle at 50% 50%, rgba(255, 255, 255, 0.08), transparent 42%),
    #f8fafc;
}

body.kvit-event-page .pretix-seating-renderer .seating-sidebar {
  border-radius: 24px;
  margin-top: 18px;
  box-shadow: 0 18px 52px rgba(18, 24, 39, 0.12);
}

body.kvit-event-page .pretix-seating-renderer .seating-sidebar-title,
body.kvit-event-page .pretix-seating-renderer .seating-legend,
body.kvit-event-page .pretix-seating-renderer .seating-categories .legend-price,
body.kvit-event-page .pretix-seating-renderer .seating-selection-empty {
  color: var(--bi2-muted);
}

body.kvit-event-page .pretix-seating-renderer .seating-categories .legend-label,
body.kvit-event-page .pretix-seating-renderer .seating-selection-info,
body.kvit-event-page .pretix-seating-renderer .seating-selection-price {
  color: var(--bi2-ink);
}

body.kvit-event-page .item-category {
  margin-top: 26px;
}

body.kvit-event-page .item-category > .h3,
body.kvit-event-page aside.front-page > .h3 {
  color: var(--bi2-ink);
  font-weight: 850;
  letter-spacing: -0.03em;
}

body.kvit-event-page .product-row {
  color: var(--bi2-ink);
}

body.kvit-event-page .product-row::before,
body.kvit-event-page .product-row::after,
body.kvit-event-page article.item-with-variations:last-child::after {
  border-color: rgba(18, 24, 39, 0.08) !important;
}

body.kvit-event-page .product-row .price,
body.kvit-event-page .variation-description,
body.kvit-event-page .text-muted {
  color: var(--bi2-muted);
}

body.kvit-event-page .btn {
  border-radius: 999px !important;
}

body.kvit-event-page .btn-primary,
body.kvit-event-page .btn-default.btn-checkbox.active {
  background: linear-gradient(135deg, var(--bi2-red-bright), var(--bi2-red) 58%, #a81737) !important;
  border-color: rgba(255, 255, 255, 0.22) !important;
  color: #fff !important;
  box-shadow: 0 14px 34px rgba(168, 23, 55, 0.26);
}

body.kvit-event-page .btn-primary:hover,
body.kvit-event-page .btn-primary:focus {
  filter: brightness(1.08);
  transform: translateY(-2px);
  box-shadow: 0 20px 42px rgba(168, 23, 55, 0.34);
}

body.kvit-event-page .btn-default {
  background: rgba(255, 255, 255, 0.86);
  border-color: rgba(18, 24, 39, 0.12);
  color: var(--bi2-ink);
}

body.kvit-event-page .btn-default:hover,
body.kvit-event-page .btn-default:focus {
  background: rgba(255, 255, 255, 0.98);
  border-color: rgba(207, 36, 73, 0.28);
  color: var(--bi2-red);
}

body.kvit-event-page .kvit-event-cta {
  border: none !important;
  background: transparent !important;
  box-shadow: none;
  padding: 0;
}

body.kvit-event-page #btn-add-to-cart {
  min-height: 58px;
  font-size: 17px;
  font-weight: 850;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}

body.kvit-event-page .main-box footer {
  width: min(1180px, calc(100% - 32px));
  margin: 0 auto;
  padding: 0 0 34px;
  color: var(--bi2-muted);
}

body.kvit-event-page .main-box footer nav ul {
  margin-top: 0;
}

body.kvit-event-page .main-box footer nav ul li a {
  color: var(--bi2-red);
}

@keyframes bi2HeroDrift {
  from {
    transform: scale(1.03) translate3d(0, 0, 0);
  }
  to {
    transform: scale(1.08) translate3d(-1.5%, -1%, 0);
  }
}

@keyframes bi2RiseIn {
  from {
    opacity: 0;
    transform: translate3d(0, 26px, -40px) rotateX(4deg);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0) rotateX(0deg);
  }
}

@media (max-width: 767px) {
  body.kvit-event-page .kvit-event-hero {
    min-height: clamp(520px, 78svh, 700px);
    padding: 200px 14px 60px;
  }

  body.kvit-event-bi-2 .kvit-event-hero {
    padding-top: clamp(330px, 56vh, 430px);
  }

  body.kvit-event-page .kvit-event-hero__media {
    background-position: center 22px;
    background-size: min(82vw, 460px) auto, auto, auto, auto;
  }

  body.kvit-event-bi-2 .kvit-event-hero__media {
    background-position: center, center, center clamp(220px, 52vw, 300px), center top, center, center, center;
    background-size: auto, auto, min(64vw, 300px) auto, auto 260px, auto, auto, auto;
  }

  body.kvit-event-page .page-header {
    border-radius: 22px;
    transform: none;
  }

  body.kvit-event-page .page-header:hover {
    transform: translateY(-2px);
  }

  body.kvit-event-page .page-header h1,
  body.kvit-event-page .content-header {
    font-size: clamp(2.5rem, 12vw, 4.2rem);
  }

  body.kvit-event-page .kvit-event-layout {
    width: calc(100% - 18px);
    margin-top: -34px;
    padding-top: 0;
  }

  body.kvit-event-page .kvit-event-booking-form {
    padding: 12px;
    border-radius: 22px !important;
  }

  body.kvit-event-page .pretix-seating-renderer .seating-stage {
    min-height: 66vh;
    height: 66vh;
    border-radius: 20px;
  }

  body.kvit-event-page .pretix-seating-renderer .seating-svg-wrapper {
    min-height: 52vh;
  }

  body.kvit-event-page .pretix-seating-renderer .seating-sidebar {
    grid-template-columns: 1fr;
    padding: 16px;
    border-radius: 20px;
  }

  body.kvit-boombox-front .kvit-event-hero {
    min-height: clamp(520px, 80svh, 680px);
    min-height: clamp(520px, 80dvh, 680px);
  }

  body.kvit-boombox-front .kvit-event-hero__content {
    padding-top: 58px;
    padding-left: 14px;
    padding-right: 14px;
  }

  body.kvit-boombox-front .kvit-event-hero__photo {
    object-position: center 36%;
  }

  body.kvit-boombox-front .kvit-event-hero__media {
    background-position: 0 0, 0 0, 0 0;
    background-size: auto, auto, auto;
  }

  body.kvit-boombox-front .kvit-event-info--hero-foot {
    width: calc(100% - 20px);
    max-width: none;
    padding: 8px 10px !important;
    gap: 8px !important;
  }

  body.kvit-boombox-front .page-header h1,
  body.kvit-boombox-front .page-header .content-header {
    font-size: clamp(0.88rem, 3.4vw, 1.05rem);
    line-height: 1.22;
  }

  body.kvit-boombox-front .page-header h1 small,
  body.kvit-boombox-front .page-header .content-header small {
    font-size: clamp(0.7rem, 2.5vw, 0.8rem);
  }
}

@media (prefers-reduced-motion: reduce) {
  body.kvit-event-page *,
  body.kvit-event-page *::before,
  body.kvit-event-page *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }

  body.kvit-event-page .kvit-event-hero__media,
  body.kvit-event-page .page-header,
  body.kvit-event-page .pretix-seating-renderer .seating-stage {
    transform: none !important;
  }
}

/* --- Podiya Tickets: monochrome presale (organizer slug podiya-tickets, podiyatickets, or podiya_tickets) --- */
body.kvit-organizer-podiya-tickets,
body.kvit-organizer-podiyatickets,
body.kvit-organizer-podiya_tickets {
  --kvit-bg: #f4f4f5;
  --kvit-surface: #ffffff;
  --kvit-ink: #0a0a0a;
  --kvit-muted: #525252;
  --kvit-border: #d4d4d4;
  --kvit-accent: #000000;
  --kvit-accent-hover: #262626;
  --kvit-accent-soft: rgba(0, 0, 0, 0.08);
  --kvit-danger: #b91c1c;
  --kvit-focus: 0 0 0 3px rgba(0, 0, 0, 0.22);
  --kvit-shadow: 0 1px 2px rgba(0, 0, 0, 0.06), 0 8px 24px rgba(0, 0, 0, 0.08);
  --podiya-hero-ink: #0a0a0a;
  --podiya-hero-muted: #404040;
  --podiya-hero-line: rgba(0, 0, 0, 0.12);
  --podiya-hero-surface: rgba(255, 255, 255, 0.92);
  --podiya-hero-surface-strong: #ffffff;
  background: var(--kvit-bg) !important;
  color: var(--kvit-ink);
}

body.kvit-organizer-podiya-tickets .main-box footer nav ul li a,
body.kvit-organizer-podiyatickets .main-box footer nav ul li a,
body.kvit-organizer-podiya_tickets .main-box footer nav ul li a {
  color: var(--kvit-ink);
  font-weight: 600;
}

body.kvit-organizer-podiya-tickets .main-box footer nav ul li a:hover,
body.kvit-organizer-podiyatickets .main-box footer nav ul li a:hover,
body.kvit-organizer-podiya_tickets .main-box footer nav ul li a:hover {
  color: #000000;
}

body.kvit-organizer-podiya-tickets .main-box footer .powered-by,
body.kvit-organizer-podiyatickets .main-box footer .powered-by,
body.kvit-organizer-podiya_tickets .main-box footer .powered-by {
  border-top-color: var(--kvit-border);
  color: #94a3b8;
}

body.kvit-organizer-podiya-tickets .main-box footer .powered-by a,
body.kvit-organizer-podiyatickets .main-box footer .powered-by a,
body.kvit-organizer-podiya_tickets .main-box footer .powered-by a {
  color: #7c8ea0 !important;
  font-weight: 400 !important;
}

body.kvit-organizer-podiya-tickets .main-box footer .powered-by a:hover,
body.kvit-organizer-podiya-tickets .main-box footer .powered-by a:focus-visible,
body.kvit-organizer-podiyatickets .main-box footer .powered-by a:hover,
body.kvit-organizer-podiyatickets .main-box footer .powered-by a:focus-visible,
body.kvit-organizer-podiya_tickets .main-box footer .powered-by a:hover,
body.kvit-organizer-podiya_tickets .main-box footer .powered-by a:focus-visible {
  color: var(--kvit-accent) !important;
}

body.kvit-organizer-podiya-tickets .panel-default,
body.kvit-organizer-podiyatickets .panel-default,
body.kvit-organizer-podiya_tickets .panel-default {
  border-color: var(--kvit-border) !important;
  border-radius: 12px !important;
  box-shadow: var(--kvit-shadow);
  overflow: hidden;
}

body.kvit-organizer-podiya-tickets .panel-default > .panel-heading,
body.kvit-organizer-podiyatickets .panel-default > .panel-heading,
body.kvit-organizer-podiya_tickets .panel-default > .panel-heading {
  background: #fafafa !important;
  border-bottom: 1px solid var(--kvit-border) !important;
  color: var(--kvit-ink) !important;
}

body.kvit-organizer-podiya-tickets .panel-default .panel-title,
body.kvit-organizer-podiyatickets .panel-default .panel-title,
body.kvit-organizer-podiya_tickets .panel-default .panel-title {
  color: inherit !important;
}

body.kvit-organizer-podiya-tickets .event-list a,
body.kvit-organizer-podiyatickets .event-list a,
body.kvit-organizer-podiya_tickets .event-list a {
  color: var(--kvit-ink);
  font-weight: 600;
}

body.kvit-organizer-podiya-tickets .event-list a:hover,
body.kvit-organizer-podiyatickets .event-list a:hover,
body.kvit-organizer-podiya_tickets .event-list a:hover {
  color: #000000;
}

body.kvit-organizer-podiya-tickets .btn-primary,
body.kvit-organizer-podiyatickets .btn-primary,
body.kvit-organizer-podiya_tickets .btn-primary {
  background: #000000 !important;
  border-color: #000000 !important;
  color: #fff !important;
}

body.kvit-organizer-podiya-tickets .btn-primary:hover,
body.kvit-organizer-podiyatickets .btn-primary:hover,
body.kvit-organizer-podiya_tickets .btn-primary:hover,
body.kvit-organizer-podiya-tickets .btn-primary:focus,
body.kvit-organizer-podiyatickets .btn-primary:focus,
body.kvit-organizer-podiya_tickets .btn-primary:focus {
  background: #262626 !important;
  border-color: #262626 !important;
}

body.kvit-organizer-podiya-tickets .btn-default,
body.kvit-organizer-podiyatickets .btn-default,
body.kvit-organizer-podiya_tickets .btn-default {
  background: #fff !important;
  border-color: #000000 !important;
  color: #0a0a0a !important;
}

body.kvit-organizer-podiya-tickets .kvit-podiya-organizer-header,
body.kvit-organizer-podiyatickets .kvit-podiya-organizer-header,
body.kvit-organizer-podiya_tickets .kvit-podiya-organizer-header {
  position: relative;
  text-align: center;
  padding-bottom: 8px;
  border: none;
  background: transparent;
}

body.kvit-organizer-podiya-tickets .kvit-podiya-organizer-logo-link,
body.kvit-organizer-podiyatickets .kvit-podiya-organizer-logo-link,
body.kvit-organizer-podiya_tickets .kvit-podiya-organizer-logo-link {
  display: inline-block;
  line-height: 0;
}

body.kvit-organizer-podiya-tickets .kvit-podiya-organizer-logo,
body.kvit-organizer-podiyatickets .kvit-podiya-organizer-logo,
body.kvit-organizer-podiya_tickets .kvit-podiya-organizer-logo {
  width: min(280px, 72vw);
  height: auto;
  max-height: min(280px, 40vw);
  object-fit: contain;
}

body.kvit-organizer-podiya-tickets .kvit-podiya-organizer-header__login,
body.kvit-organizer-podiyatickets .kvit-podiya-organizer-header__login,
body.kvit-organizer-podiya_tickets .kvit-podiya-organizer-header__login {
  position: absolute;
  top: 0;
  right: 0;
  text-align: right;
}

body.kvit-organizer-podiya-tickets .page-header-links a,
body.kvit-organizer-podiyatickets .page-header-links a,
body.kvit-organizer-podiya_tickets .page-header-links a,
body.kvit-organizer-podiya-tickets .loginbox a,
body.kvit-organizer-podiyatickets .loginbox a,
body.kvit-organizer-podiya_tickets .loginbox a {
  color: var(--kvit-ink) !important;
}

/* Event shop under Podiya: replace colored Kvit hero with neutral + wordmark */
body.kvit-organizer-podiya-tickets.kvit-event-page,
body.kvit-organizer-podiyatickets.kvit-event-page,
body.kvit-organizer-podiya_tickets.kvit-event-page {
  --bi2-bg: #f4f4f5;
  --bi2-surface: rgba(255, 255, 255, 0.94);
  --bi2-surface-strong: #ffffff;
  --bi2-line: var(--podiya-hero-line);
  --bi2-ink: var(--podiya-hero-ink);
  --bi2-muted: var(--podiya-hero-muted);
  --bi2-red: #000000;
  --bi2-red-bright: #404040;
  --bi2-shadow: 0 20px 60px rgba(0, 0, 0, 0.12);
  background:
    radial-gradient(circle at 50% 0%, rgba(0, 0, 0, 0.06), transparent 42%),
    linear-gradient(180deg, #ffffff 0%, #f4f4f5 100%) !important;
  color: var(--podiya-hero-ink);
}

body.kvit-organizer-podiya-tickets.kvit-event-page::before,
body.kvit-organizer-podiyatickets.kvit-event-page::before,
body.kvit-organizer-podiya_tickets.kvit-event-page::before {
  background:
    linear-gradient(rgba(0, 0, 0, 0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0, 0, 0, 0.04) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.35), transparent 80%);
}

body.kvit-organizer-podiya-tickets.kvit-event-page .kvit-event-hero__media,
body.kvit-organizer-podiyatickets.kvit-event-page .kvit-event-hero__media,
body.kvit-organizer-podiya_tickets.kvit-event-page .kvit-event-hero__media {
  background:
    url("brands/podiya-tickets-logo.f5fabbda1fba.png") center clamp(28px, 5vh, 56px) / clamp(200px, 36vw, 360px) auto no-repeat,
    radial-gradient(circle at 50% 18%, rgba(0, 0, 0, 0.06), transparent 40%),
    linear-gradient(180deg, #ffffff 0%, #f4f4f5 100%);
  filter: none;
}

body.kvit-organizer-podiya-tickets.kvit-event-bi-2 .kvit-event-hero__media,
body.kvit-organizer-podiyatickets.kvit-event-bi-2 .kvit-event-hero__media,
body.kvit-organizer-podiya_tickets.kvit-event-bi-2 .kvit-event-hero__media {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0) 40%, rgba(250, 250, 250, 0.95) 88%, #f4f4f5 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 0) 20%, rgba(255, 255, 255, 0) 80%, rgba(255, 255, 255, 0.5) 100%),
    url("brands/podiya-tickets-logo.f5fabbda1fba.png") center clamp(220px, 34vw, 380px) / clamp(180px, 26vw, 300px) auto no-repeat,
    radial-gradient(circle at 50% 24%, rgba(0, 0, 0, 0.05), transparent 36%),
    linear-gradient(180deg, #ffffff 0%, #f4f4f5 100%);
}

body.kvit-organizer-podiya-tickets.kvit-event-page .kvit-event-hero__glow,
body.kvit-organizer-podiyatickets.kvit-event-page .kvit-event-hero__glow,
body.kvit-organizer-podiya_tickets.kvit-event-page .kvit-event-hero__glow {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0.5) 55%, rgba(244, 244, 245, 0.92) 100%),
    radial-gradient(circle at 30% 70%, rgba(0, 0, 0, 0.04), transparent 32%);
  filter: blur(6px);
  opacity: 0.9;
}

body.kvit-organizer-podiya-tickets.kvit-event-page .page-header,
body.kvit-organizer-podiyatickets.kvit-event-page .page-header,
body.kvit-organizer-podiya_tickets.kvit-event-page .page-header {
  border: 1px solid rgba(0, 0, 0, 0.12) !important;
  background: var(--podiya-hero-surface) !important;
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.9) !important;
  backdrop-filter: blur(12px);
}

body.kvit-organizer-podiya-tickets.kvit-event-page .page-header:hover,
body.kvit-organizer-podiyatickets.kvit-event-page .page-header:hover,
body.kvit-organizer-podiya_tickets.kvit-event-page .page-header:hover {
  border-color: rgba(0, 0, 0, 0.22) !important;
  box-shadow: 0 20px 56px rgba(0, 0, 0, 0.12) !important;
}

body.kvit-organizer-podiya-tickets.kvit-event-page .kvit-event-hero__scroll,
body.kvit-organizer-podiyatickets.kvit-event-page .kvit-event-hero__scroll,
body.kvit-organizer-podiya_tickets.kvit-event-page .kvit-event-hero__scroll {
  background: linear-gradient(180deg, #2a2a2a, #000000) !important;
  border: 1px solid rgba(0, 0, 0, 0.35) !important;
  color: #fff !important;
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.25);
}

body.kvit-organizer-podiya-tickets.kvit-event-page .kvit-event-hero__scroll:hover,
body.kvit-organizer-podiyatickets.kvit-event-page .kvit-event-hero__scroll:hover,
body.kvit-organizer-podiya_tickets.kvit-event-page .kvit-event-hero__scroll:hover {
  box-shadow: 0 16px 36px rgba(0, 0, 0, 0.3);
}

body.kvit-organizer-podiya-tickets.kvit-event-page .btn-primary,
body.kvit-organizer-podiyatickets.kvit-event-page .btn-primary,
body.kvit-organizer-podiya_tickets.kvit-event-page .btn-primary,
body.kvit-organizer-podiya-tickets.kvit-event-page .btn-default.btn-checkbox.active,
body.kvit-organizer-podiyatickets.kvit-event-page .btn-default.btn-checkbox.active,
body.kvit-organizer-podiya_tickets.kvit-event-page .btn-default.btn-checkbox.active {
  background: linear-gradient(180deg, #2a2a2a, #000000) !important;
  border-color: rgba(0, 0, 0, 0.45) !important;
  color: #fff !important;
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.22);
}

body.kvit-organizer-podiya-tickets.kvit-event-page .btn-primary:hover,
body.kvit-organizer-podiyatickets.kvit-event-page .btn-primary:hover,
body.kvit-organizer-podiya_tickets.kvit-event-page .btn-primary:hover {
  filter: brightness(1.05);
}

body.kvit-organizer-podiya-tickets.kvit-event-page .btn-default,
body.kvit-organizer-podiyatickets.kvit-event-page .btn-default,
body.kvit-organizer-podiya_tickets.kvit-event-page .btn-default {
  background: rgba(255, 255, 255, 0.9) !important;
  border-color: rgba(0, 0, 0, 0.2) !important;
  color: var(--podiya-hero-ink) !important;
}

body.kvit-organizer-podiya-tickets.kvit-event-page .kvit-event-layout > .alert,
body.kvit-organizer-podiyatickets.kvit-event-page .kvit-event-layout > .alert,
body.kvit-organizer-podiya_tickets.kvit-event-page .kvit-event-layout > .alert,
body.kvit-organizer-podiya-tickets.kvit-event-page .kvit-event-info,
body.kvit-organizer-podiyatickets.kvit-event-page .kvit-event-info,
body.kvit-organizer-podiya_tickets.kvit-event-page .kvit-event-info,
body.kvit-organizer-podiya-tickets.kvit-event-page .kvit-event-booking-form,
body.kvit-organizer-podiyatickets.kvit-event-page .kvit-event-booking-form,
body.kvit-organizer-podiya_tickets.kvit-event-page .kvit-event-booking-form,
body.kvit-organizer-podiya-tickets.kvit-event-page aside.front-page,
body.kvit-organizer-podiyatickets.kvit-event-page aside.front-page,
body.kvit-organizer-podiya_tickets.kvit-event-page aside.front-page {
  border: 1px solid var(--podiya-hero-line) !important;
  background: var(--podiya-hero-surface-strong) !important;
  color: var(--podiya-hero-ink);
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.08);
}

body.kvit-organizer-podiya-tickets.kvit-event-page .info-row,
body.kvit-organizer-podiyatickets.kvit-event-page .info-row,
body.kvit-organizer-podiya_tickets.kvit-event-page .info-row {
  background: #fafafa;
  border: 1px solid rgba(0, 0, 0, 0.08);
}

body.kvit-organizer-podiya-tickets.kvit-event-page .info-row a,
body.kvit-organizer-podiyatickets.kvit-event-page .info-row a,
body.kvit-organizer-podiya_tickets.kvit-event-page .info-row a,
body.kvit-organizer-podiya-tickets.kvit-event-page aside.front-page a,
body.kvit-organizer-podiyatickets.kvit-event-page aside.front-page a,
body.kvit-organizer-podiya_tickets.kvit-event-page aside.front-page a {
  color: #000000;
  font-weight: 700;
}

body.kvit-organizer-podiya-tickets.kvit-event-page .main-box footer nav ul li a,
body.kvit-organizer-podiyatickets.kvit-event-page .main-box footer nav ul li a,
body.kvit-organizer-podiya_tickets.kvit-event-page .main-box footer nav ul li a {
  color: #171717;
}

body.kvit-organizer-podiya-tickets.kvit-event-page .pretix-seating-renderer .seating-stage,
body.kvit-organizer-podiyatickets.kvit-event-page .pretix-seating-renderer .seating-stage,
body.kvit-organizer-podiya_tickets.kvit-event-page .pretix-seating-renderer .seating-stage {
  background: radial-gradient(circle at 50% 0%, rgba(0, 0, 0, 0.04), #ffffff 48%, #f4f4f5 100%) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9), 0 16px 48px rgba(0, 0, 0, 0.1) !important;
}

@media (max-width: 767px) {
  body.kvit-organizer-podiya-tickets .kvit-podiya-organizer-header__login,
  body.kvit-organizer-podiyatickets .kvit-podiya-organizer-header__login,
  body.kvit-organizer-podiya_tickets .kvit-podiya-organizer-header__login {
    position: static;
    text-align: center;
    margin-top: 12px;
  }
}

/* --- Kvit Tickets organizer (slug kvit-tickets): bloom header, 3D event cards --- */
body.kvit-organizer-kvit-tickets:not(.kvit-event-page) {
  background:
    radial-gradient(ellipse 120% 80% at 50% -20%, rgba(207, 36, 73, 0.09), transparent 55%),
    var(--kvit-bg) !important;
}

body.kvit-organizer-kvit-tickets:not(.kvit-event-page) .main-box .panel-default {
  border-color: var(--kvit-border) !important;
  border-radius: 16px !important;
  box-shadow: var(--kvit-shadow);
  overflow: hidden;
}

body.kvit-organizer-kvit-tickets:not(.kvit-event-page) .main-box .panel-default > .panel-heading {
  background: var(--kvit-surface) !important;
  border-bottom: 1px solid var(--kvit-border) !important;
}

body.kvit-organizer-kvit-tickets .kvit-tickets-organizer-header {
  position: relative;
  text-align: center;
  padding: 12px 0 20px;
  border: none;
  background: transparent;
}

body.kvit-organizer-kvit-tickets .kvit-tickets-header-hero {
  max-width: min(920px, 100%);
  margin: 0 auto;
}

body.kvit-organizer-kvit-tickets .kvit-tickets-header-hero__video-wrap {
  border-radius: 0;
  overflow: hidden;
  border: none;
  box-shadow: none;
  background: var(--kvit-bg);
}

body.kvit-organizer-kvit-tickets .kvit-tickets-header-hero__video-wrap--skip,
body.kvit-organizer-kvit-tickets .kvit-tickets-header-hero__video-wrap--done {
  display: none !important;
}

body.kvit-organizer-kvit-tickets .kvit-tickets-header-hero__video {
  display: block;
  width: 100%;
  max-height: min(42vh, 360px);
  margin: 0 auto;
  object-fit: contain;
  object-position: center top;
  background: transparent;
  pointer-events: none;
  outline: none;
  -webkit-tap-highlight-color: transparent;
}

body.kvit-organizer-kvit-tickets .kvit-tickets-header-hero__video::-webkit-media-controls {
  display: none !important;
}

body.kvit-organizer-kvit-tickets .kvit-tickets-header-hero__video::-webkit-media-controls-enclosure {
  display: none !important;
}

body.kvit-organizer-kvit-tickets .kvit-tickets-tagline-link {
  display: inline-block;
  margin-top: 12px;
  text-decoration: none !important;
  color: inherit;
}

body.kvit-organizer-kvit-tickets .kvit-tickets-tagline-link:hover .kvit-tickets-tagline,
body.kvit-organizer-kvit-tickets .kvit-tickets-tagline-link:focus-visible .kvit-tickets-tagline {
  color: var(--kvit-accent);
}

body.kvit-organizer-kvit-tickets .kvit-tickets-tagline {
  margin: 0;
  font-size: clamp(0.8rem, 2.2vw, 0.95rem);
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--kvit-muted);
  display: inline-flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: center;
  gap: 0.12em;
}

body.kvit-organizer-kvit-tickets .kvit-tickets-tagline__dash {
  color: var(--kvit-accent);
  font-weight: 700;
  letter-spacing: 0;
}

body.kvit-organizer-kvit-tickets .kvit-tickets-tagline__word {
  letter-spacing: 0.14em;
}

body.kvit-organizer-kvit-tickets .kvit-tickets-org-toolbar-wrap {
  max-width: min(920px, 100%);
  margin-left: auto;
  margin-right: auto;
}

body.kvit-organizer-kvit-tickets .kvit-org-toolbar {
  margin-top: 20px;
  padding: 16px 18px 18px;
  border-radius: 16px;
  border: 1px solid var(--kvit-border);
  background: var(--kvit-surface);
  box-shadow: 0 8px 28px rgba(18, 24, 39, 0.06);
}

body.kvit-organizer-kvit-tickets .kvit-org-toolbar__search {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: stretch;
  margin-bottom: 16px;
}

body.kvit-organizer-kvit-tickets .kvit-org-toolbar__search-input {
  flex: 1 1 200px;
  min-width: 0;
  border-radius: 10px !important;
}

body.kvit-organizer-kvit-tickets .kvit-org-toolbar__search-btn {
  flex: 0 0 auto;
  border-radius: 10px !important;
}

body.kvit-organizer-kvit-tickets .kvit-org-toolbar__group {
  margin-top: 12px;
}

body.kvit-organizer-kvit-tickets .kvit-org-toolbar__group:first-of-type {
  margin-top: 0;
}

body.kvit-organizer-kvit-tickets .kvit-org-toolbar__label {
  display: block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--kvit-muted);
  margin-bottom: 8px;
}

body.kvit-organizer-kvit-tickets .kvit-org-toolbar__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

body.kvit-organizer-kvit-tickets .kvit-org-chip {
  display: inline-flex;
  align-items: center;
  padding: 8px 14px;
  border-radius: 999px;
  font-size: 0.88rem;
  font-weight: 600;
  text-decoration: none !important;
  color: var(--kvit-ink) !important;
  background: #f0f3f9;
  border: 1px solid var(--kvit-border);
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

body.kvit-organizer-kvit-tickets .kvit-org-chip:hover,
body.kvit-organizer-kvit-tickets .kvit-org-chip:focus-visible {
  background: #fff;
  border-color: rgba(207, 36, 73, 0.35);
  color: var(--kvit-accent) !important;
  outline: none;
}

body.kvit-organizer-kvit-tickets .kvit-org-chip--active {
  background: var(--kvit-accent-soft);
  border-color: rgba(207, 36, 73, 0.45);
  color: var(--kvit-accent) !important;
}

body.kvit-organizer-kvit-tickets .kvit-tickets-organizer-header__login {
  position: absolute;
  top: 0;
  right: 0;
  text-align: right;
}

body.kvit-organizer-kvit-tickets .page-header-links a,
body.kvit-organizer-kvit-tickets .loginbox a {
  color: var(--kvit-ink) !important;
}

body.kvit-organizer-kvit-tickets .kvit-org-event-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 22px;
  perspective: 1100px;
  padding: 4px 2px 8px;
}

body.kvit-organizer-kvit-tickets .kvit-org-event-card {
  list-style: none;
  min-width: 0;
}

body.kvit-organizer-kvit-tickets .kvit-org-event-card__surface {
  display: block;
  height: 100%;
  text-decoration: none;
  color: inherit;
  border-radius: 18px;
  background: var(--kvit-surface);
  border: 1px solid var(--kvit-border);
  box-shadow: 0 10px 32px rgba(18, 24, 39, 0.08);
  overflow: hidden;
  outline: none;
  transition: box-shadow 0.35s ease, border-color 0.25s ease;
}

body.kvit-organizer-kvit-tickets .kvit-org-event-card__surface:hover,
body.kvit-organizer-kvit-tickets .kvit-org-event-card__surface:focus-visible {
  border-color: rgba(207, 36, 73, 0.35);
  box-shadow: 0 18px 48px rgba(18, 24, 39, 0.12), 0 0 0 3px var(--kvit-accent-soft);
}

body.kvit-organizer-kvit-tickets .kvit-org-event-card__tilt {
  transform-style: preserve-3d;
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
  will-change: transform;
}

body.kvit-organizer-kvit-tickets .kvit-org-event-card__surface:hover .kvit-org-event-card__tilt,
body.kvit-organizer-kvit-tickets .kvit-org-event-card__surface:focus-visible .kvit-org-event-card__tilt {
  transform: rotateX(5deg) rotateY(-5deg) translateZ(10px);
}

body.kvit-organizer-kvit-tickets .kvit-org-event-card__media {
  position: relative;
  aspect-ratio: 3 / 4;
  background: linear-gradient(145deg, #eef2f8 0%, #e2e8f4 100%);
  overflow: hidden;
}

body.kvit-organizer-kvit-tickets .kvit-org-event-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

body.kvit-organizer-kvit-tickets .kvit-org-event-card__placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  text-align: center;
  background:
    radial-gradient(circle at 30% 20%, rgba(207, 36, 73, 0.12), transparent 45%),
    linear-gradient(160deg, #f0f4fa 0%, #e5eaf4 100%);
}

body.kvit-organizer-kvit-tickets .kvit-org-event-card__placeholder-text {
  font-size: clamp(0.95rem, 2.6vw, 1.1rem);
  font-weight: 700;
  color: var(--kvit-ink);
  line-height: 1.35;
  display: -webkit-box;
  -webkit-line-clamp: 4;
  line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

body.kvit-organizer-kvit-tickets .kvit-org-event-card__body {
  padding: 14px 16px 16px;
}

body.kvit-organizer-kvit-tickets .kvit-org-event-card__title {
  margin: 0 0 8px;
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.3;
  color: var(--kvit-ink);
}

body.kvit-organizer-kvit-tickets .kvit-org-event-card__meta {
  font-size: 0.88rem;
  color: var(--kvit-muted);
  margin-bottom: 8px;
  min-height: 2.5em;
}

body.kvit-organizer-kvit-tickets .kvit-org-event-card__status {
  margin-bottom: 12px;
  color: var(--kvit-muted);
}

body.kvit-organizer-kvit-tickets .kvit-org-event-card__cta {
  pointer-events: none;
  margin-bottom: 0;
}

@media (max-width: 767px) {
  body.kvit-organizer-kvit-tickets .kvit-tickets-organizer-header__login {
    position: static;
    text-align: center;
    margin-top: 12px;
  }

  body.kvit-organizer-kvit-tickets .kvit-org-event-grid {
    grid-template-columns: 1fr;
  }

  body.kvit-organizer-kvit-tickets .kvit-org-event-card__surface:hover .kvit-org-event-card__tilt,
  body.kvit-organizer-kvit-tickets .kvit-org-event-card__surface:focus-visible .kvit-org-event-card__tilt {
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.kvit-organizer-kvit-tickets .kvit-tickets-header-hero__video-wrap {
    display: none !important;
  }

  body.kvit-organizer-kvit-tickets .kvit-org-event-card__tilt {
    transition: none !important;
    transform: none !important;
  }
}

/* Presale footer AGPL link: не показуємо в UI (без випадкових кліків). Елемент лишається в HTML, публічна сторінка з інструкціями — /agpl_source (pretix.get_source). */
.main-box footer nav ul li.kvit-agpl-source-foot,
.main-box footer .powered-by.kvit-agpl-source-foot,
body > .container footer .powered-by.kvit-agpl-source-foot {
  display: none !important;
}


/* === Kvit phone-prefix combobox =========================================
 * Replaces the bare native <select> for international dial codes with a
 * compact trigger button (flag + dial code) that opens a panel holding a
 * "Search country" box on top of the country list. The original <select>
 * stays in the DOM, visually hidden and non-focusable, so form submission
 * keeps working. Markup is built in static/pretixpresale/js/ui/main.js.
 * ======================================================================= */
.kvit-combobox {
  position: relative;
}

.kvit-combobox-native {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
  pointer-events: none !important;
}

/* Compact trigger: flag + dial code + caret. Looks like a form field. */
.kvit-combobox-toggle {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  min-height: 38px;
  padding: 6px 12px;
  background: #fff;
  border: 1px solid #ccc;
  border-radius: 4px;
  color: #1f2937;
  font: inherit;
  line-height: 1.4;
  text-align: left;
  white-space: nowrap;
  cursor: pointer;
}
.kvit-combobox-toggle-flag {
  font-size: 1.25em;
  line-height: 1;
}
.kvit-combobox-toggle-code {
  font-variant-numeric: tabular-nums;
}
.kvit-combobox-toggle.is-empty .kvit-combobox-toggle-code {
  color: #9ca3af;
}

.kvit-combobox-caret {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  color: #6b7280;
}
.kvit-combobox-caret::before {
  content: "";
  width: 0;
  height: 0;
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
  border-top: 5px solid currentColor;
  transition: transform 0.15s ease;
}
.kvit-combobox-toggle[aria-expanded="true"] .kvit-combobox-caret::before {
  transform: rotate(180deg);
}

/* Dropdown panel: search box + scrollable list. */
.kvit-combobox-panel {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  z-index: 1050;
  min-width: 290px;
  max-width: min(360px, 92vw);
  background: #fff;
  border: 1px solid #d1d5db;
  border-radius: 12px;
  box-shadow: 0 12px 34px rgba(15, 23, 42, 0.16);
  overflow: hidden;
  display: none;
}
.kvit-combobox-panel.is-open {
  display: block;
}

.kvit-combobox-search-wrap {
  padding: 8px;
  border-bottom: 1px solid #eceff3;
}
.kvit-combobox-search {
  width: 100%;
  height: 38px;
  padding: 6px 12px;
  background: #fff;
  border: 1px solid #d1d5db;
  border-radius: 8px;
  color: #1f2937;
  font: inherit;
  outline: none;
}
.kvit-combobox-search:focus {
  border-color: #9ca3af;
}

.kvit-combobox-list {
  list-style: none;
  margin: 0;
  padding: 6px;
  max-height: 264px;
  overflow-y: auto;
}

.kvit-combobox-list li {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 12px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 0.95rem;
  color: #1f2937;
  transition: background-color 0.1s ease;
}

/* Row columns: flag (fixed) · country name (grows, truncates) · +code (muted) */
.kvit-combobox-flag {
  flex: none;
  width: 1.45em;
  font-size: 1.15em;
  line-height: 1;
  text-align: center;
}
.kvit-combobox-name {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.kvit-combobox-code {
  flex: none;
  color: #6b7280;
  font-variant-numeric: tabular-nums;
  font-size: 0.92em;
}

.kvit-combobox-list li.is-active,
.kvit-combobox-list li:hover {
  background: #f3f4f6;
}

.kvit-combobox-list li.is-selected {
  background: rgba(207, 36, 73, 0.08);
  font-weight: 600;
}

/* Top-ranked hit while the user is searching (e.g. "380" -> Ukraine). */
.kvit-combobox-list li.is-best-match {
  background: #f3f4f6;
}

body.kvit-site-chaika .kvit-combobox-list li.is-best-match {
  box-shadow: inset 3px 0 0 0 var(--kvit-accent);
}

.kvit-combobox-empty {
  padding: 12px 14px;
  color: #9ca3af;
  font-style: italic;
  cursor: default !important;
}

.kvit-combobox-empty:hover {
  background: transparent !important;
}

/* =============================================================================
 * Chaika Tickets — chaikatickets.org
 * Light canvas: white / soft cool gray, Chaika blue accent (#106bff), Outfit.
 * Activated via body.kvit-site-chaika (host contains chaikatickets).
 * ============================================================================= */
body.kvit-site-chaika {
  --kvit-font: "Outfit", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
    "Helvetica Neue", Arial, sans-serif;
  --kvit-bg: #ffffff;
  --kvit-surface: #ffffff;
  --kvit-ink: #03051e;
  --kvit-muted: #656565;
  --kvit-border: #e3eaf3;
  --kvit-accent: #106bff;
  --kvit-accent-hover: #0053db;
  --kvit-accent-darker: #0942dd;
  --kvit-accent-pastel: #4076cf;
  --kvit-accent-soft: #eaf2ff;
  --kvit-accent-tint: #f1f6ff;
  --kvit-accent-lavender: #cfe1ff;
  --kvit-focus: 0 0 0 3px rgba(16, 107, 255, 0.28);
  --kvit-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 8px 24px rgba(15, 23, 42, 0.06);
  --kvit-shadow-accent: 0 4px 44px 0 rgba(9, 66, 221, 0.25);
  --kvit-radius-sm: 8px;
  --kvit-radius-md: 12px;
  --kvit-radius-lg: 16px;
  --kvit-radius-xl: 24px;
  --kvit-radius-pill: 999px;
  --chaika-canvas: #ffffff;
  --chaika-canvas-soft: #f7fbfd;
  --chaika-canvas-edge: #eef3fa;
  --chaika-accent-bright: #3d9eff;
  background:
    radial-gradient(ellipse 90% 60% at 50% -8%, rgba(16, 107, 255, 0.05), transparent 55%),
    linear-gradient(180deg, var(--chaika-canvas) 0%, var(--chaika-canvas) 72%, var(--chaika-canvas-soft) 100%) !important;
  color: var(--kvit-ink);
  font-family: var(--kvit-font);
}

body.kvit-site-chaika h1,
body.kvit-site-chaika h2,
body.kvit-site-chaika h3,
body.kvit-site-chaika h4,
body.kvit-site-chaika h5,
body.kvit-site-chaika h6,
body.kvit-site-chaika .h1,
body.kvit-site-chaika .h2,
body.kvit-site-chaika .h3,
body.kvit-site-chaika .h4,
body.kvit-site-chaika .h5,
body.kvit-site-chaika .h6 {
  font-family: var(--kvit-font);
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--kvit-ink);
}

body.kvit-site-chaika .btn {
  font-family: var(--kvit-font);
  font-weight: 600;
  letter-spacing: 0.01em;
}

body.kvit-site-chaika a {
  color: var(--kvit-accent);
}

body.kvit-site-chaika a:hover,
body.kvit-site-chaika a:focus {
  color: var(--kvit-accent-hover);
}

body.kvit-site-chaika .offline-banner {
  background: linear-gradient(90deg, #0a2468 0%, #106bff 50%, #0a2468 100%);
  color: #fff;
  box-shadow: 0 6px 24px rgba(16, 107, 255, 0.2);
}

body.kvit-site-chaika .main-box footer nav ul li a {
  color: var(--kvit-accent);
}

body.kvit-site-chaika .main-box footer nav ul li a:hover {
  color: var(--kvit-accent-hover);
}

body.kvit-site-chaika .main-box footer .powered-by {
  border-top-color: var(--kvit-border);
  color: #94a3b8;
}

body.kvit-site-chaika .main-box footer .powered-by a {
  color: #7c8ea0;
}

body.kvit-site-chaika .main-box footer .powered-by a:hover,
body.kvit-site-chaika .main-box footer .powered-by a:focus-visible {
  color: var(--kvit-accent);
}

body.kvit-site-chaika .panel {
  background: var(--kvit-surface);
  border-color: var(--kvit-border) !important;
  box-shadow: var(--kvit-shadow);
}

body.kvit-site-chaika .panel-heading {
  background: #f8fafc !important;
  color: var(--kvit-ink) !important;
  border-bottom-color: var(--kvit-border) !important;
}

body.kvit-site-chaika .panel-default > .panel-heading {
  color: var(--kvit-ink) !important;
}

body.kvit-site-chaika .panel-body,
body.kvit-site-chaika .well {
  background: #ffffff !important;
  color: var(--kvit-ink);
  border-color: var(--kvit-border) !important;
}

body.kvit-site-chaika .text-muted {
  color: var(--kvit-muted) !important;
}

body.kvit-site-chaika .form-control {
  background: #ffffff;
  border-color: #cbd5e1;
  color: var(--kvit-ink);
}

body.kvit-site-chaika .form-control:focus {
  border-color: var(--kvit-accent);
  box-shadow: 0 0 0 2px var(--kvit-accent-soft);
}

body.kvit-site-chaika .table > tbody > tr:hover > td {
  background: #f8fafc !important;
}

body.kvit-site-chaika .table > thead > tr > th {
  color: var(--kvit-muted);
  border-bottom-color: var(--kvit-border);
}

body.kvit-site-chaika .btn-default {
  background: #ffffff !important;
  border-color: var(--kvit-border) !important;
  color: var(--kvit-ink) !important;
  border-radius: var(--kvit-radius-pill) !important;
  font-weight: 600;
}

body.kvit-site-chaika .input-group .btn-default,
body.kvit-site-chaika .input-group-btn .btn-default {
  border-radius: 0 var(--kvit-radius-md) var(--kvit-radius-md) 0 !important;
}

body.kvit-site-chaika .btn-default:hover,
body.kvit-site-chaika .btn-default:focus {
  background: var(--kvit-accent-tint) !important;
  border-color: var(--kvit-accent) !important;
  color: var(--kvit-accent-hover) !important;
}

body.kvit-site-chaika .btn-primary {
  background: var(--kvit-accent) !important;
  border-color: var(--kvit-accent) !important;
  color: #ffffff !important;
  border-radius: var(--kvit-radius-pill) !important;
  font-weight: 700;
  box-shadow: var(--kvit-shadow-accent);
  transition: background-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
}

body.kvit-site-chaika .btn-primary:hover,
body.kvit-site-chaika .btn-primary:focus {
  background: var(--kvit-accent-hover) !important;
  border-color: var(--kvit-accent-hover) !important;
  box-shadow: 0 6px 48px 0 rgba(9, 66, 221, 0.32);
  transform: translateY(-1px);
}

body.kvit-site-chaika .btn-link {
  color: var(--kvit-accent) !important;
}

body.kvit-site-chaika .btn-link:hover,
body.kvit-site-chaika .btn-link:focus {
  color: var(--kvit-accent-hover) !important;
}

body.kvit-site-chaika .alert-warning {
  background: rgba(234, 179, 8, 0.12) !important;
  border-color: rgba(234, 179, 8, 0.35) !important;
  color: #854d0e !important;
}

body.kvit-site-chaika .alert-info {
  background: rgba(16, 107, 255, 0.08) !important;
  border-color: rgba(16, 107, 255, 0.25) !important;
  color: #1e3a5f !important;
}

body.kvit-site-chaika .alert-success {
  background: rgba(34, 197, 94, 0.1) !important;
  border-color: rgba(34, 197, 94, 0.28) !important;
  color: #14532d !important;
}

body.kvit-site-chaika .alert-danger {
  background: rgba(248, 113, 113, 0.1) !important;
  border-color: rgba(248, 113, 113, 0.3) !important;
  color: #991b1b !important;
}

/* --- Event shop (light) --- */
body.kvit-site-chaika.kvit-event-page {
  --bi2-bg: #f5f7fb;
  --bi2-surface: rgba(255, 255, 255, 0.96);
  --bi2-surface-strong: #ffffff;
  --bi2-line: rgba(16, 107, 255, 0.18);
  --bi2-ink: #121827;
  --bi2-muted: #5d667a;
  --bi2-red: #106bff;
  --bi2-red-bright: #3d9eff;
  --bi2-navy: #121827;
  --bi2-shadow: 0 22px 60px rgba(18, 24, 39, 0.1);
  background:
    radial-gradient(circle at 18% 12%, rgba(16, 107, 255, 0.08), transparent 40%),
    radial-gradient(circle at 88% 8%, rgba(18, 24, 39, 0.04), transparent 34%),
    linear-gradient(165deg, #ffffff 0%, var(--chaika-canvas-soft) 48%, var(--chaika-canvas-edge) 100%) !important;
  color: var(--bi2-ink);
}

body.kvit-site-chaika.kvit-event-page::before {
  background:
    linear-gradient(rgba(18, 24, 39, 0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(16, 107, 255, 0.04) 1px, transparent 1px);
  background-size: 72px 72px;
  mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.22), transparent 82%);
}

body.kvit-site-chaika.kvit-event-page .kvit-event-hero__media {
  background:
    radial-gradient(circle at 22% 22%, rgba(16, 107, 255, 0.1), transparent 44%),
    radial-gradient(circle at 78% 16%, rgba(18, 24, 39, 0.04), transparent 36%),
    linear-gradient(165deg, #ffffff 0%, #f6f8fc 52%, #eef2f8 100%) !important;
  animation: chaikaHeroDrift 16s ease-in-out infinite alternate;
}

body.kvit-site-chaika.kvit-event-bi-2 .kvit-event-hero__media {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0) 40%, rgba(245, 247, 251, 0.92) 86%, #eef2f8 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.75) 0%, transparent 18%, transparent 82%, rgba(255, 255, 255, 0.75) 100%),
    radial-gradient(circle at 24% 26%, rgba(16, 107, 255, 0.09), transparent 42%),
    radial-gradient(circle at 80% 18%, rgba(18, 24, 39, 0.04), transparent 34%),
    linear-gradient(165deg, #ffffff 0%, #f6f8fc 50%, #eef2f8 100%) !important;
}

body.kvit-site-chaika.kvit-event-page .kvit-event-hero__glow {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(249, 251, 254, 0.5) 58%, rgba(237, 242, 248, 0.88) 100%),
    radial-gradient(circle at 24% 72%, rgba(16, 107, 255, 0.08), transparent 34%);
  filter: blur(8px);
  opacity: 0.75;
}

body.kvit-site-chaika.kvit-event-page .page-header-links a,
body.kvit-site-chaika.kvit-event-page .page-header-links .btn-link {
  color: var(--bi2-ink);
  text-shadow: 0 1px 12px rgba(255, 255, 255, 0.85);
}

body.kvit-site-chaika.kvit-event-page .page-header-links a:hover,
body.kvit-site-chaika.kvit-event-page .page-header-links .btn-link:hover {
  color: var(--kvit-accent);
}

body.kvit-site-chaika.kvit-event-page .page-header {
  border: 1px solid var(--kvit-border) !important;
  border-radius: var(--kvit-radius-xl) !important;
  background: #ffffff !important;
  box-shadow: var(--kvit-shadow);
  backdrop-filter: none;
}

body.kvit-site-chaika.kvit-event-page .page-header:hover {
  border-color: var(--kvit-accent-lavender) !important;
  box-shadow: 0 12px 36px rgba(15, 23, 42, 0.08), 0 0 24px rgba(16, 107, 255, 0.08);
}

body.kvit-site-chaika.kvit-event-page .kvit-event-layout > .alert,
body.kvit-site-chaika.kvit-event-page .kvit-event-info,
body.kvit-site-chaika.kvit-event-page .kvit-event-booking-form,
body.kvit-site-chaika.kvit-event-page aside.front-page {
  border: 1px solid var(--kvit-border) !important;
  border-radius: var(--kvit-radius-xl) !important;
  background: #ffffff !important;
  color: var(--bi2-ink);
  box-shadow: var(--kvit-shadow);
}

body.kvit-site-chaika.kvit-event-page .info-row {
  background: var(--chaika-canvas-soft);
  border: 1px solid var(--kvit-border);
  border-radius: var(--kvit-radius-md);
}

body.kvit-site-chaika.kvit-event-page .info-row p {
  color: var(--bi2-muted);
}

body.kvit-site-chaika.kvit-event-page .kvit-event-hero__scroll {
  background: var(--kvit-accent) !important;
  border: 1px solid var(--kvit-accent) !important;
  color: #ffffff !important;
  box-shadow: var(--kvit-shadow-accent);
}

body.kvit-site-chaika.kvit-event-page .kvit-event-hero__scroll:hover,
body.kvit-site-chaika.kvit-event-page .kvit-event-hero__scroll:focus {
  background: var(--kvit-accent-hover) !important;
  border-color: var(--kvit-accent-hover) !important;
  box-shadow: 0 6px 48px 0 rgba(9, 66, 221, 0.32);
}

body.kvit-site-chaika.kvit-event-page .btn-primary,
body.kvit-site-chaika.kvit-event-page .btn-default.btn-checkbox.active {
  background: var(--kvit-accent) !important;
  border-color: var(--kvit-accent) !important;
  color: #ffffff !important;
  border-radius: var(--kvit-radius-pill) !important;
  font-weight: 700;
  box-shadow: var(--kvit-shadow-accent);
}

body.kvit-site-chaika.kvit-event-page .btn-primary:hover,
body.kvit-site-chaika.kvit-event-page .btn-primary:focus {
  background: var(--kvit-accent-hover) !important;
  border-color: var(--kvit-accent-hover) !important;
  box-shadow: 0 6px 48px 0 rgba(9, 66, 221, 0.32);
  transform: translateY(-1px);
}

body.kvit-site-chaika.kvit-event-page .pretix-seating-renderer .seating-stage {
  background: radial-gradient(circle at 50% 0%, rgba(16, 107, 255, 0.08), #ffffff 48%, #f5f7fb 100%) !important;
  border-color: rgba(18, 24, 39, 0.1);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.95), 0 18px 48px rgba(18, 24, 39, 0.08);
}

body.kvit-site-chaika.kvit-event-page .pretix-seating-renderer .seating-toolbar,
body.kvit-site-chaika.kvit-event-page .pretix-seating-renderer .seating-sidebar {
  background: rgba(255, 255, 255, 0.98);
  border-color: rgba(18, 24, 39, 0.1);
  color: var(--bi2-ink);
}

body.kvit-site-chaika.kvit-event-page .pretix-seating-renderer .seating-svg-wrapper {
  background:
    radial-gradient(circle at 50% 50%, rgba(16, 107, 255, 0.04), transparent 46%),
    #f8fafc;
}

body.kvit-site-chaika.kvit-event-page.kvit-event-subpage .kvit-event-header-compact {
  border-color: rgba(16, 107, 255, 0.18);
  background: linear-gradient(135deg, rgba(255, 255, 255, 0.98), rgba(247, 249, 253, 0.95));
  color: var(--bi2-ink);
}

@keyframes chaikaHeroDrift {
  from {
    transform: scale(1.02) translate3d(0, 0, 0);
  }
  to {
    transform: scale(1.05) translate3d(-1%, -0.6%, 0);
  }
}

@media (prefers-reduced-motion: reduce) {
  body.kvit-site-chaika.kvit-event-page .kvit-event-hero__media {
    animation: none !important;
  }
}

/* Organizer calendar / index on Chaika host — full light shell (chaika.org tone) */
body.kvit-site-chaika:not(.kvit-event-page),
body.kvit-site-chaika:not(.kvit-event-page) #content {
  background: #ffffff !important;
  color: #121827 !important;
}

body.kvit-site-chaika:not(.kvit-event-page) .container.main-box {
  background: transparent !important;
  max-width: 1120px;
}

body.kvit-site-chaika .kvit-chaika-org-index {
  max-width: 1040px;
  margin: 0 auto;
  padding: 0 2px 40px;
}

/* View switcher: pill group + iCal (chaika-style chips) */
body.kvit-site-chaika .kvit-chaika-view-switcher-wrap {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin-bottom: 28px !important;
}

body.kvit-site-chaika .kvit-chaika-view-switcher-wrap .btn-group {
  display: inline-flex;
  border-radius: 999px;
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08);
}

body.kvit-site-chaika .kvit-chaika-view-switcher-wrap .btn-group > .btn {
  border: 1px solid #e2e8f0 !important;
  background: #ffffff !important;
  color: #334155 !important;
  font-weight: 600;
  font-size: 0.7rem !important;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 11px 16px !important;
  margin: 0 !important;
}

body.kvit-site-chaika .kvit-chaika-view-switcher-wrap .btn-group > .btn + .btn {
  margin-left: -1px !important;
}

body.kvit-site-chaika .kvit-chaika-view-switcher-wrap .btn-group > .btn.active,
body.kvit-site-chaika .kvit-chaika-view-switcher-wrap .btn-group > .btn.active:focus {
  background: #106bff !important;
  color: #ffffff !important;
  border-color: #106bff !important;
  z-index: 2;
  box-shadow: none;
}

body.kvit-site-chaika .kvit-chaika-view-switcher-wrap .btn-group > .btn:first-child {
  border-radius: 999px 0 0 999px !important;
}

body.kvit-site-chaika .kvit-chaika-view-switcher-wrap .btn-group > .btn:last-child {
  border-radius: 0 999px 999px 0 !important;
}

body.kvit-site-chaika .kvit-chaika-view-switcher-wrap .btn-group > .btn:not(:first-child):not(:last-child) {
  border-radius: 0 !important;
}

body.kvit-site-chaika .kvit-chaika-view-switcher-wrap > a.btn {
  border-radius: 999px !important;
  border: 1px solid #e2e8f0 !important;
  background: #ffffff !important;
  color: #334155 !important;
  font-weight: 600;
  font-size: 0.7rem !important;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 11px 18px !important;
}

body.kvit-site-chaika .kvit-chaika-view-switcher-wrap > a.btn:hover,
body.kvit-site-chaika .kvit-chaika-view-switcher-wrap > a.btn:focus {
  border-color: #106bff !important;
  color: #106bff !important;
}

/* Events panel — card, not dark slab */
body.kvit-site-chaika .kvit-chaika-events-shell {
  border: 1px solid rgba(16, 107, 255, 0.14) !important;
  border-radius: 22px !important;
  box-shadow: 0 20px 56px rgba(15, 23, 42, 0.07) !important;
  overflow: hidden;
  background: #ffffff !important;
}

body.kvit-site-chaika .kvit-chaika-events-shell > .panel-heading {
  background: linear-gradient(180deg, #fbfcfe 0%, #ffffff 100%) !important;
  border-bottom: 1px solid #eef2f8 !important;
  padding: 22px 26px !important;
}

body.kvit-site-chaika .kvit-chaika-events-shell > .panel-heading .panel-title {
  font-family: var(--kvit-font);
  font-size: 1.4rem !important;
  font-weight: 800 !important;
  letter-spacing: -0.035em;
  color: #0f172a !important;
  margin: 0;
}

body.kvit-site-chaika .kvit-chaika-events-shell > .panel-body {
  background: #ffffff !important;
  color: #121827 !important;
  padding: 26px 28px !important;
  font-size: 1rem;
  line-height: 1.6;
}

body.kvit-site-chaika .kvit-chaika-events-shell > .panel-body p {
  color: #475569 !important;
}

body.kvit-site-chaika .kvit-chaika-events-shell > .panel-body p em {
  font-style: normal;
  font-weight: 500;
  color: #64748b;
}

body.kvit-site-chaika .kvit-chaika-events-shell > .panel-body a {
  font-weight: 700;
  color: #106bff !important;
}

body.kvit-site-chaika .kvit-chaika-events-shell .panel-subhead {
  background: #f8fafc !important;
  border-bottom: 1px solid #eef2f8 !important;
}

body.kvit-site-chaika .kvit-chaika-events-shell .event-list.full-width-list article.row {
  background: #ffffff !important;
  color: var(--kvit-ink) !important;
  border-color: var(--kvit-border) !important;
  transition: background-color 0.18s ease, box-shadow 0.18s ease;
}

body.kvit-site-chaika .kvit-chaika-events-shell .event-list.full-width-list article.row:nth-child(even) {
  background: var(--chaika-canvas-soft) !important;
}

body.kvit-site-chaika .kvit-chaika-events-shell .event-list.full-width-list article.row:hover {
  background: var(--kvit-accent-tint) !important;
  box-shadow: inset 3px 0 0 0 var(--kvit-accent);
}

body.kvit-site-chaika .kvit-chaika-events-shell .event-list a {
  color: var(--kvit-ink) !important;
  font-weight: 700;
}

body.kvit-site-chaika .kvit-chaika-events-shell .event-list a:hover {
  color: var(--kvit-accent) !important;
}

body.kvit-site-chaika .kvit-chaika-events-shell .event-list .btn-primary {
  border-radius: var(--kvit-radius-pill) !important;
}

body.kvit-site-chaika .kvit-chaika-events-shell > hr {
  border-color: #eef2f8;
  margin: 0;
}

body.kvit-site-chaika .kvit-chaika-events-shell .calendar-nav a.btn {
  border-radius: 12px !important;
}

/* ---------------------------------------------------------------
 * Chaika event-card strip — professional ticket-operator row:
 * poster on the left (180px / 3:4), title + date + venue in the
 * middle, big pill CTA on the right. Stacks on mobile.
 * Designed to mirror chaika.org's event listings.
 * --------------------------------------------------------------- */
body.kvit-site-chaika .kvit-chaika-event-grid {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 4px 0 8px;
}

body.kvit-site-chaika .kvit-chaika-event-card {
  list-style: none;
}

body.kvit-site-chaika .kvit-chaika-event-card__surface {
  display: grid;
  grid-template-columns: 180px 1fr auto;
  align-items: stretch;
  gap: 0;
  text-decoration: none;
  color: inherit;
  background: #ffffff;
  border: 1px solid var(--kvit-border);
  border-radius: var(--kvit-radius-lg);
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 6px 18px rgba(15, 23, 42, 0.05);
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

body.kvit-site-chaika .kvit-chaika-event-card__surface:hover,
body.kvit-site-chaika .kvit-chaika-event-card__surface:focus-visible {
  border-color: var(--kvit-accent-lavender);
  box-shadow: 0 12px 32px rgba(15, 23, 42, 0.1), 0 0 0 2px rgba(16, 107, 255, 0.08);
  transform: translateY(-2px);
  outline: none;
}

body.kvit-site-chaika .kvit-chaika-event-card__media {
  position: relative;
  width: 180px;
  background: linear-gradient(145deg, #eef3fa 0%, #dbe6f5 100%);
  overflow: hidden;
}

body.kvit-site-chaika .kvit-chaika-event-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

body.kvit-site-chaika .kvit-chaika-event-card__surface:hover .kvit-chaika-event-card__img {
  transform: scale(1.04);
}

body.kvit-site-chaika .kvit-chaika-event-card__placeholder {
  width: 100%;
  height: 100%;
  min-height: 220px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 18px;
  text-align: center;
  background:
    radial-gradient(circle at 30% 20%, rgba(16, 107, 255, 0.14), transparent 50%),
    linear-gradient(160deg, #eaf2ff 0%, #cfe1ff 100%);
}

body.kvit-site-chaika .kvit-chaika-event-card__placeholder-text {
  font-size: clamp(0.95rem, 2.4vw, 1.1rem);
  font-weight: 700;
  color: var(--kvit-ink);
  line-height: 1.3;
  display: -webkit-box;
  -webkit-line-clamp: 4;
  line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

body.kvit-site-chaika .kvit-chaika-event-card__body {
  padding: 18px 22px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
  min-width: 0;
}

body.kvit-site-chaika .kvit-chaika-event-card__title {
  margin: 0;
  font-family: var(--kvit-font);
  font-size: 1.35rem;
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -0.015em;
  color: var(--kvit-ink);
}

body.kvit-site-chaika .kvit-chaika-event-card__surface:hover .kvit-chaika-event-card__title {
  color: var(--kvit-accent-hover);
}

body.kvit-site-chaika .kvit-chaika-event-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 16px;
  font-size: 0.92rem;
  color: var(--kvit-muted);
  margin-top: 4px;
}

body.kvit-site-chaika .kvit-chaika-event-card__date {
  font-weight: 600;
  color: var(--kvit-ink);
}

body.kvit-site-chaika .kvit-chaika-event-card__meta .fa,
body.kvit-site-chaika .kvit-chaika-event-card__meta .icon {
  color: var(--kvit-accent);
  margin-right: 4px;
}

body.kvit-site-chaika .kvit-chaika-event-card__status {
  margin-top: 6px;
  font-size: 0.88rem;
  color: var(--kvit-muted);
}

body.kvit-site-chaika .kvit-chaika-event-card__cta-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 18px 22px;
  border-left: 1px solid var(--kvit-border);
  background: linear-gradient(180deg, #ffffff 0%, var(--chaika-canvas-soft) 100%);
}

body.kvit-site-chaika .kvit-chaika-event-card__cta {
  pointer-events: none;
  min-width: 140px;
  padding: 12px 24px !important;
  border-radius: var(--kvit-radius-pill) !important;
  font-weight: 700;
  white-space: nowrap;
}

/* Soft hover: the whole card is a link, so the inner "button" gets the
   chaika.org blue glow on hover/focus of the surrounding surface. */
body.kvit-site-chaika .kvit-chaika-event-card__surface:hover .kvit-chaika-event-card__cta,
body.kvit-site-chaika .kvit-chaika-event-card__surface:focus-visible .kvit-chaika-event-card__cta {
  background: var(--kvit-accent-hover) !important;
  box-shadow: 0 6px 48px 0 rgba(9, 66, 221, 0.32) !important;
}

/* Tighten the events shell padding so the strip uses the full width. */
body.kvit-site-chaika .kvit-chaika-events-shell > .panel-body:has(.kvit-chaika-event-grid) {
  padding: 18px 18px 8px !important;
  background: var(--chaika-canvas-soft) !important;
}

@media (max-width: 767px) {
  body.kvit-site-chaika .kvit-chaika-event-card__surface {
    grid-template-columns: 1fr;
  }

  body.kvit-site-chaika .kvit-chaika-event-card__media {
    width: 100%;
    aspect-ratio: 16 / 9;
  }

  body.kvit-site-chaika .kvit-chaika-event-card__placeholder {
    min-height: 0;
    aspect-ratio: 16 / 9;
  }

  body.kvit-site-chaika .kvit-chaika-event-card__body {
    padding: 16px 18px 4px;
  }

  body.kvit-site-chaika .kvit-chaika-event-card__title {
    font-size: 1.2rem;
  }

  body.kvit-site-chaika .kvit-chaika-event-card__cta-wrap {
    border-left: none;
    border-top: 1px solid var(--kvit-border);
    padding: 14px 18px 18px;
    background: #ffffff;
  }

  body.kvit-site-chaika .kvit-chaika-event-card__cta {
    width: 100%;
  }
}

@media (min-width: 768px) and (max-width: 991px) {
  body.kvit-site-chaika .kvit-chaika-event-card__surface {
    grid-template-columns: 140px 1fr auto;
  }

  body.kvit-site-chaika .kvit-chaika-event-card__media {
    width: 140px;
  }

  body.kvit-site-chaika .kvit-chaika-event-card__title {
    font-size: 1.2rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.kvit-site-chaika .kvit-chaika-event-card__surface,
  body.kvit-site-chaika .kvit-chaika-event-card__img {
    transition: none !important;
    transform: none !important;
  }
}

body.kvit-site-chaika:not(.kvit-event-page) .page-header h1,
body.kvit-site-chaika:not(.kvit-event-page) .page-header h1 a {
  color: var(--kvit-ink);
}

body.kvit-site-chaika:not(.kvit-event-page) .loginbox a,
body.kvit-site-chaika:not(.kvit-event-page) .locales a {
  color: var(--kvit-accent);
}

body.kvit-site-chaika:not(.kvit-event-page) .loginbox a:hover,
body.kvit-site-chaika:not(.kvit-event-page) .locales a:hover {
  color: var(--kvit-accent-hover);
}

/* Chaika organizer header — hero card, mark + wordmark (chaika.org) */
body.kvit-site-chaika .kvit-chaika-organizer-header {
  position: relative;
  margin: 0 0 28px;
  padding: 32px 20px 28px;
  border-radius: 22px;
  /* near-white surface (chaika.org); the earlier bluer 135deg gradient was
     toned down in a later pass — folded in here so there's one source of truth */
  background: linear-gradient(180deg, #ffffff 0%, var(--chaika-canvas-soft) 100%) !important;
  box-shadow: var(--kvit-shadow);
  border: 1px solid rgba(16, 107, 255, 0.14);
  border-color: var(--kvit-border) !important;
}

body.kvit-site-chaika .kvit-chaika-organizer-header__inner {
  position: relative;
  z-index: 1;
}

body.kvit-site-chaika .kvit-chaika-brand-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  text-decoration: none !important;
  color: inherit;
}

body.kvit-site-chaika .kvit-chaika-header-mark {
  width: 48px;
  height: 48px;
  border-radius: 14px;
  object-fit: cover;
  box-shadow: var(--kvit-shadow-accent);
  flex-shrink: 0;
}

body.kvit-site-chaika .kvit-chaika-header-wordmark {
  font-family: var(--kvit-font);
  font-size: clamp(1.85rem, 5.2vw, 2.5rem);
  font-weight: 800;
  letter-spacing: 0.1em;
  color: #0c1424;
  line-height: 1;
}

body.kvit-site-chaika .kvit-chaika-shop-tagline {
  margin: 14px 0 0;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

body.kvit-site-chaika .kvit-chaika-shop-tagline a {
  color: var(--kvit-accent);
  text-decoration: none;
}

body.kvit-site-chaika .kvit-chaika-shop-tagline a:hover,
body.kvit-site-chaika .kvit-chaika-shop-tagline a:focus-visible {
  color: var(--kvit-accent-hover);
  text-decoration: underline;
}

body.kvit-site-chaika .kvit-chaika-organizer-header__login {
  position: absolute;
  top: 12px;
  right: 14px;
  text-align: right;
}

@media (max-width: 767px) {
  body.kvit-site-chaika .kvit-chaika-organizer-header__login {
    position: static;
    text-align: center;
    margin-top: 16px;
  }

  body.kvit-site-chaika .kvit-chaika-view-switcher-wrap .btn-group {
    width: 100%;
    flex-direction: column;
    border-radius: 16px;
  }

  body.kvit-site-chaika .kvit-chaika-view-switcher-wrap .btn-group > .btn,
  body.kvit-site-chaika .kvit-chaika-view-switcher-wrap .btn-group > .btn:first-child,
  body.kvit-site-chaika .kvit-chaika-view-switcher-wrap .btn-group > .btn:last-child {
    border-radius: 0 !important;
  }
}

/* Boombox-style event front on Chaika host */
body.kvit-site-chaika.kvit-boombox-front:not(.kvit-hero-has-photo) .kvit-event-hero__media {
  background:
    radial-gradient(circle at 18% 24%, rgba(16, 107, 255, 0.09), transparent 40%),
    radial-gradient(circle at 82% 18%, rgba(18, 24, 39, 0.04), transparent 34%),
    linear-gradient(165deg, #ffffff 0%, #f6f8fc 50%, #eef2f8 100%) !important;
}

body.kvit-site-chaika.kvit-boombox-front .kvit-event-hero__media {
  animation: chaikaHeroDrift 16s ease-in-out infinite alternate;
}

@media (prefers-reduced-motion: reduce) {
  body.kvit-site-chaika.kvit-boombox-front .kvit-event-hero__media {
    animation: none !important;
  }
}

/* Calendar table on Chaika host — light surfaces, accent chips for events */
body.kvit-site-chaika .table-calendar {
  border-collapse: separate;
  border-spacing: 4px;
  background: transparent;
}

body.kvit-site-chaika .table-calendar > thead > tr > th {
  background: transparent;
  border: none !important;
  color: var(--kvit-muted) !important;
  font-weight: 600;
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  padding: 8px 10px !important;
}

body.kvit-site-chaika .table-calendar > tbody > tr > td.day {
  background: #ffffff !important;
  border: 1px solid var(--kvit-border) !important;
  border-radius: var(--kvit-radius-md) !important;
  vertical-align: top;
  padding: 8px !important;
  transition: border-color 0.18s ease, box-shadow 0.18s ease;
}

body.kvit-site-chaika .table-calendar > tbody > tr > td.day.no-events {
  background: var(--chaika-canvas-soft) !important;
  color: var(--kvit-muted);
}

body.kvit-site-chaika .table-calendar > tbody > tr > td.day.has-events {
  border-color: var(--kvit-accent-lavender) !important;
}

body.kvit-site-chaika .table-calendar > tbody > tr > td.day.has-events:hover {
  border-color: var(--kvit-accent) !important;
  box-shadow: 0 6px 18px rgba(16, 107, 255, 0.12);
}

body.kvit-site-chaika .table-calendar > tbody > tr > td.day .day-label,
body.kvit-site-chaika .table-calendar > tbody > tr > td.day > p > time {
  font-weight: 700;
  color: var(--kvit-ink);
}

body.kvit-site-chaika .table-calendar .events {
  list-style: none;
  margin: 4px 0 0;
  padding: 0;
}

body.kvit-site-chaika .table-calendar .events > li {
  margin-top: 4px;
}

body.kvit-site-chaika .table-calendar .events > li > a.event {
  display: block;
  padding: 6px 8px;
  border-radius: var(--kvit-radius-sm);
  background: var(--kvit-accent-tint);
  color: var(--kvit-accent-hover) !important;
  font-weight: 600;
  font-size: 0.82rem;
  text-decoration: none;
  transition: background-color 0.18s ease, color 0.18s ease;
}

body.kvit-site-chaika .table-calendar .events > li > a.event:hover,
body.kvit-site-chaika .table-calendar .events > li > a.event:focus {
  background: var(--kvit-accent);
  color: #ffffff !important;
}

body.kvit-site-chaika .table-calendar .events > li > a.event.soldout {
  background: #fdecec;
  color: #991b1b !important;
}

body.kvit-site-chaika .table-calendar .events > li > a.event.soldout:hover {
  background: #f87171;
  color: #ffffff !important;
}

body.kvit-site-chaika .table-calendar .events > li > a.event.over {
  background: #eef2f7;
  color: var(--kvit-muted) !important;
}

body.kvit-site-chaika .table-calendar .events > li > a.event.waitinglist {
  background: #fff4d6;
  color: #854d0e !important;
}

body.kvit-site-chaika .calendar-nav {
  align-items: center;
  margin: 0 0 18px;
}

body.kvit-site-chaika .calendar-nav .btn {
  border-radius: var(--kvit-radius-pill) !important;
  font-weight: 600;
}

/* Add breathing room on the organizer index */
body.kvit-site-chaika:not(.kvit-event-page) > .container.main-box {
  padding-top: 24px;
  padding-bottom: 32px;
}

@media (min-width: 768px) {
  body.kvit-site-chaika:not(.kvit-event-page) > .container.main-box {
    padding-top: 36px;
    padding-bottom: 48px;
  }
}

/* Subtle pagination polish */
body.kvit-site-chaika .pagination > li > a,
body.kvit-site-chaika .pagination > li > span {
  color: var(--kvit-accent);
  border-color: var(--kvit-border);
}

body.kvit-site-chaika .pagination > li > a:hover {
  background: var(--kvit-accent-tint);
  color: var(--kvit-accent-hover);
  border-color: var(--kvit-accent-lavender);
}

body.kvit-site-chaika .pagination > .active > a,
body.kvit-site-chaika .pagination > .active > span,
body.kvit-site-chaika .pagination > .active > a:hover {
  background: var(--kvit-accent) !important;
  border-color: var(--kvit-accent) !important;
  color: #ffffff !important;
}

/* =============================================================================
 * WEST LIVE — "Nocturnal Elite" premium dark theme
 * Host-driven: westliveticket.com (host contains "westlive"), with the
 * organizer slug (west-live / westlive / west_live) as a fallback so the theme
 * also applies on the kvittickets.com/<slug>/ path.
 * Activated via the body.kvit-site-westlive class base.html emits (mirrors the
 * body.kvit-site-chaika pattern). Brand = "Obsidian Black"; one accent = West
 * Live Red (#C8071A). Ported from the stitch_west_live_premium_showcase system.
 *
 * Tokens + generic-chrome overrides are scoped to body.kvit-site-westlive so no
 * other site/organizer is affected. The .kvit-wl-* component classes are only
 * ever emitted on West Live pages, so they are written unscoped and inherit the
 * tokens from <body>.
 * ============================================================================= */
body.kvit-site-westlive {
  color-scheme: dark;
  --wl-bg: #0a0a0b;
  --wl-surface-1: #121214;
  --wl-surface-2: #1a1a1d;
  --wl-surface-low: #0e0e0f;
  --wl-ink: #e5e2e3;
  --wl-muted: #a9a3a3;
  --wl-dim: #71717a;
  --wl-outline: #ad8884;
  --wl-primary: #ffb4ac;          /* salmon — text/accents on dark */
  --wl-red: #c8071a;              /* the red — fills/CTAs */
  --wl-red-bright: #e11d2e;
  --wl-red-deep: #8e0512;
  --wl-glass-border: rgba(255, 255, 255, 0.08);
  --wl-glass-fill: rgba(18, 18, 20, 0.72);
  --wl-glow: rgba(200, 7, 26, 0.32);
  --wl-glow-soft: rgba(200, 7, 26, 0.16);
  --wl-status-available: #00ff66;
  --wl-status-few: #ffb800;
  --wl-status-sold: #3e3e42;
  --wl-r: 4px;
  --wl-r-lg: 10px;
  --wl-r-xl: 14px;
  --wl-r-pill: 9999px;
  --wl-co-radius: 999px;          /* checkout: pill text inputs, toggle, buttons */
  --wl-co-radius-soft: 16px;      /* checkout: cards, panel, selects, textareas */
  --wl-font-display: "Unbounded", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --wl-font-body: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --wl-ease: cubic-bezier(0.16, 1, 0.3, 1);
  background:
    radial-gradient(ellipse 80% 50% at 50% -6%, rgba(200, 7, 26, 0.18), transparent 60%),
    var(--wl-bg) !important;
  color: var(--wl-ink);
  font-family: var(--wl-font-body);
}

/* Film-grain overlay (organic texture, prevents banding on dark gradients) */
body.kvit-site-westlive::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0.045;
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}

body.kvit-site-westlive #content,
body.kvit-site-westlive .container.main-box {
  background: transparent !important;
  color: var(--wl-ink);
}

body.kvit-site-westlive .container.main-box {
  max-width: none;
  width: 100%;
  padding-left: clamp(12px, 1.8vw, 36px);
  padding-right: clamp(12px, 1.8vw, 36px);
  position: relative;
  z-index: 1;
  /* drop pretix's top container spacing so the hero sits flush at the very top */
  margin-top: 0 !important;
  padding-top: 0 !important;
}

body.kvit-site-westlive h1,
body.kvit-site-westlive h2,
body.kvit-site-westlive h3,
body.kvit-site-westlive h4 {
  font-family: var(--wl-font-display);
  color: var(--wl-ink);
  letter-spacing: -0.02em;
}

body.kvit-site-westlive a {
  color: var(--wl-primary);
}
body.kvit-site-westlive a:hover,
body.kvit-site-westlive a:focus {
  color: #fff;
}

body.kvit-site-westlive .text-muted {
  color: var(--wl-muted) !important;
}

body.kvit-site-westlive :focus-visible {
  outline: 2px solid var(--wl-primary);
  outline-offset: 3px;
}

/* Primary CTA — solid West Live red with a soft neon glow */
body.kvit-site-westlive .btn-primary {
  background: var(--wl-red) !important;
  border-color: var(--wl-red) !important;
  color: #fff !important;
  font-family: var(--wl-font-display);
  font-weight: 600;
  border-radius: var(--wl-r) !important;
  box-shadow: 0 0 0 rgba(200, 7, 26, 0);
  transition: transform 0.25s var(--wl-ease), box-shadow 0.35s var(--wl-ease), background-color 0.25s var(--wl-ease);
}
body.kvit-site-westlive .btn-primary:hover,
body.kvit-site-westlive .btn-primary:focus {
  background: var(--wl-red-bright) !important;
  border-color: var(--wl-red-bright) !important;
  transform: translateY(-2px);
  box-shadow: 0 0 34px var(--wl-glow);
}

/* West Live — seated events show a simple CTA that links to the standalone
   seat-map page (presale:event.seatingplan) instead of an inline seat map.
   (The former LED dot-matrix wordmark teaser was removed.)
   Markup: pretixpresale/event/index.html (.kvit-wl-seat-teaser). */
body.kvit-site-westlive .kvit-wl-seat-teaser {
  display: flex;
  justify-content: center;
  margin: clamp(20px, 3vw, 36px) auto;
}
body.kvit-site-westlive .kvit-wl-seat-teaser__cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 260px;
  min-height: 58px;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}

/* West Live — standalone seat-map page (presale:event.seatingplan / seatingplan.html).
   That page renders <body class="full-screen-seating kvit-site-westlive kvit-event-page …">,
   so the generic body.kvit-event-page seat rules above (a LIGHT theme) would apply. These
   higher-specificity rules dark-theme the seat renderer and add the header + sticky CTA. */
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-head {
  position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 14px clamp(16px, 3vw, 40px);
  background: var(--wl-glass-fill);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--wl-glass-border);
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-back {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 16px;
  border-radius: var(--wl-r-pill);
  border: 1px solid var(--wl-glass-border);
  background: var(--wl-surface-1);
  /* !important beats the broader red event-page link rule
     (body.kvit-site-westlive.kvit-event-page a:not(.btn)…, higher specificity). */
  color: #fff !important;
  font-weight: 500;
  font-size: 14px;
  text-decoration: none;
  transition: color 0.25s var(--wl-ease), background 0.25s var(--wl-ease),
              border-color 0.25s var(--wl-ease);
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-back:hover,
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-back:focus-visible {
  color: #fff;
  background: var(--wl-red);
  border-color: var(--wl-red-bright);
}
/* Language switcher (УКР / ENG) in the seat-map header — mirrors the event-header pills.
   margin-left:auto right-aligns it; margin-right clears the widget close (X) button
   (40px @ right:16px) so the two never overlap. !important on colour beats the broad
   red event-page link rule (body...kvit-event-page a:not(.btn)…). */
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-locales {
  margin-left: auto;
  margin-right: 52px;
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-locales ul {
  display: flex;
  align-items: center;
  gap: 4px;
  margin: 0;
  padding: 0;
  list-style: none;
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-locales a {
  display: inline-block;
  padding: 5px 11px;
  border-radius: var(--wl-r-pill);
  border: 1px solid transparent;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-decoration: none;
  color: var(--wl-muted) !important;
  transition: color 0.2s var(--wl-ease), background 0.2s var(--wl-ease),
              border-color 0.2s var(--wl-ease);
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-locales a:hover,
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-locales a:focus-visible {
  color: #fff !important;
  background: var(--wl-surface-1);
  border-color: var(--wl-glass-border);
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-locales a.active {
  color: #fff !important;
  background: rgba(200, 7, 26, 0.22);
  border-color: rgba(200, 7, 26, 0.45);
}
/* The full-screen seat-map page should not show its page scrollbar: a ~1px layout
   overflow otherwise renders a light scrollbar strip beside the close button. We
   HIDE the scrollbar but must NOT set overflow:hidden -- on mobile / short viewports
   the page still needs to scroll to reach the sticky "Add to cart" CTA. The map
   canvas and categories sidebar use their own selectors (internal scroll intact). */
html:has(body.full-screen-seating),
body.full-screen-seating {
  scrollbar-width: none;            /* Firefox */
}
html:has(body.full-screen-seating)::-webkit-scrollbar,
body.full-screen-seating::-webkit-scrollbar {
  width: 0;
  height: 0;
  display: none;                    /* WebKit/Blink */
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-title {
  font-family: var(--wl-font-display);
  font-weight: 600;
  font-size: clamp(15px, 2.2vw, 20px);
  color: var(--wl-ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer {
  /* let the page flow under the new sticky header instead of forcing 100vh */
  height: auto;
  min-height: 0;
  padding: clamp(12px, 2vw, 28px);
}
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-stage {
  border: 1px solid var(--wl-glass-border);
  border-radius: var(--wl-r-xl);
  background: radial-gradient(circle at 50% 0%, var(--wl-glow-soft), var(--wl-surface-1) 45%, var(--wl-bg) 100%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04), 0 24px 60px rgba(0, 0, 0, 0.5);
}
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-stage:hover {
  transform: none;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04), 0 24px 60px rgba(0, 0, 0, 0.5), 0 0 40px var(--wl-glow);
}
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-toolbar,
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-sidebar {
  background: var(--wl-surface-2);
  border-color: var(--wl-glass-border);
  color: var(--wl-ink);
}
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-svg-wrapper {
  background:
    radial-gradient(circle at 50% 50%, rgba(255, 255, 255, 0.03), transparent 45%),
    var(--wl-surface-low);
}
/* Selected-seat marker. Base seating.js/​seating.css paint the "selected" ring
   and its legend swatch near-black (#0f172a) — fine on the light default theme,
   but invisible against West Live's dark map. Repaint them white so a chosen
   seat reads clearly. CSS `stroke` outranks the inline SVG presentation
   attribute seating.js sets on the circle. */
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seat[aria-pressed="true"] {
  stroke: #ffffff;
}
/* The "Selected" / "Unavailable" legend key is hidden on the West Live map
   (per request) — the coloured category list below is the real key. */
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-legend {
  display: none;
}
/* Seat-number labels carry an inline white halo (haloColorForFill in seating.js)
   on light-coloured seats, which reads as a white outline around every number on
   the dark map. Drop the halo — the number's own fill keeps enough contrast. */
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seat-number {
  stroke: none;
}
/* Plan text labels (stage / bar / section captions, e.g. the "FAN" zone caption).
   These previously carried a white paint-order HALO so dark default text would
   pop on the near-black map — but it read as a white outline around the text,
   which the brand doesn't want. Drop the halo entirely; the label keeps its own
   `fill` (the editor's "Text" tool sets a light colour for dark-map captions, and
   captions placed on light zones like the green FAN area stay legible on their
   own). Scoped to the West Live map only. */
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .plan-text-area {
  stroke: none;
}
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-sidebar {
  box-shadow: 0 18px 52px rgba(0, 0, 0, 0.5);
}
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-sidebar-title,
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-legend,
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-categories .legend-price,
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-selection-empty {
  color: var(--wl-muted);
}
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-categories .legend-label,
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-selection-info,
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-selection-price {
  color: var(--wl-ink);
}
/* Quantity stepper buttons on the dark map: match the glass border / red accent. */
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-selection-step {
  border-color: var(--wl-glass-border);
}
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-selection-step:hover {
  border-color: var(--wl-red-bright);
  color: var(--wl-red-bright);
}
body.full-screen-seating.kvit-site-westlive .pretix-seating-frame-cta {
  position: sticky;
  bottom: 0;
  z-index: 20;
  margin: 0;
  padding: 14px clamp(16px, 3vw, 40px);
  background: var(--wl-glass-fill);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
  border-top: 1px solid var(--wl-glass-border);
}

/* West Live: the "General admission" product list restored onto the seat page
   (non-seat items — FAN zone, Early bird, add-ons). When present, body carries
   .kvit-wl-seatframe-has-ga, which drops the full-screen two-column grid below so
   the page flows stacked (map → GA list → CTA). The base body.kvit-event-page
   product styles are light-themed, so dark-theme the list to match the page. */
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products {
  max-width: 760px;
  margin: clamp(8px, 2vw, 24px) auto clamp(28px, 5vw, 56px);
  padding: 0 clamp(16px, 3vw, 28px);
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products-title {
  font-family: var(--wl-font-display);
  font-weight: 600;
  font-size: clamp(16px, 2.4vw, 22px);
  color: var(--wl-ink);
  margin: 0 0 14px;
}
/* Hide the product category's own heading here: a category named e.g. "Квитки"
   is a plain (non-i18n) string that won't translate when the buyer switches
   language. The localised .kvit-wl-seatframe-products-title ("Tickets"→"Квитки")
   labels the list instead. */
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .item-category > .h3,
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .item-category > h3 {
  display: none;
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .product-row {
  /* Bootstrap floats the name/price/stepper columns, which collide in the narrow
     seat-page rail (price slides over the name/stepper). Lay the row out as a grid:
     the name spans the top, price (left) + stepper (right) share the row below. */
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  column-gap: 12px;
  row-gap: 8px;
  background: var(--wl-surface-1);
  border: 1px solid var(--wl-glass-border);
  border-radius: 14px;
  margin-bottom: 12px;
  padding: 14px 16px;
  color: var(--wl-ink);
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .product-row > [class*="col-"] {
  float: none;
  width: auto;
  max-width: none;
  min-height: 0;
  padding-left: 0;
  padding-right: 0;
}
/* name column spans the full width on top */
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .product-row > [class*="col-"]:not(.price):not(.availability-box) {
  grid-column: 1 / -1;
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .product-row > .price {
  grid-column: 1;
  justify-self: start;
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .product-row > .availability-box {
  grid-column: 2;
  justify-self: end;
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .product-row::before,
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .product-row::after {
  content: none;
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .product-row h4,
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .product-row .h4,
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .product-row h5,
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .product-row .h5 {
  color: var(--wl-ink);
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .product-row .price,
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .product-description,
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .product-description p,
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .product-description small {
  color: var(--wl-muted);
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .input-item-count {
  background: var(--wl-surface-low);
  border: 1px solid var(--wl-glass-border);
  color: var(--wl-ink);
}
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-products .input-group-addon {
  background: var(--wl-surface-2);
  border: 1px solid var(--wl-glass-border);
  color: var(--wl-muted);
}

/* Desktop two-column seat picker: the map sits on the LEFT (full height), the
   categories / selection / summary rail on the TOP-RIGHT, and the "Add to cart"
   button directly UNDER it (bottom-right) — matching the chaika reference. The
   base seating.css keeps one column on purpose, but that is for the narrow
   ~700px inline shop column; the full-screen seatingframe has the whole
   viewport. We grid the <form> and make .pretix-seating-renderer display:contents
   because the CTA is a DOM sibling of the renderer while the rail lives inside
   it — display:contents promotes the stage + sidebar into the form grid so all
   three (stage / rail / cta) share one grid. seating.js never measures the
   renderer box (only .seating-svg-wrapper), so collapsing it is safe. Below
   901px it falls back to the stacked layout + sticky CTA from the base CSS. */
@media (min-width: 901px) {
  body.full-screen-seating.kvit-site-westlive form:has(> .pretix-seating-renderer) {
    display: grid;
    grid-template-columns: 1fr clamp(300px, 26vw, 380px);
    grid-template-rows: 1fr auto;
    grid-template-areas:
      "stage rail"
      "stage cta";
    gap: clamp(16px, 1.8vw, 28px);
    height: calc(100vh - 66px);          /* below the sticky kvit-wl-seatframe-head */
    min-height: 540px;
    padding: clamp(12px, 2vw, 28px);     /* padding moves here from the renderer */
    margin: 0;
    align-items: stretch;
  }
  body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer {
    display: contents;                   /* stage + sidebar become form-grid items */
  }
  /* GA list present: add a third right-column row so the product list sits in the
     sidebar (under Summary, above the CTA) — "everything on the side", not stacked
     full-width below the map. */
  body.full-screen-seating.kvit-site-westlive.kvit-wl-seatframe-has-ga form:has(> .pretix-seating-renderer) {
    grid-template-rows: minmax(0, 1fr) auto auto;
    grid-template-areas:
      "stage rail"
      "stage products"
      "stage cta";
  }
  body.full-screen-seating.kvit-site-westlive.kvit-wl-seatframe-has-ga .kvit-wl-seatframe-products {
    grid-area: products;
    max-width: none;
    margin: 0;
    padding: 12px 0 0;
    overflow-y: auto;
    max-height: 42vh;
  }
  /* (Row layout — name over price + stepper — is now handled by the grid on
     .kvit-wl-seatframe-products .product-row above, at all widths.) */
  body.full-screen-seating.kvit-site-westlive .seating-stage {
    grid-area: stage;
    height: auto;
    max-height: none;
    min-height: 0;                       /* drop the base 75vh / 640px */
  }
  body.full-screen-seating.kvit-site-westlive .seating-svg-wrapper {
    min-height: 0;                       /* drop the base 560px floor */
  }
  body.full-screen-seating.kvit-site-westlive .seating-sidebar {
    grid-area: rail;
    grid-template-columns: 1fr;          /* the 3 sections stack vertically */
    row-gap: 0;
    align-content: start;
    overflow-y: auto;                    /* scroll inside the rail, not the page */
    min-height: 0;
  }
  /* Sections now stack: swap the vertical dividers for top borders. */
  body.full-screen-seating.kvit-site-westlive .seating-sidebar-col + .seating-sidebar-col::before {
    content: none;
  }
  body.full-screen-seating.kvit-site-westlive .seating-sidebar-col + .seating-sidebar-col {
    margin-top: 18px;
    padding-top: 18px;
    border-top: 1px solid var(--wl-glass-border);
  }
  /* CTA moves into the right column under "Summary" — no longer a sticky bar. */
  body.full-screen-seating.kvit-site-westlive .pretix-seating-frame-cta {
    grid-area: cta;
    position: static;
    margin: 0;
    padding: 0;
    background: none;
    border-top: 0;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
}

/* ── West Live seat-picker — shared + mobile polish ─────────────────────── */
/* The "Summary / Total" box ships from seating.css with a LIGHT background and
   dark text, and had no West Live override — so it read as a white pill on the
   dark theme at every width (desktop and mobile). Dark-theme it. */
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-total {
  background: var(--wl-surface-1);
  border-color: var(--wl-glass-border);
}
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-total-label {
  color: var(--wl-muted);
}
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-total-value {
  color: var(--wl-ink);
}
/* Bigger touch target for the "remove seat" × in the selection list. */
body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer .seating-selection-remove {
  min-width: 40px;
  min-height: 40px;
  padding: 0 10px;
}

/* Date/venue subtitle in the seat-page header: mobile/tablet only (shown in the
   <=900px block below). Kept off the unchanged desktop header. */
body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-sub {
  display: none;
}

/* ── West Live mobile + tablet (<=900px): two-column seat picker — the seat map
   on the LEFT and the available-tickets rail (ticket categories + your selection
   + total) on the RIGHT, both visible at once, no tabs. Desktop (>=901px) uses
   the form-grid above; here we grid the renderer itself so the sticky CTA stays
   a normal form child below it. The non-seat add-on ("extras") product list is
   hidden on mobile — tickets only. */
@media (max-width: 900px) {
  /* SEATED (.seating-has-seats — clickable seats present): chaika-style mobile —
     a horizontal colour-dot PRICE-PILL legend on top, and the seat map FULL
     WIDTH below (your selection + total stack under it). The map needs the whole
     width, so we deliberately do NOT use two columns. Plain-photo / GA events
     (no clickable seats) keep the product list (= the tickets) visible — see the
     :not(.seating-has-seats) rules below. */
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-pricepills {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    margin: 0;
    padding: 4px clamp(10px, 3vw, 16px) 12px;
  }
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-pricepills::-webkit-scrollbar {
    display: none;
  }
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-pricepill {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 7px 13px;
    border-radius: var(--wl-r-pill);
    background: var(--wl-surface-1);
    border: 1px solid var(--wl-glass-border);
    color: var(--wl-ink);
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
  }
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-pricepill-dot {
    width: 11px;
    height: 11px;
    border-radius: 50%;
    flex: 0 0 auto;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.08);
  }
  /* Seat map: full-width but NOT full-height, so the "Your selection" list +
     running total stay visible below it — the buyer can review and remove picks
     before adding to the cart (still pannable/zoomable). */
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-stage {
    height: clamp(260px, 42vh, 520px);
    min-height: 0;
    max-height: none;
  }
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-svg-wrapper {
    min-height: 0;
  }
  /* Categories sub-column is redundant (the pills are the legend) — hide it;
     keep Your selection + Summary stacked below the full-width map. */
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-sidebar {
    grid-template-columns: 1fr;
    row-gap: 0;
    /* subtle panel so "Your selection" reads as a clear summary, not loose text */
    background: var(--wl-surface-1);
    border: 1px solid var(--wl-glass-border);
    border-radius: var(--wl-r-xl);
    padding: 12px 14px;
    margin: 2px 0 6px;
  }
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-sidebar .seating-sidebar-col:first-child {
    display: none;
  }
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-sidebar-col + .seating-sidebar-col::before {
    content: none;
  }
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-sidebar-col + .seating-sidebar-col {
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px solid var(--wl-glass-border);
  }
  /* "Your selection": each chosen seat is a row with its price + a remove (×).
     Cap the height and scroll so a long list never pushes the total off-screen.
     (Panel surface for the sidebar is defined with its layout rule above.) */
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-selection {
    max-height: 24vh;
    overflow-y: auto;
  }
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-selection-item {
    padding: 8px 0;
  }
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-total {
    margin-top: 8px;
  }
  /* hide the add-on ("extras") product list ONLY for seated events — there the
     map sells the seats and this list is genuine extras. For plain-photo / GA
     events the product list IS the tickets, so it stays visible. (Renderer is a
     sibling before the products block in the form, so ~ works.) */
  body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer.seating-has-seats ~ .kvit-wl-seatframe-products {
    display: none;
  }

  /* NO-SEATS events (plain photo / GA, no .seating-has-seats): keep the product
     list (= the tickets) and shrink the decorative photo to a banner so the
     tickets are reachable without a long scroll. */
  body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer:not(.seating-has-seats) .seating-stage {
    height: clamp(180px, 32vh, 340px);
    min-height: 0;
    max-height: none;
  }
  body.full-screen-seating.kvit-site-westlive .pretix-seating-renderer:not(.seating-has-seats) .seating-svg-wrapper {
    min-height: 0;
  }

  /* general (both layouts): hide the long pan hint, show the date/venue subtitle */
  body.full-screen-seating.kvit-site-westlive .seating-toolbar .seating-hint {
    display: none;
  }
  body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-head {
    flex-wrap: wrap;
    gap: 4px 12px;
  }
  body.full-screen-seating.kvit-site-westlive .kvit-wl-seatframe-sub {
    display: block;
    flex: 0 0 100%;
    font-size: 12px;
    font-weight: 500;
    color: var(--wl-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
}

@media (max-width: 767px) {
  /* phone: tighter pills + sidebar */
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-pricepill {
    padding: 6px 11px;
    font-size: 12.5px;
  }
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-sidebar {
    padding: 10px;
  }
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-sidebar-title {
    font-size: 10px;
  }
  body.full-screen-seating.kvit-site-westlive .seating-has-seats .seating-categories li {
    font-size: 12.5px;
    gap: .4rem;
    padding: .4rem .05rem;
  }
}

/* Language switcher: bump the pill links to a real touch target on phones. */
@media (max-width: 767px) {
  body.kvit-site-westlive .kvit-wl-locales__lnk {
    padding: 10px 15px;
    font-size: 13px;
    min-height: 42px;
  }
}

body.kvit-site-westlive .btn-default {
  background: rgba(255, 255, 255, 0.02) !important;
  border-color: var(--wl-glass-border) !important;
  color: var(--wl-ink) !important;
}
body.kvit-site-westlive .btn-default:hover,
body.kvit-site-westlive .btn-default:focus {
  background: rgba(255, 255, 255, 0.07) !important;
  border-color: var(--wl-outline) !important;
  color: #fff !important;
}

/* Events panel — dark slab, not a white card */
body.kvit-site-westlive .panel {
  background: var(--wl-surface-1) !important;
  border: 1px solid var(--wl-glass-border) !important;
  border-radius: var(--wl-r-xl) !important;
  box-shadow: none;
}
body.kvit-site-westlive .panel-heading,
body.kvit-site-westlive .panel-default > .panel-heading {
  background: transparent !important;
  color: var(--wl-ink) !important;
  border-bottom: 1px solid var(--wl-glass-border) !important;
}
body.kvit-site-westlive .panel-title {
  font-family: var(--wl-font-display);
  letter-spacing: -0.01em;
}
body.kvit-site-westlive .panel-body,
body.kvit-site-westlive .well {
  background: transparent !important;
  color: var(--wl-ink);
  border-color: var(--wl-glass-border) !important;
}
body.kvit-site-westlive hr {
  border-top-color: var(--wl-glass-border);
}

/* Top page-header links (locale / login) */
body.kvit-site-westlive .page-header-links a,
body.kvit-site-westlive .page-header-links .btn-link {
  color: var(--wl-muted);
}
body.kvit-site-westlive .page-header-links a:hover,
body.kvit-site-westlive .page-header-links a.active {
  color: var(--wl-primary);
}

/* Footer */
body.kvit-site-westlive .main-box footer {
  border-top: 1px solid var(--wl-glass-border);
  margin-top: 40px;
  padding: 36px 0 8px;
  text-align: left;
}
body.kvit-site-westlive .main-box footer nav ul li a {
  color: var(--wl-muted);
}
body.kvit-site-westlive .main-box footer nav ul li a:hover {
  color: var(--wl-primary);
}
body.kvit-site-westlive .main-box footer .powered-by {
  border-top-color: var(--wl-glass-border);
  color: var(--wl-dim);
}
body.kvit-site-westlive .main-box footer .powered-by a {
  color: var(--wl-dim);
}
body.kvit-site-westlive .main-box footer .powered-by a:hover {
  color: var(--wl-primary);
}

/* Footer — West Live multi-column layout (chaika.org-style): payment badges,
   two link columns + a social-icon row + a copyright/legal bar.
   Markup: pretixpresale/_westlive_footer.html. All rules are scoped to
   body.kvit-site-westlive so they out-specify the generic .main-box footer rules
   (e.g. .main-box footer nav ul { justify-content:center } at the top of this file).
   The footer's own spacing/border live with the "Footer" rule above. */
body.kvit-site-westlive .kvit-wl-footer {
  max-width: 1120px;
  margin: 0 auto;
  width: 100%;
}
body.kvit-site-westlive .kvit-wl-footer__cols {
  display: grid;
  grid-template-columns:
    minmax(300px, 1.35fr)
    minmax(150px, 0.8fr)
    minmax(190px, 1fr)
    minmax(180px, 0.85fr);
  gap: 30px 42px;
  align-items: start;
}
body.kvit-site-westlive .kvit-wl-footer__head {
  margin: 0 0 16px;
  font-family: var(--wl-font-display);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--wl-dim);
}
/* Link columns */
body.kvit-site-westlive .kvit-wl-footer__col ul {
  display: flex;
  flex-direction: column;
  /* flex-start neutralises the leaked flat-footer `nav ul { justify-content:center }`
     (see note below); our (0,2,2) selector out-specifies that (0,1,3) rule */
  justify-content: flex-start;
  gap: 11px;
  margin: 0;
  padding: 0;
  list-style: none;
}
body.kvit-site-westlive .kvit-wl-footer__col ul li a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0;
  font-weight: 500;
  font-size: 14px;
  line-height: 1.3;
  color: var(--wl-muted);
  text-decoration: none;
  transition: color 0.25s var(--wl-ease), transform 0.25s var(--wl-ease);
}
body.kvit-site-westlive .kvit-wl-footer__col ul li a:hover,
body.kvit-site-westlive .kvit-wl-footer__col ul li a:focus-visible {
  color: var(--wl-primary);
  text-decoration: none;
  transform: translateX(3px);
}
/* These columns are <nav> inside the stock <footer>, so the flat-footer nav
   rules (pretixpresale/scss/main.scss:186-202) leak in: they centre the links
   and inject a "·" before every non-first <li>. That makes the stacked mobile
   list look ragged. Neutralise it for our designed multi-column footer:
   left-aligned, no middot separators. */
body.kvit-site-westlive .kvit-wl-footer__col {
  text-align: left;
}
body.kvit-site-westlive .kvit-wl-footer__col li:not(:first-child)::before {
  content: none;
}
body.kvit-site-westlive .kvit-wl-footer__mail-ic {
  width: 16px;
  height: 16px;
  flex: none;
  opacity: 0.85;
}
/* Social icons — 44px round chips (touch-target safe); neutral at rest, lift +
   brand-red fill + soft glow on hover/focus. One accent (red) keeps the row on
   brand instead of a rainbow of platform colors. */
body.kvit-site-westlive .kvit-wl-footer__social {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  max-width: 216px;
  margin-bottom: 26px;
}
/* .kvit-wl-soc is shared by configured links (<a>) and unconfigured fallbacks
   (<span class="kvit-wl-soc--off">); only the links get hover/press/focus states. */
body.kvit-site-westlive .kvit-wl-footer__social .kvit-wl-soc {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  max-width: 44px;
  aspect-ratio: 1;
  border-radius: var(--wl-r-pill);
  color: var(--wl-muted);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0)),
    var(--wl-surface-1);
  border: 1px solid var(--wl-glass-border);
  -webkit-tap-highlight-color: transparent;
  transition: color 0.25s var(--wl-ease), background 0.25s var(--wl-ease),
              border-color 0.25s var(--wl-ease), transform 0.25s var(--wl-ease),
              box-shadow 0.25s var(--wl-ease);
}
body.kvit-site-westlive .kvit-wl-footer__social a.kvit-wl-soc {
  cursor: pointer;
}
/* radial halo, revealed on hover */
body.kvit-site-westlive .kvit-wl-footer__social .kvit-wl-soc::after {
  content: "";
  position: absolute;
  inset: -45%;
  border-radius: inherit;
  background: radial-gradient(circle at center, var(--wl-glow) 0%, transparent 68%);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s var(--wl-ease);
}
body.kvit-site-westlive .kvit-wl-footer__social .kvit-wl-soc svg {
  position: relative;
  z-index: 1;
  width: 20px;
  height: 20px;
  display: block;
}
body.kvit-site-westlive .kvit-wl-footer__social a.kvit-wl-soc:hover,
body.kvit-site-westlive .kvit-wl-footer__social a.kvit-wl-soc:focus-visible {
  color: #fff;
  background: linear-gradient(160deg, var(--wl-red-bright), var(--wl-red-deep));
  border-color: var(--wl-red-bright);
  transform: translateY(-3px) scale(1.05);
  box-shadow: 0 10px 26px var(--wl-glow);
}
body.kvit-site-westlive .kvit-wl-footer__social a.kvit-wl-soc:hover::after,
body.kvit-site-westlive .kvit-wl-footer__social a.kvit-wl-soc:focus-visible::after {
  opacity: 1;
}
body.kvit-site-westlive .kvit-wl-footer__social a.kvit-wl-soc:focus-visible {
  outline: 2px solid var(--wl-primary);
  outline-offset: 3px;
}
body.kvit-site-westlive .kvit-wl-footer__social a.kvit-wl-soc:active {
  transform: translateY(-1px) scale(0.98);
}
@media (prefers-reduced-motion: reduce) {
  body.kvit-site-westlive .kvit-wl-footer__social .kvit-wl-soc,
  body.kvit-site-westlive .kvit-wl-footer__social a.kvit-wl-soc:hover,
  body.kvit-site-westlive .kvit-wl-footer__social a.kvit-wl-soc:focus-visible,
  body.kvit-site-westlive .kvit-wl-footer__social a.kvit-wl-soc:active {
    transform: none;
  }
}
/* Payment badges — one uniform chip system; each mark keeps its official brand
   colors so the row reads as a trust signal. Klarna keeps its signature pink
   chip; Revolut Pay is a single-ink monochrome wordmark. Chips are static. */
body.kvit-site-westlive .kvit-wl-footer__pay {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  max-width: 360px;
}
body.kvit-site-westlive .kvit-wl-pay {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 34px;
  min-width: 56px;
  padding: 0 12px;
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.42), inset 0 0 0 1px rgba(0, 0, 0, 0.07);
  font-family: Arial, Helvetica, "Helvetica Neue", sans-serif;
  line-height: 1;
  white-space: nowrap;
}
body.kvit-site-westlive .kvit-wl-pay svg {
  height: 21px;
  width: auto;
  display: block;
}
body.kvit-site-westlive .kvit-wl-pay--visa {
  font-style: italic;
  font-weight: 800;
  font-size: 16px;
  letter-spacing: 0.02em;
  color: #1434cb;
}
body.kvit-site-westlive .kvit-wl-pay--klarna {
  background: #ffb3c7;
  font-weight: 800;
  font-size: 14.5px;
  letter-spacing: -0.01em;
  color: #0b0b0c;
}
body.kvit-site-westlive .kvit-wl-pay--revolut {
  font-weight: 800;
  font-size: 14.5px;
  letter-spacing: -0.02em;
  color: #0b0b0c;
}
body.kvit-site-westlive .kvit-wl-pay__rv-pay {
  margin-left: 3px;
  font-weight: 700;
  color: inherit;
}
/* Wallet marks (Apple Pay, Google Pay): brand glyph + "Pay" wordmark on a white chip */
body.kvit-site-westlive .kvit-wl-pay--applepay,
body.kvit-site-westlive .kvit-wl-pay--gpay {
  gap: 3px;
  font-weight: 600;
  font-size: 15px;
  letter-spacing: -0.01em;
}
body.kvit-site-westlive .kvit-wl-pay .kvit-wl-pay__wallet-ic {
  height: 17px;
  width: auto;
  display: block;
}
/* The Apple glyph is geometrically centred but bottom-heavy (small leaf, large body),
   so against "Pay" it reads low. Nudge it up to optically centre it. */
body.kvit-site-westlive .kvit-wl-pay--applepay .kvit-wl-pay__wallet-ic {
  transform: translateY(-1.5px);
}
body.kvit-site-westlive .kvit-wl-pay__wallet-word {
  color: #000;
}
body.kvit-site-westlive .kvit-wl-pay__gpay-word {
  color: #5f6368;
}
/* Copyright / legal bar */
body.kvit-site-westlive .kvit-wl-footer__bar {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 8px 24px;
  margin-top: 30px;
  padding-top: 18px;
  border-top: 1px solid var(--wl-glass-border);
}
body.kvit-site-westlive .kvit-wl-footer__copy,
body.kvit-site-westlive .kvit-wl-footer__legal {
  margin: 0;
  font-size: 12px;
  color: var(--wl-dim);
}
body.kvit-site-westlive .kvit-wl-footer__legal a {
  color: var(--wl-dim);
  text-decoration: none;
  transition: color 0.25s var(--wl-ease);
}
body.kvit-site-westlive .kvit-wl-footer__legal a:hover,
body.kvit-site-westlive .kvit-wl-footer__legal a:focus-visible {
  color: var(--wl-primary);
}
@media (max-width: 980px) {
  body.kvit-site-westlive .kvit-wl-footer__cols {
    grid-template-columns: 1fr 1fr;
    gap: 28px 32px;
  }
  body.kvit-site-westlive .kvit-wl-footer__col--connect {
    justify-self: start;
  }
}
@media (max-width: 480px) {
  body.kvit-site-westlive .kvit-wl-footer__cols {
    grid-template-columns: 1fr;
  }
  body.kvit-site-westlive .kvit-wl-footer__bar {
    flex-direction: column;
    align-items: flex-start;
  }
}

/* Static info pages (Help Center, Privacy, Terms, Cookie, About, Contact) —
   long-form Markdown rendered into .kvit-wl-infopage. The page <h2> title is the
   template's; Markdown "##" sections also render as <h2> below it. */
body.kvit-site-westlive .kvit-wl-infopage {
  max-width: 760px;                 /* ~68ch at 16px — comfortable reading measure */
  margin: 0 auto;
  padding: clamp(10px, 2vw, 22px) 0 76px;
  color: #cfcacb;                   /* brighter than --wl-muted: ~12:1 on --wl-bg for long-form legibility */
  font-family: var(--wl-font-body);
  font-size: 16px;
  line-height: 1.72;
  text-wrap: pretty;
  -webkit-font-smoothing: antialiased;
}
/* Page title (the template's <h2>, always first) */
body.kvit-site-westlive .kvit-wl-infopage > h2:first-child {
  font-family: var(--wl-font-display);
  font-size: clamp(28px, 4.6vw, 42px);
  font-weight: 600;
  line-height: 1.08;
  letter-spacing: -0.02em;
  margin: 6px 0 16px;
  color: #fff;
  text-wrap: balance;
  border-top: 0;
  padding-top: 0;
}
body.kvit-site-westlive .kvit-wl-infopage > h2:first-child::after {
  content: "";
  display: block;
  width: 60px;
  height: 3px;
  margin-top: 18px;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--wl-red), var(--wl-red-bright));
}
/* Lead / meta line (first body paragraph: a "Last updated" note or an intro) */
body.kvit-site-westlive .kvit-wl-infopage > h2:first-child + p {
  font-size: 17px;
  line-height: 1.6;
  color: var(--wl-muted);
  margin: 0 0 30px;
}
body.kvit-site-westlive .kvit-wl-infopage > h2:first-child + p em {
  font-style: normal;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 4px 13px;
  font-size: 13px;
  letter-spacing: 0.01em;
  color: var(--wl-muted);
  background: var(--wl-surface-1);
  border: 1px solid var(--wl-glass-border);
  border-radius: var(--wl-r-pill);
}
body.kvit-site-westlive .kvit-wl-infopage > h2:first-child + p em::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--wl-red);
}
/* Section headings (Markdown "##" → h2), separated by a full-width hairline */
body.kvit-site-westlive .kvit-wl-infopage h2 {
  font-family: var(--wl-font-display);
  font-size: clamp(19px, 2.4vw, 23px);
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.01em;
  margin: 46px 0 14px;
  padding-top: 28px;
  border-top: 1px solid var(--wl-glass-border);
  color: #fff;
  text-wrap: balance;
}
body.kvit-site-westlive .kvit-wl-infopage h3 {
  font-family: var(--wl-font-display);
  font-size: 17px;
  font-weight: 600;
  margin: 30px 0 10px;
  color: var(--wl-ink);
}
body.kvit-site-westlive .kvit-wl-infopage p {
  margin: 0 0 16px;
  max-width: 68ch;
}
body.kvit-site-westlive .kvit-wl-infopage strong {
  color: #fff;
  font-weight: 600;
}
body.kvit-site-westlive .kvit-wl-infopage em {
  color: var(--wl-muted);
}
/* Bulleted lists with a small brand rhombus marker */
body.kvit-site-westlive .kvit-wl-infopage ul {
  list-style: none;
  margin: 0 0 18px;
  padding-left: 2px;
  max-width: 68ch;
}
body.kvit-site-westlive .kvit-wl-infopage ul li {
  position: relative;
  padding-left: 26px;
  margin: 11px 0;
}
body.kvit-site-westlive .kvit-wl-infopage ul li::before {
  content: "";
  position: absolute;
  left: 4px;
  top: 0.6em;
  width: 7px;
  height: 7px;
  border-radius: 2px;
  background: var(--wl-red);
  transform: rotate(45deg);
}
body.kvit-site-westlive .kvit-wl-infopage ol {
  margin: 0 0 18px;
  padding-left: 24px;
  max-width: 68ch;
}
body.kvit-site-westlive .kvit-wl-infopage ol li {
  margin: 11px 0;
  padding-left: 4px;
}
body.kvit-site-westlive .kvit-wl-infopage li strong {
  color: #fff;
}
body.kvit-site-westlive .kvit-wl-infopage a {
  color: var(--wl-primary);
  text-decoration: none;
  border-bottom: 1px solid rgba(255, 180, 172, 0.32);
  transition: color 0.2s var(--wl-ease), border-color 0.2s var(--wl-ease);
}
body.kvit-site-westlive .kvit-wl-infopage a:hover,
body.kvit-site-westlive .kvit-wl-infopage a:focus-visible {
  color: #fff;
  border-color: var(--wl-red-bright);
}
@media (max-width: 600px) {
  body.kvit-site-westlive .kvit-wl-infopage {
    font-size: 15.5px;
    padding-bottom: 56px;
  }
  body.kvit-site-westlive .kvit-wl-infopage h2 {
    margin-top: 38px;
    padding-top: 24px;
  }
}

/* Pagination */
body.kvit-site-westlive .pagination > li > a,
body.kvit-site-westlive .pagination > li > span {
  background: var(--wl-surface-1);
  color: var(--wl-ink);
  border-color: var(--wl-glass-border);
}
body.kvit-site-westlive .pagination > .active > a,
body.kvit-site-westlive .pagination > .active > span {
  background: var(--wl-red) !important;
  border-color: var(--wl-red) !important;
  color: #fff !important;
}

/* ----------------------------------------------------- Hero — lines + logo */
/* Minimal branding splash: vector red ripple lines + a large centred logo.
   No portal disc, no nav, no body text. Breaks out of the centred container. */
.kvit-west-live-organizer-header {
  box-sizing: border-box;
  position: relative;
  isolation: isolate;
  overflow: hidden;
  border: 0 !important;
  border-bottom: 0 !important;
  width: 100vw;
  margin-left: calc(50% - 50vw) !important;
  margin-right: calc(50% - 50vw);
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  padding: clamp(22px, 3.5vh, 46px) clamp(16px, 3vw, 48px) clamp(4px, 1.4vh, 16px) !important;
  min-height: clamp(300px, 41vh, 500px);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  background: #0a0a0b;
}
.kvit-wl-hero__bg { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
/* concentric red ripple rings (vector, crisp) */
.kvit-wl-rings {
  position: absolute;
  inset: 0;
  background: repeating-radial-gradient(circle at 50% 20%,
    rgba(200, 7, 26, 0.5) 0, rgba(200, 7, 26, 0.5) 1.4px,
    transparent 1.4px, transparent 42px);
  -webkit-mask: radial-gradient(circle at 50% 20%, transparent 0, transparent 14%, #000 27%, #000 52%, transparent 78%);
  mask: radial-gradient(circle at 50% 20%, transparent 0, transparent 14%, #000 27%, #000 52%, transparent 78%);
}
/* faint radial streaks */
.kvit-wl-rays {
  position: absolute;
  inset: 0;
  opacity: 0.55;
  background: repeating-conic-gradient(from 0deg at 50% 20%,
    transparent 0deg, transparent 5.6deg,
    rgba(255, 90, 70, 0.22) 5.6deg, rgba(255, 90, 70, 0.22) 6.3deg,
    transparent 6.3deg, transparent 12deg);
  -webkit-mask: radial-gradient(circle at 50% 20%, transparent 0, transparent 17%, #000 36%, #000 56%, transparent 80%);
  mask: radial-gradient(circle at 50% 20%, transparent 0, transparent 17%, #000 36%, #000 56%, transparent 80%);
}
/* subtle warm centre + edge vignette: lines fade into black, logo pops */
.kvit-wl-hero__vignette {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 20%, rgba(200, 7, 26, 0.14) 0%, transparent 25%),
    radial-gradient(circle at 50% 20%, transparent 44%, rgba(8, 8, 9, 0.55) 84%, rgba(8, 8, 9, 0.92) 100%);
}
.kvit-wl-hero__mask {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, var(--wl-bg) 1%, transparent 30%);
}
/* centred group: large logo + CTA */
.kvit-wl-hero__center {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: clamp(16px, 2.4vw, 28px);
  text-align: center;
}
.kvit-wl-hero__logo-wrap {
  margin: 0;
  padding: 0 16px;
  line-height: 0;
}
.kvit-wl-hero__logo-wrap a { display: inline-block; line-height: 0; }
.kvit-wl-hero__logo {
  width: clamp(220px, 38vw, 440px);
  height: auto;
  display: block;
  filter: drop-shadow(0 8px 54px rgba(0, 0, 0, 0.6));
}
/* language switcher — top-right of the splash */
.kvit-wl-locales {
  position: absolute;
  top: clamp(16px, 3vw, 30px);
  right: clamp(16px, 4vw, 44px);
  z-index: 4;
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  border: 1px solid var(--wl-glass-border);
  border-radius: var(--wl-r-pill);
  background: rgba(10, 10, 11, 0.5);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
}
.kvit-wl-locales__lnk {
  display: inline-flex;
  align-items: center;
  padding: 5px 13px;
  border-radius: var(--wl-r-pill);
  font-family: var(--wl-font-body);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: var(--wl-muted) !important;
  text-decoration: none !important;
  transition: color 0.18s var(--wl-ease), background-color 0.18s var(--wl-ease);
}
.kvit-wl-locales__lnk:hover { color: #fff !important; }
.kvit-wl-locales__lnk.is-active {
  color: #fff !important;
  background: var(--wl-red);
}
/* 3D CTA — extruded key that lifts and tilts in 3D on hover */
.kvit-wl-cta {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 0.7rem 1.75rem;
  font-family: var(--wl-font-display);
  font-weight: 600;
  font-size: 0.92rem;
  letter-spacing: 0.02em;
  color: #fff !important;
  background: var(--wl-red);
  border: 0;
  border-radius: 10px;
  cursor: pointer;
  text-decoration: none !important;
  transform: perspective(640px) translateY(0) rotateX(0deg);
  transform-style: preserve-3d;
  box-shadow: 0 6px 0 var(--wl-red-deep), 0 13px 28px rgba(200, 7, 26, 0.3);
  transition: transform 0.22s var(--wl-ease), box-shadow 0.22s var(--wl-ease), background-color 0.22s var(--wl-ease);
  will-change: transform;
}
.kvit-wl-cta:hover {
  background: var(--wl-red-bright);
  transform: perspective(640px) translateY(-4px) rotateX(15deg);
  box-shadow: 0 11px 0 var(--wl-red-deep), 0 24px 46px rgba(200, 7, 26, 0.48);
}
.kvit-wl-cta:active {
  transform: perspective(640px) translateY(2px) rotateX(6deg);
  box-shadow: 0 3px 0 var(--wl-red-deep), 0 10px 20px rgba(200, 7, 26, 0.4);
}
.kvit-wl-cta:focus-visible { outline: 2px solid #fff; outline-offset: 4px; }
/* clean splash: hide pretix's utility locale/login bar (we render our own) */
body.kvit-site-westlive .page-header-links { display: none; }

/* ------------------------------------------------ Hero — featured tours carousel */
/* Replaces the static CTA on the organizer index with an auto-rotating featured
   tours slider that sits directly in the radial hero instead of inside a card. */
.kvit-wl-hero__center:has(.kvit-wl-tours) { gap: clamp(14px, 2.2vh, 26px); width: 100%; }
.kvit-wl-hero__center:has(.kvit-wl-tours) .kvit-wl-hero__logo { width: clamp(170px, 28vw, 340px); }

.kvit-wl-tours {
  position: relative;
  width: min(100%, 1160px);
  margin: 0 auto;
}
.kvit-wl-tours__viewport {
  position: relative;
  overflow: hidden;
  border-radius: 0;
  border: 0;
  background: transparent;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  box-shadow: none;
}
.kvit-wl-tours__track {
  display: flex;
  will-change: transform;
  transition: transform 0.62s var(--wl-ease);
}
/* scoped under the header to outrank pretix's `.pager-header-with-logo a { display: inline-block }` */
.kvit-west-live-organizer-header .kvit-wl-tour-slide {
  position: relative;
  flex: 0 0 100%;
  display: grid;
  grid-template-columns: minmax(260px, 0.78fr) minmax(360px, 1.22fr);
  align-items: stretch;
  min-height: clamp(276px, 34vh, 390px);
  color: var(--wl-ink);
  text-decoration: none !important;
  isolation: isolate;
}
.kvit-west-live-organizer-header .kvit-wl-tour-slide::before,
.kvit-west-live-organizer-header .kvit-wl-tour-slide::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.kvit-west-live-organizer-header .kvit-wl-tour-slide::before {
  z-index: 0;
  background:
    radial-gradient(80% 72% at 76% 30%, rgba(200, 7, 26, 0.28), transparent 60%),
    radial-gradient(70% 85% at 42% 52%, rgba(255, 255, 255, 0.035), transparent 68%),
    linear-gradient(90deg, rgba(10, 10, 11, 0.98) 0%, rgba(10, 10, 11, 0.82) 36%, rgba(10, 10, 11, 0.38) 58%, rgba(10, 10, 11, 0) 100%);
}
.kvit-west-live-organizer-header .kvit-wl-tour-slide::after {
  z-index: 1;
  background:
    linear-gradient(to bottom, transparent 78%, rgba(10, 10, 11, 0.58) 100%),
    linear-gradient(to right, rgba(10, 10, 11, 0.48), transparent 24%, transparent 78%, rgba(10, 10, 11, 0.38));
}
.kvit-wl-tour-slide:focus-visible { outline: 2px solid #fff; outline-offset: -2px; }
/* left — eyebrow, title, CTA */
.kvit-wl-tour-slide__content {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: clamp(11px, 1.5vh, 17px);
  padding: clamp(22px, 3vw, 44px) clamp(22px, 4vw, 58px);
  padding-bottom: clamp(48px, 6vh, 62px);
  text-align: left;
}
.kvit-wl-tour-slide__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--wl-font-display);
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--wl-primary);
}
.kvit-wl-tour-slide__eyebrow::before {
  content: "";
  width: 24px;
  height: 2px;
  border-radius: 2px;
  background: var(--wl-red);
}
.kvit-wl-tour-slide__title {
  font-family: var(--wl-font-display);
  font-weight: 700;
  font-size: clamp(1.5rem, 1rem + 1.9vw, 2.5rem);
  line-height: 1.05;
  letter-spacing: 0;
  color: #fff;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.kvit-wl-tour-slide__cta {
  margin-top: 3px;
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 0.6rem 1.3rem;
  font-family: var(--wl-font-display);
  font-weight: 600;
  font-size: 0.88rem;
  color: #fff;
  background: var(--wl-red);
  border-radius: var(--wl-r-pill);
  box-shadow: 0 10px 26px -10px rgba(200, 7, 26, 0.7);
  transition: background-color 0.22s var(--wl-ease), box-shadow 0.22s var(--wl-ease);
}
.kvit-wl-tour-slide__arrow { transition: transform 0.22s var(--wl-ease); }
.kvit-wl-tour-slide:hover .kvit-wl-tour-slide__cta,
.kvit-wl-tour-slide:focus-visible .kvit-wl-tour-slide__cta {
  background: var(--wl-red-bright);
  box-shadow: 0 14px 32px -10px rgba(200, 7, 26, 0.85);
}
.kvit-wl-tour-slide:hover .kvit-wl-tour-slide__arrow { transform: translateX(4px); }
/* right — poster, blended into the hero instead of clipped inside a card */
.kvit-wl-tour-slide__media {
  position: relative;
  z-index: 1;
  overflow: hidden;
  margin-left: clamp(-80px, -6vw, -34px);
}
.kvit-wl-tour-slide__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  opacity: 0.96;
  -webkit-mask-image:
    linear-gradient(to right, transparent 0%, #000 20%, #000 92%, transparent 100%),
    linear-gradient(to bottom, #000 0%, #000 82%, transparent 100%);
  mask-image:
    linear-gradient(to right, transparent 0%, #000 20%, #000 92%, transparent 100%),
    linear-gradient(to bottom, #000 0%, #000 82%, transparent 100%);
  -webkit-mask-composite: source-in;
  mask-composite: intersect;
  transition: transform 0.7s var(--wl-ease);
}
/* a dedicated wide hero banner (Tour.hero_image) is landscape — anchor it to the
   centre instead of the top, so wide screens crop top/bottom evenly rather than
   favouring the top edge (which suits the portrait poster fallback above). */
.kvit-wl-tour-slide__img--hero { object-position: center center; }
.kvit-wl-tour-slide:hover .kvit-wl-tour-slide__img { transform: scale(1.045); }
.kvit-wl-tour-slide__media::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(to right, rgba(10, 10, 11, 0.72) 0%, transparent 28%),
    linear-gradient(to left, rgba(10, 10, 11, 0.5) 0%, transparent 18%),
    radial-gradient(110% 76% at 84% 18%, var(--wl-glow-soft) 0%, transparent 60%);
}
/* no-poster fallback — a decorative branded panel (rings echo the hero) rather
   than repeating the tour name, which already shows large on the left. */
.kvit-wl-tour-slide__placeholder {
  position: absolute;
  inset: 0;
  background:
    repeating-radial-gradient(circle at 76% 32%, rgba(200, 7, 26, 0.16) 0 1px, transparent 1px 24px),
    radial-gradient(120% 90% at 80% 22%, rgba(200, 7, 26, 0.30), transparent 58%),
    linear-gradient(135deg, rgba(23, 23, 26, 0.85), rgba(10, 10, 11, 0.08));
  -webkit-mask-image: linear-gradient(to right, transparent 0%, #000 20%, #000 92%, transparent 100%);
  mask-image: linear-gradient(to right, transparent 0%, #000 20%, #000 92%, transparent 100%);
}
/* dots — bottom-left, over the content panel */
.kvit-wl-tours__dots {
  position: absolute;
  left: clamp(22px, 3vw, 40px);
  bottom: clamp(17px, 2.3vh, 23px);
  z-index: 4;
  display: inline-flex;
  gap: 9px;
}
.kvit-wl-tours__dot {
  width: 26px;
  height: 5px;
  padding: 0;
  border: 0;
  border-radius: var(--wl-r-pill);
  background: rgba(255, 255, 255, 0.22);
  cursor: pointer;
  transition: background-color 0.25s var(--wl-ease), width 0.25s var(--wl-ease);
}
.kvit-wl-tours__dot:hover { background: rgba(255, 255, 255, 0.4); }
.kvit-wl-tours__dot.is-active { width: 40px; background: var(--wl-red); }
.kvit-wl-tours__dot:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
/* arrows — float over the poster edge */
.kvit-wl-tours__nav {
  position: absolute;
  right: clamp(0px, 1.4vw, 18px);
  top: 50%;
  bottom: auto;
  z-index: 4;
  display: inline-flex;
  gap: 10px;
  transform: translateY(-50%);
}
.kvit-wl-tours__arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  color: #fff;
  border: 1px solid var(--wl-glass-border);
  border-radius: 50%;
  background: rgba(10, 10, 11, 0.42);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  cursor: pointer;
  transition: background-color 0.22s var(--wl-ease), border-color 0.22s var(--wl-ease), transform 0.22s var(--wl-ease);
}
.kvit-wl-tours__arrow:hover { background: var(--wl-red); border-color: var(--wl-red); transform: translateY(-2px); }
.kvit-wl-tours__arrow:active { transform: translateY(0); }
.kvit-wl-tours__arrow:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
/* phones — stack poster above content */
@media (max-width: 640px) {
  .kvit-west-live-organizer-header .kvit-wl-tour-slide { grid-template-columns: 1fr; min-height: 0; }
  .kvit-wl-tour-slide__media { order: -1; height: clamp(160px, 38vw, 220px); margin-left: 0; }
  .kvit-wl-tour-slide__img,
  .kvit-wl-tour-slide__placeholder {
    -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 58%, transparent 100%);
    mask-image: linear-gradient(to bottom, #000 0%, #000 58%, transparent 100%);
  }
  .kvit-wl-tour-slide__media::after {
    background:
      linear-gradient(to bottom, transparent 42%, rgba(13, 13, 15, 0.72) 100%),
      radial-gradient(110% 70% at 80% 12%, var(--wl-glow-soft) 0%, transparent 60%);
  }
  .kvit-wl-tour-slide__content { padding: clamp(18px, 5vw, 26px); padding-top: 6px; padding-bottom: clamp(54px, 9vh, 64px); }
  .kvit-wl-tours__dots { bottom: 16px; }
  .kvit-wl-tours__nav { right: 12px; top: auto; bottom: 12px; transform: none; }
  .kvit-wl-tours__arrow { width: 40px; height: 40px; }
}
@media (prefers-reduced-motion: reduce) {
  .kvit-wl-tours__track,
  .kvit-wl-tour-slide__img { transition: none; }
}

/* ============================================================================
 * West Live — dark theme for the EVENT (ticket-shop / checkout) page.
 * Overrides the variable-driven kvit event theme (--bi2-*) to Obsidian + red,
 * mirroring the Chaika event-page override but dark.
 * ========================================================================== */
body.kvit-site-westlive.kvit-event-page {
  --bi2-bg: #0a0a0b;
  --bi2-surface: rgba(18, 18, 20, 0.92);
  --bi2-surface-strong: #121214;
  --bi2-line: rgba(255, 255, 255, 0.09);
  --bi2-ink: #e5e2e3;
  --bi2-muted: #a9a3a3;
  --bi2-red: #c8071a;
  --bi2-red-bright: #e11d2e;
  --bi2-navy: #0a0a0b;
  --bi2-shadow: 0 26px 80px rgba(0, 0, 0, 0.5);
  background:
    radial-gradient(circle at 50% -4%, rgba(200, 7, 26, 0.22), transparent 46%),
    linear-gradient(180deg, #0a0a0b 0%, #0c0c0e 60%, #0a0a0b 100%) !important;
  color: var(--bi2-ink);
}
body.kvit-site-westlive.kvit-event-page::before {
  background:
    linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(200, 7, 26, 0.05) 1px, transparent 1px);
  background-size: 72px 72px;
  mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.4), transparent 72%);
}
/* Full-bleed hero. Two things were caging it: (1) the .container.main-box side
   padding — so we pull the hero to 100vw with the margin trick; and (2)
   `body.kvit-event-page #content { overflow:hidden }`, which clipped the
   bled-out hero back to the padded content box and left the red side strips.
   So we also stop #content from clipping, and let the hero clip its OWN scaled
   backdrop (__media scale 1.01) so nothing overflows the page. The content
   (.kvit-event-hero__content) stays centred via its own max-width. */
body.kvit-site-westlive.kvit-event-page #content {
  overflow: visible;
}
body.kvit-site-westlive.kvit-event-page .kvit-event-hero {
  width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  overflow: hidden;
}
body.kvit-site-westlive.kvit-event-page .kvit-event-hero__media {
  background:
    radial-gradient(circle at 50% 0%, rgba(200, 7, 26, 0.24), transparent 50%),
    linear-gradient(180deg, #0c0c0e 0%, #0a0a0b 72%) !important;
}
body.kvit-site-westlive.kvit-event-page .kvit-event-hero__glow {
  background: radial-gradient(circle at 50% 28%, rgba(200, 7, 26, 0.18), transparent 60%);
  opacity: 0.85;
}
body.kvit-site-westlive.kvit-event-page .page-header-links a,
body.kvit-site-westlive.kvit-event-page .page-header-links .btn-link {
  color: var(--bi2-ink);
  text-shadow: 0 1px 12px rgba(0, 0, 0, 0.6);
}
body.kvit-site-westlive.kvit-event-page .page-header-links a:hover,
body.kvit-site-westlive.kvit-event-page .page-header-links a.active {
  color: var(--bi2-red-bright);
}
/* header / logo box → dark glass (drop the white Kvit-logo card) */
body.kvit-site-westlive.kvit-event-page .page-header {
  background: var(--bi2-surface) !important;
  border: 1px solid var(--bi2-line) !important;
  border-radius: 14px !important;
  box-shadow: var(--bi2-shadow);
  backdrop-filter: blur(10px);
}
/* Compact event header (subpages incl. checkout) — dark glass, not a white card.
   The base/subpage rule paints it with a light gradient; override for West Live. */
body.kvit-site-westlive.kvit-event-page.kvit-event-subpage .kvit-event-header-compact {
  background: var(--wl-surface-1);
  border: 1px solid var(--wl-glass-border);
  border-radius: 14px;
  box-shadow: none;
  color: var(--wl-ink);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
}
body.kvit-site-westlive.kvit-event-page.kvit-event-subpage .kvit-event-header-compact__title a {
  color: var(--wl-ink);
}
body.kvit-site-westlive.kvit-event-page.kvit-event-subpage .kvit-event-header-compact__title a:hover,
body.kvit-site-westlive.kvit-event-page.kvit-event-subpage .kvit-event-header-compact__title a:focus {
  color: var(--wl-primary);
}
body.kvit-site-westlive.kvit-event-page.kvit-event-subpage .kvit-event-header-compact__title {
  margin: 0;
  font-family: var(--wl-font-display);
  font-size: clamp(1.2rem, 1rem + 1vw, 1.55rem);
  font-weight: 700;
  letter-spacing: -0.01em;
  line-height: 1.2;
}
body.kvit-site-westlive.kvit-event-page.kvit-event-subpage .kvit-event-header-compact__meta {
  color: var(--wl-muted);
}
body.kvit-site-westlive.kvit-event-page.kvit-event-subpage .kvit-event-header-compact__metaitem .fa {
  color: var(--wl-primary);
}
body.kvit-site-westlive.kvit-event-page.kvit-event-subpage .kvit-event-header-compact__poster img {
  width: 56px;
  height: 72px;
  border: 1px solid var(--wl-glass-border);
}
body.kvit-site-westlive .kvit-event-header-compact__locales a {
  color: var(--wl-muted);
}
body.kvit-site-westlive .kvit-event-header-compact__locales a:hover,
body.kvit-site-westlive .kvit-event-header-compact__locales a:focus {
  color: #fff;
}
body.kvit-site-westlive .kvit-event-header-compact__locales a.active {
  color: #fff;
  background: rgba(200, 7, 26, 0.22);
}
body.kvit-site-westlive.kvit-event-page .page-header h1,
body.kvit-site-westlive.kvit-event-page .page-header h1 a,
body.kvit-site-westlive.kvit-event-page .content-header,
body.kvit-site-westlive.kvit-event-page h1,
body.kvit-site-westlive.kvit-event-page h2,
body.kvit-site-westlive.kvit-event-page h3 {
  color: var(--bi2-ink) !important;
}
/* main surfaces: event info, booking form, sidebar, alerts, panels → dark */
body.kvit-site-westlive.kvit-event-page .kvit-event-layout > .alert,
body.kvit-site-westlive.kvit-event-page .kvit-event-info,
body.kvit-site-westlive.kvit-event-page .kvit-event-booking-form,
body.kvit-site-westlive.kvit-event-page aside.front-page,
body.kvit-site-westlive.kvit-event-page .panel,
body.kvit-site-westlive.kvit-event-page .well {
  background: var(--bi2-surface) !important;
  border: 1px solid var(--bi2-line) !important;
  border-radius: 14px !important;
  color: var(--bi2-ink);
  box-shadow: var(--bi2-shadow);
}
body.kvit-site-westlive.kvit-event-page .panel-heading {
  background: transparent !important;
  border-bottom-color: var(--bi2-line) !important;
  color: var(--bi2-ink) !important;
}
body.kvit-site-westlive.kvit-event-page .panel-body { color: var(--bi2-ink); }
body.kvit-site-westlive.kvit-event-page .info-row {
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid var(--bi2-line);
  border-radius: 12px;
}
body.kvit-site-westlive.kvit-event-page .info-row p,
body.kvit-site-westlive.kvit-event-page .text-muted,
body.kvit-site-westlive.kvit-event-page small {
  color: var(--bi2-muted) !important;
}
body.kvit-site-westlive.kvit-event-page a:not(.btn):not(.kvit-event-hero__scroll) { color: var(--bi2-red-bright); }
/* keep CTA buttons readable (white text on red) — the broad link rule must not hit them */
body.kvit-site-westlive.kvit-event-page .kvit-event-hero__scroll,
body.kvit-site-westlive.kvit-event-page .kvit-event-hero__scroll:hover,
body.kvit-site-westlive.kvit-event-page .kvit-event-hero__scroll:focus {
  color: #fff !important;
  background: linear-gradient(135deg, var(--bi2-red-bright), var(--bi2-red)) !important;
  border-color: rgba(255, 255, 255, 0.4) !important;
}
body.kvit-site-westlive.kvit-event-page a.btn-primary,
body.kvit-site-westlive.kvit-event-page button.btn-primary { color: #fff !important; }
/* Cart present: the booking layout has a negative top margin to overlap the hero
   on the normal event page — but when a cart panel precedes it (cart/checkout),
   that pull-up collides with the cart. Reset it only in that case. */
body.kvit-site-westlive.kvit-event-page .panel.cart ~ .kvit-event-layout {
  margin-top: 24px !important;
}
/* product / ticket list rows + tables */
body.kvit-site-westlive.kvit-event-page .product-row,
body.kvit-site-westlive.kvit-event-page .availability-box,
body.kvit-site-westlive.kvit-event-page .table > tbody > tr > td,
body.kvit-site-westlive.kvit-event-page .table > thead > tr > th,
body.kvit-site-westlive.kvit-event-page hr {
  border-color: var(--bi2-line) !important;
  color: var(--bi2-ink);
}
/* form fields */
body.kvit-site-westlive.kvit-event-page .form-control {
  background: #0e0e10 !important;
  border-color: var(--bi2-line) !important;
  color: var(--bi2-ink) !important;
}
body.kvit-site-westlive.kvit-event-page .form-control:focus {
  border-color: var(--bi2-red) !important;
  box-shadow: 0 0 0 3px rgba(200, 7, 26, 0.18) !important;
}
/* buttons */
body.kvit-site-westlive.kvit-event-page .btn-primary,
body.kvit-site-westlive.kvit-event-page .btn-default.btn-checkbox.active {
  background: var(--bi2-red) !important;
  border-color: var(--bi2-red) !important;
  color: #fff !important;
}
body.kvit-site-westlive.kvit-event-page .btn-primary:hover,
body.kvit-site-westlive.kvit-event-page .btn-primary:focus {
  background: var(--bi2-red-bright) !important;
  border-color: var(--bi2-red-bright) !important;
}
body.kvit-site-westlive.kvit-event-page .btn-default {
  background: rgba(255, 255, 255, 0.04) !important;
  border-color: var(--bi2-line) !important;
  color: var(--bi2-ink) !important;
}
body.kvit-site-westlive.kvit-event-page .btn-default:hover {
  background: rgba(255, 255, 255, 0.09) !important;
  color: #fff !important;
}

/* ===========================================================================
 * West Live — event.index two-column redesign (eventcartel-style)
 * Poster hero (full width) + scrollable left content + sticky ticket card,
 * in the existing Obsidian + #C8071A theme. Presentation only.
 * Scoped to the West Live event FRONT page via
 *   body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage)
 * so cart / checkout / order pages (.kvit-event-subpage) and every other brand
 * are left exactly as they were. Wins over the inherited .kvit-boombox-front
 * rules (1 body class) on specificity (3 body classes).
 * ========================================================================= */

/* --- Two-column shell ----------------------------------------------------- */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-layout {
  display: grid;
  /* equal columns: the About card and the ticket card share the width evenly,
     matching the seated-teaser layout (a wide lone About card reads badly). */
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  grid-auto-rows: max-content;
  align-items: start;
  column-gap: clamp(20px, 2.4vw, 40px);
  row-gap: 20px;
  width: min(2200px, 100%);   /* fill the width (match the full-bleed hero) — no black side bars */
  margin: 0 auto 0;           /* sit just under the hero — no negative overlap */
}

/* Seated events show the LED seat-map teaser in the right (ticket) column. Make that
   column EQUAL to the left one so the ticket card matches the left info cards in size and
   the WEST LIVE wordmark renders large — scoped via :has() so only teaser pages are
   affected; product-list pages keep the narrower ticket card. Desktop only: below 821px
   the layout collapses to one column (see media query further down), and this :has rule
   (higher specificity) must not re-force two columns there. */
@media (min-width: 821px) {
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage)
    .kvit-event-layout:has(.kvit-wl-seat-teaser) {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }
  /* the ticket card sits at its natural content height, top-aligned. (The second left info
     card — "already ordered" — is hidden for West Live, so there's nothing to stretch to.) */
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage)
    .kvit-event-layout:has(.kvit-wl-seat-teaser) .kvit-event-booking-form {
    grid-row: 1;
    align-self: start;
    position: static;
  }
}
/* West Live: hide the "If you have already ordered a ticket" resend block (left column). */
body.kvit-site-westlive.kvit-event-page
  aside.front-page[aria-labelledby="if-you-already-ordered-a-ticket"] {
  display: none;
}

/* every flowing block → left column (description/About, alerts, location, asides) */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-layout > .alert,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-layout > aside.front-page,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-layout > section.kvit-event-info,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-layout > div:not(.kvit-event-booking-form):not(.panel) {
  grid-column: 1;
  margin-bottom: 0 !important;
}

/* right column → the booking form is the sticky ticket card. It shares row 1
 * with the (single) left "About" block, so the row grows to max(about, card):
 * a tall description gives sticky room to travel, a short one lets the card set
 * the height — with NO phantom rows. (A previous `grid-row: 1 / span 50` left
 * ~1000px of empty space: row-gap × 49 unused spanned rows when the left column
 * is short. The seated-teaser branch above already uses `grid-row: 1`.) */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form {
  grid-column: 2;
  grid-row: 1;
  align-self: start;
  position: -webkit-sticky;
  position: sticky;
  top: clamp(16px, 4vh, 30px);
  z-index: 2;
  margin: 0 !important;
  padding: clamp(18px, 1.6vw, 26px) !important;
}

/* "About" (the class-less description div) gets a clean dark surface card */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-layout
  > div:not(.kvit-event-booking-form):not(.panel):not(.alert) {
  background:
    linear-gradient(135deg, rgba(255, 255, 255, 0.03), rgba(255, 255, 255, 0)),
    var(--bi2-surface-strong) !important;
  border: 1px solid var(--bi2-line) !important;
  border-radius: 18px !important;
  box-shadow: var(--bi2-shadow);
  padding: clamp(20px, 3vw, 30px) !important;
  color: var(--bi2-ink);
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-layout
  > div:not(.kvit-event-booking-form):not(.panel):not(.alert)::before {
  content: "About this event";
  display: block;
  margin-bottom: 12px;
  font-family: var(--wl-font-display);
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--bi2-red-bright);
}

/* "Location & date" left-column card: hide the hero-footer copy, surface a
 * single labelled card with the address + date rows stacked. */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-info--hero-foot {
  display: none !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-wl-location-block {
  display: block;
  background:
    linear-gradient(135deg, rgba(255, 255, 255, 0.03), rgba(255, 255, 255, 0)),
    var(--bi2-surface-strong) !important;
  border: 1px solid var(--bi2-line) !important;
  border-radius: 18px !important;
  box-shadow: var(--bi2-shadow);
  padding: clamp(20px, 3vw, 30px) !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-wl-location-block::before {
  content: "Location & date";
  display: block;
  margin-bottom: 6px;
  font-family: var(--wl-font-display);
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--bi2-red-bright);
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-wl-location-block .info-row {
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  padding: 14px 0 !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-wl-location-block .info-row + .info-row {
  border-top: 1px solid var(--bi2-line) !important;
}

/* --- Ticket card internals (right sidebar) -------------------------------- */
/* kill Bootstrap .row negative gutters inside the card */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .row {
  margin-left: 0;
  margin-right: 0;
}
/* each ticket row → a clean vertical stack */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .product-row {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 4px;
  padding: 8px 0 18px;
  margin: 0;
  border: 0 !important;
  border-bottom: 1px solid var(--bi2-line) !important;
}
/* every Bootstrap column inside a product row → full width, no float */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .product-row > [class*="col-"] {
  float: none;
  width: 100%;
  max-width: 100%;
  padding-left: 0;
  padding-right: 0;
  text-align: left;
  min-height: 0;
}
/* ticket name */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .product-description h4,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .product-description .h4,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .product-row h5,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .product-row .h5 {
  margin: 0;
  font-family: var(--wl-font-display);
  font-size: 1.3rem;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--bi2-ink);
}
/* "N currently available" → pill */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .product-description p {
  margin: 8px 0 0;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .product-description p small {
  display: inline-block;
  padding: 3px 11px;
  border-radius: 999px;
  background: rgba(200, 7, 26, 0.12);
  border: 1px solid rgba(200, 7, 26, 0.32);
  color: var(--bi2-ink) !important;
  font-size: 0.78rem;
  font-weight: 600;
}
/* price — large, on its own row */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .price {
  order: 3;
  margin-top: 6px;
  font-family: var(--wl-font-display);
  font-size: 1.8rem;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--bi2-ink) !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .price * {
  color: var(--bi2-ink) !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .price small {
  font-size: 0.72rem;
  font-weight: 500;
  color: var(--bi2-muted) !important;
}
/* quantity stepper */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .availability-box {
  order: 4;
  margin-top: 14px;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .input-item-count-group {
  display: inline-flex;
  width: 100%;
  max-width: 168px;
  height: 46px;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .input-item-count-group .input-item-count {
  flex: 1 1 auto;
  width: auto;
  height: 46px;
  text-align: center;
  font-size: 1.05rem;
  font-weight: 700;
  background: #0e0e10 !important;
  color: var(--bi2-ink) !important;
  border-color: var(--bi2-line) !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .input-item-count-dec,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .input-item-count-inc {
  width: 46px;
  height: 46px;
  flex: 0 0 auto;
  font-size: 1.25rem;
  font-weight: 700;
  border-radius: 10px !important;
}
/* single "Select" checkbox button (order_max == 1) → full width */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .availability-box .btn-checkbox {
  display: block;
  width: 100%;
}
/* add-to-cart CTA: drop the offset column, full-width prominent red button */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-cta .row > [class*="col-"] {
  float: none;
  width: 100%;
  margin-left: 0;
  padding-left: 0;
  padding-right: 0;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) #btn-add-to-cart {
  width: 100%;
  min-height: 56px;
  margin-top: 10px;
  font-family: var(--wl-font-display);
  font-size: 1.02rem;
  font-weight: 800;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  border-radius: 12px !important;
  background: linear-gradient(135deg, var(--bi2-red-bright), var(--bi2-red)) !important;
  border: 0 !important;
  box-shadow: 0 14px 34px rgba(200, 7, 26, 0.34);
}
/* category label inside the card ("Tickets") */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .item-category {
  margin-top: 0;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .item-category > .h3,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form .item-category > h3 {
  margin: 0 0 8px;
  font-size: 0.72rem;
  font-weight: 600 !important;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--bi2-muted) !important;
}

/* --- Hero: small poster card (left) + blurred/darkened backdrop ----------- */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero {
  min-height: clamp(360px, 46svh, 520px);
  min-height: clamp(360px, 46dvh, 520px);
  align-items: center;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1;
  height: clamp(120px, 18vh, 210px);
  pointer-events: none;
  background:
    radial-gradient(90% 120% at 50% 100%, rgba(200, 7, 26, 0.16), transparent 64%),
    linear-gradient(180deg, rgba(10, 10, 11, 0) 0%, rgba(10, 10, 11, 0.64) 58%, #0a0a0b 100%);
}
/* the landscape hero photo becomes a blurred, darkened full-bleed backdrop.
   Full-bleed is wired here (not only for the boombox event) so any uploaded
   hero photo covers the whole hero width — no empty bands on the sides. */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero__photo-wrap {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero__photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 42%;
  filter: blur(28px) saturate(1.15) brightness(0.42);
  transform: scale(1.14);
}
/* darkening + faint red wash above the blurred photo for legibility */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero__photo-wrap::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(10, 10, 11, 0.85) 0%, rgba(10, 10, 11, 0.52) 52%, rgba(10, 10, 11, 0.74) 100%),
    radial-gradient(130% 100% at 16% 28%, rgba(200, 7, 26, 0.18), transparent 60%);
}
/* content → poster card (left) + title/meta (right), left-aligned to line up the
   poster with the About card in the layout below (full-bleed, no centering) */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero__content {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: auto fit-content(620px);
  align-items: center;
  column-gap: clamp(22px, 3vw, 50px);
  width: min(2200px, 100%);
  margin: 0 auto;
  padding: clamp(64px, 8vh, 92px) clamp(24px, 4vw, 68px) clamp(28px, 5vh, 56px) clamp(220px, 12vw, 260px);
}
/* poster card spans the left column, vertically centred against the text stack */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-wl-hero-poster {
  grid-column: 1;
  grid-row: 1 / span 50;
  align-self: center;
  margin: 0;
  line-height: 0;
  position: relative;
  isolation: isolate;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-wl-hero-poster:empty {
  display: none;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-wl-hero-poster__img {
  display: block;
  position: relative;
  z-index: 1;
  width: clamp(186px, 22vw, 332px);
  aspect-ratio: 3 / 4;
  object-fit: cover;
  border-radius: 16px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  box-shadow: 0 28px 72px rgba(0, 0, 0, 0.64);
}
/* ambient backlight: a blurred, enlarged copy of the same poster bleeds its
   own colours outward, so the card looks lit from behind by its artwork */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-wl-hero-poster__glow {
  position: absolute;
  inset: 0;
  z-index: -1;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 16px;
  transform: scale(1.18);
  filter: blur(36px) saturate(1.7) brightness(1.1);
  opacity: 0.85;
  pointer-events: none;
}
/* West Live event topbar: home, search, language switcher */
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-topbar {
  position: absolute;
  top: clamp(14px, 2.4vw, 26px);
  left: clamp(18px, 3vw, 52px);
  right: clamp(18px, 3vw, 52px);
  z-index: 4;
  display: grid;
  grid-template-columns: minmax(150px, 1fr) minmax(280px, 560px) minmax(92px, 1fr);
  align-items: center;
  gap: 12px;
}
/* back-to-homepage affordance: West Live wordmark */
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-home {
  position: static;
  display: inline-flex;
  align-items: center;
  justify-self: start;
  gap: 8px;
  padding: 7px 14px 7px 11px;
  border-radius: var(--wl-r-pill, 999px);
  border: 1px solid var(--wl-glass-border, rgba(255, 255, 255, 0.12));
  background: rgba(10, 10, 11, 0.5);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  text-decoration: none !important;
  transition: transform 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-home:hover,
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-home:focus-visible {
  transform: translateY(-1px);
  border-color: var(--wl-red-bright, #e23b3b);
  background: rgba(10, 10, 11, 0.72);
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-home__arrow {
  color: var(--wl-muted, #c9c9cf);
  font-size: 15px;
  line-height: 1;
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-home__logo {
  display: block;
  height: 18px;
  width: auto;
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-search {
  justify-self: center;
  width: min(100%, 560px);
  min-width: 0;
  height: 38px;
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 0 5px 0 14px;
  border-radius: var(--wl-r-pill);
  border: 1px solid var(--wl-glass-border);
  background: rgba(10, 10, 11, 0.5);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-search .fa {
  color: var(--wl-muted);
  font-size: 13px;
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-search input {
  flex: 1 1 auto;
  min-width: 0;
  height: 100%;
  border: 0;
  outline: 0;
  background: transparent;
  color: #fff;
  font-family: var(--wl-font-body);
  font-size: 0.9rem;
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-search input::placeholder {
  color: color-mix(in srgb, var(--wl-muted) 78%, transparent);
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-search button {
  flex: 0 0 auto;
  height: 28px;
  padding: 0 13px;
  border: 0;
  border-radius: var(--wl-r-pill);
  background: var(--wl-red);
  color: #fff;
  font-family: var(--wl-font-display);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-search:focus-within {
  border-color: var(--wl-red-bright);
  box-shadow: 0 0 0 3px rgba(200, 7, 26, 0.16);
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-locales {
  justify-self: end;
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  border: 1px solid var(--wl-glass-border);
  border-radius: var(--wl-r-pill);
  background: rgba(10, 10, 11, 0.5);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-locales a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  min-height: 28px;
  padding: 0 10px;
  border-radius: var(--wl-r-pill);
  color: var(--wl-muted) !important;
  font-family: var(--wl-font-display);
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-decoration: none !important;
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-locales a:hover,
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-locales a:focus-visible {
  color: #fff !important;
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-event-locales a.is-active {
  color: #fff !important;
  background: var(--wl-red);
}
@media (max-width: 560px) {
  body.kvit-site-westlive.kvit-event-page .kvit-wl-event-topbar {
    left: 12px;
    right: 12px;
    grid-template-columns: 1fr auto;
    gap: 8px;
  }
  body.kvit-site-westlive.kvit-event-page .kvit-wl-event-home { padding: 6px 11px 6px 9px; }
  body.kvit-site-westlive.kvit-event-page .kvit-wl-event-home__logo { height: 15px; }
  body.kvit-site-westlive.kvit-event-page .kvit-wl-event-search {
    grid-column: 1 / -1;
    order: 3;
    width: 100%;
  }
  body.kvit-site-westlive.kvit-event-page .kvit-wl-event-locales {
    justify-self: end;
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero__content {
    padding-top: 148px;
  }
}

/* "You might also like" rail at the bottom of the event page */
body.kvit-site-westlive.kvit-event-page .kvit-wl-related {
  width: min(1180px, calc(100% - 32px));
  margin: clamp(30px, 6vh, 70px) auto clamp(44px, 9vh, 92px);
  padding: 0 clamp(16px, 3vw, 24px);
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-related__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: clamp(18px, 3vw, 28px);
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-related__title {
  margin: 0;
  font-family: var(--wl-font-display);
  font-size: clamp(20px, 3vw, 28px);
  font-weight: 700;
  letter-spacing: -0.01em;
  color: #fff;
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-related__all {
  flex: none;
  font-family: var(--wl-font-body);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.02em;
  white-space: nowrap;
  color: var(--wl-muted, #c9c9cf) !important;
  text-decoration: none !important;
  transition: color 0.2s ease;
}
body.kvit-site-westlive.kvit-event-page .kvit-wl-related__all:hover,
body.kvit-site-westlive.kvit-event-page .kvit-wl-related__all:focus-visible {
  color: #fff !important;
}

/* text items flow in the right column */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero__content > .page-header,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero__content > .kvit-wl-hero-meta,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero__content > .kvit-event-hero__scroll {
  grid-column: 2;
}
/* title block → plain (drop the glass slab + small boombox cap) */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero .page-header {
  width: auto;
  max-width: 640px;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  padding: 0;
  margin: 0;
  transform: none;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero .page-header .pull-left {
  float: none;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero .page-header h1 {
  font-family: var(--wl-font-display);
  font-size: clamp(1.7rem, 3.4vw, 2.9rem);
  line-height: 1.05;
  font-weight: 800;
  letter-spacing: -0.03em;
  text-shadow: 0 4px 30px rgba(0, 0, 0, 0.8);
}
/* date shows in the meta rows below → hide the inline <small> date on the title */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero .page-header h1 small {
  display: none;
}
/* date + venue rows with icons */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-wl-hero-meta {
  margin-top: clamp(12px, 1.8vw, 20px);
  display: flex;
  flex-direction: column;
  gap: 9px;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-wl-hero-meta p {
  margin: 0;
  display: flex;
  align-items: flex-start;
  gap: 11px;
  font-size: clamp(0.95rem, 1.4vw, 1.12rem);
  line-height: 1.35;
  color: var(--bi2-ink);
  text-shadow: 0 2px 14px rgba(0, 0, 0, 0.72);
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-wl-hero-meta .fa {
  color: var(--bi2-red-bright);
  margin-top: 3px;
  width: 17px;
  flex: 0 0 auto;
  text-align: center;
}
/* scroll button under the meta */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero__scroll {
  margin-top: clamp(16px, 2.2vw, 26px);
  justify-self: start;
}

/* --- Responsive: collapse to one column, drop sticky --------------------- */
@media (max-width: 820px) {
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-layout {
    grid-template-columns: 1fr;
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-booking-form {
    grid-column: 1;
    grid-row: auto;
    position: static;
    top: auto;
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero {
    min-height: clamp(320px, 44svh, 460px);
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero__content {
    grid-template-columns: 1fr;
    justify-items: center;
    text-align: center;
    row-gap: 16px;
    padding: clamp(112px, 15vh, 136px) 18px 34px;
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-wl-hero-poster {
    grid-column: 1;
    grid-row: auto;
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-wl-hero-poster__img {
    width: clamp(150px, 42vw, 220px);
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero__content > .page-header,
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero__content > .kvit-wl-hero-meta,
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero__content > .kvit-event-hero__scroll {
    grid-column: 1;
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-wl-hero-meta p {
    justify-content: center;
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-hero__scroll {
    justify-self: center;
  }
}

@media (max-width: 720px) {
  .kvit-west-live-organizer-header { min-height: clamp(230px, 38vh, 380px); }
  /* On phones the absolute top-right pill collides with the centred wordmark.
     Drop it into normal flow at the top of the hero so it sits cleanly above
     the logo instead of overlapping it. */
  .kvit-wl-locales {
    position: static;
    align-self: center;
    margin: 0 0 16px;
    top: auto;
    right: auto;
  }
}
@media (prefers-reduced-motion: reduce) {
  .kvit-wl-cta { transition: background-color 0.2s ease; }
  .kvit-wl-cta:hover { transform: none; }
}

/* -------------------------------------------------------------- City marquee */
.kvit-wl-marquee {
  box-sizing: border-box;
  width: 100vw;
  margin: 0 calc(50% - 50vw) clamp(20px, 3.2vw, 34px);
  border-block: 0;
  background:
    linear-gradient(180deg, rgba(10, 10, 11, 0.78) 0%, rgba(10, 10, 11, 0.34) 54%, rgba(10, 10, 11, 0) 100%),
    radial-gradient(70% 140% at 50% 0%, rgba(200, 7, 26, 0.12), transparent 64%);
  overflow: hidden;
  padding-block: clamp(1rem, 2vw, 1.45rem);
  -webkit-mask-image: linear-gradient(to right, transparent, #000 8%, #000 92%, transparent);
  mask-image: linear-gradient(to right, transparent, #000 8%, #000 92%, transparent);
}
.kvit-wl-marquee__track {
  display: flex;
  width: max-content;
  animation: kvitWlMarquee 38s linear infinite;
}
/* Each copy spans at least the viewport, so the two copies always cover the
   screen and the -50% loop never reveals an empty tail on wide displays.
   space-around keeps the cities evenly distributed when they don't fill 100vw. */
.kvit-wl-marquee__group {
  display: flex;
  gap: 2.5rem;
  min-width: 100vw;
  justify-content: space-around;
  flex-shrink: 0;
}
.kvit-wl-marquee__track span {
  font-family: var(--wl-font-display);
  font-weight: 600;
  font-size: 1.05rem;
  letter-spacing: 0.04em;
  color: color-mix(in srgb, var(--wl-ink) 52%, transparent);
  display: inline-flex;
  align-items: center;
  gap: 2.5rem;
}
.kvit-wl-marquee__track span::after {
  content: "\2726";
  color: var(--wl-red);
  font-size: 0.75rem;
}

/* ---------------------------------------------------------- Index + switcher */
.kvit-west-live-org-index {
  max-width: none;
  margin: 0;
}
/* org index: drop the panel frame + heading divider line so the events section blends into
   the page (no boxed "field" with border lines). */
body.kvit-site-westlive .kvit-west-live-org-index .panel {
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}
body.kvit-site-westlive .kvit-west-live-org-index .panel-heading,
body.kvit-site-westlive .kvit-west-live-org-index .panel-default > .panel-heading {
  border-bottom: 0 !important;
}
.kvit-wl-view-switcher-wrap {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin-bottom: 26px !important;
}
.kvit-wl-view-switcher-wrap .btn-group {
  display: inline-flex;
  border-radius: var(--wl-r-pill);
  overflow: hidden;
  border: 1px solid var(--wl-glass-border);
}
.kvit-wl-view-switcher-wrap .btn-group > .btn,
.kvit-wl-view-switcher-wrap > a.btn {
  border: 1px solid var(--wl-glass-border) !important;
  background: rgba(255, 255, 255, 0.02) !important;
  color: var(--wl-muted) !important;
  font-family: var(--wl-font-body);
  font-weight: 600;
  font-size: 0.68rem !important;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 10px 16px !important;
  margin: 0 !important;
}
.kvit-wl-view-switcher-wrap .btn-group > .btn + .btn {
  margin-left: -1px !important;
}
.kvit-wl-view-switcher-wrap .btn-group > .btn:hover,
.kvit-wl-view-switcher-wrap > a.btn:hover,
.kvit-wl-view-switcher-wrap > a.btn:focus {
  color: #fff !important;
  border-color: var(--wl-outline) !important;
}
.kvit-wl-view-switcher-wrap .btn-group > .btn.active,
.kvit-wl-view-switcher-wrap .btn-group > .btn.active:focus {
  background: var(--wl-red) !important;
  color: #fff !important;
  border-color: var(--wl-red) !important;
  z-index: 2;
}
.kvit-wl-view-switcher-wrap .btn-group > .btn:first-child {
  border-radius: var(--wl-r-pill) 0 0 var(--wl-r-pill) !important;
}
.kvit-wl-view-switcher-wrap .btn-group > .btn:last-child {
  border-radius: 0 var(--wl-r-pill) var(--wl-r-pill) 0 !important;
}
.kvit-wl-view-switcher-wrap > a.btn {
  border-radius: var(--wl-r-pill) !important;
}

.kvit-wl-events-shell {
  background: var(--wl-surface-1) !important;
}
.kvit-wl-events-shell > .panel-body p em {
  color: var(--wl-muted);
  font-style: normal;
}

/* ----------------------------------------------------------------- Event grid */
.kvit-wl-events-shell > .panel-body:has(.kvit-wl-event-grid) {
  padding: 24px;
}
.kvit-wl-event-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
}
.kvit-wl-event-card {
  position: relative;
}
.kvit-wl-event-card__surface {
  display: flex;
  flex-direction: column;
  gap: 14px;
  text-decoration: none !important;
  color: inherit;
}
.kvit-wl-event-card__media {
  position: relative;
  aspect-ratio: 3 / 4;
  border-radius: var(--wl-r-lg);
  overflow: hidden;
  border: 1px solid var(--wl-glass-border);
  background: #0d0d10;
}
.kvit-wl-event-card__img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  transition: transform 0.6s var(--wl-ease);
}
.kvit-wl-event-card__surface:hover .kvit-wl-event-card__img,
.kvit-wl-event-card__surface:focus-visible .kvit-wl-event-card__img {
  transform: scale(1.07);
}
.kvit-wl-event-card__media::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(180deg, transparent 78%, rgba(10, 10, 11, 0.5));
}
.kvit-wl-event-card__placeholder {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 18px;
  text-align: center;
  background:
    radial-gradient(circle at 50% 30%, rgba(200, 7, 26, 0.22), transparent 62%),
    linear-gradient(160deg, var(--wl-surface-2), var(--wl-surface-low));
}
.kvit-wl-event-card__placeholder-text {
  font-family: var(--wl-font-display);
  font-weight: 700;
  font-size: 1.15rem;
  letter-spacing: -0.01em;
  color: color-mix(in srgb, var(--wl-ink) 78%, transparent);
}
.kvit-wl-event-card__badge {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 2;
}
.kvit-wl-event-card__badge br,
.kvit-wl-event-card__badge .text-muted {
  display: none;
}
/* skin the shared availability textbubble into a pill */
.kvit-wl-event-card__badge [class^="textbubble-"] {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0.32rem 0.66rem;
  border-radius: var(--wl-r-pill);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}
.kvit-wl-event-card__badge .textbubble-success {
  color: var(--wl-status-available);
  background: color-mix(in srgb, var(--wl-status-available) 12%, rgba(10, 10, 11, 0.6));
  border: 1px solid color-mix(in srgb, var(--wl-status-available) 34%, transparent);
}
.kvit-wl-event-card__badge .textbubble-success-warning,
.kvit-wl-event-card__badge .textbubble-warning {
  color: var(--wl-status-few);
  background: color-mix(in srgb, var(--wl-status-few) 12%, rgba(10, 10, 11, 0.6));
  border: 1px solid color-mix(in srgb, var(--wl-status-few) 36%, transparent);
}
.kvit-wl-event-card__badge .textbubble-danger {
  color: rgba(255, 255, 255, 0.66);
  background: color-mix(in srgb, var(--wl-status-sold) 70%, rgba(10, 10, 11, 0.6));
  border: 1px solid rgba(255, 255, 255, 0.12);
}
.kvit-wl-event-card__badge .textbubble-info {
  color: var(--wl-primary);
  background: rgba(10, 10, 11, 0.6);
  border: 1px solid var(--wl-glass-border);
}
.kvit-wl-event-card__buy {
  position: absolute;
  inset-inline: 12px;
  bottom: 12px;
  z-index: 2;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 0.3s var(--wl-ease), transform 0.3s var(--wl-ease);
}
.kvit-wl-event-card__surface:hover .kvit-wl-event-card__buy,
.kvit-wl-event-card__surface:focus-visible .kvit-wl-event-card__buy {
  opacity: 1;
  transform: translateY(0);
}
.kvit-wl-event-card__body {
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.kvit-wl-event-card__date {
  margin: 0;
  color: var(--wl-primary);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.kvit-wl-event-card__title {
  margin: 0;
  font-family: var(--wl-font-display);
  font-weight: 600;
  font-size: 1.28rem;
  line-height: 1.25;
  color: var(--wl-ink);
  transition: color 0.25s var(--wl-ease);
}
.kvit-wl-event-card__surface:hover .kvit-wl-event-card__title,
.kvit-wl-event-card__surface:focus-visible .kvit-wl-event-card__title {
  color: var(--wl-primary);
}
.kvit-wl-event-card__desc {
  margin: 2px 0 0;
  color: var(--wl-muted);
  font-size: 0.9rem;
  line-height: 1.45;
}

/* ------------------------------------------------------------- Tours (West Live) */
/* "Tour" badge on a tour card (front page) */
.kvit-wl-tour-badge {
  position: absolute;
  top: 12px;
  inset-inline-start: 12px;
  z-index: 2;
  padding: 4px 11px;
  border-radius: var(--wl-r-pill);
  background: var(--wl-red);
  color: #fff;
  font-family: var(--wl-font-display);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  box-shadow: 0 6px 18px rgba(200, 7, 26, 0.4);
}

/* Tour page (city selection): small logo + search, no hero image */
/* suppress the big organizer hero — the tour page carries its own compact logo header */
body:has(.kvit-wl-tour-page) .kvit-west-live-organizer-header { display: none; }
.kvit-wl-tour-page {
  max-width: 1200px;
  margin: 0 auto;
  padding: clamp(8px, 2vw, 20px) 0 40px;
}
.kvit-wl-tour-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: clamp(16px, 3vw, 32px);
  flex-wrap: wrap;
  padding: clamp(14px, 2vw, 22px) 0 clamp(18px, 2.6vw, 30px);
  border-bottom: 1px solid var(--wl-glass-border);
  margin-bottom: clamp(20px, 3vw, 34px);
}
.kvit-wl-tour-logo { display: inline-flex; line-height: 0; flex: 0 0 auto; }
.kvit-wl-tour-logo img { width: clamp(120px, 16vw, 170px); height: auto; }
.kvit-wl-tour-search { display: flex; gap: 8px; flex: 1 1 280px; max-width: 460px; }
.kvit-wl-tour-search__input.form-control {
  flex: 1 1 auto;
  height: 46px;
  background: var(--wl-surface-1) !important;
  border: 1px solid var(--wl-glass-border) !important;
  border-radius: var(--wl-r-pill) !important;
  color: var(--wl-ink) !important;
  padding: 0 18px;
}
.kvit-wl-tour-search__input.form-control:focus {
  border-color: var(--wl-red) !important;
  box-shadow: 0 0 0 3px var(--wl-glow-soft) !important;
}
.kvit-wl-tour-search__btn.btn {
  flex: 0 0 auto;
  height: 46px;
  border-radius: var(--wl-r-pill) !important;
  background: var(--wl-red) !important;
  border-color: var(--wl-red) !important;
  color: #fff !important;
  font-family: var(--wl-font-display);
  font-weight: 600;
  padding: 0 22px;
}
.kvit-wl-tour-intro { margin-bottom: clamp(18px, 2.6vw, 28px); }
.kvit-wl-tour-title {
  margin: 0;
  font-family: var(--wl-font-display);
  font-weight: 700;
  font-size: clamp(1.8rem, 4vw, 3rem);
  letter-spacing: -0.02em;
  color: var(--wl-ink);
}
.kvit-wl-tour-desc { margin-top: 10px; color: var(--wl-muted); max-width: 760px; }
.kvit-wl-tour-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: clamp(18px, 2.6vw, 28px); }
.kvit-wl-tour-chips .kvit-org-chip {
  display: inline-flex;
  align-items: center;
  padding: 7px 15px;
  border-radius: var(--wl-r-pill);
  border: 1px solid var(--wl-glass-border);
  background: var(--wl-surface-1);
  color: var(--wl-muted) !important;
  font-size: 13px;
  font-weight: 600;
  text-decoration: none !important;
  transition: color 0.18s var(--wl-ease), border-color 0.18s var(--wl-ease), background-color 0.18s var(--wl-ease);
}
.kvit-wl-tour-chips .kvit-org-chip:hover,
.kvit-wl-tour-chips .kvit-org-chip:focus-visible { color: #fff !important; border-color: var(--wl-outline); }
.kvit-wl-tour-chips .kvit-org-chip--active { color: #fff !important; background: var(--wl-red); border-color: var(--wl-red); }
.kvit-wl-tour-empty {
  grid-column: 1 / -1;
  text-align: center;
  color: var(--wl-muted);
  padding: clamp(28px, 6vw, 60px) 16px;
}

/* ---------------------------------------------------------------- Empty state */
.kvit-wl-empty {
  text-align: center;
  padding: clamp(32px, 7vw, 72px) 20px 14px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.kvit-wl-empty__mark {
  width: 78px;
  height: 78px;
  border-radius: 50%;
  background:
    radial-gradient(circle at center, rgba(255, 90, 70, 0.5) 0%, rgba(200, 7, 26, 0.35) 30%, transparent 66%);
  border: 1px solid var(--wl-glass-border);
  box-shadow: 0 0 40px var(--wl-glow-soft);
}
.kvit-wl-empty__title {
  margin: 0;
  font-family: var(--wl-font-display);
  font-weight: 700;
  font-size: clamp(1.4rem, 3.5vw, 1.9rem);
  letter-spacing: -0.02em;
  color: var(--wl-ink);
}
.kvit-wl-empty__text {
  margin: 0;
  max-width: 34rem;
  color: var(--wl-muted);
  font-size: 1.02rem;
}

/* ----------------------------------------------------------------- Responsive */
@media (max-width: 900px) {
  .kvit-wl-event-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 540px) {
  .kvit-wl-event-grid {
    grid-template-columns: 1fr;
  }
  .kvit-wl-event-card__buy {
    opacity: 1;
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .kvit-wl-marquee__track {
    animation: none !important;
  }
}
@media (prefers-reduced-transparency: reduce) {
  .kvit-wl-event-card__badge [class^="textbubble-"] {
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
}

@keyframes kvitWlMarquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ===========================================================================
 * West Live — checkout / questions flow (every step: info, payment, review)
 * "Nothing superfluous" pass, modelled on eventcartel: a narrow focused
 * column, flat form sections (fields sit on the page, not in heavy cards),
 * pill inputs + buttons, a quiet progress rail, and the compact flag+code
 * phone trigger with a Search-country panel. Obsidian + #C8071A throughout.
 * Scoped to checkout pages via :has(.checkout-flow).
 * (The --wl-co-radius / --wl-co-radius-soft tokens used below live with the rest
 * of the West Live tokens in the base `body.kvit-site-westlive` block near the top.)
 * ========================================================================== */

/* --- Focused, centred column ------------------------------------------------ */
body.kvit-site-westlive .container.main-box:has(.checkout-flow) {
  max-width: 760px;
  margin-left: auto;
  margin-right: auto;
  padding-bottom: 56px;
}
body.kvit-site-westlive .container.main-box:has(.checkout-flow) > h2 {
  font-family: var(--wl-font-display);
  font-size: clamp(1.55rem, 1.1rem + 1.8vw, 2.1rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  margin: 30px 0 4px;
}

/* --- Progress rail (quiet) — icon dots only, pulled up under the banner ------ */
body.kvit-site-westlive .checkout-flow {
  margin: 0 0 16px;
}
body.kvit-site-westlive .checkout-flow .checkout-step .checkout-step-icon {
  width: 26px;
  height: 26px;
  line-height: 24px;
  font-size: 0.74rem;
  border-radius: 50%;
  background: var(--wl-surface-2);
  border: 1px solid var(--wl-glass-border);
  color: var(--wl-dim);
  box-shadow: none;
  transition: background-color 0.3s var(--wl-ease), border-color 0.3s var(--wl-ease),
    color 0.3s var(--wl-ease), box-shadow 0.3s var(--wl-ease);
}
body.kvit-site-westlive .checkout-flow .checkout-step:before,
body.kvit-site-westlive .checkout-flow .checkout-step:after {
  height: 2px;
  top: 22px;
  border-radius: 2px;
  background: var(--wl-glass-border);
}
body.kvit-site-westlive .checkout-flow .checkout-step.step-done:before,
body.kvit-site-westlive .checkout-flow .checkout-step.step-done:after,
body.kvit-site-westlive .checkout-flow .checkout-step.step-current:before {
  background: var(--wl-red);
}
body.kvit-site-westlive .checkout-flow .checkout-step.step-done .checkout-step-icon {
  background: var(--wl-red);
  border-color: var(--wl-red);
  color: #fff;
}
/* current: red ring + soft glow */
body.kvit-site-westlive .checkout-flow .checkout-step.step-current .checkout-step-icon {
  background: rgba(200, 7, 26, 0.16);
  border: 2px solid var(--wl-red);
  color: #fff;
  box-shadow: 0 0 0 4px rgba(200, 7, 26, 0.12);
}
body.kvit-site-westlive .checkout-flow .checkout-step-label {
  /* labels dropped — the icon dots already show progress (kept the styling below
     inert rather than deleting it, so the rail can re-enable labels in one line) */
  display: none;
  color: var(--wl-dim);
  font-size: 0.72rem;
  margin-top: 4px;
  line-height: 1.25;
}
body.kvit-site-westlive .checkout-flow .checkout-step.step-current .checkout-step-label {
  color: var(--wl-primary);
  font-weight: 600;
}
body.kvit-site-westlive .checkout-flow .checkout-step.step-done .checkout-step-label,
body.kvit-site-westlive .checkout-flow .checkout-step.step-done .checkout-step-label a {
  color: var(--wl-muted);
}
body.kvit-site-westlive .checkout-flow .checkout-step.step-done a:hover .checkout-step-label {
  color: var(--wl-primary);
}

/* --- Cart: one quiet card -------------------------------------------------- */
body.kvit-site-westlive .panel.cart {
  background: var(--wl-surface-1) !important;
  border: 1px solid var(--wl-glass-border) !important;
  border-radius: var(--wl-co-radius-soft) !important;
  box-shadow: none !important;
}
body.kvit-site-westlive .panel.cart .panel-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
}
body.kvit-site-westlive .panel.cart .panel-title .fa-shopping-cart {
  color: var(--wl-primary);
  margin-right: 8px;
}
/* countdown -> quiet mono pill */
body.kvit-site-westlive #cart-deadline-short {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  border-radius: var(--wl-r-pill);
  background: var(--wl-surface-2);
  border: 1px solid var(--wl-glass-border);
  color: var(--wl-primary);
  font-family: var(--wl-font-display);
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}
body.kvit-site-westlive #cart-deadline-short::before {
  content: "\f017"; /* fa-clock-o */
  font-family: FontAwesome;
  font-weight: 400;
  opacity: 0.75;
}
/* dark fade for the cart sneak-peek (was a white gradient) */
body.kvit-site-westlive .panel.cart .sneak-peek-trigger {
  background: linear-gradient(0deg, #161618 42%, rgba(22, 22, 24, 0) 100%);
}
body.kvit-site-westlive .panel.cart .sneak-peek-trigger .btn-default {
  background: var(--wl-surface-2) !important;
  border: 1px solid var(--wl-glass-border) !important;
  color: var(--wl-primary) !important;
  border-radius: var(--wl-r-pill) !important;
  padding: 7px 22px;
  font-weight: 600;
}
body.kvit-site-westlive .panel.cart .sneak-peek-trigger .btn-default:hover {
  background: var(--wl-surface-2) !important;
  border-color: var(--wl-outline) !important;
  color: #fff !important;
}
body.kvit-site-westlive .panel.cart .cart-row {
  border-color: var(--wl-glass-border) !important;
}
body.kvit-site-westlive .panel.cart .cart-row .product strong,
body.kvit-site-westlive .panel.cart .cart-rowgroup-total strong,
body.kvit-site-westlive .panel.cart .total strong {
  color: var(--wl-ink);
}
body.kvit-site-westlive .panel.cart .cart-row .cart-icon-details,
body.kvit-site-westlive .panel.cart .cart-row dd,
body.kvit-site-westlive .panel.cart .cart-row dt {
  color: var(--wl-muted);
}

/* West Live event cart: organize the post-add-to-cart state into a focused
   ticket list + summary, instead of one stretched table row. */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart {
  width: min(1240px, calc(100% - 56px));
  margin: clamp(10px, 2.2vh, 24px) auto clamp(60px, 8vh, 96px);
  position: relative;
  z-index: 3;
  overflow: hidden;
  background:
    linear-gradient(145deg, rgba(18, 18, 20, 0.96), rgba(11, 11, 13, 0.98)),
    radial-gradient(90% 120% at 92% 12%, rgba(200, 7, 26, 0.12), transparent 58%) !important;
  border-color: rgba(255, 255, 255, 0.1) !important;
  box-shadow: 0 28px 90px rgba(0, 0, 0, 0.36) !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-layout:has(.panel.cart) > .alert-success {
  display: none;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart ~ .kvit-event-layout.kvit-wl-eventpage {
  display: none !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart ~ .kvit-event-layout.kvit-wl-eventpage + .kvit-wl-related {
  margin-top: clamp(26px, 5vh, 54px);
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart > .panel-heading {
  padding: 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08) !important;
  background: rgba(255, 255, 255, 0.025) !important;
  cursor: pointer;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .panel-title {
  padding: 17px clamp(18px, 2.4vw, 28px);
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .panel-title > span {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .panel-title strong {
  font-family: var(--wl-font-display);
  font-size: clamp(1.05rem, 1.2vw, 1.28rem);
  letter-spacing: 0;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .panel-body {
  display: block;
  padding: clamp(18px, 2.4vw, 28px);
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .panel-body > [role="table"] {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(320px, 380px);
  gap: clamp(16px, 2.2vw, 26px);
  align-items: start;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .firstchild-in-panel,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-rowgroup-total {
  min-width: 0;
  padding: clamp(16px, 2vw, 22px);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.035);
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .firstchild-in-panel::before,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-rowgroup-total::before {
  display: block;
  margin: 0 0 14px;
  color: var(--wl-muted);
  font-family: var(--wl-font-display);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .firstchild-in-panel::before {
  content: "Tickets";
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-rowgroup-total::before {
  content: "Order summary";
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(96px, auto) minmax(118px, auto);
  gap: clamp(12px, 1.8vw, 22px);
  align-items: center;
  margin: 0;
  padding: 18px 0;
  border-top: 1px solid rgba(255, 255, 255, 0.09);
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row::before,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row::after {
  content: none !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .firstchild-in-panel .cart-row:first-child {
  padding-top: 0;
  border-top: 0;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row > div {
  float: none !important;
  width: auto !important;
  min-height: 0;
  padding: 0 !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .product p {
  margin: 0;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .product strong {
  display: block;
  margin-bottom: 4px;
  font-size: 1.04rem;
  line-height: 1.25;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .count {
  justify-self: center;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 38px;
  min-width: 112px;
  padding: 4px 8px !important;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: var(--wl-r-pill);
  background: rgba(255, 255, 255, 0.045);
  color: var(--wl-ink);
  font-family: var(--wl-font-display);
  font-size: 0.98rem;
  font-weight: 700;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .count form {
  display: inline-flex;
  margin: 0;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .count .btn-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  border-radius: 50%;
  color: var(--wl-primary) !important;
  text-decoration: none !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .count .btn-link:hover,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .count .btn-link:focus-visible {
  background: rgba(200, 7, 26, 0.18);
  color: #fff !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .singleprice,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .totalprice {
  justify-self: end;
  text-align: right;
  white-space: nowrap;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .singleprice {
  display: none;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .totalprice strong {
  color: var(--wl-ink);
  font-family: var(--wl-font-display);
  font-size: 1.05rem;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row > .clearfix {
  display: none;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-rowgroup-total {
  border-top: 1px solid rgba(255, 255, 255, 0.1);
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-rowgroup-total .cart-row {
  grid-template-columns: minmax(0, 1fr) auto;
  padding: 0;
  border-top: 0;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-rowgroup-total .cart-row + .cart-row {
  padding-top: 16px;
  margin-top: 16px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-rowgroup-total .count,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-rowgroup-total .singleprice {
  display: none;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-rowgroup-total .total .product strong {
  font-size: 1.1rem;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-rowgroup-total .total .product .text-muted {
  display: block;
  margin-top: 3px;
  color: var(--wl-muted) !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-rowgroup-total .totalprice strong {
  font-size: clamp(1.6rem, 2vw, 2rem);
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .panel-body > .row {
  margin: clamp(16px, 2vw, 22px) 0 0;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .panel-body > .row::before,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .panel-body > .row::after {
  content: none !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .panel-body > .row > [class*="col-"] {
  float: none;
  width: auto;
  padding: 0;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart #cart-extend-form {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin: 0;
  padding: 14px 16px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.025);
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart #cart-deadline {
  margin: 0;
  color: var(--wl-muted);
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart #cart-extend-form p {
  margin: 0;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart #cart-extend-button {
  border-radius: var(--wl-r-pill) !important;
  background: rgba(255, 255, 255, 0.05) !important;
  border-color: rgba(255, 255, 255, 0.14) !important;
  color: var(--wl-muted) !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .checkout-button-row {
  display: flex;
  flex-direction: row-reverse;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin: clamp(16px, 2vw, 22px) 0 0;
  padding: 16px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.03);
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .checkout-button-row p {
  margin: 0;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .checkout-button-primary,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .checkout-button-secondary {
  padding: 0;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .checkout-button-primary .btn-primary {
  min-width: min(100%, 300px);
  min-height: 52px;
  padding: 0 28px;
  border-radius: var(--wl-r-pill) !important;
  box-shadow: 0 16px 34px rgba(200, 7, 26, 0.22) !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .checkout-button-secondary {
  display: flex;
  align-items: center;
  gap: 10px;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .checkout-button-secondary .btn-default {
  min-height: 40px;
  padding: 0 18px;
  border-radius: var(--wl-r-pill) !important;
  background: transparent !important;
  border-color: rgba(255, 255, 255, 0.18) !important;
  color: var(--wl-muted) !important;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .checkout-button-secondary .btn-default:hover,
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .checkout-button-secondary .btn-default:focus-visible {
  border-color: var(--wl-primary) !important;
  color: #fff !important;
}

@media (max-width: 980px) {
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart {
    width: min(100% - 28px, 760px);
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .panel-body > [role="table"] {
    grid-template-columns: 1fr;
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row {
    grid-template-columns: minmax(0, 1fr) auto;
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .count {
    justify-self: end;
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .singleprice {
    justify-self: start;
    text-align: left;
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .totalprice {
    justify-self: end;
  }
}
@media (max-width: 640px) {
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .panel-body {
    padding: 14px;
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .firstchild-in-panel,
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-rowgroup-total {
    padding: 14px;
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row {
    grid-template-columns: 1fr;
    gap: 10px;
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .count,
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .singleprice,
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .cart-row .totalprice {
    justify-self: stretch;
    text-align: left;
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .checkout-button-row,
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart #cart-extend-form {
    flex-direction: column;
    align-items: stretch;
  }
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .checkout-button-primary .btn-primary,
  body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .panel.cart .checkout-button-secondary .btn-default {
    width: 100%;
  }
}

/* --- Form sections: flat, not boxed ---------------------------------------- */
/* Scoped to the checkout column via :has(.checkout-flow) so the event front
   page and order pages keep their cards. Every form panel except the cart
   loses its card chrome so the fields sit on the page; the heading becomes a
   section title with a hairline under it. (.co = the checkout scope.) */
body.kvit-site-westlive .main-box:has(.checkout-flow) .panel:not(.cart) {
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  margin: 0 0 10px !important;
  backdrop-filter: none !important;
}
body.kvit-site-westlive .main-box:has(.checkout-flow) .panel:not(.cart) > .panel-heading {
  padding: 16px 0 13px !important;
  border-bottom: 1px solid var(--wl-glass-border) !important;
}
body.kvit-site-westlive .main-box:has(.checkout-flow) .panel:not(.cart) > div > .panel-body,
body.kvit-site-westlive .main-box:has(.checkout-flow) .panel:not(.cart) > .panel-body {
  padding: 20px 0 8px !important;
}
body.kvit-site-westlive .main-box:has(.checkout-flow) .panel-body > p:first-child {
  color: var(--wl-muted);
}
body.kvit-site-westlive .main-box:has(.checkout-flow) .panel-title strong {
  font-family: var(--wl-font-display);
  font-weight: 600;
  font-size: 1.05rem;
  letter-spacing: -0.01em;
}
/* collapsible summaries: drop native triangle, add a chevron at the column edge */
body.kvit-site-westlive .main-box:has(.checkout-flow) details.panel > summary.panel-heading {
  position: relative;
  list-style: none;
  cursor: pointer;
  padding-right: 34px;
}
body.kvit-site-westlive .main-box:has(.checkout-flow) details.panel > summary.panel-heading::-webkit-details-marker {
  display: none;
}
body.kvit-site-westlive .main-box:has(.checkout-flow) details.panel > summary.panel-heading::after {
  content: "\f078"; /* fa-chevron-down */
  font-family: FontAwesome;
  position: absolute;
  right: 4px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 0.8rem;
  color: var(--wl-dim);
  transition: transform 0.25s var(--wl-ease), color 0.25s var(--wl-ease);
}
body.kvit-site-westlive .main-box:has(.checkout-flow) details.panel[open] > summary.panel-heading::after {
  transform: translateY(-50%) rotate(180deg);
  color: var(--wl-primary);
}
body.kvit-site-westlive .main-box:has(.checkout-flow) details.panel > summary.panel-heading:hover::after {
  color: var(--wl-primary);
}

/* --- Stacked labels (label above the field) -------------------------------- */
/* Bootstrap's horizontal form gives every .form-group -15px side gutters that its
   col-* children cancel with 15px padding. We stack labels/inputs full-width and
   reset that padding to 2px — which leaves the row shifted 15px left. In the
   contact panel (overflow:visible) it only looks slightly off, but the invoice
   panel is a <details> with overflow:hidden, so the first ~15px (≈1 character) of
   every label gets CLIPPED ("Name"->"ame", "City"->"ty"). Neutralise the gutters
   so labels and inputs sit flush at the panel edge. */
body.kvit-site-westlive .main-box:has(.checkout-flow) .form-horizontal .form-group {
  margin-left: 0;
  margin-right: 0;
}
body.kvit-site-westlive .main-box:has(.checkout-flow) .form-horizontal .form-group > .control-label,
body.kvit-site-westlive .main-box:has(.checkout-flow) .form-horizontal .form-group > label {
  float: none;
  width: 100%;
  text-align: left;
  padding: 0 2px 8px;
  color: var(--wl-ink);
  font-weight: 600;
}
body.kvit-site-westlive .main-box:has(.checkout-flow) .form-horizontal .form-group > div[class*="col-"] {
  float: none;
  width: 100%;
  margin-left: 0;
  padding-left: 0;
  padding-right: 0;
}
body.kvit-site-westlive .main-box:has(.checkout-flow) .control-label .text-muted,
body.kvit-site-westlive .main-box:has(.checkout-flow) label .optional,
body.kvit-site-westlive .main-box:has(.checkout-flow) .help-block {
  color: var(--wl-dim) !important;
  font-weight: 400;
}
body.kvit-site-westlive .main-box:has(.checkout-flow) .help-block {
  font-size: 0.85rem;
  margin-top: 8px;
  padding-left: 2px;
}
body.kvit-site-westlive .main-box:has(.checkout-flow) .control-label .sr-only + *,
body.kvit-site-westlive .main-box:has(.checkout-flow) label .asteriskField {
  color: var(--wl-red-bright);
}

/* --- Pill inputs ----------------------------------------------------------- */
body.kvit-site-westlive .main-box:has(.checkout-flow) .form-control {
  display: block;
  width: 100%;
  min-height: 52px;
  padding: 12px 20px;
  border-radius: var(--wl-co-radius) !important;
  border: 1px solid var(--wl-glass-border) !important;
  background: var(--wl-surface-low) !important;
}
/* inside the phone row the national field is a flex child, not full width */
body.kvit-site-westlive .main-box:has(.checkout-flow) .nameparts-form-group .form-control {
  width: auto;
}
body.kvit-site-westlive .main-box:has(.checkout-flow) textarea.form-control,
body.kvit-site-westlive .main-box:has(.checkout-flow) select[multiple].form-control {
  border-radius: var(--wl-co-radius-soft) !important;
}
body.kvit-site-westlive .main-box:has(.checkout-flow) select.form-control {
  border-radius: var(--wl-co-radius) !important;
}
body.kvit-site-westlive .main-box:has(.checkout-flow) .form-control:focus {
  border-color: var(--wl-red) !important;
  box-shadow: 0 0 0 3px rgba(200, 7, 26, 0.16) !important;
}
body.kvit-site-westlive .main-box:has(.checkout-flow) .form-control::placeholder {
  color: var(--wl-dim);
}

/* --- Phone field: compact flag+code trigger + number ----------------------- */
body.kvit-site-westlive .nameparts-form-group:has(.kvit-combobox) {
  display: flex;          /* stay a row even on mobile (base goes block < sm) */
  flex-direction: row;
  gap: 8px;
  align-items: stretch;
}
body.kvit-site-westlive .nameparts-form-group .kvit-combobox {
  flex: 0 0 auto;
}
body.kvit-site-westlive .nameparts-form-group:has(.kvit-combobox) input[autocomplete="tel-national"] {
  flex: 1 1 auto;
  border-radius: var(--wl-co-radius) !important;
  border: 1px solid var(--wl-glass-border) !important;
}

/* trigger button */
body.kvit-site-westlive .kvit-combobox-toggle {
  min-height: 52px;
  min-width: 6.4em;
  padding: 10px 16px;
  background: var(--wl-surface-low);
  border: 1px solid var(--wl-glass-border);
  border-radius: var(--wl-co-radius);
  color: var(--wl-ink);
}
body.kvit-site-westlive .kvit-combobox-toggle:hover {
  border-color: var(--wl-outline);
}
body.kvit-site-westlive .kvit-combobox-toggle[aria-expanded="true"] {
  border-color: var(--wl-red);
  box-shadow: 0 0 0 3px rgba(200, 7, 26, 0.16);
}
body.kvit-site-westlive .kvit-combobox-toggle.is-empty .kvit-combobox-toggle-code {
  color: var(--wl-dim);
}
body.kvit-site-westlive .kvit-combobox-caret {
  color: var(--wl-muted);
}

/* dropdown panel + search box */
body.kvit-site-westlive .kvit-combobox-panel {
  background: #161618;
  border: 1px solid var(--wl-glass-border);
  border-radius: var(--wl-co-radius-soft);
  box-shadow: 0 22px 60px rgba(0, 0, 0, 0.66), 0 0 0 1px rgba(0, 0, 0, 0.5);
}
body.kvit-site-westlive .kvit-combobox-search-wrap {
  border-bottom-color: var(--wl-glass-border);
}
body.kvit-site-westlive .kvit-combobox-search {
  background: var(--wl-surface-low);
  border: 1px solid var(--wl-glass-border);
  border-radius: var(--wl-r-pill);
  color: var(--wl-ink);
  height: 42px;
  padding: 8px 16px;
}
body.kvit-site-westlive .kvit-combobox-search::placeholder {
  color: var(--wl-dim);
}
body.kvit-site-westlive .kvit-combobox-search:focus {
  border-color: var(--wl-red);
  box-shadow: 0 0 0 3px rgba(200, 7, 26, 0.14);
}
body.kvit-site-westlive .kvit-combobox-list li {
  color: var(--wl-ink);
}
body.kvit-site-westlive .kvit-combobox-list li.is-active,
body.kvit-site-westlive .kvit-combobox-list li:hover {
  background: rgba(255, 255, 255, 0.06);
}
body.kvit-site-westlive .kvit-combobox-list li.is-selected {
  background: rgba(200, 7, 26, 0.18);
  color: #fff;
}
body.kvit-site-westlive .kvit-combobox-code {
  color: var(--wl-muted);
}
body.kvit-site-westlive .kvit-combobox-list li.is-best-match {
  background: rgba(200, 7, 26, 0.14);
}
body.kvit-site-westlive .kvit-combobox-list li.is-best-match .kvit-combobox-code {
  color: var(--wl-primary);
}
body.kvit-site-westlive .kvit-combobox-empty {
  color: var(--wl-dim);
}
body.kvit-site-westlive .kvit-combobox-list {
  scrollbar-width: thin;
  scrollbar-color: rgba(255, 255, 255, 0.18) transparent;
}
body.kvit-site-westlive .kvit-combobox-list::-webkit-scrollbar {
  width: 10px;
}
body.kvit-site-westlive .kvit-combobox-list::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.16);
  border-radius: 8px;
  border: 3px solid transparent;
  background-clip: content-box;
}

/* --- Action buttons: pill -------------------------------------------------- */
body.kvit-site-westlive .checkout-button-row {
  margin-top: 30px;
}
body.kvit-site-westlive .checkout-button-row .btn-lg {
  border-radius: var(--wl-r-pill) !important;
  padding: 14px 26px;
  font-family: var(--wl-font-display);
  font-weight: 600;
  text-decoration: none !important;
}
body.kvit-site-westlive .checkout-button-row .btn-primary {
  box-shadow: 0 10px 30px rgba(200, 7, 26, 0.28);
}
body.kvit-site-westlive .checkout-button-row .btn-default {
  background: var(--wl-surface-2) !important;
  border: 1px solid var(--wl-glass-border) !important;
  color: var(--wl-ink) !important;
}
body.kvit-site-westlive .checkout-button-row .btn-default:hover,
body.kvit-site-westlive .checkout-button-row .btn-default:focus {
  background: var(--wl-surface-1) !important;
  border-color: var(--wl-outline) !important;
  color: #fff !important;
}

/* --- Payment & review steps: radios, checkboxes, legends ------------------- */
body.kvit-site-westlive .main-box:has(.checkout-flow) input[type="radio"],
body.kvit-site-westlive .main-box:has(.checkout-flow) input[type="checkbox"] {
  accent-color: var(--wl-red);
  width: 16px;
  height: 16px;
}
body.kvit-site-westlive .main-box:has(.checkout-flow) .radio,
body.kvit-site-westlive .main-box:has(.checkout-flow) .checkbox {
  padding: 6px 0;
}
body.kvit-site-westlive .main-box:has(.checkout-flow) .radio label,
body.kvit-site-westlive .main-box:has(.checkout-flow) .checkbox label {
  color: var(--wl-ink);
}
body.kvit-site-westlive .main-box:has(.checkout-flow) .list-group-item,
body.kvit-site-westlive .main-box:has(.checkout-flow) .panel-confirm {
  border-radius: var(--wl-co-radius-soft);
}
body.kvit-site-westlive .main-box:has(.checkout-flow) fieldset legend {
  border-bottom-color: var(--wl-glass-border);
  color: var(--wl-ink);
}
body.kvit-site-westlive .main-box:has(.checkout-flow) dl.dl-horizontal dt {
  color: var(--wl-muted);
  font-weight: 500;
}

/* --- Success / info alerts -------------------------------------------------- */
body.kvit-site-westlive.kvit-event-page .alert-success {
  background: rgba(0, 255, 102, 0.07) !important;
  border: 1px solid rgba(0, 255, 102, 0.22) !important;
  color: #c7f9d8 !important;
  border-radius: var(--wl-co-radius-soft) !important;
}
body.kvit-site-westlive.kvit-event-page .alert-success .fa,
body.kvit-site-westlive.kvit-event-page .alert-success a {
  color: var(--wl-status-available) !important;
}

/* Auto-dismiss transient flash messages (success/info) after ~5s, toast-style:
   fade out + collapse the space. Pauses on hover. Errors/warnings are left in
   place because the user needs to read and act on them. */
body.kvit-site-westlive .alert-success,
body.kvit-site-westlive .alert-info {
  max-height: 500px;
  overflow: hidden;
  animation: kvitFlashDismiss 0.6s var(--wl-ease) 5s forwards;
}
body.kvit-site-westlive .alert-success:hover,
body.kvit-site-westlive .alert-info:hover {
  animation-play-state: paused;
}
@keyframes kvitFlashDismiss {
  from { opacity: 1; }
  to {
    opacity: 0;
    max-height: 0;
    margin-top: 0;
    margin-bottom: 0;
    padding-top: 0;
    padding-bottom: 0;
    border-width: 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  body.kvit-site-westlive .alert-success,
  body.kvit-site-westlive .alert-info {
    animation-duration: 0.01s;
  }
}

/* --- Mobile ----------------------------------------------------------------- */
@media (max-width: 767px) {
  body.kvit-site-westlive .container.main-box:has(.checkout-flow) > h2 {
    margin-top: 18px;
  }
  body.kvit-site-westlive .kvit-combobox-panel {
    min-width: min(290px, 84vw);
  }
  body.kvit-site-westlive .checkout-flow .checkout-step .checkout-step-icon {
    width: 24px;
    height: 24px;
    line-height: 22px;
  }
  body.kvit-site-westlive .checkout-flow .checkout-step:before,
  body.kvit-site-westlive .checkout-flow .checkout-step:after {
    top: 20px;
  }
}

/* ============================================================================
 * West Live — checkout declutter ("nothing extra" pass)
 * The pretix flow pads the page with filler; strip it so each step reads as a
 * clean, focused form. Removes the "answer some questions" preamble, the long
 * email helptext, and the repeated visible "required" tags; quiets the
 * redundant "Checkout" title and tightens the rail. Scoped to checkout.
 * ========================================================================== */

/* "Before we continue, we need you to answer some questions." — pure filler.
   The only direct <p> child of #content on the questions step (it alone has
   #questions_group) is this preamble — hide it without relying on sibling order. */
body.kvit-site-westlive #content:has(#questions_group) > p {
  display: none;
}

/* The long email helptext ("Make sure to enter a valid email address…") — the
   field speaks for itself. */
body.kvit-site-westlive #contact .help-block {
  display: none;
}

/* "required" tag after every label: keep it for screen readers, drop the
   visual repetition. Fields are required by default here; the exceptions
   already carry an explicit "(optional)". */
body.kvit-site-westlive .main-box:has(.checkout-flow) .label-required {
  position: absolute !important;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  border: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
}

/* "Оформити замовлення" / Checkout title — removed entirely (the form speaks for
   itself; the rail dots already show progress). */
body.kvit-site-westlive .main-box:has(.checkout-flow) #content > h2 {
  display: none;
}

/* While the user fills in the checkout, hide the large marketing footer
   (payment · support · company · social) — too much noise on the form steps.
   It stays on every other page. */
body.kvit-site-westlive .container.main-box:has(.checkout-flow) footer {
  display: none;
}

/* --- Email verification: "send code" button + the code field ---------------- */
body.kvit-site-westlive .kvit-wl-sendcode-wrap {
  margin: -2px 0 16px;
}
body.kvit-site-westlive .kvit-wl-sendcode {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  font-family: var(--wl-font-display);
  font-weight: 600;
  font-size: 0.86rem;
  color: var(--wl-primary);
  background: var(--wl-surface-2);
  border: 1px solid var(--wl-outline);
  border-radius: var(--wl-co-radius);
  cursor: pointer;
  transition: background-color 0.2s var(--wl-ease), border-color 0.2s var(--wl-ease), color 0.2s var(--wl-ease);
}
body.kvit-site-westlive .kvit-wl-sendcode:hover {
  color: #fff;
  background: var(--wl-red);
  border-color: var(--wl-red);
}
body.kvit-site-westlive .kvit-wl-sendcode:disabled {
  opacity: 0.55;
  cursor: default;
}
/* the 3-digit code field stands out a touch when it appears */
body.kvit-site-westlive .main-box:has(.checkout-flow) #contact .form-group:has(input[name="email_verification_code"]) {
  padding: 14px 16px;
  border: 1px solid var(--wl-glass-border);
  border-radius: var(--wl-co-radius-soft);
  background: rgba(200, 7, 26, 0.05);
}
body.kvit-site-westlive .main-box:has(.checkout-flow) #contact input[name="email_verification_code"] {
  max-width: 220px;
  letter-spacing: 0.3em;
  font-family: var(--wl-font-display);
  font-weight: 600;
}

/* ============================================================================
 * West Live — checkout 2-column layout (desktop ≥992px), per the mticket ref
 * and consistent with the event page's EventCartel shell below. The event
 * banner spans the top; the form fills the left column and the cart becomes a
 * sticky order-summary sidebar on the right. Below 992px it stays the single
 * column (cart on top). #content's direct children, in order:
 *   .kvit-event-header-compact · aside(cart) · h2 · nav(rail) · p(hidden) · form
 * ========================================================================== */
@media (min-width: 992px) {
  body.kvit-site-westlive .container.main-box:has(.checkout-flow) {
    max-width: 1060px;
  }
  body.kvit-site-westlive #content:has(.checkout-flow) {
    display: grid;
    grid-template-columns: minmax(0, 1fr) clamp(320px, 33%, 372px);
    column-gap: clamp(24px, 2.6vw, 40px);
    align-items: start;
  }
  /* event banner spans the full width on top */
  body.kvit-site-westlive #content:has(.checkout-flow) > .kvit-event-header-compact {
    grid-column: 1 / -1;
  }
  /* cart -> sticky order-summary sidebar; span the column (from row 2, under the
     banner) so the short banner doesn't drive the sidebar's row height */
  body.kvit-site-westlive #content:has(.checkout-flow) > aside {
    grid-column: 2;
    grid-row: 2 / span 99;
    align-self: start;
    position: sticky;
    top: 18px;
    margin: 0 !important;
  }
  /* checkout title, rail, form -> left column */
  body.kvit-site-westlive #content:has(.checkout-flow) > :not(.kvit-event-header-compact):not(aside) {
    grid-column: 1;
    min-width: 0;
  }
  body.kvit-site-westlive #content:has(.checkout-flow) > h2 {
    margin-top: 0;
  }
  /* --- cart sidebar: show the full summary (no peek), fit rows to the column - */
  body.kvit-site-westlive #content:has(.checkout-flow) > aside .sneak-peek-trigger {
    display: none !important;
  }
  body.kvit-site-westlive #content:has(.checkout-flow) > aside .sneak-peek-content {
    max-height: none !important;
    overflow: visible !important;
  }
  /* cart row -> name (+qty) on the left, line total on the right; the unit-price
     column doesn't fit a 330px sidebar, so drop it */
  body.kvit-site-westlive #content:has(.checkout-flow) > aside .cart-row {
    display: flex !important;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 1px 8px;
    margin: 0;
  }
  body.kvit-site-westlive #content:has(.checkout-flow) > aside .cart-row > .product {
    flex: 1 1 auto;
    width: auto !important;
    min-width: 0;
    padding: 0;
  }
  body.kvit-site-westlive #content:has(.checkout-flow) > aside .cart-row > .count {
    flex: 0 0 auto;
    width: auto !important;
    order: 2;
    padding: 0;
    color: var(--wl-muted);
    font-variant-numeric: tabular-nums;
  }
  body.kvit-site-westlive #content:has(.checkout-flow) > aside .cart-row > .singleprice {
    display: none !important;
  }
  body.kvit-site-westlive #content:has(.checkout-flow) > aside .cart-row > .totalprice {
    flex: 0 0 auto;
    width: auto !important;
    order: 3;
    margin-left: auto;
    padding: 0;
    text-align: right;
    white-space: nowrap;
  }
  body.kvit-site-westlive #content:has(.checkout-flow) > aside .cart-row > .clearfix {
    display: none !important;
  }
}


/* ============================================================================
   West Live — event page in the "EventCartel" layout: a two-column shell with
   the description/About on the left and a STICKY purchase card on the right
   (date · venue · doors · age · "From {price}" · buy). The booking <form>
   itself IS the right column; everything else flows in the left column.
   Markup: pretixpresale/event/index.html
   (.kvit-wl-eventpage / .kvit-wl-about / .kvit-wl-purchase__*).
   ========================================================================== */
body.kvit-site-westlive .kvit-wl-eventpage {
  display: grid;
  grid-template-columns: minmax(0, 1fr) clamp(320px, 33%, 400px);
  gap: clamp(20px, 2.6vw, 40px);
  align-items: start;
}
body.kvit-site-westlive .kvit-wl-eventpage > * {
  grid-column: 1;
  min-width: 0;
}
body.kvit-site-westlive .kvit-wl-eventpage > .kvit-event-booking-form {
  grid-column: 2;
  grid-row: 1 / -1;
  align-self: start;
  position: sticky;
  top: clamp(76px, 8vh, 96px);
  margin: 0;
}

/* ---- About / description (left column) ---- */
body.kvit-site-westlive .kvit-wl-about {
  border: 1px solid var(--wl-glass-border);
  border-radius: var(--wl-r-xl);
  background: var(--wl-surface-1);
  padding: clamp(22px, 2.6vw, 36px);
  margin-bottom: 24px;
}
body.kvit-site-westlive .kvit-wl-about__title {
  margin: 0 0 16px;
  font-family: var(--wl-font-display);
  font-weight: 800;
  font-size: clamp(22px, 3vw, 30px);
  letter-spacing: -0.02em;
  color: var(--wl-ink);
}
body.kvit-site-westlive .kvit-wl-about__body {
  color: var(--wl-muted);
  font-size: clamp(15px, 1.4vw, 17px);
  line-height: 1.7;
}
body.kvit-site-westlive .kvit-wl-about__body p { margin: 0 0 1em; }
body.kvit-site-westlive .kvit-wl-about__body p:last-child { margin-bottom: 0; }

/* ---- Purchase card head: meta · price · actions ---- */
body.kvit-site-westlive .kvit-wl-purchase__head {
  margin-bottom: 20px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--wl-glass-border);
}
body.kvit-site-westlive .kvit-wl-purchase__meta {
  display: grid;
  gap: 13px;
}
/* dark-theme the reused .info-row fragment inside the card */
body.kvit-site-westlive .kvit-wl-purchase__meta .info-row {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin: 0;
  padding: 0;
  background: transparent;
  border: none;
  border-radius: 0;
}
body.kvit-site-westlive .kvit-wl-purchase__meta .info-row-icon {
  position: static;
  flex: 0 0 auto;
  width: 22px;
  text-align: center;
  color: var(--wl-red-bright);
  font-size: 16px;
  margin-top: 2px;
}
body.kvit-site-westlive .kvit-wl-purchase__meta .info-row p {
  margin: 0;
  color: var(--wl-ink);
  font-size: 15px;
  line-height: 1.5;
}
body.kvit-site-westlive .kvit-wl-purchase__meta .info-row a {
  color: var(--wl-red-bright);
  font-weight: 600;
}

body.kvit-site-westlive .kvit-wl-purchase__pricing {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin-top: 18px;
}
body.kvit-site-westlive .kvit-wl-purchase__from {
  color: var(--wl-muted);
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.07em;
}
body.kvit-site-westlive .kvit-wl-purchase__amount {
  font-family: var(--wl-font-display);
  font-weight: 800;
  font-size: clamp(26px, 3.4vw, 34px);
  color: var(--wl-ink);
  letter-spacing: -0.02em;
}

body.kvit-site-westlive .kvit-wl-purchase__actions {
  display: flex;
  gap: 10px;
  margin-top: 14px;
}
body.kvit-site-westlive .kvit-wl-purchase__action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  border: 1px solid var(--wl-glass-border);
  background: var(--wl-surface-2);
  color: var(--wl-muted);
  font-size: 16px;
  text-decoration: none;
  transition: color .2s var(--wl-ease), background .2s var(--wl-ease),
              border-color .2s var(--wl-ease), transform .2s var(--wl-ease);
}
body.kvit-site-westlive .kvit-wl-purchase__action:hover,
body.kvit-site-westlive .kvit-wl-purchase__action:focus-visible {
  color: #fff;
  background: var(--wl-red);
  border-color: var(--wl-red-bright);
  transform: translateY(-2px);
}

/* the buy control (seat-teaser CTA or add-to-cart) fills the card width */
body.kvit-site-westlive .kvit-wl-eventpage .kvit-wl-seat-teaser { margin: 0; }
body.kvit-site-westlive .kvit-wl-eventpage .kvit-wl-seat-teaser__cta,
body.kvit-site-westlive .kvit-wl-eventpage #btn-add-to-cart { width: 100%; }
body.kvit-site-westlive .kvit-wl-eventpage .kvit-event-cta { margin-top: 8px; }
body.kvit-site-westlive .kvit-wl-eventpage .kvit-event-cta .row > div {
  width: 100%;
  margin-left: 0;
  float: none;
}

/* ---- responsive: collapse to one column, card stops sticking ---- */
@media (max-width: 900px) {
  body.kvit-site-westlive .kvit-wl-eventpage {
    grid-template-columns: 1fr;
  }
  body.kvit-site-westlive .kvit-wl-eventpage > .kvit-event-booking-form {
    grid-column: 1;
    grid-row: auto;
    position: static;
    top: auto;
  }
}

/* ============================================================================
 * West Live event page — NO description (no .kvit-wl-about): the EventCartel
 * 2-col layout would leave the whole left column empty with the purchase card
 * stranded on the right. Collapse to a single, centered purchase column.
 * Selectors carry the full .kvit-event-layout scope so they out-specify the
 * base two-column shell rules above.
 * ========================================================================== */
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-layout.kvit-wl-eventpage:not(:has(.kvit-wl-about)) {
  grid-template-columns: minmax(0, 540px);
  justify-content: center;
}
body.kvit-site-westlive.kvit-event-page:not(.kvit-event-subpage) .kvit-event-layout.kvit-wl-eventpage:not(:has(.kvit-wl-about)) > .kvit-event-booking-form {
  grid-column: 1;
  grid-row: 1;
  position: static;
  width: 100%;
}

/* ============================================================================
 * West Live — theme pretix's default modals/dialogs (.modal-card) to the dark
 * brand. Stock is a WHITE card with a PURPLE icon rail — jarring on the dark
 * site. One restyle covers them all: cart-expire/extend, "nothing to add",
 * cookie consent, popup-window, ajax error, lightbox, loading.
 * ========================================================================== */
body.kvit-site-westlive dialog.modal-card,
body.kvit-site-westlive .modal-wrapper .modal-card {
  background: var(--wl-surface-1) !important;
  color: var(--wl-ink);
  border: 1px solid var(--wl-glass-border);
  border-radius: 18px;
  box-shadow: 0 30px 80px -24px rgba(0, 0, 0, 0.85), 0 0 60px -16px var(--wl-glow-soft);
  overflow: hidden;
}
body.kvit-site-westlive dialog.modal-card::backdrop,
body.kvit-site-westlive .modal-wrapper {
  background: rgba(6, 6, 7, 0.74);
  -webkit-backdrop-filter: blur(5px);
  backdrop-filter: blur(5px);
}
/* icon rail: purple -> West Live red */
body.kvit-site-westlive .modal-card-icon {
  background: linear-gradient(160deg, var(--wl-red), var(--wl-red-deep)) !important;
  color: #fff !important;
}
body.kvit-site-westlive .modal-card-icon .fa,
body.kvit-site-westlive .modal-card-icon .big-icon,
body.kvit-site-westlive .modal-card-icon span {
  color: #fff !important;
}
body dialog#loadingmodal.modal-card {
  width: auto;
  max-width: none;
  margin-top: 18vh;
  background: transparent !important;
  border-radius: 0;
  box-shadow: none !important;
}
body #loadingmodal .modal-card-inner {
  display: flex !important;
  align-items: center;
  justify-content: center;
  width: auto !important;
  min-width: 0 !important;
  min-height: 0 !important;
  padding: 0 !important;
  background: transparent !important;
}
body #loadingmodal .modal-card-icon .fa {
  display: none !important;
}
body #loadingmodal .modal-card-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 128px !important;
  min-width: 0 !important;
  height: 96px !important;
  min-height: 0;
  padding: 0 !important;
  background: none !important;
  border-radius: 0 !important;
  color: transparent !important;
  overflow: visible !important;
}
body #loadingmodal .modal-card-icon::before {
  content: "";
  display: block;
  width: 120px;
  height: 90px;
  background: url("fire-loader.38ab80ca21a1.gif") center/contain no-repeat;
}
body #loadingmodal .modal-card-content {
  display: none !important;
}
body #loadingmodal.modal-card,
body #loadingmodal .modal-card-inner,
body #loadingmodal .modal-card-icon,
body #loadingmodal .modal-card-content {
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
}
body #loadingmodal.modal-card {
  appearance: none !important;
  -webkit-appearance: none !important;
  overflow: visible !important;
  padding: 0 !important;
}
body #loadingmodal .modal-card-icon::after {
  content: none !important;
}
body.kvit-site-unow dialog#loadingmodal.modal-card,
body.full-screen-seating.kvit-site-unow dialog#loadingmodal.modal-card,
body.kvit-site-westlive dialog#loadingmodal.modal-card {
  background: transparent !important;
}
body.kvit-site-unow dialog#loadingmodal.modal-card::backdrop,
body.full-screen-seating.kvit-site-unow dialog#loadingmodal.modal-card::backdrop {
  background: rgba(255, 255, 255, 0.72) !important;
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}
body.kvit-site-westlive dialog#loadingmodal.modal-card::backdrop {
  background: rgba(6, 6, 7, 0.72) !important;
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}
@media (max-width: 900px) {
  body #loadingmodal.modal-card {
    margin: 0 !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
  }
  body #loadingmodal .modal-card-icon::before {
    width: 104px;
    height: 78px;
  }
}
body .fa.fa-cog.fa-spin,
body .fa.fa-spinner.fa-spin {
  display: inline-block;
  width: 24px;
  height: 18px;
  background: url("fire-loader.38ab80ca21a1.gif") center/contain no-repeat;
  color: transparent !important;
  font-size: 0 !important;
  line-height: 1 !important;
  vertical-align: -0.2em;
}
body .fa.fa-cog.fa-spin::before,
body .fa.fa-spinner.fa-spin::before {
  content: "" !important;
}
body.kvit-site-westlive .modal-card-content {
  background: transparent !important;
  color: var(--wl-ink);
}
body.kvit-site-westlive .modal-card-title,
body.kvit-site-westlive .modal-card-content .h3,
body.kvit-site-westlive .modal-card-content h2 {
  color: #fff !important;
}
body.kvit-site-westlive .modal-card-description,
body.kvit-site-westlive .modal-card .text,
body.kvit-site-westlive .modal-card .text-muted,
body.kvit-site-westlive .modal-card-content p,
body.kvit-site-westlive .modal-card-content label,
body.kvit-site-westlive .modal-card .help-block {
  color: var(--wl-muted) !important;
}
body.kvit-site-westlive .modal-card a:not(.btn) {
  color: var(--wl-primary);
}
/* secondary buttons in modals (cookie "decline", lightbox close, popup link) */
body.kvit-site-westlive .modal-card .btn-default {
  background: var(--wl-surface-2) !important;
  border: 1px solid var(--wl-glass-border) !important;
  color: var(--wl-ink) !important;
}

/* ===========================================================================
   WEST LIVE — SEATING EDITOR (control backoffice) — "Nocturnal Elite" theme
   Visual-only restyle of /control/.../seating/. No JS logic changed.
   Scoped to the editor page via body:has(.seating-editor); the --wl-* tokens
   are re-declared here because the body.kvit-site-westlive marker that
   normally defines them is absent on control pages.
   =========================================================================== */
body:has(.seating-editor),
.ap-modal-backdrop {
  /* LIGHT editor palette (was the dark "Nocturnal Elite"); red brand kept */
  --wl-bg: #f4f5f7;
  --wl-surface-1: #ffffff;
  --wl-surface-2: #ffffff;
  --wl-surface-low: #f1f5f9;
  --wl-ink: #0f172a;
  --wl-muted: #475569;
  --wl-dim: #94a3b8;
  --wl-outline: #cbd5e1;
  --wl-primary: #c8071a;
  --wl-red: #c8071a;
  --wl-red-bright: #e11d2e;
  --wl-red-deep: #8e0512;
  --wl-glass-border: #e2e8f0;
  --wl-glow: rgba(200, 7, 26, 0.28);
  --wl-glow-soft: rgba(200, 7, 26, 0.12);
  --wl-status-few: #ffb800;
  --wl-r: 4px;
  --wl-r-lg: 10px;
  --wl-r-xl: 14px;
  --wl-font-display: "Unbounded", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --wl-font-body: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --wl-ease: cubic-bezier(0.16, 1, 0.3, 1);
}

/* ---- page chrome on the editor route -------------------------------------- */
body:has(.seating-editor) #page-wrapper { background: var(--wl-bg) !important; }
body:has(.seating-editor) .seating-editor { color: var(--wl-ink); font-family: var(--wl-font-body); }
body:has(.seating-editor) .seating-editor label { color: var(--wl-ink); }
body:has(.seating-editor) .seating-editor .help-block,
body:has(.seating-editor) .seating-editor .text-muted { color: var(--wl-muted) !important; }
body:has(.seating-editor) .seating-editor hr { border-top-color: var(--wl-glass-border); }
body:has(.seating-editor) .seating-editor .form-control,
body:has(.seating-editor) .seating-editor select.form-control,
body:has(.seating-editor) .seating-editor input[type="search"],
body:has(.seating-editor) .seating-editor textarea.form-control {
  background: var(--wl-surface-low);
  color: var(--wl-ink);
  border: 1px solid var(--wl-glass-border);
}
body:has(.seating-editor) .seating-editor .form-control::placeholder { color: var(--wl-dim); }
body:has(.seating-editor) .seating-editor .form-control:focus {
  border-color: var(--wl-red);
  box-shadow: 0 0 0 3px var(--wl-glow-soft);
}

/* ---- immersive full-screen: hide LEFT nav only, keep top bar -------------- */
body:has(.seating-editor > #se-nav-toggle:checked) .navbar-default.sidebar { display: none; }
body:has(.seating-editor > #se-nav-toggle:checked) #page-wrapper {
  margin-left: 0 !important;
  border-left: 0 !important;
  padding-left: 0;
  padding-right: 0;
}
body:has(.seating-editor > #se-nav-toggle:checked) .seating-editor { padding: 0 14px; }
body:has(.seating-editor > #se-nav-toggle:checked) .seating-canvas {
  height: calc(100vh - 156px) !important;
  max-height: none !important;
}
body:has(.seating-editor > #se-nav-toggle:checked) .seating-panel {
  max-height: calc(100vh - 156px) !important;
}
body:has(.seating-editor > #se-nav-toggle:not(:checked)) .seating-canvas { height: calc(100vh - 176px); }

/* hamburger FAB (fixed) — toggles the left nav */
.se-nav-fab {
  position: fixed;
  top: 62px;
  left: 14px;
  z-index: 1041;
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--wl-surface-2);
  border: 1px solid var(--wl-glass-border);
  border-radius: var(--wl-r-lg);
  cursor: pointer;
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.14);
  transition: border-color 0.15s var(--wl-ease), box-shadow 0.25s var(--wl-ease),
              left 0.2s var(--wl-ease), transform 0.08s ease;
}
.se-nav-fab:hover { border-color: var(--wl-outline); box-shadow: 0 6px 24px var(--wl-glow-soft); }
.se-nav-fab:active { transform: translateY(1px); }
.se-nav-fab-bars {
  position: relative;
  display: block;
  width: 20px;
  height: 2px;
  background: var(--wl-ink);
  border-radius: 2px;
  transition: background 0.2s var(--wl-ease);
}
.se-nav-fab-bars::before,
.se-nav-fab-bars::after {
  content: "";
  position: absolute;
  left: 0;
  display: block;
  width: 20px;
  height: 2px;
  background: var(--wl-ink);
  border-radius: 2px;
  transition: transform 0.2s var(--wl-ease), top 0.2s var(--wl-ease);
}
.se-nav-fab-bars::before { top: -6px; }
.se-nav-fab-bars::after { top: 6px; }
/* nav shown → morph bars into an X and slide the FAB clear of the menu */
body:has(.seating-editor > #se-nav-toggle:not(:checked)) .se-nav-fab { left: 266px; }
body:has(.seating-editor > #se-nav-toggle:not(:checked)) .se-nav-fab-bars { background: transparent; }
body:has(.seating-editor > #se-nav-toggle:not(:checked)) .se-nav-fab-bars::before { top: 0; transform: rotate(45deg); }
body:has(.seating-editor > #se-nav-toggle:not(:checked)) .se-nav-fab-bars::after { top: 0; transform: rotate(-45deg); }

/* optional: collapse the right panel for a true full-map view */
.seating-canvas .se-panel-fab {
  position: absolute;
  top: 30px;
  right: 8px;
  z-index: 6;
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--wl-surface-2);
  border: 1px solid var(--wl-glass-border);
  color: var(--wl-ink);
  border-radius: var(--wl-r-lg);
  cursor: pointer;
  opacity: 0.6;
  transition: opacity 0.15s var(--wl-ease), border-color 0.15s var(--wl-ease);
}
.seating-canvas .se-panel-fab:hover { opacity: 1; border-color: var(--wl-outline); }
.seating-body:has(#se-panel-toggle:checked) .seating-panel { display: none; }

/* ---- toolbar shell + clusters -------------------------------------------- */
body:has(.seating-editor) .seating-toolbar {
  background: var(--wl-surface-2) !important;
  border: 1px solid var(--wl-glass-border);
  border-radius: var(--wl-r-lg);
  box-shadow: 0 4px 16px rgba(15, 23, 42, 0.06);
}
body:has(.seating-editor) .seating-toolbar .toolbar-row-main { border-bottom: 1px solid var(--wl-glass-border); }
body:has(.seating-editor) .toolbar-divider { background: var(--wl-glass-border); height: 34px; }
body:has(.seating-editor) .toolbar-hint {
  background: var(--wl-surface-low);
  color: var(--wl-muted);
  border-top: 1px solid var(--wl-glass-border);
}
body:has(.seating-editor) .toolbar-hint .fa { color: var(--wl-primary); }
.seating-editor .tb-cluster {
  display: inline-flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 4px;
  min-height: 48px;
}
.seating-editor .tb-cluster-label {
  font: 600 9px/1 var(--wl-font-display);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--wl-dim);
  padding-left: 3px;
  white-space: nowrap;
  user-select: none;
}

/* mode pills (segmented) */
body:has(.seating-editor) .btn-group-modes {
  background: var(--wl-surface-low) !important;
  border-color: var(--wl-glass-border) !important;
}
body:has(.seating-editor) .btn-group-modes > .btn { color: var(--wl-ink); }
body:has(.seating-editor) .btn-group-modes > .btn:hover:not(.active):not(:disabled) { background: rgba(15, 23, 42, 0.05); }
body:has(.seating-editor) .btn-group-modes > .btn.active {
  background: var(--wl-red) !important;
  color: #fff !important;
  box-shadow: 0 1px 3px rgba(200, 7, 26, 0.45) !important;
}
body:has(.seating-editor) .btn-group-modes > .btn.active .fa { color: #fff; }

/* history / zoom / snap icon tracks */
body:has(.seating-editor) .toolbar-view .btn-group {
  background: var(--wl-surface-low) !important;
  border-color: var(--wl-glass-border) !important;
}
body:has(.seating-editor) .toolbar-view .btn-group > .btn { color: var(--wl-ink); }
body:has(.seating-editor) .toolbar-view .btn-group > .btn:hover:not(:disabled) { background: rgba(15, 23, 42, 0.05); }
body:has(.seating-editor) .grid-size-select {
  background: var(--wl-surface-low) !important;
  color: var(--wl-ink) !important;
  border-color: var(--wl-glass-border) !important;
}

/* draw + seat-shape buttons */
body:has(.seating-editor) .btn-group-draw .btn,
body:has(.seating-editor) .btn-group-seat-shape .btn {
  background: var(--wl-surface-low) !important;
  color: var(--wl-ink) !important;
  border-color: var(--wl-glass-border) !important;
}
body:has(.seating-editor) .btn-group-draw .btn:hover:not(.active):not(:disabled),
body:has(.seating-editor) .btn-group-seat-shape .btn:hover:not(.active):not(:disabled) {
  background: #f1f5f9 !important;
  border-color: var(--wl-outline) !important;
}
body:has(.seating-editor) .btn-group-draw .btn.active,
body:has(.seating-editor) .btn-group-seat-shape .btn.active {
  background: var(--wl-red) !important;
  color: #fff !important;
  border-color: var(--wl-red) !important;
}

/* FILE cluster buttons + links */
body:has(.seating-editor) .toolbar-files .btn,
body:has(.seating-editor) .toolbar-files a.btn {
  background: var(--wl-surface-2) !important;
  color: var(--wl-ink) !important;
  border-color: var(--wl-glass-border) !important;
}
body:has(.seating-editor) .toolbar-files .btn:hover:not(:disabled),
body:has(.seating-editor) .toolbar-files a.btn:hover {
  background: #eef1f5 !important;
  border-color: var(--wl-outline) !important;
  color: #0f172a !important;
}
/* Auto-price = ghost accent */
body:has(.seating-editor) #btn-auto-price {
  background: transparent !important;
  color: var(--wl-primary) !important;
  border: 1px solid var(--wl-outline) !important;
}
body:has(.seating-editor) #btn-auto-price .fa { color: var(--wl-primary) !important; }
body:has(.seating-editor) #btn-auto-price:hover:not(:disabled) {
  background: var(--wl-red) !important;
  color: #fff !important;
  border-color: var(--wl-red) !important;
}
body:has(.seating-editor) #btn-auto-price:hover:not(:disabled) .fa { color: #fff !important; }
/* Delete = danger ghost */
body:has(.seating-editor) #btn-delete-plan {
  background: #fff !important;
  color: var(--wl-red) !important;
  border: 1px solid var(--wl-glass-border) !important;
}
body:has(.seating-editor) #btn-delete-plan .fa { color: var(--wl-red) !important; }
body:has(.seating-editor) #btn-delete-plan:hover:not(:disabled) {
  background: #fdecec !important;
  border-color: var(--wl-red) !important;
  color: var(--wl-red) !important;
}

/* Save = solid red primary */
body:has(.seating-editor) #btn-save {
  background: var(--wl-red) !important;
  border: 1px solid var(--wl-red) !important;
  color: #fff !important;
  font-family: var(--wl-font-display);
  transition: transform 0.2s var(--wl-ease), box-shadow 0.3s var(--wl-ease), background 0.2s var(--wl-ease);
}
body:has(.seating-editor) #btn-save .fa { color: #fff; }
body:has(.seating-editor) #btn-save:hover:not(:disabled) {
  background: var(--wl-red-bright) !important;
  border-color: var(--wl-red-bright) !important;
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(200, 7, 26, 0.3) !important;
}
body:has(.seating-editor) #btn-save:disabled { opacity: 0.5; }

/* dirty indicator (amber) */
body:has(.seating-editor) .dirty-indicator {
  background: rgba(255, 184, 0, 0.12) !important;
  border-color: rgba(255, 184, 0, 0.4) !important;
  color: #ffce5c !important;
}
body:has(.seating-editor) .dirty-indicator .fa { color: var(--wl-status-few) !important; }

/* fill-area swatches + colour input */
body:has(.seating-editor) .fill-area-swatch { border-color: var(--wl-glass-border) !important; }
body:has(.seating-editor) .fill-area-swatch:hover { border-color: var(--wl-outline) !important; }
body:has(.seating-editor) .fill-area-color-label input[type="color"] { border-color: var(--wl-glass-border) !important; }

/* ---- canvas: WHITE map area inside the dark West Live frame --------------- */
/* The seat map sits on white so seat numbers, row labels, grid lines and the
   selection ring keep their original (light-canvas) colours and stay legible.
   Only the surrounding chrome (toolbar / right panel / page) is dark. */
body:has(.seating-editor) .seating-canvas {
  background: #ffffff !important;
  border: 1px solid var(--wl-glass-border);
  box-shadow: 0 4px 16px rgba(15, 23, 42, 0.06);
}

/* ---- right panel: LIGHT (white) to sit with the white canvas -------------- */
/* The dark panel theme is removed so the column keeps its original light
   styling (white bg, dark text) and matches the white map. A few West Live red
   accents are layered on so it stays cohesive with the dark red toolbar. */
/* compact, decluttered column (kept from the redesign) */
body:has(.seating-editor) .seating-panel .help-block { font-size: 11px; line-height: 1.45; }
body:has(.seating-editor) .seating-panel hr { margin: 12px 0; }
body:has(.seating-editor) .seating-panel .layers-panel,
body:has(.seating-editor) .seating-panel .zones-panel { margin: 6px 0; }
body:has(.seating-editor) .seating-panel h4,
body:has(.seating-editor) .seating-panel summary { font-family: var(--wl-font-display); }
/* West Live red accents on the light panel */
body:has(.seating-editor) .seating-panel h4::before { background: var(--wl-red); }
body:has(.seating-editor) #selected-seat-count { background: var(--wl-red) !important; color: #fff !important; }
body:has(.seating-editor) .price-row.active {
  border-color: var(--wl-red) !important;
  background: var(--wl-glow-soft) !important;
  box-shadow: 0 0 0 3px var(--wl-glow-soft) !important;
}
body:has(.seating-editor) .layer-row.is-selected {
  background: var(--wl-glow-soft) !important;
  outline-color: var(--wl-red) !important;
}
body:has(.seating-editor) .add-price-form .btn-primary {
  background: var(--wl-red) !important;
  border-color: var(--wl-red) !important;
}
body:has(.seating-editor) .add-price-form .btn-primary:hover {
  background: var(--wl-red-bright) !important;
  border-color: var(--wl-red-bright) !important;
}
body:has(.seating-editor) .text-style-buttons .btn.active,
body:has(.seating-editor) .text-align-buttons .btn.active {
  background: var(--wl-red) !important;
  color: #fff !important;
}
body:has(.seating-editor) .seating-panel input[type="range"]::-webkit-slider-thumb { background: var(--wl-red) !important; }
body:has(.seating-editor) .seating-panel input[type="range"]::-moz-range-thumb { background: var(--wl-red) !important; }

/* ---- auto-pricing modal (relocated to <body> by JS) ----------------------- */
body:has(.seating-editor) .ap-modal-backdrop { background: rgba(0, 0, 0, 0.72); }
body:has(.seating-editor) .ap-modal {
  background: var(--wl-surface-1);
  color: var(--wl-ink);
  border: 1px solid var(--wl-glass-border);
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.6), 0 0 40px var(--wl-glow-soft);
}
body:has(.seating-editor) .ap-modal label { color: var(--wl-ink); }
body:has(.seating-editor) .ap-modal .help-block,
body:has(.seating-editor) .ap-modal .text-muted { color: var(--wl-muted); }
body:has(.seating-editor) .ap-modal-header,
body:has(.seating-editor) .ap-modal-footer { border-color: var(--wl-glass-border); }
body:has(.seating-editor) .ap-modal-header .fa { color: var(--wl-primary); }
body:has(.seating-editor) .ap-modal .form-control {
  background: var(--wl-surface-low);
  color: var(--wl-ink);
  border: 1px solid var(--wl-glass-border);
}
body:has(.seating-editor) .ap-modal .form-control:focus { border-color: var(--wl-red); box-shadow: 0 0 0 3px var(--wl-glow-soft); }
body:has(.seating-editor) .ap-modal-close { color: var(--wl-muted); }
body:has(.seating-editor) .ap-modal-close:hover { color: var(--wl-ink); }
body:has(.seating-editor) .ap-ai-fields,
body:has(.seating-editor) .ap-fanzone-box {
  background: var(--wl-surface-low) !important;
  border-color: var(--wl-glass-border) !important;
  color: var(--wl-ink);
}
body:has(.seating-editor) .ap-ai-photo-head { color: var(--wl-primary) !important; }
body:has(.seating-editor) .ap-warnings,
body:has(.seating-editor) .ap-rerun-row { background: rgba(255, 184, 0, 0.12) !important; color: #92400e !important; }
body:has(.seating-editor) #ap-apply {
  background: var(--wl-red) !important;
  border-color: var(--wl-red) !important;
  color: #fff !important;
  font-family: var(--wl-font-display);
}
body:has(.seating-editor) #ap-apply:hover { background: var(--wl-red-bright) !important; box-shadow: 0 0 24px var(--wl-glow); }
body:has(.seating-editor) #ap-cancel {
  background: var(--wl-surface-2) !important;
  color: var(--wl-ink) !important;
  border: 1px solid var(--wl-glass-border) !important;
}

/* ---- accessibility: respect reduced motion -------------------------------- */
@media (prefers-reduced-motion: reduce) {
  body:has(.seating-editor) #btn-save,
  body:has(.seating-editor) .se-nav-fab,
  body:has(.seating-editor) .se-nav-fab-bars,
  body:has(.seating-editor) .se-nav-fab-bars::before,
  body:has(.seating-editor) .se-nav-fab-bars::after,
  body:has(.seating-editor) .price-row { transition: none !important; }
}

/* ===========================================================================
   SEATING EDITOR - full-width modern command surface
   Final override for the control editor page. The main admin UI remains intact.
   =========================================================================== */
body:has(.seating-editor-page) #page-wrapper {
  background:
    radial-gradient(circle at 18% 0%, rgba(200, 7, 26, 0.08), transparent 32%),
    linear-gradient(180deg, #f7f8fb 0%, #eef1f5 100%) !important;
}

body:has(.seating-editor-page) #page-wrapper .container-fluid {
  width: 100%;
  max-width: none;
  padding-left: 0;
  padding-right: 0;
}

body:has(.seating-editor-page) #page-wrapper footer {
  margin-left: 16px;
  margin-right: 16px;
}

body:has(.seating-editor-page) .seating-editor-page {
  width: 100%;
  max-width: none;
  padding: 0 16px 16px;
}

body:has(.seating-editor-page) .seating-editor {
  width: 100%;
  max-width: none;
  margin-top: 0;
  padding: 0 !important;
}

body:has(.seating-editor-page) .seating-toolbar {
  width: 100%;
  margin: 0 0 14px;
  position: sticky;
  top: 8px;
  z-index: 1040;
  overflow: hidden;
  border: 1px solid rgba(148, 163, 184, 0.38);
  border-radius: 14px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(248, 250, 252, 0.94)) !important;
  box-shadow:
    0 18px 42px rgba(15, 23, 42, 0.10),
    0 1px 0 rgba(255, 255, 255, 0.85) inset;
}

body:has(.seating-editor-page) .seating-toolbar .toolbar-row {
  display: flex;
  align-items: flex-end;
  gap: 10px;
  width: 100%;
  padding: 10px 12px;
}

body:has(.seating-editor-page) .seating-toolbar .toolbar-row-main {
  display: grid;
  grid-template-columns:
    minmax(220px, 0.65fr)
    minmax(340px, 1fr)
    minmax(220px, 0.65fr)
    minmax(390px, 1.15fr)
    minmax(470px, 1.35fr)
    minmax(144px, 0.35fr);
  grid-template-areas:
    "mode mode mode mode mode mode"
    "fill draw seat view file save";
  align-items: stretch;
  gap: 10px;
  border-bottom: 1px solid rgba(203, 213, 225, 0.82);
}

body:has(.seating-editor-page) .seating-toolbar .tb-cluster-mode { grid-area: mode; }
body:has(.seating-editor-page) .seating-toolbar .tb-cluster-fill { grid-area: fill; }
body:has(.seating-editor-page) .seating-toolbar .tb-cluster-draw { grid-area: draw; }
body:has(.seating-editor-page) .seating-toolbar .tb-cluster-seat { grid-area: seat; }
body:has(.seating-editor-page) .seating-toolbar .tb-cluster-view { grid-area: view; }
body:has(.seating-editor-page) .seating-toolbar .tb-cluster-file { grid-area: file; }

body:has(.seating-editor-page) .seating-toolbar .toolbar-divider {
  display: none;
}

body:has(.seating-editor-page) .seating-toolbar .tb-cluster {
  display: inline-flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 6px;
  min-width: 0;
  width: 100%;
  padding: 6px;
  border: 1px solid rgba(226, 232, 240, 0.9);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.68);
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.9) inset;
}

body:has(.seating-editor-page) .seating-toolbar .tb-cluster-save {
  grid-area: save;
  border-color: transparent;
  background: transparent;
  box-shadow: none;
}

body:has(.seating-editor-page) .seating-toolbar .tb-cluster-label {
  padding-left: 4px;
  color: #64748b;
  font: 700 10px/1 var(--wl-font-body);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  white-space: nowrap;
}

body:has(.seating-editor-page) .seating-toolbar .btn-group,
body:has(.seating-editor-page) .seating-toolbar .toolbar-group,
body:has(.seating-editor-page) .seating-toolbar .fill-area-color-group {
  min-height: 38px;
}

body:has(.seating-editor-page) .seating-toolbar .btn-group-modes,
body:has(.seating-editor-page) .seating-toolbar .toolbar-view .btn-group,
body:has(.seating-editor-page) .seating-toolbar .btn-group-draw,
body:has(.seating-editor-page) .seating-toolbar .btn-group-seat-shape,
body:has(.seating-editor-page) .seating-toolbar .fill-area-color-group {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 3px;
  border: 1px solid rgba(203, 213, 225, 0.85) !important;
  border-radius: 10px;
  background: #eef2f7 !important;
}

body:has(.seating-editor-page) .seating-toolbar .tb-cluster-mode .btn-group-modes {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
}

body:has(.seating-editor-page) .seating-toolbar .tb-cluster-mode .btn-group-modes > .btn {
  justify-content: center;
  min-width: 0;
}

body:has(.seating-editor-page) .seating-toolbar .btn-group-modes > .btn,
body:has(.seating-editor-page) .seating-toolbar .toolbar-view .btn-group > .btn,
body:has(.seating-editor-page) .seating-toolbar .btn-group-draw > .btn,
body:has(.seating-editor-page) .seating-toolbar .btn-group-seat-shape > .btn {
  min-width: 36px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 0 10px;
  border: 0 !important;
  border-radius: 8px !important;
  background: transparent !important;
  color: #1e293b !important;
  font-weight: 700;
  box-shadow: none !important;
  transition: background 0.16s var(--wl-ease), color 0.16s var(--wl-ease),
              box-shadow 0.16s var(--wl-ease), transform 0.08s ease;
}

body:has(.seating-editor-page) .seating-toolbar .btn-group-modes > .btn:hover:not(.active):not(:disabled),
body:has(.seating-editor-page) .seating-toolbar .toolbar-view .btn-group > .btn:hover:not(.active):not(:disabled),
body:has(.seating-editor-page) .seating-toolbar .btn-group-draw > .btn:hover:not(.active):not(:disabled),
body:has(.seating-editor-page) .seating-toolbar .btn-group-seat-shape > .btn:hover:not(.active):not(:disabled) {
  background: #ffffff !important;
  color: #0f172a !important;
  box-shadow: 0 6px 16px rgba(15, 23, 42, 0.10) !important;
}

body:has(.seating-editor-page) .seating-toolbar .btn-group-modes > .btn:active,
body:has(.seating-editor-page) .seating-toolbar .toolbar-view .btn-group > .btn:active,
body:has(.seating-editor-page) .seating-toolbar .btn-group-draw > .btn:active,
body:has(.seating-editor-page) .seating-toolbar .btn-group-seat-shape > .btn:active {
  transform: translateY(1px);
}

body:has(.seating-editor-page) .seating-toolbar .btn-group-modes > .btn.active,
body:has(.seating-editor-page) .seating-toolbar .toolbar-view .btn-group > .btn.active,
body:has(.seating-editor-page) .seating-toolbar .btn-group-draw > .btn.active,
body:has(.seating-editor-page) .seating-toolbar .btn-group-seat-shape > .btn.active {
  background: linear-gradient(135deg, var(--wl-red), var(--wl-red-bright)) !important;
  color: #fff !important;
  box-shadow: 0 8px 20px rgba(200, 7, 26, 0.28) !important;
}

body:has(.seating-editor-page) .seating-toolbar .btn.active .fa {
  color: #fff !important;
}

body:has(.seating-editor-page) .seating-toolbar .toolbar-view,
body:has(.seating-editor-page) .seating-toolbar .toolbar-files,
body:has(.seating-editor-page) .seating-toolbar .toolbar-save {
  width: 100%;
}

body:has(.seating-editor-page) .seating-toolbar .toolbar-view {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 6px;
}

body:has(.seating-editor-page) .seating-toolbar .toolbar-files {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr)) 40px;
  align-items: center;
  gap: 6px;
}

body:has(.seating-editor-page) .seating-toolbar .toolbar-files .btn,
body:has(.seating-editor-page) .seating-toolbar .toolbar-files .btn-label {
  min-width: 0;
}

body:has(.seating-editor-page) .seating-toolbar .toolbar-files .btn-label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body:has(.seating-editor-page) .seating-toolbar .toolbar-files.toolbar-files-subevent {
  grid-template-columns: repeat(4, minmax(0, 1fr)) 40px;
}

body:has(.seating-editor-page) .seating-toolbar .toolbar-save {
  display: flex;
  align-items: flex-end;
  justify-content: stretch;
}

body:has(.seating-editor-page) .seating-toolbar .toolbar-save .btn-save-action {
  width: 100%;
  justify-content: center;
}

body:has(.seating-editor-page) .seating-toolbar .toolbar-files .btn,
body:has(.seating-editor-page) .seating-toolbar .toolbar-files a.btn,
body:has(.seating-editor-page) .seating-toolbar .toolbar-save .btn {
  min-height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 8px 12px;
  border-radius: 10px !important;
  border: 1px solid rgba(203, 213, 225, 0.95) !important;
  background: #ffffff !important;
  color: #172033 !important;
  font-weight: 800;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.88) inset;
}

body:has(.seating-editor-page) .seating-toolbar .toolbar-files .btn:hover:not(:disabled),
body:has(.seating-editor-page) .seating-toolbar .toolbar-files a.btn:hover {
  background: #f8fafc !important;
  border-color: #94a3b8 !important;
  box-shadow: 0 8px 20px rgba(15, 23, 42, 0.10) !important;
}

body:has(.seating-editor-page) #btn-auto-price {
  background: linear-gradient(135deg, #0f172a 0%, var(--wl-red) 100%) !important;
  color: #fff !important;
  border-color: rgba(200, 7, 26, 0.62) !important;
  box-shadow: 0 10px 24px rgba(200, 7, 26, 0.25) !important;
}

body:has(.seating-editor-page) #btn-auto-price .fa,
body:has(.seating-editor-page) #btn-auto-price:hover .fa {
  color: #fff !important;
}

body:has(.seating-editor-page) #btn-auto-price:hover:not(:disabled) {
  background: linear-gradient(135deg, #111827 0%, var(--wl-red-bright) 100%) !important;
  color: #fff !important;
  transform: translateY(-1px);
}

body:has(.seating-editor-page) #btn-delete-plan {
  min-width: 38px;
  color: var(--wl-red) !important;
  background: #fff5f5 !important;
  border-color: rgba(200, 7, 26, 0.22) !important;
}

body:has(.seating-editor-page) #btn-delete-plan:hover:not(:disabled) {
  color: #fff !important;
  background: var(--wl-red) !important;
  border-color: var(--wl-red) !important;
}

body:has(.seating-editor-page) #btn-delete-plan:hover:not(:disabled) .fa {
  color: #fff !important;
}

body:has(.seating-editor-page) #btn-save {
  min-width: 136px;
  background: linear-gradient(135deg, var(--wl-red), var(--wl-red-bright)) !important;
  border-color: var(--wl-red) !important;
  color: #fff !important;
  box-shadow: 0 12px 26px rgba(200, 7, 26, 0.28) !important;
}

body:has(.seating-editor-page) #btn-save:hover:not(:disabled) {
  transform: translateY(-1px);
  box-shadow: 0 16px 30px rgba(200, 7, 26, 0.34) !important;
}

body:has(.seating-editor-page) #btn-save:disabled {
  filter: saturate(0.4);
  opacity: 0.58;
  box-shadow: none !important;
}

body:has(.seating-editor-page) .dirty-indicator {
  min-height: 36px;
  display: inline-flex;
  align-items: center;
  border-radius: 10px !important;
  color: #92400e !important;
  background: #fff7d6 !important;
}

body:has(.seating-editor-page) .fill-area-color-label {
  height: 30px;
  min-width: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  margin: 0;
  padding: 0 6px;
  border-radius: 8px;
  background: #fff;
}

body:has(.seating-editor-page) .fill-area-color-label input[type="color"] {
  width: 22px !important;
  height: 22px !important;
  border-radius: 7px !important;
}

body:has(.seating-editor-page) .fill-area-swatch {
  width: 24px !important;
  height: 24px !important;
  border-radius: 7px !important;
  border: 2px solid rgba(255, 255, 255, 0.92) !important;
  box-shadow: 0 0 0 1px rgba(100, 116, 139, 0.36);
}

body:has(.seating-editor-page) .fill-area-swatch:hover,
body:has(.seating-editor-page) .fill-area-swatch.active {
  box-shadow: 0 0 0 2px var(--wl-red), 0 8px 16px rgba(15, 23, 42, 0.12);
}

body:has(.seating-editor-page) .grid-size-select {
  width: 68px !important;
  height: 30px !important;
  border-radius: 8px !important;
  background: #fff !important;
}

body:has(.seating-editor-page) .toolbar-hint {
  min-height: 42px;
  border-top: 0;
  background: linear-gradient(90deg, rgba(200, 7, 26, 0.08), rgba(255, 255, 255, 0.72)) !important;
  color: #475569 !important;
}

body:has(.seating-editor-page) .seating-body {
  width: 100%;
  gap: 16px;
}

body:has(.seating-editor-page) .seating-canvas,
body:has(.seating-editor-page) .seating-panel {
  border-radius: 14px;
  border-color: rgba(203, 213, 225, 0.92);
  box-shadow: 0 16px 36px rgba(15, 23, 42, 0.08);
}

body:has(.seating-editor-page) .seating-panel {
  width: 384px;
  min-width: 340px;
  padding: 14px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(248, 250, 252, 0.96)) !important;
}

@media (max-width: 1760px) {
  body:has(.seating-editor-page) .seating-toolbar .toolbar-row-main {
    grid-template-columns: minmax(220px, 0.7fr) minmax(340px, 1fr) minmax(220px, 0.7fr) minmax(390px, 1.15fr);
    grid-template-areas:
      "mode mode mode mode"
      "fill draw seat view"
      "file file file save";
  }
}

@media (max-width: 1180px) {
  body:has(.seating-editor-page) .seating-toolbar .toolbar-row-main {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    grid-template-areas:
      "mode mode"
      "fill seat"
      "draw view"
      "file save";
  }

  body:has(.seating-editor-page) .seating-toolbar .toolbar-files {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  body:has(.seating-editor-page) .seating-toolbar .toolbar-files.toolbar-files-subevent {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 720px) {
  body:has(.seating-editor-page) .seating-toolbar .toolbar-row-main {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "mode"
      "fill"
      "draw"
      "seat"
      "view"
      "file"
      "save";
  }

  body:has(.seating-editor-page) .seating-toolbar .tb-cluster-mode .btn-group-modes,
  body:has(.seating-editor-page) .seating-toolbar .toolbar-view,
  body:has(.seating-editor-page) .seating-toolbar .toolbar-files {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body:has(.seating-editor-page) .seating-toolbar .toolbar-files.toolbar-files-subevent {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 992px) {
  body:has(.seating-editor-page) .seating-editor-page {
    padding: 0 10px 12px;
  }

  body:has(.seating-editor-page) .seating-panel {
    width: 100%;
    min-width: 0;
  }
}

@media (max-width: 680px) {
  body:has(.seating-editor-page) .seating-toolbar {
    top: 4px;
    border-radius: 12px;
  }

  body:has(.seating-editor-page) .seating-toolbar .toolbar-row {
    padding: 8px;
  }

  body:has(.seating-editor-page) .seating-toolbar .tb-cluster {
    width: 100%;
  }

  body:has(.seating-editor-page) .seating-toolbar .btn-label {
    display: none;
  }

  body:has(.seating-editor-page) .seating-toolbar .dirty-indicator .btn-label,
  body:has(.seating-editor-page) .seating-toolbar #btn-save .btn-label {
    display: inline;
  }
}

/* ---- seating editor right inspector -------------------------------------- */
body:has(.seating-editor-page) .seating-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(203, 213, 225, 0.82);
}

body:has(.seating-editor-page) .seating-panel-header h4 {
  margin: 2px 0 0 !important;
  color: #0f172a !important;
  font-size: 18px !important;
  font-weight: 900 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}

body:has(.seating-editor-page) .seating-panel-header h4::before {
  display: none !important;
}

body:has(.seating-editor-page) .panel-eyebrow {
  display: block;
  color: #94a3b8;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: 0.12em;
  line-height: 1;
  text-transform: uppercase;
}

body:has(.seating-editor-page) .panel-live-status,
body:has(.seating-editor-page) .area-status,
body:has(.seating-editor-page) .zone-ready-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  white-space: nowrap;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 900;
  line-height: 1;
}

body:has(.seating-editor-page) .panel-live-status {
  padding: 7px 10px;
  color: #166534;
  background: #dcfce7;
}

body:has(.seating-editor-page) .panel-card {
  margin-bottom: 12px;
  padding: 12px;
  border: 1px solid rgba(226, 232, 240, 0.94);
  border-radius: 12px;
  background: rgba(248, 250, 252, 0.92);
}

body:has(.seating-editor-page) .panel-card summary {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  list-style: none;
  color: #0f172a;
  font-weight: 900;
}

body:has(.seating-editor-page) .panel-card summary::-webkit-details-marker {
  display: none;
}

body:has(.seating-editor-page) .panel-card summary .fa {
  color: var(--wl-red);
}

body:has(.seating-editor-page) .panel-divider {
  height: 1px;
  margin: 16px 0;
  background: rgba(203, 213, 225, 0.82);
}

body:has(.seating-editor-page) .seating-panel .layers-list,
body:has(.seating-editor-page) .seating-panel .zones-list {
  border: 0 !important;
  background: transparent !important;
}

body:has(.seating-editor-page) .seating-panel .layer-row {
  min-height: 38px;
  margin-bottom: 6px;
  border: 1px solid rgba(226, 232, 240, 0.95) !important;
  border-radius: 10px;
  background: #fff !important;
}

body:has(.seating-editor-page) .seating-panel .layer-row:hover,
body:has(.seating-editor-page) .seating-panel .zone-row:hover {
  border-color: rgba(148, 163, 184, 0.92) !important;
  box-shadow: 0 8px 18px rgba(15, 23, 42, 0.08);
}

body:has(.seating-editor-page) .seating-panel .layer-row.is-selected {
  border-color: rgba(200, 7, 26, 0.62) !important;
  background: rgba(200, 7, 26, 0.08) !important;
  outline: 0 !important;
  box-shadow: 0 0 0 3px rgba(200, 7, 26, 0.12);
}

body:has(.seating-editor-page) .area-inspector-card {
  margin: 14px 0 12px;
  padding: 14px;
  border: 1px solid rgba(226, 232, 240, 0.96);
  border-radius: 12px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(248, 250, 252, 0.96));
  box-shadow: 0 10px 22px rgba(15, 23, 42, 0.06);
}

body:has(.seating-editor-page) .area-inspector-card.is-ready {
  border-color: rgba(22, 163, 74, 0.38);
  box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.08), 0 10px 22px rgba(15, 23, 42, 0.06);
}

body:has(.seating-editor-page) .area-inspector-card.is-warning {
  border-color: rgba(245, 158, 11, 0.42);
}

body:has(.seating-editor-page) .area-inspector-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 12px;
}

body:has(.seating-editor-page) .area-inspector-head strong {
  display: block;
  max-width: 210px;
  overflow: hidden;
  color: #0f172a;
  font-size: 15px;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body:has(.seating-editor-page) .area-status {
  padding: 7px 10px;
}

body:has(.seating-editor-page) .area-status-empty {
  color: #64748b;
  background: #f1f5f9;
}

body:has(.seating-editor-page) .area-status-ready {
  color: #166534;
  background: #dcfce7;
}

body:has(.seating-editor-page) .area-status-warning {
  color: #92400e;
  background: #fef3c7;
}

body:has(.seating-editor-page) .area-inspector-metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 10px;
}

body:has(.seating-editor-page) .area-inspector-metrics > div {
  min-width: 0;
  padding: 10px 8px;
  border: 1px solid rgba(226, 232, 240, 0.94);
  border-radius: 10px;
  background: #fff;
}

body:has(.seating-editor-page) .area-inspector-metrics span {
  display: block;
  overflow: hidden;
  color: #0f172a;
  font-size: 14px;
  font-weight: 900;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body:has(.seating-editor-page) .area-inspector-metrics small {
  display: block;
  margin-top: 3px;
  color: #94a3b8;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

body:has(.seating-editor-page) .area-inspector-hint {
  margin: 0;
  color: #64748b;
  font-size: 12px;
  line-height: 1.45;
}

body:has(.seating-editor-page) .seating-panel .zone-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  min-height: 58px;
  margin-bottom: 8px;
  padding: 9px;
  border: 1px solid rgba(226, 232, 240, 0.95);
  border-radius: 11px;
  background: #fff;
  cursor: pointer;
  transition: border-color 0.16s var(--wl-ease), background 0.16s var(--wl-ease),
              box-shadow 0.16s var(--wl-ease), transform 0.08s ease;
}

body:has(.seating-editor-page) .seating-panel .zone-row:active {
  transform: translateY(1px);
}

body:has(.seating-editor-page) .seating-panel .zone-row.is-active {
  border-color: rgba(200, 7, 26, 0.66);
  background: rgba(200, 7, 26, 0.08);
  box-shadow: 0 0 0 3px rgba(200, 7, 26, 0.12);
}

body:has(.seating-editor-page) .seating-panel .zone-status {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: 0;
  border-radius: 50%;
  color: #64748b;
  background: #f1f5f9;
  cursor: pointer;
}

body:has(.seating-editor-page) .seating-panel .zone-row.is-ready .zone-status {
  color: #fff;
  background: #16a34a;
}

body:has(.seating-editor-page) .seating-panel .zone-row.is-partial .zone-status {
  color: #92400e;
  background: #fef3c7;
}

body:has(.seating-editor-page) .seating-panel .zone-row-body {
  min-width: 0;
}

body:has(.seating-editor-page) .seating-panel .zone-name-input {
  width: 100%;
  min-width: 0;
  height: 30px;
  margin-bottom: 4px;
  border-color: transparent !important;
  background: transparent !important;
  color: #0f172a !important;
  font-weight: 900;
  box-shadow: none !important;
}

body:has(.seating-editor-page) .seating-panel .zone-name-input:focus {
  border-color: rgba(200, 7, 26, 0.48) !important;
  background: #fff !important;
  box-shadow: 0 0 0 3px rgba(200, 7, 26, 0.12) !important;
}

body:has(.seating-editor-page) .seating-panel .zone-meta {
  display: block;
  overflow: hidden;
  color: #64748b !important;
  white-space: nowrap;
  text-overflow: ellipsis;
}

body:has(.seating-editor-page) .seating-panel .zone-ready-badge {
  max-width: 96px;
  padding: 7px 9px;
  border: 0;
  overflow: hidden;
  color: #64748b;
  background: #f1f5f9;
  cursor: pointer;
  text-overflow: ellipsis;
}

body:has(.seating-editor-page) .seating-panel .is-ready .zone-ready-badge {
  color: #166534;
  background: #dcfce7;
}

body:has(.seating-editor-page) .seating-panel .is-partial .zone-ready-badge {
  color: #92400e;
  background: #fef3c7;
}

body:has(.seating-editor-page) .area-editor-box,
body:has(.seating-editor-page) .seat-search,
body:has(.seating-editor-page) .bulk-actions,
body:has(.seating-editor-page) .shortcut-help,
body:has(.seating-editor-page) .add-price-form,
body:has(.seating-editor-page) .text-editor-box {
  border-radius: 12px !important;
  border-color: rgba(226, 232, 240, 0.94) !important;
  background: rgba(248, 250, 252, 0.92) !important;
}

body:has(.seating-editor-page) .row-bend-tool {
  border-top-color: rgba(203, 213, 225, 0.9);
}

body:has(.seating-editor-page) #btn-bend-row {
  color: var(--wl-red) !important;
  background: #fff !important;
  border-color: rgba(200, 7, 26, 0.28) !important;
}

body:has(.seating-editor-page) #btn-bend-row:hover:not(:disabled) {
  color: var(--wl-red) !important;
  background: rgba(200, 7, 26, 0.08) !important;
  border-color: var(--wl-red) !important;
}

body:has(.seating-editor-page) #btn-bend-row:focus-visible,
body:has(.seating-editor-page) .row-bend-direction .btn:focus-visible,
body:has(.seating-editor-page) .row-bend-actions .btn:focus-visible {
  outline: 0;
  box-shadow: 0 0 0 3px rgba(200, 7, 26, 0.18) !important;
}

body:has(.seating-editor-page) .row-bend-controls {
  border-color: rgba(226, 232, 240, 0.96);
  background: #fff;
}

body:has(.seating-editor-page) .row-bend-direction .btn {
  color: #475569;
  border-color: rgba(203, 213, 225, 0.95);
  background: #f8fafc;
}

body:has(.seating-editor-page) .row-bend-direction .btn:hover:not(:disabled) {
  color: var(--wl-red);
  border-color: var(--wl-red);
}

body:has(.seating-editor-page) .row-bend-direction .btn.active,
body:has(.seating-editor-page) .row-bend-direction .btn[aria-pressed="true"] {
  color: var(--wl-red) !important;
  border-color: var(--wl-red) !important;
  background: rgba(200, 7, 26, 0.08) !important;
  box-shadow: inset 0 0 0 1px var(--wl-red) !important;
}

body:has(.seating-editor-page) .row-bend-depth-fields input[type="range"]:focus-visible {
  outline-color: var(--wl-red);
}

body:has(.seating-editor-page) #btn-row-bend-apply {
  color: #fff !important;
  background: var(--wl-red) !important;
  border-color: var(--wl-red) !important;
}

body:has(.seating-editor-page) #btn-row-bend-apply:hover:not(:disabled) {
  background: var(--wl-red-bright) !important;
  border-color: var(--wl-red-bright) !important;
}

body:has(.seating-editor-page) #seating-svg .row-bend-guide,
body:has(.seating-editor-page) #seating-svg .row-bend-stem {
  stroke: var(--wl-red);
}

body:has(.seating-editor-page) #seating-svg .row-bend-handle {
  fill: #fff;
  stroke: var(--wl-red);
  touch-action: none;
  user-select: none;
}

/* ═══════════════════════════════════════════════════════════════════════
   UNOW — white seat-map theme (body.kvit-site-unow)
   ═══════════════════════════════════════════════════════════════════════
   The white "UNOW" redesign (Figma, 1218px reference) of the standalone
   seat-selection page (presale:event.seatingplan → seatingplan.html).
   Activated per request by SeatingPlanView via
   context['seatframe_brand'] = 'unow' — flip that back to 'westlive' to
   restore the dark West Live seat page (its header markup and the CSS
   sections above stay untouched).

   Scoping: every rule sits under body.kvit-site-unow (page chrome) or
   body.full-screen-seating.kvit-site-unow … .pretix-seating-renderer
   (map internals). The extra .pretix-seating-renderer hop is deliberate:
   seating.css is linked from map.html INSIDE <body>, i.e. later in
   document order than this sheet, so we must win on specificity, not on
   order. It also guarantees the embedded event-page map (no body classes)
   is unaffected. */
body.kvit-site-unow {
  color-scheme: light;
  --unow-red: #e7000b;                       /* brand red — active pill, CTA */
  --unow-red-hover: #c50009;
  --unow-red-ring: #991b1b;                  /* selected-seat ring */
  --unow-red-border: rgba(231, 0, 11, 0.2);  /* locale pill-group border */
  --unow-ink: #101828;                       /* titles, prices, TOTAL */
  --unow-ink-2: #364153;                     /* category / selection labels */
  --unow-muted: #6a7282;                     /* back link, meta, toolbar icons */
  --unow-label: #99a1af;                     /* uppercase section labels */
  --unow-hint: #9ca3af;                      /* canvas hint, row labels */
  --unow-border: #e5e7eb;                    /* header / toolbar / rail borders */
  --unow-border-soft: #f3f4f6;               /* section dividers */
  --unow-canvas: #f3f4f6;                    /* map background */
  --unow-unavailable: #d1d5db;               /* unavailable seat fill */
  --unow-pill-blue: #3b82f6;                 /* selection-pill fallback (Figma) */
  --unow-rail-w: 288px;
  --unow-r-sm: 4px;
  --unow-r-cta: 14px;
  --unow-font: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  background: #ffffff;
  color: var(--unow-ink);
  font-family: var(--unow-font);
}
body.full-screen-seating.kvit-site-unow {
  background: #ffffff !important;
  color-scheme: light;
}

/* ── UNOW header: row 1 — back / logo / locale pills ─────────────────── */
body.kvit-site-unow .kvit-unow-head {
  background: #ffffff;
}
body.kvit-site-unow .kvit-unow-head__row--main {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  min-height: 71px;
  padding: 0 24px;
  border-bottom: 1px solid var(--unow-border);
}
/* Room for the close (×) button the widget injects at the top-right when the
   page runs inside the buyer-facing iframe overlay. */
body.kvit-site-unow .kvit-unow-head--iframe .kvit-unow-head__row--main {
  padding-right: 68px;
}
body.kvit-site-unow .kvit-unow-back {
  justify-self: start;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--unow-red);
  font-size: 16px;
  font-weight: 600;
  text-decoration: none;
  transition: color 0.15s ease;
}
body.kvit-site-unow .kvit-unow-back:hover,
body.kvit-site-unow .kvit-unow-back:focus {
  color: var(--unow-red-hover);
  text-decoration: none;
}
body.kvit-site-unow .kvit-unow-logo {
  justify-self: center;
  display: block;
  height: 28px;
  width: auto;
}
body.kvit-site-unow .kvit-unow-logo-wrap {
  justify-self: center;
  position: relative;
  display: grid;
  place-items: center;
  width: 112px;
  max-width: 30vw;
  height: 28px;
  background: #fff;
}
body.kvit-site-unow .kvit-unow-logo--video {
  width: 112px;
  max-width: 30vw;
  object-fit: cover;
  object-position: center;
  background: #fff;
}
body.kvit-site-unow .kvit-unow-logo--static {
  display: none;
  width: 112px;
  max-width: 30vw;
}
body.kvit-site-unow .kvit-unow-logo--mobile-animated {
  display: none;
}
body.kvit-site-unow .kvit-unow-head__spacer {
  justify-self: end;
}
body.kvit-site-unow .kvit-unow-locales {
  justify-self: end;
}
body.kvit-site-unow .kvit-unow-locales ul {
  display: flex;
  align-items: center;
  gap: 2px;
  margin: 0;
  padding: 3px;
  list-style: none;
  border: 1px solid var(--unow-red-border);
  border-radius: 9999px;
}
body.kvit-site-unow .kvit-unow-locales li {
  display: block;
}
body.kvit-site-unow .kvit-unow-locales a {
  display: inline-block;
  min-width: 44px;
  padding: 6px 14px;
  border-radius: 9999px;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-align: center;
  text-decoration: none;
  color: var(--unow-red) !important;
  background: transparent;
  transition: background 0.15s ease, color 0.15s ease;
}
body.kvit-site-unow .kvit-unow-locales a:hover,
body.kvit-site-unow .kvit-unow-locales a:focus {
  background: rgba(231, 0, 11, 0.08);
  text-decoration: none;
}
body.kvit-site-unow .kvit-unow-locales a.active {
  background: var(--unow-red);
  color: #ffffff !important;
}

/* ── UNOW header: row 2 — event title + date · venue ─────────────────── */
body.kvit-site-unow .kvit-unow-head__row--event {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-height: 41px;
  padding: 6px 24px;
  border-bottom: 1px solid var(--unow-border-soft);
}
body.kvit-site-unow .kvit-unow-event-title {
  color: var(--unow-ink);
  font-size: 15px;
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.kvit-site-unow .kvit-unow-event-meta {
  display: flex;
  align-items: center;
  gap: 18px;
  color: var(--unow-muted);
  font-size: 13px;
  white-space: nowrap;
}
body.kvit-site-unow .kvit-unow-event-meta .fa {
  margin-right: 4px;
  font-size: 12px;
}

/* ── UNOW "More info" pill + event-rules slide-over dialog ───────────── */
/* The pill sits right after the event title; the auto margin pins the
   date/venue to the right of the shared row. Scoped to the pill's sibling:
   the same header renders WITHOUT the pill on the checkout/order pages, and
   there a lone wrapped meta line (mobile) must stay left-aligned as before. */
body.kvit-site-unow .kvit-unow-info-btn + .kvit-unow-event-meta {
  margin-left: auto;
}
body.kvit-site-unow .kvit-unow-info-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex: 0 0 auto;
  margin: 0;
  padding: 3px 14px;
  border: 1px solid var(--unow-border);
  border-radius: 9999px;
  background: #ffffff;
  color: var(--unow-ink-2);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.5;
  cursor: pointer;
  transition: border-color 0.15s ease, color 0.15s ease;
}
body.kvit-site-unow .kvit-unow-info-btn:hover,
body.kvit-site-unow .kvit-unow-info-btn:focus {
  border-color: var(--unow-muted);
  color: var(--unow-ink);
}
body.kvit-site-unow .kvit-unow-info-btn .fa {
  font-size: 13px;
  color: var(--unow-red);
}
body.kvit-event-rules-open {
  overflow: hidden;
}
body.kvit-site-unow .kvit-event-rules {
  position: fixed;
  inset: 0;
  z-index: 1050;
}
body.kvit-site-unow .kvit-event-rules[hidden] {
  display: none;
}
body.kvit-site-unow .kvit-event-rules__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(16, 24, 40, 0.45);
}
body.kvit-site-unow .kvit-event-rules__panel {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  display: flex;
  flex-direction: column;
  width: min(440px, 100%);
  background: #ffffff;
  box-shadow: -12px 0 40px rgba(16, 24, 40, 0.18);
  animation: kvit-event-rules-in 0.2s ease;
}
@keyframes kvit-event-rules-in {
  from { transform: translateX(32px); opacity: 0; }
  to   { transform: none; opacity: 1; }
}
body.kvit-site-unow .kvit-event-rules__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 24px;
  border-bottom: 1px solid var(--unow-border-soft);
}
body.kvit-site-unow .kvit-event-rules__title {
  margin: 0;
  color: var(--unow-ink);
  font-size: 18px;
  font-weight: 700;
}
body.kvit-site-unow .kvit-event-rules__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  margin: -6px -8px -6px 0;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--unow-muted);
  font-size: 16px;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}
body.kvit-site-unow .kvit-event-rules__close:hover,
body.kvit-site-unow .kvit-event-rules__close:focus {
  background: var(--unow-border-soft);
  color: var(--unow-ink);
}
body.kvit-site-unow .kvit-event-rules__list {
  flex: 1 1 auto;
  margin: 0;
  padding: 4px 24px 24px;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
body.kvit-site-unow .kvit-event-rules__row {
  padding: 14px 0;
  border-bottom: 1px solid var(--unow-border-soft);
}
body.kvit-site-unow .kvit-event-rules__row:last-child {
  border-bottom: 0;
}
body.kvit-site-unow .kvit-event-rules__row dt {
  margin: 0 0 4px;
  color: var(--unow-ink);
  font-size: 13px;
  font-weight: 700;
}
body.kvit-site-unow .kvit-event-rules__row dd {
  margin: 0;
  color: var(--unow-ink-2);
  font-size: 14px;
  line-height: 1.55;
}
body.kvit-site-unow .kvit-event-rules__poster-row {
  padding-top: 18px;
  border-bottom: 0;
}
body.kvit-site-unow .kvit-event-rules__poster-row dd {
  display: flex;
  justify-content: center;
}
body.kvit-site-unow .kvit-event-rules__poster {
  display: block;
  width: min(100%, 260px);
  height: auto;
  object-fit: contain;
  border-radius: 14px;
  box-shadow: 0 14px 34px rgba(16, 24, 40, 0.18);
}

/* ── Map stage, toolbar, canvas (all widths) ─────────────────────────── */
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-stage {
  position: relative;
  background: #ffffff;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-toolbar {
  gap: 8px;
  min-height: 47px;
  padding: 8px 12px;
  background: #ffffff;
  backdrop-filter: none;
  border-bottom: 1px solid var(--unow-border);
}
/* The buttons ship with textual glyphs (+ / − / ⛆); font-size:0 hides those
   and the ::before FontAwesome icons below replace them (FA4 is loaded on
   this page through main.scss). */
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-toolbar .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  padding: 0;
  border: 1px solid var(--unow-border);
  border-radius: var(--unow-r-sm);
  background: #ffffff;
  color: var(--unow-muted);
  font-size: 0;
  line-height: 1;
  box-shadow: none;
  transform: none;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-toolbar .btn:hover,
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-toolbar .btn:focus {
  border-color: var(--unow-hint);
  color: var(--unow-ink-2);
  box-shadow: none;
  transform: none;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-toolbar .btn::before {
  font: normal normal normal 14px/1 FontAwesome;
  -webkit-font-smoothing: antialiased;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-toolbar .btn[data-action="zoom-in"]::before {
  content: "\f00e";
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-toolbar .btn[data-action="zoom-out"]::before {
  content: "\f010";
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-toolbar .btn[data-action="zoom-fit"]::before {
  content: "\f047";
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-svg-wrapper {
  background: var(--unow-canvas);
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-tooltip {
  background: #ffffff;
  color: var(--unow-ink);
  border: 1px solid var(--unow-border);
  box-shadow: 0 8px 24px rgba(16, 24, 40, 0.12);
}

/* ── Seats & plan shapes on the light canvas ─────────────────────────── */
/* seating.js marks the selected seat with SVG *presentation attributes*
   (setAttribute('stroke', '#0f172a')), which CSS properties override. If the
   JS is ever refactored to set el.style.stroke, this rule stops applying. */
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seat[aria-pressed="true"] {
  stroke: var(--unow-red-ring);
  stroke-width: 1.7px;
}
/* Chrome draws its blue UA focus ring on the clicked <circle> (outline:auto on
   :focus) over the red selection ring — drop it for pointer focus, keep a
   visible indicator for keyboard users. */
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seat:focus {
  outline: none;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seat:focus-visible {
  outline: 2px solid var(--unow-red-ring);
  outline-offset: 2px;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seat--unavailable {
  fill: var(--unow-unavailable);
  opacity: 0.4;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .row-label {
  fill: var(--unow-hint);
}
/* Keep plan captions legible on white: plans authored for the dark WL map may
   carry light editor-chosen text colors. This flattens them to the Figma gray. */
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .plan-text-area {
  fill: #6b7280;
}

/* ── Sidebar content (all widths) ────────────────────────────────────── */
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-sidebar {
  background: #ffffff;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-legend {
  display: none;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-sidebar-title {
  margin: 0 0 8px;
  color: var(--unow-label);
  font-size: 12px;
  letter-spacing: 0.08em;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-categories li {
  gap: 10px;
  padding: 7px 0;
  border-bottom: 0;
  font-size: 14px;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-categories .legend-swatch {
  width: 12px;
  height: 12px;
  box-shadow: none;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-categories .legend-label {
  color: var(--unow-ink-2);
  font-weight: 400;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-categories .legend-price {
  color: var(--unow-ink);
  font-weight: 600;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-selection-empty {
  color: var(--unow-hint);
}
/* Figma rows have no colour dot — the price pill carries the category colour
   (--seat-cat-color is set per row by seating.js; blue is the mock fallback). */
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-selection-item {
  grid-template-columns: 1fr auto auto;
  padding: 6px 0;
  border-bottom: 0;
  font-size: 14px;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-selection-item--stepper {
  grid-template-columns: 1fr auto auto auto;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-selection-swatch {
  display: none;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-selection-info {
  color: var(--unow-ink-2);
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-selection-price {
  background: var(--seat-cat-color, var(--unow-pill-blue));
  color: #ffffff;
  font-size: 11px;
  font-weight: 600;
  line-height: 1;
  padding: 4px 9px;
  border-radius: 9999px;
}
/* No price on the line (e.g. seat category without a mapped product) — don't
   render a blank coloured lozenge. */
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-selection-price:empty {
  display: none;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-total {
  background: none;
  border: 0;
  border-radius: 0;
  padding: 4px 0 0;
  margin-top: 0;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-total-label {
  color: var(--unow-ink);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.04em;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-total-value {
  color: var(--unow-ink);
  font-size: 16px;
  font-weight: 700;
}
/* the buyer must not miss this: amber warning chip instead of muted text */
body.full-screen-seating.kvit-site-unow .seating-fee-note {
  display: flex;
  align-items: flex-start;
  gap: 5px;
  margin: 10px 0 0;
  padding: 8px 9px;
  border-radius: 10px;
  background: #fffbeb;
  border: 1px solid #fee685;
  color: #bb4d00;
  font-size: 10.5px;
  line-height: 1.25;
  font-weight: 500;
  white-space: nowrap;
}
body.full-screen-seating.kvit-site-unow .seating-fee-note .fa {
  margin-top: 1px;
  color: #fe9a00;
}
/* Localised "Tickets" heading over the non-seat product list (GA plans). */
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products-title {
  margin: 12px 0 8px;
  color: var(--unow-label);
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
/* Same i18n fix as West Live: the category's own heading is a plain string
   that would not translate on language switch — the title above replaces it. */
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products .item-category > .h3,
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products .item-category > h3 {
  display: none;
}
/* Bootstrap floats the name/price/stepper columns, which collide in the narrow
   rail (the stepper overflows past the right edge). Same grid fix as the West
   Live section above, in the light palette: name spans the top, price (left)
   and stepper (right) share the row below. */
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products .product-row {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  column-gap: 12px;
  row-gap: 6px;
  background: #ffffff;
  border: 1px solid var(--unow-border);
  border-radius: 12px;
  margin-bottom: 10px;
  padding: 12px 14px;
  color: var(--unow-ink);
}
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products .product-row::before,
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products .product-row::after {
  content: none;
}
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products .product-row > [class*="col-"] {
  float: none;
  width: auto;
  max-width: none;
  min-height: 0;
  padding-left: 0;
  padding-right: 0;
}
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products .product-row > [class*="col-"]:not(.price):not(.availability-box) {
  grid-column: 1 / -1;
}
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products .product-row > .price {
  grid-column: 1;
  justify-self: start;
  color: var(--unow-ink);
  font-weight: 600;
}
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products .product-row > .availability-box {
  grid-column: 2;
  justify-self: end;
}
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products .product-row h4,
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products .product-row .h4,
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products .product-row h5,
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products .product-row .h5 {
  color: var(--unow-ink-2);
  font-size: 14px;
  font-weight: 600;
}
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products .product-description,
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products .product-description p,
body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products .product-description small {
  color: var(--unow-muted);
}

/* ── CTA button (all widths) ─────────────────────────────────────────── */
/* !important: the per-event generated css_theme stylesheet also colours
   .btn-primary and loads after this sheet. */
body.full-screen-seating.kvit-site-unow #btn-add-to-cart {
  background: var(--unow-red) !important;
  border-color: var(--unow-red) !important;
  color: #ffffff !important;
  min-height: 48px;
  border-radius: var(--unow-r-cta);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  box-shadow: none;
}
body.full-screen-seating.kvit-site-unow #btn-add-to-cart:hover,
body.full-screen-seating.kvit-site-unow #btn-add-to-cart:focus {
  background: var(--unow-red-hover) !important;
  border-color: var(--unow-red-hover) !important;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-frame-deadline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 0 0 10px;
  padding: 10px 12px;
  border: 1px solid var(--unow-border);
  border-radius: 12px;
  background: #f9fafb;
  color: var(--unow-ink);
}
body.full-screen-seating.kvit-site-unow .pretix-seating-frame-deadline-label {
  min-width: 0;
  color: var(--unow-muted);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.25;
}
body.full-screen-seating.kvit-site-unow .pretix-seating-frame-deadline #cart-deadline-short {
  flex: 0 0 auto;
  color: var(--unow-red);
  font-size: 18px;
  font-variant-numeric: tabular-nums;
  font-weight: 800;
  line-height: 1;
}

body.full-screen-seating.kvit-site-westlive .pretix-seating-frame-deadline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 0 0 10px;
  padding: 10px 12px;
  border: 1px solid var(--wl-glass-border);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.08);
  color: var(--wl-ink);
}
body.full-screen-seating.kvit-site-westlive .pretix-seating-frame-deadline-label {
  min-width: 0;
  color: var(--wl-muted);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.25;
}
body.full-screen-seating.kvit-site-westlive .pretix-seating-frame-deadline #cart-deadline-short {
  flex: 0 0 auto;
  color: var(--wl-red-bright);
  font-size: 18px;
  font-variant-numeric: tabular-nums;
  font-weight: 800;
  line-height: 1;
}

/* ── Desktop app shell: map left, 288px rail right, CTA under the rail ─ */
/* Same mechanism as the West Live desktop layout above: grid the <form> and
   collapse the renderer with display:contents so stage / rail / products /
   CTA share one grid. seating.js never measures the renderer box. */
@media (min-width: 901px) {
  body.full-screen-seating.kvit-site-unow {
    display: flex;
    flex-direction: column;
    height: 100vh;
    height: 100dvh;
    overflow: hidden;
  }
  body.full-screen-seating.kvit-site-unow form:has(> .pretix-seating-renderer) {
    flex: 1 1 auto;
    min-height: 0;
    display: grid;
    grid-template-columns: minmax(0, 1fr) var(--unow-rail-w);
    grid-template-rows: minmax(0, 1fr) auto;
    grid-template-areas:
      "stage rail"
      "stage cta";
    gap: 0;
    margin: 0;
    padding: 0;
    align-items: stretch;
  }
  body.full-screen-seating.kvit-site-unow.kvit-wl-seatframe-has-ga form:has(> .pretix-seating-renderer) {
    grid-template-rows: minmax(0, 1fr) auto auto;
    grid-template-areas:
      "stage rail"
      "stage products"
      "stage cta";
  }
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer {
    display: contents;
  }
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-stage {
    grid-area: stage;
    height: auto;
    max-height: none;
    min-height: 0;
  }
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-svg-wrapper {
    min-height: 0;
  }
  /* Hint sits in the toolbar strip (stock placement, right-aligned): static
     there, it can never cover the plan (real plans fill the canvas top where
     the mock had empty space) and never follows the page when the tall
     widget iframe scrolls. */
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-toolbar .seating-hint {
    margin-left: auto;
    color: var(--unow-hint);
    font-size: 12px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-sidebar {
    grid-area: rail;
    display: flex;
    flex-direction: column;
    /* base seating.css sets align-items:start for its grid — in this flex
       column that would shrink every section to content width */
    align-items: stretch;
    gap: 0;
    padding: 16px;
    border-left: 1px solid var(--unow-border);
    overflow-y: auto;
    min-height: 0;
    scrollbar-width: thin;
    scrollbar-color: var(--unow-border) transparent;
  }
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-sidebar-col + .seating-sidebar-col::before {
    content: none;
  }
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-sidebar-col + .seating-sidebar-col {
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px solid var(--unow-border-soft);
  }
  /* The selection section absorbs free space and scrolls internally … */
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-sidebar-col:nth-child(2) {
    flex: 1 1 auto;
    min-height: 0;
  }
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-sidebar-col:nth-child(2) .seating-selection {
    flex: 1 1 auto;
    min-height: 0;
    max-height: none;
    overflow-y: auto;
  }
  /* … and Summary hugs the bottom of the rail (keeps its divider border). */
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-sidebar-col:last-child {
    margin-top: auto;
  }
  body.full-screen-seating.kvit-site-unow.kvit-wl-seatframe-has-ga .kvit-wl-seatframe-products {
    grid-area: products;
    margin: 0;
    padding: 0 16px 12px;
    max-width: none;
    max-height: 42vh;
    overflow-y: auto;
    background: #ffffff;
    border-left: 1px solid var(--unow-border);
  }
  body.full-screen-seating.kvit-site-unow .pretix-seating-frame-cta {
    grid-area: cta;
    position: static;
    width: auto;
    max-width: none;
    margin: 0;
    padding: 12px 16px 16px;
    background: #ffffff;
    border-top: 0;
    border-left: 1px solid var(--unow-border);
    box-shadow: none;
  }
}

/* ── Mobile / tablet: document flow, sidebar below the map, sticky CTA ─ */
/* The header rules are deliberately NOT scoped to .full-screen-seating: the
   same kvit-unow-head component is reused on the UNOW checkout pages. */
@media (max-width: 900px) {
  body.kvit-site-unow .kvit-unow-head__row--main {
    min-height: 56px;
    padding: 0 16px;
  }
  body.kvit-site-unow .kvit-unow-head--iframe .kvit-unow-head__row--main {
    padding-right: 60px;
  }
  body.kvit-site-unow .kvit-unow-logo {
    height: 22px;
  }
  body.kvit-site-unow .kvit-unow-logo-wrap,
  body.kvit-site-unow .kvit-unow-logo--video,
  body.kvit-site-unow .kvit-unow-logo--static {
    width: 88px;
    max-width: 28vw;
  }
  /* Mobile browsers can refuse to autoplay the video, leaving the poster or
     first frame looking like a static logo. Swap in the animated raster image,
     which is not governed by video autoplay policy. */
  body.kvit-site-unow .kvit-unow-logo--video {
    display: none;
  }
  body.kvit-site-unow .kvit-unow-logo--mobile-animated {
    display: block;
    width: 88px;
    max-width: 28vw;
    height: 22px;
    background: #fff;
  }
  body.kvit-site-unow .kvit-unow-logo--mobile-animated img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    background: #fff;
  }
  body.kvit-site-unow .kvit-unow-back {
    font-size: 14px;
  }
  body.kvit-site-unow .kvit-unow-locales a {
    min-width: 38px;
    padding: 5px 10px;
    font-size: 12px;
  }
  body.kvit-site-unow .kvit-unow-head__row--event {
    flex-wrap: wrap;
    row-gap: 2px;
    padding: 8px 16px;
  }
  body.kvit-site-unow .kvit-unow-event-title {
    flex: 1 1 100%;
    white-space: normal;
  }
  body.kvit-site-unow .kvit-unow-event-meta {
    flex-wrap: wrap;
    gap: 4px 14px;
    font-size: 12px;
    white-space: normal;
  }
  /* Title wraps to a full row above, so the pill shares the second row with
     the right-pinned meta. */
  body.kvit-site-unow .kvit-unow-info-btn {
    padding: 2px 11px;
    font-size: 12px;
  }
  body.kvit-site-unow .kvit-event-rules__head {
    padding: 14px 16px;
  }
  body.kvit-site-unow .kvit-event-rules__list {
    padding: 2px 16px 16px;
  }
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer {
    gap: 0;
  }
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-stage {
    height: clamp(300px, 45vh, 560px);
    max-height: none;
    min-height: 0;
    border-bottom: 1px solid var(--unow-border);
  }
  /* Photo-only plans need no tall map — leave room for the product list. */
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer[data-photo-only="1"] .seating-stage {
    height: clamp(180px, 32vh, 340px);
  }
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-svg-wrapper {
    min-height: 0;
  }
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-toolbar .seating-hint {
    display: none;
  }
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-sidebar {
    grid-template-columns: 1fr;
    gap: 0;
    padding: 12px 16px;
  }
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-sidebar-col + .seating-sidebar-col::before {
    content: none;
  }
  body.full-screen-seating.kvit-site-unow .pretix-seating-renderer .seating-sidebar-col + .seating-sidebar-col {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--unow-border-soft);
  }
  body.full-screen-seating.kvit-site-unow .kvit-wl-seatframe-products {
    margin: 0;
    padding: 0 16px;
    max-width: none;
  }
  /* Base seating.css already makes the CTA sticky at ≤900px (with
     safe-area-inset padding) — just repaint the chrome white. */
  body.full-screen-seating.kvit-site-unow .pretix-seating-frame-cta {
    background: #ffffff;
    border-top: 1px solid var(--unow-border);
    box-shadow: 0 -8px 24px rgba(16, 24, 40, 0.06);
  }
}

/* ── UNOW checkout (body.kvit-unow-checkout) — page 2 of the redesign ──── */
/* Activated by the unow_checkout context flag (presale/context.py) on
   /checkout/… pages of West Live requests: the body carries
   kvit-site-unow kvit-unow-checkout and deliberately NOT kvit-site-westlive /
   kvit-event-page, so the dark WL checkout section and the event-page button
   gradients above never engage. checkout_base.html renders the shared
   kvit-unow-head header; the stock chrome below is hidden. */
body.kvit-site-unow.kvit-unow-checkout {
  background: #f9fafb;
}
body.kvit-site-unow.kvit-unow-checkout .page-header-links,
body.kvit-site-unow.kvit-unow-checkout .kvit-event-header-compact,
body.kvit-site-unow.kvit-unow-checkout footer {
  display: none;
}
/* "Checkout" page heading: keep it for screen readers (the stepper carries
   the visual context, matching the mock). :has(.checkout-flow) limits this to
   the checkout steps — the order pages share the body class but their
   #content > h2 is the visible "Order XXXXX" headline. */
body.kvit-site-unow.kvit-unow-checkout #content:has(.checkout-flow) > h2 {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
body.kvit-site-unow.kvit-unow-checkout .container.main-box {
  max-width: 1040px;
  padding-top: 8px;
  background: transparent;
  border: 0;
  box-shadow: none;
}
/* Same declutter pass as the WL checkout: the preamble filler, the long email
   helptext and the visible "required" tags (kept for screen readers). */
body.kvit-site-unow.kvit-unow-checkout #content:has(#questions_group) > p {
  display: none;
}
body.kvit-site-unow.kvit-unow-checkout #contact .form-group:not(.has-error) .help-block {
  display: none;
}
/* field errors render as .help-block too (CheckoutFieldRenderer) — the email
   verification flow talks to the buyer exclusively through them, so they must
   stay visible (the field's own helptext resurfaces alongside, which helps) */
body.kvit-site-unow.kvit-unow-checkout #contact .has-error .help-block {
  margin: 6px 0 0;
  color: #c10007;
  font-size: 13px;
}
body.kvit-site-unow.kvit-unow-checkout .label-required {
  position: absolute !important;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  border: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
}

/* ── Alerts (test-mode banner per the mock; others stay light) ─────────── */
/* !important throughout: the base kvit alert palette above (line ~334) and the
   stock pretix icon-tile ::before both use !important / stronger defaults. */
body.kvit-site-unow.kvit-unow-checkout .alert {
  border-radius: 14px !important;
  box-shadow: none;
}
body.kvit-site-unow.kvit-unow-checkout .alert-warning {
  position: relative;
  background: #fffbeb !important;
  border: 1px solid #fee685 !important;
  color: #bb4d00 !important;
  padding: 16px 20px 16px 48px;
}
body.kvit-site-unow.kvit-unow-checkout .alert-warning::before {
  content: "\f071" !important;
  font: normal normal normal 16px/1 FontAwesome !important;
  color: #fe9a00 !important;
  position: absolute;
  left: 18px !important;
  top: 19px !important;
  right: auto !important;
  bottom: auto !important;
  width: auto !important;
  height: auto !important;
  padding: 0 !important;
  margin: 0 !important;
  background: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  display: block !important;
}
body.kvit-site-unow.kvit-unow-checkout .alert-warning p {
  margin: 0 0 4px;
}
body.kvit-site-unow.kvit-unow-checkout .alert-warning p:last-child {
  margin: 0;
}
body.kvit-site-unow.kvit-unow-checkout .alert-warning strong {
  color: #973c00;
}
body.kvit-site-unow.kvit-unow-checkout .alert-warning a {
  color: #bb4d00;
  text-decoration: underline;
}
/* the other alert flavours get the same soft treatment as the banner above */
body.kvit-site-unow.kvit-unow-checkout .alert-success,
body.kvit-site-unow.kvit-unow-checkout .alert-info,
body.kvit-site-unow.kvit-unow-checkout .alert-danger {
  position: relative;
  padding: 16px 20px 16px 48px;
}
body.kvit-site-unow.kvit-unow-checkout .alert-success {
  background: #f0fdf4 !important;
  border: 1px solid #b9f8cf !important;
  color: #008236 !important;
}
/* Only the added-to-cart flash dismisses itself after ~4s (CartAdd tags it
   with kvit-flash-autodismiss via messages extra_tags). Other success
   messages — "We sent a verification code…" — must stay until acted on. */
body.kvit-site-unow.kvit-unow-checkout .alert-success.kvit-flash-autodismiss {
  max-height: 500px;
  overflow: hidden;
  animation: unowFlashDismiss 0.35s ease 3.65s forwards;
}
body.kvit-site-unow.kvit-unow-checkout .alert-info {
  background: #eff6ff !important;
  border: 1px solid #bedbff !important;
  color: #193cb8 !important;
}
body.kvit-site-unow.kvit-unow-checkout .alert-danger {
  background: #fef2f2 !important;
  border: 1px solid #ffc9c9 !important;
  color: #c10007 !important;
}
body.kvit-site-unow.kvit-unow-checkout .alert-success::before,
body.kvit-site-unow.kvit-unow-checkout .alert-info::before,
body.kvit-site-unow.kvit-unow-checkout .alert-danger::before {
  font: normal normal normal 16px/1 FontAwesome !important;
  position: absolute;
  left: 18px !important;
  top: 19px !important;
  right: auto !important;
  bottom: auto !important;
  width: auto !important;
  height: auto !important;
  padding: 0 !important;
  margin: 0 !important;
  background: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  display: block !important;
}
body.kvit-site-unow.kvit-unow-checkout .alert-success::before {
  content: "\f00c" !important;
  color: #00a63e !important;
}
body.kvit-site-unow.kvit-unow-checkout .alert-info::before {
  content: "\f05a" !important;
  color: #2b7fff !important;
}
body.kvit-site-unow.kvit-unow-checkout .alert-danger::before {
  content: "\f06a" !important;
  color: #fb2c36 !important;
}
@keyframes unowFlashDismiss {
  from { opacity: 1; }
  to {
    opacity: 0;
    max-height: 0;
    margin-top: 0;
    margin-bottom: 0;
    padding-top: 0;
    padding-bottom: 0;
    border-width: 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  body.kvit-site-unow.kvit-unow-checkout .alert-success.kvit-flash-autodismiss {
    animation-duration: 0.01s;
  }
}

/* ── Stepper: numbered circles + labels, hairline connectors ───────────── */
body.kvit-site-unow.kvit-unow-checkout .checkout-flow {
  counter-reset: unow-step;
  display: grid;
  grid-template-columns: max-content minmax(80px, 1fr) max-content;
  column-gap: 20px;
  align-items: center;
  list-style: none;
  margin: 20px 0 24px;
  padding: 0;
  border: 0;
  background: none;
}
body.kvit-site-unow.kvit-unow-checkout .checkout-flow::after,
body.kvit-site-unow.kvit-unow-checkout .checkout-step::before,
body.kvit-site-unow.kvit-unow-checkout .checkout-step::after {
  content: none;
}
body.kvit-site-unow.kvit-unow-checkout .checkout-flow::before {
  content: "";
  grid-column: 2;
  grid-row: 1;
  display: block;
  height: 2px;
  border-radius: 999px;
  background: linear-gradient(90deg, transparent 0, var(--unow-border) 12px, var(--unow-border) calc(100% - 12px), transparent 100%);
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.85);
}
body.kvit-site-unow.kvit-unow-checkout .checkout-flow:has(.checkout-step[data-step="payment"].step-current)::before,
body.kvit-site-unow.kvit-unow-checkout .checkout-flow:has(.checkout-step[data-step="payment"].step-done)::before,
/* free/approval carts: Review stands in for the payment chip (see below) */
body.kvit-site-unow.kvit-unow-checkout .checkout-flow:not(:has(.checkout-step[data-step="payment"])):has(.checkout-step[data-step="confirm"].step-current)::before {
  background: linear-gradient(90deg, rgba(231, 0, 11, 0), rgba(231, 0, 11, 0.34) 12px, #ffa2a2 calc(100% - 12px), rgba(231, 0, 11, 0));
}
body.kvit-site-unow.kvit-unow-checkout .checkout-step {
  counter-increment: unow-step;
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
}
/* The two chips are placed by step IDENTITY, not list position: the flow can
   gain AddOns/Customer/Membership items before Questions, and position-based
   rules would then pin the wrong steps into the grid slots. */
body.kvit-site-unow.kvit-unow-checkout .checkout-step[data-step="questions"] {
  grid-column: 1;
  grid-row: 1;
}
body.kvit-site-unow.kvit-unow-checkout .checkout-step[data-step="payment"] {
  grid-column: 3;
  grid-row: 1;
}
body.kvit-site-unow.kvit-unow-checkout .checkout-step > a {
  display: flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
}
body.kvit-site-unow.kvit-unow-checkout .checkout-step:not(:first-child) {
  flex: 0 0 auto;
}
body.kvit-site-unow.kvit-unow-checkout .checkout-step-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 24px;
  width: 24px;
  height: 24px;
  border: 0;
  border-radius: 50%;
  background: var(--unow-border);
  color: var(--unow-muted);
  font-size: 12px;
  font-weight: 600;
  box-shadow: none;
}
/* the stock FA glyphs are replaced by the step number (check mark when done) */
body.kvit-site-unow.kvit-unow-checkout .checkout-step-icon .fa {
  display: none;
}
body.kvit-site-unow.kvit-unow-checkout .checkout-step-icon::before {
  content: counter(unow-step);
}
body.kvit-site-unow.kvit-unow-checkout .step-current .checkout-step-icon,
body.kvit-site-unow.kvit-unow-checkout .step-done .checkout-step-icon {
  background: var(--unow-red);
  color: #ffffff;
}
body.kvit-site-unow.kvit-unow-checkout .step-done .checkout-step-icon::before {
  content: "\f00c";
  font: normal normal normal 11px/1 FontAwesome;
}
body.kvit-site-unow.kvit-unow-checkout .checkout-step-label {
  color: var(--unow-label);
  font-size: 14px;
  font-weight: 500;
  white-space: nowrap;
}
body.kvit-site-unow.kvit-unow-checkout .step-current .checkout-step-label {
  color: var(--unow-ink);
  font-weight: 600;
}
@media (max-width: 540px) {
  body.kvit-site-unow.kvit-unow-checkout .checkout-flow {
    grid-template-columns: max-content minmax(24px, 1fr) max-content;
    column-gap: 12px;
  }
  body.kvit-site-unow.kvit-unow-checkout .checkout-step,
  body.kvit-site-unow.kvit-unow-checkout .checkout-step > a {
    gap: 8px;
  }
  body.kvit-site-unow.kvit-unow-checkout .checkout-step-label {
    font-size: 13px;
  }
}

/* ── Cards (details.panel sections) ────────────────────────────────────── */
/* !important on border/radius/background: the base kvit .panel/.panel-heading
   rules near the top of this sheet enforce their palette with !important. */
body.kvit-site-unow.kvit-unow-checkout .panel {
  background: #ffffff;
  border: 1px solid var(--unow-border) !important;
  border-radius: 14px !important;
  box-shadow: none;
  margin-bottom: 16px;
  overflow: hidden;
}
/* …except cards hosting the phone-prefix combobox: its dropdown is a
   position:absolute panel that overflow:hidden clips to a sliver (same
   exception the base .panel rule near the top of the sheet carries) */
body.kvit-site-unow.kvit-unow-checkout .panel:has(.kvit-combobox) {
  overflow: visible;
}
/* color: bootstrap paints .panel-primary headings white-on-blue */
body.kvit-site-unow.kvit-unow-checkout .panel-heading {
  background: #ffffff !important;
  border: 0;
  border-bottom: 1px solid var(--unow-border-soft) !important;
  border-radius: 14px 14px 0 0;
  padding: 16px 20px;
  color: var(--unow-ink);
}
body.kvit-site-unow.kvit-unow-checkout details:not([open]) > summary.panel-heading {
  border-bottom: 0 !important;
}
body.kvit-site-unow.kvit-unow-checkout .panel-title {
  margin: 0;
  color: var(--unow-ink);
  font-size: 16px;
  font-weight: 600;
}
body.kvit-site-unow.kvit-unow-checkout summary.panel-heading {
  position: relative;
  cursor: pointer;
  list-style: none;
  padding-right: 48px;
}
body.kvit-site-unow.kvit-unow-checkout summary.panel-heading::-webkit-details-marker {
  display: none;
}
body.kvit-site-unow.kvit-unow-checkout summary.panel-heading::after {
  content: "\f107";
  font: normal normal normal 15px/1 FontAwesome;
  color: var(--unow-hint);
  position: absolute;
  right: 20px;
  top: 50%;
  transform: translateY(-50%);
}
body.kvit-site-unow.kvit-unow-checkout details[open] > summary.panel-heading::after {
  content: "\f106";
}
body.kvit-site-unow.kvit-unow-checkout .panel-body {
  padding: 14px 20px 20px;
}
body.kvit-site-unow.kvit-unow-checkout .panel a:not(.btn) {
  color: var(--unow-red);
  text-decoration: underline;
}

/* ── Forms: stack the horizontal layout, light inputs ──────────────────── */
body.kvit-site-unow.kvit-unow-checkout .form-horizontal .form-group {
  display: block;
  margin: 0 0 16px;
}
body.kvit-site-unow.kvit-unow-checkout .form-horizontal .control-label,
body.kvit-site-unow.kvit-unow-checkout .form-horizontal .form-group > [class*="col-"] {
  float: none;
  display: block;
  width: 100%;
  padding-left: 0;
  padding-right: 0;
  text-align: left;
}
body.kvit-site-unow.kvit-unow-checkout .form-horizontal .control-label {
  padding-top: 0;
  margin-bottom: 6px;
  color: var(--unow-ink-2);
  font-size: 14px;
  font-weight: 500;
}
body.kvit-site-unow.kvit-unow-checkout .form-control {
  height: 42px;
  padding: 8px 14px;
  background: #ffffff;
  border: 1px solid #d1d5dc;
  border-radius: 10px;
  box-shadow: none;
  color: var(--unow-ink);
}
body.kvit-site-unow.kvit-unow-checkout textarea.form-control {
  height: auto;
}
body.kvit-site-unow.kvit-unow-checkout .form-control:focus {
  border-color: var(--unow-red);
  box-shadow: 0 0 0 3px rgba(231, 0, 11, 0.1);
  outline: none;
}
body.kvit-site-unow.kvit-unow-checkout .help-block {
  color: var(--unow-muted);
  font-size: 12.5px;
}
body.kvit-site-unow.kvit-unow-checkout .checkbox label,
body.kvit-site-unow.kvit-unow-checkout .radio label {
  color: #4a5565;
}
body.kvit-site-unow.kvit-unow-checkout input[type="checkbox"],
body.kvit-site-unow.kvit-unow-checkout input[type="radio"] {
  accent-color: var(--unow-red);
}

/* ── Email verification (kvit-westlive-checkout.js keeps its selectors) ── */
body.kvit-site-unow.kvit-unow-checkout .btn-default.kvit-wl-sendcode {
  background: #ffffff;
  border: 1px solid rgba(231, 0, 11, 0.35);
  border-radius: 10px;
  box-shadow: 0 0 0 3px rgba(231, 0, 11, 0.04);
  color: var(--unow-red);
  font-weight: 600;
  padding: 9px 16px;
}
body.kvit-site-unow.kvit-unow-checkout .btn-default.kvit-wl-sendcode:hover,
body.kvit-site-unow.kvit-unow-checkout .btn-default.kvit-wl-sendcode:focus {
  background: #fff7f7;
  border-color: rgba(231, 0, 11, 0.55);
  color: var(--unow-red-hover);
  box-shadow: 0 0 0 3px rgba(231, 0, 11, 0.08);
}
body.kvit-site-unow.kvit-unow-checkout #contact .form-group:has(input[name="email_verification_code"]) {
  padding: 14px 16px;
  border: 1px solid rgba(231, 0, 11, 0.16);
  border-radius: 10px;
  background: #fffafa;
}

/* ── Action buttons: Go back left, red Continue right ──────────────────── */
body.kvit-site-unow.kvit-unow-checkout .checkout-button-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  margin: 24px 0 8px;
}
body.kvit-site-unow.kvit-unow-checkout .checkout-button-row::before,
body.kvit-site-unow.kvit-unow-checkout .checkout-button-row::after {
  content: none;
}
body.kvit-site-unow.kvit-unow-checkout .checkout-button-row > [class*="col-"] {
  float: none;
  width: auto;
  margin: 0;
  padding: 0;
}
/* the trailing bootstrap clearfix would become a third flex item and steal
   the space-between slot from the Continue button */
body.kvit-site-unow.kvit-unow-checkout .checkout-button-row > .clearfix {
  display: none;
}
body.kvit-site-unow.kvit-unow-checkout .checkout-button-row .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  min-height: 44px;
  padding: 10px 24px;
  border-radius: 10px;
  font-size: 15px;
  font-weight: 600;
  box-shadow: none;
  text-transform: none;
}
body.kvit-site-unow.kvit-unow-checkout .btn-default {
  background: #ffffff;
  border: 1px solid #d1d5dc;
  color: var(--unow-ink-2);
  box-shadow: none;
}
body.kvit-site-unow.kvit-unow-checkout .btn-default:hover,
body.kvit-site-unow.kvit-unow-checkout .btn-default:focus {
  background: #ffffff;
  border-color: var(--unow-hint);
  color: var(--unow-ink);
}
/* !important: the per-event generated css_theme stylesheet also colours
   .btn-primary and loads after this sheet (same as the seat-map CTA). */
body.kvit-site-unow.kvit-unow-checkout .btn-primary {
  background: var(--unow-red) !important;
  border-color: var(--unow-red) !important;
  color: #ffffff !important;
  box-shadow: none;
}
body.kvit-site-unow.kvit-unow-checkout .btn-primary:hover,
body.kvit-site-unow.kvit-unow-checkout .btn-primary:focus {
  background: var(--unow-red-hover) !important;
  border-color: var(--unow-red-hover) !important;
}

/* ── "Your cart" card ───────────────────────────────────────────────────── */
body.kvit-site-unow.kvit-unow-checkout .panel.cart .panel-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 15px;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .panel-title > span:first-child {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .panel-title .fa-shopping-cart {
  color: var(--unow-red);
  font-size: 14px;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .panel-title > span[aria-hidden] {
  margin-left: auto;
}
body.kvit-site-unow.kvit-unow-checkout #cart-deadline-short {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--unow-red);
  font-size: 14px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
body.kvit-site-unow.kvit-unow-checkout #cart-deadline-short::before {
  content: "\f017";
  font: normal normal normal 13px/1 FontAwesome;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart > summary.panel-heading {
  padding: 14px 44px 14px 16px;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart > summary.panel-heading::after {
  color: var(--unow-red);
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .panel-body {
  padding: 4px 16px 14px;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-checkout-cart-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
  padding: 10px 0 12px;
  border-bottom: 1px solid var(--unow-border-soft);
}
body.kvit-site-unow.kvit-unow-checkout .kvit-checkout-cart-actions form {
  margin: 0;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-checkout-cart-edit {
  min-height: 36px;
  padding: 7px 13px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 700;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-checkout-cart-clear {
  min-height: 36px;
  padding: 7px 10px;
  border-radius: 999px;
  color: var(--unow-muted);
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-checkout-cart-clear:hover,
body.kvit-site-unow.kvit-unow-checkout .kvit-checkout-cart-clear:focus {
  background: rgba(231, 0, 11, 0.08);
  color: var(--unow-red);
  text-decoration: none;
}
/* rows: name (+details) left, qty, line total right; unit price dropped —
   same reflow the WL sidebar uses, in the light palette */
body.kvit-site-unow.kvit-unow-checkout .panel.cart .sneak-peek-trigger {
  display: none !important;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .sneak-peek-content {
  max-height: none !important;
  overflow: visible !important;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row {
  display: flex !important;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 2px 8px;
  margin: 0;
  padding: 10px 0;
  border-bottom: 1px solid var(--unow-border-soft);
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-rowgroup-total .cart-row {
  border-bottom: 0;
  padding: 10px 0 2px;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row > .product {
  flex: 1 1 auto;
  width: auto !important;
  min-width: 0;
  padding: 0;
  color: var(--unow-ink);
  font-size: 14px;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row .product strong {
  color: var(--unow-ink);
  font-weight: 600;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row .product dl,
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row .product .text-muted {
  margin: 0;
  color: var(--unow-muted);
  font-size: 12.5px;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row > .count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 2px;
  flex: 0 0 auto;
  width: auto !important;
  min-width: 90px;
  order: 2;
  padding: 0;
  color: var(--unow-muted);
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row > .count form {
  display: inline-flex;
  margin: 0;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row .kvit-cart-line-count {
  min-width: 16px;
  text-align: center;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row.has-seat > .count {
  order: 4;
  min-width: 36px;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row.has-seat > .count .kvit-cart-line-count {
  display: none;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row > .singleprice {
  display: none !important;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row > .totalprice {
  flex: 0 0 auto;
  width: auto !important;
  order: 3;
  margin-left: auto;
  padding: 0;
  text-align: right;
  white-space: nowrap;
  color: var(--unow-ink);
  font-size: 14px;
  font-weight: 600;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row > .clearfix {
  display: none !important;
}
/* bootstrap's .row clearfix pseudos would become phantom flex items and eat
   extra gap slots */
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row::before,
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row::after {
  content: none;
}
/* rows built from bare grid columns (cart fee rows, the order page's
   "Successful payments" / "Pending total" rows) carry no .product/.totalprice
   cells — neutralise the column widths/offsets so they flex like the rest:
   name left, amount pushed right */
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row > [role="cell"]:empty {
  display: none;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row > [class*="col-"]:not(.product):not(.count):not(.price):not(.download-desktop) {
  flex: 1 1 auto;
  float: none;
  width: auto !important;
  margin-left: 0 !important;
  padding: 0;
  color: var(--unow-ink);
  font-size: 14px;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row > .price:not(.singleprice):not(.totalprice) {
  flex: 0 0 auto;
  float: none;
  width: auto !important;
  margin-left: auto !important;
  padding: 0;
  text-align: right;
  white-space: nowrap;
  color: var(--unow-ink);
  font-size: 14px;
  font-weight: 600;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row.total .product strong,
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row.total .totalprice {
  font-size: 15px;
  font-weight: 700;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row.total .totalprice small {
  display: block;
  color: var(--unow-muted);
  font-size: 12px;
  font-weight: 400;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row .btn-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  border-radius: 50%;
  color: var(--unow-muted);
  text-decoration: none;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row .btn-link:hover,
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row .btn-link:focus {
  background: rgba(231, 0, 11, 0.08);
  color: var(--unow-red);
  text-decoration: none;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row .btn-invisible {
  display: none;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart #cart-extend-form {
  margin-top: 10px;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart #cart-deadline {
  margin: 0 0 6px;
  color: var(--unow-label);
  font-size: 12.5px;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart #cart-extend-button {
  padding: 6px 12px;
  border-radius: 8px;
  font-size: 12.5px;
}

/* ── Payment step: provider list as selectable cards (page 3 mock) ─────── */
/* The UNOW checkout shows two steps only — Your information and Payment,
   matched by their data-step identifiers (set in fragment_checkoutflow.html).
   Everything else — Review, AddOns/Customer/Membership if they activate, the
   static "Order confirmed" tail item (no data-step) and any step a plugin
   might add — is hidden from the stepper. Numbering follows automatically:
   display:none list items do not increment CSS counters. */
body.kvit-site-unow.kvit-unow-checkout .checkout-flow > li:not([data-step="questions"]):not([data-step="payment"]) {
  display: none;
}
/* Free/approval carts skip the payment step entirely (FreeOrderProvider is
   implicit, PaymentStep.is_applicable() → False), so no [data-step="payment"]
   li exists. Fall back to Review as the second chip — otherwise the connector
   hairline would dangle from a lone chip into an empty grid column. */
body.kvit-site-unow.kvit-unow-checkout .checkout-flow:not(:has(.checkout-step[data-step="payment"])) > li[data-step="confirm"] {
  display: flex;
  grid-column: 3;
  grid-row: 1;
}
body.kvit-site-unow.kvit-unow-checkout .step-done .checkout-step-label {
  color: var(--unow-muted);
}
/* Intro line + provider list read as ONE white card in the mock, but in the
   markup the <p> sits outside the <form> that wraps the accordion — so the
   card is split: the paragraph is its head, #payment_accordion its body.
   Both halves key on that <p> actually sitting right before the form on a
   checkout step; pages without it (order_pay_change with no payment fees,
   the gift-card "already selected" paragraph) fall back to a standalone
   full card / plain paragraph. */
body.kvit-site-unow.kvit-unow-checkout #content:has(.checkout-flow) > p:has(+ form > #payment_accordion) {
  margin: 0;
  padding: 20px 20px 6px;
  background: #ffffff;
  border: 1px solid var(--unow-border);
  border-bottom: 0;
  border-radius: 14px 14px 0 0;
  color: var(--unow-ink-2);
  font-size: 15px;
  font-weight: 600;
}
body.kvit-site-unow.kvit-unow-checkout form:has(> #payment_accordion) {
  margin: 0;
}
body.kvit-site-unow.kvit-unow-checkout #payment_accordion {
  margin: 0;
  padding: 16px 20px 20px;
  background: #ffffff;
  border: 1px solid var(--unow-border);
  border-radius: 14px;
}
body.kvit-site-unow.kvit-unow-checkout #content:has(.checkout-flow) > p + form > #payment_accordion {
  border-top: 0;
  border-radius: 0 0 14px 14px;
  /* the card gap lives in padding, not child margin-top: a first-child margin
     would collapse through the border-less top edge and let the grey page
     background show through as a band under the heading */
  padding-top: 12px;
}
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .accordion-panel {
  margin: 0 0 12px;
  border: 1px solid var(--unow-border) !important;
  border-radius: 14px !important;
  box-shadow: none;
  overflow: hidden;
}
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .accordion-panel:last-child {
  margin-bottom: 0;
}
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .accordion-panel:hover {
  border-color: #d1d5dc !important;
}
body.kvit-site-unow.kvit-unow-checkout #payment_accordion label.panel-heading {
  display: block;
  margin: 0;
  padding: 13px 16px;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0;
  cursor: pointer;
  font-weight: 400;
}
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .panel-title {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0;
  color: #1e2939;
  font-size: 15px;
  font-weight: 500;
}
/* the native radio dot is hidden per the mock; the card itself is the
   control (label click / arrow keys still drive the real input) */
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .panel-title input[type="radio"] {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: 0;
  opacity: 0;
  pointer-events: none;
}
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .panel-title > .pull-right {
  float: none;
  order: 3;
  margin-left: auto;
  color: var(--unow-muted);
  font-size: 13px;
  font-weight: 600;
}
/* provider icon slot: generic card glyph, official wordmark badges where known */
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .panel-title::before {
  content: "\f09d";
  font: normal normal normal 15px/1 FontAwesome;
  color: var(--unow-muted);
  flex: 0 0 auto;
}
/* Brand marks: the card row gets the Mastercard circles + VISA wordmark,
   Klarna's pink wordmark badge and Revolut's monochrome wordmark badge.
   Anchored to input[name="payment"] (the provider radio) — the panel body
   also contains provider FORM fields, and a bound re-render puts the buyer's
   typed text into a value attribute, which the bare substring match could
   otherwise pick up (e.g. a mistyped gift-card code containing "card"). */
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .accordion-panel:has(input[name="payment"][value*="klarna"]) .panel-title::before,
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .accordion-panel:has(input[name="payment"][value*="revolut"]) .panel-title::before {
  content: "";
  height: 24px;
  border: 1px solid var(--unow-border);
  border-radius: 6px;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.55);
}
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .accordion-panel:has(input[name="payment"][value*="klarna"]) .panel-title::before {
  width: 54px;
  flex-basis: 54px;
  background: #ffa8cd url("brands/klarna-wordmark.b5974f0455e1.svg") no-repeat center / 40px auto;
}
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .accordion-panel:has(input[name="payment"][value*="revolut"]) .panel-title::before {
  width: 72px;
  flex-basis: 72px;
  background: #ffffff url("brands/revolut-wordmark.5aad097bfb71.svg") no-repeat center / 58px auto;
}
/* :not([value*="giftcard"]) — the gift-card provider's identifier is
   "giftcard", which the substring match would otherwise catch and badge
   with Visa/Mastercard marks. */
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .accordion-panel:has(input[name="payment"][value="stripe"]) .panel-title::before,
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .accordion-panel:has(input[name="payment"][value*="card"]:not([value*="giftcard"])) .panel-title::before {
  content: "";
  width: 58px;
  height: 24px;
  flex: 0 0 58px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 62 24'%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Ccircle cx='12' cy='12' r='7.6'/%3E%3C/clipPath%3E%3C/defs%3E%3Ccircle cx='12' cy='12' r='7.6' fill='%23EB001B'/%3E%3Ccircle cx='20' cy='12' r='7.6' fill='%23F79E1B'/%3E%3Ccircle cx='20' cy='12' r='7.6' fill='%23FF5F00' clip-path='url(%23a)'/%3E%3Ctext x='33' y='16' font-family='Arial, Helvetica, sans-serif' font-size='10.5' font-style='italic' font-weight='800' letter-spacing='.2' fill='%231434CB'%3EVISA%3C/text%3E%3C/svg%3E") no-repeat center / contain;
}
/* selected card: red border + light red row, like the mock */
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .accordion-panel:has(input[type="radio"]:checked) {
  border-color: #fb2c36 !important;
}
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .accordion-panel:has(input[type="radio"]:checked) label.panel-heading {
  background: #fef2f2 !important;
}
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .accordion-panel:has(input[type="radio"]:focus-visible) {
  outline: 2px solid var(--unow-red-ring);
  outline-offset: 2px;
}
/* provider details (test-mode notes, per-provider forms) under the row */
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .accordion-panel .panel-body {
  border-top: 1px solid var(--unow-border-soft);
  padding: 14px 16px 16px;
}
body.kvit-site-unow.kvit-unow-checkout #payment_accordion .accordion-panel .panel-body .alert {
  margin-bottom: 0;
}

/* ── Order pages: confirmation / details (page 4 of the redesign) ──────── */
/* "Thank you!" hero card (order.html .thank-you, shown with ?thanks/?paid).
   The stock theme floats the icon left and indents every child by 158px on
   desktop — reset to the centered card of the mock. */
body.kvit-site-unow.kvit-unow-checkout .thank-you {
  max-width: none;
  min-height: 0;
  margin: 0 0 24px;
  padding: 36px 24px 28px;
  background: #ffffff;
  border: 1px solid var(--unow-border);
  border-radius: 14px;
  text-align: center;
}
body.kvit-site-unow.kvit-unow-checkout .thank-you > * {
  margin-left: auto;
  margin-right: auto;
}
body.kvit-site-unow.kvit-unow-checkout .thank-you > .fa {
  float: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: #dcfce7;
  color: #00a63e;
  font-size: 26px;
  line-height: 1;
}
/* the stock glyph is a circled check — the disc above already provides the
   circle, so swap it for the plain check mark */
body.kvit-site-unow.kvit-unow-checkout .thank-you > .fa-check-circle::before {
  content: "\f00c";
}
body.kvit-site-unow.kvit-unow-checkout .thank-you h2 {
  margin: 18px 0 10px;
  padding: 0;
  color: var(--unow-ink);
  font-size: 28px;
  font-weight: 700;
}
body.kvit-site-unow.kvit-unow-checkout .thank-you p.lead {
  margin: 0 0 14px;
  color: var(--unow-ink-2);
  font-size: 15px;
  font-weight: 400;
}
body.kvit-site-unow.kvit-unow-checkout .thank-you p.iframe-hidden,
body.kvit-site-unow.kvit-unow-checkout .thank-you p.iframe-only {
  max-width: 420px;
  margin: 0 auto;
  color: var(--unow-hint);
  font-size: 13px;
}

/* Order headline, status chip and ticket downloads read as ONE card in the
   mock; in the markup they are three sibling blocks (h2.h1, dl.order-details,
   .info-download), so the card is stitched together across them. */
body.kvit-site-unow.kvit-unow-checkout #content > h2.h1 {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  margin: 0;
  padding: 20px 24px 4px;
  background: #ffffff;
  border: 1px solid var(--unow-border);
  border-bottom: 0;
  border-radius: 14px 14px 0 0;
  color: var(--unow-ink);
  font-size: 19px;
  font-weight: 700;
}
body.kvit-site-unow.kvit-unow-checkout #content > h2.h1 .label-warning {
  background: #fef3c6;
  color: #bb4d00;
  border-radius: 8px;
  padding: 4px 8px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
}
/* the status <dl> keeps the card's side borders; its chip is pulled up onto
   the headline row (both boxes are white, so the overlap is seamless) */
body.kvit-site-unow.kvit-unow-checkout dl.order-details {
  margin: 0 0 24px;
  padding: 0 24px 16px;
  background: #ffffff;
  border: 1px solid var(--unow-border);
  border-top: 0;
  border-radius: 0 0 14px 14px;
  font-size: 14px;
}
body.kvit-site-unow.kvit-unow-checkout dl.order-details:has(+ .info-download:not(.alert)) {
  border-bottom: 0;
  border-radius: 0;
  margin-bottom: 0;
}
body.kvit-site-unow.kvit-unow-checkout dl.order-details dd {
  display: flex;
  justify-content: flex-end;
  margin: -34px 0 0;
  min-height: 30px;
}
/* the pull-up is calibrated for the one-line desktop headline; on phones the
   headline wraps and the chip would stamp over the order code — drop the chip
   onto its own row instead */
@media (max-width: 767px) {
  body.kvit-site-unow.kvit-unow-checkout dl.order-details dd {
    margin-top: 4px;
    justify-content: flex-start;
    min-height: 0;
  }
}
/* order-state chips (textbubble-* from fragment_order_status) */
body.kvit-site-unow.kvit-unow-checkout [class^="textbubble-"],
body.kvit-site-unow.kvit-unow-checkout [class*=" textbubble-"] {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 12px;
  border-radius: 9999px;
  font-size: 13.5px;
  font-weight: 500;
}
body.kvit-site-unow.kvit-unow-checkout .textbubble-success {
  background: #f0fdf4;
  color: #00a63e;
}
body.kvit-site-unow.kvit-unow-checkout .textbubble-warning {
  background: #fffbeb;
  color: #bb4d00;
}
body.kvit-site-unow.kvit-unow-checkout .textbubble-info {
  background: #eff6ff;
  color: #1447e6;
}
body.kvit-site-unow.kvit-unow-checkout .textbubble-danger {
  background: #fef2f2;
  color: var(--unow-red);
}
/* download area: standalone card by default, card bottom when it directly
   follows the status <dl> (the usual paid-order layout). The "downloads open
   on {date}" variant is an .alert-info — leave it a soft alert (the alert
   palette above owns its border/background/icon padding), don't stitch it. */
body.kvit-site-unow.kvit-unow-checkout .info-download:not(.alert) {
  margin: 0 0 24px;
  padding: 16px 24px 20px;
  background: #ffffff;
  border: 1px solid var(--unow-border);
  border-radius: 14px;
}
body.kvit-site-unow.kvit-unow-checkout .alert.info-download {
  margin: 0 0 24px;
}
body.kvit-site-unow.kvit-unow-checkout dl.order-details + .info-download:not(.alert) {
  border-top: 0;
  border-radius: 0 0 14px 14px;
  padding-top: 4px;
}
body.kvit-site-unow.kvit-unow-checkout .info-download > div {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
body.kvit-site-unow.kvit-unow-checkout .info-download .download-btn-form {
  margin: 0;
}
body.kvit-site-unow.kvit-unow-checkout .info-download .btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 11px 20px;
  border-radius: 10px;
  font-size: 14.5px;
  font-weight: 600;
  box-shadow: none;
}
body.kvit-site-unow.kvit-unow-checkout .info-download .help-block {
  margin: 12px 0 0;
  color: var(--unow-muted);
  font-size: 13px;
}

/* red "Change details" action inside panel headings */
body.kvit-site-unow.kvit-unow-checkout .panel-title:has(> a.h6) {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
body.kvit-site-unow.kvit-unow-checkout .panel-title > a.h6 {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: auto;
  color: var(--unow-red);
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
}
body.kvit-site-unow.kvit-unow-checkout .panel-title > a.h6:hover,
body.kvit-site-unow.kvit-unow-checkout .panel-title > a.h6:focus {
  color: var(--unow-red-hover);
  text-decoration: underline;
}

/* "Ordered items": the order page cart is a <div> (the checkout rail cart is
   a <details>), with per-ticket PDF pills and a grey total band */
body.kvit-site-unow.kvit-unow-checkout div.panel.cart > .panel-body {
  padding: 6px 20px 0;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .cart-row > .download-desktop {
  order: 2;
  flex: 0 0 auto;
  width: auto !important;
  padding: 0;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .download-desktop .download-btn-form {
  display: inline-block;
  margin: 0;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .download-desktop .btn {
  padding: 4px 12px;
  border-radius: 9999px;
  font-size: 12.5px;
  font-weight: 600;
  box-shadow: none;
}
body.kvit-site-unow.kvit-unow-checkout .panel.cart .download-desktop .btn-primary {
  background: #fef2f2 !important;
  border: 1px solid #ffc9c9 !important;
  color: var(--unow-red) !important;
}
body.kvit-site-unow.kvit-unow-checkout div.panel.cart .cart-rowgroup-total {
  display: block;
  margin: 0 -20px;
  padding: 4px 20px 8px;
  background: #f9fafb;
  border-top: 1px solid var(--unow-border-soft);
}

/* "Your information": label / value rows with hairline separators */
body.kvit-site-unow.kvit-unow-checkout .panel .dl-horizontal {
  display: grid;
  grid-template-columns: minmax(120px, 180px) 1fr;
  column-gap: 24px;
  margin: 0;
}
body.kvit-site-unow.kvit-unow-checkout .panel .dl-horizontal dt {
  float: none;
  width: auto;
  grid-column: 1;
  padding: 11px 0;
  border-top: 1px solid var(--unow-border-soft);
  color: var(--unow-label);
  font-size: 13.5px;
  font-weight: 400;
  text-align: left;
  white-space: normal;
  overflow: visible;
}
body.kvit-site-unow.kvit-unow-checkout .panel .dl-horizontal dd {
  grid-column: 2;
  margin: 0;
  padding: 11px 0;
  border-top: 1px solid var(--unow-border-soft);
  color: #1e2939;
  font-size: 14px;
  /* long single tokens (emails, VAT ids) must wrap, not stretch the 1fr track
     into the card's overflow:hidden clip */
  min-width: 0;
  overflow-wrap: anywhere;
}
body.kvit-site-unow.kvit-unow-checkout .panel .dl-horizontal dt:first-of-type,
body.kvit-site-unow.kvit-unow-checkout .panel .dl-horizontal dt:first-of-type + dd {
  border-top: 0;
  padding-top: 2px;
}
body.kvit-site-unow.kvit-unow-checkout .panel .dl-horizontal dd:empty::before {
  content: "\2014";
  color: var(--unow-hint);
}
@media (max-width: 575px) {
  body.kvit-site-unow.kvit-unow-checkout .panel .dl-horizontal {
    grid-template-columns: minmax(96px, 128px) 1fr;
    column-gap: 12px;
  }
}

/* refunds / change-or-cancel list groups inside the white cards */
body.kvit-site-unow.kvit-unow-checkout .list-group-item {
  background: #ffffff;
  border-color: var(--unow-border-soft);
}

/* ── Desktop: form column left, sticky 272px cart rail right ───────────── */
@media (min-width: 992px) {
  body.kvit-site-unow.kvit-unow-checkout #content:has(.checkout-flow) {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 272px;
    column-gap: 24px;
    align-items: start;
  }
  body.kvit-site-unow.kvit-unow-checkout #content:has(.checkout-flow) > aside {
    grid-column: 2;
    grid-row: 1 / span 99;
    align-self: start;
    position: sticky;
    top: 24px;
    margin: 0 !important;
  }
  body.kvit-site-unow.kvit-unow-checkout #content:has(.checkout-flow) > :not(aside) {
    grid-column: 1;
    min-width: 0;
  }
}
@media (max-width: 991px) {
  body.kvit-site-unow.kvit-unow-checkout .container.main-box {
    padding-left: 16px;
    padding-right: 16px;
  }
}

/* ── UNOW hotel map: useful post-order continuation, not an ad banner ─── */
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22 {
  margin: 0 0 24px;
  padding: 24px;
  overflow: hidden;
  background: #ffffff;
  border: 1px solid var(--unow-border);
  border-radius: 14px;
  color: var(--unow-ink);
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__intro {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  margin-bottom: 20px;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__intro-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #fef2f2;
  color: var(--unow-red);
  font-size: 18px;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__intro h3 {
  margin: 0 0 3px;
  color: var(--unow-ink);
  font-size: 19px;
  font-weight: 700;
  line-height: 1.3;
  text-wrap: balance;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__intro p {
  max-width: 68ch;
  margin: 0;
  color: var(--unow-muted);
  font-size: 13.5px;
  line-height: 1.5;
  text-wrap: pretty;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__partner {
  align-self: start;
  padding: 5px 10px;
  border: 1px solid var(--unow-border);
  border-radius: 9999px;
  color: var(--unow-muted);
  font-size: 11.5px;
  font-weight: 600;
  white-space: nowrap;
}

/* A real itinerary sequence earns the route treatment: event, stay, city. */
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route {
  display: grid;
  grid-template-columns: auto minmax(28px, 1fr) auto minmax(28px, 1fr) auto;
  align-items: center;
  gap: 10px;
  margin: 0 0 18px;
  padding: 13px 16px;
  border: 1px solid var(--unow-border-soft);
  border-radius: 12px;
  background: #f9fafb;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route-stop {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route-stop > span:last-child {
  min-width: 0;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route-stop small,
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route-stop strong {
  display: block;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route-stop small {
  margin-bottom: 1px;
  color: var(--unow-muted);
  font-size: 11.5px;
  font-weight: 500;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route-stop strong {
  overflow: hidden;
  color: var(--unow-ink-2);
  font-size: 13px;
  font-weight: 650;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route-dot,
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route-bed,
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route-pin {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: #ffffff;
  border: 1px solid var(--unow-border);
  color: var(--unow-red);
  font-size: 13px;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route-dot::before {
  content: "";
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--unow-red);
  box-shadow: 0 0 0 4px rgba(231, 0, 11, 0.1);
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route-line {
  position: relative;
  display: block;
  height: 1px;
  overflow: hidden;
  background: var(--unow-border);
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route-line::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--unow-red);
  transform: translateX(-101%);
  transition: transform 0.2s ease-out;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22:has(.kvit-stay22__map-shell.is-loaded) .kvit-stay22__route-line::after {
  transform: none;
}

body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__map-shell {
  position: relative;
  min-height: 420px;
  overflow: hidden;
  border: 1px solid var(--unow-border);
  border-radius: 12px;
  background: var(--unow-canvas);
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__map-shell iframe {
  display: block;
  width: 100%;
  height: 420px;
  border: 0;
  background: #ffffff;
  opacity: 1;
  transition: opacity 0.18s ease-out;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__map-shell.is-loading iframe {
  opacity: 0;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__skeleton {
  position: absolute;
  inset: 0;
  display: none;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  padding: 20px;
  background: #f9fafb;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__map-shell.is-loading .kvit-stay22__skeleton {
  display: grid;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__skeleton span {
  border-radius: 10px;
  background: #e9edf2;
  animation: kvitStay22Pulse 1.4s ease-in-out infinite alternate;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__skeleton span:nth-child(2),
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__skeleton span:nth-child(3) {
  animation-delay: 0.18s;
}
@keyframes kvitStay22Pulse {
  from { opacity: 0.48; }
  to { opacity: 1; }
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__consent {
  position: absolute;
  inset: 0;
  display: none;
  align-content: center;
  justify-items: center;
  gap: 12px;
  padding: 28px;
  background: #ffffff;
  text-align: center;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__map-shell.is-consent .kvit-stay22__consent {
  display: grid;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__consent > .fa {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: #fef2f2;
  color: var(--unow-red);
  font-size: 19px;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__consent p {
  max-width: 52ch;
  margin: 0;
  color: var(--unow-muted);
  font-size: 13.5px;
  line-height: 1.55;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__consent p strong {
  display: block;
  margin-bottom: 4px;
  color: var(--unow-ink);
  font-size: 16px;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__consent .btn,
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__noscript {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
  padding: 10px 20px;
  border-radius: 9999px;
  background: var(--unow-red) !important;
  border-color: var(--unow-red) !important;
  color: #ffffff !important;
  font-size: 14px;
  font-weight: 650;
  box-shadow: none;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__consent .btn:hover,
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__consent .btn:focus,
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__noscript:hover,
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__noscript:focus {
  background: var(--unow-red-hover) !important;
  border-color: var(--unow-red-hover) !important;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__map-shell > noscript {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__slow {
  position: absolute;
  right: 12px;
  bottom: 12px;
  left: 12px;
  display: none;
  padding: 10px 12px;
  border: 1px solid #fee685;
  border-radius: 10px;
  background: #fffbeb;
  color: #854d0e;
  font-size: 12.5px;
  text-align: center;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__map-shell.is-slow .kvit-stay22__slow {
  display: block;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__slow a {
  color: #854d0e;
  font-weight: 650;
  text-decoration: underline;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__footer {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px 24px;
  margin-top: 12px;
  color: var(--unow-muted);
  font-size: 11.5px;
  line-height: 1.45;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__footer > span {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
}
body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__footer a {
  color: var(--unow-red);
  font-weight: 600;
  text-decoration: underline;
}

@media (max-width: 767px) {
  body.kvit-site-unow.kvit-unow-checkout .kvit-stay22 {
    padding: 18px;
  }
  body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__intro {
    grid-template-columns: 40px minmax(0, 1fr);
    gap: 12px;
  }
  body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__intro-icon {
    width: 40px;
    height: 40px;
  }
  body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__partner {
    grid-column: 2;
    justify-self: start;
  }
  body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
  }
  body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route-line {
    width: 1px;
    height: 14px;
    margin-left: 16px;
  }
  body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route-line::after {
    transform: translateY(-101%);
  }
  body.kvit-site-unow.kvit-unow-checkout .kvit-stay22:has(.kvit-stay22__map-shell.is-loaded) .kvit-stay22__route-line::after {
    transform: none;
  }
  body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__map-shell,
  body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__map-shell iframe {
    min-height: 360px;
    height: 360px;
  }
  body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__footer {
    display: grid;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__route-line::after,
  body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__map-shell iframe {
    transition: none;
  }
  body.kvit-site-unow.kvit-unow-checkout .kvit-stay22__skeleton span {
    animation: none;
    opacity: 0.78;
  }
}
