/* NFL Pick'em module */

.home--nfl .nav-card--info {
  min-height: 96px;
}

.home--nfl .nav-row--primary {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.home--nfl .nav-row--info {
  grid-template-columns: 1fr;
}

.home--nfl .home-priority-card {
  border-color: rgba(96, 165, 250, 0.4);
  border-radius: 8px;
  background: rgba(30, 58, 138, 0.24);
  gap: 8px;
}

.home--nfl .home-priority-card:hover {
  border-color: rgba(96, 165, 250, 0.68);
}

.home--nfl .home-priority-kicker,
.home--nfl .home-priority-action {
  color: #bfdbfe;
}

.home--nfl .home-priority-match {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 10px;
}

.home--nfl .home-priority-team {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  color: var(--text);
  font-weight: 800;
}

.home--nfl .home-priority-team--home {
  justify-content: flex-end;
  text-align: right;
}

.home--nfl .home-priority-team--home img {
  order: 2;
}

.home--nfl .home-priority-team img {
  width: 30px;
  height: 30px;
  object-fit: contain;
  flex: 0 0 auto;
}

.home--nfl .home-priority-team span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.home--nfl .home-priority-at {
  color: var(--gold);
  font-size: 1.05rem;
}

.home--nfl .home-priority-card strong {
  color: var(--text-dim);
  font-size: 0.78rem;
  text-align: center;
}

/* ── NFL weekly picks ───────────────────────────────────────── */
.nfl-picks-shell {
  gap: 10px;
}

.nfl-week-tabs {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  padding: 4px 12px 2px;
  scroll-snap-type: x proximity;
  -webkit-overflow-scrolling: touch;
}

.nfl-week-tab {
  min-width: 108px;
  min-height: 42px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: rgba(255,255,255,0.04);
  color: var(--text);
  display: grid;
  gap: 2px;
  align-content: center;
  padding: 5px 8px;
  text-align: left;
  font: inherit;
  cursor: pointer;
  scroll-snap-align: start;
  touch-action: manipulation;
}

.nfl-week-tab span {
  font-size: 0.78rem;
  font-weight: 750;
  line-height: 1.2;
}

.nfl-week-tab small {
  color: var(--text-dim);
  font-size: 0.62rem;
  font-weight: 500;
  line-height: 1.2;
}

.nfl-week-tab.active {
  border-color: rgba(245,197,24,0.7);
  background: rgba(245,197,24,0.14);
  box-shadow: 0 4px 16px rgba(245,197,24,0.08);
}

.nfl-week-tab.active span {
  color: #fff3b0;
  font-weight: 800;
}

.nfl-week-tab.active small {
  color: rgba(253,230,138,0.74);
}

.nfl-match-list {
  padding-top: 4px;
}

.nfl-match-card {
  border-radius: 8px;
  display: grid;
  gap: 10px;
}

.nfl-match-card:not(.locked):hover {
  border-color: var(--border);
  box-shadow: none;
}

.nfl-match-topline {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 8px;
  color: var(--text-dim);
  font-size: 0.72rem;
  font-weight: 700;
  white-space: nowrap;
}

.nfl-match-topline > span:nth-child(2) {
  min-width: 0;
  overflow: hidden;
  text-align: center;
  text-overflow: ellipsis;
}

.nfl-slot-badge {
  justify-self: start;
  width: max-content;
  max-width: 100%;
  overflow: hidden;
  border: 1px solid rgba(245,197,24,0.36);
  border-radius: 6px;
  background: rgba(245,197,24,0.1);
  color: #fde68a;
  padding: 3px 7px;
  font-weight: 900;
  text-overflow: ellipsis;
}

.nfl-teams-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 10px;
}

.nfl-team {
  min-width: 0;
  display: grid;
  justify-items: center;
  gap: 4px;
  color: var(--text);
  font-weight: 800;
  text-align: center;
}

.nfl-team-pick {
  min-height: 136px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: rgba(255,255,255,0.04);
  padding: 12px 8px;
  font: inherit;
  cursor: pointer;
}

.nfl-team-pick.active {
  border-color: rgba(96,165,250,0.82);
  background: rgba(30,64,175,0.34);
  color: #dbeafe;
}

.nfl-team-pick:disabled {
  cursor: not-allowed;
  opacity: 0.62;
}

.nfl-team small {
  color: var(--text-dim);
  font-size: 0.62rem;
  font-weight: 800;
  text-transform: uppercase;
}

.nfl-team img,
.nfl-team-fallback {
  width: 52px;
  height: 52px;
  display: grid;
  place-items: center;
  object-fit: contain;
}

.nfl-team span:last-child {
  max-width: 100%;
  overflow-wrap: anywhere;
  font-size: 1.25rem;
  font-weight: 800;
  line-height: 1.15;
}

.nfl-vs {
  color: var(--gold);
  font-size: 1.15rem;
  font-weight: 900;
}

.nfl-pick-controls {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
}

.nfl-pick-controls.is-locked {
  opacity: 0.78;
}

.nfl-control-group {
  min-width: 0;
  display: grid;
  gap: 5px;
}

.nfl-control-group--margin[hidden] {
  display: none;
}

.nfl-control-group--winner {
  gap: 8px;
}

.nfl-control-label {
  width: 100%;
  color: #fde68a;
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0;
  text-align: center;
  text-transform: uppercase;
}

.nfl-control-heading {
  justify-self: center;
  display: flex;
  align-items: center;
  gap: 5px;
}

.nfl-control-heading .nfl-control-label {
  width: auto;
}

.nfl-total-reference {
  justify-self: center;
  display: flex;
  align-items: center;
  gap: 5px;
}

.nfl-control-info {
  position: relative;
  flex: 0 0 auto;
}

.nfl-control-info summary {
  display: grid;
  place-items: center;
  width: 20px;
  height: 20px;
  border: 1px solid var(--border);
  border-radius: 50%;
  color: var(--text-dim);
  cursor: pointer;
  font-size: 0.68rem;
  font-weight: 800;
  list-style: none;
}

.nfl-control-info summary::-webkit-details-marker {
  display: none;
}

.nfl-control-info p {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 4;
  width: min(250px, calc(100vw - 56px));
  margin: 0;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #111817;
  color: var(--text-dim);
  padding: 9px 10px;
  font-size: 0.72rem;
  font-weight: 500;
  line-height: 1.4;
  box-shadow: 0 12px 28px rgba(0,0,0,0.38);
}

.nfl-control-info p strong,
.nfl-control-info p span {
  display: block;
}

.nfl-control-info p strong {
  margin-bottom: 4px;
  color: var(--text);
  font-weight: 700;
}

.nfl-line-callout {
  width: fit-content;
  border: 1px solid rgba(245,197,24,0.34);
  border-radius: 6px;
  background: rgba(245,197,24,0.08);
  color: #fde68a;
  padding: 3px 7px;
  font-size: 0.66rem;
  font-weight: 800;
}

.nfl-line-callout.is-pending {
  border-color: var(--border);
  background: rgba(255,255,255,0.035);
  color: var(--text-dim);
}

.nfl-line-unavailable {
  margin: 0;
  padding: 8px 10px;
  border: 1px dashed var(--border);
  border-radius: 8px;
  background: rgba(255,255,255,0.02);
  color: var(--text-dim);
  font-size: 0.78rem;
  font-weight: 600;
  text-align: center;
}

.nfl-segmented {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
}

.nfl-segmented--over-under {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.nfl-segmented--margin {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.nfl-pick-btn {
  min-width: 0;
  min-height: 40px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: rgba(255,255,255,0.04);
  color: var(--text);
  font: inherit;
  font-size: 0.78rem;
  font-weight: 850;
  line-height: 1.15;
  cursor: pointer;
  overflow-wrap: anywhere;
  padding: 8px 7px;
  touch-action: manipulation;
}

.nfl-team-pick {
  touch-action: manipulation;
}

.nfl-pick-btn.active {
  border-color: rgba(96,165,250,0.82);
  background: rgba(30,64,175,0.34);
  color: #dbeafe;
}

.nfl-pick-btn > span,
.nfl-pick-btn > small {
  display: block;
}

.nfl-pick-btn > span {
  font-size: 0.9rem;
  font-weight: 700;
}

.nfl-pick-btn--tie {
  justify-self: center;
  width: min(160px, 60%);
  min-height: 34px;
  display: grid;
  place-items: center;
  padding-block: 5px;
}

.nfl-segmented--over-under .nfl-pick-btn,
.nfl-segmented--margin .nfl-pick-btn {
  min-height: 38px;
  padding-block: 6px;
}

.nfl-pick-btn > small {
  margin-top: 3px;
  color: var(--text-dim);
  font-size: 0.62rem;
  font-weight: 700;
  line-height: 1.25;
}

.nfl-pick-btn.active > small {
  color: #bfdbfe;
}

.nfl-pick-btn:disabled {
  cursor: not-allowed;
  opacity: 0.62;
}

.nfl-match-footer {
  display: grid;
  justify-items: center;
  gap: 8px;
  padding-top: 2px;
}

.nfl-save-pick {
  width: 100%;
  min-height: 42px;
  border: 1px solid rgba(248,113,113,0.76);
  border-radius: 8px;
  background: rgba(220,38,38,0.82);
  color: #fff1f2;
  padding: 8px 12px;
  font: inherit;
  font-size: 0.86rem;
  font-weight: 800;
  cursor: pointer;
}

.nfl-save-pick:hover:not(:disabled) {
  border-color: #fca5a5;
  background: #ef4444;
}

.nfl-save-pick:disabled {
  cursor: not-allowed;
  border-color: rgba(248,113,113,0.24);
  background: rgba(127,29,29,0.22);
  color: rgba(254,202,202,0.5);
  opacity: 1;
}

.nfl-save-pick.is-saved {
  border-color: rgba(74,222,128,0.38);
  background: rgba(34,197,94,0.1);
  color: #4ade80;
  opacity: 1;
}

.nfl-clear-pick {
  min-height: 28px;
  border: 0;
  background: transparent;
  color: rgba(252,165,165,0.82);
  padding: 3px 8px;
  font: inherit;
  font-size: 0.68rem;
  font-weight: 600;
  cursor: pointer;
}

.nfl-clear-pick:hover {
  color: #f87171;
}

.nfl-match-state {
  display: grid;
  justify-items: center;
  gap: 5px;
  text-align: center;
}

.nfl-match-state strong {
  color: var(--text);
  font-size: 0.78rem;
  font-weight: 800;
}

.nfl-match-state small {
  color: var(--text-dim);
  font-size: 0.68rem;
  font-weight: 500;
  line-height: 1.3;
}

.nfl-live-state {
  color: #fbbf24;
}

/* ── Finished match breakdown ───────────────────────────────── */
.nfl-result-card {
  gap: 8px;
  padding: 10px 12px;
}

.nfl-result-topline {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  justify-content: initial;
}

.nfl-result-date {
  display: grid;
  gap: 2px;
  min-width: 0;
  overflow: hidden;
  text-align: center;
  text-overflow: ellipsis;
}

.nfl-result-date small {
  color: var(--text-dim);
  font-size: 0.68rem;
  font-weight: 600;
  text-transform: capitalize;
}

.nfl-final-badge {
  color: #4ade80;
  font-weight: 800;
}

.nfl-final-scoreboard {
  display: grid;
  gap: 9px;
  text-align: center;
}

.nfl-final-score-line {
  display: grid;
  grid-template-columns: fit-content(42%) auto fit-content(42%);
  justify-content: center;
  align-items: center;
  gap: 10px;
  color: var(--text);
  font-size: 1.08rem;
  font-weight: 700;
}

.nfl-final-team {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 6px;
}

.nfl-final-team--away {
  justify-content: flex-start;
  text-align: left;
}

.nfl-final-team--home {
  justify-content: flex-end;
  text-align: right;
}

.nfl-final-team span {
  min-width: 0;
  overflow-wrap: anywhere;
}

.nfl-final-team img,
.nfl-final-team .nfl-team-logo-placeholder {
  width: 28px;
  height: 28px;
  flex: 0 0 28px;
  object-fit: contain;
}

.nfl-final-team.is-winner,
.nfl-final-team.is-winner strong {
  color: #4ade80;
}

.nfl-final-team.is-tied,
.nfl-final-team.is-tied strong {
  color: #e2e8f0;
}

.nfl-final-tie {
  width: fit-content;
  margin: -2px auto 0;
  border: 1px solid rgba(148,163,184,0.32);
  border-radius: 6px;
  color: #cbd5e1;
  padding: 2px 7px;
  font-size: 0.62rem;
  font-weight: 800;
  text-transform: uppercase;
}

.nfl-final-team-score {
  flex: 0 0 auto;
  font-size: 1.35rem;
  font-weight: 800;
}

.nfl-final-team-score-input {
  flex: 0 0 auto;
  width: 2.1em;
  border: 1px solid rgba(96, 165, 250, 0.5);
  border-radius: 6px;
  background: rgba(37, 99, 235, 0.1);
  color: var(--text);
  font-family: inherit;
  font-size: 1.35rem;
  font-weight: 800;
  text-align: center;
  padding: 0 2px;
}

.nfl-final-team-score-input:disabled {
  opacity: 0.6;
}

.nfl-final-score-line b {
  color: var(--gold);
  font-size: 1rem;
}

.nfl-final-facts {
  margin: 0;
  color: var(--text-dim);
  font-size: 0.7rem;
  font-weight: 500;
  line-height: 1.3;
}

.nfl-result-breakdown {
  display: grid;
  gap: 3px;
  padding: 3px 0 1px;
}

/* Results cards keep the score line legible on narrow player screens. */
.nfl-result-card .nfl-final-scoreboard {
  gap: 4px;
}

.nfl-result-card .nfl-final-score-line {
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  gap: 7px;
}

.nfl-result-card .nfl-final-team span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.nfl-result-card .nfl-final-facts {
  font-size: 0.78rem;
  font-weight: 650;
}

.nfl-result-item {
  display: grid;
  gap: 1px;
  border-left: 2px solid var(--border);
  padding: 5px 7px;
  background: rgba(255,255,255,0.018);
}

.nfl-result-item--correct { border-left-color: #4ade80; }
.nfl-result-item--incorrect { border-left-color: #f87171; }
.nfl-result-item--void,
.nfl-result-item--missing { border-left-color: #64748b; }

.nfl-result-item-title {
  color: var(--text);
  font-size: 0.74rem;
  font-weight: 700;
}

.nfl-result-item--correct .nfl-result-verdict { color: #4ade80; }
.nfl-result-item--incorrect .nfl-result-verdict { color: #f87171; }

.nfl-result-item-line,
.nfl-result-verdict {
  margin: 0;
  color: var(--text-dim);
  font-size: 0.76rem;
  font-weight: 500;
  line-height: 1.3;
}

.nfl-result-item-line b {
  color: var(--text);
  font-weight: 700;
}

.nfl-result-verdict { font-weight: 700; }

.nfl-result-summary {
  display: flex;
  justify-content: center;
  padding: 1px 0 0;
}

.nfl-result-total {
  color: #4ade80;
  font-size: 1rem;
  font-weight: 800;
}

.nfl-result-details {
  border-top: 1px solid rgba(255,255,255,0.08);
  padding-top: 4px;
}

.nfl-result-details summary {
  color: var(--text-dim);
  cursor: pointer;
  font-size: 0.72rem;
  font-weight: 700;
  list-style: none;
  padding: 3px 0;
}

.nfl-result-details summary::-webkit-details-marker { display: none; }
.nfl-result-details summary::after { content: '⌄'; float: right; color: var(--text-dim); }
.nfl-result-details[open] summary::after { transform: rotate(180deg); }

/* ── Picks del grupo NFL ─────────────────────────────────────────────────── */
.nfl-group-picks-shell {
  display: grid;
  gap: 10px;
}

.nfl-group-picks-note,
.nfl-group-match-summary {
  margin: 0;
  color: var(--text-dim);
  font-size: 0.74rem;
  font-weight: 600;
}

.nfl-group-match-list {
  display: grid;
  gap: 10px;
}

.nfl-group-match-card {
  display: grid;
  gap: 8px;
  padding: 10px 12px;
}

.nfl-group-topline {
  margin: 0;
}

.nfl-group-match-title {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 7px;
  font-size: 0.88rem;
}

.nfl-group-match-title > span {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 5px;
}

.nfl-group-match-title > span:last-child {
  justify-content: flex-end;
  text-align: right;
}

.nfl-group-match-title img {
  width: 24px;
  height: 24px;
  flex: 0 0 24px;
  object-fit: contain;
}

.nfl-group-match-title strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.nfl-group-match-title b { color: var(--gold); }

.nfl-group-player-list {
  border-top: 1px solid rgba(255,255,255,0.08);
}

.nfl-group-player {
  display: grid;
  gap: 2px;
  padding: 8px 0;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}

.nfl-group-player:last-child { border-bottom: 0; }

.nfl-group-player.is-me {
  margin: 0 -5px;
  padding: 8px 5px;
  background: rgba(245,197,24,0.08);
}

.nfl-group-player > strong {
  color: var(--text);
  font-size: 0.78rem;
}

.nfl-group-player > strong small {
  color: var(--gold);
  font-size: 0.68rem;
}

.nfl-group-player p {
  margin: 0;
  color: var(--text-dim);
  font-size: 0.72rem;
  line-height: 1.35;
}

.nfl-group-player p b {
  color: var(--text);
  font-weight: 700;
}

.nfl-result-total.is-zero,
.nfl-result-item--void .nfl-result-verdict,
.nfl-result-item--missing .nfl-result-verdict {
  color: var(--text-dim);
}

@media (max-width: 620px) {
  .nfl-pick-controls {
    grid-template-columns: 1fr;
  }

  .nfl-result-card { gap: 7px; }
  .nfl-result-card .nfl-final-score-line { font-size: 0.94rem; }
  .nfl-result-card .nfl-final-team { gap: 4px; }
  .nfl-result-card .nfl-final-team img,
  .nfl-result-card .nfl-final-team .nfl-team-logo-placeholder {
    width: 24px;
    height: 24px;
    flex-basis: 24px;
  }
  .nfl-result-card .nfl-final-team-score { font-size: 1.14rem; }
  .nfl-result-item-line { font-size: 0.72rem; }
  .nfl-group-match-title { font-size: 0.82rem; }
  .nfl-group-player p { font-size: 0.69rem; }
}

/* ── Palco VIP: feed NFL ────────────────────────────────────────────────── */
.nfl-sa-editor-shell {
  width: min(760px, 100%);
  margin: 0 auto;
  padding: 16px 16px 36px;
  box-sizing: border-box;
}

.nfl-sa-editor-intro {
  padding: 4px 0 14px;
}

.nfl-sa-editor-kicker,
.nfl-sa-field > span {
  color: var(--gold);
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.nfl-sa-editor-intro h2 {
  margin: 5px 0 4px;
  font-size: 1.12rem;
}

.nfl-sa-editor-intro p,
.nfl-sa-empty p {
  color: var(--text-dim);
  font-size: 0.82rem;
  line-height: 1.45;
}

.nfl-sa-phase-tabs {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 7px;
  margin-bottom: 12px;
}

.nfl-sa-phase-tab {
  min-height: 36px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: rgba(255,255,255,0.025);
  color: var(--text-dim);
  cursor: pointer;
  font-family: var(--font);
  font-size: 0.72rem;
  font-weight: 800;
  touch-action: manipulation;
}

.nfl-sa-phase-tab.is-active {
  border-color: rgba(245, 197, 24, 0.62);
  background: rgba(245, 197, 24, 0.1);
  color: var(--gold);
}

.nfl-sa-btn {
  min-height: 40px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: rgba(255,255,255,0.035);
  color: var(--text-dim);
  cursor: pointer;
  font-family: var(--font);
  font-size: 0.8rem;
  font-weight: 800;
  touch-action: manipulation;
}

.nfl-sa-empty {
  margin-bottom: 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: rgba(255,255,255,0.025);
  padding: 11px 12px;
}

.nfl-sa-empty h3 {
  margin: 0 0 4px;
  font-size: 0.9rem;
}

.nfl-sa-empty p { margin: 0; }
.nfl-sa-empty--error { border-color: rgba(248,113,113,0.45); }

.nfl-sa-week {
  margin-top: 16px;
}

.nfl-sa-match-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}

.nfl-sa-lock-note {
  color: var(--text-dim);
  font-size: 0.72rem;
  font-weight: 600;
}

.nfl-sa-match-list {
  display: grid;
  gap: 6px;
}

/* Contenedor de partido — compacto a propósito: con el calendario completo
   cargado (~272 partidos/temporada) cada semana muestra muchas tarjetas, así
   que el padding y los elementos internos (ver más abajo) se recortan para
   que quepan más partidos sin scroll excesivo. */
.nfl-sa-match {
  border: 1px solid var(--border);
  border-radius: 8px;
  background: rgba(255,255,255,0.025);
  padding: 9px 10px;
}

.nfl-sa-match--published {
  border-left: 3px solid rgba(74,222,128,0.7);
  background: rgba(74,222,128,0.05);
}

/* Sin publicar: atenuada, para que salte a la vista qué falta publicar
   dentro de la semana/ronda activa. */
.nfl-sa-match--unpublished {
  opacity: 0.62;
}

.nfl-sa-match--unpublished:hover,
.nfl-sa-match--unpublished:focus-within {
  opacity: 1;
}

.nfl-badge--published {
  border: 1px solid rgba(74, 222, 128, 0.4);
  background: rgba(74, 222, 128, 0.1);
  color: #86efac;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.nfl-badge--unpublished {
  border: 1px solid rgba(148, 163, 184, 0.36);
  background: rgba(148, 163, 184, 0.08);
  color: var(--text-dim);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.nfl-sa-publish-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px;
  padding: 6px 12px 10px;
}

/* Herramientas de prueba (simular semana): nunca aparece en producción real
   (ver IS_STAGING en super-admin-matches.js) — el borde punteado naranja
   la distingue claramente de los controles reales de arriba. */
.nfl-sa-test-toolbar {
  margin: 6px 12px 10px;
  padding: 8px 10px;
  border: 1px dashed #f59e0b;
  border-radius: 10px;
  background: rgba(245, 158, 11, 0.08);
}

.nfl-sa-test-toolbar .nfl-sa-publish-counter {
  color: #b45309;
}

.nfl-sa-publish-counter {
  color: var(--text-dim);
  font-size: 0.72rem;
  font-weight: 800;
}

.nfl-sa-publish-filter {
  display: flex;
  gap: 4px;
}

.nfl-sa-filter-tab {
  min-height: 30px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: rgba(255,255,255,0.025);
  color: var(--text-dim);
  cursor: pointer;
  font-family: var(--font);
  font-size: 0.68rem;
  font-weight: 800;
  padding: 4px 12px;
  touch-action: manipulation;
}

.nfl-sa-filter-tab.active {
  border-color: rgba(245, 197, 24, 0.62);
  background: rgba(245, 197, 24, 0.1);
  color: var(--gold);
}

/* Tinte por conferencia (solo postemporada): borde + acento izquierdo sutil.
   No altera logos, botones ni textos de estado. */
.nfl-sa-card--nfc {
  border-color: rgba(59, 130, 246, 0.5);
  border-left: 3px solid rgba(59, 130, 246, 0.8);
}

.nfl-sa-card--afc {
  border-color: rgba(239, 68, 68, 0.5);
  border-left: 3px solid rgba(239, 68, 68, 0.8);
}

.nfl-team-logo-placeholder {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.06);
  border: 1px dashed var(--border);
  font-size: 0.9em;
  opacity: 0.6;
}

.nfl-sa-override {
  flex: 0 0 auto;
  color: #fcd34d;
  font-size: 0.66rem;
  font-weight: 800;
}

.nfl-sa-config-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 7px;
}

.nfl-sa-field {
  display: grid;
  gap: 4px;
  min-width: 0;
}

/* Kickoff ocupa la fila completa — Línea y Spread quedan en dos columnas
   justo debajo, mismo nivel de jerarquía entre ellos. */
.nfl-sa-field--full {
  grid-column: 1 / -1;
}

.nfl-sa-config-fields .nfl-sa-field > span {
  color: var(--gold);
  font-size: 0.7rem;
  font-weight: 900;
  text-transform: uppercase;
}

.nfl-sa-input {
  width: 100%;
  min-height: 34px;
  box-sizing: border-box;
  border: 1px solid var(--border);
  border-radius: 7px;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font);
  font-size: 0.86rem;
  padding: 5px 8px;
}

.nfl-sa-input:focus {
  outline: none;
  border-color: #60a5fa;
}

.nfl-sa-input:disabled {
  cursor: not-allowed;
  color: var(--text-dim);
  opacity: 0.7;
}

.nfl-sa-field--tbd .nfl-sa-input::placeholder {
  color: var(--text-dim);
  font-style: italic;
}

.nfl-sa-schedule-warning {
  margin: 8px 0 0;
  color: #fcd34d;
  font-size: 0.67rem;
  font-weight: 600;
  line-height: 1.35;
}

.nfl-sa-advancing-hint {
  margin: 8px 0 0;
  color: #93c5fd;
  font-size: 0.7rem;
  font-weight: 700;
}

.nfl-sa-match-actions {
  justify-content: flex-end;
  flex-wrap: wrap;
  margin-top: 8px;
}

.nfl-sa-btn {
  min-height: 34px;
  padding: 7px 11px;
}

.nfl-sa-btn--primary {
  border-color: rgba(96,165,250,0.5);
  background: rgba(37,99,235,0.24);
  color: #bfdbfe;
}

.nfl-sa-btn:disabled {
  cursor: default;
  opacity: 0.65;
}

.nfl-sa-btn--published {
  border-color: rgba(74, 222, 128, 0.5);
  color: #bbf7d0;
}

.nfl-sa-btn--danger {
  border-color: rgba(248, 113, 113, 0.45);
  background: rgba(248, 113, 113, 0.1);
  color: #fca5a5;
}

.nfl-sa-btn--ghost {
  background: transparent;
  border-color: rgba(255, 255, 255, 0.16);
  color: var(--text-dim);
}

.nfl-sa-interesting-info {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  min-width: 0;
}

.nfl-sa-spread {
  color: var(--text-dim);
  font-size: 0.78rem;
  font-weight: 700;
}

.nfl-badge {
  display: inline-flex;
  align-items: center;
  width: max-content;
  border-radius: 6px;
  padding: 3px 8px;
  font-size: 0.68rem;
  font-weight: 900;
}

.nfl-badge--interesting {
  border: 1px solid rgba(245,197,24,0.36);
  background: rgba(245,197,24,0.1);
  color: #fde68a;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.nfl-badge--api {
  border: 1px solid rgba(74, 222, 128, 0.4);
  background: rgba(74, 222, 128, 0.08);
  color: #86efac;
}

.nfl-badge--manual {
  border: 1px solid rgba(148, 163, 184, 0.36);
  background: rgba(148, 163, 184, 0.08);
  color: var(--text-dim);
}

/* ── Configuración: total/spread protagonistas + detalles colapsados ──── */

/* Tarjeta de Configuración: equipos/logos visibles pero compactos — con el
   calendario completo cargado, cada semana muestra decenas de tarjetas y el
   tamaño "protagonista" original (logos 42px, línea 1.55rem) las hacía
   demasiado altas para navegar la lista completa. */
.nfl-sa-config-card .nfl-final-scoreboard {
  padding: 1px 0 6px;
  gap: 4px;
}

.nfl-sa-config-card .nfl-final-score-line {
  font-size: 1.1rem;
  gap: 8px;
}

.nfl-sa-config-card .nfl-final-team img,
.nfl-sa-config-card .nfl-final-team .nfl-team-logo-placeholder {
  width: 26px;
  height: 26px;
  flex: 0 0 26px;
}

.nfl-sa-config-card .nfl-final-score-line b {
  font-size: 0.92rem;
}

/* Jerarquía visual: equipos y marcador son lo primero que ve el Coach —
   badge/acciones arriba, fecha y línea/spread abajo con menos peso (ver
   mockup del sprint). Estas reglas ganan por especificidad sobre el bloque
   "compacto" de arriba (3 clases vs. 2) sin tocarlo, así el resto de
   tarjetas .nfl-sa-config-card que no usan .nfl-sa-card-matchup no cambian. */
.nfl-sa-card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  flex-wrap: wrap;
  padding-bottom: 2px;
}

.nfl-sa-card-top-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.nfl-sa-config-card .nfl-sa-card-matchup {
  padding: 6px 0 4px;
  gap: 6px;
}

.nfl-sa-config-card .nfl-sa-card-matchup .nfl-final-score-line {
  font-size: 1.3rem;
  gap: 12px;
}

.nfl-sa-config-card .nfl-sa-card-matchup .nfl-final-team img,
.nfl-sa-config-card .nfl-sa-card-matchup .nfl-final-team .nfl-team-logo-placeholder {
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
}

.nfl-sa-config-card .nfl-sa-card-matchup .nfl-final-score-line b {
  font-size: 1.02rem;
}

.nfl-sa-config-card .nfl-sa-card-matchup .nfl-final-team-score,
.nfl-sa-config-card .nfl-sa-card-matchup .nfl-final-team-score-input {
  font-size: 1.55rem;
}

.nfl-sa-card-kickoff {
  display: grid;
  gap: 2px;
  justify-items: center;
  margin: 0 0 4px;
  color: var(--text-dim);
  font-size: 0.72rem;
  font-weight: 600;
  text-align: center;
}

.nfl-sa-card-kickoff small {
  color: var(--text-dim);
  font-size: 0.66rem;
  font-weight: 600;
  text-transform: capitalize;
}

/* Línea/spread: mismo contenido de antes, ahora en segundo plano — menos
   contraste que el marcador/equipos de arriba. */
.nfl-sa-card-secondary {
  opacity: 0.86;
}

.nfl-sa-card-secondary .nfl-sa-config-total-value {
  font-size: 1.05rem;
  color: var(--text-dim);
}

.nfl-sa-card-secondary .nfl-sa-config-label {
  color: var(--text-dim);
}

.nfl-sa-config-highlights {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin-top: 4px;
  padding-top: 6px;
  border-top: 1px solid var(--border);
}

.nfl-sa-config-highlights--split {
  flex-wrap: wrap;
}

.nfl-sa-config-total {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 1 1 auto;
  flex-wrap: wrap;
  gap: 8px;
  text-align: center;
}

.nfl-sa-config-label {
  flex-basis: 100%;
  color: var(--gold);
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.nfl-sa-config-total-value {
  font-size: 1.35rem;
  font-weight: 900;
  color: var(--text);
}

.nfl-sa-config-divider {
  align-self: stretch;
  width: 1px;
  background: var(--border);
}

.nfl-sa-interesting-info {
  display: flex;
  flex: 1 1 auto;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px;
  text-align: center;
}

.nfl-sa-status-line {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 6px;
  margin: 10px 0 0;
  font-size: 0.76rem;
  font-weight: 700;
}

.nfl-sa-status-item {
  color: var(--text-dim);
}

.nfl-sa-status-item.is-done {
  color: #4ade80;
}

.nfl-sa-status-dot {
  color: var(--text-dim);
}

.nfl-sa-config-details {
  margin-top: 7px;
  padding-top: 7px;
  border-top: 1px solid var(--border);
}

.nfl-sa-config-details summary {
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  color: var(--text);
  list-style: none;
}

.nfl-sa-config-details summary::-webkit-details-marker {
  display: none;
}

.nfl-sa-config-details summary::after {
  content: '▾';
  margin-left: auto;
  color: var(--text-dim);
  transition: transform 0.15s ease;
}

.nfl-sa-config-details[open] summary::after {
  transform: rotate(180deg);
}

.nfl-sa-config-details-icon {
  flex: 0 0 auto;
  color: var(--text-dim);
  line-height: 0;
}

.nfl-sa-config-details-copy {
  display: grid;
  gap: 2px;
}

.nfl-sa-config-details-copy strong {
  font-size: 0.86rem;
  font-weight: 700;
}

.nfl-sa-config-details-copy small {
  color: var(--text-dim);
  font-size: 0.68rem;
  font-weight: 600;
}

.nfl-sa-config-details[open] summary {
  margin-bottom: 7px;
}

.nfl-sa-publication-note {
  margin: 8px 0 0;
  color: #fcd34d;
  font-size: 0.7rem;
  font-weight: 600;
  line-height: 1.4;
}

.nfl-sa-btn--icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.nfl-sa-btn--icon svg {
  flex: 0 0 auto;
}

.nfl-sa-sync-panel {
  margin-top: 10px;
  border: 1px solid rgba(245, 197, 24, 0.2);
  border-radius: 10px;
  background: rgba(245, 197, 24, 0.04);
}

.nfl-sa-sync-summary-toggle {
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 14px;
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--gold);
}

.nfl-sa-sync-summary-toggle::-webkit-details-marker {
  display: none;
}

.nfl-sa-sync-summary-toggle::after {
  content: '▾';
  transition: transform 0.15s ease;
  color: var(--text-dim);
}

.nfl-sa-sync-panel[open] > .nfl-sa-sync-summary-toggle::after {
  transform: rotate(180deg);
}

/* Badge de saldo en el summary — visible siempre, colapsado o no */
.nfl-sa-sync-quota {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--text-dim);
  background: rgba(245, 197, 24, 0.08);
  border: 1px solid rgba(245, 197, 24, 0.2);
  border-radius: 20px;
  padding: 2px 8px;
  white-space: nowrap;
}

/* Detalle del reset, visible cuando el panel está abierto */
.nfl-sa-sync-quota-detail {
  padding: 8px 14px;
  border-bottom: 1px solid rgba(245, 197, 24, 0.1);
  margin-bottom: 4px;
}

.nfl-sa-sync-quota-reset {
  font-size: 0.7rem;
  color: var(--text-dim);
  line-height: 1.4;
}

.nfl-sa-sync-columns {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  padding: 0 14px 14px;
}

@media (max-width: 720px) {
  .nfl-sa-sync-columns {
    grid-template-columns: 1fr;
  }
}

.nfl-sa-sync-col {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  padding: 12px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 8px;
  background: rgba(0, 0, 0, 0.15);
}

.nfl-sa-sync-col--all {
  border-color: rgba(245, 197, 24, 0.28);
  background: rgba(245, 197, 24, 0.06);
}

.nfl-sa-sync-icon {
  color: #4ade80;
  line-height: 0;
}

.nfl-sa-sync-title {
  margin: 0;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--text);
}

.nfl-sa-sync-text {
  margin: 0;
  color: var(--text-dim);
  font-size: 0.76rem;
  line-height: 1.4;
}

.nfl-sa-sync-cost {
  color: var(--text-dim);
  font-size: 0.7rem;
}

.nfl-sa-sync-col .nfl-sa-btn {
  width: 100%;
  text-align: center;
}

.nfl-sa-sync-status {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-top: 2px;
  font-size: 0.7rem;
  color: var(--text-dim);
}

.nfl-sa-sync-status span:first-child {
  color: var(--text);
}

.nfl-sa-result-state {
  width: max-content;
  justify-self: end;
  padding: 4px 8px;
  border: 1px solid rgba(252, 211, 77, 0.45);
  border-radius: 999px;
  color: #fde68a;
  font-size: 0.78rem;
}

.nfl-sa-result-state.is-final {
  border-color: rgba(74, 222, 128, 0.48);
  color: #86efac;
}

/* Fila de estado del partido + fuente del resultado */
.nfl-sa-result-state-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin: 4px 0 6px;
  flex-wrap: wrap;
}

.nfl-result-state {
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 600;
  border: 1px solid rgba(252, 211, 77, 0.4);
  color: #fde68a;
}
.nfl-result-state--final {
  border-color: rgba(74, 222, 128, 0.48);
  color: #86efac;
}
.nfl-result-state--live {
  border-color: rgba(251, 146, 60, 0.5);
  color: #fdba74;
}
.nfl-result-state--pending {
  border-color: rgba(148, 163, 184, 0.3);
  color: var(--text-dim);
}

.nfl-sa-result-source {
  font-size: 0.68rem;
  color: var(--text-dim);
  font-style: italic;
}

.nfl-sa-result-edit-controls {
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 8px;
}

/* Por defecto: marcador de solo lectura, inputs ocultos. */
.nfl-final-team-score-input { display: none; }
.nfl-sa-result-edit-controls { display: none; }

/* Mismo tratamiento visual que "Configuración" (borde, icono, flecha) — antes
   el summary se veía como un botón suelto y el contenido (hint + botones)
   quedaba sin caja alrededor, como flotando fuera del colapsable. */
.nfl-sa-result-edit-section {
  margin-top: 7px;
  padding-top: 7px;
  border-top: 1px solid var(--border);
}

.nfl-sa-result-edit-section summary {
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  color: var(--text);
  list-style: none;
}

.nfl-sa-result-edit-section summary::-webkit-details-marker {
  display: none;
}

.nfl-sa-result-edit-section summary::after {
  content: '▾';
  margin-left: auto;
  color: var(--text-dim);
  transition: transform 0.15s ease;
}

.nfl-sa-result-edit-section[open] summary::after {
  transform: rotate(180deg);
}

.nfl-sa-result-edit-section[open] summary {
  margin-bottom: 7px;
}

.nfl-sa-result-edit-content { padding: 0; }

/* Cuando el colapsable está abierto: el número se vuelve input en el mismo
   lugar. El marcador vive fuera de <details> (arriba de la tarjeta), así que
   no hay relación ancestro/descendiente para un selector [open] — se marca
   con una clase en el <article> (ver bindResultActions en super-admin-matches.js). */
.nfl-sa-match.is-editing-score .nfl-final-team-score { display: none; }
.nfl-sa-match.is-editing-score .nfl-final-team-score-input { display: inline-block; }
.nfl-sa-result-edit-section[open] .nfl-sa-result-edit-controls { display: flex; }

@media (max-width: 480px) {
  .nfl-sa-config-fields { grid-template-columns: 1fr; }
  .nfl-sa-override { max-width: 88px; text-align: right; }
}
.nfl-conference-champions {
  display: grid;
  gap: 18px;
}

.nfl-conference-intro {
  margin: 0;
  color: var(--text-dim);
  font-size: 0.88rem;
  line-height: 1.5;
}

.nfl-conference-pick {
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 16px;
  background: rgba(9, 16, 26, 0.72);
}

.nfl-conference-pick__head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 16px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.nfl-conference-pick__head h3,
.nfl-conference-pick__head p {
  margin: 0;
}

.nfl-conference-pick__head p {
  margin-top: 3px;
  color: var(--text-dim);
  font-size: 0.74rem;
}

.nfl-conference-team-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  padding: 12px;
}

.nfl-conference-divisions {
  display: grid;
  gap: 14px;
  padding: 14px;
}

.nfl-conference-division h4 {
  margin: 0 0 8px;
  color: var(--text-dim);
  font-size: 0.74rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.nfl-conference-division .nfl-conference-team-grid {
  padding: 0;
}

.nfl-conference-team {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
  min-height: 56px;
  padding: 8px 10px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.035);
  color: var(--text);
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.nfl-conference-team img {
  width: 36px;
  height: 36px;
  object-fit: contain;
}

.nfl-conference-team strong {
  overflow: hidden;
  font-size: 0.78rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.nfl-conference-team small {
  color: var(--text-dim);
  font-size: 0.62rem;
}

.nfl-conference-team.is-selected {
  border-color: #e5b84e;
  background: rgba(229, 184, 78, 0.14);
  box-shadow: inset 0 0 0 1px rgba(229, 184, 78, 0.22);
}

.nfl-conference-team:disabled {
  cursor: default;
  opacity: 0.68;
}

@media (max-width: 560px) {
  .nfl-conference-team-grid {
    grid-template-columns: 1fr;
  }
}
