/* LFCBD — read-only overview pages (dashboard, follow-up, ledger) */

/* ---- Dashboard ---- */
.dashboard {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.kpi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 12px;
}

.kpi-card {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 16px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  text-decoration: none;
  color: inherit;
  transition: transform 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}

.kpi-card:hover {
  transform: translateY(-2px);
  border-color: #D6D3D1;
  box-shadow: 0 8px 24px rgba(24, 24, 27, 0.08);
}

.kpi-value {
  font-size: 30px;
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.1;
}

.kpi-label {
  font-size: var(--font-xs);
  font-weight: 500;
  color: var(--ink-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.kpi-in-review { color: var(--blue); }
.kpi-pursuing { color: var(--green); }
.kpi-passing { color: var(--red); }

.kpi-needs-vote.hot,
.kpi-overdue.hot,
.kpi-unread.hot {
  color: var(--amber);
}

.dashboard-columns {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  align-items: start;
}

.dashboard-panel {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.dashboard-empty {
  font-size: var(--font-ui);
  color: var(--ink-muted);
}

/* ---- Pipeline table ---- */
.pipeline-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--font-secondary);
}

.pipeline-table th {
  text-align: left;
  font-size: var(--font-xs);
  font-weight: 600;
  color: var(--ink-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 8px 12px;
  border-bottom: 1px solid var(--border);
}

.pipeline-table td {
  padding: 12px;
  border-bottom: 1px solid var(--border);
  vertical-align: middle;
}

.pipeline-table tbody tr:last-child td {
  border-bottom: none;
}

.pipeline-due {
  white-space: nowrap;
}

.pipeline-briefing {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.pipeline-title {
  color: var(--ink);
  text-decoration: none;
  font-weight: 500;
}

.pipeline-title:hover { color: var(--accent); }

.pipeline-opp-id {
  font-family: ui-monospace, "SF Mono", Menlo, Monaco, Consolas, monospace;
  font-size: 11px;
  letter-spacing: 0.02em;
  color: var(--ink-muted);
}

.pipeline-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  max-width: 300px;
}

.pipeline-status {
  white-space: nowrap;
}

.pipeline-no-due {
  font-size: var(--font-xs);
  color: var(--ink-muted);
}

.deadline-due.overdue {
  color: var(--red);
  background: #FEF2F2;
  border-color: #FECACA;
}

/* ---- Deadlines ---- */
.deadline-list {
  list-style: none;
  display: flex;
  flex-direction: column;
}

.deadline-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 0;
  border-top: 1px solid var(--border);
}

.deadline-row:first-child { border-top: none; }

.deadline-title {
  color: var(--ink);
  text-decoration: none;
  font-size: var(--font-secondary);
  font-weight: 500;
}

.deadline-title:hover { color: var(--accent); }

.deadline-due {
  font-size: var(--font-xs);
  font-weight: 600;
  color: var(--amber);
  background: #FFFBEB;
  border: 1px solid #FDE68A;
  border-radius: var(--radius-badge);
  padding: 2px 10px;
  white-space: nowrap;
}

/* ---- Activity ---- */
.activity-list {
  list-style: none;
  display: flex;
  flex-direction: column;
}

.activity-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 0;
  border-top: 1px solid var(--border);
  font-size: var(--font-secondary);
}

.activity-row:first-child { border-top: none; }

.activity-kind {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 2px 8px;
  border-radius: var(--radius-badge);
  flex: none;
}

.activity-comment { background: #EEF2FF; color: var(--accent); }
.activity-vote { background: #DBEAFE; color: var(--blue); }
.activity-decision { background: #FEF3C7; color: var(--amber); }

.activity-label {
  color: var(--ink);
  text-decoration: none;
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

a.activity-label:hover { color: var(--accent); }

.activity-time {
  margin-left: auto;
  font-size: var(--font-xs);
  color: var(--ink-muted);
  white-space: nowrap;
}

/* ---- Follow-up ---- */
.followup {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.followup-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.followup-filter {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--font-ui);
}

.followup-section {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.followup-section-title {
  font-size: var(--font-secondary);
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--ink-muted);
}

.followup-group {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 14px 16px;
}

.followup-group-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.followup-assignee-name {
  font-size: var(--font-secondary);
  font-weight: 600;
  color: var(--ink);
}

.followup-count {
  font-size: var(--font-xs);
  font-weight: 600;
  color: var(--ink-muted);
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-badge);
  padding: 1px 8px;
}

.followup-list {
  list-style: none;
  display: flex;
  flex-direction: column;
}

.followup-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 0;
  border-top: 1px solid var(--border);
  font-size: var(--font-secondary);
}

.followup-row:first-child { border-top: none; }

.followup-status-dot {
  width: 10px;
  height: 10px;
  flex: none;
  border-radius: 50%;
  background: var(--amber);
}

.followup-status-dot.done {
  background: var(--green);
}

.followup-toggle {
  width: 16px;
  height: 16px;
  flex: none;
  accent-color: var(--accent);
  cursor: pointer;
}

.followup-title {
  color: var(--ink);
  font-weight: 500;
  text-decoration: none;
}

.followup-title:hover { color: var(--accent); }

.followup-row.done .followup-title {
  text-decoration: line-through;
  color: var(--ink-muted);
}

.followup-briefing {
  font-size: var(--font-xs);
  color: var(--ink-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 320px;
}

.followup-due {
  margin-left: auto;
  font-size: var(--font-xs);
  font-weight: 600;
  color: var(--ink-muted);
  white-space: nowrap;
}

.followup-due.overdue {
  color: var(--red);
}

.followup-done-at {
  font-size: var(--font-xs);
  color: var(--ink-muted);
  white-space: nowrap;
}

.followup-empty {
  font-size: var(--font-ui);
  color: var(--ink-muted);
}

/* ---- Ledger ---- */
.ledger {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.ledger-sub {
  font-size: var(--font-ui);
  color: var(--ink-muted);
}

.ledger-groups {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  align-items: start;
}

.ledger-group {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.ledger-title-pursuing { color: var(--green); }
.ledger-title-passing { color: var(--red); }

.ledger-list {
  list-style: none;
  display: flex;
  flex-direction: column;
}

.ledger-row {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 10px 0;
  border-top: 1px solid var(--border);
}

.ledger-row:first-child { border-top: none; }

.ledger-title {
  color: var(--ink);
  text-decoration: none;
  font-size: var(--font-secondary);
  font-weight: 500;
}

.ledger-title:hover { color: var(--accent); }

.ledger-meta {
  font-size: var(--font-xs);
  color: var(--ink-muted);
}

.ledger-empty {
  font-size: var(--font-ui);
  color: var(--ink-muted);
}

/* ---- Responsive ---- */
@media (max-width: 900px) {
  .dashboard-columns,
  .ledger-groups {
    grid-template-columns: 1fr;
  }
}
