/**
 * nfl-algo-detail.css — the algorithm detail page (/algorithm/{id}/), plus the
 * MARKETPLACE-FAMILY BASELINE. v0.44.7a, dec 78.
 *
 * THE DETAIL SURFACE ONLY — `nfl-hero`, `nfl-algo-*`, and the `nfl-market-*`
 * pieces that only /algorithm/{id}/ emits.
 *
 * The six SHARED marketplace-family classes moved to nfl-market-base.css at
 * v0.44.7b (both halves enqueue it). This sheet layers on top of that one.
 *
 * Layout only; cards, KPIs and badges come from nfl-lines-ds.css.
 */

/* ===================================== BASELINE LIVES ELSEWHERE ========== */
/* The six shared marketplace-family classes (container/title/desc/breadcrumb/
 * stats-card/stats-table) moved to assets/css/nfl-market-base.css at
 * v0.44.7b so BOTH marketplace halves load one explicit source rather than
 * /market/ implicitly borrowing this file. Do not re-add them here. */

/* ================================================== 2. DETAIL SURFACE ==== */

.nfl-market-subtitle {
  font-size: 1.15rem;
  margin: 0 0 12px;
  letter-spacing: -0.01em;
}

.nfl-market-h3 {
  font-size: 1rem;
  margin: 16px 0 8px;
}

.nfl-market-meta,
.nfl-market-footnote {
  color: var(--nfl-text-muted, #6b7280);
  font-size: 0.875rem;
}

.nfl-market-num { font-variant-numeric: tabular-nums; }

.nfl-table-scroll {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.nfl-market-title-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--nfl-gap-3, 10px);
}

.nfl-market-recipe-version,
.nfl-market-db-row {
  color: var(--nfl-text-muted, #6b7280);
  font-size: 0.875rem;
}

/* ------------------------------------------------------- hero / proof -- */

.nfl-hero {
  border: 2px solid var(--nfl-text, #111827);
  border-radius: var(--nfl-radius-band, 14px);
  padding: 22px 20px;
  margin: 0 0 18px;
  background: var(--nfl-card-bg, #fff);
}

.nfl-hero__kpis { margin: 0 0 8px; }

.nfl-hero__break-even {
  margin: 0 0 18px;
  font-size: 0.82rem;
  color: var(--nfl-text-faint, #9ca3af);
}

.nfl-hero__primary {
  padding: 16px 18px;
  border-radius: var(--nfl-radius-card, 12px);
  background: var(--nfl-page-bg, #fafafa);
  margin: 0 0 12px;
}

.nfl-hero__secondary {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--nfl-gap-4, 12px);
}

.nfl-hero__stat {
  padding: 14px 16px;
  border-radius: var(--nfl-radius-card, 12px);
  border: 1px solid var(--nfl-card-border, #e6e8ec);
}

.nfl-hero__label {
  font-size: 0.76rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--nfl-text-muted, #6b7280);
  margin-bottom: 4px;
}

.nfl-hero__value {
  font-size: clamp(1.8rem, 4vw, 2.6rem);
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}

.nfl-hero__value-sm {
  font-size: 1.4rem;
  font-weight: 800;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}

.nfl-hero__meta {
  margin-top: 4px;
  font-size: 0.84rem;
  color: var(--nfl-text-muted, #6b7280);
}

.nfl-hero--win  .nfl-hero__value,
.nfl-hero--win  .nfl-hero__value-sm { color: var(--nfl-good, #15803d); }
.nfl-hero--lose .nfl-hero__value,
.nfl-hero--lose .nfl-hero__value-sm { color: var(--nfl-bad, #b91c1c); }
.nfl-hero--push .nfl-hero__value,
.nfl-hero--push .nfl-hero__value-sm { color: var(--nfl-text, #111827); }

/* ---------------------------------------------------------- accordions -- */

.nfl-algo-accordion__section {
  padding: 0;
  margin: 0 0 12px;
  overflow: hidden;
}

/* The summary is a CONTROL, not a line of text. */
.nfl-algo-accordion__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--nfl-gap-4, 12px);
  padding: 15px 18px;
  cursor: pointer;
  font-weight: 700;
  font-size: 1rem;
  list-style: none;
  user-select: none;
}

.nfl-algo-accordion__summary::-webkit-details-marker { display: none; }
.nfl-algo-accordion__summary::marker { content: ''; }

.nfl-algo-accordion__summary:hover { background: var(--nfl-page-bg, #fafafa); }

.nfl-algo-accordion__summary:focus-visible {
  outline: 2px solid var(--nfl-accent, #2563eb);
  outline-offset: -2px;
}

.nfl-algo-accordion__label { min-width: 0; }

/* Open/closed affordance — rotates when the section opens. */
.nfl-algo-accordion__chevron {
  flex: 0 0 auto;
  width: 9px;
  height: 9px;
  border-right: 2px solid var(--nfl-text-muted, #6b7280);
  border-bottom: 2px solid var(--nfl-text-muted, #6b7280);
  transform: rotate(45deg);
  transition: transform 0.15s ease;
  margin-right: 4px;
}

.nfl-algo-accordion__section[open] > .nfl-algo-accordion__summary {
  border-bottom: 1px solid var(--nfl-card-border, #e6e8ec);
}

.nfl-algo-accordion__section[open] > .nfl-algo-accordion__summary .nfl-algo-accordion__chevron {
  transform: rotate(-135deg);
}

.nfl-algo-accordion__body { padding: 16px 18px 18px; }

/* -------------------------------------------------------- detail parts -- */

.nfl-algo-rank-line,
.nfl-market-streak,
.nfl-market-streaks {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--nfl-gap-2, 8px) 14px;
  margin: 0 0 12px;
  font-size: 0.92rem;
}

.nfl-market-streak--hot  { color: var(--nfl-good, #15803d); font-weight: 700; }
.nfl-market-streak--cold { color: var(--nfl-bad,  #b91c1c); font-weight: 700; }

.nfl-probation-notice {
  padding: 16px 18px;
  border-radius: var(--nfl-radius-card, 12px);
  border-left: 4px solid var(--nfl-bad, #b91c1c);
  background: var(--nfl-bad-bg, #fee2e2);
  margin: 0 0 16px;
}

.nfl-probation-notice__title {
  margin: 0 0 6px;
  font-size: 1rem;
  font-weight: 800;
}

.nfl-market-subtotal,
.nfl-market-subtotal--tweak {
  padding: 12px 14px;
  border-radius: var(--nfl-radius-card, 12px);
  background: var(--nfl-page-bg, #fafafa);
  margin: 0 0 12px;
  font-size: 0.9rem;
}

/* The download control's CONTAINER only — the control itself is dec-83
   territory (v0.44.8) and its markup is byte-identical to pre-ship. */
.nfl-market-download-lock {
  padding: 14px 16px;
  border-radius: var(--nfl-radius-card, 12px);
  background: var(--nfl-page-bg, #fafafa);
  margin: 12px 0 0;
}

.nfl-market-download-lock__note {
  margin: 0;
  color: var(--nfl-text-muted, #6b7280);
  font-size: 0.9rem;
}

.nfl-market-download-lock__note--empty { color: var(--nfl-bad, #b91c1c); }

/* The button itself — container styling only; its MARKUP is dec-83/.44.8
   territory and is byte-identical to pre-ship. */
.nfl-market-download-btn { width: auto; }

.nfl-market-download-btn__remaining {
  font-weight: 500;
  opacity: 0.85;
}

.nfl-market-picks-card,
.nfl-recipe-card,
.nfl-curve-card {
  padding: 16px 18px;
  border-radius: var(--nfl-radius-card, 12px);
  border: 1px solid var(--nfl-card-border, #e6e8ec);
  margin: 0 0 16px;
}

.nfl-curve__svg { max-width: 100%; height: auto; display: block; }

.nfl-algo-users-other-list {
  list-style: none;
  margin: 8px 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: var(--nfl-gap-2, 8px);
}

.nfl-algo-users-other-list li {
  padding: 9px 12px;
  border: 1px solid var(--nfl-card-border, #e6e8ec);
  border-radius: var(--nfl-radius-control, 9px);
  font-size: 0.9rem;
}

.nfl-algo-record-drill,
.nfl-algo-record-season,
.nfl-algo-record-week {
  font-variant-numeric: tabular-nums;
}

.nfl-market-empty,
.nfl-market-empty-cell {
  color: var(--nfl-text-faint, #9ca3af);
  font-style: italic;
}

.nfl-market-notice {
  padding: 12px 14px;
  border-radius: var(--nfl-radius-card, 12px);
  background: var(--nfl-accent-bg, #dbeafe);
  color: var(--nfl-accent, #2563eb);
  margin: 0 0 14px;
  font-size: 0.9rem;
}

/* ------------------------------------------------------------- buttons -- */

.nfl-market-container .nfl-btn {
  display: inline-block;
  padding: 10px 18px;
  border-radius: var(--nfl-radius-control, 9px);
  border: 1px solid var(--nfl-card-border, #e6e8ec);
  background: var(--nfl-card-bg, #fff);
  color: var(--nfl-text, #111827);
  font-weight: 600;
  font-size: 0.94rem;
  text-decoration: none;
  cursor: pointer;
}

.nfl-market-container .nfl-btn--primary {
  background: var(--nfl-accent, #2563eb);
  border-color: var(--nfl-accent, #2563eb);
  color: #fff;
}

.nfl-market-container .nfl-btn:hover { filter: brightness(0.96); }

/* -------------------------------------------------------- responsive   -- */

@media (max-width: 900px) {
  .nfl-hero__secondary { grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
  .nfl-hero { padding: 18px 15px; }
  .nfl-algo-accordion__summary { padding: 13px 14px; font-size: 0.94rem; }
  .nfl-algo-accordion__body { padding: 14px; }
  .nfl-market-stats-table { font-size: 0.86rem; }
  .nfl-market-stats-table th,
  .nfl-market-stats-table td { padding: 8px 9px; }
  .nfl-market-container .nfl-btn { width: 100%; text-align: center; }
}

/* ================================================ 3. DETAIL COMPONENTS ==== */
/* Every remaining class the detail page emits. Grouped by the section that
   owns it so a future ship can find things by feature rather than by name. */

/* ---- inline name edit / owner controls (owner-only) --------------------- */

.nfl-algo-name-edit-form {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nfl-gap-2, 8px);
  align-items: center;
  margin: 8px 0 0;
}

.nfl-algo-input {
  padding: 8px 10px;
  border: 1px solid var(--nfl-card-border, #e6e8ec);
  border-radius: var(--nfl-radius-control, 9px);
  font-size: 0.95rem;
  min-width: 220px;
}

.nfl-algo-flash {
  padding: 10px 14px;
  border-radius: var(--nfl-radius-control, 9px);
  margin: 0 0 12px;
  font-weight: 600;
  font-size: 0.9rem;
}

.nfl-algo-flash--ok  { background: var(--nfl-good-bg, #dcfce7); color: var(--nfl-good, #15803d); }
.nfl-algo-flash--err { background: var(--nfl-bad-bg,  #fee2e2); color: var(--nfl-bad,  #b91c1c); }

.nfl-algo-lock {
  display: inline-flex;
  align-items: center;
  gap: var(--nfl-gap-1, 6px);
  font-size: 0.85rem;
  color: var(--nfl-text-muted, #6b7280);
}

.nfl-algo-lock--on { color: var(--nfl-bad, #b91c1c); font-weight: 700; }

.nfl-market-owner-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--nfl-gap-3, 10px) 14px;
  padding: 14px 16px;
  border-radius: var(--nfl-radius-card, 12px);
  background: var(--nfl-page-bg, #fafafa);
  margin: 0 0 16px;
}

.nfl-market-owner-actions__label {
  font-size: 0.76rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--nfl-text-muted, #6b7280);
  width: 100%;
}

.nfl-market-owner-actions__exports { display: flex; flex-wrap: wrap; gap: var(--nfl-gap-2, 8px); }

.nfl-market-owner-actions__lock { color: var(--nfl-bad, #b91c1c); font-weight: 700; font-size: 0.9rem; }

.nfl-market-owner-actions__lock-hint {
  color: var(--nfl-text-muted, #6b7280);
  font-size: 0.84rem;
  width: 100%;
}

/* ---- rank line ---------------------------------------------------------- */

.nfl-algo-rank-line__label {
  font-size: 0.76rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--nfl-text-muted, #6b7280);
}

.nfl-algo-rank-line__seg {
  padding: 3px 10px;
  border-radius: var(--nfl-radius-pill, 999px);
  background: var(--nfl-mid-bg, #f3f4f6);
  font-weight: 700;
  font-size: 0.85rem;
  font-variant-numeric: tabular-nums;
}

.nfl-algo-rank-line__seg--unranked {
  background: transparent;
  color: var(--nfl-text-faint, #9ca3af);
  font-weight: 500;
}

.nfl-algo-rank-line__sep  { color: var(--nfl-text-faint, #9ca3af); }
.nfl-algo-rank-line__more { font-size: 0.85rem; }

/* ---- record drill ------------------------------------------------------- */

.nfl-algo-record-rec,
.nfl-algo-record-pct,
.nfl-algo-record-games,
.nfl-algo-record-weeks { font-variant-numeric: tabular-nums; }

.nfl-algo-record-pct { font-weight: 700; }
.nfl-algo-record-games,
.nfl-algo-record-weeks { color: var(--nfl-text-muted, #6b7280); font-size: 0.875rem; }

/* ---- other formulas by this user ---------------------------------------- */

.nfl-algo-users-other { margin: 0 0 16px; }

.nfl-algo-users-other-status {
  color: var(--nfl-text-muted, #6b7280);
  font-size: 0.8rem;
  margin-left: 6px;
}

/* ---- accordion wrapper -------------------------------------------------- */

.nfl-algo-accordion { margin: 0 0 18px; }

/* ---- probation notice --------------------------------------------------- */

.nfl-probation-notice__inner { display: flex; gap: var(--nfl-gap-4, 12px); align-items: flex-start; }
.nfl-probation-notice__icon  { flex: 0 0 auto; font-size: 1.1rem; line-height: 1.3; }
.nfl-probation-notice__body  { min-width: 0; }
.nfl-probation-notice__label {
  font-size: 0.74rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-weight: 800;
}
.nfl-probation-notice__text     { margin: 4px 0 0; }
.nfl-probation-notice__subtext  { margin: 6px 0 0; font-size: 0.86rem; opacity: 0.85; }

/* ---- subtotal / since-last-tweak ---------------------------------------- */

.nfl-market-subtotal__row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nfl-gap-2, 8px) 18px;
  align-items: baseline;
}
.nfl-market-subtotal__label {
  font-size: 0.76rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--nfl-text-muted, #6b7280);
  width: 100%;
}
.nfl-market-subtotal__stat { display: flex; gap: var(--nfl-gap-1, 6px); align-items: baseline; }
.nfl-market-subtotal__stat--muted { opacity: 0.7; }
.nfl-market-subtotal__k { color: var(--nfl-text-muted, #6b7280); font-size: 0.85rem; }
.nfl-market-subtotal__num { font-weight: 700; font-variant-numeric: tabular-nums; }
.nfl-market-subtotal__note { width: 100%; color: var(--nfl-text-faint, #9ca3af); font-size: 0.82rem; }

/* ---- streaks ------------------------------------------------------------ */

.nfl-market-streak__k { color: var(--nfl-text-muted, #6b7280); font-size: 0.85rem; }
.nfl-market-streak__v { font-weight: 700; font-variant-numeric: tabular-nums; }
.nfl-market-streaks__note { width: 100%; color: var(--nfl-text-faint, #9ca3af); font-size: 0.82rem; }

/* ---- ATS trajectory (inline SVG) ---------------------------------------- */

.nfl-market-trajectory { margin: 0; }
.nfl-market-trajectory__svg { max-width: 100%; height: auto; display: block; }
.nfl-market-trajectory__line     { fill: none; stroke: var(--nfl-accent, #2563eb); stroke-width: 2; }
.nfl-market-trajectory__baseline { stroke: var(--nfl-text-faint, #9ca3af); stroke-dasharray: 3 3; stroke-width: 1; }
.nfl-market-trajectory__summary {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nfl-gap-2, 8px) 18px;
  align-items: baseline;
  margin: 10px 0 0;
}
.nfl-market-trajectory__stat { display: flex; gap: var(--nfl-gap-1, 6px); align-items: baseline; }
.nfl-market-trajectory__k    { color: var(--nfl-text-muted, #6b7280); font-size: 0.85rem; }
.nfl-market-trajectory__num  { font-weight: 700; font-variant-numeric: tabular-nums; }
.nfl-market-trajectory__note { width: 100%; color: var(--nfl-text-faint, #9ca3af); font-size: 0.82rem; }

/* ---- equity curve (inline SVG) ------------------------------------------ */

.nfl-curve { margin: 0; }
.nfl-curve__line     { fill: none; stroke: var(--nfl-accent, #2563eb); stroke-width: 2; }
.nfl-curve__zero     { stroke: var(--nfl-text-faint, #9ca3af); stroke-dasharray: 3 3; stroke-width: 1; }
.nfl-curve__axis     { stroke: var(--nfl-card-border, #e6e8ec); stroke-width: 1; }
.nfl-curve__boundary { stroke: var(--nfl-card-border, #e6e8ec); stroke-dasharray: 2 4; stroke-width: 1; }
.nfl-curve__endpoint { fill: var(--nfl-accent, #2563eb); }
.nfl-curve__endpoint-label,
.nfl-curve__season-label { font-size: 10px; fill: var(--nfl-text-muted, #6b7280); }

/* ---- this-week picks teaser --------------------------------------------- */

.nfl-market-weekpicks { margin: 0; }

.nfl-market-weekpicks__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--nfl-gap-2, 8px) 14px;
  margin: 0 0 10px;
}

.nfl-market-weekpicks__title { font-weight: 800; font-size: 1rem; margin: 0; }

.nfl-market-weekpicks__meta { color: var(--nfl-text-muted, #6b7280); font-size: 0.85rem; }

.nfl-market-weekpicks__access-badge {
  padding: 2px 9px;
  border-radius: var(--nfl-radius-pill, 999px);
  background: var(--nfl-mid-bg, #f3f4f6);
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.nfl-market-weekpicks__list { list-style: none; margin: 0; padding: 0; }

.nfl-market-weekpicks__row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--nfl-gap-2, 8px) 12px;
  padding: 8px 0;
  border-bottom: 1px solid var(--nfl-card-border, #e6e8ec);
  font-size: 0.92rem;
}

.nfl-market-weekpicks__row:last-child { border-bottom: none; }

.nfl-market-weekpicks__matchup { font-weight: 600; }
.nfl-market-weekpicks__team    { font-weight: 700; }
.nfl-market-weekpicks__at      { color: var(--nfl-text-faint, #9ca3af); font-size: 0.85rem; }
.nfl-market-weekpicks__pick    { margin-left: auto; font-weight: 700; }
.nfl-market-weekpicks__spread  { font-variant-numeric: tabular-nums; color: var(--nfl-text-muted, #6b7280); }

/* Locked rows stay in the DOM so the shape of the week is visible without
   revealing the pick itself. */
.nfl-market-weekpicks__hidden {
  color: var(--nfl-text-faint, #9ca3af);
  letter-spacing: 0.12em;
  user-select: none;
}

.nfl-market-weekpicks__playoff-icon { font-size: 0.85rem; }
.nfl-market-weekpicks__playoff-note,
.nfl-market-weekpicks__filenote,
.nfl-market-weekpicks__footer {
  color: var(--nfl-text-muted, #6b7280);
  font-size: 0.84rem;
  margin: 10px 0 0;
}

/* ---- tables in accordions ----------------------------------------------- */

.nfl-market-ratings-table,
.nfl-market-picks-table,
.nfl-market-seasons-table,
.nfl-current-season-table,
.nfl-all-games-table {
  width: 100%;
  border-collapse: collapse;
  font-variant-numeric: tabular-nums;
  font-size: 0.9rem;
}

.nfl-market-ratings-table th,  .nfl-market-ratings-table td,
.nfl-market-picks-table th,    .nfl-market-picks-table td,
.nfl-market-seasons-table th,  .nfl-market-seasons-table td,
.nfl-current-season-table th,  .nfl-current-season-table td,
.nfl-all-games-table th,       .nfl-all-games-table td {
  padding: 8px 11px;
  text-align: right;
  border-bottom: 1px solid var(--nfl-card-border, #e6e8ec);
  white-space: nowrap;
}

.nfl-market-ratings-table th:first-child,  .nfl-market-ratings-table td:first-child,
.nfl-market-picks-table th:first-child,    .nfl-market-picks-table td:first-child,
.nfl-market-seasons-table th:first-child,  .nfl-market-seasons-table td:first-child,
.nfl-current-season-table th:first-child,  .nfl-current-season-table td:first-child,
.nfl-all-games-table th:first-child,       .nfl-all-games-table td:first-child { text-align: left; }

.nfl-market-ratings-table thead th,
.nfl-market-picks-table thead th,
.nfl-market-seasons-table thead th,
.nfl-current-season-table thead th,
.nfl-all-games-table thead th {
  font-size: 0.74rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--nfl-text-muted, #6b7280);
  border-bottom-width: 2px;
}

.nfl-market-team-abbr { font-weight: 700; }
.nfl-market-total { font-weight: 800; border-top: 2px solid var(--nfl-text, #111827); }

/* ---- all-games filter row ------------------------------------------------ */

.nfl-games-filter,
.nfl-market-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--nfl-gap-2, 8px) 12px;
  margin: 0 0 12px;
}

.nfl-games-filter__btn {
  padding: 6px 13px;
  border: 1px solid var(--nfl-card-border, #e6e8ec);
  border-radius: var(--nfl-radius-pill, 999px);
  background: var(--nfl-card-bg, #fff);
  font-size: 0.86rem;
  font-weight: 600;
  cursor: pointer;
}

.nfl-games-filter__btn:hover { background: var(--nfl-page-bg, #fafafa); }

.nfl-games-filter__count,
.nfl-market-filter-count {
  color: var(--nfl-text-muted, #6b7280);
  font-size: 0.85rem;
}

.nfl-market-filter-group { display: flex; align-items: center; gap: var(--nfl-gap-1, 6px); }

.nfl-market-filter-label {
  font-size: 0.76rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--nfl-text-muted, #6b7280);
}

.nfl-market-filter-clear {
  color: var(--nfl-text-muted, #6b7280);
  font-size: 0.86rem;
  text-decoration: none;
}

.nfl-market-filter-clear:hover { text-decoration: underline; }

/* ---- recipe / settings --------------------------------------------------- */

.nfl-market-settings-dl {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 2px 16px;
  margin: 10px 0 0;
}

.nfl-market-settings-dl dt {
  font-size: 0.76rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--nfl-text-muted, #6b7280);
}

.nfl-market-settings-dl dd { margin: 0 0 8px; font-weight: 600; }

/* ---- misc ---------------------------------------------------------------- */

.nfl-market-compare-cta { margin: 14px 0 0; }
.nfl-market-desc-sep { color: var(--nfl-text-faint, #9ca3af); margin: 0 6px; }
.nfl-bp__selection { font-weight: 700; }
.nfl-bp__num { font-variant-numeric: tabular-nums; }

/* ============================================ 4. MARKET / BROWSE (.7b) ==== */
/* The /market/ half of this class. Loaded on both surfaces (they share one
 * enqueue), so anything here must be scoped to classes only the market half
 * emits — the detail page must not inherit market chrome by accident. */

/* ---- header + compare CTA ------------------------------------------------ */

.nfl-market-compare-cta { margin: 0 0 18px; }

/* ---- consensus block ----------------------------------------------------- */

.nfl-market-consensus {
  border: 1px solid var(--nfl-card-border, #e6e8ec);
  border-radius: var(--nfl-radius-card, 12px);
  background: var(--nfl-card-bg, #fff);
  padding: 0;
  margin: 0 0 16px;
  overflow: hidden;
}

.nfl-market-consensus__title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--nfl-gap-3, 10px);
  padding: 14px 18px;
  cursor: pointer;
  font-weight: 800;
  font-size: 1rem;
  list-style: none;
}

.nfl-market-consensus__title::-webkit-details-marker { display: none; }
.nfl-market-consensus__title::marker { content: ''; }
.nfl-market-consensus__title:hover { background: var(--nfl-page-bg, #fafafa); }

.nfl-market-consensus[open] > .nfl-market-consensus__title {
  border-bottom: 1px solid var(--nfl-card-border, #e6e8ec);
}

.nfl-market-consensus__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: var(--nfl-gap-4, 12px);
  padding: 16px 18px 18px;
}

.nfl-market-consensus__game {
  padding: 12px 14px;
  border: 1px solid var(--nfl-card-border, #e6e8ec);
  border-radius: var(--nfl-radius-card, 12px);
}

.nfl-market-consensus__matchup {
  font-weight: 700;
  font-size: 0.92rem;
  margin-bottom: 8px;
}

/* THE BARS. These carry an inline width percentage from PHP but had no rule
   at all, so the agreement chart did not exist visually — two unstyled divs
   stacked. Height, colour and label placement live here; the width stays
   inline because it is data. */
.nfl-market-consensus__bars {
  display: flex;
  flex-direction: column;
  gap: var(--nfl-gap-0, 4px);
}

.nfl-market-consensus__bar {
  display: flex;
  align-items: center;
  min-width: 3.5rem;
  height: 24px;
  padding: 0 8px;
  border-radius: var(--nfl-radius-badge, 7px);
  font-size: 0.78rem;
  font-weight: 700;
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
}

.nfl-market-consensus__bar--away { background: var(--nfl-chart-3, #b45309); }
.nfl-market-consensus__bar--home { background: var(--nfl-accent, #2563eb); }

.nfl-market-consensus__meta {
  margin: 8px 0 0;
  font-size: 0.82rem;
  color: var(--nfl-text-muted, #6b7280);
}

/* ---- leaderboards strip -------------------------------------------------- */

.nfl-market-leaderboards {
  border: 1px solid var(--nfl-card-border, #e6e8ec);
  border-radius: var(--nfl-radius-card, 12px);
  background: var(--nfl-card-bg, #fff);
  margin: 0 0 18px;
  overflow: hidden;
}

.nfl-market-leaderboards__title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--nfl-gap-3, 10px);
  padding: 14px 18px;
  cursor: pointer;
  font-weight: 800;
  font-size: 1rem;
  list-style: none;
}

.nfl-market-leaderboards__title::-webkit-details-marker { display: none; }
.nfl-market-leaderboards__title::marker { content: ''; }
.nfl-market-leaderboards__title:hover { background: var(--nfl-page-bg, #fafafa); }

.nfl-market-leaderboards[open] > .nfl-market-leaderboards__title {
  border-bottom: 1px solid var(--nfl-card-border, #e6e8ec);
}

.nfl-market-leaderboards__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: var(--nfl-gap-4, 12px);
  padding: 16px 18px 18px;
}

.nfl-market-leaderboards__card {
  padding: 14px 15px;
  border: 1px solid var(--nfl-card-border, #e6e8ec);
  border-radius: var(--nfl-radius-card, 12px);
}

.nfl-market-leaderboards__card-title {
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--nfl-text-muted, #6b7280);
  margin: 0 0 8px;
}

.nfl-market-leaderboards__list {
  list-style: decimal;
  margin: 0;
  padding-left: 1.15rem;
  font-size: 0.9rem;
}

.nfl-market-leaderboards__list li {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--nfl-gap-2, 8px);
  padding: 4px 0;
}

.nfl-market-leaderboards__list a {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--nfl-accent, #2563eb);
  text-decoration: none;
  font-weight: 600;
}

.nfl-market-leaderboards__list a:hover { text-decoration: underline; }

/* Banded at the same 52.4% break-even the leaderboards board and the detail
   hero use — one algorithm must not read differently across three surfaces. */
.nfl-market-leaderboards__pct {
  font-variant-numeric: tabular-nums;
  font-weight: 700;
  padding: 1px 7px;
  border-radius: var(--nfl-radius-badge, 7px);
  white-space: nowrap;
}

.nfl-market-leaderboards__pct--good { background: var(--nfl-good-bg, #dcfce7); color: var(--nfl-good, #15803d); }
.nfl-market-leaderboards__pct--mid  { background: var(--nfl-mid-bg,  #f3f4f6); color: var(--nfl-text, #111827); }
.nfl-market-leaderboards__pct--bad  { background: var(--nfl-bad-bg,  #fee2e2); color: var(--nfl-bad,  #b91c1c); }

.nfl-market-leaderboards__empty {
  margin: 0;
  color: var(--nfl-text-faint, #9ca3af);
  font-style: italic;
  font-size: 0.88rem;
}

.nfl-market-leaderboards__more {
  margin: 10px 0 0;
  font-size: 0.88rem;
}

/* ---- the listing table --------------------------------------------------- */

.nfl-market-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }

/* `nfl-market-view-{$view}` is an interpolated modifier on the wrapper above;
   the wrapper carries the geometry and the modifier exists for future
   per-view treatment. */
[class*="nfl-market-view-"] { display: block; }

.nfl-market-table {
  width: 100%;
  border-collapse: collapse;
  font-variant-numeric: tabular-nums;
  font-size: 0.92rem;
}

.nfl-market-table th,
.nfl-market-table td {
  padding: 10px 12px;
  text-align: right;
  border-bottom: 1px solid var(--nfl-card-border, #e6e8ec);
  white-space: nowrap;
}

.nfl-market-table th:first-child,
.nfl-market-table td:first-child { text-align: left; }

/* Sticky header — the listing runs long and the column meanings are not
   guessable from the values alone. */
.nfl-market-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--nfl-card-bg, #fff);
  font-size: 0.74rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--nfl-text-muted, #6b7280);
  border-bottom-width: 2px;
}

.nfl-market-table thead th a {
  color: inherit;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: var(--nfl-gap-0, 4px);
}

.nfl-market-table thead th a:hover { color: var(--nfl-accent, #2563eb); }

.nfl-market-table tbody tr:nth-child(even) { background: var(--nfl-page-bg, #fafafa); }
.nfl-market-table tbody tr:hover { background: var(--nfl-accent-bg, #dbeafe); }

.nfl-market-sort-arrow {
  font-size: 0.7em;
  color: var(--nfl-accent, #2563eb);
}

.nfl-market-name-link {
  font-weight: 700;
  color: var(--nfl-accent, #2563eb);
  text-decoration: none;
}

.nfl-market-name-link:hover { text-decoration: underline; }

/* ---- pager --------------------------------------------------------------- */

.nfl-market-pager {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--nfl-gap-1, 6px);
  margin: 18px 0 0;
}

.nfl-market-pager__link {
  display: inline-block;
  min-width: 34px;
  padding: 7px 10px;
  border: 1px solid var(--nfl-card-border, #e6e8ec);
  border-radius: var(--nfl-radius-control, 9px);
  text-align: center;
  text-decoration: none;
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--nfl-accent, #2563eb);
}

.nfl-market-pager__link:hover { background: var(--nfl-accent-bg, #dbeafe); }

.nfl-market-pager__link--active {
  background: var(--nfl-accent, #2563eb);
  border-color: var(--nfl-accent, #2563eb);
  color: #fff;
}

.nfl-market-pager__count {
  margin-left: auto;
  color: var(--nfl-text-muted, #6b7280);
  font-size: 0.875rem;
}

/* ---- empty state --------------------------------------------------------- */

.nfl-market-empty {
  padding: 30px 24px;
  text-align: center;
  border: 1px solid var(--nfl-card-border, #e6e8ec);
  border-radius: var(--nfl-radius-card, 12px);
  background: var(--nfl-card-bg, #fff);
  font-style: normal;
}

.nfl-market-empty__body {
  margin: 0 auto 16px;
  max-width: 52ch;
  color: var(--nfl-text-muted, #6b7280);
}

@media (max-width: 560px) {
  .nfl-market-consensus__grid,
  .nfl-market-leaderboards__grid { grid-template-columns: 1fr; padding: 14px; }
  .nfl-market-table { font-size: 0.85rem; }
  .nfl-market-table th,
  .nfl-market-table td { padding: 8px 9px; }
}

/* ═══════════════════════════════════════════════════════════════════════
 * v0.45.15 — THIS WEEK'S PICKS, on the owner's own list row.
 *
 * A member builds an algorithm to see what it picks; generation is
 * published/unlisted only, so a draft owner had no path to their own picks.
 * The block spans the full row because a picks table cannot live in a column.
 * ═══════════════════════════════════════════════════════════════════════ */

.nfl-algo-picks-row > td {
  padding: 0 0 var(--nfl-gap-4, 12px);
  border-top: 0;
}

.nfl-owner-picks {
  margin: 0;
  padding: var(--nfl-gap-4, 12px) var(--nfl-gap-5, 16px);
}

.nfl-owner-picks__title {
  margin: 0 0 var(--nfl-gap-3, 8px);
  font-size: 0.95rem;
  font-weight: 700;
}

/* A draft preview is not a promise — quieter than a live record, and it says
   so in words as well as weight. */
.nfl-owner-picks__draft {
  margin: 0 0 var(--nfl-gap-3, 8px);
  font-size: 0.85rem;
  color: var(--nfl-text-muted, #6b7280);
}

.nfl-owner-picks .nfl-ds-table th,
.nfl-owner-picks .nfl-ds-table td {
  font-variant-numeric: tabular-nums;
}

@media (max-width: 560px) {
  .nfl-owner-picks { padding: var(--nfl-gap-3, 8px); }
}

/* v0.46.26.4 — the record chart that replaced the hand-built P/L SVG.
   Layout only; the canvas and its chrome come from the ds chart layer, which
   this page already loads. A second copy of chart styling here is the drift
   register C16 exists to stop. */
.nfl-algo-detail__record-chart {
  margin: var(--nfl-gap-6, 20px) 0;
}

/* v0.46.39 — privacy lapsed with the tier. Said on the algorithm's own surface,
   because a flag reading "Private" while the picks are downloadable is a lie. */
.nfl-algo-visibility-lapsed {
  margin: var(--nfl-gap-3, 8px) 0 0;
  font-size: 0.9rem;
  color: var(--nfl-text-muted, #6b7280);
}
