/* ────────────────────────────────────────────────────────────────
   The patterns that repeat.

   186 inline style attributes across the screens I built, 135 of them
   distinct. Most are genuinely one-off — a grid on one element, a width on
   another — and a class for those is a synonym for the element, not an
   improvement.

   These 21 are different: each appears two to seven times, and every copy is
   a chance for one to drift. Declarations here are byte-identical to the
   inline ones they replace, so this is a move, not a redesign.
   ──────────────────────────────────────────────────────────────── */

/* Spacing. Named for what they do, not how much — .u-mb-lg survives a change
   of scale, .u-mb-20 does not. */
/* .u-mb-sm was the one gap in this scale, and three views use it — cron,
   leads/show and settings/backup. Each has been rendering with no bottom
   margin at all, which reads as a layout that forgot a gap rather than a
   missing class. */
.u-mb-sm  { margin-bottom: .5rem }
.u-mb-md  { margin-bottom: 1rem }
.u-mb-lg  { margin-bottom: 1.25rem }
.u-mb-xl  { margin-bottom: 1.5rem }
.u-mt-sm  { margin-top: .5rem }
.u-mt-md  { margin-top: 1rem }
.u-mt-lg  { margin-top: 1.25rem }
.u-mt-xl  { margin-top: 1.5rem }
.u-mt-xs  { margin-top: .7rem }

/* Layout. */
.u-flex-fill { flex: 1; min-width: 0 }
.u-p0        { padding: 0 }
.u-block     { display: block }
.u-full-ctr  { width: 100%; justify-content: center }

/* Type. The admin and customer sides use different token names for the same
   role, so these carry a fallback rather than picking one side. */
.u-meta      { font-size: .7rem;  color: var(--a-fg-3, var(--fg-muted)) }
.u-meta-sm   { font-size: .74rem; color: var(--a-fg-3, var(--fg-muted)) }
.u-field-lbl { font-size: .78rem; font-weight: 600; display: block; margin-bottom: .3rem }
.u-sub       { font-size: .84rem; color: var(--fg-muted, var(--a-fg-3)); margin-top: .25rem }
.u-strong-sm { font-size: .82rem; font-weight: 600; color: var(--a-fg, var(--fg)) }
.u-h-card    { font-size: .95rem; margin-bottom: .25rem }
.u-h-card-lg { font-size: .95rem; margin-bottom: .75rem }
.u-sm        { font-size: .78rem }

/* Drop 724: "figures as of" note on cached pages */
.pc-asof{margin:.25rem 0 0;font-size:.75rem;color:var(--a-fg-3,var(--a-fg-2))}
.pc-asof a{color:inherit;text-decoration:underline;text-underline-offset:2px}

/* Drop 728: on a phone, filter selects and cards never run past the screen edge */
@media (max-width: 700px) {
  .a-select, select.a-select { max-width: 100%; min-width: 0; }
  .msg-filters .a-field { min-width: 0; flex: 1 1 100%; }
  .a-card { min-width: 0; max-width: 100%; }
}

/* Drop 730: links inside hint text are underlined, so they do not rely on colour alone (WCAG 1.4.1) */
.s-hint a, .msg-empty a, .pc-asof a { text-decoration: underline; text-underline-offset: 2px; }
/* Drop 731: the logo caption keeps AA contrast even inside a faded header */
.an-logo-sub, .an-logo-sub span { opacity: 1 !important; }
/* drop 1077: the "Send an NDA" control in the NDA list header */
.nda-send { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .5rem; }
.nda-send .a-field { min-width: 16rem; margin: 0; }
