  :root {
    /* Moirai design tokens */
    --bg:           #0A0A0B;
    --surface:      #141416;
    --surface-2:    #1B1B1F;
    --surface-3:    #202024;
    --border-c:     #25252B;
    --border-strong:#34343B;
    --accent:       #FF1744;                    /* electric red — brand */
    --accent-dim:   rgba(255,23,68,0.18);
    --accent-edge:  rgba(255,23,68,0.42);
    --accent-soft:  rgba(255,23,68,0.10);
    --steel:        #A855F7;                    /* electric purple — secondary cool */
    --steel-soft:   rgba(168,85,247,0.10);
    --steel-edge:   rgba(168,85,247,0.42);
    --elec:         #EC4899;                    /* vivid pink — bookies / opposition (kept distinct from accent red) */
    --ui:           #0EA5E9;                    /* sky-cyan — every "winning" signal: value bets, EV+, correct picks, conf-high, active tab, hovers */
    --ui-soft:      rgba(14,165,233,0.10);
    --ui-edge:      rgba(14,165,233,0.42);
    --loss-red:     #B91C1C;                    /* deep red — every "losing" signal: lost bets, wrong picks, EV- (distinct from brand-electric-red) */
    --loss-red-soft:rgba(185,28,28,0.10);
    --loss-red-edge:rgba(185,28,28,0.42);
    --win:          #2DD4BF;                    /* teal — win streak + Strong pick */
    --win-soft:     rgba(45,212,191,0.10);
    --win-edge:     rgba(45,212,191,0.42);
    --loss:         #94A3B8;                    /* slate — loss streak only */
    --text:         #F5F2EC;
    --text-2:       #8A8A92;
    --text-3:       #4A4A52;
    --side-a:       #FF4D6B;                    /* fighter A — warm pink-red */
    --side-b:       #C084FC;                    /* fighter B — cool lavender */

    --hairline:     1px solid var(--border-c);
    --t-fast:       140ms cubic-bezier(0.2, 0, 0, 1);
    --t-mid:        240ms cubic-bezier(0.2, 0, 0, 1);

    /* Legacy aliases — keep existing markup styled under the new palette.
       Most "winning"-flavoured legacy tokens (matrix/green/yellow/gold) now
       resolve to --ui (cyan) since the design moved positive signals off
       red/amber. --red/--blue still mean fighter sides. */
    --red:        var(--side-a);
    --blue:       var(--side-b);
    --matrix:     var(--ui);
    --matrix-dim: #FF4D6B;
    --purple:     var(--steel);
    --dark:       var(--bg);
    --mid:        var(--surface);
    --card:       var(--surface);
    --card-2:     var(--surface-2);
    --border:     var(--border-c);
    --light:      var(--text);
    --muted:      var(--text-2);
    --gold:       var(--ui);
    --green:      var(--ui);
    --yellow:     var(--ui);
    --radius:     8px;
    --sm:         0.78rem;
    --xs:         0.67rem;
    /* Font + border aliases used by the redesigned Top Value Bets modules
       (snippet code references --font-ui / --font-mono / --border-2). These
       resolve to the existing families/tokens — no visual font/colour change. */
    --font-ui:    'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
    --font-mono:  'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
    --border-2:   var(--border-strong);
  }
  * { box-sizing: border-box; margin: 0; padding: 0; }
  html { scroll-behavior: smooth; }
  body {
    background: var(--bg); color: var(--text);
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
    font-feature-settings: "ss01", "cv11";
    font-size: 14px; line-height: 1.5;
    letter-spacing: -0.005em;
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    position: relative;
    /* Flex column so the footer can use margin-top:auto to pin to viewport
       bottom when content is shorter than the viewport. */
    min-height: 100vh;
    display: flex;
    flex-direction: column;
  }
  /* Atmospheric background — fixed, low-opacity layers that evoke the
     arena (overhead spotlight + faint grid) without a literal photo.
     Sits behind everything via z-index: 0 on body::before/::after
     and z-index: 1 on body > *. */
  body::before {
    content: ""; position: fixed; inset: 0; z-index: 0;
    pointer-events: none;
    background:
      /* Overhead spotlight from top-centre */
      radial-gradient(ellipse 70% 50% at 50% -10%, rgba(255,23,68,0.06), transparent 65%),
      /* Cool counter-light from bottom-right */
      radial-gradient(ellipse 60% 50% at 100% 100%, rgba(168,85,247,0.05), transparent 60%),
      /* Subtle warm rim from bottom-left */
      radial-gradient(ellipse 50% 40% at 0% 100%, rgba(14,165,233,0.04), transparent 65%);
  }
  body::after {
    content: ""; position: fixed; inset: 0; z-index: 0;
    pointer-events: none;
    /* Faint hex/grid texture so the canvas doesn't feel flat */
    background-image:
      linear-gradient(rgba(255,255,255,0.014) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,0.014) 1px, transparent 1px);
    background-size: 48px 48px;
    mask-image: radial-gradient(ellipse 70% 60% at 50% 30%, #000 30%, transparent 90%);
    -webkit-mask-image: radial-gradient(ellipse 70% 60% at 50% 30%, #000 30%, transparent 90%);
    opacity: 0.6;
  }
  body > * { position: relative; z-index: 1; }
  /* Headlines — Inter with tight tracking for a confident-but-restrained feel */
  h1, h2, h3, .mfd-hero__name, .event-header h2,
  .section-title, .page-head__title {
    letter-spacing: -0.01em;
    font-feature-settings: "ss01", "cv11";
  }
  /* Mono — every number, probability, ISO date, odds value */
  .mono, .num, .ev-date,
  .header-stat .num, .prob-nums, .stat-table td, .bp-summary .val,
  .event-header__day-num, .event-header__stat-num,
  .mfd-bet__stat-val, .mfd-bet__payout-odds,
  .mfd-method__a-num, .mfd-method__b-num, .mfd-rounds__num,
  .mfd-driver__impact, .mfd-hero__prob, .mfd-hero__ci-meta,
  .mfd-hero__prob-num, .mfd-tier {
    font-variant-numeric: tabular-nums;
  }

  /* ─── Header — sticky blurred bar (Moirai) ─── */
  header {
    position: sticky; top: 0; z-index: 50;
    background: rgba(10,10,11,0.78);
    backdrop-filter: saturate(140%) blur(12px);
    -webkit-backdrop-filter: saturate(140%) blur(12px);
    border-bottom: var(--hairline);
    padding: 14px 32px;
    display: grid;
    /* logo left · nav right — stats moved to stat-strip below */
    grid-template-columns: auto 1fr;
    align-items: center;
    gap: 20px;
  }
  header > .logo { justify-self: start; }
  /* ─── Stat strip — slim bar just below the header ─── */
  .stat-strip {
    display: flex; align-items: center; gap: 22px;
    padding: 7px 32px;
    background: rgba(10,10,11,0.60);
    backdrop-filter: saturate(120%) blur(8px);
    -webkit-backdrop-filter: saturate(120%) blur(8px);
    border-bottom: var(--hairline);
    font-family: 'JetBrains Mono', monospace;
    font-variant-numeric: tabular-nums;
  }
  .stat-strip .meta {
    font-size: 10.5px; color: var(--text-3);
    line-height: 1; white-space: nowrap;
    display: inline-flex; align-items: center; gap: 8px;
    letter-spacing: 0.04em;
  }
  .stat-strip .meta::before {
    content: ''; width: 6px; height: 6px; border-radius: 50%;
    background: var(--accent);
    box-shadow: 0 0 0 0 rgba(255,23,68,0.5);
    animation: m-pulse 2.4s ease-out infinite;
    flex-shrink: 0;
  }
  .stat-strip .header-stats { display: flex; align-items: center; gap: 16px; }
  .stat-strip .header-stat {
    display: inline-flex; align-items: baseline; gap: 6px;
    position: relative;
  }
  .stat-strip .header-stat + .header-stat::before {
    content: ''; position: absolute; left: -10px; top: 50%;
    width: 1px; height: 12px; transform: translateY(-50%);
    background: var(--border-c);
  }
  .stat-strip .header-stat .num {
    font-size: 13px; font-weight: 500; letter-spacing: -0.01em;
    color: var(--text);
  }
  .stat-strip .header-stat .lbl {
    font-size: 9px; color: var(--text-3);
    text-transform: uppercase; letter-spacing: 0.16em;
    font-family: 'Inter', sans-serif;
  }
  @media (max-width: 700px) { .stat-strip { display: none; } }
  .header-nav {
    display: flex; gap: 4px;
    justify-self: center;
    justify-content: center; flex-wrap: wrap;
  }
  .header-nav a {
    color: var(--text-2); text-decoration: none;
    padding: 7px 16px;
    font-size: 13px; font-weight: 500; letter-spacing: -0.005em;
    border-radius: 4px;
    border: 1px solid transparent;
    transition: color var(--t-fast), background var(--t-fast), border-color var(--t-fast);
  }
  .header-nav a:hover { color: var(--text); background: var(--surface); }
  .header-nav a.active {
    color: var(--text); background: var(--surface-2);
    border-color: var(--border-c);
  }
  /* Secondary, navigate-away links (About/FAQ) sit after a divider so they
     read as informational pages rather than in-page tabs. */
  .header-nav__sep {
    width: 1px; align-self: stretch; margin: 4px 4px;
    background: var(--border-c, rgba(255,255,255,0.10));
  }
  .header-nav a.header-nav__ext { color: var(--text-3, var(--text-2)); font-weight: 450; }
  .header-nav a.header-nav__ext:hover { color: var(--text); background: var(--surface); }
  @media (max-width: 700px) { .header-nav__sep { display: none; } }
  /* Refresh time + stats live together on the right edge as a single
     horizontal line — number adjacent to its label, separators between
     each entry, refresh time at the start with the pulsing dot. */
  .header-right {
    display: flex; align-items: center; gap: 22px;
    font-family: 'JetBrains Mono', monospace;
    font-variant-numeric: tabular-nums;
  }
  .logo { display: flex; align-items: center; gap: 12px; text-decoration: none; color: inherit; }
  .logo-icon { width: 28px; height: 28px; flex-shrink: 0; display: grid; place-items: center; }
  .logo-icon svg { width: 100%; height: 100%; }
  .logo-text { display: flex; flex-direction: column; line-height: 1.1; }
  .logo-text h1 {
    font-size: 17px; font-weight: 500; letter-spacing: -0.02em;
    color: var(--text);
    background: none; -webkit-background-clip: initial; -webkit-text-fill-color: currentColor;
  }
  .logo-text .tagline {
    font-size: 9.5px; color: var(--text-3); letter-spacing: 0.18em;
    text-transform: uppercase; font-weight: 400;
    text-shadow: none;
    margin-top: 2px;
  }
  /* Inline stats: number and label sit on the same baseline so the right
     side of the header reads as one tidy line. Items are separated by
     hairline dividers via .header-stat::before. */
  .header-stats {
    display: flex; align-items: center; gap: 16px;
  }
  .header-stat {
    display: inline-flex; align-items: baseline; gap: 6px;
    padding: 0;
    position: relative;
  }
  .header-stat + .header-stat::before {
    content: ''; position: absolute; left: -10px; top: 50%;
    width: 1px; height: 12px; transform: translateY(-50%);
    background: var(--border-c);
  }
  .header-stat .num {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 14px; font-weight: 500; line-height: 1; letter-spacing: -0.01em;
    color: var(--text);
    background: none; -webkit-background-clip: initial; -webkit-text-fill-color: currentColor;
  }
  .header-stat .lbl {
    font-size: 9px; color: var(--text-3);
    text-transform: uppercase; letter-spacing: 0.16em;
    margin-top: 0;
    font-family: 'Inter', sans-serif;
  }
  /* .header .meta is now rendered in .stat-strip — keep rule so
     any stale markup doesn't become unstyled */
  header .meta {
    margin-left: 0; font-size: 10.5px; color: var(--text-3);
    line-height: 1; white-space: nowrap;
    display: none; align-items: center; gap: 8px;
    letter-spacing: 0.04em;
    font-family: 'JetBrains Mono', monospace;
    font-variant-numeric: tabular-nums;
  }
  header .meta::before {
    content: ''; width: 6px; height: 6px; border-radius: 50%;
    background: var(--accent);
    box-shadow: 0 0 0 0 rgba(255,23,68,0.5);
    animation: m-pulse 2.4s ease-out infinite;
    flex-shrink: 0;
  }
  @keyframes m-pulse {
    0%   { box-shadow: 0 0 0 0 rgba(255,23,68,0.4); }
    70%  { box-shadow: 0 0 0 6px rgba(255,23,68,0); }
    100% { box-shadow: 0 0 0 0 rgba(255,23,68,0); }
  }
  @media (max-width: 1100px) {
    /* Below this width the 3-col grid gets cramped; collapse to a 2-row
       layout — logo + stats on top row, nav full-width on second row. */
    header {
      grid-template-columns: 1fr auto;
      grid-template-rows: auto auto;
      row-gap: 10px;
    }
    .header-nav {
      grid-column: 1 / -1;
      justify-self: center;
    }
  }
  @media (max-width: 980px) {
    header { padding: 12px 20px; gap: 14px; }
    .stat-strip { padding: 6px 20px; gap: 14px; }
    .logo-text h1 { font-size: 15px; }
  }
  @media (max-width: 700px) {
    .header-nav { flex-wrap: wrap; }
    .header-nav a { padding: 6px 12px; font-size: 12.5px; }
  }

  main { max-width: 100%; margin: 0; padding: 28px 32px 80px; }
  @media (max-width: 700px) {
    main { padding: 18px 16px 64px; }
  }

  /* ─── Search bar ─── */
  .search-bar {
    position: relative; margin-bottom: 1rem;
  }
  .search-bar input {
    width: 100%; padding: 0.65rem 1rem 0.65rem 2.4rem;
    background: var(--card-2); border: 1px solid var(--border);
    border-radius: 8px; color: var(--light); font-family: inherit;
    font-size: var(--sm); transition: all 0.15s;
  }
  .search-bar input:focus {
    outline: none; border-color: var(--ui-edge);
    box-shadow: 0 0 0 3px var(--ui-soft);
  }
  .search-bar::before {
    content: "⌕"; position: absolute; left: 0.85rem; top: 50%;
    transform: translateY(-50%); color: var(--muted); font-size: 1rem;
  }
  .search-result-count {
    font-size: var(--xs); color: var(--muted); margin-top: 0.25rem;
    padding-left: 0.25rem;
  }

  /* ─── Onboarding explainer (collapsed by default) ─── */
  .read-guide {
    margin: 0 0 1.4rem;
    background: var(--surface, var(--card-2));
    border: 1px solid var(--border-c, var(--border));
    border-radius: 10px;
    overflow: hidden;
  }
  .read-guide__summary {
    list-style: none; cursor: pointer;
    display: flex; align-items: center; gap: 9px;
    padding: 0.7rem 1rem;
    font-size: var(--sm); font-weight: 600; color: var(--text-2, var(--light));
    user-select: none;
  }
  .read-guide__summary::-webkit-details-marker { display: none; }
  .read-guide__summary:hover { color: var(--light); }
  .read-guide__icon {
    flex-shrink: 0; width: 18px; height: 18px; border-radius: 50%;
    display: grid; place-items: center;
    font-size: 11px; font-weight: 700;
    color: var(--accent); border: 1px solid var(--accent);
  }
  .read-guide__chev {
    margin-left: auto; color: var(--muted); font-size: 12px;
    transition: transform 0.2s ease;
  }
  .read-guide[open] .read-guide__chev { transform: rotate(180deg); }
  .read-guide__body { padding: 0 1rem 1rem; }
  .read-guide__grid {
    margin: 0;
    display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
    gap: 0.6rem 1.4rem;
  }
  .read-guide__item { margin: 0; }
  .read-guide__item dt {
    font-size: var(--xs); font-weight: 700; letter-spacing: 0.01em;
    color: var(--accent); margin-bottom: 2px;
  }
  .read-guide__item dd {
    margin: 0; font-size: 12.5px; line-height: 1.5; color: var(--text-2, var(--muted));
  }
  .read-guide__item dd strong { color: var(--light); font-weight: 600; }
  .read-guide__foot {
    margin: 0.9rem 0 0; padding-top: 0.7rem;
    border-top: 1px solid var(--border-c, var(--border));
    font-size: 12px; color: var(--muted);
  }
  .read-guide__foot a { color: var(--accent); text-decoration: none; }
  .read-guide__foot a:hover { text-decoration: underline; }

  /* ─── Next event highlight ─── */
  .next-badge {
    display: inline-block;
    font-family: 'JetBrains Mono', monospace;
    font-size: 9.5px; font-weight: 500;
    padding: 2px 7px; border-radius: 2px;
    background: var(--ui-soft);
    color: var(--ui); text-transform: uppercase; letter-spacing: 0.12em;
    margin-left: 0.5rem; vertical-align: middle;
    border: 1px solid var(--ui-edge);
    animation: pulse 2.4s ease-in-out infinite;
  }
  @keyframes pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(14,165,233,0); }
    50%      { box-shadow: 0 0 0 4px rgba(14,165,233,0.10); }
  }
  /* ─── Live event / live bout / completed bout ─── */
  .live-badge {
    display: inline-block;
    font-size: 0.55rem; font-weight: 800;
    padding: 2px 8px; border-radius: 3px;
    background: linear-gradient(135deg, #ff3344, #b40e1d);
    color: #fff; text-transform: uppercase; letter-spacing: 0.12em;
    margin-left: 0.5rem; vertical-align: middle;
    box-shadow: 0 0 14px rgba(255, 51, 68, 0.6);
    animation: live-pulse 1.4s ease-in-out infinite;
  }
  @keyframes live-pulse {
    0%, 100% { box-shadow: 0 0 12px rgba(255, 51, 68, 0.55); }
    50%      { box-shadow: 0 0 22px rgba(255, 51, 68, 0.95); }
  }
  .live-pill {
    display: inline-block; padding: 2px 7px; border-radius: 3px;
    background: #b40e1d; color: #fff;
    font-size: 0.6rem; font-weight: 800; letter-spacing: 0.1em;
    text-transform: uppercase;
    box-shadow: 0 0 10px rgba(255, 51, 68, 0.6);
    animation: live-pulse 1.4s ease-in-out infinite;
  }
  .result-pill {
    display: inline-block; padding: 2px 7px; border-radius: 3px;
    background: rgba(120, 120, 130, 0.18); color: var(--muted);
    font-size: 0.62rem; font-weight: 700; letter-spacing: 0.05em;
  }
  .rounds-pill {
    display: inline-block; margin-left: 6px;
    color: var(--muted);
    font-size: 0.62rem; font-weight: 600; letter-spacing: 0.04em;
    vertical-align: middle;
  }
  .result-text {
    display: block; margin-top: 4px;
    color: var(--matrix); font-weight: 600; font-size: 0.7rem;
  }
  .pred-mark {
    display: inline-block; margin-left: 4px;
    font-weight: 800; font-size: 0.78rem; line-height: 1;
  }
  .pred-correct { color: var(--ui); }
  .pred-wrong   { color: var(--loss-red); }

  /* Tooltips */
  [data-tt] { position: relative; cursor: help; border-bottom: 1px dotted var(--muted); }
  [data-tt]::after {
    content: attr(data-tt);
    position: absolute; bottom: 100%; left: 50%; transform: translateX(-50%) translateY(-4px);
    background: #0a0a0c; color: var(--light);
    padding: 6px 10px; border-radius: 6px;
    font-size: var(--xs); white-space: nowrap; max-width: 280px; white-space: normal;
    width: max-content; max-width: 240px;
    text-align: left; line-height: 1.45;
    border: 1px solid var(--border);
    opacity: 0; pointer-events: none; transition: opacity 0.15s;
    z-index: 100;
  }
  [data-tt]:hover::after { opacity: 1; }

  /* ─── Subtitle strip — calm hairline-bordered card ─── */
  .matrix-tagline {
    background: var(--surface);
    border: var(--hairline);
    border-radius: var(--radius);
    padding: 14px 18px;
    margin-bottom: 1.4rem;
    font-size: 12.5px;
    color: var(--text-2);
    letter-spacing: -0.005em;
    text-align: center;
    line-height: 1.55;
  }
  .matrix-tagline .orb, footer .orb {
    color: var(--accent);
    font-weight: 500;
    letter-spacing: 0.04em;
  }

  /* ─── Event tab strip — slow auto-scrolling marquee, click to select ─── */
  .carousel-wrap {
    margin: 0 -2rem 28px;
    padding: 22px 0 22px;
    border-bottom: var(--hairline);
    position: relative;
    overflow: hidden;
  }
  .carousel-label {
    font-size: 10.5px; color: var(--text-2); letter-spacing: 0.16em;
    text-transform: uppercase; font-weight: 500; margin-bottom: 14px;
    padding: 0 2rem;
    display: flex; align-items: center; gap: 8px;
  }
  .carousel-label::before {
    content: ''; width: 6px; height: 6px;
    background: var(--accent);
    border-radius: 50%;
    flex-shrink: 0;
  }
  .carousel-wrap::before, .carousel-wrap::after {
    content: ''; position: absolute;
    top: 22px; bottom: 22px; width: 96px;
    pointer-events: none; z-index: 2;
  }
  .carousel-wrap::before {
    left: 0;
    background: linear-gradient(to right, var(--bg), rgba(10,10,11,0));
  }
  .carousel-wrap::after {
    right: 0;
    background: linear-gradient(to left, var(--bg), rgba(10,10,11,0));
  }
  .carousel {
    display: flex; gap: 14px;
    width: max-content;
    padding: 4px 2rem;
    /* Position is driven by JS (requestAnimationFrame) so the speed change
       on hover stays continuous — no positional snap. The CSS animation
       below is only a fallback before the JS attaches. */
    animation: ticker-slide 30s linear infinite;
    will-change: transform;
  }
  .carousel.js-driven { animation: none; }
  @keyframes ticker-slide {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
  }
  .event-pill {
    flex-shrink: 0; min-width: 240px; max-width: 280px;
    background: var(--surface);
    border: var(--hairline);
    border-radius: var(--radius); padding: 14px 16px;
    text-decoration: none; color: inherit; cursor: pointer;
    transition: border-color var(--t-fast), background var(--t-fast), transform var(--t-fast);
    position: relative;
  }
  .event-pill:hover {
    border-color: var(--border-strong);
    background: var(--surface-2);
    transform: translateY(-2px);
  }
  .event-pill.is-active-tab {
    border-color: var(--ui-edge);
    background: var(--ui-soft);
    box-shadow: inset 0 0 0 1px var(--ui-edge);
  }
  .event-pill.is-active-tab .ev-name { color: var(--ui); }
  .event-pill .ev-name {
    font-weight: 500; font-size: 13px; margin-bottom: 4px;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    letter-spacing: -0.005em;
    color: var(--text);
  }
  .event-pill .ev-date {
    font-family: 'JetBrains Mono', monospace;
    font-size: 10.5px; color: var(--text-3);
    letter-spacing: 0.06em;
  }
  .event-pill .ev-stats {
    font-size: 10.5px; color: var(--text-2);
    margin-top: 8px; letter-spacing: 0.04em;
  }
  .event-pill.no-odds { opacity: 0.88; }
  .event-pill.no-odds .ev-stats { color: var(--text-3); }

  /* ─── Procedural pill hue palette ───────────────────────────────────
     Six curated hues cycled per event index. Each pill carries one
     pill-hue-N class which sets --pill-hue (HSL space) — shared rules
     apply a faint background wash + bordered tint + hover glow. The
     :not(.is-active-tab) guard keeps the soonest-event cyan highlight
     intact, and .pill--whitehouse / .pill--mcgregor never receive a
     hue class so their full premium themes are never diluted. */
  .event-pill.pill-hue-0 { --pill-hue: 173 80% 40%; }   /* teal     */
  .event-pill.pill-hue-1 { --pill-hue: 258 90% 66%; }   /* violet   */
  .event-pill.pill-hue-2 { --pill-hue:  38 92% 50%; }   /* amber    */
  .event-pill.pill-hue-3 { --pill-hue: 350 89% 60%; }   /* rose     */
  .event-pill.pill-hue-4 { --pill-hue: 199 89% 60%; }   /* sky      */
  .event-pill.pill-hue-5 { --pill-hue:  84 81% 44%; }   /* lime     */

  .event-pill[class*="pill-hue-"]:not(.is-active-tab) {
    background:
      linear-gradient(180deg,
        hsl(var(--pill-hue) / 0.07) 0%,
        hsl(var(--pill-hue) / 0)    65%),
      var(--surface);
    border-color: hsl(var(--pill-hue) / 0.32);
  }
  .event-pill[class*="pill-hue-"]:not(.is-active-tab):hover {
    background:
      linear-gradient(180deg,
        hsl(var(--pill-hue) / 0.14) 0%,
        hsl(var(--pill-hue) / 0)    70%),
      var(--surface-2);
    border-color: hsl(var(--pill-hue) / 0.62);
    box-shadow: 0 10px 26px -12px hsl(var(--pill-hue) / 0.55);
  }
  .event-pill[class*="pill-hue-"]:not(.is-active-tab):hover .ev-name {
    color: hsl(var(--pill-hue) / 0.95);
    transition: color var(--t-fast);
  }

  /* Next / Live marker on the soonest carousel card — centred and popped
     half above the pill's top edge so it stands proud of the card. The
     22px carousel-wrap top padding gives it clear headroom before the
     wrap's overflow:hidden box, so it never gets clipped. Opaque bg so
     the card's top border doesn't read through the badge. */
  .event-pill .ev-flag {
    position: absolute; top: -11px; left: 50%;
    transform: translateX(-50%);
    display: inline-flex; align-items: center; gap: 4px;
    font: 800 9px/1 'JetBrains Mono', monospace;
    letter-spacing: 0.16em; text-transform: uppercase;
    padding: 5px 9px; border-radius: 4px;
    white-space: nowrap; z-index: 2;
  }
  .event-pill .ev-flag--next {
    color: var(--win); background: var(--surface-3);
    box-shadow: inset 0 0 0 1px var(--win-edge),
                0 0 12px rgba(45, 212, 191, 0.35);
  }
  .event-pill .ev-flag--live {
    color: #fff; background: linear-gradient(135deg, #ff3344, #b40e1d);
    box-shadow: 0 0 12px rgba(255, 51, 68, 0.55);
    animation: live-pulse 1.4s ease-in-out infinite;
  }
  .event-pill .ev-flag__dot {
    width: 5px; height: 5px; border-radius: 50%;
    background: #fff; box-shadow: 0 0 5px rgba(255, 255, 255, 0.9);
  }

  /* ═══════════ SPECIAL EVENT PILLS ═══════════ */

  /* ── UFC Freedom 250 · "The White House card" — gilded card with
        animated white-gold angel wings that flap idly and spread on
        hover. overflow:visible lets the wings break the pill silhouette;
        the 22px carousel-wrap headroom keeps them off the clip box. ── */
  .event-pill.pill--whitehouse {
    overflow: visible;
    background:
      radial-gradient(120% 140% at 50% 0%, rgba(255,205,110,0.16), rgba(255,205,110,0) 60%),
      linear-gradient(180deg, #1a1408 0%, #0b0a06 75%);
    border-color: rgba(255,205,110,0.55);
    box-shadow:
      0 0 0 1px rgba(255,205,110,0.20) inset,
      0 8px 28px -10px rgba(255,196,84,0.45);
    z-index: 1;
  }
  .event-pill.pill--whitehouse:hover {
    border-color: rgba(255,222,150,0.95);
    background:
      radial-gradient(120% 140% at 50% 0%, rgba(255,214,130,0.26), rgba(255,205,110,0) 62%),
      linear-gradient(180deg, #221a0b 0%, #0d0b06 75%);
    box-shadow:
      0 0 0 1px rgba(255,214,130,0.40) inset,
      0 14px 38px -10px rgba(255,196,84,0.65);
    transform: translateY(-3px);
  }
  .event-pill.pill--whitehouse .ev-name {
    color: #ffe6a8;
    text-shadow: 0 0 14px rgba(255,205,110,0.55);
    font-weight: 600; position: relative; z-index: 2;
  }
  .event-pill.pill--whitehouse .ev-date,
  .event-pill.pill--whitehouse .ev-stats { color: #d8c79a; position: relative; z-index: 2; }

  .event-pill.pill--whitehouse .pill-shimmer {
    position: absolute; inset: 0; border-radius: var(--radius);
    pointer-events: none; overflow: hidden; z-index: 1;
  }
  .event-pill.pill--whitehouse .pill-shimmer::before {
    content: ''; position: absolute; top: 0; bottom: 0; width: 45%;
    left: -60%;
    background: linear-gradient(105deg,
      rgba(255,236,180,0) 0%, rgba(255,236,180,0.28) 50%, rgba(255,236,180,0) 100%);
    animation: wh-shimmer 4.6s cubic-bezier(.5,0,.3,1) infinite;
  }
  @keyframes wh-shimmer {
    0%   { left: -60%; }
    55%  { left: 120%; }
    100% { left: 120%; }
  }

  /* ── UFC 329 · McGregor vs Holloway 2 — blacked-out card with a
        crimson beam orbiting the border, drifting ember glows, and a
        hover "charge-up". Deliberately the darkest pill on the strip. ── */
  .event-pill.pill--mcgregor {
    background:
      radial-gradient(90% 120% at 25% 0%, rgba(255,31,61,0.14), rgba(255,31,61,0) 55%),
      radial-gradient(80% 120% at 90% 110%, rgba(255,31,61,0.10), rgba(255,31,61,0) 50%),
      #060305;
    border-color: rgba(255,31,61,0.30);
    overflow: hidden; z-index: 1;
  }
  /* orbiting crimson beam — a masked rotating conic ring on the border */
  .event-pill.pill--mcgregor::before {
    content: ''; position: absolute; inset: -2px; border-radius: inherit;
    background: conic-gradient(from 0turn,
      transparent 0 0.55turn, rgba(255,31,61,0.0) 0.6turn,
      #ff1f3d 0.72turn, #ff8a93 0.79turn, rgba(255,31,61,0) 0.9turn,
      transparent 1turn);
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
            mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite: xor; mask-composite: exclude;
    padding: 1.5px;
    animation: mcg-orbit 5s linear infinite;
    z-index: 0; pointer-events: none;
  }
  /* pulsing inner vignette */
  .event-pill.pill--mcgregor::after {
    content: ''; position: absolute; inset: 0; border-radius: inherit;
    box-shadow: inset 0 0 26px -6px rgba(255,31,61,0.45);
    opacity: 0.5; z-index: 0; pointer-events: none;
    animation: mcg-throb 2.6s ease-in-out infinite;
  }
  .event-pill.pill--mcgregor > * { position: relative; z-index: 2; }
  .event-pill.pill--mcgregor .ev-name {
    color: #ff5365; font-weight: 600;
    text-shadow: 0 0 12px rgba(255,31,61,0.55);
    transition: letter-spacing .4s ease, text-shadow .4s ease;
  }
  .event-pill.pill--mcgregor .ev-date,
  .event-pill.pill--mcgregor .ev-stats { color: #b98a90; }
  .event-pill.pill--mcgregor .pill-ember {
    position: absolute; width: 70px; height: 70px; border-radius: 50%;
    pointer-events: none; z-index: 1; filter: blur(14px);
    background: radial-gradient(circle, rgba(255,53,80,0.55), rgba(255,31,61,0) 70%);
    left: -10px; top: 40%;
    animation: mcg-ember 6.5s ease-in-out infinite;
  }
  .event-pill.pill--mcgregor .pill-ember--2 {
    left: auto; right: -14px; top: -8px;
    background: radial-gradient(circle, rgba(255,90,110,0.45), rgba(255,31,61,0) 70%);
    animation: mcg-ember2 7.5s ease-in-out infinite;
  }
  .event-pill.pill--mcgregor:hover {
    border-color: rgba(255,31,61,0.65);
    transform: translateY(-3px) scale(1.015);
    box-shadow: 0 16px 40px -12px rgba(255,31,61,0.6);
  }
  .event-pill.pill--mcgregor:hover::before { animation-duration: 1.8s; }
  .event-pill.pill--mcgregor:hover::after  { opacity: 0.95; }
  .event-pill.pill--mcgregor:hover .ev-name {
    letter-spacing: 0.06em;
    text-shadow: 0 0 18px rgba(255,31,61,0.9);
  }
  @keyframes mcg-orbit { to { transform: rotate(1turn); } }
  @keyframes mcg-throb {
    0%, 100% { opacity: 0.38; }
    50%      { opacity: 0.85; }
  }
  @keyframes mcg-ember {
    0%, 100% { transform: translate(0, 0) scale(1);   opacity: 0.55; }
    50%      { transform: translate(14px, -12px) scale(1.25); opacity: 0.9; }
  }
  @keyframes mcg-ember2 {
    0%, 100% { transform: translate(0, 0) scale(1);   opacity: 0.4; }
    50%      { transform: translate(-12px, 14px) scale(1.3); opacity: 0.8; }
  }

  @media (prefers-reduced-motion: reduce) {
    .pill-shimmer::before,
    .event-pill.pill--mcgregor::before,
    .event-pill.pill--mcgregor::after,
    .event-pill.pill--mcgregor .pill-ember {
      animation: none !important;
    }
    .carousel { animation: none !important; transform: none !important; }
    .mfd, .mfd-method__fill, .mfd-method__fill--b,
    .mfd-rounds__bar, .mfd-driver__bar, .prob-bar .pba,
    #fights-panel .event-card.is-active-event {
      animation: none !important;
      transform: none !important;
    }
  }

  /* Pagination: in the Upcoming Fights panel, only the active event-card is
     rendered, with a small fade+rise animation when it becomes active. */
  #fights-panel .event-card { display: none; }
  #fights-panel .event-card.is-active-event {
    display: block;
    animation: card-rise 320ms cubic-bezier(0.2, 0, 0, 1);
  }
  @keyframes card-rise {
    from { opacity: 0; transform: translateY(6px); }
    to   { opacity: 1; transform: translateY(0); }
  }
  @keyframes mfd-bar-grow {
    from { transform: scaleX(0); }
    to   { transform: scaleX(1); }
  }
  @keyframes mfd-bar-rise {
    from { transform: scaleY(0); }
    to   { transform: scaleY(1); }
  }
  @keyframes mfd-fade-in {
    from { opacity: 0; transform: translateY(-2px); }
    to   { opacity: 1; transform: translateY(0); }
  }

  /* ─── Event card — hairline-bordered, calm ─── */
  .event-card { margin-bottom: 2rem; scroll-margin-top: 120px; }

  /* Hero banner — slow-rotating SVG scenes that evoke an arena, sit above
     the event-header. Drop your own jpg/svg files into docs/assets/heroes/
     and update the --bg-N URLs to swap in real photography. */
  .event-hero {
    position: relative;
    height: 168px;
    overflow: hidden;
    border: var(--hairline);
    border-bottom: none;
    border-radius: var(--radius) var(--radius) 0 0;
    background: var(--bg);
  }
  .event-hero__scene {
    position: absolute; inset: 0;
    background-size: cover;
    background-position: center;
    opacity: 0;
    animation: hero-cycle 24s ease-in-out infinite;
    will-change: opacity;
  }
  /* Paths are relative to THIS stylesheet (/assets/dashboard.css), so the hero
     assets are siblings under heroes/ — NOT assets/heroes/ (the doubled assets/
     segment 404'd → fell back to the black --bg → "hero void" bug). */
  .event-hero__scene--1 { background-image: url('heroes/hero-1.svg'); animation-delay: 0s;  }
  .event-hero__scene--2 { background-image: url('heroes/hero-2.svg'); animation-delay: -8s; }
  .event-hero__scene--3 { background-image: url('heroes/hero-3.svg'); animation-delay: -16s; }
  @keyframes hero-cycle {
    /* 24s loop — each scene visible ~7s + 1s crossfade */
    0%   { opacity: 0; }
    4%   { opacity: 1; }
    33%  { opacity: 1; }
    37%  { opacity: 0; }
    100% { opacity: 0; }
  }
  /* Top-fade overlay so any text you place over the hero stays legible */
  .event-hero__overlay {
    position: absolute; inset: 0;
    pointer-events: none;
    background:
      linear-gradient(180deg, rgba(10,10,11,0.10) 0%, rgba(10,10,11,0.55) 70%, rgba(10,10,11,0.85) 100%);
  }
  .event-hero__title {
    position: absolute;
    left: 28px; top: 13px;
    font-size: 11px; letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--text-2);
    z-index: 4;
    display: flex; align-items: center; gap: 8px;
  }
  .event-hero__title::before {
    content: ''; width: 18px; height: 1px; background: var(--text-3);
  }
  /* Link wrap around the hero title — keeps the same visual but lets
     search engines (and users) reach the per-event page. */
  .event-hero__title-link {
    position: absolute;
    left: 28px; top: 13px;
    z-index: 4;
    text-decoration: none;
  }

  /* ── Functional hero — main-event headshots + headline confidence + countdown.
     Sits above the SVG scenes (kept as ambient backdrop) and the scrim overlay. */
  .event-hero__feature {
    position: absolute; inset: 0; z-index: 3;
    display: flex; align-items: center; justify-content: center;
    gap: clamp(14px, 5vw, 60px);
    padding: 22px 24px 14px;
  }
  .hero-fighter {
    margin: 0; flex-shrink: 0;
    display: flex; flex-direction: column; align-items: center; gap: 7px;
    width: 108px;
  }
  .hero-fighter__img {
    position: relative;
    width: 80px; height: 80px; border-radius: 50%;
    overflow: hidden;
    border: 2px solid rgba(255,255,255,0.12);
    background: var(--surface-2, #1a1a1d);
    box-shadow: 0 4px 16px rgba(0,0,0,0.45);
  }
  .hero-fighter__img img { width: 100%; height: 100%; object-fit: cover; object-position: top center; }
  .hero-fighter__initials {
    width: 100%; height: 100%;
    display: flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: 23px; color: var(--text-2);
  }
  .hero-fighter.is-fav .hero-fighter__img {
    border-color: var(--accent);
    box-shadow: 0 0 0 1px var(--accent), 0 6px 22px rgba(255,179,0,0.28);
  }
  .hero-fighter figcaption {
    max-width: 108px; text-align: center;
    font-size: 13px; font-weight: 600; color: var(--light);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  }
  .hero-fighter.is-fav figcaption { color: var(--accent); }
  .hero-mid {
    flex-shrink: 0; min-width: 116px;
    display: flex; flex-direction: column; align-items: center; gap: 2px;
    text-align: center;
  }
  .hero-mid--solo { gap: 9px; }
  .hero-mid__kicker {
    font-size: 9.5px; letter-spacing: 0.16em; text-transform: uppercase;
    font-weight: 700; color: var(--accent);
  }
  .hero-confidence__num {
    font-size: 34px; font-weight: 800; line-height: 1.05; color: var(--light);
    font-variant-numeric: tabular-nums;
  }
  .hero-mid__lean { font-size: 11px; color: var(--text-2); }
  .hero-mid__lean strong { color: var(--light); font-weight: 600; }
  .hero-countdown {
    margin-top: 4px;
    font-size: 10.5px; font-weight: 600; letter-spacing: 0.01em;
    color: var(--text-2);
    background: rgba(255,255,255,0.06);
    border: 1px solid var(--border-c, rgba(255,255,255,0.12));
    border-radius: 999px; padding: 3px 11px; white-space: nowrap;
  }
  .hero-countdown[data-live="1"] { color: #ff5252; border-color: rgba(255,82,82,0.45); }
  @media (max-width: 560px) {
    .event-hero__feature { gap: 10px; padding: 20px 12px 10px; }
    .hero-fighter { width: 78px; gap: 5px; }
    .hero-fighter__img { width: 58px; height: 58px; }
    .hero-fighter__initials { font-size: 17px; }
    .hero-fighter figcaption { font-size: 11.5px; max-width: 78px; }
    .hero-mid { min-width: 92px; }
    .hero-confidence__num { font-size: 26px; }
    .hero-mid__lean { font-size: 10px; }
    .hero-countdown { font-size: 9.5px; padding: 2px 8px; }
  }
  .event-hero__title-link .event-hero__title {
    position: static; left: auto; bottom: auto;
    transition: color 0.15s;
  }
  .event-hero__title-link:hover .event-hero__title { color: var(--ui); }
  /* When the hero is present, square off the event-header's top corners
     so it stacks visually with the banner above. */
  .event-hero + .event-header { border-radius: 0; border-top: none; }

  @media (max-width: 700px) {
    .event-hero { height: 120px; }
  }
  @media (prefers-reduced-motion: reduce) {
    .event-hero__scene { animation: none; }
    .event-hero__scene--1 { opacity: 1; }
  }

  /* Refined header: 3-col grid — date stack | title block | bout count.
     The date stack is parsed from the ISO date in the template. */
  .event-header {
    background: var(--surface);
    border: var(--hairline);
    border-radius: var(--radius) var(--radius) 0 0;
    padding: 22px 26px;
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 28px;
  }
  .event-header__date-stack {
    display: flex; flex-direction: column; align-items: center;
    padding: 12px 16px;
    /* Red-black radial fade — UFC-style date plate. The accent red sits
       behind the day number and falls off to near-black at the edges, so
       the date stays high-contrast against the deeper black surround. */
    background:
      radial-gradient(ellipse at center, rgba(178,30,55,0.55) 0%, rgba(60,8,15,0.85) 55%, rgba(20,4,8,0.95) 100%),
      #0a0a0b;
    border: 1px solid rgba(255,23,68,0.32);
    box-shadow:
      inset 0 0 24px rgba(255,23,68,0.18),
      0 0 0 1px rgba(0,0,0,0.4);
    border-radius: var(--radius);
    min-width: 76px;
  }
  .event-header__day-name {
    font-size: 9px; letter-spacing: 0.18em;
    /* Lifted from --text-3 because dim grey vanishes against the red wash. */
    color: rgba(255,255,255,0.65);
    margin-bottom: 4px;
  }
  .event-header__day-num {
    font-family: 'JetBrains Mono', monospace;
    font-size: 32px; font-weight: 600; line-height: 1;
    letter-spacing: -0.02em;
    color: #ffffff;
    text-shadow: 0 1px 2px rgba(0,0,0,0.55);
    font-variant-numeric: tabular-nums;
  }
  .event-header__month {
    font-size: 9px; letter-spacing: 0.18em;
    color: rgba(255,255,255,0.65);
    margin-top: 4px;
  }
  .event-header__main { min-width: 0; }
  .event-header__kicker {
    font-size: 9.5px; letter-spacing: 0.16em;
    color: var(--text-3);
    margin-bottom: 6px;
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  }
  .event-header h2 {
    margin: 0;
    font-size: 22px; font-weight: 500;
    letter-spacing: -0.02em;
    color: var(--text);
    line-height: 1.15;
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  }
  .event-header__location {
    margin-top: 8px;
    display: inline-flex; align-items: center; gap: 6px;
    font-size: 11.5px; color: var(--text-2);
    letter-spacing: 0.02em;
  }
  .event-header__location svg { color: var(--text-3); }
  .event-header .date {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px; color: var(--text-3);
    letter-spacing: 0.06em;
  }
  .event-header__stats {
    display: flex; align-items: center; gap: 18px;
  }
  .event-header__stat { display: flex; flex-direction: column; align-items: flex-end; }
  .event-header__stat-num {
    font-family: 'JetBrains Mono', monospace;
    font-size: 20px; font-weight: 500;
    letter-spacing: -0.02em;
    color: var(--text);
    line-height: 1.05;
    font-variant-numeric: tabular-nums;
  }
  .event-header__stat-num--accent { color: var(--ui); }
  .event-header__stat-lbl {
    font-size: 9px; letter-spacing: 0.14em;
    color: var(--text-3);
    margin-top: 4px;
    text-transform: uppercase;
  }
  .event-header__stat-divider { width: 1px; height: 32px; background: var(--border-c); }
  @media (max-width: 700px) {
    .event-header { grid-template-columns: auto 1fr; padding: 16px 18px; gap: 16px; }
    .event-header__stats { grid-column: 1 / -1; justify-content: flex-start; }
    .event-header__date-stack { padding: 10px 14px; min-width: 64px; }
    .event-header__day-num { font-size: 26px; }
    .event-header h2 { font-size: 18px; }
  }

  /* ─── Fight block ─── */
  .fight-block {
    background: var(--bg);
    border: 1px solid var(--border-c); border-top: none;
    border-left: 2px solid rgba(255,23,68,0.22);
    transition: border-left-color 0.2s, box-shadow 0.2s;
  }
  .fight-block:hover {
    border-left-color: rgba(255,23,68,0.55);
    box-shadow: -3px 0 18px -4px rgba(255,23,68,0.18);
  }
  .fight-block:last-child { border-radius: 0 0 var(--radius) var(--radius); }
  .fight-block.expanded { background: rgba(255,255,255,0.012); border-left-color: var(--accent); }

  .fight-main {
    position: relative;
    display: flex; align-items: center;
    padding: 17px 20px; gap: 1.1rem; cursor: pointer;
    border-bottom: 1px solid var(--border-c);
    transition: background var(--t-fast);
  }
  /* Ambient red edge glow on hover */
  .fight-main::before {
    content: '';
    position: absolute; inset: 0; pointer-events: none; z-index: 0;
    background: radial-gradient(ellipse 28% 100% at 0% 50%, rgba(255,23,68,0.055), transparent 70%);
    opacity: 0; transition: opacity 0.22s;
  }
  .fight-main:hover::before { opacity: 1; }
  .fight-main:hover { background: rgba(255,255,255,0.012); }
  /* Row wash for the favoured side — bumped to be faintly visible */
  .fight-block.fav-a .fight-main { background: linear-gradient(to right, rgba(255,77,107,0.04), transparent 55%); }
  .fight-block.fav-a .fight-main:hover { background: linear-gradient(to right, rgba(255,77,107,0.07), rgba(255,255,255,0.012) 55%); }
  .fight-block.fav-b .fight-main { background: linear-gradient(to left,  rgba(192,132,252,0.03), transparent 55%); }
  .fight-block.fav-b .fight-main:hover { background: linear-gradient(to left,  rgba(192,132,252,0.055), rgba(255,255,255,0.012) 55%); }

  .match-row { display: flex; align-items: center; gap: 0.75rem; flex: 1; min-width: 0; }
  .fighter-card { display: flex; align-items: center; gap: 0.65rem; flex: 1; min-width: 0; }
  .fighter-card.right { flex-direction: row-reverse; text-align: right; }

  /* Avatar — both fighters always carry their side tint (warm pink for A,
     cool lavender for B). The favoured side gets a stronger outer glow.
     A slow-rotating conic-gradient outline lives in ::before so the ring
     feels alive instead of static. */
  .avatar {
    width: 78px; height: 78px;
    border-radius: 50%; flex-shrink: 0;
    position: relative;
    /* No overflow:hidden — the rotating ring lives outside the avatar's
       box via inset:-4px. The img + initials are circle-clipped on their
       own elements below. */
    background: linear-gradient(135deg, #1e1e28 0%, #15151c 100%);
    border: 2px solid transparent;
    display: flex; align-items: center; justify-content: center;
    color: var(--border-c);
    transition: width 0.3s ease, height 0.3s ease, box-shadow 0.25s ease, transform 0.25s ease;
  }
  .avatar.av-a { color: var(--side-a); }
  .avatar.av-b { color: var(--side-b); }
  .avatar.av-a { box-shadow: 0 0 0 1px rgba(255,77,107,0.18); }
  .avatar.av-b { box-shadow: 0 0 0 1px rgba(192,132,252,0.18); }
  /* Rotating outline ring. ::before draws a conic gradient that bleeds
     side tint at two opposing arcs, masked into a hollow ring so it sits
     just outside the avatar's border. Animation rotates it slowly. */
  .avatar::before {
    content: '';
    position: absolute; inset: -5px;
    border-radius: 50%; padding: 2.5px;
    background: conic-gradient(
      from 0deg,
      transparent 0deg,
      currentColor 70deg,
      transparent 150deg,
      transparent 210deg,
      currentColor 290deg,
      transparent 360deg
    );
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
            mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
            mask-composite: exclude;
    animation: avatar-ring-rotate 7s linear infinite;
    opacity: 0.85;
    pointer-events: none;
    z-index: 1;
  }
  /* Soft halo behind the avatar — built once via ::after so the favourite
     side can pump it up without re-declaring the box-shadow stack. */
  .avatar::after {
    content: '';
    position: absolute; inset: -10px;
    border-radius: 50%;
    background: radial-gradient(circle at center, currentColor, transparent 62%);
    opacity: 0.10;
    pointer-events: none;
    z-index: 0;
    transition: opacity 0.25s ease;
  }
  .fav-a .avatar.av-a::after,
  .fav-b .avatar.av-b::after { opacity: 0.22; }
  .fav-a .avatar.av-a { box-shadow: 0 0 14px rgba(255,77,107,0.34), 0 0 0 1px rgba(255,77,107,0.28); }
  .fav-b .avatar.av-b { box-shadow: 0 0 14px rgba(192,132,252,0.34), 0 0 0 1px rgba(192,132,252,0.28); }
  /* Hover scale — small, just enough to feel alive */
  .fight-main:hover .avatar { transform: scale(1.04); }
  .fight-main:hover .avatar::before { animation-duration: 3.5s; }

  .fight-block.expanded .avatar { width: 112px; height: 112px; }
  .fight-block.expanded .avatar::before { inset: -6px; padding: 3px; }
  .fight-block.expanded .avatar.av-a {
    box-shadow: 0 0 28px rgba(255,77,107,0.48), 0 0 0 1px rgba(255,77,107,0.32);
  }
  .fight-block.expanded .avatar.av-b {
    box-shadow: 0 0 28px rgba(192,132,252,0.48), 0 0 0 1px rgba(192,132,252,0.32);
  }
  .avatar img {
    width: 100%; height: 100%; border-radius: 50%;
    object-fit: cover; object-position: top center;
    display: block;
    position: relative; z-index: 2;
  }
  .avatar .initials {
    font-weight: 700; font-size: 0.95rem; color: var(--text-2);
    position: absolute; inset: 0;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, #1e1e28, #161620);
    z-index: 2;
  }
  .fight-block.expanded .avatar .initials { font-size: 1.6rem; }

  @keyframes avatar-ring-rotate {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
  }
  /* Honour reduced-motion: hold the ring in place. */
  @media (prefers-reduced-motion: reduce) {
    .avatar::before { animation: none; }
  }

  /* ─── Championship bout treatment ─────────────────────────────────────
     Title fights carry the .is-title class on .fight-block. A gold-tinted
     side strip, a soft gold wash on the row background, and a gold-tinted
     rotating outline on both avatars surface the championship without
     drowning the row in colour. */
  .fight-block.is-title {
    border-left-color: rgba(244,180,67,0.55);
  }
  .fight-block.is-title:hover {
    border-left-color: rgba(244,180,67,0.85);
    box-shadow: -3px 0 18px -4px rgba(244,180,67,0.22);
  }
  .fight-block.is-title .fight-main {
    background:
      linear-gradient(90deg,
        rgba(244,180,67,0.05) 0%,
        transparent 30%,
        transparent 70%,
        rgba(244,180,67,0.05) 100%);
  }
  /* Side wash on title bouts still wins (matches whichever fighter is
     favoured) but we layer the gold edge on top so both signals coexist. */
  .fight-block.is-title.fav-a .fight-main {
    background:
      linear-gradient(to right, rgba(255,77,107,0.04), transparent 55%),
      linear-gradient(90deg, rgba(244,180,67,0.05), transparent 30%, transparent 70%, rgba(244,180,67,0.05));
  }
  .fight-block.is-title.fav-b .fight-main {
    background:
      linear-gradient(to left, rgba(192,132,252,0.03), transparent 55%),
      linear-gradient(90deg, rgba(244,180,67,0.05), transparent 30%, transparent 70%, rgba(244,180,67,0.05));
  }
  /* Title-bout avatar ring picks up the championship gold without losing
     the side identity entirely — keeps a subtle side glow underneath. */
  .fight-block.is-title .avatar::before {
    background: conic-gradient(
      from 0deg,
      transparent 0deg,
      #f4b443 70deg,
      transparent 150deg,
      transparent 210deg,
      #f4b443 290deg,
      transparent 360deg
    );
  }
  .fight-block.is-title .avatar::after {
    background: radial-gradient(circle at center, #f4b443, transparent 62%);
    opacity: 0.16;
  }
  .fight-block.is-title.fav-a .avatar.av-a::after,
  .fight-block.is-title.fav-b .avatar.av-b::after { opacity: 0.30; }
  .record-badge {
    font-size: 0.62rem; font-weight: 700;
    padding: 2px 6px; border-radius: 4px;
    background: rgba(255,255,255,0.06); color: var(--light);
    letter-spacing: 0.04em; font-variant-numeric: tabular-nums;
  }

  .fighter-info { min-width: 0; }
  .fighter-name {
    font-weight: 700; font-size: 1.01rem; line-height: 1.3;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  /* Names: always white. Favoured side is communicated via the prob bar
     and avatar tint, not text colour, to keep the row reading evenly. */
  .fighter-name { color: var(--text); font-weight: 500; }
  /* Fighter names link to their profile page. Inherit the name's look; reveal
     interactivity on hover only, so the row stays calm. stopPropagation in the
     markup keeps a name-click from also toggling the row's detail panel. */
  .fighter-name-link { color: inherit; text-decoration: none; }
  .fighter-name-link:hover { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }

  .fighter-meta {
    font-size: var(--xs); color: var(--muted);
    display: flex; align-items: center; gap: 0.3rem; margin-top: 2px; flex-wrap: wrap;
  }
  .fighter-card.right .fighter-meta { justify-content: flex-end; }
  .flag {
    display: inline-block; width: 18px; height: 13px;
    vertical-align: middle; margin-right: 2px; border-radius: 2px;
    object-fit: cover;
    box-shadow: 0 0 0 1px rgba(255,255,255,0.08);
  }
  .stance-badge {
    font-size: 0.58rem; font-weight: 600; padding: 1px 5px; border-radius: 3px;
    background: #222228; color: #888; text-transform: uppercase; letter-spacing: 0.04em;
  }
  .style-badge {
    font-size: 0.58rem; font-weight: 600; padding: 1px 5px; border-radius: 3px;
    background: var(--ui-soft); color: var(--ui); text-transform: uppercase; letter-spacing: 0.04em;
  }
  .fighting-style-badge {
    font-size: 0.58rem; font-weight: 600; padding: 1px 5px; border-radius: 3px;
    background: rgba(244,162,97,0.12); color: var(--gold);
    text-transform: uppercase; letter-spacing: 0.04em;
  }
  .streak-label {
    font-size: 0.58rem; font-weight: 700; padding: 1px 5px; border-radius: 3px;
    text-transform: uppercase; letter-spacing: 0.04em;
  }
  .streak-w {
    background: rgba(45,212,191,0.14); color: var(--win);
    border: 1px solid rgba(45,212,191,0.28);
  }
  .streak-l {
    background: rgba(148,163,184,0.10); color: var(--loss);
    border: 1px solid rgba(148,163,184,0.22);
  }

  /* Probability centre */
  .vs-center {
    display: flex; flex-direction: column; align-items: center;
    gap: 6px; flex-shrink: 0; min-width: 130px;
  }
  .prob-nums {
    display: flex; align-items: baseline; gap: 6px;
    font-family: 'JetBrains Mono', monospace;
    font-weight: 500; font-size: 1.05rem;
    font-variant-numeric: tabular-nums; letter-spacing: -0.01em;
  }
  .pn-a { color: var(--side-a); }
  .pn-b { color: var(--side-b); }
  .pn-sep { color: var(--text-3); font-weight: 400; font-size: 0.9rem; }
  .prob-bar {
    width: 100%; height: 3px; border-radius: 1px; overflow: hidden;
    background: var(--side-b);
    position: relative;
  }
  .prob-bar .pba {
    height: 100%;
    background: var(--side-a);
    border-radius: 1px;
    transform-origin: left;
    animation: mfd-bar-grow 600ms cubic-bezier(0.2, 0, 0, 1) both;
  }
  .wc-txt {
    font-size: var(--xs); color: var(--muted);
    text-align: center; width: 100%;
    display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
    gap: 4px;
  }

  /* Right side */
  .fight-right { display: flex; align-items: center; gap: 0.6rem; flex-shrink: 0; }
  .badge-title {
    background: linear-gradient(135deg, var(--gold), #d4834a);
    color: #000; font-size: var(--xs); font-weight: 800;
    padding: 2px 7px; border-radius: 4px; text-transform: uppercase;
  }
  /* Banner above the prediction stats inside the expanded details — calls
     out how many SportsBet value bets the bet table below contains. */
  .value-bets-banner {
    display: flex; align-items: center; gap: 0.5rem;
    background: linear-gradient(90deg, rgba(14,165,233,0.10), rgba(14,165,233,0));
    border-left: 3px solid var(--ui);
    padding: 0.45rem 0.75rem; margin-bottom: 0.75rem;
    border-radius: 4px;
  }
  .value-bets-banner .vbb-count {
    color: var(--ui); font-weight: 600; font-size: 0.95rem;
    font-family: 'JetBrains Mono', monospace;
  }
  .value-bets-banner .vbb-label {
    color: var(--light); font-weight: 600; font-size: var(--sm);
    letter-spacing: 0.02em;
  }
  /* Per-fighter sportsbet odds — sits under the meta row so a missing
     odds value on one fight doesn't shift the rest of the row layout. */
  .fighter-odds {
    margin-top: 3px;
    font-size: 0.66rem; font-weight: 500;
    color: var(--text); font-variant-numeric: tabular-nums;
    font-family: 'JetBrains Mono', monospace;
    letter-spacing: 0.04em;
    display: flex; align-items: center; gap: 4px;
  }
  .fighter-odds .lbl {
    color: var(--text-3); font-weight: 500; font-size: 0.55rem; text-transform: uppercase;
  }
  .fighter-card.right .fighter-odds { justify-content: flex-end; }
  .expand-icon {
    color: var(--text-3); font-size: var(--xs);
    transition: transform 0.25s cubic-bezier(0.2, 0, 0, 1), color 0.15s;
    display: inline-block;
  }
  .fight-main:hover .expand-icon { color: var(--text-2); }
  .fight-block.expanded .expand-icon { color: var(--accent); }
  /* Persistent affordance so first-time visitors know the row opens the full
     model breakdown — the bare chevron alone wasn't discoverable. */
  .expand-hint {
    color: var(--text-3); font-size: 10px; font-weight: 500;
    letter-spacing: 0.08em; text-transform: uppercase;
    margin-right: 7px; transition: color 0.15s;
  }
  .fight-main:hover .expand-hint { color: var(--text-2); }
  .fight-block.expanded .expand-hint { color: var(--accent); }

  /* ─── Details ─── */
  .fight-details { display: none; }
  .fight-details.open { display: block; }
  .details-inner { padding: 1rem 1.2rem 1.2rem; }

  .details-grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-bottom: 0.75rem;
  }
  @media (max-width: 700px) {
    .details-grid { grid-template-columns: 1fr; }
    .fight-main { flex-wrap: wrap; }
    .vs-center { min-width: 90px; }
  }

  .detail-box {
    background: var(--card-2); border: 1px solid var(--border); border-radius: 10px;
    padding: 0.85rem 1rem;
  }
  .detail-box h4 {
    font-size: var(--xs); text-transform: uppercase; letter-spacing: 0.08em;
    color: var(--muted); margin-bottom: 0.6rem;
  }

  .stat-table { width: 100%; border-collapse: collapse; font-size: var(--sm); }
  .stat-table th {
    color: #555; font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.06em;
    padding: 0.2rem 0.5rem; text-align: center; border-bottom: 1px solid #1e1e22;
  }
  .stat-table th:first-child { text-align: left; }
  .stat-table td { padding: 0.3rem 0.5rem; border-bottom: 1px solid #131315; text-align: center; font-variant-numeric: tabular-nums; }
  .stat-table td:first-child { text-align: left; color: var(--muted); font-size: var(--xs); }
  .stat-table tr:last-child td { border-bottom: none; }
  .stat-better { color: var(--ui); font-weight: 600; }
  .stat-worse  { color: var(--text-3); }

  .outcome-row { display: flex; justify-content: space-between; align-items: center; padding: 0.25rem 0; font-size: var(--sm); border-bottom: 1px solid #131315; }
  .outcome-row:last-child { border-bottom: none; }
  .outcome-label { color: var(--muted); font-size: var(--xs); }
  .outcome-prob { font-weight: 700; font-variant-numeric: tabular-nums; }

  .confidence-row {
    display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap;
    margin-top: 0.6rem; font-size: var(--xs); color: var(--muted);
  }
  .conf-badge { font-size: var(--xs); font-weight: 700; padding: 2px 6px; border-radius: 4px; text-transform: uppercase; }
  .conf-high   { background: var(--ui-soft);                     color: var(--ui); }
  .conf-medium { background: rgba(168,85,247,0.16);              color: var(--steel); }
  .conf-low    { background: rgba(148,163,184,0.12);             color: var(--text-2); }
  .dq-good    { color: var(--ui); }
  .dq-limited { color: var(--steel); }
  .dq-sparse  { color: var(--text-3); }

  /* ─── Match insights ─── */
  .insights-panel {
    background: var(--card-2); border: 1px solid var(--border); border-radius: 10px;
    padding: 0.85rem 1rem; margin-bottom: 0.9rem;
  }
  .insights-head {
    font-size: var(--xs); text-transform: uppercase; letter-spacing: 0.07em;
    color: var(--matrix); margin-bottom: 0.6rem;
  }
  .insights-factors { display: grid; grid-template-columns: 1fr; gap: 0.45rem; margin-bottom: 0.7rem; }
  @media (min-width: 720px) {
    .insights-factors { grid-template-columns: repeat(3, 1fr); }
  }
  .insight-factor {
    background: #0a0a0c; border-left: 2px solid #2a2a2e; border-radius: 6px;
    padding: 0.5rem 0.65rem;
  }
  .insight-factor.insight-side-a { border-left-color: var(--red); }
  .insight-factor.insight-side-b { border-left-color: var(--blue); }
  .insight-factor-head {
    display: flex; justify-content: space-between; align-items: center; gap: 0.5rem;
    margin-bottom: 0.25rem;
  }
  .insight-factor-label {
    font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted);
  }
  .insight-factor-mag {
    flex: 0 0 60px; height: 4px; border-radius: 2px;
    background: linear-gradient(to right, var(--matrix) var(--mag, 0%), #1a1a1d var(--mag, 0%));
  }
  .insight-factor-summary { font-size: var(--sm); color: #d8d8da; line-height: 1.35; }
  .insights-bars { display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 0.9rem; margin-bottom: 0.6rem; }
  .insight-bar { font-size: var(--xs); }
  .insight-bar-label {
    color: var(--muted); margin-bottom: 0.18rem;
    text-transform: uppercase; letter-spacing: 0.05em; font-size: 0.6rem;
  }
  .insight-bar-row { display: flex; align-items: center; gap: 0.45rem; font-variant-numeric: tabular-nums; }
  .insight-bar-val { min-width: 2.6rem; color: #888; font-size: var(--sm); }
  .insight-bar-val.left { text-align: right; }
  .insight-bar-val.right { text-align: left; }
  .insight-bar-val.lead { color: #f0f0f2; font-weight: 600; }
  .insight-bar-track {
    flex: 1; height: 6px; background: #0e0e10; border-radius: 3px; overflow: hidden;
    position: relative;
  }
  .insight-bar-fill {
    position: absolute; top: 0; bottom: 0;
  }
  .insight-bar-a { left: 50%; background: var(--red); transform: translateX(-100%); }
  .insight-bar-b { left: 50%; background: var(--blue); }
  .insights-drivers {
    list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.3rem;
  }
  .insight-driver {
    font-size: var(--sm); color: #c8c8ca; padding-left: 0.85rem;
    position: relative;
  }
  .insight-driver::before {
    content: ''; position: absolute; left: 0; top: 0.5rem; width: 4px; height: 4px;
    background: var(--matrix); border-radius: 50%;
  }

  /* ─── Bet table ─── */
  .bet-section {
    background: var(--card-2); border: 1px solid var(--border); border-radius: 10px; overflow: hidden;
  }
  .bet-header {
    display: flex; justify-content: space-between; align-items: center;
    padding: 0.6rem 1rem; border-bottom: 1px solid var(--border);
    font-size: var(--xs); text-transform: uppercase; letter-spacing: 0.07em; color: var(--muted);
  }
  .bet-header strong { color: var(--ui); }
  .bet-table { width: 100%; border-collapse: collapse; font-size: var(--sm); }
  .bet-table th {
    background: #08080a; color: #555; text-transform: uppercase;
    font-size: 0.6rem; letter-spacing: 0.07em; padding: 0.45rem 0.85rem; text-align: left;
  }
  .bet-table td { padding: 0.55rem 0.85rem; border-bottom: 1px solid #111114; vertical-align: middle; }
  .bet-table tr:last-child td { border-bottom: none; }
  .bet-table tr:hover td { background: rgba(255,23,68,0.02); }
  .bet-desc { font-weight: 600; }
  .bet-prob { color: var(--muted); font-size: var(--xs); font-variant-numeric: tabular-nums; }
  .odds-cell  { font-weight: 500; color: var(--text); font-variant-numeric: tabular-nums; font-family: 'JetBrains Mono', monospace; }
  .payout-cell { color: var(--text-2); font-variant-numeric: tabular-nums; font-family: 'JetBrains Mono', monospace; }
  .ev-cell-pos { color: var(--ui); font-weight: 600; font-variant-numeric: tabular-nums; }
  .ev-cell-neg { color: var(--loss-red); font-variant-numeric: tabular-nums; }
  .stake-cell  { color: var(--blue); font-variant-numeric: tabular-nums; }

  /* ─── Bankroll plan (per-event + Top Bets page) ─── */
  .bankroll-plan {
    margin: 1rem 1.4rem 0; padding: 1rem 1.2rem;
    background: linear-gradient(135deg, rgba(255,23,68,0.05), rgba(168,85,247,0.04));
    border: 1px solid rgba(255,23,68,0.22);
    border-radius: 10px;
  }
  .bp-title-row {
    display: flex; justify-content: space-between; align-items: center;
    flex-wrap: wrap; gap: 0.6rem; margin-bottom: 0.8rem;
  }
  .bp-title { font-size: var(--xs); text-transform: uppercase; letter-spacing: 0.14em; color: var(--text-2); font-weight: 600; }
  .bp-title .bp-bankroll-display { color: var(--text); font-family: 'JetBrains Mono', monospace; }
  .bp-strategy-toggle { display: inline-flex; gap: 4px; }
  .bp-strategy-toggle button {
    padding: 0.3rem 0.85rem; border-radius: 5px; border: 1px solid var(--border);
    background: var(--card-2); color: var(--muted);
    font-size: 0.66rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em;
    cursor: pointer; font-family: inherit; transition: all 0.12s;
  }
  .bp-strategy-toggle button:hover { color: var(--light); }
  .bp-strategy-toggle button.active {
    background: var(--ui-soft); color: var(--ui); border-color: var(--ui-edge);
  }
  .bp-summary {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.8rem;
    margin-bottom: 0.7rem;
  }
  .bp-summary > div {
    background: rgba(13,13,16,0.5); border: 1px solid var(--border);
    border-radius: 6px; padding: 0.55rem 0.7rem;
  }
  .bp-summary .label {
    color: var(--muted); text-transform: uppercase; letter-spacing: 0.07em;
    font-size: 0.58rem; font-weight: 600;
  }
  .bp-summary .val {
    font-weight: 800; font-variant-numeric: tabular-nums;
    font-size: 1.1rem; margin-top: 2px; color: var(--light);
  }
  .bp-summary .val.pos  { color: var(--ui); }
  .bp-summary .val.neg  { color: var(--loss-red); }
  .bp-summary .val.gold { color: var(--text); }
  .bp-list table { width: 100%; border-collapse: collapse; font-size: var(--sm); }
  .bp-list th {
    color: #555; font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.07em;
    text-align: left; padding: 0.4rem 0.7rem; background: #08080a;
  }
  .bp-list td {
    padding: 0.5rem 0.7rem; border-top: 1px solid #1a1a1f; vertical-align: middle;
  }
  .bp-list tr:hover td { background: var(--ui-soft); }
  .bp-list td.stake  { color: var(--text); font-weight: 600; font-variant-numeric: tabular-nums; font-family: 'JetBrains Mono', monospace; }
  .bp-list td.profit { color: var(--ui); font-weight: 600; font-variant-numeric: tabular-nums; font-family: 'JetBrains Mono', monospace; }
  .bp-list td.fight  { color: var(--text-2); font-size: var(--xs); }
  .bp-list td.odds   { color: var(--text); font-variant-numeric: tabular-nums; font-family: 'JetBrains Mono', monospace; }
  .bp-empty {
    color: var(--muted); font-size: var(--xs); text-align: center;
    padding: 1rem; font-style: italic;
  }

  /* ─── Value Bets redesign ─── */
  .vb-summary {
    display: grid;
    grid-template-columns: auto 1fr 1fr 1fr;
    gap: 10px; margin-bottom: 1.1rem;
  }
  /* Past-events 3-col stats banner — properly centred, generously sized */
  .past-stats-banner {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
    max-width: 760px;
    margin: 0 auto 1.8rem;
  }
  .vb-stat {
    background: var(--surface-2); border: 1px solid var(--border-c);
    border-radius: 10px; padding: 13px 17px;
    display: flex; flex-direction: column; gap: 3px;
    transition: border-color 0.2s, background 0.2s;
  }
  /* Larger cards when used in the past-stats-banner */
  .past-stats-banner .vb-stat { padding: 20px 24px; gap: 5px; }
  .past-stats-banner .vb-stat__val { font-size: 1.75rem; }
  .past-stats-banner .vb-stat__lbl { font-size: 9.5px; margin-top: 2px; }
  .vb-stat:hover { background: var(--surface); border-color: var(--border-strong); }
  .vb-stat--count { border-left: 2px solid rgba(255,23,68,0.50); }
  .vb-stat--ev    { border-left: 2px solid var(--win); }
  .vb-stat--best  { border-left: 2px solid rgba(45,212,191,0.45); }
  .vb-stat--worst { border-left: 2px solid rgba(255,80,80,0.40); }
  .vb-stat--pnl   { border-left: 2px solid rgba(168,85,247,0.60); }
  /* Clickable Bets-Won tile: small chevron + cursor + active glow */
  .vb-stat--clickable { cursor: pointer; }
  .vb-stat--clickable:hover { border-color: var(--win-edge); background: var(--win-soft); }
  .vb-stat--clickable.is-open { border-color: var(--win-edge); background: var(--win-soft); }
  .vb-stat__chev {
    display: inline-block; margin-left: 4px;
    font-size: 0.7em; color: var(--text-3);
    transition: transform 0.18s ease, color 0.18s ease;
  }
  .vb-stat--clickable.is-open .vb-stat__chev { transform: rotate(-180deg); color: var(--win); }

  /* ─── Card-quality strip (opportunity_quality readout) ─── */
  /* Spans the full vb-summary grid row above the four stat tiles.
     Tells the user why the deployed total is smaller than their full
     bankroll on a weak card (q < 1 ⇒ c_slate_effective < c_slate). */
  .vb-quality {
    grid-column: 1 / -1;
    display: flex; align-items: center; justify-content: space-between;
    gap: 12px; flex-wrap: wrap;
    padding: 9px 14px;
    background: var(--surface-2); border: 1px solid var(--border-c);
    border-left: 2px solid var(--accent, #FFB300);
    border-radius: 8px;
    font-size: 0.82rem; color: var(--text-2);
  }
  .vb-quality__lbl strong { color: var(--text); font-weight: 600; }
  .vb-quality__deployed   { color: var(--text-3); font-size: 0.78rem; }
  .vb-quality__deployed [data-pct] { color: var(--win); font-weight: 600; }

  /* ─── Per-event picks breakdown panel (under Bets Won tile) ─── */
  .picks-breakdown {
    max-width: 880px; margin: -0.6rem auto 1.8rem;
    background: var(--surface-2); border: 1px solid var(--border-c);
    border-radius: 10px; padding: 14px 18px;
    animation: pb-fade-in 200ms ease;
  }
  @keyframes pb-fade-in {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
  }
  .pb-event + .pb-event { margin-top: 1.1rem; padding-top: 1.1rem; border-top: 1px solid var(--border-c); }
  .pb-event__title {
    font-size: 0.92rem; font-weight: 600; color: var(--text);
    letter-spacing: -0.01em; margin-bottom: 0.45rem;
    display: flex; align-items: baseline; gap: 0.6rem; flex-wrap: wrap;
  }
  .pb-event__meta { font-size: 0.72rem; font-weight: 400; color: var(--text-3); letter-spacing: 0.02em; }
  .pb-event__pnl.pos { color: var(--win); font-weight: 600; }
  .pb-event__pnl.neg { color: var(--loss-red); font-weight: 600; }
  .pb-table { width: 100%; border-collapse: collapse; font-size: var(--xs); }
  .pb-table thead th {
    text-align: left; color: var(--muted); font-weight: 500;
    text-transform: uppercase; letter-spacing: 0.06em; font-size: 10px;
    padding: 6px 8px; border-bottom: 1px solid var(--border-c);
  }
  .pb-table tbody td {
    padding: 7px 8px; border-bottom: 1px solid rgba(255,255,255,0.04);
    color: var(--text-2); vertical-align: middle;
  }
  .pb-table tbody tr:last-child td { border-bottom: none; }
  .pb-row--won  { background: rgba(45,212,191,0.04); }
  .pb-row--lost { background: rgba(185,28,28,0.04); }
  .pb-fight { color: var(--text-3); font-size: 0.7rem; }
  .pb-mono  { font-family: 'JetBrains Mono', monospace; font-variant-numeric: tabular-nums; color: var(--text-2); }
  .pb-result { display: inline-flex; align-items: center; gap: 6px; font-family: 'JetBrains Mono', monospace; font-size: 0.72rem; }
  .pb-result--won  { color: var(--win); }
  .pb-result--lost { color: var(--loss-red); }
  .pb-result--pending { color: var(--text-3); }
  .pb-result__profit { font-weight: 600; }
  /* Lock-once parlay row inside the picks-breakdown panel */
  .pb-parlay {
    display: flex; align-items: center; justify-content: space-between;
    gap: 10px; flex-wrap: wrap;
    margin-top: 0.7rem; padding: 8px 10px;
    border-radius: 7px; border: 1px solid var(--border-c);
    background: var(--surface-3);
  }
  .pb-parlay--won  { border-left: 2px solid var(--win); }
  .pb-parlay--lost { border-left: 2px solid var(--loss-red); }
  .pb-parlay--pending { border-left: 2px solid var(--text-3); }
  .pb-parlay__lbl {
    font-size: 0.74rem; font-weight: 600; color: var(--text-2);
    text-transform: uppercase; letter-spacing: 0.05em;
  }
  @media (max-width: 720px) {
    .pb-table { font-size: 11px; }
    .pb-table thead th, .pb-table tbody td { padding: 5px 6px; }
    .pb-fight { display: block; font-size: 9.5px; }
  }
  .vb-stat__val {
    font-family: 'JetBrains Mono', monospace; font-size: 1.35rem;
    font-weight: 700; font-variant-numeric: tabular-nums;
    letter-spacing: -0.02em; color: var(--text); line-height: 1.1;
  }
  .vb-stat__val.pos { color: var(--win); }   /* win-teal = profit */
  .vb-stat__val.neg { color: var(--loss-red); }
  .vb-stat__lbl {
    font-size: 8.5px; color: var(--text-3);
    text-transform: uppercase; letter-spacing: 0.16em; font-weight: 600;
    font-family: 'Inter', sans-serif;
  }
  .vb-stat__sub {
    font-size: 10px; color: var(--text-3);
    font-family: 'JetBrains Mono', monospace; margin-top: 1px;
  }

  .vb-cards { display: flex; flex-direction: column; gap: 5px; margin-bottom: 0.8rem; }
  .vb-card {
    display: flex; align-items: center; gap: 14px;
    padding: 12px 16px;
    background: var(--surface-2);
    border: 1px solid var(--border-c);
    border-left: 2px solid rgba(255,23,68,0.22);
    border-radius: 8px; cursor: pointer;
    transition: border-left-color 0.2s, background 0.2s, box-shadow 0.2s;
    position: relative; overflow: hidden;
  }
  .vb-card::before {
    content: ''; position: absolute; inset: 0; pointer-events: none;
    background: radial-gradient(ellipse 22% 100% at 0% 50%, rgba(255,23,68,0.045), transparent 70%);
    opacity: 0; transition: opacity 0.22s; z-index: 0;
  }
  .vb-card:hover::before { opacity: 1; }
  .vb-card:hover {
    border-left-color: rgba(255,23,68,0.55);
    background: rgba(255,255,255,0.012);
    box-shadow: -3px 0 18px -4px rgba(255,23,68,0.15);
  }
  .vb-card > * { position: relative; z-index: 1; }

  .vb-card__stake {
    font-family: 'JetBrains Mono', monospace; font-size: 1.1rem; font-weight: 700;
    color: var(--ui); font-variant-numeric: tabular-nums;
    min-width: 48px; flex-shrink: 0; letter-spacing: -0.01em;
  }
  .vb-card__main { flex: 1; min-width: 0; }
  .vb-card__desc {
    font-size: 1.0rem; font-weight: 600; color: var(--text);
    line-height: 1.3; letter-spacing: -0.01em;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  .vb-card__sub {
    font-size: 0.76rem; color: var(--text-2); margin-top: 3px;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  .vb-card__event { color: var(--steel); }
  .vb-card__bar-wrap {
    position: relative; height: 3px;
    background: var(--border-c); border-radius: 2px; margin-top: 7px;
    overflow: visible;
  }
  .vb-card__bar-fill {
    position: absolute; left: 0; top: 0; bottom: 0;
    background: linear-gradient(90deg, var(--ui), rgba(14,165,233,0.65));
    border-radius: 2px;
    transition: width 0.55s cubic-bezier(0.2, 0, 0, 1);
  }
  .vb-card__bar-marker {
    position: absolute; top: -4px; bottom: -4px; width: 2px;
    background: rgba(255,255,255,0.3); border-radius: 1px;
    transform: translateX(-50%);
  }

  .vb-card__metrics {
    display: flex; align-items: center; gap: 18px; flex-shrink: 0;
  }
  .vb-card__metric { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
  .vb-card__metric-val {
    font-family: 'JetBrains Mono', monospace; font-size: 0.86rem;
    font-weight: 600; font-variant-numeric: tabular-nums; color: var(--text-2);
  }
  .vb-card__metric-val.ev-pos { color: var(--win); }   /* win-teal = positive edge */
  .vb-card__metric-val.ev-neg { color: var(--text-3); }
  .vb-card__metric--win .vb-card__metric-val { color: var(--win); }  /* win-teal = profit */
  .vb-card__metric-lbl {
    font-size: 7.5px; color: var(--text-3);
    text-transform: uppercase; letter-spacing: 0.13em;
    font-family: 'Inter', sans-serif;
  }
  @media (max-width: 700px) {
    .vb-card { flex-wrap: wrap; gap: 10px; }
    .vb-card__metrics { gap: 12px; }
    .vb-card__metric--win { display: none; }
    .vb-summary { grid-template-columns: repeat(2, 1fr); }
    .past-stats-banner { grid-template-columns: 1fr 1fr; }
    .past-stats-banner .vb-stat:last-child { grid-column: span 2; }
  }

  /* stacked round bars — fighter A (red) on top, B (purple) on bottom */
  .mfd-rounds__seg {
    width: 100%; min-height: 1px;
    cursor: default;
    transition: filter 160ms ease-out;
  }
  .mfd-rounds__seg:hover { filter: brightness(1.45) saturate(1.1); }
  .mfd-rounds__seg--a { background: var(--side-a); }
  .mfd-rounds__seg--b { background: var(--side-b); }

  /* Floating tooltip shared across all .mfd-rounds__seg hovers — created
     once by JS at runtime, positioned absolutely. */
  .mfd-rounds__tooltip {
    position: absolute;
    background: var(--surface-2);
    border: 1px solid var(--border-c);
    color: var(--text);
    font-size: 11px;
    font-family: 'JetBrains Mono', monospace;
    padding: 4px 8px;
    border-radius: 4px;
    pointer-events: none;
    z-index: 1000;
    white-space: nowrap;
    opacity: 0;
    transform: translate(-50%, -100%);
    transition: opacity 120ms ease-out;
    box-shadow: 0 2px 6px rgba(0,0,0,0.4);
  }
  .mfd-rounds__tooltip.is-visible { opacity: 1; }
  .mfd-rounds__tooltip-dot {
    display: inline-block;
    width: 6px; height: 6px;
    border-radius: 50%;
    margin-right: 5px;
    vertical-align: middle;
  }

  /* Bankroll pill + the small card-quality caption to its right */
  .bankroll-row-flex {
    display: flex; align-items: flex-start; gap: 0.85rem;
    flex-wrap: wrap; margin-bottom: 0.9rem;
  }
  .stake-quality-note {
    font-size: 0.6rem; line-height: 1.3; color: var(--text-3);
    max-width: 280px; margin-top: -0.1rem;  /* nudge up */
    font-style: italic;
  }
  .stake-quality-note[hidden] { display: none; }
  .bankroll-input-wrap {
    display: inline-flex; align-items: center; gap: 0.5rem;
    background: var(--card-2); border: 1px solid var(--border);
    border-radius: 6px; padding: 0.35rem 0.7rem;
  }
  .bankroll-input-wrap label {
    font-size: 0.6rem; color: var(--muted);
    text-transform: uppercase; letter-spacing: 0.07em; font-weight: 700;
  }
  .bankroll-input-wrap span.dollar { color: var(--text-2); font-weight: 500; font-size: var(--sm); }

  /* Apex-styled custom dropdown — replaces the native <select> so the
     menu items render in the same dark/matrix aesthetic across browsers. */
  .apex-select { position: relative; display: inline-block; }
  .apex-select-trigger {
    background: transparent; border: none; outline: none;
    color: var(--text); font-weight: 600; font-size: var(--sm);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    cursor: pointer; padding: 0; display: inline-flex; align-items: center; gap: 0.35rem;
    font-variant-numeric: tabular-nums;
  }
  .apex-select-trigger:hover { color: var(--ui); }
  .apex-select-arrow {
    color: var(--text-3); font-size: 0.65rem; transition: transform 0.15s;
  }
  .apex-select.open .apex-select-arrow { transform: rotate(180deg); color: var(--ui); }
  .apex-select-menu {
    position: absolute; top: calc(100% + 6px); left: 0; z-index: 20;
    min-width: 160px; max-height: 280px; overflow-y: auto;
    background: var(--surface); border: 1px solid var(--border-c);
    border-radius: 6px; box-shadow: 0 8px 24px rgba(0,0,0,0.45);
    padding: 0.3rem 0;
  }
  .apex-select-menu[hidden] { display: none; }
  .apex-select-option {
    padding: 0.45rem 0.85rem; font-size: var(--sm); font-weight: 500;
    color: var(--text); cursor: pointer;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-variant-numeric: tabular-nums;
    transition: background 0.1s, color 0.1s;
  }
  .apex-select-option:hover {
    background: var(--ui-soft); color: var(--ui);
  }
  .apex-select-option.active {
    background: var(--ui-soft); color: var(--ui);
  }
  .apex-select-option.divider {
    border-top: 1px solid var(--border-c); margin-top: 0.25rem; padding-top: 0.55rem;
    color: var(--text-2); font-style: italic;
  }

  .bankroll-input-wrap input.bankroll-input {
    width: 80px; background: transparent; border: none; outline: none;
    color: var(--text); font-weight: 600; font-size: var(--sm);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-variant-numeric: tabular-nums;
    padding: 0; margin: 0;
    cursor: text;
  }
  .bankroll-input-wrap input.bankroll-input:focus { color: var(--ui); }
  .bankroll-input-wrap input.bankroll-input::-webkit-outer-spin-button,
  .bankroll-input-wrap input.bankroll-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

  .top-bets-controls {
    display: flex; flex-wrap: wrap; gap: 0.8rem;
    align-items: center; margin-bottom: 1rem;
  }

  /* ─── Mobile: collapse the 4-col bankroll summary, stack controls ─── */
  @media (max-width: 720px) {
    .bp-summary { grid-template-columns: repeat(2, 1fr); }
    .bp-summary .val { font-size: 0.95rem; }
    .bp-title-row { flex-direction: column; align-items: flex-start; }
    .bp-strategy-toggle { flex-wrap: wrap; }
    .bp-strategy-toggle button { padding: 0.3rem 0.6rem; font-size: 0.6rem; }
    .bankroll-plan { margin: 0.8rem 0.5rem 0; padding: 0.8rem 0.7rem; }
    .bp-list th, .bp-list td { padding: 0.4rem 0.4rem; font-size: 0.7rem; }
    .bp-list td.fight { display: none; }   /* same fight repeats per card; drop on mobile */
    .top-bets-controls { gap: 0.5rem; }
    .top-bets-controls .bp-strategy-toggle { width: 100%; }
  }
  @media (max-width: 480px) {
    .bp-summary { grid-template-columns: repeat(2, 1fr); gap: 0.4rem; }
    .bp-summary > div { padding: 0.4rem 0.5rem; }
    .bp-list th { font-size: 0.55rem; }
  }

  .bet-legend {
    padding: 0.55rem 1rem; border-top: 1px solid var(--border);
    font-size: 0.62rem; color: #666; line-height: 1.7;
  }
  .no-bets { padding: 0.85rem 1rem; color: var(--muted); font-size: var(--sm); }

  /* ─── Preview event styling ─── */
  .preview-event .event-header {
    background: linear-gradient(90deg, rgba(200,160,250,0.08), rgba(13,13,16,0.5));
    border-color: rgba(200,160,250,0.18);
  }
  .preview-tag {
    font-size: 0.55rem; font-weight: 700; padding: 2px 7px; border-radius: 3px;
    background: rgba(200,160,250,0.15); color: var(--purple);
    text-transform: uppercase; letter-spacing: 0.07em;
    margin-left: 0.5rem; vertical-align: middle;
  }
  .preview-notice {
    background: rgba(200,160,250,0.05);
    border: 1px dashed rgba(200,160,250,0.2);
    border-radius: 8px; padding: 0.85rem 1rem;
    color: #c4b8d9; font-size: var(--sm); font-style: italic;
    text-align: center;
  }

  /* ─── Event filter on top bets page ─── */
  .filter-bar {
    display: flex; flex-wrap: wrap; gap: 0.4rem;
    margin-bottom: 1rem; padding: 0.5rem 0;
  }
  .filter-pill {
    padding: 0.35rem 0.85rem; border-radius: 999px;
    border: 1px solid var(--border); background: var(--card-2);
    color: var(--muted); font-size: var(--xs); font-weight: 600;
    cursor: pointer; transition: all 0.12s;
    display: inline-flex; align-items: center; gap: 0.4rem;
    font-family: inherit;
  }
  .filter-pill:hover { color: var(--text); border-color: var(--border-strong); }
  .filter-pill.active {
    background: var(--ui-soft); color: var(--ui);
    border-color: var(--ui-edge);
  }
  .filter-pill .pill-count {
    background: rgba(255,255,255,0.06); border-radius: 8px;
    padding: 0 0.4rem; font-size: 0.6rem; color: var(--text-2);
  }
  .filter-pill.active .pill-count { background: rgba(14,165,233,0.20); color: var(--ui); }

  .type-pill {
    padding: 0.25rem 0.7rem; border-radius: 999px;
    border: 1px solid var(--border); background: transparent;
    color: var(--muted); font-size: var(--xs); font-weight: 500;
    cursor: pointer; transition: all 0.12s;
    font-family: inherit;
  }
  .type-pill:hover { color: var(--light); border-color: var(--purple); }
  .type-pill.active {
    background: rgba(200,160,250,0.12); color: var(--purple);
    border-color: var(--purple);
  }

  /* ─── Risk tier selector — 3-button preset row ─── */
  .risk-tier-row {
    display: flex; align-items: center; gap: 0.5rem;
    flex-wrap: wrap;
    padding: 0.6rem 0; margin-top: -0.2rem;
  }
  .risk-tier-row__label {
    color: var(--muted); font-size: var(--xs);
    letter-spacing: 0.04em; margin-right: 0.15rem;
  }
  .risk-tier-pill {
    padding: 0.35rem 1.0rem; border-radius: 8px;
    border: 1px solid var(--border-c); background: var(--surface);
    color: var(--text-2); font-size: var(--xs); font-weight: 500;
    cursor: pointer; transition: all 0.15s;
    font-family: inherit; letter-spacing: 0.02em;
  }
  .risk-tier-pill:hover {
    color: var(--text); border-color: var(--ui-edge);
    background: var(--ui-soft);
  }
  .risk-tier-pill.active {
    background: var(--ui-soft); color: var(--ui);
    border-color: var(--ui); font-weight: 600;
    box-shadow: inset 0 0 0 1px var(--ui-edge);
  }
  /* Conservative = teal, Balanced = sky, Aggressive = amber tint */
  .risk-tier-pill[data-tier="conservative"].active {
    color: var(--win); border-color: var(--win); background: var(--win-soft);
    box-shadow: inset 0 0 0 1px var(--win-edge);
  }
  .risk-tier-pill[data-tier="aggressive"].active {
    color: #FFB300; border-color: rgba(255,179,0,0.6); background: rgba(255,179,0,0.10);
    box-shadow: inset 0 0 0 1px rgba(255,179,0,0.42);
  }
  .risk-tier-caption {
    color: var(--text-3); font-size: 11px;
    line-height: 1.35; flex-basis: 100%; margin-top: 0.25rem;
    letter-spacing: 0.02em;
  }
  @media (max-width: 720px) {
    .risk-tier-pill { padding: 0.3rem 0.7rem; font-size: 11px; }
    .risk-tier-caption { font-size: 10.5px; }
  }

  .bet-row:hover td { background: var(--ui-soft) !important; }

  /* ─── Top bets table ─── */
  #fights-panel { display: block; }
  .section-title {
    font-size: 12px; text-transform: uppercase; letter-spacing: 0.16em;
    color: var(--text-2); font-weight: 500;
    margin-bottom: 1rem; padding-bottom: 0.5rem;
    border-bottom: var(--hairline);
  }
  /* ─── Atmospheric red glow — consistent across all three panels ─── */
  #fights-panel, #top-bets, #past-events-panel { position: relative; isolation: isolate; }
  #fights-panel::before, #top-bets::before, #past-events-panel::before {
    content: ''; position: absolute; inset: 0;
    pointer-events: none; z-index: -1;
    background:
      /* top-centre bloom — 50% of original intensity */
      radial-gradient(ellipse 90% 320px at 50% -60px, rgba(255,23,68,0.045), transparent 65%),
      /* left rim */
      radial-gradient(ellipse 40% 200px at 0% 0%, rgba(255,23,68,0.027), transparent 70%),
      /* right counter-cool */
      radial-gradient(ellipse 35% 180px at 100% 0%, rgba(168,85,247,0.02), transparent 70%);
  }
  .top-table { width: 100%; border-collapse: collapse; font-size: var(--sm); }
  /* Bare variant — used by the All Bets view, no card chrome / box.
     Row size deliberately ~20% taller than the default top-table so the
     long flat list is easier to scan. */
  .top-table--bare { background: transparent; border: 0; font-size: 0.92rem; }
  .top-table--bare th { padding: 0.6rem 1rem; font-size: 0.7rem; }
  .top-table--bare td { padding: 0.7rem 1rem; border-bottom: 1px solid rgba(255,255,255,0.05); }
  .top-table th {
    background: var(--surface); color: var(--text-3); text-transform: uppercase;
    font-size: 0.6rem; letter-spacing: 0.14em; padding: 0.5rem 0.8rem; text-align: left;
  }
  .top-table td { padding: 0.55rem 0.8rem; border-bottom: 1px solid var(--border-c); font-variant-numeric: tabular-nums; }
  .top-table tr:last-child td { border-bottom: none; }
  .top-table tr:hover td { background: var(--ui-soft); }

  footer {
    text-align: center; padding: 40px 2rem 28px;
    color: var(--text-2); font-size: 12.5px;
    letter-spacing: 0.01em;
    border-top: var(--hairline); margin-top: 2rem;
    line-height: 1.7;
    max-width: 880px; margin-left: auto; margin-right: auto;
  }
  .hidden { display: none !important; }

  /* Past-events bet grading — flat layout, no card chrome (per spec).
     Header sits above the table; toggle swaps between top picks + all. */
  .past-bets { font-size: var(--sm); }
  .past-bets-header {
    display: flex; align-items: center; gap: 0.75rem;
    margin-bottom: 0.5rem; flex-wrap: wrap;
    color: var(--light); font-weight: 700;
    font-size: var(--sm); letter-spacing: 0.02em;
  }
  .past-bets-tally {
    color: var(--ui); font-weight: 600; font-size: 0.78rem;
    letter-spacing: 0.06em; text-transform: uppercase;
    font-family: 'JetBrains Mono', monospace;
  }
  .past-bets-toggle { display: inline-flex; gap: 0.3rem; margin-left: auto; }
  .past-bets-toggle button {
    background: transparent; color: var(--text-2);
    border: 1px solid var(--border-c); border-radius: 4px;
    padding: 0.25rem 0.7rem; font-size: var(--xs); font-weight: 500;
    cursor: pointer; transition: all 0.15s;
  }
  .past-bets-toggle button:hover { color: var(--text); border-color: var(--border-strong); }
  .past-bets-toggle button.active {
    background: var(--ui-soft); color: var(--ui); border-color: var(--ui-edge);
  }
  .past-bets-table {
    width: 100%; border-collapse: collapse;
    font-variant-numeric: tabular-nums;
  }
  .past-bets-table th {
    text-align: left; padding: 0.4rem 0.6rem;
    color: var(--muted); font-weight: 600; font-size: var(--xs);
    text-transform: uppercase; letter-spacing: 0.04em;
    border-bottom: 1px solid var(--border);
  }
  .past-bets-table td {
    padding: 0.45rem 0.6rem;
    border-bottom: 1px solid rgba(255,255,255,0.04);
  }
  .past-bets-table tr:last-child td { border-bottom: none; }
  .past-bets-value-tag {
    display: inline-block; margin-left: 0.4rem;
    padding: 1px 6px; border-radius: 3px;
    font-size: 0.58rem; font-weight: 500;
    letter-spacing: 0.08em; text-transform: uppercase;
    vertical-align: middle;
    font-family: 'JetBrains Mono', monospace;
    /* Default (neutral / fight-wide bet): cyan UI tint */
    background: var(--ui-soft); color: var(--ui);
    border: 1px solid var(--ui-edge);
  }
  /* Side-tinted variants — match the fighter the bet is staked on */
  .past-bets-value-tag--a {
    background: rgba(255,23,68,0.10); color: var(--side-a);
    border-color: rgba(255,23,68,0.42);
  }
  .past-bets-value-tag--b {
    background: rgba(168,85,247,0.10); color: var(--side-b);
    border-color: rgba(168,85,247,0.42);
  }
  /* Market label on the default "Key markets" scorecard rows — a small
     uppercase tag (Winner / Method / Distance / Total rounds) that prefixes
     the model's call so each row reads as a distinct question. */
  .past-bets-market {
    display: inline-block; margin-right: 0.5rem;
    min-width: 5.4rem;
    font-size: 0.58rem; font-weight: 600;
    letter-spacing: 0.1em; text-transform: uppercase;
    color: var(--text-2);
    font-family: 'JetBrains Mono', monospace;
  }
  /* Numeric cells — muted mono so the highlighted hit row stays the focus. */
  .past-bets-table .past-bets-prob,
  .past-bets-table .past-bets-odds {
    color: var(--text-2);
    font-family: 'JetBrains Mono', monospace;
    font-variant-numeric: tabular-nums;
  }
  /* The row matching what ACTUALLY happened — the model's read of the
     realised result. Teal-tinted, left accent bar, brighter text. */
  .past-bets-table tr.past-bets-hit td {
    background: var(--win-soft);
    color: var(--text);
    border-bottom-color: rgba(45,212,191,0.22);
  }
  .past-bets-table tr.past-bets-hit td:first-child {
    box-shadow: inset 2px 0 0 var(--win);
    font-weight: 600;
  }
  .past-bets-table tr.past-bets-hit .past-bets-prob {
    color: var(--win); font-weight: 600;
  }
  .past-bets-hit-mark {
    color: var(--win); font-weight: 700; margin-right: 0.3rem;
  }
  /* Soft result grades — never a hard "lost". The hit row reads as the
     headline; secondary bets just note whether they'd have cashed. */
  .past-bets-grade {
    font-size: var(--xs); font-family: 'JetBrains Mono', monospace;
    letter-spacing: 0.04em; font-weight: 500;
  }
  .past-bets-grade--hit   { color: var(--win); font-weight: 600; }
  .past-bets-grade--cash  { color: var(--ui); }
  .past-bets-grade--nocash{ color: var(--text-3); }
  .past-bets-grade--na    { color: var(--text-3); }
  .past-bets-note {
    font-size: var(--xs); color: var(--text-3); font-style: italic;
    margin: 0 0 0.4rem; letter-spacing: 0.01em;
  }

  /* ─── Past events: model prediction vs actual result comparison row ─── */
  .past-pred-row {
    display: flex; margin-bottom: 0.75rem;
    background: var(--surface); border: 1px solid var(--border-c);
    border-radius: 8px; overflow: hidden;
  }
  .past-pred-col { flex: 1; padding: 0.55rem 0.8rem; }
  .past-pred-col-label {
    font-size: 8.5px; text-transform: uppercase; letter-spacing: 0.15em;
    color: var(--text-3); font-weight: 700; margin-bottom: 0.3rem;
  }
  .past-pred-eyebrow {
    font-size: 8.5px; text-transform: uppercase; letter-spacing: 0.15em;
    color: var(--text-3); font-weight: 700; margin-bottom: 0.35rem;
  }
  .past-pred-won {
    font-size: 8.5px; font-weight: 700; letter-spacing: 0.04em;
    color: var(--win); text-transform: uppercase;
  }
  .past-pred-divider { width: 1px; background: var(--border-c); flex-shrink: 0; }
  .past-pred-pick { display: flex; align-items: baseline; gap: 0.35rem; margin-bottom: 0.2rem; }
  .past-pred-name { font-size: var(--sm); font-weight: 600; color: var(--text); }
  .past-pred-prob { font-size: var(--xs); color: var(--text-3); font-family: 'JetBrains Mono', monospace; }
  .past-pred-methods {
    font-size: var(--xs); color: var(--text-2);
    font-family: 'JetBrains Mono', monospace; letter-spacing: 0.02em;
  }
  .past-pred-methods .sep { color: var(--border-strong); margin: 0 3px; }
  .past-pred-none { font-size: var(--xs); color: var(--text-3); font-style: italic; padding-top: 0.15rem; }

  /* ═════════════════════════════════════════════════════════════════════
     MOIRAI EXPANDED FIGHT-DETAIL PANEL
     Replaces the old two-pane stat/outcome detail with a five-panel grid:
       1. Hero (model favourite + big % + CI band + tier + summary)
       2. Method breakdown (KO/TKO, Submission, Decision per fighter)
       3. Finish distribution (R1-R5 + DEC bar chart)
       4. Model drivers (insights with side-tinted bars + favours)
       5. Value bets (model vs bookies with conf-tier badges)
     ════════════════════════════════════════════════════════════════════ */

  .mfd {
    margin-top: 6px;
    display: grid;
    grid-template-columns: 1.2fr 1.05fr 1.05fr;
    gap: 1px;
    background: var(--border-c);
    border: var(--hairline);
    border-radius: var(--radius);
    overflow: hidden;
    animation: mfd-fade-in 280ms cubic-bezier(0.2, 0, 0, 1);
  }
  .mfd__panel {
    background: var(--surface);
    padding: 22px 24px 20px;
  }
  .mfd__panel--hero { grid-row: span 2; padding: 26px 26px 24px; }
  .mfd__panel--wide { grid-column: 1 / -1; }
  @media (max-width: 980px) {
    .mfd { grid-template-columns: 1fr; }
    .mfd__panel--hero { grid-row: auto; }
    .mfd__panel--wide { grid-column: 1; }
  }

  .mfd__label {
    font-size: 9.5px; letter-spacing: 0.16em;
    text-transform: uppercase; font-weight: 500;
    color: var(--text-2);
    margin-bottom: 10px;
    display: flex; align-items: center; justify-content: space-between;
  }
  .mfd__label-right {
    font-size: 9.5px; letter-spacing: 0.14em;
    color: var(--text-3); font-weight: 400;
  }

  /* HERO panel */
  .mfd-hero__name {
    font-size: 17px; font-weight: 500;
    color: var(--text); letter-spacing: -0.015em;
    margin-bottom: 16px;
  }
  .mfd-hero__prob {
    display: flex; align-items: baseline; gap: 4px;
    margin-bottom: 22px;
    font-family: 'JetBrains Mono', monospace;
    font-variant-numeric: tabular-nums;
  }
  .mfd-hero__prob-num {
    font-size: 64px; font-weight: 500;
    letter-spacing: -0.04em; line-height: 0.95;
    color: var(--accent);
  }
  /* Tint the headline % to match whichever fighter the model favours,
     so the colour cue lines up with the fighter pill in the bout row
     (red = side A, lavender = side B). */
  .mfd__panel--hero.mfd-hero--a .mfd-hero__prob-num,
  .mfd__panel--hero.mfd-hero--a .mfd-hero__name { color: var(--side-a); }
  .mfd__panel--hero.mfd-hero--b .mfd-hero__prob-num,
  .mfd__panel--hero.mfd-hero--b .mfd-hero__name { color: var(--side-b); }
  .mfd__panel--hero.mfd-hero--a .mfd-hero__ci-point { background: var(--side-a); }
  .mfd__panel--hero.mfd-hero--b .mfd-hero__ci-point { background: var(--side-b); }
  .mfd-hero__prob-pct {
    font-size: 22px; color: var(--text-3);
    font-weight: 400;
  }
  .mfd-hero__ci-band {
    position: relative;
    height: 10px;
    background: var(--surface-3);
    border-radius: 1px;
    margin-bottom: 4px;
  }
  .mfd-hero__ci-fill {
    position: absolute; top: 0; bottom: 0;
    background: var(--text-3);
    opacity: 0.4;
    border-radius: 1px;
  }
  .mfd-hero__ci-point {
    position: absolute;
    top: -2px; bottom: -2px;
    width: 2px;
    background: var(--accent);
    transform: translateX(-1px);
  }
  .mfd-hero__ci-axis {
    display: flex; justify-content: space-between;
    font-size: 9.5px; letter-spacing: 0.1em;
    color: var(--text-3);
    margin-bottom: 12px;
  }
  .mfd-hero__ci-meta {
    display: flex; gap: 8px; align-items: center;
    font-size: 11px; color: var(--text-2);
    letter-spacing: 0.04em;
    font-family: 'JetBrains Mono', monospace;
    font-variant-numeric: tabular-nums;
    margin-bottom: 16px;
  }
  .mfd-hero__ci-sep { color: var(--text-3); }
  .mfd-tier {
    font-family: 'JetBrains Mono', monospace;
    font-size: 9.5px; letter-spacing: 0.1em;
    padding: 2px 7px; border-radius: 2px;
    background: transparent;
  }
  .mfd-tier--high   { color: var(--text);   border: 1px solid var(--border-strong); }
  .mfd-tier--medium { color: var(--text-2); border: 1px solid var(--border-c); }
  .mfd-tier--low    { color: var(--text-3); border: 1px solid var(--border-c); }
  .mfd-hero__summary {
    font-size: 13px;
    color: var(--text-2);
    line-height: 1.55;
    letter-spacing: -0.005em;
    padding-top: 14px;
    border-top: var(--hairline);
  }
  /* "Why this pick" — multi-qualifier list under the hero. Replaces the
     single-summary line so the reader gets several reasons, not just one. */
  .mfd-hero__why {
    padding-top: 14px; margin-top: 4px;
    border-top: var(--hairline);
  }
  .mfd-hero__why-label {
    font-size: 9.5px; letter-spacing: 0.16em;
    text-transform: uppercase; color: var(--text-3);
    margin-bottom: 8px;
  }
  .mfd-hero__why-list {
    list-style: none; margin: 0; padding: 0;
    display: flex; flex-direction: column; gap: 7px;
  }
  .mfd-hero__why-item {
    position: relative;
    padding: 6px 10px 6px 12px;
    font-size: 12.5px; line-height: 1.45;
    color: var(--text-2);
    background: var(--surface-3);
    border-left: 2px solid var(--text-3);
    border-radius: 3px;
    letter-spacing: -0.005em;
  }
  .mfd-hero__why-item--a { border-left-color: var(--side-a); color: var(--text); }
  .mfd-hero__why-item--b { border-left-color: var(--side-b); color: var(--text); }
  .mfd-hero__why-item--neutral { border-left-color: var(--ui); color: var(--text-2); }

  /* METHOD breakdown */
  .mfd-method__head {
    display: grid;
    grid-template-columns: 80px 38px 1fr 38px;
    gap: 8px;
    font-size: 10px; letter-spacing: 0.06em;
    color: var(--text-3);
    margin-bottom: 8px;
  }
  .mfd-method__head .mfd-method__col-a { text-align: right; grid-column: 2 / 3; padding-right: 8px; }
  .mfd-method__head .mfd-method__col-b { text-align: left;  grid-column: 4 / 5; padding-left: 8px; }
  .mfd-method__row {
    display: grid;
    grid-template-columns: 80px 38px 1fr 38px;
    gap: 8px;
    align-items: center;
    padding: 6px 0;
    font-family: 'JetBrains Mono', monospace;
    font-variant-numeric: tabular-nums;
  }
  .mfd-method__lbl {
    font-family: 'Inter', sans-serif;
    font-size: 12px; color: var(--text-2);
    letter-spacing: -0.005em;
  }
  .mfd-method__a-num { font-size: 12.5px; text-align: right; padding-right: 8px; color: var(--text); }
  .mfd-method__b-num { font-size: 12.5px; text-align: left;  padding-left: 8px;  color: var(--text); }
  .mfd-method__bars {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1px;
    height: 6px;
  }
  .mfd-method__bar {
    background: var(--surface-3);
    border-radius: 1px;
    overflow: hidden;
    position: relative;
    height: 100%;
    display: flex;
  }
  .mfd-method__bar--a { justify-content: flex-end; }
  .mfd-method__bar--b { justify-content: flex-start; }
  .mfd-method__fill {
    height: 100%;
    background: var(--side-a);
    opacity: 0.9;
    transform-origin: right;
    animation: mfd-bar-grow 600ms cubic-bezier(0.2, 0, 0, 1) both;
  }
  .mfd-method__fill--b { background: var(--side-b); transform-origin: left; }

  /* TOTALS — model expectations (sig strikes / takedowns / knockdowns).
     Compare rows mirror the Key Stats panel: a-num | bars | b-num with
     a 80%-interval sub-row underneath. Single rows keep the original
     label / value / range layout for combined-only metrics. */
  .mfd-totals {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 24px;
    row-gap: 2px;
  }
  @media (max-width: 980px) {
    .mfd-totals { grid-template-columns: 1fr; }
  }
  .mfd-totals__row {
    padding: 8px 0;
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.05));
    font-family: 'Inter', sans-serif;
  }
  .mfd-totals__row--single {
    display: grid;
    grid-template-columns: 1fr auto auto;
    gap: 12px;
    align-items: baseline;
  }
  /* Compare rows span both grid columns so the bar pair gets room. */
  .mfd-totals__row--compare {
    grid-column: 1 / -1;
    display: block;
  }
  .mfd-totals__cmp-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    margin-bottom: 6px;
  }
  .mfd-totals__cmp-bar {
    /* Inherits .mfd-method__row's 4-col layout so the bars + numbers
       align with the Key Stats panel above. No override needed. */
  }
  .mfd-totals__cmp-ranges {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4px;
    margin-top: 4px;
    padding: 0 calc(2.4rem + 4px); /* line up with bar columns */
  }
  .mfd-totals__cmp-ranges .mfd-totals__range--a {
    text-align: right;
    color: var(--side-a);
    opacity: 0.7;
  }
  .mfd-totals__cmp-ranges .mfd-totals__range--b {
    text-align: left;
    color: var(--side-b);
    opacity: 0.7;
  }
  .mfd-totals__lbl {
    font-size: 12.5px;
    color: var(--text-2);
    letter-spacing: -0.005em;
  }
  .mfd-totals__q50 {
    font-family: 'JetBrains Mono', monospace;
    font-variant-numeric: tabular-nums;
    font-size: 14px;
    font-weight: 500;
    color: var(--text);
    min-width: 44px;
    text-align: right;
  }
  .mfd-totals__range {
    font-family: 'JetBrains Mono', monospace;
    font-variant-numeric: tabular-nums;
    font-size: 11.5px;
    color: var(--text-3, var(--text-2));
    opacity: 0.75;
    min-width: 72px;
    text-align: right;
  }

  /* ROUNDS finish distribution */
  .mfd-rounds {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 8px;
    align-items: end;
    height: 130px;
    padding-top: 4px;
  }
  .mfd-rounds__col {
    display: flex; flex-direction: column;
    align-items: center;
    height: 100%;
  }
  .mfd-rounds__bar-wrap {
    width: 100%;
    flex: 1;
    display: flex;
    align-items: flex-end;
    margin-bottom: 8px;
  }
  .mfd-rounds__bar {
    width: 100%;
    border-radius: 1px 1px 0 0;
    transform-origin: bottom;
    animation: mfd-bar-rise 700ms cubic-bezier(0.2, 0, 0, 1) both;
    min-height: 2px;
    display: flex; flex-direction: column;
    overflow: hidden;
  }
  .mfd-rounds__num {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px; color: var(--text);
    font-variant-numeric: tabular-nums;
  }
  .mfd-rounds__lbl {
    font-size: 9.5px; letter-spacing: 0.14em;
    color: var(--text-3);
    margin-top: 2px;
  }

  /* DRIVERS — each row is its own card with a numbered rank, the feature
     label, who it favours, the human-readable summary, and a tinted weight
     bar. Stacks cleanly on mobile (grid → flex column). */
  .mfd-drivers {
    list-style: none; margin: 0; padding: 0;
    display: flex; flex-direction: column;
    gap: 10px;
  }
  .mfd-driver {
    padding: 12px 14px;
    background: var(--surface-2);
    border: var(--hairline);
    border-left: 3px solid var(--text-3);
    border-radius: 6px;
    display: flex; flex-direction: column; gap: 8px;
    transition: border-color var(--t-fast), background var(--t-fast);
  }
  .mfd-driver:hover { background: var(--surface); }
  .mfd-driver--a { border-left-color: var(--side-a); }
  .mfd-driver--b { border-left-color: var(--side-b); }
  .mfd-driver__head {
    display: flex; align-items: baseline; gap: 10px;
    flex-wrap: wrap;
  }
  .mfd-driver__rank {
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px; letter-spacing: 0.06em;
    color: var(--text-3);
    padding: 2px 6px;
    border: var(--hairline);
    border-radius: 3px;
    flex-shrink: 0;
  }
  .mfd-driver__feat {
    color: var(--text);
    font-size: 13px; font-weight: 500;
    letter-spacing: -0.005em;
    flex: 1; min-width: 0;
  }
  .mfd-driver__favours {
    font-size: 11px;
    letter-spacing: 0.02em;
    color: var(--text-3);
    text-transform: uppercase;
  }
  .mfd-driver--a .mfd-driver__favours strong { color: var(--side-a); }
  .mfd-driver--b .mfd-driver__favours strong { color: var(--side-b); }
  .mfd-driver__summary {
    margin: 0;
    font-size: 12.5px; line-height: 1.45;
    color: var(--text-2);
    letter-spacing: -0.005em;
  }
  .mfd-driver__bar-wrap {
    position: relative;
    height: 4px;
    background: var(--surface-3);
    border-radius: 1px;
    overflow: hidden;
  }
  .mfd-driver__bar {
    height: 100%;
    background: var(--text-2);
    border-radius: 1px;
    transform-origin: left;
    animation: mfd-bar-grow 600ms cubic-bezier(0.2, 0, 0, 1) both;
  }
  .mfd-driver__bar--a { background: var(--side-a); }
  .mfd-driver__bar--b { background: var(--side-b); }
  @media (max-width: 600px) {
    .mfd-driver { padding: 11px 12px; gap: 7px; }
    .mfd-driver__head { gap: 8px; }
    .mfd-driver__feat { font-size: 12.5px; flex: 1 1 100%; }
    .mfd-driver__favours { font-size: 10px; flex: 1 1 100%; margin-top: -2px; }
    .mfd-driver__summary { font-size: 12px; }
  }

  /* VALUE BETS */
  .mfd-bets { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
  .mfd-bet {
    display: grid;
    grid-template-columns: minmax(220px, 1.1fr) minmax(280px, 2fr) auto;
    gap: 24px;
    align-items: center;
    padding: 16px 18px;
    background: var(--bg);
    border: var(--hairline);
    border-radius: var(--radius);
    transition: border-color var(--t-fast), background var(--t-fast), transform var(--t-fast);
  }
  .mfd-bet:hover {
    border-color: var(--ui-edge);
    background: var(--surface);
    transform: translateY(-1px);
  }
  .mfd-bet__lead { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
  .mfd-bet__desc {
    font-size: 13.5px; color: var(--text);
    letter-spacing: -0.005em;
    line-height: 1.35;
  }
  .mfd-bet__conf {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 3px 10px 3px 8px;
    border-radius: 100px;
    font-size: 10.5px; letter-spacing: 0.04em;
    font-weight: 500;
    width: fit-content;
    border: 1px solid var(--border-c);
    background: var(--surface);
    color: var(--text-2);
  }
  .mfd-bet__conf-dot {
    width: 6px; height: 6px;
    border-radius: 50%;
    background: var(--text-3);
  }
  .mfd-bet__conf--strong { color: var(--win); border-color: var(--win-edge); background: var(--win-soft); }
  .mfd-bet__conf--strong .mfd-bet__conf-dot { background: var(--win); }
  .mfd-bet__conf--solid  { color: var(--ui);  border-color: var(--ui-edge);  background: var(--ui-soft); }
  .mfd-bet__conf--solid .mfd-bet__conf-dot { background: var(--ui); }
  .mfd-bet__conf--lean   { color: var(--text-2); }
  .mfd-bet__conf--lean .mfd-bet__conf-dot { background: var(--text-2); }

  /* Stat grid — four labelled mono numbers, the data the old bet table actually showed */
  .mfd-bet__stats {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 18px;
    align-items: center;
    min-width: 0;
  }
  .mfd-bet__stat { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
  .mfd-bet__stat-lbl {
    font-size: 9px; letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--text-3);
  }
  .mfd-bet__stat-val {
    font-family: 'JetBrains Mono', monospace;
    font-variant-numeric: tabular-nums;
    font-size: 15px;
    color: var(--text);
    letter-spacing: -0.01em;
    line-height: 1;
  }
  .mfd-bet__stat-val--ev-pos { color: var(--ui); }
  .mfd-bet__stat-val--ev-neg { color: var(--loss-red); }
  .mfd-bet__stat-val--book   { color: var(--elec); }
  @media (max-width: 980px) {
    .mfd-bet__stats { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  }
  .mfd-bet__payout {
    display: flex; flex-direction: column; align-items: flex-end;
    gap: 4px;
    padding-left: 24px;
    border-left: var(--hairline);
    min-width: 130px;
  }
  .mfd-bet__payout-odds {
    font-family: 'JetBrains Mono', monospace;
    font-size: 24px; font-weight: 500;
    letter-spacing: -0.02em;
    color: var(--text);
    font-variant-numeric: tabular-nums;
    line-height: 1;
  }
  .mfd-bet__payout-line {
    font-size: 11px; letter-spacing: 0.02em;
    color: var(--text-2);
  }
  .mfd-bet__payout-amount { color: var(--text); font-weight: 500; }
  .mfd-bet__payout-prof {
    font-size: 10.5px; letter-spacing: 0.04em;
    color: var(--ui);
  }
  .mfd-bets__empty {
    font-size: 11px; letter-spacing: 0.06em;
    color: var(--text-3);
    padding: 4px 0;
  }
  @media (max-width: 700px) {
    .mfd-bet { grid-template-columns: 1fr; gap: 14px; padding: 14px; }
    .mfd-bet__payout { border-left: 0; padding-left: 0; align-items: flex-start; }
  }

  /* ─── Mobile pass — phone-optimised layout ───────────────────────────
     The desktop bout row puts both fighters side-by-side with the prob
     centre between them — that doesn't survive at <600px because each
     fighter's name + meta + odds need at least ~140px of width to read.
     On phones we restructure to a stacked layout: each fighter gets its
     own row (avatar + name + their win-prob %), with the prob bar full
     width below, and the weight-class line at the bottom. The name has
     room to render in full. Wide tables get horizontal scroll inside
     their wrappers; controls stack instead of wrap. */
  @media (max-width: 600px) {
    /* Header — full nav row, stats hidden, refresh time stays small */
    header { padding: 10px 14px; gap: 10px; }
    .logo-text h1 { font-size: 14px; }
    .logo-text .tagline { font-size: 8px; letter-spacing: 0.14em; }
    .logo-icon { width: 22px; height: 22px; }
    .header-nav { width: 100%; justify-content: center; flex-wrap: wrap; gap: 6px; }
    .header-nav a { padding: 7px 14px; font-size: 12.5px; }

    main { padding: 14px 10px 56px; }

    /* Tagline-style banner under header (if rendered) */
    .matrix-tagline { font-size: 12px; padding: 14px 16px; }

    /* Carousel — smaller pills */
    .carousel-wrap { padding: 14px 12px 12px; }
    .event-pill { min-width: 200px; max-width: 240px; padding: 12px 14px; }
    .event-pill .ev-name { font-size: 12.5px; }

    /* Event header — tighter padding + smaller date plate */
    .event-header { padding: 14px 14px; gap: 12px; }
    .event-header__date-stack { padding: 8px 12px; min-width: 56px; }
    .event-header__day-num { font-size: 22px; }
    .event-header h2 { font-size: 16px; line-height: 1.25; }
    .event-header__kicker { font-size: 9px; }

    /* ─── BOUT ROW — stacked per-fighter layout ─────────────────────
       .match-row becomes a CSS grid with fighter-A on row 1, vs-centre
       on row 2 (full width), fighter-B on row 3. Each fighter row uses
       its own internal flex, so avatar + name + odds sit side-by-side
       with the prob % at the right edge.  The prob nums are absolutely
       positioned to the right of each fighter card via flex order so
       the header stays readable. */
    /* ── Bout = a card. Each fight-main gets a faint surface + rounded corners
       with a gap between blocks, so bouts read as discrete cards rather than a
       dense divided list. The match-row stacks A → prob split → B. */
    .fight-block { margin-bottom: 9px; }
    .fight-main {
      flex-direction: column; padding: 13px 13px; gap: 11px; align-items: stretch;
      border-bottom: none; border-radius: 12px;
      background: rgba(255,255,255,0.018);
      border: 1px solid var(--border-c);
    }
    .fight-block.fav-a .fight-main,
    .fight-block.fav-b .fight-main { background: rgba(255,255,255,0.018); }
    .match-row { display: flex; flex-direction: column; gap: 11px; width: 100%; }

    /* Fighter rows: avatar LEFT, name/meta left-aligned (scans far better than
       centred). The right fighter (B) sits BELOW the prob split via order. */
    .fighter-card, .fighter-card.right {
      flex-direction: row; text-align: left;
      width: 100%; flex: 0 0 auto;
      align-items: center; justify-content: flex-start;
      gap: 0.7rem; order: 0;
    }
    .fighter-card.right { order: 2; }
    .fighter-card .fighter-info {
      flex: 1 1 auto; min-width: 0;
      display: flex; flex-direction: column; align-items: flex-start;
    }
    .fighter-card.right .fighter-meta,
    .fighter-card .fighter-meta { justify-content: flex-start; }
    .fighter-card.right .fighter-odds,
    .fighter-card .fighter-odds { justify-content: flex-start; }
    .avatar { width: 54px !important; height: 54px !important; }
    .fight-block.expanded .avatar { width: 76px !important; height: 76px !important; }
    .fighter-name { font-size: 0.95rem; line-height: 1.25; white-space: normal; text-align: left; }
    .fighter-meta { gap: 0.25rem; flex-wrap: wrap; justify-content: flex-start; }
    /* Hide low-priority chips so the record + streak fit cleanly */
    .style-badge, .stance-badge, .fighting-style-badge { display: none; }
    .record-badge { font-size: 0.6rem; padding: 1px 5px; }
    .streak-label { font-size: 0.58rem; }
    .fighter-odds { font-size: 0.7rem; margin-top: 3px; }

    /* Probability split — the card's centrepiece, sitting BETWEEN the two
       fighters (order:1) so the row reads as "A — odds split — B". Percentages
       above the bar, weight-class/time below. */
    .vs-center {
      min-width: 0; width: 100%;
      display: flex;
      flex-direction: column; align-items: center; justify-content: center;
      gap: 6px;
      order: 1;
      padding: 9px 0 2px;
      border-top: 1px solid var(--border-c);
      border-bottom: 1px solid var(--border-c);
    }
    .prob-nums { font-size: 1.05rem; gap: 8px; justify-content: center; }
    .prob-bar { width: 100%; height: 5px; }
    .wc-txt {
      font-size: 0.66rem; gap: 4px;
      width: 100%;
      justify-content: center; text-align: center;
      flex-direction: row; flex-wrap: wrap;
    }
    .rounds-pill { font-size: 0.58rem; padding: 1px 5px; }

    /* Move the expand-icon to the bottom-right corner instead of the
       end of a horizontal row, since the row is now a column. */
    .fight-main .expand-icon {
      position: absolute; right: 12px; top: 14px; font-size: 10px;
    }
    .fight-main .expand-hint { display: none; }
    .fight-main { position: relative; }

    /* Top Value Bets controls — stack instead of wrap */
    .top-bets-controls { flex-direction: column; align-items: stretch; gap: 0.6rem; }
    .bankroll-input-wrap { width: 100%; justify-content: space-between; }
    .bp-strategy-toggle { width: 100%; justify-content: stretch; }
    .bp-strategy-toggle button { flex: 1; }

    /* Wide tables — force a single-line per cell so the wrapper actually
       overflows horizontally rather than wrapping content into tall cells. */
    .top-table, .bp-list table { font-size: 0.78rem; }
    .top-table th, .top-table td { padding: 0.5rem 0.6rem !important; white-space: nowrap; }
    .top-table--bare th, .top-table--bare td { padding: 0.6rem 0.7rem !important; font-size: 0.82rem !important; white-space: nowrap; }
    .bp-list th, .bp-list td { white-space: nowrap; }
    #top-all-wrap, .bp-list-wrap { overflow-x: auto !important; -webkit-overflow-scrolling: touch; }
    /* A subtle hint that the table is scrollable */
    #top-all-wrap::after, .bp-list-wrap::after {
      content: '→ scroll'; display: block; text-align: right;
      padding: 4px 10px; font-size: 9.5px; color: var(--text-3);
      letter-spacing: 0.08em; text-transform: uppercase;
    }

    /* Past events — bet grading tables also scroll */
    .past-bets-table { font-size: 0.78rem; }
    .past-bets-table th, .past-bets-table td { padding: 0.4rem 0.5rem; white-space: nowrap; }
    .past-bets { overflow-x: auto; -webkit-overflow-scrolling: touch; }

    /* Bankroll summary — already 2-col under 720px; tighten further */
    .bp-summary { gap: 0.35rem; }
    .bp-summary > div { padding: 0.4rem 0.5rem; }
    .bp-summary .label { font-size: 0.55rem; }
    .bp-summary .val { font-size: 0.85rem; }

    /* Footer — narrower line height */
    footer { padding: 24px 1rem 20px; font-size: 11px; }
  }

  @media (max-width: 380px) {
    /* iPhone SE / very narrow phones — drop one chip from each meta line
       (keep record), shrink avatar a touch more. Names stay readable. */
    .fighter-meta .streak-label { display: none; }
    .avatar { width: 50px !important; height: 50px !important; }
    .fighter-name { font-size: 0.9rem; }
    .header-nav a { padding: 6px 11px; font-size: 12px; }
  }

  /* ─── Site footer ──────────────────────────────────────────────────
     Single thin tagline bar that spans the full viewport width, sat
     directly under the page content with minimal vertical gap. A second
     row underneath carries the copyright + responsible-gambling notice
     and the internal /about/, /faq/ links for SEO crawlability. */
  .site-footer {
    /* margin-top:auto pins the footer to the viewport bottom when content
       is shorter than the viewport (body is flex column with min-height:
       100vh). With longer content the footer sits naturally below it. */
    margin-top: auto;
    width: 100%;
    padding: 0.9rem 1.5rem 1rem;
    border-top: 1px solid var(--border-c);
    background: var(--surface);
    color: var(--text-3);
    font-size: 0.78rem;
    line-height: 1.55;
    letter-spacing: 0.01em;
    text-align: center;
  }
  .site-footer__legal {
    color: var(--text-3);
    font-size: 0.75rem;
  }
  .site-footer__legal a {
    color: var(--text-3);
    text-decoration: none;
    transition: color 0.15s;
  }
  .site-footer__legal a:hover { color: var(--ui); }
  .site-footer__disclaimer {
    color: var(--text-3);
    font-style: italic;
    font-size: 0.68rem;
    max-width: 880px;
    margin: 0.45rem auto 0;
    opacity: 0.82;
  }
  @media (max-width: 720px) {
    .site-footer { padding: 0.8rem 1rem 0.9rem; }
    .site-footer__disclaimer { font-size: 0.66rem; }
  }

  /* ─── Recommended Parlay card ───────────────────────────────────────── */
  .parlay-head {
    display: flex; align-items: center; justify-content: space-between;
    gap: 12px; flex-wrap: wrap; margin-bottom: 0.7rem;
  }
  .parlay-title {
    font-size: 0.95rem; font-weight: 700; color: var(--text);
    letter-spacing: -0.01em;
  }
  .parlay-legs { display: inline-flex; gap: 4px; }
  .parlay-leg-btn {
    min-width: 30px; padding: 5px 9px;
    background: var(--surface-2); border: 1px solid var(--border-c);
    border-radius: 6px; color: var(--text-2);
    font-family: 'JetBrains Mono', monospace; font-size: 0.78rem;
    font-weight: 600; cursor: pointer;
    transition: border-color var(--t-fast), color var(--t-fast), background var(--t-fast);
  }
  .parlay-leg-btn:hover:not(:disabled) { border-color: var(--ui-edge); color: var(--text); }
  .parlay-leg-btn.is-active {
    background: var(--ui-soft); border-color: var(--ui-edge); color: var(--ui);
  }
  .parlay-leg-btn:disabled { opacity: 0.32; cursor: not-allowed; }
  .parlay-box {
    background: var(--surface-2); border: 1px solid var(--border-c);
    border-left: 2px solid var(--ui-edge);
    border-radius: 10px; padding: 16px 18px;
  }
  .parlay-box--neg { border-left-color: var(--loss-red-edge); }
  .parlay-legs-list {
    display: flex; align-items: stretch; flex-wrap: wrap; gap: 6px;
    margin-bottom: 14px;
  }
  .parlay-leg {
    flex: 1 1 160px; min-width: 140px;
    background: var(--surface-3); border: 1px solid var(--border-c);
    border-radius: 8px; padding: 9px 11px;
  }
  .parlay-leg__desc { font-size: 0.82rem; font-weight: 600; color: var(--text); }
  .parlay-leg__sub  { font-size: 0.68rem; color: var(--text-3); margin: 2px 0 5px; }
  .parlay-leg__odds {
    font-family: 'JetBrains Mono', monospace; font-size: 0.9rem;
    font-weight: 600; color: var(--text-2);
  }
  .parlay-leg__x {
    align-self: center; color: var(--text-3);
    font-family: 'JetBrains Mono', monospace; font-size: 0.85rem;
  }
  .parlay-metrics {
    display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px;
  }
  .parlay-metric { display: flex; flex-direction: column; gap: 2px; }
  .parlay-metric__val {
    font-family: 'JetBrains Mono', monospace; font-size: 1rem;
    font-weight: 700; font-variant-numeric: tabular-nums; color: var(--text);
  }
  .parlay-metric__val.parlay-odds { font-size: 1.25rem; color: var(--ui); }
  .parlay-metric__val.parlay-towin { color: var(--win); }
  .parlay-metric__val.ev-pos { color: var(--win); }
  .parlay-metric__val.ev-neg { color: var(--loss-red); }
  .parlay-metric__lbl {
    font-size: 8.5px; color: var(--text-3); font-weight: 600;
    text-transform: uppercase; letter-spacing: 0.12em;
  }
  .parlay-caveat {
    margin-top: 12px; padding: 7px 10px;
    background: var(--loss-red-soft); border-radius: 6px;
    color: var(--loss-red); font-size: 0.76rem; font-weight: 600;
  }
  .parlay-disclaimer {
    margin-top: 0.6rem; font-size: 0.7rem; color: var(--text-3);
    font-style: italic;
  }
  @media (max-width: 720px) {
    .parlay-metrics { grid-template-columns: repeat(3, 1fr); }
  }

/* ════════════════════════════════════════════════════════════════════════
   TOP VALUE BETS — redesigned page modules
   Structure/layout/typography port of docs/BetsPageDesign snippets.
   All colours resolve to existing :root tokens (no palette change).
   Everything is scoped under #top-bets so Past Events / Fights are untouched.
   ════════════════════════════════════════════════════════════════════════ */

  /* ---- Risk-tier accent ----
     One swappable accent that every per-bet attribute inherits. Default
     (Balanced / All Bets) = cyan. JS toggles .tier-conservative /
     .tier-aggressive on #top-bets; Conservative = teal, Aggressive = amber.
     These resolve to existing palette tokens — no new colours. */
  #top-bets {
    --tier-accent:      var(--ui);
    --tier-accent-edge: var(--ui-edge);
    --tier-accent-soft: var(--ui-soft);
    --tier-glow:        rgba(14,165,233,0.50);
    --tier-glow-soft:   rgba(14,165,233,0.32);
  }
  #top-bets.tier-conservative {
    --tier-accent:      var(--win);
    --tier-accent-edge: var(--win-edge);
    --tier-accent-soft: var(--win-soft);
    --tier-glow:        rgba(45,212,191,0.50);
    --tier-glow-soft:   rgba(45,212,191,0.32);
  }
  #top-bets.tier-aggressive {
    --tier-accent:      #FFB300;
    --tier-accent-edge: rgba(255,179,0,0.42);
    --tier-accent-soft: rgba(255,179,0,0.10);
    --tier-glow:        rgba(255,179,0,0.50);
    --tier-glow-soft:   rgba(255,179,0,0.32);
  }

  /* ---- Section starter: "▶ Top Value Bets" ---- */
  #top-bets .section-starter {
    padding: 36px 0 12px;
    display: flex; justify-content: space-between; align-items: baseline;
  }
  #top-bets .section-starter__t {
    font: 500 10px/1 var(--font-mono);
    letter-spacing: 0.10em; text-transform: uppercase;
    color: var(--text-3);
    display: flex; align-items: center; gap: 10px;
  }
  #top-bets .section-starter__icon {
    width: 14px; height: 14px; color: var(--text-3);
    display: grid; place-items: center;
  }
  #top-bets .section-starter__meta { font: 11px/1.4 var(--font-mono); color: var(--text-3); }

  /* ---- Tabs: Top Picks / All Bets ---- */
  #top-bets .tvb-tabs { padding: 0 0 18px; display: flex; gap: 10px; }
  #top-bets .tvb-tab {
    font: 500 11px/1 var(--font-mono);
    letter-spacing: 0.12em; text-transform: uppercase;
    padding: 9px 14px; border-radius: 6px;
    background: var(--surface); color: var(--text-2);
    border: 1px solid var(--border); cursor: pointer;
    transition: all 140ms ease-out;
  }
  #top-bets .tvb-tab:hover { color: var(--text); }
  #top-bets .tvb-tab.is-on {
    color: var(--ui);
    border-color: var(--ui-edge);
    background: var(--ui-soft);
  }

  /* ---- Filter chip + jump button ---- */
  #top-bets .filter-chip-bar {
    padding: 0 0 14px; display: flex; gap: 10px; align-items: center;
  }
  #top-bets .filter-chip-bar.hidden { display: none; }
  #top-bets .filter-chip {
    display: inline-flex; align-items: center; gap: 10px;
    padding: 7px 7px 7px 14px;
    background: var(--steel-soft);
    border: 1px solid var(--steel-edge);
    border-radius: 999px;
    font: 500 12px/1 var(--font-ui);
    color: var(--text-2); letter-spacing: -0.005em;
  }
  #top-bets .filter-chip__l {
    font: 500 9px/1 var(--font-mono);
    letter-spacing: 0.10em; text-transform: uppercase; color: var(--steel);
  }
  #top-bets .filter-chip__v { color: var(--text); font-weight: 500; }
  #top-bets .filter-chip__x {
    display: inline-grid; place-items: center;
    width: 22px; height: 22px; border-radius: 999px;
    background: rgba(168, 85, 247, 0.12);
    border: 0; color: var(--steel); cursor: pointer;
    transition: background 140ms ease-out;
  }
  #top-bets .filter-chip__x:hover { background: rgba(168, 85, 247, 0.22); }
  #top-bets .filter-icon-btn {
    display: inline-grid; place-items: center;
    width: 30px; height: 30px;
    background: var(--surface); border: 1px solid var(--border);
    border-radius: 8px; color: var(--text-2); cursor: pointer;
    transition: all 140ms ease-out;
  }
  #top-bets .filter-icon-btn:hover {
    color: var(--text); border-color: var(--border-2); background: var(--surface-2);
  }

  /* ---- Parlay bar (collapsed + expanded + muted) ----
     The Recommended Parlay is decoupled from the risk-tier selector: it
     is always purple. Pinning --tier-accent* for this subtree only means
     every parlay rule below keeps reading var(--tier-accent) unchanged,
     but it resolves to purple here regardless of the #top-bets.tier-*
     class. No per-rule colour edits / no tier-recolour code needed. */
  #top-bets .parlay-wrap {
    padding: 0; margin: 0 0 26px;
    --tier-accent:      var(--steel);
    --tier-accent-edge: var(--steel-edge);
    --tier-accent-soft: var(--steel-soft);
  }
  #top-bets .parlay {
    background: var(--surface); border: 1px solid var(--border);
    border-radius: 8px; overflow: hidden;
    transition: border-color 240ms cubic-bezier(0.2,0,0,1);
  }
  #top-bets .parlay--has-wash {
    border-color: var(--tier-accent-edge);
    background:
      linear-gradient(180deg, var(--tier-accent-soft), transparent 60%),
      var(--surface);
  }
  #top-bets .parlay__bar {
    display: grid;
    grid-template-columns: 1fr auto auto auto auto auto;
    align-items: center; gap: 28px; padding: 24px; cursor: pointer;
  }
  #top-bets .parlay__title-block { display: flex; flex-direction: column; gap: 4px; }
  #top-bets .parlay__title {
    font: 500 11px/1 var(--font-mono);
    letter-spacing: 0.14em; text-transform: uppercase; color: var(--tier-accent);
    display: flex; align-items: center; gap: 8px;
  }
  #top-bets .parlay__title-icon { color: var(--tier-accent); }
  #top-bets .parlay__sub { font: 11px/1.4 var(--font-mono); color: var(--text-3); }
  #top-bets .legcount {
    display: inline-flex; gap: 4px;
    background: var(--surface-2); border: 1px solid var(--border);
    border-radius: 6px; padding: 3px;
  }
  #top-bets .legcount__chip {
    font: 500 11px/1 var(--font-mono);
    width: 26px; height: 24px; display: grid; place-items: center;
    border-radius: 4px; color: var(--text-3);
    background: transparent; border: 0; cursor: pointer;
    transition: all 140ms ease-out;
  }
  #top-bets .legcount__chip:hover { color: var(--text); }
  #top-bets .legcount__chip.is-on {
    background: var(--surface-3); color: var(--tier-accent);
    box-shadow: inset 0 0 0 1px var(--tier-accent-edge);
  }
  #top-bets .legcount__chip:disabled { color: rgba(74, 74, 82, 0.5); cursor: not-allowed; }
  #top-bets .parlay-stat { display: flex; flex-direction: column; gap: 3px; min-width: 70px; }
  #top-bets .parlay-stat--right { text-align: right; }
  #top-bets .parlay-stat__n {
    font: 600 18px/1 var(--font-mono); color: var(--text);
    font-feature-settings: "tnum";
  }
  #top-bets .parlay-stat__n--ui     { color: var(--tier-accent); }
  #top-bets .parlay-stat__n--steel  { color: var(--text); }
  #top-bets .parlay-stat__n--accent { color: var(--tier-accent); }
  #top-bets .parlay-stat__n--big    { font-size: 26px; }
  #top-bets .parlay-stat__l {
    font: 500 9px/1 var(--font-mono);
    letter-spacing: 0.10em; text-transform: uppercase; color: var(--text-3);
  }
  #top-bets .parlay__chev {
    display: inline-grid; place-items: center;
    width: 28px; height: 28px; border-radius: 6px;
    color: var(--text-3); background: var(--surface-2);
    border: 1px solid var(--border);
    transition: transform 240ms cubic-bezier(0.2,0,0,1), color 140ms ease-out;
  }
  #top-bets .parlay.is-open .parlay__chev { transform: rotate(180deg); color: var(--text); }
  #top-bets .parlay__expanded {
    border-top: 1px solid var(--tier-accent-edge);
    padding: 22px 22px 20px;
    background: radial-gradient(ellipse 80% 70% at 50% 0%, var(--tier-accent-soft), transparent 65%);
  }
  #top-bets .legs-row { display: flex; align-items: center; gap: 0; flex-wrap: wrap; }
  #top-bets .leg-chip {
    flex: 1 1 0; min-width: 180px;
    background: var(--surface-2);
    border: 1px solid var(--tier-accent-edge);
    border-radius: 8px; padding: 14px 16px;
    display: flex; flex-direction: column; gap: 6px;
  }
  #top-bets .leg-chip__head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
  #top-bets .leg-chip__pick {
    font: 500 14px/1.25 var(--font-ui);
    letter-spacing: -0.01em; color: var(--text); text-wrap: balance;
  }
  #top-bets .leg-chip__pick--a { color: var(--side-a); font-weight: 600; }
  #top-bets .leg-chip__pick--b { color: var(--side-b); font-weight: 600; }
  #top-bets .leg-chip__odds {
    font: 600 16px var(--font-mono); color: var(--text);
    font-feature-settings: "tnum";
  }
  #top-bets .leg-chip__meta {
    font: 11px/1.3 var(--font-mono); color: var(--text-3);
    display: flex; align-items: center; gap: 6px;
  }
  #top-bets .leg-chip__arrow { color: var(--text-3); font-size: 10px; }
  #top-bets .leg-chip__type {
    font: 500 9px/1 var(--font-mono);
    letter-spacing: 0.10em; text-transform: uppercase; color: var(--text-3);
  }
  #top-bets .leg-x {
    width: 36px; height: 36px; display: grid; place-items: center;
    font: 300 24px/1 var(--font-mono);
    color: var(--tier-accent); opacity: 0.6; flex: 0 0 auto;
  }
  #top-bets .parlay__totals {
    margin-top: 18px;
    display: grid; grid-template-columns: repeat(5, 1fr); gap: 24px;
    padding: 16px 0 4px;
    border-top: 1px solid var(--tier-accent-edge);
  }
  #top-bets .parlay__footer {
    font: 11px/1.4 var(--font-mono); color: var(--text-3);
    margin-top: 10px; font-style: italic;
  }
  #top-bets .parlay__footer b { color: var(--text-2); font-style: normal; font-weight: 500; }
  #top-bets .parlay--muted .parlay__title      { color: var(--text-3); }
  #top-bets .parlay--muted .parlay__title-icon { color: var(--text-3); }
  #top-bets .parlay--muted .parlay__bar        { cursor: default; }
  #top-bets .parlay__muted-msg {
    font: 11px/1.4 var(--font-mono); color: var(--text-3); font-style: italic;
  }

  /* ---- Section break: "Top Value Bets · 8" ---- */
  #top-bets .section-break {
    display: flex; justify-content: space-between; align-items: baseline;
    border-top: 1px solid var(--border);
    margin: 24px 0 0; padding: 28px 0 14px;
  }
  #top-bets .section-break__t {
    font: 600 13px/1 var(--font-ui);
    letter-spacing: -0.01em; color: var(--text);
  }
  #top-bets .section-break__t .ct {
    font-family: var(--font-mono); color: var(--text-3);
    margin-left: 8px; font-weight: 500;
  }
  #top-bets .section-break__meta { font: 11px/1.4 var(--font-mono); color: var(--text-3); }

  /* ---- Strategy row: chips + bankroll + note ---- */
  #top-bets .strategy-row {
    display: flex; align-items: center; gap: 18px;
    padding: 6px 0 14px; flex-wrap: wrap;
  }
  #top-bets .strategy-row[hidden] { display: none; }
  #top-bets .strat-chips { display: inline-flex; gap: 8px; }
  #top-bets .strat-chip {
    font: 500 12px/1 var(--font-ui);
    letter-spacing: -0.005em; padding: 8px 14px; border-radius: 8px;
    background: var(--surface); border: 1px solid var(--border);
    color: var(--text-2); cursor: pointer;
    transition: all 140ms ease-out;
  }
  #top-bets .strat-chip:hover { color: var(--text); }
  /* Balanced (default) = cyan. */
  #top-bets .strat-chip.is-on {
    color: var(--ui);
    border-color: var(--ui-edge);
    background: var(--ui-soft);
  }
  /* Conservative = teal, Aggressive = amber — restores the intended
     per-tier identity that the generic chip styling had flattened. */
  #top-bets .strat-chip[data-tier="conservative"].is-on {
    color: var(--win); border-color: var(--win); background: var(--win-soft);
    box-shadow: inset 0 0 0 1px var(--win-edge);
  }
  #top-bets .strat-chip[data-tier="aggressive"].is-on {
    color: #FFB300; border-color: rgba(255,179,0,0.6); background: rgba(255,179,0,0.10);
    box-shadow: inset 0 0 0 1px rgba(255,179,0,0.42);
  }
  #top-bets .bankroll {
    display: inline-flex; align-items: center; gap: 12px;
    padding: 7px 12px 7px 14px;
    border-radius: 8px;
    background: var(--surface); border: 1px solid var(--border);
  }
  #top-bets .bankroll__l {
    font: 500 9px/1 var(--font-mono);
    letter-spacing: 0.10em; text-transform: uppercase; color: var(--text-3);
  }
  #top-bets .bankroll__c { font-family: var(--font-mono); color: var(--text-3); }
  #top-bets .bankroll input {
    background: transparent; border: 0; outline: 0;
    color: var(--text);
    font: 500 14px var(--font-mono);
    font-feature-settings: "tnum"; width: 70px;
  }
  #top-bets .bankroll input::-webkit-outer-spin-button,
  #top-bets .bankroll input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
  #top-bets .strategy-row__note {
    font: 11px/1.4 var(--font-mono);
    color: var(--text-3);
    text-align: right;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    margin: -6px 2px 12px;
  }
  #top-bets .strategy-row__note[hidden] { display: none; }

  /* ---- Summary row: 4 stat cells ---- */
  #top-bets .summary-row {
    display: grid;
    grid-template-columns: 110px 1fr 1.4fr 1fr;
    gap: 12px; padding: 0 0 22px;
  }
  #top-bets .summary-row[hidden] { display: none; }
  #top-bets .sm-cell {
    background: var(--surface); border: 1px solid var(--border);
    border-radius: 8px; padding: 16px 20px;
    display: flex; flex-direction: column; gap: 4px;
  }
  #top-bets .sm-cell--n { padding: 14px 18px; align-items: flex-start; }
  #top-bets .sm-cell--exp {
    border-color: var(--tier-accent-edge);
    background: linear-gradient(180deg, var(--tier-accent-soft), var(--surface) 70%);
  }
  #top-bets .sm-cell--worst {
    border-color: var(--loss-red-edge);
    background: linear-gradient(180deg, rgba(185, 28, 28, 0.04), var(--surface) 70%);
  }
  #top-bets .sm-cell__n {
    font: 600 28px/1 var(--font-mono);
    font-feature-settings: "tnum"; color: var(--text);
  }
  #top-bets .sm-cell__n--big  { font-size: 32px; }
  #top-bets .sm-cell__n--win    { color: var(--tier-accent); }
  #top-bets .sm-cell__n--accent { color: var(--tier-accent); }
  #top-bets .sm-cell__n--loss   { color: var(--loss-red); }
  #top-bets .sm-cell__l {
    font: 500 9px/1 var(--font-mono);
    letter-spacing: 0.10em; text-transform: uppercase; color: var(--text-3);
  }

  /* ---- Bet list + animated bet row ---- */
  #top-bets .bet-list { padding: 0; display: flex; flex-direction: column; gap: 10px; }
  #top-bets .bet-row {
    display: grid;
    grid-template-columns: 92px 1fr 150px 104px 116px;
    align-items: stretch; gap: 28px; padding: 20px 24px;
    border: 1px solid var(--border); border-radius: 8px;
    background: var(--surface);
    position: relative; cursor: pointer;
    transition:
      border-color 240ms cubic-bezier(0.2,0,0,1),
      background   240ms cubic-bezier(0.2,0,0,1),
      transform    240ms cubic-bezier(0.2,0,0,1),
      box-shadow   240ms cubic-bezier(0.2,0,0,1);
    overflow: hidden;
  }
  #top-bets .bet-row::before {
    content: ""; position: absolute; inset: 0;
    background: linear-gradient(90deg, rgba(14,165,233,0.06), transparent 30%);
    opacity: 0;
    transition: opacity 240ms cubic-bezier(0.2,0,0,1);
    pointer-events: none;
  }
  #top-bets .bet-row:hover {
    border-color: var(--border-2); background: var(--surface-2);
    transform: translateY(-1px);
    box-shadow: 0 6px 20px -10px rgba(0,0,0,0.5);
  }
  #top-bets .bet-row--value:hover::before { opacity: 1; }
  #top-bets .bet-row--value::after {
    content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
    background: var(--ui);
    box-shadow: 0 0 12px rgba(14,165,233,0.6);
    animation: edge-pulse 3.2s ease-in-out infinite;
  }
  @keyframes edge-pulse {
    0%, 100% { box-shadow: 0 0 8px  rgba(14,165,233,0.35); }
    50%      { box-shadow: 0 0 16px rgba(14,165,233,0.70); }
  }
  #top-bets .bet-row__lead { display: flex; flex-direction: column; gap: 10px; align-items: flex-start; }
  #top-bets .bet-row__rank {
    font: 500 10px/1 var(--font-mono);
    letter-spacing: 0.14em; color: var(--text-3);
    padding: 4px 6px; background: var(--surface-2); border-radius: 3px;
  }
  #top-bets .bet-row:hover .bet-row__rank { color: var(--text-2); }
  #top-bets .bet-row__stake-wrap { display: flex; flex-direction: column; gap: 4px; }
  #top-bets .bet-row__stake {
    font: 600 32px/1 var(--font-mono);
    font-feature-settings: "tnum"; color: var(--tier-accent);
    display: inline-flex; align-items: baseline;
    letter-spacing: -0.01em;
    transition: text-shadow 240ms cubic-bezier(0.2,0,0,1);
  }
  #top-bets .bet-row__stake-c { font-size: 16px; color: var(--tier-accent); opacity: 0.7; margin-right: 1px; }
  #top-bets .bet-row--value:hover .bet-row__stake { text-shadow: 0 0 12px var(--tier-glow); }
  #top-bets .bet-row__stake--neutral { color: var(--text-3); }
  #top-bets .bet-row__stake--neutral .bet-row__stake-c { color: var(--text-3); }
  #top-bets .bet-row__stake-l {
    font: 500 9px/1 var(--font-mono);
    letter-spacing: 0.10em; text-transform: uppercase; color: var(--text-3);
  }
  #top-bets .bet-row__main { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
  #top-bets .bet-row__title-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
  #top-bets .bet-row__title {
    font: 600 16px/1.2 var(--font-ui);
    letter-spacing: -0.01em; color: var(--text); text-wrap: balance;
  }
  #top-bets .bet-row__title--side-a { color: var(--side-a); }
  #top-bets .bet-row__title--side-b { color: var(--side-b); }
  #top-bets .bet-row__method {
    display: inline-flex; align-items: center; gap: 6px;
    font: 500 10px/1 var(--font-mono);
    letter-spacing: 0.12em; text-transform: uppercase;
    padding: 4px 8px; border-radius: 4px;
    background: var(--surface-3); color: var(--text-2);
  }
  #top-bets .bet-row__method-icon { display: inline-flex; color: var(--text-3); }
  #top-bets .bet-row__meta {
    display: flex; align-items: center; gap: 8px;
    font: 12px/1.3 var(--font-mono); color: var(--text-2); flex-wrap: wrap;
  }
  #top-bets .bet-row__meta-bout  { color: var(--text-2); }
  #top-bets .bet-row__meta-event { color: var(--steel); cursor: pointer; }
  #top-bets .bet-row__meta-event:hover { color: #C39BFE; }
  #top-bets .bet-row__sep { color: var(--text-3); }
  #top-bets .cmp { margin-top: 8px; display: flex; flex-direction: column; gap: 6px; }
  #top-bets .cmp__row {
    display: grid; grid-template-columns: 38px 1fr 42px;
    gap: 10px; align-items: center;
  }
  #top-bets .cmp__label {
    font: 500 9px/1 var(--font-mono);
    letter-spacing: 0.10em; text-transform: uppercase; color: var(--text-3);
  }
  #top-bets .cmp__row--model .cmp__label { color: var(--tier-accent); }
  #top-bets .cmp__track {
    position: relative; height: 8px;
    background: var(--surface-3); border-radius: 2px; overflow: visible;
  }
  #top-bets .cmp__fill {
    height: 100%; border-radius: 2px;
    transition: width 800ms cubic-bezier(0.2,0,0,1);
    position: relative;
  }
  #top-bets .cmp__fill--model {
    background: var(--tier-accent);
    box-shadow: 0 0 8px var(--tier-glow-soft);
  }
  #top-bets .cmp__fill--model.is-dim { background: var(--text-3); box-shadow: none; }
  #top-bets .cmp__fill--book  { background: var(--text-3); opacity: 0.55; }
  #top-bets .cmp__edge {
    position: absolute; top: -2px; bottom: -2px;
    background: repeating-linear-gradient(
      45deg,
      var(--tier-glow-soft) 0    4px,
      var(--tier-glow)      4px  8px
    );
    border-radius: 2px;
    border: 1px solid var(--tier-accent-edge);
    pointer-events: none;
    animation: edge-stripe 1.6s linear infinite;
  }
  @keyframes edge-stripe {
    0%   { background-position: 0    0; }
    100% { background-position: 22px 0; }
  }
  #top-bets .cmp__pct {
    font: 500 13px var(--font-mono);
    font-feature-settings: "tnum"; color: var(--text); text-align: right;
  }
  #top-bets .cmp__row--book .cmp__pct { color: var(--text-3); }
  #top-bets .bet-row__ev {
    display: flex; flex-direction: column; gap: 4px; justify-content: center;
    align-items: flex-end; padding: 4px 0 4px 18px;
    border-left: 1px solid var(--border);
  }
  #top-bets .bet-row__ev-n {
    font: 700 30px/1 var(--font-mono);
    font-feature-settings: "tnum"; color: var(--tier-accent);
    letter-spacing: -0.02em; display: inline-flex; align-items: baseline;
  }
  #top-bets .bet-row--value:hover .bet-row__ev-n { text-shadow: 0 0 14px var(--tier-glow); }
  #top-bets .bet-row__ev-pct { font-size: 16px; opacity: 0.75; margin-left: 1px; }
  #top-bets .bet-row__ev-l {
    font: 500 9px/1 var(--font-mono);
    letter-spacing: 0.10em; text-transform: uppercase; color: var(--text-3);
  }
  #top-bets .bet-row__ev-edge { font: 11px var(--font-mono); color: var(--tier-accent); margin-top: 2px; opacity: 0.7; }
  #top-bets .bet-row__ev--neutral .bet-row__ev-n { color: var(--text-3); }
  /* Odds + Win are each their own column, styled to match the EV column
     (border-left separator, big mono number, small uppercase label). */
  #top-bets .bet-row__oddc,
  #top-bets .bet-row__winc {
    display: flex; flex-direction: column; gap: 4px; justify-content: center;
    align-items: flex-end; padding: 4px 0 4px 18px;
    border-left: 1px solid var(--border);
  }
  #top-bets .bet-row__odds {
    font: 600 22px/1 var(--font-mono);
    font-feature-settings: "tnum"; color: var(--text);
    display: inline-flex; align-items: baseline;
  }
  #top-bets .bet-row__odds-x { font-size: 13px; color: var(--text-3); margin-left: 2px; }
  #top-bets .bet-row__win-n {
    font: 600 22px/1 var(--font-mono);
    font-feature-settings: "tnum"; color: var(--tier-accent);
    display: inline-flex; align-items: baseline;
  }
  #top-bets .bet-row--value:hover .bet-row__win-n { text-shadow: 0 0 12px var(--tier-glow); }
  #top-bets .bet-row__win-n--dim { color: var(--text-3); }
  #top-bets .bet-row__col-l {
    font: 500 9px/1 var(--font-mono);
    letter-spacing: 0.10em; text-transform: uppercase; color: var(--text-3);
  }
  #top-bets .bet-row__cta {
    position: absolute; right: 16px; bottom: 16px;
    display: inline-flex; align-items: center; gap: 6px;
    font: 500 11px/1 var(--font-mono);
    letter-spacing: 0.12em; text-transform: uppercase;
    padding: 7px 11px; border-radius: 999px;
    background: var(--ui); color: #051018; border: 0; cursor: pointer;
    opacity: 0; transform: translateX(8px);
    transition: opacity 240ms cubic-bezier(0.2,0,0,1),
                transform 240ms cubic-bezier(0.2,0,0,1);
    pointer-events: none;
  }
  #top-bets .bet-row:hover .bet-row__cta { opacity: 1; transform: translateX(0); pointer-events: auto; }
  #top-bets .bet-row__cta:hover { background: #38BDF8; }

  #top-bets .bp-empty {
    padding: 2.5rem 1.5rem; text-align: center;
    color: var(--text-3); font: 12px/1.5 var(--font-mono);
  }

  /* ---- Responsive ---- */
  @media (max-width: 860px) {
    #top-bets .bet-row {
      grid-template-columns: 64px 1fr;
      gap: 16px 18px;
    }
    #top-bets .bet-row__ev,
    #top-bets .bet-row__oddc,
    #top-bets .bet-row__winc {
      grid-column: 2 / -1; border-left: 0; padding: 0;
      flex-direction: row; align-items: baseline; gap: 10px;
    }
    #top-bets .summary-row { grid-template-columns: repeat(2, 1fr); }
    #top-bets .parlay__bar {
      grid-template-columns: 1fr auto; gap: 14px; row-gap: 12px;
    }
    #top-bets .parlay__totals { grid-template-columns: repeat(3, 1fr); gap: 16px; }
  }

  /* ════════════ FIGHTER PROFILE PAGE ════════════ */
  .fighter-page { max-width: 880px; margin: 0 auto; padding: 24px 22px 80px; }
  .fp-crumbs {
    font-size: 12px; color: var(--muted); margin-bottom: 18px;
    display: flex; align-items: center; gap: 7px;
  }
  .fp-crumbs a { color: var(--text-2); text-decoration: none; }
  .fp-crumbs a:hover { color: var(--accent); }

  .fp-hero {
    display: flex; align-items: center; gap: 22px;
    padding: 22px; margin-bottom: 16px;
    background: var(--surface); border: 1px solid var(--border-c);
    border-radius: 16px;
  }
  .fp-hero__avatar {
    position: relative; flex-shrink: 0;
    width: 116px; height: 116px; border-radius: 50%;
    overflow: hidden; background: var(--surface-2, #1a1a1d);
    border: 2px solid var(--border-c);
    box-shadow: 0 6px 22px rgba(0,0,0,0.45);
  }
  .fp-hero__avatar img { width: 100%; height: 100%; object-fit: cover; object-position: top center; }
  .fp-hero__initials {
    width: 100%; height: 100%; display: flex; align-items: center; justify-content: center;
    font-size: 38px; font-weight: 700; color: var(--text-2);
  }
  .fp-hero__name { font-size: 30px; font-weight: 700; line-height: 1.1; margin: 0 0 10px; }
  .fp-hero__chips { display: flex; flex-wrap: wrap; gap: 6px; }
  .fp-chip {
    font-size: 12px; font-weight: 500; color: var(--text-2);
    padding: 3px 10px; border-radius: 999px;
    background: rgba(255,255,255,0.05); border: 1px solid var(--border-c);
  }
  .fp-chip--record {
    color: var(--light); font-family: 'JetBrains Mono', monospace;
    font-variant-numeric: tabular-nums; letter-spacing: 0.02em;
  }
  .fp-hero__home {
    display: flex; align-items: center; gap: 6px;
    margin-top: 10px; font-size: 12.5px; color: var(--muted);
  }

  .fp-record {
    display: flex; align-items: center; gap: 20px;
    padding: 18px 22px; margin-bottom: 22px;
    background: linear-gradient(135deg, rgba(255,179,0,0.07), rgba(255,179,0,0.02));
    border: 1px solid rgba(255,179,0,0.22); border-radius: 14px;
  }
  .fp-record__big { text-align: center; flex-shrink: 0; }
  .fp-record__num {
    display: block; font-size: 38px; font-weight: 800; line-height: 1;
    color: var(--accent); font-variant-numeric: tabular-nums;
  }
  .fp-record__lbl {
    display: block; margin-top: 4px; font-size: 10px; letter-spacing: 0.12em;
    text-transform: uppercase; color: var(--text-2);
  }
  .fp-record__txt { margin: 0; font-size: 14px; line-height: 1.55; color: var(--text-2); }
  .fp-record__txt strong { color: var(--light); font-weight: 600; }

  .fp-section { margin-bottom: 26px; }
  .fp-section__title {
    font-size: 13px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase;
    color: var(--text-2); margin: 0 0 12px;
    display: flex; align-items: baseline; gap: 10px;
  }
  .fp-section__note { font-size: 11px; font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--muted); }

  .fp-next {
    display: flex; align-items: center; justify-content: space-between; gap: 16px;
    padding: 16px 20px; text-decoration: none; color: inherit;
    background: var(--surface); border: 1px solid var(--border-c); border-radius: 12px;
    transition: border-color 0.15s, background 0.15s;
  }
  .fp-next:hover { border-color: rgba(255,179,0,0.4); background: rgba(255,179,0,0.03); }
  .fp-next__vs { font-size: 16px; color: var(--light); }
  .fp-next__vs strong { font-weight: 700; }
  .fp-next__sub { font-size: 12.5px; color: var(--muted); margin-top: 3px; }
  .fp-next__prob { text-align: right; flex-shrink: 0; }
  .fp-next__prob-num { display: block; font-size: 24px; font-weight: 800; color: var(--accent); font-variant-numeric: tabular-nums; }
  .fp-next__prob-lbl { display: block; font-size: 9.5px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-2); }

  .fp-stats {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px;
  }
  .fp-stat {
    padding: 13px 15px; background: var(--surface); border: 1px solid var(--border-c);
    border-radius: 11px;
  }
  .fp-stat__val {
    font-size: 21px; font-weight: 700; color: var(--light);
    font-variant-numeric: tabular-nums; line-height: 1.1;
  }
  .fp-stat__lbl { font-size: 11px; color: var(--muted); margin-top: 4px; }

  .fp-history { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
  .fp-hist {
    display: flex; align-items: center; gap: 14px;
    padding: 12px 16px; background: var(--surface); border: 1px solid var(--border-c);
    border-radius: 11px;
  }
  .fp-hist__result {
    flex-shrink: 0; width: 30px; height: 30px; border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    font-weight: 800; font-size: 14px;
    background: rgba(148,163,184,0.12); color: var(--text-2);
  }
  .fp-hist--win .fp-hist__result { background: rgba(45,212,191,0.16); color: var(--win, #2dd4bf); }
  .fp-hist--loss .fp-hist__result { background: rgba(255,77,107,0.14); color: var(--loss, #ff4d6b); }
  .fp-hist__main { flex: 1; min-width: 0; }
  .fp-hist__opp { font-size: 14.5px; color: var(--light); }
  .fp-hist__opp a { color: var(--light); text-decoration: none; }
  .fp-hist__opp a:hover { color: var(--accent); text-decoration: underline; }
  .fp-hist__title-pill {
    margin-left: 6px; font-size: 9px; letter-spacing: 0.08em; text-transform: uppercase;
    color: #f4b443; background: rgba(244,180,67,0.12); border: 1px solid rgba(244,180,67,0.3);
    padding: 1px 6px; border-radius: 4px; vertical-align: middle;
  }
  .fp-hist__sub { font-size: 12px; color: var(--muted); margin-top: 3px; }
  .fp-hist__sub a { color: var(--text-2); text-decoration: none; }
  .fp-hist__sub a:hover { color: var(--accent); }
  .fp-hist__call {
    flex-shrink: 0; font-size: 11px; font-weight: 600; font-family: 'JetBrains Mono', monospace;
    letter-spacing: 0.02em; padding: 3px 9px; border-radius: 6px;
  }
  .fp-hist__call--ok { color: var(--win, #2dd4bf); background: rgba(45,212,191,0.12); border: 1px solid rgba(45,212,191,0.26); }
  .fp-hist__call--miss { color: var(--text-2); background: rgba(148,163,184,0.10); border: 1px solid rgba(148,163,184,0.2); }

  .fp-back { margin-top: 28px; }
  .fp-back a { color: var(--text-2); text-decoration: none; font-size: 13px; }
  .fp-back a:hover { color: var(--accent); }

  @media (max-width: 560px) {
    .fighter-page { padding: 16px 13px 60px; }
    .fp-hero { flex-direction: column; text-align: center; gap: 14px; padding: 18px; }
    .fp-hero__chips { justify-content: center; }
    .fp-hero__home { justify-content: center; }
    .fp-hero__avatar { width: 96px; height: 96px; }
    .fp-hero__name { font-size: 24px; }
    .fp-record { flex-direction: column; text-align: center; gap: 12px; }
    .fp-hist__call { display: none; }
  }
