/* ============================================================
   LeadShop Portal — custom.css
   Design tokens → structural layout → components → responsive
   ============================================================ */

/* ── Design tokens ────────────────────────────────────────── */
:root {
  --primary-rgb: 65, 155, 68;
  --bs-primary: #419b44;
  --bs-primary-rgb: 65, 155, 68;
  --ls-bg: #f4f7fb;
  --ls-surface: #ffffff;
  --ls-surface-soft: #f8fafc;
  --ls-border: #e2e8f0;
  --ls-text: #0f172a;
  --ls-text-muted: #64748b;
  --ls-shadow: 0 10px 30px rgba(15, 23, 42, 0.08);
  --ls-shadow-soft: 0 6px 18px rgba(15, 23, 42, 0.06);
  --ls-radius: 14px;
}

[data-theme-mode="dark"] {
  --ls-bg: #0b1220;
  --ls-surface: #111a2d;
  --ls-surface-soft: #0f172a;
  --ls-border: rgba(148, 163, 184, 0.22);
  --ls-text: #e2e8f0;
  --ls-text-muted: #94a3b8;
  --ls-shadow: 0 16px 36px rgba(2, 6, 23, 0.55);
  --ls-shadow-soft: 0 10px 24px rgba(2, 6, 23, 0.4);
}

/* ── Base ─────────────────────────────────────────────────── */
html, body {
  background: radial-gradient(circle at top right, rgba(65,155,68,.08), transparent 38%), var(--ls-bg) !important;
  color: var(--ls-text) !important;
}

body { letter-spacing: .01em; }

.text-muted, .form-text {
  color: var(--ls-text-muted) !important;
}

/* ── App shell ────────────────────────────────────────────── */
.app-header {
  background: color-mix(in srgb, var(--ls-surface) 88%, transparent) !important;
  border-bottom: 1px solid var(--ls-border) !important;
  backdrop-filter: blur(8px);
}

.app-sidebar {
  border-right: 1px solid var(--ls-border);
  background: var(--ls-surface) !important;
}

.app-sidebar .main-sidebar-header {
  background: var(--ls-surface) !important;
  border-bottom: 1px solid var(--ls-border);
}

.app-sidebar .main-sidebar-header .header-logo,
.app-sidebar .main-sidebar-header .header-logo img,
.app-header .horizontal-logo .header-logo img {
  background: transparent !important;
}

.app-sidebar .main-sidebar-header .header-logo img,
.app-header .horizontal-logo .header-logo img {
  height: auto !important;
  line-height: normal !important;
  width: 160px !important;
  max-width: 100% !important;
}

.main-menu-container .side-menu__item {
  border-radius: 10px;
  margin: 2px 10px;
  color: var(--ls-text-muted);
}

.main-menu-container .side-menu__item.active,
.main-menu-container .side-menu__item:hover {
  color: var(--ls-text) !important;
  background: color-mix(in srgb, rgb(var(--primary-rgb)) 12%, transparent);
}

.app-sidebar .side-menu__label,
.app-sidebar .side-menu__icon,
.app-sidebar .side-menu__item {
  color: var(--ls-text) !important;
  fill: var(--ls-text) !important;
}

.app-sidebar .side-menu__item.active .side-menu__label,
.app-sidebar .side-menu__item:hover .side-menu__label,
.app-sidebar .side-menu__item.active .side-menu__icon,
.app-sidebar .side-menu__item:hover .side-menu__icon {
  color: var(--ls-text) !important;
  fill: var(--ls-text) !important;
}

.app-sidebar .slide.has-sub > .side-menu__item--parent {
  padding-inline-end: 2.25rem;
}

.app-sidebar .slide.has-sub > .side-menu__item--parent .side-menu__angle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  opacity: .65;
  transition: transform .2s ease, opacity .2s ease, color .2s ease;
}

.app-sidebar .slide.has-sub.open > .side-menu__item--parent.is-expanded,
.app-sidebar .slide.has-sub.open > .side-menu__item--parent.is-expanded:hover {
  background: color-mix(in srgb, rgb(var(--primary-rgb)) 14%, transparent) !important;
  font-weight: 600;
}

.app-sidebar .slide.has-sub.open > .side-menu__item--parent.is-expanded .side-menu__angle,
.app-sidebar .slide.has-sub.open > .side-menu__item--parent.is-expanded .side-menu__icon,
.app-sidebar .slide.has-sub.open > .side-menu__item--parent.is-expanded .side-menu__label {
  color: rgb(var(--primary-rgb)) !important;
  fill: rgb(var(--primary-rgb)) !important;
}

.app-sidebar .slide.has-sub.open > .side-menu__item--parent .side-menu__angle { transform: rotate(90deg); opacity: 1; }
.app-sidebar .slide.has-sub:not(.open) > .side-menu__item--parent .side-menu__angle { transform: rotate(0deg); }
.app-sidebar .slide-menu.is-open { display: block !important; }

.main-content.app-content {
  padding-top: 1.15rem;
  padding-bottom: 2rem;
}

/* ── Page header breadcrumb ───────────────────────────────── */
/*
  Layout: on large screens, title/subtitle on left, breadcrumb on right.
  On smaller screens, stacked vertically (no overlap).
  We use flex-wrap so it naturally wraps before cramping.
*/
.page-header-breadcrumb {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem 1rem;
  padding: 0.9rem 1.1rem;
  margin-bottom: 1.25rem;
  border: 1px solid var(--ls-border);
  border-radius: var(--ls-radius);
  background: color-mix(in srgb, var(--ls-surface) 90%, transparent);
  box-shadow: var(--ls-shadow-soft);
}

.page-header-breadcrumb > div:first-child {
  min-width: 0;
}

.page-header-breadcrumb nav {
  flex-shrink: 0;
}

.page-title {
  color: var(--ls-text) !important;
  font-size: 1.15rem !important;
  margin-bottom: 0.15rem;
}

.breadcrumb {
  --bs-breadcrumb-divider-color: var(--ls-text-muted);
  margin-bottom: 0;
}

.breadcrumb-item a {
  color: var(--ls-text-muted);
  text-decoration: none;
}

.breadcrumb-item.active { color: var(--ls-text); }

/* ── Cards ────────────────────────────────────────────────── */
.custom-card, .card {
  background: var(--ls-surface) !important;
  border: 1px solid var(--ls-border) !important;
  border-radius: var(--ls-radius) !important;
  box-shadow: var(--ls-shadow-soft) !important;
}

.card-header {
  border-bottom: 1px solid var(--ls-border) !important;
  background: color-mix(in srgb, var(--ls-surface-soft) 72%, transparent) !important;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.75rem;
  padding: 0.85rem 1.1rem;
}

.card-title {
  color: var(--ls-text);
  letter-spacing: .01em;
  margin-bottom: 0;
}

/* ── Tables ───────────────────────────────────────────────── */
.table {
  --bs-table-bg: transparent;
  --bs-table-border-color: var(--ls-border);
  color: var(--ls-text);
}

.table > :not(caption) > * > * {
  padding: 0.8rem 0.9rem;
}

.table > thead > tr > th {
  color: var(--ls-text-muted);
  font-weight: 600;
  font-size: .8125rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  background: color-mix(in srgb, var(--ls-surface-soft) 80%, transparent);
  border-bottom-width: 1px;
  white-space: nowrap;
}

.table-hover > tbody > tr:hover > * {
  background: color-mix(in srgb, rgb(var(--primary-rgb)) 6%, transparent);
}

/* scrollable table wrapper */
.ls-table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

/* ── Forms ────────────────────────────────────────────────── */
.form-control, .form-select, .input-group-text {
  border-color: var(--ls-border) !important;
  background: var(--ls-surface) !important;
  color: var(--ls-text) !important;
  border-radius: 10px !important;
}

.form-control::placeholder {
  color: color-mix(in srgb, var(--ls-text-muted) 80%, transparent);
}

.form-control:focus, .form-select:focus {
  border-color: rgba(var(--primary-rgb), .5) !important;
  box-shadow: 0 0 0 .2rem rgba(var(--primary-rgb), .14) !important;
}

.form-label {
  font-size: .8125rem;
  font-weight: 500;
  color: var(--ls-text-muted);
  margin-bottom: 0.35rem;
}

/* Narrow field when paired with an action button */
.form-control.area-code-input {
  width: 7rem;
  max-width: 100%;
  flex: 0 1 auto;
}

/* ── Buttons ──────────────────────────────────────────────── */
.btn { border-radius: 10px !important; font-weight: 500; }

.btn-primary {
  box-shadow: 0 4px 12px rgba(var(--primary-rgb), .28);
}

.btn-light {
  background: var(--ls-surface-soft) !important;
  border-color: var(--ls-border) !important;
  color: var(--ls-text) !important;
}

.btn-outline-secondary, .btn-outline-primary {
  border-color: var(--ls-border);
}

/* ── Badges ───────────────────────────────────────────────── */
.badge {
  border-radius: 999px !important;
  font-weight: 600;
  letter-spacing: .01em;
}

/* ── Modals ───────────────────────────────────────────────── */
.modal-content {
  border-radius: 16px !important;
  border: 1px solid var(--ls-border) !important;
  background: var(--ls-surface) !important;
  box-shadow: var(--ls-shadow) !important;
}

.modal-header, .modal-footer {
  border-color: var(--ls-border) !important;
}

/* ── Alerts ───────────────────────────────────────────────── */
.alert {
  border-radius: 12px !important;
  border-width: 1px !important;
}

/* ── Authentication ───────────────────────────────────────── */
.authentication.authentication-basic {
  min-height: 100vh;
  background: linear-gradient(180deg, color-mix(in srgb, rgb(var(--primary-rgb)) 14%, transparent), transparent 25%);
}

.authentication .auth-page-logo-wrap .desktop-logo,
.authentication .auth-page-logo-wrap .desktop-dark {
  height: auto !important;
  line-height: normal !important;
  width: 220px !important;
  max-width: 100% !important;
}

.authentication .card.custom-card {
  box-shadow: var(--ls-shadow) !important;
}

/* ── Footer ───────────────────────────────────────────────── */
.footer {
  border-top: 1px solid var(--ls-border);
  background: color-mix(in srgb, var(--ls-surface) 94%, transparent) !important;
}

/* Hide theme switcher */
#switcher-canvas { display: none !important; }

/* ── Form switch alignment ────────────────────────────────── */
.form-check.form-switch.form-switch-aligned {
  display: flex;
  align-items: center;
  gap: .5rem;
  padding-left: 0;
  min-height: 0;
}

.form-check.form-switch.form-switch-aligned .form-check-input {
  float: none;
  margin-left: 0;
  margin-top: 0;
}

.form-check.form-switch.form-switch-aligned .form-check-label {
  padding-top: 0;
  line-height: 1.35;
}

/* ── Page-level shared components ────────────────────────── */

/* Card header with title + action buttons */
.ls-card-header-actions {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
}

/* Toolbar: search + dropdowns + buttons in a card header */
.ls-toolbar {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
  min-width: 0;
}

.ls-toolbar-search {
  min-width: 0;
  flex: 1 1 180px;
  max-width: 280px;
}

/* Stacked action buttons (e.g. credit balance card) */
.ls-action-group {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

/* Form action buttons row (Next / Back / Cancel) */
.ls-form-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
}

/* Pagination footer */
.ls-pagination-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.5rem;
  padding: 0.65rem 1rem;
}

/* Mobile card list (shown instead of table on small screens) */
.ls-card-list {
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
  padding: 0.75rem;
}

.ls-card-item {
  border: 1px solid var(--ls-border);
  border-radius: 12px;
  padding: 0.85rem 1rem;
  background: var(--ls-surface-soft);
}

.ls-card-item-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 0.5rem;
  margin-bottom: 0.5rem;
}

.ls-card-item-body {
  display: grid;
  gap: 0.3rem;
  font-size: .875rem;
  line-height: 1.45;
}

.ls-card-item-body .text-muted,
.ls-card-item-body .ls-label {
  display: inline-block;
  min-width: 5rem;
  font-size: .72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .04em;
  margin-right: .4rem;
}

.ls-card-item-footer {
  margin-top: 0.6rem;
  padding-top: 0.6rem;
  border-top: 1px solid var(--ls-border);
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}

/* ── My data: leads toolbar ───────────────────────────────── */
.my-leads-toolbar {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.5rem;
  flex: 1 1 auto;
  min-width: 0;
  justify-content: flex-end;
}

.my-leads-toolbar .my-leads-search {
  width: auto !important;
  min-width: 9rem;
  max-width: 22rem;
  flex: 1 1 9rem;
}

.my-leads-toolbar .my-leads-source-filter {
  width: auto !important;
  min-width: 8.5rem;
  max-width: 12rem;
  flex: 0 0 auto;
}

.my-leads-toolbar > .btn { flex: 0 0 auto; }

/* ── Admin: customer table ────────────────────────────────── */
.customers-table-wrap, .admin-table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.customers-table { min-width: 860px; }
.customers-actions-cell { width: 3rem; white-space: nowrap; text-align: start; }
.admin-table { min-width: 680px; }
.admin-actions-cell { width: 3rem; white-space: nowrap; text-align: start; }

/* ── Row actions menu (native popover, MLG-style) ─────────── */
.row-menu {
  display: inline-flex;
}

.row-menu__trigger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 0.375rem;
  background: transparent;
  color: var(--ls-text-muted);
  cursor: pointer;
  transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.row-menu__trigger:hover {
  background: var(--ls-surface-soft);
  color: var(--ls-text);
}

.row-menu:has(.row-menu__dropdown:popover-open) .row-menu__trigger {
  background: rgba(var(--primary-rgb), 0.12);
  color: var(--bs-primary);
  border-color: rgba(var(--primary-rgb), 0.35);
}

.row-menu__dropdown {
  position: fixed;
  inset: auto;
  margin: 0;
  min-width: 13rem;
  max-width: min(20rem, calc(100vw - 1rem));
  overflow-y: auto;
  padding: 0.35rem;
  background: var(--ls-surface);
  border: 1px solid var(--ls-border);
  border-radius: 0.5rem;
  box-shadow: var(--ls-shadow);
  flex-direction: column;
  gap: 0.1rem;
  color: var(--ls-text);
}

.row-menu__dropdown:popover-open {
  display: flex;
  animation: row-menu-in 0.12s ease-out;
}

@keyframes row-menu-in {
  from {
    opacity: 0;
    transform: translateY(-4px) scale(0.98);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

.row-menu__item {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  width: 100%;
  padding: 0.5rem 0.6rem;
  border: 0;
  border-radius: 0.375rem;
  background: transparent;
  color: var(--ls-text);
  font: inherit;
  font-size: 0.8125rem;
  font-weight: 500;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  white-space: nowrap;
}

.row-menu__item i {
  width: 1rem;
  flex-shrink: 0;
  font-size: 1rem;
  line-height: 1;
  color: var(--ls-text-muted);
}

.row-menu__item:hover:not(:disabled) {
  background: var(--ls-surface-soft);
  color: var(--ls-text);
  text-decoration: none;
}

.row-menu__item:disabled {
  color: var(--ls-text-muted);
  cursor: not-allowed;
  opacity: 0.65;
}

.row-menu__item--danger {
  color: #dc2626;
}

.row-menu__item--danger i {
  color: #dc2626;
}

.row-menu__item--danger:hover:not(:disabled) {
  background: #fef2f2;
}

.row-menu__item--success {
  color: #15803d;
}

.row-menu__item--success i {
  color: #15803d;
}

.row-menu__item--success:hover:not(:disabled) {
  background: #f0fdf4;
}

.row-menu__item[aria-disabled="true"] {
  color: var(--ls-text-muted);
  cursor: default;
  pointer-events: none;
}

.row-menu__item[aria-disabled="true"]:hover {
  background: transparent;
}

/* ── Table min-widths ─────────────────────────────────────── */
.orders-table      { min-width: 600px; }
.my-data-table     { min-width: 800px; }
.my-calls-table    { min-width: 620px; }
.my-messages-table { min-width: 500px; }
.credit-activity-table { min-width: 400px; }
.place-order-leads-table, .place-order-review-table { min-width: 420px; }

/* ── Reports ──────────────────────────────────────────────── */
.reports-call-grid-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.reports-call-grid    { width: 100%; }
.reports-payout-wrap  { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.reports-payout-table { min-width: 400px; }
.reports-refund-transcript {
  white-space: pre-wrap;
  max-height: 16rem;
  overflow-y: auto;
}

.reports-client-picker-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.75rem;
}

.reports-client-picker-search {
  flex: 1 1 16rem;
  max-width: 28rem;
}

.reports-client-picker-list {
  max-height: 16rem;
  overflow-y: auto;
  overscroll-behavior: contain;
  border: 1px solid var(--default-border, #e9edf4);
  border-radius: 0.375rem;
  padding: 0.35rem 0.25rem;
  background: var(--custom-white, #fff);
}

.reports-client-picker .form-check,
.reports-filters .form-check {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  min-height: auto;
  padding-left: 0;
  padding-inline-start: 0;
  margin-bottom: 0;
  margin-block-end: 0;
}

.reports-client-picker .form-check-input,
.reports-filters .form-check-input {
  float: none;
  margin-top: 0;
  margin-left: 0;
  margin-right: 0;
  margin-inline-start: 0;
  margin-inline-end: 0;
  flex-shrink: 0;
}

.reports-client-picker .form-check-label,
.reports-filters .form-check-label {
  padding-left: 0;
  padding-inline-start: 0;
  margin-bottom: 0;
  line-height: 1.35;
}

.reports-client-picker-item {
  margin: 0;
  padding: 0.45rem 0.75rem;
  border-radius: 0.25rem;
}

.reports-client-picker-item:hover {
  background: var(--default-background, #f7f8fb);
}

.reports-client-picker-item .form-check-label {
  min-width: 0;
  flex: 1;
  cursor: pointer;
}

.reports-client-picker-item.reports-client-unlinked {
  background: rgba(241, 163, 37, 0.08);
}

.reports-client-link-badge {
  flex-shrink: 0;
  font-size: 0.7rem;
  font-weight: 600;
}

/* Mobile call cards */
.reports-call-card {
  border: 1px solid var(--ls-border);
  border-radius: 12px;
  padding: 0.85rem 1rem;
  background: var(--ls-surface-soft);
}

.reports-call-card-meta {
  display: grid;
  gap: 0.3rem;
  font-size: .875rem;
  line-height: 1.45;
  word-break: break-word;
}

.reports-call-card-meta .text-muted {
  display: inline-block;
  min-width: 5rem;
  font-size: .72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .04em;
  margin-right: .4rem;
}

/* Mortgage Orders % Complete (LeadRevu Campaigns.aspx colors) */
.reports-order-pct-complete {
  background-color: #cc0000;
  color: #ffffff;
  padding: 0.15rem 0.4rem;
  display: inline-block;
}

.reports-order-pct-warn {
  background-color: #ffff00;
  padding: 0.15rem 0.4rem;
  display: inline-block;
}

.reports-order-grid td.reports-order-pct-complete,
.reports-order-grid td.reports-order-pct-warn {
  display: table-cell;
}

/* ── Responsive: ≤ 575px (xs / phone) ────────────────────── */
@media (max-width: 575.98px) {
  .main-content.app-content {
    padding-left: 0.5rem;
    padding-right: 0.5rem;
  }

  .page-header-breadcrumb {
    padding: 0.7rem 0.85rem;
    gap: 0.35rem;
  }

  .page-title {
    font-size: 1rem !important;
  }

  .breadcrumb { font-size: .8rem; }

  /* Stack card headers on phone */
  .card-header { padding: 0.75rem; }

  /* Make all action button groups full width on phone */
  .ls-action-group { width: 100%; }
  .ls-action-group .btn { flex: 1 1 auto; }

  .ls-card-header-actions { width: 100%; }
  .ls-card-header-actions .btn { flex: 1 1 auto; }

  /* Form actions stack vertically */
  .ls-form-actions { flex-direction: column; }
  .ls-form-actions .btn,
  .ls-form-actions a.btn {
    width: 100%;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }

  /* Leads toolbar wraps on phone */
  .my-leads-toolbar {
    flex-wrap: wrap;
    justify-content: stretch;
  }
  .my-leads-toolbar .my-leads-search,
  .my-leads-toolbar .my-leads-source-filter {
    flex: 1 1 100%;
    max-width: 100%;
    width: 100% !important;
  }
  .my-leads-toolbar > .btn { flex: 1 1 auto; width: 100%; }

  /* Pagination stacks on phone */
  .ls-pagination-footer {
    flex-direction: column;
    align-items: center;
    text-align: center;
  }

  .ls-pagination-footer .pagination {
    justify-content: center;
  }

  /* Modals go full screen on phone */
  .modal-dialog { margin: 0 !important; }

  .customers-create-btn { width: 100%; }

  .customers-table { min-width: 600px; }
  .customers-actions-cell { width: 3rem; }
  .admin-table { min-width: 520px; }
  .admin-actions-cell { width: 3rem; }
  .orders-table { min-width: 480px; }
}

/* ── Responsive: 576–767px (sm / large phone / small tablet) ─ */
@media (min-width: 576px) and (max-width: 767.98px) {
  .page-title { font-size: 1.05rem !important; }
}
