/* client-offers.css — owned by P15 (client « Mes offres »).
   Scope: the offer cards and the offer detail modal.
   Created empty by P00 (2026-10-11) so the cascade order is fixed before any
   rule lands: styles.css → primary-hub.css → primary-hub-day.css →
   notary-howto.css → hub-*.css → client-*.css, all before action-controls.css.
   new-sheets-tokens.test.mjs holds this sheet to tokens only: no literal colour,
   no off-scale px spacing, no px font-size, and every selector has a consumer. */

/* Request facts, their next action, and the private follow-up are one reading.
   The actual amount/status/consent remain owned by the domain and API. */
.my-offers { font-size: var(--type-body); line-height: var(--type-body-lh); }
.my-offers th { font-size: var(--type-h4); line-height: var(--type-h4-lh); text-transform: none; letter-spacing: normal; }
.my-offers td { padding: var(--space-5); }
.my-offers .my-offer-day,
.my-offers .my-offer-unread,
.my-offers .my-offer-contact-row,
.my-offers .eval-star,
.my-offers .my-offer-help { min-height: var(--control-height); }
.my-offers .my-offer-day { display: inline-flex; align-items: center; }
.my-offers .my-offer-unread { min-width: var(--control-height); justify-content: center; font-size: var(--type-h4); }
.my-offers .my-offer-contact-row { min-width: 0; max-width: 100%; overflow-wrap: anywhere; }
.my-offers .eval-stars { flex-wrap: wrap; gap: var(--space-2); }
.my-offers .eval-star { min-width: var(--control-height); border-radius: var(--radius-sm); }
.my-offers .eval-star:not(:disabled):hover { background: var(--action-tint); }
.my-offers .my-offer-help { gap: var(--space-4); white-space: normal; overflow-wrap: anywhere; }
.my-offers .my-offer-rel,
.my-offers .my-offer-next,
.my-offers .my-offer-next-k,
.my-offers .my-offer-status,
.my-offers .my-offer-receipt-h,
.my-offers .my-offer-contact-h,
.my-offers .my-offer-prop-state,
.my-offers .chat-when,
.my-offers .chat-count { font-size: var(--type-h4); line-height: var(--type-body-lh); }
.my-offers .my-offer-prop-text,
.my-offers .my-offer-prop-msg,
.my-offers .my-offer-contact,
.my-offers .my-offer-eval-t,
.my-offers .my-offer-eval-done,
.my-offers .my-offer-receipt-lines,
.my-offers .chat-empty,
.my-offers .chat-bubble { font-size: var(--type-body); line-height: var(--type-body-lh); }
.my-offers .my-offer-next-k,
.my-offers .my-offer-receipt-h,
.my-offers .my-offer-contact-h { text-transform: none; letter-spacing: normal; }
.my-offers .my-offer-status { white-space: normal; overflow-wrap: anywhere; }
.my-offers .my-offer-detail-cell,
.my-offers .my-offer-contact-name,
.my-offers .my-offer-prop,
.my-offers .my-offer-demande,
.my-offers .chat-bubble,
.my-offers .chat-doc,
.my-offers .chat-error { min-width: 0; overflow-wrap: anywhere; }
.my-offers .my-offer-receipt-lines { grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-3) var(--space-5); }
.my-offers .my-offer-receipt-lines dt { overflow-wrap: anywhere; }
.my-offers .my-offer-actions,
.my-offers .my-offer-prop-actions { gap: var(--space-4); }
.my-offers .my-offer-actions .btn,
.my-offers .my-offer-prop-actions .btn,
.my-offers .chat-send,
.my-offers .chat-doc-open { min-height: var(--control-height); max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
.my-offers .chat-composer { flex-wrap: wrap; }
.my-offers .chat-input { flex: 1 1 calc(var(--control-height) * 3); min-width: 0; min-height: var(--control-height); }
.my-offers .chat-thread > .chat-msg { flex-shrink: 0; }
/* Pending remains distinguishable from an unavailable action after the
   canonical action sheet applies its ordinary disabled state. */
#pane-profil .my-offers button[aria-busy="true"] { cursor: progress; }
.my-offers button:disabled { color: var(--ink-muted); }
#pane-profil .profil-empty-text { font-size: var(--type-body); line-height: var(--type-body-lh); overflow-wrap: anywhere; }
#my-offers-past-dialog .dlg-x { min-width: var(--control-height); min-height: var(--control-height); }
#my-offers-past-dialog .dialog-pad > h3 { padding-inline-end: var(--control-height); }
/* Every request renders TWO sibling rows. A two-column tbody placed the facts
   beside their own follow-up, and the next request in an unrelated grid cell.
   Keep the pair on one track throughout the card breakpoint. */
@media (max-width: 860px) {
  .my-offers tbody { grid-template-columns: minmax(0, 1fr); gap: var(--space-4); }
  .my-offers tbody tr { min-width: 0; padding: var(--space-5) var(--space-6); }
  .my-offers tbody tr.my-offer-detail { margin-top: calc(var(--space-4) * -1); padding: 0 var(--space-6) var(--space-5); }
  .my-offers td { padding: 0; }
  .my-offers .c-date,
  .my-offers .c-montant,
  .my-offers .c-acte,
  .my-offers .c-statut { min-width: 0; }
}
