/* Billing flow styles.
 *
 * Scoped under .mb-billing so the rules don't leak into the rest of the app.
 * Tokens (--bg-primary, --text-primary, --accent-color, etc.) are inherited
 * from the existing theme system (theme.css). A handful of extra tokens
 * declared here are specific to this module.
 */

.mb-billing {
  --mbb-hairline: var(--hairline, hsla(0, 0%, 0%, 0.07));
  --mbb-text-soft: var(--text-soft, hsl(0, 0%, 50%));
  --mbb-clay: hsl(20 42% 46%);
  --mbb-clay-light: hsl(22 48% 92%);
  --mbb-radius-md: var(--radius-md, 12px);
  --mbb-radius-lg: var(--radius-lg, 20px);
  --mbb-transition: 0.2s cubic-bezier(0.2, 0.7, 0.2, 1);
}

/* ============================================================
 * Email Review — full-screen workflow overlay
 * ============================================================ */

.mb-billing-overlay {
  position: fixed;
  inset: 0;
  z-index: 1100;
  background: var(--bg-primary);
  display: none;
  flex-direction: column;
}
.mb-billing-overlay.is-open { display: flex; }
.mb-billing-overlay[aria-label="Email Templates"] { z-index: 1120; }

.mb-billing-overlay__head {
  padding: 14px clamp(20px, 4vw, 40px) 16px;
  border-bottom: 1px solid var(--mbb-hairline);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  flex-wrap: wrap;
}
.mb-billing-overlay__title {
  margin: 0;
  font-size: 1.1rem;
  font-weight: 600;
  letter-spacing: -0.02em;
}
.mb-billing-overlay__close-btn {
  background: transparent;
  border: 1px solid transparent;
  color: var(--text-secondary);
  border-radius: 50%;
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background var(--transition-base), color var(--transition-base), border-color var(--transition-base);
}
.mb-billing-overlay__close-btn:hover {
  background: var(--bg-tertiary);
  border-color: var(--mbb-hairline);
  color: var(--text-primary);
}
.mb-billing-overlay__close-btn:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.mb-billing-overlay__subtitle {
  font-size: 0.78rem;
  color: var(--mbb-text-soft);
  margin-top: 0.15rem;
}
.mb-billing-overlay__progress {
  display: flex;
  align-items: center;
  gap: 14px;
}
.mb-billing-overlay__progress-text {
  font-size: 0.78rem;
  color: var(--mbb-text-soft);
  text-align: end;
}
.mb-billing-overlay__progress-text b {
  color: var(--text-secondary);
  font-weight: 600;
}
.mb-billing-overlay__progress-ring {
  --p: 0;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  flex: none;
  background: conic-gradient(var(--success-color) calc(var(--p) * 1%), var(--bg-tertiary) 0);
  display: grid;
  place-items: center;
}
.mb-billing-overlay__progress-ring::after {
  content: attr(data-label);
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--bg-primary);
  display: grid;
  place-items: center;
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--text-secondary);
}
/* While a batch send is in flight, pulse the ring so it visibly reads as
   "working" even in the ~1-2s gap between individual emails. */
.mb-billing-overlay__progress.is-sending .mb-billing-overlay__progress-ring {
  animation: mb-ring-pulse 1.1s ease-in-out infinite;
}
@keyframes mb-ring-pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.09); }
}

/* split body */
.mb-billing-review {
  flex: 1;
  min-height: 0;
  display: grid;
  grid-template-columns: 320px 1fr;
}

/* recipients column */
.mb-review-recips {
  border-inline-end: 1px solid var(--mbb-hairline);
  background: var(--bg-secondary);
  display: flex;
  flex-direction: column;
  min-height: 0;
}
.mb-review-recips__head {
  padding: 14px 16px 12px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  border-bottom: 1px solid var(--mbb-hairline);
}
.mb-review-recips__title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}
.mb-review-recips__count {
  font-size: 0.75rem;
  color: var(--mbb-text-soft);
  font-weight: 500;
}
.mb-review-search {
  position: relative;
  display: flex;
  align-items: center;
}
.mb-review-search input {
  font-family: inherit;
  font-size: 0.82rem;
  color: var(--text-primary);
  background: var(--bg-primary);
  border: 1px solid var(--border-color);
  border-radius: 999px;
  padding: 7px 14px;
  width: 100%;
  outline: none;
  transition: border-color var(--mbb-transition), box-shadow var(--mbb-transition);
}
.mb-review-search input:focus {
  border-color: var(--accent-color);
  box-shadow: 0 0 0 3px var(--accent-light);
}
.mb-review-recips__list {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 8px;
}
.mb-review-recip {
  display: grid;
  grid-template-columns: 36px 1fr auto;
  align-items: center;
  gap: 11px;
  padding: 10px 11px;
  border-radius: var(--mbb-radius-md);
  cursor: pointer;
  border: 1px solid transparent;
  background: transparent;
  font-family: inherit;
  text-align: start;
  width: 100%;
  transition: background var(--mbb-transition);
}
.mb-review-recip:hover { background: var(--bg-primary); }
.mb-review-recip.is-selected {
  background: var(--bg-primary);
  border-color: var(--accent-color);
  box-shadow: 0 0 0 2px var(--accent-light);
}
.mb-review-recip__avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--ink-inv, hsl(40 36% 95%));
  background: var(--accent-color);
}
.mb-review-recip__main { min-width: 0; }
.mb-review-recip__name {
  font-size: 0.83rem;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.mb-review-recip__email {
  font-size: 0.7rem;
  color: var(--mbb-text-soft);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  direction: ltr;
  text-align: start;
}
.mb-review-recip__dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  flex: none;
}
.mb-review-recip__dot--ready { background: var(--success-color); }
.mb-review-recip__dot--manual { background: var(--mbb-clay); }
.mb-review-recip__dot--none {
  background: var(--bg-tertiary);
  border: 1.5px solid var(--border-color);
}

/* editor column */
.mb-review-editor {
  display: flex;
  flex-direction: column;
  min-height: 0;
}
.mb-review-editor__top {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 13px clamp(18px, 3vw, 30px);
  border-bottom: 1px solid var(--mbb-hairline);
}
.mb-review-editor__who {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  flex: 1;
}
.mb-review-editor__who-avatar {
  width: 40px;
  height: 40px;
  flex: none;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 0.86rem;
  font-weight: 600;
  color: var(--ink-inv, hsl(40 36% 95%));
  background: var(--accent-color);
}
.mb-review-editor__who-name {
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: -0.01em;
}
.mb-review-editor__who-mail {
  font-size: 0.74rem;
  color: var(--mbb-text-soft);
  direction: ltr;
  text-align: start;
}
.mb-review-editor__nav {
  display: flex;
  align-items: center;
  gap: 7px;
}
.mb-review-editor__pos {
  font-size: 0.77rem;
  color: var(--mbb-text-soft);
  min-width: 74px;
  text-align: center;
  white-space: nowrap;
}
.mb-review-editor__pos b {
  color: var(--text-secondary);
  font-weight: 700;
}
.mb-review-editor__ready-btn {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--text-secondary);
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: 999px;
  padding: 6px 14px;
  cursor: pointer;
  font-family: inherit;
  transition: background var(--mbb-transition), color var(--mbb-transition), border-color var(--mbb-transition);
}
.mb-review-editor__ready-btn.is-on {
  background: var(--success-light);
  border-color: var(--success-color);
  color: var(--success-color);
}
.mb-review-editor__manual-tag {
  display: none;
  align-items: center;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--mbb-clay);
  background: var(--mbb-clay-light);
  padding: 4px 10px;
  border-radius: 999px;
}
.mb-review-editor.is-edited .mb-review-editor__manual-tag { display: inline-flex; }

.mb-review-editor__body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 20px clamp(18px, 3vw, 30px) 24px;
}
.mb-review-editor__canvas {
  /* Wide enough for a full A4 invoice (210mm ≈ 794px) so the preview never
     scrolls horizontally; the email body shares this document width. */
  max-width: 920px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.mb-review-editor__field-label {
  font-size: 0.74rem;
  font-weight: 600;
  color: var(--text-secondary);
  margin-bottom: 6px;
  display: block;
}
.mb-review-editor__input,
.mb-review-editor__textarea {
  font-family: inherit;
  font-size: 0.92rem;
  width: 100%;
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: var(--mbb-radius-md);
  padding: 10px 14px;
  color: var(--text-primary);
  outline: none;
  transition: border-color var(--mbb-transition), box-shadow var(--mbb-transition);
}
.mb-review-editor__textarea {
  min-height: 240px;
  resize: vertical;
  line-height: 1.55;
}
.mb-review-editor__input:focus,
.mb-review-editor__textarea:focus {
  border-color: var(--accent-color);
  box-shadow: 0 0 0 3px var(--accent-light);
}

.mb-review-editor__seg {
  display: inline-flex;
  background: var(--bg-tertiary);
  border-radius: 999px;
  padding: 3px;
  font-size: 0.8rem;
  margin-inline-start: auto;
}
.mb-review-editor__seg button {
  background: transparent;
  border: 0;
  font-family: inherit;
  font-size: inherit;
  font-weight: 600;
  color: var(--text-secondary);
  padding: 5px 14px;
  border-radius: 999px;
  cursor: pointer;
  transition: background var(--mbb-transition), color var(--mbb-transition);
}
.mb-review-editor__seg button.is-on {
  background: var(--bg-primary);
  color: var(--text-primary);
  box-shadow: var(--shadow-sm, 0 1px 2px rgba(0,0,0,0.06));
}

.mb-review-preview {
  background: var(--bg-secondary);
  border: 1px solid var(--mbb-hairline);
  border-radius: var(--mbb-radius-md);
  padding: 18px 22px;
  white-space: pre-wrap;
  font-size: 0.95rem;
  line-height: 1.65;
  color: var(--text-primary);
  min-height: 240px;
}

/* Attached-invoice preview, shown inline below the email body */
.mb-review-invoice {
  margin-top: 22px;
}
.mb-review-invoice__frame {
  margin-top: 8px;
  border: 1px solid var(--mbb-hairline);
  border-radius: var(--mbb-radius-md);
  overflow: hidden;
  background: var(--bg-secondary);
}
.mb-review-invoice__frame iframe {
  display: block;
  inline-size: 100%;
  /* HTML previews are auto-sized to their content by JS (no inner scroll);
     this is just a fallback for the PDF-blob path. */
  block-size: 1160px;
  border: 0;
  background: #fff;
}
.mb-review-invoice__link {
  display: inline-block;
  margin-top: 8px;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--accent-color);
  text-decoration: none;
}
.mb-review-invoice__link:hover { text-decoration: underline; }

/* footer */
.mb-billing-overlay__foot {
  padding: 12px clamp(20px, 4vw, 40px);
  border-top: 1px solid var(--mbb-hairline);
  display: flex;
  align-items: center;
  gap: 10px;
  justify-content: flex-end;
}
.mb-billing-overlay__foot-btn {
  font-family: inherit;
  font-size: 0.88rem;
  font-weight: 600;
  border-radius: 999px;
  padding: 8px 18px;
  cursor: pointer;
  border: 1px solid transparent;
  transition: background var(--mbb-transition), color var(--mbb-transition);
}
.mb-billing-overlay__foot-btn--ghost {
  background: transparent;
  color: var(--text-secondary);
}
.mb-billing-overlay__foot-btn--ghost:hover { color: var(--text-primary); }
.mb-billing-overlay__foot-btn--outline {
  background: var(--bg-secondary);
  border-color: var(--border-color);
  color: var(--text-primary);
}
.mb-billing-overlay__foot-btn--primary {
  background: var(--accent-color);
  color: var(--ink-inv, white);
}
.mb-billing-overlay__foot-btn--primary:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.mb-billing-overlay__foot-btn--primary:hover:not(:disabled) {
  background: var(--accent-hover);
}
.mb-billing-overlay__foot-progress {
  margin-inline-end: auto;
  font-size: 0.82rem;
  color: var(--text-secondary);
  font-weight: 500;
  min-height: 1.1em;
}
.mb-billing-overlay__foot-progress b { color: var(--text-primary); font-weight: 700; }

/* per-recipient send error chip */
.mb-review-recip__err {
  display: block;
  margin-top: 2px;
  font-size: 0.72rem;
  color: var(--mbb-danger, #b91c1c);
  font-weight: 500;
  line-height: 1.3;
}

/* quota-blocked = not a hard error: amber "pending", resumes after a top-up */
.mb-review-recip__err--quota {
  color: var(--mbb-warning, #b45309);
}

/* responsive: stack on narrow screens */
@media (max-width: 880px) {
  .mb-billing-review { grid-template-columns: 1fr; grid-template-rows: 240px 1fr; }
  .mb-review-recips { border-inline-end: 0; border-bottom: 1px solid var(--mbb-hairline); }
}

/* ============================================================
 * Stage 2b: rich-text editor, chip picker, filter pills
 * ============================================================ */

/* placeholder chip (in editor) */
.mb-billing .mb-ph {
  display: inline-block;
  background: var(--accent-light);
  color: var(--accent-color);
  border: 1px solid var(--accent-color);
  border-radius: 999px;
  padding: 1px 9px;
  margin: 0 1px;
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 0.78em;
  font-weight: 600;
  vertical-align: baseline;
  user-select: all;
}
/* preview substitution */
.mb-billing .mb-ph-resolved {
  display: inline;
  background: transparent;
  color: inherit;
  font-weight: 600;
}

/* editor toolbar */
.mb-review-editor__toolbar {
  display: inline-flex;
  gap: 4px;
  background: var(--bg-tertiary);
  border-radius: var(--mbb-radius-md);
  padding: 3px;
}
.mb-review-editor__toolbar-btn {
  background: transparent;
  border: 0;
  font-family: inherit;
  font-size: 0.82rem;
  color: var(--text-secondary);
  width: 28px;
  height: 26px;
  border-radius: 8px;
  display: grid;
  place-items: center;
  cursor: pointer;
  transition: background var(--mbb-transition);
}
.mb-review-editor__toolbar-btn:hover {
  background: var(--bg-primary);
  color: var(--text-primary);
}

/* contenteditable body */
.mb-review-editor__editable {
  font-family: inherit;
  font-size: 0.92rem;
  width: 100%;
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: var(--mbb-radius-md);
  padding: 10px 14px;
  color: var(--text-primary);
  outline: none;
  min-height: 220px;
  line-height: 1.55;
  transition: border-color var(--mbb-transition), box-shadow var(--mbb-transition);
}
.mb-review-editor__editable:focus,
.mb-review-editor__editable.focused {
  border-color: var(--accent-color);
  box-shadow: 0 0 0 3px var(--accent-light);
}
.mb-review-editor__editable p { margin: 0 0 0.6em; }
.mb-review-editor__editable p:last-child { margin-bottom: 0; }
.mb-review-editor__editable ul,
.mb-review-editor__editable ol { margin: 0 0 0.6em; padding-inline-start: 1.4em; }

/* chip picker */
.mb-review-editor__chip-picker {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  margin-top: 8px;
  padding: 8px 10px;
  background: var(--bg-secondary);
  border: 1px dashed var(--border-color);
  border-radius: var(--mbb-radius-md);
}
.mb-review-editor__chip-picker-label {
  font-size: 0.72rem;
  color: var(--mbb-text-soft);
  font-weight: 600;
  margin-inline-end: 4px;
}
.mb-review-editor__chip-picker-btn {
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 0.72rem;
  font-weight: 600;
  background: var(--bg-primary);
  color: var(--accent-color);
  border: 1px solid var(--border-color);
  border-radius: 999px;
  padding: 3px 10px;
  cursor: pointer;
  transition: background var(--mbb-transition), border-color var(--mbb-transition);
}
.mb-review-editor__chip-picker-btn:hover {
  background: var(--accent-light);
  border-color: var(--accent-color);
}

/* filter pills in the recipient pane */
.mb-review-recips__filter {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}
.mb-review-recips__filter-pill {
  flex: 1 1 0;
  min-width: 64px;
  font-family: inherit;
  font-size: 0.72rem;
  font-weight: 600;
  background: var(--bg-tertiary);
  color: var(--text-secondary);
  border: 0;
  border-radius: 999px;
  padding: 5px 8px;
  cursor: pointer;
  transition: background var(--mbb-transition), color var(--mbb-transition);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
}
.mb-review-recips__filter-pill:hover {
  background: var(--bg-primary);
  color: var(--text-primary);
}
.mb-review-recips__filter-pill.is-on {
  background: var(--accent-color);
  color: var(--ink-inv, white);
}
.mb-review-recips__filter-count {
  font-size: 0.65rem;
  opacity: 0.85;
  font-weight: 700;
}

/* bulk mark-as-ready */
.mb-review-recips__bulk-mark {
  font-family: inherit;
  font-size: 0.75rem;
  font-weight: 600;
  background: var(--success-light);
  color: var(--success-color);
  border: 1px solid var(--success-color);
  border-radius: 999px;
  padding: 6px 12px;
  cursor: pointer;
  transition: background var(--mbb-transition), color var(--mbb-transition);
}
.mb-review-recips__bulk-mark:hover {
  background: var(--success-color);
  color: var(--ink-inv, white);
}

.mb-review-recips__empty {
  padding: 16px;
  text-align: center;
  color: var(--mbb-text-soft);
  font-size: 0.82rem;
}

/* nav buttons in the editor top bar (override generic foot-btn look) */
.mb-review-editor__nav-btn {
  font-family: inherit;
  font-size: 1rem;
  font-weight: 600;
  background: var(--bg-secondary);
  color: var(--text-secondary);
  border: 1px solid var(--border-color);
  border-radius: 50%;
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  cursor: pointer;
  transition: background var(--mbb-transition), color var(--mbb-transition);
}
.mb-review-editor__nav-btn:not(:disabled):hover {
  background: var(--bg-primary);
  color: var(--text-primary);
}
.mb-review-editor__nav-btn:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* inline preview (single-line subject) */
.mb-review-preview--inline {
  min-height: auto;
  padding: 10px 14px;
}

/* template picker row in the editor */
.mb-review-editor__tpl-row {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  padding: 10px 14px;
  background: var(--bg-secondary);
  border: 1px solid var(--mbb-hairline);
  border-radius: var(--mbb-radius-md);
}
.mb-review-editor__tpl-select {
  flex: 1;
  min-width: 200px;
}
.mb-review-editor__template-controls {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.mb-review-editor__tpl-row--compact {
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
  gap: 8px;
}
.mb-review-editor__tpl-row--compact .mb-review-editor__tpl-select {
  min-width: 180px;
  max-width: min(280px, 70vw);
}
.mb-review-editor__manage-templates {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--accent-color);
  font: inherit;
  font-size: 0.78rem;
  font-weight: 700;
  padding: 4px 0;
  cursor: pointer;
}
.mb-review-editor__manage-templates:hover {
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ============================================================
 * Stage 3: Email Templates module
 * ============================================================ */

.mb-tpl-body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 20px clamp(18px, 4vw, 40px);
}

.mb-tpl-error {
  background: var(--mbb-clay-light);
  color: var(--mbb-clay);
  border: 1px solid var(--mbb-clay);
  border-radius: var(--mbb-radius-md);
  padding: 10px 14px;
  margin-bottom: 14px;
  font-size: 0.85rem;
}

.mb-tpl-empty {
  text-align: center;
  padding: 60px 20px;
  color: var(--mbb-text-soft);
  font-size: 0.95rem;
}

/* table-style list */
.mb-tpl-list {
  background: var(--bg-secondary);
  border: 1px solid var(--mbb-hairline);
  border-radius: var(--mbb-radius-lg);
  overflow: hidden;
}
.mb-tpl-table {
  width: 100%;
  border-collapse: collapse;
}
.mb-tpl-table th,
.mb-tpl-table td {
  text-align: start;
  padding: 12px 16px;
  border-bottom: 1px solid var(--mbb-hairline);
  font-size: 0.86rem;
  color: var(--text-primary);
  vertical-align: middle;
}
.mb-tpl-table thead th {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--mbb-text-soft);
  background: var(--bg-tertiary);
  border-bottom-color: var(--border-color);
}
.mb-tpl-table tbody tr:last-child td { border-bottom: 0; }
.mb-tpl-table tbody tr:hover { background: var(--bg-primary); }
.mb-tpl-table__actions { text-align: end; }

.mb-tpl-row-name { font-weight: 600; font-size: 0.92rem; }
.mb-tpl-row-meta { color: var(--mbb-text-soft); font-size: 0.78rem; }

.mb-tpl-system-tag {
  display: inline-block;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  background: var(--bg-tertiary);
  color: var(--mbb-text-soft);
  padding: 2px 8px;
  border-radius: 999px;
  margin-top: 4px;
}

.mb-tpl-pill {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 600;
  padding: 3px 10px;
  border-radius: 999px;
  border: 1px solid transparent;
}
.mb-tpl-pill--official {
  background: var(--accent-light);
  color: var(--accent-color);
  border-color: var(--accent-color);
}
.mb-tpl-pill--manual {
  background: var(--mbb-clay-light);
  color: var(--mbb-clay);
  border-color: var(--mbb-clay);
}

.mb-tpl-lang {
  display: inline-block;
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 0.72rem;
  font-weight: 700;
  background: var(--bg-tertiary);
  color: var(--text-secondary);
  padding: 2px 7px;
  border-radius: 6px;
  letter-spacing: 0.05em;
}

.mb-tpl-action {
  font-family: inherit;
  font-size: 0.78rem;
  background: transparent;
  border: 0;
  color: var(--accent-color);
  cursor: pointer;
  padding: 3px 8px;
  border-radius: 6px;
  margin-inline-start: 2px;
  transition: background var(--mbb-transition);
}
.mb-tpl-action:hover { background: var(--accent-light); }
.mb-tpl-action--danger { color: var(--mbb-clay); }
.mb-tpl-action--danger:hover { background: var(--mbb-clay-light); }

/* editor: 2-column split */
.mb-tpl-editor {
  display: grid;
  grid-template-columns: 1fr 280px;
  gap: 24px;
  align-items: start;
}
.mb-tpl-editor__main {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.mb-tpl-editor__side {
  display: flex;
  flex-direction: column;
  gap: 14px;
  position: sticky;
  top: 0;
}
.mb-tpl-field { display: flex; flex-direction: column; gap: 6px; }
.mb-tpl-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.mb-tpl-seg button { padding: 6px 18px; }

.mb-tpl-readonly-note {
  font-size: 0.8rem;
  background: var(--bg-tertiary);
  color: var(--text-secondary);
  border: 1px dashed var(--border-color);
  border-radius: var(--mbb-radius-md);
  padding: 10px 14px;
}

.mb-tpl-side-block {
  background: var(--bg-secondary);
  border: 1px solid var(--mbb-hairline);
  border-radius: var(--mbb-radius-md);
  padding: 14px;
}
.mb-tpl-side-title {
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--text-secondary);
  letter-spacing: 0.02em;
}
.mb-tpl-side-help {
  font-size: 0.72rem;
  color: var(--mbb-text-soft);
  margin: 4px 0 10px;
}
.mb-tpl-side-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.mb-tpl-preview {
  background: var(--bg-primary);
  border: 1px solid var(--border-color);
  border-radius: var(--mbb-radius-md);
  padding: 12px 14px;
  max-height: 360px;
  overflow-y: auto;
}
.mb-tpl-preview__subject {
  font-size: 0.86rem;
  font-weight: 700;
  color: var(--text-primary);
  border-bottom: 1px dashed var(--mbb-hairline);
  padding-bottom: 8px;
  margin-bottom: 10px;
}
.mb-tpl-preview__body {
  font-size: 0.84rem;
  line-height: 1.55;
  color: var(--text-primary);
  white-space: pre-wrap;
}
.mb-tpl-preview__body p { margin: 0 0 0.6em; }

@media (max-width: 880px) {
  .mb-tpl-editor { grid-template-columns: 1fr; }
  .mb-tpl-editor__side { position: static; }
  .mb-tpl-row { grid-template-columns: 1fr; }
}

/* ============================================================
 * Billable Items — client-card sub-section for non-session charges.
 * Lives inside the existing client-card layout; uses the same theme
 * tokens so dark mode + palettes work automatically.
 * ============================================================ */
.mb-bi-card {
  background: var(--bg-secondary);
  border: 1px solid var(--mbb-hairline);
  border-radius: var(--mbb-radius-lg);
  padding: 18px 20px;
  margin: 8px 0;
  font-family: inherit;
  color: var(--text-primary);
}
.mb-bi-card__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 14px;
}
.mb-bi-card__title {
  margin: 0 0 2px;
  font-size: 1rem;
  font-weight: 700;
  color: var(--text-primary);
}
.mb-bi-card__sub {
  font-size: 0.78rem;
  color: var(--text-secondary);
  font-weight: 500;
}
.mb-bi-card__add-btn {
  flex: 0 0 auto;
  font-family: inherit;
  font-size: 0.82rem;
  font-weight: 600;
  border: 1px solid var(--accent-color);
  color: var(--accent-color);
  background: transparent;
  border-radius: 999px;
  padding: 6px 14px;
  cursor: pointer;
  transition: background var(--mbb-transition), color var(--mbb-transition);
}
.mb-bi-card__add-btn:hover {
  background: var(--accent-color);
  color: var(--ink-inv, white);
}
.mb-bi-card__empty {
  font-size: 0.84rem;
  color: var(--text-secondary);
  padding: 10px 4px;
  font-style: italic;
}
.mb-bi-card__error {
  font-size: 0.82rem;
  color: var(--mbb-danger, #b91c1c);
  padding: 8px 12px;
  background: hsla(0, 80%, 50%, 0.08);
  border-radius: var(--mbb-radius-md);
}
.mb-bi-form {
  display: block;
  margin: 4px 0 14px;
  padding: 12px;
  background: var(--bg-primary);
  border: 1px solid var(--border-color);
  border-radius: var(--mbb-radius-md);
}
.mb-bi-form__row {
  display: grid;
  grid-template-columns: 1.5fr 0.8fr 0.8fr;
  gap: 10px;
}
.mb-bi-form__field { display: flex; flex-direction: column; gap: 4px; }
.mb-bi-form__lbl {
  font-size: 0.74rem;
  font-weight: 600;
  color: var(--text-secondary);
}
.mb-bi-form__input {
  font-family: inherit;
  font-size: 0.88rem;
  padding: 8px 10px;
  border-radius: var(--mbb-radius-md);
  border: 1px solid var(--border-color);
  background: var(--bg-secondary);
  color: var(--text-primary);
  outline: none;
  transition: border-color var(--mbb-transition);
}
.mb-bi-form__input:focus { border-color: var(--accent-color); }
.mb-bi-form__actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  margin-top: 10px;
}
.mb-bi-form__btn {
  font-family: inherit;
  font-size: 0.84rem;
  font-weight: 600;
  border-radius: 999px;
  padding: 6px 16px;
  cursor: pointer;
  border: 1px solid transparent;
  transition: background var(--mbb-transition), color var(--mbb-transition);
}
.mb-bi-form__btn--ghost {
  background: transparent;
  color: var(--text-secondary);
}
.mb-bi-form__btn--primary {
  background: var(--accent-color);
  color: var(--ink-inv, white);
}
.mb-bi-form__btn:disabled { opacity: 0.5; cursor: not-allowed; }

.mb-bi-list { list-style: none; padding: 0; margin: 0; }
.mb-bi-row {
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
  gap: 14px;
  padding: 10px 4px;
  border-bottom: 1px solid var(--mbb-hairline);
}
.mb-bi-row:last-child { border-bottom: 0; }
.mb-bi-row__desc {
  font-size: 0.92rem;
  font-weight: 600;
  color: var(--text-primary);
  line-height: 1.3;
}
.mb-bi-row__meta {
  display: flex;
  gap: 8px;
  margin-top: 3px;
  align-items: center;
}
.mb-bi-row__chip {
  font-size: 0.7rem;
  font-weight: 600;
  background: var(--mbb-clay-light, hsl(22 48% 92%));
  color: var(--mbb-clay, hsl(20 42% 46%));
  border-radius: 999px;
  padding: 2px 8px;
  letter-spacing: 0.02em;
}
.mb-bi-row__state {
  font-size: 0.7rem;
  font-weight: 600;
  border-radius: 999px;
  padding: 2px 8px;
}
.mb-bi-row__state--unbilled {
  background: hsla(45, 75%, 80%, 0.4);
  color: hsl(36, 70%, 32%);
}
.mb-bi-row__state--billed {
  background: hsla(140, 50%, 80%, 0.4);
  color: hsl(140, 45%, 28%);
}
.mb-bi-row__state--cancelled {
  background: hsla(0, 0%, 80%, 0.4);
  color: var(--text-secondary);
}
.mb-bi-row__amount {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--text-primary);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.mb-bi-row__del {
  background: transparent;
  border: 1px solid var(--border-color);
  border-radius: 50%;
  width: 26px;
  height: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: var(--text-secondary);
  font-size: 0.84rem;
  font-weight: 600;
  transition: background var(--mbb-transition), color var(--mbb-transition);
}
.mb-bi-row__del:hover:not(:disabled) {
  background: hsla(0, 80%, 50%, 0.08);
  color: var(--mbb-danger, #b91c1c);
  border-color: var(--mbb-danger, #b91c1c);
}
.mb-bi-row__del:disabled { opacity: 0.35; cursor: not-allowed; }

@media (max-width: 720px) {
  .mb-bi-form__row { grid-template-columns: 1fr; }
}

/* ============================================================
 * Stage 6 — per-row charge button + main-ledger open items panel
 * ============================================================ */
.mb-bi-card__head-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.mb-bi-card__charge-btn {
  font-family: inherit;
  font-size: 0.82rem;
  font-weight: 600;
  background: var(--accent-color);
  color: var(--ink-inv, white);
  border: 1px solid var(--accent-color);
  border-radius: 999px;
  padding: 6px 14px;
  cursor: pointer;
  transition: background var(--mbb-transition);
}
.mb-bi-card__charge-btn:hover { background: var(--accent-hover); }

.mb-bi-row__charge {
  font-family: inherit;
  font-size: 0.74rem;
  font-weight: 600;
  background: transparent;
  color: var(--accent-color);
  border: 1px solid var(--accent-color);
  border-radius: 999px;
  padding: 4px 10px;
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--mbb-transition), color var(--mbb-transition);
}
.mb-bi-row__charge:hover {
  background: var(--accent-color);
  color: var(--ink-inv, white);
}
.mb-bi-row__actions { display: flex; gap: 6px; align-items: center; }

/* Main-ledger panel — listed below the sessions table */
.mb-bi-ledger {
  background: var(--bg-secondary);
  border: 1px solid var(--mbb-hairline);
  border-radius: var(--mbb-radius-lg);
  padding: 18px 20px;
}
.mb-bi-ledger__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 12px;
}
.mb-bi-ledger__title {
  margin: 0;
  font-size: 0.98rem;
  font-weight: 700;
  color: var(--text-primary);
}
.mb-bi-ledger__sub {
  font-size: 0.78rem;
  color: var(--text-secondary);
}
.mb-bi-ledger__sub b { color: var(--text-primary); font-variant-numeric: tabular-nums; }
.mb-bi-ledger__body { display: flex; flex-direction: column; gap: 10px; }
.mb-bi-ledger__group {
  background: var(--bg-primary);
  border: 1px solid var(--border-color);
  border-radius: var(--mbb-radius-md);
  padding: 10px 14px;
}
.mb-bi-ledger__group-head {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.mb-bi-ledger__client {
  font-weight: 700;
  font-size: 0.92rem;
  color: var(--text-primary);
  flex: 1 1 auto;
}
.mb-bi-ledger__group-total {
  font-size: 0.82rem;
  color: var(--text-secondary);
  font-variant-numeric: tabular-nums;
}
.mb-bi-ledger__charge-btn {
  font-family: inherit;
  font-size: 0.8rem;
  font-weight: 600;
  background: var(--accent-color);
  color: var(--ink-inv, white);
  border: 1px solid var(--accent-color);
  border-radius: 999px;
  padding: 5px 14px;
  cursor: pointer;
}
.mb-bi-ledger__charge-btn:hover { background: var(--accent-hover); }
.mb-bi-ledger__list {
  list-style: none;
  padding: 0;
  margin: 8px 0 0;
  border-top: 1px dashed var(--mbb-hairline);
}
.mb-bi-ledger__row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 6px 0;
  font-size: 0.85rem;
  border-bottom: 1px solid var(--mbb-hairline);
}
.mb-bi-ledger__row:last-child { border-bottom: 0; }
.mb-bi-ledger__amount { font-weight: 700; font-variant-numeric: tabular-nums; color: var(--text-primary); }

/* ============================================================================
 * Legacy debts (mindbalance.legacy_debts) — v1
 * Visually distinct from billable_items: amber chip, dashed left rail in
 * the ledger group block. The card section under the client card reuses
 * the .mb-bi-card layout primitives so spacing stays consistent.
 * ========================================================================= */
.mb-ld-card {
  margin-top: 0;
  border: 1px solid var(--mbb-hairline);
  background: var(--bg-secondary);
  border-radius: var(--radius-md, 10px);
  padding: 14px 16px;
}
.mb-ld-card__head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 8px;
}
.mb-ld-card__title {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--text-primary);
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.mb-ld-card__sub {
  margin-top: 2px;
  font-size: 0.78rem;
  color: var(--text-soft);
}
.mb-ld-card__body { margin-top: 4px; }
.mb-ld-legacy-chip {
  display: inline-block;
  padding: 1px 8px;
  font-size: 0.7rem;
  font-weight: 700;
  border-radius: 999px;
  background: #f9e4b6;
  color: #7a5a1f;
  border: 1px solid #e2c483;
}
.mb-ld-form {
  background: var(--bg-primary);
  border: 1px solid var(--mbb-hairline);
  border-radius: var(--radius-sm, 6px);
  padding: 12px;
  margin-bottom: 12px;
  display: grid;
  gap: 10px;
}
.mb-ld-form__row {
  display: grid;
  grid-template-columns: max-content 1fr max-content;
  gap: 10px;
  align-items: end;
}
.mb-ld-form__row--monthly {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.mb-ld-form__row[hidden] { display: none; }
.mb-ld-form__field { display: flex; flex-direction: column; gap: 3px; }
.mb-ld-form__field--desc { min-width: 0; }
.mb-ld-form__lbl {
  font-size: 0.72rem;
  color: var(--text-soft);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.mb-ld-form__input {
  padding: 6px 8px;
  border: 1px solid var(--mbb-hairline);
  border-radius: var(--radius-sm, 6px);
  background: var(--bg-primary);
  color: var(--text-primary);
  font-size: 0.88rem;
}
.mb-ld-form__distribution {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin: 0;
  padding: 0;
  border: 0;
}
.mb-ld-form__distribution legend {
  padding: 0;
  margin-inline-end: 2px;
  font-size: 0.72rem;
  color: var(--text-soft);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.mb-ld-form__choice {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 8px;
  border: 1px solid var(--mbb-hairline);
  border-radius: var(--radius-sm, 6px);
  background: var(--bg-secondary);
  color: var(--text-primary);
  font-size: 0.78rem;
  cursor: pointer;
}
.mb-ld-form__choice input { margin: 0; }
.mb-ld-form__actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}
.mb-ld-list { list-style: none; padding: 0; margin: 0; }
.mb-ld-row {
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 12px;
  align-items: center;
  padding: 8px 0;
  border-bottom: 1px solid var(--mbb-hairline);
  border-inline-start: 3px solid #e2c483;
  padding-inline-start: 10px;
}
.mb-ld-row:last-child { border-bottom: 0; }
.mb-ld-row__main { min-width: 0; }
.mb-ld-row__desc { font-weight: 600; color: var(--text-primary); }
.mb-ld-row__meta {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-top: 2px;
  font-size: 0.75rem;
  color: var(--text-soft);
  flex-wrap: wrap;
}
.mb-ld-row__date { color: var(--text-soft); }
.mb-ld-row__state {
  display: inline-block;
  padding: 1px 8px;
  border-radius: 999px;
  font-weight: 700;
  font-size: 0.7rem;
}
.mb-ld-row__state--open { background: #fdf3d4; color: #815a16; }
.mb-ld-row__state--partial { background: #fde6c8; color: #8a4a1c; }
.mb-ld-row__state--settled { background: #d8f0d3; color: #2f6a32; }
.mb-ld-row__state--void { background: #eee; color: #777; text-decoration: line-through; }
.mb-ld-row__monthly {
  display: inline-block;
  padding: 1px 8px;
  border-radius: 999px;
  background: #d8e9f8;
  color: #1f4d7a;
  font-weight: 700;
  font-size: 0.7rem;
}
.mb-ld-row__breakdown {
  color: var(--text-soft);
}
.mb-ld-row__remain { color: #8a4a1c; font-weight: 600; }
.mb-ld-row__void-reason { font-style: italic; color: #888; }
.mb-ld-row__amount {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--text-primary);
}
.mb-ld-row__actions {
  display: flex;
  gap: 6px;
  align-items: center;
}
.mb-ld-row__settle {
  font-family: inherit;
  font-size: 0.75rem;
  font-weight: 600;
  background: var(--accent-color);
  color: var(--ink-inv, white);
  border: 1px solid var(--accent-color);
  border-radius: 999px;
  padding: 4px 12px;
  cursor: pointer;
}
.mb-ld-row__settle:hover { background: var(--accent-hover); }
.mb-ld-row__edit,
.mb-ld-row__del,
.mb-ld-row__void {
  font-family: inherit;
  font-size: 0.78rem;
  background: transparent;
  border: 1px solid var(--mbb-hairline);
  color: var(--text-soft);
  border-radius: var(--radius-sm, 6px);
  padding: 3px 8px;
  cursor: pointer;
}
.mb-ld-row__del:hover { color: var(--ink-inv, white); background: #c45050; border-color: #c45050; }

/* Settlement modal */
.mb-ld-modal__content { max-width: 620px; }
.mb-ld-settle__head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 14px;
  margin-bottom: 14px;
}
.mb-ld-settle__client {
  font-weight: 700;
  color: var(--text-primary);
  font-size: 1rem;
}
.mb-ld-settle__desc {
  font-size: 0.82rem;
  color: var(--text-soft);
  margin-top: 2px;
}
.mb-ld-settle__totals {
  display: grid;
  gap: 4px;
  font-size: 0.85rem;
  text-align: end;
  font-variant-numeric: tabular-nums;
}
.mb-ld-settle__lbl { color: var(--text-soft); }
.mb-ld-settle__banner {
  background: #fff4d6;
  color: #6b4e1a;
  border: 1px solid #e8c97a;
  border-radius: var(--radius-sm, 6px);
  padding: 8px 12px;
  font-size: 0.82rem;
  margin-bottom: 12px;
}
.mb-ld-settle__methods {
  border: 1px solid var(--mbb-hairline);
  border-radius: var(--radius-sm, 6px);
  padding: 10px 12px;
  display: grid;
  gap: 6px;
  margin: 0 0 12px;
}
.mb-ld-settle__methods legend {
  padding: 0 6px;
  font-size: 0.78rem;
  color: var(--text-soft);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.mb-ld-settle__method {
  display: grid;
  grid-template-columns: max-content 1fr;
  column-gap: 8px;
  align-items: start;
  padding: 6px 4px;
  cursor: pointer;
  border-radius: var(--radius-sm, 6px);
}
.mb-ld-settle__method:hover { background: var(--bg-secondary); }
.mb-ld-settle__method-title {
  grid-column: 2;
  font-weight: 600;
  color: var(--text-primary);
  font-size: 0.88rem;
}
.mb-ld-settle__method-desc {
  grid-column: 2;
  font-size: 0.78rem;
  color: var(--text-soft);
}
.mb-ld-settle__form { display: grid; gap: 10px; }
.mb-ld-settle__history { margin-top: 16px; }
.mb-ld-settle__history h4 {
  margin: 0 0 6px;
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--text-primary);
}
.mb-ld-payments { list-style: none; padding: 0; margin: 0; }
.mb-ld-payment {
  display: grid;
  grid-template-columns: max-content max-content max-content 1fr max-content;
  gap: 10px;
  align-items: center;
  padding: 6px 0;
  border-top: 1px solid var(--mbb-hairline);
  font-size: 0.82rem;
}
.mb-ld-payment:first-child { border-top: 0; }
.mb-ld-payment__amount { font-weight: 700; font-variant-numeric: tabular-nums; }
.mb-ld-payment__chip {
  padding: 1px 8px;
  font-size: 0.7rem;
  font-weight: 700;
  border-radius: 999px;
}
.mb-ld-payment__chip--receipt { background: #d8e9f8; color: #1f4d7a; }
.mb-ld-payment__chip--manual { background: #e8e3d8; color: #5d4f30; }
.mb-ld-payment__notes { color: var(--text-soft); font-size: 0.78rem; }
.mb-ld-payment__del {
  background: transparent;
  border: 1px solid var(--mbb-hairline);
  color: var(--text-soft);
  border-radius: var(--radius-sm, 6px);
  padding: 2px 6px;
  cursor: pointer;
}
.mb-ld-payment__del[disabled] { opacity: 0.4; cursor: not-allowed; }

/* Ledger embed — group block per client */
.mb-bi-ledger__legacy-block {
  margin: 8px 0 0;
  padding: 8px 10px;
  border: 1px dashed #e2c483;
  border-radius: var(--radius-sm, 6px);
  background: #fffaf0;
}
.mb-bi-ledger__legacy-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 0.82rem;
  font-weight: 700;
  color: #7a5a1f;
  margin-bottom: 4px;
}
.mb-bi-ledger__legacy-total { font-variant-numeric: tabular-nums; }
.mb-ld-ledger__settle {
  font-family: inherit;
  font-size: 0.75rem;
  font-weight: 600;
  background: transparent;
  color: var(--accent-color);
  border: 1px solid var(--accent-color);
  border-radius: 999px;
  padding: 2px 10px;
  cursor: pointer;
  margin-inline-start: 8px;
}

/* Phase 3 ext — dashboard aging bar + debt history surfaces */
.ov-debt-aging {
  margin-block: -8px 28px;
  padding: 14px 16px;
  border: 1px solid var(--hairline, var(--mbb-hairline));
  border-radius: var(--radius-md, 10px);
  background: var(--bg-secondary);
}
.ov-debt-aging__head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  color: var(--text-secondary);
  font-size: 0.82rem;
  font-weight: 600;
  margin-block-end: 10px;
}
.ov-debt-aging__head strong {
  color: var(--text-primary);
  font-variant-numeric: tabular-nums;
}
.ov-debt-aging__track {
  display: flex;
  overflow: hidden;
  inline-size: 100%;
  block-size: 12px;
  border-radius: 999px;
  background: var(--bg-tertiary);
}
.ov-debt-aging__seg {
  display: block;
  min-inline-size: 2px;
}
.ov-debt-aging__seg--bucket_0_30,
.ov-debt-aging__dot--bucket_0_30 { background: #8da386; }
.ov-debt-aging__seg--bucket_31_60,
.ov-debt-aging__dot--bucket_31_60 { background: #d6b36a; }
.ov-debt-aging__seg--bucket_61_90,
.ov-debt-aging__dot--bucket_61_90 { background: #d58b5d; }
.ov-debt-aging__seg--bucket_90_plus,
.ov-debt-aging__dot--bucket_90_plus { background: #b85f5f; }
.ov-debt-aging__legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  margin-block-start: 10px;
  color: var(--text-soft);
  font-size: 0.75rem;
}
.ov-debt-aging__legend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.ov-debt-aging__dot {
  inline-size: 8px;
  block-size: 8px;
  border-radius: 999px;
  flex: 0 0 auto;
}
.ledger-subtabs {
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  margin-block-end: 16px;
  border: 1px solid var(--mbb-hairline);
  border-radius: var(--radius-sm, 6px);
  background: var(--bg-secondary);
}
.ledger-subtab {
  font-family: inherit;
  border: 0;
  border-radius: var(--radius-sm, 6px);
  background: transparent;
  color: var(--text-secondary);
  padding: 7px 12px;
  font-size: 0.84rem;
  font-weight: 700;
  cursor: pointer;
}
.ledger-subtab.is-active {
  background: var(--bg-primary);
  color: var(--text-primary);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
}
.debt-history-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  padding-block-end: 14px;
  border-block-end: 1px solid var(--mbb-hairline);
}
.debt-history-chipbar,
.debt-history-datebar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}
.debt-history-chip {
  font-family: inherit;
  border: 1px solid var(--mbb-hairline);
  border-radius: 999px;
  background: var(--bg-secondary);
  color: var(--text-secondary);
  padding: 6px 12px;
  font-size: 0.8rem;
  font-weight: 700;
  cursor: pointer;
}
.debt-history-chip.is-active {
  border-color: var(--accent-color);
  background: color-mix(in srgb, var(--accent-color) 12%, var(--bg-primary));
  color: var(--accent-color);
}
.debt-history-date {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--text-soft);
  font-size: 0.78rem;
  font-weight: 700;
}
.debt-history-date input {
  font: inherit;
  color: var(--text-primary);
  background: var(--bg-primary);
  border: 1px solid var(--mbb-hairline);
  border-radius: var(--radius-sm, 6px);
  padding: 6px 8px;
}
.debt-history-table {
  display: grid;
  gap: 0;
  margin-block-start: 14px;
}
.debt-history-row {
  display: grid;
  grid-template-columns: minmax(96px, 0.8fr) minmax(130px, 1fr) minmax(116px, 0.9fr) minmax(180px, 1.4fr) minmax(90px, 0.7fr);
  gap: 12px;
  align-items: center;
  padding: 10px 12px;
  border-block-end: 1px solid var(--mbb-hairline);
  font-size: 0.86rem;
}
.debt-history-row--head {
  background: var(--bg-tertiary);
  border-radius: var(--radius-sm, 6px);
  border-block-end: 0;
  color: var(--text-secondary);
  font-size: 0.74rem;
  font-weight: 800;
  text-transform: uppercase;
}
.debt-history-client,
.debt-history-amount {
  color: var(--text-primary);
  font-weight: 700;
}
.debt-history-amount {
  font-variant-numeric: tabular-nums;
}
.debt-history-date,
.debt-history-note {
  color: var(--text-soft);
}
.debt-history-event {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 0.76rem;
  font-weight: 800;
  background: #f5ead3;
  color: #7a5a1f;
}
.debt-history-event--payment {
  background: #dcebd8;
  color: #2f6a32;
}
.debt-history-event--settled {
  background: #d8e9f8;
  color: #1f4d7a;
}
.debt-history-empty {
  padding: 18px 14px;
  color: var(--text-soft);
  border: 1px dashed var(--mbb-hairline);
  border-radius: var(--radius-sm, 6px);
  background: var(--bg-secondary);
}
.debt-history-empty.is-error {
  color: #9f3f3f;
  border-color: #dba6a6;
}
.mb-ld-history {
  margin-block-start: 14px;
  border-block-start: 1px solid var(--mbb-hairline);
  padding-block-start: 12px;
}
.mb-ld-history__summary {
  cursor: pointer;
  color: var(--text-primary);
  font-size: 0.88rem;
  font-weight: 800;
}
.mb-ld-history__list {
  list-style: none;
  margin: 10px 0 0;
  padding: 0;
  display: grid;
  gap: 0;
}
.mb-ld-history__month {
  position: sticky;
  inset-block-start: 0;
  z-index: 1;
  margin-block: 10px 6px;
  padding: 4px 0;
  color: var(--text-soft);
  background: var(--bg-secondary);
  font-size: 0.74rem;
  font-weight: 800;
  text-transform: uppercase;
}
.mb-ld-history__item {
  display: grid;
  grid-template-columns: 28px minmax(76px, 0.6fr) minmax(0, 1fr) max-content;
  align-items: center;
  gap: 10px;
  padding: 8px 0;
  border-block-end: 1px solid var(--mbb-hairline);
}
.mb-ld-history__icon {
  inline-size: 28px;
  block-size: 28px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  background: #f5ead3;
}
.mb-ld-history__item--payment .mb-ld-history__icon { background: #dcebd8; }
.mb-ld-history__item--settled .mb-ld-history__icon { background: #d8e9f8; }
.mb-ld-history__date {
  color: var(--text-soft);
  font-size: 0.76rem;
  font-variant-numeric: tabular-nums;
}
.mb-ld-history__main {
  min-inline-size: 0;
  display: grid;
  gap: 2px;
}
.mb-ld-history__main strong {
  color: var(--text-primary);
  font-size: 0.84rem;
}
.mb-ld-history__main span {
  color: var(--text-soft);
  font-size: 0.78rem;
  overflow-wrap: anywhere;
}
.mb-ld-history__amount {
  color: var(--text-primary);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}
.mb-ld-history__empty {
  margin-block-start: 10px;
  color: var(--text-soft);
  font-size: 0.82rem;
}
.mb-ld-history__empty--error {
  color: #9f3f3f;
}
.mb-ld-history__show-all {
  margin-block-start: 10px;
  font: inherit;
  border: 1px solid var(--accent-color);
  border-radius: 999px;
  background: transparent;
  color: var(--accent-color);
  padding: 5px 12px;
  font-size: 0.8rem;
  font-weight: 800;
  cursor: pointer;
}

@media (max-width: 760px) {
  .debt-history-row {
    grid-template-columns: 1fr;
    gap: 4px;
  }
  .debt-history-row--head {
    display: none;
  }
  .mb-ld-history__item {
    grid-template-columns: 28px 1fr max-content;
  }
  .mb-ld-history__date {
    grid-column: 2;
  }
  .mb-ld-history__main {
    grid-column: 2 / span 2;
  }
  .mb-ld-history__amount {
    grid-column: 3;
    grid-row: 1;
  }
}
