/**
 * exchange-trail.bundle.css — concatenated exchange CSS (no minify).
 * Rebuild: php scripts/build-exchange-css-bundles.php
 * Source order is the cascade order from style-account.
 */

/* ===== exchange-badges.css ===== */
/**
 * WP09 — Badge micro contract
 * Load AFTER theme + exchange-theme (+ typography/parity).
 * BACK/LAY · LIVE · BM/F/GL → 20px / 12 / 600 micro-labels (not odds clones).
 */

.exchange-app {
  --ex-badge-h: var(--theme-badge-h, 20px);
  --ex-badge-fs: var(--theme-badge-font-size, var(--theme-text-sm, 0.75rem));
  --ex-badge-fw: var(--theme-badge-font-weight, var(--theme-weight-semibold, 600));
}

/* Generic badge atom */
.exchange-app .ex-badge,
.exchange-app .ex-betslip-selection-card__type {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: var(--ex-badge-h);
  min-height: var(--ex-badge-h);
  max-height: var(--ex-badge-h);
  padding: 0 0.4rem;
  box-sizing: border-box;
  border-radius: var(--theme-radius-chip, 4px);
  font-size: var(--ex-badge-fs);
  font-weight: var(--ex-badge-fw);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  line-height: 1;
}

/* LIVE — keep brand fill; cap motion. Compact 16×10 micro-label so it
   never competes with the 13px match name (bet365/Betfair scale). */
.exchange-app .ex-indibet-list__live-badge,
.exchange-app .ex-inplay-group__live-badge {
  height: 1rem;
  min-height: 1rem;
  max-height: 1rem;
  font-size: 0.625rem;
  font-weight: var(--theme-weight-bold, 700);
  letter-spacing: 0.04em;
  box-shadow: none;
  text-shadow: none;
}

.exchange-app .ex-indibet-list__live-badge::after {
  animation-duration: 2.8s;
  animation-iteration-count: infinite;
}

.exchange-app .ex-indibet-list__live-badge .ex-live-dot,
.exchange-app .ex-indibet-list__live-dot {
  animation-duration: 1.4s;
}

@media (prefers-reduced-motion: reduce) {
  .exchange-app .ex-indibet-list__live-badge::after,
  .exchange-app .ex-indibet-list__live-badge .ex-live-dot,
  .exchange-app .ex-indibet-list__live-dot,
  .exchange-app .ex-inplay-group__live-badge {
    animation: none !important;
  }
}

/* BM / Fancy / GL / TV micro flags — 14×10 (below 13px team) */
.exchange-app .ex-indibet-row__flag,
.exchange-app .ex-indibet-row__flag--bm,
.exchange-app .ex-indibet-row__flag--fancy,
.exchange-app .ex-indibet-row__flag--gl,
.exchange-app .ex-indibet-row__flag--tv,
.exchange-app .ex-indibet-row__flag--mic {
  height: 0.875rem;
  min-height: 0.875rem;
  max-height: 0.875rem;
  min-width: 1.05rem;
  padding: 0 0.22rem;
  font-size: 0.625rem;
  font-weight: var(--theme-weight-medium, 500);
  letter-spacing: 0.04em;
  line-height: 1;
}

.exchange-app .ex-indibet-row__flag--bm,
.exchange-app .ex-indibet-row__flag--bm.is-on,
.exchange-app .ex-indibet-row__flag--bm.is-off {
  font-weight: 400 !important;
}

/* ===== exchange-inline-theme-cross.css ===== */


html.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded :is(
    .ex-indibet-row__time,
    .ex-list-betting-row__market-name,
    .ex-list-match-table__meta-row,
    .ex-list-match-table__empty,
    .ex-list-match-table__batter span,
    .ex-inline-pulse__when,
    .ex-inline-pulse__code,
    .ex-inline-pulse__over-label,
    .ex-inline-pulse__session,
    .ex-muted
),
.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded :is(
    .ex-indibet-row__time,
    .ex-list-betting-row__market-name,
    .ex-list-match-table__meta-row,
    .ex-list-match-table__empty,
    .ex-list-match-table__batter span,
    .ex-inline-pulse__when,
    .ex-inline-pulse__code,
    .ex-inline-pulse__over-label,
    .ex-inline-pulse__session,
    .ex-muted
),
html.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded :is(
    .ex-indibet-row__time,
    .ex-list-betting-row__market-name,
    .ex-list-match-table__meta-row,
    .ex-list-match-table__empty,
    .ex-list-match-table__batter span,
    .ex-inline-pulse__when,
    .ex-inline-pulse__code,
    .ex-inline-pulse__over-label,
    .ex-inline-pulse__session,
    .ex-muted
),
.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded :is(
    .ex-indibet-row__time,
    .ex-list-betting-row__market-name,
    .ex-list-match-table__meta-row,
    .ex-list-match-table__empty,
    .ex-list-match-table__batter span,
    .ex-inline-pulse__when,
    .ex-inline-pulse__code,
    .ex-inline-pulse__over-label,
    .ex-inline-pulse__session,
    .ex-muted
) {
    color: var(--theme-text-muted) !important;
}

/* Brand accents stay on --theme-primary (not inverted ink) */
html.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-inline-pulse__team.is-batting .ex-inline-pulse__line,
html.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-inline-pulse__rate--rrr strong,
.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-inline-pulse__team.is-batting .ex-inline-pulse__line,
.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-inline-pulse__rate--rrr strong,
html.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-inline-pulse__team.is-batting .ex-inline-pulse__line,
html.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-inline-pulse__rate--rrr strong,
.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-inline-pulse__team.is-batting .ex-inline-pulse__line,
.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-inline-pulse__rate--rrr strong {
    color: var(--theme-primary) !important;
}

/* Yes/No — soft pastel fills use dark ink (white-on-soft was invisible) */
html.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--fancy .ex-list-betting-row__outcome-label--yes,
html.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--session .ex-list-betting-row__outcome-label--yes,
.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--fancy .ex-list-betting-row__outcome-label--yes,
.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--session .ex-list-betting-row__outcome-label--yes,
html.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--fancy .ex-list-betting-row__outcome-label--yes,
html.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--session .ex-list-betting-row__outcome-label--yes,
.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--fancy .ex-list-betting-row__outcome-label--yes,
.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--session .ex-list-betting-row__outcome-label--yes {
    color: var(--ex-inline-yes-ink, var(--bp-odds-ink, #0F172A)) !important;
}

html.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--fancy .ex-list-betting-row__outcome-label--no,
html.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--session .ex-list-betting-row__outcome-label--no,
.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--fancy .ex-list-betting-row__outcome-label--no,
.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--session .ex-list-betting-row__outcome-label--no,
html.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--fancy .ex-list-betting-row__outcome-label--no,
html.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--session .ex-list-betting-row__outcome-label--no,
.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--fancy .ex-list-betting-row__outcome-label--no,
.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--session .ex-list-betting-row__outcome-label--no {
    color: var(--ex-inline-no-ink, var(--bp-odds-ink, #0F172A)) !important;
}

html.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row__prices--lane .ex-price--yes,
.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row__prices--lane .ex-price--yes,
html.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row__prices--lane .ex-price--yes,
.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row__prices--lane .ex-price--yes,
html.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--fancy .ex-list-betting-row__prices--lane > .ex-indibet-outcome:first-child .ex-price,
.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--session .ex-list-betting-row__prices--lane > .ex-indibet-outcome:first-child .ex-price,
html.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--fancy .ex-list-betting-row__prices--lane > .ex-indibet-outcome:first-child .ex-price,
.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--session .ex-list-betting-row__prices--lane > .ex-indibet-outcome:first-child .ex-price {
    color: var(--ex-inline-yes-ink, var(--bp-odds-ink, #0F172A)) !important;
    -webkit-text-fill-color: var(--ex-inline-yes-ink, var(--bp-odds-ink, #0F172A)) !important;
}

html.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row__prices--lane .ex-price--no,
.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row__prices--lane .ex-price--no,
html.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row__prices--lane .ex-price--no,
.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row__prices--lane .ex-price--no,
html.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--fancy .ex-list-betting-row__prices--lane > .ex-indibet-outcome:last-child .ex-price,
.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--session .ex-list-betting-row__prices--lane > .ex-indibet-outcome:last-child .ex-price,
html.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--fancy .ex-list-betting-row__prices--lane > .ex-indibet-outcome:last-child .ex-price,
.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-list-betting-row--session .ex-list-betting-row__prices--lane > .ex-indibet-outcome:last-child .ex-price {
    color: var(--ex-inline-no-ink, var(--bp-odds-ink, #0F172A)) !important;
    -webkit-text-fill-color: var(--ex-inline-no-ink, var(--bp-odds-ink, #0F172A)) !important;
}

html.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded :is(
    .ex-match-header__when,
    .ex-match-header-details,
    .ex-match-header-details__sep,
    .ex-indibet-row__meta,
    .ex-indibet-row__time,
    .fancy-line-value,
    .ex-inline-pulse__when,
    .ex-inline-pulse__code,
    .ex-inline-pulse__over-label,
    .ex-inline-pulse__session,
    .ex-inline-pulse__batter span,
    .ex-indian-grid__runner-meta,
    .ex-indibet-list__outcome-sublabel,
    .ex-price__size,
    .ex-odds-cell__size,
    .ex-match-detail-media__empty,
    .ex-cricket-xi__meta,
    .ex-cricket-xi__empty,
    .ex-premium-score__when,
    .ex-premium-score__sport,
    .ex-premium-score__hint,
    .ex-premium-score__crr,
    .ex-muted
),
.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded :is(
    .ex-match-header__when,
    .ex-match-header-details,
    .ex-match-header-details__sep,
    .ex-indibet-row__meta,
    .ex-indibet-row__time,
    .fancy-line-value,
    .ex-inline-pulse__when,
    .ex-inline-pulse__code,
    .ex-inline-pulse__over-label,
    .ex-inline-pulse__session,
    .ex-inline-pulse__batter span,
    .ex-indian-grid__runner-meta,
    .ex-indibet-list__outcome-sublabel,
    .ex-price__size,
    .ex-odds-cell__size,
    .ex-match-detail-media__empty,
    .ex-cricket-xi__meta,
    .ex-cricket-xi__empty,
    .ex-premium-score__when,
    .ex-premium-score__sport,
    .ex-premium-score__hint,
    .ex-premium-score__crr,
    .ex-muted
),
html.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded :is(
    .ex-match-header__when,
    .ex-match-header-details,
    .ex-match-header-details__sep,
    .ex-indibet-row__meta,
    .ex-indibet-row__time,
    .fancy-line-value,
    .ex-inline-pulse__when,
    .ex-inline-pulse__code,
    .ex-inline-pulse__over-label,
    .ex-inline-pulse__session,
    .ex-inline-pulse__batter span,
    .ex-indian-grid__runner-meta,
    .ex-indibet-list__outcome-sublabel,
    .ex-price__size,
    .ex-odds-cell__size,
    .ex-match-detail-media__empty,
    .ex-cricket-xi__meta,
    .ex-cricket-xi__empty,
    .ex-premium-score__when,
    .ex-premium-score__sport,
    .ex-premium-score__hint,
    .ex-premium-score__crr,
    .ex-muted
),
.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded :is(
    .ex-match-header__when,
    .ex-match-header-details,
    .ex-match-header-details__sep,
    .ex-indibet-row__meta,
    .ex-indibet-row__time,
    .fancy-line-value,
    .ex-inline-pulse__when,
    .ex-inline-pulse__code,
    .ex-inline-pulse__over-label,
    .ex-inline-pulse__session,
    .ex-inline-pulse__batter span,
    .ex-indian-grid__runner-meta,
    .ex-indibet-list__outcome-sublabel,
    .ex-price__size,
    .ex-odds-cell__size,
    .ex-match-detail-media__empty,
    .ex-cricket-xi__meta,
    .ex-cricket-xi__empty,
    .ex-premium-score__when,
    .ex-premium-score__sport,
    .ex-premium-score__hint,
    .ex-premium-score__crr,
    .ex-muted
) {
    color: var(--theme-text-muted) !important;
}

/* Site-theme slate meta must not win on inverted detail surfaces */

/* Premium scoreboard: kill site-light slate-900 on inverted page */

/* Line under Fancy odds inherits Yes/No cell ink (not page muted) */
html.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-price--yes .ex-price__size,
html.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-price--yes .fancy-line-value,
html.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-price--no .ex-price__size,
html.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-price--no .fancy-line-value,
.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-price--yes .ex-price__size,
.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-price--yes .fancy-line-value,
.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-price--no .ex-price__size,
.theme-light .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-price--no .fancy-line-value,
html.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-price--yes .ex-price__size,
html.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-price--yes .fancy-line-value,
html.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-price--no .ex-price__size,
html.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-price--no .fancy-line-value,
.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-price--yes .ex-price__size,
.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-price--yes .fancy-line-value,
.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-price--no .ex-price__size,
.theme-dark .exchange-app .ex-event--list-expandable.ex-event--list-expanded .ex-price--no .fancy-line-value {
    color: inherit !important;
    -webkit-text-fill-color: inherit !important;
}

/* ===== exchange-sidebar-icons.css ===== */
/**
 * Sidebar icon contract — premium hybrid pack
 *
 * Tabler sport glyphs + custom literal SVGs share one optical box and one
 * stroke language. Loaded last so legacy FA/account rules cannot override it.
 */

.exchange-app .ex-sidebar {
    --ex-sidebar-icon-box: 1.375rem; /* 22px — premium presence at 20–24px bookmaker scale */
    --ex-sidebar-icon-stroke: 1.75;  /* slightly finer than 2 for Tabler density at small size */
    --ex-sidebar-icon-active-box: 1.625rem;
    --ex-sidebar-icon-active-pad: 0.21875rem;
}

/* One fixed column for every normal sidebar icon. */
.exchange-app .ex-sidebar .ex-sidebar-nav-list a.ex-sidebar-nav-item__link > svg.nav-icon,
.exchange-app .ex-sidebar .ex-sidebar-nav-list a.ex-sidebar-nav-item__link > svg.ex-cat-icon {
    display: block !important;
    flex: 0 0 var(--ex-sidebar-icon-box) !important;
    width: var(--ex-sidebar-icon-box) !important;
    min-width: var(--ex-sidebar-icon-box) !important;
    max-width: var(--ex-sidebar-icon-box) !important;
    height: var(--ex-sidebar-icon-box) !important;
    min-height: var(--ex-sidebar-icon-box) !important;
    max-height: var(--ex-sidebar-icon-box) !important;
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    border: 0 !important;
    border-radius: 0 !important;
    color: var(--ex-sidebar-icon) !important;
    background: transparent !important;
    box-shadow: none !important;
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
    filter: none !important;
    overflow: visible !important;
    transition: color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease !important;
}

/* Lucide/chrome + Tabler/custom sport glyphs share one stroke language. */
.exchange-app .ex-sidebar .ex-sidebar-nav-list a.ex-sidebar-nav-item__link > svg:is(.lucide, .feather),
.exchange-app .ex-sidebar .ex-sidebar-nav-list a.ex-sidebar-nav-item__link > svg.ex-sport-svg:not(.ex-sport-svg--fill) {
    fill: none !important;
    stroke: currentColor !important;
    stroke-width: var(--ex-sidebar-icon-stroke) !important;
    stroke-linecap: round !important;
    stroke-linejoin: round !important;
}

.exchange-app .ex-sidebar .ex-sidebar-nav-list a.ex-sidebar-nav-item__link > svg:is(.lucide, .feather) :is(path, line, circle, ellipse, polyline, polygon, rect),
.exchange-app .ex-sidebar .ex-sidebar-nav-list a.ex-sidebar-nav-item__link > svg.ex-sport-svg:not(.ex-sport-svg--fill) :is(path, line, circle, ellipse, polyline, polygon, rect) {
    fill: none !important;
    stroke: currentColor !important;
    stroke-width: var(--ex-sidebar-icon-stroke) !important;
    stroke-linecap: round !important;
    stroke-linejoin: round !important;
}

/* Intentional filled sport glyphs only (none currently; keep contract). */
.exchange-app .ex-sidebar .ex-sidebar-nav-list a.ex-sidebar-nav-item__link > svg.ex-sport-svg--fill,
.exchange-app .ex-sidebar .ex-sidebar-nav-list a.ex-sidebar-nav-item__link > svg.ex-sport-svg--fill :is(path, circle, ellipse, polygon, rect) {
    fill: currentColor !important;
    stroke: none !important;
}

/* Hover: row feedback only — icon geometry stays locked. */
.exchange-app .ex-sidebar .ex-sidebar-nav-list li:not(.active):not(.open) > a.ex-sidebar-nav-item__link:hover > svg:is(.lucide, .feather, .ex-sport-svg),
.exchange-app .ex-sidebar .ex-sidebar-nav-list li:not(.active):not(.open) > a.ex-sidebar-nav-item__link:hover > svg:is(.lucide, .feather, .ex-sport-svg) :is(path, line, circle, ellipse, polyline, polygon, rect) {
    color: var(--theme-primary, #DD3E42) !important;
}

.exchange-app .ex-sidebar .ex-sidebar-nav-list li:not(.active):not(.open) > a.ex-sidebar-nav-item__link:hover > svg.ex-sport-svg:not(.ex-sport-svg--fill),
.exchange-app .ex-sidebar .ex-sidebar-nav-list li:not(.active):not(.open) > a.ex-sidebar-nav-item__link:hover > svg:is(.lucide, .feather),
.exchange-app .ex-sidebar .ex-sidebar-nav-list li:not(.active):not(.open) > a.ex-sidebar-nav-item__link:hover > svg.ex-sport-svg:not(.ex-sport-svg--fill) :is(path, line, circle, ellipse, polyline, polygon, rect),
.exchange-app .ex-sidebar .ex-sidebar-nav-list li:not(.active):not(.open) > a.ex-sidebar-nav-item__link:hover > svg:is(.lucide, .feather) :is(path, line, circle, ellipse, polyline, polygon, rect) {
    fill: none !important;
    stroke: currentColor !important;
}

/* Active item: use the same base-brand well as every other sport/navigation chip. */
.exchange-app .ex-sidebar .ex-sidebar-nav-list > li.active > a.ex-sidebar-nav-item__link > svg.nav-icon,
.exchange-app .ex-sidebar .ex-sidebar-nav-list .ex-sidebar-section__body > li.active > a.ex-sidebar-nav-item__link > svg.nav-icon,
.exchange-app .ex-sidebar .ex-sidebar-nav-list > li.active > a.ex-sidebar-nav-item__link > svg.ex-cat-icon,
.exchange-app .ex-sidebar .ex-sidebar-nav-list .ex-sidebar-section__body > li.active > a.ex-sidebar-nav-item__link > svg.ex-cat-icon {
    flex-basis: var(--ex-sidebar-icon-active-box) !important;
    width: var(--ex-sidebar-icon-active-box) !important;
    min-width: var(--ex-sidebar-icon-active-box) !important;
    max-width: var(--ex-sidebar-icon-active-box) !important;
    height: var(--ex-sidebar-icon-active-box) !important;
    min-height: var(--ex-sidebar-icon-active-box) !important;
    max-height: var(--ex-sidebar-icon-active-box) !important;
    padding: var(--ex-sidebar-icon-active-pad) !important;
    border-radius: var(--theme-radius-control, 8px) !important;
    color: #FFFFFF !important;
    background: var(--theme-primary, #DD3E42) !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.4),
        inset 0 -1px 0 rgba(80, 8, 18, 0.4),
        0 1px 3px rgba(120, 10, 28, 0.4) !important;
}

.exchange-app .ex-sidebar .ex-sidebar-nav-list > li.active > a.ex-sidebar-nav-item__link > svg:is(.lucide, .feather) :is(path, line, circle, ellipse, polyline, polygon, rect),
.exchange-app .ex-sidebar .ex-sidebar-nav-list .ex-sidebar-section__body > li.active > a.ex-sidebar-nav-item__link > svg:is(.lucide, .feather) :is(path, line, circle, ellipse, polyline, polygon, rect),
.exchange-app .ex-sidebar .ex-sidebar-nav-list > li.active > a.ex-sidebar-nav-item__link > svg.ex-sport-svg:not(.ex-sport-svg--fill) :is(path, line, circle, ellipse, polyline, polygon, rect),
.exchange-app .ex-sidebar .ex-sidebar-nav-list .ex-sidebar-section__body > li.active > a.ex-sidebar-nav-item__link > svg.ex-sport-svg:not(.ex-sport-svg--fill) :is(path, line, circle, ellipse, polyline, polygon, rect) {
    fill: none !important;
    stroke: #FFFFFF !important;
}

.exchange-app .ex-sidebar .ex-sidebar-nav-list > li.active > a.ex-sidebar-nav-item__link > svg.ex-sport-svg--fill :is(path, circle, ellipse, polygon, rect),
.exchange-app .ex-sidebar .ex-sidebar-nav-list .ex-sidebar-section__body > li.active > a.ex-sidebar-nav-item__link > svg.ex-sport-svg--fill :is(path, circle, ellipse, polygon, rect) {
    fill: #FFFFFF !important;
    stroke: none !important;
}

/*
 * Legacy sidebar-ref/sidebar selectors contain repeated theme classes and
 * !important declarations. This final hard lock deliberately outranks them.
 */
html body.exchange-app.exchange-app.exchange-app .ex-sidebar .ex-sidebar-nav-list li:not(.active):not(.open) > a.ex-sidebar-nav-item__link > svg.nav-icon,
html body.exchange-app.exchange-app.exchange-app .ex-sidebar .ex-sidebar-nav-list li:not(.active):not(.open) > a.ex-sidebar-nav-item__link > svg.ex-cat-icon {
    display: block !important;
    flex: 0 0 1.375rem !important;
    width: 1.375rem !important;
    min-width: 1.375rem !important;
    max-width: 1.375rem !important;
    height: 1.375rem !important;
    min-height: 1.375rem !important;
    max-height: 1.375rem !important;
    margin: 0 !important;
    padding: 0 !important;
    color: var(--ex-sidebar-icon) !important;
    background: transparent !important;
    box-shadow: none !important;
    opacity: 1 !important;
    visibility: visible !important;
}

html body.exchange-app.exchange-app.exchange-app .ex-sidebar .ex-sidebar-nav-list li:not(.active):not(.open) > a.ex-sidebar-nav-item__link > svg:is(.lucide, .feather),
html body.exchange-app.exchange-app.exchange-app .ex-sidebar .ex-sidebar-nav-list li:not(.active):not(.open) > a.ex-sidebar-nav-item__link > svg.ex-sport-svg:not(.ex-sport-svg--fill),
html body.exchange-app.exchange-app.exchange-app .ex-sidebar .ex-sidebar-nav-list li:not(.active):not(.open) > a.ex-sidebar-nav-item__link > svg:is(.lucide, .feather) :is(path, line, circle, ellipse, polyline, polygon, rect),
html body.exchange-app.exchange-app.exchange-app .ex-sidebar .ex-sidebar-nav-list li:not(.active):not(.open) > a.ex-sidebar-nav-item__link > svg.ex-sport-svg:not(.ex-sport-svg--fill) :is(path, line, circle, ellipse, polyline, polygon, rect) {
    fill: none !important;
    stroke: currentColor !important;
    stroke-width: 1.75 !important;
    stroke-linecap: round !important;
    stroke-linejoin: round !important;
}

html body.exchange-app.exchange-app.exchange-app .ex-sidebar .ex-sidebar-nav-list li:not(.active):not(.open) > a.ex-sidebar-nav-item__link:hover > svg:is(.lucide, .feather, .ex-sport-svg) {
    color: var(--theme-primary, #DD3E42) !important;
}

/* ===== exchange-match-icons.css ===== */
/**
 * Match-list and category-strip Lucide contract.
 *
 * These contexts historically treated category SVGs as filled Font Awesome
 * glyphs. Sidebar categories are now server-rendered Lucide stroke icons, so
 * every non-sidebar reuse must explicitly preserve stroke geometry.
 */

/* Never let legacy category rules fill Lucide paths. */
html body.exchange-app.exchange-app.exchange-app svg.ex-cat-icon:is(.lucide, .feather, .ex-sport-svg) {
    display: block !important;
    box-sizing: border-box !important;
    margin: 0 !important;
    padding: 0 !important;
    fill: none !important;
    stroke: currentColor !important;
    stroke-width: 1.75 !important;
    stroke-linecap: round !important;
    stroke-linejoin: round !important;
    opacity: 1 !important;
    visibility: visible !important;
    filter: none !important;
    overflow: visible !important;
}

html body.exchange-app.exchange-app.exchange-app svg.ex-cat-icon:is(.lucide, .feather, .ex-sport-svg) :is(path, line, circle, ellipse, polyline, polygon, rect) {
    fill: none !important;
    stroke: currentColor !important;
    stroke-width: 1.75 !important;
    stroke-linecap: round !important;
    stroke-linejoin: round !important;
}

/* Match-list sport header: same 22px optical glyph as the sidebar. */
html body.exchange-app.exchange-app.exchange-app .ex-inplay-group__head::before,
html.theme-dark body.exchange-app.exchange-app.exchange-app .ex-inplay-group__head::before {
    background: var(--theme-primary, #DD3E42) !important;
}

html body.exchange-app.exchange-app.exchange-app .ex-inplay-group__icon,
html.theme-dark body.exchange-app.exchange-app.exchange-app .ex-inplay-group__icon {
    color: var(--bp-white, #FFFFFF) !important;
}

html body.exchange-app.exchange-app.exchange-app .ex-inplay-group__icon > svg.ex-cat-icon:is(.lucide, .feather, .ex-sport-svg) {
    width: 1.375rem !important;
    min-width: 1.375rem !important;
    max-width: 1.375rem !important;
    height: 1.375rem !important;
    min-height: 1.375rem !important;
    max-height: 1.375rem !important;
    color: var(--bp-white, #FFFFFF) !important;
}

html body.exchange-app.exchange-app.exchange-app .ex-list-expand-stake,
html.theme-dark body.exchange-app.exchange-app.exchange-app .ex-list-expand-stake {
    color: var(--bp-white, #FFFFFF) !important;
}

html body.exchange-app.exchange-app.exchange-app .ex-list-expand-stake > svg.ex-cat-icon:is(.lucide, .feather, .ex-sport-svg),
html body.exchange-app.exchange-app.exchange-app .ex-list-expand-stake > svg.ex-cat-icon:is(.lucide, .feather, .ex-sport-svg) :is(path, line, circle, ellipse, polyline, polygon, rect) {
    color: var(--bp-white, #FFFFFF) !important;
    fill: none !important;
    stroke: var(--bp-white, #FFFFFF) !important;
}

html.theme-dark body.exchange-app.exchange-app.exchange-app .ex-inplay-group__icon > svg.ex-cat-icon:is(.lucide, .feather, .ex-sport-svg) {
    color: var(--bp-white, #FFFFFF) !important;
}

/* Page/panel headings and compact match-column headings. */
html body.exchange-app.exchange-app.exchange-app .ex-inplay-page__category-icon > svg.ex-cat-icon:is(.lucide, .feather, .ex-sport-svg),
html body.exchange-app.exchange-app.exchange-app .ex-indibet-list__match-hd-icon > svg.ex-cat-icon:is(.lucide, .feather, .ex-sport-svg) {
    width: 1.375rem !important;
    min-width: 1.375rem !important;
    max-width: 1.375rem !important;
    height: 1.375rem !important;
    min-height: 1.375rem !important;
    max-height: 1.375rem !important;
}

/* Active strip chip mirrors sidebar: 26px well with a 19px optical glyph. */
html body.exchange-app.exchange-app.exchange-app .ex-live-cat-strip__item.is-active .ex-live-cat-strip__icon > svg.ex-cat-icon:is(.lucide, .feather, .ex-sport-svg) {
    width: 1.1875rem !important;
    min-width: 1.1875rem !important;
    max-width: 1.1875rem !important;
    height: 1.1875rem !important;
    min-height: 1.1875rem !important;
    max-height: 1.1875rem !important;
}

/* ===== exchange-country-flag.css ===== */
/* Tournament country flags (flag-icons) — size next to group / match labels. */
.exchange-app .ex-country-flag {
    width: 1.05em;
    height: 0.79em;
    margin-right: 0.35em;
    vertical-align: -0.08em;
    border-radius: 1px;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.12);
    flex-shrink: 0;
}

.exchange-app .ex-indibet-row__team .ex-country-flag,
.exchange-app .ex-event__team .ex-country-flag {
    width: 1em;
    height: 0.75em;
    margin-right: 0.3em;
}

.exchange-app .ex-inplay-group__name {
    display: inline-flex;
    align-items: center;
    gap: 0;
    min-width: 0;
}

/* Isolates logo/flag + name so they center on each other regardless of the
   row's own baseline alignment (avoids the pair drifting off the row baseline). */
.exchange-app .ex-match-header-details__tournament {
    display: inline-flex;
    align-items: center;
}

.exchange-app .ex-match-header-details .ex-country-flag {
    margin-right: 0.28em;
}

html.theme-light .exchange-app .ex-country-flag {
    box-shadow: none;
}

/* Generic placeholder for events with no country flag and no tournament logo. */
.exchange-app .ex-flag-placeholder {
    display: inline-block;
    /* Square, not the flag's squashed rectangle — a circular glyph read as
       a fuzzy dot at flag proportions (1.05em × 0.79em). */
    width: 1.15em;
    height: 1.15em;
    /* var(--ex-border) was near-invisible against the page background
       (border color, not a foreground one) — use the muted text color so
       the icon actually reads against both themes. */
    background-color: var(--ex-muted, rgba(128, 128, 128, 0.65));
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10Z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10Z'/%3E%3C/svg%3E");
    -webkit-mask-size: 72% 72%;
    mask-size: 72% 72%;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    box-shadow: none;
}

/* Tournament / league logo (admin upload; falls back to country flag). */
.exchange-app .ex-tournament-logo,
.ex-tournament-logo {
    display: inline-block;
    width: 1.25rem;
    height: 1.25rem;
    margin-right: 0.35em;
    vertical-align: -0.2em;
    object-fit: contain;
    object-position: center;
    flex-shrink: 0;
    border-radius: 2px;
}

.exchange-app .ex-inplay-group__name .ex-tournament-logo {
    width: 1.15rem;
    height: 1.15rem;
    margin-right: 0.3em;
}

.exchange-app .ex-match-header-details .ex-tournament-logo {
    width: 36px;
    height: 36px;
    margin-right: 0.35em;
    align-self: center;
}

/* Tournament page header icon: real logo/flag, not the monochrome-invert
   treatment other .ex-panel-head__icon glyphs get. Sized up from the
   generic 1rem glyph slot since a logo needs more room to read. */
.exchange-app .ex-panel-head__icon.ex-inplay-page__tournament-icon {
    width: 1.5rem;
    height: 1.5rem;
    filter: none;
    opacity: 1;
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
}

.exchange-app .ex-inplay-page__tournament-icon .ex-tournament-logo {
    width: 100%;
    height: 100%;
    margin-right: 0;
    /* Most badge-style tournament marks carry extra transparent canvas below
       the artwork, so a plain center-fit reads as sitting high next to text. */
    transform: translateY(1.5px);
}

.exchange-app .ex-inplay-page__tournament-icon .ex-country-flag {
    /* flag-icons renders these as background-image spans, not <img>, so
       height:auto doesn't scale with width — set the real 4:3 ratio explicitly. */
    width: 100%;
    height: 75%;
    margin-right: 0;
    box-shadow: none;
}

.exchange-app .ex-sidebar-sub-nav .ex-tournament-logo {
    width: 1rem;
    height: 1rem;
    margin-right: 0.4em;
    vertical-align: -0.15em;
}

.ex-tournament-logo--admin {
    width: 1.25rem;
    height: 1.25rem;
    margin-right: 0.4rem;
    vertical-align: middle;
}

/* Team icon slot (team-icon.blade.php) — one common wrapper regardless of
   which of the 4 branches rendered (logo / flag / individual-sport icon /
   placeholder), so spacing and vertical centering are identical either way
   and the team name never shifts baseline depending on icon height
   (14/16/20px all differ). Fixed px, not em, so sizing stays the same
   across the mobile/tablet/desktop card layouts that vary font-size. */
.ex-team-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 20px;
    margin-right: 0.35em;
}

.ex-team-icon .ex-country-flag {
    /* Reset the em-based sizing the shared .ex-country-flag rules above
       apply everywhere else — inside this wrapper the 20x14 comes from
       the wrapper's own fixed-px layout instead. */
    width: 20px;
    height: 14px;
    margin-right: 0;
}

.ex-team-logo {
    width: 20px;
    height: 20px;
    object-fit: contain;
    border-radius: 2px;
}

/* .exchange-app prefix matches (and, combined with this file loading
   last in the trail bundle, wins the tie against) exchange-icons.css's
   .exchange-app svg.ex-sport-svg rule (width/height: 1.45rem/~23px) —
   without it, that rule's higher specificity silently overrode these
   sizes and the icon rendered at ~24px regardless of what was set here. */
.exchange-app .ex-team-icon--individual svg {
    width: 14px;
    height: 14px;
}

/* Placeholder substitutes for a missing club logo — smaller than the
   logo's own 20x20 footprint, and lightly dimmed since it's a
   fallback, not real team art (individual-sport icon above is a real,
   always-shown identifier, so it stays full strength/full size). */
.exchange-app .ex-team-icon--placeholder svg {
    width: 16px;
    height: 16px;
    opacity: 0.75;
}

/* Home/away tone-coding, matching the same accent colors the bet-slip's
   own odds badge and the mobile match-list's team-name text already
   use per side (home=blue/--ex-back, away=pink/--ex-lay), blended with
   the heading color so the icon reads as tinted rather than full
   pastel. team_1/home is always the first .ex-indibet-row__team (or
   .ex-event__team) in the stack, team_2/away the second. !important
   needed: exchange-categories.css's broad "S7 icon system" rule sets
   `.ex-cat-icon { color: var(--s7-icon) !important; }`, which these
   icons also carry as a class and which otherwise wins regardless of
   this rule's own higher specificity, since !important beats normal
   specificity entirely. */
.ex-indibet-row__team:first-of-type .ex-team-icon--individual svg,
.ex-indibet-row__team:first-of-type .ex-team-icon--placeholder svg,
.ex-event__team:first-of-type .ex-team-icon--individual svg,
.ex-event__team:first-of-type .ex-team-icon--placeholder svg {
    color: color-mix(in srgb, var(--ex-back, #72BBEF) 75%, var(--h-color)) !important;
}

.ex-indibet-row__team:last-of-type .ex-team-icon--individual svg,
.ex-indibet-row__team:last-of-type .ex-team-icon--placeholder svg,
.ex-event__team:last-of-type .ex-team-icon--individual svg,
.ex-event__team:last-of-type .ex-team-icon--placeholder svg {
    color: color-mix(in srgb, var(--ex-lay, #FAA9BA) 75%, var(--h-color)) !important;
}
