
/* Match redesign — neon tips + LIVE-aligned player stats (docs/archive/2026-10-21_porzadki/SITE/LIVE_PAGE_LAYOUT.md §15). */
:root { --cyan:#22d3ee; --bad:#ff5c5c; --home:#16a34a; --home-soft:#4ade80; --away:#0284c7; --away-soft:#38bdf8; }
.match-hero {
  position:relative; isolation:isolate;
  border:1px solid var(--line); border-radius:20px; margin-bottom:16px; overflow:hidden;
  background:
    radial-gradient(ellipse at 0% 0%, color-mix(in srgb, var(--host, transparent) 34%, transparent), transparent 58%),
    radial-gradient(ellipse at 20% 0%, rgba(225,6,0,.14), transparent 55%),
    radial-gradient(ellipse at 80% 0%, rgba(34,211,238,.08), transparent 55%),
    var(--card);
}
/* Barwy gospodarza (host_colors.py): nazwa gospodarza w akcencie, cienka linia klubowa pod hero; bez --host wszystko zostaje po staremu */
.match-hero .hero-top > .side:first-child .team-name { color:var(--host, inherit); }
.match-hero { box-shadow:0 1px 0 0 var(--host, transparent), 0 30px 60px -44px var(--host, transparent); }
.match-hero .hero-venue {
  position:absolute; inset:0; z-index:-1; pointer-events:none;
}
.match-hero .hero-venue img {
  width:100%; height:100%; object-fit:cover; object-position:center 40%;
  opacity:.55; filter:saturate(.75);
}
.match-hero .hero-venue::after {
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(11,12,14,.30) 0%, rgba(11,12,14,.72) 62%, var(--card) 100%);
}
@media (max-width:640px) { .match-hero .hero-venue img { opacity:.45; } }
.match-hero .hero-top {
  display:grid; grid-template-columns:1fr minmax(140px,220px) 1fr; gap:12px 14px;
  align-items:center; text-align:center; padding:12px 22px 18px;
}
.match-hero:has(.kick[data-has-scorers="1"]) .hero-top {
  grid-template-columns:1fr minmax(200px,46%) 1fr;
}
.match-hero .hero-heading {
  position:relative; z-index:1; text-align:center;
  padding:16px 22px 0; margin:0;
}
.match-hero .side { min-width:0; }
.match-hero a.side-link { display:block; color:inherit; transition:transform .15s ease, opacity .15s ease; }
.match-hero a.side-link:hover { opacity:.85; transform:translateY(-2px); }
.match-hero .crest-md {
  width:76px; height:76px; margin:0 auto 10px; border-radius:20px; background:var(--crest-bg);
  border:1px solid var(--line); padding:10px; display:grid; place-items:center;
}
.match-hero .crest-md img { width:100%; height:100%; object-fit:contain; }
.match-hero .team-name {
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:clamp(26px,4vw,40px); margin:0;
  letter-spacing:.02em; line-height:1.05; text-transform:uppercase;
}
/* CUR-HERO-BEZ-TYTULU: h1 SEO zostaje, ale poza siatka strzelcow — maly blok nad hero-top. */
.match-hero .match-page-title {
  font-family:"Rajdhani",sans-serif; font-weight:600; font-size:clamp(12px,1.6vw,15px);
  line-height:1.2; margin:0; color:var(--muted); letter-spacing:.02em; text-wrap:balance;
}
.match-hero .kick {
  display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  align-items:center; gap:4px 10px; padding:8px 2px; width:100%; min-width:0;
}
.match-hero .kick-core {
  grid-column:2; display:flex; flex-direction:column; align-items:center; gap:7px; min-width:0;
  justify-self:center;
}
.match-hero .kick-day {
  font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.08em;
  text-transform:uppercase; color:var(--muted);
}
.match-hero .kick-time {
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:clamp(36px,5vw,52px); line-height:1;
  letter-spacing:.02em; color:var(--ink);
}
.match-hero .kick-score-row {
  display:none; align-items:center; justify-content:center; gap:10px;
}
.match-hero:is([data-phase="live"],[data-phase="ht"],[data-phase="ft"],[data-phase="interrupted"]) .kick-score-row { display:flex; }
.match-hero .kick-score {
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:clamp(56px,13vw,84px); line-height:.95;
  letter-spacing:.02em; color:var(--cyan); display:none; text-shadow:0 4px 24px rgba(0,0,0,.55);
}
/* KUR-DELTA: jedna linia z event_diff pod wynikiem (ukryta gdy brak delty). */
.match-hero .kick-score-delta {
  display:none; margin-top:2px; text-align:center;
  font-family:"IBM Plex Mono",monospace; font-size:12px; font-weight:600;
  letter-spacing:.02em; color:rgba(244,241,234,.78); line-height:1.25;
}
.match-hero:is([data-phase="live"],[data-phase="ht"],[data-phase="ft"],[data-phase="interrupted"])
  .kick-score-delta:not([hidden]) { display:block; }
/* Jedna pogoda, POD wynikiem/godziną (nie obok — rozjeżdżało mobile): prognoza przed meczem, „teraz” od gwizdka w tym samym miejscu */
.match-hero .kick-weather {
  display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:2px 6px; margin-top:4px;
  font-family:"Rajdhani",sans-serif; font-weight:600;
  font-size:clamp(16px,2vw,22px); line-height:1.1; color:var(--muted); text-align:center;
}
.match-hero .kick-weather-cap, .match-hero .kick-weather .hm-weather-stale-note { font-size:11px; font-weight:500; opacity:.8; }
.match-hero .kick-ht {
  display:none; font-family:"IBM Plex Mono",monospace; font-size:12px; letter-spacing:.04em;
  color:rgba(244,241,234,.72); font-weight:600; margin-top:-2px;
}
.match-hero .sc-col {
  display:none; flex-direction:column; gap:2px; width:100%; max-width:10rem;
  min-width:0; align-self:center;
}
.match-hero .sc-col.home { grid-column:1; align-items:flex-end; text-align:right; justify-self:end; }
.match-hero .sc-col.away { grid-column:3; align-items:flex-start; text-align:left; justify-self:start; }
.match-hero .sc-col .sc-line {
  /* CUR-HERO-BEZ-TYTULU: kolumna w swoim torze siatki (tytul nie rozpycha siatki). 23.10 (Motor–Zagłębie): zamiast ellipsis
     zawijanie do 2 linii — nazwisko ma byc czytelne w calosci ("M. Wojciech Reguła"), nie ucinane wielokropkiem. */
  font-family:"IBM Plex Mono",monospace; font-size:11px; line-height:1.35;
  color:rgba(244,241,234,.82); white-space:normal; overflow-wrap:break-word;
  max-width:100%;
}
.match-hero .sc-col .sc-line .min {
  color:var(--amber); font-variant-numeric:tabular-nums;
}
.match-hero .phase-badge {
  font-family:"IBM Plex Mono",monospace; font-size:10px; letter-spacing:.08em;
  text-transform:uppercase; padding:5px 11px; border-radius:999px;
  border:1px solid var(--line); color:var(--muted); background:var(--chip);
}
.match-hero[data-phase="soon"] .phase-badge {
  color:#0b0c0e; background:var(--amber); border-color:var(--amber);
}
.match-hero[data-phase="ht"] .kick-time { display:none; }
.match-hero[data-phase="ht"] .kick-score { display:block; color:var(--cyan); }
.match-hero[data-phase="ht"] .kick-ht { display:block; }
.match-hero[data-phase="ht"] .kick[data-has-scorers="1"] .sc-col { display:flex; }
.match-hero[data-phase="ht"] .phase-badge {
  color:#0b0c0e; background:var(--amber); border-color:var(--amber);
}
.match-hero[data-phase="live"] .kick-time { display:none; }
.match-hero[data-phase="live"] .kick-score { display:block; }
.match-hero[data-phase="live"] .kick-ht[data-show="1"] { display:block; }
.match-hero[data-phase="live"] .kick[data-has-scorers="1"] .sc-col { display:flex; }
.match-hero[data-phase="live"] .phase-badge {
  color:#0b0c0e; background:var(--accent); border-color:var(--accent);
  animation:phase-pulse 1.6s ease-in-out infinite;
}
.match-hero[data-phase="ft"] .kick-time { display:none; }
.match-hero[data-phase="ft"] .kick-score { display:block; color:var(--ink); } /* wynik końcowy białym, nie zielonym (Operator 20.10); stan meczu niesie plakietka KONIEC */
.match-hero[data-phase="ft"] .kick-ht { display:block; }
.match-hero[data-phase="ft"] .kick[data-has-scorers="1"] .sc-col { display:flex; }
.match-hero[data-phase="ft"] .phase-badge {
  color:#0b0c0e; background:var(--good); border-color:var(--good);
}
.match-hero[data-phase="ppd"] .phase-badge {
  color:#0b0c0e; background:#c4a35a; border-color:#c4a35a;
}
.match-hero[data-phase="interrupted"] .phase-badge {
  color:#0b0c0e; background:#ffb400; border-color:#ffb400;
}
.match-hero[data-phase="interrupted"] .live-minute { display:none; }
.match-hero[data-phase="interrupted"] .kick-time { color:var(--amber); }
.match-hero[data-phase="interrupted"] .kick-score { display:block; color:var(--amber); }
.match-hero[data-phase="interrupted"] .phase-badge { animation:none; }
.match-hero[data-phase="ppd"] .kick-time { color:var(--amber); }
.audio-canary {
  display:none; align-items:center; justify-content:space-between; gap:12px;
  margin:-2px 0 14px; padding:10px 14px; border:1px solid rgba(34,211,238,.28);
  border-radius:8px; background:rgba(8,18,24,.92);
}
.audio-canary[data-enabled="1"] { display:flex; }
.audio-canary-copy { min-width:0; }
.audio-canary-title {
  font-family:"Archivo",sans-serif; font-size:12px; font-weight:700; color:var(--cyan);
}
.audio-canary-note { font-size:11px; color:var(--muted); margin-top:2px; }
.audio-canary-btn {
  flex:0 0 auto; min-width:148px; border:1px solid rgba(34,211,238,.45);
  border-radius:6px; padding:8px 11px; color:var(--ink); background:rgba(34,211,238,.12);
  font-family:"IBM Plex Mono",monospace; font-size:10px; font-weight:700; cursor:pointer;
}
.audio-canary-btn.on { color:#071012; background:var(--cyan); }
@media (max-width:640px) {
  .audio-canary { align-items:stretch; flex-direction:column; }
  .audio-canary-btn { width:100%; }
}
.card-ico {
  display:inline-block; width:9px; height:12px; border-radius:1.5px; vertical-align:-1px;
  box-shadow:0 0 0 1px rgba(0,0,0,.35); flex-shrink:0;
}
.card-ico.yc { background:#f5d000; }
.card-ico.rc { background:#e10600; }
.card-slash { color:var(--muted); margin:0 1px; font-size:10px; vertical-align:1px; }
.cards-cell { white-space:nowrap; text-align:center; }
.cards-cell .card-n {
  font-family:"IBM Plex Mono",monospace; font-size:10px; color:var(--muted); margin:0 2px 0 1px;
}
.stat-cell .cards-stack,
.sbv2-cell .cards-stack {
  display:flex; flex-direction:column; gap:6px; align-items:center; width:100%;
}
.stat-cell .cards-row,
.sbv2-cell .cards-row {
  display:flex; align-items:center; justify-content:center; gap:8px;
}
.stat-cell .cards-row .duel,
.sbv2-cell .cards-row .duel {
  display:inline-flex; align-items:center; gap:4px;
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:18px; letter-spacing:.02em;
}
.stat-cell .cards-row[data-card="rc"] .h,
.stat-cell .cards-row[data-card="rc"] .a,
.stat-cell .cards-row[data-card="rc"] .sep,
.sbv2-cell .cards-row[data-card="rc"] .h,
.sbv2-cell .cards-row[data-card="rc"] .a,
.sbv2-cell .cards-row[data-card="rc"] .sep {
  color:var(--bad);
}
.pname-cell { position:relative; }
.sub-arrow {
  position:relative; flex-shrink:0; width:0; height:0; pointer-events:none;
  filter:drop-shadow(0 0 1px rgba(0,0,0,.55));
}
.sub-arrow.in {
  border-left:5px solid transparent; border-right:5px solid transparent;
  border-bottom:8px solid #3dd68c;
}
.sub-arrow.out {
  border-left:5px solid transparent; border-right:5px solid transparent;
  border-top:8px solid #ff5c5c;
}
table.ps-table tr.sub-out { opacity:.55; }
table.ps-table tr.sub-out .nm { color:rgba(244,241,234,.62); }
table.ps-table tr.sub-in .nm { color:rgba(244,241,234,.95); }
.ps-table th.mincol, .ps-table td.mincol {
  font-family:"IBM Plex Mono",monospace; color:var(--amber); font-variant-numeric:tabular-nums;
  text-align:center;
}
@keyframes phase-pulse {
  0%,100% { box-shadow:0 0 0 0 rgba(225,6,0,.45); }
  50% { box-shadow:0 0 0 8px rgba(225,6,0,0); }
}
.side-form { display:flex; align-items:center; justify-content:center; gap:5px; margin-top:12px; flex-wrap:wrap; }
.side-coach {
  display:flex; align-items:baseline; justify-content:center; gap:5px; margin-top:4px;
  font-size:12px; color:var(--muted); font-family:"IBM Plex Mono",monospace;
}
.side-coach b { color:var(--ink); font-weight:600; font-family:"DM Sans",sans-serif; }
.coach-badge {
  font-size:9px; letter-spacing:.04em; text-transform:uppercase; color:var(--muted);
  border:1px solid var(--line); border-radius:4px; padding:1px 4px; white-space:nowrap;
}
.form-dir { font-size:9px; color:var(--muted); letter-spacing:.04em; text-transform:uppercase; width:100%; text-align:center; }
.form-dot {
  width:21px; height:21px; border-radius:6px; display:grid; place-items:center;
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:11px;
  background:var(--chip); border:1px solid var(--line); color:var(--muted);
}
.form-dot.ostatni { box-shadow:0 0 0 2px rgba(255,255,255,.22); margin-right:2px; } /* najnowszy mecz = ostatnia kropka z prawej, delikatna obwódka (Operator 19.10) */
.form-dot.w { background:rgba(61,214,140,.16); color:var(--good); border-color:transparent; }
.form-dot.d { background:rgba(255,180,0,.14); color:var(--amber); border-color:transparent; }
.form-dot.l { background:rgba(255,92,92,.14); color:var(--bad); border-color:transparent; }
.hero-form-note {
  text-align:center; color:var(--muted); font-size:11px; font-family:"IBM Plex Mono",monospace;
  padding:0 22px 12px;
}
/* form note removed for production — keep class unused */
.hero-meta {
  display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:8px 22px;
  border-top:1px solid var(--line); padding:13px 22px; background:rgba(255,255,255,.015);
}
.hero-meta .hm-item {
  display:flex; align-items:baseline; gap:7px; font-size:12.5px; color:var(--muted);
  font-family:"IBM Plex Mono",monospace;
}
.hero-meta .hm-item b { color:var(--ink); font-weight:600; font-family:"DM Sans",sans-serif; }
.hero-meta .hm-dot { width:3px; height:3px; border-radius:50%; background:var(--line); flex-shrink:0; }
/* Frekwencja (SM metadata 578, 12.09.2026) stoi w tej samej linii co stadion
   i sędzia. Grupa trzyma kropkę razem z napisem, żeby ukrycie jednego nie
   zostawiało osieroconej kropki; SM nie podaje liczby widzów przed meczem. */
.hero-meta .hm-group { display:contents; }
.hero-meta .hm-group[hidden] { display:none; }

.panel-head { display:flex; justify-content:space-between; align-items:baseline; gap:10px; margin-bottom:4px; flex-wrap:wrap; }
/* Przelacznik zakresu statystyk (mecz / 1. pol. / 2. pol., 12.09.2026).
   Ukryty, dopoki SM nie da `periods.statistics` — brak danych nie ma prawa
   udawac pustej polowy. */
.stats-scope { display:flex; gap:4px; }
.stats-scope[hidden] { display:none; }
.stats-scope button {
  font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.02em;
  color:var(--muted); background:transparent; border:1px solid var(--line);
  border-radius:999px; padding:2px 9px; cursor:pointer;
}
.stats-scope button.on { color:var(--ink); border-color:var(--ink); }
.panel-head h2 {
  font-family:"Archivo",sans-serif; font-weight:700; font-size:22px; letter-spacing:.04em;
  text-transform:uppercase; margin:0;
}
.panel-head .count {
  font-family:"IBM Plex Mono",monospace; font-size:11px; color:var(--muted); letter-spacing:.05em;
  background:var(--chip); border:1px solid var(--line); padding:5px 10px; border-radius:999px;
}
.panel .sub-note { color:var(--muted); font-size:13px; margin:6px 0 18px; }

/* Neon tip cards — color by confidence band (Operator) + lifecycle hooks (LIVE_PREDICTION_RULES) */
.typy-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.typ-card {
  position:relative; background:
    radial-gradient(ellipse at 30% -10%, var(--glow-soft), transparent 60%), var(--bg2);
  border:1px solid var(--glow-line); border-radius:14px;
  padding:17px 17px 15px; overflow:hidden; transition:transform .15s ease, box-shadow .2s ease, border-color .2s ease;
  box-shadow:0 0 0 1px rgba(0,0,0,.5), 0 0 20px -9px var(--glow-strong), inset 0 0 26px -18px var(--glow-strong);
  display:flex; flex-direction:column;
}
.typ-card:hover {
  transform:translateY(-3px); border-color:var(--glow-strong);
  box-shadow:0 0 0 1px rgba(0,0,0,.5), 0 0 30px -4px var(--glow-strong), inset 0 0 30px -14px var(--glow-strong);
}
.typ-card .cat-tag {
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:clamp(17px,2.2vw,20px);
  letter-spacing:.03em; text-transform:uppercase; color:var(--cat-ink);
  text-shadow:0 0 12px var(--glow-strong); margin-bottom:10px; display:block; line-height:1.15;
}
.typ-card .pick {
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:clamp(22px,3vw,28px); letter-spacing:.01em;
  line-height:1.1; margin-bottom:14px; color:#fdfcf9;
}
.typ-card .conf-row { display:flex; align-items:baseline; justify-content:space-between; margin-bottom:7px; gap:6px; }
.typ-card .conf-num {
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:23px; color:var(--cat-ink);
  text-shadow:0 0 12px var(--glow-strong); display:flex; align-items:baseline; gap:5px;
}
.typ-card .conf-delta { font-family:"IBM Plex Mono",monospace; font-size:11px; font-weight:600; }
.typ-card .conf-delta.up { color:var(--good); }
.typ-card .conf-delta.down { color:var(--bad); }
.typ-card .conf-track { height:7px; border-radius:4px; background:rgba(255,255,255,.06); overflow:hidden; margin-top:auto; }
.typ-card .conf-fill { height:100%; border-radius:4px; background:var(--cat-ink); box-shadow:0 0 12px var(--glow-strong), 0 0 3px var(--cat-ink); }
.typ-card.conf-high, .typ-card.conf-mid, .typ-card.conf-edge { --cat-ink:#22d3ee; --glow-strong:rgba(34,211,238,.55); --glow-soft:rgba(34,211,238,.16); --glow-line:rgba(34,211,238,.4); }
.typ-card.state-live { animation:live-pulse 2.4s ease-in-out infinite; }
/* Typ odradzany przez L16 (DEC-2026-10-17-001): pokazany, ale oznaczony i przygaszony; napis publiczny „SKAUT16 odradza” (L16 = SKAUT16 dla kibica, 18.10) */
.typ-card.l16-odradza { opacity:.82; border-style:dashed; }
.typ-card .l16-odradza-tag { display:inline-block; margin:2px 0 0 6px; padding:1px 6px; border-radius:999px; font-family:"IBM Plex Mono",monospace; font-size:9px; letter-spacing:.06em; text-transform:uppercase; color:#d9a441; border:1px solid rgba(217,164,65,.5); }
@keyframes live-pulse {
  0%,100% { box-shadow:0 0 0 1px rgba(0,0,0,.5), 0 0 20px -9px var(--glow-strong), inset 0 0 26px -18px var(--glow-strong); }
  50% { box-shadow:0 0 0 1px rgba(0,0,0,.5), 0 0 32px -4px var(--glow-strong), inset 0 0 30px -12px var(--glow-strong); }
}
.live-top { display:flex; align-items:center; justify-content:space-between; margin-bottom:9px; }
.live-badge {
  display:inline-flex; align-items:center; gap:5px; font-family:"IBM Plex Mono",monospace; font-size:9.5px;
  font-weight:700; letter-spacing:.08em; color:#fff; background:var(--accent); padding:3px 8px 3px 6px; border-radius:999px;
}
.live-dot { width:6px; height:6px; border-radius:50%; background:#fff; animation:dot-blink 1.1s steps(1) infinite; }
@keyframes dot-blink { 50% { opacity:.25; } }
.kick-status {
  display:inline-flex; align-items:center; justify-content:center; gap:8px; flex-wrap:wrap;
}
.live-minute {
  font-family:"IBM Plex Mono",monospace; font-size:10.5px; color:var(--muted);
  font-variant-numeric:tabular-nums; letter-spacing:.04em;
}
.match-hero .live-minute {
  display:none; color:var(--amber); font-size:14px; font-weight:700;
  min-width:2.4rem; justify-content:center; line-height:1;
}
.match-hero[data-phase="live"] .live-minute,
.match-hero[data-phase="ht"] .live-minute { display:inline-flex; }
.match-hero[data-phase="ht"] .live-minute { color:rgba(244,241,234,.82); }
.live-stale-msg {
  display:none; width:100%; margin-top:8px; padding:6px 10px; border-radius:8px;
  font-family:"IBM Plex Mono",monospace; font-size:11px; font-weight:700; letter-spacing:.02em;
  color:#2c0900; background:#ffb400; text-align:center;
}
.match-hero[data-live-stale="1"] .live-stale-msg { display:block; }
/* Notka o świeżości danych LIVE (swiezosc.js): tylko przy problemie; ukryta = zero miejsca w układzie */
.live-fresh-note {
  margin:0 22px 12px; padding:6px 10px; border-radius:8px; text-align:center;
  font-family:"IBM Plex Mono",monospace; font-size:11px; font-weight:700; letter-spacing:.02em;
  color:#2c0900; background:#ffb400;
}
.live-fresh-note[hidden] { display:none; }
.live-stat {
  font-family:"IBM Plex Mono",monospace; font-size:11.5px; color:var(--ink); background:rgba(255,255,255,.04);
  border:1px solid var(--line); border-radius:8px; padding:6px 9px; margin-bottom:10px;
}
.live-stat b { color:var(--cat-ink); }
.status-pill {
  display:inline-block; font-family:"IBM Plex Mono",monospace; font-size:10px; font-weight:700; letter-spacing:.04em;
  padding:3px 9px; border-radius:999px; margin-bottom:9px;
}
.status-pill.surge, .status-pill.rising { color:var(--good); background:rgba(61,214,140,.14); border:1px solid rgba(61,214,140,.35); }
.status-pill.ontrack, .status-pill.stable { color:var(--amber); background:rgba(255,180,0,.14); border:1px solid rgba(255,180,0,.35); }
.status-pill.fading { color:#ff9a4d; background:rgba(255,154,77,.14); border:1px solid rgba(255,154,77,.35); }
.status-pill.drift { color:var(--bad); background:rgba(255,92,92,.14); border:1px solid rgba(255,92,92,.35); }
/* Settlement hierarchy (Operator): HIT = flex; MISS = honest but quiet. */
.typ-card.state-hit {
  --cat-ink:#3dffb0; --glow-strong:rgba(61,255,160,.65); --glow-soft:rgba(61,214,140,.22); --glow-line:rgba(61,255,160,.55);
  box-shadow:inset 0 0 0 1px rgba(61,255,160,.28), 0 0 28px -10px rgba(61,214,140,.45);
}
.typ-card.state-miss, .typ-card.state-bust {
  --cat-ink:#7a7f86; --glow-strong:transparent; --glow-soft:rgba(255,255,255,.02); --glow-line:rgba(255,255,255,.08);
  filter:saturate(.45) brightness(.92);
  opacity:.88;
}
.typ-card.state-miss .pick, .typ-card.state-bust .pick { color:#9a9690; }
.typ-card.state-miss .cat-tag, .typ-card.state-bust .cat-tag { text-shadow:none; opacity:.75; }
.typ-card.state-miss .conf-fill, .typ-card.state-bust .conf-fill { box-shadow:none; opacity:.55; }
.typ-card.state-void {
  --cat-ink:#9aa0a6; --glow-strong:rgba(154,160,166,.28); --glow-soft:rgba(154,160,166,.08); --glow-line:rgba(255,255,255,.12);
  filter:saturate(.7);
}
.typ-card.state-push { --cat-ink:#9db8e0; --glow-strong:rgba(120,160,220,.3); --glow-soft:rgba(120,160,220,.08); --glow-line:rgba(120,160,220,.3); }
.ai-chip.state-push { --cat-ink:#9db8e0; --glow-line:rgba(120,160,220,.3); }
.typ-card.state-pending,
.typ-card.state-unsettled {
  /* pending = pre-match look; unsettled = played but no ledger result */
}
.typ-card.state-void .pick { color:#c9c6bf; }
.result-badge {
  display:inline-flex; align-items:center; gap:6px; font-family:"Rajdhani",sans-serif; font-weight:700;
  font-size:13px; letter-spacing:.04em; text-transform:uppercase; padding:5px 11px; border-radius:8px;
  margin-bottom:11px; width:fit-content;
}
.result-badge.hit {
  color:#041910; background:linear-gradient(135deg,#3dffb0 0%,#22c55e 100%);
  box-shadow:0 0 20px -2px rgba(61,255,160,.75), 0 0 0 1px rgba(61,255,160,.35);
  font-size:14px; letter-spacing:.06em;
}
.result-badge.miss, .result-badge.bust {
  color:#8b8680; background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.1);
  font-weight:600; font-size:11px; letter-spacing:.03em; text-transform:none; opacity:.9;
  box-shadow:none;
}
/* 01.11 (Operator): wynik typu jako duża, wyróżniona liczba obok werdyktu; zielona przy trafionym, wygaszona przy nietrafionym. */
.result-badge .rb-val { font:800 1.55em/1 "Rajdhani",sans-serif; letter-spacing:0; font-variant-numeric:tabular-nums; padding-left:7px; margin-left:2px; border-left:1px solid currentColor; }
.result-badge.hit .rb-val { color:#021208; }
.result-badge.miss .rb-val, .result-badge.bust .rb-val { color:#6f6b64; }
.result-badge .rb-opis { font-weight:600; text-transform:none; letter-spacing:.02em; padding-left:7px; margin-left:2px; border-left:1px solid currentColor; }
.result-badge.void { color:#f4f1ea; background:#2c3036; border:1px solid rgba(255,255,255,.12); }
.result-badge.push { color:#dfe7f3; background:rgba(120,160,220,.16); border:1px solid rgba(120,160,220,.4); }
.result-badge.pending { color:var(--amber); background:rgba(255,180,0,.12); border:1px solid rgba(255,180,0,.35); }
.final-line { font-family:"IBM Plex Mono",monospace; font-size:11px; color:var(--muted); margin-bottom:10px; line-height:1.4; }
.ai-chip.state-hit {
  --cat-ink:#3dffb0; --glow-strong:rgba(61,255,160,.55); --glow-soft:rgba(61,214,140,.16); --glow-line:rgba(61,255,160,.45);
  box-shadow:0 0 18px -8px rgba(61,214,140,.5);
}
.ai-chip.state-miss, .ai-chip.state-bust {
  --cat-ink:#7a7f86; --glow-strong:transparent; --glow-soft:rgba(255,255,255,.02); --glow-line:rgba(255,255,255,.08);
  filter:saturate(.45) brightness(.92); opacity:.88;
}
.ai-chip.state-void {
  --cat-ink:#9aa0a6; --glow-strong:rgba(154,160,166,.25); --glow-soft:rgba(154,160,166,.08); --glow-line:rgba(255,255,255,.12);
  filter:saturate(.7);
}

.mini-table-wrap { overflow-x:auto; border:1px solid var(--line); border-radius:14px; background:var(--bg2); }
table.mini-table { width:100%; border-collapse:collapse; min-width:480px; }
table.mini-table thead th {
  font-family:"IBM Plex Mono",monospace; font-size:10px; letter-spacing:.08em; text-transform:uppercase;
  color:var(--muted); text-align:right; padding:11px 10px; border-bottom:1px solid var(--line); font-weight:600;
}
table.mini-table thead th.tcol { text-align:left; padding-left:14px; }
table.mini-table td {
  padding:12px 10px; text-align:right; font-variant-numeric:tabular-nums; font-size:13px;
  border-top:1px solid var(--line); color:var(--ink);
}
table.mini-table td.pos { color:var(--muted); font-family:"IBM Plex Mono",monospace; font-size:12px; text-align:left; padding-left:14px; }
table.mini-table td.tcol { text-align:left; padding-left:10px; }
table.mini-table .trow { display:flex; align-items:center; gap:10px; }
table.mini-table .trow img { width:24px; height:24px; object-fit:contain; border-radius:6px; background:var(--crest-bg); flex-shrink:0; }
table.mini-table tr.hl { background:rgba(255,180,0,.06); }
table.mini-table td.pts b { color:var(--ink); font-size:14px; }
table.mini-table td.forma { display:flex; align-items:center; gap:3px; }
table.mini-table td.forma .form-dot { width:16px; height:16px; font-size:9px; border-radius:4px; }

.stat-strip, .stats-bar-v2 {
  display:flex; flex-wrap:wrap; align-items:stretch; gap:0;
  margin-top:4px; margin-bottom:2px;
}
.sbv2-cell {
  flex:1 1 0; min-width:70px; display:flex; flex-direction:column; align-items:center;
  gap:5px; padding:10px 6px; position:relative; text-align:center;
}
.sbv2-cell + .sbv2-cell::before {
  content:""; position:absolute; left:0; top:16%; bottom:16%; width:1px; background:var(--line);
}
.sbv2-cell .lab {
  font-family:"IBM Plex Mono",monospace; font-size:9.5px; letter-spacing:.09em;
  text-transform:uppercase; color:var(--muted);
}
.sbv2-cell .duel {
  display:flex; justify-content:center; align-items:baseline; gap:6px;
  font-family:"IBM Plex Mono",monospace; font-size:15px; font-weight:600;
}
.sbv2-cell .h { color:#86efac; }
.sbv2-cell .a { color:#93c5fd; }
.sbv2-cell .sep { color:var(--muted); font-weight:400; }
.sbv2-cell .cards-stack { gap:4px; }
/* przed KO (25.10): zamiast 9 pustych „— : —” jedna linia „Statystyki live po gwizdku”; poll zdejmuje fazę pre od KO i panel wraca w całości */
.match-stats[data-phase="pre"] .stats-bar-v2, .match-stats[data-phase="pre"] .live-metrics { display:none; }
.match-stats[data-phase="pre"] .stats-lock { margin-top:0; }
.match-stats:not([data-phase="pre"]) .sbv2-cell { opacity:1; }
.match-stats:not([data-phase="pre"]) .stats-lock,
.ps-locked:not([data-phase="pre"]) .stats-lock { display:none; }
.ps-locked:not([data-phase="pre"]) table.ps-table { opacity:1; }
@media (max-width:760px) {
  .sbv2-cell { flex:1 1 30%; min-width:30%; }
  .sbv2-cell:nth-child(3n+1)::before { display:none; }
}
.stats-lock {
  display:flex; align-items:center; gap:10px; margin-top:14px; padding:11px 14px;
  border:1px dashed var(--line); border-radius:12px; color:var(--muted); font-size:12.5px;
}
.stats-lock .lock-ico {
  width:18px; height:18px; border:1.5px solid var(--muted); border-radius:4px; flex-shrink:0; position:relative;
}
.stats-lock .lock-ico::before {
  content:""; position:absolute; left:50%; top:-7px; width:9px; height:9px; margin-left:-4.5px;
  border:1.5px solid var(--muted); border-bottom:none; border-radius:5px 5px 0 0;
}
.stats-lock b { color:var(--ink); font-weight:600; }

/* K-METRYKI-NA-LIVE (19.09.2026) — obraz gry pod paskiem statystyk:
   wskaźnik naporu, zmarnowane setki, strefa strzałów. Kontener bez danych
   jest `hidden` (brak danych to nie zero), więc nie zostawia pustej ramki. */
.live-metrics { display:flex; flex-direction:column; gap:9px; margin-top:12px; }
.live-metrics[hidden] { display:none; }
.lm-press {
  display:flex; align-items:center; gap:7px; font-size:13px; font-weight:600;
  color:#fbbf24; letter-spacing:.01em;
}
.lm-badge {
  align-self:flex-start; display:inline-flex; align-items:center; gap:6px;
  padding:3px 11px; border-radius:999px; font-size:12px; font-weight:500;
  color:#fecaca; background:rgba(127,29,29,.34); border:1px solid rgba(239,68,68,.32);
}
.lm-zone { display:flex; flex-direction:column; gap:7px; margin-top:2px; }
.lm-row { display:flex; flex-direction:column; gap:4px; }
.lm-head {
  display:flex; justify-content:space-between; align-items:baseline;
  font-family:"IBM Plex Mono",monospace; font-size:10px; letter-spacing:.07em;
}
.lm-head .lm-lab { color:var(--muted); text-transform:uppercase; }
.lm-head .lm-h { color:#86efac; font-size:13px; font-weight:600; }
.lm-head .lm-a { color:#93c5fd; font-size:13px; font-weight:600; }
.lm-bar {
  height:5px; border-radius:3px; overflow:hidden; background:rgba(147,197,253,.38);
}
.lm-fill { display:block; height:100%; background:#86efac; }

/* Player stats — LIVE layout: FC SH SOT G Y/R Rat (docs/archive/2026-10-21_porzadki/SITE/LIVE_PAGE_LAYOUT.md §15) */
.ps-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:16px; }
.ps-side { min-width:0; }
.ps-side h3 {
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:18px; letter-spacing:.02em;
  text-transform:uppercase; margin:0 0 10px; display:flex; align-items:center; gap:8px;
}
.ps-side h3 .side-crest {
  width:22px; height:22px; object-fit:contain; border-radius:5px;
  background:var(--crest-bg); flex-shrink:0; padding:1px;
}
.ps-side h3 .side-tag {
  font-family:"IBM Plex Mono",monospace; font-size:10px; letter-spacing:.08em;
  color:var(--muted); font-weight:600;
}
.ps-side.home h3 .side-tag { color:#86efac; }
.ps-side.away h3 .side-tag { color:#93c5fd; }
.ps-wrap { overflow-x:auto; border:1px solid var(--line); border-radius:12px; background:var(--bg2); }
table.ps-table { width:100%; border-collapse:collapse; min-width:340px; }
table.ps-table th {
  font-family:"IBM Plex Mono",monospace; font-size:10px; letter-spacing:.06em; text-transform:uppercase;
  color:var(--muted); text-align:center; padding:9px 6px; border-bottom:1px solid var(--line); font-weight:600;
}
table.ps-table th.pcol { text-align:left; padding-left:12px; }
table.ps-table td {
  padding:8px 6px; text-align:center; font-variant-numeric:tabular-nums; font-size:12.5px;
  border-top:1px solid var(--line); color:var(--ink); font-family:"IBM Plex Mono",monospace;
}
table.ps-table td.pcol {
  text-align:left; padding-left:12px; font-family:"DM Sans",sans-serif; font-size:13px; color:#d1d5db;
  max-width:180px;
}
table.ps-table .pname-cell {
  display:flex; align-items:center; gap:8px; min-width:0; position:relative;
}
table.ps-table .nm-wrap {
  position:relative; min-width:0; flex:1; display:flex; align-items:center; gap:5px;
}
table.ps-table .ps-av {
  width:28px; height:28px; border-radius:50%; object-fit:cover; background:var(--crest-bg);
  border:1px solid var(--line); flex-shrink:0;
}
table.ps-table .ps-av.koszulka { background:none; border:none; border-radius:0; display:block; }
table.ps-table .ps-av.fallback {
  display:grid; place-items:center; color:#fff;
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:11px; letter-spacing:.02em;
  text-shadow:0 1px 2px rgba(0,0,0,.45); border:none;
}
table.ps-table .pname-cell .nm {
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; flex:1;
}
.match-stats .panel-head { margin-bottom:14px; }
.match-stats.panel { padding-top:22px; padding-bottom:22px; }
table.ps-table td.muted { color:var(--muted); }
.ps-locked[data-phase="pre"] table.ps-table { opacity:.45; }

/* K-STATS-FD-LEGENDA (2026-09-13): legenda skrotow tabeli statystyk
   zawodnikow — jedna chmurka przy naglowku "OCENA". Hover na desktopie,
   klik/focus na dotyku (:focus-within na <th>, brak JS). */
th.ps-th-legend { position:relative; }
.ps-legend-btn {
  display:inline-grid; place-items:center; width:14px; height:14px; margin-left:4px;
  border-radius:50%; border:1px solid var(--muted); background:none; color:var(--muted);
  font-family:"IBM Plex Mono",monospace; font-size:9px; line-height:1; cursor:pointer; padding:0;
  position:relative;
}
.ps-legend-btn::after { content:""; position:absolute; inset:-15px; }
.ps-legend-tip {
  position:absolute; z-index:20; top:100%; right:0; margin-top:6px;
  display:none; flex-direction:column; gap:3px; text-align:left; white-space:nowrap;
  background:var(--bg2); border:1px solid var(--line); border-radius:8px; padding:9px 11px;
  box-shadow:0 8px 20px rgba(0,0,0,.35); text-transform:none; letter-spacing:normal;
}
th.ps-th-legend:hover .ps-legend-tip,
th.ps-th-legend:focus-within .ps-legend-tip { display:flex; }
.ps-legend-row { font-size:11px; color:var(--ink); font-weight:400; }
.ps-legend-row b { color:var(--muted); font-weight:700; }

/* Player stats tabs + pitch (mock live_redesign_3col — Operator) */
/* Guziki Skład / Boisko / Ławka (Operator 12.10: „brzydkie”): segmentowy przełącznik — ciemny tor, równe segmenty, aktywny w gradiencie marki z poświatą,
   wyraziste kapitaliki Rajdhani zamiast drobnego mono. Min. wysokość 44 px (dotyk). */
.tabs-row { display:flex; gap:4px; padding:4px; margin:4px 0 12px; background:rgba(255,255,255,.045); border:1px solid var(--line); border-radius:14px; }
.tab-btn {
  flex:1 1 0; min-width:0; min-height:44px; padding:8px 10px; border:0; border-radius:10px; background:transparent; color:#9fb4bd; cursor:pointer;
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:16px; line-height:1; letter-spacing:.1em; text-transform:uppercase;
  transition:background .15s ease, color .15s ease, box-shadow .15s ease;
}
.tab-btn:hover { color:#e8f3f6; background:rgba(255,255,255,.07); }
.tab-btn:focus-visible { outline:2px solid #00e5c0; outline-offset:2px; }
.tab-btn.on { color:var(--on-host,#04231d); background:linear-gradient(135deg,var(--host,#00e5c0),color-mix(in srgb,var(--host,#22d3ee) 60%,var(--host2,#22d3ee))); box-shadow:0 6px 18px -6px color-mix(in srgb,var(--host,#00e5c0) 65%,transparent); }
.ps-tab-badge { display:inline-block; padding:2px 8px; border-radius:999px; font-size:10px; letter-spacing:.04em; background:rgba(0,229,192,.18); color:#7cf0d6; font-family:"IBM Plex Mono",monospace; }
.ps-lineup-badge { margin:6px 0 10px; }
/* Etykieta składu („✓ SKŁADY MECZOWE” / „SKŁADY PRZEWIDYWANE”) po PRAWEJ stronie nagłówka modułu, nie w pigułce pod nim (Operator 12.10):
   obrys w kolorze statusu — zielony = skład meczowy, bursztynowy = przewidywany (kropka); status przełącza JS przez data-lineup-status. */
.ps-locked .panel-head { justify-content:flex-start; }
.ps-locked .panel-head .ps-lineup-badge { margin:0 0 0 auto; align-self:center; }
.ps-locked .ps-tab-badge { display:inline-flex; align-items:center; gap:7px; padding:5px 11px; border-radius:8px; background:transparent; border:1px solid rgba(0,229,192,.5); color:#7cf0d6; font:600 11px/1 "IBM Plex Mono",monospace; letter-spacing:.08em; }
.ps-locked .ps-lineup-badge[data-lineup-status="predicted"] .ps-tab-badge { border-color:rgba(255,184,0,.55); color:#ffc94d; }
.ps-locked .ps-lineup-badge[data-lineup-status="predicted"] .ps-tab-badge::before { content:""; width:7px; height:7px; border-radius:50%; background:currentColor; box-shadow:0 0 8px currentColor; }
.tab-panel { display:none; }
.tab-panel.on { display:block; }
.pitch-wrap-h {
  border-radius:14px; overflow:hidden; border:1px solid rgba(0,229,192,.3); position:relative;
  background:#0a0f14;
  background-image:radial-gradient(circle, rgba(0,229,192,.07) 1.5px, transparent 1px);
  background-size:22px 22px;
}
.pitch-wrap-h { display:flex; flex-wrap:wrap; align-items:baseline; max-width:480px; margin:0 auto; }
/* Boisko w pionie: gospodarz nad boiskiem, gość pod nim; napis stanu składu po prawej u góry */
.pitch-hdr {
  display:contents; font-family:"IBM Plex Mono",monospace; font-size:11px;
  letter-spacing:.06em; text-transform:uppercase;
}
.pitch-hdr .h, .pitch-hdr .a, .pitch-hdr .status { padding:10px 14px 4px; }
.pitch-hdr .h { order:1; flex:1 1 auto; }
.pitch-hdr .status { order:2; flex:0 0 auto; margin-left:auto; text-align:right; }
.pitch-svg-v { order:3; flex:0 0 100%; }
.pitch-hdr .a { order:4; flex:1 1 100%; padding-bottom:12px; }
.pitch-hdr .h { color:#86efac; }
.pitch-hdr .a { color:#93c5fd; }
.pitch-hdr .status {
  color:var(--amber); font-size:9.5px; letter-spacing:.08em;
}
.pitch-svg-v { width:100%; height:auto; display:block; }
.pitch-caption { margin-top:8px; font-size:10.5px; color:var(--muted); font-family:"IBM Plex Mono",monospace; }
.pitch-empty { color:var(--muted); font-size:13px; padding:10px 0; }

/* Typy AI (SM) — kompaktowa lista pozioma w stylistyce kafli */
.ai-typy-row {
  display:flex; flex-wrap:wrap; gap:10px;
}
.ai-chip {
  flex:1 1 150px; max-width:220px; min-width:140px;
  display:flex; flex-direction:column; gap:4px;
  padding:11px 13px 12px; border-radius:12px;
  background:rgba(255,255,255,.03);
  border:1px solid var(--glow-line, rgba(255,255,255,.12));
  box-shadow:inset 0 0 24px -12px var(--glow-soft, transparent);
}
.ai-chip .ai-cat {
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:13px;
  letter-spacing:.04em; text-transform:uppercase; color:var(--cat-ink, var(--muted));
  text-shadow:0 0 10px var(--glow-strong, transparent); line-height:1.15;
}
.ai-chip .ai-pick {
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:17px;
  color:#fdfcf9; line-height:1.1;
}
.ai-chip .ai-pct {
  font-family:"IBM Plex Mono",monospace; font-size:11px; color:var(--muted);
  margin-top:2px;
}
.ai-chip .result-badge {
  margin-bottom:2px; padding:3px 8px; font-size:12px;
}
.ai-chip .result-badge.hit { font-size:12px; }
.ai-chip .result-badge.miss, .ai-chip .result-badge.bust {
  font-size:10px;
}
.ai-chip.conf-high, .ai-chip.conf-mid, .ai-chip.conf-edge { --cat-ink:#22d3ee; --glow-strong:rgba(34,211,238,.45); --glow-soft:rgba(34,211,238,.12); --glow-line:rgba(34,211,238,.35); }

.h2h-list { max-width:40rem; }
.h2h-row {
  display:grid; grid-template-columns:4.5rem minmax(0,1fr) 2.75rem; column-gap:14px;
  align-items:center; padding:9px 0; border-top:1px solid var(--line); font-size:13px;
}
.h2h-row:first-of-type { border-top:0; }
.h2h-row .when { color:var(--muted); font-family:"IBM Plex Mono",monospace; font-size:11px; line-height:1.35; }
.h2h-row .pair { min-width:0; }
.h2h-row .score {
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:20px; line-height:1;
  text-align:right; color:var(--good); letter-spacing:.02em; font-variant-numeric:tabular-nums;
}
@media (max-width:860px) {
  .typy-grid { grid-template-columns:repeat(2,1fr); }
  .ps-grid { grid-template-columns:1fr; }
}
@media (max-width:720px) {
  /* Never keep desktop 3-col middle when scorers present — sides would pack left. */
  .match-hero .hero-top,
  .match-hero:has(.kick[data-has-scorers="1"]) .hero-top {
    grid-template-columns:1fr 1fr;
  }
  .match-hero .kick {
    grid-column:1 / -1; order:-1; padding:4px 0 10px; gap:4px 8px;
  }
  .match-hero .side { width:100%; justify-self:stretch; }
  .match-hero .sc-col .sc-line { font-size:10.5px; }
  .stat-strip { grid-template-columns:repeat(3,1fr); }
  .typy-grid { grid-template-columns:1fr; }
}

/* K-PREMATCH-KANON (02.09.2026): kolejnosc sekcji ma JEDNO zrodlo —
   config/prematch_canon.json → DOM (frontend/build_v02_match_pages.
   _assemble_match_flow). Stala tu tabela regul `order` per data-layout,
   przez ktora te same sekcje ladowaly raz nad typami tuz pod hero
   (layout pre), raz pod siatka (live/ht/ft), a na ppd para Analiza/Zajawka
   sie rozdzielala — poll JS podmienial data-layout w runtime. Usunieta,
   nie poprawiona: CSS nie przestawia sekcji flow. NIE przywracac. */
main.match-flow { display:flex; flex-direction:column; }
main.match-flow > .home-ticker-wrap { margin:0 0 14px; }

/* ===== LIVE 3-col — wizualny kanon mock live_redesign_3col =====
   Struktura zagnieżdżona (og-main | og-right), NIE jeden grid 2×3 ze spanem.
   Powód: CSS Grid `og-right { grid-row:1/3 }` przy `auto auto` rozpycha rząd 1
   do połowy wysokości prawej kolumny → pusta „dziura” pod Dynamiką (Operator 2026-08-01).
   Nested zachowuje: Dynamika szeroko u góry, Przebieg|Zawodnicy pod spodem, typy po prawej. */
.live-outer-grid {
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,26%);
  gap:14px;
  align-items:start;
  margin-bottom:16px;
}
.live-outer-grid .og-main {
  display:flex;
  flex-direction:column;
  gap:14px;
  min-width:0;
}
.live-outer-grid .og-bottom {
  display:grid;
  /* 26:48 względem pełnej szerokości ≈ 35:65 względem og-main (74%) */
  grid-template-columns:minmax(0,35.135%) minmax(0,1fr);
  gap:14px;
  align-items:start;
  min-width:0;
}
.live-outer-grid .og-dyn { min-width:0; overflow:hidden; }
.live-outer-grid .og-right {
  min-width:0; max-width:100%;
  overflow:hidden; align-self:start; z-index:1;
}
.live-outer-grid .og-left { min-width:0; overflow:hidden; }
.live-outer-grid .og-center { min-width:0; overflow-x:auto; overflow-y:visible; }
/* Mock live_redesign_3col: H/A stacked — side-by-side overflows narrow center rail */
.live-outer-grid .og-center .ps-grid { grid-template-columns:1fr; gap:14px; }
.live-outer-grid .og-center table.ps-table { min-width:0; }
.live-outer-grid .og-center table.ps-table td.pcol { max-width:160px; }
.live-outer-grid .og-center table.ps-table th,
.live-outer-grid .og-center table.ps-table td { padding:6px 4px; font-size:11.5px; }
.live-outer-grid .og-center table.ps-table th.pcol,
.live-outer-grid .og-center table.ps-table td.pcol { padding-left:9px; }
.live-outer-grid .og-dyn > .sec-momentum,
.live-outer-grid .og-left > .sec-events,
.live-outer-grid .og-center > .ps-locked,
.live-outer-grid .og-center > .sec-player-props,
.live-outer-grid .og-center > .sec-live-tips,
.live-outer-grid .og-right > .sec-our-tips,
.live-outer-grid .og-right > .sec-ai-tips,
.live-outer-grid .og-right > .sec-live-tips { margin-bottom:12px; max-width:100%; }
/* Live center: 2 compact cards per row (Operator 03.08 — not one full-width stamp). */
.live-outer-grid .og-center > .sec-player-props .pp-list {
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
}
.live-outer-grid .og-center > .sec-player-props .pp-row {
  padding:8px 10px 7px; gap:5px; border-radius:10px;
}
.live-outer-grid .og-center > .sec-player-props .pp-row-top { gap:8px; }
.live-outer-grid .og-center > .sec-player-props .pp-crest {
  width:36px; height:36px;
}
.live-outer-grid .og-center > .sec-player-props .pp-photo,
.live-outer-grid .og-center > .sec-player-props .pp-photo-fallback {
  width:32px; height:32px; font-size:11px;
}
.live-outer-grid .og-center > .sec-player-props .pp-player { font-size:12px; }
.sec-odwazne-propsy .pp-title { overflow-wrap:anywhere; }
.live-outer-grid .og-center > .sec-player-props .pp-mkt { font-size:10px; }
.live-outer-grid .og-center > .sec-player-props .pp-meta { font-size:9px; }
.live-outer-grid .og-center > .sec-player-props .pp-cur,
.live-outer-grid .og-center > .sec-player-props .pp-conf { font-size:11px; }
@media (max-width:560px) {
  .live-outer-grid .og-center > .sec-player-props .pp-list {
    grid-template-columns:1fr;
  }
}
/* Narrow right rail: stack tip cards; shrink neon typography (was full-width 3-col). */
.live-outer-grid .og-right .typy-grid {
  grid-template-columns:1fr;
  gap:8px;
}
.live-outer-grid .og-right .typ-card {
  padding:10px 12px 9px;
}
.live-outer-grid .og-right .typ-card .cat-tag {
  font-size:12px; margin-bottom:4px; letter-spacing:.04em;
  text-shadow:0 0 8px var(--glow-strong);
}
.live-outer-grid .og-right .typ-card .pick {
  font-size:16px; margin-bottom:6px; line-height:1.15;
}
.live-outer-grid .og-right .typ-card .conf-num { font-size:15px; }
.live-outer-grid .og-right .typ-card .conf-track { height:5px; }
.live-outer-grid .og-right .panel-head h2 { font-size:clamp(15px,1.6vw,18px); }
.live-outer-grid .og-right .ai-tip-card .pick,
.live-outer-grid .og-right .sec-ai-tips .pick { font-size:15px; }
.sec-live-tips .live-tip-list { display:flex; flex-direction:column; gap:8px; }
.sec-live-tips .live-tip-card {
  border:1px solid rgba(255,255,255,.08); border-radius:10px; padding:10px 12px;
  background:rgba(255,255,255,.03);
}
.sec-live-tips .live-tip-card .lt-mkt {
  font-family:"Archivo",sans-serif; font-weight:700; font-size:14px; margin-bottom:4px;
}
.sec-live-tips .live-tip-card .lt-meta {
  display:flex; gap:8px; align-items:baseline; margin-bottom:4px;
  font-family:"IBM Plex Mono",monospace; font-size:11px; color:var(--muted);
}
.sec-live-tips .live-tip-card .lt-conf { color:var(--good); font-weight:700; }
.sec-live-tips .live-tip-card .lt-why { font-size:12px; color:var(--muted); line-height:1.35; }
.sec-live-tips .live-tips-empty { font-size:13px; color:var(--muted); padding:4px 0; }
/* LIVE-1210-TYPY-HIST: historia typów meczu (po FT z werdyktem) — zwarte wiersze */
.sec-live-tips .lt-hist-head { font-size:12px; color:var(--muted); padding:2px 0; }
.sec-live-tips .live-tip-card.lt-hist { display:grid; grid-template-columns:1fr auto; column-gap:8px; align-items:center; padding:7px 10px; }
.sec-live-tips .live-tip-card.lt-hist .lt-mkt { font-size:13px; margin-bottom:2px; }
.sec-live-tips .live-tip-card.lt-hist .lt-meta { margin-bottom:0; grid-column:1; }
.sec-live-tips .live-tip-card.lt-hist .result-badge { grid-column:2; grid-row:1 / span 2; margin-bottom:0; font-size:11px; padding:3px 8px; }
.sec-player-props .pp-list {
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px;
}
@media (max-width:900px) {
  .sec-player-props .pp-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:560px) {
  .sec-player-props .pp-list { grid-template-columns:1fr; }
}
.sec-player-props .pp-list[hidden] { display:none; }
/* Odważne typy (DEC-2026-10-11-001; sekcja .sec-odwazne-propsy — nazwa techniczna bez zmian): ta sama siatka kart co panel propsów, własny akcent. */
.sec-odwazne-propsy .pp-list { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }
@media (max-width:900px) { .sec-odwazne-propsy .pp-list { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:560px) { .sec-odwazne-propsy .pp-list { grid-template-columns:1fr; } }
.sec-odwazne-propsy .pp-note { font-size:11px; color:var(--muted); margin:0 0 8px; line-height:1.3; }
.sec-odwazne-propsy .pp-row { border-color:rgba(251,146,60,.35); }
.sec-player-props .pp-empty {
  font-size:13px; color:var(--muted); padding:4px 0; line-height:1.35; grid-column:1 / -1;
}
.sec-player-props .pp-note {
  font-size:11px; color:var(--muted); margin:0 0 8px; line-height:1.3;
}
.sec-match-analysis, .sec-match-humor {
  margin-top:12px; overflow:hidden;
  border-radius:16px;
}
/* Bold dual modules (Fronciarz + Operator 2026-08-04): distinct voices, readable lead. */
.sec-match-analysis {
  border:1px solid rgba(34,211,238,.28);
  background:
    radial-gradient(ellipse at 8% -20%, rgba(34,211,238,.16), transparent 55%),
    var(--card);
}
.sec-match-humor {
  border:1px solid rgba(251,191,36,.30);
  background:
    radial-gradient(ellipse at 92% -20%, rgba(251,191,36,.14), transparent 55%),
    var(--card);
}
.sec-match-analysis[data-lifecycle="archive"],
.sec-match-humor[data-lifecycle="archive"] {
  opacity:.92;
  border-style:dashed;
}
.sec-match-analysis .panel-head, .sec-match-humor .panel-head {
  display:flex; align-items:flex-start; justify-content:space-between; gap:10px;
  margin-bottom:8px;
}
.match-content-title-wrap { min-width:0; }
.match-content-title-wrap h2 { margin:0; line-height:1.15; }
.content-badges { display:flex; flex-wrap:wrap; gap:5px; justify-content:flex-end; }
.content-badge {
  font-family:"IBM Plex Mono",monospace; font-size:10px; letter-spacing:.04em;
  padding:2px 6px; border-radius:4px; flex-shrink:0;
  background:rgba(255,255,255,.08); color:var(--muted);
}
.content-badge.partial { color:#fbbf24; background:rgba(251,191,36,.12); }
.content-badge.ready, .content-badge.ok, .content-badge.reviewed,
.content-badge.reviewed_manual_fact_fix {
  color:#22c55e; background:rgba(34,197,94,.12);
}
.content-badge.source { color:#22d3ee; background:rgba(34,211,238,.10); }
.content-badge.archive { color:var(--muted); background:rgba(255,255,255,.05); }
.match-content-lead {
  font-size:16px; line-height:1.45; color:#f4f1ea; margin:0 0 10px; font-weight:600;
}
.match-content-body {
  font-size:14px; line-height:1.5; color:#e5e7eb; margin:0; white-space:pre-wrap;
}
.match-content-more {
  margin-top:8px; border-top:1px solid rgba(255,255,255,.08); padding-top:8px;
}
.match-content-more > summary {
  cursor:pointer; list-style:none;
  font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.06em;
  text-transform:uppercase; color:var(--muted); user-select:none;
}
.match-content-more > summary::-webkit-details-marker { display:none; }
.match-content-more > summary::before { content:"▸ "; color:var(--amber); }
.match-content-more[open] > summary::before { content:"▾ "; }
.match-content-more .match-content-body { margin-top:8px; color:#d1d5db; }
@media (max-width:560px) {
  .match-content-lead { font-size:15px; }
}

/* ============ WERSJA ŚMIAŁA (.pm-bold-mod) — DEC-2026-08-08, Operator 2026-08-08 ============
   Pełny gradientowy wash tła, duże kolorowe ikony, grubszy nagłówek, eyebrow-pill, lede 21px bold.
   Analiza: opcjonalny .pm-stat-strip (4 kafelki, gdy są statystyki). Zajawka: .pm-stamp (przekrzywiona puenta-stempel).
   Ref: output/v02_style_lab/prematch_content_redesign.html (wersja śmiała). Klasy przemianowane pm-* by uniknąć kolizji z produkcją (.stat-strip). */
.pm-bold-mod {
  position:relative; border-radius:22px; padding:28px 30px 30px; margin-top:14px; overflow:hidden; isolation:isolate;
}
.pm-bold-mod.analysis {
  background:
    radial-gradient(circle, rgba(11,14,16,.5) 1.5px, transparent 1.5px) 0 0/22px 22px,
    linear-gradient(122deg, #0a2f38 0%, #0c2129 38%, #10161a 78%);
  border:1px solid rgba(34,211,238,.32);
  box-shadow: 0 40px 80px -40px rgba(34,211,238,.35), inset 0 1px 0 rgba(255,255,255,.03);
}
.pm-bold-mod.humor {
  background: linear-gradient(128deg, #3a1408 0%, #2c1006 42%, #14100c 82%);
  border:1px solid rgba(255,120,60,.32);
  box-shadow: 0 40px 80px -40px rgba(255,120,60,.3), inset 0 1px 0 rgba(255,255,255,.03);
}
/* MASKOTKA = SCENA MODUŁU (Operator 10.10): duża, kolorowa, w tle kompozycji — nie naklejka przy tytule.
   Desktop: stoi w wolnym polu po prawej (tekst ma max-width), ≤760 px: przygaszona pod tekstem w rogu. Jedna stała maskotka na moduł. */
.pm-scene { position:absolute; z-index:0; pointer-events:none; right:22px; bottom:-18px; width:230px; height:230px; --glow:rgba(34,211,238,.30); }
.pm-scene::before { content:""; position:absolute; inset:-28%; z-index:-1; background:radial-gradient(closest-side, var(--glow), transparent 72%); }
.pm-scene img { width:100%; height:100%; object-fit:contain; display:block; filter:drop-shadow(0 16px 26px rgba(0,0,0,.5)); }
.pm-bold-mod.analysis .pm-scene { --glow:rgba(34,211,238,.34); bottom:-26px; right:26px; transform:rotate(-4deg); }
.pm-bold-mod.humor .pm-scene { --glow:rgba(255,110,50,.36); top:6px; bottom:auto; right:30px; transform:rotate(7deg); }
.pm-bold-mod .pm-bm-body { max-width:min(88ch, calc(100% - 270px)); }
.pm-bold-mod .pm-bm-head { padding-right:270px; }
.pm-editorial-card { position:relative; overflow:hidden; isolation:isolate; }
.pm-editorial-card > :not(.pm-scene) { position:relative; z-index:1; }
.pm-editorial-card .pm-scene { width:170px; height:170px; right:-18px; bottom:-26px; opacity:.24; --glow:rgba(34,211,238,.35); }
.pm-editorial-card.tactical .pm-scene { --glow:rgba(255,120,60,.4); top:-22px; bottom:auto; transform:rotate(8deg); }
.pm-editorial-card.stats-tips .pm-scene { transform:rotate(-6deg); }
@media (max-width:760px) {
  .pm-bold-mod .pm-bm-body { max-width:none; }
  .pm-bold-mod .pm-bm-head { padding-right:0; }
  .pm-bold-mod .pm-scene { width:150px; height:150px; opacity:.22; right:-18px; }
  .pm-bold-mod.analysis .pm-scene { bottom:-22px; }
  .pm-bold-mod.humor .pm-scene { top:-12px; }
}
.pm-bm-head { display:flex; align-items:center; gap:14px; margin-bottom:18px; position:relative; z-index:1; }
/* K-CZTERY-BLOKI (02.09): chip `.pm-bm-eyebrow` i `.match-content-kicker`
   USUNIETE — kazdy blok mial dwa napisy jeden nad drugim („Scouting brief"
   nad „Analiza przedmeczowa"). Zostaje jeden tytul; kolor niesie tozsamosc
   bloku, ktora wczesniej niosl chip. */
.pm-bm-title { font-family:"Archivo",sans-serif; font-weight:700; font-size:19px; letter-spacing:.05em; margin:0; text-transform:uppercase; color:#fff; }
.pm-bold-mod.analysis .pm-bm-title { color:#7ceeff; }
.pm-bold-mod.humor .pm-bm-title { color:#ffbfa0; }
.pm-bm-body { max-width:88ch; position:relative; z-index:1; }
.pm-bm-lede { font-family:"DM Sans",sans-serif; font-weight:700; font-size:21px; line-height:1.42; margin:0 0 14px; color:#fff; letter-spacing:-.005em; }
.pm-bold-mod.humor .pm-bm-lede { font-style:italic; font-weight:600; }
.pm-bm-p { font-size:15.5px; line-height:1.75; margin:0 0 12px; }
.pm-bold-mod.analysis .pm-bm-p { color:#bfe9f0; }
.pm-bold-mod.humor .pm-bm-p { color:#f2d3c2; }
.pm-bm-p:last-of-type { margin-bottom:0; }
/* pm-stat-strip — 4 kafelki max (gdy są statystyki). Przemianowane z .stat-strip by uniknąć kolizji z produkcją. */
.pm-stat-strip { display:grid; grid-template-columns:repeat(4, auto); column-gap:0; row-gap:20px; margin:18px 0 22px; position:relative; z-index:1; }
.pm-stat-tile { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px; padding:2px 22px; position:relative; text-align:center; }
.pm-stat-tile:not(:nth-child(4n+1))::before { content:""; position:absolute; left:0; top:8%; bottom:8%; width:1px; background:rgba(34,211,238,.28); }
.pm-stat-tile .sv { font-family:"Rajdhani",sans-serif; font-weight:700; font-size:23px; line-height:1; color:#fff; font-variant-numeric:tabular-nums; white-space:nowrap; }
/* `sl` bez nowrap: etykieta niesie teraz właściciela liczby ("Strzały · Legia–Radomiak"),
   bo sam kafel "22–10" nie mówi czyje są te 22. Zawinięcie jest tu poprawnym zachowaniem —
   nowrap rozpychał grid poza panel. `sv` zostaje nierozdzielne (liczba się nie łamie). */
.pm-stat-tile .sl { font-family:"IBM Plex Mono",monospace; font-size:9px; letter-spacing:.05em; text-transform:uppercase; color:#8fd9e6; line-height:1.35; text-wrap:balance; }
.pm-stat-context { display:block; max-width:17rem; font-size:10px; line-height:1.35; color:#82aeb7; }
.pm-editorial-pair { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; padding:0; background:transparent; border:0; box-shadow:none; }
.pm-editorial-card { min-width:0; padding:20px 22px 22px; border-radius:16px; background:linear-gradient(135deg,#102b31,#10191d); border:1px solid rgba(34,211,238,.24); }
.pm-editorial-card.tactical { background:linear-gradient(135deg,#2b190f,#171313); border-color:rgba(255,120,60,.28); }
/* K-CZTERY-BLOKI: jeden tytul na kafel — kicker (.pm-editorial-kicker) usuniety
   razem z drugim naglowkiem, ktory go dublowal. */
.pm-editorial-title { margin:0 0 14px; font-family:"Archivo",sans-serif; font-size:15px; letter-spacing:.06em; text-transform:uppercase; line-height:1.15; color:#8fd9e6; }
.pm-editorial-card.tactical .pm-editorial-title { color:#ffbfa0; }
.pm-editorial-list { margin:0; padding-left:18px; color:#bfe9f0; font-size:14px; line-height:1.55; }
.pm-editorial-list li + li { margin-top:9px; }
.pm-editorial-question { margin:0; color:#f2d3c2; font-family:"DM Sans",sans-serif; font-size:19px; font-weight:700; line-height:1.45; }
/* Etykieta „Zapowiedź przedmeczowa” (po FT): nagłówek sekcji na całą szerokość. Bez grid-column:1/-1 trafiała
   w jedną komórkę siatki pary i wisiała sama nad pustym miejscem (Wieczysta–Płock, 10.10). */
.pm-prematch-label { grid-column:1/-1; display:flex; align-items:center; gap:10px; margin:0 0 12px; font-family:"IBM Plex Mono",monospace; font-size:10px; letter-spacing:.08em; text-transform:uppercase; line-height:1.4; color:#8fd9e6; }
.pm-prematch-label::after { content:""; flex:1 1 24px; height:1px; background:rgba(143,217,230,.22); }
.pm-editorial-pair > .pm-prematch-label { margin:0; }
@media (max-width:640px) { .pm-editorial-pair { grid-template-columns:1fr; } .pm-editorial-card { padding:18px 18px 20px; } }
/* pm-stamp — puenta Zajawki jako przekrzywiony stempel */
.pm-stamp {
  display:inline-flex; align-items:center; gap:7px; margin-top:18px; padding:8px 16px 8px 13px; border-radius:10px;
  background:linear-gradient(135deg,#ff8a5c,#ff4d2e); color:#2c0900; font-family:"Rajdhani",sans-serif; font-weight:700;
  font-size:16.5px; letter-spacing:.01em; transform:rotate(-1.6deg); box-shadow:0 10px 26px -10px rgba(255,77,46,.7);
  position:relative; z-index:1;
}
.pm-stamp svg { width:15px; height:15px; flex-shrink:0; }
/* empty-state (soon/pre bez tekstu — placeholder by Operator pamiętał uzupełnić) */
.pm-empty-txt { font-size:14px; color:var(--muted); font-style:italic; margin:0; padding:8px 0 2px; }
@media (max-width:640px) {
  .pm-bold-mod { padding:22px 20px 24px; }
  .pm-bm-lede { font-size:18px; }
  .pm-stat-strip { grid-template-columns:repeat(2, auto); row-gap:16px; }
  .pm-stat-tile { padding:2px 16px; }
  .pm-stat-tile:not(:nth-child(2n+1))::before { content:""; position:absolute; left:0; top:8%; bottom:8%; width:1px; background:rgba(34,211,238,.28); }
  .pm-stat-tile:nth-child(2n+1)::before { display:none; }
}

.pp-row {
  display:flex; flex-direction:column; gap:6px; padding:10px 12px 8px; border-radius:12px;
  border:1px solid rgba(255,255,255,.10);
  background:
    radial-gradient(ellipse at 20% -10%, rgba(34,211,238,.10), transparent 55%),
    var(--bg2);
  min-width:0; transition:transform .15s ease, border-color .15s ease;
}
.pp-row:hover { transform:translateY(-2px); border-color:rgba(34,211,238,.35); }
.pp-row-top { display:flex; align-items:center; gap:10px; min-width:0; }
.pp-photo {
  width:40px; height:40px; border-radius:50%; object-fit:cover; flex-shrink:0;
  border:1px solid rgba(255,255,255,.14); background:var(--crest-bg);
}
.pp-photo-fallback {
  width:40px; height:40px; border-radius:50%; flex-shrink:0;
  display:grid; place-items:center;
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:14px; letter-spacing:.02em;
  color:#e5e7eb; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.12);
}
/* Koszulka zastępcza w Player props: bez kółka, obwódki i tła zdjęcia (przed meczem i w układzie live); zwykłe .pp-photo zostaje okrągłe */
.pp-photo.koszulka { border:none; background:none; border-radius:0; }
.pp-icon { font-size:12px; flex-shrink:0; }
.pp-split { font-family:"IBM Plex Mono",monospace; font-size:11px; color:var(--muted); }
.pp-sub-sign { font-size:11px; font-weight:600; color:var(--muted); margin-left:6px; }
.pp-badge {
  font-family:"IBM Plex Mono",monospace; font-size:10px; padding:4px 6px; border-radius:6px;
  background:rgba(255,255,255,.08); color:var(--muted); flex-shrink:0;
}
.pp-crest {
  width:40px; height:40px; object-fit:contain; border-radius:8px;
  background:var(--crest-bg); flex-shrink:0; padding:3px;
}
.pp-foot {
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  flex-wrap:wrap; row-gap:4px; /* kółka postępu + rozbicie zawodnik/zmiennik nie mieszczą się w jednej linii na 375 px */
}
.typ-card .tip-track, .ai-chip .tip-track {
  margin-top:6px; display:flex; flex-direction:column; gap:4px;
}
.typ-card .tip-track[hidden], .ai-chip .tip-track[hidden] { display:none; }
.tip-track-chance-row {
  display:flex; align-items:baseline; justify-content:space-between; gap:8px;
  font-family:"IBM Plex Mono",monospace;
}
.tip-track-heur {
  color:var(--muted); font-size:11px; margin-right:4px; opacity:.85;
}
.tip-track-chance {
  font-size:16px; font-weight:700; color:#f8fafc; letter-spacing:.02em;
}
.tip-track-delta {
  font-size:10px; color:var(--muted); letter-spacing:.02em; white-space:nowrap;
}
.tip-track-row {
  display:flex; align-items:baseline; justify-content:space-between; gap:8px;
  font-family:"IBM Plex Mono",monospace; font-size:10px;
}
.tip-track-cur { color:#e5e7eb; }
.tip-track-lbl { color:#22d3ee; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
.tip-track-lbl.behind { color:#fbbf24; }
.tip-track-lbl.rising { color:#86efac; }
.tip-track-bar {
  height:5px; border-radius:4px; background:rgba(255,255,255,.06); overflow:hidden;
}
.tip-track-fill {
  height:100%; border-radius:4px; background:#22d3ee;
  box-shadow:0 0 8px rgba(34,211,238,.45);
}
.tip-track-fill.behind { background:#fbbf24; box-shadow:0 0 8px rgba(251,191,36,.4); }
.tip-track-fill.rising { background:#22c55e; box-shadow:0 0 8px rgba(34,197,94,.4); }
.pp-main { flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.pp-player, .pp-title { font-size:14px; font-weight:600; line-height:1.2; }
/* Operator 25/26→26/27: outgoing dimmed, NEVER strikethrough */
.pp-player-out { color:var(--muted); opacity:.55; text-decoration:none; }
/* K-PROPS-INPLAY + K-PROPS-KAFEL: pick ponizej progu zostaje, przygaszony i opisany */
.pp-lowconf { opacity:.55; }
.pp-lowconf-label {
  font-size:10px; color:#fbbf24; letter-spacing:.04em;
  text-transform:uppercase; flex-shrink:0;
}
.pp-player-arrow { color:var(--muted); font-size:11px; margin:0 2px; }
.pp-player-in { color:#fff; }
/* Minuta wejścia zmiennika na karcie L14 (X → Y), obok `pp-player-in` */
.pp-sub-min { font-family:"IBM Plex Mono",monospace; font-size:10px; color:var(--muted); letter-spacing:.02em; }
.pp-mkt { font-size:11px; color:var(--muted); text-transform:uppercase; }
.pp-meta { font-size:10px; color:var(--muted); letter-spacing:.02em; margin-top:2px; }
.pp-cur { font-family:"IBM Plex Mono",monospace; font-size:12px; color:#e5e7eb; flex-shrink:0; }
/* Kółka postępu obok „teraz N” (Operator 12.10): wypełnione = zdarzenia do tej pory, razem = tyle, ile przebija linię.
   OVER: cyjan w grze, zielony po trafieniu, po nietrafieniu niewypełnione przygaszone.
   UNDER: bursztyn = zbliżanie się do przebicia linii (limit), zielony po FT w limicie, czerwony gdy linia przebita. */
.pp-dots { display:inline-flex; align-items:center; gap:4px; flex-shrink:0; margin-right:auto; }
.pp-dots i {
  display:block; width:10px; height:10px; border-radius:50%; box-sizing:border-box;
  border:1.5px solid rgba(255,255,255,.35); background:transparent;
}
.pp-dots i.on { background:#22d3ee; border-color:#22d3ee; }
.pp-dots-under i.on { background:#fbbf24; border-color:#fbbf24; }
.pp-dots-hit i.on { background:#22c55e; border-color:#22c55e; }
.pp-dots-bust i.on { background:#94a3b8; border-color:#94a3b8; }
.pp-dots-bust i:not(.on) { opacity:.3; }
.pp-conf { font-family:"IBM Plex Mono",monospace; font-size:12px; font-weight:700; min-width:34px; text-align:right; flex-shrink:0; }
.pp-conf[title] { cursor:help; }
/* Wynik propsa (Operator 18.10: pokazujemy pozytywy, wyróżniamy je).
   Trafiony = podświetlona zielona ramka + pełna zielona plakietka „Trafiony ✓” (`.pp-win`).
   Nietrafiony = stonowana, wyszarzona karta, bez napisu i bez czerwieni. */
.pp-hit {
  border-color:color-mix(in srgb, var(--good) 70%, transparent);
  background:radial-gradient(ellipse at 20% -10%, color-mix(in srgb, var(--good) 22%, transparent), transparent 60%), color-mix(in srgb, var(--good) 9%, transparent);
  box-shadow:0 0 0 1px color-mix(in srgb, var(--good) 28%, transparent), 0 4px 16px color-mix(in srgb, var(--good) 14%, transparent);
}
.pp-hit:hover { border-color:color-mix(in srgb, var(--good) 90%, transparent); }
.pp-conf.pp-win {
  min-width:auto; font-family:"Rajdhani",sans-serif; font-size:13px; font-weight:700; letter-spacing:.04em; line-height:1;
  color:#04210f; background:var(--good); border-radius:999px; padding:5px 12px 4px;
}
.pp-bust {
  border-color:rgba(255,255,255,.06); background:var(--bg2); opacity:.7; filter:grayscale(.75);
}
.pp-bust:hover { transform:none; border-color:rgba(255,255,255,.1); }
/* Werdykt karty zawodnika po FT (19.10): stonowany napis, bez czerwieni i bez zielonej plakietki. */
.pp-conf.pp-miss { font-family:"Rajdhani",sans-serif; font-size:12px; font-weight:700; letter-spacing:.04em; line-height:1; color:var(--muted); border:1px solid rgba(255,255,255,.15); border-radius:999px; padding:4px 10px 3px; min-width:auto; }
.pp-ontrack .pp-conf { color:#22d3ee; }
.pp-behind .pp-conf { color:#fbbf24; }
.pp-nodata .pp-conf, .pp-pending .pp-conf { color:var(--muted); }
/* K-PREMATCH-KANON: reguly `order` per data-layout usuniete — patrz komentarz
   przy main.match-flow. Kolejnosc = kanon → DOM. */
@media (max-width:1080px) {
  .live-outer-grid { grid-template-columns:1fr; }
  .live-outer-grid .og-bottom { grid-template-columns:1fr; }
}
.ev-expand-btn {
  display:block; width:100%; margin-top:10px; padding:10px 12px;
  font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.06em;
  text-transform:uppercase; color:var(--muted); background:var(--chip);
  border:1px solid var(--line); border-radius:10px; cursor:pointer;
}
.ev-expand-btn:hover { color:var(--ink); border-color:rgba(244,241,234,.28); }
.ev-more[hidden] { display:none !important; }

.sec-momentum[hidden] { display:none !important; }
.sec-momentum .panel-head { margin-bottom:12px; }
/* Row 1 = crests | SVG | % (aligned to chart mid-axis).
   Row 2 = time labels under SVG only — so crests/% are NOT biased downward
   by 0′/45′/90′ (root cause of mobile/desktop asymmetry). */
.dyn-row {
  display:grid;
  grid-template-columns:56px minmax(0,1fr) 40px;
  grid-template-rows:auto auto;
  column-gap:12px; row-gap:4px;
  align-items:stretch;
  --dyn-crest-gap: 38px; /* desktop: breathe off mid-axis (Operator 2026-07-29) */
  --dyn-pct-gap: 26px;
}
.dyn-crests { grid-column:1; grid-row:1; position:relative; min-height:0; }
.dyn-chart-wrap { grid-column:2; grid-row:1; min-width:0; position:relative; }
.dyn-pcts { grid-column:3; grid-row:1; position:relative; min-height:0; }
.dyn-axis { grid-column:2; grid-row:2; }
.dyn-crest {
  position:absolute; left:50%; top:50%;
  width:52px; height:52px; object-fit:contain;
  border-radius:50%; background:#1a1d24;
  border:1px solid var(--line); padding:5px;
  box-sizing:border-box;
}
.dyn-crest.h {
  transform:translate(-50%, calc(-50% - var(--dyn-crest-gap)));
}
.dyn-crest.a {
  transform:translate(-50%, calc(-50% + var(--dyn-crest-gap)));
}
.dyn-pct {
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:15px;
  font-variant-numeric:tabular-nums; letter-spacing:.02em; line-height:1;
  position:absolute; left:50%; top:50%;
}
.dyn-pct.h {
  color:var(--home-soft);
  transform:translate(-50%, calc(-50% - var(--dyn-pct-gap)));
}
.dyn-pct.a {
  color:var(--away-soft);
  transform:translate(-50%, calc(-50% + var(--dyn-pct-gap)));
}
.dyn-svg {
  width:100%; height:auto; display:block; overflow:visible;
}
/* Gole i kartki na Dynamice: pas nad (gospodarz) i pod (gość) wykresem, ikony w pikselach CSS (nie w jednostkach viewBox) */
.dyn-chart-wrap { --dyn-pad: calc(22px + var(--xr, 0) * 22px); }
.dyn-chart-wrap.has-ev { padding: var(--dyn-pad) 0; }
.dyn-evs { position:absolute; inset:0; pointer-events:none; }
.dyn-e { position:absolute; left:var(--x); width:22px; height:22px; display:grid; place-items:center; transform:translateX(calc(-50% - var(--c, 0) * 24px)); }
.dyn-e-h { top:calc(var(--xr, 0) * 22px - var(--r, 0) * 22px); }
.dyn-e-a { bottom:calc(var(--xr, 0) * 22px - var(--r, 0) * 22px); }
.dyn-e img { width:22px; height:22px; display:block; filter:drop-shadow(0 1px 2px rgba(0,0,0,.6)); }
.dyn-e i { display:block; width:13px; height:18px; border-radius:2px; background:#ffb400; box-shadow:0 1px 3px rgba(0,0,0,.6); }
.dyn-e-rc i { background:#ff5c5c; }

.dyn-axis {
  display:flex; justify-content:space-between;
  font-family:"IBM Plex Mono",monospace; font-size:10px; color:var(--muted);
  padding:0 2px;
}
.dyn-tooltip {
  position:absolute; pointer-events:none; z-index:10; background:#05060a;
  border:1px solid var(--line); border-radius:8px; padding:7px 10px;
  font-family:"IBM Plex Mono",monospace; font-size:11px; color:var(--ink);
  opacity:0; transform:translate(-50%,-100%); white-space:nowrap;
  box-shadow:0 8px 20px rgba(0,0,0,.4);
}
.dyn-tooltip.on { opacity:1; }
@media (max-width:720px) {
  .sec-momentum .panel-head { margin-bottom:16px; }
  .dyn-row {
    grid-template-columns:34px minmax(0,1fr) 30px;
    column-gap:6px; row-gap:2px;
    --dyn-crest-gap: 18px;
    --dyn-pct-gap: 18px;
  }
  .dyn-crest { width:28px; height:28px; padding:2px; }
  .dyn-pct { font-size:12px; }
}

/* Match events timeline — newest first; minute hugs icon, names get the rest */
.events-timeline { display:flex; flex-direction:column; gap:0; width:100%; max-width:none; }
.ev-row {
  display:grid;
  grid-template-columns:2.35rem 1.35rem auto minmax(0,1fr);
  column-gap:8px; align-items:center; padding:8px 0;
  border-top:1px solid var(--line); font-size:13px;
}
.ev-row:first-child { border-top:0; }
/* VAR badge is wider than YC square — give it room so it doesn't kiss the club name */
.ev-row[data-type="var"],
.ev-row[data-type="var_card"] {
  grid-template-columns:2.35rem 2.7rem auto minmax(0,1fr);
}
/* Doliczony czas („90+10'"): szersza kolumna minuty TYLKO w tych wierszach (nie zabieramy szerokości tekstu we wszystkich) */
.ev-row.ev-ext { grid-template-columns:3rem 1.35rem auto minmax(0,1fr); }
.ev-row.ev-ext[data-type="var"],
.ev-row.ev-ext[data-type="var_card"] { grid-template-columns:3rem 2.7rem auto minmax(0,1fr); }
/* Telefon: wątek VAR/kartka skorygowana nie dostaje wąskiej czwartej kolumny (litery w osobnych liniach, QA 24.10 poz. 13) — tekst w drugiej linii na całą szerokość wiersza */
@media (max-width:420px) {
  .ev-row[data-type="var"] .ev-txt,
  .ev-row[data-type="var_card"] .ev-txt { grid-column:1 / -1; margin-top:2px; overflow-wrap:normal; }
}
.ev-min {
  font-family:"IBM Plex Mono",monospace; font-size:12px; color:var(--amber);
  font-variant-numeric:tabular-nums; text-align:right; justify-self:stretch;
}
.ev-ico {
  display:inline-flex; align-items:center; justify-content:center;
  min-width:16px; min-height:16px; gap:2px;
  font-size:15px; line-height:1; justify-self:start;
}
.events-timeline .card-ico { width:11px; height:14px; border-radius:2px; }
.ev-ball {
  display:block; width:16px; height:16px; object-fit:contain; flex-shrink:0;
}
.ev-ico.goal .ev-ball { filter:drop-shadow(0 0 3px rgba(61,214,140,.30)); }
.ev-ico.miss { color:#f87171; font-weight:700; font-size:13px; }
.ev-ico.sub {
  flex-direction:column; gap:3px; width:14px; font-size:inherit;
}
.ev-ico.var {
  font-family:"IBM Plex Mono",monospace; font-size:9px; font-weight:700;
  letter-spacing:.06em; color:#fde047;
  border:1px solid rgba(253,224,71,.45); border-radius:4px;
  padding:2px 5px; line-height:1.15;
  box-sizing:border-box; justify-self:start;
}
.ev-sub-up, .ev-sub-down {
  width:0; height:0; display:block;
  filter:drop-shadow(0 0 1px rgba(0,0,0,.55));
}
.ev-sub-up {
  border-left:6px solid transparent; border-right:6px solid transparent;
  border-bottom:8px solid #3dd68c;
}
.ev-sub-down {
  border-left:6px solid transparent; border-right:6px solid transparent;
  border-top:8px solid #ff5c5c;
}
.ev-club {
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:12px;
  letter-spacing:.04em; text-transform:uppercase; color:var(--muted);
  white-space:nowrap; justify-self:start; max-width:5.2rem;
  overflow:hidden; text-overflow:ellipsis;
}
.ev-row[data-side="home"] .ev-club { color:#86efac; }
.ev-row[data-side="away"] .ev-club { color:#93c5fd; }
.ev-txt {
  min-width:0; color:#e8e6e1; line-height:1.3; text-align:left;
  overflow-wrap:break-word;
}
.ev-txt .ev-rel { color:var(--muted); font-size:12px; }
/* Powód decyzji VAR (Operator 12.09.2026) — ton jak ev-rel, bez krzyku. */
.ev-txt .ev-var-reason { color:var(--muted); font-size:12px; }
.ev-txt .ev-staff { font-style:italic; opacity:.9; }
.ev-txt .ev-assist { color:rgba(244,241,234,.72); font-size:12px; }
.ev-txt .ev-keep { white-space:nowrap; }
.ev-txt .ev-team { font-size:12px; font-weight:700; color:var(--muted); }
.ev-row[data-side="home"] .ev-txt .ev-team { color:#86efac; }
.ev-row[data-side="away"] .ev-txt .ev-team { color:#93c5fd; }
.ev-txt .ev-score {
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:14px;
  color:var(--good); font-variant-numeric:tabular-nums; white-space:nowrap;
  letter-spacing:.02em; margin-right:7px;
}
.events-empty { color:var(--muted); font-size:13px; padding:6px 0 2px; }
.narration-block {
  display:flex; flex-direction:column; gap:6px; width:100%; margin-bottom:8px;
}
.narration-row {
  display:block; width:100%; box-sizing:border-box; white-space:normal;
  padding:9px 11px; border-radius:8px;
  background:rgba(59,130,246,.07); border:1px solid rgba(59,130,246,.22);
}
.narration-minute {
  font-family:"IBM Plex Mono",monospace; font-size:11px; color:#60a5fa; font-weight:700;
}
.narration-text { font-size:13px; line-height:1.4; color:#e5e7eb; }
.commentary-block {
  display:flex; flex-direction:column; gap:4px; width:100%; margin-top:8px;
}
.commentary-row {
  display:block; width:100%; box-sizing:border-box; white-space:normal;
  padding:7px 10px; border-radius:6px;
  background:rgba(255,180,0,.05); border:1px solid rgba(255,180,0,.18);
}
/* Zwinięta reszta komentarzy (K-COMMENTS-CAP). `.commentary-block` jest flexem,
   więc samo `hidden` bywa nadpisane przez `display` dziecka — stąd !important,
   tak samo jak przy `.ev-more`. */
.cm-more { display:flex; flex-direction:column; gap:4px; width:100%; }
.cm-more[hidden] { display:none !important; }
.commentary-minute {
  font-family:"IBM Plex Mono",monospace; font-size:10px; color:#ffb400; font-weight:700;
  letter-spacing:.02em;
}
/* Club tag on a commentary line. Same green/blue side coding as the event
   list, so "whose action" reads identically in both feeds. Empty when the club
   could not be established — the span then collapses and adds no gap. */
.commentary-club {
  font-family:"Rajdhani",sans-serif; font-weight:700; font-size:10px;
  letter-spacing:.04em; text-transform:uppercase; color:var(--muted);
}
/* margin PO OBU stronach — bylo tylko z lewej, wiec nazwa klubu sklejala sie
   z tekstem: "CRACOVIAGoal!", "WIECZYSTATobiasz Mras" (zgloszone przez
   Operatora 21.08 ze zrzutu ekranu). */
.commentary-club:not(:empty) { margin-left:6px; margin-right:6px; }
.commentary-row[data-side="home"] .commentary-club { color:#86efac; }
.commentary-row[data-side="away"] .commentary-club { color:#93c5fd; }
.commentary-text { font-size:12px; line-height:1.35; color:#cbd5e1; font-style:italic; }
/* PODSUMOWANIE po FT (zamiast tickera) = wydarzenie: etykieta i relacja (wynik i strzelcy są w hero); maskotka jako scena w tle */
.sec-summary { margin:0 0 14px; }
.pm-summary { position:relative; overflow:hidden; isolation:isolate; padding:24px 28px 26px; border-radius:22px;
  background:radial-gradient(120% 90% at 100% 0%, rgba(0,229,192,.16), transparent 60%), linear-gradient(128deg,#0b2a27 0%,#0c1c20 48%,#10151a 100%);
  border:1px solid rgba(0,229,192,.34); box-shadow:0 40px 80px -44px rgba(0,229,192,.4), inset 0 1px 0 rgba(255,255,255,.03); }
.pm-summary > :not(.pm-scene) { position:relative; z-index:1; }
.pm-summary .pm-scene { --glow:rgba(0,229,192,.34); right:26px; bottom:-20px; width:220px; height:220px; transform:rotate(5deg); }
.sm-eyebrow { font:600 11px/1.3 "IBM Plex Mono",monospace; letter-spacing:.16em; text-transform:uppercase; color:#5fe8cf; margin-bottom:12px; }
.pm-summary .summary-text { margin:0; max-width:min(88ch, calc(100% - 250px)); font-size:16px; line-height:1.72; color:#d3eeea; padding-left:14px; border-left:3px solid rgba(0,229,192,.5); }
@media (max-width:760px) {
  .pm-summary { padding:20px 18px 22px; }
  .pm-summary .pm-scene { width:150px; height:150px; opacity:.2; right:-16px; }
  .pm-summary .summary-text { max-width:none; font-size:15.5px; }
}
.mod-mascot { width:48px; height:48px; flex:none; display:block; object-fit:contain; }
/* „PRZEŁOŻONY MECZ KOLEJKI N" na herze strony meczowej (01.09.2026, prośba
   Operatora z 31.08). Ten sam badge co w listingu /mecze/ — tam styluje go
   INDEX_EXTRA_CSS, której strona meczowa nie wczytuje, więc reguła musi być
   też tutaj. Bez niej badge renderował się jako goły tekst.
   03.09.2026 (LIVE Raków–Górnik, Operator): badge przeniesiony z `.kick-status`
   (zegar + faza) do `.kick-core` przy dacie, NAD wynik — przy zegarze
   rozjeżdżał minutę live i fazę. */
.kick-core .fx-zal {
  display:block; margin:2px 0 4px; color:var(--amber);
  font-family:"IBM Plex Mono",monospace; font-size:10px;
  letter-spacing:.08em; text-transform:uppercase; line-height:1.3;
}
/* kurs przy typie (K-KD-KURSY-MECZE): pod kartą typu i chipem AI; „kurs czeka na ofertę”, gdy producent nie ma jeszcze ceny */
.typ-card .kurs-row, .ai-chip .kurs-row { margin-top:6px; font:500 11px/1.2 "IBM Plex Mono",monospace; color:var(--muted); }
.kurs-row span { text-transform:uppercase; letter-spacing:.1em; font-size:10px; }
.kurs-row b { color:var(--ink); font-weight:600; font-size:13px; font-variant-numeric:tabular-nums; }
.kurs-row.kurs-czeka { opacity:.85; }
.pp-foot .kurs-row { margin-top:0; margin-right:8px; white-space:nowrap; }

/* QA 10.10 (375 px): hero i mini-tabela mieszczą się w kontenerze */
@media (max-width:560px) {
  /* hero: strzelcy pod wynikiem (środkowa kolumna), nie po bokach — nic nie wystaje poza kartę */
  .match-hero .hero-top,
  .match-hero:has(.kick[data-has-scorers="1"]) .hero-top { grid-template-columns:minmax(0,1fr) minmax(0,1fr); padding:12px 10px 18px; gap:12px 6px; align-items:start; } /* 11.10: .kick zajmuje cały pierwszy wiersz (reguła ≤720 px), więc 3 kolumny zostawiały pustą prawą i drużyny uciekały w lewo */
  .match-hero .team-name { font-size:clamp(20px,6.2vw,26px); overflow-wrap:anywhere; }
  .match-hero .crest-md { width:64px; height:64px; padding:8px; }
  /* 12.10 (Operator): strzelcy pod wynikiem w DWÓCH kolumnach — gospodarze do lewej (pod lewą połową hero), goście do prawej (pod prawą);
     wcześniej jedna wyśrodkowana kolumna nad drugą i nie było wiadomo, czyj to strzelec. Minuta nie jest już ucinana (zawijanie zamiast ellipsis). */
  .match-hero .kick { grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:6px 8px; }
  .match-hero .kick-core { grid-column:1 / -1; }
  .match-hero .sc-col.home, .match-hero .sc-col.away { grid-row:2; align-self:start; justify-self:stretch; width:auto; max-width:100%; }
  .match-hero .sc-col.home { grid-column:1; align-items:flex-start; text-align:left; }
  .match-hero .sc-col.away { grid-column:2; align-items:flex-end; text-align:right; }
  /* 23.10: nazwiska nie przy samej krawędzi karty (padding w kolumnie) i nie 10 px; break-word zamiast anywhere = bez łamania w środku słowa, gdy da się zawinąć między słowami */
  .match-hero .sc-col.home, .match-hero .sc-col.away { padding-inline:6px; }
  .match-hero .sc-col .sc-line { white-space:normal; overflow:visible; text-overflow:clip; overflow-wrap:break-word; font-size:11px; text-shadow:0 1px 2px rgba(0,0,0,.75); }
  .match-hero .sc-col .sc-line .min { white-space:nowrap; }
  /* mini-tabela: bez W/R/P i formy (jest na stronach klubów), reszta w całości */
  table.mini-table { min-width:0; }
  table.mini-table thead th, table.mini-table td { padding:10px 6px; }
  table.mini-table thead th:nth-child(n+4):nth-child(-n+6), table.mini-table tbody td:nth-child(n+4):nth-child(-n+6),
  table.mini-table thead th:nth-child(9), table.mini-table tbody td:nth-child(9) { display:none; }
}

/* ŁAWKA (zakładka Statystyk zawodników): rezerwowi z numerem, pozycją, zdjęciem/koszulką; stan zmiany dopisuje applyPitchBench */
.lw-wrap { display:grid; gap:10px; }
.lw-status { font:600 11px/1.3 "IBM Plex Mono",monospace; letter-spacing:.1em; text-transform:uppercase; color:#8fd9e6; }
.lw-grid { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:14px; }
.lw-h { display:flex; align-items:center; gap:8px; margin:0 0 6px; font:700 15px/1.2 "Rajdhani",sans-serif; letter-spacing:.08em; text-transform:uppercase; color:#e8f3f6; }
.lw-crest { width:26px; height:26px; flex:none; object-fit:contain; display:block; }
.lw-list { list-style:none; margin:0; padding:0; display:grid; gap:4px; }
.lw-row { display:grid; grid-template-columns:34px 22px minmax(0,1fr) auto; align-items:center; column-gap:8px; row-gap:2px; padding:5px 8px; border-radius:10px; background:rgba(255,255,255,.035); border:1px solid transparent; }
.lw-av { grid-row:1 / span 2; width:34px; height:34px; display:block; }
.lw-av .ps-av { width:34px; height:34px; border-radius:50%; object-fit:cover; display:block; }
.lw-av .ps-av.koszulka { border-radius:0; background:none; border:none; }
.lw-num { font:700 14px/1 "Rajdhani",sans-serif; color:#9fb4bd; text-align:center; font-variant-numeric:tabular-nums; }
.lw-name { font-size:14px; line-height:1.2; color:#e8f3f6; overflow-wrap:anywhere; }
.lw-pos { font:600 10px/1 "IBM Plex Mono",monospace; letter-spacing:.08em; color:#7f98a3; }
.lw-st { grid-column:3 / -1; display:flex; flex-wrap:wrap; gap:6px; align-items:center; min-height:0; }
.lw-st:empty { display:none; }
.lw-badge { font:700 11px/1.2 "IBM Plex Mono",monospace; letter-spacing:.04em; display:inline-flex; align-items:center; gap:4px; }
.lw-badge.in { color:#3dffb0; } .lw-badge.out { color:#9fb4bd; }
.lw-stats { font-size:12px; color:#bcd0d7; }
.lw-in { background:rgba(61,255,176,.08); border-color:rgba(61,255,176,.28); }
.lw-out { opacity:.62; }
.lw-inj { width:16px; height:16px; flex:none; }
.lw-empty { padding:14px 4px; color:var(--muted); font-size:14px; }
@media (max-width:560px) { .lw-grid { grid-template-columns:1fr; } }
.lw-none { padding:8px 4px; color:var(--muted); font-size:13px; }

/* ZAWODNIK MECZU (po FT, wygląd zatwierdzony przez Operatora 19.10): pole barw klubu, tabliczki, kafle statystyk, miniatury 2–3 w barwach swoich klubów; zmienne --field/--deep/--ac ustawia applyMotm */
.sec-motm{position:relative;overflow:hidden;margin:0 0 14px;padding:0;border-radius:24px;border:0;background:var(--deep);box-shadow:0 24px 60px -28px #000;isolation:isolate;--ac:#9a958c;--deep:#12141a;--field:#2a2f38;--muted:#a3a8a2}
.motm-fld{position:relative;background:var(--field);padding:16px 22px 58px;clip-path:polygon(0 0,100% 0,100% calc(100% - 34px),0 100%);min-height:236px}
.motm-fld::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.0) 40%,rgba(0,0,0,.32));pointer-events:none}
.motm-fld.split::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(0,0,0,.22) .7px,transparent .9px);background-size:3.5px 3.5px;opacity:.55;mix-blend-mode:multiply;pointer-events:none}
.motm-fld>*{position:relative;z-index:1}
.motm-cr{position:absolute!important;right:14px;top:6px;width:178px;height:178px;object-fit:contain;z-index:0!important;filter:drop-shadow(0 8px 16px rgba(0,0,0,.35))}
.motm-tag{display:inline-flex;align-items:center;gap:10px;padding:7px 22px 7px 12px;background:#0c0e10;color:#fff;transform:skewX(-10deg);box-shadow:5px 5px 0 var(--ac),0 12px 24px -10px rgba(0,0,0,.6);border-radius:2px}
.motm-tag>*{transform:skewX(10deg)}
.motm-tag svg{width:26px;height:26px;fill:var(--ac);flex:none;filter:drop-shadow(0 0 6px color-mix(in srgb,var(--ac) 60%,transparent))}
.motm-tag b{font:400 30px/1 "Bebas Neue",sans-serif;letter-spacing:.07em;text-transform:uppercase}
.motm-idr{display:flex;align-items:flex-end;gap:16px;margin-top:14px}
.motm-phw{position:relative;flex:none;width:122px;height:122px}
.sec-motm .p{display:block;width:118px;height:118px;border-radius:50%;object-fit:cover;border:5px solid #fff;background:#0c0e10;box-shadow:0 10px 24px -8px rgba(0,0,0,.55)}
.sec-motm .p.sh{display:grid;place-items:center;overflow:hidden}
.sec-motm .p.sh .motm-shirt{width:84px;height:84px}
.motm-no{position:absolute;right:-2px;bottom:2px;min-width:40px;height:40px;padding:0 6px;border-radius:99px;background:#0c0e10;color:#fff;border:3px solid #fff;display:grid;place-items:center;font:700 18px "Rajdhani",sans-serif}
.motm-np{background:#0c0e10;color:#fff;padding:8px 18px 10px 16px;transform:skewX(-8deg);margin-bottom:6px;max-width:100%}
.motm-np>*{transform:skewX(8deg)}
.motm-np span{display:block;font:500 16px "DM Sans",sans-serif;opacity:.85}
.motm-np h3{margin:0;font:400 54px/.9 "Bebas Neue",sans-serif;letter-spacing:.02em;overflow-wrap:anywhere}
.motm-rtp{position:absolute;right:22px;bottom:44px;background:var(--ac);color:#0c0e10;padding:6px 18px 8px;transform:skewX(-8deg) rotate(-3deg);box-shadow:0 10px 22px -10px rgba(0,0,0,.6);z-index:2}
.motm-rtp>*{display:block;transform:skewX(8deg)}
.motm-rtp b{font:400 62px/.85 "Bebas Neue",sans-serif}
.motm-rtp small{font:700 12px "DM Sans",sans-serif;letter-spacing:.06em;text-transform:uppercase;text-align:center}
.motm-mt{position:absolute;left:22px;bottom:38px;margin:0;display:inline-block;background:rgba(12,14,16,.82);color:#fff;padding:5px 12px;border-radius:3px;font-size:13px;z-index:2}
.motm-mt b{font-weight:700;margin-right:6px}
.motm-dk{position:relative;padding:0 22px 20px;margin-top:-6px;z-index:2}
.motm-tbs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.motm-tb{display:grid;grid-template-columns:auto 1fr;border-radius:12px;overflow:hidden;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);min-width:0}
.motm-tb.best{border-color:var(--ac)}
.motm-pl{display:grid;place-items:center;min-width:76px;padding:0 10px;background:rgba(0,0,0,.34);border-right:1px solid rgba(255,255,255,.1)}
.motm-tb.best .motm-pl{background:var(--ac)}
.motm-tb.best .motm-n{color:#0c0e10}
.motm-n{font:700 44px/1 "Rajdhani",sans-serif;font-variant-numeric:tabular-nums;white-space:nowrap}
.motm-n.mid{font-size:36px}
.motm-n.long{font-size:28px}
.motm-tt{display:grid;gap:5px;padding:9px 12px 9px;align-content:center;min-width:0}
.motm-th{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.motm-lb{font:600 15px/1.15 "DM Sans",sans-serif}
.motm-bd{font:700 11px "DM Sans",sans-serif;font-style:normal;padding:2px 8px;border-radius:99px;white-space:nowrap}
.motm-bd{background:var(--ac);color:#0c0e10}

.motm-bar{height:6px;border-radius:99px;background:rgba(255,255,255,.14);overflow:hidden}
.motm-bar i{display:block;height:100%;max-width:100%;border-radius:99px;background:linear-gradient(90deg,color-mix(in srgb,var(--ac) 50%,#fff),var(--ac))}
.motm-tt small{font:500 12.5px/1.2 "DM Sans",sans-serif;color:#b6bbb4;min-height:1.2em}
.motm-tb.best small{color:color-mix(in srgb,var(--ac) 65%,#fff)}
.motm-nd{margin:10px 0 0;font-size:12px;color:var(--muted)}
.motm-next{margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,.12);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.motm-wl{grid-column:1 / -1;font:600 13px "DM Sans",sans-serif;color:var(--muted)}
.motm-r{position:relative;overflow:hidden;isolation:isolate;display:grid;grid-template-columns:22px 56px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 12px 12px 14px;border-radius:14px;background:var(--field);border:1px solid rgba(255,255,255,.18);box-shadow:0 10px 24px -14px #000}
.motm-r::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,7,13,.62) 0%,rgba(5,7,13,.35) 60%,rgba(5,7,13,0) 100%);z-index:-1}
.motm-r>i{font:700 20px "Rajdhani",sans-serif;color:#fff;font-style:normal;opacity:.9}
.sec-motm .motm-r .p{width:52px;height:52px;border-width:2px}
.sec-motm .motm-r .p.sh .motm-shirt{width:38px;height:38px}
.motm-rn{min-width:0;display:grid;gap:2px}
.motm-rn b{font:700 16px/1.1 "Rajdhani",sans-serif;letter-spacing:.03em;text-transform:uppercase;overflow-wrap:anywhere}
.motm-rn small{font:600 11.5px "DM Sans",sans-serif;color:var(--muted)}
.motm-rx{display:flex;flex-wrap:wrap;gap:2px 10px;font-size:12px;color:#b6bbb4}
.motm-rx b{color:#fff;font-weight:600}
.motm-r em{font-style:normal;background:var(--ac);color:#0c0e10;padding:4px 12px 5px;border-radius:6px;transform:skewX(-8deg);box-shadow:0 6px 14px -6px rgba(0,0,0,.6);text-align:center}
.motm-r em>*{display:block;transform:skewX(8deg)}
.motm-r em b{font:400 38px/.9 "Bebas Neue",sans-serif}
.motm-r em small{font:700 10px "DM Sans",sans-serif;letter-spacing:.06em;text-transform:uppercase}
.motm-rcr{position:absolute;right:-8px;top:50%;transform:translateY(-50%);width:150px;height:150px;object-fit:contain;opacity:.6;z-index:-2;pointer-events:none}
.motm-rn small{color:#d5d9d3!important}
.motm-rx{color:#e6e9e4!important}
@media(max-width:760px){.motm-fld{padding:14px 12px 112px;min-height:350px}.motm-tag b{font-size:22px}.motm-tag svg{width:20px;height:20px}.motm-tag{padding:6px 16px 6px 10px}.motm-cr{width:150px;height:150px;right:8px;top:10px}.motm-idr{gap:12px;margin-top:20px}.motm-phw{width:104px;height:104px}.sec-motm .p{width:100px;height:100px;border-width:4px}.sec-motm .p.sh .motm-shirt{width:70px;height:70px}.motm-no{min-width:30px;height:30px;font-size:14px}.motm-np h3{font-size:42px}.motm-np span{font-size:13px}.motm-np{padding:6px 12px 8px}.motm-rtp{right:12px;bottom:70px}.motm-rtp b{font-size:56px}.motm-mt{left:14px;bottom:30px;font-size:12px;max-width:calc(100% - 28px)}.motm-dk{padding:0 12px 14px}.motm-tbs{grid-template-columns:1fr}.motm-next{grid-template-columns:1fr}.motm-pl{min-width:68px}.motm-n{font-size:40px}.motm-n.mid{font-size:32px}.motm-n.long{font-size:24px}}
.sec-motm .motm-nm{display:block;text-align:left;justify-content:flex-start;margin:0;padding:0;font:400 54px/.9 "Bebas Neue",sans-serif;letter-spacing:.02em;text-transform:none;color:#fff;overflow-wrap:anywhere}
@media(max-width:760px){.sec-motm .motm-nm{font-size:42px}}
.hm-item a.hm-ref { color:inherit; text-decoration:underline dotted; text-underline-offset:3px; }
.hm-item a.hm-ref:hover, .hm-item a.hm-ref:focus-visible { color:var(--amber, #ffb400); }

/* Pelna analiza przedmeczowa (EKSPERYMENT ZAP-V2-1510): zwiniete <details> pod zapowiedzia. Telefon 375 px: tabela przewija sie
   we wlasnym kontenerze, tekst lamie sie normalnie, cel dotyku summary >= 44 px. */
.sec-pelna-analiza { padding:0; }
.sec-pelna-analiza .pa-summary {
  display:flex; align-items:center; min-height:48px; padding:10px 18px; cursor:pointer; list-style:none;
  font-family:"Archivo",sans-serif; font-weight:700; font-size:clamp(15px,1.6vw,18px); letter-spacing:.04em;
  text-transform:uppercase; color:var(--ink);
}
.sec-pelna-analiza .pa-summary::-webkit-details-marker { display:none; }
.sec-pelna-analiza .pa-summary::after { content:"+"; margin-left:auto; font-size:22px; color:var(--muted); }
.sec-pelna-analiza details[open] > .pa-summary::after { content:"\2212"; }
.sec-pelna-analiza .pa-body { padding:4px 18px 18px; overflow-wrap:anywhere; overflow-x:clip; }
.sec-pelna-analiza .pa-sek h3 {
  font-family:"Archivo",sans-serif; font-weight:700; font-size:15px; letter-spacing:.05em; text-transform:uppercase;
  color:var(--muted); margin:18px 0 8px;
}
.sec-pelna-analiza .pa-body p { font-size:15.5px; line-height:1.75; margin:0 0 12px; }
.sec-pelna-analiza .pa-tabela-wrap { overflow-x:auto; margin:0 0 14px; -webkit-overflow-scrolling:touch; }
.sec-pelna-analiza .pa-tabela { border-collapse:collapse; width:100%; table-layout:fixed; font-size:14px; }
.sec-pelna-analiza .pa-tabela th, .sec-pelna-analiza .pa-tabela td { border-bottom:1px solid var(--line); padding:8px 8px; text-align:left; }
.sec-pelna-analiza .pa-tabela thead th { font-weight:700; font-size:13px; line-height:1.25; overflow-wrap:normal; word-break:normal; hyphens:none; vertical-align:bottom; }
.sec-pelna-analiza .pa-tabela thead th:first-child, .sec-pelna-analiza .pa-tabela tbody th { width:34%; }
.sec-pelna-analiza .pa-tabela tbody th { font-weight:500; color:var(--muted); white-space:normal; }
/* Forma: te same kropki co w hero (.form-dot w|d|l — jeden generator utils/forma_pl.kropki_html); ostatni mecz = ostatnia kropka z prawej, delikatnie obwiedziona zamiast napisu „od najnowszego” */
.sec-pelna-analiza .pa-forma { margin:14px 0 4px; }
.sec-pelna-analiza .pa-forma-h { font:700 12px "IBM Plex Mono",monospace; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); margin:0 0 8px; }
.sec-pelna-analiza .pa-forma-h small { font:500 10.5px "Archivo",sans-serif; letter-spacing:0; text-transform:none; margin-left:6px; opacity:.85; }
.sec-pelna-analiza .pa-forma-g { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.sec-pelna-analiza .pa-forma-n { display:block; font-size:12.5px; color:var(--muted); margin:0 0 6px; overflow-wrap:normal; }
.sec-pelna-analiza .pa-forma-kropki { display:flex; gap:4px; flex-wrap:nowrap; }

/* Góra „Tła” Pełnej analizy: tabela + H2H w dwóch kolumnach, porównanie sezonu na całą szerokość (jedno źródło: zestawienie_sezonu). */
.sec-pelna-analiza .pa-gora { position:relative; isolation:isolate; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px 34px; align-items:start; margin:0 0 14px; }
.sec-pelna-analiza .pa-gora .pa-tabela-wrap { margin:0; }
.sec-pelna-analiza .pa-gora-zs { grid-column:1/-1; margin-top:14px; padding-top:12px; border-top:1px solid var(--line); }
.sec-pelna-analiza .pa-body .zs-note, .sec-pelna-analiza .pa-body .zs-zakres, .sec-pelna-analiza .pa-body .pa-h2h-brak { font-size:12.5px; line-height:1.5; }
.sec-pelna-analiza .pa-body .pa-h2h-brak { font-size:14px; }
.sec-pelna-analiza .pa-body .pa-gora-zs .zs-note { margin:16px 0 0; }
.sec-pelna-analiza .pa-body .zs-zakres { margin:0 0 10px; color:var(--muted); }
.sec-pelna-analiza .pa-h2h-h { display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 10px; font:700 12px "IBM Plex Mono",monospace; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); margin:0 0 6px; }
.sec-pelna-analiza .pa-h2h-h small { font:500 10.5px "Archivo",sans-serif; letter-spacing:0; text-transform:none; }
.sec-pelna-analiza .pa-h2h-b { margin-left:auto; font:700 12px "IBM Plex Mono",monospace; letter-spacing:.04em; text-transform:none; color:var(--ink); }
.sec-pelna-analiza .pa-h2h-l { list-style:none; margin:0; padding:0; font-size:14px; }
.sec-pelna-analiza .pa-h2h-l li { display:grid; grid-template-columns:84px minmax(0,1fr) auto; gap:10px; align-items:baseline; padding:7px 0; border-bottom:1px solid var(--line); }
.sec-pelna-analiza .pa-h2h-d { color:var(--muted); font-size:12.5px; font-variant-numeric:tabular-nums; }
.sec-pelna-analiza .pa-h2h-s { font:700 17px "Rajdhani",sans-serif; font-variant-numeric:tabular-nums; }
.sec-pelna-analiza .pa-body .pa-h2h-brak { margin:0; color:var(--muted); }
/* Mapa wyników 0–5 × 0–5 (Operator 22.10): kolor komórki = kto wygrywa (barwy klubów), intensywność = prawdopodobieństwo. */
.sec-pelna-analiza .pa-mapa { grid-column:1/-1; margin-top:14px; padding-top:12px; border-top:1px solid var(--line); }
.sec-pelna-analiza .pa-mapa-h { display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 10px; font:700 12px "IBM Plex Mono",monospace; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); margin:0 0 10px; }
.sec-pelna-analiza .pa-mapa-h small { font:500 10.5px "Archivo",sans-serif; letter-spacing:0; text-transform:none; }
.sec-pelna-analiza .pa-mapa-g { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(0,1fr); gap:6px 34px; align-items:start; }
.sec-pelna-analiza .pa-mapa-g.solo { grid-template-columns:minmax(0,640px); }
.sec-pelna-analiza .pa-mapa-lewa { min-width:0; } .sec-pelna-analiza .pa-mapa-lewa .pa-ma-top { margin:0 0 12px; }
.sec-pelna-analiza .pa-ma-top { display:flex; flex-wrap:wrap; align-items:center; gap:10px 36px; margin:0 0 14px; padding:12px 18px; border-radius:14px; background:rgba(255,255,255,.04); border:1px solid var(--line); }
.sec-pelna-analiza .pa-ma-glowny { display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 16px; } .sec-pelna-analiza .pa-ma-glowny .pa-ma-etykieta { flex:1 0 100%; }
.sec-pelna-analiza .pa-ma-reszta { display:flex; flex-wrap:wrap; align-items:center; gap:6px 28px; min-width:0; } .sec-pelna-analiza .pa-ma-reszta .pa-ma-lam { flex:1 0 100%; }
.sec-pelna-analiza .pa-mapa-sedzia { display:flex; flex-direction:column; align-items:center; gap:8px; } .sec-pelna-analiza .pa-mapa-sedzia.solo { align-items:flex-start; }
.sec-pelna-analiza .pa-mapa-sedzia .ks { margin:0; } .sec-pelna-analiza .pa-mapa-sedzia .ks-note { max-width:360px; margin:0; font-size:12px; text-align:center; }
.sec-pelna-analiza .pa-ma-os { font:600 11px "IBM Plex Mono",monospace; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); }
.sec-pelna-analiza .pa-ma-os-a { text-align:right; margin-bottom:4px; } .sec-pelna-analiza .pa-ma-os-h { margin-bottom:4px; }
.sec-pelna-analiza .pa-ma-cells { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:3px; }
.sec-pelna-analiza .pa-mc { position:relative; isolation:isolate; display:flex; flex-direction:column; align-items:center; justify-content:center; aspect-ratio:1.7; border-radius:6px; overflow:hidden; background:rgba(255,255,255,.03); }
.sec-pelna-analiza .pa-mc::before { content:""; position:absolute; inset:0; z-index:-1; background:var(--c, #c9d1da); opacity:var(--i); }
.sec-pelna-analiza .pa-mc.h { --c:var(--ma-h, var(--zs-hc)); } .sec-pelna-analiza .pa-mc.a { --c:var(--ma-a, var(--zs-ac)); } .sec-pelna-analiza .pa-mc.d { --c:#7b8696; }
.sec-pelna-analiza .pa-mc b { font:700 15px/1 "Rajdhani",sans-serif; color:var(--ink); text-shadow:0 1px 3px rgba(0,0,0,.6); }
.sec-pelna-analiza .pa-mc i { font:600 10.5px/1.2 "IBM Plex Mono",monospace; font-style:normal; color:var(--ink); text-shadow:0 1px 3px rgba(0,0,0,.7); }
.sec-pelna-analiza .pa-mc.top { outline:2px solid var(--ink); outline-offset:-2px; }
.sec-pelna-analiza .pa-ma-etykieta { font:700 12px "IBM Plex Mono",monospace; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); }
.sec-pelna-analiza .pa-ma-wynik { font:700 54px/1 "Rajdhani",sans-serif; color:var(--ink); }
.sec-pelna-analiza .pa-ma-p { font-size:14px; color:var(--muted); margin:0; }
.sec-pelna-analiza .pa-ma-inne { list-style:none; margin:0; padding:0; display:flex; gap:14px; }
.sec-pelna-analiza .pa-ma-inne li { display:flex; align-items:baseline; gap:6px; } .sec-pelna-analiza .pa-ma-inne b { font:700 20px "Rajdhani",sans-serif; } .sec-pelna-analiza .pa-ma-inne span { font-size:13px; color:var(--muted); }
.sec-pelna-analiza .pa-ma-szanse { display:flex; flex-wrap:wrap; gap:4px 12px; font:600 13px "Archivo",sans-serif; margin:0; }
.sec-pelna-analiza .pa-ma-szanse .h { color:var(--zs-hc); } .sec-pelna-analiza .pa-ma-szanse .a { color:var(--zs-ac); } .sec-pelna-analiza .pa-ma-szanse .d { color:var(--muted); }
.sec-pelna-analiza .pa-ma-lam { font-size:12px; color:var(--muted); }
@media (max-width:899px) { .sec-pelna-analiza .pa-mapa-g { grid-template-columns:minmax(0,1fr); } .sec-pelna-analiza .pa-ma-wynik { font-size:46px; } .sec-pelna-analiza .pa-ma-top { padding:10px 14px; gap:8px 20px; } .sec-pelna-analiza .pa-mapa-sedzia { align-items:stretch; } .sec-pelna-analiza .pa-mapa-sedzia .ks { max-width:none; } .sec-pelna-analiza .pa-mc b { font-size:14px; } .sec-pelna-analiza .pa-mc i { font-size:10.5px; } }

/* Maskotki w tle tekstu (22.10): duże, blade, po jednej stronie sekcji; tekst zawsze nad nimi. */
.sec-pelna-analiza .pa-sek { position:relative; isolation:isolate; }
.sec-pelna-analiza .pa-mask { position:absolute; bottom:0; width:230px; height:230px; object-fit:contain; opacity:.13; z-index:-1; pointer-events:none; }
.sec-pelna-analiza .pa-mask-r { right:-8px; } .sec-pelna-analiza .pa-mask-l { left:-8px; }
@media (max-width:899px) { .sec-pelna-analiza .pa-mask { width:130px; height:130px; opacity:.1; } }

/* Główny tekst: pierwsze zdanie jako lede, reszta w dwóch szpaltach (≥1000 px), żeby nie było jednej ściany tekstu. */
.sec-pelna-analiza .pa-body .pa-lede { font-size:19px; line-height:1.5; font-weight:600; color:var(--ink); margin:2px 0 14px; padding-left:14px; border-left:3px solid var(--zs-hc, var(--ink)); max-width:62ch; }
.sec-pelna-analiza .pa-kol p { max-width:72ch; }
@media (min-width:1000px) { .sec-pelna-analiza .pa-kol { column-count:2; column-gap:44px; column-rule:1px solid var(--line); } .sec-pelna-analiza .pa-kol p { max-width:none; break-inside:avoid-column; } .sec-pelna-analiza .pa-kol.pa-kol-1 { column-count:1; column-rule:0; } .sec-pelna-analiza .pa-kol.pa-kol-1 p { max-width:96ch; } }
@media (max-width:899px) { .sec-pelna-analiza .pa-body .pa-lede { font-size:17px; } }
@media (max-width:899px) { .sec-pelna-analiza .pa-gora { grid-template-columns:minmax(0,1fr); } }
.sec-pelna-analiza .pa-herb { position:absolute; top:-6px; width:230px; height:230px; object-fit:contain; opacity:.085; z-index:-1; pointer-events:none; }
.sec-pelna-analiza .pa-herb-h { left:-40px; } .sec-pelna-analiza .pa-herb-a { right:-40px; }
.sec-pelna-analiza .pa-tabela thead th:nth-child(2) { box-shadow:inset 0 -3px 0 var(--zs-hc); }
.sec-pelna-analiza .pa-tabela thead th:nth-child(3) { box-shadow:inset 0 -3px 0 var(--zs-ac); }
.sec-pelna-analiza .pa-kursy { grid-column:1/-1; margin:0 0 8px; }
.sec-pelna-analiza .pa-kursy-h { display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 10px; font:700 12px "IBM Plex Mono",monospace; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); margin:0 0 6px; }
.sec-pelna-analiza .pa-kursy-h small { font:500 10.5px "Archivo",sans-serif; letter-spacing:0; text-transform:none; }
.sec-pelna-analiza .pa-kursy-g { margin-top:12px; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.sec-pelna-analiza .pa-k { position:relative; display:flex; flex-direction:column; justify-content:center; align-items:center; gap:4px; padding:10px 12px; border-top:3px solid var(--line); background:rgba(255,255,255,.035); border-radius:0 0 8px 8px; }
.sec-pelna-analiza .pa-k-1 { border-top-color:var(--zs-hc); } .sec-pelna-analiza .pa-k-2 { border-top-color:var(--zs-ac); }
.sec-pelna-analiza .pa-k-n { font-size:15px; font-weight:600; color:var(--ink); min-width:0; overflow-wrap:anywhere; text-align:center; }
.sec-pelna-analiza .pa-k-v { font:700 26px/1 "Rajdhani",sans-serif; font-variant-numeric:tabular-nums; }
.sec-pelna-analiza .pa-k.fav { background:rgba(255,255,255,.09); }
.sec-pelna-analiza .pa-k.fav .pa-k-v { color:var(--ink); text-shadow:0 0 14px rgba(255,255,255,.25); }
.sec-pelna-analiza .pa-k-fav { position:absolute; top:-9px; right:8px; padding:1px 7px; border-radius:99px; background:var(--ink); color:#0b0d12; font:700 9.5px "IBM Plex Mono",monospace; letter-spacing:.08em; text-transform:uppercase; font-style:normal; }
@media (max-width:899px) { .sec-pelna-analiza .pa-herb { width:120px; height:120px; } .sec-pelna-analiza .pa-k { padding:9px 6px; } .sec-pelna-analiza .pa-k-n { font-size:13.5px; } .sec-pelna-analiza .pa-k-v { font-size:22px; } }

@media (min-width:900px) { .zs-sec>summary { pointer-events:none; } }
.sec-pelna-analiza .pa-typy { margin:6px 0 0; padding-left:20px; font-size:14.5px; }
.sec-pelna-analiza .pa-stopka { font-size:12.5px !important; color:var(--muted); margin:14px 0 0 !important; }
@media (max-width:640px) {
  .sec-pelna-analiza .pa-summary { padding:10px 14px; }
  .sec-pelna-analiza .pa-body { padding:2px 14px 16px; }
  .sec-pelna-analiza .pa-body p { font-size:15px; }
}

/* Limit typów: 8 widocznych, reszta w „Pokaż pozostałe N” (typy_limit.py) */
.typy-wiecej { grid-column:1 / -1; flex:1 1 100%; margin-top:2px; }
.typy-wiecej-sum {
  list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:center; gap:8px;
  min-height:48px; padding:0 16px; border:1px dashed var(--glow-line, rgba(255,255,255,.18)); border-radius:12px;
  font-family:"IBM Plex Mono",monospace; font-size:12px; letter-spacing:.08em; text-transform:uppercase; color:var(--muted);
}
.typy-wiecej-sum::-webkit-details-marker { display:none; }
.typy-wiecej-sum::after { content:"+"; font-size:18px; }
.typy-wiecej[open] > .typy-wiecej-sum::after { content:"\2212"; }
.typy-wiecej-sum:focus-visible { outline:2px solid var(--accent, #22d3ee); outline-offset:2px; }
.typy-grid .typy-wiecej-body { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.ai-typy-row .typy-wiecej-body { display:flex; flex-wrap:wrap; gap:10px; }
.live-outer-grid .og-right .typy-grid .typy-wiecej-body { grid-template-columns:1fr; gap:8px; }
@media (max-width:860px) { .typy-grid .typy-wiecej-body { grid-template-columns:repeat(2,1fr); } }
@media (max-width:720px) { .typy-grid .typy-wiecej-body { grid-template-columns:1fr; } }
.typy-wiecej[open] > .typy-wiecej-sum { margin-bottom:10px; }

/* Zawodnik meczu: klub z herbem + pozycja w nagłówku, miejsca 2–3 jako wiersze z kluczowymi liczbami */
.motm-top { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.motm-team { display:inline-flex; align-items:center; gap:8px; min-width:0; }
.motm-crest { width:22px; height:22px; object-fit:contain; flex:none; }
.motm-club { font:600 12px "IBM Plex Mono",monospace; letter-spacing:.08em; text-transform:uppercase; color:#cfd6d3; overflow-wrap:anywhere; }
.motm-pos { font:600 10px "IBM Plex Mono",monospace; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); padding:2px 7px; border:1px solid rgba(255,255,255,.14); border-radius:99px; }
.motm-r { display:grid; grid-template-columns:20px auto minmax(0,1fr) auto; grid-template-areas:"i c n e" ". x x x"; align-items:center; column-gap:8px; row-gap:4px; padding:8px 10px; border-radius:12px; background:rgba(255,255,255,.04); }
.motm-r > i { grid-area:i; font:700 15px "Rajdhani",sans-serif; color:var(--ac2); font-style:normal; }
.motm-r .motm-crest { grid-area:c; width:20px; height:20px; }
.motm-r .motm-club { display:none; }
.motm-rn { grid-area:n; min-width:0; display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
.motm-rn b { color:var(--ink); font-weight:600; }
.motm-rn small { font:600 10px "IBM Plex Mono",monospace; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); }
.motm-r > em { grid-area:e; font:700 20px "Rajdhani",sans-serif; color:var(--ac2); font-style:normal; }
.motm-rx { grid-area:x; display:flex; flex-wrap:wrap; gap:4px 12px; font-size:12px; color:var(--muted); }
.motm-rx b { color:var(--ink); font-weight:600; }
/* Zestawienie sezonu (wariant A, Operator 18.10): 3 sekcje obok siebie + Dom i wyjazd w 2 kolumnach; telefon: sekcje rozwijane jedna pod drugą */
.sec-zestawienie,.pa-gora{--zs-hc:#22d3ee;--zs-ac:#ff9a3d}
.zs-top{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-bottom:10px;border-bottom:1px solid var(--line, #262a33)}
.zs-tm{display:flex;align-items:center;gap:10px;min-width:0}.zs-tm.r{text-align:right;justify-content:flex-end}.zs-tm img{width:34px;height:34px;object-fit:contain;flex:none}
.zs-tm b{font:700 24px/1 "Rajdhani",sans-serif;letter-spacing:.05em;text-transform:uppercase;overflow-wrap:anywhere}.zs-tm small{display:block;font:600 10px "IBM Plex Mono",monospace;letter-spacing:.08em;color:var(--muted);text-transform:uppercase}
.zs-a3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:34px;margin-top:14px;align-items:start}
.zs-sec>summary{list-style:none;cursor:default}.zs-sec>summary::-webkit-details-marker{display:none}
.zs-sh{font:700 11px "IBM Plex Mono",monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);padding-bottom:5px;border-bottom:1px solid var(--line, #262a33);margin:0 0 4px}
.zs-r{display:grid;grid-template-columns:70px minmax(0,1fr) 70px;align-items:center;gap:8px;padding:11px 0}
.zs-v{font:700 28px/1 "Rajdhani",sans-serif;color:#cfd6d3;font-variant-numeric:tabular-nums}.zs-v.l{text-align:left}.zs-v.r{text-align:right}.zs-v.best{color:#3dffb0;text-shadow:0 0 12px rgba(61,255,176,.4)}
.zs-mid{display:grid;gap:5px;min-width:0}.zs-mid>span{text-align:center;font:600 10.5px "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.zs-bars{display:grid;grid-template-columns:1fr 1fr;gap:3px;height:7px}.zs-bars i{display:block;height:100%;border-radius:99px;background:#39414d}.zs-bars .bl{justify-self:end}.zs-bars .br{justify-self:start}
.zs-bars i.best{background:linear-gradient(90deg,#00e5c0,#3dffb0);box-shadow:0 0 8px rgba(61,255,176,.5)}
.zs-dw{margin-top:26px}.zs-a2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:34px}.zs-a2 .zs-r{padding:8px 0}.zs-a2 .zs-v{font-size:25px}
.zs-dwh{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:8px 0 2px}.zs-dwh span{font:700 15px "Rajdhani",sans-serif;letter-spacing:.06em;text-transform:uppercase;display:flex;align-items:center;gap:8px}
.zs-dwh .a{justify-content:flex-end;text-align:right}.zs-dwh .h::before,.zs-dwh .a::after{content:"";width:10px;height:10px;border-radius:50%;flex:none}.zs-dwh .h::before{background:var(--zs-hc)}.zs-dwh .a::after{background:var(--zs-ac)}
.zs-note{margin:12px 0 0;font-size:12px;color:var(--muted)}
@media (max-width:899px){
 .zs-a3,.zs-a2{grid-template-columns:1fr;gap:0}.zs-sec{border-bottom:1px solid var(--line, #262a33)}
 .zs-sec>summary{display:flex;justify-content:space-between;align-items:center;min-height:48px;cursor:pointer;margin:0;border:0;color:var(--ink)}
 .zs-sec>summary::after{content:"+";font-size:20px;color:var(--muted)}.zs-sec[open]>summary::after{content:"\2212"}
 .zs-r{grid-template-columns:62px minmax(0,1fr) 62px;padding:9px 0}.zs-v,.zs-a2 .zs-v{font-size:25px}.zs-dwh2{display:none}.zs-dw{margin-top:0}.zs-tm b{font-size:20px}.zs-dwh span{font-size:13px}
}

/* RODZINA BETBUILDERÓW (K-BB-RODZINA; karty jak Typ dnia, makieta /kd/bb-rodzina/): frontend/bb_rodzina_ui.py */
.bbx { --bbor:#ff6b00; --bbrd:#ff4d5a; color:#f4f1ea; }
.bbx > h2 { font:700 30px/1 "Rajdhani",sans-serif; margin:0 0 6px; letter-spacing:.02em; }
.bbx .bbx-lead { margin:0 0 16px; color:#a3a8a2; font-size:14px; max-width:640px; }
.bbx-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.bb { position:relative; display:grid; gap:12px; padding:18px 18px 14px; border-radius:24px; background:radial-gradient(circle at 15% 0%,color-mix(in srgb,var(--ac) 22%,#0e1118),#0b0d13 62%); border:1px solid color-mix(in srgb,var(--ac) 50%,#262a33); box-shadow:0 30px 60px -40px var(--ac); min-width:0; }
.bb-safe { --ac:var(--bbor); } .bb-risky { --ac:var(--bbrd); }
.bb header { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; }
.bb-stamp { display:inline-block; transform:rotate(-3deg); padding:5px 13px; border-radius:6px; background:var(--ac); color:#1b0a00; font:700 20px/1 "Rajdhani",sans-serif; letter-spacing:.12em; text-transform:uppercase; }
.bb-risky .bb-stamp { color:#fff; }
.bb-when { margin-left:auto; font:600 11px/1.4 "IBM Plex Mono",monospace; letter-spacing:.1em; text-transform:uppercase; color:#cfd3cf; text-align:right; }
.bb-sc { margin:0; font:500 16px/1.4 "DM Sans",sans-serif; color:#e6e9e4; }
.bb-legs { list-style:none; margin:0; padding:0; display:grid; gap:8px; }
.bb-legs li { display:grid; grid-template-columns:40px minmax(0,1fr) auto; align-items:center; gap:12px; padding:9px 12px; border-radius:14px; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.14); }
.bb-ic { justify-self:center; width:30px; height:30px; display:block; } .bb-ic svg { width:100%; height:100%; display:block; }
.bb-ph { width:40px; height:40px; border-radius:50%; object-fit:cover; border:2px solid #fff; background:#0c0e10; }
.bb-l { font:500 16px/1.25 "DM Sans",sans-serif; min-width:0; overflow-wrap:anywhere; } .bb-l b { font-weight:700; }
.bb-k { font:700 22px/1 "Rajdhani",sans-serif; font-variant-numeric:tabular-nums; color:#fff; }
.bb footer { display:flex; align-items:flex-end; justify-content:space-between; gap:12px; }
.bb-take { font:700 15px/1.3 "DM Sans",sans-serif; color:var(--ac); filter:brightness(1.25); }
.bb-ticket { position:relative; flex:none; padding:8px 20px 8px 24px; border-radius:10px; background:#f4f1ea; color:#0b0c0e; font:700 13px "IBM Plex Mono",monospace; letter-spacing:.1em; text-transform:uppercase; }
.bb-ticket::before, .bb-ticket::after { content:""; position:absolute; top:50%; width:12px; height:12px; margin-top:-6px; border-radius:50%; background:#0b0d13; }
.bb-ticket::before { left:-6px; } .bb-ticket::after { right:-6px; }
.bb-ticket b { display:block; font:700 34px/1 "Rajdhani",sans-serif; letter-spacing:.02em; }
.bb-res { font:700 13px "DM Sans",sans-serif; padding:3px 10px; border-radius:99px; background:rgba(255,255,255,.08); color:#cfd3cf; border:1px solid rgba(255,255,255,.25); }
.bb-res.y { background:rgba(46,229,157,.16); color:#2ee59d; border-color:rgba(46,229,157,.4); } .bb-res.n { background:rgba(255,77,90,.16); color:#ff8a93; border-color:rgba(255,77,90,.4); }
.bb-legs li.bbl-r { grid-template-columns:40px minmax(0,1fr) auto 26px; }
.bb-r { font:700 16px/1 sans-serif; width:26px; height:26px; display:grid; place-items:center; border-radius:50%; font-style:normal; background:rgba(255,255,255,.12); color:#cfd3cf; } .bb-r.y { background:#2ee59d; color:#052b1b; } .bb-r.n { background:#ff4d5a; color:#fff; }
.bb-note { margin:0; font:500 12px/1.4 "DM Sans",sans-serif; color:#8d96a4; }
@media (max-width:820px) { .bbx-grid { grid-template-columns:1fr; } .bb-sc, .bb-l { font-size:15px; } }
/* CHMURKA ZAWODNIKA (po kliknięciu nazwiska ze zdarzenia; makieta zatwierdzana przez Operatora): okienko przy nazwisku na desktopie, arkusz od dołu na telefonie */
.pl-ref-on { cursor:pointer; border-bottom:1px dotted rgba(255,255,255,.55); text-underline-offset:3px; }
.pl-ref-on:hover, .pl-ref-on:focus-visible { border-bottom-color:#5aa0ff; color:#fff; outline:none; }
.chm-bd { position:fixed; inset:0; background:rgba(3,5,9,.55); z-index:90; opacity:0; pointer-events:none; transition:opacity .18s; }
.chm-bd.on { opacity:1; pointer-events:auto; }
.chm { position:fixed; z-index:91; width:340px; max-width:calc(100vw - 24px); background:#0f131b; color:#f4f1ea; border:1px solid rgba(255,255,255,.14); border-radius:20px; box-shadow:0 30px 70px -20px #000; overflow:hidden; opacity:0; transform:translateY(6px) scale(.98); pointer-events:none; transition:opacity .16s, transform .16s; }
.chm.on { opacity:1; transform:none; pointer-events:auto; }
.chm-top { position:relative; display:grid; grid-template-columns:72px minmax(0,1fr); gap:14px; align-items:center; padding:16px 44px 14px 16px; background:var(--cf); }
.chm-top::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg,rgba(5,7,13,.55),rgba(5,7,13,.15)); pointer-events:none; }
.chm-top > * { position:relative; z-index:1; }
.chm-ph { width:72px; height:72px; border-radius:50%; object-fit:cover; border:3px solid #fff; background:#0c0e10; }
.chm-sh { display:grid; place-items:center; overflow:hidden; }
.chm-shirt { width:52px; height:52px; }
.chm-nm { margin:0; padding:0; font:700 30px/.95 "Rajdhani",sans-serif; letter-spacing:.03em; text-transform:uppercase; overflow-wrap:anywhere; color:#fff; }
.chm-meta { margin:4px 0 0; font:600 13px "DM Sans",sans-serif; color:#e8ecf2; }
.chm-meta b { font-weight:700; }
.chm-x { position:absolute; right:8px; top:6px; width:44px; height:44px; border:0; background:transparent; color:#fff; font:400 26px/1 sans-serif; cursor:pointer; z-index:3; }
.chm-nums { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); padding:12px 8px 4px; }
.chm-n { text-align:center; padding:4px 2px; }
.chm-n b { display:block; font:700 30px/1 "Rajdhani",sans-serif; font-variant-numeric:tabular-nums; }
.chm-n span { display:block; margin-top:3px; font:600 12px "DM Sans",sans-serif; color:#aab2bf; }
.chm-cap { margin:0; padding:2px 16px 12px; font:500 12px "DM Sans",sans-serif; color:#8d96a4; }
.chm-go { display:flex; align-items:center; justify-content:center; gap:8px; margin:0 14px 14px; min-height:48px; border-radius:12px; background:var(--ca); color:#0c0e10; font:700 15px "DM Sans",sans-serif; text-decoration:none; }
@media (max-width:640px) { .chm { left:0 !important; right:0; bottom:0; top:auto !important; width:auto; max-width:none; border-radius:22px 22px 0 0; transform:translateY(100%); transition:transform .22s ease, opacity .16s; }
  .chm.on { transform:none; } .chm-nm { font-size:32px; } }

/* Karta sędziego meczu (INTEL #2576) jako gablota: panel jak reszta strony, karta wyśrodkowana pod reflektorem barwy rzadkości. Selektory z `main` wygrywają z KARTA_CSS (dołączony po match.css). */
main .ks-sec { background:radial-gradient(55% 80% at 50% 38%, rgba(255,200,61,.10), transparent 72%), var(--card); border:1px solid var(--line); border-radius:16px; padding:18px; margin:0 0 14px; display:grid; justify-items:center; gap:2px; }
main .ks-sec h2 { justify-self:start; font:700 22px "Archivo",sans-serif; letter-spacing:.04em; margin:0 0 12px; }
main .ks-sec .ks { margin:4px 0 6px; }
main .ks-sec .ks-note { max-width:60ch; text-align:center; margin:10px 0 0; }

/* Zapowiedź audio w hero: okrągły „play” z pierścieniem postępu (22.10). Slot: osobny wiersz pod `.hero-top`, nie dotyka `.kick-core` (zegar LIVE). */
.hero-play { display:flex; align-items:center; justify-content:center; gap:14px; margin:6px auto 2px; padding:8px 18px 8px 8px; width:fit-content; max-width:100%; border-radius:999px; background:rgba(8,10,15,.55); border:1px solid rgba(255,255,255,.14); backdrop-filter:blur(6px); }
.zp-btn { position:relative; flex:none; width:56px; height:56px; padding:0; border:0; border-radius:50%; background:#fff; color:#0b0d12; cursor:pointer; display:grid; place-items:center; box-shadow:0 6px 18px rgba(0,0,0,.35); transition:transform .15s ease; }
.zp-btn:hover { transform:scale(1.06); } .zp-btn:focus-visible { outline:3px solid #fff; outline-offset:3px; }
.zp-ring { position:absolute; inset:0; width:100%; height:100%; transform:rotate(-90deg); pointer-events:none; }
.zp-ring-bg { fill:none; stroke:rgba(255,255,255,.35); stroke-width:3; } .zp-ring-fg { fill:none; stroke:var(--host, #ff6b00); stroke-width:4; stroke-linecap:round; }
.zp-ico { position:relative; width:24px; height:24px; fill:#0b0d12; } .zp-ico-pause { display:none; }
.hero-play[data-stan="gra"] .zp-ico-play { display:none; } .hero-play[data-stan="gra"] .zp-ico-pause { display:block; }
.zp-txt { display:flex; flex-direction:column; line-height:1.2; text-align:left; }
.zp-txt b { font:700 15px "Archivo",sans-serif; color:#fff; } .zp-czas { font:600 13px "IBM Plex Mono",monospace; color:rgba(255,255,255,.75); font-variant-numeric:tabular-nums; }
.hero-play[data-stan="blad"] .zp-czas { color:#ffb199; }
.match-hero[data-phase=live] .hero-play, .match-hero[data-phase=ht] .hero-play, .match-hero[data-phase=ft] .hero-play, .match-hero[data-phase=interrupted] .hero-play, .hero-play[hidden] { display:none; }
@media (prefers-reduced-motion:reduce) { .zp-btn { transition:none; } }
@media (max-width:520px) { .hero-play { padding:6px 14px 6px 6px; gap:10px; } .zp-btn { width:50px; height:50px; } .zp-txt b { font-size:14px; } }

/* Teczka meczu (VAR dla predyktora) — po FT. Nietrafiony = stonowany, bez czerwieni (zasada kart typów); akcent bursztynowy tylko na „Wpadka”. */
.sec-teczka { position:relative; border-left:3px solid #5fe8cf; }
.sec-teczka .tm-lead { font-size:15px; line-height:1.5; margin:0 0 14px; color:var(--ink); }
.sec-teczka .tm-lead b { font-family:"IBM Plex Mono",monospace; font-weight:600; }
.sec-teczka .tm-komplet { font-size:15px; margin:0 0 12px; color:var(--ink); font-weight:600; }
.tm-wpadka { background:var(--chip); border:1px solid var(--line); border-radius:10px; padding:12px 14px; margin:0 0 10px; }
.tm-wpadka h3 { font:600 15px/1.35 "DM Sans",sans-serif; margin:0 0 4px; color:var(--ink); }
.tm-wpadka h3::before { content:"VAR"; font:700 10px/1 "IBM Plex Mono",monospace; letter-spacing:.14em; color:#0b0c0e; background:#f5b94a; border-radius:4px; padding:3px 5px; margin-right:8px; vertical-align:2px; }
.tm-fakt { font:500 12.5px/1.4 "IBM Plex Mono",monospace; color:var(--muted); margin:0 0 6px; }
.tm-czynnik { font-size:13.5px; line-height:1.5; margin:0 0 6px; color:var(--ink); }
.tm-czynnik span { display:block; font:600 10px/1.3 "IBM Plex Mono",monospace; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); margin-bottom:2px; }
.tm-humor { font-size:13px; font-style:italic; color:var(--muted); margin:0; }
.tm-nota { font-size:11.5px; color:var(--muted); margin:12px 0 0; }
.tm-trafienie { background:var(--chip); border:1px solid var(--line); border-radius:10px; padding:12px 14px; margin:0 0 10px; }
.tm-trafienie h3 { font:600 15px/1.35 "DM Sans",sans-serif; margin:0 0 4px; color:var(--ink); }
.tm-trafienie h3::before { content:"WESZŁO"; font:700 10px/1 "IBM Plex Mono",monospace; letter-spacing:.14em; color:#0b0c0e; background:#5fe8cf; border-radius:4px; padding:3px 5px; margin-right:8px; vertical-align:2px; }

/* Karta sędziego tylko przed meczem: strona zbudowana przed gwizdkiem nie trzyma jej po starcie (ten sam mechanizm co przycisk „play”: data-phase na hero). */
.match-hero[data-phase=live] ~ .ks-sec, .match-hero[data-phase=ht] ~ .ks-sec, .match-hero[data-phase=ft] ~ .ks-sec, .match-hero[data-phase=interrupted] ~ .ks-sec { display:none; }

/* Karta sędziego w mapie wyników znika po gwizdku jak osobna sekcja `.ks-sec` (strona zbudowana przed meczem zostaje w przeglądarce po zmianie data-phase na hero). */
.match-hero[data-phase=live] ~ .sec-pelna-analiza .pa-mapa-sedzia, .match-hero[data-phase=ht] ~ .sec-pelna-analiza .pa-mapa-sedzia,
.match-hero[data-phase=ft] ~ .sec-pelna-analiza .pa-mapa-sedzia, .match-hero[data-phase=interrupted] ~ .sec-pelna-analiza .pa-mapa-sedzia { display:none; }
/* Operator 23.10: w trakcie meczu i po nim etykieta siły sprzed meczu („Wstępny / Stabilny / Mocny sygnał”) znika —
   przy szansie na żywo (.tip-track) wprowadzała w błąd („wstępny” przy 99%). Przed meczem bez zmian; nowy system etykiet w przeglądzie. */
.match-flow:is([data-layout="live"], [data-layout="ht"], [data-layout="ft"], [data-layout="interrupted"]) .typ-card .conf-row,
.match-flow:is([data-layout="live"], [data-layout="ht"], [data-layout="ft"], [data-layout="interrupted"]) .ai-chip .ai-pct { display:none; }
/* Typy Live po FT: bilans w nagłówku historii + rozwijany blok z resztą wierszy */
.sec-live-tips .lt-hist-bilans { color:var(--good); font-weight:700; }
.sec-live-tips .lt-hist-more > summary { cursor:pointer; font-size:12px; color:var(--muted); padding:6px 0; }
.sec-live-tips .lt-hist-more[open] > summary { padding-bottom:4px; }

.sbv2-cell .cards-rule { margin-top:4px; font-size:11px; line-height:1.3; color:var(--muted); text-align:center; }

/* Player BB „2 z 3” (26.10): po FT wiersz przy każdej parze — która weszła */
.bb-pary { list-style:none; margin:10px 0 0; padding:10px 0 0; border-top:1px dashed var(--line); display:grid; gap:6px; }
.bb-pary li { display:flex; flex-wrap:wrap; align-items:center; gap:4px 10px; font-size:13px; }
.bb-pary .bb-pa-n { flex:1 1 140px; min-width:0; overflow-wrap:anywhere; }
.bb-pary b { font:700 15px/1 "Rajdhani",sans-serif; font-variant-numeric:tabular-nums; }
.bb-pary .bb-pa-w { font:700 12px "DM Sans",sans-serif; padding:3px 10px; border-radius:99px; background:rgba(255,255,255,.08); color:#cfd3cf; border:1px solid rgba(255,255,255,.12); white-space:nowrap; }
.bb-pary .bb-pa-w.y { background:rgba(46,229,157,.16); color:#2ee59d; border-color:rgba(46,229,157,.4); } .bb-pary .bb-pa-w.n { background:rgba(255,77,90,.16); color:#ff6b78; border-color:rgba(255,77,90,.4); }
/* Typ AI (D8, 26.10): „prognoza” przy nazwie i widoczny czas odczytu kursu (telefon nie pokazuje `title`) */
.sec-ai-tips .panel-head h2 small { margin-left:8px; font:600 11px/1 "IBM Plex Mono",monospace; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); vertical-align:middle; }
.kurs-row .kurs-odczyt { margin-left:6px; font:500 10px/1 "IBM Plex Mono",monospace; letter-spacing:.04em; color:var(--muted); white-space:nowrap; }
/* Belka „Rozliczenie” (Operator 26.10, D1): po FT jedna linia z X/Y per sekcja; liczy plakietki z DOM (belka_rozliczenia.js) */
.belka-rozl { margin:14px 0; padding:12px 16px; border-radius:16px; background:rgba(255,255,255,.04); border:1px solid var(--line); display:flex; flex-wrap:wrap; align-items:center; gap:8px 18px; }
.belka-rozl h2 { margin:0; font:700 18px/1 "Rajdhani",sans-serif; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); }
.belka-rozl ul { list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:8px; }
.belka-rozl li { min-width:0; }
.belka-rozl a, .belka-rozl li > span { display:inline-flex; flex-wrap:wrap; align-items:baseline; gap:2px 8px; max-width:100%; min-width:0; padding:7px 13px; border-radius:16px; background:var(--chip, rgba(255,255,255,.06)); border:1px solid var(--line); color:inherit; text-decoration:none; }
.belka-rozl a:hover, .belka-rozl a:focus-visible { border-color:var(--brand); outline:none; }
.belka-rozl .br-n { white-space:normal; min-width:0; font:600 12px/1.2 "IBM Plex Mono",monospace; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); }
.belka-rozl .br-w { font:700 20px/1.1 "Rajdhani",sans-serif; font-variant-numeric:tabular-nums; white-space:normal; min-width:0; overflow-wrap:anywhere; }
@media (max-width:520px) { .belka-rozl { padding:10px 12px; } .belka-rozl ul { width:100%; } .belka-rozl li { flex:1 1 calc(50% - 8px); } .belka-rozl a, .belka-rozl li > span { width:100%; justify-content:space-between; } }

/* Pasek skrótów do grup strony meczu (Operator 26.10, wariant A): HTML + kotwice, bez JS; nic nie zwinięte */
.pasek-grup { display:block; margin:0 0 16px; }
/* 31.10 (Operator): jedna niska linia zakładek w stylu paska LIVE (ciemne tło, turkusowa obwódka), zamiast 4 wielkich kafli; link „Zabawy” zdjęty z tego miejsca. */
.pasek-grup ul { list-style:none; margin:0; padding:0; display:flex; min-width:0; overflow-x:auto; scrollbar-width:none; background:rgb(10,15,20); border:1px solid rgba(0,229,192,.35); border-radius:8px; box-shadow:0 0 0 1px rgba(0,229,192,.12), 0 0 12px rgba(0,229,192,.14); }
.pasek-grup ul::-webkit-scrollbar { display:none; }
.pasek-grup li { flex:1 1 auto; min-width:0; display:flex; }
.pasek-grup li + li { border-left:1px solid rgba(0,229,192,.18); }
.pasek-grup li a { flex:1; display:flex; align-items:center; justify-content:center; height:34px; min-height:0; padding:0 14px; color:var(--text, #f4f1ea); text-align:center; text-decoration:none; white-space:nowrap; }
.pasek-grup li a:hover, .pasek-grup li a:focus-visible { color:#00e5c0; background:rgba(0,229,192,.08); outline:none; }
.pasek-grup li b { font:600 12px/1 "IBM Plex Mono",monospace; letter-spacing:.1em; text-transform:uppercase; }
@media (max-width:600px) { .pasek-grup li a { padding:0 10px; height:40px; } .pasek-grup li b { font-size:11px; letter-spacing:.06em; } }
[id^="g-"] { scroll-margin-top:72px; }

/* SKAUT16 PROPONUJE (29.10.2026): własne propozycje L16 pod siatką „Nasze typy"; lewy pasek = „to nie jest nasz typ, to propozycja skauta". */
.s16-blok { margin-top:14px; padding-top:12px; border-top:1px dashed rgba(217,164,65,.45); }
.s16-naglowek { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:4px 12px; margin-bottom:8px; }
.s16-naglowek h3 { margin:0; font-size:13px; letter-spacing:.08em; color:#d9a441; }
.s16-licznik { font-family:"IBM Plex Mono",monospace; font-size:11px; color:var(--muted); }
.s16-licznik b { color:var(--text); }
.s16-licznik i { font-style:normal; opacity:.7; }
.s16-lista { list-style:none; margin:0; padding:0; display:grid; gap:8px; }
.s16-wiersz { min-width:0; padding:8px 10px 8px 12px; border-left:3px solid #d9a441; border-radius:0 8px 8px 0; background:color-mix(in srgb, #d9a441 7%, transparent); }
.s16-glowa { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:4px 8px; }

.s16-typ { display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 10px; margin-top:2px; }
.s16-rynek { font-weight:600; overflow-wrap:anywhere; }
.s16-linia { font-family:"IBM Plex Mono",monospace; font-size:13px; }
.s16-kurs { margin-left:auto; font-family:"IBM Plex Mono",monospace; font-size:13px; color:#d9a441; }
.s16-powod { margin:4px 0 0; font-size:12px; line-height:1.35; color:var(--muted); }
.s16-zamiast { margin:5px 0 0; font-size:11px; color:var(--muted); }
.s16-zamiast span { text-transform:none; opacity:.8; }
.s16-zamiast em { font-style:normal; margin-left:4px; padding:0 6px; border:1px solid rgba(217,164,65,.5); border-radius:999px; font-family:"IBM Plex Mono",monospace; font-size:9px; color:#d9a441; }
.s16-werdykt { font-size:11px; font-weight:600; }
.s16-werdykt.s16-hit { color:var(--good); }
.s16-werdykt.s16-miss { color:var(--bad, #ef4444); }
.s16-werdykt.s16-push, .s16-werdykt.s16-void, .s16-werdykt.s16-nodata, .s16-werdykt.s16-pending, .s16-werdykt.s16-live { color:var(--muted); }

/* SKAUT14 (29.10.2026): plakietka ODRADZA na karcie propsu zawodnika — ten sam język co SKAUT16 odradza; typ zostaje widoczny. */
.pp-row .skaut14-odradza-tag { display:inline-block; align-self:flex-start; width:fit-content; margin-top:4px; padding:1px 6px; border-radius:999px; font-family:"IBM Plex Mono",monospace; font-size:9px; letter-spacing:.06em; text-transform:uppercase; color:#d9a441; border:1px solid rgba(217,164,65,.5); cursor:help; }
/* Odrzucone przez SKAUT14 (31.10.2026): osobna, od razu widoczna grupa pod typami bez odradzania (decyzja Operatora: nie ściągać ze strony). */
.pp-odradza { grid-column:1/-1; min-width:0; margin-top:6px; padding-top:12px; border-top:1px solid rgba(217,164,65,.45); display:flex; flex-direction:column; gap:8px; }
.pp-odradza-head { margin:0; font-family:"IBM Plex Mono",monospace; font-size:12px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:#d9a441; }
.pp-odradza .pp-list-odradza { min-width:0; }
.s16-bezkursu { margin-left:auto; padding:0 7px; border:1px dashed rgba(217,164,65,.6); border-radius:999px; font-family:"IBM Plex Mono",monospace; font-size:10px; color:#d9a441; white-space:nowrap; }

/* Pasek grup 29.10.2026: maks. 4 kafle (Typy OH-BET, Zawodnicy, Mecz wg stanu, Dane) + „Zabawy” jako mały link pod siatką.
   Na telefonie kafle to jeden rząd chipów bez opisów — pierwszy ekran należy do analizy przedmeczowej. */

/* Pełna analiza rozwinięta przed meczem (29.10): dekoracyjne herby nie wychodzą poza kolumnę na telefonie (Hermes: scrollWidth 415 przy 375). */
@media (max-width:480px) {
  .sec-pelna-analiza .pa-gora { overflow-x:clip; }
  .sec-pelna-analiza .pa-herb-h { left:0; }
  .sec-pelna-analiza .pa-herb-a { right:0; }
}
.pp-row .skaut14-powod { margin-top:3px; font-size:11px; line-height:1.35; color:var(--muted); overflow-wrap:anywhere; }

/* Strona meczu 30.10 (Operator: „burdel, pojedyncze kolumny”): na desktopie sekcje poziomu głównego układają się w siatkę zamiast jednej kolumny.
   Kolejność = kolejność DOM (kanon, poll ją przestawia); sekcja ukryta (`hidden`) nie zajmuje miejsca, sąsiad rośnie. Telefon bez zmian. */
@media (min-width:1100px) {
  main.match-flow { flex-direction:row; flex-wrap:wrap; column-gap:16px; align-items:start; }
  main.match-flow > * { flex:0 0 100%; min-width:0; }
  main.match-flow > .sec-ball-map, main.match-flow > .sec-table, main.match-flow > .sec-topscorers, main.match-flow > .sec-h2h, main.match-flow > .sec-match-analysis, main.match-flow > .sec-match-humor { flex:1 1 calc(50% - 8px); }
}
/* Pasek wielofunkcyjny (strona meczu i główna): powłoka, taśma w ciągłym ruchu (pasek.js), błyski wyjątków. Czysty CSS, bez zewnętrznych zasobów (CSP). */
.home-ticker-wrap { margin: 0 0 16px; }
.live-ticker-outer {
  position: relative; width: 100%; display: block; box-sizing: border-box; background: #0a0f14;
  border: 1px solid rgba(0, 229, 192, .35); border-radius: 8px; overflow: hidden;
  background-image: radial-gradient(circle, rgba(0, 229, 192, .09) 1.5px, transparent 1px); background-size: 24px 24px;
  box-shadow: 0 0 0 1px rgba(0, 229, 192, .15), 0 0 12px rgba(0, 229, 192, .18);
}
.live-ticker-inner { width: 100%; box-sizing: border-box; height: 42px; display: flex; align-items: center; padding: 0 14px; overflow: hidden; gap: 12px; }
.live-ticker-label {
  color: #00e5c0; font-weight: 700; font-size: 12px; letter-spacing: .08em; flex-shrink: 0; padding-right: 12px; border-right: 1px solid rgba(0, 229, 192, .35);
  font-family: "IBM Plex Mono", monospace; text-transform: uppercase;
}
.live-ticker-track {
  flex: 1 1 auto; width: 0; min-width: 0; overflow: hidden; height: 100%;
  -webkit-mask-image: linear-gradient(to right, transparent 0px, black 28px, black 100%); mask-image: linear-gradient(to right, transparent 0px, black 28px, black 100%);
}
/* taśma: przesuwa ją pasek.js (translate3d), CSS tylko układa; bez animacji CSS, więc nic nie restartuje się przy zmianie treści */
.ltk-tasma { display: inline-flex; align-items: center; height: 100%; white-space: nowrap; will-change: transform; }
.ltk-item { display: inline-flex; align-items: center; gap: 8px; flex-shrink: 0; padding-right: 36px; color: inherit; text-decoration: none; }
a.ltk-item:hover .ltk-text, a.ltk-item:focus-visible .ltk-text { text-decoration: underline; }
.ltk-dot { width: 6px; height: 6px; border-radius: 50%; background: #00e5c0; box-shadow: 0 0 8px rgba(0, 229, 192, .55); flex-shrink: 0; }
.ltk-text { font-size: 13px; font-family: "IBM Plex Mono", monospace; color: #e0f2f1; flex-shrink: 0; }

/* błysk wyjątku: zasłania pasek, słowo przesuwa się przez niego, potem jedna linia; taśma w tym czasie stoi */
.ltk-goal-box { position: absolute; inset: 0; z-index: 2; overflow: hidden; background: #0a0f14; background-image: radial-gradient(circle, rgba(0, 229, 192, .09) 1.5px, transparent 1px); background-size: 24px 24px; }
.ltk-goal-slide { position: absolute; inset: 0; display: flex; align-items: center; gap: 12px; white-space: nowrap; animation: ltk-goal-slide 5.5s linear infinite; will-change: transform; color: #00e5c0; }
.ltk-slowo { font-family: "Rajdhani", sans-serif; font-weight: 700; font-size: 28px; letter-spacing: .14em; text-shadow: 0 0 14px currentColor; animation: ltk-goal-flash .6s steps(2, end) infinite; }
.ltk-linia { font-family: "IBM Plex Mono", monospace; font-weight: 700; font-size: 14px; letter-spacing: .04em; color: #e0f2f1; }
.ltk-ton-var { background-image: radial-gradient(circle, rgba(255, 180, 0, .12) 1.5px, transparent 1px); }
.ltk-ton-var .ltk-goal-slide { color: var(--amber, #ffb400); }
.ltk-ton-var .ltk-linia { color: #ffe9b8; }
.ltk-ton-zolta .ltk-goal-slide { color: #ffd21f; }
.ltk-ton-czerwona { background-color: #1a0a0a; background-image: radial-gradient(circle, rgba(255, 77, 77, .14) 1.5px, transparent 1px); }
.ltk-ton-czerwona .ltk-goal-slide { color: #ff5a5a; animation-duration: 4.5s; }
.ltk-ton-czerwona .ltk-slowo { font-size: 32px; }
.ltk-ton-czerwona .ltk-linia { color: #ffd5d5; }
.ltk-ton-karny .ltk-goal-slide { color: #c5d2dc; }
/* znaki: karta, piłka, VAR, karny (CSS, bez obrazków) */
.ltk-karta { flex: none; width: 15px; height: 21px; border-radius: 2px; box-shadow: 0 0 10px currentColor; }
.ltk-karta-zolta { background: #ffd21f; }
.ltk-karta-czerwona { background: #ff4d4d; width: 17px; height: 23px; }
.ltk-pilka { flex: none; width: 20px; height: 20px; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #fff 0 35%, #cfd8dc 36%); box-shadow: 0 0 12px rgba(61, 255, 176, .8); }
.ltk-karny { flex: none; width: 20px; height: 20px; border-radius: 50%; border: 3px solid currentColor; box-sizing: border-box; }
.ltk-var-znak { flex: none; font: 700 13px/1 "IBM Plex Mono", monospace; color: #1a1200; background: var(--amber, #ffb400); border-radius: 5px; padding: 5px 6px; animation: ltk-goal-flash .5s steps(2, end) infinite; }
@keyframes ltk-goal-slide { from { transform: translateX(100%); } to { transform: translateX(-100%); } }
@keyframes ltk-goal-flash { 0% { opacity: 1; } 100% { opacity: .3; } }
@media (prefers-reduced-motion: reduce) {
  .ltk-goal-slide { animation: none; transform: none; justify-content: center; }
  .ltk-slowo, .ltk-var-znak { animation: none; }
}

/* Przewaga na boisku (30.10, Operator: heatmapa 6×4 zastąpiona zwartym blokiem). Pozycja PIŁKI, nie posiadanie. */
.sec-ball-map { position:relative; border:1px solid var(--line); border-radius:16px; background:var(--card); padding:14px 16px 16px; min-width:0; }
.sec-ball-map[hidden] { display:none; }
.sec-ball-map h2 { font-family:"Rajdhani",sans-serif; font-size:20px; margin:0 0 4px; letter-spacing:.04em; text-transform:uppercase; }
.sec-ball-map .bm-verdict { margin:0 0 10px; font-size:14px; font-weight:600; }
.sec-ball-map .bm-bar { display:flex; height:10px; border-radius:5px; overflow:hidden; background:rgba(255,255,255,.06); }
.sec-ball-map .bm-b-h { background:var(--cyan); display:block; } .sec-ball-map .bm-b-a { background:var(--amber); display:block; }
.sec-ball-map .bm-bar-l { display:flex; justify-content:space-between; align-items:baseline; gap:8px; margin-top:4px; font:600 12px "IBM Plex Mono",monospace; }
.sec-ball-map .bm-bar-l span { color:var(--muted); font-weight:400; font-size:11px; text-align:center; }
.sec-ball-map .bm-pol { margin-top:2px; font:11px "IBM Plex Mono",monospace; color:var(--muted); text-align:center; }
.sec-ball-map .bm-sub { margin:12px 0 4px; font:600 11px "IBM Plex Mono",monospace; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); }
.sec-ball-map .bm-kor { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.sec-ball-map .bm-kor > div > b { display:block; margin-bottom:3px; font-size:12px; }
.sec-ball-map svg { width:100%; height:auto; display:block; background:#0e1a12; border:1px solid var(--line); border-radius:6px; }
.sec-ball-map svg.bm-mom { height:56px; background:rgba(255,255,255,.03); }
.sec-ball-map .bm-line { fill:none; stroke:var(--line); stroke-width:.6; }
.sec-ball-map [data-bm-kor-h] .bm-arrow { stroke:var(--cyan); } .sec-ball-map [data-bm-kor-h] .bm-head { fill:var(--cyan); }
.sec-ball-map [data-bm-kor-a] .bm-arrow { stroke:var(--amber); } .sec-ball-map [data-bm-kor-a] .bm-head { fill:var(--amber); }
.sec-ball-map .bm-pct { fill:#fff; font:700 6px "IBM Plex Mono",monospace; paint-order:stroke; stroke:#0e1a12; stroke-width:1.6px; }
.sec-ball-map .bm-mh { fill:var(--cyan); } .sec-ball-map .bm-ma { fill:var(--amber); }
.sec-ball-map .bm-mom-mid { stroke:var(--line); stroke-width:.6; stroke-dasharray:2 2; }
.sec-ball-map .bm-goal { fill:#fff; stroke:#0b0c0e; stroke-width:1; }
.sec-ball-map .bm-gmin { fill:var(--muted); font:600 7px "IBM Plex Mono",monospace; }
.sec-ball-map .bm-mom-l { display:flex; justify-content:space-between; margin-top:2px; font:10px "IBM Plex Mono",monospace; color:var(--muted); }
.sec-ball-map .bm-sr { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.sec-ball-map .bm-empty { font-size:12px; color:var(--muted); font-family:"IBM Plex Mono",monospace; }

.ts-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.ts-table{width:100%;min-width:560px;border-collapse:collapse;font-size:13px;table-layout:fixed}
.ts-table th,.ts-table td{padding:5px 6px;border-bottom:1px solid var(--line);vertical-align:middle}
.ts-table th{text-align:left;font-size:11px;color:var(--muted);font-weight:600}
.ts-table tr.hl{background:color-mix(in srgb,var(--cyan) 10%,transparent);font-weight:600}
.ts-table .pos{width:2.2em;color:var(--muted)}
.ts-table .name,.ts-table .club{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ts-table .name{width:22%}.ts-table .club{width:18%;color:var(--muted);font-size:12px}
.ts-table .num,.ts-table th.num{text-align:right;width:3.4em;font-variant-numeric:tabular-nums;
  font-family:"IBM Plex Mono",monospace}
@media (max-width:560px){
.ts-table{min-width:0}
.ts-table th:nth-child(5),.ts-table td:nth-child(5),.ts-table th:nth-child(7),.ts-table td:nth-child(7),.ts-table th:nth-child(8),.ts-table td:nth-child(8),
.ts-table th:nth-child(9),.ts-table td:nth-child(9){display:none}
.ts-table .name,.ts-table .club{width:auto}
.ts-table th,.ts-table td{padding:5px 3px}
.ts-table th,.ts-table th.club{font-size:10px}
.ts-table .num,.ts-table th.num{width:3.8em}
.ts-table .pos{width:1.8em}
}
.ts-empty{font-size:12px;color:var(--muted);font-family:"IBM Plex Mono",monospace}
/* Klapki split-flap: wspólne dla /tablica/ i zegara w hero meczu. Rozmiar ustawia kontener: --kl-w (szerokość) i --kl-h (wysokość, zwykle 1,6 × szerokość) — oba obowiązkowe.
   Czysty CSS, bez bibliotek, czcionek i obrazów zewnętrznych (CSP: style-src 'self'). Dynamika tylko klasami i CSSOM. */

.sf-sr-tylko {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0;
}

.sf-grupa { display: inline-flex; gap: 2px; }

/* ---- klapka: połówki z zawiasem ---- */
.sf-kl { position: relative; display: inline-block; width: var(--kl-w); height: var(--kl-h); perspective: calc(var(--kl-h) * 4);
  font-weight: 700; font-size: calc(var(--kl-h) * .86); line-height: var(--kl-h); text-align: center; color: var(--znak, #f1e8cf); user-select: none; }
.sf-kl::after { content: ""; position: absolute; left: -1px; right: -1px; top: 50%; height: 2px; margin-top: -1px; z-index: 6;
  background: #000; box-shadow: 0 1px 0 rgba(255, 255, 255, .07); pointer-events: none; }
.sf-kl-p { position: absolute; left: 0; right: 0; height: 50%; overflow: hidden; backface-visibility: hidden; }
.sf-kl-p > span { position: absolute; left: 0; right: 0; height: var(--kl-h); line-height: var(--kl-h); }
.sf-kl-gora, .sf-kl-spad-gora { top: 0; border-radius: 3px 3px 0 0; background: linear-gradient(var(--klapka-g1, #2b3036), var(--klapka-g2, #191c20)); }
.sf-kl-dol, .sf-kl-spad-dol { bottom: 0; border-radius: 0 0 3px 3px; background: linear-gradient(var(--klapka-d1, #14171a), var(--klapka-d2, #20242a)); }
.sf-kl-gora > span, .sf-kl-spad-gora > span { top: 0; }
.sf-kl-dol > span, .sf-kl-spad-dol > span { bottom: 0; }
.sf-kl-spad { display: none; z-index: 4; }
.sf-kl-kreci .sf-kl-spad { display: block; }
.sf-kl-spad-gora { transform-origin: 50% 100%; }
.sf-kl-spad-dol { transform-origin: 50% 0; transform: rotateX(90deg); }
.sf-kl-kreci .sf-kl-spad-gora { box-shadow: 0 -2px 6px rgba(0, 0, 0, .5); }

@media (prefers-reduced-motion: reduce) {
  .sf-kl-spad { display: none !important; }
}
.sf-bez-ruchu .sf-kl-spad { display: none !important; }
/* Zegar meczu i wynik w hero (split-flap). Klapki: flap/flap.css (dołączony przed tym plikiem). Czysty CSS, bez zasobów zewnętrznych. */
.match-hero .hero-flap {
  --znak: #f1e8cf; --bursztyn: #ffc400; --pomarancz: #ff8a1f; --przygaszony: #9c9582;
  display: flex; flex-direction: column; align-items: center; gap: 10px; margin: 2px 0 4px;
}
/* Blok klapek widać TYLKO przy data-flap="1": po `wylacz()` (faza spoza live/ht/ft, błąd modułu) wraca zwykły hero, bez nieaktualnych klapek obok wyniku. */
.match-hero:not([data-flap="1"]) .hero-flap { display: none; }
.match-hero .hero-flap .hf-wynik { --kl-w: clamp(30px, 8.6vw, 54px); --kl-h: calc(var(--kl-w) * 1.6); display: flex; align-items: center; justify-content: center; gap: calc(var(--kl-w) * .3); }
.match-hero .hero-flap .hf-stan { --kl-w: clamp(15px, 4.2vw, 24px); --kl-h: calc(var(--kl-w) * 1.6); display: flex; justify-content: center; }
.match-hero .hero-flap .hf-g .sf-kl { color: var(--znak); }
.match-hero .hero-flap .hf-status .sf-kl { color: var(--bursztyn); }
.match-hero .hero-flap[data-faza="ht"] .hf-status .sf-kl { color: var(--pomarancz); }
.match-hero .hero-flap[data-faza="ft"] .hf-status .sf-kl { color: var(--przygaszony); }
.match-hero .hero-flap .hf-dwukropek { color: var(--bursztyn); font-family: "Rajdhani", sans-serif; font-weight: 700; font-size: calc(var(--kl-h) * .8); line-height: var(--kl-h); }

/* blysk po golu: ramka wokół wyniku (statyczna, gdy użytkownik nie chce ruchu) */
.match-hero .hero-flap.hf-gol .hf-wynik { border-radius: 8px; animation: hf-blysk 1.2s ease-in-out 5; }
@keyframes hf-blysk {
  0%, 100% { box-shadow: 0 0 0 0 rgba(255, 196, 0, 0); }
  25%, 65% { box-shadow: 0 0 0 2px var(--bursztyn), 0 0 22px rgba(255, 196, 0, .45); }
}
@media (prefers-reduced-motion: reduce) {
  .match-hero .hero-flap.hf-gol .hf-wynik { animation: none; box-shadow: 0 0 0 2px var(--bursztyn); }
}

/* Klapki zastępują wizualnie wynik, minutę i plakietkę fazy (Operator 24.10: „KONIEC” tylko raz — na klapkach); oryginały zostają dla czytnika ekranu
   (aria-live bez zmian), więc wyłączamy je tylko wizualnie. Bez klapek (brak JS, błąd, inna faza) plakietka wraca sama: reguła wisi na data-flap="1". */
.match-hero[data-flap="1"] .kick-score-row,
.match-hero[data-flap="1"] .live-minute,
.match-hero[data-flap="1"][data-phase="ft"] .phase-badge {   /* tylko „KONIEC”; czerwone „LIVE” w trakcie meczu zostaje */
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0;
}

.ks{--ks-a:#8a5a2b;--ks-b:#d79b5b;position:relative;border-radius:22px;padding:3px;background:linear-gradient(135deg,var(--ks-a),var(--ks-b) 45%,var(--ks-a));box-shadow:0 10px 30px rgba(0,0,0,.35);max-width:360px;width:100%}
.ks-srebrna{--ks-a:#6f7884;--ks-b:#e4e9ef}.ks-zlota{--ks-a:#a8741a;--ks-b:#ffd76a}
.ks-legenda{--ks-a:#ff6b00;--ks-b:#ffc83d;background:linear-gradient(120deg,#ff6b00,#ffc83d,#7cf3ff,#c38bff,#ff6b00);background-size:300% 300%;animation:ks-holo 6s ease-in-out infinite}
@keyframes ks-holo{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
@media (prefers-reduced-motion:reduce){.ks-legenda{animation:none}}
.ks-in{border-radius:19px;background:radial-gradient(120% 80% at 0% 0%,rgba(255,255,255,.08),transparent 60%),#12141a;padding:14px;display:grid;gap:12px;color:#f4f1ea}
.ks-top{display:flex;justify-content:space-between;align-items:center;font:600 10px "IBM Plex Mono",monospace;letter-spacing:.14em;text-transform:uppercase;color:#9a958c}
.ks-id{display:flex;gap:12px;align-items:center}
.ks-mono{flex:none;width:56px;height:56px;border-radius:16px;display:grid;place-items:center;font:700 24px "Rajdhani",sans-serif;color:#140a00;background:linear-gradient(135deg,var(--ks-a),var(--ks-b))}
.ks-id h3{margin:0;font:700 24px/1 "Rajdhani",sans-serif;letter-spacing:.04em;text-transform:uppercase;overflow-wrap:anywhere}
.ks-id p{margin:4px 0 0;color:#9a958c;font-size:12.5px}
.ks-moc{display:grid;gap:2px;padding:10px 12px;border-radius:12px;border:1px solid rgba(255,200,61,.35);background:rgba(255,200,61,.07)}
.ks-moc span{font:600 10px "IBM Plex Mono",monospace;letter-spacing:.12em;text-transform:uppercase;color:#ffc83d}.ks-moc b{font:700 19px "Rajdhani",sans-serif;letter-spacing:.04em;text-transform:uppercase}
.ks-tyt{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:6px}.ks-tyt li{padding:3px 8px;border-radius:99px;border:1px solid #262a33;font:600 11px "IBM Plex Mono",monospace;color:#ffc83d}
.ks-g{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.ks-st{padding:10px;border-radius:12px;background:rgba(255,255,255,.04);border:1px solid #262a33;text-align:center;display:grid;gap:2px}
.ks-st b{font:700 26px/1 "Rajdhani",sans-serif}.ks-st span{font:600 10px "IBM Plex Mono",monospace;letter-spacing:.08em;color:#9a958c;text-transform:uppercase}.ks-st small{color:#9a958c;font-size:11px}
.ks-up{font-style:normal;font-size:12px;color:#ff7a7a;margin-left:4px;vertical-align:middle}.ks-dn{font-style:normal;font-size:12px;color:#3dd68c;margin-left:4px;vertical-align:middle}
.ks-ft{margin:0;color:#9a958c;font-size:12px;line-height:1.6}.ks-ft b{color:#f4f1ea}
.ks-sec{margin:16px 0}.ks-sec h2{font:700 22px "Rajdhani",sans-serif;letter-spacing:.06em;text-transform:uppercase;margin:0 0 10px}
.ks-note{color:#9a958c;font-size:12.5px;margin:8px 0 0}
.ks-talia{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(280px,1fr);gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding:4px 2px 12px;scrollbar-width:thin}
.ks-talia>.ks{scroll-snap-align:start;align-self:start}
/* BINGO MECZU 3x3 (NOC-BINGO, 22.10): frontend/match_page/bingo.py. Osobny plik, bez inline script/on*. */
.sec-bingo { --bg-ok:#3dffb0; --bg-no:#ff5c5c; --bg-win:#ffd23d; }
.bingo-lead { margin:0 0 14px; font-size:14px; color:var(--muted); max-width:640px; }
.bingo-grid { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.bingo-c { position:relative; display:grid; grid-template-rows:1fr auto; gap:6px; min-height:104px; padding:12px 12px 10px; border-radius:16px; background:rgba(255,255,255,.045); border:1px solid var(--line, #262a33); min-width:0; }
.bingo-l { font:600 14px/1.25 "DM Sans",sans-serif; color:var(--ink, #f4f1ea); overflow-wrap:break-word; hyphens:auto; }
.bingo-p { font:700 28px/1 "Rajdhani",sans-serif; font-variant-numeric:tabular-nums; color:#cfd6d3; }
.bingo-lg { font:500 12px/1.3 "DM Sans",sans-serif; color:var(--muted); font-style:italic; padding-right:26px; }
.bingo-lg b { font:700 17px/1 "Rajdhani",sans-serif; font-style:normal; color:#aeb6b3; }
.bingo-p[data-brak="1"] { color:var(--muted); font-weight:500; }
.bingo-m { position:absolute; bottom:10px; right:12px; font:700 22px/1 sans-serif; font-style:normal; }
.bingo-c.is-tak { border-color:rgba(61,255,176,.55); background:rgba(61,255,176,.09); }
.bingo-c.is-tak .bingo-m { color:var(--bg-ok); }
.bingo-c.is-nie { opacity:.72; }
.bingo-c.is-nie .bingo-m { color:var(--bg-no); }
.bingo-c.w-bingo { border-color:var(--bg-win); background:rgba(255,210,61,.14); box-shadow:0 0 18px -6px var(--bg-win); }
.bingo-c.w-bingo .bingo-m { color:var(--bg-win); }
.bingo-win { margin:14px 0 0; font:700 30px/1 "Rajdhani",sans-serif; letter-spacing:.08em; color:var(--bg-win); text-transform:uppercase; }
.bingo-sum { margin:12px 0 0; font:600 13px "IBM Plex Mono",monospace; letter-spacing:.06em; color:var(--muted); }
.bingo-note { margin:12px 0 0; font-size:12px; color:var(--muted); }
.bingo-sr { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
@media (max-width:640px) {
 .bingo-grid { gap:6px; }
 .bingo-c { min-height:92px; padding:9px 8px 8px; border-radius:12px; }
 .bingo-l { font-size:12px; }
 .bingo-p { font-size:23px; }
 .bingo-lg { font-size:11px; padding-right:22px; }
 .bingo-m { bottom:8px; right:8px; font-size:18px; }
}
/* Horoskopy: karty w kolorze żywiołu (ogień, woda, ziemia, powietrze), duża grafika znaku, wyróżniony „Typ gwiazd”, lekki ruch przy najechaniu.
   Jedno źródło dla strony meczu (MATCH_EXTRA_CSS), głównej (placeholder w szablonie) i strony /horoskop/ (wspólny arkusz stron statycznych). */
.hk-card, .lk-card[data-zywiol] { --zyw: #b88cff; --zyw2: #ff8fd8; }
.hk-card[data-zywiol="ogien"], .lk-card[data-zywiol="ogien"] { --zyw: #ff9a3d; --zyw2: #ff5a36; }
.hk-card[data-zywiol="woda"], .lk-card[data-zywiol="woda"] { --zyw: #38b6ff; --zyw2: #5b7cff; }
.hk-card[data-zywiol="ziemia"], .lk-card[data-zywiol="ziemia"] { --zyw: #7ddc6f; --zyw2: #d4e85a; }
.hk-card[data-zywiol="powietrze"], .lk-card[data-zywiol="powietrze"] { --zyw: #b88cff; --zyw2: #ff8fd8; }

.hk-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin: 12px 0 0; }
@media (max-width: 640px) { .hk-grid { grid-template-columns: 1fr; } }
.hk-card, .lk-card[data-zywiol] {
  position: relative; overflow: hidden; min-width: 0; border-radius: 18px; padding: 16px 16px 14px; color: #e8ebf0;
  border: 1px solid color-mix(in srgb, var(--zyw) 42%, transparent);
  background: radial-gradient(120% 95% at 0% 0%, color-mix(in srgb, var(--zyw) 24%, transparent), transparent 62%),
              radial-gradient(90% 70% at 100% 100%, color-mix(in srgb, var(--zyw2) 14%, transparent), transparent 70%), #12161c;
}
.hk-top { display: flex; align-items: center; gap: 14px; }
.hk-znak { flex: none; width: 128px; height: 128px; border-radius: 28px; object-fit: cover;
  box-shadow: 0 10px 28px rgba(0, 0, 0, .42), 0 0 0 3px color-mix(in srgb, var(--zyw) 55%, transparent); }
@media (max-width: 640px) { .hk-znak { width: 108px; height: 108px; border-radius: 24px; } }
.hk-id { min-width: 0; }
.hk-zyw { margin: 0 0 4px; font: 700 11px/1.2 "IBM Plex Mono", ui-monospace, monospace; letter-spacing: .14em; text-transform: uppercase; color: var(--zyw); }
.hk-team { margin: 0; font: 700 24px/1.1 var(--display, "Rajdhani", system-ui, sans-serif); color: #fff; overflow-wrap: anywhere; }
.hk-zd { margin: 10px 0 0; font-size: .95rem; line-height: 1.5; color: #dfe3ea; }
.hk-typ, .lk-card[data-zywiol] .lk-typ { margin: 14px 0 0; padding: 10px 12px; border-radius: 12px; border: 1px solid color-mix(in srgb, var(--zyw) 60%, transparent);
  background: linear-gradient(90deg, color-mix(in srgb, var(--zyw) 32%, transparent), color-mix(in srgb, var(--zyw2) 16%, transparent)); }
.hk-typ-l { display: block; margin: 0 0 3px; font: 700 11px/1.2 "IBM Plex Mono", ui-monospace, monospace; letter-spacing: .14em; text-transform: uppercase; color: var(--zyw); }
.hk-typ-t { display: block; font: 700 19px/1.25 var(--display, "Rajdhani", system-ui, sans-serif); color: #fff; overflow-wrap: anywhere; }
.hk-dane { margin: 10px 0 0; font-size: .78rem; line-height: 1.4; color: #9aa4b2; }
.hk-wiecej { margin-left: auto; font-weight: 700; font-size: 14px; color: var(--brand-ink, #ffb347); text-decoration: none; }
.hk-wiecej:hover, .hk-wiecej:focus-visible { text-decoration: underline; }

/* kompakt (główna): jeden wiersz na drużynę, bez zdań — mniejsza grafika, ten sam wyróżniony typ */
.hk-kompakt .hk-znak { width: 88px; height: 88px; border-radius: 20px; }
.hk-kompakt .hk-team { font-size: 21px; }
.hk-kompakt .hk-card { padding: 14px; }
.hk-glowna[hidden] { display: none; }
.hk-glowna .sec-head { flex-wrap: wrap; row-gap: 2px; }
.hk-glowna .sec-head h2 { flex: 1 1 auto; font-size: clamp(22px, 5.4vw, 32px); }
@media (max-width: 640px) { .hk-glowna .sec-head .more { flex-basis: 100%; margin-left: 0; min-height: 36px; font-size: 13px; } }

/* strona /horoskop/: te same kolory żywiołów na istniejących kartach */
.lk-card[data-zywiol] .lk-sign { color: var(--zyw); }
.lk-card[data-zywiol] .lk-znak { box-shadow: 0 8px 22px rgba(0, 0, 0, .4), 0 0 0 3px color-mix(in srgb, var(--zyw) 55%, transparent); }
.lk-card[data-zywiol] .lk-num { color: #fff; }

/* po gwizdku blok na stronie meczu znika (data-phase na hero zmienia poll; strona zbudowana przed meczem zostaje w przeglądarce) */
.match-hero[data-phase=live] ~ .sec-horoskopy, .match-hero[data-phase=ht] ~ .sec-horoskopy,
.match-hero[data-phase=ft] ~ .sec-horoskopy, .match-hero[data-phase=interrupted] ~ .sec-horoskopy { display: none; }

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .hk-card, .lk-card[data-zywiol] { transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease; }
  .hk-card:hover, .lk-card[data-zywiol]:hover { transform: translateY(-3px); border-color: var(--zyw);
    box-shadow: 0 14px 34px rgba(0, 0, 0, .45), 0 0 26px color-mix(in srgb, var(--zyw) 28%, transparent); }
  .hk-znak, .lk-card[data-zywiol] .lk-znak { transition: transform .35s cubic-bezier(.2, .8, .2, 1); }
  .hk-card:hover .hk-znak, .lk-card[data-zywiol]:hover .lk-znak { transform: rotate(-4deg) scale(1.07); }
}
/* Trzy kreski szansy (.sig s1/s2/s3) i liczba „N/10” Typu AI (.szansa-n) - wspólne dla strony głównej i strony meczu; jeden producent: match_page/szansa.py.
   Kolor: --pos (strona główna), --good (strona meczu), ten sam odcień #3dd68c. */
.sig { display: inline-flex; align-items: flex-end; gap: 2px; height: 16px; }
.sig i { width: 4px; border-radius: 1px; background: var(--line); }
.sig i:nth-child(1) { height: 6px; } .sig i:nth-child(2) { height: 11px; } .sig i:nth-child(3) { height: 16px; }
.sig.s1 i:nth-child(1), .sig.s2 i:nth-child(-n+2), .sig.s3 i { background: var(--pos, var(--good, #3dd68c)); }
.szansa { display: inline-flex; align-items: flex-end; gap: 6px; }
.szansa-n { font: 600 12px/1 "IBM Plex Mono", monospace; color: var(--soft, var(--muted, #b8b2a7)); letter-spacing: .02em; white-space: nowrap; }
