/* ═══════════════════════════════════════════════════════════════════
   MyBalls · SITIO PÚBLICO · CARBON & LIME v5 — DE CERO
   Base: player.css LITERAL (la hoja de player.myballs.com.mx).
   Extensión: cada componente público escrito a mano. Cero herencia.
═══════════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════════
   MYBALLS PLAYER · Sistema de diseño "Carbon & Lime"
   Retícula 4px · Space Grotesk / Manrope / JetBrains Mono
   Lime  = singles · victoria · acción
   Turquoise = semántica de DOBLES
   Wine Ash  = resplandor secundario del escenario
═══════════════════════════════════════════════════════════════ */
:root{
  --bg:#0f0f0f;
  --surface:#171717;
  --surface-2:#1d1d1d;
  --surface-3:#232323;
  --line:rgba(255,255,255,.07);
  --line-strong:rgba(255,255,255,.14);
  --text:#f5f5f5;
  --text-2:#a6a6a6;
  --text-3:#6e6e6e;
  --lime:#C6FF34;
  --lime-ink:#131600;
  --lime-dim:rgba(198,255,52,.10);
  --lime-line:rgba(198,255,52,.35);
  --turq:#99E1D9;
  --turq-dim:rgba(153,225,217,.10);
  --turq-line:rgba(153,225,217,.35);
  --wine:#32292F;
  --loss:#ff6b6b;
  --loss-dim:rgba(255,107,107,.10);
  --r-card:14px;
  --r-pill:999px;
  --pad:24px;
  --font-display:'Space Grotesk',sans-serif;
  --font-ui:'Manrope',sans-serif;
  --font-data:'JetBrains Mono',monospace;
  /* TEMA-1b: bases de las mezclas color-mix. En oscuro valen lo MISMO que
     los literales que sustituyen (#171717 y #fff): cero cambio visual. El
     tema claro las voltea y toda la familia de mezclas voltea con ellas. */
  --mix-base:#171717;
  --mix-txt:#fff;
}

/* ═══════════════ RAMA-1 (2026-08-02) - cada categoria, su color ═══════════════
   Idea de Roberto: que la categoria que elegiste te acompane con su color.
   Se reusan los TRES colores exactos del selector de categorias, para que el
   color con el que la elegiste sea el mismo con el que la recorres.

   Como funciona: toda la piel se pinta con var(--lime) y sus tres derivadas
   (274 usos en esta hoja). Redefiniendolas aqui, en el <body>, se tine la
   pagina entera sin tocar una sola de esas 274 reglas.
   --lime-ink es el texto que va ENCIMA del acento (botones llenos): se eligio
   un tono muy oscuro del mismo matiz, no negro, para que no se sienta pegado.

   El logo NO cambia: es un SVG con su color propio, asi la marca sobrevive.
   El ciclo de 8 colores de los dias tampoco: ahi el verde es uno de ocho, no
   el acento. */
.rama-m{ /* Varonil */
  --lime:#8AB8FF; --lime-ink:#04122b;
  --lime-dim:rgba(138,184,255,.10); --lime-line:rgba(138,184,255,.35)}
.rama-f{ /* Femenil */
  --lime:#FF9ECB; --lime-ink:#2b0417;
  --lime-dim:rgba(255,158,203,.10); --lime-line:rgba(255,158,203,.35)}
.rama-x{ /* Mixtos */
  --lime:#99E1D9; --lime-ink:#04231f;
  --lime-dim:rgba(153,225,217,.10); --lime-line:rgba(153,225,217,.35)}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-ui);
  font-size:15px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
::selection{background:var(--lime);color:var(--lime-ink)}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
:focus-visible{outline:2px solid var(--lime);outline-offset:3px;border-radius:6px}

/* ── utilería tipográfica ─────────────────────────────────── */
.label{
  font-family:var(--font-data);
  font-size:11px;
  font-weight:500;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--text-3);
}
.mono{font-family:var(--font-data)}

/* ── barra superior ───────────────────────────────────────── */
.topbar{
  display:flex;align-items:center;justify-content:space-between;
  max-width:1180px;margin:0 auto;padding:20px 24px;
}
.brand{display:flex;align-items:center;gap:12px}
.brand-mark{
  width:34px;height:34px;border-radius:10px;
  background:var(--lime);color:var(--lime-ink);
  display:grid;place-items:center;
}
.brand-mark svg{width:19px;height:19px}
.brand-name{font-family:var(--font-display);font-weight:700;font-size:17px;letter-spacing:-.01em}
.brand-name span{color:var(--lime)}
.brand-sub{font-family:var(--font-data);font-size:10px;letter-spacing:.18em;color:var(--text-3);text-transform:uppercase;margin-top:1px}
.topbar-actions{display:flex;align-items:center;gap:10px}
.btn-ghost{
  display:inline-flex;align-items:center;gap:8px;
  height:38px;padding:0 16px;border-radius:var(--r-pill);
  border:1px solid var(--line-strong);
  font-weight:600;font-size:13.5px;color:var(--text-2);
  transition:border-color .16s ease-out,color .16s ease-out,transform .12s ease-out;
}
.btn-ghost:hover{border-color:var(--lime-line);color:var(--text)}
.btn-ghost:active{transform:scale(.97)}
.btn-ghost svg{width:15px;height:15px}
.btn-icon{width:38px;padding:0;justify-content:center}

/* ── HERO · el escenario Carbon ───────────────────────────── */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}
.hero::before,.hero::after{
  content:"";position:absolute;border-radius:50%;filter:blur(90px);pointer-events:none;
}
.hero::before{width:520px;height:520px;right:-140px;top:-220px;background:rgba(198,255,52,.09)}
.hero::after{width:560px;height:560px;left:-180px;bottom:-260px;background:rgba(50,41,47,.85)}
.hero-inner{
  position:relative;z-index:1;
  max-width:1180px;margin:0 auto;
  padding:44px 24px 40px;
  display:flex;align-items:flex-end;justify-content:space-between;gap:48px;flex-wrap:wrap;
}
.hero-id{display:flex;align-items:center;gap:28px;min-width:0}
.avatar{position:relative;flex:none}
.avatar-img{
  width:104px;height:104px;border-radius:50%;
  background:linear-gradient(145deg,#2a2a2a,#1a1a1a);
  display:grid;place-items:center;
  font-family:var(--font-display);font-weight:700;font-size:34px;color:var(--text-2);
  letter-spacing:.02em;
}
.avatar-ring{position:absolute;inset:-7px}
.avatar-ring circle{
  fill:none;stroke:var(--lime);stroke-width:2.5;
  stroke-dasharray:370;stroke-dashoffset:370;
  transform:rotate(-90deg);transform-origin:center;
  animation:ringDraw .8s .15s ease-out forwards;
}
@keyframes ringDraw{to{stroke-dashoffset:0}}
.hero-name{
  font-family:var(--font-display);
  font-size:clamp(34px,5.4vw,56px);
  font-weight:700;line-height:1.02;letter-spacing:-.025em;
}
.hero-meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px 18px;margin-top:14px;color:var(--text-2);font-size:14px;font-weight:500}
.hero-meta .mi{display:inline-flex;align-items:center;gap:7px}
.hero-meta svg{width:15px;height:15px;color:var(--text-3)}
.chip-ipin{
  font-family:var(--font-data);font-size:12px;letter-spacing:.08em;
  padding:4px 10px;border:1px solid var(--line-strong);border-radius:var(--r-pill);color:var(--text-2);
}
.chip-verified{
  display:inline-flex;align-items:center;gap:7px;
  padding:5px 12px;border-radius:var(--r-pill);
  background:var(--lime-dim);border:1px solid var(--lime-line);
  color:var(--lime);font-weight:700;font-size:12.5px;letter-spacing:.02em;
}
.chip-verified svg{width:14px;height:14px}
.rise{opacity:0;transform:translateY(16px);animation:rise .55s ease-out forwards}
@keyframes rise{to{opacity:1;transform:none}}
.d1{animation-delay:.08s}.d2{animation-delay:.16s}.d3{animation-delay:.24s}.d4{animation-delay:.32s}

/* números héroe */
.hero-stats{display:flex;align-items:flex-end;gap:0;flex:none}
.hstat{padding:0 34px;position:relative}
.hstat + .hstat::before{
  content:"";position:absolute;left:0;top:14%;bottom:14%;width:1px;background:var(--line-strong);
}
.hstat .label{margin-bottom:6px}
.hstat-num{
  font-family:var(--font-display);
  font-size:clamp(52px,7.5vw,78px);
  font-weight:700;line-height:.95;letter-spacing:-.035em;
  color:var(--lime);
  font-variant-numeric:tabular-nums;
}
.hstat.alt .hstat-num{color:var(--turq)}
.hstat-sub{display:flex;align-items:center;gap:10px;margin-top:10px}
.delta{
  display:inline-flex;align-items:center;gap:5px;
  font-family:var(--font-data);font-size:11.5px;font-weight:700;letter-spacing:.04em;
  padding:3px 9px;border-radius:var(--r-pill);
  background:var(--lime-dim);color:var(--lime);
}
.delta svg{width:9px;height:9px}
.hstat-sub .note{font-size:12px;color:var(--text-3);font-weight:500}

/* selector singles/dobles */
.mode{
  display:inline-flex;position:relative;margin-top:22px;
  border:1px solid var(--line-strong);border-radius:var(--r-pill);padding:3px;
  background:rgba(255,255,255,.02);
}
.mode-thumb{
  position:absolute;top:3px;bottom:3px;left:3px;width:96px;
  background:var(--lime);border-radius:var(--r-pill);
  transition:transform .22s cubic-bezier(.3,.9,.4,1),background-color .22s ease-out;
}
.mode.dobles .mode-thumb{transform:translateX(96px);background:var(--turq)}
.mode button{
  position:relative;z-index:1;width:96px;height:32px;
  font-weight:800;font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--text-2);transition:color .18s ease-out;
}
.mode button.on{color:var(--lime-ink)}
.mode button:active{transform:scale(.97)}

/* ── tabs ─────────────────────────────────────────────────── */
.tabs-wrap{
  position:sticky;top:0;z-index:20;
  background:rgba(15,15,15,.86);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
}
.tabs{
  max-width:1180px;margin:0 auto;padding:0 24px;
  display:flex;gap:30px;position:relative;
  overflow-x:auto;scrollbar-width:none;
}
.tabs::-webkit-scrollbar{display:none}
.tab{
  flex:none;height:52px;display:inline-flex;align-items:center;
  font-weight:700;font-size:14px;letter-spacing:.01em;color:var(--text-3);
  transition:color .16s ease-out;
}
.tab:hover{color:var(--text-2)}
.tab.on{color:var(--text)}
.tab-ink{
  position:absolute;bottom:0;height:2px;background:var(--lime);border-radius:2px 2px 0 0;
  transition:left .24s cubic-bezier(.3,.9,.4,1),width .24s cubic-bezier(.3,.9,.4,1);
}

/* ── lienzo ───────────────────────────────────────────────── */
.canvas{max-width:1180px;margin:0 auto;padding:32px 24px 72px}
.panel{display:none}
.panel.on{display:block;animation:panelIn .22s ease-out}
@keyframes panelIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.grid{display:grid;grid-template-columns:minmax(0,1fr) 348px;gap:24px;align-items:start}
.col{display:flex;flex-direction:column;gap:24px;min-width:0}

.card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r-card);
  padding:var(--pad);
  transition:transform .16s ease-out,border-color .16s ease-out;
}
.card.hoverable:hover{transform:translateY(-2px);border-color:var(--line-strong)}
.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:18px}
.card-title{font-family:var(--font-display);font-size:17px;font-weight:700;letter-spacing:-.01em}
.card-link{font-size:13px;font-weight:700;color:var(--lime);display:inline-flex;align-items:center;gap:6px;transition:gap .16s ease-out}
.card-link:hover{gap:9px}
.card-link svg{width:13px;height:13px}

/* ── próximo partido ─────────────────────────────────────── */
.next{position:relative;overflow:hidden;border-color:var(--lime-line)}
.next::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--lime)}
.next::after{
  content:"";position:absolute;right:-60px;top:-80px;width:220px;height:220px;
  background:color-mix(in srgb, var(--lime) 7%, transparent);border-radius:50%;filter:blur(40px);pointer-events:none;
}
.next-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.next-when{
  font-family:var(--font-display);font-size:clamp(21px,3vw,26px);font-weight:700;letter-spacing:-.02em;margin-top:12px;
}
.next-when em{font-style:normal;color:var(--lime)}
.next-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.chip{
  display:inline-flex;align-items:center;gap:6px;
  padding:5px 11px;border-radius:var(--r-pill);
  border:1px solid var(--line-strong);
  font-family:var(--font-data);font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;
  color:var(--text-2);
}
.chip svg{width:12px;height:12px;color:var(--text-3)}
.chip.turq{background:var(--turq-dim);border-color:var(--turq-line);color:var(--turq)}
.chip.turq svg{color:var(--turq)}
.next-vs{display:flex;align-items:center;gap:16px;margin-top:20px;flex-wrap:wrap}
.team{display:flex;flex-direction:column;gap:5px;min-width:150px}
.team .who{font-weight:800;font-size:15px}
.team .who small{display:block;font-weight:600;color:var(--text-2);font-size:13.5px;margin-top:2px}
.vs-dot{
  font-family:var(--font-data);font-size:11px;letter-spacing:.12em;color:var(--text-3);
  padding:6px 12px;border:1px solid var(--line);border-radius:var(--r-pill);flex:none;
}
.btn-lime{
  display:inline-flex;align-items:center;gap:9px;
  height:42px;padding:0 20px;margin-top:22px;
  background:var(--lime);color:var(--lime-ink);
  border-radius:var(--r-pill);font-weight:800;font-size:14px;
  transition:transform .12s ease-out,box-shadow .16s ease-out;
}
.btn-lime:hover{box-shadow:0 6px 24px rgba(198,255,52,.22)}
.btn-lime:active{transform:scale(.97)}
.btn-lime svg{width:15px;height:15px}

/* ── tarjeta de partido (el átomo) ───────────────────────── */
.match{padding:18px 20px}
.match-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.sport{
  font-family:var(--font-data);font-size:10px;font-weight:700;letter-spacing:.14em;
  padding:3px 8px;border-radius:5px;
  background:var(--lime-dim);color:var(--lime);
}
.sport.turq{background:var(--turq-dim);color:var(--turq)}
.match-top .meta{font-family:var(--font-data);font-size:11.5px;letter-spacing:.06em;color:var(--text-3)}
.match-top .badge-q{
  margin-left:auto;display:inline-flex;align-items:center;gap:6px;
  font-size:11px;font-weight:800;letter-spacing:.05em;color:var(--lime);
}
.match-top .badge-q svg{width:13px;height:13px}
.rows{display:flex;flex-direction:column}
.prow{
  display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;
  padding:9px 0;
}
.prow + .prow{border-top:1px solid var(--line)}
.pl{display:flex;align-items:center;gap:11px;min-width:0}
.flag{width:20px;height:14px;border-radius:3px;overflow:hidden;flex:none;border:1px solid rgba(255,255,255,.12)}
.pname{font-weight:700;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.prow.lose .pname{color:var(--text-2);font-weight:600}
.prank{
  font-family:var(--font-data);font-size:10.5px;letter-spacing:.05em;
  padding:2px 7px;border:1px solid var(--line-strong);border-radius:5px;color:var(--text-3);flex:none;
}
.score{display:flex;align-items:center;gap:4px}
.set{
  font-family:var(--font-data);font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;
  width:26px;text-align:center;color:var(--text-2);
}
.prow.win .set{color:var(--text)}
.set sup{font-size:9px;color:var(--text-3);margin-left:1px}
.wcaret{width:14px;display:grid;place-items:center;color:transparent}
.prow.win .wcaret{color:var(--lime)}
.wcaret svg{width:8px;height:10px}
.match-note{
  margin-top:12px;font-family:var(--font-data);font-size:11px;letter-spacing:.06em;color:var(--text-3);
}
.match-note b{color:var(--loss);font-weight:700}

/* agrupador por torneo (Resultados) */
.tgroup{margin-bottom:28px}
.tgroup-head{
  display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding:0 4px 12px;
}
.tgroup-title{font-family:var(--font-display);font-weight:700;font-size:16.5px;letter-spacing:-.01em}
.tgroup-title a{color:var(--lime)}
.tgroup-title a:hover{text-decoration:underline;text-underline-offset:3px}
.tgroup-meta{font-family:var(--font-data);font-size:11.5px;letter-spacing:.08em;color:var(--text-3);text-transform:uppercase}
.tgroup .card + .card{margin-top:12px}

/* filtros */
.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}
.fchip{
  height:34px;padding:0 15px;border-radius:var(--r-pill);
  border:1px solid var(--line-strong);
  font-weight:700;font-size:12.5px;letter-spacing:.04em;color:var(--text-2);
  transition:all .16s ease-out;
}
.fchip:hover{border-color:var(--text-3);color:var(--text)}
.fchip.on{background:var(--lime);border-color:var(--lime);color:var(--lime-ink)}
.fchip.on.turq{background:var(--turq);border-color:var(--turq)}
.wl-strip{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  margin-bottom:22px;color:var(--text-2);font-size:13.5px;font-weight:600;
}
.wl-strip .mono{color:var(--text);font-weight:700;letter-spacing:.03em}

/* ── rail derecho ────────────────────────────────────────── */
.rk-table{width:100%;border-collapse:collapse}
.rk-table th{
  font-family:var(--font-data);font-size:10px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;
  color:var(--text-3);text-align:right;padding:0 0 12px;
}
.rk-table th:first-child{text-align:left}
.rk-table td{padding:11px 0;border-top:1px solid var(--line);vertical-align:middle}
.rk-cat{font-weight:700;font-size:13.5px}
.rk-cat small{display:block;font-weight:500;font-size:11px;color:var(--text-3);margin-top:1px}
.rk-num{text-align:right;font-family:var(--font-data);font-weight:700;font-size:15px;font-variant-numeric:tabular-nums}
.rk-num.s{color:var(--lime)}
.rk-num.d{color:var(--turq)}
.rk-num .dlt{display:block;font-size:10px;font-weight:500;color:var(--text-3);margin-top:2px}
.rk-num .dlt.up{color:var(--lime)}
.rk-foot{margin-top:14px;font-size:11.5px;color:var(--text-3);display:flex;align-items:center;gap:7px}
.rk-foot svg{width:13px;height:13px;flex:none}

.act-big{display:flex;align-items:baseline;gap:10px}
.act-big .n{font-family:var(--font-display);font-size:44px;font-weight:700;letter-spacing:-.03em;line-height:1}
.act-big .l{font-size:13px;color:var(--text-2);font-weight:600}
.wlbar{display:flex;height:8px;border-radius:var(--r-pill);overflow:hidden;margin:16px 0 10px;background:var(--surface-3)}
.wlbar i{display:block;height:100%}
.wlbar .w{background:var(--lime)}
.wlbar .l{background:var(--loss)}
.wl-legend{display:flex;justify-content:space-between;font-family:var(--font-data);font-size:11.5px;letter-spacing:.05em}
.wl-legend .w{color:var(--lime)}
.wl-legend .l{color:var(--loss)}
.mini-facts{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border-radius:10px;overflow:hidden;margin-top:18px}
.mini-facts div{background:var(--surface);padding:13px 14px}
.mini-facts .n{font-family:var(--font-display);font-weight:700;font-size:19px}
.mini-facts .l{font-size:11px;color:var(--text-3);font-weight:600;letter-spacing:.03em;margin-top:2px}

/* ── estadísticas ────────────────────────────────────────── */
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}
.tile{padding:20px}
.tile .label{margin-bottom:10px}
.tile-num{font-family:var(--font-display);font-size:36px;font-weight:700;letter-spacing:-.03em;line-height:1}
.tile-num small{font-size:15px;font-weight:600;color:var(--text-3);letter-spacing:0;margin-left:4px}
.tile-bar{height:5px;border-radius:var(--r-pill);background:var(--surface-3);margin-top:14px;overflow:hidden}
.tile-bar i{display:block;height:100%;background:var(--lime);border-radius:var(--r-pill)}
.tile-sub{font-family:var(--font-data);font-size:11px;letter-spacing:.06em;color:var(--text-3);margin-top:9px}

.chart-legend{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.lg{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--text-2)}
.dot{width:9px;height:9px;border-radius:50%}
.dot.w{background:var(--lime)}
.dot.l{background:transparent;border:2px solid var(--loss)}
.dot.ln{width:16px;height:2px;border-radius:2px;background:var(--lime);opacity:.5}
.chart-box{margin-top:8px}
.chart-box svg{width:100%;height:auto;display:block}
.chart-note{margin-top:14px;font-size:12.5px;color:var(--text-3)}

.htable{width:100%;border-collapse:collapse}
.htable th{
  font-family:var(--font-data);font-size:10px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;
  color:var(--text-3);text-align:left;padding:0 12px 12px 0;
}
.htable th:last-child,.htable td:last-child{text-align:right;padding-right:0}
.htable td{padding:12px 12px 12px 0;border-top:1px solid var(--line);font-size:13.5px;vertical-align:middle}
.htable .dt{font-family:var(--font-data);font-size:12px;letter-spacing:.04em;color:var(--text-3);white-space:nowrap}
.htable .res-w{color:var(--lime);font-weight:800;font-size:12px;letter-spacing:.08em}
.htable .res-l{color:var(--loss);font-weight:800;font-size:12px;letter-spacing:.08em}
.htable .rk{font-family:var(--font-data);font-weight:700}

/* ── torneos ─────────────────────────────────────────────── */
.events{display:flex;flex-direction:column;gap:16px}
.event{display:flex;gap:22px;align-items:stretch}
.ev-date{
  flex:none;width:86px;border-radius:12px;
  background:var(--surface-2);border:1px solid var(--line);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:14px 8px;
}
.ev-date .dd{font-family:var(--font-display);font-weight:700;font-size:21px;letter-spacing:-.02em}
.ev-date .mm{font-family:var(--font-data);font-size:10px;letter-spacing:.16em;color:var(--text-3);text-transform:uppercase}
.ev-body{flex:1;min-width:0}
.ev-name{font-family:var(--font-display);font-weight:700;font-size:16.5px;letter-spacing:-.01em;line-height:1.3}
.ev-org{font-size:13px;color:var(--text-2);font-weight:600;margin-top:3px}
.ev-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.ev-state{flex:none;align-self:flex-start}
.pill-next{
  font-family:var(--font-data);font-size:10px;font-weight:700;letter-spacing:.14em;
  padding:5px 11px;border-radius:var(--r-pill);
  background:var(--lime);color:var(--lime-ink);
}
.pill-done{
  font-family:var(--font-data);font-size:10px;font-weight:500;letter-spacing:.14em;
  padding:5px 11px;border-radius:var(--r-pill);
  border:1px solid var(--line-strong);color:var(--text-3);
}

/* ── ranking tab ─────────────────────────────────────────── */
.rank-hero{display:flex;align-items:flex-end;gap:40px;flex-wrap:wrap;margin-bottom:24px}
.rank-hero .big{font-family:var(--font-display);font-size:88px;font-weight:700;letter-spacing:-.04em;line-height:.9;color:var(--lime)}
.rank-hero .ctx{padding-bottom:10px}
.rank-hero .ctx p{color:var(--text-2);font-size:14px;max-width:430px;margin-top:8px}

/* ── footer ──────────────────────────────────────────────── */
footer{border-top:1px solid var(--line)}
.foot{
  max-width:1180px;margin:0 auto;padding:26px 24px;
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  color:var(--text-3);font-size:12.5px;
}
.foot .mono{letter-spacing:.06em}

/* ── responsive ──────────────────────────────────────────── */
@media (max-width:1020px){
  .grid{grid-template-columns:1fr}
}
@media (max-width:760px){
  .hero-inner{padding:32px 20px 30px;gap:30px}
  .hero-id{gap:18px}
  .avatar-img{width:82px;height:82px;font-size:27px}
  .hero-stats{width:100%;justify-content:flex-start}
  .hstat{padding:0 26px 0 0}
  .hstat + .hstat{padding:0 0 0 26px}
  .tiles{grid-template-columns:1fr}
  .event{gap:14px}
  .ev-date{width:70px}
  .canvas{padding:24px 20px 56px}
  .topbar{padding:16px 20px}
  .set{width:23px;font-size:14px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
  .rise{opacity:1;transform:none}
  .avatar-ring circle{stroke-dashoffset:0}
}

/* ═══ PLAYER-1 · complementos sobre el sistema del mockup ═══ */
.avatar-img.has-foto{overflow:hidden}
.avatar-img img{width:100%;height:100%;object-fit:cover;display:block}
.hstat-num.na{color:var(--text-3)}
.delta.down{background:var(--loss-dim);color:var(--loss)}
.fchip.turqf.on{background:var(--turq);border-color:var(--turq);color:#03211d}

.card.empty{text-align:center;padding:52px 28px}
.empty-ico{width:52px;height:52px;margin:0 auto 18px;border-radius:16px;background:var(--surface-2);border:1px solid var(--line);display:grid;place-items:center;color:var(--text-3)}
.empty-ico svg{width:24px;height:24px}
.card.empty h3{font-family:var(--font-display);font-size:18px;font-weight:700;letter-spacing:-.01em}
.card.empty p{color:var(--text-2);font-size:14px;max-width:420px;margin:8px auto 0}
.empty-inline{color:var(--text-3);font-size:13.5px}

.empty-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:32px;gap:6px}
.empty-mark{font-family:var(--font-display);font-weight:700;font-size:96px;letter-spacing:-.04em;color:var(--lime);line-height:1}
.empty-page h1{font-family:var(--font-display);font-size:24px;letter-spacing:-.01em;margin-top:10px}
.empty-page p{color:var(--text-2);margin-bottom:16px}
.empty-page .btn-lime{margin-top:6px}

/* ─── portada / buscador ─── */
.search-hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line);text-align:center;padding:84px 24px 72px}
.search-hero::before{content:"";position:absolute;width:560px;height:560px;right:-160px;top:-260px;border-radius:50%;filter:blur(90px);background:rgba(198,255,52,.09);pointer-events:none}
.search-hero::after{content:"";position:absolute;width:560px;height:560px;left:-200px;bottom:-300px;border-radius:50%;filter:blur(90px);background:rgba(50,41,47,.9);pointer-events:none}
.search-hero .kicker{position:relative;z-index:1}
.search-title{position:relative;z-index:1;font-family:var(--font-display);font-weight:700;font-size:clamp(32px,5.6vw,54px);letter-spacing:-.025em;line-height:1.05;margin-top:14px}
.search-title em{font-style:normal;color:var(--lime)}
.search-sub{position:relative;z-index:1;color:var(--text-2);font-size:15.5px;max-width:520px;margin:16px auto 0}
.search-form{position:relative;z-index:1;display:flex;gap:10px;max-width:560px;margin:30px auto 0}
.search-form input{
  flex:1;height:52px;padding:0 20px 0 48px;border-radius:var(--r-pill);
  background:var(--surface);border:1px solid var(--line-strong);
  color:var(--text);font-family:var(--font-ui);font-size:15px;font-weight:600;
  transition:border-color .16s ease-out;
}
.search-form input::placeholder{color:var(--text-3);font-weight:500}
.search-form input:focus{outline:none;border-color:var(--lime-line)}
.search-ico{position:absolute;left:18px;top:50%;transform:translateY(-50%);width:17px;height:17px;color:var(--text-3);pointer-events:none}
.search-form .btn-lime{margin-top:0;height:52px}
.players-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:16px}
.pcard{display:flex;align-items:center;gap:14px;padding:16px 18px}
.pcard .pc-av{width:52px;height:52px;border-radius:50%;flex:none;overflow:hidden;background:linear-gradient(145deg,#2a2a2a,#1a1a1a);display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:17px;color:var(--text-2);border:2px solid var(--line-strong)}
.pcard .pc-av img{width:100%;height:100%;object-fit:cover}
.pcard .pc-b{min-width:0;flex:1}
.pcard .pc-n{font-weight:800;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pcard .pc-m{font-family:var(--font-data);font-size:11px;letter-spacing:.06em;color:var(--text-3);margin-top:3px}
.pcard .pc-rk{flex:none;text-align:right}
.pcard .pc-rk .r{font-family:var(--font-display);font-weight:700;font-size:19px;color:var(--lime)}
.pcard .pc-rk .p{font-family:var(--font-data);font-size:10px;letter-spacing:.06em;color:var(--text-3);margin-top:2px}
.results-head{display:flex;align-items:baseline;justify-content:space-between;margin:0 4px 16px}

/* ═══ PLAYER-2 · el traje de las páginas de acceso ═══ */
.auth-body{min-height:100vh}
.auth-wrap{
  position:relative;min-height:100vh;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:26px;padding:40px 20px;overflow:hidden;
}
.auth-wrap::before,.auth-wrap::after{content:"";position:absolute;border-radius:50%;filter:blur(90px);pointer-events:none}
.auth-wrap::before{width:520px;height:520px;right:-160px;top:-220px;background:rgba(198,255,52,.09)}
.auth-wrap::after{width:560px;height:560px;left:-200px;bottom:-260px;background:rgba(50,41,47,.9)}
.auth-brand{position:relative;z-index:1}
.auth-card{
  position:relative;z-index:1;width:100%;max-width:420px;
  background:var(--surface);border:1px solid var(--line);border-radius:18px;
  padding:32px 30px;
}
.auth-title{font-family:var(--font-display);font-size:23px;font-weight:700;letter-spacing:-.015em}
.auth-sub{color:var(--text-2);font-size:14px;margin:8px 0 0}
.auth-card form{margin-top:22px}
.field{margin-bottom:16px}
.field label{display:block;font-weight:700;font-size:12.5px;letter-spacing:.03em;color:var(--text-2);margin-bottom:7px}
.input{
  width:100%;height:46px;padding:0 15px;border-radius:12px;
  background:var(--surface-2);border:1px solid var(--line-strong);
  color:var(--text);font-family:var(--font-ui);font-size:14.5px;font-weight:600;
  transition:border-color .16s ease-out;
}
.input::placeholder{color:var(--text-3);font-weight:500}
.input:focus{outline:none;border-color:var(--lime-line)}
.field-hint{display:block;font-size:11.5px;color:var(--text-3);margin-top:6px}
.auth-actions{margin-top:20px}
.auth-actions .btn-lime{margin-top:0;width:100%;justify-content:center}
.auth-note{
  margin:16px 0 0;padding:11px 14px;border-radius:12px;
  font-size:13px;font-weight:600;line-height:1.5;
}
.auth-note.ok{background:var(--lime-dim);border:1px solid var(--lime-line);color:var(--lime)}
.auth-note.err{background:var(--loss-dim);border:1px solid rgba(255,107,107,.35);color:var(--loss)}
.auth-links{position:relative;z-index:1;font-size:13.5px;font-weight:700}
.auth-links a{color:var(--lime)}
.auth-links a:hover{text-decoration:underline;text-underline-offset:3px}
.auth-foot{position:relative;z-index:1;font-family:var(--font-data);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-3)}
.cf-turnstile{margin:6px 0 2px}

/* ═══ PLAYER-2e · logo oficial + fotos blindadas ═══ */
.brand-logo{height:32px;width:auto;display:block}
.brand-chip{
  font-family:var(--font-data);font-size:10px;font-weight:700;letter-spacing:.16em;
  background:var(--lime);color:var(--lime-ink);border-radius:6px;padding:4px 8px;
}
.auth-brand .brand-logo{height:34px}
.avatar-img{position:relative}
.avatar-img .av-ini{position:absolute;inset:0;display:grid;place-items:center}
.avatar-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:50%}
.pc-av{position:relative}
.pc-av .av-ini{position:absolute;inset:0;display:grid;place-items:center}
.pc-av img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:50%}

/* ═══ pegamento base público ═══ */
a{text-decoration:none}
/* ╔════════════════════════════════════════════════════════════════╗
   ║  EXTENSIÓN PÚBLICA · escrita a mano, de cero · APP-CARBON v5    ║
   ║  Cada clase real del DOM del sitio público, en lenguaje player. ║
   ╚════════════════════════════════════════════════════════════════╝ */

/* ═══ SHELL ═══ */
.pub{background:var(--bg)}
.pub-app{min-height:100vh;display:flex;flex-direction:column}
.pub-wrap{width:100%;max-width:1160px;margin:0 auto;padding:22px 22px 60px;flex:1}

/* ═══ TOPBAR ═══ */
.pub-nav{background:#0f0f0f;border-bottom:1px solid var(--line);padding:14px 24px;
  display:flex;align-items:center;justify-content:space-between;gap:16px}
.pub-nav .logo{display:flex;align-items:center;gap:10px}
.pub-nav-logo{height:28px;width:auto;display:block}
.pub-nav .mail,.pub-nav a{color:var(--text-3);font-size:12.5px;font-weight:600;text-decoration:none}
.pub-nav a:hover{color:var(--text-2)}

/* ═══ HÉROE DEL TORNEO ═══ */
.pub-hero{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:16px;
  padding:26px 28px 24px;margin-bottom:18px;
  background:
    radial-gradient(560px 280px at 90% -60px, color-mix(in srgb, var(--lime) 10%, transparent), transparent 60%),
    radial-gradient(620px 320px at -60px 130%, rgba(50,41,47,.95), transparent 60%),
    var(--surface)}
.pub-hero h1{font-family:var(--font-display);font-size:clamp(24px,4vw,34px);
  letter-spacing:-.02em;line-height:1.15;margin:0;color:var(--text)}
.pub-h1-link{color:inherit;text-decoration:none}
.pub-h1-link:hover{color:inherit}
.pub-h1-link:hover .pub-h1-ico{transform:translateY(-1px)}
.pub-h1-ico{color:var(--lime);font-size:.65em;vertical-align:middle;margin-left:6px;
  transition:transform .15s ease-out;display:inline-block}
.pub-hero-sub{color:var(--text-2);font-size:13.5px;margin-top:6px;font-weight:500}
.pub-hero-bot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:16px}
.pub-hero-bot .cod,.pub-cat-pill{display:inline-flex;align-items:center;gap:8px;
  padding:8px 14px;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.02em;
  background:rgba(255,255,255,.04);border:1px solid var(--line-strong);color:var(--text-2);
  /* FMTPILL-1: line-height explicito. Medido: el <button> de la categoria traia
     line-height:normal del navegador (25px de alto) y el <span> del formato
     heredaba el del cuerpo (27.5px). Dos pildoras vecinas que deben verse
     iguales se llevaban 2.5px, y encima quedaban descentradas entre si. Con un
     valor fijo miden lo mismo, sean button o span. */
  line-height:1.35}
.pub-hero-bot .cod iconify-icon,.pub-cat-pill iconify-icon{color:var(--lime);font-size:14px}
.pub-hero.compacto{padding:22px 26px 20px}

/* menú Acciones */
.pub-acc{position:relative;margin-left:auto}
.pub-acc-btn{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border-radius:999px;
  background:rgba(255,255,255,.04);border:1px solid var(--line-strong);color:var(--text);
  font-family:var(--font-ui);font-weight:700;font-size:13px;cursor:pointer;
  transition:border-color .15s,transform .12s}
.pub-acc-btn:hover{border-color:var(--text-3)}
.pub-acc-btn:active{transform:scale(.97)}
.pub-acc-menu,.pub-acc-submenu{position:absolute;right:0;top:calc(100% + 8px);min-width:240px;z-index:60;
  background:var(--surface-2);border:1px solid var(--line-strong);border-radius:14px;
  padding:6px;box-shadow:0 20px 50px rgba(0,0,0,.55)}
.pub-acc-item,.pub-acc-subitem{display:flex;align-items:center;gap:10px;padding:10px 12px;
  border-radius:9px;color:var(--text);font-size:13.5px;font-weight:600;text-decoration:none;cursor:pointer;
  background:transparent;border:0;width:100%;text-align:left;font-family:var(--font-ui)}
.pub-acc-item iconify-icon,.pub-acc-subitem iconify-icon{color:var(--text-3);font-size:16px}
.pub-acc-item:hover,.pub-acc-subitem:hover{background:var(--lime-dim);color:var(--lime)}
.pub-acc-item:hover iconify-icon{color:var(--lime)}
.pub-acc-sub{border-top:1px solid var(--line);margin-top:5px;padding-top:5px}
.pub-acc-subhead{padding:7px 12px 3px;font-family:var(--font-data);font-size:10px;
  letter-spacing:.16em;text-transform:uppercase;color:var(--text-3)}
.pub-acc-caret{margin-left:auto;color:var(--text-3)}
.pub-acc-parent[aria-expanded="true"] .pub-acc-caret{transform:rotate(180deg)}

/* ═══ TELÓN: aviso + cuenta regresiva + CTA ═══ */
/* TELON-2 (v5.61, 2026-08-02) - opcion B elegida por Roberto.
   La fila de tres piezas se desacomodaba: el reloj iba empujado a la orilla con
   margin-left:auto y el boton se caia al segundo renglon dejando un hueco.
   Ahora es una sola columna centrada -- no hay nada que pueda envolverse mal.
   Dorado = "por comenzar" (el reloj, la espera) - lime = accion (el boton). */
.pub-alert-warn{background:var(--surface);border:1px solid rgba(252,211,77,.22);
  border-radius:14px;padding:22px 18px 20px;margin:0 0 18px;text-align:center}
.pub-alert-clock{display:block;margin:0 0 15px}
.pub-alert-clock .lb{display:block;font-family:var(--font-data);font-size:10px;
  font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:#fcd34d;margin:0 0 13px}
.pub-alert-clock .us{display:flex;justify-content:center;gap:9px}
.pub-alert-clock .u{display:flex;flex-direction:column;align-items:center;gap:3px;
  min-width:68px;padding:9px 8px 8px;border-radius:12px;
  background:rgba(252,211,77,.08);border:1px solid rgba(252,211,77,.26)}
.pub-alert-clock .u b{font-family:var(--font-data);font-variant-numeric:tabular-nums;
  font-size:27px;line-height:1;font-weight:700;color:#fcd34d}
.pub-alert-clock .u i{font-family:var(--font-data);font-size:9px;font-weight:700;
  font-style:normal;letter-spacing:.14em;text-transform:uppercase;color:#9c8237}
.pub-alert-txt{max-width:540px;margin:0 auto 15px;color:var(--text-2);
  font-family:var(--font-ui);font-size:13px;font-weight:500;line-height:1.55}
.pub-alert-txt:last-child{margin-bottom:0}
/* CUENTA-4 (2026-08-04): cuando el reloj es lo unico que queda dentro del
   banner, su margen inferior de 15px sumaba al padding de la caja y esta
   se veia pesada por abajo (22 arriba contra 35 abajo). Misma regla que
   ya usaba .pub-alert-txt justo encima. */
.pub-alert-clock:last-child{margin-bottom:0}
.pub-alert-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border-radius:999px;
  background:var(--lime);border:1px solid var(--lime);color:var(--lime-ink);
  font-family:var(--font-ui);font-weight:800;font-size:13px;cursor:pointer;transition:transform .12s,background .15s}
.pub-alert-btn:hover{background:#d3ff5e;border-color:#d3ff5e}
.pub-alert-btn:active{transform:scale(.97)}
.pub-alert-btn .n{background:rgba(19,22,0,.16);border-radius:999px;padding:2px 9px;
  font-family:var(--font-data);font-size:12px}
.mb-sh{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:34px 28px;
  text-align:center;margin-bottom:18px}
.mb-sh-txt{color:var(--text-2);font-size:14px;max-width:560px;margin:0 auto;line-height:1.6}

/* ═══ NAVEGACIÓN DE SECCIONES + BUSCADOR + REGRESAR ═══ */
.pub-navrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.pub-tabs{display:flex;gap:9px;flex-wrap:wrap}
.pub-tabs .btn-myballs-outline,.pub-tabs .btn-myballs-primary{
  display:inline-flex;align-items:center;gap:8px;padding:9px 17px;border-radius:999px;
  font-family:var(--font-ui);font-weight:700;font-size:13.5px;text-decoration:none;
  transition:border-color .15s,color .15s,transform .12s;box-shadow:none}
.pub-tabs .btn-myballs-outline{background:transparent;border:1px solid var(--lime-line);color:var(--text-2)}
.pub-tabs .btn-myballs-outline:hover{border-color:var(--lime);color:var(--text)}
.pub-tabs .btn-myballs-outline:active{transform:scale(.97)}
.pub-tabs .btn-myballs-primary{background:var(--lime);border:1px solid var(--lime);color:var(--lime-ink)}
.pub-tabs .btn-myballs-primary iconify-icon{color:var(--lime-ink)}
.pub-buscar{display:flex;gap:8px;margin-left:auto;align-items:center}
.pub-buscar-wrap{position:relative}
.pub-buscar input[type=search]{height:40px;min-width:210px;padding:0 16px;border-radius:999px;
  background:var(--surface-2);border:1px solid var(--lime-line);color:var(--text);
  font-family:var(--font-ui);font-size:13px;outline:none;transition:border-color .15s}
.pub-buscar input[type=search]::placeholder{color:var(--text-3)}
.pub-buscar input[type=search]:focus{border-color:var(--lime)}
.pub-buscar button{height:40px;padding:0 20px;border-radius:999px;background:var(--lime);
  border:1px solid var(--lime);color:var(--lime-ink);font-family:var(--font-ui);
  font-weight:800;font-size:13.5px;cursor:pointer;transition:transform .12s,background .15s}
.pub-buscar button:hover{background:#d3ff5e}
.pub-buscar button:active{transform:scale(.97)}
.pub-nav-sug{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:50;
  background:var(--surface-2);border:1px solid var(--line-strong);border-radius:12px;
  padding:5px;box-shadow:0 16px 40px rgba(0,0,0,.5)}
.pub-nav-sug a,.pub-nav-sug .it{display:flex;align-items:center;gap:9px;padding:9px 11px;
  border-radius:8px;color:var(--text);font-size:13px;font-weight:600;text-decoration:none}
.pub-nav-sug a:hover{background:var(--lime-dim);color:var(--lime)}
.pub-back-btn,.pub-pdf-btn,.pub-seed-btn,.pub-rolbtn{
  display:inline-flex;align-items:center;gap:7px;padding:8px 15px;border-radius:999px;
  background:transparent;border:1px solid var(--lime-line);color:var(--text-2);
  font-family:var(--font-ui);font-weight:700;font-size:12.5px;text-decoration:none;cursor:pointer;
  transition:border-color .15s,color .15s,transform .12s}
.pub-back-btn:hover,.pub-pdf-btn:hover,.pub-seed-btn:hover,.pub-rolbtn:hover{
  border-color:var(--lime);color:var(--text)}
.pub-back-btn:active,.pub-rolbtn:active{transform:scale(.97)}
.pub-pdf-btn iconify-icon,.pub-seed-btn iconify-icon,.pub-rolbtn iconify-icon{color:var(--lime)}

/* ═══ LOS 8 DÍAS ═══ */
.pub-dias{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 18px}
.pub-dia{--dc:var(--lime);display:inline-flex;align-items:baseline;gap:5px;
  padding:8px 14px;border-radius:999px;text-decoration:none;
  font-family:var(--font-data);font-weight:700;letter-spacing:.04em;
  background:color-mix(in srgb, var(--dc) 12%, var(--mix-base));
  color:color-mix(in srgb, var(--dc) 80%, var(--mix-txt));
  border:1px solid color-mix(in srgb, var(--dc) 36%, transparent);
  transition:transform .12s,border-color .15s}
.pub-dia:hover{transform:translateY(-2px);border-color:var(--dc);color:color-mix(in srgb, var(--dc) 85%, var(--mix-txt))}
.pub-dia .ds,.pub-dia .dm{font-size:10px;text-transform:uppercase;opacity:.75}
.pub-dia .dn{font-size:15px}
.pub-dia.on{background:var(--dc);color:var(--lime-ink);border-color:var(--dc)}
.pub-dia.on .ds,.pub-dia.on .dm{opacity:.8}
.pub-dia-todos .dtodos{font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.dia1{--dc:#99E1D9}.dia2{--dc:#C6FF34}.dia3{--dc:#FFB55E}.dia4{--dc:#8AB8FF}
.dia5{--dc:#FF9ECB}.dia6{--dc:#B79CFF}.dia7{--dc:#FF8A7A}.dia8{--dc:#7ED957}

/* ═══ ENCABEZADO DE FECHA ═══ */
.pub-dia-h{--dc:var(--lime);display:inline-flex;align-items:center;gap:9px;
  padding:8px 16px;border-radius:999px;margin:16px 0 12px;font-weight:800;font-size:13px;
  background:color-mix(in srgb, var(--dc) 14%, var(--mix-base));
  color:color-mix(in srgb, var(--dc) 72%, var(--mix-txt));
  border:1px solid color-mix(in srgb, var(--dc) 38%, transparent)}
.pub-dia-h iconify-icon{font-size:15px}

/* ═══ EL ÁTOMO: TARJETA DE PARTIDO (.scv) ═══ */
.pub-res-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px;margin-bottom:8px}
.scv{background:var(--surface);border:1px solid var(--line);border-radius:14px;
  padding:14px 16px;transition:border-color .15s}
.scv:hover{border-color:var(--line-strong)}
.scv-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:11px}
.scv-meta .r-pill{font-family:var(--font-data);font-size:9.5px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;padding:4px 10px;border-radius:6px;
  background:var(--lime-dim);color:var(--lime)}
/* La cancha se identifica por SU PROPIA CLASE, no por su lugar en el renglon.
   Historia de esta regla, que vale la pena no repetir:
     1. decia :last-child            -> se rompio al poner la hora al final
     2. paso a .r-pill + .r-pill     -> se rompio al poner la cancha primera
   Las dos describian una posicion cuando lo que querian decir era "la cancha".
   Ahora lo dice. (2026-08-01) */
.scv-meta .r-pill-cancha{background:var(--turq-dim);color:var(--turq)}
/* variante SIN píldora (vistas de horarios): hora y categoría·ronda en mono */
.scv-meta .h{font-family:var(--font-data);font-variant-numeric:tabular-nums;
  font-size:11.5px;font-weight:700;letter-spacing:.06em;padding:3px 10px;
  border-radius:999px;background:var(--lime-dim);border:1px solid var(--lime-line);
  color:var(--lime);display:inline-flex;align-items:center;flex-shrink:0}
/* partido en curso: píldora lime RELLENA, manda sobre la hora (que va con borde) */
.pubm-live{font-family:var(--font-data);font-size:9.5px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;padding:4px 10px;border-radius:999px;
  background:var(--lime);color:var(--lime-ink);
  display:inline-flex;align-items:center;flex-shrink:0}
.scv-meta .r:not(.r-pill){font-family:var(--font-data);font-size:11.5px;font-weight:500;
  letter-spacing:.01em;color:var(--text-3)}
.scv-body{display:flex;align-items:stretch;gap:12px}
.scv-names{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:space-around;gap:4px}
.scv-p{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:8px;min-height:32px}
/* NOMBLANCO-1 (2026-08-04, pedido de Roberto): los nombres pasan de gris
   (--text-2, #a6a6a6) a blanco (--text, #f5f5f5). Son el dato por el que la
   gente abre esta pagina: viene a buscarse. El gris los dejaba al mismo nivel
   que la categoria y la ronda, que son contexto.
   La jerarquia del ganador NO se pierde: sigue teniendo su fondo lima, peso
   800, la palomita y el #fff puro de la regla de abajo. */
.scv-p .nm{flex:1;min-width:0;font-weight:600;font-size:14px;color:var(--text);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scv-p .nm div{overflow:hidden;text-overflow:ellipsis}
.scv-p.win{background:var(--lime-dim)}
.scv-p.win .nm{font-weight:800;color:#fff}
.scv-p .chk{color:var(--lime);font-size:15px;display:inline-flex;flex-shrink:0}
.scv-champ{font-size:14px;flex-shrink:0}
.scv-sets{display:flex;gap:10px;align-items:stretch}
.scv-set{display:flex;flex-direction:column;justify-content:space-around;gap:4px}
.scv-set .c{font-family:var(--font-data);font-variant-numeric:tabular-nums;
  font-size:15px;font-weight:700;text-align:center;min-width:20px;
  min-height:32px;display:flex;align-items:center;justify-content:center;color:var(--text)}
.scv-set .c.g{color:var(--text);font-weight:800}
.scv-set .c sup{font-size:9px;color:var(--text-2);margin-left:1px;font-weight:600}
.scv .sep{color:var(--text-3)}

/* ═══ SEMBRADOS (modal lista) ═══ */
.pub-seed-row{display:flex;align-items:center;gap:12px;padding:9px 6px;border-bottom:1px solid var(--line)}
.pub-seed-row:last-child{border-bottom:0}
.pub-seed-n{font-family:var(--font-data);font-weight:700;color:var(--lime);
  background:var(--lime-dim);border-radius:8px;min-width:30px;height:30px;
  display:inline-flex;align-items:center;justify-content:center;font-size:13px}
.pub-seed-nm{color:var(--text);font-weight:700;font-size:14px}

/* ═══ JUGADORES ═══ */
.jl-row{display:flex;align-items:center;gap:13px;background:var(--surface);
  border:1px solid var(--line);border-radius:12px;padding:11px 15px;margin-bottom:8px;
  transition:border-color .15s}
.jl-row:hover{border-color:var(--line-strong)}
.jl-num{font-family:var(--font-data);color:var(--text-3);min-width:22px;font-size:13px;text-align:right}
/* SINAVA-2 (2026-08-05): se retiro .jl-ava, el disco con iniciales de la
   lista de jugadores. Ya no lo pinta nadie. */
/* SINAVA-2: la siembra deja de ser una chapita pegada al disco y pasa a ser un
   circulo por derecho propio, en su casilla fija. La casilla se reserva aunque
   no haya siembra para que todos los nombres arranquen en la misma linea; sin
   ella la lista se veia en zigzag. Mas angosta que el disco de antes (28 contra
   38 px) porque ya no tiene que caber un par de iniciales. */
.jl-seedbox{width:28px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.jl-seed{width:22px;height:22px;border-radius:50%;
  /* SEEDPUB-2 (2026-08-06, pedido de Roberto): el mismo circulito de siembra
     que ya usan el cuadro y el modal de Cabezas de serie — fondo suave, borde
     y numero en el color de la rama. Un solo lenguaje para el mismo dato, y
     se adapta solo a los dos temas. Antes era un circulo relleno turquesa. */
  background:var(--lime-dim);border:1px solid var(--lime);color:var(--lime);
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--font-data);font-weight:800;font-size:11px}
.jl-nm{flex:1;min-width:0;color:var(--text);font-weight:800;font-size:14.5px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.jl-chips{display:flex;gap:6px;flex-shrink:0}
.jl-chip{font-family:var(--font-data);font-size:10.5px;letter-spacing:.04em;
  padding:5px 11px;border-radius:999px;background:rgba(255,255,255,.04);
  border:1px solid var(--line-strong);color:var(--text-2)}
/* PILDORAS-1 (2026-08-06, pedido de Roberto): las pildoras eran grises y no
   contaban nada de un vistazo. Lenguaje de la casa: lime = ya jugado (como
   el ganador), dorado = por jugar (como los horarios pendientes). */
.jl-chip.g{color:var(--lime);background:var(--lime-dim);border-color:var(--lime-line)}
.jl-chip.p{color:var(--gold);background:var(--gold-dim);border-color:rgba(252,211,77,.35)}
.gr-bd-btn{width:32px;height:32px;border-radius:999px;background:transparent;
  border:1px solid var(--line-strong);color:var(--text-3);cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s,color .15s}
.gr-bd-btn:hover{border-color:var(--lime);color:var(--lime)}
.jl-bd{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;
  padding:13px 16px;margin:-4px 0 10px 34px}
.jl-grp-h{font-family:var(--font-data);font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--text-3);display:flex;align-items:center;gap:7px;margin:10px 0 7px}
.jl-grp-h:first-child{margin-top:0}
.jl-grp-h iconify-icon{color:var(--lime)}
.jl-ronda{color:var(--text-3);font-size:11.5px;font-family:var(--font-data);margin-bottom:3px}
.gr-bd-wrap{display:flex;flex-direction:column;gap:4px}
.gr-bd-match{padding:7px 0;border-bottom:1px solid var(--line)}
.gr-bd-match:last-child{border-bottom:0}
.gr-bd-line{display:flex;align-items:center;gap:9px;padding:3px 8px;border-radius:7px;
  color:var(--text-2);font-size:13px;font-weight:600}
.gr-bd-line.win{background:var(--lime-dim);color:var(--text);font-weight:700}
.gr-bd-line .num{font-family:var(--font-data);margin-left:auto;color:var(--text-3)}
.gr-bd-line.win .num{color:var(--text)}

/* ═══ BRACKET (cuadros) ═══ */
.rg-cell{position:relative}
.rg-match{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;
  padding:4px 6px;transition:border-color .15s}
.rg-match:hover{border-color:var(--line-strong)}
.rg-row{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:8px;min-height:36px}
.rg-row + .rg-row{border-top:1px solid var(--line)}
.rg-row.win{background:var(--lime-dim)}
/* SINAVA-1 (2026-08-05): se retiro .rg-ava, el circulo con iniciales de
   las filas de la llave. Ya no lo pinta nadie. */
/* NOMBLANCO-2 (2026-08-05, pedido de Roberto): todos los nombres en blanco.
   Estaban en gris (--text-2) y solo el ganador pasaba a blanco, asi que una
   llave sin resultados se leia entera apagada. El ganador se sigue
   distinguiendo por lo que si es suyo: el peso 800, el sombreado y la palomita.
   Se usa --text (#f5f5f5), el blanco del sistema; el ganador conserva el #fff
   puro de la regla de abajo. */
.rg-nm{flex:1;min-width:0;font-weight:600;font-size:13px;color:var(--text);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rg-row.win .rg-nm{color:#fff;font-weight:800}
/* TBDCHICO-1 (2026-08-05, pedido de Roberto): "BYE" y "Por definir" se pintaban
   con el mismo tamano y peso que un nombre de jugador, asi que en la llave
   parecian una pareja mas. No lo son: son la ausencia de rival.
   Se les da la misma letra que a la linea de fecha y hora de la tarjeta
   (.rg-prog): la tipografia de datos, 9 px y espaciada. El color se queda en
   --text-3 y no en el dorado de esa linea porque el dorado en este sistema
   significa "cuando se juega", y aqui no hay nada que jugar. Es ademas el mismo
   gris que ya usa .scv-p.tbd en la otra tarjeta, asi que las dos coinciden. */
/* TBDCHICO-2 (2026-08-05): Roberto lo pidio en color. Se le da el MISMO dorado
   que la linea de fecha y hora (.rg-prog), que es la referencia que el uso.
   El gris de antes se perdia contra el fondo ahora que los nombres son blancos. */
.rg-row.tbd .rg-nm{font-family:var(--font-data);font-size:9px;letter-spacing:.05em;
  font-weight:700;color:var(--gold)}
/* SEEDPUB-1 (2026-08-06, pedido de Roberto): la siembra en la llave era un
   (3) gris que se perdia entre los apellidos. Ahora es un circulito con el
   numero adentro: la version mini del que ya usa el modal de Cabezas de
   serie (.pub-seed-n), en lime sobre lime tenue, para que se lea como el
   mismo dato en las dos partes. Hereda el tinte de la rama solito, porque
   --lime se redefine por rama en el body. */
.rg-seed{font-family:var(--font-data);font-weight:700;font-size:9px;color:var(--lime);
  background:var(--lime-dim);border:1px solid var(--lime);border-radius:50%;
  min-width:15px;width:15px;height:15px;display:inline-flex;align-items:center;
  justify-content:center;flex-shrink:0;line-height:1;margin-left:2px}
/* CHKFIRME-1 (2026-08-05): la palomita lleva medidas propias. Su unico
   contenido es un icono de Iconify, que llega por red; medido en navegador sin
   ese icono, la palomita quedaba de 0x0 y el ganador se quedaba SIN NINGUNA
   senal. Importa mas desde hoy: al quitarle el sombreado a quien pasa por BYE,
   la palomita es lo unico que dice que avanzo. Es el mismo tropiezo del boton
   de limpiar del buscador de la Mesa, y se arregla igual. */
.rg-chk{color:var(--lime);display:inline-flex;align-items:center;justify-content:center;
  width:14px;height:14px;flex-shrink:0;font-size:14px}
.rg-sets{display:flex;gap:7px;margin-left:2px}
.rg-g{font-family:var(--font-data);font-variant-numeric:tabular-nums;font-size:13.5px;
  font-weight:800;color:var(--text);min-width:14px;text-align:center}
/* SETBLANCO-1 (2026-08-05, pedido de Roberto): los sets perdidos tambien en
   blanco. Estaban en --text-3, el gris mas apagado de la piel, y en un
   marcador como 6-1 6-1 la mitad de los numeros no se leia.
   La distincion no se pierde, cambia de herramienta: la lleva el PESO (800 el
   set ganado, 700 el perdido) en vez del color. Es el mismo criterio que ya
   aplicamos a los nombres. */
.rg-g.pierde{color:var(--text);font-weight:700}
/* El numerito del tiebreak sube de --text-3 a --text-2: sigue siendo un dato
   secundario -por eso no llega a blanco- pero ya se lee. */
.rg-g sup{font-size:8.5px;color:var(--text-2)}
/* conectores de la llave — SINMUNON-1b (2026-08-06, dos hallazgos de
   Roberto): en MOVIL el corchete es .rg-mconn y los munones lo duplicaban
   sobrepuestos: fuera. Pero en ESCRITORIO los munones ERAN el conector
   completo (no hay curva ahi) y al quitarlos el bracket quedo flotando sin
   hilos. Solucion: munones SOLO en escritorio (>900px), entintados con el
   color de la rama en el tema claro. */
/* CODOS-ESCRITORIO-1: los munones se retiran DEFINITIVAMENTE; en escritorio
   ahora dibuja corchetes completos el JS de inc/foot.php (.rg-dconn), el
   mismo patron Roland Garros del movil, en ambos temas. */
/* minimapa de rondas */
.rg-mr{display:flex;gap:8px;margin:4px 0 18px;overflow-x:auto;padding-bottom:4px}
.rg-mr-box{flex:1;min-width:72px;background:var(--surface);border:1px solid var(--line);
  border-radius:9px;padding:9px 8px;display:flex;flex-direction:column;gap:4px;cursor:pointer;
  transition:border-color .15s,background .15s}
.rg-mr-box:hover{border-color:var(--line-strong)}
.rg-mr-sk{height:3px;border-radius:2px;background:var(--line-strong)}
.rg-mr-t{font-family:var(--font-data);font-size:9px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--text-3);text-align:center;margin-top:2px}
.rg-mr-box.act,.rg-mr-box.on{background:var(--lime);border-color:var(--lime)}
.rg-mr-box.act .rg-mr-sk,.rg-mr-box.on .rg-mr-sk{background:rgba(19,22,0,.45)}
.rg-mr-box.act .rg-mr-t,.rg-mr-box.on .rg-mr-t{color:var(--lime-ink)}
.rg-mr-bo{display:flex;gap:8px}

/* ═══ GRUPOS (round robin) ═══ */
.lg-bloque{background:var(--surface);border:1px solid var(--line);border-radius:14px;
  padding:16px 18px;margin-bottom:14px}
.lg-cab{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.lg-cat,.lg-rama{font-family:var(--font-display);font-weight:700;color:var(--text);font-size:15px}
.lg-rama{color:var(--text-2);font-size:13px}
.lg-cuerpo{display:flex;flex-direction:column;gap:6px}
.lg-par{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:9px;
  color:var(--text-2);font-weight:600;font-size:13.5px;border-bottom:1px solid var(--line)}
.lg-par:last-child{border-bottom:0}
/* Estas tres reglas apuntaban a .lg-par, pero .ct y .fl viven en .lg-cab y
   .tt y .nn en .lg-rama. Reapuntadas a su contenedor real (2026-07-31). */
.lg-cab .ct,.lg-rama .nn{font-family:var(--font-data);color:var(--text-3)}
.lg-cab .fl{margin-left:auto}
.lg-rama .tt{color:var(--text)}

/* ═══ CATEGORÍAS + FILTRO DE GÉNERO ═══ */
.pub-catfilter{display:flex;gap:9px;flex-wrap:wrap;margin:4px 0 16px}
.pub-catfilter button{--pc:var(--turq);display:inline-flex;align-items:center;gap:8px;
  padding:9px 16px;border-radius:999px;cursor:pointer;
  font-family:var(--font-ui);font-weight:800;font-size:13px;
  background:color-mix(in srgb, var(--pc) 12%, var(--mix-base));
  color:color-mix(in srgb, var(--pc) 78%, var(--mix-txt));
  border:1px solid color-mix(in srgb, var(--pc) 36%, transparent);
  transition:transform .12s}
.pub-catfilter button:active{transform:scale(.97)}
.pub-catfilter button.active{background:var(--pc);color:var(--lime-ink);border-color:var(--pc)}
.pub-catfilter .cnt{font-family:var(--font-data);font-size:11px;opacity:.85}
.pub-catgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:13px}
.pub-catcard{--cc:var(--turq);display:flex;align-items:center;gap:13px;
  background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--cc);
  border-radius:14px;padding:15px 16px;text-decoration:none;
  transition:transform .15s,border-color .15s}
.pub-catcard:hover{transform:translateY(-2px);border-color:var(--line-strong);border-left-color:var(--cc)}
.pub-catcard-ico{width:40px;height:40px;border-radius:12px;flex-shrink:0;
  background:color-mix(in srgb, var(--cc) 14%, var(--mix-base));color:var(--cc);
  display:inline-flex;align-items:center;justify-content:center;font-size:19px}
.pub-catcard-body{flex:1;min-width:0}
.pub-catcard-body b{display:block;color:var(--text);font-family:var(--font-display);
  font-weight:700;font-size:14.5px;letter-spacing:-.01em;line-height:1.25}
.pub-catcard-body small{color:var(--text-2);font-size:12px;font-weight:500}
.pub-catcard-meta{display:flex;align-items:center;gap:8px;flex-shrink:0;color:var(--text-3)}
.pub-catcard-meta .np{font-family:var(--font-data);font-size:10.5px;letter-spacing:.04em;
  padding:5px 10px;border-radius:999px;background:rgba(255,255,255,.04);
  border:1px solid var(--line-strong);color:var(--text-2)}

/* ═══ COMPARTIR + MODAL ═══ */
.pub-modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:20px}
.pub-modal-velo{position:absolute;inset:0;background:rgba(0,0,0,.74)}
.pub-modal-card{position:relative;width:100%;max-width:420px;background:var(--surface-2);
  border:1px solid var(--line-strong);border-radius:16px;padding:22px;
  box-shadow:0 26px 70px rgba(0,0,0,.6)}
.pub-modal-h{font-family:var(--font-display);font-size:18px;color:var(--text);margin:0 0 4px}
.pub-modal-sub{color:var(--text-2);font-size:13px;margin-bottom:14px}
.pub-modal-body{display:flex;flex-direction:column;gap:8px}
.pub-modal-x{position:absolute;top:14px;right:14px;width:32px;height:32px;border-radius:999px;
  background:transparent;border:1px solid var(--line-strong);color:var(--text-2);cursor:pointer}
.pub-share-op{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;
  background:var(--surface-3);border:1px solid var(--line);color:var(--text);
  text-decoration:none;cursor:pointer;transition:border-color .15s;width:100%;font-family:var(--font-ui)}
.pub-share-op:hover{border-color:var(--line-strong)}
.pub-share-ico{width:36px;height:36px;border-radius:10px;flex-shrink:0;
  background:var(--lime-dim);color:var(--lime);
  display:inline-flex;align-items:center;justify-content:center;font-size:17px}
.pub-share-op.wa .pub-share-ico{background:rgba(37,211,102,.14);color:#4ade80}
.pub-share-txt{font-weight:700;font-size:13.5px}
.pub-share-go{margin-left:auto;color:var(--text-3)}

/* ═══ PATROCINADORES ═══ */
.pub-patro-pista{background:var(--surface);border:1px solid var(--line);border-radius:16px;
  padding:20px 22px;margin:22px 0 8px;text-align:center;overflow:hidden}
.pub-patro-t{font-family:var(--font-data);font-size:10px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--text-3);margin-bottom:15px}
.pub-patro-set{display:flex;gap:14px;justify-content:center;align-items:center;flex-wrap:wrap}
.pub-patro-set img{background:#ffffff;border-radius:12px;padding:10px 14px;height:64px;
  width:auto;max-width:150px;object-fit:contain}

/* ═══ PIE ═══ */
.pub-foot{border-top:1px solid var(--line);padding:26px 22px 34px;text-align:center;
  color:var(--text-3);font-size:12.5px;margin-top:auto}
.pub-foot b{color:var(--text-2)}
.pub-foot a{color:var(--lime);font-weight:700;text-decoration:none}
.pub-foot a:hover{color:#d3ff5e}
.pub-foot-l1{margin-bottom:4px}
/* PIELOGO-1 (2026-08-04): el logo que cierra la pagina. Va mas apagado que el
   del encabezado a proposito -el pie no compite con el contenido- y se enciende
   al pasar por encima. Lleva width/height en el HTML para que el navegador le
   reserve el sitio antes de descargarlo y el pie no pegue un brinco al cargar. */
.pub-foot-logo{display:inline-block;margin-bottom:14px;opacity:.7;transition:opacity .18s ease}
.pub-foot-logo:hover{opacity:1}
.pub-foot-logo img{height:32px;width:auto;display:block}
@media (max-width:600px){.pub-foot-logo img{height:27px}.pub-foot-logo{margin-bottom:12px}}

/* ═══ ÍNDICE (listado de torneos) ═══ */
.pub-sec-t{display:flex;align-items:center;gap:8px;margin:22px 0 10px;
  font-family:var(--font-data);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--text-3)}
.pub-sec-t iconify-icon{color:var(--lime)}
.pub-tcard{display:flex;align-items:center;gap:14px;background:var(--surface);
  border:1px solid var(--line);border-radius:14px;padding:15px 17px;margin-bottom:10px;
  text-decoration:none;transition:transform .15s,border-color .15s}
.pub-tcard:hover{transform:translateY(-2px);border-color:var(--line-strong)}
.pub-tcard .ic{width:42px;height:42px;border-radius:12px;flex-shrink:0;
  background:var(--lime-dim);color:var(--lime);
  display:inline-flex;align-items:center;justify-content:center;font-size:20px}
.pub-tcard .bd{flex:1;min-width:0}
.pub-tcard .nom{color:var(--text);font-family:var(--font-display);font-weight:700;
  font-size:15.5px;letter-spacing:-.01em}
.pub-tcard .met{color:var(--text-2);font-size:12.5px;margin-top:2px}
.pub-tcard .chev{color:var(--text-3);flex-shrink:0}

/* CATBADGE-1 (2026-08-02) - el badge del renglon de torneo, opcion A.
   .pub-mini-badge se usaba en index.php desde hace tiempo pero NUNCA tuvo una
   sola regla en esta hoja: clase huerfana, de la misma familia que las fx-/dx-
   de la Ficha. Sin reglas heredaba los 15.5px del titulo, con esquinas rectas
   y el dorado escrito a mano en el HTML, asi que parecia un marcatextos encima
   del nombre. Peor: el badge EN CURSO no traia color a mano, asi que el dia
   que arrancara el torneo se habria visto como texto pelon con un punto
   invisible al lado.
   Un solo molde para los dos estados: dorado = por comenzar, lima = en curso. */
.pub-mini-badge{display:inline-flex;align-items:center;gap:5px;margin-left:9px;
  vertical-align:2px;padding:3px 9px;border-radius:999px;white-space:nowrap;
  font-family:var(--font-data);font-size:9px;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase}
.pub-mini-badge iconify-icon{font-size:11px;flex-shrink:0}
.pub-mini-badge.espera{background:rgba(212,160,23,.14);
  border:1px solid rgba(212,160,23,.42);color:#e9bd45}
.pub-mini-badge.vivo{background:var(--lime-dim);border:1px solid var(--lime-line);
  color:var(--lime)}
.pub-mini-badge.vivo .dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;
  background:var(--lime);animation:insPulso 1.6s ease-in-out infinite}
.pub-hero-logo{height:42px;width:auto;display:block}
.pub-hero .meta{display:flex;gap:8px;color:var(--text-2);font-size:13px;margin-top:8px}

/* ═══ VACÍOS Y AVISOS ═══ */
.pub-vacio,.lg-vacio,.dx-empty{background:var(--surface);border:1px dashed var(--line-strong);
  border-radius:14px;padding:26px;text-align:center;color:var(--text-3);font-size:13.5px}
.pub-lluvia{display:flex;align-items:center;gap:12px;background:rgba(252,211,77,.07);
  border:1px solid rgba(252,211,77,.3);border-radius:14px;padding:13px 17px;
  color:#fcd34d;font-weight:600;font-size:13.5px;margin-bottom:16px}
.wo,.rojo{color:var(--loss)}

/* ═══ RESPONSIVE ═══ */
@media (max-width:760px){
  .pub-wrap{padding:16px 14px 50px}
  .pub-hero{padding:20px 18px}
  .pub-hero-bot{gap:8px}
  .pub-acc{margin-left:0;width:100%}
  .pub-acc-btn{width:100%;justify-content:center}
  .pub-navrow{gap:10px}
  .pub-buscar{margin-left:0;width:100%}
  .pub-buscar-wrap{flex:1}
  .pub-buscar input[type=search]{width:100%;min-width:0}
  .pub-alert-clock{margin-left:0}
  .pub-res-grid{grid-template-columns:1fr}
  .pub-dias{flex-wrap:nowrap;overflow-x:auto;padding-bottom:6px;scroll-snap-type:x proximity}
  .pub-dia{flex-shrink:0;scroll-snap-align:start}
  .jl-bd{margin-left:12px}
}

/* ═══ COBERTURA TOTAL · segunda pasada ═══ */

/* franja de cancha (HOY): .pub-courts > .pgc > .pgc-h + partidos */
.pub-courts{display:flex;flex-direction:column;gap:16px}
.pgc{background:transparent}
.pgc-h{display:flex;align-items:center;gap:10px;background:var(--surface);
  border:1px solid var(--line);border-left:3px solid var(--lime);border-radius:12px;
  padding:11px 16px;margin-bottom:10px}
.pgc-h .n{display:flex;align-items:center;gap:9px;font-family:var(--font-display);
  font-weight:700;font-size:15px;color:var(--text)}
.pgc-h .n iconify-icon{color:var(--lime);font-size:17px}
.pgc-badge{font-family:var(--font-data);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;
  padding:4px 10px;border-radius:999px;background:rgba(255,255,255,.04);
  border:1px solid var(--line-strong);color:var(--text-2);display:inline-flex;align-items:center;gap:5px}
.pgc-badge.luz{background:var(--lime-dim);border-color:var(--lime-line);color:var(--lime)}
.pgc-badge.off{opacity:.6}
.pgc-b{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px}
.pgc-b0{border-left-color:var(--turq)}

/* bracket: contenedor, navegación, minimapa, campeón */
.rg-grid{display:grid;gap:14px 30px;align-items:center;overflow-x:auto;padding:6px 2px 14px;
  position:relative} /* CODOS-ESCRITORIO-1: ancla de los corchetes absolutos */
.rg-dconn{position:absolute;border:2px solid var(--lime-line);border-left:0;
  border-radius:0 12px 12px 0;pointer-events:none;z-index:0}
/* CODOS-ESCRITORIO-1c: canal ANCHO entre rondas en escritorio (56px, estilo
   Roland Garros); con 30px el corchete quedaba hombro con hombro con la
   siguiente ronda y se leia sobrepuesto. */
@media (min-width:901px){ .rg-grid{column-gap:56px} }
.rg-nav{display:flex;align-items:center;gap:10px;margin:4px 0 14px;flex-wrap:wrap}
.rg-ct{display:inline-flex;align-items:center;padding:8px 18px;border-radius:999px;
  font-family:var(--font-ui);font-weight:800;font-size:12.5px;letter-spacing:.04em;
  background:transparent;border:1px solid var(--line-strong);color:var(--text-2)}
.rg-ct.act,.rg-ct.colact{background:var(--lime);border-color:var(--lime);color:var(--lime-ink)}
.rg-arrow{width:36px;height:36px;border-radius:999px;background:transparent;
  border:1px solid var(--line-strong);color:var(--text-2);cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s,color .15s}
.rg-arrow:hover{border-color:var(--lime);color:var(--lime)}
.rg-map{display:flex;gap:8px;margin:2px 0 16px;overflow-x:auto;padding-bottom:4px}
.rg-champ{background:linear-gradient(90deg, color-mix(in srgb, var(--lime) 12%, transparent), color-mix(in srgb, var(--lime) 4%, transparent))}
.rg-champ .rg-nm{color:#fff;font-weight:800}
.rg-instub .rg-nm,.rg-instub{color:var(--text-3);font-style:italic}
.rg-cell.prev .rg-match{opacity:.92}
.entra{animation:cbEntra .25s ease-out}
@keyframes cbEntra{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* barra de secciones (contenedor) */
.pub-secbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}

/* sugerencias del buscador */
.sg{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:9px;
  color:var(--text);font-size:13px;font-weight:600;cursor:pointer}
.sg:hover{background:var(--lime-dim);color:var(--lime)}
.sg-av{width:28px;height:28px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(145deg,#2a2a2a,#1a1a1a);border:1px solid var(--line-strong);
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--font-display);font-size:10px;font-weight:700;color:var(--text-3)}
.sg-n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* compartir (tarjeta) + QR */
.pub-share-card{background:var(--surface-2);border:1px solid var(--line-strong);border-radius:16px;padding:20px}
.pub-share-body{display:flex;flex-direction:column;gap:8px}
.pub-share-sub{color:var(--text-3);font-size:11.5px}
.pub-qr-wrap{display:flex;flex-direction:column;align-items:center;gap:14px;padding:6px 0}
.pub-qr-card{background:#ffffff;border-radius:16px;padding:14px;display:inline-flex}
.pub-qr-card img,.pub-qr-card svg{display:block;border-radius:6px}
.pub-qr-dl{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:999px;
  background:var(--lime);border:1px solid var(--lime);color:var(--lime-ink);
  font-weight:800;font-size:13px;cursor:pointer;text-decoration:none}
.pub-qr-dl:hover{background:#d3ff5e}

/* grupos: buscador + segmentos por grupo (acento del ciclo) */
.lg-buscar{display:flex;gap:8px;margin-bottom:12px}
.lg-buscar input{flex:1;height:38px;padding:0 15px;border-radius:999px;
  background:var(--surface-2);border:1px solid var(--line-strong);color:var(--text);font-size:13px}
.jl-bd.seg{border-left:3px solid var(--line-strong)}
.seg1{border-left-color:#99E1D9}.seg2{border-left-color:#C6FF34}.seg3{border-left-color:#FFB55E}
.seg4{border-left-color:#8AB8FF}.seg5{border-left-color:#FF9ECB}.seg6{border-left-color:#B79CFF}
.seg7{border-left-color:#FF8A7A}.seg8{border-left-color:#7ED957}
.jl-champ{font-size:14px;flex-shrink:0}
.mb-sh-grupo{margin-top:14px;color:var(--text-2)}
.pub-acc-ins .pub-acc-item iconify-icon{color:var(--lime)}
.pub-foot-l2{color:var(--text-3)}
.pub-foot-l2 a{color:var(--text-2)}

/* ═══ PASADA 3 · FASE DE GRUPOS (round robin) ═══ */
.gr-clasif{background:var(--surface);border:1px solid var(--line);border-radius:16px;
  padding:16px 18px;margin-bottom:16px}
.gr-clasif-h{display:flex;align-items:center;gap:9px;font-family:var(--font-data);
  font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-3);margin-bottom:12px}
.gr-clasif-h iconify-icon{color:var(--lime);font-size:15px}
.gr-clasif-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.gr-clasif-card{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.gr-clasif-gnom{display:flex;align-items:center;gap:9px;font-family:var(--font-display);
  font-weight:700;font-size:13.5px;color:var(--text);margin-bottom:9px}
.gr-clasif-badge{--gc:var(--lime);width:24px;height:24px;border-radius:8px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--font-data);font-size:11px;font-weight:700;
  background:color-mix(in srgb, var(--gc) 18%, var(--mix-base));color:var(--gc);
  border:1px solid color-mix(in srgb, var(--gc) 45%, transparent)}
.gr-clasif-row{display:flex;align-items:center;gap:9px;padding:6px 8px;border-radius:8px;
  font-size:13px;font-weight:600;color:var(--text-2)}
.gr-clasif-row.es-clasif{background:var(--lime-dim);color:var(--text)}
.gr-clasif-pos{font-family:var(--font-data);font-weight:700;color:var(--lime);min-width:16px}
.gr-clasif-nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gr-clasif-pts{font-family:var(--font-data);font-weight:800;color:var(--text)}
.gr-clasif-pts small{color:var(--text-3);font-weight:600}
.gr-clasif-empty{color:var(--text-3);font-size:12.5px;font-style:italic;padding:4px 2px}
/* PROYECC-2: por que va ahi / que le falta / quien amenaza. */
.gr-why{margin:8px 2px 4px;padding-top:8px;border-top:1px dashed var(--line)}
.gr-why-l{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;line-height:1.55;color:var(--text-2);margin-bottom:6px}
.gr-why-l:last-child{margin-bottom:0}
.gr-why-l iconify-icon{font-size:15px;flex:0 0 auto;margin-top:2px}
.gr-why-l b{color:var(--text);font-weight:700}
.gr-why-l.por iconify-icon{color:var(--lime)}
.gr-why-l.fal iconify-icon{color:#f5c451}
.gr-why-l.ojo iconify-icon{color:var(--text-3)}
/* CLASIFCOL-1 (2026-08-13, reportado por Roberto): estos verdes y rojos
   estaban pensados para fondo oscuro y sobre blanco casi no se leian. Ahora
   viajan en variables y el tema claro usa tonos mas oscuros. */
.gr-why{--ok-txt:#6ee7a8; --mal-txt:#f08a8a}
.gr-why.es-dentro .gr-why-l.fal{color:var(--ok-txt)}
.gr-why.es-dentro .gr-why-l.fal iconify-icon{color:var(--ok-txt)}
.gr-why.es-dentro .gr-why-l.fal b{color:var(--ok-txt)}
.gr-why.es-fuera .gr-why-l.fal iconify-icon{color:var(--mal-txt)}
/* CLASIFPOR-1: panel "como se decide" al pie de los clasificados. Toma el
   acento de la categoria (--lime cambia por rama: varonil, femenil, mixtos). */
.gr-porque{margin-top:15px;background:var(--lime-dim);border:1px solid var(--lime-line);border-radius:14px;padding:13px 16px}
/* CLASIFPOR-2: el encabezado es el boton del acordeon (cerrado por defecto). */
.gr-porque-h{display:flex;align-items:center;gap:8px;width:100%;background:none;border:0;padding:0;margin:0;
  cursor:pointer;text-align:left;-webkit-user-select:none;user-select:none;font-family:var(--font-data);font-size:11.5px;
  font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--lime)}
.gr-porque-h span{flex:1;min-width:0}
.gr-porque-h iconify-icon{font-size:16px;flex-shrink:0}
.gr-porque-h .chev{font-size:17px;transition:transform .22s ease;opacity:.75}
.gr-porque-h:hover .chev{opacity:1}
.gr-porque.abierto .gr-porque-h .chev{transform:rotate(180deg)}
.gr-porque-cuerpo{max-height:0;overflow:hidden;opacity:0;transition:max-height .3s ease,opacity .22s ease,margin-top .3s ease}
.gr-porque.abierto .gr-porque-cuerpo{max-height:600px;opacity:1;margin-top:13px}
.gr-porque-item{display:flex;gap:10px;align-items:flex-start;font-size:13px;line-height:1.55;color:var(--text-2);margin-bottom:8px}
.gr-porque-item .n{flex:0 0 20px;height:20px;border-radius:50%;background:var(--lime);color:var(--lime-ink);
  font-family:var(--font-data);font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;margin-top:1px}
.gr-porque-item b{color:var(--text);font-weight:700}
.gr-porque-nota{border-top:1px dashed var(--line);margin-top:12px;padding-top:10px;font-size:12px;line-height:1.6;color:var(--text-3)}

.gr-grid{display:flex;flex-direction:column;gap:18px}
.gr-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.gr-card-head{--gc:var(--lime);display:flex;align-items:center;gap:12px;
  padding:13px 18px;border-bottom:1px solid var(--line);
  background:color-mix(in srgb, var(--gc) 13%, var(--mix-base))!important}
.gr-card-letra{width:30px;height:30px;border-radius:9px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--font-display);font-weight:700;font-size:14px;
  background:var(--gc);color:var(--lime-ink)}
.gr-card-nom{font-family:var(--font-display);font-weight:700;font-size:15px;
  color:color-mix(in srgb, var(--gc) 65%, var(--mix-txt))}
.gr-card-meta{margin-left:auto;font-family:var(--font-data);font-size:11px;
  letter-spacing:.06em;color:color-mix(in srgb, var(--gc) 55%, #cfcfcf)}
.gr-card-body{padding:14px 18px 16px}
.gr-card-body table{width:100%;border-collapse:collapse;margin-bottom:6px}
.gr-card-body thead th{font-family:var(--font-data);font-size:9.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--text-3);font-weight:600;
  padding:7px 9px;text-align:center;border-bottom:1px solid var(--line-strong)}
.gr-card-body thead th.l,.gr-card-body thead th:nth-child(2){text-align:left}
.gr-card-body td{padding:10px 9px;text-align:center;font-family:var(--font-data);
  font-variant-numeric:tabular-nums;font-size:13px;color:var(--text-2);
  border-bottom:1px solid var(--line)}
.gr-card-body tr:last-child td{border-bottom:0}
.gr-card-body td.l{text-align:left;font-family:var(--font-ui)}
.gr-frow{transition:background .15s}
.gr-frow:hover td{background:rgba(255,255,255,.02)}
.gr-frow td.pos{font-weight:700;color:var(--text-3);width:34px}
.gr-frow.clasif td{background:var(--lime-dim)}
.gr-frow.clasif td.pos{color:var(--lime);font-weight:800}
.gr-frow.clasif td:first-child{border-radius:8px 0 0 8px}
.gr-frow.clasif td:last-child{border-radius:0 8px 8px 0}
.gr-nm-cell{display:flex;align-items:center;gap:8px}
.gr-nm-txt div{font-weight:700;color:var(--text);font-size:13.5px;line-height:1.3}
.gr-nm-txt div + div{color:var(--text-2);font-weight:600}
.gr-frow td:last-child{width:44px}
.gr-ronda-h,.gr-rh{display:flex;align-items:center;gap:8px;margin:14px 0 9px;
  font-family:var(--font-data);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-3)}
.gr-ronda-h iconify-icon,.gr-rh iconify-icon{color:var(--lime)}
@media (max-width:640px){.hide-sm{display:none}}

/* ═══ PASADA 3 · CARRUSEL DE PATROCINADORES (marquee carbón) ═══ */
.pub-patro{background:var(--surface);border:1px solid var(--line);border-radius:16px;
  padding:18px 0 16px;margin:22px 0 8px;text-align:center;overflow:hidden}
.pub-patro .pub-patro-t{margin-bottom:14px}
.pub-patro-pista{position:relative;display:flex;overflow:hidden;
  background:transparent;border:0;border-radius:0;padding:0;margin:0}
.pub-patro-pista::before,.pub-patro-pista::after{content:"";position:absolute;top:0;bottom:0;
  width:64px;z-index:2;pointer-events:none}
/* PATROFIX-1: en pantallas chicas los degradados de 64px se comian mas
   de un tercio del carril y los logos se veian cortados. */
@media (max-width:760px){
  .pub-patro-pista::before,.pub-patro-pista::after{width:26px}
}
.pub-patro-pista::before{left:0;background:linear-gradient(90deg,var(--surface),transparent)}
.pub-patro-pista::after{right:0;background:linear-gradient(270deg,var(--surface),transparent)}
/* PATROFIX-1 (2026-08-18): cada set mide AL MENOS lo que el carril.
   Antes usaba min-width:max-content: si los logos eran chicos (o la
   escala baja), un set quedaba mas angosto que el carril y, como cada
   set se desplaza el 100% de SU PROPIO ancho, el carrusel se quedaba
   sin contenido a la vista -> el hueco que se veia en el celular.
   Con min-width:100% dos sets siempre cubren el doble del carril, asi
   que nunca hay hueco; y space-around reparte los logos cuando sobra
   espacio, en vez de amontonarlos a la izquierda. */
.pub-patro-set{display:flex;align-items:center;gap:16px;padding:0 8px;
  flex-shrink:0;min-width:100%;flex-wrap:nowrap;justify-content:space-around;
  animation:cbPatro 32s linear infinite}
.pub-patro-pista:hover .pub-patro-set{animation-play-state:paused}
@keyframes cbPatro{to{transform:translateX(-100%)}}
.pub-patro.quieto .pub-patro-set{animation:none;min-width:0;width:100%;
  flex-wrap:wrap;justify-content:center}
.pub-patro.quieto .pub-patro-pista::before,.pub-patro.quieto .pub-patro-pista::after{display:none}
@media (prefers-reduced-motion:reduce){.pub-patro-set{animation:none;flex-wrap:wrap;justify-content:center;min-width:0;width:100%}}

/* ═══ PASADA 4 · MINIMAPA DEL CUADRO (composición + líneas lime) ═══ */
.rg-map{display:flex;gap:12px;align-items:flex-start;margin:6px 0 18px;
  overflow-x:auto;padding-bottom:6px}
.rg-mr{display:flex;flex-direction:column;gap:6px;align-items:stretch;
  min-width:82px;flex-shrink:0;text-decoration:none;margin:0;overflow:visible;padding:0}
.rg-mr-t{order:0;font-family:var(--font-data);font-size:9px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--text-3);text-align:center;margin:0;white-space:nowrap}
.rg-mr.on .rg-mr-t{color:var(--lime);font-weight:700}
.rg-mr-box{display:flex;flex-direction:column;gap:5px;background:var(--surface-2);
  border:1px solid var(--line);border-radius:9px;padding:9px 10px;
  transition:border-color .15s,transform .12s}
.rg-mr:hover .rg-mr-box{border-color:var(--lime-line);transform:translateY(-2px)}
.rg-mr-sk{display:flex;flex-direction:column;gap:2.5px;background:transparent;height:auto;border-radius:0}
.rg-mr-sk span{display:block;height:2.5px;border-radius:2px;background:color-mix(in srgb, var(--lime) 32%, transparent)}
.rg-mr:hover .rg-mr-sk span{background:color-mix(in srgb, var(--lime) 50%, transparent)}
.rg-mr.on .rg-mr-box{background:var(--lime);border-color:var(--lime)}
.rg-mr.on .rg-mr-sk span{background:rgba(19,22,0,.5)}

/* píldoras de ronda: su clase real es .on (+ vecinas .next) */
.rg-ct.on{background:var(--lime);border-color:var(--lime);color:var(--lime-ink)}
.rg-ct.next{color:var(--text-2)}
.rg-arrow.off{opacity:.35;pointer-events:none}

/* ═══ PASADA 5 · minimapa a lo ancho (justificado horizontal) ═══ */
.rg-map{gap:14px;width:100%}
.rg-mr{flex:1 1 0;min-width:96px}

/* ═══ PASADA 6 · píldoras de ronda a lo ancho + estados explícitos ═══ */
.rg-nav{width:100%;gap:10px}
.rg-nav .rg-ct{flex:1 1 0;display:flex;align-items:center;justify-content:center;
  text-align:center;background:transparent;transition:background .15s,color .15s,border-color .15s}
.rg-nav .rg-arrow{flex:0 0 auto}
.rg-ct.prev,.rg-ct.next{background:transparent;color:var(--text-2);border-color:var(--line-strong)}
.rg-ct.prev:hover,.rg-ct.next:hover{color:var(--text);border-color:var(--text-3)}
.rg-ct.on{background:var(--lime);border-color:var(--lime);color:var(--lime-ink)}

/* ╔═══════════════════════════════════════════════════════════════╗
   ║  PASADA 7 · CAPÍTULO MÓVIL — swipe, dots y adiós scrollbars   ║
   ╚═══════════════════════════════════════════════════════════════╝ */

/* ── scrollbars invisibles en pistas horizontales (el scroll sigue vivo) ── */
.rg-map,.pub-dias,.pubw-scroll,.rg-grid,.rg-mr-bo{
  scrollbar-width:none;-ms-overflow-style:none}
.rg-map::-webkit-scrollbar,.pub-dias::-webkit-scrollbar,
.pubw-scroll::-webkit-scrollbar,.rg-grid::-webkit-scrollbar{display:none}

/* ── widget de páginas deslizables (pubw): pista + dots ── */
.pubw-wrap{position:relative}
.pubw-scroll{display:flex;gap:14px;overflow-x:auto;
  scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:4px}
.pubw-scroll .brk-col{flex:0 0 100%;min-width:100%;scroll-snap-align:start}
.pubw-dots{display:flex;gap:7px;justify-content:center;margin:10px 0 2px}
.pubw-dots button{width:8px;height:8px;border-radius:999px;border:0;cursor:pointer;
  background:var(--line-strong);padding:0;transition:width .2s,background .2s}
.pubw-dots button.on{width:22px;background:var(--lime)}

/* ── animación de página del bracket (el swipe navega con salida) ── */
.rg-grid{transition:transform .15s ease-in,opacity .15s ease-in}
html.rg-out-l .rg-grid{transform:translateX(-44px);opacity:0}
html.rg-out-r .rg-grid{transform:translateX(44px);opacity:0}
.rg-cell.entra{animation:cbEntraCol .22s ease-out}
@keyframes cbEntraCol{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:none}}

/* ── BRACKET EN MÓVIL: una ronda a la vez, codos Roland Garros ── */
@media (max-width:900px){
  .rg-map{display:none}                      /* el minimapa cede el paso a pills+swipe */
  .rg-grid{display:flex!important;flex-direction:column;gap:12px;
    position:relative;padding-right:28px;overflow:visible}
  .rg-cell{display:none}
  .rg-cell.colact{display:block}
  .rg-cell .rg-instub{display:none}
  .rg-mconn{position:absolute;right:6px;width:18px;
    border:2px solid var(--lime-line);border-left:0;
    border-radius:0 12px 12px 0;pointer-events:none}
  .rg-nav{position:sticky;top:0;z-index:5;background:var(--bg);
    padding:8px 0;margin-top:0}
  .rg-ct{font-size:12px;padding:8px 10px}
}

/* ── afinación móvil general del subdominio ── */
@media (max-width:760px){
  .pub-hero h1{font-size:24px}
  .scv-p .nm{font-size:13.5px}
  .scv-set .c{font-size:14px}
  .pub-tabs{width:100%}
  .pub-tabs a{flex:1;justify-content:center}
  .pub-back-btn,.pub-pdf-btn,.pub-seed-btn{padding:8px 13px}
  .gr-card-body{padding:12px 12px 14px}
  .gr-card-body td{padding:9px 6px;font-size:12.5px}
  .pub-patro-set img{height:calc(52px * var(--pesc,1))}
  .jl-row{padding:10px 12px;gap:10px}
  .jl-chips .jl-chip{display:none}
  .jl-chips .jl-chip:first-child{display:inline-flex}
}

/* ═══ PASADA 8 · móvil: tarjetas del cuadro UNIFORMES ═══ */
@media (max-width:900px){
  .rg-grid{padding-left:0}
  .rg-cell.colact{display:block;width:100%!important;max-width:none!important;
    margin:0 0 0 0!important;padding:0!important;transform:none!important;left:auto!important}
  .rg-cell.colact .rg-match{width:100%!important;margin:0!important;transform:none!important}
  .rg-cell.colact .rg-instub{display:none!important}
}

/* ═══ PASADA 9 · píldoras de ronda: enlaces compactos en móvil ═══ */
.rg-ct{white-space:nowrap;text-decoration:none;cursor:pointer}
.rg-ct:empty{display:none}
a.rg-ct.on{pointer-events:none}
@media (max-width:900px){
  .rg-nav{justify-content:center;gap:8px}
  .rg-nav .rg-ct{flex:0 1 auto;font-size:11.5px;padding:7px 14px}
  .rg-nav .rg-arrow{width:32px;height:32px}
}

/* ═══ PASADA 10 · nav de rondas: discreto en móvil + exorcismo del destello ═══ */
.rg-ct,.rg-ct::before,.rg-ct::after{box-shadow:none!important}
.rg-ct::before,.rg-ct::after{content:none!important;display:none!important}
.rg-ct:focus,.rg-ct:focus-visible{outline:none!important}
.rg-arrow:focus,.rg-arrow:focus-visible{outline:none!important}
@media (max-width:900px){
  .rg-nav{flex-wrap:nowrap;justify-content:center;gap:6px;
    overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}
  .rg-nav::-webkit-scrollbar{display:none}
  .rg-nav .rg-ct{font-size:10.5px;padding:6px 11px;letter-spacing:.02em;flex-shrink:0}
  .rg-nav .rg-arrow{width:28px;height:28px;flex-shrink:0}
  .rg-nav .rg-arrow iconify-icon{font-size:13px}
}

/* ═══ PASADA 11 · ACCIONES: el menú respira (antídoto del recorte) ═══ */
/* Los brillos del héroe son background (el radio los recorta solo):
   overflow visible para que el menú Acciones salga, y capa alta para
   que se pinte SOBRE el contenido que sigue. */
.pub-hero{overflow:visible!important;z-index:30}
.pub-hero.compacto{overflow:visible!important}
.pub-acc{z-index:40}
.pub-acc-menu,.pub-acc-submenu{z-index:80}
/* la fila de navegación también hospeda menús (sugerencias del buscador) */
.pub-navrow{position:relative;z-index:25}
/* FICHA-T2 (2026-08-02): la fila de la Ficha es un encabezado suelto, no la
   barra de pestanas, asi que pide un poco mas de aire abajo que los 14px de la
   fila normal. Solo esta fila. */
.pub-navrow-ficha{margin-bottom:22px}
.pub-nav-sug{z-index:70}
/* el anillo de foco no aplica al tocar el botón (conserva el de teclado en lo demás) */
.pub-acc-btn:focus,.pub-acc-btn:focus-visible{outline:none!important}

/* ═══ PASADA 12 · menú Acciones: FIXED (el JS manda las coordenadas) ═══ */
.pub-acc-menu{
  position:fixed;top:auto;right:auto;left:auto;   /* el JS inyecta top/right */
  max-height:calc(100vh - 90px);overflow-y:auto;
  scrollbar-width:none;-ms-overflow-style:none;
}
.pub-acc-menu::-webkit-scrollbar{display:none}
/* el submenú es ACORDEÓN adentro del menú (no un flotante aparte) */
.pub-acc-sub{position:relative;border-top:1px solid var(--line);margin-top:5px;padding-top:5px}
.pub-acc-submenu{
  position:static;display:none;min-width:0;
  margin:2px 0 6px 14px;padding:4px 0 4px 10px;
  background:transparent;border:0;border-left:2px solid var(--lime-line);
  border-radius:0;box-shadow:none;
}
.pub-acc-sub.abierto > .pub-acc-submenu{display:block}
.pub-acc-sub.abierto > .pub-acc-parent{color:var(--lime)}
.pub-acc-sub.abierto > .pub-acc-parent .pub-acc-caret{transform:rotate(90deg);color:var(--lime)}
.pub-acc-caret{transition:transform .15s ease-out}
.pub-acc-subhead{padding:5px 8px 4px}

/* ═══ PASADA 12 · menú Acciones: el contrato de TU JS ═══ */
/* El JS posiciona con coordenadas de VIEWPORT (top/right inline) → fixed. */
.pub-acc-menu{position:fixed;top:auto;left:auto;right:auto;z-index:120;
  max-height:calc(100vh - 90px);overflow-y:auto;overscroll-behavior:contain;
  scrollbar-width:none}
.pub-acc-menu::-webkit-scrollbar{display:none}
/* El submenú es ACORDEÓN dentro del menú: en flujo, no flotante. */
.pub-acc-submenu{position:static;box-shadow:none;border:0;border-radius:0;
  min-width:0;padding:2px 0 4px 10px;margin:0}
.pub-acc-sub{border-top:1px solid var(--line);margin-top:4px;padding-top:4px}
.pub-acc-sub .pub-acc-submenu{display:none}
.pub-acc-sub.abierto .pub-acc-submenu,
.pub-acc-sub.open .pub-acc-submenu,
.pub-acc-parent[aria-expanded="true"] + .pub-acc-submenu{display:block}
.pub-acc-parent[aria-expanded="true"] .pub-acc-caret{transform:rotate(90deg)}
.pub-acc-caret{transition:transform .15s ease-out}

/* ═══ PASADA 13 · v5.11 · bordes lime en la barra de navegación ═══ */
/* Reposo = var(--lime-line) 35%. Hover = var(--lime) sólido. */
/* Editado in situ arriba: .pub-tabs .btn-myballs-outline, .pub-back-btn/.pub-pdf-btn/ */
/* .pub-seed-btn/.pub-rolbtn y .pub-buscar input[type=search]. Sin reglas nuevas. */

/* ═══ PASADA 14 · v5.13 · fila de navegación sin pestañas ═══ */
/* A nivel torneo la barra queda solo con el buscador: que ocupe el ancho
   en vez de flotar pegado a la derecha con la fila vacía. */
.pub-navrow.solo-buscar .pub-buscar{margin-left:0;flex:1}
.pub-navrow.solo-buscar .pub-buscar-wrap{flex:1}
.pub-navrow.solo-buscar .pub-buscar input[type=search]{width:100%}

/* ═══ PASADA 15 · v5.16 · la piel del BUSCADOR ═══ */
/* .pub-hitbar, .pub-hit-ring y .pub-hit-item no tenían ninguna regla:
   el laboratorio nunca rindió una vista con ?q= puesto. */

/* barra "Mostrando solo los N partidos de X" */
.pub-hitbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:10px 14px;border-radius:12px;margin-bottom:14px;
  background:var(--lime-dim);border:1px solid var(--lime-line);
  font-family:var(--font-ui);font-size:13px;font-weight:600;color:var(--text)}
.pub-hitbar iconify-icon{color:var(--lime);font-size:16px;flex-shrink:0}
.pub-hitbar a{margin-left:auto;flex-shrink:0;
  font-family:var(--font-data);font-size:9.5px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--lime);
  padding:4px 11px;border-radius:999px;
  background:rgba(0,0,0,.25);border:1px solid var(--lime-line);
  transition:border-color .15s}
.pub-hitbar a:hover{border-color:var(--lime)}

/* tarjeta/partido que coincide con la búsqueda */
.scv.pub-hit-ring,.rg-match.pub-hit-ring{border-color:var(--lime-line)}

/* lista de coincidencias dentro del cuadro */
.pub-hit-item{display:flex;align-items:center;gap:10px;
  padding:10px 13px;border-radius:10px;margin-bottom:8px;
  background:var(--surface-2);border:1px solid var(--line);
  color:var(--text-2);font-family:var(--font-ui);font-size:13px;
  transition:border-color .15s,transform .12s}
.pub-hit-item:hover{border-color:var(--lime-line);transform:translateY(-2px)}
.pub-hit-item:active{transform:scale(.97)}
.pub-hit-item .tr{color:var(--lime);font-size:16px;flex-shrink:0}
.pub-hit-item .rd{font-family:var(--font-data);font-size:9.5px;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;color:var(--lime);
  padding:3px 9px;border-radius:999px;background:var(--lime-dim);flex-shrink:0}
.pub-hit-item .det{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pub-hit-item .go{color:var(--text-3);font-size:16px;flex-shrink:0}
.pub-hit-item:hover .go{color:var(--lime)}

/* ═══ PASADA 16 · v5.17 · pestañas en UNA sola tira ═══ */
/* Antes envolvían y la última ("Jugadores") caía sola a un renglón con
   flex:1, estirada a todo lo ancho: pesaba mucho más que sus hermanas.
   Mismo patrón que .pub-dias y las píldoras de ronda: se desliza. */
@media (max-width:900px){
  .pub-tabs{flex:1 1 100%;width:100%;min-width:0;flex-wrap:nowrap;
    overflow-x:auto;overscroll-behavior-x:contain;padding-bottom:2px;
    scroll-snap-type:x proximity;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .pub-tabs::-webkit-scrollbar{display:none}
  .pub-tabs .btn-myballs-outline,.pub-tabs .btn-myballs-primary{
    flex:0 0 auto;white-space:nowrap;scroll-snap-align:start}
}

/* ═══ PASADA 17 · v5.18 · héroe centrado en teléfono ═══ */
/* Acotado a mano y NO con text-align en .pub-hero: eso se heredaría
   hacia el menú Acciones, que cuelga dentro del héroe. */
@media (max-width:760px){
  .pub-hero h1{text-align:center}
  .pub-hero-sub{text-align:center}
  .pub-hero-bot{justify-content:center}
  .pub-hero-bot .cod,.pub-hero-bot .pub-cat-pill{text-align:center;justify-content:center}
}

/* ═══ PASADA 18 · v5.19 · rejillas sin hueco ═══ */
/* auto-fill crea TODAS las columnas que quepan, aunque queden vacías, y como
   son 1fr esa columna fantasma se lleva su parte del ancho. auto-fit las
   colapsa a cero y las tarjetas reales se reparten el renglón completo.
   Con 3 grupos en 4 columnas (o 2 categorías en 3) el hueco era visible. */
.gr-clasif-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.pub-catgrid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}

/* ═══ PASADA 19 · v5.20 · aire en la fase de grupos ═══ */
/* .gr-matches no tenía NINGUNA regla: las tarjetas de partido se apilaban
   en flujo normal pegadas borde con borde. Se les da margen inferior en vez
   de volver el contenedor flex, para que el margen colapse con el del
   encabezado de ronda y no se sumen. */
.gr-clasif{margin-bottom:24px}
.gr-ronda-h,.gr-rh{margin:22px 0 12px}
.gr-matches .scv{margin-bottom:10px}
.gr-matches .scv:last-child{margin-bottom:0}

/* ══ RONDACOLOR-1 (2026-08-05, pedido de Roberto) ══
   Cada ronda, su color. El color entra por --rc desde el HTML, asi que esta
   hoja no sabe -ni le importa- cuantas rondas hay.
   Se pinta el RIEL de la izquierda y la etiqueta, no el fondo de las tarjetas:
   las tarjetas tienen que seguir viendose igual entre si para poder comparar
   dos partidos de un vistazo. El color separa bloques; no disfraza partidos. */
.gr-ronda{ position:relative; padding-left:16px; margin-bottom:18px; }
.gr-ronda::before{ content:''; position:absolute; left:0; top:6px; bottom:4px;
  width:3px; border-radius:3px; background:var(--rnd); opacity:.55; }
.gr-ronda:last-child{ margin-bottom:0; }
.gr-ronda .gr-ronda-h{ margin-top:0; color:var(--rnd); }
.gr-ronda .gr-ronda-h iconify-icon{ color:var(--rnd); }
/* La primera ronda no necesita separarse de nada por arriba */
.gr-ronda:first-child .gr-ronda-h{ margin-top:4px; }

/* ══ RONDACOLOR-2 (2026-08-05, pedido de Roberto) ══
   La variable se llama --rnd y no --rc a proposito: --rc YA existe en esta hoja
   y lo gobiernan el selector de categorias (.lg-*) y los bloques de rama
   (.pub-cats-bloque), con el color de la RAMA. Hoy no se estorban porque viven
   en ramas distintas del arbol, pero las variables de CSS se heredan: el dia que
   uno de esos bloques quedara dentro de otro, los colores se cambiarian solos y
   nadie entenderia por que. Un nombre propio cuesta nada.
   Los partidos que salen al desplegar a un jugador, cada uno del color de su
   ronda: riel a la izquierda y la etiqueta de la ronda tenida.
   Se tine la ETIQUETA y el riel, no la tarjeta entera: las tarjetas tienen que
   seguir siendo comparables entre si. Los dos tonos llegan ya hechos desde PHP
   (--rc y --rcd) para no depender de color-mix(). */
.jl-mp{ position:relative; padding-left:14px; }
.jl-mp::before{ content:''; position:absolute; left:0; top:5px; bottom:5px;
  width:3px; border-radius:3px; background:var(--rnd); opacity:.6; }
/* La etiqueta de la ronda es .r-pill a secas en este contexto (no
   .r-pill-suave, que es la que usa la seccion de Horarios). Lo vi midiendo el
   HTML servido: apuntar a la clase equivocada dejaba el riel de color y la
   etiqueta gris, a medias. Se excluye la de la cancha, que tiene su verde. */
.jl-mp .scv-meta .r-pill:not(.r-pill-cancha){ background:var(--rnd-dim); color:var(--rnd); }

/* ═══ PASADA 20 · v5.21 · aire entre el thead y el tbody ═══ */
/* La línea separadora era el border-bottom del th. Con border-collapse:collapse
   esa línea vive pegada al borde inferior de la celda, así que no se le puede
   meter espacio por debajo sin perderla; y padding-top en la primera fila no
   sirve porque esa fila lleva fondo (.clasif) y el fondo crecería con ella.
   Solución: se quita el borde y la línea se dibuja como fondo de 1px colocado
   9px por encima del borde inferior. Queda la línea Y el aire. */
.gr-card-body thead th{padding-bottom:16px;border-bottom:0;
  background-image:linear-gradient(var(--line-strong),var(--line-strong));
  background-repeat:no-repeat;background-size:100% 1px;
  background-position:0 calc(100% - 9px)}

/* ═══ PASADA 21 · v5.24 · cobertura del átomo .scv + desplegable de jugadores ═══ */
/* Cuatro clases del átomo de partido no tenían regla. Se notaban ya hoy:
   el "RET." suelto arriba a la derecha en horarios es .scv-txt sin estilo. */

/* hora de un partido aún no jugado: ocupa el lugar de los sets */
/* HORAFUERTE-1 (2026-08-04, pedido de Roberto): la hora tenia el MISMO gris y
   casi el mismo peso que los nombres, asi que flotaba a la derecha sin leerse
   como un dato aparte. Ahora es blanca, mas grande y se apoya en una placa
   tenue: en una tarjeta sin marcador, la hora es la respuesta.
   El azulejo es apenas un 6% de blanco; con mas, competia con el fondo lima
   del ganador y la tarjeta se volvia ruidosa.
   Los dos estados especiales conservan su senal: "EN JUEGO" sigue en el color
   de la rama y "sin hora" sigue apagado. */
.scv-hora{display:flex;align-items:center;justify-content:center;min-width:46px;
  align-self:center;padding:7px 11px;border-radius:10px;
  /* HORAVERDE-1 (2026-08-05, pedido de Roberto): la hora toma el verde de la
     pastilla de la cancha (--turq), no el blanco. Se eligio --turq y no --lime
     porque --lime se re-tine por rama -azul en varonil, rosa en femenil, verde
     agua en mixtos- y la hora habria cambiado de color segun la categoria que
     estuvieras viendo. --turq es el mismo verde en todo el sitio.
     Ademas deja libre el color de rama para "EN JUEGO", que es lo unico que
     debe gritar mas que la hora. */
  background:var(--turq-dim);
  font-family:var(--font-data);font-variant-numeric:tabular-nums;
  font-size:16px;font-weight:800;color:var(--turq);letter-spacing:.2px}
.scv-hora.tba{color:var(--text-3);background:transparent;font-weight:700}
/* HORAVERDE-1b: "EN JUEGO" pasa a SOLIDO, no a texto de color.
   Antes se distinguia solo por el tono, y en la rama de Mixtos el color de
   rama es #99E1D9, EXACTAMENTE el mismo verde que ahora usa la hora normal:
   un partido en juego se habria visto igual que uno por jugar en todas las
   categorias mixtas, que son cuatro de las nueve de Caritas. Invertido -relleno
   del color de rama y texto oscuro- se distingue por PESO, no por matiz, y
   funciona igual en las tres ramas. Cada rama ya trae su propio --lime-ink. */
.scv-hora.live{color:var(--lime-ink);background:var(--lime);font-weight:900}

/* nota del marcador: RET. / W.O. */
.scv-txt{display:flex;align-items:center;padding-left:2px;
  font-family:var(--font-data);font-size:9.5px;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;color:var(--loss)}

/* pie de programación: cuándo y dónde se juega */
.scv-prog{display:flex;align-items:center;gap:7px;
  margin-top:11px;padding-top:9px;border-top:1px solid var(--line);
  font-family:var(--font-data);font-size:10.5px;letter-spacing:.06em;
  color:var(--text-3)}
.scv-prog iconify-icon{color:var(--lime);font-size:13px;flex-shrink:0}

/* lado todavía sin definir (Por definir / BYE) */
/* TBDCHICO-3 (2026-08-06, pedido de Roberto): el BYE y el "Por definir" de la
   tarjeta se perdian en gris. Ahora llevan el MISMO dorado que ya estreno el
   cuadro (TBDCHICO-2), con la misma letra de datos: donde sea que aparezcan,
   se leen igual. */
.scv-p.tbd .nm{font-family:var(--font-data);font-size:10px;letter-spacing:.06em;
  font-weight:700;color:var(--gold);font-style:normal;text-transform:uppercase}
/* VSPUB-1 (2026-08-05, pedido de Roberto): el separador "vs" entre las dos
   parejas. Misma pieza que en el admin, con los tonos de esta piel: la raya usa
   --line, que es la linea de toda la casa, y el texto --text-3.
   Los margenes son negativos a proposito: .scv-names ya reparte 4 px de hueco
   entre sus hijos, y sin recortarlos el separador quedaba flotando demasiado
   lejos de los dos nombres a los que separa. */
.scv-vs{display:flex;align-items:center;gap:8px;margin:-1px 10px}
/* VSPUB-2: la misma pieza dentro de la tarjeta compacta de la llave */
.rg-vs{margin:1px 12px}
.scv-vs::before,.scv-vs::after{content:'';flex:1;height:1px;background:var(--line)}
.scv-vs span{font-family:var(--font-data);font-size:9px;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;color:var(--text-3)}

/* el desplegable de jugadores ahora hospeda tarjetas .scv */
.jl-bd .gr-bd-wrap{gap:8px}
.jl-bd .scv{background:var(--surface-3)}

/* ═══ PASADA 22 · v5.25 · patrocinadores sin título y 50% más grandes ═══ */
/* Sube la ALTURA y también el max-width: con object-fit:contain, si solo
   creciera la altura los logos anchos se quedarían topados en 150px y no se
   verían más grandes. Los dos factores van x1.5. */
.pub-patro-set img{height:calc(96px * var(--pesc,1));max-width:calc(225px * var(--pesc,1))}
/* Sin título, el aire de arriba y el de abajo se emparejan. */
.pub-patro{padding:16px 0}
@media (max-width:760px){
  .pub-patro-set img{height:calc(78px * var(--pesc,1));max-width:calc(190px * var(--pesc,1))}
}

/* ═══ PASADA 23 · v5.27 · fichas de fecha discretas ═══ */
/* Alto ≈ 28px en vez de ≈ 36px. Un punto por encima de la cápsula
   ILUMINADA a propósito: esa es una etiqueta pasiva y estas son botones
   que se pican con el dedo. Baja el bulto una cuarta parte y el número
   del día sigue leyendose de un vistazo. */
.pub-dia{padding:6px 12px;gap:5px}
.pub-dia .ds,.pub-dia .dm{font-size:9.5px}
.pub-dia .dn{font-size:13px}
.pub-dia-todos .dtodos{font-size:10px}
/* "Todos" tiene UN solo texto. Con align-items:baseline heredado y la
   píldora estirada a la altura de sus hermanas, ese texto quedaba pegado
   arriba. Las fichas de día SÍ necesitan baseline (JUE/JUL se apoyan en la
   misma línea que el número grande), así que se centra solo esta. */
.pub-dia-todos{align-items:center}

/* El distintivo del día de HOY no tenía NINGUNA regla: .dh salía como texto
   pelado y .eshoy no hacía nada. No se nota en Amigos Racquet porque ya
   terminó, pero aparece en cuanto un día del torneo sea el día actual. */
.pub-dia.eshoy{border-color:color-mix(in srgb, var(--dc) 70%, transparent)}
.pub-dia .dh{align-self:center;margin-left:2px;padding:1px 5px;border-radius:999px;
  font-size:8px;font-weight:700;letter-spacing:.1em;
  background:color-mix(in srgb, var(--dc) 30%, transparent);
  color:color-mix(in srgb, var(--dc) 88%, var(--mix-txt))}
.pub-dia.on .dh{background:rgba(0,0,0,.22);color:var(--lime-ink)}

/* ═══ PASADA 24 · v5.29 · barra de navegación al tamaño de las fechas ═══ */
/* Todo el renglón queda en ~31px de alto, igual que las fichas de fecha.
   Va FUERA de media query a propósito: así vence también el padding que el
   bloque de 760px le ponía a Regresar/PDF, y el tamaño es uno solo en
   todos los anchos. */
.pub-tabs .btn-myballs-outline,.pub-tabs .btn-myballs-primary{
  padding:6px 14px;font-size:12.5px;gap:6px}
/* .pub-rolbtn NO entra: ese vive en el héroe y debe seguir empatando con
   la píldora de la fecha que trae al lado. */
.pub-back-btn,.pub-pdf-btn,.pub-seed-btn{padding:6px 13px;font-size:12px;gap:6px}
/* El buscador comparte renglón con las pestañas: si se queda en 40px la
   fila se ve despareja. */
.pub-buscar input[type=search]{height:32px;padding:0 14px;font-size:12.5px}
.pub-buscar button{height:32px;padding:0 16px;font-size:12.5px}

/* ═══ PASADA 25 · v5.31 · barra secundaria centrada en teléfono ═══ */
/* Mismo corte de 760px que el héroe (PASADA 17): en el teléfono se centra
   todo junto. Arriba de 760px se queda alineada a la izquierda. */
@media (max-width:760px){
  .pub-secbar{justify-content:center}
}

/* ═══ PASADA 26 · v5.32 · el botón Buscar, centrado de verdad ═══ */
/* Un button con altura fija centra su texto solo... hasta que el padding no
   cabe dentro de esa altura. Entonces la caja de contenido se queda corta y
   la línea de texto se desborda hacia abajo. Con inline-flex el centrado es
   explícito y ya no depende de que padding y height cuadren. */
.pub-buscar button{display:inline-flex;align-items:center;justify-content:center;
  line-height:1;flex-shrink:0}

/* ═══ PASADA 27 · v5.34 · el encabezado de fecha, del color de su ficha ═══ */
/* Choque de cascada: .dia1..8 declaran --dc en la línea 735 y .pub-dia-h
   vuelve a declararlo (var(--lime)) en la 739. Misma especificidad 0,1,0 y
   .pub-dia-h va después, así que ganaba y TODOS los encabezados salían lime,
   aunque el PHP sí les ponía su clase diaN correcta.
   Se reasigna con 0,2,0 para que el color del día mande. Los .pub-dia (las
   fichas) nunca tuvieron el problema: su --dc se declara en la 722, ANTES. */
.pub-dia-h.dia1{--dc:#99E1D9}
.pub-dia-h.dia2{--dc:#C6FF34}
.pub-dia-h.dia3{--dc:#FFB55E}
.pub-dia-h.dia4{--dc:#8AB8FF}
.pub-dia-h.dia5{--dc:#FF9ECB}
.pub-dia-h.dia6{--dc:#B79CFF}
.pub-dia-h.dia7{--dc:#FF8A7A}
.pub-dia-h.dia8{--dc:#7ED957}

/* ═══ PASADA 28 · v5.35 · el acordeón de la lista de inscritos ═══ */
/* El JS ya hacía su parte: quita .abierto cuando el buscador está vacío y la
   pone en las categorías con coincidencias. La hoja nunca implementó esa
   clase, así que .lg-cuerpo estaba siempre visible: todo nacía abierto y el
   clic no hacía nada. */
.lg-cat .lg-cuerpo{display:none}
.lg-cat.abierto .lg-cuerpo{display:flex}

/* Encabezado de categoría: una sola fila, no dos. */
.lg-cab{flex-wrap:nowrap;margin-bottom:0;padding:9px 2px;cursor:pointer}
.lg-cat.abierto .lg-cab{margin-bottom:8px}
.lg-cab .cod{flex-shrink:0;padding:3px 8px;border-radius:6px;
  font-family:var(--font-data);font-size:9.5px;font-weight:700;letter-spacing:.1em;
  background:var(--lime-dim);color:var(--lime)}
.lg-cab .nm{flex:1;min-width:0;font-size:13.5px;font-weight:700;color:var(--text);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lg-cab .ct{flex-shrink:0;font-size:10px}
.lg-cab .fl{flex-shrink:0;color:var(--text-3);font-size:16px;transition:transform .15s}
.lg-cat.abierto .lg-cab .fl{transform:rotate(180deg);color:var(--lime)}
.lg-cab:hover .nm{color:var(--lime)}

/* Rama (Varonil / Femenil / Mixtos) y filas de parejas. */
.lg-rama .nn{font-size:11px}
.lg-par .num{flex-shrink:0;min-width:18px;
  font-family:var(--font-data);font-size:11px;color:var(--text-3)}
.lg-par .jj{flex:1;min-width:0;font-family:var(--font-ui);font-size:13px;
  font-weight:600;color:var(--text-2)}
.lg-par .jj b{font-weight:700;color:var(--text)}
.lg-par .jj .sep{margin:0 5px;color:var(--text-3);font-weight:400}

/* ═══ PASADA 29 · v5.36 · encabezado del modal de inscritos ═══ */
/* Choque de nombres: .mb-sh en esta hoja (línea 676, heredada de player.css)
   es un BLOQUE grande con padding 34x28 y texto centrado. El markup del modal
   se copió de torneos.myballs.com.mx, donde .mb-sh significa "botón de
   compartir". Aquí los dos botones heredaban el bloque y reventaban.
   Se acota a .mb-sh-grupo .mb-sh (0,2,0) para no tocar el otro componente,
   que sigue usándose en player. */
.mb-sh-grupo{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.mb-sh-grupo .mb-sh{flex:1 1 auto;
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  margin:0;padding:8px 14px;border-radius:999px;text-align:center;
  background:transparent;border:1px solid var(--lime-line);
  font-family:var(--font-ui);font-weight:700;font-size:11.5px;
  color:var(--text-2);text-decoration:none;cursor:pointer;
  transition:border-color .15s,color .15s,transform .12s}
.mb-sh-grupo .mb-sh:hover{border-color:var(--lime);color:var(--text)}
.mb-sh-grupo .mb-sh:active{transform:scale(.97)}
.mb-sh-grupo .mb-sh iconify-icon{flex-shrink:0;color:var(--lime);font-size:15px}
.mb-sh-grupo .mb-sh .mb-sh-txt{margin:0;max-width:none;line-height:1.2;
  font-size:11.5px;color:inherit;white-space:nowrap}

/* El buscador del modal: la lupa no tenía regla y se estiraba a lo alto. */
.lg-buscar{align-items:center}
.lg-buscar iconify-icon{flex-shrink:0;color:var(--text-3);font-size:16px}

/* ═══ PASADA 30 · v5.37 · rediseno del modal de inscritos ═══ */

/* La cruz de cerrar nunca tuvo centrado: el glifo se iba a la esquina
   superior izquierda de su circulo de 32px. */
.pub-modal-x{display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--font-ui);font-size:19px;line-height:1;
  transition:border-color .15s,color .15s}
.pub-modal-x:hover{border-color:var(--lime);color:var(--lime)}

/* El modal era de 420px y no tenía alto maximo: con 10 categorias crecia mas
   que la pantalla y se cortaba. Ahora es mas ancho y el CUERPO se desplaza,
   dejando fijos el titulo y los botones. */
#pubInscritos .pub-modal-card{max-width:660px;padding:20px 20px 18px;
  display:flex;flex-direction:column;max-height:calc(100vh - 40px)}
#pubInscritos .pub-modal-body{flex:1;min-height:0;overflow-y:auto;
  scrollbar-width:none}
#pubInscritos .pub-modal-body::-webkit-scrollbar{display:none}
#pubInscritos .lg-buscar{position:sticky;top:0;z-index:2;
  background:var(--surface-2);padding-bottom:10px;margin-bottom:12px}

/* Rama: ya no es una tarjeta, es un encabezado con su color y su subrayado,
   con el conteo empujado a la derecha. --rc lo pone el PHP en .lg-bloque. */
.lg-bloque{background:transparent;border:0;border-radius:0;padding:0;margin-bottom:18px}
.lg-bloque:last-child{margin-bottom:0}
.lg-rama{display:flex;align-items:center;gap:9px;padding:0 2px 8px;margin-bottom:10px;
  border-bottom:2px solid color-mix(in srgb, var(--rc) 45%, transparent);
  font-family:var(--font-data);font-size:11px;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;
  color:color-mix(in srgb, var(--rc) 85%, var(--mix-txt))}
.lg-rama iconify-icon{flex-shrink:0;color:var(--rc);font-size:15px}
.lg-rama .tt{color:inherit}
.lg-rama .nn{margin-left:auto;flex-shrink:0;padding:3px 9px;border-radius:999px;
  font-size:9.5px;letter-spacing:.1em;
  background:color-mix(in srgb, var(--rc) 16%, var(--mix-base));
  color:color-mix(in srgb, var(--rc) 78%, var(--mix-txt))}

/* Cada categoria, su propia tarjeta, teñida con el color de su rama. */
.lg-cat{background:var(--surface);border:1px solid var(--line);border-radius:12px;
  padding:0 14px;margin-bottom:8px;transition:border-color .15s}
.lg-cat:last-child{margin-bottom:0}
.lg-cat:hover{border-color:color-mix(in srgb, var(--rc) 40%, transparent)}
.lg-cat.abierto{border-color:color-mix(in srgb, var(--rc) 50%, transparent)}
.lg-cab{padding:11px 0}
.lg-cab .cod{background:color-mix(in srgb, var(--rc) 18%, var(--mix-base));
  color:color-mix(in srgb, var(--rc) 82%, var(--mix-txt))}
.lg-cab .ct{padding:3px 9px;border-radius:999px;
  background:rgba(255,255,255,.04);color:var(--text-3)}
.lg-cat.abierto .lg-cab .fl{color:var(--rc)}
.lg-cuerpo{padding-bottom:10px}
.lg-par{padding:7px 2px}

/* ═══ PASADA 31 · v5.38 · el buscador del modal ═══ */
/* Tres cosas: la lupa flotaba FUERA del campo; el fondo del input era
   --surface-2, el mismo del panel del modal, asi que no se distinguia de el;
   y el foco lo pintaba la regla global :focus-visible (linea 53, heredada de
   player.css) con un anillo lime de 2px separado 3px, que en un campo ancho
   se ve como un marco encendido. */
.lg-buscar{position:relative;gap:0}
.lg-buscar iconify-icon{position:absolute;left:15px;top:50%;
  transform:translateY(-50%);pointer-events:none;
  color:var(--text-3);font-size:16px;z-index:1}
.lg-buscar input{padding:0 16px 0 40px;background:var(--surface)}
.lg-buscar input::placeholder{color:var(--text-3)}
/* El foco se marca con el borde, no con un anillo aparte: sigue siendo
   perfectamente visible y va con el resto del sitio. */
.lg-buscar input:focus,.lg-buscar input:focus-visible{
  outline:none;border-color:var(--lime)}
.lg-buscar:focus-within iconify-icon{color:var(--lime)}

/* ═══ PASADA 32 · v5.39 · el menu sube a la barra superior ═══ */
/* El boton de Acciones sale del heroe y se vuelve un hamburguesa en la barra,
   en el lugar que ocupaba el correo de soporte. El heroe queda solo con la
   fecha, la categoria y, en la portada, "Horarios de hoy". */
.pub-nav-slot{display:flex;align-items:center;justify-content:flex-end;min-height:36px}
.pub-nav-slot .pub-acc{position:relative}
.pub-nav-slot .pub-acc-btn{width:38px;height:38px;padding:0;gap:0;
  justify-content:center;border-radius:11px}
.pub-nav-slot .pub-acc-btn iconify-icon{font-size:20px;color:var(--text)}
.pub-nav-slot .pub-acc-btn:hover{border-color:var(--lime)}
.pub-nav-slot .pub-acc-btn:hover iconify-icon{color:var(--lime)}
.pub-nav-slot .pub-acc-btn[aria-expanded="true"]{border-color:var(--lime)}
.pub-nav-slot .pub-acc-btn[aria-expanded="true"] iconify-icon{color:var(--lime)}
/* Antes de que el JS lo mude, el bloque no debe verse en el heroe. */
.pub-hero-bot .pub-acc{display:none}
@media (max-width:900px){
  .pub-nav{padding:12px 16px}
  .pub-nav-slot .pub-acc-btn{width:36px;height:36px}
}

/* ═══ PASADA 33 · v5.40 · el modal cabe en el iPhone ═══ */
/* En Safari de iOS, 100vh NO es lo que se ve: incluye lo que tapan la barra de
   direcciones y la de herramientas. Con max-height en vh la tarjeta quedaba mas
   alta que la pantalla y, al estar centrada, se cortaba arriba y abajo.
   dvh (dynamic viewport height) si mide el area realmente visible. La primera
   declaracion queda de respaldo para navegadores que no lo soporten. */
#pubInscritos .pub-modal-card{max-height:calc(100vh - 40px)}
#pubInscritos .pub-modal-card{max-height:calc(100dvh - 40px)}
@media (max-width:760px){
  .pub-modal{padding:12px}
  #pubInscritos .pub-modal-card{padding:16px 14px 14px}
  #pubInscritos .pub-modal-card{max-height:calc(100dvh - 24px)}
}
/* Sin el chip del codigo, el nombre se queda con todo el ancho. */
.lg-cab .nm{font-size:14px}

/* ═══ PASADA 34 · v5.41 · opciones del modal de compartir ═══ */
/* .pub-share-txt era un span con solo font-weight y font-size. Adentro lleva un
   <b> y un <small>, los dos en linea, asi que el titulo y la descripcion se
   pegaban: "Enviar por WhatsAppAbre WhatsApp con el enlace listo".
   Y el centrado raro venia de que WhatsApp es un <a> y los otros dos son
   <button>: los botones traen text-align:center del navegador y .pub-share-op
   nunca lo corrigio. */
.pub-share-op{text-align:left}
.pub-share-op:focus,.pub-share-op:focus-visible{outline:none;border-color:var(--lime-line)}
.pub-share-txt{display:flex;flex-direction:column;gap:2px;
  flex:1;min-width:0;font-weight:400;font-size:13px}
.pub-share-txt b{font-weight:700;font-size:13px;line-height:1.3;color:var(--text)}
.pub-share-txt small{font-size:11px;line-height:1.35;color:var(--text-3);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pub-share-go{flex-shrink:0;margin-left:0;font-size:16px}
/* Con el QR desplegado, la fila se queda marcada. */
.pub-share-op.qr[aria-expanded="true"]{border-color:var(--lime-line)}
.pub-share-op.qr[aria-expanded="true"] .pub-share-go{color:var(--lime)}

/* ═══ PASADA 35 · v5.42 · que el modal quepa en el telefono ═══ */

/* iOS infla los tipos por su cuenta en bloques angostos si no se le dice que
   no. Eso empuja los anchos y ayuda a que las cosas se desborden. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}

/* LA CAUSA DE FONDO: .pub-modal-card es un ITEM flex de .pub-modal, y los items
   flex traen min-width:auto, o sea "no encojas por debajo del ancho de tu
   contenido". Si algo adentro no cabe, la tarjeta CRECE y se sale de la
   pantalla en vez de reacomodarse. min-width:0 la obliga a respetar el ancho
   disponible y a que el contenido se acomode por dentro. */
/* OJO: aqui solo min-width:0. Un max-width:100% pisaria el max-width:420px de
   la regla base (linea 926) y dejaria los modales de Sembrados y Compartir de
   ancho completo. Con min-width:0 basta: la tarjeta ya no puede crecer mas que
   su contenedor, y el 420px sigue mandando donde toca. */
.pub-modal-card{min-width:0}
#pubInscritos .pub-modal-card{max-width:min(660px,100%)}
/* La misma cura por toda la cadena: si un eslabon no encoge, no encoge nadie. */
.pub-modal-body,.pub-share-body,.mb-sh-grupo,
.lg-bloque,.lg-cat,.lg-cab,.lg-rama,.lg-par,.lg-cuerpo{min-width:0}

@media (max-width:760px){
  /* Los dos botones lado a lado no caben en un telefono: uno por renglón. */
  .mb-sh-grupo .mb-sh{flex:1 1 100%}
  .mb-sh-grupo .mb-sh .mb-sh-txt{white-space:normal}
  /* Etiquetas mas compactas, para devolverle ancho al nombre. */
  .lg-rama{gap:7px;font-size:10px;letter-spacing:.1em}
  .lg-rama .nn{padding:3px 7px;font-size:8.5px;letter-spacing:.06em}
  .lg-cat{padding:0 11px}
  .lg-cab{gap:8px;padding:10px 0}
  .lg-cab .nm{font-size:13px}
  .lg-cab .ct{padding:3px 7px;font-size:9.5px}
}

/* ═══ PASADA 36 · v5.43 · la lupa del modal, centrada ═══ */
/* iconify-icon es un elemento personalizado que por omision se comporta como
   texto en linea: su caja incluye el espacio del renglón (line-height y el
   hueco de los descendentes), asi que translateY(-50%) centraba esa caja y no
   el glifo. Con display:block y line-height:1 la caja mide exactamente lo que
   mide el icono, y el centrado cae donde debe. */
.lg-buscar iconify-icon{display:block;line-height:1}

/* ═══ PASADA 37 · v5.44 · los PDF se mudan al menu ═══ */
/* La barra secundaria se queda solo con "Sembrados", y en la mayoria de las
   secciones vacia. :empty la esconde sola, incluso despues de que el JS se
   lleva los PDF (es un estado vivo, se reevalua). */
.pub-secbar:empty{display:none;margin:0}
/* Antes de que el JS los mude, los PDF no deben verse en la barra. */
.pub-secbar a[data-menu-pdf]{display:none}
/* Seccion "Descargar" del menu. */
.pub-acc-grupo{border-top:1px solid var(--line);margin-top:6px;padding-top:6px}
.pub-acc-grupo .pub-acc-subhead{padding:6px 12px 4px}

/* ═══ PASADA 38 · v5.45 · separador entre pestañas y buscador ═══ */
/* Solo en telefono, donde las dos filas se apilan y se leen como una sola masa
   de botones. El aire queda parejo: los 12px de gap de .pub-navrow por arriba
   y 12px de padding por abajo.
   Se usa el combinador ~ y no +, porque entre las pestañas y el buscador hay un
   <script> (el que centra la pestaña activa) y el adyacente no lo salta.
   Ademas asi la linea solo sale cuando HAY pestañas: a nivel torneo, donde la
   barra se queda solo con el buscador, no aparece una raya suelta. */
@media (max-width:760px){
  .pub-navrow .pub-tabs ~ .pub-buscar{
    border-top:1px solid var(--line-strong);padding-top:12px}
}

/* ═══ PASADA 39 · v5.46 · separador bajo la tira de fechas ═══ */
/* En escritorio y en telefono. Cierra el bloque de navegacion (pestanas,
   buscador, fechas) y lo separa del contenido del dia.
   Aire parejo: 16px arriba de la linea y 16px abajo.
   El padding-bottom pisa el de 6px que el bloque movil le pone a la tira para
   el scroll; con overflow-x el borde vive en el borde del elemento y no se
   desplaza con las fichas, asi que la linea se queda quieta.
   Cuando se pinta la tira: en HORARIOS solo si hay mas de un dia de juego
   (count(dias) > 1); en RESULTADOS siempre que haya dias, aunque sea uno. En
   los dos casos la linea cierra el bloque de navegacion, asi que no se
   condiciono por seccion. */
.pub-dias{padding-bottom:16px;margin-bottom:16px;
  border-bottom:1px solid var(--line-strong)}

/* ═══ PASADA 40 · v5.47 · el menu recupera su color ═══ */
/* Desde que el menu vive dentro de la barra (v5.39), esta regla de la línea 608
       .pub-nav a { color:var(--text-3); font-size:12.5px }
   le cae a TODOS los renglones que son enlaces. Con especificidad 0,1,1 le gana
   a .pub-acc-item (0,1,0), asi que "Pagina principal", "Categorias", "Horarios
   de hoy" y "Ficha tecnica" salian grises y chicos, mientras que los que son
   <button> (Cuadro, Resultados, Lista de inscritos, Compartir) se veían bien.
   Se reafirma con 0,2,0 sin tocar la regla de la barra, que sigue sirviendo
   para el logo. El hover necesita 0,3,0 porque .pub-nav a:hover vale 0,2,1. */
.pub-nav .pub-acc-item,.pub-nav .pub-acc-subitem{
  color:var(--text);font-size:13.5px;font-weight:600}
.pub-nav .pub-acc-item:hover,.pub-nav .pub-acc-subitem:hover{
  background:var(--lime-dim);color:var(--lime)}
.pub-nav .pub-acc-item:hover iconify-icon{color:var(--lime)}

/* ═══ PASADA 41 · v5.48 · lupa y aviso ═══ */

/* LA LUPA, otra vez. En la v5.43 le pusimos display:block, que era correcto,
   pero seguia baja por otra razon: .lg-buscar en el modal lleva
   padding-bottom:10px (el colchon de la barra pegajosa, v5.37). Entonces el
   contenedor mide 48px (38 del campo + 10 de relleno) y top:50% cae en 24,
   mientras que el centro del CAMPO esta en 19. De ahi los 5px de caida.
   Solucion: la lupa se ancla al alto del campo, no al del contenedor. La
   altura se comparte en una variable para que las dos no puedan separarse. */
.lg-buscar{--alto-campo:38px}
.lg-buscar input{height:var(--alto-campo)}
.lg-buscar iconify-icon{top:0;bottom:auto;height:var(--alto-campo);transform:none;
  display:flex;align-items:center;justify-content:center}

/* EL AVISO en telefono (TELON-2): ya nace centrado, aqui solo se encoge para
   que las cuatro cajas del reloj quepan en una linea hasta en pantallas de
   320px (medido: 4 x 56 + 3 x 6 = 242px dentro de 264px utiles). */
@media (max-width:760px){
  .pub-alert-warn{padding:18px 14px 16px}
  .pub-alert-clock .us{gap:6px}
  .pub-alert-clock .u{min-width:56px;padding:8px 5px 7px}
  .pub-alert-clock .u b{font-size:23px}
  .pub-alert-clock .u i{font-size:8.5px;letter-spacing:.1em}
  .pub-alert-btn{justify-content:center}
}

/* ═══ PASADA 42 · v5.49 · la cuenta regresiva, en lime ═══ */
/* ANULADO en v5.61 (TELON-2). El reloj paso de lime a dorado: dorado es el
   color de "por comenzar" en el sistema, y deja al lime como unico acento de
   accion (el boton "Ver lista de inscritos"). Con los dos en lime, el reloj y
   el boton competian. Los colores del reloj viven ahora en el bloque base.
   Se deja el rastro de la decision para no volver a pintarlo de lime sin
   querer. */

/* ═══ PASADA 43 · v5.50 · el filtro de genero, en una sola tira ═══ */
/* "Todos" caia solo a un segundo renglón cuando los cuatro no cabían. Ahora es
   una tira que se desliza con el dedo, igual que las pestañas (PASADA 16) y
   las fichas de fecha.
   No hizo falta script de centrado: el filtro trabaja del lado del cliente y
   el activo al cargar es siempre el primero, o sea el de mas a la izquierda,
   que ya se ve sin desplazar nada. */
@media (max-width:900px){
  .pub-catfilter{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;
    padding-bottom:2px;scroll-snap-type:x proximity;
    scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .pub-catfilter::-webkit-scrollbar{display:none}
  .pub-catfilter button{flex:0 0 auto;white-space:nowrap;scroll-snap-align:start}
}

/* ═══ PASADA 44 · v5.51 · el desplegable de grupos, con el atomo comun ═══ */
/* Era el ultimo lugar que seguía usando el desplegable propio, con los sets
   metidos en el renglón del nombre y por eso desalineados. Ahora usa el mismo
   .scv que Resultados y Jugadores.
   Las tarjetas van en --surface-3 porque .gr-card ya es --surface: si se
   dejaran iguales, no se distinguirian del fondo. */
.gr-bd .gr-bd-wrap{gap:8px;padding:6px 0 10px}
.gr-bd .scv{background:var(--surface-3)}

/* ═══ PASADA 45 · v5.52 · el desplegable de grupos, alineado a la izquierda ═══ */
/* El <td colspan="9"> que hospeda el desplegable hereda de
       .gr-card-body td { text-align:center; font-family:var(--font-data) }
   que es lo correcto para las CIFRAS de la tabla de posiciones, pero no para
   las tarjetas de partido: los nombres salian centrados y en monoespaciada,
   cuando en Resultados van a la izquierda y en Manrope.
   Se devuelve solo en el renglón del desplegable. Los marcadores no se ven
   afectados porque .scv-set .c declara su propia mono y su propio centrado. */
.gr-bd td{text-align:left;font-family:var(--font-ui)}

/* ═══ PASADA 46 · v5.53 · filas de cabezas de serie ═══ */
/* Sin el lugar, la fila se lee de un vistazo: numero y nombre. */
.pub-seed-row{display:flex;align-items:center;gap:12px}
.pub-seed-nm{flex:1;min-width:0;font-size:13.5px;font-weight:600;color:var(--text);
  overflow:hidden;text-overflow:ellipsis}

/* ═══ PASADA 47 · v5.59 · la fecha, con el mismo chip que las otras ═══ */
/* Adopta la forma, el tamaño y la tipografía de las píldoras de ronda y cancha,
   en un tercer tono neutro. Asi el renglón se lee por colores:
       lime = que se juega   ·   turquesa = donde   ·   gris = cuando
   La clase .h-chip la pone el PHP cuando la tarjeta va en modo píldora. Antes
   esto se resolvía con .r-pill ~ .h, pero eso solo alcanza a una hora que venga
   DESPUÉS de las píldoras, y en Horarios va antes. */
.scv-meta .h-chip{padding:4px 10px;border:0;border-radius:6px;
  font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;
  background:rgba(255,255,255,.05);color:var(--text-2)}

/* ═══ PASADA 48 · v5.61 · jerarquía de color por vista ═══ */
/* En HORARIOS la hora es el dato que la gente busca: va en lime y la categoría
   cede a gris. En las demás vistas manda la ronda (lime) y la hora acompaña
   (gris). Las clases las pone el PHP según si la tarjeta muestra cancha o no,
   que es lo que distingue una vista de la otra. */
.scv-meta .h-chip-clave{background:var(--lime-dim);color:var(--lime)}
.scv-meta .r-pill-suave{background:rgba(255,255,255,.05);color:var(--text-2)}

/* ═══ PASADA 49 · v5.62 · día, hora y cancha en el cuadro ═══ */
/* .rg-prog no tenía NINGUNA regla: salía como texto pelado con su icono. No se
   notaba porque solo aparecía en partidos pendientes y Amigos Racquet ya
   terminó, pero en Tennis con Causa habrían salido todos asi.
   Va pequeño y al pie de la tarjeta, separado por una línea: es contexto, no
   compite con los nombres ni con el marcador. */
.rg-prog{display:flex;align-items:center;gap:6px;flex-wrap:wrap;
  margin-top:8px;padding-top:7px;border-top:1px solid var(--line);
  font-family:var(--font-data);font-size:9px;letter-spacing:.05em;
  color:var(--lime);line-height:1.3}
.rg-prog iconify-icon{flex-shrink:0;color:var(--lime);font-size:11px}

/* ═══ PASADA 50 · v5.64 · el selector de cuadros, vestido ═══ */
/* .pub-pills no tenía NINGUNA regla, y .btn-myballs-outline/primary solo estan
   vestidos DENTRO de .pub-tabs. Resultado: cuando una categoria tiene mas de un
   cuadro, el selector salía como dos enlaces de texto pelado, que parecían un
   titulo repetido en vez de un control.
   Mismas medidas que las pestañas (PASADA 24) para que se lean como familia. */
.pub-pills{display:flex;gap:9px;flex-wrap:wrap;margin:0 0 14px}
/* FXACC-1 (2026-08-02) - los botones de las tarjetas de la Ficha.
   CAUSA: .btn-myballs-primary y .btn-myballs-outline NUNCA tuvieron reglas
   propias; solo existen como descendientes de .pub-tabs y de .pub-pills. Los
   seis botones de la Ficha viven dentro de .fx-acc, asi que no les tocaba
   NINGUNA regla: salian como texto pelon con un icono al lado ("Como llegar",
   el telefono, "Sitio del club", "Enviar mensaje", "Ver reglamento").
   No es una clase huerfana como .pub-mini-badge: es una clase CON dueno, solo
   que el dueno era otro contenedor.
   CURA: se suma .fx-acc a esos mismos grupos, sin duplicar una sola
   declaracion. Si manana cambian las pildoras, estos cambian con ellas. */
.pub-pills .btn-myballs-outline,.pub-pills .btn-myballs-primary,.fx-acc .btn-myballs-outline,.fx-acc .btn-myballs-primary{
  display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:999px;
  font-family:var(--font-ui);font-weight:700;font-size:12.5px;
  text-decoration:none;cursor:pointer;transition:border-color .15s,color .15s,transform .12s}
.pub-pills .btn-myballs-outline,.fx-acc .btn-myballs-outline{background:transparent;border:1px solid var(--lime-line);
  color:var(--text-2)}
.pub-pills .btn-myballs-outline:hover,.fx-acc .btn-myballs-outline:hover{border-color:var(--lime);color:var(--text)}
.pub-pills .btn-myballs-primary,.fx-acc .btn-myballs-primary{background:var(--lime);border:1px solid var(--lime);
  color:var(--lime-ink)}
.pub-pills .btn-myballs-outline:active,.pub-pills .btn-myballs-primary:active,.fx-acc .btn-myballs-outline:active,.fx-acc .btn-myballs-primary:active{transform:scale(.97)}
@media (max-width:900px){
  .pub-pills{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;
    padding-bottom:2px;scroll-snap-type:x proximity;scrollbar-width:none}
  .pub-pills::-webkit-scrollbar{display:none}
  .pub-pills .btn-myballs-outline,.pub-pills .btn-myballs-primary{
    flex:0 0 auto;white-space:nowrap;scroll-snap-align:start}
}

/* ═══ PASADA 51 · v5.68 · el héroe adopta los chips ═══ */
/* Las dos píldoras del héroe pasan al mismo chip que el renglón meta de las
   tarjetas de partido: mono, mayúsculas, esquinas de 6px, sin borde, con fondo
   teñido. Y con el mismo codigo de color que ya rige en todo el sitio:

       la categoría es QUE se juega        -> lime
       la fecha y la sede son contexto      -> gris

   Van a 10px y no a los 9.5px del renglón meta, porque aqui el texto es mas
   largo y esta solo en la cabecera. */
.pub-hero-bot .cod,.pub-hero-bot .pub-cat-pill{
  gap:7px;padding:6px 12px;border:0;border-radius:6px;
  font-family:var(--font-data);font-size:10px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase}
.pub-hero-bot .cod{background:rgba(255,255,255,.05);color:var(--text-2)}
.pub-hero-bot .cod iconify-icon{color:var(--text-3);font-size:13px}
.pub-hero-bot .pub-cat-pill{background:var(--lime-dim);color:var(--lime)}
.pub-hero-bot .pub-cat-pill iconify-icon{color:var(--lime);font-size:13px}

/* FMTPILL-2 (2026-08-02) - la pildora del FORMATO: mismo color, otro tono.
   Se deriva del acento con color-mix, no de un hex fijo, para que siga
   funcionando cuando la pagina se viste del color de la rama (azul varonil,
   rosa femenil, verde agua mixtos). El fondo baja a la mitad y el texto se
   apaga mezclandolo con la superficie: la categoria manda, el formato
   acompana. */
.pub-hero-bot .pub-cat-pill.pub-fmt{
  background:color-mix(in srgb, var(--lime) 5%, transparent);
  color:color-mix(in srgb, var(--lime) 72%, var(--mix-base))}
.pub-hero-bot .pub-cat-pill.pub-fmt iconify-icon{
  color:color-mix(in srgb, var(--lime) 72%, var(--mix-base))}

/* El separador solo existe en el telefono. Un hijo con flex-basis:100% dentro
   de un contenedor con flex-wrap fuerza el salto de renglon Y hace de raya. */
.pub-hero-sep{display:none}
@media (max-width:760px){
  .pub-hero-sep{display:block;flex:0 0 100%;height:1px;margin:3px 0;
    background:linear-gradient(90deg,transparent,var(--line-strong) 22%,var(--line-strong) 78%,transparent)}
}

/* ═══ PASADA 52 · v5.69 · cambiar de categoría desde el héroe ═══ */
/* La píldora de categoría se vuelve botón cuando hay mas de una. Hereda el chip
   de la PASADA 51 y solo agrega lo que la hace clicable. */
.pub-cat-pill-btn{cursor:pointer;transition:background .15s,color .15s}
.pub-cat-pill-btn:hover{background:color-mix(in srgb, var(--lime) 18%, var(--mix-base))}
.pub-cat-pill-btn .chev{font-size:12px;opacity:.7}
.pub-cat-pill-btn:focus,.pub-cat-pill-btn:focus-visible{outline:none;
  background:color-mix(in srgb, var(--lime) 18%, var(--mix-base))}

/* CATPULSO-1 (2026-08-02, pedido de Roberto) - la pildora late.
   El problema: mucha gente no se da cuenta de que esa pildora se puede tocar
   para cambiar de categoria; parece una etiqueta, no un boton. Ahora late:
   un aro de luz sale de ella y se desvanece, y la flechita baja un par de
   pixeles, que es lo que insinua "aqui se despliega algo".
   El aro llega a 9px: cabe de sobra dentro del padding del hero, asi que no
   lo corta el overflow:hidden de .pub-hero.
   Se anima box-shadow y transform (no width ni margin) para no reacomodar
   nada de la fila. */
@keyframes catPulso{
  0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--lime) 30%, transparent)}
  70%{box-shadow:0 0 0 9px transparent}
  100%{box-shadow:0 0 0 0 transparent}
}
@keyframes catPulsoFlecha{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(2px)}
}
.pub-cat-pill-btn{animation:catPulso 2.2s ease-out infinite}
.pub-cat-pill-btn .chev{display:inline-block;animation:catPulsoFlecha 2.2s ease-in-out infinite}
/* Cuando ya la encontraste, deja de insistir. */
.pub-cat-pill-btn:hover,.pub-cat-pill-btn:focus,.pub-cat-pill-btn:focus-visible{animation:none}
.pub-cat-pill-btn:hover .chev,.pub-cat-pill-btn:focus .chev,
.pub-cat-pill-btn:focus-visible .chev{animation:none}
@media (prefers-reduced-motion:reduce){
  .pub-cat-pill-btn,.pub-cat-pill-btn .chev{animation:none}
}

/* Cada opcion de la lista, teñida con el color de su género. */
#pubCats .pub-modal-body{display:flex;flex-direction:column;gap:8px}
.pub-cat-op{display:flex;align-items:center;gap:11px;
  padding:11px 13px;border-radius:11px;text-decoration:none;
  background:var(--surface);border:1px solid var(--line);
  color:var(--text-2);font-family:var(--font-ui);font-size:13.5px;font-weight:600;
  transition:border-color .15s,transform .12s}
.pub-cat-op:hover{border-color:color-mix(in srgb, var(--cc) 55%, transparent);
  transform:translateY(-2px);color:var(--text)}
.pub-cat-op:active{transform:scale(.98)}
.pub-cat-op iconify-icon{flex-shrink:0;color:var(--cc);font-size:17px}
.pub-cat-op .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pub-cat-op .go{color:var(--text-3);font-size:15px}
.pub-cat-op:hover .go{color:var(--cc)}
/* La categoría en la que ya estas: marcada y sin invitacion a picarle. */
.pub-cat-op.on{border-color:color-mix(in srgb, var(--cc) 55%, transparent);
  background:color-mix(in srgb, var(--cc) 10%, var(--mix-base));color:var(--text)}
.pub-cat-op.on:hover{transform:none}
.pub-cat-op .ya{flex-shrink:0;padding:3px 9px;border-radius:999px;
  font-family:var(--font-data);font-size:9px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;
  background:color-mix(in srgb, var(--cc) 22%, transparent);
  color:color-mix(in srgb, var(--cc) 85%, var(--mix-txt))}

/* ═══ PASADA 53 · v5.70 · la barra superior se queda fija ═══ */
/* El alto se guarda en una variable porque hay otro elemento pegajoso que
   necesita saberlo: el navegador de rondas del cuadro, que en telefono tambien
   se queda arriba y sin este desfase se escondia debajo de la barra.
       escritorio  14 + 38 (boton) + 14 + 1 (borde) = 67px
       telefono    12 + 36 (boton) + 12 + 1 (borde) = 61px */
:root{--nav-h:67px}
.pub-nav{position:sticky;top:0;z-index:90}
@media (max-width:900px){
  :root{--nav-h:61px}
  .rg-nav{top:var(--nav-h)}
}

/* ═══ PASADA 54 · v5.71 · la fecha, en un color que se lea ═══ */
/* El chip gris cumplia el codigo de color pero casi no se leia a 9.5px con las
   letras separadas. En vez de subirle el brillo al gris se le da un acento
   propio, y asi el renglón sigue diciendo QUE es cada dato:

       lime      que se juega
       turquesa  donde
       ambar     cuando

   El ambar no es nuevo en el sistema: es el mismo #fcd34d del aviso de "el rol
   se publica al iniciar" y hermano del dorado del panel de administracion. */
:root{--gold:#fcd34d;--gold-dim:rgba(252,211,77,.12)}
.scv-meta .h-chip{background:var(--gold-dim);color:var(--gold)}
/* En HORARIOS la hora sigue en lime: ahi es el dato principal de la vista y la
   categoria es la que cede. Esa jerarquia se decidio en la v5.61. */
.scv-meta .h-chip-clave{background:var(--lime-dim);color:var(--lime)}
/* El pie del cuadro tambien es "cuando y donde": va al mismo ambar. */
.rg-prog{color:var(--gold)}
.rg-prog iconify-icon{color:var(--gold)}

/* --- v5.74 (2026-07-31) ----------------------------------------------
   El JS pone esta clase en <body> al abrir un modal (menu de torneo.php
   en app; inc/head.php en torneos) para congelar el fondo. En app nunca
   tuvo regla y el fondo se desplazaba detras del velo. Torneos ya la
   tenia en sus modulos propios (~linea 2929): en la proxima resincro-
   nizacion de la hoja compartida, quitar aquella copia y conservar esta. */
body.pub-modal-abierta{overflow:hidden}

/* --- v5.75 (2026-07-31) ----------------------------------------------
   El encabezado del modal de inscritos, con la arquitectura del de
   torneos (lgm-h / lgm-sub): banda de titulo con su divisor y la cruz
   alineada en la fila; banda de subtitulo con los botones y su divisor;
   el padding repartido por seccion en vez de global en la tarjeta.
   Antes el titulo era texto suelto a 4px del subtitulo y la cruz
   flotaba absoluta en la esquina, sin alinear con nada. Todo acotado
   a #pubInscritos: Sembrados y Compartir no se tocan (leccion v5.42). */
#pubInscritos .pub-modal-card{padding:0}
#pubInscritos .pub-modal-h{display:flex;align-items:center;gap:10px;flex-shrink:0;
  margin:0;padding:16px 18px;border-bottom:1px solid var(--line);
  font-size:16px;font-weight:700}
#pubInscritos .pub-modal-h iconify-icon{flex-shrink:0;color:var(--lime);font-size:19px}
#pubInscritos .pub-modal-x{position:static;margin-left:auto;flex-shrink:0;font-weight:400}
#pubInscritos .pub-modal-sub{margin:0;flex-shrink:0;padding:12px 18px 14px;
  border-bottom:1px solid var(--line);font-size:12.5px;color:var(--text-3)}
#pubInscritos .pub-modal-body{padding:16px 18px 18px}

/* --- v5.76 (2026-07-31) ----------------------------------------------
   Velo unificado de modales (decision de Roberto, opcion B): negro 78%
   + blur suave de 6px, para que el contenido de atras no compita con
   el modal. El velo vive en el CONTENEDOR .pub-modal (fixed inset 0):
   asi lo reciben los cuatro modales por igual, incluido #pubCats, que
   no tiene hijo .pub-modal-velo. El velo hijo pasa a transparente para
   no sumar oscuridad doble; conserva su papel de cerrar con click
   afuera donde existe. */
.pub-modal{background:rgba(6,6,6,.78);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.pub-modal-velo{background:transparent}

/* --- v5.77 (2026-08-01) ----------------------------------------------
   Inscripciones abiertas, por fin con ropa (Roberto eligio la opcion
   B): las piezas ins-* del CTA de estados vacios nunca tuvieron regla
   (el PHP hablaba, nadie escuchaba: salian como texto gris plano) y el
   puntito usaba .dot, que aqui es el punto de resultados y sin
   modificador es transparente. Se visten aqui, y las mismas piezas
   forman el banner nuevo del heroe (.pub-hero-ins), presente en todas
   las secciones mientras pub_ins_abiertas() diga que si; al cerrar
   inscripciones, banner y CTA desaparecen solos. */
.pub-hero-ins{margin-top:16px;padding:14px 16px;border-radius:14px;
  border:1px solid var(--lime-line);
  background:linear-gradient(135deg, color-mix(in srgb, var(--lime) 13%, transparent), color-mix(in srgb, var(--lime) 4%, transparent))}
.pub-hero-ins .ins-txt{margin:8px 0 12px}
.pub-vacio-ins{display:flex;flex-direction:column;align-items:center;margin-top:6px}
.pub-vacio-ins .ins-txt{margin:8px 0 12px;color:var(--text-2)}
.ins-badge{display:inline-flex;align-items:center;gap:8px;
  padding:5px 12px;border-radius:999px;background:var(--lime-dim);
  color:var(--lime);font-family:var(--font-data);font-size:10.5px;
  font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.ins-badge .dot{width:7px;height:7px;border-radius:50%;background:var(--lime);
  animation:insPulso 1.6s ease-in-out infinite}
@keyframes insPulso{0%,100%{opacity:1}50%{opacity:.35}}
@media (prefers-reduced-motion:reduce){.ins-badge .dot,.pub-mini-badge.vivo .dot{animation:none}}
.ins-txt{color:var(--text);font-family:var(--font-ui);font-size:14px}
.ins-btn{display:inline-flex;align-items:center;gap:8px;
  padding:10px 18px;border-radius:999px;background:var(--lime);
  border:1px solid var(--lime);color:var(--lime-ink);
  font-family:var(--font-ui);font-weight:800;font-size:13.5px;
  text-decoration:none;cursor:pointer}
.ins-btn:hover{filter:brightness(1.06)}
.ins-btn iconify-icon{font-size:16px}
@media (max-width:760px){.pub-hero-ins{text-align:center}
  .pub-hero-ins .ins-btn{width:100%;justify-content:center}}

/* --- v5.78 (2026-08-01) ----------------------------------------------
   Mini titulos por rama en el modal de categorias (Roberto): el mismo
   encabezado .lg-rama de la lista de inscritos, reutilizado tal cual
   (se gobierna por --rc: color, icono y contador vienen gratis). Y
   cinturon de scroll: con titulos la lista crece y en telefonos chicos
   se salia de la vista; el patron es el mismo del modal de inscritos
   (v5.40), vh de respaldo + dvh. */
.pub-cats-bloque{margin-bottom:16px}
.pub-cats-bloque:last-child{margin-bottom:0}
.pub-cats-bloque .lg-rama{margin-top:2px}
#pubCats .pub-modal-card{display:flex;flex-direction:column;
  max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px)}
#pubCats .pub-modal-body{flex:1;min-height:0;overflow-y:auto}

/* --- v5.79 (2026-08-01) ----------------------------------------------
   Aire entre las opciones del modal de categorias (Roberto, con el
   modal ya en vivo): .pub-cat-op nacio sin margen y los botones iban
   borde con borde. 8px entre opciones (el ritmo de .lg-cat en la
   lista de inscritos) y cero al ultimo de cada rama, para que la
   jerarquia respire: 8 entre botones, 16 entre ramas. */
.pub-cat-op{margin-bottom:8px}
.pub-cats-bloque .pub-cat-op:last-child{margin-bottom:0}


/* ═══════════════════════════════════════════════════════════════════
   FICHA DEL TORNEO (sec=ficha) · FICHA-VESTIDA-1 (2026-08-01)
   Forense: el markup fx-*/dx-* (v5 FICHA COMPLETA, 2026-07-15) quedo
   SIN una sola regla cuando esta hoja se reescribio de cero: 78 clases
   pintando como texto apilado. Este bloque es su guardarropa completo,
   en el idioma Carbon & Lime de la casa.
═══════════════════════════════════════════════════════════════════ */

/* ── HERO: inscripciones abiertas ── */
.fx-hero{display:flex;gap:20px;align-items:center;background:linear-gradient(135deg,var(--surface-2),var(--surface));border:1px solid var(--lime-line);border-radius:var(--r-card);padding:22px 24px;margin-bottom:18px;position:relative;overflow:hidden}
.fx-hero::after{content:'';position:absolute;right:-70px;top:-70px;width:220px;height:220px;border-radius:50%;background:radial-gradient(closest-side,var(--lime-dim),transparent)}
.fx-hero-flyer{flex-shrink:0;position:relative;display:block;width:104px;border-radius:10px;overflow:hidden;border:1px solid var(--line-strong)}
.fx-hero-flyer img{display:block;width:100%;height:auto}
.fx-zoom-hint{position:absolute;right:6px;bottom:6px;width:26px;height:26px;border-radius:8px;background:rgba(15,15,15,.72);display:flex;align-items:center;justify-content:center;color:var(--lime);font-size:15px}
.fx-hero-bd{position:relative;z-index:1;min-width:0}
.fx-hero-badge{display:inline-flex;align-items:center;gap:7px;font:700 11px/1 var(--font-ui);letter-spacing:.6px;text-transform:uppercase;color:var(--lime);background:var(--lime-dim);border:1px solid var(--lime-line);border-radius:var(--r-pill);padding:6px 12px}
.fx-hero-badge .dot{width:7px;height:7px;border-radius:50%;background:var(--lime);animation:fxPulse 1.6s infinite}
@keyframes fxPulse{0%,100%{opacity:1}50%{opacity:.35}}
.fx-hero-t{font:700 clamp(20px,4vw,27px)/1.15 var(--font-display);color:var(--text);margin:10px 0 6px}
.fx-hero-s{font:500 13.5px/1.55 var(--font-ui);color:var(--text-2)}
.fx-hero-s b{color:var(--text)}
.fx-hero-btn{display:inline-flex;align-items:center;gap:8px;margin-top:14px;background:var(--lime);color:var(--lime-ink);font:800 13.5px/1 var(--font-ui);border-radius:var(--r-pill);padding:12px 20px;text-decoration:none;transition:transform .12s,box-shadow .12s}
.fx-hero-btn:hover{transform:translateY(-1px);box-shadow:0 8px 22px color-mix(in srgb, var(--lime) 25%, transparent)}
/* lightbox del flyer */
.fx-lb{position:fixed;inset:0;z-index:1200;background:rgba(10,10,10,.9);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:22px}
.fx-lb img{max-width:min(92vw,560px);max-height:88vh;border-radius:12px;border:1px solid var(--line-strong)}
.fx-lb-x{position:absolute;top:14px;right:16px;width:40px;height:40px;border-radius:50%;border:1px solid var(--line-strong);background:var(--surface-2);color:var(--text);font-size:22px;cursor:pointer}

/* ── Avance del torneo ── */
.dx-prog{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:14px 18px;margin-bottom:14px}
.dx-prog-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.dx-prog-t{display:inline-flex;align-items:center;gap:8px;font:700 13px/1 var(--font-ui);color:var(--text)}
.dx-prog-t iconify-icon{color:var(--lime);font-size:17px}
.dx-prog-n{font:600 12px/1 var(--font-data);color:var(--text-2)}
.dx-prog-n b{color:var(--lime)}
.dx-bar{height:8px;border-radius:var(--r-pill);background:var(--surface-3);overflow:hidden}
.dx-bar span{display:block;height:100%;border-radius:var(--r-pill);background:linear-gradient(90deg,var(--lime),#a7e42a);transition:width .5s}

/* ── Busca tu partido (CTA estelar) ── */
.dx-hero-cta{background:linear-gradient(135deg,var(--surface-2),var(--surface));border:1px solid var(--line-strong);border-radius:var(--r-card);padding:20px 22px;margin-bottom:14px}
.dx-hero-txt .t{display:flex;align-items:center;gap:9px;font:700 17px/1.2 var(--font-display);color:var(--text)}
.dx-hero-txt .t iconify-icon{color:var(--lime);font-size:20px}
.dx-hero-txt .s{font:500 12.5px/1.5 var(--font-ui);color:var(--text-2);margin:6px 0 12px}
.dx-hero-form{display:flex;gap:9px;position:relative}
.dx-hero-form input[type=search]{flex:1;min-width:0;background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-pill);padding:12px 18px;font:600 14px/1 var(--font-ui);color:var(--text)}
.dx-hero-form input[type=search]:focus{outline:none;border-color:var(--lime-line)}
.dx-hero-form input[type=search]::placeholder{color:var(--text-3)}
.dx-hero-form button{display:inline-flex;align-items:center;gap:7px;background:var(--lime);color:var(--lime-ink);border:0;border-radius:var(--r-pill);padding:0 18px;font:800 13px/1 var(--font-ui);cursor:pointer}
.dx-sug{position:absolute;left:0;right:0;top:calc(100% + 8px);z-index:60;background:var(--surface-2);border:1px solid var(--line-strong);border-radius:12px;overflow:hidden;box-shadow:0 18px 44px rgba(0,0,0,.5);max-height:320px;overflow-y:auto}
.dx-sug-i{display:flex;align-items:center;gap:11px;padding:10px 14px;cursor:pointer;border-bottom:1px solid var(--line)}
.dx-sug-i:last-child{border-bottom:0}
.dx-sug-i:hover,.dx-sug-i.act{background:var(--lime-dim)}
.dx-sug-i iconify-icon{margin-left:auto;color:var(--text-3);font-size:16px}
.dx-sug-av{width:32px;height:32px;border-radius:50%;background:var(--surface-3);border:1px solid var(--line-strong);display:flex;align-items:center;justify-content:center;font:700 11px/1 var(--font-data);color:var(--lime);flex-shrink:0}
.dx-sug-tx{display:flex;flex-direction:column;gap:2px;min-width:0}
.dx-sug-n{font:700 13.5px/1.2 var(--font-ui);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dx-sug-n b{color:var(--lime)}
.dx-sug-c{font:600 10.5px/1.3 var(--font-ui);color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dx-sug-empty{padding:14px;font:600 12.5px/1.4 var(--font-ui);color:var(--text-2);text-align:center}
.dx-sug-empty b{color:var(--lime)}

/* ── Accesos rapidos ── */
.dx-quick{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin-bottom:14px}
.dx-qbtn{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:14px 16px;text-decoration:none;transition:transform .12s,border-color .12s}
.dx-qbtn:hover{transform:translateY(-2px);border-color:var(--line-strong)}
.dx-qbtn iconify-icon{font-size:24px;flex-shrink:0}
.dx-qbtn span{display:flex;flex-direction:column;gap:2px;min-width:0}
.dx-qbtn b{font:700 13.5px/1.2 var(--font-ui);color:var(--text)}
.dx-qbtn small{font:500 11px/1.3 var(--font-ui);color:var(--text-3)}
.dx-qbtn.q1 iconify-icon{color:var(--lime)}
.dx-qbtn.q2 iconify-icon{color:#8AB8FF}
.dx-qbtn.q3 iconify-icon{color:var(--turq)}
.dx-qbtn.q4 iconify-icon{color:#FF9ECB}

/* ── KPIs ── */
.dx-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:16px}
.dx-kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:14px 16px;display:flex;flex-direction:column;gap:4px;text-decoration:none;position:relative}
.dx-kpi iconify-icon{font-size:18px;color:var(--text-3)}
.dx-kpi .v{font:700 26px/1 var(--font-display);color:var(--text)}
.dx-kpi .l{font:600 10.5px/1.2 var(--font-ui);letter-spacing:.4px;text-transform:uppercase;color:var(--text-3);display:inline-flex;align-items:center;gap:5px}
.dx-kpi.k1 iconify-icon:first-child{color:var(--lime)}
.dx-kpi-link{transition:transform .12s,border-color .12s}
.dx-kpi-link:hover{transform:translateY(-2px);border-color:var(--lime-line)}
.dx-kpi-link .go{font-size:13px;color:var(--lime);transition:transform .12s}
.dx-kpi-link:hover .go{transform:translateX(3px)}

/* ── Modal generico de la ficha (jugadores inscritos / mensaje al director) ── */
.fx-msg{position:fixed;inset:0;z-index:1150;background:rgba(10,10,10,.82);backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;padding:18px}
.fx-msg-card{width:100%;max-width:480px;max-height:88vh;display:flex;flex-direction:column;background:var(--surface-2);border:1px solid var(--line-strong);border-radius:16px;overflow:hidden;box-shadow:0 28px 70px rgba(0,0,0,.6)}
.fx-msg-h{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--line);font:700 15px/1.2 var(--font-display);color:var(--text)}
.fx-msg-h iconify-icon{color:var(--lime);font-size:20px}
.fx-msg-x{margin-left:auto;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:var(--surface-3);color:var(--text-2);font-size:19px;cursor:pointer;flex-shrink:0}
.fx-msg-x:hover{color:var(--text);border-color:var(--line-strong)}
.fx-msg-b{padding:16px 20px;overflow-y:auto}
.fx-msg-b label{display:block;font:700 11px/1 var(--font-ui);letter-spacing:.5px;text-transform:uppercase;color:var(--text-3);margin:12px 0 6px}
.fx-msg-b input,.fx-msg-b textarea{width:100%;background:var(--bg);border:1px solid var(--line-strong);border-radius:10px;padding:11px 14px;font:600 13.5px/1.4 var(--font-ui);color:var(--text)}
.fx-msg-b input:focus,.fx-msg-b textarea:focus{outline:none;border-color:var(--lime-line)}
.fx-msg-fila2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.fx-msg-err{margin-top:12px;background:var(--loss-dim);border:1px solid rgba(255,107,107,.4);color:var(--loss);border-radius:10px;padding:10px 13px;font:600 12.5px/1.4 var(--font-ui)}
.fx-msg-ok{margin-top:12px;display:flex;align-items:center;gap:8px;background:var(--lime-dim);border:1px solid var(--lime-line);color:var(--lime);border-radius:10px;padding:10px 13px;font:700 12.5px/1.4 var(--font-ui)}
.fx-msg-send{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:14px;background:var(--lime);color:var(--lime-ink);border:0;border-radius:var(--r-pill);padding:13px 18px;font:800 14px/1 var(--font-ui);cursor:pointer}
.fx-msg-send:hover{filter:brightness(1.05)}
.fx-msg-nota{margin-top:10px;font:500 11px/1.5 var(--font-ui);color:var(--text-3);text-align:center}

/* tabs y lista del modal de inscritos */
.fx-jug-tabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:12px}
.fx-jug-tab{border:1px solid var(--line-strong);background:var(--surface-3);color:var(--text-2);border-radius:var(--r-pill);padding:8px 13px;font:700 11.5px/1 var(--font-ui);cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.fx-jug-tab .n{font-family:var(--font-data);font-size:10px;color:var(--text-3)}
.fx-jug-tab.act{background:var(--js,#1c1c1c);border-color:var(--jc,var(--lime));color:var(--jc,var(--lime))}
.fx-jug-tab.act .n{color:inherit}
.fx-jug-panel{display:flex;flex-direction:column;gap:6px}
.fx-jug-item{display:flex;align-items:center;gap:11px;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--jc,var(--lime));border-radius:10px;padding:9px 12px}
.fx-jug-item .av{width:30px;height:30px;border-radius:50%;background:var(--js,#1c1c1c);color:var(--jc,var(--lime));display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0}
.fx-jug-item .nm{font:700 13px/1.3 var(--font-ui);color:var(--text)}
.fx-jug-ver{display:inline-flex;align-items:center;gap:6px;margin-top:8px;align-self:flex-end;font:700 12px/1 var(--font-ui);color:var(--lime);text-decoration:none}
.fx-jug-ver:hover{text-decoration:underline}
.fx-jug-vacio{display:flex;flex-direction:column;align-items:center;gap:8px;padding:26px 14px;text-align:center;font:600 13px/1.5 var(--font-ui);color:var(--text-2)}
.fx-jug-vacio iconify-icon{font-size:30px;color:var(--text-3)}

/* ── Encabezado de seccion ── */
.fx-sec-h{display:flex;align-items:center;gap:9px;font:700 15px/1.2 var(--font-display);color:var(--text);margin:22px 2px 12px}
.fx-sec-h iconify-icon{color:var(--lime);font-size:19px}
.fx-sec-link{margin-left:auto;display:inline-flex;align-items:center;gap:5px;font:700 12px/1 var(--font-ui);color:var(--text-2);text-decoration:none}
.fx-sec-link:hover{color:var(--lime)}

/* ── Categorias por genero ── */
.fx-cats{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px;margin-bottom:18px}
.fx-cat-col{background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--gc,var(--lime));border-radius:var(--r-card);padding:13px 13px 11px}
.fx-cat-gh{display:flex;align-items:center;gap:8px;font:700 12px/1 var(--font-ui);letter-spacing:.4px;text-transform:uppercase;color:var(--gc,var(--lime));margin-bottom:10px}
.fx-cat-gh .n{margin-left:auto;font-family:var(--font-data);font-size:10.5px;background:var(--gs,#1c1c1c);border-radius:var(--r-pill);padding:3px 9px}
.fx-cat-it{display:block;position:relative;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px 34px 10px 12px;margin-bottom:7px;text-decoration:none;transition:border-color .12s,transform .12s}
.fx-cat-it:last-child{margin-bottom:0}
.fx-cat-it:hover{border-color:var(--gc,var(--lime));transform:translateX(2px)}
.fx-cat-nm{font:700 13px/1.3 var(--font-ui);color:var(--text)}
.fx-cat-mt{display:flex;gap:10px;margin-top:4px;font:600 10.5px/1.2 var(--font-ui);color:var(--text-3)}
.fx-cat-mt .ins{color:var(--gc,var(--lime))}
.fx-cat-it .go{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--text-3);font-size:15px;transition:transform .12s,color .12s}
.fx-cat-it:hover .go{color:var(--gc,var(--lime));transform:translateY(-50%) translateX(3px)}

/* ── Rejilla de tarjetas informativas ── */
.dx-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}
.dx-col{display:flex;flex-direction:column;gap:12px;min-width:0}
.dx-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:16px 18px}
.dx-card-h{display:flex;align-items:center;gap:9px;font:700 13.5px/1.2 var(--font-display);color:var(--text);margin-bottom:12px}
.dx-card-h iconify-icon{color:var(--lime);font-size:18px}
.dx-empty{font:600 12.5px/1.5 var(--font-ui);color:var(--text-3);padding:6px 0}
.dx-link{display:inline-flex;align-items:center;gap:6px;margin-top:10px;font:700 12px/1 var(--font-ui);color:var(--lime);text-decoration:none}
.dx-link:hover{text-decoration:underline}

/* hoy en el torneo */
.dx-today{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.dx-td{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px 8px;text-align:center;display:flex;flex-direction:column;gap:3px}
.dx-td .n{font:700 21px/1 var(--font-display);color:var(--text)}
.dx-td .l{font:600 9.5px/1.2 var(--font-ui);letter-spacing:.4px;text-transform:uppercase;color:var(--text-3)}
.dx-td.live{border-color:var(--lime-line)}
.dx-td.live .n{color:var(--lime)}
.dx-td.prog .n{color:#8AB8FF}
.dx-td.done .n{color:var(--text-2)}

/* proximos partidos */
.dx-next{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line)}
.dx-next:last-of-type{border-bottom:0}
.dx-next-when{display:flex;flex-direction:column;gap:2px;flex-shrink:0;min-width:56px;text-align:center;background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:7px 6px}
.dx-next-when .d{font:700 10px/1.2 var(--font-ui);letter-spacing:.3px;text-transform:uppercase;color:var(--text-3)}
.dx-next-when .h{font:700 14px/1 var(--font-data);color:var(--lime)}
.dx-next-who{min-width:0;flex:1}
.dx-next-who .p{font:700 12.5px/1.35 var(--font-ui);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dx-next-who .vs{font:700 9px/1 var(--font-data);letter-spacing:1px;color:var(--text-3);margin:2px 0}
.dx-next-court{flex-shrink:0;align-self:center;font:700 10px/1 var(--font-data);color:var(--turq);background:var(--turq-dim);border:1px solid var(--turq-line);border-radius:var(--r-pill);padding:5px 10px;white-space:nowrap}

/* filas de la ficha tecnica */
.fx-row{display:flex;gap:14px;align-items:baseline;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line);font:600 12.5px/1.45 var(--font-ui)}
.fx-row:last-of-type{border-bottom:0}
.fx-row .l{color:var(--text-3);flex-shrink:0}
.fx-row .v{color:var(--text);text-align:right;min-width:0}
.fx-row .v b{color:var(--lime)}
.fx-row .v code{font:600 12px/1 var(--font-data);color:var(--turq);background:var(--turq-dim);border-radius:6px;padding:3px 7px}
.fx-sup{display:inline-block;font:700 10.5px/1 var(--font-ui);color:var(--sc,var(--text-2));background:var(--surface-3);border:1px solid var(--sc,var(--line-strong));border-radius:var(--r-pill);padding:5px 10px;margin-left:5px}
/* FXACC-2 (2026-08-02, pedido de Roberto): los botones se alinean a la DERECHA.
   Encaja con el ritmo de la tarjeta: en cada .fx-row la etiqueta va a la
   izquierda y el dato a la derecha, asi que las acciones cierran del mismo
   lado. Se usa justify-content y no margin-left:auto en el primer boton
   porque con flex-wrap, al partirse en dos renglones, el margen dejaria el
   segundo renglon descolgado. */
.fx-acc{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end;margin-top:14px}
.fx-note{display:flex;gap:8px;align-items:flex-start;margin-top:12px;font:500 11.5px/1.5 var(--font-ui);color:var(--text-3)}
.fx-note iconify-icon{color:var(--turq);font-size:15px;flex-shrink:0;margin-top:1px}

/* copiar datos bancarios */
.fx-copy-row .v{display:inline-flex;align-items:center;gap:7px;justify-content:flex-end}
.fx-copy{width:28px;height:28px;border-radius:8px;border:1px solid var(--line-strong);background:var(--surface-3);color:var(--text-2);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}
.fx-copy:hover{color:var(--lime);border-color:var(--lime-line)}
.fx-copy.ok{color:var(--lime);border-color:var(--lime-line)}

/* director */
/* FXDIR-1 (2026-08-02): la tarjeta del director pone la persona y las acciones
   en la MISMA fila, con los botones a la altura del nombre. Con flex-wrap, en
   pantalla angosta los botones bajan solos a su renglon y siguen cerrando a la
   derecha (lo hereda de .fx-acc). El gap de la fila hace de separacion cuando
   eso pasa, por eso .fx-acc pierde aqui su margen de arriba. */
.fx-dir-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.fx-dir-row .fx-dir{flex:1 1 auto;min-width:0}
/* margin-left:auto y NO justify-content:space-between. Medido: con
   space-between, al partirse en dos renglones el bloque de botones queda solo
   en su linea y space-between lo manda a la IZQUIERDA (a 520px se iba 163px
   adentro). Con margin-left:auto cierra a la derecha en los dos casos.
   flex:0 1 auto (y no 0 0 auto) para que a 320px pueda encogerse y partir sus
   dos botones en dos renglones en vez de desbordar la tarjeta. */
.fx-dir-row .fx-acc{margin-top:0;margin-left:auto;flex:0 1 auto}
.fx-dir{display:flex;gap:13px;align-items:center}
.fx-dir-av{width:52px;height:52px;border-radius:50%;background:var(--lime-dim);border:1px solid var(--lime-line);color:var(--lime);display:flex;align-items:center;justify-content:center;font:700 20px/1 var(--font-display);flex-shrink:0}
img.fx-dir-foto{object-fit:cover;background:var(--surface-3)}
img.fx-dir-foto + .fx-dir-av{display:none}
.fx-dir-bd{min-width:0}
.fx-dir-bd .n{font:700 14.5px/1.25 var(--font-ui);color:var(--text)}
.fx-dir-bd .r{font:600 11px/1.3 var(--font-ui);color:var(--text-3);margin-top:2px}


/* destacados: campeones y lideres de grupo */
.dx-star{display:flex;gap:11px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line)}
.dx-star:last-of-type{border-bottom:0}
.dx-star-ico{width:34px;height:34px;border-radius:50%;background:var(--lime-dim);border:1px solid var(--lime-line);color:var(--lime);display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0}
.dx-star-bd{min-width:0}
.dx-star-bd .who{font:700 13px/1.3 var(--font-ui);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dx-star-bd .meta{font:600 10.5px/1.3 var(--font-ui);color:var(--text-3);margin-top:2px}

/* ── responsivo ── */
@media (max-width:760px){
  .fx-hero{flex-direction:column;align-items:flex-start;padding:18px}
  .fx-hero-flyer{width:88px}
  .dx-grid{grid-template-columns:1fr}
  .dx-hero-form{flex-wrap:wrap}
  .dx-hero-form button{width:100%;justify-content:center;padding:12px}
  .fx-msg-fila2{grid-template-columns:1fr}
  .fx-row{flex-direction:column;gap:3px}
  .fx-row .v{text-align:left}
  .fx-copy-row .v{justify-content:flex-start}
}

/* CLASIFANCLA-1: las tarjetas del resumen son botones que bajan a su grupo.
   scroll-margin alto para que el encabezado del grupo NO aterrice tapado
   por la barra fija (ajustado 2026-08-06, lo cazo Roberto). */
.gr-clasif-card{cursor:pointer;transition:transform .12s,border-color .12s}
.gr-clasif-card:hover{transform:translateY(-1px);border-color:var(--lime)}
.gr-card-head{scroll-margin-top:132px}

/* INSLINK-1: filas de la lista de inscritos como enlaces al cuadro */
#pubInscritos .lg-par{cursor:pointer}
#pubInscritos .lg-par:hover{background:var(--lime-dim)}


/* ═══════════════════ TEMA-1 · LINO & LIMA (2026-08-06) ═══════════════════
   El modo claro, pedido de Roberto para el arranque de Caritas 2026.
   CERO rediseno: mismas piezas, mismos espacios; solo se redefinen las
   variables (el mismo truco del tinte por rama). El switch vive en la fila
   "Tema" del menu; inc/head.php lee la eleccion antes del primer pintado. */
html.tema-claro{ color-scheme:light;
  --bg:#f6f6f3; --surface:#ffffff; --surface-2:#f1f1ec; --surface-3:#e9e9e2;
  --line:rgba(24,24,17,.08); --line-strong:rgba(24,24,17,.17);
  --text:#181811; --text-2:#5c5c52; --text-3:#94948a;
  --lime:#6b8f00; --lime-ink:#ffffff; --lime-dim:rgba(107,143,0,.10); --lime-line:rgba(107,143,0,.38);
  --turq:#0d9488; --turq-dim:rgba(13,148,136,.09); --turq-line:rgba(13,148,136,.35);
  --wine:#efece7; --loss:#dc2626; --loss-dim:rgba(220,38,38,.08);
  --gold:#a16207; --gold-dim:#fdf2cf;
}
/* CLASIFCOL-1: en tema claro, verde y rojo oscuros (contraste sobre blanco). */
html.tema-claro .gr-why{ --ok-txt:#136c34; --mal-txt:#b91c1c; }
html.tema-claro .rama-m{ --lime:#2563eb; --lime-ink:#fff; --lime-dim:rgba(37,99,235,.09);  --lime-line:rgba(37,99,235,.38); }
html.tema-claro .rama-f{ --lime:#db2777; --lime-ink:#fff; --lime-dim:rgba(219,39,119,.09); --lime-line:rgba(219,39,119,.38); }
html.tema-claro .rama-x{ --lime:#0d9488; --lime-ink:#fff; --lime-dim:rgba(13,148,136,.09); --lime-line:rgba(13,148,136,.38); }
/* los tres blancos fijos del archivo, devueltos a variable */
html.tema-claro .scv-p.win .nm,
html.tema-claro .rg-row.win .rg-nm,
html.tema-claro .rg-champ .rg-nm{ color:var(--text); }

/* ══ PULIDO: colores clavados que la pasada real destapo (van a variable) ══ */
html.tema-claro .pub-nav{background:var(--surface)}
html.tema-claro .pub-acc-btn{background:var(--surface)}
html.tema-claro .pub-hero{background:
  radial-gradient(560px 280px at 90% -60px, color-mix(in srgb, var(--lime) 12%, transparent), transparent 60%),
  var(--surface)}
html.tema-claro .pub-alert-clock .lb{color:var(--gold)}
html.tema-claro .pub-alert-clock .u{background:var(--gold-dim);border-color:rgba(161,98,7,.30)}
html.tema-claro .pub-alert-clock .u b{color:var(--gold)}
html.tema-claro .pub-alert-clock .u i{color:#8a6a1f}

html.tema-claro{ --mix-base:#ffffff; --mix-txt:#1c1c14; }
/* ── PULIDO-2 (capturas de Roberto, 2026-08-06): los oscuros que no eran
   variables y por eso no switcheaban ── */
html.tema-claro .avatar-img,
html.tema-claro .pcard .pc-av,
html.tema-claro .sg-av{background:linear-gradient(145deg,#ecebe4,#dedcd2);color:var(--text-2)}
html.tema-claro .pub-dia.on .dh{background:rgba(0,0,0,.10)}
html.tema-claro .pub-hitbar a{background:var(--lime-dim)}
html.tema-claro .jl-mp .scv-meta .r-pill:not(.r-pill-cancha){
  color:color-mix(in srgb, var(--rnd) 52%, #1f1f16);
  background:color-mix(in srgb, var(--rnd) 16%, #ffffff)}
html.tema-claro .gr-ronda .gr-ronda-h,
html.tema-claro .gr-ronda .gr-ronda-h iconify-icon{color:color-mix(in srgb, var(--rnd) 55%, #1f1f16)}
/* el logo cambia con el tema (dos <img> en head.php, se muestra el que toca) */
.mb-logo-claro{display:none}
html.tema-claro .mb-logo-oscuro{display:none}
html.tema-claro .mb-logo-claro{display:inline-block}
/* la fila y el interruptor del menu */
.pub-acc-sep{border:0;border-top:1px solid var(--line-strong);margin:8px 10px}
.pub-acc-tema{cursor:default}
.pub-acc-tema:hover{background:transparent;color:var(--text)}
.mb-tema-sw{position:relative;margin-left:auto;width:46px;height:24px;border-radius:999px;
  border:1px solid var(--line-strong);background:var(--surface-3);cursor:pointer;padding:0;flex:none}
.mb-tema-knob{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;
  background:var(--lime);transition:left .18s}
html.tema-claro .mb-tema-knob{left:24px}

/* TEMA-2: switch tambien en la barra (pedido de Roberto, su flecha verde) */
.pub-nav-der{display:flex;align-items:center;gap:12px;flex-shrink:0}
.mb-tema-nav{margin-left:0}
@media (max-width:520px){ .pub-nav-der{gap:9px} }

/* TEMA-3b (capturas de Roberto): las pildoras de DIA en claro. Las reglas
   base mezclan 80% pastel (pensado para brillar sobre carbon); sobre lino se
   lavan. En claro el texto va al 45% del pastel sobre casi-negro (queda el
   alma del dia, oscura y legible) y el dia ACTIVO se vuelve chip solido
   oscurecido con texto blanco, con el mismo punch que en oscuro. */
html.tema-claro .pub-dia{
  color:color-mix(in srgb, var(--dc) 45%, #1d1d14);
  border-color:color-mix(in srgb, var(--dc) 50%, rgba(0,0,0,.18))}
html.tema-claro .pub-dia:hover{color:color-mix(in srgb, var(--dc) 45%, #12120c)}
html.tema-claro .pub-dia.on{
  background:color-mix(in srgb, var(--dc) 55%, #17170f);
  color:#fff;border-color:transparent}
html.tema-claro .pub-dia-h{color:color-mix(in srgb, var(--dc) 45%, #1d1d14)}

/* TEMA-3: portada del catalogo (capturas de Roberto) */
.pub-hero-acc{color:var(--turq)}
.pub-tcard .ic-fin{background:linear-gradient(135deg,#a6a6a6,#6b5f52);color:#f5f5f5}
html.tema-claro .pub-tcard .ic-fin{background:linear-gradient(135deg,#e7e5df,#cfcbc1);color:#6f6f63}


/* ══ PUBDIA-1 (2026-08-07) · Telon por dia: aviso de horarios en preparacion
   y variantes "Por confirmar" de la hora grande y del proximo del jugador. ══ */
.pub-aviso-borrador { display:flex; align-items:center; gap:12px; margin:14px 0 12px;
  padding:13px 16px; border-radius:14px; border:1px solid color-mix(in srgb, var(--lime) 35%, transparent);
  background:color-mix(in srgb, var(--lime) 9%, var(--panel)); color:var(--tx); font-size:14px; line-height:1.5; }
.pub-aviso-borrador iconify-icon { font-size:22px; color:var(--lime); flex:0 0 auto; }
.pub-aviso-borrador b { color:var(--lime); }
.pub-flat { display:flex; flex-direction:column; gap:10px; }
.scv-hora.pc { font-size:11px; letter-spacing:.02em; line-height:1.25; padding:8px 10px; text-transform:uppercase; }
.dx-next-when .h.pc { font-size:13px; letter-spacing:.03em; text-transform:uppercase; }

/* VISIBILIDAD-1: pantalla de torneo apagado por el organizador. */
.pub-apagado{max-width:520px;margin:60px auto;text-align:center;padding:38px 26px;background:var(--surface);border:1px solid var(--line);border-radius:18px}
.pub-apagado .ico{width:66px;height:66px;border-radius:50%;background:var(--lime-dim);margin:0 auto 16px;display:flex;align-items:center;justify-content:center}
.pub-apagado .ico iconify-icon{font-size:32px;color:var(--lime)}
.pub-apagado .t{font-size:17px;font-weight:800;color:var(--text);margin-bottom:8px}
.pub-apagado .s{font-size:13.5px;color:var(--text-3);line-height:1.65}
.pub-apagado .b{display:inline-block;margin-top:20px;background:var(--lime);color:var(--lime-ink);font-weight:800;font-size:13px;padding:10px 20px;border-radius:999px;text-decoration:none}
.pub-apagado .b:hover{filter:brightness(1.06)}


/* ═══ FLYERHERO-3 (2026-08-15, pedido de Roberto): el banner de la Ficha
   calca el heroe de registro.php. Las recetas reg-badge / reg-meta /
   reg-cta / reg-cta-ghost y el re-vestido del reloj .mbrj se copiaron TAL
   CUAL del carbon.css de torneos (t-v24/t-v40) para que las dos pantallas
   sean gemelas. El grid de dos columnas (contenido | flyer 290px) es el
   mismo de .reg-hero.has-flyer; en telefono el flyer baja a lo ancho.
   Las piezas viejas del heroe (pildoras, franja verde, icono del titulo)
   quedan en el DOM pero apagadas: el menu Acciones (pubAccWrap) vive ahi
   y el JS lo muda al navrow. ═══ */
.pub-hero.con-flyer{display:grid;grid-template-columns:1fr;gap:22px;align-items:start}
@media (min-width:860px){
  .pub-hero.con-flyer{grid-template-columns:1fr 290px}
}
.pub-hero-main{position:relative;z-index:1;min-width:0}
.pub-hero.con-flyer .pub-hero-bot,
.pub-hero.con-flyer .pub-hero-ins,
.pub-hero.con-flyer .pub-h1-ico{display:none}
.pub-hero.con-flyer h1{font-size:clamp(24px,3.6vw,36px);line-height:1.08;margin-bottom:14px}
.pub-hero-flyer{position:relative;z-index:1;display:block;border-radius:12px;overflow:hidden;
  border:1px solid var(--line);background:var(--surface-2);cursor:zoom-in;text-decoration:none}
.pub-hero-flyer img{display:block;width:100%;height:auto}
.pub-flyer-zoom{position:absolute;right:10px;bottom:10px;
  display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;
  font-family:var(--font-data);font-size:9px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;
  background:rgba(0,0,0,.6);border:1px solid var(--line-strong);color:#e8e8e8;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.pub-flyer-zoom iconify-icon{font-size:12px;color:var(--lime)}

/* — badges (receta de torneos) — */
.reg-badges{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px}
.reg-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:6px;
  font-family:var(--font-data);font-size:9.5px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;
  background:rgba(255,255,255,.05);color:var(--text-2)}
.reg-badge.on{background:var(--lime-dim);color:var(--lime)}
.reg-badge.off{background:var(--loss-dim);color:var(--loss)}
.reg-badge iconify-icon{font-size:13px}

/* — sede y fechas (receta de torneos) — */
.reg-meta{display:flex;flex-direction:column;gap:9px;margin-bottom:20px}
.reg-meta .l{display:flex;align-items:flex-start;gap:10px;
  font-family:var(--font-ui);font-size:13.5px;color:var(--text-2);line-height:1.45}
.reg-meta .l iconify-icon{flex-shrink:0;margin-top:2px;color:var(--lime);font-size:16px}
.reg-meta .l b{color:var(--text);font-weight:700}

/* — botones (receta de torneos) — */
.reg-cta-row{display:flex;flex-wrap:wrap;gap:10px}
.reg-cta{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:12px 22px;border-radius:999px;border:1px solid var(--lime);
  background:var(--lime);color:var(--lime-ink);
  font-family:var(--font-ui);font-weight:800;font-size:14px;
  text-decoration:none;cursor:pointer;
  transition:background .15s,transform .12s}
.reg-cta:hover{background:#d3ff5e}
.reg-cta:active{transform:scale(.97)}
.reg-cta iconify-icon{font-size:17px}
.reg-cta.disabled{background:var(--surface-3);border-color:var(--line-strong);
  color:var(--text-3);cursor:not-allowed;pointer-events:none}
.reg-pulso{animation:regPulso 2.6s ease-in-out infinite}
@keyframes regPulso{0%,100%{box-shadow:0 0 0 0 rgba(198,255,52,.34)}
  60%{box-shadow:0 0 0 12px rgba(198,255,52,0)}}
@media (prefers-reduced-motion:reduce){.reg-pulso{animation:none}}
.reg-cta-ghost{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:12px 20px;border-radius:999px;
  background:transparent;border:1px solid var(--lime-line);color:var(--text-2);
  font-family:var(--font-ui);font-weight:700;font-size:13px;
  text-decoration:none;cursor:pointer;
  transition:border-color .15s,color .15s,transform .12s}
.reg-cta-ghost:hover{border-color:var(--lime);color:var(--text)}
.reg-cta-ghost:active{transform:scale(.97)}
.reg-cta-ghost iconify-icon{color:var(--lime);font-size:16px}
.reg-cta-ghost .n{padding:2px 8px;border-radius:999px;
  font-family:var(--font-data);font-size:10px;font-weight:700;
  background:var(--lime-dim);color:var(--lime)}

/* — re-vestido del reloj compartido (receta de torneos): su <style> viene
   inline en el HTML y gana por orden, por eso .pub-wrap delante. — */
.pub-wrap .mbrj-lb{font-family:var(--font-data);font-size:10px;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;color:var(--lime)}
.pub-wrap .mbrj-clk .u{background:var(--lime-dim);border:1px solid var(--lime-line);
  border-radius:8px;box-shadow:none;
  font-family:var(--font-data);font-size:9px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:color-mix(in srgb, var(--lime) 55%, #171717)}
.pub-wrap .mbrj-clk .u b{font-family:var(--font-data);font-variant-numeric:tabular-nums;
  font-weight:700;color:var(--lime)}
.pub-wrap .mbrj.mbrj-bl .u{border-color:var(--lime-line)}
.pub-wrap .mbrj.mbrj-bl .u b{color:var(--lime)}

/* — telefono: centrado como t-v24 de registro y botones a lo ancho — */
@media (max-width:600px){
  .pub-hero.con-flyer h1{text-align:center}
  .reg-badges{justify-content:center}
  .reg-meta .l{justify-content:center;text-align:center}
  .pub-hero-main .mbrj{justify-content:center}
  .reg-cta,.reg-cta-ghost{flex:1 1 100%}
}


/* ═══ TODOSCLARO-1 (2026-08-15, captura de Roberto): la pastilla "Todos"
   del filtro de categorias traia --pc:#f5f5f5 INLINE en el HTML — un
   blanco pensado para el tema oscuro que en claro quedaba gris palido
   sobre blanco (ilegible) y, activa, blanco sobre casi-blanco (invisible:
   --lime-ink claro es #fff). Un inline le gana a cualquier regla del
   tema, asi que el color se movio aqui: oscuro conserva su #f5f5f5 y
   claro usa la tinta del tema. El color-mix del sistema resuelve solo
   los dos estados (reposo y activa). ═══ */
.pub-catfilter button[data-g=""]{--pc:#f5f5f5}
html.tema-claro .pub-catfilter button[data-g=""]{--pc:#1c1c14}


/* ══ APP-WAITLIST-1 (2026-08-17): lista de espera en el modal de inscritos.
   Calcado de las reglas lgm-* de torneos.myballs (WAITLIST-3): subtitulo
   Courier ambar y filas #N; el ambar de "espera" es el del sistema. ══ */
.lg-cab .ct-esp{color:#E9C46A;font-weight:800;}
.lg-espera-t{display:flex;align-items:center;gap:6px;font-family:'Courier New',Courier,monospace;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.16em;color:#E9C46A;border-top:1px dashed #3a3a3a;margin-top:8px;padding:9px 2px 4px;}
.lg-par.lg-esp .num{color:#E9C46A;background:rgba(233,196,106,.10);border:1px solid rgba(233,196,106,.30);}
.lg-par.lg-esp .jj b{color:#c9b98a;}
html.tema-claro .lg-cab .ct-esp{color:#a16207;}
html.tema-claro .lg-espera-t{color:#a16207;border-top-color:#e2e8f0;}
html.tema-claro .lg-par.lg-esp .num{color:#a16207;background:#fdf6e3;border-color:#e5c761;}
html.tema-claro .lg-par.lg-esp .jj b{color:#8a6d1f;}

/* ── LEGAL-1 (2026-08-18): modal de Terminos y Aviso de privacidad ──
   El jugador los lee SIN salir del formulario: si cambiara de pagina
   perderia lo que ya capturo. Vive del mismo juego de variables, asi
   que se viste solo en tema oscuro y en tema claro. */
.leg-ov{position:fixed;inset:0;z-index:9996;display:none;
  align-items:center;justify-content:center;padding:16px;
  background:rgba(6,6,6,.80);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.leg-ov.abierto{display:flex}
.leg-card{width:100%;max-width:680px;max-height:86vh;display:flex;flex-direction:column;
  background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--r-card);overflow:hidden}
.leg-head{display:flex;align-items:center;gap:11px;padding:16px 20px;
  border-bottom:1px solid var(--line-strong);flex-shrink:0}
.leg-head iconify-icon{color:var(--lime);font-size:21px;flex-shrink:0}
.leg-head h3{margin:0;font-family:var(--font-display);font-weight:700;font-size:17px;color:var(--text);flex:1}
.leg-x{flex-shrink:0;width:32px;height:32px;border-radius:9px;cursor:pointer;
  background:transparent;border:1px solid var(--line-strong);color:var(--text-2);
  font-size:17px;line-height:1;display:flex;align-items:center;justify-content:center}
.leg-x:hover{color:var(--text);border-color:var(--text-2)}
.leg-body{overflow-y:auto;padding:18px 20px;-webkit-overflow-scrolling:touch;
  font-family:var(--font-ui);font-size:13.5px;line-height:1.72;color:var(--text-2)}
.leg-body h4{margin:20px 0 7px;font-family:var(--font-display);font-weight:700;
  font-size:14.5px;color:var(--text)}
.leg-body h4:first-of-type{margin-top:4px}
.leg-body p{margin:0 0 11px}
.leg-body b{color:var(--text)}
.leg-body a{color:var(--lime)}
.leg-body ul{margin:0 0 13px;padding-left:19px}
.leg-body ul li{margin-bottom:6px}
.leg-meta{font-family:var(--font-data);font-size:11px;letter-spacing:.03em;
  color:var(--text-3);padding-bottom:12px;border-bottom:1px solid var(--line-strong);margin-bottom:4px}
.leg-caja{background:var(--lime-dim);border:1px solid var(--lime-line);
  border-radius:10px;padding:11px 14px;margin:12px 0 14px !important}
.leg-foot{flex-shrink:0;padding:13px 20px;border-top:1px solid var(--line-strong);
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.leg-foot .leg-otra{font-family:var(--font-ui);font-size:12.5px;color:var(--text-2);
  background:none;border:0;cursor:pointer;text-decoration:underline;padding:0}
.leg-foot .leg-otra:hover{color:var(--text)}
.leg-foot .leg-ok{padding:10px 22px;border-radius:999px;cursor:pointer;
  background:var(--lime);border:1px solid var(--lime);color:var(--lime-ink);
  font-family:var(--font-ui);font-weight:800;font-size:13.5px}
@media (max-width:560px){
  .leg-card{max-height:92vh}
  .leg-body{padding:15px 16px;font-size:13px}
  .leg-foot{padding:12px 16px}
  .leg-foot .leg-ok{flex:1;text-align:center}
}

/* LEGAL-2 (2026-08-18): la liga legal del pie. Botones que parecen
   enlaces, para que abran el modal sin sacar a nadie de la pagina. */
.pub-foot-legal{margin-top:10px;display:flex;align-items:center;justify-content:center;
  gap:9px;flex-wrap:wrap;font-family:var(--font-ui);font-size:12.5px}
.pub-foot-legal button{background:none;border:0;padding:0;cursor:pointer;
  font:inherit;color:var(--text-2);text-decoration:underline;text-underline-offset:3px}
.pub-foot-legal button:hover{color:var(--lime)}
.pub-foot-legal span{color:var(--text-3)}
