/*
 * The hidden attribute MUST win. The theme's component classes carry
 * display rules (.state-box is display:flex, .popover-menu variants,
 * etc.) which — as author styles — override the UA stylesheet's
 * [hidden] { display: none }. Without this guard, every element with
 * both a display-class and the hidden attribute renders visibly.
 */
[hidden] {
  display: none !important;
}

/* SPDX-FileCopyrightText: © 2026 Aspen Bravo, LLC <https://aspenbravo.com> */
/* SPDX-License-Identifier: LicenseRef-Proprietary */

/*
 * CRM frontend app overrides.
 *
 * Theme tokens + component classes live in lib/theme.css (loaded
 * first). This file carries ONLY CRM-specific selectors and
 * references theme tokens via var(--*).
 */

/* ---- Nav card row (funnel stage cards — ATS layout rules) ---- */

#nav-cards-container {
  display: flex;
  gap: 16px;
  align-items: stretch;
}

#nav-back {
  flex: 0 0 auto;
}

#nav-scheduled,
#nav-performed,
#nav-quoted,
#nav-inprogress,
#nav-complete {
  flex: 1 1 0;
  min-width: 120px;
}

#nav-new {
  flex: 0 0 auto;
  order: 99;
}

/* Tablet: wrap rather than shrink below the min-width floor. */
@media (min-width: 768px) and (max-width: 1023px) {
  #nav-cards-container {
    flex-wrap: wrap;
  }
}

/* Mobile: stack — Back and New on the top row, stage cards below. */
@media (max-width: 767px) {
  #nav-cards-container {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    align-items: stretch;
    gap: 16px;
  }
  #nav-back { order: 1; }
  #nav-new { order: 2; }
  #nav-scheduled { order: 3; }
  #nav-performed { order: 4; }
  #nav-quoted { order: 5; }
  #nav-inprogress { order: 6; }
  #nav-complete { order: 7; }
}

/* ---- Toolbar (date filter + actions) ---- */
.crm-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--space-base, 8px);
  margin-bottom: var(--space-base, 8px);
}

.crm-toolbar__left,
.crm-toolbar__right {
  display: flex;
  align-items: center;
  gap: var(--space-base, 8px);
}

.crm-toolbar__left {
  position: relative; /* anchor for the absolutely-positioned date popup */
}

.crm-date-popup {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  transform: none; /* theme centers popovers; this one anchors left */
  width: 300px;
  padding: 12px;
}

.crm-date-popup.show {
  display: flex;
}

.crm-date-presets {
  display: block;
}

.crm-preset-btn {
  width: 100%;
  text-align: left;
  background: transparent;
  border: 0;
}

.crm-custom-picker__actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 8px;
}

/* ---- Summary cards ---- */
.crm-summary-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: var(--space-base, 8px);
  margin-bottom: var(--space-base, 8px);
}

.crm-summary-card {
  padding: var(--space-card-padding, 16px);
  text-align: center;
}

.crm-summary-number {
  font-size: 1.75rem;
  font-weight: 700;
  font-family: var(--font-headline);
  color: var(--text-primary);
  margin: 4px 0 0;
}

.crm-summary-value {
  font-size: 0.9rem;
  color: var(--text-secondary);
}

@media (max-width: 1023px) {
  .crm-summary-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 480px) {
  .crm-summary-grid {
    grid-template-columns: 1fr;
  }
}

/* ---- Category grid (2x2) ---- */
.crm-category-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-base, 8px);
  margin-bottom: var(--space-base, 8px);
}

.crm-category-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 2rem 1.5rem;
  cursor: pointer;
  border: 2px solid transparent;
  transition: border-color var(--motion-fast, 150ms) ease,
    transform var(--motion-fast, 150ms) ease;
}

.crm-category-btn:not(:disabled):hover {
  border-color: var(--peak-orange);
  transform: translateY(-2px);
}

.crm-category-btn--stub,
.crm-category-btn:disabled {
  cursor: not-allowed;
  opacity: 0.55;
}

.crm-category-btn__icon {
  font-size: 2rem;
  color: var(--peak-orange);
}

.crm-category-btn__label {
  font-size: 1.125rem;
  font-weight: 700;
  font-family: var(--font-headline);
  color: var(--text-primary);
}

@media (max-width: 767px) {
  .crm-category-grid {
    grid-template-columns: 1fr;
  }
}

/* ---- Funnel bar graph ---- */
.crm-graph-panel {
  position: relative;
  padding: var(--space-card-padding, 16px);
  margin-bottom: var(--space-base, 8px);
}

.crm-bar-chart {
  height: 180px;
}

.crm-bar-legend {
  /* The theme's .bar-chart__legend is horizontal (flex, wrap, centered);
   * this override just adds breathing room under the graph. */
  margin-top: 10px;
}

/* The chart + goal line share this positioning context so the goal
 * line's top:% maps to the CHART's height (bars anchored to the
 * chart's bottom), not the whole glass panel (which includes the
 * title — the cause of the line rendering above the title). */
.crm-graph-canvas {
  position: relative;
}

.crm-goal-line {
  position: absolute;
  left: 0;
  right: 0;
  border-top: 2px dashed #ef4444;
  z-index: 10;
  pointer-events: none;
}

/* Label sits BELOW the line — a goal at the chart's top edge (goal =
 * max) must not poke the label above the chart into the title. */
.crm-goal-line__label {
  position: absolute;
  right: 4px;
  top: 2px;
  font-size: 0.65rem;
  color: #ef4444;
  font-weight: 600;
}

/* ---- Assignment queues ---- */
.crm-queue-panel {
  padding: var(--space-card-padding, 16px);
  margin-bottom: var(--space-base, 8px);
}

.crm-queue-section {
  margin-bottom: 12px;
}

.crm-queue-section:last-child {
  margin-bottom: 0;
}

.crm-queue-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.crm-queue-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 10px;
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-sm, 8px);
  background: var(--glass-card-bg);
}

.crm-queue-row__meta {
  flex: 1;
  min-width: 0;
  color: var(--text-secondary);
  font-size: 0.85rem;
}

.crm-empty {
  color: var(--text-muted);
  font-size: 0.85rem;
  margin: 0;
}

/* ---- List view ---- */
.crm-list-header {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 10px;
}

.crm-list-title {
  font-family: var(--font-headline);
  font-size: 1.1rem;
  color: var(--text-primary);
  margin: 0;
}

.table-scroll-wrap {
  overflow-x: auto;
}

/* ---- Stage badges ---- */
.crm-stage-chip {
  display: inline-block;
  font-size: 0.72rem;
  padding: 2px 8px;
  border-radius: var(--radius-full, 9999px);
  white-space: nowrap;
}

.crm-stage-chip--scheduled { background: rgba(59, 130, 246, 0.25); color: #93c5fd; }
.crm-stage-chip--performed { background: rgba(99, 102, 241, 0.25); color: #c7d2fe; }
.crm-stage-chip--quoted    { background: rgba(245, 158, 11, 0.25); color: #fcd34d; }
.crm-stage-chip--inprogress{ background: rgba(236, 72, 153, 0.25); color: #f9a8d4; }
.crm-stage-chip--complete   { background: rgba(16, 185, 129, 0.25); color: #6ee7b7; }
.crm-stage-chip--won        { background: rgba(16, 185, 129, 0.25); color: #6ee7b7; }
.crm-stage-chip--lost       { background: rgba(239, 68, 68, 0.25); color: #fca5a5; }
.crm-stage-chip--cancelled { background: rgba(148, 163, 184, 0.25); color: #cbd5e1; }

/* Signed-PDF stub (disabled until abc-quoting ships) */
.crm-pdf-stub {
  font-size: 0.72rem;
  padding: 2px 8px;
  border-radius: var(--radius-full, 9999px);
  background: rgba(255, 255, 255, 0.06);
  color: var(--text-muted);
  border: 1px dashed var(--glass-border);
  cursor: not-allowed;
}

/* ---- Customer view modal internals ---- */
.crm-cust-header {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-bottom: 12px;
}

.crm-cust-header h2 {
  font-family: var(--font-headline);
  color: var(--text-primary);
  margin: 0;
}

.crm-cust-links {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  color: var(--text-secondary);
  font-size: 0.85rem;
}

.crm-cust-links a {
  color: var(--peak-orange);
  text-decoration: none;
}

.crm-eng-table-actions {
  display: flex;
  gap: 6px;
  align-items: center;
  flex-wrap: wrap;
}

.crm-eng-table-actions select,
.crm-eng-table-actions input {
  font-size: 0.8rem;
  padding: 4px 6px;
}

.crm-name-link {
  color: var(--peak-orange);
  cursor: pointer;
  background: transparent;
  border: 0;
  text-decoration: underline;
  font: inherit;
}

/* --------------------------------------------------------------------------
 * Customer-view tab bar (crm-dashboard-enhancements). CRM-only chrome
 * (not a theme class — tabs join the theme catalog when a second app
 * needs them).
 * ------------------------------------------------------------------------ */
.crm-tabs {
  display: flex;
  gap: 4px;
  border-bottom: 1px solid var(--outline-variant, rgba(255, 255, 255, 0.12));
  margin-bottom: 14px;
  flex-wrap: wrap;
}

.crm-tabs__btn {
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  color: var(--text-secondary, rgba(255, 255, 255, 0.7));
  cursor: pointer;
  font: inherit;
  font-size: 0.85rem;
  letter-spacing: 0.04em;
  padding: 8px 14px;
  text-transform: uppercase;
}

.crm-tabs__btn:hover {
  color: var(--text-primary, rgba(255, 255, 255, 0.9));
}

.crm-tabs__btn--active {
  border-bottom-color: var(--peak-orange);
  color: var(--peak-orange);
}

/* Person picker (assignment flows — replaces window.prompt). */
.crm-picker {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 320px;
}

.crm-picker__search {
  display: flex;
  align-items: center;
  gap: 8px;
}

.crm-picker__list {
  max-height: 320px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.crm-picker__row {
  align-items: center;
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--radius-sm, 8px);
  color: var(--text-primary, rgba(255, 255, 255, 0.9));
  cursor: pointer;
  display: flex;
  font: inherit;
  gap: 10px;
  justify-content: space-between;
  padding: 8px 12px;
  text-align: left;
  width: 100%;
}

.crm-picker__row:hover {
  border-color: var(--peak-orange);
  background: var(--peak-orange-tint, rgba(239, 132, 41, 0.15));
}

.crm-picker__row-label {
  font-weight: 600;
}

.crm-picker__row-meta {
  color: var(--text-secondary, rgba(255, 255, 255, 0.7));
  font-size: 0.75rem;
}

/* Search-results modal. */
.crm-search-results .table {
  min-width: 380px;
}

/* Related-accounts / referral rows. */
.crm-related-row {
  align-items: center;
  border-bottom: 1px solid var(--outline-variant, rgba(255, 255, 255, 0.08));
  display: flex;
  gap: 12px;
  justify-content: space-between;
  padding: 8px 4px;
}

.crm-related-row__rel {
  border: 1px solid var(--outline-variant, rgba(255, 255, 255, 0.2));
  border-radius: 999px;
  color: var(--text-secondary, rgba(255, 255, 255, 0.7));
  font-size: 0.7rem;
  letter-spacing: 0.06em;
  padding: 2px 10px;
  text-transform: uppercase;
}
