/* ============================================================
   cases.css

   The public case docket and the central cases browser. Almost
   everything both pages need is already global in
   site.css: .dvpage/.catpage/.dvrail/.kick, .lede/.entlede,
   .factline/.fl, .sec/.tsec/.sechd, .lf/.lfb/.lfh, .chips/
   .facetbar/.facetlbl/.chip, .sfilters/.fld/.actions, .pill,
   .card. This file adds exactly the one thing nothing shares yet:
   the page-family's own ".empty" rule.

   ".empty" IS RESTATED PER PAGE FAMILY throughout this stylesheet
   set (forum.css, report.css both carry their own), a real, named
   gap rather than a shared
   EmptyState() renderer. This restates the same muted-italic
   treatment those two already use, scoped to this page family
   rather than inventing a new visual shape.

   .caserow gives one case's row in the central browser a little
   more breathing room than a bare .card default, since it holds
   a status pill and a date on top of its own heading line.
   ============================================================ */

.casespage .empty{color:var(--faint);font-style:italic}

.casespage .caserow{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px 14px;
    padding:14px 16px;margin-bottom:10px}
.casespage .caserow .cs-title{font-weight:600;flex:1 1 auto;min-width:0}
.casespage .caserow .cs-dt{color:var(--muted);font-size:.85rem;white-space:normal}

/* ---- w729-casedocket, 2026-08-11: the docket number ----------------------
   .docketcap is the case detail page's own caption line, sitting directly
   under the "Case Docket" kicker and before the h1, the position a court
   caption occupies on a filed document. em-sized and using the site's own
   type tokens (never a fixed px box), so it scales with the A-/A+ control
   like every other line on the page.

   .cs-docket is RETIRED, w745-caseactions, 2026-08-11, ruling 444's second
   addition: the listing row's own heading (.cs-title) now leads with the
   docket number itself ("20260811-sw-003: Zeitgeist..."), so the separate
   small-pill badge that used to carry the same number after it would only
   repeat it, including to the read-aloud. The rule stays deleted rather
   than orphaned; CaseRowHtml in Cases.aspx.vb no longer emits the class. */
.casespage .docketcap{font-family:var(--serif);color:var(--muted);font-size:.9rem;
    letter-spacing:.03em;margin:.2em 0 .1em}

/* ---- per-section speak, 2026-08-11 ----------------------------------------
   Two shapes on this page. JUDGMENT builds a real h2.sechd carrying its own
   .speakhost, the exact BookDocument.vb/Compare.aspx contract
   (.sec>h2.sechd>.speakhost); the flex row and right-alignment below mirror
   page.css's own .chapdoc/.ridoc rule for that shape, scoped to this page
   family instead of widening either of those two. EVIDENCE TRAIL, DISSENT
   and the APPEAL INTAKE TRAIL carry no h2 of their own inside their .sec
   (the heading text lives in the outer disclosure's summary, which
   panel-speak's secHeading() already falls back to), so their speak host
   sits alone in a .sec-speakrow, right-aligned the same way, with no
   duplicate heading text beside it. */
.casespage .sec>h2.sechd{display:flex;align-items:center;gap:.5em}
.casespage .sec>h2.sechd>.chaphd{min-width:0;flex:1 1 auto}
.casespage .sec>h2.sechd>.speakhost{flex:0 0 auto;margin-left:auto;display:inline-flex}
.casespage .sec-speakrow{display:flex;justify-content:flex-end;margin-bottom:8px}
.casespage [data-speak-host="section"] .dspeak{font:inherit;opacity:1;width:2.2em;height:2.2em;
    color:var(--muted);border-color:var(--edge2)}
.casespage [data-speak-host="section"] .dspeak svg{width:1.1em;height:1.1em}
.casespage [data-speak-host="section"] .dspeak:hover,
.casespage [data-speak-host="section"] .dspeak:focus-visible,
.casespage [data-speak-host="section"] .dspeak.on{
    opacity:1;color:var(--gold);border-color:var(--gold);background:var(--panel2)}
