/* ============================================================================
 * DealIQ — Per-user UI customization layer  (ui-prefs.css)
 * ----------------------------------------------------------------------------
 * Styles the User Picker overlay, the top-bar user chip + menu, and the
 * Settings modal. Plus the utility classes the prefs engine toggles on <html>:
 *   .ui-density-compact   .ui-radius-sharp / .ui-radius-round   .ui-reduce-motion
 *
 * Built to feel native to DealIQ: uses the app's CSS variables
 * (--bg-0/--bg-1/--bg-2, --text-primary/--text-1/--text-secondary,
 *  --accent-blue, --border) with sensible fallbacks.
 *
 * NOTE: the .ui-blur-uc visual rule lives in styles.css — NOT redefined here.
 * ==========================================================================*/

/* ---- local fallbacks so this file is robust on pages missing some vars --- */
:root {
  --uip-bg0: var(--bg-0, #0F1A2E);
  --uip-bg1: var(--bg-1, #1B2A48);
  --uip-bg2: var(--bg-2, #243558);
  --uip-text: var(--text-primary, #E8ECF5);
  --uip-text1: var(--text-1, #C7D2E4);
  --uip-text2: var(--text-secondary, #93A1B8);
  --uip-accent: var(--accent-blue, #1E50C8);
  --uip-border: var(--border, #2A3A55);
  --uip-border-soft: rgba(255, 255, 255, 0.12);
  --uip-radius: 10px;
  --uip-shadow: 0 18px 50px rgba(0, 0, 0, 0.55);
}

/* ======================================================================== */
/* Shared overlay scaffold (picker + settings)                              */
/* ======================================================================== */
.uip-overlay {
  position: fixed;
  inset: 0;
  z-index: 9000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(0, 0, 0, 0.6);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
  opacity: 0;
  transition: opacity 0.2s ease;
  box-sizing: border-box;
}
.uip-overlay.uip-open { opacity: 1; }

.uip-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 999px;
  color: #fff;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.3px;
  flex: 0 0 auto;
  text-transform: uppercase;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.14);
}
.uip-avatar-sm { width: 24px; height: 24px; font-size: 12px; }
.uip-avatar-md { width: 40px; height: 40px; font-size: 14px; }
.uip-avatar-lg { width: 46px; height: 46px; font-size: 15px; }

.uip-badge {
  display: inline-block;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  padding: 1px 6px;
  border-radius: 999px;
  /* a11y: deepen accent ~30% so white text clears WCAG AA (var(--uip-accent) alone was 3.8:1) */
  background: color-mix(in srgb, var(--uip-accent) 70%, #000);
  color: #fff;
  vertical-align: middle;
  margin-left: 4px;
}
.uip-badge-me { background: rgba(255, 255, 255, 0.16); color: var(--uip-text); }

.uip-empty {
  padding: 24px;
  text-align: center;
  color: var(--uip-text2);
  font-size: 13px;
}

/* ======================================================================== */
/* User Picker overlay                                                      */
/* ======================================================================== */
.uip-picker-card {
  width: 100%;
  max-width: 420px;
  background: var(--uip-bg1);
  border: 1px solid var(--uip-border);
  border-radius: 16px;
  box-shadow: var(--uip-shadow);
  overflow: hidden;
  transform: translateY(8px);
  transition: transform 0.22s ease;
}
.uip-overlay.uip-open .uip-picker-card { transform: translateY(0); }

.uip-picker-card { position: relative; }
.uip-picker-close {
  position: absolute; top: 12px; right: 12px;
  width: 30px; height: 30px;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent; border: 0; border-radius: 8px;
  color: var(--uip-text2); font-size: 22px; line-height: 1; cursor: pointer;
  transition: background 0.12s, color 0.12s;
}
.uip-picker-close:hover { background: var(--uip-bg2); color: var(--uip-text); }
.uip-picker-head { padding: 22px 24px 14px; }
.uip-picker-title {
  margin: 0;
  font-size: 19px;
  font-weight: 700;
  color: var(--uip-text);
}
.uip-picker-sub {
  margin: 6px 0 0;
  font-size: 12.5px;
  color: var(--uip-text2);
  line-height: 1.45;
}

.uip-picker-list {
  padding: 6px 12px 16px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-height: 60vh;
  overflow-y: auto;
}
.uip-picker-row {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  text-align: left;
  padding: 10px 12px;
  border: 1px solid transparent;
  border-radius: 12px;
  background: transparent;
  color: var(--uip-text);
  cursor: pointer;
  transition: background 0.12s ease, border-color 0.12s ease;
}
.uip-picker-row:hover {
  background: var(--uip-bg2);
  border-color: var(--uip-border-soft);
}
.uip-picker-meta { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.uip-picker-name { font-size: 14px; font-weight: 600; }
.uip-picker-role { font-size: 12px; color: var(--uip-text2); }

/* ======================================================================== */
/* Top-bar user chip + quick menu                                           */
/* ======================================================================== */
.uip-chip-wrap { position: relative; display: inline-flex; }

.uip-chip-btn {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding-left: 6px;
  padding-right: 9px;
}
.uip-chip-name {
  font-size: 13px;
  font-weight: 600;
  max-width: 110px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.uip-chip-caret { font-size: 12px; opacity: 0.7; }

.uip-menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  min-width: 220px;
  background: var(--uip-bg1);
  border: 1px solid var(--uip-border);
  border-radius: 12px;
  box-shadow: var(--uip-shadow);
  padding: 6px;
  z-index: 9100;
  animation: uip-menu-in 0.12s ease;
}
@keyframes uip-menu-in {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: translateY(0); }
}
.uip-menu-item {
  display: flex;
  align-items: center;
  gap: 9px;
  width: 100%;
  text-align: left;
  padding: 8px 10px;
  border: none;
  background: transparent;
  border-radius: 8px;
  color: var(--uip-text);
  font-size: 13px;
  cursor: pointer;
}
.uip-menu-item:hover { background: var(--uip-bg2); }
.uip-menu-sep { height: 1px; background: var(--uip-border-soft); margin: 6px 4px; }
.uip-menu-label {
  font-size: 10.5px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--uip-text2);
  padding: 4px 10px 2px;
}
.uip-menu-user-name { font-weight: 600; }
.uip-menu-user-role {
  margin-left: auto;
  font-size: 11px;
  color: var(--uip-text2);
  max-width: 90px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ======================================================================== */
/* Settings modal                                                           */
/* ======================================================================== */
.uip-settings-overlay { align-items: flex-start; padding-top: 6vh; }

.uip-modal {
  width: 100%;
  max-width: 720px;
  max-height: 86vh;
  display: flex;
  flex-direction: column;
  background: var(--uip-bg1);
  border: 1px solid var(--uip-border);
  border-radius: 16px;
  box-shadow: var(--uip-shadow);
  overflow: hidden;
  transform: translateY(10px);
  transition: transform 0.22s ease;
}
.uip-overlay.uip-open .uip-modal { transform: translateY(0); }

.uip-modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px;
  border-bottom: 1px solid var(--uip-border);
  flex: 0 0 auto;
}
.uip-modal-title { margin: 0; font-size: 16px; font-weight: 700; color: var(--uip-text); }
.uip-x {
  border: none;
  background: transparent;
  color: var(--uip-text2);
  font-size: 16px;
  cursor: pointer;
  width: 30px;
  height: 30px;
  border-radius: 8px;
  line-height: 1;
}
.uip-x:hover { background: var(--uip-bg2); color: var(--uip-text); }

.uip-modal-body {
  display: flex;
  min-height: 0;
  flex: 1 1 auto;
}
.uip-rail {
  flex: 0 0 168px;
  border-right: 1px solid var(--uip-border);
  padding: 10px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  background: var(--uip-bg0);
}
.uip-rail-item {
  display: flex;
  align-items: center;
  gap: 9px;
  text-align: left;
  padding: 9px 11px;
  border: none;
  background: transparent;
  border-radius: 9px;
  color: var(--uip-text1);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
}
.uip-rail-item:hover { background: var(--uip-bg2); color: var(--uip-text); }
.uip-rail-item.active {
  background: var(--uip-bg2);
  color: var(--uip-text);
  box-shadow: inset 2px 0 0 var(--uip-accent);
}
.uip-rail-icon { font-size: 14px; width: 16px; text-align: center; }

.uip-pane {
  flex: 1 1 auto;
  padding: 18px 22px;
  overflow-y: auto;
}

.uip-modal-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 20px;
  border-top: 1px solid var(--uip-border);
  flex: 0 0 auto;
}
.uip-save-note { font-size: 12px; color: var(--uip-text2); }

/* ---- generic section bits --------------------------------------------- */
.uip-section { margin-bottom: 22px; }
.uip-section:last-child { margin-bottom: 4px; }
.uip-section-title {
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: 0.3px;
  color: var(--uip-text);
  margin-bottom: 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.uip-val { font-weight: 600; color: var(--uip-accent); font-size: 12px; }
.uip-note {
  font-size: 12px;
  color: var(--uip-text2);
  background: var(--uip-bg0);
  border: 1px solid var(--uip-border-soft);
  border-radius: 8px;
  padding: 8px 11px;
  margin-bottom: 14px;
  line-height: 1.45;
}

/* ---- Theme grid -------------------------------------------------------- */
.uip-theme-group { margin-bottom: 16px; }
.uip-group-label {
  font-size: 10.5px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--uip-text2);
  margin-bottom: 7px;
}
.uip-theme-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 8px;
}
.uip-theme-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 4px;
  text-align: left;
  padding: 9px 11px;
  border: 1px solid var(--uip-border);
  border-radius: 11px;
  background: var(--uip-bg0);
  color: var(--uip-text);
  cursor: pointer;
  transition: border-color 0.12s ease, transform 0.08s ease;
}
.uip-theme-card:hover { border-color: var(--uip-border-soft); transform: translateY(-1px); }
.uip-theme-card.selected {
  border-color: var(--uip-accent);
  box-shadow: 0 0 0 1px var(--uip-accent);
}
.uip-theme-swatches {
  display: inline-flex;
  gap: 3px;
  margin-bottom: 2px;
}
.uip-theme-sw {
  width: 18px;
  height: 18px;
  border-radius: 5px;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.25);
}
.uip-theme-label { font-size: 12.5px; font-weight: 600; }
.uip-theme-tag { font-size: 11px; color: var(--uip-text2); }
.uip-theme-check {
  position: absolute;
  top: 8px;
  right: 9px;
  color: var(--uip-accent);
  font-size: 10px;
}

/* ---- Accent row -------------------------------------------------------- */
.uip-accent-row { display: flex; flex-wrap: wrap; gap: 7px; }
.uip-accent {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 6px 11px 6px 8px;
  border: 1px solid var(--uip-border);
  border-radius: 999px;
  background: var(--uip-bg0);
  color: var(--uip-text1);
  font-size: 12px;
  cursor: pointer;
  position: relative;
}
.uip-accent:hover { border-color: var(--uip-border-soft); }
.uip-accent.selected {
  border-color: var(--uip-accent);
  color: var(--uip-text);
  box-shadow: 0 0 0 1px var(--uip-accent);
}
.uip-accent-dot {
  width: 16px;
  height: 16px;
  border-radius: 999px;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2);
}
.uip-accent-dot-default {
  background:
    conic-gradient(#1E50C8, #C26B4A, #E8C876, #3FA776, #9B7BE0, #1E50C8);
}
.uip-accent-custom { overflow: hidden; }
.uip-accent-custom input[type="color"] {
  position: absolute;
  inset: 0;
  opacity: 0;
  cursor: pointer;
  width: 100%;
  height: 100%;
  border: none;
  padding: 0;
}

/* ---- Range slider ------------------------------------------------------ */
.uip-range {
  width: 100%;
  -webkit-appearance: none;
  appearance: none;
  height: 6px;
  border-radius: 999px;
  background: var(--uip-bg2);
  outline: none;
}
.uip-range::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 18px;
  height: 18px;
  border-radius: 999px;
  background: var(--uip-accent);
  cursor: pointer;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
}
.uip-range::-moz-range-thumb {
  width: 18px;
  height: 18px;
  border: none;
  border-radius: 999px;
  background: var(--uip-accent);
  cursor: pointer;
}

/* ---- Segmented control -------------------------------------------------- */
.uip-seg {
  display: inline-flex;
  padding: 3px;
  gap: 3px;
  border: 1px solid var(--uip-border);
  border-radius: 10px;
  background: var(--uip-bg0);
}
.uip-seg-btn {
  border: none;
  background: transparent;
  color: var(--uip-text1);
  font-size: 12.5px;
  font-weight: 500;
  padding: 6px 14px;
  border-radius: 7px;
  cursor: pointer;
}
.uip-seg-btn:hover { color: var(--uip-text); }
.uip-seg-btn.active { background: var(--uip-accent); color: #fff; }

/* ---- Toggle switch ----------------------------------------------------- */
.uip-toggle-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}
.uip-toggle-title { font-size: 13px; font-weight: 600; color: var(--uip-text); }
.uip-toggle-desc { font-size: 11.5px; color: var(--uip-text2); margin-top: 3px; line-height: 1.45; max-width: 440px; }
.uip-switch {
  flex: 0 0 auto;
  width: 42px;
  height: 24px;
  border-radius: 999px;
  border: 1px solid var(--uip-border);
  background: var(--uip-bg2);
  cursor: pointer;
  padding: 0;
  position: relative;
  transition: background 0.15s ease;
}
.uip-switch-knob {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 18px;
  height: 18px;
  border-radius: 999px;
  background: #fff;
  transition: transform 0.15s ease;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
}
.uip-switch.on { background: var(--uip-accent); border-color: var(--uip-accent); }
.uip-switch.on .uip-switch-knob { transform: translateX(18px); }

/* ---- People pane ------------------------------------------------------- */
.uip-person-list { display: flex; flex-direction: column; gap: 6px; }
.uip-person {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 11px 12px;
  border: 1px solid var(--uip-border);
  border-radius: 11px;
  background: var(--uip-bg0);
}
.uip-person.is-me { border-color: var(--uip-accent); box-shadow: inset 0 0 0 1px var(--uip-accent); }
.uip-person-meta { flex: 1 1 auto; min-width: 0; }
.uip-person-name { font-size: 13.5px; font-weight: 600; color: var(--uip-text); }
.uip-person-role { font-size: 12px; color: var(--uip-text1); margin-top: 1px; }
.uip-person-contact { font-size: 11.5px; color: var(--uip-text2); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uip-person-tools { display: flex; align-items: center; gap: 7px; flex: 0 0 auto; }
.uip-icon-btn {
  border: 1px solid var(--uip-border);
  background: var(--uip-bg1);
  color: var(--uip-text1);
  width: 30px;
  height: 30px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 13px;
}
.uip-icon-btn:hover { background: var(--uip-bg2); color: var(--uip-text); }

.uip-person-editing { align-items: flex-start; }
.uip-person-edit { flex: 1 1 auto; display: flex; flex-direction: column; gap: 8px; }
.uip-field { display: flex; flex-direction: column; gap: 3px; }
.uip-field > span { font-size: 11px; color: var(--uip-text2); }
.uip-input {
  background: var(--uip-bg1);
  border: 1px solid var(--uip-border);
  color: var(--uip-text);
  border-radius: 8px;
  padding: 7px 10px;
  font-size: 13px;
  font-family: inherit;
}
.uip-input:focus { outline: none; border-color: var(--uip-accent); }
.uip-person-actions { display: flex; align-items: center; gap: 8px; margin-top: 2px; }
/* Auto-save affordance for the People identity fields (saving… / saved ✓). */
.uip-person-status { font-size: 11px; color: var(--uip-text2); transition: color 120ms ease; min-height: 1em; }
.uip-person-status.is-saving { color: var(--uip-text2); }
.uip-person-status.is-saved  { color: var(--positive, #6FB98F); }
.uip-person-status.is-error  { color: var(--negative, #D76B6B); }

/* ---- About pane -------------------------------------------------------- */
.uip-about { padding: 8px 2px; }
.uip-about-name { font-size: 22px; font-weight: 800; color: var(--uip-text); letter-spacing: -0.3px; }
.uip-about-line { font-size: 13px; color: var(--uip-text1); margin-top: 6px; }
.uip-about-muted { color: var(--uip-text2); }

/* Minimal local ghost/primary button fallbacks (only apply if the app's own
   classes are absent — the app's definitions win via later source order). */
.uip-overlay .ghost-btn,
.uip-chip-wrap .ghost-btn {
  cursor: pointer;
}

/* ======================================================================== */
/* Utility classes toggled by the prefs engine (on <html>)                  */
/* ======================================================================== */

/* --- Compact density: ~20-25% tighter on dense surfaces ----------------- */
html.ui-density-compact .ov-section .ov-section-head { padding-top: 9px; padding-bottom: 9px; }
html.ui-density-compact .ov-section-body { padding: 11px 13px; }
html.ui-density-compact .kpi { padding: 9px 11px; }
html.ui-density-compact .tabs-status-chip { padding-top: 4px; padding-bottom: 4px; }
html.ui-density-compact td,
html.ui-density-compact th { padding-top: 5px; padding-bottom: 5px; }
html.ui-density-compact .ov-section { margin-bottom: 11px; }

/* --- Corner radius variants --------------------------------------------- */
html.ui-radius-sharp .ov-section,
html.ui-radius-sharp .ghost-btn,
html.ui-radius-sharp .primary-btn-sm,
html.ui-radius-sharp .tabs-status-chip,
html.ui-radius-sharp input,
html.ui-radius-sharp select,
html.ui-radius-sharp .card { border-radius: 2px; }

html.ui-radius-round .ov-section,
html.ui-radius-round .ghost-btn,
html.ui-radius-round .primary-btn-sm,
html.ui-radius-round .tabs-status-chip,
html.ui-radius-round input,
html.ui-radius-round select,
html.ui-radius-round .card { border-radius: 16px; }
/* keep true pills round, never square them off */
html.ui-radius-sharp .uip-badge,
html.ui-radius-sharp .uip-switch,
html.ui-radius-sharp .uip-accent { border-radius: 999px; }

/* --- Reduce motion ------------------------------------------------------ */
html.ui-reduce-motion *,
html.ui-reduce-motion *::before,
html.ui-reduce-motion *::after {
  animation: none !important;
  transition: none !important;
  scroll-behavior: auto !important;
}

/* (.ui-blur-uc lives in styles.css — intentionally not defined here.) */

/* VaultIQ (admin) — integrations/credentials registry */
.uip-vault-list { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; }
.uip-vault-row {
  display: flex; align-items: center; gap: 12px;
  background: var(--bg-1); border: 1px solid var(--border, rgba(255,255,255,.12));
  border-radius: 10px; padding: 11px 13px;
}
.uip-vault-meta { flex: 1; min-width: 0; }
.uip-vault-name { font-size: 13px; font-weight: 600; color: var(--text-primary); }
.uip-vault-note { font-size: 11.5px; color: var(--text-secondary); margin-top: 2px; word-break: break-word; }
.uip-vault-chip {
  flex: none; font-size: 10.5px; font-weight: 700; letter-spacing: .02em;
  padding: 3px 10px; border-radius: 999px; border: 1px solid currentColor;
  background: color-mix(in srgb, currentColor 12%, transparent); white-space: nowrap;
}

/* DealPath sync progress bar (Integrations tab) — accent fill on a rounded track. */
.uip-dp-bar { height: 8px; background: var(--uip-bg2); border-radius: 999px; overflow: hidden; margin-top: 8px; }
.uip-dp-bar-fill { height: 100%; background: var(--uip-accent); border-radius: 999px; transition: width .3s ease; }
