:root{
  --bg:#070A16; --panel:#0D1326; --panel2:#111936; --line:#2a3652;
  --lime:#D9FF43; --red:#FF3B5C; --ink:#F2F4EA; --muted:#AEB8C9; --blue:#7ea6e8;
  --live-soft:#341321;
  --accent:var(--lime); --accent-ink:#070A16; --live:var(--red);
  --radius:3px; --radius-sm:3px; --mono:'IBM Plex Mono',ui-monospace,monospace;
  --panel-2:var(--panel2);
  --shadow:7px 7px 0 rgba(0,0,0,.45);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font-family:'Space Grotesk',system-ui,sans-serif;line-height:1.55;
  background-image:linear-gradient(rgba(42,54,82,.14) 1px,transparent 1px),linear-gradient(90deg,rgba(42,54,82,.14) 1px,transparent 1px);
  background-size:44px 44px}
::selection{background:var(--lime);color:#070A16}
h1,h2,h3,.black{font-family:'Archivo Black',sans-serif;font-weight:400;letter-spacing:.01em;line-height:1.08;text-transform:uppercase}
.mono{font-family:var(--mono)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
:focus-visible{outline:3px solid var(--lime);outline-offset:3px}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
@media(min-width:1400px){.wrap{max-width:1560px;padding:0 32px}}
@media(min-width:1800px){.wrap{max-width:1720px;padding:0 40px}}
main{display:block}
section.block{padding:88px 0}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12px;letter-spacing:.18em;color:var(--lime);border:1px solid var(--line);background:rgba(13,19,38,.8);padding:8px 14px;border-radius:3px;margin-bottom:22px;text-transform:uppercase}
.eyebrow .dot{width:8px;height:8px;border-radius:50%;background:var(--red);box-shadow:0 0 10px var(--red);animation:blink 1.6s infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.35}}
@media (prefers-reduced-motion:reduce){.eyebrow .dot,.sig-live i,.live-dot{animation:none!important}nav.main{transition:none}}
.sec-title{font-size:clamp(30px,4.4vw,52px);margin-bottom:14px}
.sec-title .hl{color:var(--lime)}
.sec-sub{color:var(--muted);max-width:640px;font-size:17px;margin-bottom:44px}
.illust-tag{display:inline-block;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.14em;color:#070A16;background:var(--blue);padding:5px 10px;border-radius:3px;margin-bottom:14px;text-transform:uppercase}
.illust-note{font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:14px;letter-spacing:.02em}
/* header */
.skip-link{position:absolute;left:-9999px;top:0;z-index:200;background:var(--lime);color:#070A16;font:800 .82rem/1.4 var(--mono);padding:12px 16px;border-radius:3px;text-decoration:none}
.skip-link:focus-visible{left:8px;top:8px}
header.site{position:fixed;top:0;left:0;right:0;z-index:50;background:rgba(7,10,22,.88);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.hd{display:flex;align-items:center;justify-content:space-between;height:68px;gap:12px}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);flex:0 0 auto}
.logo-mark{width:30px;height:30px;background:var(--lime);border-radius:3px;display:grid;place-items:center;color:#070A16;font-family:'Archivo Black';font-size:17px}
.logo b{font-family:'Archivo Black';font-weight:400;letter-spacing:.06em;font-size:17px}
nav.main{display:flex;gap:24px;overflow-x:auto;scrollbar-width:none;flex:1 1 auto}
nav.main a{color:var(--muted);text-decoration:none;font-size:14.5px;font-weight:500;flex:0 0 auto;min-height:44px;display:inline-flex;align-items:center}
nav.main a:hover{color:var(--lime)}
.hd-right{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.age-badge{display:inline-flex;align-items:center;min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:3px;color:var(--ink);font:700 .68rem/1.15 var(--mono);letter-spacing:.025em;text-transform:uppercase;text-decoration:none;white-space:nowrap}
.age-badge:hover,.age-badge:focus-visible{border-color:var(--lime);color:var(--lime)}
.age-badge .n18{color:#070A16;background:var(--red);border-radius:3px;padding:3px 7px;margin-right:8px;font-weight:700}
.trust-badge{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:3px;color:var(--muted);font:600 .68rem/1.15 var(--mono);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.trust-badge .tb-dot{width:7px;height:7px;border-radius:50%;background:var(--lime);box-shadow:0 0 8px var(--lime);flex:0 0 auto}
.nav-toggle{display:none;width:44px;height:44px;align-items:center;justify-content:center;flex-direction:column;gap:0;background:transparent;border:1px solid var(--line);border-radius:3px;cursor:pointer;flex:0 0 auto}
.nav-toggle span{display:block;width:20px;height:2px;background:var(--ink);margin:2.5px 0;border-radius:1px;transition:transform .18s ease,opacity .18s ease}
.nav-toggle.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle.open span:nth-child(2){opacity:0}
.nav-toggle.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.nav-toggle:hover{border-color:var(--lime)}
.nav-toggle:focus-visible{outline:2px solid var(--lime);outline-offset:2px}
.language-picker select{appearance:none;min-height:44px;border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:9px 32px 9px 12px;border-radius:3px;font:700 1rem/1 var(--mono);cursor:pointer;text-transform:uppercase;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23AEB8C9' fill='none' stroke-width='1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
.btn{display:inline-flex;align-items:center;gap:10px;text-decoration:none;font-weight:700;font-size:15px;padding:14px 26px;border-radius:3px;border:1px solid transparent;cursor:pointer;min-height:48px;justify-content:center}
.btn-lime{background:var(--lime);color:#070A16;box-shadow:5px 5px 0 rgba(0,0,0,.5)}
.btn-lime:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 rgba(0,0,0,.5)}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.btn-ghost:hover{border-color:var(--lime);color:var(--lime)}
.btn-sm{padding:10px 18px;font-size:13.5px;min-height:44px}
/* hero */
.hero{padding:168px 0 96px;position:relative;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:64px;align-items:center}
.hero h1{font-size:clamp(42px,6vw,76px);margin:18px 0 22px}
.hero h1 .hl{color:var(--lime)}
.hero p.lead{color:var(--muted);font-size:18.5px;max-width:520px;margin-bottom:34px}
.hero p.lead strong{color:var(--ink)}
.cta-row{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:30px}
.trust{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.trust span{font-family:var(--mono);font-size:11.5px;color:var(--muted);border:1px solid var(--line);padding:6px 11px;border-radius:3px;background:rgba(13,19,38,.7)}
.trust .age{color:#070A16;background:var(--red);border-color:var(--red);font-weight:700}
.radar{position:absolute;right:-140px;top:60px;width:480px;height:480px;border:1px solid var(--line);border-radius:50%;opacity:.5;pointer-events:none}
.radar::before{content:"";position:absolute;inset:70px;border:1px solid var(--line);border-radius:50%}
.radar::after{content:"";position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,rgba(217,255,67,.20),transparent 22%);animation:sweep 7s linear infinite}
@keyframes sweep{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.radar::after{animation:none}}
/* hero illustrative signal card */
.sig-card{background:var(--panel);border:1px solid var(--line);border-radius:3px;box-shadow:var(--shadow);padding:26px;position:relative}
.sig-card::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;height:4px;background:linear-gradient(90deg,var(--lime),var(--red));border-radius:3px 3px 0 0}
.sig-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:10px;flex-wrap:wrap}
.sig-live{font-family:var(--mono);font-size:11.5px;letter-spacing:.14em;color:var(--red);display:flex;align-items:center;gap:8px}
.sig-live i{width:8px;height:8px;border-radius:50%;background:var(--red);box-shadow:0 0 10px var(--red);animation:blink 1.6s infinite;font-style:normal}
.sig-tag{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.1em}
.sig-prob{font-family:'Archivo Black';font-size:15px;color:var(--lime);letter-spacing:.04em;margin-bottom:4px}
.sig-match{display:flex;align-items:center;justify-content:space-between;background:var(--bg);border:1px solid var(--line);border-radius:3px;padding:14px 16px;margin:16px 0;gap:10px}.sig-match>b{flex:1;min-width:0;overflow-wrap:break-word}.sig-match>b:last-child{text-align:right}
.sig-teams{font-weight:700;font-size:16px}
.sig-score{font-family:var(--mono);font-size:26px;font-weight:700;white-space:nowrap}
.sig-score em{font-style:normal;color:var(--red);font-size:14px;vertical-align:middle;margin-right:10px}
.bar-row{margin:14px 0}
.bar-label{display:flex;justify-content:space-between;font-family:var(--mono);font-size:11.5px;color:var(--muted);letter-spacing:.08em;margin-bottom:7px}
.bar-label b{color:var(--lime)}
.bar{height:10px;background:var(--bg);border:1px solid var(--line);border-radius:3px;overflow:hidden}
.bar i{display:block;height:100%;width:82%;background:linear-gradient(90deg,var(--lime),var(--red))}
.ref-row{display:flex;align-items:center;gap:10px;background:var(--bg);border:1px solid var(--line);border-radius:3px;padding:12px 14px;font-size:13.5px;flex-wrap:wrap}
.ref-row .who{font-weight:600}
.pill{font-family:var(--mono);font-size:11.5px;padding:4px 9px;border-radius:3px;background:var(--panel2);border:1px solid var(--line);color:var(--ink);white-space:nowrap}
.pill.lime{background:var(--lime);color:#070A16;border-color:var(--lime);font-weight:700}
.pill.red{background:rgba(255,59,92,.12);color:var(--red);border-color:var(--red)}
.checkpoints{display:flex;align-items:center;gap:0;margin-top:16px}
.cp{flex:1;text-align:center;position:relative;font-family:var(--mono);font-size:11px;color:var(--muted)}
.cp::before{content:"";display:block;width:13px;height:13px;border-radius:50%;background:var(--bg);border:2px solid var(--line);margin:0 auto 6px}
.cp.done{color:var(--lime)} .cp.done::before{background:var(--lime);border-color:var(--lime)}
.cp.now{color:var(--ink)} .cp.now::before{background:var(--red);border-color:var(--red);box-shadow:0 0 10px var(--red);animation:blink 1.6s infinite}
.cp::after{content:"";position:absolute;top:6px;left:-50%;width:100%;height:2px;background:var(--line);z-index:0}
.cp:first-child::after{display:none}
.sig-foot{margin-top:16px;padding-top:14px;border-top:1px dashed var(--line);font-family:var(--mono);font-size:11px;color:var(--muted);display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}
/* live toolbar */
.live-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.live-badge{font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.06em;background:var(--live-soft);color:var(--red);padding:8px 12px;border-radius:3px;min-height:44px;display:inline-flex;align-items:center;gap:8px}
.live-dot{width:8px;height:8px;border-radius:50%;background:var(--red);box-shadow:0 0 10px var(--red);animation:blink 1.6s infinite;display:inline-block}
.live-count{font-family:var(--mono);font-size:13px;color:var(--ink);display:inline-flex;align-items:center;gap:8px;min-height:44px}
.updated{font-family:var(--mono);font-size:12px;color:var(--muted)}
.pause-button{background:var(--panel);border:1px solid var(--line);color:var(--ink);border-radius:3px;min-height:44px;padding:10px 18px;font:700 .8rem/1 var(--mono);cursor:pointer;text-transform:uppercase;letter-spacing:.04em}
.pause-button:hover,.pause-button:focus-visible{border-color:var(--lime);color:var(--lime)}
.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.filter{background:var(--panel);border:1px solid var(--line);color:var(--ink);border-radius:3px;min-height:44px;padding:10px 18px;font:700 .78rem/1 var(--mono);cursor:pointer}
.filter[aria-pressed="true"]{background:var(--lime);color:#070A16;border-color:var(--lime)}
.data-note{font-size:.85rem;color:var(--muted);margin:10px 0}
.data-note a{color:var(--lime)}
.no-results{border:1px dashed var(--line);border-radius:3px;padding:28px;text-align:center;color:var(--muted);font-family:var(--mono);font-size:13px}
.empty-state .empty-ico{font-size:26px;display:block;margin-bottom:8px}
.arena-empty{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px;color:var(--muted);font-size:.95rem;line-height:1.6}
.arena-empty strong{color:var(--ink)}
.arena-empty p{margin:0 0 12px}
.arena-empty p:last-child{margin:0}
/* xT (Expected Threat) */
.xt-box{margin-top:6px}
.xt-row{display:flex;gap:12px;margin:10px 0}
.xt-team{flex:1;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;text-align:center}
.xt-team b{display:block;font-size:28px;color:var(--lime);font-family:'Archivo Black',sans-serif}
.xt-team span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.xt-bar{height:10px;background:#141B31;border-radius:999px;overflow:hidden;margin:4px 0 10px}
.xt-fill-h{display:block;height:100%;background:var(--lime);border-radius:999px;transition:width .4s ease}
.xt-feed{margin-top:12px;border-top:1px solid var(--line);padding-top:8px;display:grid;gap:6px}
.xt-feed-row{display:flex;align-items:baseline;gap:10px;font-size:.85rem}
.xt-feed-time{font-family:var(--mono);color:var(--muted);min-width:32px}
.xt-feed-desc{flex:1;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.xt-feed-val{font-family:var(--mono);color:var(--lime)}
/* Radar 2D: posición del balón en directo (WebSocket Plus). Ligero, sin WebGL. */
.radar2d-wrap{margin-top:6px}
.radar2d-pitch{width:100%;max-width:640px;height:auto;display:block}
.radar2d-ball{fill:#fff;stroke:var(--lime);stroke-width:.7;filter:drop-shadow(0 0 3px rgba(217,255,67,.8))}
.radar2d-ball.radar2d-away{stroke:#7cc4ff;filter:drop-shadow(0 0 3px rgba(124,196,255,.8))}
.radar2d-dot{fill:#fff}
.radar2d-info{margin-top:8px}
/* match cards */
.matches{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;margin-top:8px}
.match{background:var(--panel);border:1px solid var(--line);border-radius:3px;padding:18px;box-shadow:5px 5px 0 rgba(0,0,0,.35);display:grid;gap:12px;align-content:start}
.match-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.match-head .lg{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;color:var(--blue)}
.minute{font-family:var(--mono);font-size:12px;color:var(--red);font-weight:700;display:inline-flex;align-items:center;gap:8px}
.phase-label{font-family:var(--mono);font-size:10.5px;color:var(--muted);letter-spacing:.08em}
.scoreboard{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:10px;align-items:center}
.team{display:flex;align-items:center;gap:8px;font-weight:600;font-size:15px;min-width:0}
.team span:last-child{overflow:hidden;text-overflow:ellipsis}
.crest{width:34px;height:34px;flex:0 0 auto;display:grid;place-items:center;background:var(--panel2);border:1px solid var(--line);border-radius:3px;font-family:var(--mono);font-size:11px;font-weight:700;color:var(--lime)}
.score{font-family:var(--mono);font-size:26px;font-weight:700;white-space:nowrap}
.pressure-wrap{display:grid;gap:8px}
.pressure-label{display:flex;justify-content:space-between;align-items:center;gap:10px;font-family:var(--mono);font-size:11.5px;color:var(--muted);letter-spacing:.06em;flex-wrap:wrap}
.hot{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.06em;background:var(--lime);color:#070A16;padding:5px 9px;border-radius:3px}
.pressure{height:10px;background:var(--bg);border:1px solid var(--line);border-radius:3px;overflow:hidden;position:relative}
.pressure .home,.pressure .away{position:absolute;top:0;bottom:0}
.pressure .home{left:0;background:var(--lime)}
.pressure .away{right:0;background:var(--blue)}
.momentum-chart{position:relative;height:90px;background:var(--bg);border:1px solid var(--line);border-radius:3px;overflow:hidden}
.momentum-chart .baseline{position:absolute;left:0;right:0;top:50%;height:1px;background:var(--line)}
.momentum-chart .empty-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-family:var(--mono);font-size:10.5px;color:var(--muted);letter-spacing:.1em}
.momentum-chart .radar-sweep{position:absolute;inset:0;background:conic-gradient(from 0deg,rgba(217,255,67,.08),transparent 25%);animation:sweep 9s linear infinite;pointer-events:none}
.momentum-chart.has-data .empty-label,.momentum-chart.has-data .radar-sweep{display:none}
.momentum-chart svg{position:absolute;inset:0;width:100%;height:100%}
.mom-home{fill:var(--lime)} .mom-away{fill:var(--blue)} .mom-goal{fill:#fff;stroke:#070A16;stroke-width:.5}
.mom-filters{position:absolute;top:4px;right:4px;display:flex;gap:4px;z-index:2}
.mom-filter{font-family:var(--mono);font-size:10px;padding:2px 7px;border:1px solid var(--line);border-radius:3px;background:rgba(7,10,22,.7);color:var(--muted);cursor:pointer}
.mom-filter.on{color:#070A16;background:var(--lime);border-color:var(--lime);font-weight:700}
.forecast-line{margin:6px 0 2px}
.forecast-title{font-family:var(--mono);font-size:10.5px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}
.forecast-line .pressure{height:6px;margin:4px 0}
.forecast-nums{font-family:var(--mono);font-size:11px;color:var(--lime)}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.stat{background:var(--bg);border:1px solid var(--line);border-radius:3px;padding:8px 10px;display:grid;gap:2px}
.stat span{font-size:10.5px;color:var(--muted);font-family:var(--mono);letter-spacing:.04em}
.stat strong{font-family:var(--mono);font-size:13px;color:var(--ink)}
.events{margin-top:4px;border-top:1px solid var(--line);padding-top:8px}
.events summary{cursor:pointer;font-weight:700;min-height:44px;display:flex;align-items:center;font-size:14px}
.events ul{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:6px}
.events li{font-size:13.5px;color:var(--muted);display:flex;gap:10px}
.events li b{font-family:var(--mono);color:var(--red);min-width:34px}
.events li.goal-event{color:var(--ink)}
.lineup{border-top:1px solid var(--line);padding-top:6px}
.lineup summary{cursor:pointer;font-weight:700;min-height:44px;display:flex;align-items:center;font-size:14px}
.lineup-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:10px}
.lineup-col h4{margin:0 0 8px;font-size:.85rem}
.lineup-list{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.player-link{background:none;border:0;color:var(--ink);font:inherit;text-align:left;cursor:pointer;padding:6px 8px;border-radius:3px;min-height:44px;width:100%}
.player-link:hover,.player-link:focus-visible{background:var(--panel2);color:var(--lime)}
.player-link:disabled{cursor:default;color:var(--muted)}
/* feed */
.feed-list{display:grid;gap:10px;margin-top:12px}
.alert-item{display:flex;gap:12px;align-items:flex-start;background:var(--panel);border:1px solid var(--line);border-radius:3px;padding:12px 14px}
.alert-time{font-family:var(--mono);font-size:12px;color:var(--red);font-weight:700;min-width:40px;padding-top:2px}
.alert-dot{width:8px;height:8px;border-radius:50%;background:var(--red);margin-top:6px;flex:0 0 auto}
.alert-item b{font-size:14px}
.alert-item small{display:block;color:var(--muted);font-size:12.5px}
/* signal state dot (no emojis) */
.sig-dot{width:11px;height:11px;border-radius:50%;background:var(--blue);display:inline-block;flex:0 0 auto}
.sig-state.sig-ent .sig-dot{background:var(--lime);box-shadow:0 0 8px var(--lime)}
.sig-state.sig-no .sig-dot{background:var(--red);box-shadow:0 0 8px var(--red)}
.sig-state.sig-pre .sig-dot{background:var(--blue)}
/* chips */
.chips{display:flex;flex-wrap:wrap;gap:12px}
.chip{font-family:var(--mono);font-size:13px;padding:11px 18px;border:1px solid var(--line);border-radius:3px;background:var(--panel);color:var(--ink);min-height:44px;display:inline-flex;align-items:center;cursor:default}
.chip.hot{border-color:var(--lime);color:var(--lime)}
button.chip{cursor:pointer}
button.chip:hover,button.chip:focus-visible{border-color:var(--lime);color:var(--lime)}
button.chip[aria-pressed="true"]{background:var(--lime);color:#070A16;border-color:var(--lime);font-weight:700}
/* late-goals module */
.late-module{background:var(--panel);border:1px solid var(--line);border-radius:3px;box-shadow:var(--shadow);padding:28px;margin-top:26px}
.late-module .lm-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.late-module .lm-head h3{font-size:19px}
.late-module .lm-head h3 .hl{color:var(--lime)}
.late-row{display:grid;grid-template-columns:44px 1fr auto;gap:14px;align-items:center;padding:14px 0;border-bottom:1px solid rgba(42,54,82,.6)}
.late-row:last-child{border-bottom:none}
.late-rank{font-family:'Archivo Black';font-size:22px;color:var(--lime)}
.late-team{font-weight:700;font-size:16px}
.late-team small{display:block;font-weight:400;color:var(--muted);font-size:12.5px;font-family:var(--mono)}
.late-nums{text-align:right}
.late-nums b{display:block;font-family:var(--mono);font-size:22px;color:var(--lime)}
.late-nums span{font-family:var(--mono);font-size:11px;color:var(--muted)}
.late-bar{height:6px;background:var(--bg);border:1px solid var(--line);border-radius:3px;margin-top:8px;overflow:hidden;grid-column:1/-1}
.late-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--lime),var(--red))}
/* verdict */
.verdict{background:var(--panel);border:1px solid var(--lime);border-radius:3px;box-shadow:var(--shadow);padding:30px;margin-bottom:26px;position:relative}
.verdict::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;height:4px;background:var(--lime);border-radius:3px 3px 0 0}
.verdict .v-kicker{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--lime);margin-bottom:10px;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}
.verdict p{font-size:16px;max-width:70ch}
.verdict p b{color:var(--lime)}
.vs-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:14px;align-items:stretch;margin-bottom:26px}
.vs-card{background:var(--panel);border:1px solid var(--line);border-radius:3px;padding:24px;box-shadow:var(--shadow)}
.vs-card h3{font-size:20px;margin-bottom:6px}
.vs-card .lg{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--blue);margin-bottom:12px}
.vs-mid{display:grid;place-items:center;font-family:'Archivo Black';font-size:24px;color:var(--muted)}
.kv{display:grid;gap:6px;margin-top:12px}
.kv div{display:flex;justify-content:space-between;font-size:13.5px;border-bottom:1px dashed rgba(42,54,82,.6);padding:6px 0}
.kv div span:first-child{color:var(--muted)}
.kv div span:last-child{font-family:var(--mono);color:var(--ink)}
.matrix{width:100%;border-collapse:collapse;font-size:14px;background:var(--panel);border:1px solid var(--line);border-radius:3px;overflow:hidden}
.matrix th,.matrix td{padding:12px 14px;border-bottom:1px solid rgba(42,54,82,.6);text-align:left}
.matrix th{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;color:var(--muted);font-weight:500}
.matrix td.num{font-family:var(--mono)}
.matrix tr:last-child td{border-bottom:none}
.matrix td.hl-cell{color:var(--lime);font-weight:700}
/* search */
.search-box{max-width:720px}
.search-input{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:3px;color:var(--ink);padding:14px 18px;font-size:16px;min-height:52px;font-family:'Space Grotesk'}
.search-input:focus{outline:none;border-color:var(--lime)}
.search-chips{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}
.search-results{margin-top:18px}
/* referee */
.ref-split{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:stretch}
.ref-hero{background:var(--panel);border:1px solid var(--line);border-radius:3px;box-shadow:var(--shadow);padding:36px;text-align:center}
.duo{display:flex;justify-content:center;gap:36px;margin:22px 0 14px;flex-wrap:wrap}
.score b{display:block;font-family:'Archivo Black';font-size:64px;line-height:1}
.score small{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--muted)}
.score.ia b{color:var(--lime)} .score.pub b{color:var(--blue)}
.sample{font-family:var(--mono);font-size:12px;color:var(--muted)}
.ref-table{background:var(--panel);border:1px solid var(--line);border-radius:3px;box-shadow:var(--shadow);padding:28px;overflow-x:auto}
.ref-table h3{font-size:17px;margin-bottom:16px}
table.plain{width:100%;border-collapse:collapse;font-size:14px}
table.plain th{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;color:var(--muted);text-align:left;padding:9px 8px;border-bottom:1px solid var(--line);font-weight:500}
table.plain td{padding:10px 8px;border-bottom:1px solid rgba(42,54,82,.5)}
table.plain td.num{font-family:var(--mono)}
table.plain tr:last-child td{border-bottom:none}
td .w{color:var(--lime);font-weight:700}
.avgs{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:20px}
.avg{background:var(--bg);border:1px solid var(--line);border-radius:3px;padding:12px;text-align:center}
.avg b{display:block;font-family:var(--mono);font-size:20px;color:var(--lime)}
.avg span{font-size:11px;color:var(--muted)}
.link-arrow{color:var(--lime);font-weight:700;text-decoration:none;display:inline-flex;gap:8px;margin-top:20px;font-size:15px;min-height:44px;align-items:center}
/* how */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.step{background:var(--panel);border:1px solid var(--line);border-radius:3px;padding:30px 26px;box-shadow:var(--shadow);position:relative}
.step .n{font-family:'Archivo Black';font-size:44px;color:transparent;-webkit-text-stroke:1.5px var(--lime);margin-bottom:14px}
.step h3{font-size:19px;margin-bottom:10px}
.step p{color:var(--muted);font-size:15px}
/* plans */
.plans{display:grid;grid-template-columns:1fr 1fr;gap:18px;max-width:880px}
.plan{background:var(--panel);border:1px solid var(--line);border-radius:3px;padding:36px 32px;box-shadow:var(--shadow);display:flex;flex-direction:column}
.plan.pro{border-color:var(--lime);position:relative}
.plan.pro::before{content:"RECOMENDADO";position:absolute;top:-13px;left:28px;background:var(--lime);color:#070A16;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.1em;padding:5px 12px;border-radius:3px}
.plan h3{font-size:20px;margin-bottom:6px}
.plan .price{font-family:'Archivo Black';font-size:46px;margin:14px 0 4px}
.plan .price small{font-family:var(--mono);font-size:13px;color:var(--muted)}
.plan ul{list-style:none;margin:20px 0 28px;flex:1}
.plan li{padding:8px 0 8px 30px;position:relative;font-size:15px;color:var(--muted)}
.plan li::before{content:"✓";position:absolute;left:2px;color:var(--lime);font-weight:700}
.plan li.no{opacity:.45}.plan li.no::before{content:"✕";color:var(--red)}
.plan li b{color:var(--ink)}
.mock-note{font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:16px;text-align:center}
/* roadmap */
.road{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.soon{display:inline-block;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;color:#070A16;background:var(--blue);padding:4px 10px;border-radius:3px;font-weight:700;margin-bottom:12px}
/* legal */
.age-strip{margin:0 0 12px}
.legal-body{max-width:74ch}
.legal-body h3{font-size:1.02rem;margin:22px 0 8px;letter-spacing:-.01em}
.legal-body p,.legal-body li{color:var(--muted);line-height:1.7;font-size:.93rem}
.legal-body ul,.legal-body ol{margin:12px 0;padding-left:22px;display:grid;gap:8px}
.legal-body strong{color:var(--ink)}
.legal-back{display:none;margin:0 0 14px;font-size:.9rem}
html.js body.legal-view .legal-back{display:block}
/* El foco programático a la sección legal es para lectores de pantalla:
   sin outline (el indicador de foco por teclado se mantiene en enlaces). */
.legal-doc:focus{outline:none}
section[id]{scroll-margin-top:84px}
.legal-back a{color:var(--lime);text-decoration:none}
/* private area — visually distinct light console theme */
.private{background:#E9ECF4;color:#161B28;border-top:6px solid #161B28;border-bottom:6px solid #161B28}
.private .wrap{padding-top:64px;padding-bottom:64px}
.private .eyebrow{background:#161B28;color:#F5C542;border-color:#161B28}
.private h2{color:#161B28}
.private .sec-sub{color:#4A5468}
.private-box{background:#fff;border:2px solid #161B28;border-radius:6px;box-shadow:8px 8px 0 rgba(22,27,40,.9);padding:32px;max-width:560px}
.private-box .p-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.private-box .p-dot{width:10px;height:10px;border-radius:50%;background:#C81E3A;box-shadow:0 0 8px #C81E3A}
.private-box h3{font-size:20px;color:#161B28;text-transform:uppercase}
.private-box p{color:#4A5468;font-size:14.5px;margin-bottom:18px}
.private-form{display:grid;gap:14px}
.private-form label{font-size:13px;font-weight:700;color:#161B28;display:grid;gap:6px}
.private-form input{background:#F4F6FA;border:2px solid #161B28;border-radius:4px;color:#161B28;padding:12px;font-size:16px;min-height:48px;width:100%}
.private-form input:focus{outline:3px solid #2F6BFF;outline-offset:2px}
.private-form button{background:#161B28;color:#fff;border:0;border-radius:4px;font:700 .9rem/1 var(--mono);text-transform:uppercase;letter-spacing:.05em;padding:14px 18px;min-height:52px;cursor:pointer}
.private-form button:hover{background:#2F6BFF}
.private-status{min-height:1.5em;margin:6px 0 0;font-size:14px;color:#4A5468}
.private-status[data-kind="error"]{color:#C81E3A;font-weight:700}
.private-status[data-kind="ok"]{color:#0E7A3D;font-weight:700}
.private-console{display:grid;gap:10px}
.private-console .row{display:flex;justify-content:space-between;gap:12px;font-size:14.5px;border-bottom:1px dashed #C9D0DE;padding:8px 0}
.private-console .row span:first-child{color:#4A5468;font-weight:600}
.private-console .row span:last-child{font-family:var(--mono);color:#161B28}
.private-console button{background:#fff;border:2px solid #161B28;color:#161B28;border-radius:4px;font:700 .8rem/1 var(--mono);text-transform:uppercase;padding:12px 16px;min-height:48px;cursor:pointer;margin-top:8px}
.private-console button:hover{background:#161B28;color:#fff}
/* footer */
footer.site{border-top:1px solid var(--line);padding:56px 0 40px;background:rgba(7,10,22,.7)}
.legal-doc[hidden]{display:none}
.ft{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:32px;margin-bottom:36px}
.ft p{color:var(--muted);font-size:14px;max-width:380px}
.ft h4{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--muted);margin-bottom:14px;font-weight:600}
.ft a{display:block;color:var(--muted);text-decoration:none;font-size:14px;padding:8px 0;min-height:44px}
.ft a:hover{color:var(--lime)}
.age18{display:inline-grid;place-items:center;width:44px;height:44px;border:2px solid var(--red);color:var(--red);border-radius:50%;font-family:'Archivo Black';font-size:15px;margin-bottom:14px}
.legal{border-top:1px solid var(--line);padding-top:24px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-family:var(--mono);font-size:11.5px;color:var(--muted)}
.legal-links{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px}
/* ===== FRONT (equipo frontal, 2026-09-30): módulos de datos — standings, comparador, árbitros, buscador, xG en directo ===== */
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -2px;padding:0 2px}
table.matrix{min-width:640px}
table.matrix td.pos{font-family:var(--mono);color:var(--muted)}
tr.row-hl td{background:rgba(217,255,67,.08)}
@keyframes rowflash{0%{background:rgba(217,255,67,.28)}100%{background:rgba(217,255,67,.08)}}
tr.row-hl td{animation:rowflash 1.4s ease}
/* xG en directo (live.js) */
.xg-chart{background:var(--bg);border:1px solid var(--line);border-radius:3px;padding:12px 14px;display:grid;gap:8px}
.xg-chart svg{width:100%;height:88px;display:block}
.xg-home{fill:none;stroke:var(--lime);stroke-width:1.6}
.xg-away{fill:none;stroke:var(--blue);stroke-width:1.6}
.xg-now{stroke:var(--ink);stroke-width:.8;opacity:.5;stroke-dasharray:3 2}
.xg-cap{display:flex;gap:14px;flex-wrap:wrap;font-family:var(--mono);font-size:11px;color:var(--muted)}
.xg-leg-home::before,.xg-leg-away::before{content:"";display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:baseline}
.xg-leg-home::before{background:var(--lime)} .xg-leg-away::before{background:var(--blue)}
.xg-note{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.04em}
details.xg{margin-top:10px}
details.xg summary{cursor:pointer;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
/* etiqueta de ventana de gol tardío (live.js) */
.late-tag{display:inline-block;margin-top:8px;padding:4px 10px;border:1px solid var(--lime);border-radius:999px;color:var(--lime);font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase}
/* barras de probabilidad (comparador) */
.prob-list{display:grid;gap:12px}
.prob-row{display:grid;gap:6px}
.prob-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.prob-top .pl{font-size:14px}
.prob-top b{font-family:var(--mono);font-size:19px;color:var(--lime)}
.prob-track{height:10px;background:var(--bg);border:1px solid var(--line);border-radius:3px;overflow:hidden}
.prob-fill{display:block;height:100%;background:linear-gradient(90deg,var(--lime),var(--red))}
/* selector de partido */
.field-row{display:grid;gap:8px;max-width:600px;margin-bottom:20px}
.field-row>label{font-size:13px;font-weight:700}
select.select{appearance:none;-webkit-appearance:none;background-color:var(--panel);border:1px solid var(--line);color:var(--ink);border-radius:3px;min-height:48px;padding:12px 42px 12px 14px;font-size:15px;font-family:'Space Grotesk',system-ui,sans-serif;cursor:pointer;width:100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23AEB8C9' fill='none' stroke-width='1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center}
.chips .chip.chip-active,.search-chips .chip.chip-active{background:var(--lime);color:#070A16;border-color:var(--lime);font-weight:700}
select.select:focus-visible{outline:3px solid var(--lime);outline-offset:2px}
/* árbitros */
.sort-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.sort-row .lab{font-family:var(--mono);font-size:11.5px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}
.ref-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.ref-card{background:var(--panel);border:1px solid var(--line);border-radius:3px;padding:18px;box-shadow:5px 5px 0 rgba(0,0,0,.35);display:grid;gap:8px;align-content:start;color:var(--ink);text-decoration:none}
a.ref-card:hover,a.ref-card:focus-visible{border-color:var(--lime)}
.ref-card .r-name{font-weight:700;font-size:16px}
.ref-card .r-sub{font-family:var(--mono);font-size:10.5px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}
.r-score{display:flex;align-items:center;gap:12px}
.r-score b{font-family:'Archivo Black';font-weight:400;font-size:44px;line-height:1;color:var(--lime)}
.r-score.tier-mid b{color:var(--ink)} .r-score.tier-lo b{color:var(--red)}
.r-score small{font-family:var(--mono);font-size:10.5px;color:var(--muted);letter-spacing:.08em}
.r-meta{display:flex;gap:14px;flex-wrap:wrap;font-family:var(--mono);font-size:12px;color:var(--muted)}
.r-meta b{color:var(--ink);font-weight:700}
/* entrenadores */
.mgr-filter{margin-bottom:16px}
.mgr-filter input{width:100%;max-width:420px;background:var(--panel);border:1px solid var(--line);color:var(--ink);border-radius:3px;padding:12px 14px;min-height:48px;font-size:15px;font-family:'Space Grotesk',system-ui,sans-serif}
.mgr-filter input:focus-visible{outline:3px solid var(--lime);outline-offset:2px}
.mgr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.mgr-card{background:var(--panel);border:1px solid var(--line);border-radius:3px;padding:18px;box-shadow:5px 5px 0 rgba(0,0,0,.35);display:grid;gap:8px;align-content:start}
.mgr-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.mgr-name{font-weight:700;font-size:16px;color:var(--ink);text-decoration:none}
a.mgr-name:hover,a.mgr-name:focus-visible{color:var(--lime);text-decoration:underline}
.mgr-country{font-family:var(--mono);font-size:10.5px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}
.mgr-meta{display:flex;gap:8px;flex-wrap:wrap}
.mgr-chip{font-family:var(--mono);font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:3px;padding:4px 8px}
.mgr-stats{display:flex;gap:18px;margin-top:4px}
.mgr-stat{display:grid;gap:2px}
.mgr-stat-v{font-family:'Archivo Black';font-weight:400;font-size:26px;line-height:1;color:var(--lime)}
.mgr-stat-k{font-family:var(--mono);font-size:10.5px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}
.mgr-back{display:inline-flex;align-items:center;gap:8px;color:var(--lime);text-decoration:none;font-weight:700;margin-bottom:18px;min-height:44px}
.mgr-back:hover{text-decoration:underline}
.mgr-detail{background:var(--panel);border:1px solid var(--line);border-radius:3px;padding:22px;display:grid;gap:12px;box-shadow:5px 5px 0 rgba(0,0,0,.35)}
.mgr-detail-name{margin:0;font-size:1.35rem;font-weight:800;letter-spacing:-.01em}
.mgr-team{color:var(--muted);font-size:.92rem}
.mgr-team a{color:var(--ink);font-weight:700}
.mgr-team a:hover,.mgr-team a:focus-visible{color:var(--lime)}
.mgr-kv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-top:6px}
.mgr-kv{background:var(--panel-2);border:1px solid var(--line);border-radius:3px;padding:12px 14px;display:grid;gap:4px}
.mgr-k{font-family:var(--mono);font-size:10.5px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}
.mgr-kv .mgr-v{font-family:var(--mono);font-size:15px;color:var(--ink)}
.mgr-match-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:10px}
.mgr-match-card{background:var(--panel-2);border:1px solid var(--line);border-radius:3px;padding:14px;display:grid;gap:8px;align-content:start}
.mgr-link{color:var(--ink);font-weight:700}
a.mgr-link:hover,a.mgr-link:focus-visible{color:var(--lime)}
/* dónde ver (retransmisiones) */
.bc-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:2px}
.bc-item{display:flex;gap:12px;align-items:baseline;padding:7px 0;border-bottom:1px solid var(--line)}
.bc-item:last-child{border-bottom:0}
.bc-cc{font:700 .8rem var(--mono);color:var(--accent);min-width:34px}
.bc-ch{font-size:.88rem}
.bc-more{margin-top:8px}
.bc-more summary{cursor:pointer;font-weight:700;min-height:44px;display:flex;align-items:center;color:var(--lime)}
/* Tarjetas compactas: desplegables "ver más" en partidos y señales */
.match-details{margin-top:10px}
.match-details summary,.sig-details summary{cursor:pointer;font-weight:700;min-height:44px;display:flex;align-items:center;color:var(--lime);font-size:14px}
.sig-details{margin-top:8px}
.match-details summary::-webkit-details-marker,.sig-details summary::-webkit-details-marker{color:var(--lime)}
@media(max-width:640px){.mgr-match-grid{grid-template-columns:1fr}}
/* buscador */
.sr-group{margin-bottom:24px}
.sr-group>h3{font-size:15px;margin-bottom:10px;display:flex;align-items:center;gap:10px}
.sr-group>h3 .count{font-family:var(--mono);font-size:11px;color:var(--muted);font-weight:400}
.sr-list{display:grid;gap:8px}
.sr-item{display:flex;justify-content:space-between;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:3px;padding:12px 16px;color:var(--ink);text-decoration:none}
a.sr-item:hover,a.sr-item:focus-visible{border-color:var(--lime)}
.sr-item .t{font-weight:600;min-width:0}
.sr-item .m{font-family:var(--mono);font-size:11.5px;color:var(--muted);text-align:right;flex:0 1 auto}
.sr-item .go{color:var(--lime);font-weight:700;flex:0 0 auto}
/* detalle */
.back-link{display:inline-flex;align-items:center;gap:8px;color:var(--lime);text-decoration:none;font-weight:700;margin-bottom:18px;min-height:44px}
.back-link:hover{text-decoration:underline}
.big-duo{display:flex;gap:32px;flex-wrap:wrap;margin:20px 0 12px}
.big-stat b{display:block;font-family:'Archivo Black';font-weight:400;font-size:58px;line-height:1;color:var(--lime)}
.big-stat.pub b{color:var(--blue)}
.big-stat small{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;color:var(--muted);text-transform:uppercase}
.verdict .prob-list{margin-top:18px}
.xg-duel{display:flex;align-items:baseline;gap:14px;margin:8px 0;flex-wrap:wrap}
.xg-duel b{font-family:'Archivo Black';font-weight:400;font-size:44px;color:var(--lime)}
.xg-duel span{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}
    .skip-link{position:absolute;left:-9999px;top:0;z-index:200;background:var(--accent);color:var(--accent-ink);font:800 .82rem/1.4 var(--mono);padding:12px 16px;border-radius:var(--radius-sm);text-decoration:none}
    .skip-link:focus-visible{left:8px;top:8px}
    .age-badge{display:inline-flex;align-items:center;min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);font:700 .68rem/1.15 var(--mono);letter-spacing:.025em;text-transform:uppercase;text-decoration:none;white-space:nowrap}
    .age-badge:hover,.age-badge:focus-visible{border-color:var(--accent);color:var(--accent)}
    .age-strip{margin:0 0 12px}
    .legal-body{max-width:74ch}
    .legal-body h3{font-size:1.02rem;margin:22px 0 8px;letter-spacing:-.01em}
    .legal-body p,.legal-body li{color:var(--muted);line-height:1.7;font-size:.93rem}
    .legal-body ul,.legal-body ol{margin:12px 0;padding-left:22px;display:grid;gap:8px}
    .legal-body strong{color:var(--ink)}
    .legal-links{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px}
    .legal-links a{color:var(--muted);font-size:.82rem}
    .waitlist{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);padding:26px}
    .waitlist .eyebrow{font:700 .68rem/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0 0 10px}
    .waitlist h2{margin:0 0 8px}
    .waitlist-sub{color:var(--muted);max-width:60ch;margin:0 0 18px}
    .waitlist-form{display:grid;gap:14px;max-width:520px}
    .waitlist-form .field{display:grid;gap:6px}
    .waitlist-form label{font-size:.82rem;font-weight:700;color:var(--ink)}
    .waitlist-form input[type=email],.waitlist-form input[type=text]{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);padding:12px;font-size:1rem;min-height:44px;width:100%;box-sizing:border-box}
    .waitlist-form input:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-color:var(--accent)}
    .waitlist-form .honeypot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
    .waitlist-form .consent{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start}
    .waitlist-form .consent input{width:20px;height:20px;margin-top:2px;accent-color:var(--accent)}
    .waitlist-form .consent label{font-weight:400;color:var(--muted)}
    .waitlist-form .consent a{color:var(--accent)}
    .btn-primary{background:var(--accent);color:var(--accent-ink);border:0;border-radius:var(--radius-sm);font:800 .9rem/1 var(--mono);text-transform:uppercase;letter-spacing:.04em;padding:14px 18px;min-height:48px;cursor:pointer}
    .btn-primary:disabled{opacity:.6;cursor:wait}
    .waitlist-status{min-height:1.4em;margin:0;font-size:.88rem;color:var(--muted)}
    .waitlist-status[data-kind=success]{color:var(--accent)}
    .waitlist-status[data-kind=error]{color:var(--live)}
    .waitlist-note{margin:0;font-size:.78rem;color:var(--muted)}    /* ---- Fase 1: señales, strike rate, momentum real, alineación, ficha ---- */
    .signals-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
    .signal-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;display:grid;gap:10px;align-content:start}
    .sig-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
    .sig-state{display:inline-flex;align-items:center;gap:8px;font:700 .78rem/1.2 var(--mono);text-transform:uppercase;letter-spacing:.04em}
    .sig-market{font:800 .95rem/1.2 var(--mono);color:var(--accent)}
    .sig-match{margin:0;color:var(--muted);font-size:.9rem}
    .sig-window{margin:0;font-size:.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}
    .sig-figures{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;text-align:center}
    .sig-fig{display:grid;gap:4px;justify-items:center}
    .sig-num{font:800 2rem/1 var(--mono);color:var(--ink)}
    .sig-lab{font:600 .68rem/1.2 var(--mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
    .sig-motivo{margin:0;font-size:.86rem}
    .sig-momentum{margin:0;font-size:.82rem;color:var(--muted)}
    .sig-ia{border-top:1px solid var(--line);padding-top:10px}
    .sig-ia summary{cursor:pointer;font-weight:700;font-size:.86rem;min-height:44px;display:flex;align-items:center}
    .sig-ia-text{color:var(--muted);line-height:1.7;font-size:.9rem}
    .sig-disclaimer{margin:0;font-size:.78rem;color:var(--muted)}
    .sig-bands{border-top:1px solid var(--line);padding-top:10px}
    .sig-bands summary{cursor:pointer;font-weight:700;font-size:.86rem;min-height:44px;display:flex;align-items:center}
    .sig-bands summary:hover,.sig-bands summary:focus-visible{color:var(--accent)}
    .bands-title{margin:0 0 4px;font-size:.86rem;font-weight:700}
    .bands-table{width:100%;border-collapse:collapse;font-size:.82rem;margin-top:8px}
    .bands-table th,.bands-table td{padding:6px 8px;text-align:center;border-bottom:1px solid var(--line)}
    .bands-table th[scope=row]{text-align:left;color:var(--muted);font-weight:600}
    .bands-table .late{background:rgba(217,255,67,.08);font-weight:700}
    .bands-late{margin:8px 0 0;font-size:.82rem;color:var(--muted)}
    .gr-rating{display:flex;align-items:baseline;gap:8px;margin:10px 0 2px;flex-wrap:wrap}
    .gr-num{font:800 1.4rem/1 var(--mono);color:var(--ink)}
    .gr-lab{font:700 .72rem/1.2 var(--mono);text-transform:uppercase;letter-spacing:.05em;color:var(--accent)}
    .gr-src{font-size:.72rem;color:var(--muted)}
    .last5 .gr{color:var(--muted);font-size:.8rem;white-space:nowrap}
    .strike-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-top:14px}
    .strike-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;display:grid;gap:6px;align-content:start}
    .strike-card h4{margin:0;font-size:.85rem;font-weight:600}
    .strike-rate{font:800 2.2rem/1 var(--mono);color:var(--accent)}
    .strike-meta{margin:0;color:var(--muted);font-size:.85rem}
    .momentum-chart.has-data .empty-label,.momentum-chart.has-data .radar-sweep{display:none}
    .momentum-chart svg{position:absolute;inset:0;width:100%;height:100%}
    .mom-home{fill:#35d07f}
    .mom-away{fill:#5ea1ff}
    .mom-goal{fill:#fff;stroke:#070A16;stroke-width:.5}
    .lineup{margin-top:12px;border-top:1px solid var(--line);padding-top:6px}
    .lineup summary{cursor:pointer;font-weight:700;min-height:44px;display:flex;align-items:center}
    .lineup-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:10px}
    .lineup-col h4{margin:0 0 8px;font-size:.85rem}
    .lineup-list{list-style:none;margin:0;padding:0;display:grid;gap:2px}
    .player-link{background:none;border:0;color:var(--ink);font:inherit;text-align:left;cursor:pointer;padding:6px 8px;border-radius:var(--radius-sm);min-height:44px;width:100%;box-sizing:border-box}
    .player-link:hover,.player-link:focus-visible{background:var(--panel-2);color:var(--accent)}
    .player-link:disabled{cursor:default;color:var(--muted)}
    .modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:300;display:flex;align-items:center;justify-content:center;padding:16px}
    .modal-overlay[hidden]{display:none}
    .player-modal{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);max-width:580px;width:100%;max-height:90vh;overflow:auto;padding:22px;position:relative}
    .modal-close{position:absolute;top:12px;right:12px;background:var(--panel-2);border:1px solid var(--line);color:var(--ink);border-radius:var(--radius-sm);min-height:44px;min-width:44px;padding:8px 12px;font:700 .8rem/1 var(--mono);cursor:pointer}
    .modal-close:hover,.modal-close:focus-visible{border-color:var(--accent);color:var(--accent)}
    .player-modal-title{margin:0 0 4px;font-size:1.05rem;padding-right:110px}
    .player-head{margin-bottom:6px}
    .player-name{font-size:1.25rem;font-weight:800;letter-spacing:-.01em}
    .player-sub{margin:6px 0 0;color:var(--muted);font-size:.88rem}
    .pfig-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;text-align:center;margin:14px 0}
    .pfig{display:grid;gap:4px;justify-items:center}
    .pfig-num{font:800 1.9rem/1 var(--mono);color:var(--ink)}
    .pfig-lab{font:600 .68rem/1.2 var(--mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
    .player-sec{margin:18px 0 8px;font-size:.95rem}
    .ptable{width:100%;border-collapse:collapse;font-size:.86rem}
    .ptable th,.ptable td{padding:7px 8px;border-bottom:1px solid var(--line);text-align:left}
    .ptable th{color:var(--muted);font-weight:600;width:55%}
    .ptable td{font-family:var(--mono);text-align:right}
    .pbar{display:grid;grid-template-columns:minmax(0,1fr) 120px 36px;gap:10px;align-items:center;margin:8px 0;font-size:.82rem}
    .pbar-lab{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .pbar-track{height:8px;background:var(--panel-2);border-radius:4px;overflow:hidden}
    .pbar-fill{height:100%;background:var(--accent);border-radius:4px}
    .pbar-val{font-family:var(--mono);text-align:right}
    .last5{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:.86rem}
    .last5 li{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline;padding:8px 0;border-bottom:1px solid var(--line)}
    .last5 li:last-child{border-bottom:0}
    @media (max-width:960px){.lineup-grid{grid-template-columns:1fr}.pbar{grid-template-columns:minmax(0,1fr) 90px 32px}}
    /* Legal docs: dedicated hash views (#privacidad, #cookies, #terminos).
       Hidden from the home page; only one is shown in its own view. */
    html.js section.legal-doc{display:none}
    html.js body.legal-view main>*:not(.legal-active):not(.legal-back){display:none}
    html.js body.legal-view section.legal-doc.legal-active{display:block}
    html.js body.legal-view main{padding-top:104px}
    .legal-back{display:none;margin:0 0 14px;font-size:.9rem}
    html.js body.legal-view .legal-back{display:block}
    .legal-back a{color:var(--accent);text-decoration:none}
    .sec-link{color:var(--accent);text-decoration:none;font-weight:600}
    .sec-link:hover,.sec-link:focus-visible{text-decoration:underline}
    .r-head{display:flex;align-items:center;gap:10px}
    .r-rank{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:30px;padding:0 8px;border-radius:8px;background:var(--panel-2);color:var(--accent);font-weight:800;font-size:.95rem}
    .legal-back a:hover{text-decoration:underline}
    /* Páginas legales dedicadas (/privacidad/, /cookies/, /terminos/).
       El CSS anterior ocultaba .legal-doc salvo en body.legal-view (router
       antiguo de una sola página); en multipágina cada documento legal vive
       en su propia página con body.legal-page y va siempre visible. */
    html.js body.legal-page section.legal-doc{display:block}
    html.js body.legal-page main{padding-top:104px}
    body.legal-page .legal-back{display:block}

    /* ---- Fase 1 (frontend): radar, min93, fichas, comparar, home ---- */
    .gr-fig{margin:18px 0;max-width:420px}
    .gr-fig svg{width:100%;height:auto;display:block}
    .gr-radar-lab{fill:var(--muted);font-size:11px;font-family:var(--mono)}
    .gr-fig figcaption{font-size:.8rem;color:var(--muted);margin-top:6px}
    /* ---- Ficha de jugador estilo BeSoccer Pro: pizza, totales ---- */
    .tot-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0}
    .tot-cell{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 10px;text-align:center}
    .tot-num{font:800 1.6rem/1.2 var(--mono);color:var(--ink)}
    .tot-lab{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-top:4px}
    @media(max-width:560px){.tot-grid{grid-template-columns:repeat(2,1fr)}}
    .min93-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin:14px 0}
    .min93-comps{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-top:14px}
    .min93-comp{display:grid;gap:6px;background:var(--panel-2);border-radius:var(--radius-sm);padding:12px}
    .mc-lab{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}
    .mc-val{font:800 1.25rem/1 var(--mono);color:var(--ink)}
    .min93-formula{list-style:none;margin:14px 0;padding:0;display:grid;gap:8px}
    .min93-formula li{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 14px;font-size:.9rem;color:var(--muted)}
    .min93-formula li b{color:var(--lime);font-family:var(--mono)}
    .form-badges{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0}
    .form-badge{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;font:800 .95rem/1 var(--mono);border:1px solid var(--line)}
    .form-w{background:rgba(217,255,67,.14);border-color:var(--lime);color:var(--lime)}
    .form-d{background:var(--panel-2);color:var(--muted)}
    .form-l{background:rgba(255,59,92,.12);border-color:#FF3B5C;color:#FF3B5C}
    .squad-list{display:grid;gap:6px;margin:10px 0}
    .squad-row{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 14px}
    .squad-row .player-link{font-weight:600}
    .squad-pos{margin-left:auto;color:var(--muted);font-size:.8rem}
    .avail{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:4px 10px;border-radius:20px;border:1px solid var(--line);color:var(--muted)}
    .avail.avail_ok{color:var(--lime);border-color:var(--lime)}
    .avail.avail_out{color:#FF3B5C;border-color:#FF3B5C}
    .vs-pickers{display:grid;grid-template-columns:1fr 1fr;gap:16px}
    @media (max-width:720px){.vs-pickers{grid-template-columns:1fr}}
    .vs-chosen{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;align-items:center}
    .vs-legend{display:flex;gap:18px;flex-wrap:wrap;margin:6px 0 4px}
    .vs-leg{display:inline-flex;align-items:center;gap:8px;font-weight:600}
    .vs-dot{display:inline-block;width:12px;height:12px;border-radius:50%}
    .vs-verdict{font-size:1.02rem;font-weight:600;margin:14px 0}
    /* FIX 2026-10-19: auto-fill dejaba columnas fantasma vacías que ocupaban
       espacio (la mitad derecha de la home en desktop ancho). auto-fit
       colapsa las columnas vacías y los paneles usan todo el ancho. */
    .verdicts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}
    .verdict-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;display:grid;gap:10px;align-content:start}
    .verdict-title{margin:0;font-size:1rem}
    .verdict-text{margin:0;color:var(--muted);line-height:1.6;font-size:.92rem}
    .verdict-link{color:var(--lime);font-weight:700;font-size:.85rem}
    /* ---- RANKINGS compactos (2026-10-20) ----
       Fila de una línea: posición discreta · nombre · métrica a la derecha
       en lima, sin caja por fila (separador sutil; el panel es UNA tarjeta)
       y barra fina proporcional al líder. Aplica a la home (goles tardíos,
       top xG), /indice/ y especialistas de /liga/. */
    .topxg-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:0;counter-reset:txg}
    .topxg-row{position:relative;display:flex;align-items:center;gap:10px;min-height:52px;padding:9px 4px;border-bottom:1px solid var(--line)}
    .topxg-row:last-child{border-bottom:0}
    .topxg-row::before{counter-increment:txg;content:counter(txg);font:800 .85rem/1 var(--mono);color:var(--muted);min-width:22px}
    .topxg-row:hover{background:rgba(255,255,255,.025)}
    .topxg-row:focus-within{outline:2px solid var(--lime);outline-offset:-2px}
    .topxg-row a.player-link{position:static}
    .topxg-row a.player-link::after{content:"";position:absolute;inset:0}
    .rank-mid{flex:1 1 auto;min-width:0;display:grid;gap:2px}
    .rank-mid a.player-link{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-weight:600}
    .topxg-team{color:var(--muted);font-size:.75rem}
    .late-stat{margin-left:auto;flex:0 0 auto;display:flex;align-items:baseline;gap:8px}
    .topxg-xg{font:800 1.3rem/1 var(--mono);color:var(--lime)}
    .lm-label{font-size:.68rem;color:var(--muted)}
    .lm-sub{flex:0 0 auto;display:flex;align-items:baseline;gap:4px;font-size:.72rem;color:var(--muted)}
    .lm-sub b{font:700 .85rem/1 var(--mono);color:var(--ink)}
    .rank-bar{position:absolute;left:0;right:0;bottom:-1px;height:3px;pointer-events:none}
    .rank-bar i{display:block;height:100%;border-radius:2px;background:var(--lime);opacity:.28}
    #late-out .topxg-row .rank-bar,#topxg-out .topxg-row .rank-bar{left:32px;right:4px}
    #late-out .verdict-card{padding:14px 16px;gap:6px}
    .indice-rank li{position:relative}
    .indice-rank .rank-bar{left:4px;right:4px}
    .spot-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:4px}
    .spot-team{font-size:1.25rem;font-weight:800;color:var(--ink);text-decoration:none}
    a.spot-team:hover{text-decoration:underline}
    .spot-league{color:var(--muted);font-size:.85rem}

    /* Ficha de partido (/partido/): cabecera, gráficos y comparativas. */
    .prob-title{font-size:1rem;margin:20px 0 8px}
    .match-board{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:center;margin:14px 0}
    .match-team{font-weight:800;font-size:1.05rem;min-width:0}
    .match-team.away{text-align:right}
    .match-team .player-link{width:auto;max-width:100%}
    .match-mid{text-align:center}
    .match-score{font:800 2rem/1 var(--mono)}
    .match-status{color:var(--muted);font-size:.85rem;margin-top:4px}
    .pitch{width:100%;max-width:640px;height:auto;display:block;margin:8px auto;border:1px solid var(--line);border-radius:3px}
    .pitch-bg{fill:#0A1420}
    .pitch-line{fill:none;stroke:rgba(255,255,255,.35);stroke-width:.4}
    .pitch-dot{fill:rgba(255,255,255,.55)}
    .shot{stroke:rgba(0,0,0,.5);stroke-width:.3;opacity:.88}
    .shot-legend{display:inline-flex;align-items:center;gap:6px;margin:2px 4px 2px 0}
    .shot-dot{width:10px;height:10px;border-radius:50%;display:inline-block}
    .shotmap-filters{display:flex;gap:8px;margin:10px 0 4px;flex-wrap:wrap}
    .sm-filter{background:transparent;border:1px solid var(--line);border-radius:999px;padding:7px 16px;font-size:.85rem;color:var(--muted);cursor:pointer}
    .sm-filter:hover{border-color:var(--accent);color:var(--ink)}
    .sm-filter.on{background:var(--accent);border-color:var(--accent);color:#0A0F1E;font-weight:700}
    .avgpos circle{fill:rgba(217,255,67,.16);stroke:var(--accent);stroke-width:.5}
    .avgpos.avg-away circle{fill:rgba(255,59,92,.16);stroke:#FF3B5C}
    .avgpos-n{font:700 2.4px var(--mono);fill:var(--ink)}
    .xg-chart{width:100%;max-width:640px;height:auto;display:block}
    .xg-grid{stroke:rgba(255,255,255,.12);stroke-width:.5}
    .xg-tick{font:400 10px var(--mono);fill:var(--muted)}
    .xg-line{stroke-width:2}
    .xg-home{stroke:var(--accent)}
    .xg-away{stroke:#4DA3FF}
    .h2h-trio{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;text-align:center;margin:10px 0}
    .h2h-num{font:800 1.6rem/1 var(--mono)}
    .h2h-lab{font-size:.78rem;color:var(--muted);margin-top:4px}
    .h2h-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:2px}
    .h2h-list li{padding:7px 0;border-bottom:1px solid var(--line)}
    .h2h-list li:last-child{border-bottom:0}
    .ev-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:2px}
    .ev{display:flex;gap:10px;align-items:baseline;padding:7px 0;border-bottom:1px solid var(--line)}
    .ev:last-child{border-bottom:0}
    .ev-min{font:700 .85rem var(--mono);min-width:46px}
    .ev-goal .ev-min{color:var(--accent)}
    .ev-card .ev-min{color:#FF3B5C}
    .cmp-form{display:flex;gap:8px;margin:10px 0;flex-wrap:wrap;align-items:center}
    .cmp-input{background:var(--panel-2);border:1px solid var(--line);color:var(--ink);border-radius:3px;padding:10px 12px;min-height:44px;font:inherit;max-width:240px}
    .match-ficha{margin-left:auto;font-size:.78rem;color:var(--accent);white-space:nowrap}
    .ptd-changes{margin:0 0 14px}
    .chg-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px}
    .chg-item{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px 12px}
    .chg-what{font-weight:700;font-size:.86rem;color:var(--accent)}
    .chg-det{font-size:.84rem;color:var(--muted)}
    @media (max-width:640px){.match-score{font-size:1.5rem}.match-team{font-size:.92rem}}
    /* T11: ranking min93 por liga en /tramo-final/ */
    .m93-idx{white-space:nowrap}
    .m93-idx b{font:800 1rem/1 var(--mono)}
    .mini-bar{display:block;height:6px;min-width:90px;background:var(--panel-2);border-radius:3px;margin-top:6px;overflow:hidden}
    .mini-fill{display:block;height:100%;background:var(--lime);border-radius:3px}
    /* T5: evolución por temporada en /jugador/ */
    .evo{margin:4px 0 8px}
    .evo-metric{margin:14px 0}
    .evo-head{margin-bottom:4px}
    .evo-label{font:700 .78rem/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}
    .evo-row{display:flex;align-items:center;gap:10px;margin:5px 0}
    .evo-row .mini-bar{flex:1;min-width:0;margin-top:0}
    .evo-tag{flex:0 0 56px;font:600 .68rem/1.4 var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
    .evo-val{flex:0 0 46px;text-align:right;font:700 .82rem/1.4 var(--mono);color:var(--ink)}
    .mini-fill.evo-old{background:var(--muted);opacity:.55}
    .mini-fill.evo-avg{background:var(--ink);opacity:.85}
    @media (max-width:640px){.evo-tag{flex-basis:48px}.evo-val{flex-basis:40px}}
    .tops{display:grid;gap:8px;margin:12px 0}
    .top-row{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 14px}
    .top-pos{font:700 .85rem/1 var(--mono);color:var(--muted);min-width:18px;flex:none}
    .top-name{flex:1;color:var(--ink);text-decoration:none;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .top-val{font:800 .95rem/1 var(--mono);color:var(--lime);flex:none}
    /* Ficha de entrenador: esquema de la formación preferida */
    .mgr-pitch{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px 8px;margin:10px 0;max-width:260px}
    .mgr-pitch-row{display:flex;justify-content:center;gap:16px;margin:12px 0}
    .mgr-dot{width:14px;height:14px;border-radius:50%;background:var(--accent);flex:none}
    .mgr-dot.mgr-gk{background:var(--muted)}

/* ---- /partido/: ficha del partido (21 clases usadas por match.js + afines) ---- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin:0 0 16px}
.match-head2{margin:0 0 6px}
.match-team-name{font-weight:800;font-size:1.05rem}
.cmp-res{margin-top:12px;display:grid;gap:10px}
.h2h-cell{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 8px}
.ev-what{color:var(--ink)}
.model-bars{display:grid;gap:8px;margin:10px 0}
.model-bar-row{display:grid;grid-template-columns:minmax(90px,1fr) 2fr auto;gap:10px;align-items:center}
.model-bar-lab{font-size:.82rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.model-bar-track{background:var(--bg);border:1px solid var(--line);border-radius:999px;height:10px;overflow:hidden}
.model-bar-fill{height:100%;border-radius:999px;background:var(--accent)}
.mb-home{background:var(--accent)}
.mb-draw{background:var(--muted)}
.mb-away{background:var(--live)}
.model-bar-val{font:700 .85rem var(--mono);min-width:52px;text-align:right}
.model-bar-row-fav .model-bar-lab{color:var(--accent)}
.model-bar-row-fav .model-bar-val{color:var(--accent)}
.model-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin:10px 0}
.model-cell{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px;text-align:center}
.model-k{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}
.model-v{font:800 1.05rem/1.2 var(--mono)}
.motm-card{background:var(--panel);border:1px solid var(--accent);border-radius:var(--radius);padding:18px;margin:10px 0}
.motm-name{font-weight:800;font-size:1.1rem;margin-bottom:4px}
.curio-list{margin:8px 0;padding-left:20px;display:grid;gap:8px;color:var(--ink);font-size:.92rem;line-height:1.6}
.curio-ai{border-left:3px solid var(--accent);margin:12px 0;padding:10px 14px;color:var(--muted);font-style:italic;line-height:1.7}
.video-embed{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;border-radius:var(--radius-sm);margin:10px 0;background:var(--bg)}
.video-embed iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0}
.video-link{margin:8px 0;font-size:.9rem}
.ev-subst .ev-min{color:var(--muted)}
.no-res{color:var(--muted);font-size:.88rem;margin:10px 0}

/* Pronósticos de hoy (/pronosticos/) */
.prn-league{margin:26px 0}
.prn-league-name{font-size:1.05rem;font-weight:800;margin:0 0 12px;color:var(--ink)}
.prn-match{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px 16px;margin:10px 0}
.prn-match-head{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.prn-time{font:700 .85rem/1.4 var(--mono);color:var(--accent);min-width:52px}
.prn-teams{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-weight:700}
.prn-vs{color:var(--muted);font-weight:400}
.prn-btn{margin-top:10px;background:transparent;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);font:700 .82rem/1.4 var(--mono);padding:8px 14px;cursor:pointer}
.prn-btn:hover{border-color:var(--accent);color:var(--accent)}
.prn-pred{margin-top:6px}
.prn-score{margin:10px 0 0;font-size:.92rem}
.preview-narrative{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}
.narr-body{display:grid;gap:12px;margin-top:10px}
.narr-p{margin:0;line-height:1.65;font-size:.95rem;color:var(--ink)}
.narr-p::before{content:"▸ ";color:var(--accent)}

/* Previas (/previas/): indice y articulos */
.previa-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:18px;margin-top:28px}
.previa-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px;box-shadow:5px 5px 0 rgba(0,0,0,.35);display:grid;gap:10px;align-content:start}
.previa-card h2{margin:0;font-size:1.15rem;line-height:1.35}
.previa-card h2 a{color:var(--ink);text-decoration:none}
.previa-card h2 a:hover{color:var(--lime)}
.previa-card p{margin:0;color:var(--muted);font-size:.92rem;line-height:1.6}
.previa-kicker{font:700 .7rem/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--lime)}
.previa-meta{font-size:.8rem;color:var(--muted)}
.previa-meta a{color:var(--lime);font-weight:700}
.article-meta{font-size:.82rem;color:var(--muted);margin:-28px 0 30px;font-family:var(--mono)}
.article-body{max-width:74ch}
.article-body h2{font-size:1.35rem;margin:34px 0 12px;letter-spacing:-.01em}
.article-body p{color:var(--muted);line-height:1.75;font-size:.98rem;margin:0 0 16px}
.article-body strong{color:var(--ink)}
.article-body a{color:var(--lime)}
.article-body ul{margin:0 0 16px;padding-left:22px;display:grid;gap:8px;color:var(--muted);line-height:1.7}
.crumbs{font-size:.82rem;color:var(--muted);margin-bottom:14px}
.crumbs a{color:var(--muted)}
.table-wrap{overflow-x:auto;margin:20px 0 28px}
.data-table{width:100%;border-collapse:collapse;font-size:.88rem;min-width:560px}
.data-table caption{text-align:left;font-size:.8rem;color:var(--muted);padding-bottom:10px}
.data-table th,.data-table td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left}
.data-table thead th{color:var(--muted);font-weight:700;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}
.data-table td:first-child{font-family:var(--mono);color:var(--muted)}
.data-table td strong{color:var(--lime)}
.data-table a{color:var(--ink);font-weight:600}
.article-back{margin-top:36px}
.article-back a{color:var(--lime);font-weight:700}

/* Escáner (/escaner/): filtros multicriterio + resultados */
.sc-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:24px 0}
.sc-group{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:0}
.sc-group legend{font:700 .75rem/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--lime);padding:0 6px}
.sc-group label{display:block;font-size:.82rem;color:var(--muted);margin:10px 0 4px}
.sc-group label:first-of-type{margin-top:6px}
.sc-check{display:flex!important;align-items:center;gap:8px;font-size:.9rem!important;color:var(--ink)!important;margin:8px 0!important;cursor:pointer}
.sc-check input{accent-color:var(--lime);width:16px;height:16px}
.sc-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sc-hint{font-size:.78rem;color:var(--muted);margin:8px 0 0;line-height:1.5}
.sc-actions{display:flex;gap:12px;flex-wrap:wrap;margin:4px 0 8px}
.sc-meta{display:flex;gap:16px;align-items:center;margin:14px 0 6px;font-size:.85rem;color:var(--muted)}
#sc-count{font-weight:700;color:var(--ink)}
#sc-out{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;margin-top:12px}
.sc-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:grid;gap:8px;align-content:start}
.sc-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.sc-league{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.sc-badge{display:inline-flex;align-items:center;gap:6px;font:700 .72rem/1.4 var(--mono);color:var(--muted)}
.sc-badge.live{color:var(--lime)}
.sc-mid{display:flex;justify-content:space-between;align-items:center;gap:10px}
.sc-teams{display:grid;gap:2px;font-weight:600;font-size:.95rem}
.sc-team{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
.sc-vs{color:var(--muted);font-weight:400;font-size:.8rem}
.sc-score{font:700 1.3rem/1 var(--mono);white-space:nowrap}
.sc-meta-row{display:flex;gap:8px;flex-wrap:wrap}
.sc-chip{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:999px;padding:3px 10px;color:var(--muted)}
.sc-pbar{display:inline-block;width:56px;height:6px;background:rgba(255,255,255,.08);border-radius:3px;overflow:hidden;vertical-align:middle}
.sc-pfill{display:block;height:100%;background:var(--lime);border-radius:3px}
.sc-link{font-size:.85rem;color:var(--lime);font-weight:700;text-decoration:none}
.sc-link:hover{text-decoration:underline}
/* Track record (/track-record/): resumen + tabla diaria de señales liquidadas */
.trk-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin:24px 0}
.trk-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.trk-card .trk-num{font:700 1.7rem/1.2 var(--mono);color:var(--ink)}
.trk-card .trk-num.hit{color:var(--lime)}
.trk-card .trk-label{font-size:.78rem;color:var(--muted);margin-top:6px}
.trk-empty{background:var(--panel);border:1px dashed var(--line);border-radius:12px;padding:28px 24px;margin:24px 0;text-align:center}
.trk-empty-title{font-size:1.15rem;font-weight:700;margin:0 0 10px;color:var(--ink)}
.trk-empty p:last-child{margin-bottom:0;color:var(--muted);line-height:1.6}
.trk-state{color:var(--muted);padding:24px 0}
.trk-table td.num,.trk-table th.num{text-align:right}
.trk-note{font-size:.82rem;color:var(--muted);line-height:1.6;margin-top:8px}
/* Comunidad MVP (workstream 2): pronóstico 1X2 + comentarios + ranking */
.cm-block{margin-top:18px}
.cm-title{font-size:1.15rem;margin:0 0 6px}
.cm-h{font-size:1rem;margin:18px 0 8px}
.cm-note{font-size:.82rem;color:var(--muted);line-height:1.6}
.cm-sub{font-size:.85rem;color:var(--muted);line-height:1.6;margin:6px 0}
.cm-small{font-size:.78rem}
.cm-row{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.cm-input{background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:8px;color:var(--ink);padding:9px 12px;font-size:.9rem;min-width:200px}
.cm-input::placeholder{color:var(--muted)}
.cm-text{width:100%;min-height:74px;resize:vertical;font-family:inherit}
.cm-pick-btns{display:flex;gap:10px;margin:10px 0}
.cm-pick-btn{flex:1;max-width:120px;padding:12px 0;font:700 1.1rem/1 var(--mono);background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:10px;color:var(--ink);cursor:pointer}
.cm-pick-btn:hover{border-color:var(--lime);color:var(--lime)}
.cm-pick-btn:disabled{opacity:.5;cursor:wait}
.cm-btn{background:var(--lime);border:0;border-radius:8px;color:#0a0f0a;font-weight:700;padding:10px 18px;font-size:.9rem;cursor:pointer}
.cm-btn:disabled{opacity:.5;cursor:wait}
.cm-msg{font-size:.85rem;min-height:1.4em;margin:8px 0 0}
.cm-dist{margin:12px 0 4px}
.cm-bar-row{display:grid;grid-template-columns:70px 1fr 48px;gap:10px;align-items:center;margin:6px 0;font-size:.82rem}
.cm-bar-lab{font-family:var(--mono)}
.cm-bar-track{height:8px;background:rgba(255,255,255,.08);border-radius:4px;overflow:hidden}
.cm-bar-fill{height:100%;background:var(--lime);border-radius:4px}
.cm-bar-pct{font-family:var(--mono);text-align:right}
.cm-form{display:grid;gap:10px;margin-top:12px}
.cm-list{display:grid;gap:12px;margin:12px 0}
.cm-item{background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.cm-item-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px}
.cm-nick{font-size:.9rem;color:var(--lime)}
.cm-time{font-size:.75rem;color:var(--muted)}
.cm-item .cm-text{margin:0 0 8px;line-height:1.55;font-size:.92rem}
.cm-report{background:none;border:0;color:var(--muted);font-size:.75rem;cursor:pointer;padding:0;text-decoration:underline}
.cm-report:hover{color:var(--ink)}
.cm-link{display:inline-block;margin-top:14px;font-size:.9rem;color:var(--lime);font-weight:700;text-decoration:none}
.cm-link:hover{text-decoration:underline}
.cm-how{margin-top:28px}
.cm-rg{margin-top:18px;background:rgba(255,255,255,.03);border:1px solid var(--line);border-left:3px solid var(--lime);border-radius:8px;padding:14px 16px;font-size:.85rem;color:var(--muted);line-height:1.6}
.cm-rg p{margin:0}
/* Auth (fase 1: registro/login de usuarios) */
.auth-form{display:grid;gap:4px;max-width:520px}
.auth-form .field-row{margin-bottom:14px}
.auth-input{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);padding:12px;font-size:1rem;min-height:48px;width:100%;box-sizing:border-box;font-family:inherit}
.auth-input:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-color:var(--accent)}
.auth-msg{min-height:1.4em;margin:0 0 8px;font-size:.9rem;color:var(--red)}
.auth-cta{border:1px dashed var(--line);border-radius:10px;padding:16px;margin-top:12px;text-align:center;color:var(--muted);font-size:.92rem}
.auth-cta a{color:var(--lime);font-weight:700}
.auth-as{font-size:.85rem;color:var(--muted);margin:0 0 10px}
.auth-as b{color:var(--lime)}

/* ---- BLOQUE 4: tramo final (métrica titular de la ficha de equipo) ---- */
.late-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:16px 0}
.late-num{font:800 1.6rem/1 var(--mono);color:var(--accent)}
.late-lbl{font-size:.84rem;font-weight:600;color:var(--ink)}
.late-sub{font-size:.76rem;color:var(--muted)}
/* ---- BLOQUE 4: página /indice/ ---- */
.indice-formula{color:var(--muted);font-size:.9rem;line-height:1.65;max-width:72ch}
.indice-rank{display:grid;gap:8px;margin:12px 0 26px;padding:0;list-style:none}
.indice-rank li{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:baseline;border-bottom:1px solid var(--line);padding:8px 0}
.indice-pos{font:800 .9rem/1 var(--mono);color:var(--muted)}
.indice-team{font-weight:700}
.indice-team a{color:var(--ink);text-decoration:none}
.indice-team a:hover{color:var(--accent)}
.indice-val{font:700 .9rem/1.4 var(--mono);color:var(--accent);text-align:right}
.indice-league{display:block;font-size:.75rem;color:var(--muted);font-weight:400}
.liga-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:18px 0 26px}
.liga-stat{background:var(--card,#0f1722);border:1px solid var(--line,#1e293b);border-radius:12px;padding:14px 12px;text-align:center}
.liga-num{display:block;font:700 1.5rem/1.2 var(--mono);color:var(--accent)}
.liga-lbl{display:block;font-weight:700;margin-top:6px;font-size:.85rem}
.liga-sub{display:block;font-size:.75rem;color:var(--muted);margin-top:4px}

/* ---- HOME: sección "Goles tardíos" ----
   2 paneles equilibrados (1fr 1fr) en desktop, 1 columna en móvil.
   El acabado de filas compactas vive en el bloque "RANKINGS compactos". */
#late-out .verdicts-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:860px){#late-out .verdicts-grid{grid-template-columns:1fr}}

/* ---- HOME: tabla "Partidos de hoy" (rediseño 2026-10-19) ----
   Desktop: fila-tabla real en 4 columnas (hora | equipos+liga | probs |
   marcador) sin vacío muerto en el medio; la liga es un caption bajo los
   equipos, no un texto perdido en el extremo derecho. Móvil: apilado. */
#hoy .sr-list{display:flex;flex-direction:column;gap:8px;margin-top:16px}
/* ---- HOME: anatomía de la fila de «Partidos de hoy» (2026-10-20) ----
   Orden CEO: sin vacío en el centro. De izquierda a derecha:
   1) hora (fija) · 2) equipos + liga como caption · 3) ZONA CENTRAL con el
   pronóstico como bloque centrado (1/X/2 + marcador probable; «Pronóstico
   no disponible» o marcador final, centrados, si no hay modelo) ·
   4) chip de tiempo al extremo derecho como dato secundario. */
.today-row{display:grid;grid-template-columns:64px minmax(0,1fr) minmax(0,1fr) auto;gap:2px 18px;align-items:center;text-decoration:none}
.today-ko{font-weight:700;font-family:var(--mono);color:var(--accent);grid-column:1;grid-row:1/3;align-self:center}
.today-teams{font-weight:600;grid-column:2;grid-row:1;align-self:end;min-width:0}
#hoy .today-meta{font-size:12px;opacity:.75;grid-column:2;grid-row:2;align-self:start;text-align:left}
.today-mid{grid-column:3;grid-row:1/3;align-self:center;justify-self:center;display:flex;align-items:center;justify-content:center;gap:6px 12px;flex-wrap:wrap;min-width:0;text-align:center}
.today-probs{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;max-width:340px}
.today-score{font-size:12px;opacity:.8;font-family:var(--mono);white-space:nowrap}
.today-final{font-family:var(--mono);font-size:15px;font-weight:700;white-space:nowrap}
.today-nopred{font-size:12px;opacity:.6;white-space:nowrap}
.today-end{grid-column:4;grid-row:1/3;align-self:center;justify-self:end;min-width:0;display:flex;align-items:center}
.today-end .wx-chip{margin-left:0}
.tf-chip{font-size:12px;padding:3px 8px;border-radius:999px;border:1px solid rgba(255,255,255,.18);white-space:nowrap}
/* Chips de posición y tiempo en «Partidos de hoy» (datos del day-forecast) */
.tm{display:inline-block}
.pos-chip{font-size:.72em;font-weight:700;color:var(--accent,#9dff57);letter-spacing:.02em}
.wx-chip{display:inline-flex;align-items:center;gap:3px;font-size:11px;line-height:1;opacity:.85;border:1px solid rgba(255,255,255,.14);border-radius:999px;padding:2px 8px;margin-left:8px;white-space:nowrap;vertical-align:baseline}
.wx-chip .wx-ic{font-size:12px}
@media(max-width:760px){
  .wx-chip{margin-left:6px}
  .wx-chip .wx-t{display:none}
}
.tf-pick{background:var(--lime,#b7f04b);color:#111;font-weight:700;border-color:transparent}
@media(max-width:760px){
  .today-row{grid-template-columns:52px minmax(0,1fr) auto;gap:4px 10px}
  .today-ko{grid-row:1/3}
  .today-teams{grid-column:2;grid-row:1}
  #hoy .today-meta{grid-column:2;grid-row:2}
  .today-end{grid-column:3;grid-row:1/3;justify-self:end;align-self:start}
  .today-mid{grid-column:1/4;grid-row:3;justify-self:start;text-align:left}
  .today-probs{justify-content:flex-start;max-width:none}
}

/* ---- HOME: sistema único de bordes (2026-10-20) ----
   Orden CEO: un solo borde en todo el sitio. El canónico es el del primer
   espacio (hero): .wrap de base.html (1180/1560/1720px + padding 24/32/40).
   Se eliminaron los topes propios de 1400px que tenían #accesos,
   #goles-tardios, #veredictos, #top-xg y #tramo-spot: todas las secciones
   de la home comparten el mismo x inicial/final que la cabecera y el pie. */

/* ---- HOME: accesos directos (2026-10-19) ---- */
.access-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:16px}
.access-card{display:block;padding:14px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.02);text-decoration:none;color:inherit;transition:border-color .15s}
.access-card:hover{border-color:var(--lime)}
.access-card b{display:block;font-size:15px;margin-bottom:4px}
.access-card span{font-size:12.5px;color:var(--muted)}
.access-live{border-color:var(--lime)}
.access-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--red);margin-right:6px;animation:blink 1.4s infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.35}}

/* ---- HOME: módulo compacto "Ahora en directo" (2026-10-19) ----
   Misma lógica que la tabla del día: el marcador vive en la zona central
   (centrado en su carril), no arrinconado al borde. */
.now-row{display:grid;grid-template-columns:52px minmax(0,1.4fr) minmax(0,1fr);gap:10px;align-items:center;padding:10px 4px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit}
.now-row:hover{background:rgba(255,255,255,.02)}
.now-min{font-family:var(--mono);font-size:13px;color:var(--lime)}
.now-teams{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.now-score{font-family:var(--mono);font-size:15px;font-weight:700;justify-self:center}

/* ---- /en-directo/: estado vacío útil (2026-10-19) ---- */
.live-empty-block{margin-top:6px}
.live-empty-sec{margin-top:18px}
.live-empty-h{font-size:15px;margin:0 0 8px;color:var(--ink)}
.live-empty-list{list-style:none;margin:0;padding:0}
.live-empty-row{display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 4px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit;font-size:14px}
.live-empty-row:hover{background:rgba(255,255,255,.02)}
.le-when{font-family:var(--mono);font-size:12.5px;color:var(--lime)}
.le-teams{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.le-lg{font-size:12px;color:var(--muted)}
.le-go{font-size:12px;color:var(--lime);white-space:nowrap}

/* (tope de 1400px de #accesos eliminado: ver «sistema único de bordes») */

/* ---- HOME: modelo de espacios, la home como índice denso (2026-10-20) ----
   Auditoría Forebet: centro con la tabla; laterales con resúmenes que
   enlazan a su página dedicada. ≥1280px: 3 columnas; 1024–1279: centro +
   derecha con la nav en chips horizontales; <1024: una columna (chips
   arriba, centro, widgets debajo por prioridad). */
.home-3col{display:grid;grid-template-columns:200px minmax(0,1fr) 280px;gap:24px;max-width:1180px;margin:0 auto;padding:0 24px;align-items:start}
/* El grid de 3 columnas usa el MISMO sistema canónico que .wrap (hero):
   los raíles conservan 200/280px fijos y el centro absorbe la diferencia.
   Mismo x inicial/final que cabecera, hero, secciones y pie a todo viewport. */
@media(min-width:1400px){.home-3col{max-width:1560px;padding:0 32px}}
@media(min-width:1800px){.home-3col{max-width:1720px;padding:0 40px}}
.rail-main{min-width:0}
.rail-nav{position:sticky;top:84px;display:grid;gap:14px;align-content:start}
.rail-side{display:grid;gap:14px;align-content:start}
/* Anti-solape (incidencia 2026-10-20): nada dentro de un rail puede forzar su
   carril ni pintar fuera de él. Los rails son grid items en carriles fijos
   (200px/280px); sin esta contención, los enlaces con texto largo (nowrap)
   estiraban el min-content del bloque y, como el rail es position:sticky
   (posicionado), el fondo del panel pintaba POR ENCIMA del centro. */
.rail-nav,.rail-side{min-width:0;max-width:100%}
.rail-block{min-width:0;overflow:hidden}
.rail-links{min-width:0}
.rail-link{min-width:0}
.rail-link b,.rail-link>span{min-width:0}
/* El centro no hereda el ritmo vertical de 88px de section.block (base.html):
   las secciones del grid se suceden por su altura natural, sin huecos. */
.rail-main .block{padding-top:20px;padding-bottom:28px}
.rail-block{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px}
.rail-block[hidden]{display:none}
.rail-title{font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin:0 0 8px}
.rail-links{display:grid;gap:2px}
.rail-link{display:flex;align-items:center;gap:8px;padding:7px 6px;border-radius:6px;color:var(--ink);text-decoration:none;font-size:.88rem}
.rail-link:hover{background:rgba(255,255,255,.045)}
.rail-link b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rail-link>span{color:var(--muted);font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rail-link .cnt{margin-left:auto;flex:0 0 auto;font-family:var(--mono);font-size:.72rem;font-weight:700;color:var(--lime);background:rgba(217,255,67,.1);border:1px solid rgba(217,255,67,.25);padding:3px 8px;border-radius:99px}
/* Rail izquierdo: nombre y descripción envuelven con salto de palabra normal
   (ligas, días y HERRAMIENTAS: «Escáner», «Estrategias», «Tus criterios,
   en vivo»…). Sin line-clamp: el wrap plano no depende de rarezas de
   flex-item y no puede truncar a mitad de palabra en ningún navegador.
   La contención anti-solape sigue intacta: nada fuerza el carril ni pinta
   fuera de él. */
.rail-nav .rail-link{align-items:flex-start;flex-wrap:wrap}
.rail-nav .rail-link b{white-space:normal;flex:1 1 auto;min-width:0}
.rail-nav .rail-link>span:not(.cnt){white-space:normal;flex:1 1 100%;min-width:0}
.rail-nav .rail-link .cnt{margin-top:1px;flex:0 0 auto}
.rail-more{display:inline-block;margin-top:10px;font-size:.84rem;font-weight:700;color:var(--lime);text-decoration:none}
.rail-more:hover{text-decoration:underline}
/* Filas compactas del rail: mismo lenguaje que los rankings (topxg-row). */
.rail-block .topxg-list{list-style:none;margin:0;padding:0;counter-reset:txg}
.rail-block .topxg-row{min-height:48px;padding:8px 4px}
.rail-track-head{display:flex;align-items:baseline;gap:10px;margin-bottom:8px}
.rail-track-big{font-family:var(--mono);font-size:1.35rem;font-weight:800;color:var(--lime)}
.rail-track-big small{font-size:.72rem;color:var(--muted);font-weight:400}
.rail-track-sub{font-size:.78rem;color:var(--muted);margin-bottom:8px}
.rail-track-sub b{color:var(--ink);font-family:var(--mono)}
.rail-arch{list-style:none;margin:0;padding:0;display:grid}
.rail-arch li{display:flex;align-items:center;gap:8px;padding:7px 4px;border-bottom:1px solid var(--line);font-size:.84rem}
.rail-arch li:last-child{border-bottom:0}
.rail-arch .ok{color:var(--lime);font-weight:800}
.rail-arch .ko{color:var(--red);font-weight:800}
.rail-arch a{color:var(--ink);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rail-arch a:hover{color:var(--lime)}
/* Especialistas del rail derecho: la fila se parte en dos líneas y el nombre
   del equipo usa todo el ancho disponible, así que siempre es
   identificable (el ellipsis solo entra en nombres larguísimos). */
.rail-block .topxg-row{flex-wrap:wrap;row-gap:2px}
.rail-block .topxg-row .rank-mid{flex:1 1 100%;min-width:0}
.rail-block .topxg-row .late-stat{margin-left:0}
.rail-block .topxg-row .lm-sub{margin-left:auto}
/* Tendencias y novedades del rail: el enlace es un flex-item real (min-width
   resuelve el corte a mitad de carácter) y las frases envuelven hasta 2
   líneas con elipsis limpia, nunca cortadas en seco. */
.rail-arch a{min-width:0;flex:1 1 auto}
#rail-trends-out .rail-arch li,#rail-news-out .rail-arch li{align-items:flex-start}
#rail-trends-out .rail-arch a,#rail-news-out .rail-arch a{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rail-feat-league{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px}
.rail-feat-teams{font-weight:700;font-size:1.02rem;margin-bottom:8px}
.rail-feat-teams a{color:var(--ink);text-decoration:none}
.rail-feat-teams a:hover{color:var(--lime)}
.rail-feat-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.rail-feat-trend{font-size:.82rem;color:var(--muted);font-style:italic;margin-bottom:8px}
.rail-news-date{font-family:var(--mono);font-size:.72rem;color:var(--muted);flex:0 0 auto}
/* Cabeceras de liga en la tabla de hoy (patrón Forebet: agrupar por liga). */
.today-league-h{font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--ink);padding:14px 4px 6px;border-bottom:1px solid var(--line)}
.today-league-h:first-child{padding-top:4px}
@media(max-width:1279px){
  .home-3col{grid-template-columns:minmax(0,1fr) 280px}
  .rail-nav{grid-column:1/-1;position:static;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
}
@media(max-width:1023px){
  .home-3col{grid-template-columns:minmax(0,1fr);padding:0 24px}
  .rail-nav{grid-column:auto}
  .rail-side{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
}
@media(max-width:640px){
  .rail-nav{grid-template-columns:1fr}
}

/* ---- Ola 2: ficha de partido — contexto, standings chips, H2H agregado, bajas ---- */
.ctx-list{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:10px 0 4px;align-items:baseline}
.ctx-lab{font-size:.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;white-space:nowrap}
.ctx-val{font-size:.95rem;color:var(--ink);margin:0}
.st-chip{display:inline-block;margin-top:4px;font:700 .78rem var(--mono);color:var(--accent);border:1px solid var(--accent);border-radius:999px;padding:2px 10px;background:rgba(217,255,67,.07)}
.h2h-agg{font-weight:700;font-size:1.02rem;color:var(--ink);margin:2px 0 10px}
@media(max-width:640px){
  .ctx-list{grid-template-columns:1fr;gap:2px 0}
  .ctx-lab{margin-top:8px}
}

/* ---- Escudos de club (frente escudos 2026-10-20) — bloques nuevos ----
   Contrato: pastilla circular con iniciales detrás (.crest-fb) y la imagen
   del CDN encima (.crest-img); si el CDN devuelve el placeholder 1x1, el JS
   retira la img y queda el fallback. Para /en-directo/, .crest-fill cubre
   la caja .crest existente (cuyo CSS en base.html no se toca). */
.crest-c{position:relative;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:#141b33;overflow:hidden;flex:0 0 auto;vertical-align:-4px}
.crest-fb{font-weight:700;color:#D9FF43;line-height:1;letter-spacing:.02em}
.crest-img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#141b33}
.crest-fill{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#141b33;border-radius:3px}
/* Filas de la home: envoltorio escudo+nombre dentro de la zona "equipos". */
.tt-w{display:inline-flex;align-items:center;gap:6px;vertical-align:middle;min-width:0}
.today-teams .tt-w{max-width:100%}
/* Módulo "Ahora en directo": equipos con escudos. */
.now-teams{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}
@media(max-width:640px){
  .today-teams{display:flex;flex-wrap:wrap;gap:2px 0}
}

/* ---- Ficha de partido: hero nuevo (2026-10-20) — SOLO bloques nuevos,
   coordinación CSS: no se toca ninguna regla existente de este fichero ---- */
.mh-hero{padding:18px 20px 14px}
.mh-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:18px;align-items:center;margin:10px 0 6px}
.mh-team{display:flex;gap:12px;align-items:flex-start;min-width:0}
.mh-team.away{flex-direction:row-reverse;text-align:right}
.mh-crest{width:72px;height:72px;border-radius:50%;background:#141b33;position:relative;overflow:hidden;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center}
.mh-crest img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.mh-crest-ini{font-weight:700;color:#D9FF43;font-size:1.5rem;line-height:1}
.mh-info{min-width:0;display:flex;flex-direction:column;gap:7px}
.mh-name{font-weight:800;font-size:1.18rem;line-height:1.25;color:var(--ink)}
.mh-team.away .mh-name{align-self:flex-end}
.mh-form{display:flex;gap:5px;flex-wrap:wrap;min-height:22px}
.mh-team.away .mh-form{justify-content:flex-end}
.mh-pill{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:.68rem;font-weight:800;line-height:1}
.pill-v{background:#D9FF43;color:#101528}
.pill-e{background:#3a4157;color:#c8cede}
.pill-d{background:#5c2333;color:#ff9db0}
.pill-na{background:#232842;color:#8a90a8}
.mh-center{text-align:center;min-width:150px}
.mh-score{font:800 2.6rem/1 var(--mono);color:var(--ink)}
.mh-state{color:var(--muted);font-size:.9rem;margin-top:8px;display:inline-flex;align-items:center;gap:7px}
.mh-state.is-live{color:var(--accent);font-weight:700}
.mh-state.is-live::before{content:'';width:8px;height:8px;border-radius:50%;background:#D9FF43;animation:mh-pulse 1.6s infinite}
@keyframes mh-pulse{0%,100%{opacity:1}50%{opacity:.25}}
.mh-meta{color:var(--muted);font-size:.88rem;margin:10px 0 0;line-height:1.55}
/* Veredicto a ancho útil: etiqueta fija a la izquierda, barra todo el centro, % mono pegado */
.fx-verdict .model-bar-row{grid-template-columns:190px 1fr 76px}
.fx-verdict .model-bar-val{font-family:var(--mono);text-align:right}
/* Mercados del modelo: fila compacta de mini-bloques */
.fx-mk-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:8px 0}
.fx-mk{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;min-width:0}
.fx-mk-title{font-size:.75rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 8px}
.fx-dc{margin-top:8px}
.fx-dc summary{cursor:pointer;color:var(--muted);font-size:.85rem}
@media(max-width:640px){
  .mh-crest{width:52px;height:52px}
  .mh-crest-ini{font-size:1.1rem}
  .mh-score{font-size:1.9rem}
  .mh-grid{gap:10px}
  .mh-center{min-width:104px}
  .mh-name{font-size:1rem}
  .mh-meta{font-size:.8rem}
  .fx-verdict .model-bar-row{grid-template-columns:1fr auto}
  .fx-verdict .model-bar-lab{grid-column:1/-1}
  .fx-mk-grid{grid-template-columns:1fr}
}

/* ===== /en-directo/ P0 diseño (2026-10-20) — prefijo .ld- ===== */
/* Barra de resumen agregado bajo el encabezado (mono 13px, muted). */
.ld-summary{font-family:var(--mono);font-size:13px;color:var(--muted);margin:2px 0 16px;display:flex;align-items:center;gap:8px}
.ld-summary[hidden]{display:none}
/* Ocultación total del escáner sin resultados (regla: ningún widget vacío). */
.ld-hidden{display:none!important}
/* Línea "Ventana de gol tardío" en la tarjeta (min 60+, dato real). */
.ld-predict{display:flex;align-items:center;gap:8px;margin:10px 0 2px;font-size:13px;color:var(--muted)}
.ld-predict-bolt{color:var(--accent);font-size:15px;line-height:1}
/* 4 hero-stats con jerarquía sobre el resto de stats de la tarjeta. */
.ld-herostats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0 4px}
.ld-hstat{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 6px;text-align:center;min-width:0}
.ld-hstat strong{display:block;font-size:22px;line-height:1.1;color:var(--accent);font-family:var(--mono);font-weight:700}
.ld-hstat span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-top:4px}
@media(max-width:560px){.ld-herostats{grid-template-columns:repeat(2,1fr)}}

/* ===== HERO VIVO (diseño/UX 2026-10-20, lote 1) =====
   Panel del hero con datos reales: directo destacado o próximo de la
   agenda. Sustituye a la tarjeta de muestra con datos falsos. */
.hv-card{background:var(--panel);border:1px solid var(--line);border-radius:3px;box-shadow:var(--shadow);padding:26px;position:relative;min-height:280px;display:flex;flex-direction:column;justify-content:center}
.hv-card::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;height:4px;background:linear-gradient(90deg,var(--lime),var(--red));border-radius:3px 3px 0 0}
.hv-top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}
.hv-live{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--lime)}
.hv-tag{display:inline-block;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.14em;color:#070A16;background:var(--blue);padding:5px 10px;border-radius:3px;text-transform:uppercase}
.hv-league{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.06em;text-align:right}
.hv-mid{display:grid;grid-template-columns:1fr auto 1fr;gap:16px;align-items:center;margin-bottom:20px}
.hv-team{display:flex;align-items:center;gap:12px;min-width:0}
.hv-team:last-child{justify-content:flex-end}
.hv-team:last-child .hv-name{text-align:right}
.hv-name{font-weight:700;font-size:16px;line-height:1.25}
.hv-score{display:flex;flex-direction:column;align-items:center;gap:6px;padding:0 8px}
.hv-score b{font-family:var(--mono);font-size:34px;font-weight:700;color:#fff;white-space:nowrap}
.hv-min{font-family:var(--mono);font-size:13px;color:var(--lime);font-weight:700}
.hv-ko{display:flex;flex-direction:column;align-items:center;gap:6px;padding:0 8px}
.hv-ko b{font-family:var(--mono);font-size:26px;font-weight:700;color:#fff;white-space:nowrap}
.hv-vs{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.24em}
.hv-probs{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-bottom:20px}
.hv-link{display:inline-flex;align-items:center;font-weight:700;color:var(--lime);text-decoration:none}
.hv-link:hover{text-decoration:underline}
@media(max-width:760px){
  .hv-card{padding:20px;min-height:0}
  .hv-name{font-size:14px}
  .hv-score b{font-size:28px}
}

/* --- Previa diaria editorial (2026-10-20): tarjetas por partido --- */
.daily-match{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;margin:0 0 16px}
.daily-featured{border-left:3px solid var(--accent)}
.dm-head{display:flex;align-items:center;gap:14px}
.dm-head .crest-c{width:64px;height:64px;flex:none}
.daily-featured .dm-head .crest-c{width:96px;height:96px}
.dm-head .crest-fb{font-size:22px}
.daily-featured .dm-head .crest-fb{font-size:34px}
.dm-title{flex:1;min-width:0}
.dm-title h2{font-size:1.35rem;margin:0}
.dm-title h2 a{color:inherit;text-decoration:none}
.dm-title h2 a:hover{color:var(--accent)}
.dm-meta{color:var(--muted);font-size:.85rem;margin:4px 0 0}
.dm-verdict{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:14px 0;padding:12px;border-top:1px dashed var(--line);border-bottom:1px dashed var(--line)}
.dm-probs{display:flex;gap:6px;flex-wrap:wrap}
.dm-score{font-size:.9rem;color:var(--muted)}
.dm-score strong{font:800 1.6rem var(--mono);color:var(--accent);margin-left:6px}
.dm-markets{color:var(--muted);font-size:.85rem;margin:0;flex-basis:100%}
.daily-match .daily-data{margin:0 0 14px}
.daily-match .btn{display:inline-block;margin-bottom:2px}
@media(max-width:640px){
  .dm-head .crest-c,.daily-featured .dm-head .crest-c{width:48px!important;height:48px!important}
  .dm-head .crest-fb,.daily-featured .dm-head .crest-fb{font-size:17px!important}
  .dm-verdict{flex-direction:column;align-items:flex-start;gap:10px}
}

/* ===== AGENDA /partidos/ (diseño/UX 2026-10-20, lote 1) =====
   La página es la agenda completa del día por liga; el directo vive en el
   radar y aquí solo aparece como aviso. Las filas .ag-row reutilizan la
   anatomía de .today-row de la home. */
.ag-live{display:inline-flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:3px;padding:12px 18px;color:#fff;text-decoration:none;font-weight:700}
.ag-live:hover{border-color:var(--lime)}
.ag-h2h{background:var(--panel);border:1px solid var(--line);border-radius:3px;padding:24px;box-shadow:var(--shadow)}
.ag-h2h-head{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.ag-h2h-name{font-size:17px}
.ag-h2h-vs{color:var(--muted);font-weight:700}
.ag-h2h .big-duo{margin:0 0 18px}
.ag-h2h-list{display:flex;flex-direction:column}
.ag-h2h-row{display:grid;grid-template-columns:86px 1fr auto;gap:12px;align-items:center;padding:8px 0;border-top:1px solid var(--line);font-size:13.5px}
.ag-h2h-date{font-family:var(--mono);color:var(--muted);font-size:11.5px}
.ag-h2h-teams{color:var(--txt,#e8ecf4)}
.ag-h2h-score{font-family:var(--mono);color:#fff}
.ag-h2h-links{display:flex;gap:20px;margin-top:18px}
@media(max-width:760px){
  .ag-h2h{padding:18px}
  .ag-h2h-row{grid-template-columns:76px 1fr auto;font-size:12.5px}
}

/* ===== P0 producto (2026-10-20) — prefijo .pr- ===== */
/* Botón destructivo con confirmación inline (tarjetas de estrategia). */
.btn.pr-btn-danger{border-color:#ff9b9b;color:#ff9b9b;background:transparent}
.btn.pr-btn-danger:hover{border-color:#ff9b9b;color:#ffb3b3;background:rgba(255,155,155,.12)}
.btn.pr-btn-danger.pr-armed{background:rgba(255,155,155,.22);border-color:#ff6b6b;color:#fff}
/* Acordeón de estrategias de la casa (/estrategias/). */
details.pr-method summary{cursor:pointer;list-style:none}
details.pr-method summary::-webkit-details-marker{display:none}
details.pr-method summary::marker{content:''}
.pr-sum{display:flex;align-items:center;gap:12px}
.pr-sum-t{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}
.pr-sum-name{font-size:20px;margin:0}
.pr-sum .strategy-timing{margin:0}
.pr-open{margin-left:auto;flex:none;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--lime);border:1px solid var(--line);border-radius:20px;padding:6px 12px;white-space:nowrap}
.pr-open::after{content:'Ver método'}
details.pr-method[open] .pr-open{border-color:var(--lime)}
details.pr-method[open] .pr-open::after{content:'Ocultar'}
.pr-body{padding-top:6px}
/* Plantillas 1-clic del constructor. */
.pr-templates{margin:0 0 14px}
.pr-templates-label{font-size:13px;color:var(--muted);margin:0 0 8px}
.pr-templates-row{display:flex;flex-wrap:wrap;gap:8px}
/* Tarjetas de ejemplo (visitante sin sesión). */
.pr-examples{margin-top:22px}
.pr-examples-title{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 10px}
.pr-examples-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.pr-example{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px}
.pr-example h4{margin:0 0 10px;font-size:15px}
.pr-example ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.pr-example li{background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:16px;padding:4px 10px;font-size:12px;color:var(--muted)}
/* Escáner: presets como puerta de entrada. */
.pr-presets{margin:0 0 26px}
.pr-presets .eyebrow{display:inline-flex;margin-bottom:12px}
.pr-preset-row{display:flex;flex-wrap:wrap;gap:10px}
.pr-nores{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
/* Comunidad: CTAs del estado vacío. */
.pr-cm-cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}

/* Ficha de equipo: hero con identidad + barras en franjas (D1/D2/D3). */
.eq-hero{display:flex;align-items:center;gap:18px;margin:6px 0 4px}
.eq-hero-crest{width:96px;height:96px;flex:none;border-radius:18px;overflow:hidden;background:#141b33;border:1px solid var(--line,#232c4d)}
img.eq-hero-crest{display:block;object-fit:contain}
span.eq-hero-crest{border-radius:18px}
.eq-hero .sec-title{margin:0;font-size:2rem}
.eq-chips{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px;align-items:center}
.eq-band-val{display:block;font-weight:700;margin-bottom:8px}
.eq-bands td{position:relative;padding-bottom:14px}
.eq-bands .rank-bar{left:10px;right:10px}
.eq-against i{background:#f43f5e}
@media(max-width:640px){.eq-hero .sec-title{font-size:1.5rem}img.eq-hero-crest{width:72px;height:72px}}

/* ---------- fx2: correcciones ficha /partido/ (post-inspección visual 2026-10-20) ---------- */
/* Badge de directo del hero: oculto hasta que el WS lo active (nunca caja roja vacía). */
.fx2-live-badge{display:none;font:700 .8rem/1 var(--mono);letter-spacing:.06em;color:var(--accent)}

/* ---------- hm2: tabla de partidos con COLUMNAS FIJAS (petición del
   usuario 2026-10-20, home + /partidos/) ----------
   Corrección: la competición NO va en la fila — la tabla está agrupada
   por liga y el encabezado de grupo ya la dice («CHAMPIONS LEAGUE · 9»).
   Orden visual: [hora 64px] [equipos] [PRONÓSTICO 330px] [tiempo].
   La zona de pronóstico tiene ancho fijo: arranca siempre en la misma x,
   los chips 1/X/2 miden lo mismo en todas las filas y el marcador
   probable cae siempre en la misma x; «Pronóstico no disponible» y el
   marcador final arrancan en la misma x, alineados a la izquierda de
   la zona, nunca flotando en el centro. El chip de tiempo queda en su
   columna del extremo derecho. La columna de equipos (1fr) absorbe el
   espacio que liberaba la liga. Razón estética: la tabla se lee por
   columnas — cada dato tiene su carril y el ojo baja en línea recta. */
#hoy .today-row,#ptd-agenda .today-row{grid-template-columns:64px minmax(0,1fr) 330px auto;gap:2px 14px;align-items:center}
#hoy .today-ko,#ptd-agenda .today-ko{grid-column:1;grid-row:1;align-self:center}
#hoy .today-teams,#ptd-agenda .today-teams{grid-column:2;grid-row:1;align-self:center;min-width:0}
#hoy .today-mid,#ptd-agenda .today-mid{grid-column:3;grid-row:1;align-self:center;justify-self:start;display:flex;align-items:center;justify-content:flex-start;gap:6px 12px;flex-wrap:nowrap;min-width:0;text-align:left}
#hoy .today-probs,#ptd-agenda .today-probs{display:flex;gap:6px;flex-wrap:nowrap;justify-content:flex-start;max-width:none}
#hoy .today-probs .tf-chip,#ptd-agenda .today-probs .tf-chip{flex:0 0 78px;width:78px;padding-left:0;padding-right:0;text-align:center}
#hoy .today-end,#ptd-agenda .today-end{grid-column:4;grid-row:1;align-self:center;justify-self:end;min-width:0}
/* Rail izquierdo LIGAS: nombre y pastilla de conteo siempre en la MISMA
   línea y línea base — la pastilla ocupa su posición fija a la derecha
   en todas las filas; el nombre trunca con puntos suspensivos si no cabe
   en el rail de 200px (antes la pastilla caía a una segunda línea y cada
   fila alineaba distinta). */
#rail-leagues-out .rail-link{flex-wrap:nowrap}
#rail-leagues-out .rail-link b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;min-width:0}
#rail-leagues-out .rail-link .cnt{margin-left:auto;margin-top:0;flex:0 0 auto}
/* Móvil: sin caption de liga, el pronóstico baja a su propia fila a
   ancho completo bajo los equipos; los chips mantienen el ancho fijo
   para seguir alineados entre sí. */
@media(max-width:760px){
  #hoy .today-row,#ptd-agenda .today-row{grid-template-columns:52px minmax(0,1fr) auto;gap:4px 10px}
  #hoy .today-ko,#ptd-agenda .today-ko{grid-column:1;grid-row:1/3;align-self:center}
  #hoy .today-teams,#ptd-agenda .today-teams{grid-column:2;grid-row:1;align-self:center}
  #hoy .today-mid,#ptd-agenda .today-mid{grid-column:1/4;grid-row:2;justify-self:start;flex-wrap:wrap;text-align:left}
  #hoy .today-end,#ptd-agenda .today-end{grid-column:3;grid-row:1/3;justify-self:end;align-self:center}
}

/* hm2 (cont.): filas de ranking compactas — escudo y nombre en UNA LÍNEA
   (petición del usuario 2026-10-20 con captura del rail derecho).
   .rank-mid era display:grid y apilaba el escudo sobre el nombre; en el
   rail, además, la fila enterraba el nombre a una segunda línea entera
   (flex 1 1 100%) y la métrica a una tercera: filas altísimas. Nuevo
   patrón único para filas de ranking con escudo: [número] [escudo]
   [nombre con ellipsis] [métrica], todo en una línea de ~52px. */
#late-out .topxg-row .rank-mid{display:flex;align-items:center;gap:8px;min-width:0}
#late-out .topxg-row .rank-mid .crest-c{flex:0 0 auto}
#late-out .topxg-row .rank-mid a.player-link,#late-out .topxg-row .rank-mid>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.rail-block .topxg-row{flex-wrap:nowrap;align-items:center;min-height:52px}
.rail-block .topxg-row .rank-mid{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:8px}
.rail-block .topxg-row .rank-mid .crest-c{flex:0 0 auto}
.rail-block .topxg-row .rank-mid a.player-link{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.rail-block .topxg-row .late-stat{margin-left:auto;flex:0 0 auto}
.rail-block .topxg-row .lm-sub{margin-left:0;flex:0 0 auto}

/* VICTORIA RÁPIDA Forebet 3/3 (2026-10-20): módulo «Pronóstico en vivo» en
   /en-directo/ — re-evaluación del modelo con el partido en curso, bajo el
   marcador. Solo bloques nuevos con prefijo .lv-; ninguna regla existente
   tocada. */
.lv-live{margin:10px 0 2px}
.lv-live-head{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.lv-bolt{color:var(--accent);font-size:14px;line-height:1}
.lv-live-title{font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.lv-live-min{margin-left:auto;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
.lv-live .pressure{margin:5px 0}
.lv-live-row{display:flex;align-items:baseline;gap:10px;margin-top:4px;font-size:12.5px}
.lv-live-side{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}
.lv-live-side.lv-right{text-align:right}
.lv-live-side strong{color:#fff;font-variant-numeric:tabular-nums}
.lv-live-side.lv-lead strong{color:var(--accent)}
.lv-live-mid{flex:0 0 auto;font-size:11px;color:var(--muted)}
.lv-live-x{font-size:12px;color:var(--muted);margin:8px 0 0;line-height:1.6}
@media (max-width:560px){
  .lv-live-mid{display:none}
  .lv-live-row{font-size:11.5px}
}

/* ---------- f3a: rail LIGAS — el nombre de la liga puede envolverse a
   2 líneas sin truncarse («Champions L…»); la pastilla de conteo queda
   arriba a la derecha, alineada con la primera línea. ---------- */
#rail-leagues-out .rail-link{align-items:flex-start}
#rail-leagues-out .rail-link b{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;flex:1 1 auto;min-width:0}
#rail-leagues-out .rail-link .cnt{align-self:flex-start;margin-top:1px}

/* ---------- f3b: ESPECIALISTAS del rail — la subetiqueta larga
   («de su gol en el tramo final») no cabe en el carril y estrangulaba el
   nombre del equipo hasta una sola letra; en el rail se muestra solo el %,
   el nombre queda entero con ellipsis. ---------- */
.rail-block .topxg-row .lm-sub>span:last-child{display:none}

/* ---------- ah: hándicap asiático en la ficha /partido/ ---------- */
.ah-wrap{margin-top:14px}
.ah-title{font-size:.78rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:0 0 8px}
.ah-note{font-size:.72rem;color:var(--muted);margin:2px 0 8px;line-height:1.3}
@media(max-width:640px){.ah-wrap .fx-mk-grid{grid-template-columns:1fr}}

@media(max-width:640px){.ah-wrap .fx-mk-grid{grid-template-columns:1fr}}
/* ---------- tp: /top-predicciones/ — selección del día por confianza ---------- */
.tp-day{font-size:15px;font-weight:700;margin:4px 0 12px;color:var(--ink)}
.tp-rows{display:flex;flex-direction:column;gap:10px}
.tp-row{display:grid;grid-template-columns:44px minmax(0,1fr) minmax(150px,auto) minmax(180px,auto);align-items:center;gap:16px;padding:14px 16px;border:1px solid rgba(255,255,255,.09);border-radius:14px;background:rgba(255,255,255,.02);text-decoration:none;color:inherit;transition:border-color .15s ease,background .15s ease}
.tp-row:hover{border-color:rgba(198,242,78,.55);background:rgba(198,242,78,.04)}
.tp-rank{font-family:var(--mono);font-size:26px;font-weight:800;color:var(--lime);text-align:center;line-height:1}
.tp-teams{display:flex;flex-direction:column;gap:5px;min-width:0}
.tp-team{display:flex;align-items:center;gap:9px;min-width:0}
.tp-tname{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tp-meta{font-size:12px;color:var(--muted);font-family:var(--mono)}
.tp-pick{display:flex;flex-direction:column;align-items:flex-end;gap:1px;text-align:right}
.tp-pick-label{font-size:14px;font-weight:600}
.tp-pick-prob{font-size:30px;font-weight:800;line-height:1.05;color:var(--lime);font-family:var(--mono)}
.tp-pick-cap{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.tp-probs{display:flex;flex-direction:column;align-items:flex-end;gap:5px}
.tp-probs-cap{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.tp-chips{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.tp-score{font-size:12px;color:var(--muted);font-family:var(--mono)}
@media(max-width:820px){
  .tp-row{grid-template-columns:34px minmax(0,1fr) minmax(120px,auto)}
  .tp-probs{grid-column:2/4;align-items:flex-start}
  .tp-chips{justify-content:flex-start}
  .tp-rank{font-size:21px}
  .tp-pick-prob{font-size:24px}
}
@media(max-width:480px){
  .tp-row{gap:10px;padding:12px}
  .tp-tname{font-size:14px}
}

/* ============ .cn- — escudo+nombre en una línea (barrido 2026-10-20, orden de Juan Carlos) ============
   Varios componentes pintaban el escudo ENCIMA del nombre (el escudo es un
   bloque .crest de display:grid, así que el nombre caía a la línea siguiente).
   Contrato: pareja escudo+nombre siempre en fila horizontal, escudo de tamaño
   fijo, nombre al lado con ellipsis si no cabe. */
.cn-cell{display:flex;align-items:center;min-width:0}
.cn-cell>.crest,.cn-cell>.crest-c{flex:none}
.cn-cell>*:not(.crest):not(.crest-c){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Detalle de entrenador (managers.js): la fila no tenía CSS y foto/escudo/nombre se apilaban. */
.cn-mgrhead{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
/* Plantilla / best-XI (standings.js): el enlace del equipo dentro de .squad-pos
   contenía el escudo en bloque + el nombre debajo. */
.squad-pos a.player-link{display:inline-flex;align-items:center;gap:6px}

/* 1X2 en vivo del modelo (live.js renderLiveForecast): chips de
   probabilidades + marcador final probable. Bloques nuevos, prefijo .lv- */
.lv-live-cap{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:9px 0 6px}
.lv-probs{display:flex;gap:8px;flex-wrap:wrap}
.lv-prob{display:inline-flex;align-items:baseline;gap:7px;padding:6px 12px;border:1px solid var(--line);border-radius:10px;font-size:12.5px;color:var(--muted);background:var(--panel)}
.lv-prob-key{font-weight:800}
.lv-prob strong{color:#fff;font-variant-numeric:tabular-nums;font-weight:800}
.lv-prob.lv-lead{border-color:var(--accent)}
.lv-prob.lv-lead strong{color:var(--accent)}
.lv-final{margin-top:6px;font-size:12.5px;color:var(--muted)}

/* lv3: reparto de peligro — el nombre se corta al final, el % nunca */
.lv-live-side{display:flex;align-items:baseline;gap:5px}
.lv-live-side.lv-right{justify-content:flex-end}
.lv-live-side .lv-live-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lv-live-side strong{flex:none}

/* ht: medio tiempo y medio tiempo/final en la ficha (frente ht, 2026-10-20).
   Subsecciones del veredicto derivadas de la matriz por mitades. */
.ht-wrap{margin-top:14px}
.ht-title{font-size:.78rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:0 0 8px}
.ht-score{font-size:.92rem;margin:8px 0 4px}
.ht-score-v{font-weight:700}
.ht-score-p{color:var(--muted)}
.htft-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:4px 0 8px}
.htft-cell{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px;display:flex;justify-content:space-between;align-items:baseline;gap:8px;min-width:0}
.htft-k{font-weight:700;font-size:.85rem}
.htft-v{color:var(--muted);font-size:.85rem;white-space:nowrap}
.htft-best{border-color:var(--accent)}
.htft-best .htft-v{color:var(--accent);font-weight:700}
@media(max-width:640px){.htft-cell{padding:6px 8px}}

/* ============ .fv- — favoritos sin registro (oleada Forebet 2026-10-20) ============
   Estrellas por equipo y por liga (favs.js) guardadas solo en el navegador
   y chip «Mis favoritos» sobre la tabla del día de la home y la agenda de
   /partidos/. Prefijo propio; no se modifica ninguna regla existente. */
.fv-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 6px}
.fv-chip-star{font-size:15px;line-height:1;margin-right:7px}
.fv-hint,.fv-note{font-size:.82rem;color:var(--muted)}
.fv-star{display:inline-block;cursor:pointer;color:var(--muted);font-size:15px;line-height:1;padding:2px 3px;border-radius:4px;vertical-align:middle;user-select:none;-webkit-user-select:none}
.fv-star:hover{color:#ffb340}
.fv-star.fv-on{color:#ffb340}
.fv-star:focus-visible{outline:2px solid var(--accent);outline-offset:1px;color:#ffb340}
.today-teams .fv-star{flex:0 0 auto}
.fv-stars{display:inline-flex;gap:2px;flex:0 0 auto;margin-left:8px}
/* Rail de ligas: la estrella va tras el nombre y nunca a ancho completo
   (la regla del rail para spans sin clase de conteo la empujaría a otra
   línea con flex 1 1 100%). */
.rail-nav .rail-link>span.fv-star{flex:0 0 auto;margin-left:2px}
.rail-link>.fv-star{align-self:center}

/* ---------- fds: /fin-de-semana/ — agenda vie-dom con conteos ---------- */
.fds-summary{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.fds-chip{text-decoration:none;cursor:pointer}
a.fds-chip:hover{border-color:rgba(198,242,78,.55)}
.fds-chip-total{border-color:rgba(198,242,78,.55);color:var(--lime);font-weight:700;cursor:default}
.fds-day{margin-top:30px;scroll-margin-top:90px}
.fds-day-title{font-size:20px;font-weight:800;color:var(--ink);display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:0 0 12px}
.fds-day-count{font-size:13px;font-weight:600;color:var(--muted);font-family:var(--mono)}

/* ---------- rl: rail LIGAS — el nombre se parte SOLO por palabras ----------
   Incidencia (inspección visual 2026-10-20): desde que favoritos puso la
   estrella en cada fila, «Champions League» y «Championship» se partían a
   mitad de palabra («Champion»/«s»). Causa raíz: el bloque f3a deja
   overflow-wrap:anywhere en el nombre, que autoriza el corte en cualquier
   carácter cuando la línea no cabe; la estrella (~21px) y el hueco extra
   dejaron el nombre en ~63-70px, por debajo de su palabra más larga
   («Champions» = 75px y «Championship» = 97px, medidos en Space Grotesk
   600 a .88rem). Sin la estrella el hueco era ~93-99px y el corte nunca
   llegaba a mitad de palabra.
   Arreglo: (1) el nombre vuelve a romper solo por espacios; (2) se
   recupera aire dentro del propio rail — padding del bloque y de la fila
   más compactos, hueco de estrella FIJO de 14px que no estrangula, chip
   con padding lateral menor pero en su sitio. Presupuesto resultante
   para el nombre: 176 - 8 (huecos) - 14 (estrella) - 53,5 (chip con
   contador de 2 dígitos) = 100,5px ≥ 97px del peor caso real. */
#rail-leagues{padding-left:9px;padding-right:9px}
#rail-leagues-out .rail-link{padding-left:3px;padding-right:3px;gap:4px}
#rail-leagues-out .rail-link b{overflow-wrap:normal;word-break:normal}
#rail-leagues-out .rail-link .cnt{padding-left:5px;padding-right:5px}
#rail-leagues-out .rail-link>span.fv-star{flex:0 0 14px;width:14px;padding-left:0;padding-right:0;margin-left:0;font-size:12.5px;text-align:center}

/* ---- fm: pastillas de FORMA en las filas de las tablas (2026-10-20) ----
   Bloque append-only (prefijo .fm-). La celda de equipo pasa a columna:
   escudo a la izquierda y, junto a él, nombre (+chip de posición) con la
   línea de pastillas de los últimos 5 DEBAJO del nombre, estilo Forebet.
   Las pastillas reutilizan las clases de la ficha (.mh-pill .pill-v/.pill-e/
   .pill-d: mismos colores V verde lima / E gris-azul / D rojo oscuro) a un
   tamaño de tabla (15px). La zona de pronóstico NO se toca: la fila crece
   solo en la columna de equipos (grid 64px | 1fr | 330px | auto intacto),
   los chips 1/X/2 conservan su x de arranque. Sin forma → no hay .fm-line
   y la fila conserva su altura base (sin hueco fantasma). */
.fm-col{display:inline-flex;flex-direction:column;gap:3px;min-width:0}
.fm-line{display:flex;gap:3px;align-items:center}
.fm-line .mh-pill{width:15px;height:15px;font-size:.56rem}

/* ---------- mk: córners, tarjetas y goleadores probables (ficha) ----------
   Bloques del veredicto alimentados por los campos aditivos corners/cards/
   scorers de la previa (frente mk, 2026-10-20). Si un campo no viene, su
   bloque no se pinta. Prefijo propio; no se modifica ninguna regla previa. */
.mk-wrap{margin-top:14px}
.mk-title{font-size:.78rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:0 0 8px}
.mk-exp{font-size:.92rem;margin:0 0 4px}
.mk-exp-v{font-weight:700}
.mk-split{font-size:.85rem;color:var(--muted);margin:0 0 6px}
.mk-scorers{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;margin:4px 0 8px}
.mk-scorer-col{min-width:0}
.mk-scorer-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:3px 0;min-width:0}
.mk-scorer-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mk-scorer-p{color:var(--muted);font-size:.85rem;white-space:nowrap}
@media(max-width:640px){.mk-scorers{grid-template-columns:1fr}}

/* ay: /ayer/ — la fila reutiliza la rejilla .today-row; la línea de
   auditoría del pronóstico ocupa la fila completa bajo el marcador
   (grid-column 1/-1). Insignias sobrias: lima = acierto, rojo suave =
   fallo, dorado = marcador exacto. Sin bloque si no hubo snapshot. */
.ay-fc{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;padding-top:2px}
.ay-fc-label{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.ay-probs{display:inline-flex;gap:5px;flex-wrap:wrap}
.ay-likely{font-family:var(--mono);font-size:12px;color:var(--muted);white-space:nowrap}
.ay-badge{font-family:var(--mono);font-size:11px;padding:3px 9px;border-radius:999px;border:1px solid rgba(255,255,255,.18);white-space:nowrap}
.ay-ok{color:var(--lime);border-color:rgba(198,242,78,.55)}
.ay-ko{color:#ff8f8f;border-color:rgba(255,143,143,.5)}
.ay-exact{color:#ffd34d;border-color:rgba(255,211,77,.55)}

/* lst: /listas/ — regiones con su título (reutiliza .fds-day-title) y
   filas de liga sobrias: nombre a la izquierda, conteo de hoy a la
   derecha (chip .tf-chip). Toda la fila enlaza a /liga/<slug>-<id>/. */
.lst-region{margin-top:26px}
.lst-region:first-child{margin-top:10px}
.lst-region-title{margin-bottom:10px}
.lst-row{display:flex;justify-content:space-between;align-items:center;gap:12px;text-decoration:none}
.lst-name{font-weight:700;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lst-count{flex:0 0 auto;color:var(--muted)}

/* ===== UX-3 · LIGAS, LIGA Y EQUIPOS (pasada UX/UI 2026-10-20) =====
   Auditoría con páginas construidas + datos reales de la API. Defectos:
   1) /liga/<slug>/: el ranking «Especialistas del tramo final» reusa
      .indice-rank (rejilla 34px 1fr auto pensada para /indice/, donde
      cada fila lleva su span.indice-pos), pero el generador de estas
      fichas no emite ese span: el nombre del equipo caía en la columna
      de 34px y el valor ocupaba la columna ancha. Se restaura el número
      con contador CSS y la rejilla equivalente, solo dentro de #liga.
   2) /liga/<slug>/: la 5ª tarjeta («40.0% / 40.0% / 20.0%» = 302px en
      IBM Plex Mono 700 a 1.5rem) no cabe en 1/5 de la rejilla (<=193px
      en escritorio, ~126px en móvil) y se partía en 2-3 líneas. La
      última tarjeta pasa a ocupar 2 columnas en ancho y fila completa
      en estrecho (es siempre la del reparto, en las 15 fichas).
   3) /equipos/: .teams-index (374 enlaces) no tenía ninguna regla CSS:
      lista plana del navegador, objetivos tactiles de ~25px y densidad
      de una sola columna. Se le da el acabado del sistema (rejilla
      1/2/3 columnas, filas de 44px, letras como cabeceras mono).
   4) /ligas/ en móvil: la clasificación (table.matrix min-width:640px)
      se desplaza en horizontal sin fijar columnas: al deslizar se
      pierde el equipo. Hasta 760px se compacta (padding 8, 13px,
      min-width:0) y se fijan posicion+equipo con sticky (en tops,
      la posicion).
   5) /ligas/ once ideal en móvil: .squad-row no envolvía ni acotaba
      (sin min-width:0): jugador largo + equipo largo suman ~470px
      frente a ~312px utiles y la fila desbordaba. Hasta 640px el
      equipo baja a una segunda línea indentada bajo el jugador. */
#liga .indice-rank{counter-reset:uxl-pos}
#liga .indice-rank li{grid-template-columns:24px minmax(0,1fr) auto}
#liga .indice-rank li::before{counter-increment:uxl-pos;content:counter(uxl-pos);font:800 .9rem/1 var(--mono);color:var(--muted)}
@media(min-width:1140px){
  .liga-grid{grid-template-columns:repeat(6,1fr)}
  .liga-stat:last-child{grid-column:span 2}
  .liga-stat:last-child .liga-num{font-size:1.15rem}
}
@media(max-width:1139px){
  .liga-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .liga-stat:last-child{grid-column:1/-1}
}
@media(max-width:480px){
  .liga-stat:last-child .liga-num{font-size:1.32rem}
}
.teams-index{margin-top:36px;border-top:1px solid var(--line);padding-top:20px}
.teams-index>h3{font-size:1.3rem;font-weight:700;margin:0 0 4px}
.teams-index>h4{font-family:var(--mono);font-size:.95rem;font-weight:700;letter-spacing:.14em;color:var(--lime);margin:24px 0 8px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.teams-index ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr;gap:2px}
.teams-index li a{display:flex;align-items:center;min-height:44px;padding:8px 10px;border-radius:3px;color:var(--ink);text-decoration:none;font-size:15px}
.teams-index li a:hover{background:var(--panel2);color:var(--lime)}
@media(min-width:640px){.teams-index ul{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1024px){.teams-index ul{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){
  #standings-wrap table.matrix,#league-tops-wrap table.matrix{min-width:0;font-size:13px}
  #standings-wrap .matrix th,#standings-wrap .matrix td,#league-tops-wrap .matrix th,#league-tops-wrap .matrix td{padding:8px}
  #standings-wrap .matrix td.pos,#standings-wrap .matrix th:first-child{position:sticky;left:0;width:36px;background:var(--panel);z-index:3}
  #standings-wrap .matrix td.cn-cell,#standings-wrap .matrix th:nth-child(2){position:sticky;left:36px;background:var(--panel);z-index:3;box-shadow:inset -1px 0 0 var(--line),10px 0 14px -12px rgba(0,0,0,.7)}
  #standings-wrap tr.row-hl td.pos,#standings-wrap tr.row-hl td.cn-cell{background:#1D2628}
  #league-tops-wrap .matrix td.pos,#league-tops-wrap .matrix th:first-child{position:sticky;left:0;width:36px;background:var(--panel);z-index:3;box-shadow:inset -1px 0 0 var(--line),10px 0 14px -12px rgba(0,0,0,.7)}
}
@media(max-width:640px){
  #league-bestxi-wrap .squad-row{flex-wrap:wrap;row-gap:2px}
  #league-bestxi-wrap .squad-row>*{min-width:0}
  #league-bestxi-wrap .squad-row a.player-link{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  #league-bestxi-wrap .squad-row .squad-pos{margin-left:42px;flex:1 1 auto}
}

/* ---- uxc: cuenta y producto (UX-5, 2026-10-20) ----
   Legales: el titular de cada documento pasa de h2 a h1 (jerarquía) y se
   fija aquí su aspecto EXACTO actual (24px/1.08/400) para que el cambio
   de etiqueta no altere ni un píxel. Los h3 del cuerpo legal medían
   1.02rem/400 sobre texto de .93rem: jerarquía casi invisible al ojear;
   suben a 1.12rem/700 en color tinta. La fecha de actualización queda
   subordinada al titular (muted, menor). Solo presentación: los textos
   legales y sus placeholders no se tocan. */
body.legal-page .section-heading h1{font-size:24px;line-height:1.08;font-weight:400;margin:0}
body.legal-page .section-heading p{color:var(--muted);font-size:.9rem;margin:6px 0 0}
body.legal-page .legal-body h3{font-size:1.12rem;font-weight:700;color:var(--ink);margin:26px 0 8px}

/* uxj: textos de la pizza de percentiles de /jugador/ (UX-1, 2026-10-20).
   Misma voz que las etiquetas del radar (mono 11px): la pizza heredaba la
   fuente de texto general a 10,5px y sus etiquetas largas se salían del
   lienzo; ahora van partidas en líneas y siempre dentro. El valor va en
   mono negrita, como el resto de cifras de la casa. */
.uxj-pizza-lab{font-family:var(--mono);font-size:11px;fill:#cbd5e1}
.uxj-pizza-val{font-family:var(--mono);font-size:11px;font-weight:700;fill:#fff}

/* uxe: oleada UX 2026-10-20 · UX-2 (equipo/entrenador/arbitro/estadio) */
/* Tablas de 2 columnas que no necesitan el min-width de 640 de .matrix:
   sin esto, en movil se desplazan en horizontal sin aportar nada. */
table.matrix.uxe-fit{min-width:0}
/* Tarjetas de entrenador: toda la tarjeta es tocable (enlace estirado
   desde el nombre) y la foto va centrada con el nombre, no a la linea base. */
.mgr-card{position:relative}
.mgr-card .mgr-name::after{content:"";position:absolute;inset:0}
.mgr-head{align-items:center}
/* Foto de estadio a lo ancho: la imagen real es 1200x900; banner 16/9
   con iniciales detras como fallback si el hotlink falla. */
.uxe-std-photo{position:relative;width:100%;aspect-ratio:16/9;max-height:340px;overflow:hidden;border-radius:8px;border:1px solid var(--line);background:var(--panel-2);margin-bottom:14px}
.uxe-std-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.uxe-std-ini{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:'Archivo Black',sans-serif;font-size:64px;color:var(--muted);opacity:.35;letter-spacing:.02em}

/* uxp: oleada UX 2026-10-20 - UX-4 (previas, tendencias, top-predicciones,
   track-record, tramo-final, escaner). Auditoria con layout real medido
   (Chromium headless sirviendo dist/ con datos reales de la API) en
   escritorio 1280px y movil 360px. */
/* 1) Escaner: los input[type=number] llevan class="select" pero la regla
   de la casa es select.select (calificada por elemento): quedaban con el
   estilo por defecto del navegador (fondo blanco, texto negro, 19px de
   alto, 13px) sobre el tema oscuro, junto a selects oscuros de 48px.
   Mismo tratamiento visual que el select, sin el chevron decorativo. */
.sc-group input[type="number"].select{background-color:var(--panel);border:1px solid var(--line);color:var(--ink);border-radius:3px;min-height:48px;padding:12px 14px;font-size:15px;font-family:'Space Grotesk',system-ui,sans-serif;width:100%;box-sizing:border-box;color-scheme:dark}
/* 2) Track record: las marcas del archivo (.acc-hit/.acc-miss) no tenian
   regla y salian en color tinta (el check y la cruz, indistinguibles al
   escanear), y el "n=" bajo cada tarjeta (.trk-sub) salia a 16px en
   color tinta. Lima para acierto, rojo suave para fallo, n pequeno. */
.acc-hit{color:var(--lime);font-weight:800}
.acc-miss{color:#ff8f8f;font-weight:800}
.trk-sub{font-size:.78rem;color:var(--muted);margin-top:4px;font-family:var(--mono)}
/* Tablas que caben en movil sin scroll lateral: el suelo global de
   560px de .data-table obligaba a desplazar la tabla diaria de senales
   (4 col., ancho natural <=312px), la de confianza (3 col.) y las de
   articulos (natural 433px); el archivo (7 col., natural 525px) pierde
   el suelo artificial y conserva su ancho natural dentro de su wrap. */
@media(max-width:640px){
  #trk-table.data-table,#acc-conf-table.data-table,#acc-arch-table.data-table{min-width:0}
  .article-body .data-table{min-width:0}
}
/* 3) Tendencias: .trend-cat/.trend-list/.trend-league no tenian ninguna
   regla en todo el CSS: 6 categorias x 10 frases salian como listas con
   vineta del navegador, sin separacion entre categorias ni jerarquia.
   Panel por categoria, filas con separador y liga como etiqueta mono. */
.trend-cat{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px 24px;margin:28px 0}
.trend-cat h2{margin:0 0 4px}
.trend-cat>p{color:var(--muted);margin:0 0 6px}
.trend-cat .trend-list{list-style:none;margin:0;padding:0;display:block}
.trend-cat .trend-list li{padding:9px 0;border-bottom:1px solid var(--line);line-height:1.55}
.trend-cat .trend-list li:last-child{border-bottom:0;padding-bottom:0}
.trend-cat .trend-league{font-family:var(--mono);font-size:.72rem;letter-spacing:.03em;white-space:nowrap}
@media(max-width:640px){.trend-cat{padding:16px 18px}.trend-cat .trend-league{white-space:normal}}
/* 4) FAQ: .faq/.faq-item tampoco tenian reglas (preguntas frecuentes de
   tramo-final, escaner, top-predicciones y articulos: texto plano
   apilado sin separacion). Tarjetas del sistema, como el resto. */
.faq{display:grid;gap:12px;margin:18px 0 10px}
.faq-item{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px}
.faq-item h3{margin:0 0 8px}
.faq-item p{margin:0;color:var(--muted);line-height:1.65;font-size:.92rem}
/* 5) Indice de previas en movil: la rejilla minmax(320px,1fr) no cabe en
   el contenedor de 312px (viewport 360): la tarjeta media 320px y
   quedaba desplazada a la derecha, fuera del eje del resto de bloques. */
@media(max-width:480px){.previa-grid{grid-template-columns:minmax(0,1fr)}}
/* 6) Previa diaria en movil: la cabecera apretaba el titular entre los
   dos escudos (columna de ~150px): la tarjeta destacada media 251px de
   alto con el meta partido en unas 9 lineas. Escudos en la primera fila
   (local a la izquierda, visitante a la derecha) y titular+meta a
   ancho completo debajo. */
@media(max-width:640px){
  .dm-head{flex-wrap:wrap;gap:10px 12px}
  .dm-head .crest-c:last-child{margin-left:auto}
  .dm-title{order:3;flex:1 1 100%}
  .dm-title h2{font-size:1.12rem;line-height:1.3}
  .dm-meta{font-size:.8rem;line-height:1.55}
}
/* 7) Top predicciones en movil: la columna de equipos caia a 38px (los
   nombres se cortaban a media palabra: "Cucut...", "Atleti...") por la
   columna del pick minmax(120px,auto). Equipos a ancho completo y el
   pick pasa a una fila horizontal bajo los equipos. */
@media(max-width:560px){
  .tp-row{grid-template-columns:26px minmax(0,1fr);gap:8px 12px;padding:12px}
  .tp-pick{grid-column:2;flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:4px 10px;text-align:left}
  .tp-pick-prob{font-size:22px}
  .tp-probs{grid-column:2;align-items:flex-start}
  .tp-chips{justify-content:flex-start}
}

/* ================================================================
   uxh: UX-6 (2026-10-21) — tabla de hoy en la home (banda 1280–1399)
   y cabecera a 360px.
   1) En esa banda la home va a tres columnas con la central de 604px
      y la fila heredaba la columna fija de pronóstico de 330px: la
      celda de equipos quedaba en ~80px, el nombre se plegaba en una
      columna de 50px y la fila crecía a 263px (medido). Se adopta el
      patrón ya probado a ≤760px: el pronóstico baja a su propia fila
      bajo los equipos y estos recuperan el ancho completo.
   2) La cabecera medía 381px a 360px de pantalla: el bloque derecho
      (acceso + idioma + botón de menú) no cabe junto al logo y el
      botón quedaba 21px fuera de pantalla (medido). Recortes internos
      del propio bloque a ≤480px, sin tocar el resto del sitio.
   ================================================================ */
@media(min-width:1280px) and (max-width:1399px){
  #hoy .today-row{grid-template-columns:52px minmax(0,1fr) auto;gap:4px 12px}
  #hoy .today-ko{grid-column:1;grid-row:1/3;align-self:center}
  #hoy .today-teams{grid-column:2;grid-row:1;align-self:center}
  #hoy .today-meta{grid-column:2;grid-row:2;align-self:start}
  #hoy .today-mid{grid-column:1/4;grid-row:3;justify-self:start;flex-wrap:wrap;text-align:left}
  #hoy .today-end{grid-column:3;grid-row:1/3;justify-self:end;align-self:center}
}
@media(max-width:480px){
  .hd{gap:8px}
  .hd .logo{font-size:1.12rem}
  .hd-right{gap:6px}
  .language-picker select{padding:9px 20px 9px 8px;font-size:.85rem}
  .auth-area a{padding-left:2px;padding-right:2px}
}

/* uxm: /entrenadores/ — control de carga incremental del directorio
   completo (botón + contador; el [hidden] manda sobre el flex). */
.uxm-more{display:flex;align-items:center;gap:14px;margin-top:18px}
.uxm-more[hidden]{display:none}
.uxm-more-btn{background:var(--panel);border:1px solid var(--line);color:var(--ink);border-radius:3px;padding:12px 18px;min-height:48px;font-size:15px;font-weight:700;font-family:'Space Grotesk',system-ui,sans-serif;cursor:pointer}
.uxm-more-btn:hover,.uxm-more-btn:focus-visible{color:var(--lime);border-color:var(--lime)}
.uxm-more-count{font-family:var(--mono);font-size:12px;color:var(--muted);letter-spacing:.06em}
@media(max-width:960px){
  .nav-toggle{display:inline-flex}
  .trust-badge{display:none}
  header.site .wrap.hd{position:relative}
  nav.main{position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;flex:none;background:rgba(7,10,22,.98);border-bottom:1px solid var(--line);padding:8px 20px 16px;overflow:visible;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .18s ease,transform .18s ease,visibility 0s .18s}
  nav.main.open{opacity:1;visibility:visible;transform:none;transition:opacity .18s ease,transform .18s ease,visibility 0s 0s}
  nav.main a{min-height:48px;font-size:16px;border-bottom:1px solid var(--line);padding:6px 0}
  nav.main a:last-child{border-bottom:0}
  .hero-grid,.ref-split,.plans,.vs-grid{grid-template-columns:1fr}
  .steps,.road{grid-template-columns:1fr}
  .vs-mid{padding:4px 0}
  .band-in{grid-template-columns:1fr;gap:28px}
  .ft{grid-template-columns:1fr}
  section.block{padding:64px 0}
  .radar{display:none}
  .avgs{grid-template-columns:1fr 1fr}
  .stats{grid-template-columns:repeat(2,1fr)}
  .lineup-grid{grid-template-columns:1fr}
  .private-box{padding:24px}
  .big-stat b{font-size:44px}
  .xg-duel b{font-size:36px}
  .r-score b{font-size:36px}
  .ref-cards{grid-template-columns:1fr 1fr}
}

/* Navbar agrupado: desplegables */
.nav-drop{position:relative;display:inline-block}
.nav-drop-btn{background:none;border:0;color:inherit;font:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:7px;padding:10px 4px}
.nav-drop-btn:hover{color:var(--lime)}
.nav-caret{width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);opacity:.7}
.nav-drop-menu{position:absolute;top:calc(100% + 6px);left:-12px;min-width:210px;background:#0B1020;border:1px solid var(--line);border-radius:14px;padding:8px;display:none;visibility:hidden;box-shadow:0 18px 40px rgba(0,0,0,.45);z-index:60}
.nav-drop:hover .nav-drop-menu,.nav-drop:focus-within .nav-drop-menu,.nav-drop.open .nav-drop-menu{display:block;visibility:visible}
.nav-drop-menu[hidden]{display:none!important;visibility:hidden!important}
.nav-drop-menu a{display:block;padding:10px 14px;border-radius:9px;white-space:nowrap}
.nav-drop-menu a:hover{background:rgba(217,255,67,.08);color:var(--lime)}
/* El overflow-x:auto de nav.main (scroll en pantallas medianas) recorta los menús
   absolutos: overflow visible mientras un desplegable está abierto.
   :has() cubre navegadores modernos; menu.js añade .nav-drops-open como fallback. */
nav.main:has(.nav-drop.open),nav.main.nav-drops-open{overflow:visible}
.nav-live{display:inline-flex;align-items:center;gap:8px}
.nav-livedot{width:8px;height:8px;border-radius:50%;background:#FF3B5C;box-shadow:0 0 8px #FF3B5C;animation:pulse 1.6s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.nav-cta{border:1px solid var(--lime);border-radius:999px;padding:8px 18px!important;color:var(--lime)!important}
.nav-cta:hover{background:var(--lime);color:#070A16!important}
@media(max-width:960px){
  .nav-drop{display:block}
  .nav-drop-btn{width:100%;justify-content:space-between;padding:12px 4px}
  .nav-drop.open .nav-caret{transform:rotate(-135deg) translateY(-2px)}
  .nav-drop-menu{position:static;display:none;visibility:hidden;box-shadow:none;border:0;border-radius:0;background:transparent;padding:0 0 4px 14px;min-width:0}
  .nav-drop.open .nav-drop-menu{display:block;visibility:visible}
}

/* Tarjetas horizontales: imagen al lado del nombre, más peso tipográfico */
.ref-card-h{display:flex;align-items:center;gap:14px}
.ref-card-h .r-pic{width:48px;height:48px;flex:none;border-radius:12px;background:#141B31;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;color:var(--lime);overflow:hidden;position:relative}
.ref-card-h .r-pic img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.ref-card-h .r-body{display:grid;gap:3px;min-width:0}
.ref-card-h .r-name{font-size:18px;font-weight:800;letter-spacing:.01em}

/* Página de estrategias */
.strategy-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:18px;margin-top:28px}
.strategy-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px;box-shadow:5px 5px 0 rgba(0,0,0,.35)}
.strategy-head{display:flex;align-items:center;gap:12px;margin-bottom:6px}
.strategy-head h2{font-size:20px;margin:0}
.strategy-icon{font-size:28px}
.strategy-timing{font-family:var(--mono);font-size:11px;color:var(--lime);letter-spacing:.08em;text-transform:uppercase;margin:0 0 14px}
.strategy-card h3{font-size:14px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:16px 0 8px}
.strategy-card p{font-size:15px;line-height:1.6;margin:0 0 8px}
.strategy-card ul{margin:0;padding-left:20px;font-size:14px;line-height:1.7}
.strategy-example{background:rgba(217,255,67,.06);border-left:3px solid var(--lime);padding:10px 14px;border-radius:0 8px 8px 0;font-size:14px}
.bands-title{font-size:14px;margin:12px 0 6px;color:var(--text)}
.bands-table{width:100%;border-collapse:collapse;font-size:13px;margin:0 0 4px}
.bands-table th,.bands-table td{padding:6px 8px;text-align:center;border-bottom:1px solid var(--line)}
.bands-table thead th{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.04em}
.bands-table tbody th{text-align:left;font-weight:600}
.bands-table .late{color:var(--lime);font-weight:700}
.bands-table thead th.late{color:var(--lime)}
.bands-late{font-size:13px;color:var(--muted);margin:6px 0 14px;line-height:1.5}
.bands-late span{color:var(--text)}
.bands-wrap{margin-top:4px}
.alerts-panel{margin:10px 0;padding:14px 16px;border:1px solid var(--line);border-radius:8px;background:var(--panel);display:grid;gap:8px;max-width:520px}
.alerts-panel[hidden]{display:none}
.alerts-title{font-weight:700;margin:0;font-size:14px}
.alerts-panel label{display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer}
.scanner-controls{display:grid;gap:10px;margin:0 0 16px;max-width:640px}
.scan-row{display:grid;grid-template-columns:130px 1fr 52px;align-items:center;gap:10px}
.scan-label{font-size:13px;color:var(--muted)}
.scan-val{font-family:var(--mono);font-size:13px;color:var(--lime);text-align:right}
.scan-row input[type=range]{width:100%;accent-color:var(--lime)}
.scan-checks{display:flex;gap:16px;flex-wrap:wrap}
.scan-check{display:flex;align-items:center;gap:6px;font-size:13px;cursor:pointer}
.scan-check input{accent-color:var(--lime)}
.scanner-results{display:grid;gap:10px}
.scan-hit{border:1px solid var(--line);border-radius:8px;padding:12px 14px;background:var(--panel)}
.scan-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}
.scan-head b{font-size:15px}
.scan-link{font-size:13px;color:var(--lime)}
.scan-reasons{display:flex;gap:6px;flex-wrap:wrap}
.scan-chip{font-family:var(--mono);font-size:11px;padding:3px 9px;border:1px solid var(--lime);border-radius:20px;color:var(--lime)}