/* Merchants CRM additions on top of the shared ChamPay stylesheet (app.css).
 * Same tokens; "changed" uses the warn family so it reads in both themes. */

:root {
  --changed: var(--warn);
  --changed-bg: var(--warn-bg);
  --changed-text: var(--warn-text);
}

.back {
  display: inline-flex; align-items: center; gap: var(--space-1);
  min-height: 32px; font-size: 0.85rem; font-weight: 600; margin-bottom: var(--space-1);
}
.hint-line { color: var(--text-muted); font-size: 0.82rem; margin: 0; }
.req { color: var(--danger-text); }
.grow { flex: 1; min-width: 0; }
.mono-sm { font-family: var(--mono); font-size: 0.8rem; word-break: break-all; }
.section-gap { margin-top: var(--space-4); }
.tight-list { margin: var(--space-1) 0 var(--space-2); padding-left: var(--space-5); }
.grid.tight { gap: 0 var(--space-4); }

a.stat { color: var(--text); }
a.stat:hover { text-decoration: none; border-color: var(--border-strong); }
.stats { margin-bottom: var(--space-4); }

/* ------------------------------------------------------------ change marks */

.card > header { flex-wrap: wrap; row-gap: var(--space-1); }
.mono-sm { word-break: normal; overflow-wrap: anywhere; }
.chip-outdated { background: var(--warn-bg); color: var(--warn-text); border-color: var(--warn); }

.chip-changed {
  background: var(--changed-bg); color: var(--changed-text);
  border-color: color-mix(in srgb, var(--changed) 45%, transparent);
}
tr.is-changed { background: color-mix(in srgb, var(--changed) 8%, transparent); }
tr.is-changed:hover { background: color-mix(in srgb, var(--changed) 13%, transparent); }
tr.is-changed > td:first-child { box-shadow: inset 3px 0 0 var(--changed); }

.is-changed-card { border-color: color-mix(in srgb, var(--changed) 55%, var(--border)); }
.is-changed-card > header { background: color-mix(in srgb, var(--changed) 10%, var(--surface-2)); }

.is-changed-field {
  background: color-mix(in srgb, var(--changed) 12%, transparent);
  box-shadow: inset 3px 0 0 var(--changed);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  padding: 2px var(--space-2);
  margin-left: calc(-1 * var(--space-2));
}
.was { display: block; font-size: 0.76rem; color: var(--changed-text); font-weight: 600; }
.changed-text { color: var(--changed-text); }

.changes-banner { align-items: flex-start; }
.change-list { list-style: none; margin: var(--space-2) 0 0; padding: 0; color: var(--text); }
.change-list li { padding: 3px 0; border-top: 1px dashed color-mix(in srgb, var(--changed) 30%, transparent); font-size: 0.86rem; }
.change-list .when { color: var(--changed-text); font-variant-numeric: tabular-nums; margin-right: var(--space-2); font-size: 0.78rem; }

.timeline li.unreviewed::before { background: var(--changed); border-color: var(--changed); }
.timeline li.activity { color: var(--text-muted); }

/* ------------------------------------------------------------------ forms */

.form-grid { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); margin-bottom: var(--space-4); }
.merchant-form > .card, form > .card { margin-bottom: var(--space-4); }
.form-actions { display: flex; gap: var(--space-2); flex-wrap: wrap; align-items: center; margin-top: var(--space-2); }
input[type="date"] {
  width: 100%; min-height: 40px; padding: var(--space-2) var(--space-3);
  background: var(--surface); color: var(--text);
  border: 1px solid var(--border-strong); border-radius: var(--radius-sm); font: inherit; font-size: 0.9rem;
}
input[aria-invalid="true"], textarea[aria-invalid="true"] { border-color: var(--danger); box-shadow: 0 0 0 1px var(--danger); }
.grid-pricing { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 0 var(--space-4); }

#dup-check:empty { display: none; }
#dup-check { margin-bottom: var(--space-2); }
.check-warn { margin-top: var(--space-2); background: var(--surface); color: var(--text); border-color: var(--warn); }

.provider-grid { display: grid; gap: var(--space-3); grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); align-items: start; }
.provider-box { margin: 0; padding: var(--space-2) var(--space-3) var(--space-3); background: var(--surface-2); }
.provider-box legend { font-size: 0.82rem; color: var(--text); }
.sol-table { font-size: 0.86rem; }
.sol-table thead th { background: transparent; position: static; padding: var(--space-1) var(--space-2); text-align: center; }
.sol-table thead th:first-child { text-align: left; }
.sol-table tbody th { text-align: left; font-weight: 600; padding: 0 var(--space-2); }
.sol-table td { padding: 0; text-align: center; border-bottom: 1px solid var(--border); }
.sol-table tbody tr:hover { background: var(--surface-3); }
.tick {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 44px; min-height: 40px; cursor: pointer;
}
.tick input { width: 18px; height: 18px; accent-color: var(--gold-hover); cursor: pointer; }
.na { font-size: 0.7rem; color: var(--text-faint); letter-spacing: 0.04em; }

/* ---------------------------------------------------------- merchant page */

.merchant-head h1 { text-transform: none; margin-bottom: var(--space-1); }
.merchant-grid { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
.kv dd { word-break: break-word; }
.url-list { list-style: none; margin: 0 0 var(--space-3); padding: 0; }
.url-list li { display: flex; align-items: center; gap: var(--space-2); padding: 3px 0; }
.url-list li .icon { color: var(--text-faint); }

.stage-select, .status-select { min-height: 40px; width: auto; font-weight: 600; }
.stage-form { display: inline-flex; }
.status-select { font-size: 0.82rem; min-height: 36px; }
.status-requested { border-color: var(--info); color: var(--info-text); }
.status-approved { border-color: var(--ok); color: var(--ok-text); }
.status-declined { border-color: var(--danger); color: var(--danger-text); }
.stage-live { border-color: var(--ok); color: var(--ok-text); }
.stage-lost { border-color: var(--danger); color: var(--danger-text); }
.stage-onboarding { border-color: var(--info); color: var(--info-text); }

.chip-stage-lead { background: var(--surface-3); color: var(--text-muted); border-color: var(--border); }
.chip-stage-onboarding { background: var(--info-bg); color: var(--info-text); border-color: color-mix(in srgb, var(--info) 35%, transparent); }
.chip-stage-live { background: var(--ok-bg); color: var(--ok-text); border-color: color-mix(in srgb, var(--ok) 35%, transparent); }
.chip-stage-lost { background: var(--danger-bg); color: var(--danger-text); border-color: color-mix(in srgb, var(--danger) 35%, transparent); }

.status-chip-new { background: var(--surface-3); color: var(--text-muted); border-color: var(--border); }
.status-chip-requested { background: var(--info-bg); color: var(--info-text); }
.status-chip-approved { background: var(--ok-bg); color: var(--ok-text); }
.status-chip-declined { background: var(--danger-bg); color: var(--danger-text); }

.chip-traffic-ftd { background: color-mix(in srgb, var(--gold) 22%, transparent); color: var(--text); border-color: color-mix(in srgb, var(--gold) 60%, transparent); }
.chip-traffic-trusted { background: var(--surface-3); color: var(--text); border-color: var(--border-strong); }
.chip-provider { background: var(--surface-2); color: var(--text); border-color: var(--border-strong); }
.chip-provider b { font-variant-numeric: tabular-nums; color: var(--text-muted); margin-left: 2px; }
.chip-override { background: var(--info-bg); color: var(--info-text); }
.provider-chips { display: flex; flex-wrap: wrap; gap: 4px; }
.entity-link { font-weight: 700; color: var(--text); }
.urls-cell { max-width: 260px; }

.pricing-cell { min-width: 260px; }
.price-summary { font-size: 0.84rem; }
.pricing-edit > summary { min-height: 32px; font-size: 0.8rem; color: var(--link); }
.pricing-form { display: grid; gap: 0 var(--space-3); grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); padding: var(--space-3); background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius-sm); }
.pricing-form .field { margin-bottom: var(--space-2); }
.pricing-form .btn, .pricing-form .hint-line { grid-column: 1 / -1; justify-self: start; }

/* credentials requests */
.requests { display: grid; gap: var(--space-3); grid-template-columns: repeat(auto-fit, minmax(360px, 1fr)); }
.request { border: 1px solid var(--border); border-radius: var(--radius); padding: var(--space-3) var(--space-4); background: var(--surface-2); position: relative; }
.request::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; border-radius: var(--radius) 0 0 var(--radius); background: var(--gold); }
.request.is-sent::before { background: var(--ok); }
.request > header { display: flex; justify-content: space-between; gap: var(--space-3); flex-wrap: wrap; align-items: flex-start; margin-bottom: var(--space-2); }
.request h3 { margin: 0; font-size: 1rem; }
.request .sent { color: var(--ok-text); font-weight: 600; display: inline-flex; align-items: center; gap: 3px; }
.request .subject { margin: 0 0 var(--space-2); font-size: 0.86rem; font-weight: 600; }
.request-body {
  margin: 0; white-space: pre-wrap; word-break: break-word;
  font-family: var(--mono); font-size: 0.8rem; line-height: 1.55;
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-sm);
  padding: var(--space-3); max-height: 360px; overflow: auto;
}
.attachment-line { display: flex; align-items: center; gap: var(--space-1); margin: var(--space-2) 0 0; font-size: 0.84rem; }

.agreement-ready .warn-line { display: flex; gap: var(--space-1); align-items: center; color: var(--warn-text); margin: var(--space-2) 0 0; }

/* agreement form */
.party-name { font-family: var(--display); font-size: 1.15rem; margin-bottom: var(--space-3); }
.attachments-table td { font-size: 0.84rem; }
.attachments-table td.is-override { background: var(--info-bg); color: var(--info-text); font-weight: 600; }

/* re-intake */
.proposal-table .new-value { font-weight: 600; }

/* providers board */
.provider-board { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(420px, 1fr)); align-items: start; }

.login-form { text-align: left; margin-top: var(--space-5); }
.login-form .btn { width: 100%; }
main:has(.login-shell) { padding: 0; max-width: none; }

@media (max-width: 720px) {
  .form-grid, .requests, .provider-board { grid-template-columns: 1fr; }
  .merchant-head .btn-row { width: 100%; }
}

/* ------------------------------------------------------- onboarding tracks */

.onboarding { margin-bottom: var(--space-4); }
.track-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.track { padding: var(--space-4); border-right: 1px solid var(--border); display: flex; flex-direction: column; gap: var(--space-2); }
.track:last-child { border-right: 0; }
.track h3 { display: flex; align-items: center; gap: var(--space-2); margin: 0; font-size: 0.8rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); }
.track .meta { margin: 0; }
.track.is-overdue, .cred-row.is-overdue { background: color-mix(in srgb, var(--danger) 7%, transparent); }
.cred-row { padding: var(--space-2); margin: 0 calc(-1 * var(--space-2)); border-radius: var(--radius-sm); border-bottom: 1px dashed var(--border); }
.cred-row:last-child { border-bottom: 0; }
.cred-head { display: flex; justify-content: space-between; align-items: center; gap: var(--space-2); }
.track-select { width: auto; min-width: 170px; min-height: 40px; font-weight: 600; }
.cred-row .track-select { min-width: 150px; min-height: 36px; font-size: 0.84rem; }

.alert-line { display: flex; gap: var(--space-2); align-items: flex-start; margin: 0; font-size: 0.82rem; line-height: 1.45; }
.alert-line .icon { margin-top: 2px; }
.alert-line.overdue { color: var(--danger-text); font-weight: 600; }
.alert-line.pending { color: var(--text-muted); }
.alert-line.done { color: var(--ok-text); }

/* status colours: in progress = info, waiting on someone = warn, done = ok */
.track-agreement-sent, .track-agreement-client_comments, .track-agreement-legal_review, .track-credentials-requested,
.track-integration-testing { border-color: var(--warn); color: var(--warn-text); }
.track-agreement-prepared, .track-credentials-received, .track-integration-in_progress { border-color: var(--info); color: var(--info-text); }
.track-agreement-signed, .track-credentials-sent, .track-integration-live { border-color: var(--ok); color: var(--ok-text); }

.track-chip { background: var(--surface-3); color: var(--text-muted); border-color: var(--border); }
.track-chip.track-agreement-sent, .track-chip.track-agreement-client_comments, .track-chip.track-agreement-legal_review,
.track-chip.track-credentials-requested, .track-chip.track-integration-testing { background: var(--warn-bg); }
.track-chip.track-agreement-prepared, .track-chip.track-credentials-received,
.track-chip.track-integration-in_progress { background: var(--info-bg); }
.track-chip.track-agreement-signed, .track-chip.track-credentials-sent,
.track-chip.track-integration-live { background: var(--ok-bg); }
.track-chip.is-overdue { background: var(--danger-bg); color: var(--danger-text); border-color: var(--danger); font-weight: 700; }

tr.is-overdue > td:first-child { box-shadow: inset 3px 0 0 var(--danger); }

/* ------------------------------------------------------------ notifications */

.bell { position: relative; }
.bell-count {
  position: absolute; top: 0; right: 0; transform: translate(30%, -20%);
  min-width: 18px; height: 18px; padding: 0 5px; border-radius: var(--radius-pill);
  background: var(--danger); color: #fff; font-size: 0.68rem; font-weight: 700;
  display: inline-flex; align-items: center; justify-content: center; font-variant-numeric: tabular-nums;
}
:root[data-theme="dark"] .bell-count { color: #1c1c1c; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .bell-count { color: #1c1c1c; } }

.notice-list { list-style: none; margin: 0; padding: 0; }
.notice { display: flex; gap: var(--space-3); align-items: flex-start; padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--border); }
.notice:last-child { border-bottom: 0; }
.notice.is-unread { background: color-mix(in srgb, var(--danger) 6%, transparent); box-shadow: inset 3px 0 0 var(--danger); }
.notice-icon { display: inline-flex; width: 32px; height: 32px; border-radius: 50%; align-items: center; justify-content: center; background: var(--surface-3); color: var(--text-muted); flex: none; }
.notice-title { font-weight: 700; color: var(--text); }
.notice p { margin: 2px 0 0; }

@media (max-width: 720px) {
  .track { border-right: 0; border-bottom: 1px solid var(--border); }
}

/* agreement comment rounds */
.agr-status { display: flex; gap: var(--space-2); flex-wrap: wrap; margin: 0; }
.round-chip { background: var(--surface-3); color: var(--text); border-color: var(--border-strong); font-variant-numeric: tabular-nums; }
.agr-next { display: flex; flex-direction: column; gap: var(--space-2); }
.agr-next input { min-height: 36px; font-size: 0.84rem; }
.btn-next { border-color: var(--gold); background: color-mix(in srgb, var(--gold) 18%, var(--surface)); }
.btn-next:hover { background: color-mix(in srgb, var(--gold) 30%, var(--surface)); }
.agr-history > summary, .agr-manual > summary { min-height: 32px; font-size: 0.8rem; color: var(--link); }
.agr-manual > summary { color: var(--text-muted); font-weight: 500; }
.agr-steps { list-style: none; margin: 0; padding: 0; font-size: 0.82rem; }
.agr-steps li { padding: 4px 0; border-bottom: 1px dashed var(--border); }
.agr-steps li:last-child { border-bottom: 0; }
.agr-steps .when { color: var(--text-muted); font-variant-numeric: tabular-nums; margin-right: var(--space-1); }

/* per-solution pricing on the intake/edit form */
.price-card { display: none; margin: 0; padding: var(--space-3) var(--space-4); background: var(--surface-2); }
.price-card legend { display: inline-flex; gap: var(--space-1); align-items: center; font-size: 0.85rem; color: var(--text); text-transform: none; letter-spacing: 0; font-weight: 400; }
.price-card.has-error { border-color: var(--danger); }
.price-cards { display: grid; gap: var(--space-3); }
.price-grid { display: grid; gap: 0 var(--space-3); grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }
.price-grid .field { margin-bottom: var(--space-2); }
.copy-terms { margin-top: var(--space-1); }
.pricing-empty { display: block; margin: 0; }
.merchant-form:has(input[name="sol"]:checked) .pricing-empty { display: none; }

/* solutions & pricing table on the merchant page */
.solutions-table th.sol-name { text-align: left; font-weight: 400; white-space: nowrap; }
.solutions-table td.price-val { font-size: 0.84rem; min-width: 110px; }
.solutions-table td.price-val.is-changed-field { margin-left: 0; border-radius: 0; }
.solutions-table tr.edit-row td { padding-top: 0; }
.solutions-table tr.edit-row:hover { background: transparent; }

/* internal provider routing inside each solution card */
.routes { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2);
          margin: var(--space-2) 0; padding: var(--space-2) var(--space-3);
          border: 1px dashed var(--border-strong); border-radius: var(--radius-sm); background: var(--surface); }
.routes.has-error { border-color: var(--danger); }
.routes .error { flex-basis: 100%; margin: 0; }
.routes-label { display: inline-flex; align-items: center; gap: var(--space-1); font-size: 0.74rem; font-weight: 700;
                letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-muted); margin-right: var(--space-1); }
.check-sm { min-height: 36px; font-size: 0.82rem; }
.product-matrix { max-width: 420px; }
.internal-tag { font-size: 0.7rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-faint); }

/* finance */
.chip-active-week { background: color-mix(in srgb, var(--gold) 30%, transparent); color: var(--text); border-color: var(--gold); }
.finance-table td { font-size: 0.84rem; }
.finance-table tr.is-active-week { background: color-mix(in srgb, var(--gold) 16%, transparent); }
.finance-table tr.is-active-week:hover { background: color-mix(in srgb, var(--gold) 24%, transparent); }
.finance-table tr.is-active-week > td:first-child { box-shadow: inset 4px 0 0 var(--gold); }
.finance-table tr.is-unsigned td.price-val { color: var(--text-muted); font-style: italic; }
.pending-val { display: block; font-size: 0.76rem; font-weight: 700; color: var(--warn-text); }
.volumes-help p { font-size: 0.86rem; }
.volumes-help code { overflow-wrap: anywhere; }
input[type="file"] { min-height: 40px; font: inherit; font-size: 0.85rem; color: var(--text); }

/* tariffs on the merchant page */
.sub-h { margin: var(--space-5) 0 var(--space-3); font-size: 0.8rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); }
.lock-line { display: flex; align-items: center; gap: var(--space-1); margin: 0; font-size: 0.8rem; color: var(--text-muted); }
.change-card.change-signed::before { background: var(--ok); }
.change-card.change-cancelled::before { background: var(--border-strong); }
.change-card.change-cancelled { opacity: 0.75; }
.change-items { list-style: none; margin: var(--space-2) 0 0; padding: 0; font-size: 0.86rem; }
.change-items li { padding: var(--space-2) 0; border-top: 1px dashed var(--border); }
.diff-line { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-3); margin-top: 2px; }
.diff { font-size: 0.8rem; }
.tariff-card { margin: 0; padding: var(--space-3) var(--space-4); background: var(--surface-2); }
.tariff-card.has-error { border-color: var(--danger); }
.tariff-card legend { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; text-transform: none; letter-spacing: 0; font-weight: 400; color: var(--text); font-size: 0.88rem; }
.tick-inline { display: inline-flex; align-items: center; gap: var(--space-2); min-height: 40px; cursor: pointer; }
.tick-inline input { width: 18px; height: 18px; accent-color: var(--gold-hover); }
.was-hint { font-size: 0.74rem; }
.tariff-card:has(input[name="change"]:not(:checked)) .price-grid { opacity: 0.55; }
input[readonly] { background: var(--surface-3); color: var(--text-muted); cursor: not-allowed; }

/* reports & settlements */
.payout-chip-overdue { background: var(--danger-bg); color: var(--danger-text); border-color: var(--danger); }
.payout-chip-due_today { background: var(--warn-bg); color: var(--warn-text); border-color: var(--warn); }
.payout-chip-upcoming { background: var(--info-bg); color: var(--info-text); }
.payout-chip-done { background: var(--ok-bg); color: var(--ok-text); }
.payout-chip-untracked { background: var(--surface-3); color: var(--text-faint); }
.payout-chip-carried { background: var(--surface-3); color: var(--text-muted); border-style: dashed; }
.payout-table tr.payout-carried td { color: var(--text-muted); }
.payout-table tr.payout-overdue { background: color-mix(in srgb, var(--danger) 7%, transparent); }
.payout-table tr.payout-overdue > td:first-child { box-shadow: inset 3px 0 0 var(--danger); }
.payout-table tr.payout-due_today { background: color-mix(in srgb, var(--warn) 9%, transparent); }
.payout-table tr.payout-due_today > td:first-child { box-shadow: inset 3px 0 0 var(--warn); }
.payout-table tr.payout-done td { color: var(--text-muted); }
.payout-kind-settlement { background: color-mix(in srgb, var(--gold) 22%, transparent); border-color: color-mix(in srgb, var(--gold) 60%, transparent); color: var(--text); }
.payout-kind-report { background: var(--surface-3); border-color: var(--border-strong); color: var(--text); }
.done-form { display: flex; gap: var(--space-2); align-items: center; }
.done-form input[type="text"] { min-height: 32px; font-size: 0.8rem; min-width: 140px; }
.inline-done { display: inline; }
.schedule-body { display: grid; gap: var(--space-4); grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
@media (max-width: 900px) { .schedule-body { grid-template-columns: 1fr; } }
.schedule-form { display: grid; gap: 0 var(--space-3); grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); align-items: end; }
.schedule-form .field { margin-bottom: var(--space-3); }
.schedule-form .check { margin-bottom: var(--space-3); }
.schedule-form .wide-field { grid-column: 1 / -1; display: flex; gap: var(--space-3); align-items: center; }
.schedule-form .wide-field.field { display: flex; flex-direction: column; align-items: stretch; }

/* ---------------------------------------------------------- provider side */
h1.no-caps { text-transform: none; }
.provider-cards { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); margin-bottom: var(--space-5); }
a.provider-card { color: var(--text); display: block; transition: border-color 160ms ease-out, transform 160ms ease-out; }
a.provider-card:hover { text-decoration: none; border-color: var(--gold); transform: translateY(-1px); }
a.provider-card header h2 { font-family: var(--display); font-size: 1.15rem; text-transform: none; letter-spacing: 0.01em; color: var(--text); }
.kv-tight { gap: 4px var(--space-3); font-size: 0.84rem; }
.warn-text { color: var(--warn-text); font-weight: 600; }
.pag-signed { background: var(--ok-bg); color: var(--ok-text); }
.pag-negotiation { background: var(--warn-bg); color: var(--warn-text); }
.pag-terminated { background: var(--surface-3); color: var(--text-faint); }

.owed-table tr.has-outstanding > td:first-child { box-shadow: inset 3px 0 0 var(--warn); }
.item-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 4px; }
.item-form { display: inline; margin: 0; }
.item-chip {
  display: inline-flex; align-items: center; gap: 5px; min-height: 32px; padding: 0 10px;
  border-radius: var(--radius-pill); border: 1px dashed var(--border-strong);
  background: var(--surface); color: var(--text-muted); font: inherit; font-size: 0.78rem; cursor: pointer;
}
.item-chip:hover { border-color: var(--gold); color: var(--text); }
.item-chip.is-received { border-style: solid; border-color: color-mix(in srgb, var(--ok) 50%, transparent); background: var(--ok-bg); color: var(--ok-text); }

.grid-form { display: grid; gap: 0 var(--space-3); grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); align-items: end; margin-top: var(--space-3); }
.grid-form .field { margin-bottom: var(--space-3); }
.grid-form .check { margin-bottom: var(--space-3); }
.grid-form .span-2 { grid-column: 1 / -1; }
.grid-form textarea { min-height: 70px; }
tr.is-closed td { color: var(--text-faint); }
.preq-done { border-color: var(--ok); color: var(--ok-text); }
.preq-rejected { border-color: var(--border-strong); color: var(--text-faint); }
.preq-sent { border-color: var(--warn); color: var(--warn-text); }
.preq-answered { border-color: var(--info); color: var(--info-text); }

.psettle-table td { font-size: 0.84rem; }
.psettle-chip-expected { background: var(--info-bg); color: var(--info-text); }
.psettle-chip-due_today { background: var(--warn-bg); color: var(--warn-text); border-color: var(--warn); }
.psettle-chip-overdue { background: var(--danger-bg); color: var(--danger-text); border-color: var(--danger); }
.psettle-chip-received { background: var(--ok-bg); color: var(--ok-text); }
.psettle-table tr.psettle-overdue > td:first-child { box-shadow: inset 3px 0 0 var(--danger); }
.psettle-table tr.psettle-due_today > td:first-child { box-shadow: inset 3px 0 0 var(--warn); }
.psettle-table tr.psettle-received td { color: var(--text-muted); }
.receive-box > summary { min-height: 32px; font-size: 0.8rem; }
.receive-form { display: grid; gap: 6px; grid-template-columns: 1fr auto; min-width: 230px; }
.receive-form input, .receive-form select { min-height: 32px; font-size: 0.8rem; }
.receive-form input[type="date"], .receive-form input[name="reference"], .receive-form button { grid-column: 1 / -1; }
.day-totals { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.day-total { display: flex; flex-direction: column; padding: var(--space-2) var(--space-3); border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface-2); font-size: 0.8rem; min-width: 120px; }
.day-total b { font-variant-numeric: tabular-nums; font-size: 0.95rem; }
.day-total.is-today { border-color: var(--warn); }
.day-total.is-late { border-color: var(--danger); }
.fx-table { max-width: 520px; }
.psettle-table td.num, .ptariff-table td.num { white-space: nowrap; }

/* -------------------------------------------------------------- analytics */
.analytics-table td, .analytics-table th { font-size: 0.85rem; }
.analytics-table tbody.merchant-group { border-top: 2px solid var(--border-strong); }
.analytics-table tr.merchant-row { background: var(--surface-2); }
.analytics-table tr.merchant-row th { text-align: left; font-weight: 400; padding: var(--space-3); }
.analytics-table tbody.has-issue tr.merchant-row th { box-shadow: inset 3px 0 0 var(--danger); }
.analytics-table .sol-cell { padding-left: var(--space-5); white-space: nowrap; }
.analytics-table tr.sol-bad { background: color-mix(in srgb, var(--danger) 6%, transparent); }
.ar-val { display: inline-flex; align-items: center; gap: 3px; font-weight: 700; font-variant-numeric: tabular-nums; }
.ar-bad { color: var(--danger-text); }
.ar-ok { color: var(--ok-text); }
.ar-low_sample { color: var(--text-muted); }
.delta { font-variant-numeric: tabular-nums; font-weight: 600; white-space: nowrap; }
.delta.is-down { color: var(--danger-text); }
.delta.is-up { color: var(--ok-text); }
.analytics-table td.num { white-space: nowrap; }

/* sparkline: muted line, accent on the latest point, dashed threshold */
.spark { display: block; overflow: visible; }
.spark-line { fill: none; stroke: var(--text-faint); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.spark-threshold { stroke: var(--border-strong); stroke-width: 1; stroke-dasharray: 3 3; }
.spark-dot { fill: var(--text-faint); }
.spark-dot.is-last { fill: var(--gold-hover); stroke: var(--surface); stroke-width: 2; }
.spark-dot.is-bad { fill: var(--danger); }
.spark-hit { fill: transparent; cursor: default; }
.spark-hit:hover { fill: color-mix(in srgb, var(--text) 10%, transparent); }

.alert-list { list-style: none; margin: 0; padding: 0; }
.alert-item { display: flex; gap: var(--space-3); align-items: flex-start; padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--border); flex-wrap: wrap; }
.alert-item:last-child { border-bottom: 0; }
.alert-item.is-acked { opacity: 0.75; }
.alert-chip { background: var(--danger-bg); color: var(--danger-text); border-color: var(--danger); }
.alert-item p { margin: 2px 0 0; }
.ack-form { display: flex; gap: var(--space-2); align-items: center; }
.ack-form input { min-height: 32px; font-size: 0.8rem; min-width: 170px; }
.trend-table td, .trend-table th { font-size: 0.82rem; }
.trend-table th[scope="row"] { text-align: left; white-space: nowrap; color: var(--text-muted); font-weight: 600; }
.trend-table .is-current { background: color-mix(in srgb, var(--gold) 12%, transparent); font-weight: 700; }
.trend-table td.is-bad { color: var(--danger-text); font-weight: 700; }

/* provider settlement reconciliation */
.psettle-chip-received { background: var(--warn-bg); color: var(--warn-text); border-color: var(--warn); }
.psettle-chip-investigating { background: var(--danger-bg); color: var(--danger-text); border-color: var(--danger); }
.psettle-chip-adjusted { background: var(--info-bg); color: var(--info-text); }
.psettle-chip-reconciled { background: var(--ok-bg); color: var(--ok-text); border-color: color-mix(in srgb, var(--ok) 50%, transparent); }
.psettle-table tr.psettle-reconciled > td:first-child { box-shadow: inset 3px 0 0 var(--ok); }
.psettle-table tr.psettle-reconciled td { color: var(--text-muted); }
.psettle-table tr.psettle-investigating > td:first-child { box-shadow: inset 3px 0 0 var(--danger); }
.psettle-table tr.psettle-received > td:first-child { box-shadow: inset 3px 0 0 var(--warn); }
.review-form { display: flex; flex-direction: column; gap: 6px; min-width: 240px; }
.review-form input[type="text"] { min-height: 32px; font-size: 0.8rem; }
.review-form .outcome { margin: 0; padding: 4px 8px; display: flex; flex-direction: column; gap: 4px; }
.review-form .outcome legend { font-size: 0.68rem; }
.outcome-ok:has(input:checked) { border-color: var(--ok); background: var(--ok-bg); }
.outcome-low:has(input:checked) { border-color: var(--danger); background: var(--danger-bg); }
.alert-item .grow { flex: 1 1 260px; }
.ack-form { flex: 0 1 auto; flex-wrap: wrap; }

/* --------------------------------------------------- merchant requests desk */
.type-picker { display: grid; gap: var(--space-2); grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); margin-bottom: var(--space-4); }
.type-card { display: flex; flex-direction: column; gap: 4px; padding: var(--space-3); border: 1px solid var(--border-strong);
             border-radius: var(--radius); background: var(--surface-2); cursor: pointer; position: relative; }
.type-card input { position: absolute; top: 12px; right: 12px; accent-color: var(--gold-hover); width: 18px; height: 18px; }
.type-card b { padding-right: 24px; }
.type-card .meta { font-size: 0.78rem; }
.type-card .route-to { font-size: 0.76rem; color: var(--link); font-weight: 600; }
.type-card:has(input:checked) { border-color: var(--gold); background: color-mix(in srgb, var(--gold) 14%, var(--surface)); }
.type-card:hover { border-color: var(--gold); }
.type-fields { display: none; margin: 0 0 var(--space-3); padding: var(--space-3); }
.ticket-status-new { background: var(--info-bg); color: var(--info-text); }
.ticket-status-in_progress { background: var(--warn-bg); color: var(--warn-text); }
.ticket-status-waiting_merchant, .ticket-status-waiting_provider { background: var(--surface-3); color: var(--text-muted); }
.ticket-status-resolved { background: var(--ok-bg); color: var(--ok-text); border-color: var(--ok); }
.ticket-status-closed { background: var(--surface-3); color: var(--text-faint); }
.prio-chip-urgent { background: var(--danger-bg); color: var(--danger-text); border-color: var(--danger); }
.prio-chip-high { background: var(--warn-bg); color: var(--warn-text); border-color: var(--warn); }
.prio-chip-normal { background: var(--surface-3); color: var(--text-muted); }
.desk-table tr.prio-urgent > td:first-child { box-shadow: inset 3px 0 0 var(--danger); }
.big-chip { font-size: 0.85rem; padding: 4px 14px; }
.status-steps { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.status-steps input { flex-basis: 100%; min-height: 36px; font-size: 0.84rem; }
.comment-form { display: flex; flex-direction: column; gap: var(--space-2); align-items: flex-start; margin-top: var(--space-3); }
.comment-body { background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: var(--space-2) var(--space-3); margin-top: 4px; }
.notice .for-you { background: var(--gold); color: var(--accent-ink); }
.nav-count { display: inline-flex; min-width: 18px; height: 18px; padding: 0 5px; border-radius: var(--radius-pill);
             background: var(--gold); color: var(--ink); font-size: 0.68rem; font-weight: 700; align-items: center; justify-content: center; }

/* ---------------------------------------------------------------- monitoring */
.nav-count-alert { background: var(--danger); color: #fff; }
.monitor-state { display: inline-flex; align-items: center; gap: 6px; font-size: 1.5rem; }
.kind-strip { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: var(--space-4); }
.kind-chip { background: var(--surface-2); color: var(--text); border-color: var(--border-strong); }
.monitor-feed { list-style: none; margin: 0; padding: 0; }
.mev { padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--border); display: flex; flex-direction: column; gap: 6px; }
.mev:last-child { border-bottom: 0; }
.mev.sev-critical { box-shadow: inset 3px 0 0 var(--danger); }
.mev.sev-warning { box-shadow: inset 3px 0 0 var(--warn); }
.mev.is-acked { opacity: 0.7; box-shadow: none; }
.mev-head { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; }
.mev-title { flex: 1 1 240px; }
.mev-merchants { display: flex; flex-wrap: wrap; gap: 4px; }
.unmatched-chip { border-style: dashed; color: var(--text-muted); background: transparent; border-color: var(--border-strong); }
.mev-text { white-space: pre-wrap; font-family: var(--font); font-size: 0.85rem; margin: 0 0 var(--space-2); }
.mev-examples td { font-size: 0.8rem; }
.sev-chip-critical { background: var(--danger-bg); color: var(--danger-text); border-color: var(--danger); }
.sev-chip-warning { background: var(--warn-bg); color: var(--warn-text); border-color: var(--warn); }
.sev-chip-info { background: var(--info-bg); color: var(--info-text); }
.alias-list { list-style: none; margin: 0; padding: 0; }
.alias-list li { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; justify-content: space-between; padding: var(--space-2) 0; border-bottom: 1px dashed var(--border); }
.alias-list li:last-child { border-bottom: 0; }
.live-table td { font-size: 0.85rem; }
.live-table tr.is-new-live > td:first-child { box-shadow: inset 3px 0 0 var(--ok); }

/* -------------------------------------------------------------------- leads */
.pipeline { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: var(--space-2); margin-bottom: var(--space-4); }
.pipe-step { display: flex; flex-direction: column; padding: var(--space-3); border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); color: var(--text); }
.pipe-step:hover { text-decoration: none; border-color: var(--gold); }
.pipe-step b { font-family: var(--display); font-size: 1.6rem; font-weight: 500; line-height: 1.1; }
.pipe-step span { font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); font-weight: 600; }
.pipe-accepted { border-color: color-mix(in srgb, var(--ok) 50%, var(--border)); }
.lead-chip-new { background: var(--surface-3); color: var(--text-muted); }
.lead-chip-proposal_sent { background: var(--info-bg); color: var(--info-text); }
.lead-chip-negotiating { background: var(--warn-bg); color: var(--warn-text); }
.lead-chip-accepted { background: var(--ok-bg); color: var(--ok-text); border-color: var(--ok); }
.lead-chip-converted { background: color-mix(in srgb, var(--gold) 22%, transparent); color: var(--text); border-color: var(--gold); }
.lead-chip-lost { background: var(--surface-3); color: var(--text-faint); }
.leads-table tr.lead-accepted > td:first-child { box-shadow: inset 3px 0 0 var(--ok); }
.leads-table tr.lead-lost td { color: var(--text-faint); }
.prop-chip-draft { background: var(--surface-3); color: var(--text-muted); }
.prop-chip-sent { background: var(--info-bg); color: var(--info-text); }
.prop-chip-changes_requested { background: var(--warn-bg); color: var(--warn-text); }
.prop-chip-accepted { background: var(--ok-bg); color: var(--ok-text); border-color: var(--ok); }
.prop-chip-declined { background: var(--danger-bg); color: var(--danger-text); }
.prop-chip-superseded { background: transparent; color: var(--text-faint); border-color: var(--border); }
.steps { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: var(--space-4); }
.step { padding: 6px 12px; border-radius: var(--radius-pill); border: 1px solid var(--border); font-size: 0.78rem; font-weight: 600; color: var(--text-faint); background: var(--surface); }
.step.is-done { color: var(--ok-text); border-color: color-mix(in srgb, var(--ok) 40%, transparent); background: var(--ok-bg); }
.step.is-now { color: var(--accent-ink); background: var(--gold); border-color: var(--gold); }
.step.is-lost { color: var(--danger-text); border-color: var(--danger); background: var(--danger-bg); }
.proposal { padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--border); }
.proposal:last-child { border-bottom: 0; }
.proposal > header { display: flex; justify-content: space-between; gap: var(--space-3); flex-wrap: wrap; margin-bottom: var(--space-2); }
.proposal h3 { margin: 0; display: flex; gap: var(--space-2); align-items: center; flex-wrap: wrap; font-size: 0.95rem; }
.proposal.proposal-superseded { opacity: 0.6; }
.proposal.proposal-accepted { box-shadow: inset 3px 0 0 var(--ok); }
.prop-items td, .prop-items th { font-size: 0.8rem; }
.prop-items th[scope="row"] { text-align: left; font-weight: 600; }
.feedback { display: flex; gap: var(--space-2); align-items: flex-start; margin: var(--space-2) 0; padding: var(--space-2) var(--space-3); background: var(--warn-bg); color: var(--warn-text); border-radius: var(--radius-sm); font-size: 0.85rem; }
.prop-actions { margin-top: var(--space-3); }
.prop-answer { display: flex; flex-direction: column; gap: var(--space-2); margin-top: var(--space-3); }
.prop-answer input { min-height: 36px; font-size: 0.84rem; }
.interested { margin: 0 0 var(--space-3); }
.topbar .topbar-secondary { background: transparent; color: #f2f0eb; border-color: #5a5852; border-radius: var(--radius-pill); }
.topbar .topbar-secondary:hover { background: #2e2e2c; color: #fff; }
@media (max-width: 720px) { .topbar .topbar-secondary { display: none; } }

/* --- offer import (New merchant) --- */
.offer-import { margin-bottom: var(--space-4); }
.offer-import > summary { list-style: none; cursor: pointer; display: flex; flex-wrap: wrap; align-items: center;
  justify-content: space-between; gap: var(--space-2) var(--space-4); padding: var(--space-3) var(--space-4); min-height: 48px; }
.offer-import > summary::-webkit-details-marker { display: none; }
.offer-import > summary > span:first-child { display: inline-flex; align-items: center; gap: var(--space-2); }
.offer-import[open] > summary { border-bottom: 1px solid var(--border); }
.offer-import textarea { font-family: var(--mono); font-size: 0.85rem; line-height: 1.55; }
.offer-import-row { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--space-3); }
.offer-import-row .field { flex: 1 1 240px; margin: 0; }
.offer-import-form .hint-line { margin-bottom: 0; }
.offer-summary { margin-bottom: var(--space-4); }
.offer-warnings { margin: var(--space-2) 0 0; padding-left: 18px; }

/* --- ownership, terminals, go-live handover --- */
.owner-chip { margin-left: auto; font-size: 0.7rem; letter-spacing: 0.04em; text-transform: none; font-weight: 600;
  padding: 2px 8px; border-radius: var(--radius-pill); border: 1px solid var(--border-strong); color: var(--text); }
.parallel-note { display: flex; gap: var(--space-2); align-items: flex-start; margin: 0; padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--border); font-size: 0.86rem; color: var(--text-muted); }
.parallel-note .icon { margin-top: 2px; color: var(--gold); }
.terminal-list { list-style: none; margin: var(--space-2) 0 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.terminal-list li { display: flex; flex-wrap: wrap; align-items: center; gap: 4px var(--space-2); font-size: 0.84rem; }
.terminal-list li form { margin-left: auto; }
.terminal-list li.is-inactive .mono-sm { text-decoration: line-through; color: var(--text-muted); }
.terminal-add > summary { min-height: 32px; font-size: 0.8rem; color: var(--link); font-weight: 500; }
.terminal-form { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: flex-end; }
.terminal-form .field { margin: 0; flex: 1 1 140px; }
.terminal-form .field.narrow { flex: 0 1 80px; }
.handover.is-pending { border-color: color-mix(in srgb, var(--gold) 55%, var(--border)); }
.handover-body { display: grid; grid-template-columns: minmax(0, 2fr) minmax(240px, 1fr); gap: var(--space-5); }
.handover-body h3 { font-size: 0.8rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted);
  margin: 0 0 var(--space-2); display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap; }
.handover-side { display: flex; flex-direction: column; gap: var(--space-4); }
.handover-side p { margin: 0 0 var(--space-2); font-size: 0.88rem; }
.handover-table { font-size: 0.82rem; }
.handover-table th[scope="row"] { white-space: nowrap; }
.handover-pending { margin-bottom: var(--space-4); }
@media (max-width: 900px) { .handover-body { grid-template-columns: 1fr; } }
.notice-body { white-space: pre-line; }

/* --- overview --- */
.overview-search input { min-width: 220px; min-height: 40px; }
.side-switch { display: inline-flex; gap: 4px; padding: 4px; margin-bottom: var(--space-4); border: 1px solid var(--border);
  border-radius: var(--radius-pill); background: var(--surface); flex-wrap: wrap; }
.side-switch a { display: inline-flex; align-items: center; gap: var(--space-2); min-height: 40px; padding: 0 var(--space-4);
  border-radius: var(--radius-pill); color: var(--text-muted); font-weight: 600; font-size: 0.88rem; }
.side-switch a:hover { color: var(--text); text-decoration: none; background: var(--surface-3); }
.side-switch a[aria-current] { background: var(--gold); color: var(--accent-ink); }
.status-pills { display: flex; flex-wrap: wrap; gap: var(--space-2); padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--border); }
.status-pills a { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 0 var(--space-3);
  border: 1px solid var(--border); border-radius: var(--radius-pill); font-size: 0.8rem; color: var(--text-muted); }
.status-pills a:hover { text-decoration: none; color: var(--text); border-color: var(--border-strong); }
.status-pills a[aria-current] { border-color: var(--gold); color: var(--text); background: color-mix(in srgb, var(--gold) 14%, transparent); }
.ov-table td { vertical-align: top; }
.ov-table tr.ov-row-danger > td:first-child { box-shadow: inset 3px 0 0 var(--danger); }
.ov-table tr.ov-row-warn > td:first-child { box-shadow: inset 3px 0 0 var(--warn); }
.situation { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; min-width: 240px; }
.sit { font-size: 0.82rem; line-height: 1.4; }
.sit::before { content: ""; display: inline-block; width: 7px; height: 7px; border-radius: 50%; margin-right: 6px; vertical-align: 1px; background: var(--text-faint); }
.sit-danger { color: var(--danger-text); } .sit-danger::before { background: var(--danger); }
.sit-warn { color: var(--warn-text); } .sit-warn::before { background: var(--warn); }
.sit-info::before { background: var(--info); }
.sit-ok { color: var(--ok-text); } .sit-ok::before { background: var(--ok); }
.sit-muted { color: var(--text-muted); }
.trend { font-weight: 700; font-size: 0.86rem; }
.trend-up { color: var(--ok-text); } .trend-down { color: var(--danger-text); }
.fin-table td.price-val { font-size: 0.82rem; min-width: 96px; }
.fin-table tr.is-unsigned td.price-val { color: var(--text-muted); font-style: italic; }
.fin-group tr.fin-merchant th { text-align: left; background: var(--surface-3); padding: var(--space-2) var(--space-3);
  font-weight: 500; text-transform: none; letter-spacing: 0; font-size: 0.86rem; }
.fin-group tr.fin-merchant th > * { margin-right: var(--space-2); }
.fin-group tr.fin-merchant .entity-link { font-weight: 700; }
/* Active terminals: what finance reconciles against */
.term-cell { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 3px; min-width: 150px; }
.term-cell li { font-size: 0.8rem; white-space: nowrap; }
.term-active { padding: 1px 8px; border-radius: var(--radius-sm); border: 1px solid color-mix(in srgb, var(--ok) 55%, transparent);
  background: var(--ok-bg); color: var(--ok-text); }
.term-active .meta { color: inherit; opacity: 0.85; }
.term-inactive .mono-sm { text-decoration: line-through; color: var(--text-faint); }
.chip.term-count { background: var(--ok-bg); color: var(--ok-text); border-color: var(--ok); }
tr.has-terminal > td:first-child { box-shadow: inset 3px 0 0 var(--ok); }

/* --- structured pricing controls (partials/pricing_fields.html) --- */
.pf { min-width: 0; }
.pf-label { font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); }
.pf-label .hint { text-transform: none; letter-spacing: 0; font-weight: 400; }
.pf-controls { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: flex-end; }
.pf-controls input, .pf-controls select { min-height: 40px; }
.pf-controls input[type="number"] { width: 100%; min-width: 0; }
.pf-sub { display: inline-flex; flex-direction: column; gap: 2px; flex: 1 1 84px; min-width: 0; }
.pf-sub > label, .pf-sublabel { font-size: 0.72rem; color: var(--text-muted); }
.pf-sub.pf-min { flex-direction: row; align-items: center; flex: 2 1 190px; gap: var(--space-1); }
.pf-sub.pf-min label { white-space: nowrap; }
.pf-sub.pf-min input { flex: 1 1 80px; }
.unit-input { display: inline-flex; align-items: center; gap: var(--space-1); flex: 1 1 90px; min-width: 0; }
.unit-input .unit { font-size: 0.82rem; color: var(--text-muted); white-space: nowrap; }
select.pf-cur { flex: 0 0 auto; width: auto; }
.pf.is-missing .pf-controls input, .pf.is-missing .pf-controls select { border-color: var(--danger); }
.pf-other { margin-top: 4px; }
.pf-other > summary { font-size: 0.74rem; color: var(--link); cursor: pointer; min-height: 24px; display: inline-flex; align-items: center; }
.pf-other[open] > summary { margin-bottom: 4px; }
.pf-other .hint { display: block; font-size: 0.72rem; margin-top: 2px; }
.pf:has(.pf-other input:not(:placeholder-shown)) .pf-controls { opacity: 0.4; }
/* Rolling reserve: custom %/days only for "Other", cap only when there is a reserve, amount only for "other cap" */
.pf-rolling-reserve .rr-custom, .pf-rolling-reserve .rr-capv { display: none; }
.pf-rolling-reserve:has(.rr-preset option[value="custom"]:checked) .rr-custom { display: inline-flex; }
.pf-rolling-reserve:has(.rr-cap-select option[value="custom"]:checked) .rr-capv { display: inline-flex; }
.pf-rolling-reserve:has(.rr-preset option[value=""]:checked) .rr-cap { display: none; }
@media (min-width: 760px) {
  .pf-txn-fee, .pf-settlement-cycle, .pf-rolling-reserve { grid-column: span 2; }
}
.was-line { margin: 0 0 var(--space-2); font-size: 0.78rem; }
.pf-rolling-reserve .pf-sub:first-child { flex-basis: 100%; }
.pf-rolling-reserve .rr-cap:not(.rr-capv) { flex: 1 1 110px; }

/* --- main GEOs picker --- */
.geo-picker { border: 0; padding: 0; margin: 0 0 var(--space-4); min-width: 0; }
.geo-picker legend { font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); padding: 0; margin-bottom: var(--space-2); }
.geo-chips { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.geo-chip { position: relative; display: inline-flex; }
.geo-chip input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.geo-chip span { display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 0 var(--space-3); border: 1px solid var(--border-strong);
  border-radius: var(--radius-pill); font-size: 0.84rem; color: var(--text-muted); cursor: pointer; user-select: none;
  transition: background 140ms ease-out, border-color 140ms ease-out, color 140ms ease-out; }
.geo-chip span::before { content: ""; width: 14px; height: 14px; border-radius: 4px; border: 1.5px solid currentColor; flex: none; }
.geo-chip:hover span { color: var(--text); border-color: var(--text-muted); }
.geo-chip input:checked + span { background: color-mix(in srgb, var(--gold) 16%, transparent); border-color: var(--gold); color: var(--text); font-weight: 600; }
.geo-chip input:checked + span::before { background: var(--gold); border-color: var(--gold);
  box-shadow: inset 0 0 0 2px var(--surface); }
.geo-chip input:focus-visible + span { outline: 2px solid var(--gold); outline-offset: 2px; }
.geo-picker.has-error .geo-chip span { border-color: var(--danger); }

/* --- integrations, wallets, telegram --- */
.integ-grid { align-items: start; }
.integ-card .card-body { display: flex; flex-direction: column; gap: var(--space-2); }
.integ-card p { margin: 0; }
.integ-chat input { flex: 1 1 160px; font-family: var(--mono); }
.detect-list { list-style: none; margin: 0; padding: 0; }
.bot-log { list-style: none; margin: var(--space-2) 0 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-2); }
.bot-log li { border-left: 2px solid var(--border-strong); padding-left: var(--space-2); }
.bot-log li.bot-failed { border-color: var(--danger); } .bot-log li.bot-sent { border-color: var(--ok); }
.bot-text { font-size: 0.82rem; }
.mono-input { font-family: var(--mono); }
.wallet-form { display: flex; flex-direction: column; gap: var(--space-2); max-width: 640px; margin-top: var(--space-2); }
.wallet-form .field { margin: 0; }
.wallet-form fieldset { border: 0; padding: 0; }
.wallet-inline { flex-direction: row; flex-wrap: wrap; align-items: flex-end; max-width: none; }
.wallet-inline .field { flex: 1 1 220px; }
.payout-wallets { margin-top: var(--space-3); padding-top: var(--space-3); border-top: 1px solid var(--border); }
.payout-wallets p { margin: 0 0 var(--space-2); display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }
.payout-wallets .mono-input { flex: 1 1 260px; }
.dir-in { color: var(--ok-text); } .dir-out { color: var(--info-text); }
.tg-card { max-width: 640px; }
.tg-state { display: flex; align-items: center; gap: var(--space-2); }
.section-gap-sm { margin-bottom: var(--space-4); }
.ov-table tr.is-unlinked td:first-child { box-shadow: inset 3px 0 0 var(--border-strong); }
.link-form { flex-wrap: nowrap; }
.link-form select { flex: 1 1 200px; min-width: 0; min-height: 36px; }
.wallet-actions { display: flex; flex-direction: column; gap: var(--space-3); }

/* --- price book --- */
.pb-table { font-size: 0.82rem; }
.pb-table td { vertical-align: top; }
.pb-table tr.pb-group td { border-top: 2px solid var(--border-strong); }
.pb-table tr.is-superseded td { color: var(--text-faint); text-decoration: line-through; }
.pb-note { max-width: 220px; white-space: normal; }
.pl-form { display: flex; flex-direction: column; gap: var(--space-2); margin-top: var(--space-2); min-width: min(720px, 80vw); }
.pl-grid { display: grid; gap: var(--space-2) var(--space-3); grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
.pl-grid .field { margin: 0; }
.pl-grid .pl-wide { grid-column: 1 / -1; }
.cur-in { width: 64px !important; flex: 0 0 64px; text-transform: uppercase; }
.to-route { margin-bottom: var(--space-4); } .route-form { flex-wrap: wrap; }

/* --- live gate --- chart colours: validated pair (dataviz palette slots 1 & 2) for each theme */
:root { --viz-today: #2a78d6; --viz-yday: #eb6834; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --viz-today: #3987e5; --viz-yday: #d95926; } }
:root[data-theme="dark"] { --viz-today: #3987e5; --viz-yday: #d95926; }
.gate-fresh { margin: 0 0 var(--space-3); }
.gate-vol { font-size: 1.15rem; line-height: 1.3; }
.hour-chart { width: 100%; height: auto; display: block; }
.hour-chart .axis { stroke: var(--border-strong); stroke-width: 1; }
.hour-chart .tick { fill: var(--text-muted); font-size: 11px; text-anchor: middle; }
.hour-chart .bar-today { fill: var(--viz-today); }
.hour-chart .line-yday { fill: none; stroke: var(--viz-yday); stroke-width: 2; stroke-linejoin: round; }
.hour-chart .dot-yday { fill: var(--viz-yday); stroke: var(--surface); stroke-width: 2; }
.hour-chart .hit { fill: transparent; }
.hour-chart .hit:hover { fill: color-mix(in srgb, var(--text) 6%, transparent); }
.viz-legend { display: inline-flex; align-items: center; gap: 6px; font-size: 0.8rem; color: var(--text-muted); }
.viz-legend .lg { display: inline-block; width: 12px; height: 12px; border-radius: 3px; margin-left: 8px; }
.viz-legend .lg-today { background: var(--viz-today); }
.viz-legend .lg-yday { background: var(--viz-yday); height: 3px; border-radius: 2px; }
.gate-cols { display: grid; grid-template-columns: minmax(0, 3fr) minmax(260px, 2fr); gap: var(--space-4); align-items: start; }
.decline-list { margin: 0; padding: var(--space-3) var(--space-4) var(--space-3) 26px; display: flex; flex-direction: column; gap: 6px; font-size: 0.86rem; }
@media (max-width: 960px) { .gate-cols { grid-template-columns: 1fr; } }

/* --- compliance --- */
.comp-flags { display: inline-flex; flex-wrap: wrap; gap: 6px; }
.card.is-urgent { border-color: color-mix(in srgb, var(--danger) 60%, var(--border)); }
.doc-form .field { flex: 1 1 180px; }

/* Team: several roles per person, Telegram username */
.role-edit > summary { min-height: 32px; font-size: 0.85rem; color: var(--link); cursor: pointer; }
.role-pick { display: grid; gap: var(--space-2); padding-top: var(--space-2); }
.role-pick fieldset { border: 0; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, max-content)); gap: var(--space-1) var(--space-4); }
.role-pick .check { display: inline-flex; align-items: center; gap: var(--space-2); min-height: 32px; font-size: 0.85rem; white-space: nowrap; }
.tg-handle { flex-wrap: nowrap; }
.tg-handle input { width: 11rem; min-height: 32px; }

/* Draft agreement pricing — visible to finance, never mistaken for signed */
.chip-draft { background: color-mix(in srgb, var(--warn) 16%, transparent); color: var(--text); border: 1px dashed var(--warn); }

.term-paused { background: transparent; color: var(--text-muted); border: 1px dashed var(--border-strong, var(--border)); }

.inline-form { display: inline; margin: 0; }
a.user-chip { text-decoration: none; color: inherit; }
.login-help { margin-top: var(--space-4); }
