/* ═══════════════════════════════════════════════════════════════
   Call Score — additive design tokens
   Builds on top of tokens.css; never duplicates base variables.
   ═══════════════════════════════════════════════════════════════ */

/* ── Fonts ──────────────────────────────────────────────────── */
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@500;600&display=swap');

:root {
  --cs-font-mono: 'IBM Plex Mono', 'Roboto Mono', ui-monospace, monospace;

  /* ═══════════════════════════════════════════════════════════
     CALL SCORE — STANDARD COLOR GUIDE
     Teal-based palette. No blue (#1E90FF) or purple (#1A3FA0).
     ═══════════════════════════════════════════════════════════ */

  /* ── Core palette ───────────────────────────────────────── */
  --cs-accent:       #0F6B62;          /* teal — primary CTA, active states    */
  --cs-accent-hover: #0B574F;          /* teal dark — button hover              */
  --cs-accent-bg:    #D2F0E4;          /* teal tint — active nav bg, highlights */

  /* ── Surfaces ───────────────────────────────────────────── */
  --cs-page-bg:      #F3F5F7;          /* page background                      */
  --cs-card:         #FFFFFF;          /* card / panel background               */
  --cs-sidebar:      #145C4A;          /* sidebar background — bright forest green */
  --cs-sidebar-hover: rgba(255,255,255,0.08);

  /* ── Text ───────────────────────────────────────────────── */
  --cs-text:         #1B2430;          /* primary text                          */
  --cs-muted:        #5B6B79;          /* secondary / hint text                 */

  /* ── Borders ────────────────────────────────────────────── */
  --cs-border:       #D8DEE3;          /* card borders, dividers                */
  --cs-border-strong:#B9C2C9;          /* hover borders                         */

  /* ── Score tiers ────────────────────────────────────────── */
  /* Good: score 4-5  |  Mid: score 3  |  Low: score 1-2     */
  --cs-good:         #0F6B62;
  --cs-good-bg:      #D2F0E4;
  --cs-mid:          #D98E04;
  --cs-mid-bg:       #F8E6C8;
  --cs-low:          #C4573A;
  --cs-low-bg:       #F8E0D9;

  /* ── Progress bar ───────────────────────────────────────── */
  --cs-progress-bg:    var(--cs-border);
  --cs-progress-fill:  var(--cs-accent);
  --cs-progress-ease:  cubic-bezier(0.22, 1, 0.36, 1);
}

/* ── Native <select> dropdowns not covered by a .cs-* class ──
   (e.g. #inviteRole, #filterStatus) — otherwise they stay browser-default
   light regardless of the active theme. */
select {
  background: var(--cs-card);
  color: var(--cs-text);
  border-color: var(--cs-border);
  color-scheme: light;
}
:root[data-theme="dark"] select {
  color-scheme: dark;
}
select option {
  background: var(--cs-card);
  color: var(--cs-text);
}

/* ── Dark theme override — applied via [data-theme="dark"] on <html> ── */
:root[data-theme="dark"] {
  color-scheme: dark;

  --cs-accent:       #17A38F;
  --cs-accent-hover: #1ECAB0;
  --cs-accent-bg:    rgba(23,163,143,0.18);

  --cs-page-bg:      #0F171E;
  --cs-card:         #1A232C;
  --cs-sidebar:      #0B2E26;
  --cs-sidebar-hover: rgba(255,255,255,0.08);

  /* Shared tokens.css variables — many CallScore templates still reference
     these directly rather than the --cs-* equivalents above. Overriding
     them here (higher specificity than tokens.css's bare :root) makes
     every such usage dark-aware without touching each template. */
  --color-bg:             #0F171E;
  --color-surface:        #1A232C;
  --color-surface-tinted: #222E38;
  --color-navy-50:        rgba(255,255,255,0.04);
  --color-blue-tint:      rgba(23,163,143,0.12);
  --color-ink:            #E7EDF2;
  --color-ink-muted:      #8C9BA8;
  --color-border:         #2A343D;
  --color-border-muted:   #3C4854;
  --color-card:           #1A232C;
  --color-section-bg:     #1A232C;
  --color-section-border: #2A343D;

  --cs-text:         #E7EDF2;
  --cs-muted:        #8C9BA8;

  --cs-border:       #2A343D;
  --cs-border-strong:#3C4854;

  --cs-good:         #17A38F;
  --cs-good-bg:      rgba(23,163,143,0.18);
  --cs-mid:          #E0A73B;
  --cs-mid-bg:       rgba(224,167,59,0.18);
  --cs-low:          #DC6C52;
  --cs-low-bg:       rgba(220,108,82,0.18);
}

/* ── Score number — monospace, tabular figures ─────────────── */
.cs-score {
  font-family: var(--cs-font-mono);
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  letter-spacing: -0.02em;
}
.cs-score-lg {
  font-size: 24px;
  font-weight: 500;
}

/* ── Score badge pill ─────────────────────────────────────── */
.cs-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-family: var(--cs-font-mono);
  font-variant-numeric: tabular-nums;
  font-size: 13px;
  font-weight: 600;
  padding: 3px 10px;
  border-radius: 20px;
  line-height: 1.4;
}
.cs-badge--good {
  background: var(--cs-good-bg);
  color: var(--cs-good);
}
.cs-badge--mid {
  background: var(--cs-mid-bg);
  color: var(--cs-mid);
}
.cs-badge--low {
  background: var(--cs-low-bg);
  color: var(--cs-low);
}

/* ── Role badge pill (Admin / Executive tag next to a page title) ── */
.cs-role-badge {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--cs-accent);
  background: var(--cs-accent-bg);
  padding: 3px 10px;
  border-radius: 20px;
  margin-left: 8px;
}

/* ── Trend arrows ─────────────────────────────────────────── */
.cs-trend { font-size: 12px; margin-left: 2px; }
.cs-trend--up { color: var(--cs-good); }
.cs-trend--flat { color: var(--cs-muted, var(--color-ink-muted, #5B6B79)); }
.cs-trend--down { color: var(--cs-low); }

/* ── Progress bar ─────────────────────────────────────────── */
.cs-progress {
  width: 100%;
  height: 6px;
  background: var(--cs-progress-bg);
  border-radius: 3px;
  overflow: hidden;
}
.cs-progress__fill {
  height: 100%;
  border-radius: 3px;
  background: var(--cs-progress-fill);
  transition: width 900ms var(--cs-progress-ease);
}
.cs-progress__fill--good { background: var(--cs-good); }
.cs-progress__fill--mid  { background: var(--cs-mid); }
.cs-progress__fill--low  { background: var(--cs-low); }

/* ── Upload success checkmark ─────────────────────────────── */
@keyframes csCheckIn {
  0%   { opacity: 0; transform: scale(0.5); }
  60%  { transform: scale(1.15); }
  100% { opacity: 1; transform: scale(1); }
}
.cs-check-icon {
  opacity: 0;
  animation: csCheckIn 400ms var(--ease-out, cubic-bezier(0.16, 1, 0.3, 1)) forwards;
  color: var(--cs-good);
  font-size: 20px;
}

/* ── Insight cards (read-only, no border, tinted bg) ──────── */
.cs-insight {
  border-radius: var(--radius-lg, 12px);
  padding: 1rem 1.25rem;
  border: none;
  box-shadow: none;
}
.cs-insight:hover {
  transform: none !important;
  box-shadow: none !important;
}
.cs-insight--attention {
  background: var(--cs-mid-bg);
  color: var(--cs-mid);
}
.cs-insight--positive {
  background: var(--cs-good-bg);
  color: var(--cs-good);
}

/* ── Call Score card overrides ─────────────────────────────── */
.cs-card {
  background: var(--cs-card, var(--color-card, #fff));
  color: var(--cs-text, var(--color-ink));
  border: 0.5px solid var(--cs-border, var(--color-border, #D8DEE3));
  border-radius: var(--radius-lg, 12px);
  padding: 1rem 1.25rem;
  transition:
    transform 180ms ease,
    border-color 180ms ease;
}
.cs-card:hover {
  transform: translateY(-2px);
  border-color: var(--cs-border-strong, var(--color-border-muted, #B9C2C9));
}

/* ── Factor bar (horizontal mini bar for each scoring factor) */
.cs-factor-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 6px 0;
}
.cs-factor-bar__label {
  flex: 0 0 160px;
  font-size: var(--font-size-sm, 14px);
  color: var(--cs-muted, var(--color-ink-muted, #5B6B79));
}
.cs-factor-bar__track {
  flex: 1;
  height: 8px;
  background: var(--cs-progress-bg);
  border-radius: 4px;
  overflow: hidden;
}
.cs-factor-bar__fill {
  height: 100%;
  border-radius: 4px;
  transition: width 600ms var(--cs-progress-ease);
}
.cs-factor-bar__val {
  flex: 0 0 32px;
  text-align: right;
  font-family: var(--cs-font-mono);
  font-size: 13px;
  font-weight: 600;
}

/* ── Call Score grid ───────────────────────────────────────── */
.cs-grid {
  display: grid;
  gap: 12px;
}
.cs-grid--2 { grid-template-columns: repeat(2, 1fr); }
.cs-grid--3 { grid-template-columns: repeat(3, 1fr); }
.cs-grid--4 { grid-template-columns: repeat(4, 1fr); }

@media (max-width: 768px) {
  .cs-grid--2,
  .cs-grid--3,
  .cs-grid--4 {
    grid-template-columns: 1fr;
  }
  .cs-factor-bar__label { flex: 0 0 120px; }
}

/* ── Chart card subtitle (one-line description) ────────────── */
.cs-chart-sub {
  font-size: 12px;
  color: var(--cs-muted);
  margin: 0 0 14px;
  line-height: 1.4;
}

/* ── Chart view tabs (e.g. Distribution/Trend, Daily/Weekly) ── */
.cs-chart-tabs {
  display: flex;
  gap: 6px;
}
.cs-chart-tab {
  font-size: 11px;
  padding: 4px 10px;
  border-radius: 6px;
  border: 1px solid var(--cs-border);
  background: transparent;
  color: var(--cs-muted);
  cursor: pointer;
}
.cs-chart-tab--active {
  background: var(--cs-accent-bg);
  color: var(--cs-accent);
  border-color: var(--cs-accent);
}
.cs-day-select {
  padding: 3px 8px;
  font-size: 11px;
  border-radius: 6px;
  border: 1px solid var(--cs-border);
  background: var(--cs-card, #fff);
  color: var(--cs-text);
}
.cs-day-select:focus {
  outline: none;
  border-color: var(--cs-accent);
}

/* ── Chart color key (explains what each chart color means) ── */
.cs-chart-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin: -8px 0 12px;
}
.cs-legend-item {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 11px;
  color: var(--cs-muted);
}
.cs-legend-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex: 0 0 8px;
}

/* ── CTA button in accent color ───────────────────────────── */
.cs-btn-accent {
  background: var(--cs-accent) !important;
  color: #fff !important;
  border-color: var(--cs-accent) !important;
}
.cs-btn-accent:hover:not(:disabled) {
  background: var(--cs-accent-hover) !important;
  border-color: var(--cs-accent-hover) !important;
}

/* ═══════════════════════════════════════════════════════════════
   SIDENAV OVERRIDES — replace blue/purple with teal palette
   Loaded AFTER sidenav.css so these win in the cascade.
   ═══════════════════════════════════════════════════════════════ */

/* Sidebar background — dark teal instead of blue gradient */
.sidenav {
  background: var(--cs-sidebar) !important;
  background-image: none !important;
}

/* ── Call Score logo in sidenav header ────────────────────── */
.cs-brand-header {
  justify-content: center !important;
  padding: 18px 10px 16px !important;
}
.cs-logo-link {
  display: flex !important;
  align-items: center;
  gap: 10px;
  text-decoration: none !important;
  justify-content: center !important;
}
.cs-logo-mark {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 10px;
  background: rgba(255,255,255,0.15);
  color: #fff;
  font-size: 16px;
  flex-shrink: 0;
}
.cs-logo-text {
  font-size: 18px;
  font-weight: 700;
  letter-spacing: -0.02em;
  white-space: nowrap;
}
.cs-logo-word {
  color: #fff;
}
.cs-logo-word--accent {
  color: #A7F3D0;
}

/* Expanded: always show icon + text together */
.sidenav:not(.collapsed) .cs-logo-mark { display: flex !important; }
.sidenav:not(.collapsed) .cs-logo-text { display: inline !important; }

/* Collapsed: center the icon mark, hide text */
.sidenav.collapsed .cs-brand-header {
  padding: 16px 0 !important;
  justify-content: center !important;
}
.sidenav.collapsed .cs-logo-link {
  justify-content: center !important;
}
.sidenav.collapsed .cs-logo-text { display: none !important; }
.sidenav.collapsed .cs-logo-mark {
  display: flex !important;
  width: 38px;
  height: 38px;
  font-size: 17px;
  border-radius: 12px;
}

/* Active nav item — teal instead of #1E90FF */
.sn-item.active,
.sidenav-item.active {
  background: var(--cs-accent) !important;
  color: #fff !important;
}
body.sidenav-collapsed .sidenav-item.active {
  background: var(--cs-accent) !important;
}

/* Hover state — subtle white overlay instead of blue tint */
.sn-item:hover:not(.active),
.sn-action:hover,
.sidenav-item:hover:not(.active) {
  background: var(--cs-sidebar-hover) !important;
}

/* Override the --sn-active variable used by sidenav.css */
.sidenav {
  --sn-active: var(--cs-accent);
  --sn-hover: var(--cs-sidebar-hover);
}

/* Sidenav text & icons — bright white for readability */
.sidenav .sn-item,
.sidenav .sn-action,
.sidenav .sidenav-item,
.sidenav .sidenav-action {
  color: #fff !important;
}
.sidenav .sn-item i,
.sidenav .sn-action i,
.sidenav .sidenav-item i,
.sidenav .sidenav-action i {
  color: rgba(255,255,255,0.85) !important;
}
.sidenav .sn-item.active i,
.sidenav .sidenav-item.active i {
  color: #fff !important;
}
.sidenav .sidenav-toggle,
.sidenav .sidenav-toggle i {
  color: rgba(255,255,255,0.8) !important;
}

/* Collapse button — match sidebar */
.sidenav-collapse-btn {
  background: rgba(255,255,255,0.08) !important;
}
.sidenav-collapse-btn:hover {
  background: rgba(255,255,255,0.15) !important;
}

/* Collapsed tooltip — dark teal */
body.sidenav-collapsed .sidenav-item::after,
body.sidenav-collapsed .sidenav-action::after {
  background: var(--cs-sidebar) !important;
}

/* ── Page-level overrides ─────────────────────────────────── */

/* Page background */
body {
  background: var(--cs-page-bg) !important;
  color: var(--cs-text);
  font-size: 16px;
}

/* ── Typography hierarchy — headers vs body contrast ─────── */
h1, h2, h3, .page-title, .section-title, .card-title {
  color: var(--cs-text) !important;
  font-weight: 700;
  letter-spacing: -0.01em;
}
h1 { font-size: 24px; }
h2 { font-size: 18px; font-weight: 650; }
h3 { font-size: 15px; font-weight: 600; }

.cs-page p, .cs-page td, .cs-page span, .cs-page li, .cs-page label,
.cs-stat__sub, .cs-call-date, .cs-exec-role,
.cd-factor-reason, .cd-header-meta, .cd-transcript {
  color: var(--cs-muted);
  font-weight: 500;
  line-height: 1.6;
}

.cs-stat__label, .cs-table th, .cs-panel__title, .cs-mini-factor__name {
  color: var(--cs-muted);
  font-weight: 600;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

/* Links */
a:not(.sn-item):not(.sn-action):not(.sidenav-item):not(.sidenav-brand):not(.btn):not(.cs-btn-accent) {
  color: var(--cs-accent);
}

/* Focus ring — teal */
:focus-visible {
  outline-color: var(--cs-accent) !important;
}

/* Input focus — teal glow */
input:focus, select:focus, textarea:focus {
  border-color: var(--cs-accent) !important;
  box-shadow: 0 0 0 3px rgba(15, 107, 98, 0.15) !important;
}
