/* Finance and recovery refinements — v86 */

/* Balance description: normal rows can use two lines; linked loan/asset rows reserve line two for compact context. */
.balance-ledger-table .ledger-description > span {
  display: flex !important;
  flex-direction: column;
  align-items: flex-start;
  min-width: 0;
}
.balance-ledger-table .ledger-description .ledger-description-text {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  overflow-wrap: anywhere;
}
.balance-ledger-table .ledger-description.has-context .ledger-description-text {
  display: block;
  width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.balance-ledger-table .ledger-row-status { display: none; }
.balance-ledger-table .ledger-description.has-context .ledger-row-status {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 3px;
  line-height: 1.2;
}
.ledger-context-tag { font: inherit; font-size: inherit; font-weight: inherit; }
.ledger-context-tag:not(:last-child)::after { content: " |"; color: var(--text-soft); margin-left: 4px; }
.ledger-context-tag.is-posted { color: #64748b; }
.ledger-context-tag.is-loan { color: #7c3aed; }
.ledger-context-tag.is-asset { color: #0f766e; }
.ledger-context-tag.is-stock { color: #0369a1; }

/* Employee form/settings refinements. */
.employee-role-settings { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--border); }
.employee-role-settings > p { margin: -6px 0 14px; }
.employee-role-settings textarea { min-height: 132px; resize: vertical; line-height: 1.55; }
.emp-alt-mobile { display: block; margin-top: 2px; color: var(--text-soft); font-size: .78rem; }

/* Balance Sheet: 5-digit serials and TR15576 must never be clipped. */
@media (min-width: 821px) {
  .balance-ledger-table th:nth-child(1),
  .balance-ledger-table td:nth-child(1) {
    width: 5.2% !important;
    min-width: 58px !important;
    padding-left: .42rem !important;
    padding-right: .42rem !important;
    overflow: visible !important;
    text-overflow: clip !important;
    white-space: nowrap !important;
    text-align: center;
  }
  .balance-ledger-table th:nth-child(2),
  .balance-ledger-table td:nth-child(2) {
    width: 7.8% !important;
    min-width: 82px !important;
    overflow: visible !important;
    text-overflow: clip !important;
    white-space: nowrap !important;
  }
}

/* Compact, mobile-first Bill Generator. */
.bill-generator-page { max-width: 880px !important; }
.bill-generator-page .balance-sheet-heading { margin-bottom: 12px; }
.bill-generator-form {
  max-width: 820px;
  margin: 0 auto;
  padding: 20px !important;
  border-radius: 18px !important;
  overflow: visible !important;
}
.bill-generator-progress {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  margin: 0 0 20px;
  color: var(--text-soft);
  font-size: .72rem;
  font-weight: 800;
}
.bill-generator-progress span { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.bill-generator-progress span::first-letter { color: var(--accent); }
.bill-generator-progress span.is-active { color: var(--accent); }
.bill-generator-progress em { font-style: normal; }
.bill-generator-progress i { width: 42px; height: 2px; background: var(--border); border-radius: 999px; }
.bill-generator-top-grid { grid-template-columns: minmax(0, 1.55fr) minmax(180px, .65fr) !important; }
.bill-registration-combobox,
.bill-readonly-date,
.bill-select-wrap,
.bill-amount-wrap { position: relative; min-width: 0; }
.bill-registration-combobox { flex: 1; }
.bill-registration-combobox > i:first-child,
.bill-readonly-date > i,
.bill-select-wrap > i:first-child {
  position: absolute;
  z-index: 2;
  left: 13px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--accent);
  pointer-events: none;
}
.bill-registration-combobox .input,
.bill-readonly-date .input,
.bill-select-wrap .input { padding-left: 39px !important; }
.bill-combobox-arrow,
.bill-select-wrap > i:last-child {
  position: absolute;
  z-index: 2;
  right: 13px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--text-soft);
  font-size: .72rem;
  pointer-events: none;
}
.bill-select-wrap select { appearance: none; padding-right: 38px !important; }
.bill-registration-row { display: flex !important; align-items: stretch; }
.bill-registration-row .btn { min-width: 92px; border-radius: 11px; }
.bill-student-preview[hidden] { display: none !important; }
.bill-student-preview:not([hidden]) { margin-top: 14px; border-radius: 12px; }
.bill-generator-details {
  grid-template-columns: minmax(210px, .9fr) minmax(170px, .6fr) !important;
  gap: 14px !important;
  margin-top: 16px !important;
}
.bill-description-field { grid-column: 1 / -1; }
.bill-amount-wrap > span {
  position: absolute;
  left: 14px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--text-soft);
  font-weight: 800;
}
.bill-amount-wrap .input { padding-left: 34px !important; }
.bill-generator-form .input { min-height: 46px; border-radius: 11px; }
.bill-generator-form textarea.input { min-height: 92px; resize: vertical; }
.bill-generator-actions .btn { min-height: 46px; border-radius: 11px; }

/* Dues Recovery split workspace. */
.dr-heading-tools { display: flex; align-items: flex-end; gap: .65rem; flex-wrap: wrap; justify-content: flex-end; }
.dr-residency-toggle {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 3px;
  padding: 3px;
  min-width: 330px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface-2);
}
.dr-residency-toggle button {
  min-height: 37px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: var(--text-soft);
  font: inherit;
  font-size: .75rem;
  font-weight: 800;
  cursor: pointer;
  white-space: nowrap;
}
.dr-residency-toggle button i { margin-right: 5px; }
.dr-residency-toggle button.active { color: #fff; box-shadow: 0 3px 10px rgba(15,23,42,.16); }
.dr-residency-toggle button.active.hosteller { background: #7c3aed; }
.dr-residency-toggle button.active.all { background: #2563eb; }
.dr-residency-toggle button.active.day { background: #0f9f8f; }
.dr-split-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .8rem;
  align-items: start;
  min-width: 0;
}
.dr-split-layout .dr-workspace { min-width: 0; }
.dr-filter-grid { grid-template-columns: minmax(240px, 2fr) repeat(3, minmax(110px, .8fr)) auto !important; }
.dr-student-row.is-selected td { background: color-mix(in srgb, var(--accent) 10%, var(--surface)) !important; }
.dr-student-row.is-selected td:first-child { box-shadow: inset 4px 0 0 var(--accent); }

@media (min-width: 821px) {
  .dr-split-layout .dr-drawer-backdrop { display: none !important; }
  .dr-split-layout .dr-drawer.dr-detail-panel {
    position: sticky !important;
    z-index: 5 !important;
    top: calc(var(--topbar-height, 68px) + 12px) !important;
    right: auto !important;
    bottom: auto !important;
    width: clamp(370px, 35vw, 560px) !important;
    min-width: 340px;
    max-width: min(58vw, 720px);
    height: calc(100vh - var(--topbar-height, 68px) - 28px) !important;
    resize: horizontal;
    border: 1px solid var(--border);
    border-radius: 12px;
    box-shadow: var(--shadow) !important;
    overflow: hidden;
  }
  .dr-split-layout .dr-close { display: none; }
  .dr-split-layout .dr-drawer-scroll { overscroll-behavior: contain; }
  .dr-list table { min-width: 990px; }
}

@media (max-width: 1100px) and (min-width: 821px) {
  .dr-split-layout .dr-drawer.dr-detail-panel { width: 380px !important; }
  .dr-filter-grid { grid-template-columns: minmax(220px, 1.7fr) repeat(2, minmax(105px, .7fr)) auto !important; }
}

@media (max-width: 820px) {
  .balance-ledger-table .ledger-date-col,
  .balance-ledger-table .ledger-category-col,
  .balance-ledger-table .ledger-mobile-amount,
  .balance-ledger-table .ledger-balance-col { overflow: visible !important; text-overflow: clip !important; }
  .bill-generator-page .balance-sheet-heading p { display: none; }
  .bill-generator-form { padding: 14px !important; border-radius: 14px !important; }
  .bill-generator-progress { margin-bottom: 14px; }
  .bill-generator-progress i { width: 20px; }
  .bill-generator-top-grid,
  .bill-generator-details { grid-template-columns: 1fr !important; }
  .bill-description-field { grid-column: auto; }
  .bill-registration-row { display: grid !important; grid-template-columns: minmax(0, 1fr) 50px !important; }
  .bill-registration-row .btn { min-width: 0; width: 50px; padding: 0; }
  .bill-registration-row .btn span { display: none; }
  .bill-student-preview:not([hidden]) { grid-template-columns: auto minmax(0, 1fr) !important; gap: 10px; }
  .bill-student-preview > div:nth-child(n+3) { grid-column: auto !important; }
  .bill-generator-actions { position: sticky; bottom: 8px; z-index: 4; padding-top: 9px; background: linear-gradient(transparent, var(--surface) 28%); }
  .dr-heading-tools { display: grid; grid-template-columns: 1fr; width: 100%; }
  .dr-residency-toggle { min-width: 0; width: 100%; }
  .dr-residency-toggle button { min-height: 44px; }
  .dr-split-layout { display: block; }
  .dr-split-layout .dr-drawer.dr-detail-panel {
    position: fixed !important;
    z-index: 2001 !important;
    inset: 0 !important;
    width: 100vw !important;
    height: 100dvh !important;
    max-width: none !important;
    resize: none;
    border-radius: 0;
  }
  .dr-split-layout .dr-drawer-backdrop { display: block; }
  .dr-filter-grid { grid-template-columns: 1fr 1fr !important; }
  .dr-filter-grid .dr-search { grid-column: 1 / -1; }
}

@media (max-width: 520px) {
  .bill-generator-progress em { display: none; }
  .bill-generator-page .balance-sheet-heading .balance-sheet-icon { display: none; }
  .dr-residency-toggle button span { font-size: .7rem; }
  .dr-residency-toggle button i { display: none; }
  .dr-filter-grid { grid-template-columns: 1fr !important; }
  .dr-filter-grid .dr-search { grid-column: auto; }
}
