
  * { box-sizing: border-box; margin: 0; padding: 0; }
  html { scroll-behavior: smooth; }
  html.mourning { filter: grayscale(1); }
  body { background: var(--bg); color: var(--text); font-family: var(--font-body); line-height: 1.5; transition: background .4s, color .4s; overflow-x: hidden; }
  a { color: inherit; text-decoration: none; }
  .wrap { max-width: 1180px; margin: 0 auto; padding: 0 24px; }
  ::selection { background: var(--accent); color: var(--bg); }
  :focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

  .demo-bar { background: #000; color: #cfcfcf; font-family: var(--font-body); font-size: 11.5px; display: flex; align-items: center; justify-content: center; gap: 16px; padding: 8px 16px; flex-wrap: wrap; }
  .demo-bar span.tag { color: #F2A93B; letter-spacing: 1px; }
  .demo-bar button { font-family: var(--font-body); font-size: 11px; background: #1c1c1c; color: #cfcfcf; border: 1px solid #3a3a3a; padding: 5px 10px; border-radius: 6px; cursor: pointer; }
  .demo-bar button.active { background: #F2A93B; color: #14100a; border-color: #F2A93B; }

  header { position: sticky; top: 0; z-index: 50; background: color-mix(in srgb, var(--bg) 88%, transparent); backdrop-filter: blur(10px); border-bottom: 1px solid var(--border); }
  .header-inner { display: flex; align-items: center; justify-content: space-between; padding: 16px 0; }
  .logo { font-family: var(--font-display); font-size: 24px; letter-spacing: 1px; display: flex; align-items: center; gap: 10px; }
  .logo-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 10px var(--accent); }
  nav { display: flex; align-items: center; gap: 28px; }
  .nav-links { display: flex; gap: 22px; font-size: 14.5px; font-weight: 500; color: var(--text-dim); }
  .nav-links a:hover, .nav-links a.current { color: var(--text); }
  .nav-links a.current { color: var(--accent); }
  .theme-toggle { display: flex; align-items: center; gap: 8px; background: var(--bg-elev); border: 1px solid var(--border); border-radius: 999px; padding: 6px 14px 6px 6px; cursor: pointer; font-family: var(--font-body); font-size: 12px; color: var(--text-dim); }
  .theme-toggle .bulb { width: 22px; height: 22px; border-radius: 50%; background: var(--accent); display: flex; align-items: center; justify-content: center; font-size: 12px; }
  .btn { font-family: var(--font-body); font-weight: 600; font-size: 14px; padding: 10px 18px; border-radius: 8px; cursor: pointer; border: 1px solid transparent; }
  .btn-ghost { background: transparent; border-color: var(--border); color: var(--text); }

  /* ---------- PAGE HEAD ---------- */
  .page-head { padding: 28px 0 20px; border-bottom: 1px solid var(--border); }
  .event-badge { display: inline-block; font-family: var(--font-body); font-size: 10.5px; letter-spacing: 1.5px; text-transform: uppercase; color: var(--accent); border: 1px solid var(--accent-dim); padding: 4px 10px; border-radius: 999px; margin-bottom: 10px; }
  .page-title { font-family: var(--font-display); font-size: clamp(28px, 4vw, 40px); letter-spacing: 0.3px; }
  .page-organizer { font-family: var(--font-body); font-size: 12px; color: var(--text-dim); margin: 0; line-height: 1.7; }
  .page-organizer-group { margin-top: 3px; margin-bottom: 0; }
  .status-pb-d { background: #1a3a5c; color: #6bb8f5; border-color: #2a5080; }
  .status-pb-n { background: #3a0a0a; color: #f56b6b; border-color: #7a1a1a; }
  .status-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 16px; flex-wrap: wrap; }
  .live-pill { display: inline-flex; align-items: center; gap: 7px; font-family: var(--font-body); font-size: 12px; letter-spacing: 1px; color: var(--blaze); font-weight: 600; }
  .live-pill .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--blaze); animation: pulse 1.6s ease-in-out infinite; }
  .finished-pill { color: var(--moss); }
  .finished-pill .dot { background: var(--moss); animation: none; }
  @keyframes pulse { 0%,100%{opacity:1} 50%{opacity:.25} }
  .updated-at { font-family: var(--font-body); font-size: 12px; color: var(--text-dim); }

  .tabs { display: flex; gap: 4px; margin-top: 20px; border-bottom: 1px solid var(--border); overflow-x: auto; }
  .tab { font-family: var(--font-body); font-size: 12.5px; letter-spacing: 1px; text-transform: uppercase; padding: 12px 16px; color: var(--text-dim); white-space: nowrap; border-bottom: 2px solid transparent; cursor: pointer; }
  .tab.active { color: var(--accent); border-bottom-color: var(--accent); font-weight: 600; }
  .tab.disabled { opacity: 0.4; cursor: default; }

  .section { padding: 34px 0; }
  .section-label { font-family: var(--font-body); font-size: 11.5px; letter-spacing: 1.5px; text-transform: uppercase; color: var(--moss); margin-bottom: 14px; }

  /* ---------- WINNER BANNER ---------- */
  .winner-banner { display: flex; align-items: stretch; background: var(--bg-elev); border: 2px solid var(--moss); border-radius: 18px; overflow: hidden; margin-bottom: 28px; }
  .winner-avatar { width: 200px; flex-shrink: 0; background: var(--moss); display: flex; align-items: center; justify-content: center; font-family: var(--font-display); font-size: 104px; letter-spacing: 1px; color: var(--bg-elev-2); }
  [data-theme="day"] .winner-avatar { color: #F3F7EF; }
  .winner-content { flex: 1; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 26px 32px; flex-wrap: wrap; }
  .winner-main { min-width: 240px; }
  .winner-fullname { font-family: var(--font-display); font-size: clamp(57px, 7.8vw, 87px); letter-spacing: 0.5px; line-height: 0.95; text-transform: uppercase; }
  .winner-fullname .surname { color: var(--text); }
  .winner-country { margin-top: 12px; font-size: 32px; font-weight: 700; display: flex; align-items: center; gap: 10px; color: var(--text-dim); }
  .winner-country img { height: .85em; width: auto; border-radius: 3px; flex-shrink: 0; display: inline-block !important; }
  .winner-country svg { height: 1em; width: auto; border-radius: 2px; flex-shrink: 0; }
  .winner-side { text-align: right; flex-shrink: 0; }
  .winner-status-label { font-family: var(--font-display); font-size: 26px; letter-spacing: 2px; color: var(--moss); }
  .winner-laps-num { font-family: var(--font-display); font-size: clamp(70px, 9vw, 128px); line-height: 0.9; color: var(--moss); margin-top: 2px; }
  .winner-laps-label { font-family: var(--font-body); font-size: 12px; color: var(--text-dim); letter-spacing: 1.5px; }
  @media (max-width: 640px) and (orientation: portrait) {
    .winner-banner { flex-direction: column; }
    .winner-avatar { width: 130px; height: 130px; margin: 24px auto 0; border-radius: 14px; font-size: 40px; }
    .winner-content { flex-direction: column; align-items: center; text-align: center; }
    .winner-country { justify-content: center; }
    .winner-side { text-align: center; }
  }

  /* ---------- STAT CARDS ---------- */
  .stat-grid { display: grid; grid-template-columns: repeat(4, minmax(min-content, 1fr)); gap: 12px; }
  .stat-grid.cols-3 { grid-template-columns: repeat(3, minmax(min-content, 1fr)); }
  .stat-card { background: var(--bg-elev); border: 1px solid var(--border); border-radius: 14px; padding: 10px 16px; }
  .stat-label { font-family: var(--font-body); font-size: 10.5px; letter-spacing: 1px; text-transform: uppercase; color: var(--text-dim); margin-bottom: 4px; }
  .stat-value { font-family: var(--font-display); font-size: 42px; line-height: 1; color: var(--accent); white-space: nowrap; }
  .stat-value .unit { font-family: var(--font-body); font-size: 15px; font-weight: 600; color: var(--text-dim); margin-left: 4px; }
  .stat-sub { font-family: var(--font-body); font-size: 11px; color: var(--text-dim); margin-top: 3px; }

  .record-grid { display: grid; grid-template-columns: repeat(4, minmax(min-content, 1fr)); gap: 12px; }
  .record-grid.cols-3 { grid-template-columns: repeat(3, minmax(min-content, 1fr)); }
  .record-card { background: var(--bg-elev); border: 1px solid var(--border); border-radius: 14px; padding: 10px 14px; }
  .record-label { font-family: var(--font-body); font-size: 10px; letter-spacing: 1px; text-transform: uppercase; color: var(--text-dim); margin-bottom: 4px; }
  .record-value { font-family: var(--font-display); font-size: 36px; line-height: 1; white-space: nowrap; }
  .record-value.c-moss { color: var(--moss); }
  .record-value.c-blaze { color: var(--blaze); }
  .record-value.c-accent { color: var(--accent); }
  .record-name { font-size: 13px; font-weight: 600; margin-top: 4px; }
  .record-context { font-family: var(--font-body); font-size: 10.5px; color: var(--text-dim); margin-top: 2px; }

  /* ---------- DNF CHART ---------- */
  .chart-card { background: var(--bg-elev); border: 1px solid var(--border); border-radius: 14px; padding: 22px; position: relative; }
  .chart-legend { display: flex; gap: 18px; font-family: var(--font-body); font-size: 11.5px; color: var(--text-dim); margin-bottom: 14px; }
  .chart-legend span { display: inline-flex; align-items: center; gap: 6px; }
  .legend-dot { width: 9px; height: 9px; border-radius: 2px; }
  .chart-scroll { overflow-x: auto; position: relative; }
  .chart-scroll svg { display: block; width: 100%; height: auto; }
  .chart-tooltip {
    position: absolute; pointer-events: none; background: var(--bg-elev-2); border: 1px solid var(--border);
    border-radius: 8px; padding: 8px 12px; font-family: var(--font-body); font-size: 11.5px; color: var(--text);
    box-shadow: 0 8px 24px rgba(0,0,0,0.35); white-space: nowrap; z-index: 10; opacity: 0; transition: opacity .1s;
  }
  .chart-tooltip.visible { opacity: 1; }
  .chart-tooltip .tt-title { font-weight: 700; color: var(--accent); margin-bottom: 3px; }

  /* ---------- BIB GRID ---------- */
  .bib-subhead { font-family: var(--font-body); font-size: 11px; letter-spacing: 1px; text-transform: uppercase; color: var(--text-dim); margin: 22px 0 10px; }
  .bib-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 10px; }
  .bib-tile { position: relative; background: var(--bg-elev); border: 1px solid var(--border); border-radius: 10px; padding: 14px 8px 12px; text-align: center; overflow: hidden; }
  .bib-tile.active { border-color: var(--moss); }
  .bib-tile.bib-tile-winner { background: #BFF29E; border: 2px solid #1D7A3E; color: #14200C; }
  [data-theme="day"] .bib-tile.bib-tile-winner { background: #9FE07A; }
  .bib-tile.bib-tile-winner .bib-name { color: #1D4020; }
  .bib-num { font-family: var(--font-display); font-size: 42px; line-height: 1; position: relative; z-index: 1; }
  .bib-name { font-family: var(--font-body); font-size: 10px; color: var(--text-dim); margin-top: 5px; letter-spacing: 0.3px; line-height: 1.35; position: relative; z-index: 3; white-space: normal; overflow-wrap: anywhere; word-break: break-word; }
  .bib-tile.eliminated { border-color: color-mix(in srgb, var(--blaze) 35%, var(--border)); }
  .bib-tile.eliminated .bib-num { color: var(--text); }
  .bib-tile.eliminated .bib-name { color: var(--text-dim); }
  .bib-stamp-svg {
    position: absolute; inset: 0; width: 100%; height: 100%; z-index: 2; pointer-events: none;
  }
  .bib-tile.dns { opacity: 0.5; }

  .status-legend { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 18px; }
  .status-legend-item { display: flex; align-items: center; gap: 10px; background: var(--bg-elev); border: 1px solid var(--border); border-radius: 10px; padding: 8px 12px; font-size: 12.5px; color: var(--text-dim); }
  .status-legend-pb { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 8px; }
  .status-pill { font-family: var(--font-body); font-size: 10.5px; font-weight: 700; padding: 3px 9px; border-radius: 5px; flex-shrink: 0; }
  .status-pill-name { font-size: clamp(26px, 3.4vw, 36px); line-height: 1; padding: .1em .35em; border-radius: .2em; vertical-align: middle; }
  .status-run { background: var(--status-run-bg); color: var(--status-run-text); }
  .status-over { background: var(--status-over-bg); color: var(--status-over-text); }
  .status-rtc { background: var(--status-rtc-bg); color: var(--status-rtc-text); }
  .status-dnc { background: var(--status-dnc-bg); color: var(--status-dnc-text); }
  .status-dns { background: #424242; color: #ccc; }
  .status-dq  { background: #6A1A1A; color: #f88; }
  .status-winner { background: var(--status-run-bg); color: var(--status-run-text); }
  .status-pb-d { background: #fff; color: #1565C0; border: 1.5px solid #64B5F6; font-size: 9.5px; padding: 1px 6px; vertical-align: middle; }
  .status-pb-n { background: #fff; color: #C62828; border: 1.5px solid #C62828; font-size: 9.5px; padding: 1px 6px; vertical-align: middle; }
  .runner-card-status-desc { font-size: 12px; color: var(--text-dim); margin-top: 5px; margin-bottom: 2px; }

  /* ---------- WEATHER ---------- */
  .weather-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; flex-wrap: wrap; gap: 8px; }
  .weather-loc { font-family: var(--font-body); font-size: 11.5px; color: var(--text-dim); }
  .weather-loc-region { font-weight: 400; opacity: 0.7; }
  .weather-demo-badge { font-family: var(--font-body); font-size: 10px; font-weight: 700; color: var(--blaze); background: color-mix(in srgb, var(--blaze) 15%, transparent); padding: 2px 8px; border-radius: 999px; margin-left: 8px; }

  footer { padding: 40px 0; border-top: 1px solid var(--border); text-align: center; font-family: var(--font-body); font-size: 12px; color: var(--text-dim); }

  /* ---------- WYNIKI: TOOLBAR / FILTRY ---------- */
  .results-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 14px; flex-wrap: wrap; }
  .filter-pills { display: flex; gap: 8px; flex-wrap: wrap; }
  .filter-pill {
    font-family: var(--font-body); font-size: 12px; font-weight: 600; letter-spacing: 0.5px;
    background: var(--bg-elev); border: 1px solid var(--border); color: var(--text-dim);
    padding: 8px 14px; border-radius: 999px; cursor: pointer; display: flex; align-items: center; gap: 7px;
  }
  .filter-pill .count { background: var(--border); color: var(--text-dim); border-radius: 999px; padding: 1px 7px; font-size: 10.5px; }
  .filter-pill.active { background: var(--accent); border-color: var(--accent); color: #17120a; }
  .filter-pill.active .count { background: rgba(0,0,0,0.18); color: #17120a; }

  /* ---------- WYNIKI: SZUKAJ ---------- */
  .results-search-bar { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; }
  .results-search-label { font-family: var(--font-body); font-size: 11px; font-weight: 600; letter-spacing: 1px; text-transform: uppercase; color: var(--text-dim); white-space: nowrap; }
  .results-search-input {
    font-family: var(--font-body); font-size: 13px; background: var(--bg-elev);
    color: var(--text); border: 1px solid var(--border); border-radius: 8px;
    padding: 9px 14px; outline: none; min-width: 240px; flex: 1; max-width: 380px; transition: border-color .15s;
    -webkit-appearance: none; appearance: none;
    background-color: var(--bg-elev); -webkit-text-fill-color: var(--text);
  }
  .results-search-input:focus { border-color: var(--accent); }
  .results-search-input::placeholder { color: var(--text-dim); opacity: 1; }
  .results-search-input:-webkit-autofill,
  .results-search-input:-webkit-autofill:hover,
  .results-search-input:-webkit-autofill:focus {
    -webkit-box-shadow: 0 0 0 1000px var(--bg-elev) inset;
    -webkit-text-fill-color: var(--text);
    border-color: var(--border);
    transition: background-color 5000s ease-in-out 0s;
  }
  @media (max-width: 600px) {
    .results-search-bar { gap: 8px; }
    .results-search-input { min-width: 0; max-width: none; width: 100%; }
  }

  /* ---------- WYNIKI: TABELA (desktop/tablet) ---------- */
  .results-table-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: 14px; }
  .results-table { width: 100%; border-collapse: collapse; font-size: 13.5px; min-width: 760px; font-family: var(--font-body); font-variant-numeric: tabular-nums; }
  /* Pkt 15b: ukryj mniej ważne kolumny na wąskich ekranach */
  @media (max-width: 600px) {
    .results-table { min-width: 480px; font-size: 13px; }
    /* Dystans (7), Śr. prędkość (9), Min/Max (11) — col-nth */
    .results-table th:nth-child(4),  /* PB */
    .results-table td:nth-child(4),
    .results-table th:nth-child(7),  /* Dystans */
    .results-table td:nth-child(7),
    .results-table th:nth-child(9),  /* Śr. prędkość */
    .results-table td:nth-child(9),
    .results-table th:nth-child(11), /* Min/Max */
    .results-table td:nth-child(11) { display: none; }
  }
  @media (max-width: 420px) {
    .results-table th:nth-child(8), /* Czas biegu */
    .results-table td:nth-child(8) { display: none; }
  }
  .results-table th {
    text-align: left; font-size: 10.5px; letter-spacing: 1px; text-transform: uppercase;
    color: var(--text-dim); padding: 8px 8px; background: var(--bg-elev); border-bottom: 1px solid var(--border); font-weight: 500;
    white-space: nowrap;
  }
  .results-table td { padding: 8px 8px; border-bottom: 1px solid var(--border); background: var(--bg-elev-2); vertical-align: middle; color: var(--text); white-space: nowrap; }
  .results-table tbody tr:last-child td { border-bottom: none; }
  .results-table tbody tr:hover td { background: color-mix(in srgb, var(--accent) 22%, var(--bg-elev-2)); cursor: pointer; }
  .results-table tbody tr:hover td:first-child { box-shadow: inset 3px 0 0 var(--accent); }
  .results-table tr.row-run:hover td { background: color-mix(in srgb, var(--accent) 22%, color-mix(in srgb, var(--status-run-bg) 8%, var(--bg-elev-2))); }
  .results-table tr.row-winner:hover td { background: color-mix(in srgb, var(--accent) 22%, color-mix(in srgb, var(--status-run-bg) 18%, var(--bg-elev-2))); }
  .results-table tr.row-run td { background: color-mix(in srgb, var(--status-run-bg) 8%, var(--bg-elev-2)); }
  .results-table tr.row-winner td { background: color-mix(in srgb, var(--status-run-bg) 18%, var(--bg-elev-2)); }
  .pos-cell { font-weight: 700; }
  .pos-cell.pos-top { color: var(--moss); }
  .nr-cell { color: var(--text-dim); }
  .name-cell { font-weight: 700; text-transform: uppercase; letter-spacing: 0.3px; }
  .name-cell.dnf-name { color: var(--text-dim); font-weight: 600; }
  .gender-cell { color: var(--text-dim); }
  .mono-cell { color: var(--text-dim); }
  .lastlap-cell { font-weight: 600; color: var(--text); }
  .status-badge {
    font-family: var(--font-body); font-size: 10px; font-weight: 700; padding: 4px 8px; border-radius: 6px; letter-spacing: 0.5px; display: inline-block;
  }
  .status-badge.dnf { background: var(--blaze); color: #FBEFE9; }
  .status-badge.winner { background: #BFF29E; color: #16210A; font-size: 13.5px; font-weight: 800; padding: 6px 14px; letter-spacing: 1px; }
  [data-theme="day"] .status-badge.winner { background: #9FE07A; color: #14200C; }
  .status-badge.run { background: var(--status-run-bg); color: var(--status-run-text); }
  .type-badge { font-family: var(--font-body); font-size: 10px; font-weight: 700; padding: 3px 7px; border-radius: 5px; }
  .type-badge.RTC { background: var(--status-rtc-bg); color: var(--status-rtc-text); }
  .type-badge.DNC { background: var(--status-dnc-bg); color: var(--status-dnc-text); }
  .type-badge.OVER { background: var(--status-over-bg); color: var(--status-over-text); }
  .status-typ-cell { width: 1%; white-space: nowrap; }
  .status-combo { display: flex; align-items: center; gap: 5px; }

  /* ---------- WYNIKI: KARTY (mobile) ---------- */
  .results-cards { display: none; flex-direction: column; gap: 10px; font-family: var(--font-body); font-variant-numeric: tabular-nums; }
  .result-card { background: var(--bg-elev-2); border: 1px solid var(--border); border-radius: 12px; padding: 14px 16px; cursor: pointer; transition: background .12s; }
  .result-card:hover { background: color-mix(in srgb, var(--accent) 18%, var(--bg-elev-2)); border-color: var(--accent); }
  .result-card.row-run { background: color-mix(in srgb, var(--status-run-bg) 8%, var(--bg-elev-2)); }
  .result-card.row-winner { background: color-mix(in srgb, var(--status-run-bg) 18%, var(--bg-elev-2)); border-color: var(--moss); }
  .rc-top { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 10px; }
  .rc-pos { font-weight: 700; font-size: 13px; color: var(--text-dim); }
  .rc-name { font-weight: 700; font-size: 15px; flex: 1; margin: 0 10px; text-transform: uppercase; letter-spacing: 0.3px; }
  .rc-name.dnf-name { color: var(--text-dim); font-weight: 600; }
  .rc-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; font-size: 11.5px; }
  .rc-grid div span { display: block; color: var(--text-dim); font-size: 9.5px; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; }
  .rc-badges { display: flex; gap: 6px; margin-top: 10px; }

  .results-empty { text-align: center; padding: 40px; color: var(--text-dim); font-family: var(--font-body); font-size: 13px; }

  @media (max-width: 820px) {
    .results-table-wrap { display: none; }
    .results-cards { display: flex; }
  }

  /* ---------- WYNIKI ZAWODNIKÓW ---------- */
  .runner-select-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; background: var(--bg-elev); border: 1px solid var(--border); border-radius: 14px; padding: 18px 24px; }
  .runner-select-eyebrow { font-size: 11px; font-weight: 500; letter-spacing: 1.5px; color: var(--text-dim); text-transform: uppercase; }
  .runner-select {
    font-family: var(--font-body); font-size: 13px; font-weight: 600; background: var(--bg-elev);
    color: var(--text); border: 1px solid var(--border); border-radius: 8px; padding: 9px 12px; cursor: pointer;
    min-width: 220px; text-transform: uppercase; flex-shrink: 0;
    -webkit-appearance: none; appearance: none;
  }
  .runner-card { background: var(--bg-elev); border: 1px solid var(--border); border-radius: 14px; overflow: hidden; }
  .runner-card-top { display: flex; justify-content: space-between; align-items: stretch; gap: 16px; padding: 16px 28px; flex-wrap: wrap; }
  .runner-card-name { font-family: var(--font-display); font-size: clamp(26px, 3.2vw, 38px); letter-spacing: 0.4px; text-transform: uppercase; display:flex; align-items:center; gap:.5em; flex-wrap:wrap; line-height: 1; }
  .rc-bib { font-size: 1em; font-weight: 700; color: var(--text); font-family: var(--font-display); font-variant-numeric: tabular-nums; }
  .rc-name-text { font-weight: 700; }
  .rc-country-name { font-size: 0.7em; font-weight: 600; color: var(--text-dim); font-family: var(--font-body); letter-spacing: 0.3px; line-height: 1; text-transform: none; }
  .runner-card-pb { display: flex; align-items: center; gap: 0.4em; margin-top: 8px; }
  .rc-pb { display: inline-flex; align-items: center; gap: 0.25em; font-size: 22px; font-weight: 400; font-family: var(--font-body); text-transform: none; letter-spacing: 0; color: var(--text-dim); }
  .rc-pb-old { color: var(--text-dim); white-space: nowrap; }
  .rc-pb-val { font-weight: 700; color: var(--text); white-space: nowrap; }
  .rc-pb-pill { font-size: 18px !important; padding: 0.2em 0.5em !important; border-radius: 0.35em !important; line-height: 1 !important; vertical-align: middle; }
  .rc-status { font-size: clamp(11px, 1.1vw, 14px) !important; padding: 0.25em 0.65em !important; border-radius: 0.4em !important; line-height: 1 !important; cursor: default; }
  .runner-card-name .country-flag { height: 1.3em; width: auto; vertical-align: middle; }
  .runner-card-team { font-family: var(--font-body); font-size: 22px; font-weight: 700; color: var(--text); margin-top: 8px; letter-spacing: 0.2px; }
  .rc-team-label { font-weight: 400; color: var(--text-dim); font-size: 0.82em; }
  .runner-card-status-badge { text-align: right; }
  .runner-card-laps { flex-shrink: 0; display: flex; flex-direction: column; align-items: flex-end; justify-content: center; gap: 10px; padding-left: 16px; }
  .runner-card-laps-num { font-family: var(--font-display); font-size: clamp(70px, 9vw, 128px); line-height: 0.9; letter-spacing: -1px; color: var(--text); }
  .runner-card-laps-label { font-family: var(--font-body); font-size: 12px; color: var(--text-dim); text-align: right; }
  .country-flag { height:.85em; width:auto; vertical-align:middle; border-radius:2px; display:inline-block !important; flex-shrink:0; }
  .runner-card-meta { font-family: var(--font-body); font-size: 12px; color: var(--text-dim); margin-top: 4px; }

  .stat-grid.cols-3 { grid-template-columns: repeat(3, minmax(min-content, 1fr)); }
  .record-grid.cols-3 { grid-template-columns: repeat(3, minmax(min-content, 1fr)); }

  /* Runner heat strip */
  .runner-heat-outer { overflow: visible; }
  .runner-heat-lap-labels { display: flex; flex-wrap: nowrap; gap: 3px; padding-bottom: 3px; pointer-events: none; }
  .runner-heat-lap-label { flex: 1 1 0; min-width: 4px; font-family: var(--font-body); font-size: 8px; color: var(--text-dim); text-align: center; overflow: visible; white-space: nowrap; }
  .runner-heat-strip { display: flex; flex-wrap: nowrap; gap: 3px; width: 100%; }
  .runner-heat-tile { flex: 1 1 0; min-width: 4px; height: 26px; border-radius: 3px; }
  .runner-heat-tile-empty { background: var(--border) !important; opacity: 0.35; pointer-events: none; }
  .runner-heat-end-marker { flex: none; width: 3px; height: 26px; border-radius: 2px; opacity: 0.9; pointer-events: none; }
  .runner-heat-end-label { flex: none; width: 3px; }

  /* Mobile: kafelki flex z min-width — wypełniają całą szerokość, scroll tylko gdy ich jest za dużo */
  @media (max-width: 700px) {
    .runner-heat-outer { overflow: hidden; }
    .runner-heat-lap-labels { overflow-x: auto; scrollbar-width: none; gap: 2px; }
    .runner-heat-lap-labels::-webkit-scrollbar { display: none; }
    .runner-heat-lap-label { flex: 1 1 0; flex-shrink: 1; min-width: 6px; width: auto; }
    .runner-heat-strip { overflow-x: auto; padding-bottom: 10px; scrollbar-width: thin; gap: 2px; }
    .runner-heat-tile { flex: 1 1 0; flex-shrink: 1; min-width: 8px; width: auto; }
    .runner-heat-end-label { flex: none; width: 3px; }
    .runner-heat-end-marker { flex: none; width: 3px; }
  }

  .runner-lap-cards { display: none; flex-direction: column; gap: 8px; font-family: var(--font-body); font-variant-numeric: tabular-nums; }
  .lap-card { background: var(--bg-elev-2); border: 1px solid var(--border); border-radius: 10px; padding: 10px 14px; display: flex; flex-direction: column; gap: 5px; font-size: 12px; }
  .lc-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
  .lap-card .lc-num { font-weight: 700; min-width: 28px; }
  .lap-card .lc-time { font-weight: 700; }
  .lap-card .lc-pace { color: var(--text-dim); font-size: 11px; }
  .lap-card .lc-margin { color: var(--moss); font-weight: 600; font-size: 11px; }
  .lap-card .lc-dist { color: var(--text-dim); font-size: 11px; }
  .lap-card .lc-trend.up { color: var(--blaze); }
  .lap-card .lc-trend.down { color: var(--moss); }
  .trend-up { color: var(--blaze); }
  .trend-down { color: var(--moss); }
  .margin-cell { color: var(--moss); font-weight: 600; }

  @media (max-width: 820px) {
    .runner-lap-cards { display: flex; }
  }

  /* ---------- HEATMAPA (wszyscy zawodnicy) ---------- */
  .heat-scale-wrap { display: flex; flex-direction: column; gap: 6px; width: max-content; max-width: 100%; }
  .heat-scale-row { display: flex; align-items: center; gap: 10px; font-family: var(--font-body); font-size: 12px; color: var(--text-dim); }
  .heat-scale-bar-wrap { flex: 1; display: flex; flex-direction: column; gap: 5px; min-width: 0; }
  .heat-scale-bar { height: 10px; border-radius: 5px; background: linear-gradient(90deg, hsl(140,45%,63%), hsl(90,60%,52%), hsl(40,72%,43%), hsl(0,85%,33%)); }
  .heat-scale-times { display: flex; justify-content: space-between; font-family: var(--font-body); font-size: 12px; font-weight: 600; color: var(--text); }
  /* Separator RUN / wyeliminowani — statyczna tabela Django (przed pierwszym pollem JS) */
  #resultsTableBody tr.status-run + tr:not(.status-run):not(.status-winner) td { border-top: 3px solid color-mix(in srgb, var(--text) 18%, var(--border)); }
  /* Separator w JS-owym widoku tabeli — wiersz z kolorowym tłem zamiast div */
  .run-divider-row { background: color-mix(in srgb, var(--text) 18%, var(--border)); }
  .run-divider-row td { padding: 0 !important; height: 2px !important; border: none !important; background: inherit; }
  .run-divider-row:hover td { background: inherit !important; }
  /* Separator w kartach mobilnych */
  .run-divider-card { height: 2px; background: color-mix(in srgb, var(--text) 18%, var(--border)); margin: 6px 0; border-radius: 1px; }
  .heat-run-separator { grid-column: 1 / -1; height: 6px; }
  .heat-scale-note { font-family: var(--font-body); font-size: 11px; color: var(--text-dim); white-space: nowrap; }

  /* Heatmapa — desktop: kafle rozciągają się do prawej krawędzi karty */
  .heatmap-scroll-outer { overflow: hidden; }
  .heatmap-scroll-inner { overflow-x: auto; padding-bottom: 8px; }
  .heatmap-grid { display: flex; flex-direction: column; gap: 3px; width: 100%; }
  /* gap: 1px — jedyny mechanizm odstępów między kafelkami; brak margin na .heat-cell */
  .heat-row { display: flex; align-items: center; gap: 1px; width: 100%; }
  .heat-row-header { display: flex; align-items: center; gap: 1px; margin-bottom: 4px; width: 100%; }
  .heat-name {
    width: var(--heat-name-w, 180px); flex-shrink: 0; background: var(--bg-elev);
    font-family: var(--font-body); font-size: 10.5px; font-weight: 700; text-transform: uppercase;
    padding-right: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    position: sticky; left: 0; z-index: 2;
    align-self: stretch; display: flex; align-items: center;
  }
  .heat-name-spacer { width: var(--heat-name-w, 180px); flex-shrink: 0; position: sticky; left: 0; z-index: 2; background: var(--bg-elev); }
  /* Desktop: kafle elastyczne — wypełniają całą szerokość; bez margin (gap na wierszu) */
  .heat-col-label { flex: 1 1 0; min-width: 8px; font-family: var(--font-body); font-size: 8.5px; color: var(--text-dim); text-align: center; overflow: visible; }
  .heat-cell { flex: 1 1 0; min-width: 8px; height: 18px; border-radius: 2px; }
  .heat-cell-empty { flex: 1 1 0; min-width: 8px; height: 18px; }
  /* Mobile: stała szerokość → grid szerszy niż ekran → scroll; gap:1px zachowany */
  @media (max-width: 700px) {
    .heatmap-grid { width: auto; min-width: max-content; }
    .heat-row, .heat-row-header { width: auto; }
    .heat-col-label { flex: none; width: 8px; }
    .heat-cell { flex: none; width: 8px; }
    .heat-cell-empty { flex: none; width: 8px; }
  }

  @media (max-width: 700px) {
    .heat-scale-wrap { display: flex; width: 100%; }
    .heat-scale-note { white-space: normal; }
    .heat-scale-row { gap: 6px; }
    .heat-name { font-size: 9px; }
    .heat-row { align-items: stretch; }
    .heat-cell { height: auto; min-height: 22px; }
    .heat-cell-empty { height: auto; min-height: 22px; }
  }

  /* Znacznik płci przy zawodniku (pkt 15a) */
  .gender-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; vertical-align: middle; margin-right: 3px; flex-shrink: 0; }
  .gender-dot-m { background: #4A90D9; }
  .gender-dot-f { background: #C47ACC; }

  @media (max-width: 760px) {
    .nav-links { display: none; }
    .stat-grid, .stat-grid.cols-3, .record-grid, .record-grid.cols-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .stat-card, .record-card { min-width: 0; overflow: hidden; }
    .stat-value { font-size: clamp(20px, 5.5vw, 42px); }
    .record-value { font-size: clamp(20px, 5vw, 36px); }
    .stat-sub { font-size: 10px; }
    .bib-grid { grid-template-columns: repeat(auto-fill, minmax(82px, 1fr)); }
  }
  @media (max-width: 760px) and (orientation: portrait) {
    .winner-banner { flex-direction: column; }
    .winner-avatar { width: 100%; height: 90px; font-size: 40px; }
    .winner-content { flex-direction: column; align-items: center; text-align: center; }
    .winner-country { justify-content: center; }
    .winner-side { text-align: center; }
  }

  /* ---------- ZAKŁADKA NA ŻYWO: baner zwycięzcy, rekordy ---------- */
  .winner-banner { display: flex; align-items: stretch; background: var(--bg-elev); border: 2px solid var(--moss); border-radius: 18px; overflow: hidden; margin-bottom: 28px; }
  .winner-avatar { width: 200px; flex-shrink: 0; background: var(--moss); display: flex; align-items: center; justify-content: center; font-family: var(--font-display); font-size: 104px; letter-spacing: 1px; color: var(--bg-elev-2); }
  [data-theme="day"] .winner-avatar { color: #F3F7EF; }
  .winner-content { flex: 1; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 26px 32px; flex-wrap: wrap; }
  .winner-main { min-width: 240px; }
  .winner-fullname { font-family: var(--font-display); font-size: clamp(57px, 7.8vw, 87px); letter-spacing: 0.5px; line-height: 0.95; text-transform: uppercase; }
  .winner-fullname .surname { color: var(--text); }
  .winner-country { margin-top: 12px; font-size: 32px; font-weight: 700; display: flex; align-items: center; gap: 10px; color: var(--text-dim); }
  .winner-country img { height: .85em; width: auto; border-radius: 3px; flex-shrink: 0; display: inline-block !important; }
  .winner-country svg { height: 1em; width: auto; border-radius: 2px; flex-shrink: 0; }
  .winner-side { text-align: right; flex-shrink: 0; }
  .winner-status-label { font-family: var(--font-display); font-size: 26px; letter-spacing: 2px; color: var(--moss); }
  .winner-laps-num { font-family: var(--font-display); font-size: clamp(70px, 9vw, 128px); line-height: 0.9; color: var(--moss); margin-top: 2px; }
  .winner-laps-label { font-family: var(--font-body); font-size: 12px; color: var(--text-dim); letter-spacing: 1.5px; }
  .stat-value .unit { font-family: var(--font-body); font-size: 14px; font-weight: 600; color: var(--text-dim); margin-left: 4px; }
  .record-grid { display: grid; grid-template-columns: repeat(4, minmax(min-content, 1fr)); gap: 12px; }
  .record-grid.cols-3 { grid-template-columns: repeat(3, minmax(min-content, 1fr)); }
  .record-card { background: var(--bg-elev); border: 1px solid var(--border); border-radius: 14px; padding: 10px 14px; }
  .record-label { font-family: var(--font-body); font-size: 10px; letter-spacing: 1px; text-transform: uppercase; color: var(--text-dim); margin-bottom: 4px; }
  .record-value { font-family: var(--font-display); font-size: 36px; line-height: 1; white-space: nowrap; }
  .record-value.c-moss { color: var(--moss); }
  .record-value.c-blaze { color: var(--blaze); }
  .record-value.c-accent { color: var(--accent); }
  .record-name { font-size: 13px; font-weight: 600; margin-top: 4px; }
  .record-context { font-family: var(--font-body); font-size: 10.5px; color: var(--text-dim); margin-top: 2px; }
  @media (max-width: 760px) {
    .stat-grid, .stat-grid.cols-3, .record-grid, .record-grid.cols-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .stat-card, .record-card { min-width: 0; overflow: hidden; }
    .stat-value { font-size: clamp(20px, 5.5vw, 42px); }
    .record-value { font-size: clamp(20px, 5vw, 36px); }
    .stat-sub { font-size: 10px; }
  }
  @media (max-width: 760px) and (orientation: portrait) {
    .winner-banner { flex-direction: column; }
    .winner-avatar { width: 100%; height: 90px; font-size: 40px; }
    .winner-content { flex-direction: column; align-items: center; text-align: center; }
    .winner-country { justify-content: center; }
    .winner-side { text-align: center; }
  }

  /* ---------- DNF NA PĘTLĘ I SIATKA NUMERÓW STARTOWYCH ---------- */
  .bib-subhead { font-family: var(--font-body); font-size: 11px; letter-spacing: 1px; text-transform: uppercase; color: var(--text-dim); margin: 22px 0 10px; }
  .bib-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 10px; }
  .bib-tile { position: relative; background: var(--bg-elev); border: 1px solid var(--border); border-radius: 10px; padding: 14px 8px 12px; text-align: center; overflow: hidden; }
  .bib-tile.active { border-color: var(--moss); }
  .bib-tile.bib-tile-winner { background: #BFF29E; border: 2px solid #1D7A3E; color: #14200C; }
  [data-theme="day"] .bib-tile.bib-tile-winner { background: #9FE07A; }
  .bib-tile.bib-tile-winner .bib-name { color: #1D4020; }
  .bib-num { font-family: var(--font-display); font-size: 42px; line-height: 1; position: relative; z-index: 1; }
  .bib-name { font-family: var(--font-body); font-size: 10px; color: var(--text-dim); margin-top: 5px; letter-spacing: 0.3px; line-height: 1.35; position: relative; z-index: 3; white-space: normal; overflow-wrap: anywhere; word-break: break-word; }
  .bib-tile.eliminated { border-color: color-mix(in srgb, var(--blaze) 35%, var(--border)); }
  .bib-tile.eliminated .bib-num { color: var(--text); }
  .bib-tile.eliminated .bib-name { color: var(--text-dim); }
  .bib-stamp-svg { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 2; pointer-events: none; }
  .bib-tile.dns { opacity: 0.5; }
  .status-legend { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 18px; }
  .status-legend-item { display: flex; align-items: center; gap: 10px; background: var(--bg-elev); border: 1px solid var(--border); border-radius: 10px; padding: 8px 12px; font-size: 12.5px; color: var(--text-dim); }
  .status-legend-pb { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 8px; }
  @media (max-width: 700px) {
    .bib-grid { grid-template-columns: repeat(auto-fill, minmax(82px, 1fr)); }
    .status-legend { grid-template-columns: 1fr; }
  }

  /* ---------- WYNIKI ZAWODNIKÓW: mobilny układ ---------- */
  @media (max-width: 600px) {
    .runner-select-row { flex-direction: column; align-items: flex-start; gap: 10px; padding: 14px 16px; }
    .runner-select { min-width: 0; width: 100%; flex-shrink: 1; }
    .runner-card-top { padding: 18px 18px; }
    .runner-card-name { font-size: clamp(20px, 5.5vw, 28px); }
  }
  @media (max-width: 820px) {
    .runner-card > .results-table-wrap { display: none !important; }
    .runner-lap-cards { display: flex !important; }
  }
  @media (max-width: 400px) {
    .wrap { padding: 0 14px; }
  }
