/**
 * Standard League hub (Phase 6). Shares the PESBUL premium dark navy / cyan / gold
 * design language with the ELO Hub and Member Dashboard.
 */

/* THE PALETTE BELONGS TO BOTH PAGES.
   These custom properties used to be declared on `.pb-sl` alone — the league
   wrapper. The cup renders `.pb-cuppage` and never carries that class, so on the
   cup page every `var(--sl-…)` in this whole stylesheet resolved to nothing.
   A declaration with an undefined variable is INVALID and is simply dropped, so
   the failure was silent and selective: `--sl-green` vanished and the qualifier
   bars on 1st and 2nd disappeared, while the non-qualifier bar survived because
   it happens to be written as a literal rgba() — which read as though the site
   had marked the wrong three players. The avatars went the same way: their
   gradient died and left a near-black initial on nothing. */
.pb-sl,
.pb-cuppage {
  --sl-bg: #04101c;
  --sl-card: rgba(11, 26, 43, 0.72);
  --sl-card-2: rgba(9, 21, 36, 0.9);
  --sl-border: rgba(56, 104, 148, 0.32);
  --sl-cyan: #22d3ee;
  --sl-blue: #4f7fff;
  --sl-gold: #f2c14e;
  --sl-green: #35e56f;
  --sl-red: #ff5470;
  --sl-text: #eaf4ff;
  --sl-muted: #8fa8c4;
  display: flex;
  flex-direction: column;
  gap: 20px;
  color: var(--sl-text);
  /* Only the bottom. Width and the left/right gutter belong to .pb-content in
     shell.css — resetting `padding` here wiped the gutter and glued every card
     to the container edges. */
  padding-bottom: 24px;
}

.pb-sl-muted { color: var(--sl-muted); font-size: 0.9rem; margin: 8px 0; }
.pb-sl-card { background: linear-gradient(180deg, var(--sl-card), var(--sl-card-2)); border: 1px solid var(--sl-border); border-radius: 16px; padding: 18px; box-shadow: 0 18px 40px rgba(0, 0, 0, 0.28); }
.pb-sl-card__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 14px; }
.pb-sl-card__head h2 { color: var(--sl-text); }
.pb-sl-link { color: var(--sl-cyan); font-size: 0.8rem; text-decoration: none; }
.pb-sl-pill { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--sl-muted); border: 1px solid var(--sl-border); border-radius: 999px; padding: 2px 10px; }
.pb-sl svg { width: 18px; height: 18px; }

/* ---- Hero (banner-driven) ---- */
.pb-sl-hero { position: relative; display: grid; grid-template-columns: auto 1fr auto; gap: 22px; align-items: center; min-height: 250px; padding: 30px; border-radius: 20px; overflow: hidden; border: 1px solid var(--sl-border); background: #061523; }
/* Background layer: the banner blurred + darkened, filling behind everything. */
.pb-sl-hero__bg { position: absolute; inset: -30px; z-index: 0; background-image: var(--pb-sl-hero, none); background-size: cover; background-position: center; filter: blur(30px) brightness(0.4) saturate(1.1); transform: scale(1.12); }
/* Header layer: the SHARP banner, clear on the right, darkened on the left for text. */
.pb-sl-hero__banner { position: absolute; inset: 0; z-index: 0; background-image: linear-gradient(90deg, #061523 0%, rgba(6, 21, 35, 0.82) 30%, rgba(6, 21, 35, 0.28) 62%, rgba(6, 21, 35, 0.02) 100%), var(--pb-sl-hero, radial-gradient(1200px 320px at 74% 30%, rgba(34, 211, 238, 0.2), transparent)); background-size: cover; background-position: center right; }
.pb-sl-hero > *:not(.pb-sl-hero__bg):not(.pb-sl-hero__banner) { position: relative; z-index: 1; }
.pb-sl-hero__emblem { width: 82px; height: 82px; display: grid; place-items: center; border-radius: 18px; background: rgba(4, 16, 28, 0.72); border: 1px solid var(--sl-border); overflow: hidden; box-shadow: 0 10px 26px rgba(0, 0, 0, 0.45); }
.pb-sl-hero__emblem img { width: 100%; height: 100%; object-fit: cover; }
.pb-sl-emblem-ph { color: var(--sl-cyan); display: grid; place-items: center; }
.pb-sl-emblem-ph svg { width: 46px; height: 46px; }
.pb-sl-emblem-ph--sm svg { width: 34px; height: 34px; }
.pb-sl-hero__eyebrow { margin: 0; text-transform: uppercase; letter-spacing: 0.22em; font-size: 0.72rem; color: var(--sl-muted); }
.pb-sl-hero__title { margin: 2px 0 8px; font-size: 2.1rem; line-height: 1.05; text-transform: uppercase; letter-spacing: 0.02em; }
.pb-sl-hero__desc { margin: 10px 0 14px; color: var(--sl-muted); max-width: 46ch; }
.pb-sl-badge { display: inline-flex; align-items: center; gap: 6px; font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.08em; padding: 4px 12px; border-radius: 999px; font-weight: 700; background: rgba(53, 229, 111, 0.14); color: var(--sl-green); border: 1px solid rgba(53, 229, 111, 0.4); }
.pb-sl-badge--registration { background: rgba(242, 193, 78, 0.14); color: var(--sl-gold); border-color: rgba(242, 193, 78, 0.4); }
.pb-sl-badge--completed, .pb-sl-badge--archived { background: rgba(143, 168, 196, 0.14); color: var(--sl-muted); border-color: var(--sl-border); }
.pb-sl-hero__meta { display: flex; flex-wrap: wrap; gap: 10px 22px; list-style: none; margin: 0; padding: 0; }
.pb-sl-hero__meta li { display: flex; align-items: center; gap: 8px; }
.pb-sl-hero__meta small { display: block; font-size: 0.66rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--sl-muted); }
.pb-sl-hero__meta b { font-size: 0.86rem; }
.pb-sl-hero__mi { color: var(--sl-cyan); display: grid; place-items: center; }
.pb-sl-hero__division { text-align: center; min-width: 150px; padding: 16px; border-radius: 16px; background: rgba(4, 16, 28, 0.55); border: 1px solid var(--sl-border); }
.pb-sl-division__crest { width: 60px; height: 60px; margin: 0 auto 8px; display: grid; place-items: center; border-radius: 12px; overflow: hidden; }
.pb-sl-division__crest img { width: 100%; height: 100%; object-fit: cover; }
.pb-sl-division__label { margin: 0; font-size: 0.64rem; text-transform: uppercase; letter-spacing: 0.14em; color: var(--sl-muted); }
.pb-sl-division__name { margin: 2px 0 8px; font-weight: 800; letter-spacing: 0.04em; }
.pb-sl-division__seed small { display: block; font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--sl-muted); }
.pb-sl-division__seed span { display: inline-flex; align-items: center; gap: 6px; margin-top: 4px; }

/* ---- Registration banner ---- */
.pb-sl-reg { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding: 16px 20px; border-radius: 16px; border: 1px solid rgba(242, 193, 78, 0.36); background: linear-gradient(180deg, rgba(242, 193, 78, 0.08), rgba(9, 21, 36, 0.9)); }
.pb-sl-reg__info { display: flex; align-items: center; gap: 12px; }
.pb-sl-reg__dot { width: 12px; height: 12px; border-radius: 50%; background: var(--sl-gold); box-shadow: 0 0 0 0 rgba(242, 193, 78, 0.6); animation: pb-sl-pulse 2s infinite; flex: 0 0 auto; }
@keyframes pb-sl-pulse { 0% { box-shadow: 0 0 0 0 rgba(242, 193, 78, 0.5); } 70% { box-shadow: 0 0 0 10px rgba(242, 193, 78, 0); } 100% { box-shadow: 0 0 0 0 rgba(242, 193, 78, 0); } }
.pb-sl-reg__info strong { display: block; }
.pb-sl-reg__cta { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.pb-sl-reg__joined { color: var(--sl-green); font-weight: 700; }
.pb-sl-notice { width: 100%; margin: 0; font-size: 0.82rem; }
.pb-sl-notice.is-ok { color: var(--sl-green); }
.pb-sl-notice.is-error { color: var(--sl-red); }

/* ---- Tabs ---- */
.pb-sl-tabs { display: flex; gap: 6px; overflow-x: auto; border-bottom: 1px solid var(--sl-border); padding-bottom: 2px; }
.pb-sl-tab { flex: 0 0 auto; background: none; border: none; color: var(--sl-muted); font: inherit; font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.06em; padding: 10px 14px; cursor: pointer; border-bottom: 2px solid transparent; }
.pb-sl-tab.is-active { color: var(--sl-text); border-bottom-color: var(--sl-cyan); }

/* ---- Grid ---- */
.pb-sl-grid { display: grid; gap: 16px; }
.pb-sl-grid--3 { grid-template-columns: 1.4fr 1fr 1fr; }
.pb-sl-grid--2 { grid-template-columns: 1fr 1fr; }
.pb-sl-grid--2to1 { grid-template-columns: 2fr 1fr; }
.pb-sl-card--wide { grid-row: span 1; }

/* ---- Standings table ---- */
.pb-sl-table { width: 100%; border-collapse: collapse; font-size: 0.86rem; }
.pb-sl-table th { text-align: center; font-size: 0.64rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--sl-muted); padding: 6px 4px; border-bottom: 1px solid var(--sl-border); font-weight: 600; }
.pb-sl-table th:nth-child(2) { text-align: left; }
.pb-sl-table td { text-align: center; padding: 8px 4px; border-bottom: 1px solid rgba(56, 104, 148, 0.14); }
.pb-sl-table td:nth-child(2) { text-align: left; }
.pb-sl-table tr.is-mine { background: rgba(34, 211, 238, 0.08); }
.pb-sl-pos { position: relative; padding-left: 12px !important; font-weight: 700; }
.pb-sl-mkbar { position: absolute; left: 0; top: 4px; bottom: 4px; width: 3px; border-radius: 3px; background: transparent; }
.pb-sl-mk--promotion .pb-sl-mkbar, .pb-sl-mk--champion .pb-sl-mkbar { background: var(--sl-green); }
.pb-sl-mk--relegation .pb-sl-mkbar { background: var(--sl-red); }
.pb-sl-mk--mid .pb-sl-mkbar { background: rgba(79, 127, 255, 0.5); }
.pb-sl-pts { font-weight: 800; color: var(--sl-cyan); }
.pb-sl-player { display: inline-flex; align-items: center; gap: 8px; }
.pb-sl-form { display: inline-flex; gap: 3px; }
.pb-sl-f { width: 18px; height: 18px; border-radius: 5px; display: inline-grid; place-items: center; font-size: 0.6rem; font-weight: 800; color: #04101c; }
.pb-sl-f--w { background: var(--sl-green); }
.pb-sl-f--d { background: var(--sl-gold); }
.pb-sl-f--l { background: var(--sl-red); }
.pb-sl-legend { display: flex; gap: 18px; margin-top: 12px; font-size: 0.72rem; color: var(--sl-muted); flex-wrap: wrap; }
.pb-sl-dot { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 6px; vertical-align: middle; }
.pb-sl-dot--promotion { background: var(--sl-green); }
.pb-sl-dot--mid { background: rgba(79, 127, 255, 0.6); }
.pb-sl-dot--relegation { background: var(--sl-red); }

/* ---- Avatar ---- */
/* The same face the rest of the site draws: a dark disc, a cyan ring and a cyan
   initial. It used to be a cyan gradient with a near-black letter, which read as
   a different kind of object from the avatars on the homepage and the profiles —
   and when its gradient failed it left an almost invisible letter on nothing. */
.pb-sl-avatar {
    width: 28px;
    height: 28px;
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    overflow: hidden;
    border: 1px solid rgba(0, 201, 255, 0.42);
    border-radius: 50%;
    font: 700 0.72rem/1 var(--pb-font-display);
    color: var(--pb-cyan, #00c9ff);
    background: radial-gradient(circle at 50% 25%, #0d2c40, #061b29);
}
.pb-sl-avatar img { width: 100%; height: 100%; object-fit: cover; }
.pb-sl-avatar--sm { width: 24px; height: 24px; font-size: 0.66rem; }

/* ---- Progress ---- */
.pb-sl-prog__top { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 8px; }
.pb-sl-prog__top b { font-size: 1.3rem; color: var(--sl-cyan); }
.pb-sl-bar { display: block; height: 8px; border-radius: 999px; background: rgba(56, 104, 148, 0.28); overflow: hidden; }
.pb-sl-bar > span { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--sl-cyan), var(--sl-blue)); }
.pb-sl-prog__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 16px; }
.pb-sl-prog__grid small { display: block; font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--sl-muted); }
.pb-sl-prog__grid b { font-size: 0.9rem; }

/* ---- Fixtures / results ---- */
.pb-sl-fixtures, .pb-sl-results { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.pb-sl-fixtures li { padding: 10px; border-radius: 12px; border: 1px solid var(--sl-border); background: rgba(4, 16, 28, 0.4); }
.pb-sl-fixtures li.is-mine { border-color: rgba(34, 211, 238, 0.5); }
.pb-sl-yours { display: inline-block; font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--sl-cyan); font-weight: 800; margin-bottom: 4px; }
.pb-sl-fx { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.pb-sl-fx__side { display: inline-flex; align-items: center; gap: 6px; font-size: 0.82rem; flex: 1; min-width: 0; }
.pb-sl-fx__side b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pb-sl-fx__side--away { justify-content: flex-end; text-align: right; }
.pb-sl-fx__vs { font-size: 0.66rem; color: var(--sl-muted); text-transform: uppercase; }
.pb-sl-fx__meta { display: block; margin-top: 6px; font-size: 0.68rem; color: var(--sl-muted); }
.pb-sl-results li { display: flex; align-items: center; gap: 8px; padding: 8px; border-radius: 10px; background: rgba(4, 16, 28, 0.4); }
.pb-sl-score { font-weight: 800; color: var(--sl-cyan); flex: 0 0 auto; padding: 0 6px; }

/* ---- Fixture calendar (mockup: round bar + day strip + day agenda) ---- */
.pb-sl-cal__bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 14px; border-radius: 12px; background: rgba(4, 16, 28, 0.55); border: 1px solid var(--sl-border); margin-bottom: 14px; }
.pb-sl-cal__title { text-align: center; display: flex; flex-direction: column; gap: 2px; }
.pb-sl-cal__title strong { font-size: 0.95rem; text-transform: uppercase; letter-spacing: 0.06em; }
.pb-sl-cal__title small { color: var(--sl-muted); font-size: 0.72rem; }
.pb-sl-cal__nav { width: 34px; height: 34px; flex: 0 0 auto; border-radius: 10px; border: 1px solid var(--sl-border); background: rgba(4, 16, 28, 0.6); color: var(--sl-cyan); font-size: 1.2rem; line-height: 1; cursor: pointer; transition: border-color 0.12s, color 0.12s; }
.pb-sl-cal__nav:hover { border-color: var(--sl-cyan); color: #fff; }
.pb-sl-cal__nav[disabled] { opacity: 0.3; cursor: default; }
/* A rolling 7-day window: exactly seven cells on one row, sliding as rounds pass. */
.pb-sl-cal__strip { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; padding-bottom: 4px; margin-bottom: 14px; }
@media (max-width: 900px) {
  .pb-sl-cal__strip { grid-template-columns: repeat(auto-fit, minmax(64px, 1fr)); }
}
.pb-sl-cal__day { position: relative; display: flex; flex-direction: column; align-items: center; gap: 1px; padding: 10px 6px 12px; border-radius: 12px; border: 1px solid var(--sl-border); background: rgba(4, 16, 28, 0.4); color: var(--sl-text); cursor: pointer; font: inherit; transition: border-color 0.12s, background 0.12s, transform 0.12s; }
.pb-sl-cal__day:hover { border-color: rgba(34, 211, 238, 0.5); transform: translateY(-2px); }
.pb-sl-cal__day small { font-size: 0.6rem; letter-spacing: 0.08em; color: var(--sl-muted); }
.pb-sl-cal__day b { font-size: 1.25rem; line-height: 1.1; }
.pb-sl-cal__mon { font-size: 0.58rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--sl-muted); }
.pb-sl-cal__dot { position: absolute; bottom: 5px; width: 5px; height: 5px; border-radius: 50%; background: var(--sl-cyan); opacity: 0.75; }
.pb-sl-cal__rno { display: block; margin-top: 3px; font-style: normal; font-size: 0.56rem; font-weight: 800; letter-spacing: 0.06em; color: var(--sl-muted); }
.pb-sl-cal__day.is-active .pb-sl-cal__rno { color: var(--sl-cyan); }
.pb-sl-cal__day.is-done { border-color: rgba(53, 229, 111, 0.35); }
.pb-sl-cal__day.is-done .pb-sl-cal__rno { color: var(--sl-green); }
.pb-sl-cal__day.is-empty { opacity: 0.42; }
.pb-sl-cal__day.is-empty:hover { opacity: 0.7; }
.pb-sl-cal__day.is-active { background: linear-gradient(180deg, rgba(34, 211, 238, 0.22), rgba(4, 16, 28, 0.5)); border-color: var(--sl-cyan); box-shadow: 0 0 0 1px rgba(34, 211, 238, 0.25); opacity: 1; }
.pb-sl-cal__day.is-active small, .pb-sl-cal__day.is-active .pb-sl-cal__mon { color: var(--sl-text); }
.pb-sl-cal__date { margin: 0 0 10px; font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--sl-cyan); }
.pb-sl-cal__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.pb-sl-cal__list li { display: grid; grid-template-columns: auto 1fr auto 1fr auto auto; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 12px; background: rgba(4, 16, 28, 0.42); border: 1px solid var(--sl-border); }
.pb-sl-cal__list li.is-mine { border-color: rgba(34, 211, 238, 0.5); background: rgba(34, 211, 238, 0.08); }
.pb-sl-cal__time { font-size: 0.72rem; font-weight: 700; color: var(--sl-muted); white-space: nowrap; }
.pb-sl-cal__mode { font-size: 0.6rem; font-weight: 800; letter-spacing: 0.05em; padding: 2px 7px; border-radius: 6px; color: var(--sl-cyan); background: rgba(34, 211, 238, 0.12); border: 1px solid rgba(34, 211, 238, 0.3); }
.pb-sl-cal__list .pb-sl-room-chip,
.pb-sl-cal__list .pb-sl-fx__act,
.pb-sl-cal__list .pb-sl-fx__wait { grid-column: 1 / -1; }
@media (max-width: 760px) {
  .pb-sl-cal__list li { grid-template-columns: 1fr auto 1fr; }
  .pb-sl-cal__time, .pb-sl-cal__mode { grid-column: 1 / -1; }
}

/* ---- Fixture calendar (all fixtures by round) ---- */
.pb-sl-rounds { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; }
.pb-sl-round { border: 1px solid var(--sl-border); border-radius: 12px; background: rgba(4, 16, 28, 0.35); overflow: hidden; }
.pb-sl-round.is-active { border-color: rgba(34, 211, 238, 0.45); box-shadow: 0 0 0 1px rgba(34, 211, 238, 0.15); }
.pb-sl-round__title { margin: 0; padding: 8px 12px; font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.07em; color: var(--sl-cyan); background: rgba(4, 16, 28, 0.55); border-bottom: 1px solid var(--sl-border); display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.pb-sl-round__title small { color: var(--sl-muted); letter-spacing: 0.02em; text-transform: none; font-size: 0.68rem; }
.pb-sl-fx__time { grid-column: 1 / -1; font-size: 0.64rem; color: var(--sl-muted); letter-spacing: 0.03em; }
.pb-sl-round__list { list-style: none; margin: 0; padding: 8px; display: flex; flex-direction: column; gap: 6px; }
.pb-sl-round__list li { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 8px; padding: 7px 8px; border-radius: 8px; background: rgba(4, 16, 28, 0.4); }
.pb-sl-round__list li.is-mine { background: rgba(34, 211, 238, 0.1); box-shadow: inset 0 0 0 1px rgba(34, 211, 238, 0.3); }
.pb-sl-round__list .pb-sl-room-chip,
.pb-sl-round__list .pb-sl-fx__act,
.pb-sl-round__list .pb-sl-fx__wait { grid-column: 1 / -1; }
.pb-sl-fx__act { display: flex; gap: 6px; justify-content: center; }
.pb-sl-fx__wait { text-align: center; font-size: 0.72rem; color: var(--sl-muted); font-style: italic; }
.pb-sl-room-chip { background: rgba(4, 16, 28, 0.6); border: 1px dashed var(--sl-border); border-radius: 6px; padding: 3px 8px; cursor: pointer; color: var(--sl-gold); font: inherit; text-align: center; }
.pb-sl-room-chip code { font-size: 0.7rem; letter-spacing: 0.04em; color: var(--sl-gold); }
.pb-sl-room-chip:hover { border-color: var(--sl-cyan); }

/* ---- Room code helper ---- */
.pb-sl-card--room { background: linear-gradient(180deg, rgba(34, 211, 238, 0.06), var(--sl-card-2)); }
.pb-sl-room__label { margin: 0; font-size: 0.66rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--sl-muted); }
.pb-sl-room__format { font-size: 2rem; font-weight: 800; letter-spacing: 0.32em; text-align: center; margin: 6px 0 14px; color: var(--sl-text); }
.pb-sl-room__legend { list-style: none; margin: 0 0 14px; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(72px, 1fr)); gap: 8px; }
.pb-sl-room__legend li { text-align: center; padding: 8px 4px; border-radius: 10px; background: rgba(4, 16, 28, 0.5); border: 1px solid var(--sl-border); }
.pb-sl-room__legend b { display: block; color: var(--sl-cyan); font-size: 0.82rem; letter-spacing: 0.1em; }
.pb-sl-room__legend small { display: block; font-size: 0.58rem; color: var(--sl-muted); margin-top: 2px; }
.pb-sl-room__example { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 10px; border-radius: 10px; background: rgba(4, 16, 28, 0.55); border: 1px dashed var(--sl-border); margin-bottom: 12px; }
.pb-sl-room__example small { text-transform: uppercase; font-size: 0.6rem; letter-spacing: 0.08em; color: var(--sl-muted); }
.pb-sl-room__example code { font-size: 1rem; font-weight: 700; letter-spacing: 0.08em; color: var(--sl-gold); flex: 1; }
.pb-sl-room__rules { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.pb-sl-room__rules li { font-size: 0.76rem; color: var(--sl-muted); padding-left: 18px; position: relative; }
.pb-sl-room__rules li::before { content: "✓"; position: absolute; left: 0; color: var(--sl-green); }

/* ---- Stats ---- */
.pb-sl-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.pb-sl-stats div { padding: 12px; border-radius: 12px; background: rgba(4, 16, 28, 0.4); border: 1px solid var(--sl-border); }
.pb-sl-stats small { display: block; font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--sl-muted); }
.pb-sl-stats b { font-size: 1.5rem; color: var(--sl-text); }

/* ---- Settings / participants / lists ---- */
.pb-sl-settings { list-style: none; margin: 0; padding: 0; }
.pb-sl-settings li { display: flex; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px solid rgba(56, 104, 148, 0.14); font-size: 0.84rem; }
.pb-sl-settings span { color: var(--sl-muted); }
.pb-sl-locknote { margin-top: 12px; }
.pb-sl-participants { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 8px; }
.pb-sl-participants li { display: flex; align-items: center; gap: 8px; padding: 8px; border-radius: 10px; background: rgba(4, 16, 28, 0.4); border: 1px solid var(--sl-border); font-size: 0.82rem; }
.pb-sl-auto, .pb-sl-resources { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.pb-sl-auto li { display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; column-gap: 12px; align-items: center; }
.pb-sl-auto__i { grid-row: span 2; width: 40px; height: 40px; display: grid; place-items: center; border-radius: 12px; color: var(--sl-cyan); background: rgba(34, 211, 238, 0.1); border: 1px solid var(--sl-border); }
.pb-sl-auto b { font-size: 0.9rem; }
.pb-sl-auto small { color: var(--sl-muted); font-size: 0.76rem; }
.pb-sl-resources li { display: flex; align-items: center; gap: 12px; padding: 12px; border-radius: 12px; background: rgba(4, 16, 28, 0.4); border: 1px solid var(--sl-border); }
.pb-sl-resources span { color: var(--sl-cyan); display: grid; place-items: center; }

/* ---- Player comparison ---- */
.pb-sl-cmp { display: grid; grid-template-columns: minmax(140px, 1fr) minmax(240px, 2.2fr) minmax(140px, 1fr); gap: 18px; align-items: center; }
.pb-sl-cmp__player { display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; padding: 16px 12px; border-radius: 14px; background: rgba(4, 16, 28, 0.45); border: 1px solid var(--sl-border); }
.pb-sl-cmp__player.is-mine { border-color: rgba(34, 211, 238, 0.5); box-shadow: 0 0 0 1px rgba(34, 211, 238, 0.2); }
.pb-sl-cmp__player .pb-sl-avatar { width: 56px; height: 56px; font-size: 1.1rem; }
.pb-sl-cmp__player strong { font-size: 0.98rem; }
.pb-sl-cmp__player small { color: var(--sl-muted); font-size: 0.74rem; }
.pb-sl-cmp__rows { display: flex; flex-direction: column; gap: 8px; }
.pb-sl-cmp__row { display: grid; grid-template-columns: 34px 1fr auto 1fr 34px; align-items: center; gap: 8px; }
.pb-sl-cmp__v { font-size: 0.85rem; font-weight: 800; text-align: center; }
.pb-sl-cmp__label { font-size: 0.66rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--sl-muted); white-space: nowrap; }
.pb-sl-cmp__bar { display: block; height: 7px; border-radius: 999px; background: rgba(56, 104, 148, 0.28); overflow: hidden; position: relative; }
.pb-sl-cmp__bar i { position: absolute; top: 0; bottom: 0; display: block; border-radius: 999px; }
.pb-sl-cmp__bar--a i { right: 0; background: linear-gradient(90deg, var(--sl-blue), var(--sl-cyan)); }
.pb-sl-cmp__bar--b i { left: 0; background: linear-gradient(90deg, var(--sl-gold), #ff8a4d); }
@media (max-width: 720px) {
  .pb-sl-cmp { grid-template-columns: 1fr 1fr; }
  .pb-sl-cmp__rows { grid-column: 1 / -1; order: 3; }
}

/* ---- Trophies / honours ---- */
.pb-sl-honours { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.pb-sl-honours li { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 12px; background: rgba(4, 16, 28, 0.4); border: 1px solid var(--sl-border); }
.pb-sl-trophy { width: 42px; height: 42px; flex: 0 0 auto; display: grid; place-items: center; font-size: 1.35rem; border-radius: 12px; background: color-mix(in srgb, var(--t, #f2c14e) 18%, #04101c); border: 1px solid color-mix(in srgb, var(--t, #f2c14e) 45%, transparent); box-shadow: inset 0 0 14px color-mix(in srgb, var(--t, #f2c14e) 20%, transparent); overflow: hidden; }
.pb-sl-trophy img { width: 100%; height: 100%; object-fit: contain; }
.pb-sl-honours__meta { display: flex; flex-direction: column; min-width: 0; }
.pb-sl-honours__meta strong { font-size: 0.9rem; }
.pb-sl-honours__meta small { color: var(--sl-muted); font-size: 0.72rem; }

/* ---- Empty state ---- */
.pb-sl-empty { text-align: center; padding: 60px 20px; }
.pb-sl-shield { display: inline-grid; place-items: center; width: 72px; height: 72px; color: var(--sl-cyan); }
.pb-sl-shield svg { width: 48px; height: 48px; }

/* ---- Tab panels ---- */
.pb-sl.is-filtered [data-pb-sl-panel]:not(.is-shown) { display: none; }

/* ---- Game Modes hub ---- */
.pb-gm-hero { position: relative; isolation: isolate; overflow: hidden; border-radius: 20px; border: 1px solid var(--sl-border); padding: clamp(28px, 5vw, 56px) clamp(20px, 4vw, 44px); background: #061523; }
.pb-gm-hero__bg { position: absolute; inset: 0; z-index: -1; background: radial-gradient(900px 320px at 25% 0%, rgba(34, 211, 238, 0.22), transparent), radial-gradient(700px 280px at 90% 100%, rgba(79, 127, 255, 0.18), transparent); }
.pb-gm.has-art .pb-gm-hero__bg { background-image: var(--gm-art); background-size: cover; background-position: center 35%; }
/* Keeps the title readable over any uploaded photo, however bright. */
.pb-gm.has-art .pb-gm-hero::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(100deg, rgba(3, 12, 22, 0.94) 0%, rgba(3, 12, 22, 0.76) 45%, rgba(3, 12, 22, 0.34) 100%); }
.pb-gm-hero__copy { position: relative; }
/* Two-tone title: the first word in white, the second in the brand blue.
   The two words stack on a narrow screen and sit side by side once there is
   room, so the break never lands mid-word. */
.pb-gm-hero__title {
  display: flex; flex-wrap: wrap; gap: 0 0.32em;
  margin: 8px 0 0; font-size: clamp(2.2rem, 6vw, 4.6rem); line-height: 0.92;
  letter-spacing: -0.02em;
  text-shadow: 0 4px 30px rgba(0, 0, 0, 0.65);
}
.pb-gm-hero__title span { color: #fff; }
.pb-gm-hero__title-accent {
  color: var(--sl-cyan);
  background: linear-gradient(180deg, #6cc4ff, #1687ff 70%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
/* The short accent bar under the title. */
.pb-gm-hero__rule {
  display: block; width: 74px; height: 5px; margin: 20px 0 18px;
  border-radius: 99px;
  background: linear-gradient(90deg, #1687ff, #6cc4ff);
}
@media (min-width: 900px) { .pb-gm-hero__title { display: grid; justify-items: start; } }
.pb-gm-hero__eyebrow { margin: 0; font-size: 0.72rem; letter-spacing: 0.24em; text-transform: uppercase; color: var(--sl-cyan); }
.pb-gm-hero__desc { margin: 0; color: #bcd6e8; max-width: 60ch; line-height: 1.55; }
.pb-gm-mode { margin-top: 26px; }
.pb-gm-mode__head { display: flex; align-items: center; gap: 12px; margin: 0 0 16px; padding: 0 0 10px; border-bottom: 1px solid var(--sl-border); }
.pb-gm-mode__head h2 { margin: 0; font-size: 1.1rem; text-transform: uppercase; letter-spacing: 0.06em; }
.pb-gm-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 22px; }
@media (min-width: 1440px) { .pb-gm-grid { grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); } }
.pb-gm-card { display: flex; flex-direction: column; border-radius: 16px; border: 1px solid var(--sl-border); background: linear-gradient(180deg, var(--sl-card), var(--sl-card-2)); text-decoration: none; color: var(--sl-text); transition: transform 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease; position: relative; overflow: hidden; }
.pb-gm-card:hover { transform: translateY(-4px); border-color: var(--gm-accent, var(--sl-cyan)); box-shadow: 0 24px 48px rgba(0, 0, 0, 0.45); }
/* One banner image drives the card thumbnail; a dark scrim keeps text readable. */
.pb-gm-card__banner { display: block; height: 104px; background-color: #0a1826; background-image: linear-gradient(135deg, color-mix(in srgb, var(--gm-accent, #22d3ee) 55%, #0a1826), #0a1826); background-size: cover; background-position: center; position: relative; }
.pb-gm-card.has-banner .pb-gm-card__banner { background-image: linear-gradient(180deg, rgba(4, 16, 28, 0.1), rgba(4, 16, 28, 0.72)), var(--gm-banner); }
.pb-gm-card__banner::after { content: ""; position: absolute; inset: auto 0 0 0; height: 40px; background: linear-gradient(180deg, transparent, var(--sl-card)); }
.pb-gm-card__emblem { width: 54px; height: 54px; border-radius: 14px; display: grid; place-items: center; background: rgba(4, 16, 28, 0.85); border: 1px solid var(--sl-border); color: var(--gm-accent, var(--sl-cyan)); overflow: hidden; margin: -30px 18px 0; position: relative; z-index: 1; box-shadow: 0 8px 20px rgba(0, 0, 0, 0.4); }
.pb-gm-card__emblem img { width: 100%; height: 100%; object-fit: cover; }
.pb-gm-card__emblem svg { width: 28px; height: 28px; }
.pb-gm-card__body { display: flex; flex-direction: column; gap: 3px; flex: 1; padding: 10px 18px 0; }
.pb-gm-card__type { font-size: 0.66rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--sl-muted); }
.pb-gm-card__name { font-size: 1.15rem; }
.pb-gm-card__meta { display: flex; gap: 10px; flex-wrap: wrap; font-size: 0.76rem; color: var(--sl-muted); }
.pb-gm-card__meta span::before { content: "•"; margin-right: 8px; color: var(--sl-border); }
.pb-gm-card__meta span:first-child::before { content: none; }
.pb-gm-card__foot { display: flex; align-items: center; justify-content: space-between; padding: 12px 18px 18px; margin-top: auto; }
.pb-gm-status { font-size: 0.64rem; text-transform: uppercase; letter-spacing: 0.06em; font-weight: 800; padding: 3px 10px; border-radius: 999px; background: rgba(53, 229, 111, 0.14); color: var(--sl-green); border: 1px solid rgba(53, 229, 111, 0.4); }
.pb-gm-status--registration { background: rgba(242, 193, 78, 0.14); color: var(--sl-gold); border-color: rgba(242, 193, 78, 0.4); }
.pb-gm-status--draft, .pb-gm-status--completed, .pb-gm-status--archived { background: rgba(143, 168, 196, 0.14); color: var(--sl-muted); border-color: var(--sl-border); }
.pb-gm-card__cta { display: inline-flex; align-items: center; gap: 4px; font-size: 0.78rem; font-weight: 700; color: var(--gm-accent, var(--sl-cyan)); }
.pb-gm-card__cta svg { width: 15px; height: 15px; }
.pb-gm-soon { display: flex; align-items: center; gap: 12px; padding: 22px; border-radius: 16px; border: 1px dashed var(--sl-border); color: var(--sl-muted); background: rgba(4, 16, 28, 0.4); }
.pb-gm-soon svg { width: 22px; height: 22px; color: var(--sl-muted); }
.pb-gm-soon p { margin: 0; }

/* ---- Responsive ---- */
@media (max-width: 960px) {
  .pb-sl-grid--3, .pb-sl-grid--2, .pb-sl-grid--2to1 { grid-template-columns: 1fr; }
  .pb-sl-hero { grid-template-columns: auto 1fr; }
  .pb-sl-hero__division { grid-column: 1 / -1; }
  .pb-gm-hero__title { font-size: 1.9rem; }
}
@media (max-width: 560px) {
  .pb-sl-hero { grid-template-columns: 1fr; text-align: center; }
  .pb-sl-hero__emblem { margin: 0 auto; }
  .pb-sl-hero__meta { justify-content: center; }
  .pb-sl-hero__title { font-size: 1.6rem; }
  .pb-sl-room__format { font-size: 1.4rem; letter-spacing: 0.2em; }
}

/* --- Cup bracket (Phase 7) --- */
.pb-cup-scroll { overflow-x: auto; padding-bottom: 10px; }
.pb-cup-bracket { display: flex; gap: 26px; min-width: min-content; align-items: stretch; }
.pb-cup-round { display: flex; flex-direction: column; min-width: 214px; flex: 0 0 auto; }
.pb-cup-round__label { margin: 0 0 12px; text-align: center; font-size: 0.74rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.09em; color: var(--sl-muted); }
/* THE BRACKET IS DRAWN, NOT JUST LISTED.
   Slots tile the column with no gap and each takes an equal share of its
   height, so a slot's half-height is exactly the distance to the boundary it
   shares with its partner. That single fact is what makes the brackets
   possible in CSS alone: the pair's two vertical strokes meet on that boundary,
   which is also the centre of the tie they feed in the next round. */
.pb-cup-round__matches { display: flex; flex-direction: column; gap: 0; flex: 1; }
.pb-cup-slot { position: relative; flex: 1 0 auto; display: flex; align-items: center; padding: 7px 0; }
.pb-cup-slot > .pb-cup-tie { flex: 1; min-width: 0; }

/* Out of every tie except the last round's: half the gap across, then the
   vertical stroke — down from an odd slot, up from an even one, so the two
   halves of a pair form one continuous line. */
.pb-cup-round:not(:last-child) .pb-cup-slot::after {
    content: '';
    position: absolute;
    left: 100%;
    width: 13px;
    border-right: 2px solid var(--sl-border);
    pointer-events: none;
}
.pb-cup-round:not(:last-child) .pb-cup-slot:nth-child(odd)::after {
    top: 50%;
    bottom: 0;
    border-top: 2px solid var(--sl-border);
    border-top-right-radius: 6px;
}
.pb-cup-round:not(:last-child) .pb-cup-slot:nth-child(even)::after {
    top: 0;
    bottom: 50%;
    border-bottom: 2px solid var(--sl-border);
    border-bottom-right-radius: 6px;
}
/* An odd slot with no partner (an odd number of ties) has nothing to join, so
   it gets a plain stub instead of half a bracket pointing at empty space. */
.pb-cup-round:not(:last-child) .pb-cup-slot:nth-child(odd):last-child::after {
    top: 50%;
    bottom: auto;
    height: 0;
    border-right: none;
}

/* Into every tie except the first round's: the remaining half of the gap. */
.pb-cup-round:not(:first-child) .pb-cup-slot::before {
    content: '';
    position: absolute;
    right: 100%;
    top: 50%;
    width: 13px;
    border-top: 2px solid var(--sl-border);
    pointer-events: none;
}

/* A decided tie lights its own bracket, so the route a winner took through the
   competition can be read down the page instead of worked out. */
.pb-cup-round:not(:last-child) .pb-cup-slot:has(.pb-cup-tie.is-done)::after {
    border-color: rgba(53, 229, 111, 0.55);
}
.pb-cup-tie { border: 1px solid var(--sl-border); border-radius: 12px; overflow: hidden; background: rgba(4, 16, 28, 0.45); }
.pb-cup-tie.is-mine { border-color: rgba(34, 211, 238, 0.5); box-shadow: 0 0 0 1px rgba(34, 211, 238, 0.25); }
.pb-cup-side { display: flex; align-items: center; gap: 8px; padding: 8px 10px; }
.pb-cup-side + .pb-cup-side { border-top: 1px solid var(--sl-border); }
.pb-cup-side__name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 0.86rem; font-weight: 600; }
.pb-cup-side__score { flex: 0 0 auto; min-width: 20px; text-align: center; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--sl-muted); }
.pb-cup-side.is-winner { background: rgba(53, 229, 111, 0.1); }
.pb-cup-side.is-winner .pb-cup-side__name { color: #fff; }
.pb-cup-side.is-winner .pb-cup-side__score { color: var(--sl-green); }
.pb-cup-side.is-tbd, .pb-cup-side.is-bye { opacity: 0.5; }
.pb-cup-side.is-tbd .pb-cup-side__name, .pb-cup-side.is-bye .pb-cup-side__name { font-style: italic; font-weight: 500; }
.pb-cup-tie__note { padding: 6px 10px; font-size: 0.72rem; font-weight: 600; color: var(--sl-gold); background: rgba(242, 193, 78, 0.08); border-top: 1px solid var(--sl-border); }
.pb-cup-tie__room { display: block; width: 100%; border-radius: 0; border: none; border-top: 1px solid var(--sl-border); }
@media (max-width: 560px) {
  .pb-cup-round { min-width: 180px; }
}

/* --- Cup page (Phase 7) --- */
.pb-cuppage { display: flex; flex-direction: column; gap: 20px; }
.pb-cuphero { position: relative; display: grid; grid-template-columns: 1fr auto; gap: 22px; align-items: center; min-height: 240px; padding: 32px; border-radius: 20px; overflow: hidden; border: 1px solid var(--sl-border); background: #061523; }
.pb-cuphero__banner { position: absolute; inset: 0; z-index: 0; background-image: linear-gradient(90deg, #061523 8%, rgba(6,21,35,0.72) 40%, rgba(6,21,35,0.15) 100%), var(--pb-sl-hero, radial-gradient(1000px 300px at 80% 20%, rgba(34,211,238,0.22), transparent)); background-size: cover; background-position: center right; }
.pb-cuphero__copy, .pb-cuphero__cta { position: relative; z-index: 1; }
.pb-cuphero__eyebrow { display: inline-flex; align-items: center; gap: 8px; color: var(--sl-cyan); font-size: 0.74rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; margin: 0 0 10px; }
.pb-cuphero__ico svg, .pb-cuphero__cta svg, .pb-cuptrophy__ico svg { width: 1em; height: 1em; }
.pb-cuphero__eyebrow .pb-cuphero__ico { display: inline-flex; font-size: 1.1rem; }
.pb-cuphero__title { font-size: clamp(1.8rem, 4vw, 2.8rem); font-weight: 800; margin: 0; line-height: 1.05; }
.pb-cuphero__tag { color: var(--sl-cyan); font-weight: 600; letter-spacing: 0.02em; margin: 6px 0 10px; }
.pb-cuphero__desc { color: var(--sl-muted); max-width: 62ch; margin: 0 0 14px; }
.pb-cuphero__badges { display: flex; gap: 10px; flex-wrap: wrap; }
.pb-cuppill { display: inline-flex; align-items: center; gap: 7px; padding: 7px 13px; border-radius: 999px; background: rgba(4,16,28,0.55); border: 1px solid var(--sl-border); font-size: 0.78rem; font-weight: 600; }
.pb-cuppill svg { width: 15px; height: 15px; color: var(--sl-cyan); }
.pb-cuphero__cta { display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; min-width: 200px; padding: 20px; border-radius: 16px; background: rgba(4,16,28,0.5); border: 1px solid var(--sl-border); }
.pb-cuphero__trophy { font-size: 2.6rem; color: var(--sl-gold); }
.pb-cuphero__cta strong { font-size: 1rem; }
.pb-cuphero__cta small { color: var(--sl-muted); }
.pb-cuphero__cta .pb-button { margin-top: 8px; }
.pb-cuphero__in { color: var(--sl-green); font-weight: 700; }

.pb-cupsummary { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 14px; }
.pb-cupstat { display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; column-gap: 12px; align-items: center; padding: 16px; border-radius: 14px; border: 1px solid var(--sl-border); background: linear-gradient(180deg, var(--sl-card), var(--sl-card-2)); }
.pb-cupstat__i { grid-row: 1 / 3; width: 42px; height: 42px; display: grid; place-items: center; border-radius: 11px; background: rgba(34,211,238,0.12); color: var(--sl-cyan); }
.pb-cupstat__i svg { width: 20px; height: 20px; }
.pb-cupstat--prize { background: rgba(242,193,78,0.14); color: var(--sl-gold); }
.pb-cupstat--status { background: rgba(53,229,111,0.14); color: var(--sl-green); }
.pb-cupstat--you { background: rgba(79,127,255,0.16); color: #7ea0ff; }
.pb-cupstat small { color: var(--sl-muted); font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.06em; }
.pb-cupstat b { font-size: 1.05rem; }

.pb-cupgrid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 20px; align-items: start; }
.pb-cupmain { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
.pb-cupside { display: flex; flex-direction: column; gap: 20px; }
.pb-cuprow2 { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.pb-cupcard { min-width: 0; }

.pb-cuptabs { display: flex; gap: 6px; flex-wrap: wrap; margin: 4px 0 14px; }
.pb-cuptab { flex: 0 0 auto; background: rgba(4,16,28,0.5); border: 1px solid var(--sl-border); color: var(--sl-muted); font: inherit; font-size: 0.8rem; font-weight: 600; padding: 8px 16px; border-radius: 999px; cursor: pointer; }
.pb-cuptab.is-active { background: linear-gradient(135deg, var(--sl-cyan), var(--sl-blue)); color: #04101c; border-color: transparent; }

.pb-cuptrophy { text-align: center; }
.pb-cuptrophy__ico { font-size: 3rem; color: var(--sl-gold); }
.pb-cuptrophy h3 { margin: 8px 0 4px; }
.pb-cuptrophy__holder { display: flex; align-items: center; gap: 10px; justify-content: center; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--sl-border); text-align: left; }
.pb-cuptrophy__holder small { display: block; color: var(--sl-muted); font-size: 0.74rem; }
.pb-cupsoon { font-style: italic; }
.pb-sl-settings b.pb-on { color: var(--sl-green); }
.pb-sl-settings b.pb-off { color: var(--sl-muted); }

@media (max-width: 900px) {
  .pb-cupgrid { grid-template-columns: 1fr; }
  .pb-cuprow2 { grid-template-columns: 1fr; }
  .pb-cuphero { grid-template-columns: 1fr; }
}

/* --- Cup: how-to banner + fixture room code --- */
.pb-cuphowto { display: flex; align-items: center; gap: 14px; padding: 14px 18px; border-radius: 14px; border: 1px solid rgba(34, 211, 238, 0.3); background: linear-gradient(180deg, rgba(34, 211, 238, 0.08), rgba(9, 21, 36, 0.9)); }
.pb-cuphowto__i { flex: 0 0 auto; width: 40px; height: 40px; display: grid; place-items: center; border-radius: 10px; background: rgba(34, 211, 238, 0.14); color: var(--sl-cyan); }
.pb-cuphowto__i svg { width: 20px; height: 20px; }
.pb-cuphowto strong { display: block; margin-bottom: 2px; }
.pb-cuphowto p { margin: 0; color: var(--sl-muted); font-size: 0.86rem; }
.pb-cupfx__foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 8px; }
.pb-cupfx__foot .pb-sl-room-chip { margin: 0; }

/* --- Cup: top scorers --- */
.pb-cupscorers { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.pb-cupscorers li { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 10px; background: rgba(4, 16, 28, 0.4); border: 1px solid var(--sl-border); }
.pb-cupscorers__rank { flex: 0 0 auto; width: 20px; text-align: center; font-weight: 800; color: var(--sl-muted); font-variant-numeric: tabular-nums; }
.pb-cupscorers li:first-child .pb-cupscorers__rank { color: var(--sl-gold); }
.pb-cupscorers__name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; font-size: 0.88rem; }
.pb-cupscorers__goals { flex: 0 0 auto; display: flex; align-items: baseline; gap: 4px; }
.pb-cupscorers__goals b { font-size: 1.05rem; color: var(--sl-cyan); font-variant-numeric: tabular-nums; }
.pb-cupscorers__goals small { color: var(--sl-muted); font-size: 0.7rem; }

/* --- Player links: avatar + name go to the public profile --- */
.pb-player-link { color: inherit; text-decoration: none; display: inline-flex; align-items: center; border-radius: 6px; transition: color 0.12s, opacity 0.12s; }
.pb-player-link:hover { color: var(--sl-cyan); }
.pb-player-link:hover .pb-sl-avatar { opacity: 0.85; box-shadow: 0 0 0 2px rgba(34, 211, 238, 0.5); }
.pb-player-link:focus-visible { outline: 2px solid var(--sl-cyan); outline-offset: 2px; }

/* ── Game Modes: page-wide wash ─────────────────────────────────────────────
   The same uploaded hero image, blurred hard and pushed behind everything, with
   a blue tint over it. It is fixed to the viewport so the page scrolls over a
   still backdrop rather than dragging the image along with it.

   `aria-hidden` in the markup and no pointer events: it is decoration only, and
   it renders nothing at all when no artwork has been uploaded. */
.pb-gm { position: relative; }
.pb-gm-wash {
    position: fixed;
    z-index: -1;
    inset: 0;
    pointer-events: none;
    background-image: var(--gm-art);
    background-size: cover;
    background-position: center;
    /* Scaled up so the blur does not expose soft edges at the viewport border. */
    transform: scale(1.12);
    filter: blur(38px) saturate(1.15);
    opacity: 0.5;
}
.pb-gm-wash::after {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(120% 90% at 50% 0%, rgba(22, 135, 255, 0.30), transparent 65%),
        linear-gradient(180deg, rgba(2, 9, 20, 0.72), rgba(2, 9, 20, 0.90));
}
/* Panels sit on the wash rather than being washed out by it. */
.pb-gm.has-art .pb-sl-card,
.pb-gm.has-art .pb-gm-card,
.pb-gm.has-art .pb-gm-soon { backdrop-filter: blur(2px); }

@media (prefers-reduced-motion: reduce) {
    .pb-gm-wash { background-attachment: scroll; }
}

/* ══ Your own match ════════════════════════════════════════════════════════
   One card in the list belongs to the reader, and it is the only one they can
   act on — it carries the room code they have to type into the game. A cyan
   border was not enough to find it in a list of six. */
.pb-sl-fixtures li.is-mine {
    position: relative;
    border-color: rgba(34, 211, 238, 0.65);
    background: linear-gradient(180deg, rgba(34, 211, 238, 0.07), transparent 60%);
    box-shadow:
        0 0 0 1px rgba(34, 211, 238, 0.25),
        0 0 22px -6px rgba(34, 211, 238, 0.55);
}

/* A slow breath rather than a blink: it draws the eye once and then stops
   competing with the page. */
@media (prefers-reduced-motion: no-preference) {
    .pb-sl-fixtures li.is-mine { animation: pb-sl-mine-glow 3.4s ease-in-out infinite; }
}

@keyframes pb-sl-mine-glow {
    0%, 100% { box-shadow: 0 0 0 1px rgba(34, 211, 238, 0.25), 0 0 22px -6px rgba(34, 211, 238, 0.55); }
    50% { box-shadow: 0 0 0 1px rgba(34, 211, 238, 0.45), 0 0 30px -4px rgba(34, 211, 238, 0.8); }
}

/* The room code is the point of the card, so it sits in the middle on its own
   line instead of hiding in a corner under an avatar. */
.pb-sl-fixtures li.is-mine .pb-cupfx__foot {
    flex-direction: column;
    align-items: center;
    gap: 6px;
}

.pb-sl-fixtures li.is-mine .pb-cupfx__foot .pb-sl-room-chip {
    align-self: center;
    padding: 5px 14px;
    border-style: solid;
    border-color: rgba(242, 193, 78, 0.45);
    background: rgba(242, 193, 78, 0.08);
}

.pb-sl-fixtures li.is-mine .pb-cupfx__foot .pb-sl-room-chip code { font-size: 0.78rem; }

/* The live strip inside a fixture row: both lists are grids, so it must claim
   the whole row rather than squeeze into one of the columns. */
.pb-sl-round__list .pb-live,
.pb-sl-cal__list .pb-live { grid-column: 1 / -1; }

/* The cup's own emblem, beside the title in the hero. */
.pb-cuphero { grid-template-columns: auto 1fr auto; }
.pb-cuphero__emblem {
    position: relative;
    z-index: 1;
    display: grid;
    place-items: center;
    width: 82px;
    height: 82px;
    overflow: hidden;
    border: 1px solid var(--sl-border);
    border-radius: 18px;
    background: rgba(4, 16, 28, 0.72);
    box-shadow: 0 10px 26px rgba(0, 0, 0, 0.45);
}
.pb-cuphero__emblem img { width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 760px) {
    .pb-cuphero { grid-template-columns: 1fr; }
}
