/* ============================================================================
   ATLAS V6 · Tier-2b polish — DEPT-VIEW LAYOUT + EMPTY-STATE FILL
   Sheet: css/v6-t2b-deptfill.css            ·  load LAST (just before v6-lock.css)
   ----------------------------------------------------------------------------
   Scope (Codex findings F4 + F5): GEOMETRY · SPACING · SIZING · EMPTY-STATE only.
   This sheet sets ZERO hue overrides — the sibling sheet `v6-t2b-cyankill.css`
   owns every cyan→gold color rule. Nothing below recolors an existing element;
   the only colors here are on NET-NEW synthesized empty-state content (a neutral
   radar-ring mark + ink title + --muted caption), kept deliberately GOLD-FREE and
   CYAN-FREE so the two t2b sheets never fight over the same property.

   Empty-state vocabulary: visually mirrors the canonical `.v6-empty-state`
   primitive authored in v6-t2-crm.css (concentric ring mark · ~16px title ·
   muted sub). Because this sheet may not edit HTML/JS, the CRM dead-rectangle
   state is synthesized with pseudo-elements on the genuinely :empty board rather
   than injected BEM markup — the integrator can later swap in real
   <div class="v6-empty-state">…</div> markup and these rules retire cleanly.

   Hard rules honored: single locked theme (no dark variant); one gold accent
   (none introduced here); no body scroll at 1920×1080 (KPI strip grows, the
   flex:1 canvas/board absorbs it — outer frame stays 1080); voice/routing IDs
   untouched (visual-only); type ≥12px, metadata ≥12px (fixes two sub-12px
   violations: CRM KPI label + Pipeline focus label).
   ============================================================================ */


/* ════════════════════════════════════════════════════════════════════════════
   A · CRM / PIPELINE-OVERVIEW  (window.atlasShowView('crm') → #view-crm)
   ════════════════════════════════════════════════════════════════════════════ */

/* A1 · KPI strip — the 5 metric cards (#crm-kpi-total/-hot/-nurturing/-uc/
   -contacts). Baseline (depts.css): value pinned to the top, a 7.5px label
   below, lots of dead space underneath → reads broken/empty. Fix: center the
   content, give the card a comfortable balanced height, make the em-dash VALUE
   the hero (renders the same size with or without data = honest placeholder),
   and lift the LABEL to a legible 12px (metadata ≥12px). Scoped to #view-crm so
   the other dept KPI strips (Listings/Transactions/…) are untouched. No color. */
#view-crm .dept-kpis { gap: 10px; }

#view-crm .dept-kpi {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  min-height: 78px;
  padding: 14px 18px;
  border-radius: var(--radius, 8px);
  box-shadow: var(--shadow-card, 0 1px 2px rgba(29,24,14,.05), 0 1px 3px rgba(29,24,14,.08));
}
/* VALUE leads — big + tight. An em-dash here is a deliberate "no data" mark. */
#view-crm .dept-kpi-val {
  font: 800 28px/1.0 var(--font-display, "Aptos Display", Inter, "Segoe UI", system-ui);
  letter-spacing: -.012em;
}
/* LABEL recedes but stays readable at 12px (was 7.5px → ≥12px rule). */
#view-crm .dept-kpi-lab {
  margin-top: 0;
  font: 600 12px/1.2 var(--font-ui, Inter, "Segoe UI", system-ui);
  letter-spacing: .06em;
}


/* A2 · The dead blank rectangle (Codex F4) — the empty deals board.
   #crm-kanban (.v6-kanban-board) sits in #view-crm .v5-deals-canvas next to the
   Deal-Focus rail. When the leads feed is not wired (local/demo) crm_panel.js
   empties it (wrap.innerHTML = "") and the "not wired" strip never mounts (no
   #crm-lead-state node), leaving a ~720px void. We fill ONLY the genuinely
   :empty board with a premium centered empty-state, so this never shows once
   real .crm-col deals render (production). */
#view-crm .v5-deals-canvas > #crm-kanban:empty,
#crm-kanban:empty {
  flex: 1 1 auto;
  min-width: 0;
  align-self: stretch;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 24px;
  text-align: center;
  /* Neutral radar-ring mark (gold-free): outer ring + faint mid ring + soft
     center node, layered radial-gradients positioned ~70px above the centered
     text group. */
  background-repeat: no-repeat;
  background-position: center calc(50% - 70px);
  background-size: 150px 150px;
  background-image:
    radial-gradient(circle 5px at center,  var(--line-strong, #c4b9a8) 0 3px, transparent 3.5px),
    radial-gradient(circle 18px at center, transparent 0 13px, var(--border2, #ebe7de) 13px 15px, transparent 15px),
    radial-gradient(circle 30px at center, transparent 0 27px, var(--line-strong, #c4b9a8) 27px 28.5px, transparent 28.5px);
}
/* Title — ~16px, neutral ink. */
#crm-kanban:empty::before {
  content: "No deals in this pipeline yet";
  font: 700 16px/1.3 var(--font-display, "Aptos Display", Inter, "Segoe UI", system-ui);
  letter-spacing: -.005em;
  color: var(--ink, #101722);
}
/* Caption — quiet source/freshness line, ≥12px --muted. */
#crm-kanban:empty::after {
  content: "Awaiting Lofty sync — connect a source to populate the board.";
  max-width: 42ch;
  font: 400 12.5px/1.5 var(--font-ui, Inter, "Segoe UI", system-ui);
  color: var(--muted, #647184);
}


/* ════════════════════════════════════════════════════════════════════════════
   B · PIPELINE BOARD right rail  (window.atlasShowView('pipeline') → #view-pipeline)
   The 3 insight cards (.v6-focus-panel: TOP PROSPECT · HOT LEAD · PIPELINE
   COVERAGE) read as broken — a lone underline/dash with no rhythm. Tighten them
   into a deliberate summary strip: even gap, balanced card heights, a legible
   12px label (was 11px → metadata ≥12px), and a confident placeholder VALUE so a
   lone em-dash reads as "awaiting data", not a broken field. Geometry only — no
   color (cyankill owns the focus-rail hues). The 6 kanban columns' dashed
   "No deals" boxes are intentionally left to the data-driven JS layer.
   ════════════════════════════════════════════════════════════════════════════ */
#view-pipeline .v6-dual-focus { gap: 12px; }

/* Even card heights so the three stack as a cohesive strip rather than three
   mismatched fragments. justify untouched (button stays put); just a floor. */
#view-pipeline .v6-dual-focus .v6-focus-panel {
  min-height: 104px;
  padding: 16px 18px;
}
/* Label → 12px (≥12px metadata rule) + calm caps tracking. */
#view-pipeline .v6-focus-label {
  font-size: 12px;
  letter-spacing: .07em;
  margin-bottom: 10px;
}
/* VALUE — big enough to anchor the card; an em-dash reads as an intentional
   "no data yet" placeholder. Size/rhythm only, no color. */
#view-pipeline .v6-focus-panel h4 {
  font-size: 22px;
  line-height: 1.12;
  letter-spacing: -.01em;
  margin: 6px 0 4px;
}
