/* ─────────────────────────────────────────────────────────────────────────────
   avails-page.css — Avails page local styles.

   Built 2026-09-09 (feature_avails_intake.md Round 3, S2) as a reskin of
   EXISTING components, not a new design — the page composes `.ig-workspace`
   / `.ig-rail` / `.ig-rail-gutter` / `.ig-grouprow` (dc-components.css),
   `.ig-canvas-head` / `.ig-seg` / `.ig-sb` (dc-components.css), `dc_table`
   (dc-table.css) and the canonical film drawer (drawer.css) exactly as
   Intake and Curation do. The rail rows ARE `.ig-grouprow`, unchanged — no
   page-local row style was needed.

   SHARED WITH CURATION. The Votes / Voted-by / Film columns reuse Curation's
   `dcVotes`/`dcPeople`/`dcFilmPlain` formatters and, with them, the
   `.cur-vote*` / `.cur-people*` / `.cur-idc*` rules in curation-page.css —
   see that file's own header note. Nothing here duplicates them.

   The one genuinely local surface is the rail-foot import strip (the two
   "Import…" buttons `_avails_actions_html` used to render in Library's top
   bar, now living at the bottom of this page's rail instead) — `.ig-sb`'s
   own styling assumes a 34px horizontal strip (`.ig-bar`/`.ig-canvas-head`/
   `.ig-rail__filters`), which is too cramped for two full-label buttons
   side by side at 340px rail width, so these get their own stacked shell.

   S3 (same day) adds two more local surfaces: the `.av-gap*` agent
   hand-off block, and a small reset for the app's first `ui.download_button`
   instances so they sit in the `.ig-sb` register unchanged.
   ──────────────────────────────────────────────────────────────────────────── */

.av-rail__import {
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: none;
  padding: 10px 12px;
  border-top: 1px solid var(--dc-line);
  background: var(--dc-panel);
}

.av-rail__import-btn {
  display: flex;
  align-items: center;
  gap: 6px;
  height: 28px;
  padding: 0 10px;
  border: 1px solid var(--dc-line);
  border-radius: var(--dc-radius-lg);
  background: var(--dc-panel-2);
  color: var(--dc-ink);
  font-size: 12px;
  font-weight: var(--dc-fw-medium);
  cursor: pointer;
}
.av-rail__import-btn:hover {
  background: var(--dc-primary-soft);
  border-color: var(--dc-primary-line);
  color: var(--dc-primary);
}
.av-rail__import-btn i { font-size: 12px; flex: none; }

/* Open-Schedule-A marker on a vendor rail row (`.ig-grouprow__top`,
   unchanged shape) — the small-pill treatment the batch state pill uses.
   Was `.av-rail-contracted` on the per-list rail (2026-09-15,
   feature_vendor_catalogue.md). */
.av-rail-pill { font-size: 10px; padding: 1px 7px; }

/* ── Contract dropdown, one per row (2026-09-16) ───────────────────────────
   `dcContractSelect` (dc-table.js) writes through avails_selection.py::
   set_licence — the same call the drawer's licence editor makes. Inline
   EDITING stays off (dc_table strips `editor`); this is an interactive
   formatter, the pattern dcCheck/dcVotes already use.

   Chromeless until hovered or focused, so a table of these reads as a
   column of values rather than a column of form controls — the treatment
   the drawer's own `.ig-kv--edit` fields use.

   The `.av-gap*` agent hand-off bar that used to live here was removed the
   same day: the Festivals column now shows per row what the bar summarised,
   and its picker can select "No festivals" directly. */
.av-contract-select { width: 100%; max-width: 100%; font: inherit; font-size: 12px;
  color: var(--dc-ink); background: transparent; border: 1px solid transparent;
  padding: 1px 2px; border-radius: var(--dc-radius-sm); cursor: pointer;
  transition: background var(--dc-dur-fast), border-color var(--dc-dur-fast); }
.av-contract-select:hover { background: var(--dc-panel); border-color: var(--dc-line); }
.av-contract-select:focus { outline: none; background: var(--dc-panel);
  border-color: var(--dc-primary); }

/* First download buttons in the app (S3) — `ui.download_button` renders an
   `<a class="btn btn-default shiny-download-link">`; `.ig-sb`'s own rules
   (dc-components.css) already win on border/background/padding at equal or
   higher specificity than Bootstrap's `.btn`/`.btn-default`, but the anchor
   still carries Bootstrap's underline-free-but-`disabled`-flagged default
   look until the client has a real href, so this neutralises the leftover
   bits `.ig-sb` doesn't already own. */
.ig-canvas-head .shiny-download-link.ig-sb { text-decoration: none; box-shadow: none; }
.ig-canvas-head .shiny-download-link.ig-sb.disabled { opacity: 0.35; cursor: not-allowed; }
