/* ============================================================
   TitleTown · Slip Analyzer status + layout · v0.18.20.5
   ------------------------------------------------------------
   SUPERSEDES styles-append-slip-analyzer-status-v0.16.83.css (retire
   it: local rm + remote rm + Cloudflare purge; bucket (1), immutable).
   v0.18.20.5 (SA #AY-2): the details focus outline read the --accent
   token with a 6cf08e fallback. No stylesheet the page loads defines
   --accent, so it rendered that green, found nowhere else on the page.
   It now reads --accent-pos (5DE0AC), the page's mint.
   Rules otherwise unchanged from v0.16.83, whose notes follow.
   v0.16.83 SUPERSEDED styles-append-slip-analyzer-status-v0.16.82.css.
   Carries that file's rules unchanged, plus ship 3:
     · the ALL pill no longer floats above its L5/L10/L20
       siblings when the seasons caption is present
   ============================================================ */

/* ── status banner (unchanged from v0.16.81) ─────────────────── */
.sa-status-line + .sa-status-line { margin-top: 8px; }
.sa-status-list { margin: 4px 0 0; padding-left: 18px; }
.sa-status-list li { margin: 2px 0; }

.sa-status-detail {
  margin-top: 8px;
  font-size: 11px;
  line-height: 1.6;
  color: var(--text-muted, #6a6a6a);
}
.sa-status-detail summary {
  cursor: pointer;
  list-style: none;
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: 10px;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-secondary, #9a9a9a);
}
.sa-status-detail summary::-webkit-details-marker { display: none; }
.sa-status-detail summary::before {
  content: '▸';
  display: inline-block;
  width: 12px;
  transition: transform .12s ease;
}
.sa-status-detail[open] summary::before { transform: rotate(90deg); }
.sa-status-detail[open] summary { margin-bottom: 4px; }
.sa-status-detail summary:focus-visible {
  outline: 1px solid var(--accent-pos, #5DE0AC);
  outline-offset: 2px;
}
.sa-status-detail code {
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: 11px;
  background: rgba(255, 255, 255, .06);
  padding: 1px 5px;
}
.sa-status-pending { margin-top: 6px; }

@media (prefers-reduced-motion: reduce) {
  .sa-status-detail summary::before { transition: none; }
}

/* ALL window: seasons-spanned caption (unchanged from v0.16.81) */
body.sa-flow-shell .sa-cell-window .sa-win-span {
  display: block;
  margin-top: 3px;
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: 9px;
  letter-spacing: .02em;
  line-height: 1.2;
  text-align: center;
  color: var(--text-tertiary, #6a6a6a);
}

/* ── v0.16.82 ────────────────────────────────────────────────── */

/* (6) `hidden` does not hide an element whose class sets display: the UA rule
   [hidden]{display:none} loses to any author display rule. These three all set
   flex and shipped without a guard, so each rendered as an empty box from first
   paint until JS ran — the empty amber bar. .sa-history-idle already carried
   this guard by hand in slip-analyzer.css; this closes the rest of the class.
   The JS also sets inline display (v0.16.81.1) and that stays: this covers the
   window before JS runs, the JS covers dynamic toggling. */
.sa-banner[hidden],
.sa-skipped[hidden],
.sa-results[hidden] { display: none !important; }

/* (2) renderConfidenceBar draws only COMPLETED runs (it is called from
   renderResults with the final prop count), so three full bars are a progress
   rendering of a finished thing, and "99% OCR" is a confidence drawn as
   progress. The labels row below keeps every number. */
body.sa-flow-shell .sa-confbar-track { display: none; }
body.sa-flow-shell .sa-confbar { margin-top: 6px; }
body.sa-flow-shell .sa-confbar-labels { gap: 18px; }

/* (3) the dropzone is now the only empty state, so it does not need to fill a
   screen to say so — this lifts Recent Slips and Weekly Record into view. */
body.sa-flow-shell .sa-dropzone { min-height: 0; padding: 30px 24px; }
body.sa-flow-shell .sa-dropzone-icon { transform: scale(.8); }

/* (5) AVG EV: .sa-bl-* sets a background, and the value is a block element, so
   a negative EV painted a full-width filled bar — the encoding of a positive
   quantity. Bind the tint to the text. */
body.sa-flow-shell .sa-weekly-stat-value[class*="sa-bl-"] {
  display: inline-block;
  padding: 1px 8px;
  border-radius: 4px;
}

/* (4) DATA now lists a league per entry and needs room to breathe. */
body.sa-flow-shell .status-item .status-value#data-date {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* (5) Recent Slips rows carry surnames — let the label take the slack and
   truncate rather than pushing the verdict pill and timestamp out of line. */
body.sa-flow-shell .sa-recent-slip-meta { min-width: 0; }
body.sa-flow-shell .sa-recent-slip-label-text {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ── v0.16.83 ────────────────────────────────────────────────── */

/* The ALL pill sat higher than L5/L10/L20 by half the caption's height —
   one line lifted it ~11px, the three-line "2024-2026 · 2 non-games excl."
   lifted it ~22px, so the misalignment scaled with the text and read as the
   column being off-centre rather than as a clean shift.

   Two rules compose to produce it. `.sa-row` is a grid with
   align-items: center (slip-analyzer.css), which centres each CELL BOX in
   the row; the ALL cell's box is taller because it holds the caption. Then
   .sa-cell-window's justify-content: center (flow-v0.16.41.7) centres the
   pill inside that taller box. Neither rule is wrong alone.

   Fix opts the window cells out of the grid's centring and tops the pill
   inside the full-height cell, so all four pills share a y no matter how
   many lines the caption runs to. Scoped to .sa-cell-window: every other
   cell in the row stays centred. */
body.sa-flow-shell .sa-cell-window {
  align-self: stretch;
  justify-content: flex-start;
}
