/* ==========================================================================
   PLB ADMIN — warstwa motywu portalu zarządzania na Bootstrap 5.3
   Ładować PO bootstrap.min.css. Motyw: [data-bs-theme="light"|"dark"]
   ========================================================================== */

:root {
  --plb-red: #e01a22;
  --plb-red-dark: #b3141a;
  --plb-blue: #2b6cf6;
  --plb-green: #1fbf5a;
  --plb-amber: #f2a600;

  --plb-font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --plb-font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;

  --plb-radius: 2px;
  --plb-nav-w: 252px;
  --plb-top-h: 54px;

  --bs-primary: var(--plb-red);
  --bs-primary-rgb: 224, 26, 34;
  --bs-border-radius: var(--plb-radius);
  --bs-border-radius-sm: var(--plb-radius);
  --bs-border-radius-lg: var(--plb-radius);
  --bs-body-font-family: var(--plb-font-sans);

  /* sidebar jest zawsze ciemny — niezależnie od motywu treści */
  --plb-nav-bg: #0f1115;
  --plb-nav-line: #232830;
  --plb-nav-ink: #c8ced7;
  --plb-nav-ink-3: #6d747e;
}

[data-bs-theme="light"] {
  --plb-bg: #f1f3f6;
  --plb-panel: #ffffff;
  --plb-panel-2: #f7f8fa;
  --plb-line: #e2e6eb;
  --plb-line-2: #cdd3db;
  --plb-ink: #14171c;
  --plb-ink-2: #5b626d;
  --plb-ink-3: #8b929c;

  --bs-body-bg: var(--plb-bg);
  --bs-body-color: var(--plb-ink);
  --bs-border-color: var(--plb-line);
}

[data-bs-theme="dark"] {
  --plb-bg: #0a0b0d;
  --plb-panel: #15181d;
  --plb-panel-2: #1b1f26;
  --plb-line: #262b33;
  --plb-line-2: #323842;
  --plb-ink: #eceef1;
  --plb-ink-2: #a7aeb8;
  --plb-ink-3: #6d747e;

  --bs-body-bg: var(--plb-bg);
  --bs-body-color: var(--plb-ink);
  --bs-border-color: var(--plb-line);
}

body.plb-admin {
  background: var(--plb-bg);
  color: var(--plb-ink);
  font-family: var(--plb-font-sans);
  overflow: hidden;
}
a { color: var(--plb-red); text-decoration: none; }
a:hover { color: var(--plb-ink); }
::selection { background: var(--plb-red); color: #fff; }

/* --- prymitywy ----------------------------------------------------------- */
.plb-mono { font-family: var(--plb-font-mono); }
.plb-muted { color: var(--plb-ink-2); }
.plb-dim { color: var(--plb-ink-3); }
.plb-red { color: var(--plb-red); }
.plb-blue { color: var(--plb-blue); }
.plb-green { color: var(--plb-green); }
.plb-amber { color: var(--plb-amber); }

.plb-label {
  font-size: .625rem; font-weight: 800; letter-spacing: .22em;
  text-transform: uppercase; color: var(--plb-ink-3);
}
.plb-label--head { color: var(--plb-ink-2); }
.plb-micro {
  font-size: .59375rem; font-weight: 800; letter-spacing: .18em;
  text-transform: uppercase; color: var(--plb-ink-3);
}

.plb-card {
  background: var(--plb-panel);
  border: 1px solid var(--plb-line);
  border-radius: var(--plb-radius);
  overflow: hidden;
}
.plb-card__head {
  display: flex; align-items: center; gap: .875rem;
  padding: .75rem 1.25rem;
  background: var(--plb-panel-2);
  border-bottom: 1px solid var(--plb-line);
}
.plb-card__head .plb-label { margin: 0; }
.plb-card__body { padding: 1.25rem; }

/* --- szkielet ------------------------------------------------------------ */
.plb-shell { display: grid; grid-template-columns: var(--plb-nav-w) 1fr; height: 100vh; }

.plb-nav {
  background: var(--plb-nav-bg);
  display: flex; flex-direction: column; overflow: hidden;
}
.plb-nav__brand { padding: 1.25rem 1.25rem 1.125rem; border-bottom: 1px solid var(--plb-nav-line); }
.plb-nav__brand b { font-size: 1.0625rem; font-weight: 800; letter-spacing: .12em; color: #fff; }
.plb-nav__brand b.plb-red { color: var(--plb-red); }
.plb-nav__brand span { display: block; font-size: .625rem; font-weight: 700; letter-spacing: .2em; color: var(--plb-nav-ink-3); margin-top: .3125rem; }
.plb-nav__list { flex: 1; overflow-y: auto; padding: .75rem 0 1.5rem; }
.plb-nav__group { padding: .875rem 1.25rem .375rem; font-size: .59375rem; font-weight: 800; letter-spacing: .22em; color: var(--plb-nav-ink-3); }
.plb-nav__item {
  display: flex; align-items: center; gap: .6875rem;
  padding: .5625rem 1.25rem .5625rem 1.0625rem;
  border-left: 3px solid transparent;
  color: var(--plb-nav-ink);
  font-size: .84375rem;
  cursor: pointer;
}
.plb-nav__item:hover { color: #fff; }
.plb-nav__item.is-active {
  border-left-color: var(--plb-red);
  background: rgba(255,255,255,.05);
  color: #fff; font-weight: 700;
}
.plb-nav__item .badge-count { font-size: .625rem; color: var(--plb-nav-ink-3); }
.plb-nav__user {
  display: flex; align-items: center; gap: .6875rem;
  padding: .875rem 1.25rem; border-top: 1px solid var(--plb-nav-line);
}
.plb-nav__avatar {
  width: 32px; height: 32px; border-radius: var(--plb-radius);
  background: var(--plb-red); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: .75rem; font-weight: 800;
}
.plb-nav__user strong { display: block; font-size: .78125rem; font-weight: 700; color: #fff; }
.plb-nav__user small { display: block; font-size: .65625rem; color: var(--plb-nav-ink-3); font-family: var(--plb-font-mono); }

.plb-content { display: flex; flex-direction: column; min-width: 0; overflow: hidden; }
.plb-topbar {
  height: var(--plb-top-h); flex: 0 0 auto;
  display: flex; align-items: center; gap: .875rem;
  padding: 0 1.75rem;
  background: var(--plb-panel); border-bottom: 1px solid var(--plb-line);
}
.plb-crumb { display: flex; align-items: center; gap: .5625rem; font-size: .78125rem; color: var(--plb-ink-3); min-width: 0; }
.plb-crumb .sep { color: var(--plb-line-2); }
.plb-crumb .current { color: var(--plb-ink); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.plb-main {
  flex: 1; min-height: 0; overflow-y: auto;
  padding: 1.375rem 1.75rem 3.5rem;
  display: flex; flex-direction: column; gap: 1.125rem;
}
.plb-main > * { flex: 0 0 auto; }

/* --- nagłówek strony ----------------------------------------------------- */
/* bez overflow:hidden — dropdowny akcji muszą wystawać poza kartę;
   zaokrąglenie górnych rogów przejmuje pasek */
.plb-pagehead { background: var(--plb-panel); border: 1px solid var(--plb-line); border-radius: var(--plb-radius); }
.plb-pagehead__bar { height: 3px; background: var(--plb-red); border-radius: var(--plb-radius) var(--plb-radius) 0 0; }
.plb-pagehead__body { padding: 1.125rem 1.5rem; display: flex; align-items: center; gap: 1.25rem; flex-wrap: wrap; }
.plb-pagehead h1 { margin: .375rem 0 0; font-size: 1.625rem; font-weight: 800; letter-spacing: -.01em; line-height: 1.15; text-wrap: balance; }

/* --- przyciski ----------------------------------------------------------- */
.btn-plb, .btn-plb-ghost, .btn-plb-go, .btn-plb-push {
  --bs-btn-border-radius: var(--plb-radius);
  border-radius: var(--plb-radius);
  font-size: .71875rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase;
  border: 0; transition: background-color .12s, color .12s, border-color .12s;
}
.btn-plb { background: var(--plb-red); color: #fff; }
.btn-plb:hover { background: var(--plb-red-dark); color: #fff; }
.btn-plb-ghost { background: transparent; color: var(--plb-ink); border: 1px solid var(--plb-line-2); }
.btn-plb-ghost:hover { border-color: var(--plb-red); color: var(--plb-red); }
.btn-plb-go { background: var(--plb-green); color: #08130c; }
.btn-plb-go:hover { filter: brightness(1.08); color: #08130c; }
.btn-plb-push { background: var(--plb-amber); color: #111; }
.btn-plb-push:hover { filter: brightness(1.08); color: #111; }
.btn-plb:disabled, .btn-plb-ghost:disabled {
  background: var(--plb-panel-2); color: var(--plb-ink-3);
  border: 1px solid var(--plb-line); cursor: not-allowed;
}
.btn-sm-plb { height: 30px; padding: 0 .8125rem; display: inline-flex; align-items: center; }

.plb-theme-toggle {
  width: 34px; height: 30px; display: inline-flex; align-items: center; justify-content: center;
  background: transparent; border: 1px solid var(--plb-line-2); border-radius: var(--plb-radius);
  color: var(--plb-ink-2); font-size: .8125rem; cursor: pointer;
}
.plb-theme-toggle:hover { border-color: var(--plb-red); color: var(--plb-red); }

/* --- pola formularza ----------------------------------------------------- */
.plb-field { display: block; }
.plb-field > span {
  display: block; font-size: .625rem; font-weight: 800; letter-spacing: .18em;
  text-transform: uppercase; color: var(--plb-ink-3); margin-bottom: .375rem;
}
.form-control.plb-input, .form-select.plb-input {
  height: 40px; background: var(--plb-panel);
  border: 1px solid var(--plb-line-2); border-radius: var(--plb-radius);
  color: var(--plb-ink); font-size: .84375rem;
}
.form-control.plb-input:focus, .form-select.plb-input:focus {
  background: var(--plb-panel); color: var(--plb-ink);
  border-color: var(--plb-red); box-shadow: none;
}
.form-check-input:checked { background-color: var(--plb-red); border-color: var(--plb-red); }

/* --- badge statusu ------------------------------------------------------- */
.plb-badge {
  display: inline-block; padding: .25rem .625rem;
  border: 1px solid var(--plb-line-2); border-radius: var(--plb-radius);
  font-size: .625rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase;
  color: var(--plb-ink-3); white-space: nowrap;
}
.plb-badge--pending { border-color: var(--plb-amber); color: var(--plb-amber); background: color-mix(in oklab, var(--plb-amber) 12%, transparent); }
.plb-badge--live { border-color: var(--plb-red); color: var(--plb-red); background: color-mix(in oklab, var(--plb-red) 12%, transparent); }
.plb-badge--done { border-color: var(--plb-green); color: var(--plb-green); background: color-mix(in oklab, var(--plb-green) 12%, transparent); }
.plb-badge--red { border-color: var(--plb-red); color: var(--plb-red); }
.plb-badge--blue { border-color: var(--plb-blue); color: var(--plb-blue); }

.plb-dot { width: 7px; height: 7px; border-radius: 50%; display: inline-block; flex: 0 0 auto; }
.plb-dot--red { background: var(--plb-red); }
.plb-dot--blue { background: var(--plb-blue); }
.plb-dot--green { background: var(--plb-green); }
.plb-dot--amber { background: var(--plb-amber); }

/* --- tabela danych ------------------------------------------------------- */
.plb-table { width: 100%; border-collapse: collapse; }
.plb-table thead th {
  padding: .625rem 1rem;
  background: var(--plb-panel-2);
  border-bottom: 1px solid var(--plb-line);
  font-size: .59375rem; font-weight: 800; letter-spacing: .18em;
  text-transform: uppercase; color: var(--plb-ink-3);
  text-align: left; white-space: nowrap;
}
.plb-table tbody td {
  padding: .75rem 1rem;
  border-bottom: 1px solid var(--plb-line);
  font-size: .8125rem;
  vertical-align: middle;
}
.plb-table tbody tr:hover { background: var(--plb-panel-2); }
.plb-table .num { font-family: var(--plb-font-mono); color: var(--plb-ink-3); width: 56px; }
.plb-table .t-center { text-align: center; }
.plb-table .t-right { text-align: right; }
.plb-table .strong { font-weight: 600; }

/* --- tabela klucz/wartość (dane rekordu) --------------------------------- */
.plb-kv { width: 100%; border-collapse: collapse; }
.plb-kv { table-layout: fixed; }
.plb-kv th {
  width: 230px; min-width: 120px; padding: .6875rem 1.25rem;
  font-size: .8125rem; font-weight: 400; color: var(--plb-ink-2);
  text-align: left; border-bottom: 1px solid var(--plb-line);
}
.plb-kv td {
  padding: .6875rem 1.25rem; overflow-wrap: anywhere;
  font-size: .8125rem; font-weight: 600;
  border-bottom: 1px solid var(--plb-line);
}
.plb-kv tr:nth-child(odd) th { background: var(--plb-panel-2); }
.plb-kv .empty { color: var(--plb-ink-3); font-weight: 400; }

/* --- kafle statystyk ----------------------------------------------------- */
.plb-stats {
  display: grid; grid-template-columns: 1fr 1fr; gap: 1px;
  background: var(--plb-line); border: 1px solid var(--plb-line);
}
.plb-stat { background: var(--plb-panel); padding: .8125rem .9375rem; }
.plb-stat b { display: block; font-size: 1.375rem; font-weight: 800; font-family: var(--plb-font-mono); margin-top: .25rem; }

/* --- pusty stan ---------------------------------------------------------- */
.plb-empty { padding: 2.75rem 1.25rem; text-align: center; }
.plb-empty strong { display: block; font-size: .84375rem; font-weight: 700; color: var(--plb-ink-2); }
.plb-empty span { display: block; font-size: .78125rem; color: var(--plb-ink-3); margin-top: .375rem; }

/* --- pulpit sędziego ----------------------------------------------------- */
.plb-corners { display: grid; grid-template-columns: minmax(0, 1fr) minmax(110px, 240px) minmax(0, 1fr); }
.plb-corners__head {
  padding: .6875rem 1.25rem; text-align: center;
  font-size: .6875rem; font-weight: 800; letter-spacing: .18em; text-transform: uppercase;
}
.plb-corners__head--red { background: var(--plb-red); color: #fff; }
.plb-corners__head--blue { background: var(--plb-blue); color: #fff; }
.plb-corners__head--mid { background: var(--plb-panel-2); color: var(--plb-ink-2); }
.plb-corners__body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(110px, 240px) minmax(0, 1fr); align-items: center; padding: 1.625rem 1.25rem; }
.plb-fighter { text-align: center; }
.plb-fighter b { font-size: 2rem; overflow-wrap: anywhere; font-weight: 800; text-transform: uppercase; line-height: 1.1; }
.plb-fighter span { display: block; font-size: .78125rem; color: var(--plb-ink-3); margin-top: .375rem; font-family: var(--plb-font-mono); }

.plb-round {
  display: grid; grid-template-columns: 56px 1fr auto; align-items: center; gap: 1rem;
  border: 1px solid var(--plb-line); border-radius: var(--plb-radius);
  padding: .75rem 1rem;
}
.plb-round.is-next {
  border-color: var(--plb-red);
  background: color-mix(in oklab, var(--plb-red) 6%, transparent);
}
.plb-round__label { font-size: .9375rem; font-weight: 800; font-family: var(--plb-font-mono); color: var(--plb-ink-3); }
.plb-round.is-next .plb-round__label { color: var(--plb-red); }
.plb-round.is-done .plb-round__label { color: var(--plb-ink); }
.plb-round__state { font-size: .71875rem; font-weight: 700; letter-spacing: .12em; color: var(--plb-ink-3); }
.plb-round.is-done .plb-round__state { color: var(--plb-green); }

.plb-vote {
  min-width: 62px; height: 38px;
  border: 1px solid var(--plb-line-2); border-radius: var(--plb-radius);
  background: transparent;
  font-size: .875rem; font-weight: 800; font-family: var(--plb-font-mono);
  cursor: pointer;
}
.plb-vote--red { border-color: var(--plb-red); color: var(--plb-red); }
.plb-vote--blue { border-color: var(--plb-blue); color: var(--plb-blue); }
.plb-vote--red.is-active { background: var(--plb-red); color: #fff; }
.plb-vote--blue.is-active { background: var(--plb-blue); color: #fff; }

.plb-tally { display: flex; align-items: center; justify-content: center; gap: 1.25rem; }
.plb-tally b { font-size: 2.75rem; font-weight: 800; font-family: var(--plb-font-mono); }
.plb-tally .sep { font-size: 1.25rem; color: var(--plb-ink-3); font-family: var(--plb-font-mono); }

/* --- 1440px laptop ------------------------------------------------------- */
@media (max-width: 1600px) {
  :root { --plb-nav-w: 224px; }
  .plb-pagehead h1 { font-size: 1.375rem; }
  .plb-fighter b { font-size: 1.625rem; }
}

/* --- werdykt pojedynku: kolor zwycięskiego narożnika, nigdy zielony ------- */
.plb-verdict {
  display: inline-block; min-width: 56px; padding: .1875rem .5625rem;
  border: 1px solid var(--plb-line-2); border-radius: var(--plb-radius);
  font-family: var(--plb-font-mono); font-size: .6875rem; font-weight: 800;
  color: var(--plb-ink-3); text-align: center;
}
.plb-verdict--red { border-color: var(--plb-red); color: var(--plb-red); background: color-mix(in oklab, var(--plb-red) 10%, transparent); }
.plb-verdict--blue { border-color: var(--plb-blue); color: var(--plb-blue); background: color-mix(in oklab, var(--plb-blue) 10%, transparent); }
.plb-verdict--ab { border-color: var(--plb-amber); color: var(--plb-amber); background: color-mix(in oklab, var(--plb-amber) 10%, transparent); }

/* --- kolumny zawodników w tabeli pojedynków ------------------------------ */
.plb-table--bouts td.corner-red { border-left: 3px solid var(--plb-red); }
.plb-table--bouts td.corner-blue { border-left: 3px solid var(--plb-blue); }
.plb-table tfoot td {
  padding: .8125rem 1rem;
  background: var(--plb-panel-2);
  border-top: 1px solid var(--plb-line);
}

/* --- siatki dwukolumnowe: lewa kolumna musi móc się kurczyć -------------- */
.plb-main .d-grid[style*="1fr 372px"] { grid-template-columns: minmax(0, 1fr) 372px !important; }
.plb-main .plb-card { min-width: 0; }

/* --- pulpit sędziego ----------------------------------------------------- */
.plb-metastrip {
  display: grid; grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 1px; background: var(--plb-line);
}
.plb-metastrip > div { background: var(--plb-panel); padding: .75rem 1.125rem; min-width: 0; }
.plb-metastrip b {
  display: block; margin-top: .25rem;
  font-size: .875rem; font-weight: 700; overflow-wrap: anywhere;
}
.plb-metastrip b.empty { color: var(--plb-ink-3); font-weight: 400; }

.plb-roundstrip {
  display: flex; align-items: center; gap: 1.5rem;
  padding: 1rem 1.25rem;
  border-top: 1px solid var(--plb-line);
  background: var(--plb-panel-2);
}
.plb-round__num { font-family: var(--plb-font-mono); font-size: 2.5rem; font-weight: 800; line-height: 1; color: var(--plb-red); }
.plb-round__of { font-family: var(--plb-font-mono); font-size: 1.125rem; font-weight: 700; color: var(--plb-ink-3); }
.plb-pill {
  width: 58px; height: 48px;
  background: transparent; border: 1px solid var(--plb-line-2); border-radius: var(--plb-radius);
  color: var(--plb-ink-2);
  font-family: var(--plb-font-mono); font-size: .9375rem; font-weight: 800;
  cursor: pointer;
}
.plb-pill:hover { border-color: var(--plb-red); }
.plb-pill.is-active {
  border-color: var(--plb-red); color: var(--plb-red);
  background: color-mix(in oklab, var(--plb-red) 14%, transparent);
}
.plb-clock { font-family: var(--plb-font-mono); font-size: 2.25rem; font-weight: 800; line-height: 1; color: var(--plb-green); }
.plb-clock.is-paused { color: var(--plb-ink-2); }
.plb-clock.is-warning { color: var(--plb-red); }

.plb-scorerow { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
.plb-scorerow .plb-vote { width: 100%; height: 44px; font-size: 1rem; letter-spacing: .04em; }

.plb-specials { display: grid; grid-template-columns: repeat(4, 1fr); gap: .5rem; }
.plb-special {
  height: 38px;
  background: transparent; border: 1px solid var(--plb-line-2); border-radius: var(--plb-radius);
  color: var(--plb-ink-2);
  font-family: var(--plb-font-mono); font-size: .78125rem; font-weight: 800; letter-spacing: .04em;
  cursor: pointer;
}
.plb-special:hover { border-color: var(--plb-ink-2); color: var(--plb-ink); }
.plb-special.is-active {
  border-color: var(--plb-amber); color: var(--plb-amber);
  background: color-mix(in oklab, var(--plb-amber) 14%, transparent);
}

.plb-verdictline {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: .75rem .875rem;
  background: var(--plb-panel-2); border: 1px solid var(--plb-line); border-radius: var(--plb-radius);
}
.plb-verdictline b { font-family: var(--plb-font-mono); font-size: .9375rem; font-weight: 800; }

.plb-winner {
  height: 48px; border: 1px solid; border-radius: var(--plb-radius);
  background: transparent;
  font-size: .78125rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase;
  cursor: pointer;
}
.plb-winner--red { border-color: var(--plb-red); color: var(--plb-red); }
.plb-winner--blue { border-color: var(--plb-blue); color: var(--plb-blue); }
.plb-winner--red.is-active { background: var(--plb-red); color: #fff; }
.plb-winner--blue.is-active { background: var(--plb-blue); color: #fff; }

.plb-table tr.is-current { background: color-mix(in oklab, var(--plb-red) 7%, transparent); }
.plb-table tr.is-current td { border-bottom-color: var(--plb-line-2); }
.plb-rowbtn {
  background: transparent; border: 0; padding: .125rem .375rem;
  color: var(--plb-ink-3); font-size: .6875rem; font-weight: 800; letter-spacing: .08em;
  cursor: pointer;
}
.plb-rowbtn:hover { color: var(--plb-red); }
.plb-table--assign td { padding: .5rem .75rem; }
.form-select.plb-select-sm { height: 34px; font-size: .78125rem; padding: 0 1.75rem 0 .625rem; }

/* --- szerokie tabele: przewijanie zamiast obcinania ---------------------- */
.plb-table-wrap { overflow-x: auto; }
.plb-table-wrap .plb-table { min-width: 880px; }
.plb-table-wrap .plb-table--assign { min-width: 1040px; }
.plb-roundstrip { flex-wrap: wrap; row-gap: .75rem; }

/* --- poniżej 1200px: kolumna boczna schodzi pod treść -------------------- */
@media (max-width: 1200px) {
  .plb-main .d-grid[style*="420px"],
  .plb-main .d-grid[style*="372px"] { grid-template-columns: minmax(0, 1fr) !important; }
  .plb-metastrip { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .plb-fighter b { font-size: 1.5rem; }
}
