/* ── Portail Jacques Roussel — fondation visuelle (prototype portail-v2) ── */

:root {
  /* ── Thème premium marine + doré ── */
  --marine: #2c4160;
  --marine-fonce: #223449;
  --dore: #c9a85c;
  --dore-chaud: #e7c877;
  --dore-texte: #8a6d2f;
  --creme-fond: #f8f5ef;
  --carte: #fcfaf6;
  --casier-fond: #ffffff;
  --bordure: #e4e1d8;
  --bordure-forte: #d3d1c7;
  --texte: #2c2c2a;
  --texte-secondaire: #6b6a64;
  --texte-doux: #97958c;
  --succes: #0f6e56;
  --succes-fond: #e1f5ee;
  --attention: #8a6d2f;
  --attention-fond: #f7eacd;
  --danger: #a33b1d;
  --danger-fond: #faece7;
  --danger-bordure: #e0a98c;
  --form-badge-fond: #e7ecf3;

  --icone-action: #5f5e5a;
  --icone-retrait: #b4b2a9;
  --btn-action-hover: #f5f1e8;
  --btn-action-border: #d3d1c7;
  --btn-secondaire-border: #c7c3b8;
  --pill-depose-fond: #e1f5ee;
  --pill-depose-texte: #0f6e56;
  --pill-attente-fond: #fcf3df;
  --pill-attente-texte: #8a6d2f;
  --danger-surface: #fbeee9;
  --danger-border-soft: #e8c4b4;
  --fw-normal: 400;
  --fw-medium: 500;
  --fw-semibold: 600;

  --police-titre: "Spectral", Georgia, serif;
  --police-corps: "Inter", system-ui, sans-serif;
  --icone-titre: #2c4160;
  --icone-doc-type: #5f5e5a;

  /* Pastilles type de propriété (sémantique métier inchangée) */
  --type-u: #3b82f6;
  --type-ci: #6b7280;
  --purple: #7c3aed;
  --purple-l: #f5f3ff;

  /* Aliases hérités → thème */
  --navy: var(--marine);
  --blue: var(--marine);
  --blue-d: var(--marine-fonce);
  --blue-l: var(--form-badge-fond);
  --blue-m: var(--bordure-forte);
  --blue-soft: var(--form-badge-fond);
  --green: var(--succes);
  --green-l: var(--succes-fond);
  --green-m: #c5ebe0;
  --amber: var(--attention);
  --amber-l: var(--attention-fond);
  --orange: var(--attention);
  --orange-l: var(--attention-fond);
  --red: var(--danger);
  --red-l: var(--danger-fond);
  --gray-50: var(--creme-fond);
  --gray-100: #efebe3;
  --gray-200: var(--bordure);
  --gray-300: var(--bordure-forte);
  --gray-400: var(--texte-doux);
  --gray-500: var(--texte-secondaire);
  --gray-600: var(--texte-secondaire);
  --gray-800: var(--texte);
  --white: #fff;
  --bg: var(--creme-fond);
  --ink: var(--texte);
  --muted: var(--texte-secondaire);
  --line: var(--bordure);
  --border: var(--bordure);

  --r: 13px;
  --r-sm: 10px;
  --sh: 0 2px 10px rgba(44, 41, 34, 0.06);
  --sh-lg: 0 8px 32px rgba(34, 52, 73, 0.12);

  /* Largeur principale — ~90 % viewport, plafond confortable (prototype élargi) */
  --page-max: 1680px;
  --page-gutter: clamp(16px, 2.5vw, 40px);
  --page-max-width: min(var(--page-max), 90vw);
  --page-align-pad: max(var(--page-gutter), calc((100% - min(1680px, 90vw)) / 2));
}

*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  font-family: var(--police-corps);
  font-weight: var(--fw-normal);
  font-synthesis: none;
  background: var(--creme-fond);
  color: var(--texte);
  min-height: 100vh;
  line-height: 1.45;
}

/* Titres — Spectral (logo, adresses, étapes, sections, modales). Corps : Inter. */
.topnav-brand,
.brand-name,
.drawer-client-name,
.detail-header .detail-title,
.sb-title,
.detail-title,
.section-title,
.modal-title,
.modal-h,
.intake-group-label,
.doc-section-title,
.doc-subsection-title,
.tl-step-title,
.client-address,
.fm-adresse-val,
.login-h,
.wiz-opinion-subsection-title,
.ptn-section-title,
.client-section-title {
  font-family: var(--police-titre);
  font-weight: var(--fw-medium);
  font-synthesis: none;
}

button {
  cursor: pointer;
  border: none;
  background: none;
  font-family: inherit;
}

input,
textarea,
select {
  font-family: inherit;
}

a {
  text-decoration: none;
  color: inherit;
}

.hide {
  display: none !important;
}

.muted {
  color: var(--texte-secondaire);
}

.slash {
  color: var(--red);
}

/* ── LOGIN ── */
.screen-login {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 24px;
  /* Fond marine travaillé, sans photo : une lueur douce en haut, un dégradé
     qui fonce vers le bas. Sobre, intemporel, et rien à charger — la carte de
     connexion reste le seul point d'attention. */
  background:
    radial-gradient(
      120% 90% at 50% -10%,
      rgba(60, 84, 120, 0.55) 0%,
      rgba(44, 65, 96, 0) 60%
    ),
    linear-gradient(
      160deg,
      #2c4160 0%,
      #223449 55%,
      #1a2838 100%
    );
}

.login-box {
  background: var(--carte);
  border-radius: 18px;
  box-shadow: var(--sh-lg);
  padding: 48px 40px 40px;
  width: 100%;
  max-width: 420px;
}

.brand-name {
  font-size: 24px;
  font-weight: var(--fw-semibold);
  color: var(--navy);
  letter-spacing: -0.5px;
  text-align: center;
}

.brand-tag {
  font-size: 11px;
  color: var(--gray-400);
  text-transform: uppercase;
  letter-spacing: 2px;
  margin-top: 5px;
  text-align: center;
  margin-bottom: 28px;
}

.brand-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border-radius: 9px;
  font-weight: var(--fw-semibold);
  font-size: 13px;
  letter-spacing: -0.5px;
  flex: 0 0 auto;
  background: var(--navy);
  color: #fff;
  border-bottom: 3px solid var(--dore);
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.18);
}

.brand-badge--light {
  background: #fff;
  color: var(--navy);
}

.topnav-brand .brand-badge {
  margin-right: 10px;
}

.brand-name .brand-badge {
  display: flex;
  width: 54px;
  height: 54px;
  border-radius: 13px;
  font-size: 21px;
  border-bottom-width: 4px;
  margin: 0 auto 14px;
}

.login-h {
  font-size: 20px;
  font-weight: var(--fw-semibold);
  color: var(--navy);
  text-align: center;
  margin-bottom: 5px;
}

.login-sub {
  font-size: 14px;
  color: var(--gray-400);
  text-align: center;
  margin-bottom: 24px;
}

.login-divider {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 16px 0;
  color: var(--gray-400);
  font-size: 12px;
  font-weight: 700;
}

.login-divider::before,
.login-divider::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--gray-200);
}

.login-oauth-btn,
.login-password-btn {
  width: 100%;
  margin-top: 0;
}

.login-password-fallback {
  margin-top: 14px;
  font-size: 13px;
  color: var(--gray-500);
}

.login-password-fallback summary {
  cursor: pointer;
  font-weight: 700;
  color: var(--navy);
}

.login-info {
  margin-top: 12px;
  font-size: 13px;
  color: var(--green);
  text-align: center;
  line-height: 1.45;
}

.fg {
  margin-bottom: 16px;
}

.fg label:not(.proto-check) {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--gray-800);
  margin-bottom: 6px;
}

/* Ligne label + case « Non disponible » (téléphone / courriel participant) */
.fg-label-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
}

.fg .fg-label-row label.fg-na {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 500;
  color: var(--texte-doux, #97958c);
  margin-bottom: 6px;
  cursor: pointer;
  white-space: nowrap;
}

.fg-na input[type="checkbox"] {
  width: 13px;
  height: 13px;
  margin: 0;
  accent-color: var(--marine, #2c4160);
  cursor: pointer;
}

.fg input:disabled {
  background: var(--gray-50, #f8fafc);
  color: var(--gray-400, #94a3b8);
  cursor: not-allowed;
}

.fg input:not([type="checkbox"]):not([type="radio"]) {
  width: 100%;
  padding: 11px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: var(--r);
  font-size: 14px;
  color: var(--gray-800);
  outline: none;
  transition: border-color 0.2s;
}

.fg input:not([type="checkbox"]):not([type="radio"]):focus {
  border-color: var(--blue);
}

.btn-primary {
  width: 100%;
  background: var(--marine);
  color: var(--white);
  font-size: 15px;
  font-weight: 700;
  padding: 13px;
  border-radius: var(--r);
  border: none;
  transition: background 0.2s;
}

.btn-primary:hover {
  background: var(--marine-fonce);
}

.btn-primary:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

.login-footer {
  text-align: center;
  font-size: 12px;
  color: rgba(255, 255, 255, 0.4);
  margin-top: 24px;
}

.config {
  background: var(--attention-fond);
  border: 1.5px solid color-mix(in srgb, var(--dore) 45%, var(--bordure));
  color: var(--dore-texte);
  border-radius: var(--r);
  padding: 12px 14px;
  margin-bottom: 16px;
  font-size: 13px;
}

.err {
  color: var(--red);
  font-size: 13px;
  margin-top: 12px;
  min-height: 18px;
}

code {
  background: var(--gray-100);
  padding: 1px 6px;
  border-radius: 5px;
  font-size: 13px;
}

/* ── APP SHELL ── */
.screen-app {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

.screen-app:has(.body.body--detail) {
  height: 100vh;
  max-height: 100vh;
  overflow: hidden;
}

.topnav {
  background: var(--marine);
  height: 60px;
  padding: 0 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: sticky;
  top: 0;
  z-index: 200;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
  flex-shrink: 0;
}

.topnav-brand {
  font-size: 17px;
  font-weight: var(--fw-semibold);
  color: var(--white);
  display: flex;
  align-items: center;
  letter-spacing: 0.01em;
}

.topnav-brand .slash {
  color: var(--dore);
}

.brand-name .slash,
.login-footer .slash {
  color: var(--dore);
}

.topnav-right {
  display: flex;
  align-items: center;
  gap: 14px;
}

.topnav-info {
  font-size: 13px;
  color: rgba(255, 255, 255, 0.7);
}

.topnav-info strong {
  color: var(--white);
}

.btn-logout {
  font-size: 12px;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.55);
  padding: 6px 12px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 6px;
  transition: all 0.2s;
}

.btn-logout:hover {
  color: var(--white);
  border-color: rgba(255, 255, 255, 0.45);
}

.body {
  padding: var(--page-gutter);
  max-width: var(--page-max-width);
  margin: 0 auto;
  width: 100%;
  flex: 1;
}

.body.body--detail {
  max-width: none;
  padding: 0;
  flex: 1;
  min-height: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.body.body--detail #dossier-detail {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}

.detail-content {
  padding: 20px var(--page-gutter) 32px;
  max-width: var(--page-max-width);
  margin: 0 auto;
  width: 100%;
}

.section-title {
  font-size: 21px;
  font-weight: var(--fw-semibold);
  color: var(--navy);
  margin-bottom: 4px;
}

.section-sub {
  font-size: 14px;
  color: var(--gray-600);
  margin-bottom: 22px;
}

/* ── BADGES ── */
.badge {
  display: inline-block;
  font-size: 11px;
  font-weight: 800;
  padding: 3px 10px;
  border-radius: 20px;
  text-transform: uppercase;
  letter-spacing: 0.4px;
}

.badge-done {
  background: var(--succes-fond);
  color: var(--succes);
}

.badge-current {
  background: var(--succes-fond);
  color: var(--succes);
  font-weight: 800;
}

.badge-pending {
  background: var(--gray-100);
  color: var(--texte-doux);
}

.step-badge-sm {
  font-size: 10px;
  font-weight: 800;
  padding: 2px 8px;
  border-radius: 20px;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  display: inline-block;
  background: var(--succes-fond);
  color: var(--succes);
}

.step-badge-sm--light {
  background: rgba(255, 255, 255, 0.16);
  color: rgba(255, 255, 255, 0.92);
}

.type-badge {
  font-size: 11px;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 6px;
  background: var(--blue-l);
  color: var(--blue);
  white-space: nowrap;
}

.type-badge--achat {
  background: var(--green-l);
  color: var(--green);
}

/* ── Pastilles rondes type de propriété (colonne tableau de bord) ── */
.type-cat {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  font-size: 11px;
  font-weight: 900;
  flex-shrink: 0;
  cursor: default;
}
.type-cat-u    { background: var(--type-u);  color: #fff; }
.type-cat-c    { background: var(--purple);  color: #fff; }
.type-cat-r    { background: var(--red);     color: #fff; }
.type-cat-ci   { background: var(--type-ci);  color: #fff; font-size: 9px; }
.type-cat-t    { background: var(--green);   color: #fff; }
.type-cat-f    { background: var(--amber);   color: #fff; }
.type-cat-other { background: #6b7280;       color: #fff; }

.role-pill {
  display: inline-block;
  font-size: 10px;
  font-weight: 800;
  padding: 2px 8px;
  border-radius: 20px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  vertical-align: middle;
  margin-left: 6px;
}

.pill-admin {
  background: var(--purple-l);
  color: var(--purple);
}

.pill-courtier {
  background: var(--blue-l);
  color: var(--blue);
}

.pill-client {
  background: var(--green-l);
  color: var(--green);
}

/* ── Pastille sens A/V ──
   Achat (A) = cercle PLEIN marine ; Vente (V) = cercle CONTOUR marine
   Distinction uniquement par le remplissage — pas de couleur supplémentaire. */
.sens-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  font-size: 13px;
  font-weight: 900;
  flex-shrink: 0;
}

.sens-cell {
  display: flex;
  align-items: center;
  gap: 9px;
  width: fit-content;
  margin: 0 auto;
}

.sens-vente {
  background: #fff;
  color: var(--navy);
  border: 2px solid var(--navy);
}

.sens-achat {
  background: var(--navy);
  color: #fff;
  border: 2px solid var(--navy);
}

/* ── CARDS ── */
.card {
  background: var(--white);
  border: 1.5px solid var(--gray-200);
  border-radius: var(--r);
  padding: 22px;
  margin-bottom: 18px;
  box-shadow: var(--sh);
}

.card-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 15px;
  font-weight: 800;
  color: var(--navy);
  margin-bottom: 16px;
  padding-bottom: 12px;
  border-bottom: 1.5px solid var(--gray-100);
}

/* Offre en cours verrouillée tant que le dossier est à l'étape 1. */
.offre-locked-card {
  background: var(--amber-l);
  border-color: var(--amber);
}

.offre-locked-msg {
  margin: 0;
  font-size: 14.5px;
  font-weight: 700;
  color: var(--amber);
  text-align: center;
  line-height: 1.5;
}

/* Badge statut « En négociation » / « Acceptée » (migration 38). */
.offre-statut-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px 16px;
  margin-bottom: 12px;
  padding: 14px 16px;
}

.offre-statut-main {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 12px;
}

.offre-statut-label {
  font-size: 13px;
  font-weight: 700;
  color: var(--gray-600);
}

.offre-statut-badge {
  display: inline-flex;
  align-items: center;
  padding: 5px 12px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: 0.01em;
}

.offre-statut-badge--negociation {
  background: var(--amber-l);
  color: var(--amber);
  border: 1px solid color-mix(in srgb, var(--amber) 35%, transparent);
}

.offre-statut-badge--acceptee {
  background: #e8f7ee;
  color: #1a7f42;
  border: 1px solid color-mix(in srgb, #1a7f42 25%, transparent);
}

.offre-statut-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

/* Échéances de l'acheteur (client) — les conditions à honorer, par urgence. */
.ach-echeances {
  border-left: 3px solid var(--attention);
}
.ach-echeances-title {
  display: flex;
  align-items: center;
  gap: 7px;
  font-weight: 600;
  font-size: 15px;
  color: var(--texte);
}
.ach-echeances-sub {
  margin: 4px 0 10px;
  font-size: 12.5px;
  color: var(--texte-doux);
  line-height: 1.4;
}
.ach-ech-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 10px;
  padding: 8px 0;
  border-top: 1px solid var(--bordure);
  font-size: 13.5px;
}
.ach-ech-nom {
  font-weight: 500;
  color: var(--texte);
}
.ach-ech-date {
  font-size: 12.5px;
  white-space: nowrap;
}
.ach-ech-row--late .ach-ech-date { color: var(--danger); font-weight: 600; }
.ach-ech-row--urgent .ach-ech-date { color: var(--danger); font-weight: 600; }
.ach-ech-row--soon .ach-ech-date { color: var(--attention); font-weight: 600; }
.ach-ech-row--neutral .ach-ech-date { color: var(--texte-doux); }

/* Réponse du vendeur — trois issues en clair dans la barre de statut. */
.offre-reponse-block {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.offre-reponse-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--texte-doux);
}
.offre-reponse-btns {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.offre-reponse-refus:hover {
  border-color: var(--danger);
  color: var(--danger);
}

.accept-date-modal .accept-date-quick {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 12px 0 4px;
}

.accept-date-modal .accept-date-picker {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--gray-100);
}

.accept-date-modal .accept-date-picker .btn-primary-inline {
  margin-top: 8px;
}

.modal-card.accept-date-modal {
  overflow: visible;
}

.accept-date-modal .accept-date-picker {
  position: relative;
  z-index: 1;
}

.accept-date-modal .accept-date-picker .flatpickr-calendar {
  position: relative !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  bottom: auto !important;
  transform: none !important;
  margin: 10px 0 0;
  width: 100%;
  max-width: 100%;
  box-shadow: var(--sh-md);
  z-index: 2;
}

.accept-date-modal .accept-date-picker .flatpickr-wrapper {
  display: block;
  width: 100%;
}

/* Modal choix version acceptée (E1b) — PA ou CP + diff. */
.accept-version-modal .accept-version-diff-wrap {
  margin: 14px 0 4px;
  padding: 12px 14px;
  border: 1.5px solid #c2cfdf;
  border-radius: 10px;
  background: var(--blue-l, #eff6ff);
  min-height: 3rem;
}
.accept-version-diff-empty {
  margin: 0;
  font-size: 13px;
}
.accept-version-diff-row {
  display: flex;
  gap: 10px;
  font-size: 13px;
  line-height: 1.45;
  margin-top: 4px;
}
.accept-version-diff-row:first-child {
  margin-top: 0;
}
.accept-version-diff-k {
  flex: 0 0 9.5rem;
  font-weight: 700;
  color: #6b7280;
}
.accept-version-diff-v {
  flex: 1;
  min-width: 0;
  color: #1f2937;
}

/* Barre d'actions en lot sur les tâches du Suivi courtier — jamais côté client. */
.substep-bulk-bar {
  margin-left: auto;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  font-size: 12.5px;
  font-weight: 600;
}

.substep-bulk-btn {
  font-size: 12px;
  padding: 6px 10px;
  white-space: nowrap;
}

.substep-bulk-vis-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.substep-bulk-count {
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
}

/* ── TABLEAU DE BORD — stats ── */
.stats-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin-bottom: 22px;
}

@media (max-width: 640px) {
  .stats-row { grid-template-columns: repeat(2, 1fr); }
}

.stat-card {
  background: var(--carte);
  border: 1.5px solid var(--bordure);
  border-radius: var(--r);
  padding: 16px 18px;
  box-shadow: var(--sh);
}

.stat-icon { font-size: 20px; margin-bottom: 6px; }
.stat-num  { font-size: 28px; font-weight: 900; color: var(--navy); line-height: 1; }
.stat-label{ font-size: 12px; color: var(--gray-400); margin-top: 4px; }

/* ── TABLEAU DE BORD — filtres ── */
.filter-bar {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 16px;
}

.filter-input {
  flex: 1;
  min-width: 220px;
  padding: 10px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: 8px;
  font-size: 14px;
  outline: none;
}

.filter-input:focus { border-color: var(--blue); }

.filter-select {
  padding: 10px 12px;
  border: 1.5px solid var(--gray-200);
  border-radius: 8px;
  font-size: 13px;
  font-weight: 600;
  color: var(--gray-600);
  background: var(--white);
  outline: none;
  cursor: pointer;
}

.filter-select:focus { border-color: var(--blue); }

/* ── TABLEAU DE BORD — états de ligne ── */
.tx-row-closed { background: #f6fef9; }
.tx-row-closed td:first-child { box-shadow: inset 3px 0 0 var(--green); }
.tx-row-ended  { opacity: .62; }
.tx-row-ended  td:first-child { box-shadow: inset 3px 0 0 var(--red); }
.tx-row-archived { opacity: .55; }
.tx-row-archived td:first-child { box-shadow: inset 3px 0 0 var(--gray-400); }

.step-cell-actions {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
}

.tx-row-action {
  font-size: 11px;
  font-weight: 700;
  padding: 4px 8px;
  border-radius: 6px;
  border: 1px solid var(--gray-200);
  background: #fff;
  color: var(--navy);
  cursor: pointer;
  white-space: nowrap;
}

.tx-row-action:hover {
  background: var(--gray-100);
}

/* Th triable */
.tx-table .th-sort { cursor: pointer; user-select: none; white-space: nowrap; }
.tx-table .th-sort:hover { color: var(--blue); }
.sort-ic     { font-size: 11px; color: var(--gray-300); margin-left: 2px; }
.sort-ic.act { color: var(--blue); }

/* Dernier message */
.last-msg {
  font-size: 12px;
  color: var(--gray-600);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
  max-width: 100%;
}

.msg-unread-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--red);
  display: inline-block;
  flex-shrink: 0;
}

/* ── TABLEAU DE BORD — « À faire » ── */
.todo-card { margin-bottom: 18px; }

.todo-toggle { cursor: pointer; user-select: none; }

.todo-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--red);
  color: var(--white);
  font-size: 10px;
  font-weight: 800;
  padding: 1px 6px;
  border-radius: 20px;
  margin-left: 4px;
}

.todo-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 9px 12px;
  border-radius: 8px;
  margin-bottom: 6px;
  font-size: 13px;
  cursor: pointer;
  transition: background 0.12s, transform 0.12s, box-shadow 0.12s;
}

.todo-item:last-child { margin-bottom: 0; }

.todo-item:hover {
  background: var(--blue-l);
  transform: translateX(3px);
  box-shadow: var(--sh);
}

.todo-item:focus-visible {
  outline: 2px solid var(--blue);
  outline-offset: 2px;
}

.todo-name  { font-weight: 700; color: var(--gray-800); }
.todo-sub   { color: var(--gray-400); font-size: 12px; }
.todo-cat   { font-size: 11px; font-weight: 700; color: var(--gray-400); text-transform: uppercase; letter-spacing: .4px; white-space: nowrap; flex-shrink: 0; }

.todo-empty { font-size: 13px; color: var(--gray-400); padding: 6px 12px; }

.todo-tier {
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .04em;
  margin: 12px 0 6px;
  padding-bottom: 3px;
}

.todo-tier-click {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  user-select: none;
  border-radius: 6px;
  padding: 3px 6px;
  margin-left: -6px;
  margin-right: -6px;
  transition: background .12s;
}

.todo-tier-click:hover { background: var(--gray-100); }
.todo-tier-chev  { margin-left: auto; font-size: 11px; font-weight: 700; opacity: .7; }
.todo-tier-late  { color: var(--red); }
.todo-tier-urgent{ color: var(--orange); }
.todo-tier-soon  { color: #a16207; }

.dl-when { font-size: 11px; font-weight: 700; color: var(--gray-400); white-space: nowrap; }
.dl-red    .dl-when, .dl-red    .todo-name { color: var(--red); }
.dl-orange .dl-when, .dl-orange .todo-name { color: var(--orange); }
.dl-yellow .dl-when { color: #a16207; }

.todo-av {
  display: inline-flex; align-items: center; justify-content: center;
  width: 20px; height: 20px; border-radius: 50%;
  font-size: 10px; font-weight: 900; flex-shrink: 0;
}
.todo-av-v { background: #fff; color: var(--navy); border: 1.5px solid var(--navy); }
.todo-av-a { background: var(--navy); color: #fff; border: 1.5px solid var(--navy); }

/* ── LISTE DES DOSSIERS (cartes — kept for fallback) ── */
.page-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 22px;
  flex-wrap: wrap;
  gap: 12px;
}

.dossier-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.dossier {
  display: block;
  width: 100%;
  text-align: left;
  font: inherit;
  color: inherit;
  background: var(--white);
  border: 1.5px solid var(--gray-200);
  border-left: 4px solid var(--navy);
  border-radius: var(--r);
  padding: 18px 20px;
  box-shadow: var(--sh);
  transition: border-color 0.15s, box-shadow 0.15s, background 0.15s;
}

.dossier-link {
  cursor: pointer;
}

.dossier-link:hover {
  border-color: var(--blue);
  border-left-color: var(--red);
  background: #f4f7fb;
  box-shadow: 0 4px 16px rgba(44, 65, 96, 0.12);
}

/* ── Tableau des dossiers (prototype tx-table) ── */
.tx-scroll {
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
}

/* Petit écran : le tableau garde une largeur lisible et DÉFILE horizontalement
   (au lieu d'écraser les colonnes en escalier). */
@media (max-width: 900px) {
  .tx-scroll .tx-table {
    min-width: 760px;
  }
}

.tx-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: auto;
}

.tx-table th {
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.7px;
  color: var(--gray-400);
  padding: 0 8px 10px;
  text-align: left;
  border-bottom: 1.5px solid var(--gray-200);
  white-space: nowrap;
}

/* Client : peut revenir à la ligne, prend l'espace restant */
.tx-table th:nth-child(1),
.tx-table td:nth-child(1) { width: auto; }

/* Dernier message : prend l'espace restant, contenu tronqué */
.tx-table th:nth-child(6),
.tx-table td:nth-child(6) { width: 25%; }

/* Colonnes à pastille : en-tête et cellule centrés, taille minimale */
.tx-table th:nth-child(2),
.tx-table th:nth-child(3),
.tx-table th:nth-child(4),
.tx-table th:nth-child(5),
.tx-table td:nth-child(2),
.tx-table td:nth-child(3),
.tx-table td:nth-child(4),
.tx-table td:nth-child(5) {
  text-align: center;
  white-space: nowrap;
}

.tx-table td {
  padding: 14px 8px;
  border-bottom: 1px solid var(--gray-100);
  font-size: 14px;
  vertical-align: middle;
  transition: background 0.15s;
}

.tx-table tr:last-child td {
  border-bottom: none;
}

.tx-table .tx-row {
  cursor: pointer;
}

.tx-table .tx-row:hover td {
  background: color-mix(in srgb, var(--dore) 10%, var(--creme-fond));
}

.client-name {
  font-weight: 700;
  color: var(--gray-800);
}

.client-address {
  font-size: 12px;
  color: var(--gray-400);
  margin-top: 2px;
}

.step-mini {
  display: flex;
  align-items: center;
  gap: 8px;
  width: fit-content;
  margin: 0 auto;
}

.step-num-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  font-size: 13px;
  font-weight: 900;
  flex-shrink: 0;
  background: var(--marine);
  color: var(--white);
  box-shadow: 0 0 0 2px var(--dore);
}

.step-num-4 {
  background: var(--succes);
  color: var(--white);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--succes) 35%, var(--dore));
}

.step-dots {
  display: flex;
  gap: 3px;
}

.step-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
}

.dot-done {
  background: var(--green);
}

.dot-current {
  background: var(--marine);
}

.dot-pending {
  background: var(--gray-200);
}

.step-text {
  font-size: 12px;
  color: var(--gray-600);
  font-weight: 600;
}

.btn-open {
  font-size: 12px;
  font-weight: 700;
  padding: 6px 14px;
  border-radius: 7px;
  background: var(--blue);
  color: var(--white);
  transition: background 0.2s;
}

.btn-open:hover {
  background: var(--blue-d);
}

.tx-empty {
  padding: 40px 24px;
  text-align: center;
  color: var(--gray-400);
  font-size: 14px;
}

.dossier-top {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin-bottom: 10px;
}

.dossier-title {
  font-size: 16px;
  font-weight: 800;
  color: var(--gray-800);
  margin: 0 0 4px;
}

.dossier-subtitle {
  font-size: 13px;
  line-height: 1.35;
  margin: 0 0 8px;
}

.dossier-meta {
  font-size: 13px;
  color: var(--gray-600);
  margin-bottom: 12px;
}

.dossier-preview {
  display: grid;
  gap: 8px;
}

.preview-block {
  font-size: 12px;
}

.preview-label {
  font-size: 10px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--gray-400);
  margin-bottom: 4px;
}

.chip {
  display: inline-block;
  background: var(--gray-100);
  border-radius: 8px;
  padding: 3px 9px;
  margin: 2px 4px 2px 0;
  font-size: 12px;
  color: var(--gray-600);
}

.chip .ok {
  color: var(--green);
  font-weight: 700;
}

/* ── Champ pastilles (villes recherchées, création dossier achat) ── */
.chips-input-wrap {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.chips-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  min-height: 0;
}

.chips-list .chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--blue-l);
  color: var(--navy);
  font-weight: 600;
  margin: 0;
  padding: 5px 6px 5px 10px;
}

.chip-remove {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border: none;
  border-radius: 50%;
  background: transparent;
  color: var(--navy);
  opacity: 0.65;
  cursor: pointer;
  font-size: 11px;
  line-height: 1;
  padding: 0;
}

.chip-remove:hover {
  opacity: 1;
  background: rgba(44, 65, 96, 0.12);
}

.chips-input-row {
  display: flex;
  gap: 8px;
}

.chips-input-row input {
  flex: 1 1 auto;
}

.chips-add-btn {
  flex-shrink: 0;
  white-space: nowrap;
}

.dossier-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--gray-100);
}

.dossier-hint {
  font-size: 12px;
  font-weight: 700;
  color: var(--blue);
}

.tx-row-arrow {
  font-size: 18px;
  color: var(--gray-300);
  transition: all 0.2s;
}

.dossier-link:hover .tx-row-arrow {
  color: var(--blue);
  transform: translateX(3px);
}

.row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.kv {
  font-size: 14px;
}

/* ── DÉTAIL DOSSIER ── */
.back-btn {
  font-size: 13px;
  font-weight: 700;
  color: rgba(255, 255, 255, 0.8);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 6px;
  background: transparent;
  margin-bottom: 18px;
  transition: all 0.2s;
}

.back-btn:hover {
  color: var(--white);
  border-color: rgba(255, 255, 255, 0.5);
}

/* Retour dans la zone de contenu (fond clair) */
.body > .back-btn,
#dossier-detail > .back-btn {
  color: var(--navy);
  background: var(--white);
  border: 1.5px solid var(--gray-200);
  padding: 8px 14px;
  border-radius: 8px;
}

.body > .back-btn:hover,
#dossier-detail > .back-btn:hover {
  border-color: var(--blue);
  background: var(--blue-l);
  color: var(--navy);
}

.detail-header {
  margin-bottom: 0;
  background: transparent;
}

/* ── Vue détail — coquille prototype (onglets + barre de commande) ── */
.dossier-shell {
  background: var(--creme-fond);
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

#dossier-shell-top {
  position: sticky;
  top: 0;
  z-index: 50;
  flex-shrink: 0;
  background: var(--creme-fond);
}

#dossier-shell-top .tabbar {
  flex-shrink: 0;
}

.tabbar {
  background: var(--carte);
  border-bottom: 1.5px solid var(--bordure);
  padding: 0 var(--page-align-pad);
  display: flex;
  gap: 2px;
  flex-shrink: 0;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.tab-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 14px;
  font-weight: 600;
  color: var(--texte-doux);
  padding: 14px 16px 12px;
  border: none;
  border-bottom: 2px solid transparent;
  background: transparent;
  cursor: pointer;
  transition: all 0.2s;
  white-space: nowrap;
}

.tab-btn:hover {
  color: var(--marine);
}

.tab-btn.active {
  color: var(--marine);
  border-bottom-color: var(--dore);
}

.tab-panel {
  display: none;
}

.tab-panel.active {
  display: block;
}

.drawer-body {
  padding: var(--page-gutter);
  max-width: var(--page-max-width);
  margin: 0 auto;
  width: 100%;
  flex: 1;
}

.cmd-head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 7px var(--page-align-pad) 0;
}

.cmd-summary {
  font-size: 12.5px;
  font-weight: 800;
  color: var(--navy);
  text-transform: uppercase;
  letter-spacing: 0.4px;
}

.cmd-toggle {
  margin-left: auto;
  cursor: pointer;
  user-select: none;
  font-size: 12px;
  font-weight: 700;
  color: var(--gray-500);
  white-space: nowrap;
  background: none;
  border: none;
  padding: 4px 0;
}

.cmd-body.collapsed {
  display: none;
}

.cmd-bar .admin-strip {
  background: transparent;
  border-bottom: none;
  padding: 8px var(--page-align-pad) 10px;
}

.cmd-bar .step-banner {
  background: transparent;
  border-bottom: none;
  padding: 4px var(--page-align-pad) 14px;
  border-top: 1px solid #dbe3ee;
}

.cmd-select,
.admin-strip select {
  font-size: 13px;
  font-weight: 600;
  padding: 6px 10px;
  border: 1.5px solid #cdd8e8;
  border-radius: 7px;
  background: var(--white);
  color: var(--gray-800);
  cursor: pointer;
  outline: none;
  min-width: 100px;
}

.cmd-select:hover,
.admin-strip select:hover {
  border-color: var(--blue);
}

.cmd-field {
  flex-shrink: 0;
}

.cmd-field--steps .step-controls-btns {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.admin-strip .btn-advance,
.admin-strip .btn-regress,
.admin-strip .btn-end-tx {
  font-size: 12.5px;
  padding: 6px 12px;
}

#d-step-banner-client {
  margin-bottom: 16px;
}

@media (max-width: 640px) {
  .tabbar {
    padding: 0 12px;
  }

  .tab-btn {
    padding: 12px 12px 10px;
    font-size: 13px;
  }

  .drawer-topbar {
    padding: 8px 16px;
    min-height: 0;
  }

  .drawer-client-name,
  .detail-header .detail-title {
    font-size: 19px;
  }

  .drawer-body {
    padding: 16px;
  }
}

/* ── Vue détail (prototype drawer-topbar + cmd-bar) ── */
.drawer-topbar {
  background: var(--marine);
  min-height: 0;
  padding: 8px var(--page-align-pad);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-shrink: 0;
}

.drawer-topbar-left {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
}

.drawer-topbar-main {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
  flex: 1;
}

/* Photo de la propriété — déposée → Street View → générique → icône maison */
.property-photo-slot {
  position: relative;
  overflow: hidden;
  background: linear-gradient(135deg, #2c4160, #3a5577);
  display: flex;
  align-items: center;
  justify-content: center;
}

.property-photo-placeholder {
  position: absolute;
  inset: 0;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  width: 100%;
  height: 100%;
  line-height: 1;
}

.property-photo-img {
  position: absolute;
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.property-photo-slot--generic-logo {
  background: var(--navy, #143a66);
  display: flex;
  align-items: center;
  justify-content: center;
}

.property-photo-slot--generic-logo .property-photo-brand-logo {
  position: relative;
  z-index: 1;
  flex: 0 0 auto;
  width: 38%;
  max-width: 96px;
  aspect-ratio: 1;
  height: auto;
  border-radius: 13%;
  font-size: clamp(11px, 28%, 28px);
  letter-spacing: -0.5px;
}

.property-photo-slot--drawer.property-photo-slot--generic-logo .property-photo-brand-logo {
  width: 72%;
  max-width: 38px;
  font-size: 11px;
  border-radius: 8px;
  border-bottom-width: 2px;
}

.property-photo-slot--client-banner.property-photo-slot--generic-logo .property-photo-brand-logo,
.property-photo-slot--manage-preview.property-photo-slot--generic-logo .property-photo-brand-logo {
  width: 26%;
  max-width: 108px;
  font-size: clamp(15px, 20%, 34px);
}

.property-photo-slot.cel-bigphoto.property-photo-slot--generic-logo .property-photo-brand-logo {
  width: 22%;
  max-width: 120px;
  font-size: clamp(18px, 18%, 42px);
}

.property-photo-slot--drawer {
  width: 52px;
  height: 52px;
  border-radius: 8px;
  flex-shrink: 0;
  font-size: 22px;
  border: 1px solid rgba(255, 255, 255, 0.2);
}

.property-photo-slot--client-banner {
  width: 100%;
  max-width: 420px;
  height: 160px;
  border-radius: 12px;
  margin-bottom: 14px;
  font-size: 36px;
}

.client-property-photo-wrap {
  display: flex;
  justify-content: flex-start;
}

.property-photo-manage-row {
  display: flex;
  gap: 16px;
  align-items: flex-start;
  flex-wrap: wrap;
}

.property-photo-slot--manage-preview {
  width: 140px;
  height: 105px;
  border-radius: 10px;
  font-size: 28px;
  flex-shrink: 0;
}

.property-photo-manage-meta {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 220px;
  flex: 1;
}

.property-photo-manage-hint {
  font-size: 12.5px;
  margin: 0 0 8px;
}

.property-photo-manage-status {
  font-size: 13px;
  font-weight: 600;
  color: var(--gray-700);
}

.property-photo-upload-label {
  display: inline-flex;
  width: fit-content;
  cursor: pointer;
}

.property-photo-generic-btn,
.property-photo-reset-btn {
  width: fit-content;
}

.drawer-client-name,
.detail-header .detail-title {
  font-size: 22px;
  font-weight: var(--fw-semibold);
  color: var(--white);
  line-height: 1.05;
  margin: 0;
}

.drawer-client-name-row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  min-width: 0;
}

.btn-client-preview {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 11px;
  font-weight: 700;
  color: var(--marine);
  padding: 4px 10px;
  border: 1px solid color-mix(in srgb, var(--dore-chaud) 65%, var(--marine));
  border-radius: 7px;
  background: var(--dore-chaud);
  white-space: nowrap;
  transition: background 0.2s, border-color 0.2s, filter 0.2s;
}

.btn-client-preview:hover {
  filter: brightness(1.03);
  border-color: var(--dore);
  color: var(--marine-fonce);
}

/* Mode test « Voir en tant que client » — bandeau volontairement voyant
   (ambre) pour rappeler en permanence que des actions réelles peuvent être
   effectuées au nom du client. DEV/TEST uniquement. */
.client-preview-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  padding: 12px var(--page-align-pad);
  background: linear-gradient(90deg, #b45309 0%, #d97706 100%);
  color: var(--white);
  border-bottom: 2px solid rgba(0, 0, 0, 0.12);
  flex-shrink: 0;
}

.client-preview-banner-text {
  font-size: 15px;
  font-weight: 800;
  letter-spacing: 0.01em;
}

.client-preview-exit-btn {
  font-size: 13px;
  font-weight: 700;
  padding: 8px 14px;
  border-radius: 7px;
  background: var(--white);
  color: #92400e;
  border: none;
  white-space: nowrap;
}

.client-preview-exit-btn:hover {
  background: #fffbeb;
}

.drawer-client-sub,
.detail-header .detail-subtitle {
  font-size: 12px;
  line-height: 1.2;
  color: rgba(255, 255, 255, 0.72);
  margin: 0;
}

.drawer-topbar-right {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: flex-end;
  flex-shrink: 0;
}

.drawer-topbar .type-badge {
  font-size: 10px;
  padding: 2px 8px;
  border-radius: 5px;
}

.drawer-topbar .step-badge-sm {
  font-size: 9px;
  padding: 1px 7px;
  letter-spacing: 0.25px;
}

.drawer-close {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  font-weight: 700;
  color: rgba(255, 255, 255, 0.8);
  padding: 4px 10px;
  border: 1px solid rgba(255, 255, 255, 0.25);
  border-radius: 7px;
  transition: all 0.2s;
  white-space: nowrap;
}

.drawer-close:hover {
  color: var(--white);
  border-color: rgba(255, 255, 255, 0.5);
}

.detail-header-strip {
  background: var(--carte);
  border-bottom: 1.5px solid var(--bordure);
  padding: 16px 24px;
}

/* Sélecteur courtier responsable (admin) dans l'en-tête de dossier */
.admin-select-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 8px 12px;
  background: var(--blue-l);
  border: 1.5px solid var(--blue-m);
  border-radius: var(--r-sm);
  margin-bottom: 14px;
}

.admin-select-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--navy);
  white-space: nowrap;
}

.admin-select {
  padding: 6px 10px;
  border: 1.5px solid var(--blue-m);
  border-radius: 7px;
  font-size: 13px;
  font-weight: 600;
  color: var(--gray-800);
  background: var(--white);
  outline: none;
  cursor: pointer;
  min-width: 200px;
}

.admin-select:focus { border-color: var(--blue); }

.admin-select-hint {
  font-size: 12px;
  font-weight: 600;
  color: var(--green);
}

/* Bloc lecture seule du courtier responsable (vue courtier) */
.courtier-readonly {
  display: flex;
  align-items: center;
  gap: 8px;
}

.courtier-readonly-av {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--navy), var(--blue));
  color: #fff;
  font-size: 11px;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.courtier-readonly-name {
  font-size: 13px;
  font-weight: 600;
  color: var(--navy);
}

.cmd-bar {
  background: #f4f7fb;
  border-top: 3px solid var(--navy);
  border-bottom: 1.5px solid #dbe3ee;
  flex-shrink: 0;
}

.cmd-bar .step-controls {
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 0;
  background: transparent;
}

.admin-strip {
  background: transparent;
  border-bottom: 1px solid #dbe3ee;
  padding: 12px var(--page-align-pad);
  display: flex;
  align-items: flex-start;
  gap: 16px;
  flex-wrap: wrap;
}

.admin-strip--compact {
  padding: 10px var(--page-align-pad);
}

.admin-strip-body {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  flex: 1;
  min-width: 0;
}

.admin-strip-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--navy);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: 5px;
}

.step-banner {
  background: transparent;
  border-bottom: none;
  padding: 14px var(--page-align-pad) 18px;
}

.step-banner-ended {
  border-left: 4px solid var(--fin-color, var(--red));
  padding-left: max(16px, calc(var(--page-align-pad) - 4px));
}

.step-banner-ended .sb-kicker {
  color: var(--gray-500);
}

.fin-status-badge {
  white-space: nowrap;
}

.sb-head-row {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 14px;
}

.sb-head {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.sb-kicker {
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--gray-400);
}

.sb-title {
  font-size: 22px;
  font-weight: var(--fw-semibold);
  color: var(--navy);
  line-height: 1.15;
}

.detail-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}

.detail-title {
  font-size: 22px;
  font-weight: var(--fw-semibold);
  color: var(--navy);
  line-height: 1.15;
  margin-bottom: 6px;
}

.detail-subtitle {
  font-size: 14px;
  line-height: 1.4;
  margin: 0 0 12px;
}

.step-controls {
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 0;
  background: transparent;
}

.step-controls .err {
  padding: 0 24px 12px;
}

.step-indicator {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 12px;
}

.step-indicator-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  text-align: center;
}

.step-indicator-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  font-size: 13px;
  font-weight: 900;
  border: 2px solid var(--gray-200);
  background: var(--white);
  color: var(--gray-400);
}

.step-indicator-label {
  font-size: 11px;
  line-height: 1.25;
  font-weight: 600;
  color: var(--gray-400);
}

.step-indicator-item--done .step-indicator-num {
  background: var(--green);
  border-color: var(--green);
  color: var(--white);
}

.step-indicator-item--done .step-indicator-label {
  color: var(--green);
}

.step-indicator-item--current .step-indicator-num {
  background: var(--marine);
  border-color: var(--dore);
  color: var(--white);
  box-shadow: 0 4px 12px rgba(34, 52, 73, 0.22);
}

.step-indicator-item--current .step-indicator-label {
  color: var(--navy);
  font-weight: 800;
}

.step-indicator-item--clickable {
  border: none;
  background: transparent;
  cursor: pointer;
  padding: 0;
  font: inherit;
  color: inherit;
  width: 100%;
}

.step-indicator-item--clickable:hover .step-indicator-num {
  transform: scale(1.05);
  box-shadow: 0 2px 8px rgba(21, 128, 61, 0.25);
}

.step-indicator-item--clickable:disabled {
  opacity: 0.6;
  cursor: wait;
}

.step-controls-hint {
  font-size: 12px;
  margin: 0 0 4px;
  text-align: right;
}

.step-controls-btns {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: flex-end;
}

.step-controls-btns .btn-secondary {
  border-radius: 10px;
  padding: 10px 20px;
}

.step-controls-btns .btn-advance,
.step-controls-btns #step-next {
  border-radius: 10px;
}

.step-controls-btns .btn-secondary:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

#step-err {
  margin-top: 10px;
}

.modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 500;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background: rgba(15, 23, 42, 0.55);
}

/* Pop-ups interactifs (confirm, signatures…) — au-dessus du voile appBusy (100000).
   Les modales de travail (#pa-wizard, etc.) restent à 500 pour que le voile les couvre. */
.modal-overlay--above-busy {
  z-index: 100001;
}

.modal-card,
.modal-box {
  width: min(100%, 460px);
  max-height: calc(100vh - 40px);
  overflow: auto;
  background: var(--carte);
  border-radius: 14px;
  box-shadow: var(--sh-lg);
  padding: 24px;
}

.modal-card--wide {
  width: min(100%, 700px);
}

/* Modale partenaire — ~2× la largeur standard (460 → 920 px, plafond 90 vw) */
#partner-modal .modal-card {
  width: min(90vw, 920px);
}

#partner-modal .form-grid {
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 12px 16px;
}

#partner-modal .form-grid .fg:nth-child(1) {
  grid-column: span 2;
}

#partner-modal .form-grid .fg:nth-child(2) {
  grid-column: span 4;
}

#partner-modal .form-grid .fg:nth-child(3) {
  grid-column: 1 / -1;
}

#partner-modal .form-grid .fg:nth-child(4),
#partner-modal .form-grid .fg:nth-child(5),
#partner-modal .form-grid .fg:nth-child(6) {
  grid-column: span 2;
}

#partner-modal .form-grid input[type="text"],
#partner-modal .form-grid input[type="email"],
#partner-modal .form-grid input[type="tel"],
#partner-modal .form-grid select {
  min-width: 0;
}

.doc-upload-busy-card {
  text-align: center;
  min-width: 280px;
}

.doc-upload-busy-card .modal-title {
  margin: 0;
}

.detail-edit-btn-wrap {
  margin-top: 14px;
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: wrap;
}

.btn-resume-download {
  font-size: 13px;
}

.modal-title,
.modal-h {
  font-size: 17px;
  font-weight: var(--fw-semibold);
  color: var(--navy);
  margin-bottom: 6px;
}

.modal-text,
.modal-sub {
  font-size: 13px;
  line-height: 1.55;
  color: var(--gray-600);
  margin: 0 0 18px;
}

/* Variante forte (rouge) */
.modal-card--warning-strong {
  border: 1.5px solid var(--red);
}

.modal-title--danger {
  color: var(--red);
}

.modal-text--danger {
  color: var(--red);
  font-weight: 600;
}

.modal-header-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 6px;
}

.modal-header-row .modal-title {
  margin-bottom: 0;
  flex: 1;
  min-width: 0;
}

.modal-x-btn {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: var(--gray-500);
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}

.modal-x-btn:hover {
  background: var(--gray-100);
  color: var(--navy);
}

.modal-text--full {
  white-space: pre-wrap;
  word-break: break-word;
  max-height: min(60vh, 420px);
  overflow-y: auto;
  margin-bottom: 12px;
}

.modal-card--text-view .form-actions-btns {
  margin-top: 0;
}

/* Modale éditable (titre + texte de clause) */
.ecm-title-row {
  display: flex;
  align-items: center;
  gap: 6px;
  flex: 1;
  min-width: 0;
}

.ecm-title-row .modal-title {
  margin-bottom: 0;
}

.ecm-title-input {
  flex: 1;
  min-width: 0;
  font-size: 17px;
  font-weight: 800;
  color: var(--navy);
  border: 1.5px solid var(--blue);
  border-radius: 8px;
  padding: 5px 10px;
  font-family: inherit;
  outline: none;
}

.ecm-pencil-btn {
  flex-shrink: 0;
  width: 26px;
  height: 26px;
  border: none;
  border-radius: 7px;
  background: transparent;
  color: var(--gray-400);
  font-size: 13px;
  line-height: 1;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}

.ecm-pencil-btn:hover {
  background: var(--gray-100);
  color: var(--navy);
}

.ecm-field-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin: 10px 0 16px;
}

.ecm-text-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 4px 0 4px;
}

.ecm-text-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--gray-600);
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

.ecm-modified-note {
  font-size: 12px;
  color: var(--gray-600);
  margin: 0 0 8px;
}

.ecm-link-btn {
  background: none;
  border: none;
  padding: 0;
  color: var(--blue);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  text-decoration: underline;
}

.ecm-link-btn:hover {
  color: var(--navy);
}

.ecm-textarea {
  width: 100%;
  min-height: 160px;
  max-height: min(50vh, 360px);
  padding: 12px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: 8px;
  font-size: 13px;
  line-height: 1.5;
  font-family: inherit;
  resize: vertical;
  outline: none;
  box-sizing: border-box;
  margin-bottom: 12px;
}

.ecm-textarea:focus {
  border-color: var(--blue);
}

/* Champs internes de la modale d'avertissement */
.wf-fields {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 14px;
}

.wf-check-label {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 14px;
  font-weight: 600;
  color: var(--gray-800);
  cursor: pointer;
  line-height: 1.4;
}

.wf-check-label input[type="checkbox"] {
  margin-top: 2px;
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  cursor: pointer;
  accent-color: var(--blue);
}

.step-back-story {
  width: 100%;
  margin-top: 8px;
  padding: 10px 12px;
  font-family: inherit;
  font-size: 14px;
  line-height: 1.45;
  border: 1.5px solid var(--gray-200);
  border-radius: var(--r-sm);
  resize: vertical;
  min-height: 72px;
}

.step-back-story:focus {
  outline: none;
  border-color: var(--blue);
  box-shadow: 0 0 0 3px rgba(44, 65, 96, 0.12);
}

#step-back-err {
  margin-top: 10px;
}

.detail-meta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  font-size: 14px;
  color: var(--gray-600);
  margin-bottom: 16px;
}

.address-detail {
  margin-top: -8px;
  margin-bottom: 16px;
  font-size: 13px;
}

.detail-meta-row b {
  color: var(--navy);
}

.detail-dates {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 10px;
  padding-top: 14px;
  border-top: 1.5px solid var(--gray-100);
}

.date-item {
  background: var(--gray-50);
  border: 1px solid var(--gray-200);
  border-left: 4px solid var(--blue);
  border-radius: 8px;
  padding: 10px 12px;
}

.date-label {
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  color: var(--gray-400);
  margin-bottom: 4px;
}

.date-item span:last-child {
  font-size: 14px;
  font-weight: 700;
  color: var(--navy);
}

.detail-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.detail-row {
  padding: 12px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: var(--r);
  background: var(--gray-50);
}

.detail-row-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}

.detail-row-head-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}

.doc-vis-badge {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 20px;
  white-space: nowrap;
}

.doc-vis-badge--client {
  background: var(--green-l);
  color: var(--green);
}

.doc-vis-badge--internal {
  background: var(--gray-100);
  color: var(--gray-500);
}

.doc-vis-toggle {
  font-size: 12px;
  white-space: nowrap;
}

.detail-row-main {
  font-size: 14px;
  font-weight: 600;
  color: var(--gray-800);
}

.detail-row-sub {
  font-size: 13px;
  margin-top: 4px;
  color: var(--gray-600);
}

.star {
  color: var(--dore);
}

.empty-line {
  margin: 0;
  font-size: 14px;
}

/* ── MESSAGES ── */
.cond-timing {
  display: block;
  font-size: 12px;
  color: var(--gray-600);
}

.cond-timing-line {
  line-height: 1.55;
  margin-top: 2px;
}

.cond-timing-line:first-child {
  margin-top: 0;
}

.todo-cond-timing {
  font-size: 11px;
  line-height: 1.45;
  margin-top: 4px;
}

.msg-thread {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.msg-item {
  padding: 12px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: var(--r);
  background: var(--gray-50);
}

.msg-meta {
  font-size: 12px;
  margin-bottom: 6px;
  color: var(--gray-400);
}

.msg-meta strong {
  color: var(--navy);
}

.msg-body {
  flex: 1;
  font-size: 14px;
  white-space: pre-wrap;
  color: var(--gray-800);
}

.msg-item-row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}

.msg-item-dot {
  flex-shrink: 0;
  margin-top: 5px;
}

.msg-item--new {
  border-color: rgba(220, 38, 38, 0.45);
  background: #fff;
  box-shadow: 0 0 0 1px rgba(220, 38, 38, 0.12);
}

.msg-item-actions {
  margin-top: 8px;
}

.msg-mark-seen-btn {
  font-size: 12px;
  font-weight: 700;
  padding: 6px 12px;
  border-radius: 7px;
  border: 1.5px solid var(--red);
  color: var(--red);
  background: #fff;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}

.msg-mark-seen-btn:hover:not(:disabled) {
  background: #fef2f2;
}

.msg-mark-seen-btn:disabled {
  opacity: 0.6;
  cursor: wait;
}

.msg-seen-badge {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: 20px;
  background: var(--green-l);
  color: var(--green);
}

.journal-card-top {
  display: flex;
  align-items: stretch;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 0;
}

.journal-card-head {
  display: flex;
  align-items: center;
  flex: 1;
  min-width: 0;
  background: var(--gray-50);
  border: 1.5px solid var(--gray-200);
  border-radius: var(--r);
  padding: 10px 14px;
}

.journal-card-title {
  font-size: 16px;
  font-weight: 800;
  color: var(--navy);
}

.journal-count {
  font-size: 14px;
  font-weight: 600;
}

.journal-body {
  margin-top: 12px;
}

.journal-toolbar {
  display: flex;
  align-items: stretch;
  gap: 8px;
  flex-shrink: 0;
}

.journal-filter {
  font-size: 13px;
  font-weight: 600;
  padding: 8px 10px;
  min-width: 148px;
  border-radius: var(--r);
  border: 1.5px solid var(--gray-200);
  background: var(--white);
  color: var(--navy);
}

.journal-filter:focus {
  border-color: var(--blue);
  outline: none;
}

.btn-journal-download {
  font-size: 13px;
  padding: 10px 14px;
  flex-shrink: 0;
  align-self: stretch;
}

.journal-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}


.journal-item {
  padding: 12px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: var(--r);
  background: var(--gray-50);
}

.journal-item-inner {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}

.journal-dot {
  flex-shrink: 0;
  width: 30px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
  line-height: 1;
  background: var(--white);
  border: 1px solid var(--gray-200);
  border-radius: 50%;
}

.journal-item-content {
  flex: 1;
  min-width: 0;
}

.journal-meta {
  font-size: 12px;
  margin-bottom: 6px;
  color: var(--gray-400);
}

.journal-meta strong {
  color: var(--navy);
}

.journal-action {
  font-size: 14px;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: 4px;
}

.journal-details {
  font-size: 13px;
  line-height: 1.45;
  white-space: pre-wrap;
}

#msg-thread-wrap {
  margin-bottom: 16px;
}

.msg-compose,
.doc-upload {
  border-top: 1.5px solid var(--gray-100);
  padding-top: 16px;
}

.msg-compose-label,
.doc-upload label {
  display: block;
  font-weight: 600;
  font-size: 13px;
  margin: 0 0 8px;
  color: var(--gray-600);
}

.msg-input {
  width: 100%;
  padding: 11px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: var(--r);
  font-size: 14px;
  line-height: 1.45;
  resize: vertical;
  min-height: 72px;
  outline: none;
}

.msg-input:focus {
  border-color: var(--blue);
}

.msg-compose-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 10px;
}

.msg-compose-actions .err {
  flex: 1;
  margin: 0;
}

.msg-compose-actions .btn-primary,
.doc-upload .btn-primary,
#edit-dossier-submit {
  width: auto;
  padding: 10px 18px;
  font-size: 14px;
}

.msg-compose-actions .btn-primary:hover,
.doc-upload .btn-primary:hover,
#edit-dossier-submit:hover {
  background: var(--blue-d);
}

/* ── DOCUMENTS — grille de casiers (prise en charge) ── */

/* Grille de casiers */
.doc-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 12px;
  margin-top: 6px;
}

.doc-card {
  background: var(--casier-fond);
  border: 1.5px solid var(--bordure);
  border-radius: var(--r);
  padding: 14px;
  transition: box-shadow 0.15s;
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
  position: relative;
}

.doc-card:hover { box-shadow: var(--sh); }

.doc-grid--sortable-active .doc-card {
  cursor: grab;
}

.doc-grid--sortable-active .doc-card.sortable-drag {
  cursor: grabbing;
}

.doc-card.sortable-ghost {
  opacity: 0.45;
  border: 2px dashed var(--marine) !important;
  background: color-mix(in srgb, var(--form-badge-fond) 65%, var(--casier-fond));
}

.doc-card.sortable-drag {
  opacity: 0.85;
  border: 2px dashed var(--blue) !important;
  box-shadow: 0 10px 28px rgba(15, 23, 42, 0.14);
  transform: scale(1.015);
  z-index: 2;
}

.doc-card.uploaded { border-color: var(--gray-200, #e5e7eb); }

.doc-card--missing-req {
  border-color: var(--gray-200, #e5e7eb);
}

/* Casier REQUIS rempli — fond vert plein, comme les casiers de dépôt client.
   Sélecteur compound (0-2-0) pour l'emporter sur la règle tardive
   `.doc-card { background: var(--casier-fond) }` (même spécificité, plus bas). */
.doc-card.doc-card--req-ok {
  border-color: var(--green-m);
  background: var(--green-l);
}

.doc-card--autre { border-style: dashed; }

/* ── Bascule Mode casier / Mode liste ─────────────────────────────────── */
.doc-view-toggle {
  display: inline-flex;
  gap: 2px;
  padding: 3px;
  margin-bottom: 12px;
  background: var(--gray-100);
  border-radius: 9px;
  width: fit-content;
}

.doc-view-toggle-btn {
  border: none;
  background: transparent;
  color: var(--gray-500, #6b7280);
  font-size: 12.5px;
  font-weight: 600;
  padding: 6px 12px;
  border-radius: 7px;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.12s, color 0.12s, box-shadow 0.12s;
}

.doc-view-toggle-btn:hover {
  color: var(--blue);
}

.doc-view-toggle-btn--active {
  background: var(--white);
  color: var(--blue);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
}

/* Mode liste : casiers réduits en lignes compactes plutôt qu'en grille de tuiles. */
.doc-view-mode-liste .doc-grid {
  display: flex !important;
  flex-direction: column;
  gap: 6px;
}

.doc-view-mode-liste .doc-card {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 4px 10px;
  padding: 8px 12px;
  min-height: unset;
}

.doc-view-mode-liste .doc-head {
  flex: 0 0 auto;
  margin: 0;
  min-width: 0;
  align-items: center;
}

.doc-view-mode-liste .doc-emoji {
  display: none;
}

.doc-view-mode-liste .doc-name {
  flex: 1 1 0;
  min-width: 0;
  margin: 0;
  font-size: 13px;
  font-weight: 600;
  white-space: normal;
  overflow: visible;
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* Zone texte unique en mode liste (évite doublons + permet le wrap dans flex). */
.doc-view-mode-liste .doc-list-text {
  flex: 1 1 0;
  min-width: 0;
  margin: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.doc-view-mode-liste .doc-list-text .doc-name {
  flex: unset;
  width: 100%;
  max-width: 100%;
}

.doc-view-mode-liste .doc-tags {
  flex: 0 0 auto;
  margin: 0;
}

/* Hint de casier (dépôt client) et rangée de bascule Facultatif/À fournir :
   toujours sur leur propre ligne pleine largeur en mode liste, pour éviter
   qu'ils ne s'entremêlent avec le nom/la pastille sur la même ligne. */
.doc-view-mode-liste .doc-slot-hint,
.doc-view-mode-liste .client-depot-toggle-row {
  flex: 1 1 100%;
  margin: 0;
}

.doc-view-mode-liste .client-depot-toggle-row {
  display: flex;
  justify-content: flex-end;
}

.doc-view-mode-liste .doc-card-mid {
  flex: 1 1 0;
  margin: 0;
  min-width: 0;
  max-width: 100%;
}

.doc-view-mode-liste .doc-card-mid .doc-uploaded {
  margin: 0;
  font-size: 12px;
  font-weight: 400;
  color: var(--gray-500, #6b7280);
  white-space: normal;
  overflow: visible;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.doc-view-mode-liste .doc-card-drop-hint {
  margin: 0;
  white-space: nowrap;
}

.doc-view-mode-liste .doc-act-row,
.doc-view-mode-liste .doc-pill-actions {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  gap: 6px;
  margin-left: auto;
  margin-top: 0;
  flex: 0 0 auto;
  flex-shrink: 0;
  align-self: center;
}

.doc-view-mode-liste .doc-casier-remove {
  position: static;
  align-self: center;
  margin-left: 6px;
  flex-shrink: 0;
}

.doc-view-mode-liste .doc-casier-file-row {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 8px;
  width: 100%;
}

.doc-view-mode-liste .doc-casier-file-row .doc-uploaded {
  flex: 1 1 0;
  min-width: 0;
  white-space: normal;
  overflow: visible;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.doc-view-mode-liste .doc-casier-file-row .doc-pill-actions,
.doc-view-mode-liste .doc-casier-file-row .doc-remove {
  margin-left: auto;
  flex-shrink: 0;
}

.doc-view-mode-liste .doc-card:has(> .doc-casier-remove) {
  padding-bottom: 8px;
}

.doc-view-mode-liste .doc-casier-files {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1 1 100%;
}

.doc-view-mode-liste .doc-casier-file-row {
  padding: 2px 0;
}

.doc-view-mode-liste .casier-autre-row {
  flex: 1 1 100%;
}

.doc-card--dropzone {
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}

.doc-card--dropzone:hover:not(.doc-card--busy):not(.sortable-drag):not([data-casier-filled]) {
  border-color: var(--blue);
  border-style: dashed;
  background: rgba(59, 130, 246, 0.05);
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.08);
}

.doc-card--dropzone.doc-card--drop-over:not([data-casier-filled]) {
  border-color: var(--blue) !important;
  border-style: dashed !important;
  background: rgba(59, 130, 246, 0.1) !important;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.14);
}


.doc-card--dropzone.doc-card--busy {
  opacity: 0.65;
  pointer-events: none;
}

.doc-card--client-depot-uploading .doc-card-drop-hint--uploading {
  color: var(--texte-secondaire);
  font-style: italic;
}

.doc-card-drop-hint {
  margin: 4px 0 0;
  font-size: 12px;
  line-height: 1.45;
  color: var(--gray-500);
  text-align: center;
}

.doc-card--dropzone:hover .doc-card-drop-hint,
.doc-card--dropzone.doc-card--drop-over .doc-card-drop-hint {
  color: var(--blue-d);
}

/* Casier multi-fichiers déjà rempli : affordance discrète pour continuer à
   déposer, sous la liste des fichiers déjà accumulés dans le casier. */
.doc-card-drop-hint--more {
  margin-top: 6px;
  padding-top: 6px;
  border-top: 1px dashed var(--gray-200);
}

/* Modale « + Ajouter un document » (Documents et Offre en cours). */
.add-doc-modal-fields {
  margin-bottom: 10px;
}

.add-doc-modal-fields .fg {
  margin-bottom: 12px;
}

.add-doc-modal-fields .fg:last-child {
  margin-bottom: 0;
}

/* Le menu « Type de document » ne doit jamais élargir la modale au-delà de
   la boîte pointillée : les longs libellés du catalogue (ex. « Jugement /
   mandat / mandat de protection homologué ») sont tronqués en « … » sur la
   valeur affichée — la liste déroulée native reste lisible au complet. */
.add-doc-modal-fields .fg {
  min-width: 0;
}

.add-doc-modal-fields .cmd-select {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.add-doc-modal-drop {
  padding: 18px 14px;
  text-align: center;
}

.doc-grid--sortable-active .doc-card--dropzone {
  cursor: grab;
}

.doc-grid--sortable-active .doc-card--dropzone.sortable-drag {
  cursor: grabbing;
}

.doc-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  box-sizing: border-box;
}

.doc-head .doc-pill {
  margin-left: auto;
  flex-shrink: 0;
}

.doc-head .doc-share-check-wrap {
  flex-shrink: 0;
  order: -1;
}

.doc-emoji { font-size: 20px; line-height: 1; display: inline-flex; align-items: center; }
.doc-emoji .ti-doc-type { font-size: 1.25rem; color: var(--icone-doc-type); }
.ti-title { color: var(--icone-titre); flex-shrink: 0; }
.section-title,
.doc-section-title,
.intake-group-label,
.card-title .card-title-text {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
}
.card-title { display: flex; align-items: center; gap: 0.45rem; flex-wrap: wrap; }
.journal-dot .journal-entry-icon { font-size: 1rem; color: var(--icone-titre); }
.fin-status-badge .fin-status-icon { font-size: 1em; vertical-align: -0.1em; margin-right: 0.15rem; }
.offer-conseil-type-mark { font-size: 0.65rem; vertical-align: 0.15em; margin-right: 0.2rem; }
.offer-conseil-type-mark--green { color: var(--succes); }
.offer-conseil-type-mark--yellow { color: #ca8a04; }
.offer-conseil-type-mark--orange { color: #ea580c; }
.offer-conseil-type-mark--red { color: var(--danger); }
.conseil-emoji .ti,
.prg-emoji .ti,
.wiz-dz-emoji .ti,
.stat-icon .ti,
.ptn-emoji .ti { font-size: 1.35rem; color: var(--icone-doc-type); }
.doc-view-toggle-btn .ti { font-size: 1rem; color: var(--icone-titre); margin-right: 0.25rem; }

.doc-pill {
  font-size: 10px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 20px;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  white-space: nowrap;
}

.pill-ok   { background: var(--green-l);  color: var(--green); }
.pill-req  { background: var(--attention-fond); color: var(--dore-texte); }
.pill-missing-req { background: var(--danger-fond); color: var(--danger); }
.pill-neutral { background: var(--gray-100); color: var(--gray-500); }
.pill-cond { background: var(--attention-fond);  color: var(--dore-texte); }
.pill-opt  { background: var(--gray-100); color: var(--gray-400); }

/* Indicateur ✍️ signatures (saisie manuelle au dépôt + flèches sur le casier). */
.sig-deposit-list {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 1rem 0 1.25rem;
}
.sig-deposit-row {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  padding-bottom: 0.65rem;
  border-bottom: 1px solid var(--border, #e5e7eb);
}
.sig-deposit-row:last-child {
  border-bottom: none;
  padding-bottom: 0;
}
.sig-deposit-main {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}
.sig-deposit-label {
  font-weight: 500;
  flex: 1 1 12rem;
}
.sig-deposit-select {
  min-width: 6.5rem;
  padding: 0.35rem 0.5rem;
  border-radius: var(--radius-sm, 6px);
  border: 1px solid var(--border, #e5e7eb);
}
.sig-deposit-response-recap {
  font-size: 13px;
  margin-top: 0.35rem;
}
.sig-deposit-response {
  width: 100%;
  padding: 0.65rem 0.75rem;
  background: var(--gray-50, #f9fafb);
  border: 1px solid var(--border, #e5e7eb);
  border-radius: 8px;
}
.sig-deposit-response-title {
  font-weight: 600;
  font-size: 13px;
  margin-bottom: 0.45rem;
  color: var(--navy, #1e293b);
}
.vendor-response-choices--inline {
  margin: 0;
  gap: 0.4rem;
}
.vendor-response-choices--inline .vendor-response-choice {
  padding: 0.4rem 0.6rem;
}
.doc-sig-indicator {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 20px;
  line-height: 1.4;
  white-space: nowrap;
  align-self: flex-start;
}

.sig-counter-wrap {
  gap: 2px;
}

.sig-counter-label {
  font-weight: 800;
  margin-right: 2px;
}

.sig-counter-value {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  min-width: 3.5em;
  justify-content: center;
}

.sig-counter-btn {
  border: none;
  background: transparent;
  cursor: pointer;
  padding: 0 3px;
  font-size: 13px;
  line-height: 1;
  color: inherit;
  opacity: 0.8;
  border-radius: 4px;
}

.sig-counter-btn:hover:not(:disabled) {
  opacity: 1;
  background: rgba(0, 0, 0, 0.06);
}

.sig-counter-btn:disabled {
  opacity: 0.25;
  cursor: default;
}

.wiz-opinion-sig-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 4px;
}

.doc-sig-indicator--green  { background: var(--succes-fond);  color: var(--succes); }
.doc-sig-indicator--yellow { background: var(--attention-fond); color: var(--attention); }
.doc-sig-indicator--orange { background: var(--attention-fond); color: var(--dore-texte); }

.doc-name {
  font-size: 13px;
  font-weight: 700;
  color: var(--gray-800);
  line-height: 1.4;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.doc-name-with-form-num {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 6px;
}

.doc-name-with-form-num .doc-name-text {
  min-width: 0;
}

.cond-name-with-ref.doc-name-with-form-num {
  display: inline-flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 6px;
  max-width: 100%;
}

.cond-name-with-ref .doc-name-text {
  font-weight: 700;
}

.doc-form-num-badge {
  display: inline-block;
  flex-shrink: 0;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.02em;
  padding: 2px 6px;
  border-radius: 4px;
  background: var(--form-badge-fond);
  color: var(--marine);
  line-height: 1.3;
  white-space: nowrap;
}

.wd-doc-names .doc-form-num-badge {
  margin-right: 2px;
}

.doc-casier-group {
  border: 1px solid var(--bordure);
  border-radius: 13px;
  padding: 8px;
  background: color-mix(in srgb, var(--carte) 55%, var(--casier-fond));
}

.doc-casier-sort-unit.sortable-ghost,
.doc-casier-group.sortable-ghost {
  opacity: 0.55;
}

.doc-casier-group-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
  padding: 0 2px;
}

.doc-casier-group-count {
  font-size: 12px;
  color: var(--muted, #6b7280);
}

.doc-casier-neg-badge {
  display: inline-block;
  flex-shrink: 0;
  font-size: 10px;
  font-weight: 700;
  padding: 2px 7px;
  border-radius: 4px;
  line-height: 1.3;
  white-space: nowrap;
}

.doc-casier-neg-badge--acceptee {
  background: var(--green-l, #dcfce7);
  color: var(--green, #15803d);
}

.doc-casier-neg-badge--remplacee {
  background: var(--gray-100, #f3f4f6);
  color: var(--gray-500, #6b7280);
  font-weight: 600;
}

.doc-casier-neg-badge--base {
  background: var(--gray-100, #f3f4f6);
  color: var(--gray-400, #9ca3af);
  font-weight: 600;
}

.info-provenance {
  font-size: 0.92em;
  font-weight: 500;
}

.info-mo-a-valider {
  margin: 0 0 12px;
  padding: 10px 12px;
  border-radius: 8px;
  border: 1px solid color-mix(in srgb, var(--dore) 40%, var(--bordure));
  background: var(--attention-fond, #fffbeb);
}

.info-mo-a-valider-title {
  font-weight: 700;
  font-size: 13px;
  color: var(--dore-texte, #92400e);
  margin-bottom: 4px;
}

.info-mo-a-valider-hint {
  font-size: 12px;
  margin: 0 0 6px;
}

.info-mo-a-valider-list {
  margin: 0;
  padding-left: 1.2em;
  font-size: 13px;
}

.mo-validate-card .mo-validate-ia {
  margin: 0 0 14px;
  padding: 10px 12px;
  border-radius: 8px;
  background: var(--gray-50, #f9fafb);
  border: 1px solid var(--bordure, #e5e7eb);
}

.mo-validate-lines {
  margin: 0;
  padding-left: 1.2em;
  font-size: 14px;
  line-height: 1.45;
}

.mo-validate-lines li + li {
  margin-top: 6px;
}

.mo-validate-precisions-label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  margin: 0 0 6px;
}

.mo-validate-precisions {
  width: 100%;
  min-height: 88px;
  resize: vertical;
  margin-bottom: 10px;
  padding: 8px 10px;
  border-radius: 8px;
  border: 1px solid var(--bordure, #d1d5db);
  font: inherit;
}

.mo-validate-actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 4px;
}

.mo-validate-actions .btn-primary,
.mo-validate-actions .btn-secondary {
  width: 100%;
  text-align: center;
  white-space: normal;
  line-height: 1.35;
  padding: 10px 12px;
}

/* Réponse vendeur / répondant (PA/CP ≥ 2/3) */
.vendor-response-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin: 0.5rem 0 0.65rem;
  padding: 0.55rem 0.75rem;
  border-radius: 8px;
  font-size: 13px;
  line-height: 1.35;
}
.vendor-response-banner--warn {
  background: #fff7ed;
  border: 1px solid #fdba74;
  color: #9a3412;
}
.vendor-response-banner--done {
  background: var(--gray-50, #f9fafb);
  border: 1px solid var(--border, #e5e7eb);
  color: var(--navy, #1e293b);
}
.vendor-response-banner-main {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 0.45rem;
  flex-wrap: wrap;
  width: 100%;
}
.vendor-response-banner-text {
  flex: 1 1 12rem;
}
.vendor-response-banner-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}

/* Alerte signature notaire — étape 3 (date d'acte effective, pas de bascule auto) */
.d-acte-signature-alert-wrap:empty {
  display: none;
}

.d-acte-signature-alert-wrap {
  padding: 0 var(--page-align-pad) 10px;
}

.acte-signature-alert {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin: 0;
  padding: 0.55rem 0.75rem;
  border-radius: 8px;
  font-size: 13px;
  line-height: 1.35;
}

.acte-signature-alert--info {
  background: #eff6ff;
  border: 1px solid #93c5fd;
  color: #1e40af;
}

.acte-signature-alert--warn {
  background: #fff7ed;
  border: 1px solid #fdba74;
  color: #9a3412;
}

.acte-signature-alert-main {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  flex-wrap: wrap;
  width: 100%;
}

.acte-signature-alert-text {
  flex: 1 1 12rem;
}

.acte-signature-alert-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  flex-shrink: 0;
}

.acte-signature-confirm-btn {
  white-space: normal;
  line-height: 1.35;
  text-align: center;
}

.acte-signature-today-card .acte-signature-today-actions {
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.vendor-response-choices {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  margin: 1rem 0 1.1rem;
}
.vendor-response-choice {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  padding: 0.55rem 0.75rem;
  border: 1px solid var(--border, #e5e7eb);
  border-radius: 8px;
  cursor: pointer;
}
.vendor-response-choice:has(input:checked) {
  border-color: var(--blue, #2563eb);
  background: var(--blue-l, #eef2f7);
}
.btn-tiny {
  padding: 0.25rem 0.55rem;
  font-size: 12px;
  line-height: 1.2;
}

.doc-casier-group-versions {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.doc-casier-stack {
  margin-top: 6px;
}

.doc-casier-stack-summary {
  position: relative;
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px 10px 16px;
  background: #fff;
  border: 1px solid var(--border, #e5e7eb);
  border-radius: 10px;
  font-size: 12px;
  color: var(--muted, #6b7280);
  user-select: none;
  box-shadow:
    0 -1px 0 #e5e7eb,
    3px -4px 0 -1px #fff,
    3px -4px 0 0 #e5e7eb,
    6px -8px 0 -1px #fff,
    6px -8px 0 0 #e5e7eb;
  margin-top: 10px;
  margin-bottom: 6px;
  margin-right: 8px;
}

.doc-casier-stack-summary::-webkit-details-marker {
  display: none;
}

.doc-casier-stack-summary:hover {
  color: var(--text, #111827);
  border-color: #cbd5e1;
}

.doc-casier-stack[open] .doc-casier-stack-summary {
  box-shadow: 0 -1px 0 #e5e7eb;
  margin-top: 8px;
  margin-right: 0;
}

.doc-casier-stack-peek {
  display: inline-block;
  width: 8px;
  height: 20px;
  border-radius: 3px;
  background: repeating-linear-gradient(90deg, #e5e7eb 0 2px, #fff 2px 4px);
  flex: 0 0 auto;
}

.doc-casier-stack-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.doc-casier-version {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.doc-casier-courante-btn {
  align-self: flex-start;
  font-size: 12px;
  padding: 4px 10px;
  line-height: 1.3;
  font-weight: 500;
  opacity: 0.92;
}

.doc-casier-courante-btn:hover {
  opacity: 1;
}

.doc-view-mode-liste .doc-list-row-bottom .doc-casier-courante-btn {
  margin: 4px 0 2px;
}

.doc-tags { display: flex; flex-wrap: wrap; gap: 4px; }

.doc-act-row {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: auto;
  padding-top: 6px;
  padding-right: 0;
  padding-bottom: 2px;
  align-items: flex-start;
}

/* ✕ de retrait — coin bas-droite du casier, isolé de la rangée d'actions (gauche). */
.doc-casier-remove {
  position: absolute;
  right: 10px;
  bottom: 10px;
  z-index: 3;
}

.doc-card:has(> .doc-casier-remove) {
  padding-bottom: 40px;
}

.doc-casier-file-row .doc-remove:not(.doc-casier-remove) {
  margin-left: auto;
  flex-shrink: 0;
}

.doc-uploaded {
  font-size: 12px;
  color: var(--green);
  font-weight: 600;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.doc-uploaded--neutral {
  color: var(--gray-500);
  font-weight: 500;
}

.btn-upload {
  font-size: 12px;
  font-weight: 700;
  padding: 6px 12px;
  border-radius: 7px;
  border: 1.5px solid var(--blue);
  color: var(--blue);
  background: #fff;
  cursor: pointer;
  transition: background 0.15s;
  align-self: flex-start;
}

.btn-upload:hover   { background: var(--blue-l); }
.btn-upload:disabled { opacity: 0.5; cursor: not-allowed; }

/* Casier "Autre" */
.casier-autre-row {
  flex-direction: row;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
}

.doc-act-row .doc-remove:not(.doc-casier-remove),
.doc-act-row .cond-remove {
  align-self: flex-start;
  margin-top: 2px;
}

.casier-autre-groupe {
  flex: 0 0 auto;
  font-size: 12px;
  padding: 5px 8px;
  border: 1px solid var(--gray-200);
  border-radius: 6px;
  background: #fff;
  color: var(--navy);
  outline: none;
  cursor: pointer;
}
.casier-autre-groupe:focus { border-color: var(--blue); }

.casier-autre-nom {
  flex: 1 1 80px;
  min-width: 80px;
  font-size: 12px;
  padding: 5px 8px;
  border: 1px solid var(--gray-200);
  border-radius: 6px;
  outline: none;
}

.casier-autre-nom:focus { border-color: var(--blue); }

/* Casier « Annexe » répétable (onglet offre) */
.casier-annexe-row {
  flex-direction: column;
  align-items: stretch;
  gap: 6px;
}

.casier-annexe-row .casier-annexe-type {
  width: 100%;
}

.casier-offre-add-mo-detail {
  display: block;
  width: 100%;
  margin-top: 8px;
  box-sizing: border-box;
}

.casier-offre-add-mo-fields {
  margin-top: 8px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.casier-offre-add-mo-fields .casier-mo-cible-label {
  font-size: 12px;
  font-weight: 600;
  color: var(--gray-600);
}

.casier-offre-add-mo-fields .casier-offre-add-mo-cible {
  width: 100%;
}

.doc-card--annexe .doc-name {
  font-weight: 700;
}

/* Bouton visibilité client (👁 / œil barré) — cible tactile 44×44 px */
.doc-vis-toggle-btn {
  position: absolute;
  bottom: 6px;
  right: 6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  min-width: 44px;
  min-height: 44px;
  padding: 0;
  margin: 0;
  border: 1.5px solid var(--gray-200);
  border-radius: 50%;
  background: var(--gray-50);
  cursor: pointer;
  pointer-events: auto;
  z-index: 2;
  font: inherit;
  line-height: 1;
  transition: background 0.15s, border-color 0.15s, box-shadow 0.15s;
}

.doc-vis-toggle-icon {
  font-size: 13px;
  line-height: 1;
  pointer-events: none;
}

.doc-vis-toggle-btn:hover {
  box-shadow: 0 2px 8px rgba(15, 23, 42, 0.08);
}

.doc-vis-toggle-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.35);
}

.doc-vis-toggle-btn.doc-vis-indicator--internal:hover {
  background: var(--danger-fond);
  border-color: var(--danger-bordure);
}

.doc-vis-toggle-btn.doc-vis-indicator--client:hover {
  background: color-mix(in srgb, var(--succes-fond) 85%, var(--succes));
  border-color: color-mix(in srgb, var(--succes) 30%, var(--bordure));
}

.doc-casier-file-row .doc-vis-toggle-btn {
  position: static;
  margin-left: auto;
  flex-shrink: 0;
}

.doc-card:has(> .doc-vis-toggle-btn) {
  padding-bottom: 50px;
}

.doc-card:has(> .doc-vis-toggle-btn) .doc-act-row {
  padding-right: 4px;
}

.doc-vis-indicator--internal {
  color: var(--danger);
  background: var(--danger-fond);
  border-color: var(--danger-bordure);
}

.doc-vis-indicator--client {
  color: var(--succes);
  background: var(--succes-fond);
  border-color: color-mix(in srgb, var(--succes) 25%, var(--bordure));
}

.doc-act-row .doc-dl-btn {
  align-self: flex-start;
  font-size: 13px;
  font-weight: 400;
  color: var(--icone-action);
}

/* Rangée d'actions en bas à gauche (⬇ œil / œil barré ✏️) — le ✕ est dans le coin bas-droite. */
.doc-pill-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
}

.doc-pill-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  min-width: 30px;
  min-height: 30px;
  flex-shrink: 0;
  padding: 0;
  margin: 0;
  border: 1.5px solid var(--bordure-forte);
  border-radius: 8px;
  background: var(--casier-fond);
  color: var(--texte-secondaire);
  cursor: pointer;
  font-size: 13px;
  line-height: 1;
  transition: background 0.15s, border-color 0.15s, box-shadow 0.15s;
}

.doc-pill-btn:hover {
  border-color: var(--blue);
  box-shadow: 0 2px 8px rgba(15, 23, 42, 0.08);
}

.doc-pill-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.35);
}

.doc-pill-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.doc-pill-btn--danger:hover {
  border-color: var(--red);
  color: var(--red);
  background: #fef2f2;
}

.doc-pill-icon { pointer-events: none; }

/* Le bouton visibilité rejoint la rangée de pastilles (garde sa cible tactile ~44px) */
.doc-pill-actions .doc-vis-toggle-btn {
  position: static;
  margin: 0;
}

.doc-pill-actions .doc-dl-btn,
.doc-pill-actions .doc-rename-btn {
  align-self: center;
  margin-top: 0;
  font-size: 13px;
  font-weight: 400;
  color: var(--gray-600);
}

.doc-casier-file-row .doc-pill-actions {
  margin-left: auto;
  flex-shrink: 0;
}

.doc-share-check-wrap {
  display: flex;
  align-items: center;
  flex-shrink: 0;
  cursor: pointer;
  min-width: 44px;
  min-height: 44px;
  justify-content: center;
  margin: -10px 4px -10px -10px;
}

.doc-casier-file-row .doc-share-check-wrap {
  margin: 0;
  min-width: 28px;
  min-height: 28px;
}

.doc-share-check {
  width: 16px;
  height: 16px;
  margin: 0;
  cursor: pointer;
  accent-color: var(--blue);
}

.doc-bulk-share-bar {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 6px;
  margin-bottom: 12px;
  padding: 8px 10px;
  background: var(--gray-50);
  border: 1px solid var(--gray-100);
  border-radius: 8px;
}

.doc-bulk-share-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px 8px;
  min-width: 0;
}

.doc-bulk-share-actions .doc-toolbar-btn,
.doc-bulk-add-row .doc-toolbar-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12.5px;
  font-weight: 700;
  padding: 6px 10px;
  line-height: 1.25;
  white-space: nowrap;
  flex-shrink: 0;
  border-width: 1px;
  border-radius: 6px;
}

.doc-bulk-share-actions .doc-toolbar-btn .ti {
  font-size: 1em;
  flex-shrink: 0;
}

.doc-bulk-share-count {
  display: block;
  min-height: 28px;
  line-height: 28px;
  font-size: 11px;
  font-weight: 600;
  white-space: nowrap;
}

.doc-bulk-add-row {
  display: flex;
  justify-content: flex-start;
  margin: -4px 0 12px;
}

.doc-bulk-share-bar .doc-bulk-vis-btn[data-bulk-visible="1"] {
  color: var(--green);
  border-color: #bfe6cf;
}

.doc-bulk-share-bar .doc-bulk-vis-btn[data-bulk-visible="1"]:not(:disabled):hover {
  background: var(--green-l);
}

.doc-bulk-share-bar .doc-bulk-vis-btn[data-bulk-visible="0"] {
  color: var(--gray-600);
}

.doc-bulk-share-bar .doc-bulk-zip-btn {
  color: var(--blue);
  border-color: #c5d9f5;
}

.doc-bulk-share-bar .doc-bulk-zip-btn:not(:disabled):hover {
  background: var(--blue-l, #eef4fc);
}

.doc-bulk-share-bar .doc-bulk-select-toggle-btn {
  color: var(--gray-700);
}

.doc-casier-files {
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 100%;
}

.doc-casier-file-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 10px;
  padding-top: 8px;
  border-top: 1px solid var(--gray-100);
}

.doc-casier-files .doc-casier-file-row:first-child {
  padding-top: 0;
  border-top: none;
}

/* Header + barre de progression de la prise en charge */
.intake-section  { margin-bottom: 4px; }

.intake-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 6px;
}

.intake-title {
  font-size: 14px;
  font-weight: 800;
  color: var(--navy);
}

.intake-header--prog {
  justify-content: flex-end;
}

.intake-prog-label { font-size: 12px; font-weight: 700; }

.intake-achat-note {
  font-size: 12px;
  margin: 0 0 10px;
  padding: 8px 10px;
  background: var(--gray-100);
  border-radius: 6px;
}

.intake-recat-note {
  font-size: 12px;
  margin: 0 0 12px;
  line-height: 1.45;
}

.intake-recat-hint {
  font-size: 10px;
  font-weight: 700;
  color: var(--gray-400);
  margin: 0 0 6px;
  letter-spacing: 0.02em;
  cursor: grab;
}

.doc-grid--intake-recat {
  min-height: 44px;
}

.doc-grid--intake-recat .doc-card[data-casier-key^="slot:"] {
  cursor: grab;
}

.doc-grid--intake-recat .sortable-ghost {
  opacity: 0.45;
}

.client-requis-sub {
  font-size: 12px;
  margin: -4px 0 10px;
}

.client-requis-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.client-requis-row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 10px 12px;
  border-radius: 8px;
  border: 1.5px solid var(--gray-200);
  background: #fff;
}

.client-requis-row--ok {
  border-color: var(--green);
  background: #f0fdf4;
}

.client-requis-row--pending {
  border-color: var(--gray-200);
  background: var(--gray-50);
}

.client-requis-row--pending .client-requis-name {
  color: var(--gray-600);
}

.client-requis-row--pending .client-requis-icon {
  color: var(--gray-400);
}

.client-requis-icon {
  font-size: 16px;
  line-height: 1.2;
  flex-shrink: 0;
}

.client-requis-body {
  flex: 1;
  min-width: 0;
}

.client-requis-name {
  display: block;
  font-size: 13px;
  font-weight: 700;
  color: var(--navy);
}

.client-requis-status {
  display: block;
  font-size: 12px;
  color: var(--gray-600);
  margin-top: 2px;
}

.client-requis-row--ok .client-requis-status {
  color: #166534;
  font-weight: 700;
}

.client-requis-row--pending .client-requis-status {
  color: var(--gray-600);
  font-weight: 700;
}

.intake-prog-bar {
  height: 5px;
  background: var(--gray-100);
  border-radius: 3px;
  overflow: hidden;
  margin-bottom: 16px;
}

.intake-prog-fill {
  height: 100%;
  border-radius: 3px;
  transition: width 0.3s ease;
}

.intake-group { margin-bottom: 16px; }

.intake-group--autre { margin-top: 4px; }

.intake-group-label {
  font-size: 11px;
  font-weight: var(--fw-semibold);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--texte-secondaire);
  margin-bottom: 8px;
  padding-bottom: 4px;
  border-bottom: 1px solid var(--bordure);
}

/* Tags dans un casier */
.intake-tag {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  padding: 1px 7px;
  border-radius: 20px;
  white-space: nowrap;
}

.intake-tag--loi  { background: #ede9fe; color: #6d28d9; }
.intake-tag--cond { background: var(--amber-l); color: var(--amber); }
.intake-tag--opt  { background: var(--gray-100); color: var(--gray-400); }

.intake-divider {
  border: none;
  border-top: 1.5px solid var(--gray-100);
  margin: 18px 0;
}

/* ── DOCUMENTS — sous-onglets ── */
.doc-subtab-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 16px;
}

.doc-subtab-btn {
  padding: 7px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: 20px;
  background: #fff;
  color: var(--gray-600);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
  white-space: nowrap;
}

.doc-subtab-btn:hover {
  border-color: var(--navy);
  color: var(--navy);
}

.doc-subtab-btn--active {
  background: var(--navy);
  border-color: var(--navy);
  color: #fff;
}

.doc-subtab-btn--old:disabled {
  background: var(--gray-50, #f9fafb);
  border-color: var(--gray-100);
  color: var(--gray-400, #9ca3af);
  cursor: not-allowed;
}

.doc-panels {
  min-height: 40px;
}

/* ── « Anciennes offres » / « Vos anciennes offres » (migration 36) ── */
.old-offers-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.old-offer-row {
  border: 1.5px solid var(--gray-200);
  border-radius: 10px;
  overflow: hidden;
}

.old-offer-row--hidden {
  opacity: 0.72;
  border-style: dashed;
}

.old-offer-row-toolbar {
  display: flex;
  align-items: stretch;
  gap: 8px;
  width: 100%;
  background: var(--gray-50, #f9fafb);
  padding-right: 14px;
  box-sizing: border-box;
}

.old-offer-row-toolbar .old-offer-row-head {
  flex: 1;
  min-width: 0;
  background: transparent;
}

.old-offer-row-action {
  flex-shrink: 0;
  align-self: center;
  margin-right: 0;
  font-size: 11px;
  font-weight: 700;
  padding: 4px 8px;
  border-radius: 6px;
  border: 1px solid var(--gray-200);
  background: #fff;
  color: var(--navy);
  cursor: pointer;
  white-space: nowrap;
  font-family: inherit;
}

.old-offer-row-action:hover {
  background: var(--gray-100);
}

.old-offers-show-hidden-link {
  display: inline-block;
  margin-top: 10px;
  padding: 0;
  border: none;
  background: none;
  font-size: 12px;
  font-weight: 600;
  color: var(--gray-600);
  cursor: pointer;
  text-decoration: underline;
  font-family: inherit;
}

.old-offers-show-hidden-link:hover {
  color: var(--navy);
}

.old-offer-row-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  width: 100%;
  padding: 12px 14px;
  background: var(--gray-50, #f9fafb);
  border: none;
  cursor: pointer;
  text-align: left;
  font-family: inherit;
}

.old-offer-row-title {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--navy);
}

.old-offer-row-head-main {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  min-width: 0;
}

.old-offer-row-status {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  color: var(--gray-600);
  background: var(--gray-100);
  border: 1px solid var(--gray-200);
  border-radius: 999px;
  padding: 2px 8px;
  line-height: 1.35;
}

.old-offer-cond-note {
  margin: 0 0 8px;
  font-size: 12px;
}

.old-offer-row-chevron {
  font-size: 12px;
  font-weight: 600;
  color: var(--gray-600);
  white-space: nowrap;
}

.old-offer-row-body {
  padding: 14px;
  border-top: 1px solid var(--gray-100);
}

.old-offer-row-body.collapsed {
  display: none;
}

.old-offer-summary {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.old-offer-key-data {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  font-size: 13px;
  color: var(--gray-800, #1f2937);
}

.old-offer-block-title {
  font-size: 12.5px;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: 8px;
}

.old-offer-cond-list {
  margin: 0;
  padding-left: 18px;
  font-size: 13px;
  color: var(--gray-800, #1f2937);
  line-height: 1.6;
}

.old-offer-cond-list li {
  margin-bottom: 8px;
}

.old-offer-cond-name {
  font-weight: 600;
}

.old-offer-cond-delays {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-top: 4px;
  padding-left: 0;
  font-size: 12px;
  color: var(--gray-600, #4b5563);
  font-weight: 500;
}

.old-offer-docs {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.old-offer-doc-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 6px 10px;
  background: var(--gray-50, #f9fafb);
  border-radius: 8px;
  font-size: 13px;
  color: var(--gray-800, #1f2937);
}

.old-offer-doc-open {
  border: none;
  background: transparent;
  cursor: pointer;
  font-size: 13px;
  color: var(--blue);
}

.old-offer-conseils {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

/* ── DOCUMENTS — formulaire d'upload ── */
.doc-upload-wrap {
  margin-top: 20px;
  border-top: 1.5px solid var(--gray-100);
  padding-top: 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* Zone de glisser-déposer */
.doc-drop-zone {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 24px 16px;
  border: 2px dashed var(--gray-200);
  border-radius: var(--r);
  background: #f9fafb;
  text-align: center;
  cursor: default;
  transition: border-color 0.15s, background 0.15s;
}

.doc-drop-zone--over {
  border-color: var(--blue);
  background: var(--blue-l);
}

.doc-file-hidden {
  display: none;
}

.doc-drop-icon {
  font-size: 28px;
  line-height: 1;
}

.doc-drop-text {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: center;
}

.doc-choose-btn {
  padding: 7px 14px;
  border: 1.5px solid var(--navy);
  border-radius: 7px;
  background: var(--navy);
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.15s;
}

.doc-choose-btn:hover {
  background: var(--blue-d);
  border-color: var(--blue-d);
}

.doc-drop-hint {
  font-size: 13px;
  color: var(--gray-400);
}

.doc-file-name {
  font-size: 12px;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Ligne catégorie + visibilité */
.doc-meta-row {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}

.doc-meta-field {
  display: flex;
  align-items: center;
  gap: 8px;
}

.doc-meta-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--gray-600);
  white-space: nowrap;
}

.doc-meta-select {
  padding: 8px 12px;
  border: 1.5px solid var(--gray-200);
  border-radius: 7px;
  font-size: 13px;
  background: #fff;
  outline: none;
  cursor: pointer;
}

.doc-meta-select:focus {
  border-color: var(--blue);
}

.doc-visible-toggle {
  display: flex;
  align-items: center;
  gap: 7px;
  cursor: pointer;
}

.doc-visible-label {
  font-size: 13px;
  font-weight: 500;
  color: var(--gray-700);
  user-select: none;
}

/* Actions */
.doc-upload-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.link-btn {
  background: none;
  border: 0;
  padding: 0;
  color: var(--blue);
  font: inherit;
  font-size: inherit;
  font-weight: 700;
  cursor: pointer;
  text-decoration: underline;
}

.link-btn:disabled {
  opacity: 0.6;
  cursor: wait;
}

.cond-row-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}

.cond-row--done {
  background: var(--green-l);
  border-color: var(--green-m);
}

.cond-row--annulee {
  background: var(--gray-50, #f9fafb);
  border-color: var(--gray-200, #e5e7eb);
  opacity: 0.92;
}

.detail-row-main--struck strong {
  text-decoration: line-through;
  color: var(--gray-500, #6b7280);
}

.badge-annulee-cp {
  background: #fef3c7;
  color: #92400e;
  text-transform: none;
  letter-spacing: 0;
  font-size: 11px;
  font-weight: 700;
}

.substep-annulee-cp {
  opacity: 0.88;
}

.substep-label--struck {
  text-decoration: line-through;
  color: var(--gray-500, #6b7280);
}

.cond-realise-date {
  font-size: 12px;
  font-weight: 700;
  color: var(--green);
  text-transform: none;
  letter-spacing: 0;
}

.cond-actions {
  flex-shrink: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  max-width: 100%;
}

.cond-remove {
  font-size: 12px;
  font-weight: 700;
  padding: 5px 10px;
  border-radius: 7px;
  border: 1.5px solid var(--gray-200);
  color: var(--gray-600);
  background: var(--white);
  white-space: nowrap;
}

.cond-remove:hover {
  border-color: var(--red);
  color: var(--red);
  background: #fef2f2;
}

.cond-remove:disabled {
  opacity: 0.6;
  cursor: wait;
}

.cond-section-head,
.obl-section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 16px;
  padding-bottom: 12px;
  border-bottom: 1.5px solid var(--gray-100);
}

.obl-section-head {
  margin-top: 28px;
}

.cond-card-title {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: none;
}

#cond-err {
  margin-top: 10px;
}

.cond-status-btn {
  font-size: 12px;
  font-weight: 700;
  padding: 5px 12px;
  border-radius: 7px;
  border: 1.5px solid var(--green);
  color: var(--green);
  background: var(--white);
  white-space: nowrap;
}

.cond-status-btn:hover {
  background: var(--green-l);
}

.cond-status-btn:disabled {
  opacity: 0.6;
  cursor: wait;
}

#parti-err {
  margin-top: 10px;
}

.parti-section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 16px;
  padding-bottom: 12px;
  border-bottom: 1.5px solid var(--gray-100);
}

.parti-card-title {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: none;
}

.btn-add-parti.hide {
  display: none;
}

.parti-row-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.parti-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}

.parti-edit {
  font-size: 12px;
  font-weight: 700;
  padding: 5px 10px;
  border-radius: 7px;
  border: 1.5px solid var(--blue);
  color: var(--blue);
  background: var(--white);
  white-space: nowrap;
}

.parti-edit:hover {
  background: var(--blue-l);
}

.parti-edit:disabled {
  opacity: 0.6;
  cursor: wait;
}

.parti-remove {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  border-radius: 7px;
  border: 1.5px solid var(--gray-200);
  background: var(--white);
  color: var(--gray-600);
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
}

.parti-remove:hover {
  border-color: var(--red);
  color: var(--red);
  background: #fef2f2;
}

.parti-remove:disabled {
  opacity: 0.6;
  cursor: wait;
}

.parti-form {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1.5px solid var(--gray-100);
}

.parti-form-title {
  font-size: 14px;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: 12px;
}

/* Case à cocher prototype (marine cochée) */
.proto-check {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  user-select: none;
  margin: 2px 0 0;
  min-height: 18px;
}

.proto-check-input {
  position: absolute;
  opacity: 0;
  width: 18px;
  height: 18px;
  margin: 0;
  padding: 0;
  cursor: pointer;
}

.proto-check-box {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  border: 2px solid var(--gray-300);
  border-radius: 4px;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s, border-color 0.15s;
}

.proto-check-input:focus-visible + .proto-check-box {
  box-shadow: 0 0 0 3px rgba(44, 65, 96, 0.15);
}

.proto-check-input:checked + .proto-check-box {
  background: var(--navy);
  border-color: var(--navy);
}

.proto-check-input:checked + .proto-check-box::after {
  content: "";
  width: 5px;
  height: 9px;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
  margin-top: -2px;
}

.proto-check-text {
  font-size: 13px;
  font-weight: 600;
  color: var(--gray-800);
  line-height: 1;
}

.parti-role-custom {
  margin-top: 8px;
}

.cond-clause-custom {
  margin-top: 8px;
}

.create-form-card {
  margin-bottom: 24px;
}

.create-form-section {
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid var(--gray-200);
}

.create-form-section:first-of-type {
  margin-top: 8px;
  padding-top: 0;
  border-top: none;
}

.create-form-section-title {
  font-size: 15px;
  font-weight: 800;
  color: var(--navy);
  margin: 0 0 6px;
}

.create-form-section-sub {
  font-size: 12px;
  margin: 0 0 12px;
}

.create-participants-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.create-parti-block {
  border: 1.5px solid var(--gray-200);
  border-radius: 12px;
  padding: 14px;
  background: var(--gray-50, #f8fafc);
}

.create-parti-block-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
}

.create-parti-block-title {
  font-size: 13px;
  font-weight: 800;
  color: var(--navy);
}

.create-parti-remove {
  border: none;
  background: transparent;
  color: var(--red);
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  font-family: inherit;
}

.create-add-parti {
  margin-top: 12px;
}

.create-invite-check {
  margin-top: 4px;
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 16px;
}

.form-grid .fg-full {
  grid-column: 1 / -1;
}

.form-grid select,
.modal-select {
  width: 100%;
  padding: 10px 12px;
  border: 1.5px solid var(--gray-200);
  border-radius: var(--r-sm);
  font-size: 14px;
  color: var(--gray-800);
  background: var(--white);
  outline: none;
}

.form-grid select:focus,
.modal-select:focus {
  border-color: var(--blue);
}

.modal-textarea {
  width: 100%;
  padding: 10px 12px;
  border: 1.5px solid var(--gray-200);
  border-radius: var(--r-sm);
  font-size: 14px;
  line-height: 1.4;
  color: var(--gray-800);
  outline: none;
  background: var(--white);
  resize: vertical;
  min-height: 72px;
}

.modal-textarea:focus {
  border-color: var(--blue);
}

.form-grid input[type="text"],
.form-grid input[type="number"],
.form-grid input[data-fp-kind="date"],
.form-grid input[type="time"],
.form-grid input[type="email"],
.form-grid input[type="tel"] {
  width: 100%;
  padding: 11px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: var(--r);
  font-size: 14px;
  outline: none;
}

.form-grid input:focus {
  border-color: var(--blue);
}

.req {
  color: var(--red);
}

.field-hint {
  display: block;
  font-size: 12px;
  color: var(--gray-400);
  margin-top: 4px;
  font-weight: 400;
}

.form-actions {
  margin-top: 8px;
  padding-top: 16px;
  border-top: 1.5px solid var(--gray-100);
}

.form-actions-btns {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 22px;
}

/* ── Boutons prototype (composants partagés) ── */
.btn-secondary,
.btn-modal-cancel {
  font-size: 13px;
  font-weight: 700;
  padding: 9px 18px;
  border-radius: 8px;
  border: 1.5px solid var(--bordure-forte);
  background: var(--white);
  color: var(--marine);
  transition: background 0.2s;
}

.btn-secondary:hover,
.btn-modal-cancel:hover {
  background: var(--creme-fond);
}

.btn-advance,
.btn-modal-create,
.btn-add-client,
.btn-add-dossier,
.btn-add-parti,
#pm-confirm,
#step-next,
#cond-submit,
#parti-submit,
#create-submit {
  font-size: 13px;
  font-weight: 700;
  padding: 10px 20px;
  border-radius: 10px;
  background: var(--marine);
  color: var(--white);
  border: none;
  transition: background 0.2s;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.btn-advance:hover,
.btn-modal-create:hover,
.btn-add-client:hover,
.btn-add-dossier:hover,
.btn-add-parti:hover,
#pm-confirm:hover,
#step-next:hover:not(:disabled),
#cond-submit:hover,
#parti-submit:hover,
#create-submit:hover {
  background: var(--marine-fonce);
}

.btn-advance:disabled,
#step-next:disabled {
  background: var(--gray-200);
  color: var(--gray-400);
  cursor: not-allowed;
}

.btn-regress,
.step-back-btn {
  font-size: 13px;
  font-weight: 700;
  padding: 9px 18px;
  border-radius: 8px;
  border: 1.5px solid var(--orange);
  background: var(--white);
  color: var(--orange);
  transition: all 0.2s;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.btn-regress:hover,
.step-back-btn:hover {
  background: var(--orange-l);
}

.btn-regress:disabled,
.step-back-btn:disabled {
  border-color: var(--gray-200);
  background: var(--gray-100);
  color: var(--gray-400);
  cursor: not-allowed;
}

.btn-end-tx,
.btn-danger {
  font-size: 13px;
  font-weight: 700;
  padding: 9px 18px;
  border-radius: 8px;
  background: var(--red);
  color: var(--white);
  border: none;
  transition: background 0.2s;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.btn-end-tx:hover,
.btn-danger:hover {
  background: #b91c1c;
}

/* Bouton « Réinitialiser l'analyse » — action destructive, contour rouge
   (moins criard qu'un bouton plein à côté de « Relancer l'analyse IA »). */
.btn-reset-analyse {
  font-size: 13px;
  font-weight: 600;
  padding: 8px 16px;
  border-radius: 8px;
  background: var(--white);
  color: var(--red);
  border: 1.5px solid var(--red);
  cursor: pointer;
  transition: background 0.2s, color 0.2s;
}

.btn-reset-analyse:hover:not(:disabled) {
  background: var(--red);
  color: var(--white);
}

.btn-reset-analyse:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* Zone de glisser-déposer de la photo de propriété. */
.property-photo-dropzone {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  text-align: center;
  padding: 14px 16px;
  border: 1.5px dashed var(--bordure-forte, #d3d1c7);
  border-radius: 10px;
  background: var(--carte, #fcfaf6);
  color: var(--texte-secondaire, #6b6a64);
  font-size: 13px;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s;
}

.property-photo-dropzone small {
  font-size: 11px;
  color: var(--texte-doux, #97958c);
}

.property-photo-dropzone:hover {
  border-color: var(--marine, #2c4160);
  background: #fff;
}

.property-photo-dropzone--over {
  border-color: var(--marine, #2c4160);
  border-style: solid;
  background: #e7ecf3;
  color: var(--marine, #2c4160);
}

/* Tâches retirées — bloc repliable discret en bas d'une étape (courtier). */
.substep-removed-group {
  margin-top: 6px;
}

.substep-removed-group > summary {
  cursor: pointer;
  list-style: none;
  font-size: 12px;
  color: var(--texte-doux, #97958c);
  padding: 6px 2px;
  user-select: none;
}

.substep-removed-group > summary::-webkit-details-marker {
  display: none;
}

.substep-removed-group > summary::before {
  content: "▸ ";
  font-size: 10px;
}

.substep-removed-group[open] > summary::before {
  content: "▾ ";
}

.substep-removed-group > summary:hover {
  color: var(--texte-secondaire, #6b6a64);
}

.substep-removed-list {
  padding-left: 4px;
}

/* Note d'aide sous un champ de la modale rétribution. */
.retrib-field-hint {
  font-size: 12px;
  color: var(--texte-doux, #97958c);
  margin: 4px 0 0;
  line-height: 1.45;
}

/* Second paragraphe explicatif dans les pop-ups de confirmation. */
.modal-text--details {
  font-size: 12.5px;
  color: var(--texte-doux, #97958c);
  margin-top: -4px;
}

.btn-modal-confirm,
#step-back-confirm {
  font-size: 13px;
  font-weight: 700;
  padding: 9px 18px;
  border-radius: 8px;
  background: var(--orange);
  color: var(--white);
  border: none;
  transition: background 0.2s;
}

.btn-modal-confirm:hover,
#step-back-confirm:hover {
  background: #c2410c;
}

.btn-primary-inline {
  width: auto;
  padding: 10px 18px;
  font-size: 14px;
}

/* ── RESPONSIVE ── */
@media (max-width: 640px) {
  .login-box {
    padding: 32px 20px 28px;
  }

  .topnav {
    padding: 0 14px;
  }

  .drawer-topbar {
    padding: 8px 16px;
    min-height: 0;
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
  }

  .drawer-client-name,
  .detail-header .detail-title {
    font-size: 19px;
  }

  .drawer-topbar-right {
    width: 100%;
    justify-content: flex-start;
  }

  .sb-title {
    font-size: 18px;
  }

  .admin-strip,
  .step-banner {
    padding-left: 16px;
    padding-right: 16px;
  }

  .topnav-info {
    display: none;
  }

  .body {
    padding: 16px;
  }

  .detail-content {
    padding: 16px 16px 24px;
  }

  .detail-title {
    font-size: 19px;
  }

  .step-indicator {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .step-controls-btns {
    flex-direction: column;
  }

  .step-controls-btns .btn-secondary {
    width: 100%;
    text-align: center;
  }

  .form-grid {
    grid-template-columns: 1fr;
  }

  #partner-modal .form-grid .fg:nth-child(n) {
    grid-column: 1 / -1;
  }

  .page-head {
    flex-direction: column;
    align-items: stretch;
  }

  .btn-add-dossier {
    width: 100%;
    text-align: center;
  }
}

/* ── Flatpickr — thème portail Jacques / Roussel ──────────────────────────── */

/* Le champ altInput visible doit hériter du style du portail */
.flatpickr-input.flatpickr-input {
  background: var(--white);
}

/* Masquer le vrai input caché sans perturber le layout */
.fg input[data-fp-kind="date"].flatpickr-input,
.fg input[type="time"].flatpickr-input,
.form-grid input[data-fp-kind="date"].flatpickr-input,
.form-grid input[type="time"].flatpickr-input,
.cond-field input[data-fp-kind="date"].flatpickr-input,
.cond-field input[type="time"].flatpickr-input,
.fm-grid-edit input[data-fp-kind="date"].flatpickr-input,
.fm-grid-edit input[type="time"].flatpickr-input,
.cond-days-row input[data-fp-kind="date"].flatpickr-input,
.cond-days-row input[type="time"].flatpickr-input,
.wiz-dates input[data-fp-kind="date"].flatpickr-input,
.wiz-dates input[type="time"].flatpickr-input,
.wiz-delai-reponse-row input[data-fp-kind="date"].flatpickr-input,
.wiz-delai-reponse-row input[type="time"].flatpickr-input {
  display: none;
}

/* L'altInput (champ affiché) hérite du style portail */
.flatpickr-input.flatpickr-mobile,
input.flatpickr-input[readonly],
input.flatpickr-input.flatpickr-alt-input {
  width: 100%;
  padding: 11px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: var(--r);
  font-size: 14px;
  color: var(--gray-800);
  outline: none;
  transition: border-color 0.2s, box-shadow 0.2s;
  background: var(--white);
  font-family: inherit;
  cursor: pointer;
  box-sizing: border-box;
}

.cond-days-row input.flatpickr-input[readonly],
.cond-days-row input.flatpickr-input.flatpickr-alt-input {
  flex: 1;
  min-width: 0;
}

input.flatpickr-input[readonly]:focus,
input.flatpickr-input.flatpickr-alt-input:focus {
  border-color: var(--blue);
  box-shadow: 0 0 0 3px rgba(44, 65, 96, 0.08);
}

/* Calendrier — couleur primaire */
.flatpickr-calendar {
  font-family: inherit;
  border-radius: var(--r);
  box-shadow: var(--sh-lg);
  border: 1px solid var(--gray-200);
}

/* Pastille « À réaliser avant le… » — calendrier centré (flatpickr wrap + centered). */
.fp-centered-backdrop {
  position: fixed;
  inset: 0;
  z-index: 100001;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: max(12px, env(safe-area-inset-top, 0px)) max(12px, env(safe-area-inset-right, 0px))
    max(12px, env(safe-area-inset-bottom, 0px)) max(12px, env(safe-area-inset-left, 0px));
  background: rgba(15, 23, 42, 0.55);
  box-sizing: border-box;
}

.fp-centered-backdrop.hide {
  display: none;
}

body.app-busy-active .fp-centered-backdrop {
  pointer-events: auto;
}

.fp-centered-backdrop .flatpickr-calendar.open,
.fp-centered-backdrop .flatpickr-calendar.flatpickr-calendar--centered-modal {
  position: relative !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  bottom: auto !important;
  transform: none !important;
  margin: 0;
  max-width: min(100%, 22rem);
  max-height: calc(100vh - 24px);
  overflow: auto;
}

.flatpickr-day.selected,
.flatpickr-day.selected:hover,
.flatpickr-day.startRange,
.flatpickr-day.endRange {
  background: var(--blue);
  border-color: var(--blue);
}

.flatpickr-day.selected:hover {
  background: var(--blue-d);
  border-color: var(--blue-d);
}

.flatpickr-day:hover {
  background: var(--blue-l);
}

.flatpickr-months .flatpickr-month,
.flatpickr-weekdays,
span.flatpickr-weekday {
  background: var(--blue);
  color: var(--white);
  fill: var(--white);
}

.flatpickr-current-month .flatpickr-monthDropdown-months,
.flatpickr-current-month input.cur-year {
  color: var(--white);
}

.flatpickr-prev-month svg,
.flatpickr-next-month svg {
  fill: var(--white);
}

.flatpickr-prev-month:hover svg,
.flatpickr-next-month:hover svg {
  fill: var(--blue-m);
}

/* Sélecteur d'heure */
.flatpickr-time input:hover,
.flatpickr-time input:focus,
.flatpickr-time .flatpickr-am-pm:hover,
.flatpickr-time .flatpickr-am-pm:focus {
  background: var(--blue-l);
}

.numInputWrapper:hover {
  background: var(--blue-l);
}

/* ── Toasts ───────────────────────────────────────────────────────────────── */

.toast-container {
  position: fixed;
  bottom: 24px;
  right: 24px;
  z-index: 2000;
  display: flex;
  flex-direction: column;
  gap: 10px;
  pointer-events: none;
}

.toast {
  pointer-events: auto;
  min-width: 240px;
  max-width: 380px;
  padding: 13px 18px;
  border-radius: var(--r);
  font-size: 14px;
  font-weight: 600;
  line-height: 1.4;
  box-shadow: var(--sh-lg);
  cursor: pointer;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 0.25s ease, transform 0.25s ease;
}

.toast--visible {
  opacity: 1;
  transform: translateY(0);
}

.toast--success {
  background: var(--green);
  color: var(--white);
}

.toast--error {
  background: var(--red);
  color: var(--white);
}

.toast--info {
  background: var(--blue);
  color: var(--white);
}

/* ── Partenaires (prototype v2) ── */
.partners-intro {
  margin-bottom: 16px;
}

.ptn-cat-title {
  font-size: 12px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--gray-500);
  margin: 16px 0 8px;
}

.ptn-cat-title:first-child {
  margin-top: 0;
}

.ptn-section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
  border-bottom: 2px solid var(--gray-200);
  padding-bottom: 8px;
  margin-bottom: 4px;
}

.ptn-section-title {
  font-size: 16px;
  font-weight: var(--fw-semibold);
  color: var(--navy);
}

.ptn-section-sub {
  font-size: 12.5px;
  color: var(--gray-500);
  margin: 0 0 6px;
  line-height: 1.4;
}

.ptn-cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
  align-items: start;
}

.ptn-col-reco-intro {
  grid-column: 1;
  grid-row: 1;
}

.ptn-col-spacer {
  grid-column: 2;
  grid-row: 1;
}

.ptn-col-reco-cards {
  grid-column: 1;
  grid-row: 2;
}

.ptn-col-reco-cards > .ptn-grid:first-child {
  margin-top: 0;
}

.ptn-col-perso {
  grid-column: 2;
  grid-row: 2;
  background: var(--blue-l);
  border: 1.5px solid var(--blue);
  border-radius: 14px;
  padding: 16px 16px 18px;
  min-width: 0;
}

.ptn-col-reco-cards,
.ptn-col-perso {
  min-width: 0;
}

.ptn-col-perso .ptn-grid {
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
}

.ptn-col-perso .ptn-section-head {
  border-bottom-color: var(--blue);
}

.ptn-col-perso .ptn-section-title {
  color: var(--blue);
}

@media (max-width: 820px) {
  .ptn-cols {
    grid-template-columns: 1fr;
  }

  .ptn-col-reco-intro,
  .ptn-col-spacer,
  .ptn-col-reco-cards,
  .ptn-col-perso {
    grid-column: 1;
    grid-row: auto;
  }

  .ptn-col-spacer {
    display: none;
  }
}

.ptn-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 12px;
  margin-bottom: 6px;
}

.ptn-card {
  border: 1.5px solid var(--gray-200);
  border-radius: 12px;
  padding: 14px;
  background: #fff;
  transition: box-shadow 0.2s;
  min-width: 0;
  position: relative;
}

.ptn-card:hover {
  box-shadow: var(--sh);
}

.ptn-card-header {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  margin-bottom: 6px;
  min-width: 0;
}

.ptn-card-top {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  flex: 1 1 auto;
  min-width: 0;
  margin-bottom: 0;
}

.ptn-card-toolbar {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
  margin: -2px -2px 0 0;
}

.ptn-card-toolbar .ptn-remove,
.ptn-card-toolbar .cond-remove {
  margin-left: 0;
}

.ptn-card-toolbar .ptn-edit,
.ptn-card-toolbar .ptn-remove {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  padding: 0;
  line-height: 1;
  font-size: 13px;
  flex-shrink: 0;
  white-space: normal;
}

.ptn-edit {
  font-size: 11px;
  font-weight: 700;
  padding: 4px 8px;
  border-radius: 6px;
  border: 1.5px solid var(--gray-200);
  background: #fff;
  color: var(--navy);
  cursor: pointer;
  font-family: inherit;
  white-space: nowrap;
}

.ptn-edit:hover {
  background: var(--gray-50, #f8fafc);
  border-color: var(--blue);
  color: var(--blue);
}

.ptn-emoji {
  font-size: 18px;
  line-height: 1.2;
}

.ptn-name {
  flex: 1 1 0;
  min-width: 0;
  font-weight: 800;
  color: var(--navy);
  font-size: 14px;
  line-height: 1.35;
  overflow-wrap: normal;
  word-break: normal;
}

.ptn-spec {
  font-size: 13px;
  color: var(--gray-500);
  margin-bottom: 9px;
  line-height: 1.45;
}

.ptn-links {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.ptn-links a {
  font-size: 12px;
  font-weight: 700;
  color: var(--blue);
  background: var(--blue-l);
  padding: 5px 10px;
  border-radius: 7px;
  text-decoration: none;
}

.ptn-links a:hover {
  background: var(--blue);
  color: #fff;
}

.btn-promote {
  margin-top: 12px;
  width: 100%;
  background: var(--blue-l);
  color: var(--navy);
  border: 1.5px solid var(--blue);
  border-radius: 8px;
  padding: 8px 12px;
  font-size: 12.5px;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.15s;
  font-family: inherit;
}

.btn-promote:hover {
  background: #dbe7f5;
}

.btn-add-p {
  font-size: 13px;
  font-weight: 700;
  padding: 9px 20px;
  border-radius: 8px;
  border: none;
  background: var(--blue);
  color: var(--white);
  cursor: pointer;
  transition: background 0.2s;
  font-family: inherit;
}

.btn-add-p:hover {
  background: var(--blue-d);
}

/* Variante « secondaire » : fond blanc + texte/bordure bleu foncé — plus lisible
   que le fond plein bleu, cohérente avec les autres boutons secondaires. */
.btn-add-p--outline {
  background: #fff;
  color: var(--blue);
  border: 1.5px solid var(--blue);
}

.btn-add-p--outline:hover {
  background: var(--blue-l, #eef2f7);
  color: var(--blue-d, #22344c);
  border-color: var(--blue-d, #22344c);
}

/* ── Célébration client (transaction complétée) ── */
.partners-reminder {
  margin-top: 12px;
  border: 1.5px solid var(--gray-200);
  border-left: 4px solid var(--red);
  background: var(--white);
  border-radius: 10px;
  padding: 12px 14px;
}

.partners-reminder .pr-title {
  font-weight: 800;
  color: var(--navy);
  font-size: 13.5px;
  margin-bottom: 4px;
}

.partners-reminder .pr-text {
  font-size: 12.5px;
  color: var(--gray-600);
  line-height: 1.45;
}

.partners-reminder .pr-link {
  margin-top: 9px;
  font-size: 12.5px;
  font-weight: 700;
  padding: 7px 14px;
  border-radius: 8px;
  border: none;
  background: var(--navy);
  color: #fff;
  cursor: pointer;
  transition: background 0.2s;
  font-family: inherit;
}

.partners-reminder .pr-link:hover {
  background: var(--blue-d, #22344c);
}

.cel-hero {
  background: linear-gradient(135deg, var(--navy), var(--blue));
  color: #fff;
  border-radius: 14px;
  padding: 26px 22px;
  text-align: center;
  position: relative;
  overflow: hidden;
  margin-bottom: 14px;
}

.cel-confetti {
  font-size: 40px;
  line-height: 1;
}

.cel-kicker {
  margin-top: 6px;
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  opacity: 0.85;
}

.cel-title {
  font-size: 28px;
  font-weight: 900;
  margin-top: 4px;
}

.cel-sub {
  font-size: 13.5px;
  opacity: 0.95;
  max-width: 520px;
  margin: 8px auto 0;
  line-height: 1.5;
}

.cel-card {
  background: #fff;
  border: 1.5px solid var(--gray-200);
  border-radius: 14px;
  overflow: hidden;
  margin-bottom: 14px;
}

.cel-photo {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 30px;
  color: #fff;
  min-height: 210px;
}

.property-photo-slot.cel-photo {
  min-height: 210px;
}

.property-photo-slot.cel-bigphoto .property-photo-placeholder {
  font-size: 48px;
}

.cel-photo-0 {
  background: linear-gradient(135deg, #2c4160, #3a5577);
}

.cel-photoreview {
  display: grid;
  grid-template-columns: 1.25fr 1fr;
  gap: 3px;
  min-height: 210px;
}

.cel-bigphoto {
  font-size: 48px;
}

.cel-greview {
  background: linear-gradient(135deg, #1a2a44, #2c4160);
  color: #fff;
  padding: 20px 18px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 7px;
  text-align: center;
}

.cel-gr-stars {
  color: #fbbc04;
  font-size: 30px;
  letter-spacing: 4px;
  line-height: 1;
}

.cel-gr-title {
  font-size: 17px;
  font-weight: 800;
}

.cel-gr-text {
  font-size: 13px;
  line-height: 1.5;
  color: #dbe4f0;
  max-width: 300px;
}

.cel-gr-btn {
  margin-top: 6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: #fff;
  color: #1a2a44;
  font-weight: 800;
  font-size: 13.5px;
  padding: 11px 16px;
  border-radius: 10px;
  text-decoration: none;
  transition: background 0.15s;
}

.cel-gr-btn:hover {
  background: #eef3fb;
}

.cel-summary {
  padding: 16px 18px;
}

.cel-addr {
  font-size: 18px;
  font-weight: 800;
  color: var(--navy);
}

.cel-meta {
  font-size: 14px;
  color: var(--gray-600);
  margin-top: 3px;
}

.cel-price {
  font-weight: 800;
  color: var(--navy);
}

.cel-tag {
  margin-top: 8px;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--gray-600);
}

.cel-slash {
  color: var(--red);
}

.cel-notaire {
  font-size: 13px;
  font-weight: 600;
  color: var(--gray-500, #64748b);
}

.cel-dates {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

.cel-date-card {
  background: #fff;
  border: 1.5px solid var(--gray-200);
  border-left: 4px solid var(--blue);
  border-radius: 10px;
  padding: 12px 14px;
}

.cel-date-card .cdl {
  font-size: 12px;
  font-weight: 700;
  color: var(--gray-500, #64748b);
}

.cel-date-card .cdv {
  font-size: 15px;
  font-weight: 800;
  color: var(--navy);
  margin-top: 3px;
}

@media (max-width: 520px) {
  .cel-photoreview {
    grid-template-columns: 1fr;
  }

  .cel-bigphoto {
    min-height: 120px;
  }

  .cel-dates {
    grid-template-columns: 1fr;
  }

  .cel-title {
    font-size: 23px;
  }
}

/* ── Client : Mon équipe ── */
.client-section-title {
  margin-bottom: 4px;
}

.client-section-sub {
  margin-bottom: 20px;
}

.contact-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}

@media (max-width: 500px) {
  .contact-grid {
    grid-template-columns: 1fr;
  }
}

.contact-card {
  background: var(--white);
  border: 1.5px solid var(--gray-200);
  border-radius: var(--r, 12px);
  padding: 20px;
  display: flex;
  align-items: center;
  gap: 16px;
}

.avatar {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--navy), var(--blue));
  color: var(--white);
  font-size: 18px;
  font-weight: 900;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.contact-info strong {
  font-size: 15px;
  font-weight: 800;
  color: var(--navy);
  display: block;
}

.contact-info .role {
  font-size: 12px;
  color: var(--gray-400);
  margin-bottom: 9px;
  display: block;
}

.clink {
  font-size: 12px;
  font-weight: 700;
  padding: 5px 11px;
  border-radius: 6px;
  background: var(--blue-l);
  color: var(--blue);
  display: inline-block;
  margin-right: 6px;
  margin-bottom: 4px;
  text-decoration: none;
}

.contact-card-feat {
  border: 2px solid var(--blue);
  background: linear-gradient(135deg, var(--blue-l), #fff);
  padding: 30px 28px;
  gap: 24px;
  margin-bottom: 16px;
  box-shadow: var(--sh, 0 2px 8px rgba(0, 0, 0, 0.08));
}

.avatar-feat {
  width: 88px;
  height: 88px;
  font-size: 32px;
  box-shadow: 0 4px 14px rgba(44, 65, 96, 0.3);
}

.contact-card-feat .contact-info strong {
  font-size: 21px;
}

.contact-card-feat .contact-info .role {
  font-size: 14px;
  margin-bottom: 12px;
}

.contact-card-feat .clink {
  font-size: 13px;
  padding: 7px 14px;
}

.feat-badge {
  font-size: 11px;
  font-weight: 800;
  color: #fff;
  background: var(--blue);
  padding: 3px 10px;
  border-radius: 20px;
  vertical-align: middle;
  margin-left: 8px;
  white-space: nowrap;
}

.clink:hover {
  background: var(--blue);
  color: var(--white);
}

.client-agency-card {
  margin-top: 20px;
}

.client-agency-body {
  font-size: 14px;
  color: var(--gray-600);
  line-height: 1.7;
}

.client-agency-name {
  font-weight: 800;
  color: var(--navy);
  font-size: 15px;
}

.client-agency-sub {
  margin-bottom: 10px;
}

.client-agency-links {
  display: flex;
  flex-direction: column;
  gap: 7px;
}

.client-agency-links a {
  color: var(--blue);
  font-weight: 600;
  text-decoration: none;
}

/* ── Client : Conseils ── */
.conseil-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 16px;
}

.conseil-card {
  background: var(--white);
  border: 1.5px solid var(--gray-200);
  border-radius: var(--r, 12px);
  padding: 18px;
  transition: box-shadow 0.2s, transform 0.15s;
}

.conseil-card:hover {
  box-shadow: var(--sh, 0 2px 8px rgba(0, 0, 0, 0.08));
  transform: translateY(-2px);
}

.conseil-emoji {
  font-size: 28px;
  margin-bottom: 10px;
}

.conseil-tag {
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.8px;
  color: var(--blue);
  background: var(--blue-l);
  display: inline-block;
  padding: 3px 10px;
  border-radius: 20px;
  margin-bottom: 9px;
}

.conseil-card h4 {
  font-size: 14px;
  font-weight: 800;
  color: var(--navy);
  margin-bottom: 6px;
}

.conseil-card p {
  font-size: 13px;
  color: var(--gray-600);
  line-height: 1.6;
}

.conseil-card p a {
  color: var(--blue);
  font-weight: 700;
  text-decoration: underline;
}

.conseil-step {
  font-size: 11px;
  font-weight: 700;
  color: var(--gray-400);
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--gray-100);
}

/* ── Client : Calculateurs ── */
.calc-card {
  margin-bottom: 18px;
}

.calc-sub {
  font-size: 12px;
  color: var(--gray-400);
  margin: -4px 0 12px;
}

.calc-autofill-note {
  color: var(--blue);
}

/* Séparateur entre Conseils et Programmes dans l'onglet Ressources (client). */
.ressources-sep {
  height: 1px;
  background: var(--bordure);
  margin: 28px 0;
}

/* Section « Rétention et purge » d'un dossier conclu (courtier). */
.purge-box {
  margin-top: 14px;
  padding: 12px 14px;
  border: 1px solid var(--bordure);
  border-radius: 12px;
  background: var(--creme-fond);
}

.purge-box--done {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 13px;
  color: var(--texte-doux);
}

.purge-title {
  display: flex;
  align-items: center;
  gap: 7px;
  font-weight: 600;
  font-size: 14px;
}

.purge-sub {
  margin: 4px 0 8px;
  font-size: 12px;
  color: var(--texte-doux);
  line-height: 1.45;
}

.purge-etat {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  font-weight: 500;
}

.purge-etat--verrou {
  color: var(--danger);
}

.purge-etat--prete {
  color: var(--texte);
}

.purge-actions {
  display: flex;
  gap: 8px;
  margin-top: 10px;
  flex-wrap: wrap;
}

/* Note sous la ligne de prime SCHL — informative, discrète. */
.calc-schl-hint {
  margin: 4px 0 2px;
}

/* Précision sous le total d'un calculateur — ex. la part du total qui sera
   facturée plus tard. Un cran plus lisible que la mention générale. */
.calc-total-note {
  margin: 6px 0 0;
  font-size: 12px;
  line-height: 1.45;
  color: var(--texte-doux);
}

.calc-total-note b {
  color: var(--texte);
}

/* Mentions sous les montants estimés — voir js/calcDisclaimer.js.
   Discrètes mais toujours présentes : le portail éclaire, le courtier tranche. */
.calc-disclaimer {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  margin: 14px 0 0;
  padding-top: 12px;
  border-top: 1px solid var(--gray-200, #e2e8f0);
  font-size: 11px;
  line-height: 1.45;
  color: var(--gray-400);
}

.calc-disclaimer-icon {
  flex: none;
  margin-top: 1px;
  opacity: 0.7;
}

.calc-disclaimer--line {
  margin-top: 8px;
  padding-top: 0;
  border-top: 0;
  font-style: italic;
}

.calc-alerte {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  margin: 8px 0 0;
  padding: 8px 10px;
  border-radius: 8px;
  background: var(--amber-l);
  border: 1px solid var(--amber);
  font-size: 11px;
  line-height: 1.4;
  color: var(--texte);
}

.calc-alerte-icon {
  flex: none;
  margin-top: 1px;
}

.calc-grid {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.calc-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.calc-row-block {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.calc-row-hint {
  font-size: 11px;
  color: var(--gray-400);
  margin: 0;
  line-height: 1.35;
  /* S'arrête avant la colonne des champs (140px + gouttière) : sinon le texte
     long des droits de mutation court sous les cases à remplir. */
  max-width: calc(100% - 160px);
}

.calc-row label {
  font-size: 13px;
  color: var(--gray-700, #334155);
  flex: 1;
}

.calc-row input {
  width: 140px;
  padding: 8px 11px;
  border: 1.5px solid var(--gray-200);
  border-radius: 8px;
  font-size: 14px;
  text-align: right;
  outline: none;
  font-family: inherit;
}

.calc-row input:focus {
  border-color: var(--blue);
}

.calc-row input.calc-ro {
  background: var(--gray-50, #f8fafc);
  color: var(--gray-500, #64748b);
}

.calc-link {
  color: var(--blue);
  font-weight: 600;
  text-decoration: underline;
}

.calc-total {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 2px solid var(--gray-200);
  font-size: 15px;
  font-weight: 800;
  color: var(--navy);
}

.calc-total span:last-child {
  font-size: 19px;
}

/* ── Client : Programmes RE/MAX ── */
.prg-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 14px;
}

.prg-card {
  border: 1.5px solid var(--gray-200);
  border-radius: 14px;
  padding: 18px;
  background: #fff;
  display: flex;
  flex-direction: column;
  transition: box-shadow 0.2s, transform 0.12s;
}

.prg-card:hover {
  box-shadow: var(--sh, 0 2px 8px rgba(0, 0, 0, 0.08));
  transform: translateY(-2px);
}

.prg-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 10px;
}

.prg-emoji {
  font-size: 26px;
}

.prg-tag {
  font-size: 10px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--blue);
  background: var(--blue-l);
  padding: 4px 9px;
  border-radius: 20px;
}

.prg-name {
  font-size: 15px;
  font-weight: 800;
  color: var(--navy);
  margin-bottom: 7px;
}

.prg-desc {
  font-size: 13px;
  color: var(--gray-600, #475569);
  line-height: 1.5;
  flex: 1;
  margin-bottom: 14px;
}

.prg-cta {
  align-self: flex-start;
  font-size: 13px;
  font-weight: 700;
  color: #fff;
  background: var(--blue);
  padding: 8px 14px;
  border-radius: 8px;
  text-decoration: none;
  transition: background 0.2s;
}

.prg-cta:hover {
  background: var(--blue-d);
}

/* ── Client : barre documents + résumé imprimable ── */
.c-doccomplete {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--gray-600);
  margin-bottom: 10px;
}

.c-doccomplete-bar {
  flex: 1;
  height: 8px;
  border-radius: 20px;
  background: var(--gray-200);
  overflow: hidden;
}

.c-doccomplete-bar > span {
  display: block;
  height: 100%;
  background: var(--green);
  border-radius: 20px;
}

#client-resume-wrap {
  margin: 10px 0 14px;
}

.btn-resume {
  width: 100%;
  font-size: 13.5px;
  font-weight: 700;
  padding: 11px 16px;
  border-radius: 10px;
  border: 1.5px solid var(--navy);
  background: var(--white);
  color: var(--navy);
  cursor: pointer;
  transition: all 0.2s;
  font-family: inherit;
}

.btn-resume:hover {
  background: var(--navy);
  color: #fff;
}

/* ── Pastille rétribution (Documents, mandat vente) ── */
.doc-head-row {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 4px;
}

.doc-head-main {
  flex: 1;
  min-width: 0;
}

.doc-name-row {
  display: flex;
  align-items: center;
  gap: 28px;
  flex-wrap: wrap;
  margin-top: 2px;
  min-width: 0;
}

.doc-name-row #d-retrib-chip {
  display: block;
  flex: 1 1 100%;
  min-width: 0;
}

.retrib-row {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  min-width: 0;
  width: 100%;
}

.retrib-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--blue-l);
  color: var(--navy);
  border: 1px solid var(--blue-m, #c2cfdf);
  border-radius: 22px;
  padding: 9px 17px;
  font-size: 15px;
  font-weight: 600;
  white-space: nowrap;
}

.prix-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--amber-l, #fff8e6);
  color: var(--navy);
  border: 1px solid var(--amber-m, #e8d49a);
  border-radius: 22px;
  padding: 9px 17px;
  font-size: 15px;
  font-weight: 600;
  white-space: nowrap;
}

.prix-chip .retrib-edit,
.retrib-chip .retrib-edit {
  font-size: 15px;
  border: none;
  background: transparent;
  cursor: pointer;
  padding: 0 2px;
  line-height: 1;
}

.commission-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--green-l, #e7f6ee);
  color: var(--green, #1a7f4b);
  border: 1px solid #bfe6cf;
  border-radius: 22px;
  padding: 9px 17px;
  font-size: 15px;
  font-weight: 600;
  white-space: nowrap;
}

.commission-chip-wait {
  background: var(--gray-100, #f1f3f6);
  color: var(--gray-500, #64748b);
  border-color: var(--gray-200, #e2e6ec);
  font-weight: 500;
}

.retrib-note {
  margin-top: 8px;
  font-size: 12px;
  font-style: italic;
  color: var(--gray-500);
  cursor: pointer;
  overflow-wrap: anywhere;
  word-break: break-word;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  max-width: 520px;
}

.retrib-note.expanded {
  -webkit-line-clamp: unset;
  overflow: visible;
}

.retrib-note-info {
  cursor: default;
  color: var(--blue);
  font-style: normal;
  -webkit-line-clamp: unset;
  overflow: visible;
}

/* Détail 7.1/7.3/net (CCVE/CCDE) : une seule ligne, pleine largeur — pas de
 * retour à la ligne prématuré (ex. « % » qui tombe sous la ligne). */
.retrib-note-breakdown {
  max-width: none;
  width: 100%;
  white-space: nowrap;
  overflow-wrap: normal;
  word-break: normal;
  overflow-x: auto;
}

/* Modale « Modifier la rétribution » — alignée sur les autres modales (fg, champs modernes) */
#retrib-modal .modal-card {
  width: min(90vw, 520px);
}

#retrib-modal .retrib-modal-fields {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-top: 4px;
}

#retrib-modal .retrib-modal-field {
  margin-bottom: 0;
}

#retrib-modal .retrib-value-row {
  display: flex;
  align-items: stretch;
  gap: 10px;
}

#retrib-modal .retrib-value-row select {
  flex: 0 0 auto;
  min-width: 92px;
  padding: 11px 12px;
  border: 1.5px solid var(--gray-200);
  border-radius: var(--r);
  font-size: 14px;
  font-weight: 700;
  color: var(--navy);
  background: var(--white);
  outline: none;
  cursor: pointer;
  transition: border-color 0.2s, box-shadow 0.2s;
  appearance: auto;
}

#retrib-modal .retrib-value-row select:focus {
  border-color: var(--blue);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--blue) 14%, transparent);
}

#retrib-modal .retrib-value-row input {
  flex: 1 1 auto;
  min-width: 0;
  width: auto;
  padding: 11px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: var(--r);
  font-size: 14px;
  color: var(--gray-800);
  background: var(--white);
  outline: none;
  transition: border-color 0.2s, box-shadow 0.2s;
}

#retrib-modal .retrib-value-row input:focus {
  border-color: var(--blue);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--blue) 14%, transparent);
}

#retrib-modal .retrib-modal-net {
  margin-top: 20px;
  padding: 14px 16px;
  border-radius: 12px;
  background: color-mix(in srgb, var(--blue) 7%, var(--white));
  border: 1.5px solid color-mix(in srgb, var(--blue) 18%, var(--gray-200));
  font-size: 14px;
  font-weight: 600;
  color: var(--navy);
  line-height: 1.45;
}

#retrib-modal .retrib-modal-net b {
  font-size: 16px;
  font-weight: 800;
  color: var(--blue);
}

#retrib-modal .retrib-modal-net .muted {
  font-weight: 500;
  color: var(--gray-500);
}

#retrib-modal .retrib-modal-check {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 18px;
  padding: 12px 14px;
  border-radius: var(--r);
  border: 1.5px solid var(--gray-200);
  background: var(--gray-50, #f8fafc);
  font-size: 13px;
  font-weight: 600;
  color: var(--gray-800);
  cursor: pointer;
  user-select: none;
}

#retrib-modal .retrib-modal-check input {
  width: 17px;
  height: 17px;
  margin: 0;
  flex-shrink: 0;
  cursor: pointer;
  accent-color: var(--blue);
}

#retrib-modal .retrib-modal-reason {
  margin-top: 18px;
  margin-bottom: 4px;
}

#retrib-modal .form-actions-btns {
  margin-top: 20px;
}

.calc-mode-sel {
  padding: 8px 6px;
  border: 1.5px solid var(--gray-200);
  border-radius: 8px;
  font-size: 13px;
  background: var(--white);
  outline: none;
  cursor: pointer;
  min-width: 78px;
  font-weight: 800;
  color: var(--navy);
  padding: 8px 8px;
}

.change-check {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  font-weight: 700;
  color: var(--gray-800);
  background: var(--amber-l);
  border: 1.5px solid #fde68a;
  border-radius: 8px;
  padding: 11px 14px;
  cursor: pointer;
}

.change-check input {
  width: 17px;
  height: 17px;
  cursor: pointer;
  flex-shrink: 0;
}

.modal-label {
  display: block;
  margin-top: 12px;
  font-size: 13px;
  font-weight: 700;
  color: var(--navy);
}

/* ── Suivi client (timeline, bandeau, fiche marché) ── */
.progress-wrap {
  margin-bottom: 22px;
}

.progress-label {
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  color: var(--gray-500);
  margin-bottom: 6px;
}

.progress-label strong {
  color: var(--navy);
}

.progress-bg {
  height: 8px;
  border-radius: 20px;
  background: var(--gray-200);
  overflow: hidden;
}

.progress-fill {
  height: 100%;
  background: var(--green);
  border-radius: 20px;
  transition: width 0.3s ease;
}

.status-banner {
  border-radius: var(--r, 12px);
  padding: 16px 20px;
  display: flex;
  align-items: flex-start;
  gap: 14px;
  margin-bottom: 22px;
}

.status-banner.s1 {
  background: var(--blue-l);
  border: 1.5px solid var(--blue-m, #c2cfdf);
}

.status-banner.s3 {
  background: var(--orange-l, #fff7ed);
  border: 1.5px solid #fdba74;
}

.status-banner.s4 {
  background: var(--green-l);
  border: 1.5px solid var(--green-m, #bfe6cf);
}

.status-icon {
  font-size: 28px;
  line-height: 1;
  flex-shrink: 0;
}

.status-text strong {
  display: block;
  font-size: 16px;
  color: var(--navy);
  margin-bottom: 4px;
}

.status-text p {
  margin: 0;
  font-size: 13.5px;
  color: var(--gray-600);
  line-height: 1.55;
}

.timeline {
  position: relative;
}

.tl-item {
  display: flex;
  gap: 14px;
  padding-bottom: 4px;
}

.tl-left {
  display: flex;
  flex-direction: column;
  align-items: center;
  flex-shrink: 0;
}

.tl-dot {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
  font-weight: 800;
  position: relative;
  z-index: 1;
  flex-shrink: 0;
}

.tl-dot.done {
  background: var(--succes);
  color: var(--white);
}

.tl-dot.current {
  background: var(--marine);
  color: var(--white);
  box-shadow: 0 0 0 2px var(--dore);
  border: none;
}

.tl-dot.pending {
  background: var(--gray-100);
  color: var(--gray-400);
  border: 2px solid var(--gray-200);
  opacity: 0.85;
}

.tl-connector {
  width: 2px;
  flex: 1;
  min-height: 32px;
  background: var(--gray-200);
  margin: 4px 0;
}

.tl-connector.filled {
  background: var(--green);
}

.tl-item:last-child .tl-connector {
  display: none;
}

.tl-body {
  flex: 1;
  padding: 6px 0 32px;
}

.tl-item:last-child .tl-body {
  padding-bottom: 0;
}

.tl-step-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--gray-400);
  margin-bottom: 4px;
}

.tl-step-title {
  font-size: 17px;
  font-weight: var(--fw-semibold);
  color: var(--marine);
  margin-bottom: 6px;
}

.tl-step-title.muted {
  color: var(--gray-300, #cbd5e1);
  font-weight: var(--fw-medium);
  opacity: 0.75;
}

.tl-step-header-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.tl-step-header-main {
  flex: 1;
  min-width: 0;
}

.tl-step-header-actions {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
  margin-top: 2px;
}

.tl-step-unlock,
.tl-step-lock,
.tl-step-accordion-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
  padding: 0 10px;
  border: 1.5px solid var(--gray-200);
  border-radius: 8px;
  background: var(--white);
  color: var(--gray-600);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.12s, border-color 0.12s;
  white-space: nowrap;
}

.tl-step-accordion-toggle {
  min-width: 88px;
}

.tl-step-lock {
  min-width: auto;
  gap: 4px;
}

.tl-step-unlock:hover,
.tl-step-lock:hover,
.tl-step-accordion-toggle:hover {
  background: var(--blue-l);
  border-color: var(--blue-m, #c2cfdf);
}

.badge-locked {
  background: var(--gray-100);
  color: var(--gray-500);
  border: 1px solid var(--gray-200);
  margin-left: 6px;
}

.tl-item--locked .tl-dot.done {
  opacity: 0.65;
}

.tl-item--locked .tl-step-title.muted {
  color: var(--gray-400);
}

.tl-detail--locked {
  opacity: 0.72;
  pointer-events: none;
  user-select: none;
}

.tl-detail.collapsed {
  display: none;
}

.substep-list--locked .substep {
  opacity: 0.85;
}

.substep-list--locked .substep-actions,
.substep-list--locked .btn-add-task,
.substep-list--locked .substep-restore {
  display: none;
}

.tl-detail {
  background: var(--gray-50);
  border-left: 3px solid var(--blue-m, #c2cfdf);
  border-radius: 0 8px 8px 0;
  padding: 12px 16px;
  margin-top: 4px;
}

.tl-detail.green {
  border-left-color: var(--green-m, #bfe6cf);
}

.tl-detail p {
  font-size: 13px;
  color: var(--gray-600);
  line-height: 1.65;
  margin: 0 0 8px;
}

.tl-client-hint {
  font-size: 13px;
  color: var(--navy);
  margin: 8px 0 !important;
}

.substep-list {
  margin-top: 10px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.substep-list-bulk-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-bottom: 2px;
}

.substep-list-bulk-header .substep-bulk-btn {
  font-size: 12px;
  padding: 6px 10px;
  white-space: nowrap;
}

.substep {
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--white);
  border: 1.5px solid var(--gray-200);
  border-radius: 8px;
  padding: 9px 10px 9px 14px;
  font-size: 13px;
  color: var(--gray-600);
  font-weight: 500;
}

.substep-select-wrap {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  cursor: pointer;
}

.substep-select {
  width: 16px;
  height: 16px;
  cursor: pointer;
  accent-color: var(--blue);
}

.substep-main {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}

.substep-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}

.substep-click {
  cursor: pointer;
  transition: border-color 0.12s, background 0.12s;
  border-radius: 6px;
  margin: -4px -6px;
  padding: 4px 6px;
}

.substep-click:hover {
  background: var(--blue-l);
}

.substep.done-sub {
  border-color: color-mix(in srgb, var(--succes) 22%, var(--bordure));
  background: color-mix(in srgb, var(--attention-fond) 35%, var(--carte));
}

.substep.done-sub .substep-label {
  color: var(--texte);
  font-weight: 600;
}

.substep.done-sub .substep-realise,
.substep-realise {
  font-size: 12px;
  font-weight: 600;
  color: var(--succes);
  padding-left: 12px;
  margin-top: 1px;
}

.substep-label {
  flex: 1;
}

.substep-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
  align-items: flex-start;
}

.substep-sub {
  font-size: 12px;
  font-weight: 600;
  color: var(--gray-500);
  padding-left: 12px;
  border-left: 2px solid var(--gray-200);
  margin-top: 1px;
}

.substep-icon {
  flex-shrink: 0;
  font-weight: 800;
}

.s2-overview {
  margin-top: 12px;
  border: 1.5px solid var(--gray-200);
  border-radius: 10px;
  padding: 12px 14px;
  background: var(--gray-50, #f8fafc);
}

.s2o-title {
  font-size: 13px;
  font-weight: 800;
  color: var(--navy);
  margin-bottom: 8px;
}

.s2o-price {
  background: linear-gradient(135deg, var(--navy), var(--blue));
  border-radius: 10px;
  padding: 12px 16px;
  margin-bottom: 10px;
  color: #fff;
}

.s2o-price-lbl {
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  opacity: 0.85;
}

.s2o-price-val {
  font-size: 26px;
  font-weight: 900;
  line-height: 1.1;
  margin-top: 2px;
}

.s2o-row {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  font-size: 13px;
  color: var(--gray-600);
  padding: 5px 0;
  border-bottom: 1px dashed var(--gray-200);
}

.s2o-row b {
  color: var(--navy);
  text-align: right;
}

.s2o-time {
  display: block;
  font-size: 11px;
  font-weight: 500;
  color: var(--gray-400);
  margin-top: 2px;
}

.s2o-incl {
  margin-top: 10px;
}

.s2o-incl-lbl {
  font-size: 12px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--gray-400);
  margin-bottom: 5px;
}

.s2o-incl-text {
  font-size: 13px;
  color: var(--gray-700, #334155);
  line-height: 1.5;
  white-space: pre-line;
}

.s2o-ie-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 12px;
}

.s2o-ie-lbl {
  font-size: 12px;
  font-weight: 800;
  margin-bottom: 5px;
}

.s2o-ie-lbl.ok {
  color: var(--green, #16a34a);
}

.s2o-ie-lbl.no {
  color: var(--red);
}

.fm-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(95px, 1fr));
  gap: 10px;
  margin-bottom: 6px;
}

.fm-stat {
  background: var(--gray-50, #f8fafc);
  border: 1px solid var(--gray-200);
  border-radius: 10px;
  padding: 10px 8px;
  text-align: center;
}

.fm-stat-val {
  font-size: 17px;
  font-weight: 800;
  color: var(--navy);
}

.fm-stat-lbl {
  font-size: 11px;
  color: var(--gray-400);
  margin-top: 2px;
}

.fm-dates {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin: 10px 0 4px;
}

.fm-date {
  background: var(--blue-l);
  border: 1px solid var(--blue-m, #bfdbfe);
  border-radius: 10px;
  padding: 10px 12px;
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.fm-date-lbl {
  font-size: 11px;
  font-weight: 700;
  color: var(--navy);
}

.fm-date-lbl em {
  font-style: normal;
  color: var(--gray-400);
  font-weight: 600;
}

.fm-date-val {
  font-size: 15px;
  font-weight: 800;
  color: var(--navy);
}

@media (max-width: 560px) {
  .fm-dates {
    grid-template-columns: 1fr;
  }
}

.fm-cr-head {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  font-weight: 800;
  color: var(--gray-600, #475569);
  margin: 14px 0 8px;
  padding-top: 10px;
  border-top: 1px solid var(--gray-200);
}

.fm-cr-head span {
  margin-right: auto;
}

.cr-card {
  border: 1px solid var(--gray-200);
  border-radius: 10px;
  padding: 11px 13px;
  margin-bottom: 8px;
  background: #fff;
}

.cr-card-head {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  font-size: 13px;
  color: var(--navy);
  margin-bottom: 7px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--gray-100, #f1f5f9);
}

.cr-row {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 3px 0;
  font-size: 13px;
}

.cr-lbl {
  color: var(--gray-500, #64748b);
}

.cr-val {
  color: var(--gray-800);
  font-weight: 600;
  text-align: right;
}

.cr-stars {
  letter-spacing: 2px;
  color: #f59e0b;
}

.todo-empty {
  font-size: 13px;
  color: var(--gray-400);
  padding: 4px 2px;
}

#client-fiche-marche {
  margin-top: 18px;
}

#staff-fiche-marche {
  margin-top: 12px;
  background: var(--casier-fond);
  border: 1.5px solid var(--bordure);
  border-radius: 14px 14px 0 0;
  overflow: hidden;
  min-width: 0;
}

.tl-body #staff-fiche-marche:has(+ .doc-unified-view),
.tl-body #staff-fiche-marche:has(+ .doc-tab-panel),
.tl-body #staff-fiche-marche:has(+ div .doc-unified-view) {
  border-bottom: none;
  border-radius: 14px 14px 0 0;
}

.tl-body .doc-unified-view {
  margin-top: 0;
  background: var(--casier-fond);
  border: 1.5px solid var(--bordure);
  border-top: none;
  border-radius: 0 0 14px 14px;
  padding: 4px 8px 10px;
  box-shadow: var(--sh);
  min-width: 0;
}

.tl-body #staff-fiche-marche:not(:has(+ .doc-unified-view)) {
  border-radius: 14px;
  box-shadow: var(--sh);
}

.cond-field label {
  font-size: 12px;
  font-weight: 600;
  color: var(--gray-600);
  display: block;
  margin-bottom: 5px;
}

.cond-field input,
.cond-field select,
.cond-field textarea {
  width: 100%;
  padding: 8px 10px;
  border: 1.5px solid var(--gray-200);
  border-radius: 8px;
  font-size: 13px;
  outline: none;
  background: var(--white);
}

.cond-field input:focus,
.cond-field select:focus,
.cond-field textarea:focus {
  border-color: var(--blue);
}

.cond-field--full {
  grid-column: 1 / -1;
}

.fm-grid-edit {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 6px;
}

.fm-adresse-block {
  margin: 0;
  padding: 14px 16px 12px;
  border-bottom: 1px solid var(--bordure);
}

.fm-adresse-line {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 10px;
  font-size: 14px;
  margin-bottom: 4px;
}

.fm-adresse-lbl {
  font-weight: 600;
  color: var(--texte-secondaire);
  min-width: 9rem;
}

.fm-adresse-val {
  color: var(--texte);
  flex: 1 1 auto;
  min-width: 0;
}

/* Fiche de recherche acheteur (mandat achat) */
.fra-section-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--gray-600);
  margin: 10px 0 6px;
}

.fra-villes-readonly {
  margin-bottom: 4px;
}

.fra-criteres-section {
  margin: 10px 0 6px;
  padding-top: 8px;
  border-top: 1px solid var(--gray-100);
}

.fra-criteres-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 8px;
}

.fra-critere-row {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 8px 10px;
  background: var(--gray-50, #f8fafc);
  border: 1px solid var(--gray-200);
  border-radius: 8px;
}

.fra-critere-text {
  flex: 1 1 auto;
  min-width: 0;
  font-size: 13px;
  color: var(--navy);
  line-height: 1.45;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.fra-critere-add-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.fra-critere-input {
  flex: 1 1 180px;
  min-width: 0;
  font-size: 13px;
  padding: 8px 10px;
  border: 1.5px solid var(--gray-200);
  border-radius: 8px;
  outline: none;
}

.fra-critere-input:focus {
  border-color: var(--blue);
}

.fra-criteres-empty {
  margin: 0 0 8px;
  font-size: 13px;
}

.cond-remove {
  font-size: 12px;
  font-weight: 700;
  color: var(--red);
  border: 1.5px solid var(--red);
  border-radius: 6px;
  padding: 5px 11px;
  background: var(--white);
  flex-shrink: 0;
  cursor: pointer;
}

.cond-remove:hover {
  background: var(--red-l);
}

.substep-remove {
  flex-shrink: 0;
  border: none;
  background: transparent;
  color: var(--gray-400);
  font-size: 15px;
  font-weight: 800;
  line-height: 1;
  width: 24px;
  height: 24px;
  border-radius: 6px;
  cursor: pointer;
  transition: background 0.12s, color 0.12s;
}

.substep-remove:hover {
  background: var(--red-l);
  color: var(--red);
}

.substep-removed {
  opacity: 0.72;
  background: var(--gray-50);
  border-style: dashed;
}

.substep-removed .substep-label {
  text-decoration: line-through;
  color: var(--gray-400);
}

.substep-removed .substep-icon {
  color: var(--red);
}

.substep-restore {
  flex-shrink: 0;
  border: 1.5px solid var(--blue);
  background: var(--white);
  color: var(--blue);
  font-size: 11px;
  font-weight: 700;
  border-radius: 6px;
  padding: 4px 8px;
  cursor: pointer;
}

.substep-restore:hover {
  background: var(--blue-l);
}

.substep-vis-toggle {
  flex-shrink: 0;
  border: 1.5px solid var(--gray-200);
  background: var(--white);
  font-size: 11.5px;
  font-weight: 700;
  line-height: 1.25;
  padding: 5px 10px;
  border-radius: 999px;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.12s, border-color 0.12s, color 0.12s;
}

.substep-vis-toggle:hover {
  border-color: var(--blue);
}

.substep-vis-toggle--internal {
  color: var(--danger);
  background: var(--danger-fond);
  border-color: var(--danger-bordure);
}

.substep-vis-toggle--internal:hover {
  background: var(--danger-fond);
  border-color: var(--danger);
}

.substep-vis-toggle--client {
  color: var(--green);
  background: var(--green-l);
  border-color: #bfe6cf;
}

.substep-vis-toggle--client:hover {
  background: #e7f6ec;
  border-color: var(--green);
}

.substep-vis-badge {
  font-size: 14px;
  line-height: 1;
  flex-shrink: 0;
}

.substep-vis-badge--internal {
  opacity: 0.72;
}

/* Pastille échéance interne « À réaliser avant le… » — courtier seulement. */
.substep-echeance-fp {
  display: inline-flex;
  flex-shrink: 0;
}

.substep-echeance-raw {
  display: none;
}

.substep-echeance-pill {
  flex-shrink: 0;
  border: 1.5px dashed var(--gray-300);
  background: var(--white);
  color: var(--gray-500);
  font-size: 11.5px;
  font-weight: 700;
  line-height: 1.25;
  padding: 5px 10px;
  border-radius: 999px;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.12s, border-color 0.12s, color 0.12s;
}

.substep-echeance-pill:hover {
  border-color: var(--orange);
  color: var(--orange);
}

.substep-echeance-pill--set {
  color: var(--orange);
  background: var(--orange-l);
  border: 1.5px solid var(--orange);
}

.substep-echeance-pill--set:hover {
  background: #ffe8cc;
}

.s2o-price-input {
  margin-top: 4px;
  width: 100%;
  max-width: 240px;
  padding: 7px 12px;
  border: none;
  border-radius: 8px;
  font-size: 20px;
  font-weight: 900;
  color: var(--navy);
  outline: none;
  background: var(--white);
  border: 1.5px solid var(--gray-200);
}

.s2o-incl-input {
  width: 100%;
  min-height: 72px;
  padding: 8px 10px;
  border: 1.5px solid var(--gray-200);
  border-radius: 8px;
  font-size: 13px;
  resize: vertical;
  outline: none;
  font-family: inherit;
}

.s2o-incl-input:focus {
  border-color: var(--blue);
}

.btn-add-task {
  margin-top: 8px;
  width: 100%;
  font-size: 12.5px;
  font-weight: 700;
  padding: 8px 12px;
  border-radius: 8px;
  border: 1.5px dashed var(--blue);
  background: var(--white);
  color: var(--blue);
  cursor: pointer;
  transition: background 0.12s, border-color 0.12s;
}

.btn-add-task:hover {
  background: var(--blue-l);
  border-color: var(--navy);
}

.modal-input {
  width: 100%;
  padding: 10px 12px;
  border: 1.5px solid var(--gray-200);
  border-radius: 8px;
  font-size: 14px;
  outline: none;
  margin-bottom: 4px;
}

.modal-input:focus {
  border-color: var(--blue);
}

/* ── Assistant promesse d'achat acceptée (PA wizard) ── */
.wiz-sec {
  border: 1.5px solid var(--gray-200);
  border-radius: 10px;
  padding: 14px 16px;
  margin-top: 14px;
}

.wiz-sec-h {
  font-size: 14px;
  font-weight: 800;
  color: var(--navy);
  margin-bottom: 10px;
}

.wiz-dropzone {
  border: 2px dashed var(--blue);
  background: var(--blue-l, #eef2f7);
  border-radius: 12px;
  padding: 18px 16px;
  text-align: center;
  cursor: pointer;
  transition: background 0.2s;
}

.wiz-dropzone:hover {
  background: #e2e9f2;
}

/* Deux zones de dépôt côte à côte (mandat achat) : PA+DV / contre-proposition.
   align-items: stretch (défaut) + colonne flex + dropzone flex:1 → les deux
   encadrés ont exactement la même hauteur, quel que soit leur texte. */
.wiz-two-zones {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  align-items: stretch;
}
@media (max-width: 640px) {
  .wiz-two-zones { grid-template-columns: 1fr; }
}
.wiz-zone {
  display: flex;
  flex-direction: column;
}
.wiz-two-zones .wiz-dropzone {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.wiz-zone-title {
  font-weight: 600;
  font-size: 13px;
  color: var(--navy);
  margin-bottom: 6px;
}
.wiz-dropzone--cp {
  border-color: var(--amber);
  background: var(--amber-l);
}
.wiz-dropzone--cp:hover {
  background: var(--attention-fond);
}
.wiz-inference {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  margin-top: 12px;
  padding: 9px 12px;
  border-radius: 10px;
  font-size: 12.5px;
  line-height: 1.4;
}
.wiz-inference--pa {
  background: var(--green-l);
  color: var(--green);
}
.wiz-inference--cp {
  background: var(--amber-l);
  color: var(--texte);
}

.wiz-dz-emoji {
  font-size: 26px;
  line-height: 1;
}

.wiz-dz-title {
  font-weight: 800;
  color: var(--navy);
  font-size: 14px;
  margin-top: 4px;
}

.wiz-dz-sub {
  font-size: 12px;
  color: var(--gray-500, #64748b);
  margin-top: 5px;
  line-height: 1.45;
  max-width: 440px;
  margin-left: auto;
  margin-right: auto;
}

.wiz-dz-done {
  margin: 10px 0;
  padding: 10px 12px;
  border-radius: 8px;
  background: #e7f6ec;
  border: 1px solid var(--green);
  color: #166534;
  font-size: 12.5px;
  line-height: 1.5;
}

.wiz-staged-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 12px;
}

.wiz-staged-chip {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 12px;
  background: #fff;
  border: 1.5px solid var(--gray-200);
  border-radius: 999px;
  min-width: 0;
}

.wiz-staged-chip-icon {
  flex-shrink: 0;
  font-size: 14px;
  line-height: 1;
}

.wiz-staged-chip-name {
  flex: 1;
  min-width: 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--gray-800);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.wiz-staged-chip-remove {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 50%;
  background: transparent;
  color: #dc2626;
  font-size: 15px;
  font-weight: 800;
  line-height: 1;
  cursor: pointer;
}

.wiz-staged-chip-remove:hover {
  background: #fee2e2;
}

.wiz-staged-chip-remove:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.25);
}

.wd-list {
  margin-top: 10px;
}

.wd-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 7px 0;
  font-size: 13px;
  color: var(--gray-800);
}

.wd-row--unrecognized {
  color: var(--amber);
  font-weight: 600;
}

.wd-row--nego-pa {
  color: var(--navy, #1e3a5f);
  font-weight: 600;
  background: var(--blue-l, #eef4fb);
  border: 1px solid var(--blue-m, #c2cfdf);
  border-radius: 8px;
  padding: 8px 10px;
  margin-top: 6px;
}

.wiz-ai {
  background: var(--purple-l);
  border: 1.5px solid #ddd6fe;
  border-radius: 8px;
  padding: 12px 14px;
  margin-top: 10px;
  font-size: 13px;
  color: var(--gray-800);
  line-height: 1.65;
}

.wiz-opinion-section {
  margin: 10px 0 8px;
}

.wiz-opinion-subsection {
  margin: 8px 0 6px;
}

.wiz-opinion-subsection-title {
  font-weight: var(--fw-semibold);
  margin-bottom: 4px;
}

.wiz-opinion-warn-line {
  color: var(--amber);
}

.wiz-dates {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}

/* Acte de vente + Occupation : chacune sur sa propre rangée pleine largeur
 * (la date d'acceptation vit désormais hors de .wiz-dates, sous le prix). */
.wiz-dates--stack {
  grid-template-columns: 1fr;
}

.wiz-dates .cond-field input {
  min-width: 0;
}

.wiz-dates .cond-days-row {
  flex-wrap: wrap;
}

.wiz-dates .cond-days-row > .cond-field {
  flex: 1 1 120px;
  min-width: 0;
  margin: 0;
}

.wiz-date-group-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--gray-700);
  margin-bottom: 8px;
}

.wiz-incl-grid {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-bottom: 14px;
}

.wiz-delai-critical {
  border: 1.5px solid var(--red);
  border-radius: 10px;
  background: var(--red-l);
  padding: 12px 14px;
  margin-bottom: 14px;
}

.wiz-delai-zone {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.wiz-delai-reponse-field {
  margin: 0;
}

.wiz-delai-reponse-row {
  flex-wrap: wrap;
}

.wiz-delai-reponse-row > .cond-field {
  flex: 1 1 120px;
  min-width: 0;
  margin: 0;
}

.wiz-delai-reponse-row .cond-days-row input[type="time"],
.wiz-delai-reponse-row .cond-days-row input.flatpickr-input {
  flex: 1;
  min-width: 0;
}

.wiz-delai-reponse-row input.flatpickr-input.flatpickr-alt-input::placeholder {
  color: var(--gray-400, #94a3b8);
  opacity: 1;
}

.wiz-incl-grid .s2o-incl-input {
  min-height: 88px;
  resize: vertical;
}

.wiz-clauses-empty {
  margin: 0 0 10px;
  font-size: 12.5px;
  line-height: 1.45;
}

.wiz-label-hint {
  font-weight: 500;
  color: var(--gray-400);
}

.wiz-clause {
  border: 1.5px solid var(--gray-200);
  border-radius: 8px;
  padding: 12px 14px;
  margin-bottom: 10px;
  background: var(--white);
}

.wiz-manual-note-inline {
  font-size: 12px;
  line-height: 1.45;
  margin: 0 0 10px;
}

.wiz-clause-docs-note {
  font-size: 12px;
  line-height: 1.45;
  margin: 8px 0 0;
}

/* Clause 9.1 — « Documents à remettre » : champ libre du formulaire, donc
   corrigeable à la main (crayon + zone de saisie). */
.wiz-docs-remettre-head {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  flex-wrap: wrap;
}

.wiz-docs-remettre-head > span {
  flex: 1 1 220px;
  min-width: 0;
}

.wiz-docs-remettre-text {
  white-space: pre-line;
}

.wiz-docs-remettre-text.is-empty {
  font-style: italic;
  opacity: 0.75;
}

.wiz-docs-remettre-input {
  width: 100%;
  margin-top: 6px;
  font-size: 12px;
  line-height: 1.45;
  resize: vertical;
}

/* Texte libre attaché à une condition (liste 9.1). */
.cond-note {
  white-space: pre-line;
  font-style: italic;
}

/* ── Écran « Équipe » (admin) ───────────────────────────────────────────── */
.dash-head-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.modal-card--wide {
  max-width: 820px;
}

.equipe-row {
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 16px 18px;
  margin-bottom: 14px;
}

.equipe-row-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}

.equipe-role {
  padding: 5px 8px;
  border: 1.5px solid var(--gray-200);
  border-radius: 8px;
  font-size: 13px;
  font-weight: 700;
  background: var(--white);
}

.equipe-role:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

.equipe-moi {
  font-size: 12px;
}

.equipe-remove {
  margin-left: auto;
}

.equipe-remove:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

.equipe-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 12px;
}

.equipe-grid .fg-full {
  grid-column: 1 / -1;
}

.equipe-row-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 12px;
}

.equipe-row-msg {
  font-size: 13px;
}

/* Réassignation des dossiers, révélée au clic sur « Retirer ». */
.equipe-reassign {
  margin-top: 12px;
  padding: 12px 14px;
  border-radius: 10px;
  background: var(--attention-fond, #fdf6e3);
  border: 1px solid var(--dore);
}

.equipe-reassign-msg {
  font-size: 14px;
  margin-bottom: 10px;
}

.equipe-reassign-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.equipe-reassign-row select {
  padding: 7px 10px;
  border: 1.5px solid var(--gray-200);
  border-radius: 8px;
  background: var(--white);
}

/* ── Accueil client ────────────────────────────────────────────────────────
   Trois cartes à la place des statistiques d'agence : ce qu'on attend de lui,
   où en est sa transaction, et son courtier joignable d'un doigt. */
.client-home {
  margin-bottom: 24px;
}

.client-home-adresse {
  font-weight: 600;
  margin-bottom: 10px;
}

/* Sortie de l'assistant de promesse acceptée.
   La modale est « persistante » (ni Échap, ni clic à côté) : ce bouton est la
   seule porte visible, il doit donc rester atteignable même après un
   défilement dans un assistant qui fait plusieurs écrans de haut. */
.pa-wizard-box {
  position: relative;
}

.wiz-close {
  position: sticky;
  top: 0;
  float: left;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  margin: -4px 10px 0 -4px;
  border: 1px solid var(--danger);
  border-radius: 8px;
  background: var(--danger-fond);
  color: var(--danger);
  cursor: pointer;
  z-index: 3;
  transition: border-color 0.15s, color 0.15s, background 0.15s;
}

.wiz-close:hover {
  border-color: var(--danger);
  color: #fff;
  background: var(--danger);
}

/* Bascule d'entête entre les transactions d'un même client — voir
   renderClientDossierSwitch(). Discrète : c'est un raccourci, pas une
   navigation principale. */
.client-switch {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  padding: 8px 18px;
  background: var(--creme-fond);
  border-bottom: 1px solid var(--bordure);
}

.client-switch-label {
  font-size: 12px;
  color: var(--texte-doux);
}

.client-switch-btn {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  padding: 4px 12px;
  border: 1px solid var(--bordure-forte);
  border-radius: 999px;
  background: #fff;
  cursor: pointer;
  font: inherit;
  transition: border-color 0.15s, background 0.15s;
}

.client-switch-btn:hover {
  border-color: var(--navy);
  background: var(--blue-l);
}

.client-switch-mandat {
  font-size: 12px;
  font-weight: 600;
  color: var(--navy);
}

.client-switch-lieu {
  font-size: 12px;
  color: var(--texte-doux);
}

/* Client suivant plusieurs transactions (« vendre pour acheter ») —
   chaque section porte son mandat, son adresse et son étape. */
.client-home-intro {
  margin: 0 0 14px;
  font-size: 13px;
  color: var(--texte-doux);
}

.client-home--multi {
  padding-top: 4px;
}

.client-home-entete {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 10px;
}

.client-home-entete .client-home-adresse {
  margin-bottom: 0;
  font-weight: 500;
  color: var(--texte-doux);
}

.client-home-mandat {
  font-family: var(--police-titre);
  font-size: 15px;
  font-weight: 600;
  padding: 2px 10px;
  border-radius: 999px;
}

.client-home-mandat--vente {
  background: var(--navy);
  color: #fff;
}

.client-home-mandat--achat {
  background: var(--green-l);
  color: var(--green);
}

.client-home-etape-pill {
  margin-left: auto;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--texte-doux);
}

.client-home-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 16px;
}

.client-home-card {
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 18px 20px;
  background: var(--white);
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.client-home-card--todo {
  border-color: var(--dore);
  background: #fffdf5;
}

.client-home-card--ok {
  background: #f6faf7;
}

.client-home-card-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-weight: 700;
  color: var(--navy);
}

.client-home-broker-name {
  font-size: 17px;
  font-weight: 600;
}

.client-home-links {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.client-home-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--navy);
  text-decoration: none;
  font-size: 14px;
}

.client-home-link:hover {
  text-decoration: underline;
}

.client-home-list {
  margin: 0;
  padding-left: 20px;
  font-size: 14px;
  line-height: 1.6;
}

.client-home-sub,
.client-home-etape,
.client-home-echeance {
  font-size: 14px;
  line-height: 1.5;
}

.client-home-echeance {
  display: flex;
  align-items: center;
  gap: 8px;
  opacity: 0.85;
}

.client-home-cta {
  margin-top: auto;
  align-self: flex-start;
}

/* Calculateur R2.5 sous la liste des conditions — même bloc que le panneau
   d'analyse, simplement remis là où le wizard promet de le trouver. */
.cond-r25-wrap {
  margin-top: 16px;
}

/* Version client : lecture seule, sobre — aucun champ, rien à cliquer. */
.r25-client-box {
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 14px 16px;
  background: var(--bg-soft, #faf8f5);
}

.r25-client-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-weight: 600;
  margin-bottom: 6px;
}

.r25-client-sub {
  font-size: 13px;
  line-height: 1.5;
  opacity: 0.85;
  margin-bottom: 12px;
}

.r25-client-note {
  font-size: 12px;
  margin-top: 10px;
}

.wiz-clause-actions {
  margin-top: 10px;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.btn-wiz-split-clause {
  font-size: 12px;
  font-weight: 700;
  padding: 6px 12px;
  border-radius: 8px;
  border: 1.5px solid var(--gray-200);
  background: var(--white);
  color: var(--navy);
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s, background 0.15s;
}

.btn-wiz-split-clause:hover {
  border-color: var(--blue);
  color: var(--blue);
  background: #f0f7ff;
}

.wiz-split-modal-box .modal-sub code {
  font-size: 12px;
  background: var(--gray-100);
  padding: 1px 6px;
  border-radius: 4px;
}

.wiz-split-text {
  width: 100%;
  min-height: 160px;
  max-height: min(50vh, 360px);
  padding: 12px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: 8px;
  font-size: 13px;
  line-height: 1.5;
  font-family: inherit;
  resize: vertical;
  outline: none;
  box-sizing: border-box;
}

.wiz-split-text:focus {
  border-color: var(--blue);
}

.wiz-split-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 10px 0 12px;
}

.btn-wiz-split-tool {
  font-size: 12px;
  padding: 8px 12px;
}

.wiz-split-preview {
  border: 1.5px dashed var(--gray-200);
  border-radius: 8px;
  padding: 10px 14px;
  margin-bottom: 10px;
  background: #fafbfc;
}

.wiz-split-preview-title {
  font-size: 12px;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: 8px;
}

.wiz-split-preview-list {
  margin: 0;
  padding-left: 20px;
  font-size: 12.5px;
  line-height: 1.45;
  color: var(--gray-600);
}

.wiz-split-preview-empty {
  margin: 0;
  font-size: 12.5px;
}

.wiz-clause.is-r25 {
  border-color: #e11d48;
  background: #fff1f2;
}

.wiz-clause-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
  min-width: 0;
}

.wiz-clause-ref-pill,
.wiz-clause-bubble {
  flex-shrink: 0;
  font-size: 11px;
  font-weight: 700;
  color: var(--navy);
  background: var(--gray-100);
  border: 1px solid var(--gray-200);
  border-radius: 999px;
  padding: 2px 8px;
  line-height: 1.35;
  letter-spacing: 0.02em;
}

.wiz-clause-bubble--editable {
  position: relative;
  display: inline-flex;
  align-items: center;
  max-width: 148px;
  padding-right: 22px;
}

.wiz-clause-bubble-text {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.wiz-clause-bubble-edit {
  position: absolute;
  right: 2px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 9px;
  padding: 0 3px;
  line-height: 1;
  opacity: 0.85;
}

.wiz-clause-bubble-input {
  width: 100%;
  min-width: 72px;
  font-size: 11px;
  font-weight: 700;
  color: var(--navy);
  border: 1.5px solid var(--blue);
  border-radius: 6px;
  padding: 1px 4px;
  font-family: inherit;
  outline: none;
}

.wiz-clause-team-pill {
  flex-shrink: 0;
  font-size: 10px;
  font-weight: 700;
  color: var(--gray-600);
  background: var(--gray-100);
  border: 1px solid var(--gray-200);
  border-radius: 999px;
  padding: 2px 8px;
  line-height: 1.35;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}

.wiz-clause-title-group {
  flex: 0 1 auto;
  min-width: 0;
  display: flex;
  align-items: center;
}

.wiz-clause-remove {
  margin-left: auto;
  padding: 4px 9px;
  line-height: 1.2;
  flex-shrink: 0;
}

.wiz-clause-edit-btn {
  flex-shrink: 0;
}

.wiz-clause-name {
  font-size: 13px;
  font-weight: 700;
  color: var(--navy);
  min-width: 0;
}

.wiz-clause-name-input {
  flex: 1;
  min-width: 0;
  font-size: 13px;
  font-weight: 700;
  color: var(--navy);
  border: 1.5px solid var(--blue);
  border-radius: 8px;
  padding: 4px 8px;
  font-family: inherit;
  outline: none;
}

.wiz-clause-name-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin: -4px 0 10px;
}

.wiz-ai-tag {
  font-size: 10px;
  font-weight: 700;
  color: var(--purple);
  background: var(--purple-l);
  border: 1px solid #ddd6fe;
  padding: 1px 8px;
  border-radius: 999px;
  white-space: nowrap;
  flex-shrink: 0;
}

.wiz-clause-group-title {
  font-size: 12px;
  font-weight: 700;
  color: var(--gray-500);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin: 16px 0 8px;
  padding-top: 4px;
}

.wiz-clause-group-title:first-child {
  margin-top: 8px;
}

.wiz-clause-source-note {
  font-size: 12px;
  color: var(--gray-500);
  margin: 0 0 10px;
}

.wiz-clause-verbatim {
  margin-top: 10px;
  font-size: 12px;
  color: var(--gray-600);
}

.wiz-clause-verbatim summary {
  cursor: pointer;
  font-weight: 700;
  color: var(--navy);
  list-style: none;
}

.wiz-clause-verbatim summary::-webkit-details-marker {
  display: none;
}

.wiz-clause-verbatim p {
  margin: 8px 0 0;
  line-height: 1.45;
  white-space: pre-wrap;
}

.wiz-clause-manual-text {
  margin: 0 0 6px;
  font-size: 13px;
  line-height: 1.45;
}

.wiz-clause-manual-note {
  margin: 0 0 10px;
  font-size: 12px;
}

.wiz-ok-text {
  color: var(--green);
}

.wiz-muted {
  color: var(--gray-400);
}

.r25-cond-title {
  flex: 1;
  font-size: 14px;
  font-weight: 800;
  color: #be123c;
}

.r25-sub {
  font-size: 12px;
  color: var(--gray-500, #64748b);
  line-height: 1.45;
}

/* Le texte explicatif touchait les étiquettes des champs : on le décolle. */
.r25b-box .r25-sub {
  margin-bottom: 16px;
}

.cond-mode-toggle {
  display: inline-flex;
  margin-bottom: 12px;
  border: 1px solid var(--gray-200);
  border-radius: 8px;
  overflow: hidden;
}

.cmt-btn {
  background: var(--white);
  border: none;
  padding: 7px 13px;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--gray-500);
  cursor: pointer;
}

.cmt-btn + .cmt-btn {
  border-left: 1px solid var(--gray-200);
}

.cmt-btn.on {
  background: var(--navy);
  color: #fff;
}

.cond-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

@media (max-width: 540px) {
  .cond-grid {
    grid-template-columns: 1fr;
  }
}

.cond-days-row {
  display: flex;
  align-items: center;
  gap: 8px;
}

.cond-days-row input[type="number"] {
  width: 74px;
}

.cond-name-input {
  flex: 1;
  font-size: 14px;
  font-weight: 700;
  color: var(--navy);
  border: none;
  border-bottom: 1.5px solid var(--gray-200);
  padding: 4px 2px;
  outline: none;
  background: transparent;
}

.cond-name-input:focus {
  border-color: var(--blue);
}

.cond-remove--blue {
  color: var(--blue);
  border-color: var(--blue);
}

.btn-add-cond {
  font-size: 13px;
  font-weight: 700;
  padding: 10px 16px;
  border-radius: 8px;
  background: var(--blue);
  color: var(--white);
  border: none;
  cursor: pointer;
  transition: background 0.2s;
}

.btn-add-cond:hover {
  background: var(--blue-d, #22344c);
}

.btn-add-cond--purple {
  background: var(--purple);
}

.btn-add-cond--purple:hover {
  background: #6d28d9;
}

.btn-add-cond--outline,
#wiz-add-clause-btn,
.wiz-sec > .btn-add-cond:not(.btn-add-cond--purple) {
  background: #fff;
  color: var(--blue);
  border: 1.5px solid var(--blue);
}

.btn-add-cond--outline:hover,
#wiz-add-clause-btn:hover,
.wiz-sec > .btn-add-cond:not(.btn-add-cond--purple):hover {
  background: var(--blue-l, #eef2f7);
  color: var(--blue-d, #22344c);
  border-color: var(--blue-d, #22344c);
}

.wiz-manual-section {
  margin: 14px 0 10px;
  padding: 12px 14px;
  border: 1.5px solid #fcd34d;
  border-radius: 10px;
  background: #fffbeb;
}

.wiz-manual-title {
  font-size: 13px;
  font-weight: 700;
  color: #92400e;
  margin-bottom: 10px;
}

.wiz-manual-card {
  position: relative;
  padding: 10px 44px 10px 0;
  border-top: 1px solid #fde68a;
}

.wiz-manual-card .wiz-clause-remove {
  position: absolute;
  top: 8px;
  right: 0;
  margin-left: 0;
}

.wiz-manual-card:first-of-type {
  border-top: none;
  padding-top: 0;
}

.wiz-manual-ref {
  font-size: 12px;
  font-weight: 800;
  color: var(--navy);
  margin-bottom: 4px;
}

.wiz-manual-text {
  font-size: 13px;
  line-height: 1.45;
  color: var(--gray-700, #374151);
  white-space: pre-wrap;
}

.wiz-manual-note {
  font-size: 11px;
  margin-top: 6px;
}

.wiz-dropzone.wiz-dropzone--busy {
  opacity: 0.65;
  pointer-events: none;
}

/* Voile bloquant pendant dépôt + analyse IA (wizard PA) */
.pa-wizard-box {
  position: relative;
  width: min(100%, 1240px);
  max-width: 1240px;
}

.wiz-busy-overlay {
  position: absolute;
  inset: 0;
  z-index: 40;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(248, 250, 252, 0.78);
  backdrop-filter: blur(2px);
  border-radius: inherit;
  pointer-events: all;
  cursor: wait;
}

.wiz-busy-overlay.hide {
  display: none !important;
}

.wiz-busy-card {
  max-width: 340px;
  text-align: center;
  padding: 22px 20px;
  background: #fff;
  border: 1px solid var(--gray-200);
  border-radius: 14px;
  box-shadow: 0 12px 40px rgba(15, 23, 42, 0.12);
}

.wiz-busy-spinner {
  width: 36px;
  height: 36px;
  margin: 0 auto 14px;
  border: 3px solid var(--gray-200);
  border-top-color: var(--blue);
  border-radius: 50%;
  animation: wiz-spin 0.8s linear infinite;
}

@keyframes wiz-spin {
  to {
    transform: rotate(360deg);
  }
}

.wiz-busy-msg {
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1.45;
  color: var(--navy);
}

/* Voile bloquant plein écran (ex. extraction IA CCVE/CCDE, wizard PA). */
.app-busy-overlay {
  position: fixed;
  inset: 0;
  z-index: 100000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(15, 23, 42, 0.45);
  backdrop-filter: blur(2px);
  pointer-events: all;
  cursor: wait;
}

.app-busy-overlay.hide {
  display: none !important;
}

body.app-busy-active {
  overflow: hidden;
  pointer-events: none;
}

/* Filet si un pop-up interactif s'affiche alors que le voile n'a pas encore été masqué. */
body.app-busy-active .modal-overlay--above-busy {
  pointer-events: auto;
}

body.app-busy-active .app-busy-overlay {
  pointer-events: auto;
}

/* Compte-rendu de visite — zone IA */
.cr-ai-zone {
  border: 2px dashed var(--blue-m, #c2cfdf);
  background: var(--blue-l, #eef2f7);
  border-radius: 12px;
  padding: 16px;
  text-align: center;
  cursor: pointer;
  margin-bottom: 14px;
  transition: border-color 0.15s, background 0.15s, opacity 0.15s;
}

.cr-ai-zone:hover {
  border-color: var(--blue);
  background: #e7eef7;
}

.cr-ai-zone--over {
  border-color: var(--blue);
  background: #e2e9f2;
}

.cr-ai-zone--busy {
  opacity: 0.75;
  cursor: wait;
  pointer-events: none;
}

.cr-ai-main {
  font-size: 14px;
  font-weight: 800;
  color: var(--navy);
}

.cr-ai-hint {
  font-size: 12px;
  color: var(--gray-500, #64748b);
  margin-top: 5px;
  line-height: 1.45;
}

.cr-ai-link {
  text-decoration: underline;
  color: var(--blue);
}

.cr-ai-status {
  font-size: 12.5px;
  line-height: 1.5;
  padding: 8px 10px;
  border-radius: 8px;
}

.cr-ai-status--busy {
  background: #eef2ff;
  border: 1px solid #c7d2fe;
  color: #3730a3;
}

.cr-ai-status--done {
  background: #e7f6ec;
  border: 1px solid var(--green);
  color: #166534;
}

.cr-ai-status--error {
  background: #fef2f2;
  border: 1px solid #fecaca;
  color: #991b1b;
}

.cr-ai-status--info {
  background: var(--blue-l);
  border: 1px solid var(--blue-m, #c2cfdf);
  color: var(--navy);
}

.clause-cat-title {
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--gray-400);
  margin: 14px 0 6px;
  padding-bottom: 4px;
  border-bottom: 1px solid var(--gray-200);
}

.clause-cat-title:first-child {
  margin-top: 0;
}

.clause-item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 8px 4px;
  cursor: pointer;
}

.clause-item input {
  margin-top: 3px;
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  cursor: pointer;
}

.clause-name {
  font-size: 13px;
  font-weight: 700;
  color: var(--navy);
}

.clause-meta {
  font-size: 12px;
  color: var(--gray-400);
  margin-top: 2px;
}

.wizclause-list {
  max-height: 46vh;
  overflow-y: auto;
  margin-top: 8px;
}

.wizclause-custom {
  margin-top: 12px;
  border-top: 1.5px dashed var(--gray-200);
  padding-top: 12px;
}

.wizclause-custom input,
.wizclause-custom textarea {
  width: 100%;
  padding: 9px 12px;
  border: 1.5px solid var(--gray-200);
  border-radius: 8px;
  font-size: 13px;
  outline: none;
  transition: border-color 0.2s;
  font-family: inherit;
}

.wizclause-field-label {
  display: block;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--gray-600);
  margin: 12px 0 6px;
}

.wizclause-custom .clause-cat-title + .wizclause-field-label {
  margin-top: 0;
}

.wizclause-field-optional {
  font-weight: 400;
  color: var(--gray-400);
  text-transform: none;
  letter-spacing: normal;
}

.wizclause-ctext-input {
  display: block;
  min-height: 96px;
  max-height: min(50vh, 320px);
  resize: vertical;
  line-height: 1.5;
}

.wizclause-custom input:focus,
.wizclause-custom textarea:focus {
  border-color: var(--blue);
}

.wizclause-custom .cond-days-row input {
  width: 50%;
}

#wizclause-cdelai input {
  width: 100%;
}

#wizclause-cdate-row input {
  width: 100%;
}

.wizclause-cd2-time-slot {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 50%;
  min-width: 0;
}

.wizclause-cd2-time-slot input {
  flex: 1;
  min-width: 0;
  width: auto;
}

.wizclause-custom input::placeholder,
.wizclause-custom textarea::placeholder {
  color: var(--gray-400, #94a3b8);
  opacity: 1;
}

/* ── Vérification de l'offre (revue IA) ── */
.rev-verdict {
  border-radius: 10px;
  padding: 12px 16px;
  font-size: 14px;
  font-weight: 800;
  margin-bottom: 14px;
}
.rev-verdict.ok {
  background: var(--green-l);
  color: var(--green);
  border: 1.5px solid #bfe6cf;
}
.rev-verdict.warn {
  background: #fffbeb;
  color: #b45309;
  border: 1.5px solid #fcd34d;
}
.rev-verdict.neutral {
  background: var(--blue-l);
  color: var(--navy);
  border: 1.5px solid #c2cfdf;
  font-weight: 600;
}
.rev-verdict-sub {
  font-size: 12px;
  font-weight: 500;
  margin: -6px 0 14px;
}
.rev-intro {
  margin-bottom: 14px;
}

.rev-contexte-field {
  margin-bottom: 16px;
  padding: 12px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: 10px;
  background: var(--gray-50, #f9fafb);
}

.rev-contexte-label {
  display: block;
  font-size: 13px;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: 4px;
}

.rev-contexte-hint {
  font-size: 12px;
  margin: 0 0 8px;
  line-height: 1.4;
}

.rev-contexte-input {
  display: block;
  width: 100%;
  min-height: 88px;
  box-sizing: border-box;
  font-size: 13px;
  line-height: 1.45;
  padding: 8px 10px;
  border: 1px solid var(--gray-200);
  border-radius: 8px;
  resize: vertical;
  font-family: inherit;
  background: #fff;
}

.rev-contexte-input:focus {
  outline: none;
  border-color: var(--blue);
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

.rev-contexte-snapshot {
  margin: 10px 0 16px;
  padding: 12px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: 10px;
  background: #fff;
}

.rev-contexte-snapshot-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: 6px;
}

.rev-contexte-snapshot-text {
  font-size: 13px;
  line-height: 1.5;
  color: var(--gray-700, #374151);
  white-space: pre-wrap;
}

/* Mémoire de négociation (migration 35) — « Changements depuis la dernière analyse ». */
.rev-changements {
  margin: 10px 0 16px;
  padding: 12px 14px;
  border: 1.5px solid #c2cfdf;
  border-radius: 10px;
  background: var(--blue-l);
}
.rev-changements-label {
  font-size: 12px;
  font-weight: 800;
  color: var(--navy);
  margin-bottom: 6px;
}
.rev-changements-text {
  font-size: 13px;
  line-height: 1.5;
  color: var(--text, #1f2937);
  white-space: pre-wrap;
}

/* État effectif — modifications structurées CP (CALIBRAGE §33). */
.rev-modifications-cp {
  margin: 10px 0 16px;
  padding: 12px 14px;
  border: 1.5px solid #d4c4a8;
  border-radius: 10px;
  background: #faf6ef;
}
.rev-modifications-cp-label {
  font-size: 12px;
  font-weight: 800;
  color: var(--navy, #1e3a5f);
  margin-bottom: 8px;
}
.rev-version-detectee {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 12px;
  margin-bottom: 10px;
}
.rev-version-detectee-badge {
  display: inline-block;
  font-size: 12.5px;
  font-weight: 800;
  padding: 4px 10px;
  border-radius: 6px;
  background: var(--green-l, #dcfce7);
  color: var(--green, #15803d);
}
.rev-version-detectee-hint {
  font-size: 12px;
}
.rev-mcp-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.rev-mcp-card {
  padding: 8px 10px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.7);
  border: 1px solid #e8dcc8;
}
.rev-mcp-num {
  font-size: 13px;
  font-weight: 800;
  color: #92400e;
  margin-bottom: 4px;
}
.rev-mo-a-valider {
  margin-bottom: 10px;
  padding: 8px 10px;
  border-radius: 8px;
  border: 1px solid color-mix(in srgb, var(--dore) 40%, #e8dcc8);
  background: #fffbeb;
}
.rev-mo-a-valider-label {
  font-size: 12px;
  font-weight: 800;
  color: #92400e;
  margin-bottom: 4px;
}
.rev-mo-a-valider-list {
  margin: 0;
  padding-left: 1.2em;
  font-size: 12.5px;
}
.rev-mcp-row {
  display: flex;
  gap: 8px;
  font-size: 12.5px;
  line-height: 1.4;
  margin-top: 2px;
}
.rev-mcp-k {
  flex: 0 0 9.5rem;
  font-weight: 700;
  color: #6b7280;
}
.rev-mcp-v {
  flex: 1;
  min-width: 0;
  color: #1f2937;
}

/* Ligne de diff « avant → après » d'une contre-proposition. */
.rev-mcp-row--diff .rev-mcp-avant {
  color: var(--texte-doux);
  text-decoration: line-through;
  text-decoration-color: var(--danger);
}
.rev-mcp-arrow {
  color: var(--texte-doux);
  vertical-align: -1px;
}

/* Fil chronologique de la négociation (staff-only, accordéon). */
.rev-journal {
  margin-top: 14px;
}
.rev-journal-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.rev-journal-item {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px;
  padding: 8px 4px;
  border-bottom: 1px solid var(--gray-100, #f1f3f5);
  font-size: 13px;
}
.rev-journal-item:last-child {
  border-bottom: none;
}
.rev-journal-item-date {
  font-size: 11.5px;
  white-space: nowrap;
}
.rev-journal-item-resume {
  color: var(--gray-700, #374151);
}

.rev-actions {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}
.rev-loading {
  font-size: 13px;
}
.rev-doclist {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 18px;
}
.rev-doc {
  border: 1.5px solid var(--gray-200);
  border-radius: 12px;
  padding: 14px 16px;
  background: var(--white);
}
.rev-doc.is-ok {
  border-color: #bfe6cf;
  background: #f6fef9;
}
.rev-doc.has-warn {
  border-color: #fcd34d;
  background: #fffef5;
}
.rev-doc-head {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.rev-doc-name {
  font-weight: 800;
  color: var(--navy);
  font-size: 14px;
}
.rev-doc-act {
  margin-left: auto;
}
.rev-pill {
  font-size: 11px;
  font-weight: 800;
  padding: 3px 10px;
  border-radius: 20px;
  white-space: nowrap;
}
.rev-pill.ok {
  background: var(--green-l);
  color: var(--green);
}
.rev-pill.warn {
  background: #fef3c7;
  color: #b45309;
}
.rev-checks {
  margin-top: 10px;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.rev-check {
  display: flex;
  gap: 8px;
  font-size: 13px;
  color: var(--gray-600);
}
.rev-check.ok span:first-child {
  color: var(--green);
}
.rev-check.no {
  color: #b45309;
  font-weight: 600;
}
.rev-sig {
  margin-top: 12px;
  padding: 10px 12px;
  background: var(--gray-50, #f8fafc);
  border-radius: 8px;
  font-size: 13px;
  color: var(--gray-600);
}
.rev-sig-head {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: 6px;
}
.rev-sig-detail {
  margin: 0;
  padding-left: 18px;
}
.rev-sig-detail li {
  margin-bottom: 4px;
}
.rev-incoh-section {
  margin-top: 8px;
}
.rev-incoh-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.rev-incoh {
  padding: 10px 14px;
  border-radius: 8px;
  font-size: 13px;
  line-height: 1.45;
}
.rev-incoh-warn {
  background: #fffbeb;
  border: 1px solid #fcd34d;
  color: #92400e;
}
.rev-incoh-info {
  background: var(--gray-50, #f8fafc);
  border: 1px solid var(--gray-200);
  color: var(--gray-600);
}
.rev-incoh-badge {
  font-size: 10px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-right: 6px;
}
.rev-client-notice {
  background: var(--blue-l);
  padding: 12px 14px;
  border-radius: 8px;
  font-size: 13.5px;
  line-height: 1.5;
}
.rev-client-meta {
  margin-top: 8px;
}
.rev-client-msg {
  font-size: 15px;
  line-height: 1.55;
  color: var(--navy);
  padding: 12px 14px;
  background: var(--green-l, #ecfdf5);
  border: 1px solid #a7f3d0;
  border-radius: 10px;
}
/* Indicateur de lecture des conseils, côté courtier — voir migration 075. */
.offer-conseils-lecture {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 10px 0 0;
  padding-top: 10px;
  border-top: 1px solid var(--bordure);
  font-size: 12px;
}

/* Conseils du courtier sur l'offre (portail client).
   N'est plus un bandeau pleine largeur au-dessus du dossier : c'est désormais
   un encadré en tête de l'onglet « Offre en cours », à côté de ce dont il
   parle (voir renderOffreEnCoursTabContent). */
.client-advice-banner {
  padding: 14px 16px;
  margin-bottom: 16px;
  border-radius: 14px;
  flex-shrink: 0;
}
.client-advice-banner--waiting {
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--gray-50, #f9fafb);
  border: 1px solid var(--gray-200);
}
.client-advice-banner--waiting .client-advice-banner-text {
  color: var(--gray-600);
  font-weight: 600;
  font-size: 13.5px;
}
.client-advice-banner--ready {
  background: var(--green-l, #ecfdf5);
  border: 1px solid #a7f3d0;
}
.client-advice-banner-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.client-advice-banner-icon {
  font-size: 16px;
}
.client-advice-banner-text {
  font-size: 14.5px;
  font-weight: 800;
  color: var(--navy);
}
.client-advice-banner-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.client-advice-banner-list .offer-conseil-block {
  background: var(--white);
}
/* ── Vos conseils à partager au client (remplace l'ancien « Partager avec le client ») ── */
.offer-conseil-composer {
  margin-bottom: 18px;
  padding: 14px 16px;
  background: var(--gray-50, #f9fafb);
  border: 1px solid var(--gray-200);
  border-radius: 12px;
}
.offer-conseil-type-row {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin: 10px 0 12px;
}
.offer-conseil-type-btn {
  border: 1.5px solid var(--gray-200);
  background: var(--white);
  border-radius: 20px;
  padding: 7px 14px;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--gray-600);
  cursor: pointer;
}
.offer-conseil-type-btn--green.on { background: var(--green); border-color: var(--green); color: #fff; }
.offer-conseil-type-btn--yellow.on { background: var(--amber); border-color: var(--amber); color: #fff; }
.offer-conseil-type-btn--orange.on { background: var(--orange); border-color: var(--orange); color: #fff; }
.offer-conseil-type-btn--red.on { background: var(--red); border-color: var(--red); color: #fff; }
.offer-conseil-texte-input {
  display: block;
  width: 100%;
  min-height: 72px;
  box-sizing: border-box;
  font-size: 13px;
  line-height: 1.45;
  padding: 8px 10px;
  border: 1px solid var(--gray-200);
  border-radius: 8px;
  resize: vertical;
  font-family: inherit;
  background: #fff;
  margin-bottom: 12px;
}
.offer-conseil-texte-input:focus {
  outline: none;
  border-color: var(--blue);
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}
.offer-conseil-composer-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}
.offer-conseil-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 8px;
}
.offer-conseil-list-empty {
  font-size: 13px;
  margin-bottom: 8px;
}
.offer-conseil-block {
  border-radius: 10px;
  padding: 12px 14px;
  border: 1.5px solid var(--gray-200);
  background: var(--white);
}
.offer-conseil-block--green { border-color: var(--green-m, #bbf7d0); background: var(--green-l); }
.offer-conseil-block--yellow { border-color: #fde68a; background: var(--amber-l); }
.offer-conseil-block--orange { border-color: #fdba74; background: var(--orange-l); }
.offer-conseil-block--red { border-color: #fca5a5; background: var(--red-l); }
.offer-conseil-block-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 6px;
}
.offer-conseil-block-type {
  font-weight: 800;
  font-size: 13px;
  color: var(--navy);
}
.offer-conseil-block-actions {
  display: flex;
  gap: 8px;
}
.offer-conseil-edit-btn,
.offer-conseil-remove-btn {
  border: none;
  background: transparent;
  cursor: pointer;
  font-size: 13px;
  padding: 2px 4px;
  color: var(--gray-600);
}
.offer-conseil-block-text {
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--gray-800, #1f2937);
  white-space: pre-wrap;
}
.offer-conseil-date {
  margin-top: 6px;
  font-size: 11px;
}

/* ── Analyse IA de l'offre — accordéon (courtier/admin seulement) ── */
.rev-accordion {
  margin-top: 8px;
}
.rev-accordion-toggle {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  background: var(--gray-50, #f9fafb);
  border: 1px solid var(--gray-200);
  border-radius: 10px;
  padding: 12px 14px;
  cursor: pointer;
  text-align: left;
}
.rev-accordion-title {
  font-weight: 800;
  font-size: 13.5px;
  color: var(--navy);
}
.rev-accordion-status {
  font-size: 12px;
  font-weight: 700;
}
.rev-accordion-status.ok { color: var(--green); }
.rev-accordion-status.warn { color: #b45309; }
.rev-accordion-status.neutral { color: var(--gray-600); }
.rev-accordion-chevron {
  margin-left: auto;
  font-size: 12px;
  font-weight: 700;
  color: var(--gray-600);
}
.rev-accordion-body {
  padding-top: 14px;
}
.rev-accordion-body.collapsed {
  display: none;
}
.offre-docs-block {
  margin-bottom: 8px;
}
.doc-offre-toolbar {
  margin: 0 0 12px;
}
.doc-offre-toolbar .doc-bulk-share-actions {
  flex-wrap: wrap;
  align-items: center;
  gap: 5px 8px;
}
.doc-offre-toolbar .doc-view-toggle {
  margin: 0;
}
.doc-view-mode-liste .doc-casier-group--list {
  border: none;
  padding: 0;
  background: transparent;
  border-radius: 0;
  box-shadow: none;
}

.doc-view-mode-liste .doc-casier-group--list > .doc-card--list-row,
.doc-view-mode-liste .doc-casier-group--list > .doc-card--list-cd-row {
  width: 100%;
  border: none;
  border-radius: 0;
  border-bottom: 1px solid var(--bordure);
  box-shadow: none;
  background: var(--casier-fond);
  padding-top: 12px;
  padding-bottom: 12px;
}

.doc-view-mode-liste .doc-casier-group--list > .doc-card--list-row:last-child,
.doc-view-mode-liste .doc-casier-group--list > .doc-card--list-cd-row:last-child {
  border-bottom: none;
}

.doc-view-mode-liste .doc-staff-columns .doc-casier-group--list {
  border: 1.5px solid var(--bordure);
  border-radius: 14px;
  background: var(--casier-fond);
  overflow: hidden;
  box-shadow: var(--sh);
}
.doc-view-mode-liste .doc-list-row-bottom .doc-casier-stack {
  margin-top: 0;
}
.doc-view-mode-liste .doc-list-row-bottom .doc-casier-stack-summary {
  margin-top: 4px;
  margin-bottom: 4px;
}
.offre-section-divider {
  margin: 24px 0;
  border: none;
  border-top: 1px solid var(--gray-200);
}

/* ── Offre en cours — onglet Documents : 2 colonnes (docs + conseils | analyse IA) ── */
.offre-tab-columns {
  display: grid;
  grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr);
  gap: 24px;
  align-items: start;
}
.offre-tab-col {
  min-width: 0;
}
.offre-tab-col--main .offre-docs-block {
  margin-bottom: 20px;
}
.offre-negociation-block {
  margin-bottom: 24px;
  padding-top: 4px;
  border-top: 1.5px solid var(--gray-100);
}
.negociation-dropzone {
  margin-bottom: 16px;
}
.negociation-classify-btn {
  display: block;
  width: 100%;
  margin-top: 12px;
}
.wiz-negociation-notice {
  margin: 12px 0 0;
  padding: 10px 14px;
  border-radius: 8px;
  background: var(--blue-l, #eef4fb);
  border: 1px solid var(--blue-m, #c2cfdf);
  color: var(--navy, #1e3a5f);
  font-size: 13px;
  line-height: 1.45;
}
.rev-staff-block--conseils {
  margin-top: 0;
}
.rev-staff-block--ia {
  margin-top: 0;
}
/* 3 casiers par rangée dans la colonne principale (~62 %) sans changer leur taille. */
.offre-tab-col--main .doc-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
@media (max-width: 960px) {
  .offre-tab-columns {
    grid-template-columns: 1fr;
    gap: 28px;
  }
  .offre-tab-col--ia {
    border-top: 1px solid var(--gray-200);
    padding-top: 24px;
  }
}
@media (max-width: 640px) {
  .offre-tab-col--main .doc-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 420px) {
  .offre-tab-col--main .doc-grid {
    grid-template-columns: 1fr;
  }
}

/* ── OFFRE EN COURS — sous-onglets (Documents / Conditions et délais) ── */
/* ── TRANSACTION — sous-onglets (Suivi / Contact) — même comportement ── */
.offre-subtab-pane,
.suivi-subtab-pane {
  display: none;
}
.offre-subtab-pane.active,
.suivi-subtab-pane.active {
  display: block;
}

.cond-timing-echeance {
  font-weight: 700;
}
.cond-timing-echeance--late {
  color: var(--red);
}
.cond-timing-echeance--urgent {
  color: var(--orange);
}
.cond-timing-echeance--soon {
  color: #a16207;
}
.cond-timing-echeance--neutral {
  color: var(--gray-600);
  font-weight: 600;
}
.rev-staff-block {
  margin-top: 4px;
}
.rev-client-card {
  margin-top: 16px;
}
.r25b-box {
  margin-top: 12px;
  border: 1.5px solid #fca5a5;
  background: #fff1f2;
  border-radius: 10px;
  padding: 12px 14px;
}
.r25b-title {
  font-size: 13.5px;
  font-weight: 800;
  color: #be123c;
  margin-bottom: 4px;
}
.r25-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
  margin-bottom: 12px;
}
/* Sélecteur % / $ collé à sa valeur, sur une seule ligne : le menu prenait
   toute la largeur du champ et poussait la saisie en dessous. */
.r25-grid .calc-retrib-wrap {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
}
.r25-grid .calc-mode-sel {
  flex: 0 0 auto;
  width: auto;
  min-width: 0;
  font-weight: 800;
  color: var(--navy);
  padding: 8px 6px;
}
.r25-grid .calc-retrib-wrap input {
  flex: 1 1 auto;
  min-width: 0;
}
.r25-price {
  font-size: 15px;
  font-weight: 800;
  color: var(--navy);
  padding: 8px 0;
}
.r25-results {
  background: #fff;
  border: 1px solid var(--gray-200);
  border-radius: 10px;
  overflow: hidden;
}
.r25-res {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding: 9px 14px;
  font-size: 13px;
  color: var(--gray-600);
  border-bottom: 1px solid var(--gray-100, #f1f5f9);
}
.r25-res:last-child {
  border-bottom: none;
}
.r25-res b {
  color: var(--navy);
  text-align: right;
}
.r25-res.hl {
  background: var(--navy);
  color: #fff;
}
.r25-res.hl b {
  color: #fff;
  font-size: 15px;
}
.r25-res.hl .r25-pct {
  color: #cfe0ff;
}
.r25-pct {
  display: block;
  font-size: 11.5px;
  font-weight: 700;
  color: var(--blue);
  margin-top: 2px;
}
.r25-flag {
  background: #fee2e2;
  border: 1px solid #fca5a5;
  color: #991b1b;
  border-radius: 8px;
  padding: 9px 12px;
  font-size: 12.5px;
  line-height: 1.45;
  margin-top: 10px;
  display: flex;
  gap: 8px;
  align-items: flex-start;
}
.r25-ok {
  background: var(--green-l);
  border: 1px solid #bfe6cf;
  color: var(--green);
  border-radius: 8px;
  padding: 9px 12px;
  font-size: 12.5px;
  font-weight: 600;
  margin-top: 10px;
}

/* ── DOCUMENTS — vue unifiée + dépôt client ── */
.doc-unified-view {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
}

.doc-staff-columns {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 0;
  align-items: start;
  width: 100%;
  min-width: 0;
}

/* En-tête intégré au flux de CHAQUE colonne (voir renderDocStaffHeaderCol) —
   plus de grille/rangée partagée entre courtier et client : chaque colonne
   (.doc-staff-col--broker/--client) est un unique flux vertical (en-tête +
   casiers), totalement indépendant de l'autre. Déployer une checklist d'un
   côté ne pousse donc QUE sa propre colonne ; l'alignement du haut (titre,
   compteur, ajout, checklist repliée) vient uniquement des min-height
   identiques ci-dessous entre les deux colonnes. */
.doc-staff-header-row--title {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  row-gap: 6px;
  gap: 10px;
  min-height: 48px;
  padding-bottom: 8px;
  box-sizing: border-box;
  border-bottom: 1.5px solid var(--gray-100);
}

.doc-staff-header-row--title .doc-section-title {
  flex: 0 1 auto;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: none;
}

.doc-staff-header-row-center {
  flex: 1 1 auto;
  display: flex;
  justify-content: center;
  align-items: center;
  min-width: 0;
}

.doc-staff-header-row--title .doc-section-prog {
  flex: 0 0 auto;
  min-width: 0;
}

.doc-staff-header-row--title .doc-view-toggle {
  margin-bottom: 0;
  flex-shrink: 0;
}

.doc-staff-header-row--add {
  min-height: 40px;
  display: flex;
  align-items: center;
  box-sizing: border-box;
}

.doc-staff-header-row--bulk {
  min-height: 0;
  display: flex;
  align-items: flex-start;
  box-sizing: border-box;
  margin-bottom: 0;
}

.doc-staff-header-row--bulk .doc-bulk-share-bar {
  width: 100%;
  margin-bottom: 0;
  padding: 0;
  background: transparent;
  border: none;
  gap: 6px;
  flex-direction: column;
  align-items: stretch;
  min-width: 0;
}

.doc-staff-header-row--bulk .doc-bulk-share-actions {
  flex-wrap: wrap;
  gap: 5px 8px;
  min-width: 0;
}

.doc-staff-header-row--bulk .doc-bulk-share-count {
  font-size: 10.5px;
  color: var(--gray-500);
}

.doc-staff-header-row--checklist {
  min-height: 0;
  display: flex;
  align-items: flex-start;
  box-sizing: border-box;
  margin-bottom: 10px;
}

.doc-staff-header-row--checklist .client-depot-checklist {
  flex: 1 1 auto;
  width: 100%;
  margin: 0;
  padding: 2px 14px 10px;
}

.doc-staff-header-row--checklist .client-depot-checklist-toggle:has(+ .client-depot-checklist-items.hide) {
  margin-bottom: 0;
}

.doc-staff-header-row--empty {
  visibility: hidden;
  pointer-events: none;
  user-select: none;
}

.doc-staff-col-body {
  min-width: 0;
}

.doc-staff-col--broker,
.doc-staff-col--client {
  min-width: 0;
  overflow-x: clip;
}

/* Séparateur visuel courtier | client (mur fonctionnel inchangé) */
.doc-staff-col--broker {
  padding-right: 16px;
}

.doc-staff-col--client {
  border-left: 1px dashed #d0d5dd;
  padding-left: 16px;
}

/* Colonnes courtier + client (50 / 50) : 3 casiers par rangée en mode casier. */
.doc-staff-col--broker .doc-grid,
.doc-staff-col--client .doc-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

@media (max-width: 1023px) {
  .doc-staff-columns {
    grid-template-columns: 1fr;
  }

  .doc-staff-col--broker {
    padding-right: 0;
  }

  .doc-staff-col--client {
    border-left: none;
    padding-left: 0;
    border-top: 1px dashed #d0d5dd;
    margin-top: 20px;
    padding-top: 20px;
  }

  .doc-name-row {
    gap: 10px 12px;
  }
}

@media (max-width: 640px) {
  .doc-staff-col--broker .doc-grid,
  .doc-staff-col--client .doc-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 420px) {
  .doc-staff-col--broker .doc-grid,
  .doc-staff-col--client .doc-grid {
    grid-template-columns: 1fr;
  }
}

/* Casiers de taille fixe (largeur ET hauteur) dans l'onglet Documents,
   pour éviter tout « saut » de hauteur au dépôt d'un fichier. */
.doc-staff-columns .doc-card {
  height: 214px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.doc-staff-columns .doc-name {
  flex: 0 0 auto;
  min-height: calc(1.4em * 2);
  max-height: calc(1.4em * 2);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.4;
  /* Casiers de taille fixe (voir .doc-staff-columns .doc-card ci-dessus) :
     ne JAMAIS couper un nom en plein mot (ex. « Taxes municipales » →
     « Taxes munici pales ») — on autorise seulement le retour à la ligne
     entre les mots (comportement par défaut). Un mot isolé plus long que
     le casier dépassera plutôt que d'être tronqué au milieu. */
  overflow-wrap: normal;
  word-break: normal;
}

.doc-staff-columns .doc-tags {
  flex: 0 0 auto;
  min-height: 18px;
  max-height: 18px;
  overflow: hidden;
}

.doc-staff-columns .doc-card-mid {
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden; /* pas de scrollbar interne */
}

.doc-staff-columns .doc-act-row {
  flex: 0 0 auto;
  margin-top: auto;
  padding-right: 0;
  padding-top: 4px;
}

.doc-staff-columns .doc-uploaded {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Mode liste : neutralise les tuiles de taille fixe des colonnes courtier/client
   pour revenir à des lignes compactes (priment via une spécificité plus élevée). */
.doc-view-mode-liste .doc-staff-columns .doc-card {
  height: auto;
  overflow: visible;
  flex-direction: row;
  flex-wrap: wrap;
}

.doc-view-mode-liste .doc-staff-columns .doc-name {
  flex: 1 1 0;
  min-width: 0;
  min-height: 0;
  max-height: none;
  display: block;
  overflow: visible;
  overflow-wrap: anywhere;
  word-break: break-word;
  -webkit-line-clamp: unset;
}

.doc-view-mode-liste .doc-staff-columns .doc-list-text {
  flex: 1 1 0;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.doc-view-mode-liste .doc-staff-columns .doc-tags {
  min-height: 0;
  max-height: none;
}

.doc-view-mode-liste .doc-staff-columns .doc-card-mid {
  flex: 1 1 0;
  min-width: 0;
  max-width: 100%;
  overflow: visible;
}

.doc-view-mode-liste .doc-staff-columns .doc-act-row {
  margin-top: 0;
  margin-left: auto;
  padding-top: 0;
}

.doc-view-mode-liste .doc-staff-columns .doc-uploaded {
  display: block;
  overflow: visible;
  -webkit-line-clamp: unset;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* Mode liste — rangée en 2 lignes (vide) ou 1 ligne (document déposé) :
   L1 = case à cocher (si doc) + pastille + titre à gauche, actions à droite ;
   L2 = indice « Glissez un fichier… » pleine largeur. Colonnes courtier et
   client partagent doc-card--list-row ; doc-card--list-cd-row = alias dépôt client. */
.doc-view-mode-liste .doc-staff-columns .doc-card--list-row,
.doc-view-mode-liste .doc-staff-columns .doc-card--list-cd-row {
  flex-direction: column;
  flex-wrap: nowrap;
  align-items: stretch;
  gap: 4px;
}

.doc-view-mode-liste .doc-staff-col--broker .doc-card--list-row.uploaded,
.doc-view-mode-liste .doc-staff-col--broker .doc-card--list-cd-row.uploaded {
  border-color: transparent;
  background: var(--casier-fond);
}

.doc-view-mode-liste .doc-list-row-top {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 10px;
  width: 100%;
  min-width: 0;
}

.doc-staff-columns .doc-list-row-top {
  flex-wrap: wrap;
}

.doc-view-mode-liste .doc-list-row-top .doc-head {
  flex: 0 0 auto;
  margin: 0;
  width: auto;
  min-width: 0;
  align-items: center;
}

.doc-view-mode-liste .doc-list-row-top .doc-list-text {
  flex: 1 1 0;
  min-width: 0;
  margin: 0;
}

.doc-view-mode-liste .doc-list-row-top .doc-name {
  flex: 1 1 0;
  min-width: 0;
  margin: 0;
}

.doc-view-mode-liste .doc-list-row-top .doc-act-row {
  flex: 0 0 auto;
  margin-left: auto;
  align-self: center;
}

.doc-view-mode-liste .doc-list-row-top .doc-casier-remove {
  position: static;
  flex: 0 0 auto;
  margin-left: 0;
}

.doc-view-mode-liste .doc-list-row-bottom {
  width: 100%;
  min-width: 0;
  flex: 1 1 100%;
}

.doc-view-mode-liste .doc-card--list-row .doc-card-drop-hint,
.doc-view-mode-liste .doc-card--list-cd-row .doc-card-drop-hint {
  margin: 0;
  white-space: normal;
  text-align: left;
  overflow: visible;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.doc-view-mode-liste .doc-card--list-row .doc-casier-files,
.doc-view-mode-liste .doc-card--list-cd-row .doc-casier-files {
  width: 100%;
}

.doc-section-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
  padding-bottom: 8px;
  border-bottom: 1.5px solid var(--gray-100);
  min-height: 44px;
}

.doc-section-head .doc-section-title {
  margin: 0;
  padding: 0;
  border: none;
  flex: 1 1 auto;
  min-width: 0;
}

.doc-section-head-right {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 10px;
}

.doc-section-head-right .doc-add-btn {
  font-size: 12px;
  padding: 6px 12px;
  white-space: nowrap;
  flex-shrink: 0;
}

/* « + Ajouter un document » : sous le titre de sa colonne (Prise en charge du
   mandat / Documents client (dépôt)), à gauche — pas dans la ligne du haut
   avec le titre/Mode casier-liste/la barre de progression. */
.doc-section-add-row {
  display: flex;
  justify-content: flex-start;
  margin: -6px 0 12px;
}

.doc-section-add-row .doc-add-btn {
  font-size: 12px;
  padding: 6px 12px;
}

.doc-section-head .doc-view-toggle {
  margin-bottom: 0;
  flex-shrink: 0;
}

.doc-section-prog {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  min-width: 140px;
  min-height: 28px;
}

.intake-prog-bar--inline {
  width: 140px;
  height: 4px;
  margin: 0 0 0;
  margin-bottom: 0;
}

.doc-staff-columns .intake-achat-note,
.doc-staff-columns .intake-recat-note {
  margin-top: 12px;
  margin-bottom: 0;
}

/* Bandeau de groupe (ex. « ⏳ Requis ») — même hauteur des deux côtés pour aligner la 1re rangée */
.doc-staff-columns .intake-group {
  margin-bottom: 24px;
}

.doc-staff-columns .intake-group + .intake-group {
  margin-top: 12px;
}

.doc-staff-columns .doc-staff-grid-lead {
  display: flex;
  align-items: center;
  min-height: 28px;
  margin-top: 4px;
  margin-bottom: 12px;
  padding-top: 4px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--gray-200);
  box-sizing: border-box;
}

.doc-staff-columns .doc-staff-grid-lead .intake-group-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 800;
  line-height: 1.3;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  color: var(--gray-800);
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: none;
}

.doc-staff-columns .doc-staff-grid-lead--spacer {
  font-size: 13px;
  font-weight: 800;
  line-height: 1.3;
  letter-spacing: 0.4px;
  visibility: hidden;
  pointer-events: none;
  user-select: none;
}

.doc-staff-columns .doc-staff-grid-lead + .doc-grid {
  margin-top: 4px;
}

.doc-unified-section {
  margin-bottom: 28px;
}

.doc-unified-section:last-child {
  margin-bottom: 0;
}

.doc-section-title {
  font-size: 15px;
  font-weight: var(--fw-semibold);
  color: var(--navy);
  margin: 0 0 14px;
  padding-bottom: 8px;
  border-bottom: 1.5px solid var(--gray-100);
}

.doc-subsection {
  margin-top: 18px;
}

.doc-subsection-title {
  font-size: 13px;
  font-weight: var(--fw-medium);
  color: var(--gray-600);
  margin: 0 0 10px;
}

.doc-section-empty {
  margin: 0 0 8px;
}

.client-doc-intro {
  margin-bottom: 16px;
  padding: 10px 12px;
  background: var(--gray-50, #f9fafb);
  border-radius: 8px;
  border: 1px solid var(--gray-100);
}

.client-doc-intro p {
  margin: 0;
  font-size: 13px;
}

.doc-grid--readonly .doc-card {
  cursor: default;
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-height: unset;
  height: auto;
}

.doc-grid--readonly .doc-card--dropzone {
  cursor: pointer;
}

/* Casier déjà déposé — plus une zone de dépôt active (glisser ni clic) : pas de curseur d'action. */
.doc-grid--readonly .doc-card--dropzone[data-casier-filled] {
  cursor: default;
}

.doc-slot-hint {
  font-size: 11.5px;
  line-height: 1.35;
  margin: 4px 0 0;
}

.doc-casier-file-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 10px;
  margin-bottom: 6px;
}

.doc-casier-files {
  width: 100%;
  margin-bottom: 4px;
}

.pill-warn {
  background: var(--attention-fond);
  color: var(--dore-texte);
  border: 1px solid color-mix(in srgb, var(--dore) 40%, var(--bordure));
}

.doc-card--client-depot .doc-pill.pill-warn {
  font-size: 10px;
}

.doc-card--client-depot.uploaded,
.doc-card--client-depot.doc-card--req-ok {
  border-color: var(--green-m);
  background: var(--green-l);
}

.client-depot-checklist {
  margin: 0 0 14px;
  padding: 12px 14px;
  border: 1px solid var(--gray-200);
  border-radius: 10px;
  background: var(--gray-50);
}

.client-depot-checklist--complete {
  border-color: var(--green-m);
  background: var(--green-l);
}

.client-depot-checklist-toggle {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 0;
  margin-bottom: 8px;
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
}

.client-depot-checklist-title {
  font-size: 12px;
  font-weight: 700;
  color: var(--gray-700);
}

.client-depot-checklist-count {
  font-size: 11.5px;
  font-weight: 700;
  color: var(--gray-500);
}

.client-depot-checklist-deploy {
  margin-left: auto;
  font-size: 11px;
  font-weight: 700;
  color: var(--blue);
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

.client-depot-checklist-chevron {
  font-size: 11px;
  font-weight: 700;
  color: var(--gray-500);
}

.client-depot-checklist-items {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.client-depot-check-item {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12.5px;
  color: var(--gray-700);
}

.client-depot-check-item.is-pending {
  color: var(--orange);
}

.client-depot-check-item.is-done {
  color: var(--green-d);
}

.client-depot-check-mark {
  flex: 0 0 1.1em;
  font-weight: 700;
}

.client-depot-toggle-row {
  margin: 6px 0 2px;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

.client-depot-fournir-toggle,
.client-depot-custom-remove {
  font-size: 11px;
  padding: 4px 8px;
}

/* ── Onglet « Offre en cours » — sous-onglet Information importante ── */
.info-edit {
  font-size: 12px;
  font-weight: 700;
  padding: 5px 10px;
  border-radius: 7px;
  border: 1.5px solid var(--blue);
  color: var(--blue);
  background: var(--white);
  white-space: nowrap;
  cursor: pointer;
}

.info-edit:hover {
  background: var(--blue-l);
}

.info-edit:disabled {
  opacity: 0.6;
  cursor: wait;
}

.info-delai-reponse-line {
  font-size: 14px;
  font-weight: 600;
  color: var(--navy);
  line-height: 1.5;
}

.info-delai-acceptation {
  margin-bottom: 12px;
}
.info-delai-acceptation .info-row--delai-reponse {
  border: none;
  background: transparent;
  padding: 0;
  margin: 0;
}
.info-delai-acceptation .detail-row-main {
  font-weight: 700;
}

.info-acceptee-critical {
  border: 1px solid var(--border, #d1d5db);
  background: #ecfdf5;
  margin-bottom: 12px;
}
.info-acceptee-critical .info-row {
  border: none;
  background: transparent;
  padding: 0;
  margin: 0;
}
.info-acceptee-critical .detail-row-main {
  font-weight: 700;
}

.delai-reponse-section {
  margin-bottom: 0;
}

.info-importante-section--spaced {
  margin-top: 28px;
  padding-top: 4px;
  border-top: 1.5px solid var(--gray-100);
}

.delai-reponse-datetime {
  font-size: 15px;
  font-weight: 600;
  color: var(--navy);
  line-height: 1.45;
}

.delai-reponse-relative {
  margin-top: 6px;
}

.delai-reponse-content {
  flex: 1 1 auto;
  min-width: 0;
}

.info-autres-wrap {
  background: transparent;
  border: none;
  padding: 4px 0 0;
}

.info-autres-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 8px 0;
}

.info-autre-row {
  background: var(--gray-50);
}

.info-autre-text {
  flex: 1 1 auto;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}

#info-edit-modal .form-grid textarea.modal-textarea {
  min-height: 120px;
}

#info-edit-modal .wiz-delai-reponse-field {
  margin: 0;
}

#info-edit-modal .wiz-delai-reponse-row > .cond-field {
  flex: 1 1 120px;
  min-width: 0;
  margin: 0;
}

/* ── Kit premium raffiné (composants) ── */
body,
button,
input,
select,
textarea {
  font-weight: var(--fw-normal);
}

.tab-btn,
.btn-primary,
.btn-secondary,
.btn-advance,
.btn-client-preview,
.doc-pill,
.doc-name,
.sig-counter-label,
.substep-vis-toggle,
.substep-echeance-pill,
.prix-chip,
.retrib-chip,
.commission-chip {
  font-weight: var(--fw-medium);
}

.tab-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.tab-btn-icon,
.doc-subtab-icon,
.btn-client-preview-icon {
  font-size: 1.05em;
  line-height: 1;
  opacity: 0.92;
}

.doc-subtab-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.btn-client-preview {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.btn-primary,
.btn-advance,
.btn-modal-create,
.btn-add-client,
.btn-add-dossier,
.btn-add-parti,
#pm-confirm,
#step-next,
#cond-submit,
#parti-submit,
#create-submit {
  border-radius: 9px;
  background: var(--marine);
}

.btn-primary:hover,
.btn-advance:hover,
#step-next:hover:not(:disabled) {
  background: var(--marine-fonce);
}

.btn-secondary,
.btn-modal-cancel {
  border-width: 0.5px;
  border-color: var(--btn-secondaire-border);
  border-radius: 9px;
  color: var(--marine);
}

.doc-pill-btn {
  width: 34px;
  height: 34px;
  min-width: 34px;
  min-height: 34px;
  border-radius: 9px;
  border: 0.5px solid var(--btn-action-border);
  background: var(--casier-fond);
  color: var(--icone-action);
}

.doc-pill-btn .ti {
  font-size: 17px;
  line-height: 1;
}

.doc-pill-btn:hover:not(:disabled) {
  background: var(--btn-action-hover);
}

.doc-pill-btn.doc-vis-indicator--internal,
.doc-vis-toggle-btn.doc-vis-indicator--internal {
  background: var(--danger-surface);
  border-color: var(--danger-bordure);
  color: var(--danger);
}

.doc-pill-btn.doc-vis-indicator--internal:hover,
.doc-vis-toggle-btn.doc-vis-indicator--internal:hover {
  background: var(--danger-surface);
  border-color: var(--danger-bordure);
}

.doc-pill-btn.doc-pill-btn--remove,
.doc-pill-btn.doc-remove.doc-casier-remove {
  width: 30px;
  height: 30px;
  min-width: 30px;
  min-height: 30px;
  border: none;
  background: transparent;
  color: var(--icone-retrait);
  border-radius: 8px;
}

.doc-pill-btn.doc-pill-btn--remove:hover,
.doc-pill-btn.doc-remove:hover {
  background: color-mix(in srgb, var(--creme-fond) 70%, transparent);
}

.doc-pill-actions .doc-vis-toggle-btn {
  position: static;
  width: 34px;
  height: 34px;
  min-width: 34px;
  min-height: 34px;
}

.doc-card {
  background: var(--casier-fond);
  border-width: 0.5px;
  border-color: var(--bordure);
  border-radius: 12px;
  padding: 13px 15px;
  gap: 10px;
}

.doc-form-num-badge {
  border-radius: 6px;
  letter-spacing: 0.03em;
  font-weight: var(--fw-medium);
}

.pill-ok {
  background: var(--pill-depose-fond);
  color: var(--pill-depose-texte);
  font-weight: var(--fw-medium);
  letter-spacing: 0.05em;
  font-size: 10px;
}

.pill-req,
.pill-cond {
  background: var(--pill-attente-fond);
  color: var(--pill-attente-texte);
}

.doc-sig-indicator {
  font-weight: var(--fw-medium);
  gap: 5px;
}

.doc-sig-indicator .sig-counter-glyph .ti {
  font-size: 13px;
  vertical-align: -1px;
}

.substep-vis-toggle {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 11px;
}

.substep-vis-toggle--internal {
  color: var(--danger);
  background: var(--danger-surface);
  border: 0.5px solid var(--danger-border-soft);
}

.substep-echeance-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  border-style: dashed;
  border-color: var(--btn-secondaire-border);
  color: var(--texte-secondaire);
}

.substep-icon .ti {
  font-size: 18px;
  line-height: 1;
}

.substep.done-sub .substep-icon .ti {
  color: var(--succes);
}

.substep-echeance-icon {
  font-size: 13px;
}

.prix-chip {
  background: var(--pill-attente-fond);
  color: var(--pill-attente-texte);
  border: 0.5px solid #ead6a6;
  border-radius: 10px;
  padding: 8px 13px;
  font-size: 13px;
}

.retrib-chip {
  background: var(--form-badge-fond);
  color: var(--marine);
  border: 0.5px solid #c3d0e2;
  border-radius: 10px;
  padding: 8px 13px;
  font-size: 13px;
}

.commission-chip {
  background: var(--succes-fond);
  color: var(--succes);
  border: 0.5px solid #a9dcc8;
  border-radius: 10px;
  padding: 8px 13px;
  font-size: 13px;
}

.retrib-chip-icon {
  font-size: 16px;
  flex-shrink: 0;
}

.prix-chip b,
.retrib-chip b,
.commission-chip b {
  color: var(--texte);
  font-weight: var(--fw-medium);
}

.retrib-edit {
  color: color-mix(in srgb, var(--dore-texte) 85%, var(--marine));
  opacity: 0.85;
}

.retrib-edit .ti {
  font-size: 14px;
}
