/* ============================================================
   styles.css � Portail Patient JULiA V4
   Tokens + composants + responsive (un seul fichier)
   ============================================================ */

/* ---- Google Fonts (charg�es dans le HTML) ---- */

:root {
  /* ---- Palette V1 (appliqu�e � la V4) ---- */
  --primary-rgb: 28, 69, 143;
  --accent-rgb: 236, 116, 13;

  /* fonds & encre */
  --bg: #f5f7f9;
  --bg-warm: #ffffff;
  --surface: #ffffff;
  --ink: #0f172a;
  --ink-2: #1e293b;
  --ink-soft: #64748b;
  --line: #d1d9e0;
  --line-soft: #e8edf2;
  --devis-banner-bg: #d9e5f6;
  --devis-banner-edge: rgba(var(--primary-rgb), 0.16);

  /* primaire � bleu V1 : navigation, liens, titres */
  --sage: #1c458f;
  --sage-dk: #163a75;
  --sage-soft: rgba(var(--primary-rgb), 0.12);
  --sage-ink: #1c458f;

  /* accent � orange V1 : CTA, onglets actifs, badges */
  --accent: #EC740D;
  --accent-hover: #c9620b;
  --accent-soft: rgba(var(--accent-rgb), 0.15);
  --accent-ink: #c9620b;

  /* reste � charge / urgent */
  --clay: #1c458f;
  --clay-soft: rgba(var(--primary-rgb), 0.08);
  --clay-ink: #1c458f;

  /* mutuelle / alertes */
  --amber: #EC740D;
  --amber-soft: rgba(var(--accent-rgb), 0.12);
  --amber-ink: #c9620b;

  /* s�curit� sociale, documents */
  --blue: #1c458f;
  --blue-soft: rgba(var(--primary-rgb), 0.1);
  --blue-ink: #1c458f;

  /* valid� / succ�s */
  --good: #059669;
  --good-soft: #d1fae5;
  --good-ink: #047857;

  /* sidebar � bleu primaire V1 */
  --sidebar-bg: #1c458f;
  --sidebar-bg-deep: #163a75;

  --radius: 10px;
  --radius-sm: 7px;
  --radius-xs: 4px;

  --sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  --serif: "Newsreader", "Iowan Old Style", Georgia, serif;

  --sidebar-w: 232px;
  --topbar-h: 3.5rem;
  --shadow-sm: 0 1px 3px rgba(0,0,0,0.05);
  --shadow: 0 2px 8px rgba(0,0,0,0.07);
  --shadow-lg: 0 8px 24px rgba(0,0,0,0.10);
  --transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

/* ---- Reset ---- */

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

html {
  scroll-behavior: smooth;
  overflow-x: clip;
}

body {
  font-family: var(--sans);
  font-size: 15px;
  line-height: 1.6;
  color: var(--ink-2);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: clip;
}

img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; border: none; background: none; }
ul, ol { list-style: none; }

/* ---- Accessibility ---- */

:focus-visible {
  outline: 2px solid rgba(var(--primary-rgb), 0.45);
  outline-offset: 2px;
  border-radius: var(--radius-xs);
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ---- Typography ---- */

h1, h2, h3, h4 {
  font-family: var(--serif);
  color: var(--ink);
  line-height: 1.3;
}

.tabular-nums { font-variant-numeric: tabular-nums; }

/* ============================================================
   LAYOUT SHELL
   ============================================================ */

.app {
  display: flex;
  min-height: 100vh;
  width: 100%;
  max-width: 100%;
  overflow-x: clip;
}

/* ---- Sidebar (Desktop ? 1024px) ---- */

.sidebar {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  width: var(--sidebar-w);
  background: linear-gradient(180deg, var(--sidebar-bg) 0%, var(--sidebar-bg-deep) 100%);
  color: #fff;
  display: flex;
  flex-direction: column;
  z-index: 100;
  overflow-y: auto;
}

.sidebar::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--accent) 0%, rgba(var(--accent-rgb), 0.55) 100%);
  z-index: 1;
}

.sidebar-logo {
  padding: 1.5rem 1.25rem 0.5rem;
  font-family: var(--sans);
  font-size: 1.2rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  color: #ffffff;
  text-transform: uppercase;
}
.sidebar-logo span {
  opacity: 0.45;
  font-weight: 400;
  color: #fff;
  text-transform: none;
  letter-spacing: 0;
  font-size: 0.85rem;
  margin-left: 0.15rem;
}

.sidebar-family {
  margin: 1rem 0.75rem 1rem;
  padding: 0.75rem 0.85rem;
  background: rgba(255,255,255,0.08);
  border-radius: var(--radius-sm);
  border-left: 3px solid var(--accent);
}
.sidebar-family-name {
  font-weight: 600;
  font-size: 0.85rem;
  margin-bottom: 0.15rem;
}
.sidebar-family-meta {
  font-size: 0.72rem;
  opacity: 0.5;
}

.sidebar-nav {
  flex: 1;
  padding: 0 0.5rem;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.sidebar-nav a {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  padding: 0.6rem 0.75rem;
  border-radius: var(--radius-sm);
  font-size: 0.88rem;
  font-weight: 500;
  color: rgba(255,255,255,0.75);
  transition: all var(--transition);
  position: relative;
}
.sidebar-nav a svg {
  width: 20px;
  height: 20px;
  flex-shrink: 0;
  opacity: 0.6;
}
.sidebar-nav a:hover {
  background: rgba(255,255,255,0.08);
  color: #fff;
}
.sidebar-nav a:hover svg { opacity: 0.9; }
.sidebar-nav a.active {
  background: var(--bg);
  color: var(--sage);
  font-weight: 600;
  border-left: 4px solid rgba(var(--accent-rgb), 0.6);
  margin-left: -4px;
  padding-left: calc(0.75rem - 1px);
}
.sidebar-nav a.active svg { opacity: 1; color: var(--sage); }

.nav-badge {
  margin-left: auto;
  background: rgba(var(--accent-rgb), 0.85);
  color: #fff;
  font-size: 0.65rem;
  font-weight: 700;
  min-width: 1.1rem;
  height: 1.1rem;
  border-radius: 20px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 0.35rem;
  box-shadow: 0 1px 4px rgba(var(--primary-rgb),0.3);
}

.sidebar-footer {
  padding: 0.75rem;
  border-top: 1px solid rgba(255,255,255,0.1);
  margin-top: auto;
}
.sidebar-footer a {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  padding: 0.5rem 0.75rem;
  font-size: 0.82rem;
  color: rgba(255,255,255,0.6);
  border-radius: var(--radius-sm);
  transition: all var(--transition);
}
.sidebar-footer a:hover {
  background: rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.9);
}
.sidebar-footer a svg { width: 18px; height: 18px; opacity: 0.5; }

/* ---- Topbar ---- */

.topbar {
  display: none;
  align-items: center;
  grid-template-columns: 1fr auto 1fr;
  gap: 0.75rem;
  padding: 0.65rem 1.5rem;
  min-height: var(--topbar-h);
  background: var(--surface);
  border-bottom: 1px solid var(--line);
  position: relative;
  flex-shrink: 0;
}
.topbar-actions {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  min-width: 0;
}
.topbar-actions--start {
  justify-content: flex-start;
}
.topbar-actions--end {
  justify-content: flex-end;
}
.topbar-brand {
  justify-self: center;
  text-align: center;
  font-family: var(--sans);
  font-size: 1.35rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: none;
  color: var(--sage);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding: 0 0.5rem;
}
.topbar::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--sage) 0%, var(--accent) 100%);
}

.topbar-bell, .topbar-avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background var(--transition);
}
.topbar-bell:hover { background: var(--line-soft); }
.topbar-bell svg { width: 20px; height: 20px; color: var(--ink-soft); }
.topbar-avatar {
  background: var(--sage);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 700;
  box-shadow: 0 0 0 2px var(--surface), 0 0 0 3px var(--sage);
}

/* ---- Main area ---- */

.main {
  flex: 1;
  margin-left: var(--sidebar-w);
  min-height: 100vh;
  min-width: 0;
  max-width: 100%;
  display: flex;
  flex-direction: column;
  overflow-x: clip;
}

.main-content {
  flex: 1;
  padding: 2rem 2.5rem;
  max-width: 1200px;
  width: 100%;
  min-width: 0;
  overflow-x: clip;
}

/* ---- Bottom nav (mobile) ---- */

.bottom-nav {
  display: none;
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 200;
  background: var(--surface);
  border-top: 1px solid var(--line);
  padding: 0.35rem 0;
  padding-bottom: calc(0.35rem + env(safe-area-inset-bottom, 0px));
}

.bottom-nav-inner {
  display: flex;
  justify-content: space-around;
  align-items: center;
}

.bottom-nav a {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.15rem;
  padding: 0.35rem 0.5rem;
  font-size: 0.65rem;
  font-weight: 500;
  color: var(--ink-soft);
  min-width: 44px;
  min-height: 44px;
  justify-content: center;
  position: relative;
  transition: color var(--transition);
}
.bottom-nav a svg { width: 22px; height: 22px; }
.bottom-nav a.active {
  color: var(--sage);
  font-weight: 600;
}
.bottom-nav a.active svg { color: var(--sage); }
.bottom-nav a .nav-badge {
  position: absolute;
  top: 2px;
  right: 4px;
  margin-left: 0;
  font-size: 0.6rem;
  min-width: 1rem;
  height: 1rem;
}

/* ============================================================
   COMPOSANTS R�UTILISABLES
   ============================================================ */

/* ---- Boutons ---- */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.6rem 1.25rem;
  font-size: 0.88rem;
  font-weight: 600;
  border-radius: 999px;
  border: none;
  cursor: pointer;
  transition: all var(--transition);
  font-family: var(--sans);
  text-decoration: none;
  white-space: nowrap;
  line-height: 1.3;
}
.btn svg { width: 18px; height: 18px; flex-shrink: 0; }

.btn--primary {
  background: var(--accent);
  color: #fff;
  box-shadow: 0 2px 8px rgba(var(--accent-rgb), 0.28);
}
.btn--primary:hover {
  background: var(--accent-hover);
  box-shadow: 0 4px 14px rgba(var(--accent-rgb), 0.35);
  transform: translateY(-1px);
}

.btn--clay {
  background: var(--clay);
  color: #fff;
  box-shadow: 0 2px 8px rgba(var(--primary-rgb), 0.25);
}
.btn--clay:hover {
  background: var(--sage-dk);
  transform: translateY(-1px);
}

.btn--ghost {
  background: transparent;
  color: var(--ink-2);
  border: 1px solid var(--line);
}
.btn--ghost:hover {
  background: var(--bg-warm);
  border-color: var(--ink-soft);
}

.btn--soft {
  background: var(--sage-soft);
  color: var(--sage-ink);
}
.btn--soft:hover {
  background: rgba(var(--primary-rgb), 0.16);
}

.btn--success {
  background: var(--good);
  color: #fff;
  box-shadow: 0 2px 10px rgba(5, 150, 105, 0.28);
}
.btn--success:hover {
  background: var(--good-ink);
  box-shadow: 0 4px 14px rgba(5, 150, 105, 0.35);
  transform: translateY(-1px);
}

.btn--sm {
  padding: 0.4rem 0.85rem;
  font-size: 0.8rem;
}
.btn--sm svg { width: 15px; height: 15px; }

.btn--full { width: 100%; }

.btn--lg {
  padding: 0.75rem 1.75rem;
  font-size: 0.95rem;
}

.btn:disabled, .btn.disabled {
  opacity: 0.45;
  cursor: not-allowed;
  transform: none !important;
  box-shadow: none !important;
}

/* ---- Tags / badges ---- */

.tag {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  padding: 0.2rem 0.6rem;
  font-size: 0.72rem;
  font-weight: 600;
  border-radius: 999px;
  white-space: nowrap;
  line-height: 1.4;
}

.tag--neutral { background: var(--line-soft); color: var(--ink-2); }
.tag--sage { background: var(--good-soft); color: var(--good-ink); }
.tag--orange { background: var(--accent-soft); color: var(--accent-ink); }
.tag--clay { background: var(--clay-soft); color: var(--clay-ink); }
.tag--amber { background: var(--amber-soft); color: var(--amber-ink); }
.tag--blue { background: var(--blue-soft); color: var(--blue-ink); }
.tag--solid { background: var(--good); color: #fff; }

/* ---- Avatars ---- */

.avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  font-weight: 700;
  font-size: 0.7rem;
  color: #fff;
  flex-shrink: 0;
  line-height: 1;
}
.avatar--sm { width: 28px; height: 28px; font-size: 0.6rem; }
.avatar--md { width: 36px; height: 36px; font-size: 0.75rem; }
.avatar--lg { width: 44px; height: 44px; font-size: 0.85rem; }

/* ---- Chips (patient) ---- */

.chip {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.2rem 0.6rem 0.2rem 0.2rem;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--ink-2);
  white-space: nowrap;
}
.chip .avatar { width: 22px; height: 22px; font-size: 0.55rem; }

.chip--active {
  background: var(--sage-soft);
  border-color: var(--sage);
  color: var(--sage-ink);
  box-shadow: 0 1px 4px rgba(var(--primary-rgb),0.15);
}

/* ---- Cards ---- */

.card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 1.25rem;
  box-shadow: var(--shadow-sm);
  transition: box-shadow var(--transition), transform var(--transition);
}
.card:hover {
  box-shadow: var(--shadow);
}
.card--clickable:hover {
  transform: translateY(-1px);
  cursor: pointer;
}
.card--clay { border-left: 3px solid var(--clay); }
.card--sage { border-left: 3px solid var(--sage); }
.card--amber { border-left: 3px solid var(--amber); }

/* ---- Cost bar (r�partition S�cu / Mutuelle / Reste) ---- */

.cost-bar {
  display: flex;
  height: 10px;
  border-radius: 999px;
  overflow: hidden;
  background: var(--line-soft);
}
.cost-bar__seg {
  height: 100%;
  transition: width 0.4s ease;
}
.cost-bar__seg--secu { background: var(--blue); }
.cost-bar__seg--mutuelle { background: var(--amber); }
.cost-bar__seg--reste { background: var(--clay); }

.cost-bar--lg { height: 14px; }

/* ---- Cost legend ---- */

.cost-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.25rem;
  font-size: 0.82rem;
}
.cost-legend-item {
  display: flex;
  align-items: center;
  gap: 0.35rem;
}
.cost-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}
.cost-dot--secu { background: var(--blue); }
.cost-dot--mutuelle { background: var(--amber); }
.cost-dot--reste { background: var(--clay); }

/* ---- Libell� reste � charge (r�versible : PP_RESTE_LABEL_LONG dans data.js) ---- */

.cout-reste-row,
.sig-reste-row,
.sticky-bar-reste-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem 0.75rem;
  min-width: 0;
}

.cout-reste-row {
  font-size: 1.05rem;
  font-weight: 700;
  margin-top: 0.25rem;
  padding-top: 0.5rem;
  border-top: 1px solid var(--line);
  color: var(--clay-ink);
}

.cout-reste-row #cout-reste-value {
  flex-shrink: 0;
  font-variant-numeric: tabular-nums;
}

.sig-reste-row {
  font-size: 1rem;
  font-weight: 700;
  color: var(--clay-ink);
}

.sig-reste-row #sig-reste-value {
  flex-shrink: 0;
  font-variant-numeric: tabular-nums;
}

.sticky-bar-reste-row {
  width: 100%;
}

.sticky-bar-reste-row .sticky-bar-amount-value,
.sticky-bar-reste-row strong {
  flex-shrink: 0;
  font-variant-numeric: tabular-nums;
}

html.pp-reste-label-long .pp-reste-label {
  white-space: nowrap;
  line-height: 1.15;
}

html.pp-reste-label-long .detail-header-amount {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  justify-content: flex-end;
  gap: 0.65rem;
  flex-wrap: nowrap;
  text-align: right;
  max-width: min(100%, 30rem);
}

html.pp-reste-label-long .detail-header-amount-label {
  flex: 1 1 auto;
  min-width: 0;
}

html.pp-reste-label-long .detail-header-amount-value {
  flex-shrink: 0;
}

html.pp-reste-label-long .hero-card-amounts .devis-stat--clay {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
  flex: 1 1 100%;
  min-width: 0;
}

html.pp-reste-label-long .hero-card-amounts .devis-stat--clay strong {
  flex-shrink: 0;
}

html.pp-reste-label-long .rail-amounts__row--highlight .pp-reste-label,
html.pp-reste-label-long .detail-recap-mobile__amount-row--highlight .pp-reste-label,
html.pp-reste-label-long .proposal-pricing-row--charge .pp-reste-label {
  flex: 1 1 auto;
  min-width: 0;
}

html.pp-reste-label-long .proposal-pricing-row--charge > strong,
html.pp-reste-label-long .rail-amounts__row--highlight > span:last-child,
html.pp-reste-label-long .detail-recap-mobile__amount-row--highlight > strong {
  flex-shrink: 0;
}

html.pp-reste-label-long .sticky-bar-amount-label.pp-reste-label,
html.pp-reste-label-long .sticky-bar-reste-row .pp-reste-label {
  flex: 1 1 auto;
  min-width: 0;
}

html.pp-reste-label-long .cost-legend-item--reste {
  max-width: 100%;
}

html.pp-reste-label-long .cost-legend-item--reste .pp-reste-label {
  display: inline;
}

html.pp-reste-label-long .cout-reste-row .pp-reste-label,
html.pp-reste-label-long .sig-reste-row .pp-reste-label {
  flex: 1 1 auto;
  min-width: 0;
}

@media (max-width: 767px) {
  html.pp-reste-label-long .detail-header-amount {
    width: 100%;
    max-width: none;
    justify-content: space-between;
  }

  html.pp-reste-label-long .detail-header-amount-label {
    text-align: left;
  }

  html.pp-reste-label-long .devis-card:not(.devis-card--option):not(.devis-card--proposals) .devis-card-body > .devis-stat--clay {
    flex-wrap: nowrap;
  }

  html.pp-reste-label-long .devis-card:not(.devis-card--option):not(.devis-card--proposals) .devis-card-body > .devis-stat--clay .devis-stat__label.pp-reste-label {
    white-space: nowrap;
  }
}

/* ---- Section titles ---- */

.section-title {
  font-family: var(--serif);
  font-size: 1.15rem;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 1rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.section-title svg { width: 20px; height: 20px; color: var(--sage); opacity: 0.85; }

/* ---- Encarts (info boxes) ---- */

.encart {
  padding: 1.25rem;
  border-radius: var(--radius);
  border: 1px solid;
}
.encart--sage {
  background: var(--sage-soft);
  border-color: rgba(var(--primary-rgb),0.15);
}
.encart--clay {
  background: var(--clay-soft);
  border-color: rgba(var(--primary-rgb), 0.2);
}
.encart--amber {
  background: var(--amber-soft);
  border-color: rgba(var(--accent-rgb), 0.22);
}
.encart--blue {
  background: var(--blue-soft);
  border-color: rgba(var(--primary-rgb), 0.2);
}
.encart--flex {
  display: flex;
  gap: 1.25rem;
  align-items: flex-start;
  flex-wrap: wrap;
}
.encart-body {
  flex: 1;
  min-width: 0;
}
.encart-visual {
  flex-shrink: 0;
  align-self: flex-start;
}
.encart-visual .dental-chart-wrap {
  max-width: min(200px, 100%);
}

/* ---- Timeline ---- */

.timeline {
  position: relative;
  padding-left: 2rem;
}
.timeline::before {
  content: '';
  position: absolute;
  left: 0.75rem;
  top: 0;
  bottom: 0;
  width: 2px;
  background: var(--line);
}

.timeline-step {
  position: relative;
  padding-bottom: 1.1rem;
}
.timeline-step:last-child { padding-bottom: 0; }

.timeline-dot {
  position: absolute;
  left: -2rem;
  top: 0.1rem;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 50%;
  background: var(--sage);
  color: #fff;
  font-size: 0.65rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1;
  box-shadow: 0 1px 4px rgba(var(--primary-rgb),0.25);
}
.timeline-step--wait .timeline-dot {
  background: var(--amber-soft);
  color: var(--amber-ink);
  border: 2px dashed var(--amber);
}

.timeline-card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  padding: 0.75rem 1rem;
}

.timeline-title {
  font-weight: 600;
  font-size: 0.92rem;
  color: var(--ink);
  margin-bottom: 0.2rem;
}
.timeline-meta {
  font-size: 0.78rem;
  color: var(--ink-soft);
  margin-bottom: 0.35rem;
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  flex-wrap: wrap;
}
.timeline-meta__session {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  flex-shrink: 0;
  white-space: nowrap;
}
.timeline-meta__icon {
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
  color: var(--ink-soft);
}
.timeline-meta__icon svg {
  width: 14px;
  height: 14px;
}
.timeline-meta__session-text {
  font-weight: 500;
  color: var(--ink-soft);
}
.timeline-meta__desc--inline {
  display: none;
}
.timeline-desc {
  font-size: 0.85rem;
  color: var(--ink-2);
  line-height: 1.55;
}
.timeline-desc--below {
  display: none;
}
@media (min-width: 1024px) {
  .timeline--proposals-inline .timeline-meta {
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.35rem;
  }
  .timeline--proposals-inline .timeline-meta__session {
    align-items: center;
    line-height: 1.45;
  }
  .timeline--proposals-inline .timeline-meta__session-text {
    font-size: 0.82rem;
    line-height: 1.45;
  }
  .timeline--proposals-inline .timeline-meta__desc--inline {
    display: block;
    flex: 1 1 auto;
    min-width: 0;
    font-size: 0.82rem;
    line-height: 1.45;
    color: var(--ink-2);
    margin: 0;
    padding: 0;
  }
  .timeline--proposals-inline .timeline-desc--below {
    display: none;
  }
}
@media (max-width: 1023px) {
  .timeline-meta__session {
    white-space: normal;
  }
  .timeline--proposals-inline .timeline-meta {
    margin-bottom: 0.25rem;
  }
  .timeline--proposals-inline .timeline-desc--below {
    display: block;
    margin-bottom: 0;
  }
}
.timeline-but {
  margin-top: 0.5rem;
  padding: 0.5rem 0.75rem;
  background: var(--bg-warm);
  border-radius: var(--radius-xs);
  font-size: 0.8rem;
  color: var(--ink-2);
}
.timeline-but strong { color: var(--ink); }

/* ---- Suivi administratif du devis (timeline verticale repliable) ---- */

.devis-lifecycle-panel {
  margin-bottom: 0.75rem;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
  box-shadow: none;
  overflow: hidden;
}
.devis-lifecycle-panel[open] {
  box-shadow: var(--shadow-sm);
}
.devis-lifecycle-summary {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.45rem 0.75rem;
  cursor: pointer;
  list-style: none;
  user-select: none;
  min-height: 0;
}
.devis-lifecycle-summary::-webkit-details-marker { display: none; }
.devis-lifecycle-summary__icon {
  display: inline-flex;
  color: var(--primary);
  flex-shrink: 0;
}
.devis-lifecycle-summary__icon svg { width: 16px; height: 16px; }
.devis-lifecycle-summary__text {
  flex: 1;
  min-width: 0;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--ink-2);
  overflow-wrap: anywhere;
  line-height: 1.3;
}
.devis-lifecycle-summary__chevron {
  display: inline-flex;
  color: var(--ink-soft);
  flex-shrink: 0;
  transition: transform 0.2s ease;
}
.devis-lifecycle-summary__chevron svg { width: 16px; height: 16px; }
.devis-lifecycle-panel[open] .devis-lifecycle-summary__chevron {
  transform: rotate(180deg);
}
.devis-lifecycle-body {
  padding: 0.35rem 0.75rem 0.5rem 0.75rem;
  border-top: 1px solid var(--line-soft);
}
.devis-lifecycle-track {
  list-style: none;
  margin: 0.35rem 0 0;
  padding: 0 0 0 1.35rem;
  position: relative;
}
.devis-lifecycle-step {
  position: relative;
  padding-bottom: 0.45rem;
}
.devis-lifecycle-step:not(:last-child)::after {
  content: '';
  position: absolute;
  left: calc(-0.9rem - 1px);
  top: calc(0.12rem + 0.9rem);
  width: 2px;
  height: calc(100% - 0.9rem);
  background: var(--line);
  z-index: 0;
}
.devis-lifecycle-step:last-child { padding-bottom: 0; }
.devis-lifecycle-dot {
  position: absolute;
  left: -1.35rem;
  top: 0.12rem;
  width: 0.9rem;
  height: 0.9rem;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  z-index: 1;
  background: var(--surface);
  border: 2px solid var(--line);
  color: transparent;
}
.devis-lifecycle-dot svg {
  width: 10px;
  height: 10px;
  color: #fff;
}
.devis-lifecycle-step--done .devis-lifecycle-dot {
  background: var(--good);
  border-color: var(--good);
  color: #fff;
}
.devis-lifecycle-step--current .devis-lifecycle-dot {
  background: var(--surface);
  border-color: var(--accent);
  box-shadow: 0 0 0 2px var(--accent-soft);
}
.devis-lifecycle-step--upcoming .devis-lifecycle-dot {
  background: var(--surface);
  border-color: var(--line);
}
.devis-lifecycle-step--refused .devis-lifecycle-dot {
  background: #fef2f2;
  border-color: #b91c1c;
  color: #b91c1c;
}
.devis-lifecycle-step--refused .devis-lifecycle-dot svg { color: #b91c1c; }
.devis-lifecycle-step--expired .devis-lifecycle-dot {
  background: var(--bg);
  border-color: var(--ink-soft);
}
.devis-lifecycle-step--signed .devis-lifecycle-dot {
  background: var(--good);
  border-color: var(--good);
}
.devis-lifecycle-line {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem 0.75rem;
  min-width: 0;
}
.devis-lifecycle-main {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.2rem 0.35rem;
}
.devis-lifecycle-label {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--ink-2);
  white-space: nowrap;
}
.devis-lifecycle-who {
  font-size: 0.72rem;
  font-weight: 400;
  color: var(--ink-soft);
}
.devis-lifecycle-step--current .devis-lifecycle-label { color: var(--ink); }
.devis-lifecycle-step--upcoming .devis-lifecycle-label,
.devis-lifecycle-step--upcoming .devis-lifecycle-who,
.devis-lifecycle-step--upcoming .devis-lifecycle-date {
  color: var(--ink-soft);
}
.devis-lifecycle-date {
  flex-shrink: 0;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
  text-align: right;
  white-space: nowrap;
}
.devis-lifecycle-step--current .devis-lifecycle-date {
  font-weight: 500;
  color: var(--ink-soft);
}
.devis-lifecycle-badge {
  font-size: 0.58rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--accent-ink);
  background: var(--accent-soft);
  padding: 0.08rem 0.35rem;
  border-radius: 999px;
  line-height: 1.2;
}
.devis-lifecycle-hint {
  font-size: 0.66rem;
  color: var(--ink-soft);
  margin-top: 0.08rem;
  margin-left: 0;
  padding-left: 0;
  line-height: 1.3;
}
@media (max-width: 767px) {
  .devis-lifecycle-summary {
    padding: 0.4rem 0.65rem;
  }
  .devis-lifecycle-body {
    padding: 0.3rem 0.65rem 0.45rem;
  }
  .devis-lifecycle-line {
    flex-wrap: wrap;
    gap: 0.15rem 0.5rem;
  }
  .devis-lifecycle-date {
    margin-left: auto;
  }
}

body.page-devis-list-alt .devis-lifecycle-panel {
  background: var(--surface);
  border-color: rgba(var(--primary-rgb), 0.14);
}

/* Suivi dans cartouche liste Mes devis */
.devis-card .devis-lifecycle-panel--card {
  margin-bottom: 0.65rem;
  border-color: var(--line-soft);
  background: rgba(var(--primary-rgb), 0.03);
}
.devis-card .devis-lifecycle-panel--card[open] {
  background: var(--surface);
  box-shadow: none;
}
.devis-card .devis-lifecycle-panel--card .devis-lifecycle-summary {
  padding: 0.35rem 0.55rem;
  gap: 0.35rem;
}
.devis-card .devis-lifecycle-panel--card .devis-lifecycle-summary__text {
  font-size: 0.72rem;
  font-weight: 500;
  color: var(--ink-soft);
}
.devis-card .devis-lifecycle-panel--card .devis-lifecycle-summary__icon svg,
.devis-card .devis-lifecycle-panel--card .devis-lifecycle-summary__chevron svg {
  width: 14px;
  height: 14px;
}
.devis-card .devis-lifecycle-panel--card .devis-lifecycle-body {
  padding: 0.25rem 0.55rem 0.4rem;
}
.devis-card .devis-lifecycle-panel--card .devis-lifecycle-track {
  margin-top: 0.2rem;
  padding-left: 1.15rem;
}
.devis-card .devis-lifecycle-panel--card .devis-lifecycle-dot {
  left: -1.15rem;
  width: 0.8rem;
  height: 0.8rem;
}
.devis-card .devis-lifecycle-panel--card .devis-lifecycle-step:not(:last-child)::after {
  left: calc(-0.8rem - 1px);
  top: calc(0.1rem + 0.8rem);
  height: calc(100% - 0.8rem);
}
.devis-card .devis-lifecycle-panel--card .devis-lifecycle-step {
  padding-bottom: 0.35rem;
}
.devis-card .devis-lifecycle-panel--card .devis-lifecycle-label {
  font-size: 0.72rem;
}
.devis-card .devis-lifecycle-panel--card .devis-lifecycle-who,
.devis-card .devis-lifecycle-panel--card .devis-lifecycle-date {
  font-size: 0.68rem;
}
.devis-card .devis-lifecycle-panel--card .devis-lifecycle-badge {
  font-size: 0.54rem;
}
.devis-card--compact .devis-lifecycle-panel--card {
  margin-bottom: 0;
  margin-top: 0.55rem;
}
.devis-card-pricing-row + .devis-lifecycle-panel--card,
.devis-card-footer + .devis-lifecycle-panel--card {
  margin-top: 0.55rem;
}
.devis-card-context + .devis-lifecycle-panel--card {
  margin-top: -0.35rem;
  margin-bottom: 0.65rem;
}
@media (max-width: 767px) {
  .devis-card .devis-lifecycle-panel--card .devis-lifecycle-summary {
    padding: 0.32rem 0.5rem;
  }
  .devis-card .devis-lifecycle-panel--card .devis-lifecycle-summary__text {
    font-size: 0.68rem;
  }
  .devis-card .devis-lifecycle-panel--card .devis-lifecycle-line {
    gap: 0.2rem 0.4rem;
  }
  .devis-card .devis-lifecycle-panel--card .devis-lifecycle-who {
    display: block;
    width: 100%;
    margin-top: 0.05rem;
  }
}

/* ---- Overlay / Modal ---- */

.overlay {
  position: fixed;
  inset: 0;
  z-index: 500;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(15, 23, 42, 0.45);
  backdrop-filter: blur(4px);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.25s ease, visibility 0.25s ease;
}
.overlay.is-open {
  opacity: 1;
  visibility: visible;
}
.overlay-panel {
  background: var(--surface);
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
  max-width: 640px;
  width: calc(100% - 2rem);
  max-height: calc(100vh - 4rem);
  overflow-y: auto;
  transform: translateY(16px);
  transition: transform 0.3s ease;
}
.overlay.is-open .overlay-panel {
  transform: translateY(0);
}
.overlay-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1.25rem 1.5rem;
  border-bottom: 1px solid var(--line);
}
.overlay-header h3 {
  font-family: var(--serif);
  font-size: 1.1rem;
  font-weight: 600;
}
.overlay-close {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ink-soft);
  transition: all var(--transition);
}
.overlay-close:hover { background: var(--line-soft); color: var(--ink); }
.overlay-close svg { width: 20px; height: 20px; }
.overlay-body { padding: 1.5rem; }
.overlay-footer {
  padding: 1rem 1.5rem;
  border-top: 1px solid var(--line);
  display: flex;
  gap: 0.75rem;
  justify-content: flex-end;
}

/* ---- Legal banner (mineur) ---- */

.legal-banner {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.75rem 1rem;
  background: var(--amber-soft);
  border: 1px solid rgba(var(--accent-rgb),0.25);
  border-radius: var(--radius-sm);
  font-size: 0.82rem;
  color: var(--amber-ink);
  margin-bottom: 1rem;
}
.legal-banner svg { width: 18px; height: 18px; flex-shrink: 0; }

/* ---- Details / Accordion ---- */

.accord summary {
  cursor: pointer;
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--ink);
  padding: 0.75rem 0;
  list-style: none;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.accord summary::-webkit-details-marker { display: none; }
.accord summary .chevron {
  margin-left: auto;
  transition: transform var(--transition);
  width: 18px;
  height: 18px;
  color: var(--ink-soft);
}
.accord[open] summary .chevron { transform: rotate(180deg); }

/* ---- Signature canvas ---- */

.sig-canvas {
  border: 2px dashed var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
  cursor: crosshair;
  touch-action: none;
  width: 100%;
  height: 180px;
}
.sig-canvas.has-sig { border-color: var(--good); border-style: solid; }

/* ---- Checkbox custom ---- */

.check-label {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  font-size: 0.85rem;
  color: var(--ink-2);
  cursor: pointer;
  line-height: 1.5;
}
.check-label input[type="checkbox"] {
  width: 18px;
  height: 18px;
  margin-top: 0.1rem;
  accent-color: var(--sage);
  flex-shrink: 0;
}

/* ---- Empty state ---- */

.empty-state {
  text-align: center;
  padding: 3rem 1.5rem;
  color: var(--ink-soft);
}
.empty-state svg { width: 48px; height: 48px; margin: 0 auto 1rem; opacity: 0.4; }
.empty-state p { font-size: 0.9rem; }

/* ---- Stub page ---- */

.stub-page {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 4rem 2rem;
  text-align: center;
  min-height: 60vh;
}
.stub-icon {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background: var(--sage-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 1.5rem;
}
.stub-icon svg { width: 32px; height: 32px; color: var(--sage); opacity: 0.8; }
.stub-title {
  font-family: var(--serif);
  font-size: 1.35rem;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 0.5rem;
}
.stub-desc {
  font-size: 0.9rem;
  color: var(--ink-soft);
  max-width: 400px;
  line-height: 1.6;
}

/* ---- Confirmation ---- */

.confirm-check {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: var(--good-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 1.25rem;
}
.confirm-check svg { width: 32px; height: 32px; color: var(--good); }

.confirm-panel {
  position: relative;
}
.confirm-overlay-close {
  position: absolute;
  top: 0.75rem;
  right: 0.75rem;
  z-index: 1;
}
.confirm-overlay-body {
  text-align: center;
  padding: 2.5rem 1.5rem 1.75rem;
}
.confirm-overlay-title {
  font-family: var(--serif);
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--ink);
  margin: 0 0 1rem;
}
.confirm-overlay-text {
  font-size: 0.88rem;
  color: var(--ink-2);
  line-height: 1.65;
  margin-bottom: 1.5rem;
  text-align: center;
}
.confirm-overlay-text-lead {
  font-weight: 600;
  color: var(--ink);
}
.confirm-overlay-text p {
  margin: 0 0 1rem;
}
.confirm-overlay-text p:last-child {
  margin-bottom: 0;
}
.confirm-overlay-download {
  display: flex;
  justify-content: center;
  margin: 0 0 1rem;
}
.confirm-download-docs-btn {
  width: auto;
  max-width: 100%;
  background: #fff;
  color: #111;
  border: 1px solid #111;
  box-shadow: none;
}
.confirm-download-docs-btn:hover {
  background: #fff;
  color: #111;
  border-color: #111;
  transform: none;
}
.confirm-overlay-actions {
  display: flex;
  justify-content: center;
}
.confirm-create-account-btn {
  width: auto;
  min-width: 11rem;
  max-width: 14rem;
  padding-left: 1.25rem;
  padding-right: 1.25rem;
}
.confirm-why-account {
  display: block;
  width: 100%;
  margin-top: 0.85rem;
  padding: 0.25rem 0;
  border: none;
  background: none;
  font-family: var(--sans);
  font-size: 0.78rem;
  color: var(--ink-soft);
  text-decoration: underline;
  cursor: pointer;
}
.confirm-why-account:hover {
  color: var(--ink);
}

/* ---- Refus devis (motif + confirmation) ---- */

.refuse-panel {
  max-width: 520px;
  width: calc(100% - 2rem);
}
.refuse-panel--confirm {
  max-width: 480px;
}
.refuse-overlay-lead {
  margin: 0 0 1.15rem;
  font-size: 0.92rem;
  line-height: 1.6;
  color: var(--ink-2);
}
.refuse-reason-list {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}
.refuse-reason-btn {
  width: 100%;
  text-align: left;
  padding: 0.85rem 1rem;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 0.9rem;
  font-weight: 500;
  line-height: 1.45;
  cursor: pointer;
  transition: border-color var(--transition), background var(--transition), box-shadow var(--transition), color var(--transition);
}
.refuse-reason-btn:hover {
  border-color: rgba(var(--primary-rgb), 0.35);
  background: var(--line-soft);
}
.refuse-reason-btn.is-selected {
  border-color: var(--sage);
  background: rgba(var(--primary-rgb), 0.08);
  box-shadow: 0 0 0 1px rgba(var(--primary-rgb), 0.12);
  color: var(--ink);
}
.refuse-reason-btn:focus-visible {
  outline: 2px solid var(--sage);
  outline-offset: 2px;
}
.refuse-overlay-footer {
  justify-content: space-between;
  flex-wrap: wrap;
}
.refuse-overlay-footer .btn--primary.disabled,
.refuse-overlay-footer .btn--primary:disabled {
  opacity: 0.45;
  cursor: not-allowed;
  pointer-events: none;
}
.refuse-confirm-body {
  padding-top: 0.25rem;
}
.refuse-confirm-question {
  margin: 0 0 0.85rem;
  font-family: var(--serif);
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.45;
}
.refuse-confirm-note {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.65;
  color: var(--ink-2);
}
.refuse-confirm-expire {
  font-weight: 700;
  color: var(--ink);
  white-space: nowrap;
}

@media (max-width: 767px) {
  .refuse-overlay-footer {
    flex-direction: column-reverse;
    align-items: stretch;
  }
  .refuse-overlay-footer .btn {
    width: 100%;
    justify-content: center;
  }
}

/* ---- Onglets ---- */

.tabs {
  display: flex;
  gap: 0;
  border-bottom: 2px solid var(--line);
  margin-bottom: 1.25rem;
  margin-top: 0;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.tabs::-webkit-scrollbar { display: none; }
.tab-btn {
  padding: 0.6rem 1.25rem;
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--ink-soft);
  border: none;
  background: none;
  cursor: pointer;
  position: relative;
  transition: color var(--transition);
  white-space: nowrap;
  flex-shrink: 0;
}
.tab-btn::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  right: 0;
  height: 2px;
  background: transparent;
  transition: background var(--transition);
}
.tab-btn:hover { color: var(--ink); }
.tab-btn.active {
  color: var(--sage);
  font-weight: 700;
}
.tab-btn.active::after {
  background: var(--accent);
  height: 3px;
  border-radius: 3px 3px 0 0;
}
.tab-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.1rem;
  height: 1.1rem;
  font-size: 0.65rem;
  font-weight: 700;
  border-radius: 999px;
  padding: 0 0.3rem;
  margin-left: 0.35rem;
  background: var(--line-soft);
  color: var(--ink-soft);
}
.tab-btn.active .tab-count {
  background: var(--accent);
  color: #fff;
}

/* ---- Filtres liste devis ---- */

/* Mes devis � rapprocher le titre de la topbar � Mon Espace Patient � */
body.page-devis-list-alt .main-content,
body.page-devis-list-v2 .main-content,
body.page-devis-list-v3 .main-content,
body.page-devis-list-v4 .main-content,
body.page-devis-list-v5 .main-content,
body.page-devis-list-v6 .main-content,
body.page-devis-list-v7 .main-content,
body.page-devis-detail .main-content {
  padding-top: 1.25rem;
}

.devis-page-header {
  margin-bottom: 0.25rem;
}
.devis-page-header__title {
  font-family: var(--sans);
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--ink);
  margin: 0;
}
.devis-page-header--detail {
  margin-bottom: 0.15rem;
}
.devis-page-header--detail + .back-link {
  margin-bottom: 1rem;
}
.devis-page-header__top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem 1.25rem;
  flex-wrap: wrap;
  margin-bottom: 0.2rem;
}
.devis-page-header__top .devis-filters-wrap {
  width: auto;
  flex: 0 1 auto;
  margin-left: auto;
}
.devis-page-header__subtitle {
  margin: 0;
  min-width: min(100%, 14rem);
}

.devis-filters-toggle {
  display: none;
}
.devis-filters-wrap {
  width: 100%;
}

.devis-filters {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.5rem;
  width: 100%;
}
.devis-cabinet-filter {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
}
.devis-cabinet-filter__label {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--ink-soft);
  white-space: nowrap;
  cursor: pointer;
}
.devis-cabinet-filter__label svg {
  flex-shrink: 0;
  opacity: 0.85;
}
.devis-cabinet-filter__select {
  font-family: var(--sans);
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--ink-2);
  padding: 0.35rem 1.65rem 0.35rem 0.5rem;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
  cursor: pointer;
  min-width: 11rem;
  max-width: min(18rem, 100%);
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.45rem center;
  background-size: 1rem;
}
.devis-cabinet-filter__select:hover {
  border-color: rgba(var(--primary-rgb), 0.35);
}
.devis-cabinet-filter__select:focus {
  outline: 2px solid rgba(var(--primary-rgb), 0.35);
  outline-offset: 2px;
}
.devis-filter-chips {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
  gap: 0.4rem;
}

/* ---- Patient group header ---- */

.patient-group-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.75rem 0;
  margin-top: 0.5rem;
  min-width: 0;
}
.patient-group-header ~ .patient-group-header {
  margin-top: 1.75rem;
}
.patient-group-info {
  flex: 1;
  min-width: 0;
}
.patient-group-name {
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--ink);
}
.patient-group-meta {
  font-size: 0.78rem;
  color: var(--ink-soft);
}
.patient-group-stats {
  text-align: right;
  font-size: 0.8rem;
  color: var(--ink-soft);
}

/* ---- Devis card (list) ---- */

.devis-card {
  background: var(--devis-banner-bg);
  border: 1px solid rgba(var(--primary-rgb), 0.16);
  border-radius: var(--radius);
  padding: 1.15rem;
  margin-bottom: 0.75rem;
  transition: all var(--transition);
  max-width: 100%;
  min-width: 0;
  overflow: hidden;
}
.devis-card:hover {
  box-shadow: var(--shadow);
  border-color: rgba(var(--primary-rgb),0.2);
}

/* Mes devis (toutes variantes) � encadr�s � angles droits, liste + d�tail
   R�versible : supprimer ce bloc */
body.page-devis-list-alt,
body.page-devis-list-v2,
body.page-devis-list-v3,
body.page-devis-list-v4,
body.page-devis-list-v5,
body.page-devis-list-v6,
body.page-devis-list-v7 {
  --radius: 0;
  --radius-sm: 0;
  --radius-xs: 0;
}

/* ---- Variante visuelle Mes devis (fond bleu, cartouches blanches)
   Active sur mes-devis.html (body.page-devis-list-alt) et d�tail ?list=2.
   Inverser : �changer la class entre mes-devis.html et mes-devis-2.html ---- */

body.page-devis-list-alt,
body.page-devis-list-v2:not(.page-devis-detail) {
  /* Fond Mes devis / Mes devis 2 � revenir en arri�re : #e4ebf7, #ecf2fa ou #d9e5f6 (bleu cartouche V1) */
  --devis-list-page-bg: #e9f0f9;
  background: var(--devis-list-page-bg);
}
body.page-devis-list-alt .main,
body.page-devis-list-v2:not(.page-devis-detail) .main {
  background: var(--devis-list-page-bg);
}
body.page-devis-list-alt .topbar,
body.page-devis-list-v2:not(.page-devis-detail) .topbar {
  background: var(--devis-list-page-bg);
}
body.page-devis-list-alt .devis-card,
body.page-devis-list-v2:not(.page-devis-detail) .devis-card {
  background: var(--surface);
  border-color: rgba(var(--primary-rgb), 0.14);
  box-shadow: var(--shadow-sm);
}
body.page-devis-list-alt .devis-card:hover,
body.page-devis-list-v2:not(.page-devis-detail) .devis-card:hover {
  background: var(--surface);
  border-color: rgba(var(--primary-rgb), 0.22);
  box-shadow: var(--shadow);
}

/* Variante alt � page d�tail (fond bleu, blocs blancs) */
/* En-t�te devis : sur le fond bleu, comme Mes devis classique (sans cartouche blanc).
   Revenir au cartouche blanc : d�commenter le bloc � alt detail-header card � ci-dessous. */
body.page-devis-list-alt.page-devis-detail,
body.page-devis-list-v2.page-devis-detail {
  --devis-list-page-bg: #e9f0f9;
  background: var(--devis-list-page-bg);
}
body.page-devis-list-alt.page-devis-detail .main,
body.page-devis-list-v2.page-devis-detail .main,
body.page-devis-list-alt.page-devis-detail .topbar,
body.page-devis-list-v2.page-devis-detail .topbar {
  background: var(--devis-list-page-bg);
}
body.page-devis-list-alt.page-devis-detail .detail-header,
body.page-devis-list-v2.page-devis-detail .detail-header {
  background: transparent;
  border: none;
  border-radius: 0;
  padding: 0 0 1rem;
  margin-bottom: 1.5rem;
  border-bottom: 1px solid var(--line);
  box-shadow: none;
}
/*
body.page-devis-list-alt.page-devis-detail .detail-header {
  background: var(--surface);
  border: 1px solid rgba(var(--primary-rgb), 0.14);
  border-radius: var(--radius);
  padding: 1.15rem 1.25rem;
  margin-bottom: 1.25rem;
  box-shadow: var(--shadow-sm);
}
*/
body.page-devis-list-alt .docs-sign-prompt,
body.page-devis-list-v2.page-devis-detail .docs-sign-prompt {
  background: var(--surface);
  border-color: rgba(var(--primary-rgb), 0.14);
  box-shadow: var(--shadow-sm);
}
body.page-devis-list-alt .encart--sage,
body.page-devis-list-v2.page-devis-detail .encart--sage {
  background: var(--surface);
  border-color: rgba(var(--primary-rgb), 0.14);
  box-shadow: var(--shadow-sm);
}
body.page-devis-list-alt.page-devis-detail .info-box,
body.page-devis-list-v2.page-devis-detail .info-box {
  background: var(--surface);
  border-color: rgba(var(--primary-rgb), 0.14);
  box-shadow: var(--shadow-sm);
}
body.page-devis-list-alt .timeline-card,
body.page-devis-list-v2.page-devis-detail .timeline-card {
  box-shadow: var(--shadow-sm);
}
body.page-devis-list-alt .doc-list-item,
body.page-devis-list-v2.page-devis-detail .doc-list-item {
  box-shadow: var(--shadow-sm);
}
body.page-devis-list-alt .proposal-block,
body.page-devis-list-v2.page-devis-detail .proposal-block {
  background: var(--surface);
  border: 2px solid rgba(var(--primary-rgb), 0.38);
  box-shadow: var(--shadow-sm);
}
body.page-devis-list-alt .proposal-block .proposal-header,
body.page-devis-list-v2.page-devis-detail .proposal-block .proposal-header {
  background: rgba(var(--primary-rgb), 0.04);
}
body.page-devis-list-alt .montant-final-wrap,
body.page-devis-list-v2.page-devis-detail .montant-final-wrap {
  background: var(--surface);
  border-color: rgba(var(--primary-rgb), 0.14);
}
body.page-devis-list-alt .detail-rail-card,
body.page-devis-list-v2.page-devis-detail .detail-rail-card {
  box-shadow: var(--shadow-sm);
  border-color: rgba(var(--primary-rgb), 0.14);
}

/* ---- Pages exp�rimentales Mes devis 2�7 (palettes design)
   R�versible : PP_SHOW_MES_DEVIS_EXPERIMENT_NAV = false dans shell.js ---- */

body.page-devis-list-v2 {
  --exp-page-bg: #e9f0f9;
  --exp-primary: #1c458f;
  --exp-primary-rgb: 28, 69, 143;
  --exp-primary-deep: #163a75;
  --exp-primary-soft: rgba(var(--primary-rgb), 0.1);
  --exp-primary-soft-border: rgba(var(--primary-rgb), 0.22);
  --exp-accent: #EC740D;
  --exp-accent-rgb: 236, 116, 13;
  --primary-rgb: 28, 69, 143;
}

body.page-devis-list-v3 {
  --exp-page-bg: #ffffff;
  --exp-primary: #7355AD;
  --exp-primary-rgb: 115, 85, 173;
  --exp-primary-deep: #574080;
  --exp-primary-soft: rgba(var(--primary-rgb), 0.1);
  --exp-primary-soft-border: rgba(var(--primary-rgb), 0.24);
  --exp-accent: #EC740D;
  --exp-accent-rgb: 236, 116, 13;
  --primary-rgb: 115, 85, 173;
}

/* Mes devis 3 � boutons d'action teal (comme Mes devis 7) */
body.page-devis-list-v3 {
  --v3-action-btn: #14B8A6;
  --v3-action-btn-hover: #0D9488;
  --v3-action-btn-rgb: 20, 184, 166;
}

body.page-devis-list-v4 {
  --exp-page-bg: #fff;
  --exp-primary: #402c5e;
  --exp-primary-rgb: 64, 44, 94;
  --exp-primary-deep: #2d1f42;
  --exp-primary-soft: #ebe4f3;
  --exp-primary-soft-border: #c9b8db;
  --exp-accent: #e07a5f;
  --exp-accent-rgb: 224, 122, 95;
  --primary-rgb: 64, 44, 94;
  /* Police Quicksand (liste + d�tail) � r�versible : retirer ces 2 lignes + Quicksand des <link> HTML */
  --sans: "Quicksand", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  --serif: "Quicksand", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
}

body.page-devis-list-v5 {
  --exp-page-bg: #f0f7fc;
  --exp-primary: #1e3a5f;
  --exp-primary-rgb: 30, 58, 95;
  --exp-primary-deep: #152a45;
  --exp-accent: #d97706;
  --exp-accent-rgb: 217, 119, 6;
}

body.page-devis-list-v6,
body.page-devis-list-v7 {
  --exp-page-bg: #ffffff;
  --exp-primary: #5B21B6;
  --exp-primary-rgb: 91, 33, 182;
  --exp-primary-deep: #3B0F73;
  --exp-primary-soft: rgba(var(--primary-rgb), 0.1);
  --exp-primary-soft-border: rgba(var(--primary-rgb), 0.22);
  --exp-accent: #EC740D;
  --exp-accent-rgb: 236, 116, 13;
  --primary-rgb: 91, 33, 182;
}

/* Mes devis 7 � couleur boutons d'action (r�versible)
   Essai teal : classe page-devis-list-v7--btn-teal sur body (+ data.js bodyClass pour le d�tail)
   Revenir � l'ancien vert : retirer page-devis-list-v7--btn-teal (emerald #10b981 par d�faut) */
body.page-devis-list-v7 {
  --v7-action-btn: #10b981;
  --v7-action-btn-hover: #059669;
  --v7-action-btn-rgb: 16, 185, 129;
}
body.page-devis-list-v7.page-devis-list-v7--btn-teal {
  --v7-action-btn: #14B8A6;
  --v7-action-btn-hover: #0D9488;
  --v7-action-btn-rgb: 20, 184, 166;
}

body.page-devis-list-v2,
body.page-devis-list-v3,
body.page-devis-list-v4,
body.page-devis-list-v5,
body.page-devis-list-v6,
body.page-devis-list-v7 {
  --sidebar-bg: var(--exp-primary);
  --sidebar-bg-deep: var(--exp-primary-deep);
  --accent: var(--exp-accent);
  --accent-rgb: var(--exp-accent-rgb);
  --sage: var(--exp-primary);
  --sage-ink: var(--exp-primary);
  --clay: var(--exp-primary);
  --clay-ink: var(--exp-primary);
  background: var(--exp-page-bg);
}

body.page-devis-list-v2 .main,
body.page-devis-list-v3 .main,
body.page-devis-list-v4 .main,
body.page-devis-list-v5 .main,
body.page-devis-list-v6 .main,
body.page-devis-list-v7 .main,
body.page-devis-list-v2 .topbar,
body.page-devis-list-v3 .topbar,
body.page-devis-list-v4 .topbar,
body.page-devis-list-v5 .topbar,
body.page-devis-list-v6 .topbar,
body.page-devis-list-v7 .topbar {
  background: var(--exp-page-bg);
}

.devis-experiment-banner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.75rem;
  margin-bottom: 1rem;
  padding: 0.55rem 0.85rem;
  border-radius: var(--radius-sm);
  border: 1px dashed rgba(var(--exp-primary-rgb), 0.35);
  background: rgba(var(--exp-primary-rgb), 0.08);
}
.devis-experiment-banner__label {
  font-size: 0.68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--exp-primary);
  background: rgba(var(--exp-primary-rgb), 0.12);
  padding: 0.15rem 0.45rem;
  border-radius: 999px;
}
.devis-experiment-banner__text {
  font-size: 0.78rem;
  color: var(--ink-2);
  line-height: 1.4;
}

body.page-devis-list-v2 .devis-page-header__title,
body.page-devis-list-v3 .devis-page-header__title,
body.page-devis-list-v4 .devis-page-header__title,
body.page-devis-list-v5 .devis-page-header__title,
body.page-devis-list-v6 .devis-page-header__title,
body.page-devis-list-v7 .devis-page-header__title {
  color: var(--exp-primary);
}

body.page-devis-list-v2 .tab-btn.active,
body.page-devis-list-v3 .tab-btn.active,
body.page-devis-list-v4 .tab-btn.active,
body.page-devis-list-v5 .tab-btn.active,
body.page-devis-list-v6 .tab-btn.active,
body.page-devis-list-v7 .tab-btn.active {
  color: var(--exp-accent);
  border-bottom-color: var(--exp-accent);
}

body.page-devis-list-v2 .devis-card,
body.page-devis-list-v3 .devis-card,
body.page-devis-list-v4 .devis-card,
body.page-devis-list-v5 .devis-card,
body.page-devis-list-v6 .devis-card,
body.page-devis-list-v7 .devis-card {
  background: var(--surface);
  border-color: rgba(var(--exp-primary-rgb), 0.16);
  box-shadow: 0 2px 10px rgba(var(--exp-primary-rgb), 0.07);
}
body.page-devis-list-v2 .devis-card:hover,
body.page-devis-list-v3 .devis-card:hover,
body.page-devis-list-v4 .devis-card:hover,
body.page-devis-list-v5 .devis-card:hover,
body.page-devis-list-v6 .devis-card:hover,
body.page-devis-list-v7 .devis-card:hover {
  border-color: rgba(var(--exp-primary-rgb), 0.28);
  box-shadow: 0 4px 16px rgba(var(--exp-primary-rgb), 0.12);
}

body.page-devis-list-v2 .devis-lifecycle-panel--card,
body.page-devis-list-v3 .devis-lifecycle-panel--card,
body.page-devis-list-v4 .devis-lifecycle-panel--card,
body.page-devis-list-v5 .devis-lifecycle-panel--card,
body.page-devis-list-v6 .devis-lifecycle-panel--card,
body.page-devis-list-v7 .devis-lifecycle-panel--card {
  border-color: rgba(var(--exp-primary-rgb), 0.18);
  background: rgba(var(--exp-primary-rgb), 0.04);
}

body.page-devis-list-v2 .sidebar-nav a.active,
body.page-devis-list-v3 .sidebar-nav a.active,
body.page-devis-list-v4 .sidebar-nav a.active,
body.page-devis-list-v5 .sidebar-nav a.active,
body.page-devis-list-v6 .sidebar-nav a.active,
body.page-devis-list-v7 .sidebar-nav a.active {
  color: #fff;
  background: rgba(255, 255, 255, 0.14);
}

body.page-devis-list-v2.page-devis-detail,
body.page-devis-list-v3.page-devis-detail,
body.page-devis-list-v4.page-devis-detail,
body.page-devis-list-v5.page-devis-detail,
body.page-devis-list-v6.page-devis-detail,
body.page-devis-list-v7.page-devis-detail {
  background: var(--exp-page-bg);
}
body.page-devis-list-v2.page-devis-detail .main,
body.page-devis-list-v3.page-devis-detail .main,
body.page-devis-list-v4.page-devis-detail .main,
body.page-devis-list-v5.page-devis-detail .main,
body.page-devis-list-v6.page-devis-detail .main,
body.page-devis-list-v7.page-devis-detail .main,
body.page-devis-list-v2.page-devis-detail .topbar,
body.page-devis-list-v3.page-devis-detail .topbar,
body.page-devis-list-v4.page-devis-detail .topbar,
body.page-devis-list-v5.page-devis-detail .topbar,
body.page-devis-list-v6.page-devis-detail .topbar,
body.page-devis-list-v7.page-devis-detail .topbar {
  background: var(--exp-page-bg);
}
body.page-devis-list-v4.page-devis-detail .detail-header,
body.page-devis-list-v5.page-devis-detail .detail-header {
  background: var(--surface);
  border-color: rgba(var(--exp-primary-rgb), 0.14);
  border-radius: var(--radius-sm);
  padding: 1rem 1.15rem;
  border-bottom: none;
  box-shadow: var(--shadow-sm);
}

body.page-devis-list-v2 .btn--primary,
body.page-devis-list-v4 .btn--primary,
body.page-devis-list-v5 .btn--primary,
body.page-devis-list-v6 .btn--primary {
  background: var(--exp-accent);
  border-color: var(--exp-accent);
}
body.page-devis-list-v2 .btn--primary:hover,
body.page-devis-list-v4 .btn--primary:hover,
body.page-devis-list-v5 .btn--primary:hover,
body.page-devis-list-v6 .btn--primary:hover {
  filter: brightness(0.95);
}

/* Mes devis 2 � bleu V1 (comme Mes devis) + bandeau en-t�te cartouche (comme V3)
   R�versible : supprimer ce bloc */
body.page-devis-list-v2 .devis-card-header {
  background: var(--exp-primary);
  color: #fff;
  margin: -1.15rem -1.15rem 0.75rem;
  padding: 0.85rem 1.15rem 0.75rem;
  border-radius: var(--radius) var(--radius) 0 0;
}
body.page-devis-list-v2 .devis-card-title h4 {
  background: transparent;
  color: #fff;
  padding: 0;
  border-radius: 0;
  margin-bottom: 0.15rem;
}
body.page-devis-list-v2 .devis-card-title p {
  color: rgba(255, 255, 255, 0.88);
}
body.page-devis-list-v2 .devis-card-title h4 .tag--blue,
body.page-devis-list-v2 .devis-card-title .pp-proposal-subtitle-title {
  color: #fff;
}
body.page-devis-list-v2 .devis-card-title h4 .tag--blue {
  background: rgba(255, 255, 255, 0.22);
}
body.page-devis-list-v2 .devis-card-header .tag--sage,
body.page-devis-list-v2 .devis-card-header .tag--neutral {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}
body.page-devis-list-v2 .devis-card-header .tag--amber {
  background: #fff;
  color: var(--exp-accent);
  border: none;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
  font-weight: 700;
}
body.page-devis-list-v2 .devis-card-header .tag--clay {
  background: #fff;
  color: #b45309;
  border: none;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
  font-weight: 700;
}
body.page-devis-list-v2 .devis-card-header-aside .devis-card-meta {
  color: rgba(255, 255, 255, 0.82);
}
@media (max-width: 767px) {
  body.page-devis-list-v2 .devis-card-header {
    margin: -1rem -1rem 0.75rem;
    padding: 0.75rem 1rem 0.65rem;
  }
}

/* Mes devis 4 � comme V3 (violet profond) + liste : fond blanc & bordures violettes sur encadr�s blancs
   R�versible : supprimer ce bloc et remettre l'ancien body.page-devis-list-v4 */
body.page-devis-list-v4 .devis-card-header {
  background: var(--exp-primary);
  color: #fff;
  margin: -1.15rem -1.15rem 0.75rem;
  padding: 0.85rem 1.15rem 0.75rem;
  border-radius: var(--radius) var(--radius) 0 0;
}
body.page-devis-list-v4 .devis-card-title h4 {
  background: transparent;
  color: #fff;
  padding: 0;
  border-radius: 0;
  margin-bottom: 0.15rem;
}
body.page-devis-list-v4 .devis-card-title p {
  color: rgba(255, 255, 255, 0.88);
}
body.page-devis-list-v4 .devis-card-title h4 .tag--blue,
body.page-devis-list-v4 .devis-card-title .pp-proposal-subtitle-title {
  color: #fff;
}
body.page-devis-list-v4 .devis-card-title h4 .tag--blue {
  background: rgba(255, 255, 255, 0.22);
}
body.page-devis-list-v4 .devis-card-header .tag--clay,
body.page-devis-list-v4 .devis-card-header .tag--sage,
body.page-devis-list-v4 .devis-card-header .tag--neutral {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}
body.page-devis-list-v4 .devis-card-header .tag--amber {
  background: var(--amber-soft);
  color: var(--accent-ink);
  border: 1px solid rgba(var(--accent-rgb), 0.25);
}
body.page-devis-list-v4 .devis-card-header-aside .devis-card-meta {
  color: rgba(255, 255, 255, 0.82);
}
body.page-devis-list-v4:not(.page-devis-detail) {
  background: #fff;
}
body.page-devis-list-v4:not(.page-devis-detail) .main,
body.page-devis-list-v4:not(.page-devis-detail) .topbar {
  background: #fff;
}
body.page-devis-list-v4:not(.page-devis-detail) .devis-card {
  background: #fff;
  border: 1px solid var(--exp-primary);
  box-shadow: none;
}
body.page-devis-list-v4:not(.page-devis-detail) .devis-card:hover {
  border-color: var(--exp-primary);
  box-shadow: 0 2px 10px rgba(var(--exp-primary-rgb), 0.1);
}
body.page-devis-list-v4:not(.page-devis-detail) .devis-lifecycle-panel--card {
  border: 1px solid rgba(var(--exp-primary-rgb), 0.35);
  background: #fff;
}
body.page-devis-list-v4:not(.page-devis-detail) .devis-lifecycle-panel--card[open] {
  background: #fff;
}
body.page-devis-list-v4:not(.page-devis-detail) .empty-state {
  background: #fff;
  border: 1px solid rgba(var(--exp-primary-rgb), 0.35);
  border-radius: var(--radius);
}
body.page-devis-list-v4.page-devis-detail {
  --exp-page-bg: #faf9fc;
  background: var(--exp-page-bg);
}
body.page-devis-list-v4.page-devis-detail .main,
body.page-devis-list-v4.page-devis-detail .topbar {
  background: var(--exp-page-bg);
}
body.page-devis-list-v4.page-devis-detail .detail-header {
  background: var(--exp-primary);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 4px 14px rgba(var(--exp-primary-rgb), 0.2);
}
body.page-devis-list-v4.page-devis-detail .detail-header h1 {
  color: #fff;
}
body.page-devis-list-v4.page-devis-detail .detail-header-subtitle {
  color: rgba(255, 255, 255, 0.88);
}
body.page-devis-list-v4.page-devis-detail .detail-header-subtitle .pp-proposal-subtitle-title {
  color: #fff;
}
body.page-devis-list-v4.page-devis-detail .detail-header-amount-label {
  color: rgba(255, 255, 255, 0.82);
}
body.page-devis-list-v4.page-devis-detail .detail-header-amount-value {
  color: #fff;
}
body.page-devis-list-v4.page-devis-detail .detail-header .tag--clay,
body.page-devis-list-v4.page-devis-detail .detail-header .tag--sage,
body.page-devis-list-v4.page-devis-detail .detail-header .tag--neutral {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}
body.page-devis-list-v4.page-devis-detail .detail-header .tag--amber {
  background: var(--amber-soft);
  color: var(--accent-ink);
  border: 1px solid rgba(var(--accent-rgb), 0.25);
}
body.page-devis-list-v4.page-devis-detail .detail-header .chip {
  background: rgba(255, 255, 255, 0.14);
  border-color: rgba(255, 255, 255, 0.28);
  color: #fff;
}
body.page-devis-list-v4.page-devis-detail .detail-header .chip .tag--amber,
body.page-devis-list-v4.page-devis-detail .detail-header .chip .tag--neutral {
  background: rgba(255, 255, 255, 0.18);
  color: #fff;
}
body.page-devis-list-v4.page-devis-detail .docs-sign-prompt {
  background: var(--surface);
  border-color: var(--line);
  box-shadow: none;
}
body.page-devis-list-v4.page-devis-detail .docs-sign-list .doc-list-item--required {
  background: var(--exp-primary-soft);
  border-color: var(--exp-primary-soft-border);
}
body.page-devis-list-v4.page-devis-detail .docs-sign-list .doc-list-item--required:hover {
  border-color: var(--exp-primary);
  box-shadow: 0 2px 8px rgba(var(--exp-primary-rgb), 0.12);
}
body.page-devis-list-v4.page-devis-detail .docs-sign-list .doc-list-item--info {
  background: rgba(var(--exp-primary-rgb), 0.05);
  border-color: rgba(var(--exp-primary-rgb), 0.14);
}
body.page-devis-list-v4.page-devis-detail .docs-sign-list .doc-list-item--info:hover {
  border-color: rgba(var(--exp-primary-rgb), 0.28);
  box-shadow: 0 2px 6px rgba(var(--exp-primary-rgb), 0.08);
}
body.page-devis-list-v4.page-devis-detail .encart--sage,
body.page-devis-list-v4.page-devis-detail .info-box {
  background: #fff;
  border: 1px solid var(--exp-primary);
  border-radius: var(--radius-sm);
  padding: 1rem 1.15rem;
  box-shadow: none;
}
@media (max-width: 767px) {
  body.page-devis-list-v4 .devis-card-header {
    margin: -1rem -1rem 0.75rem;
    padding: 0.75rem 1rem 0.65rem;
  }
}


/* Mes devis 3 � violet pastel (comme Mes devis 7) : fond blanc, bandeau cartouche, d�tail */
body.page-devis-list-v3 .devis-card-header {
  background: var(--exp-primary);
  color: #fff;
  margin: -1.15rem -1.15rem 0.75rem;
  padding: 0.85rem 1.15rem 0.75rem;
  border-radius: var(--radius) var(--radius) 0 0;
}
body.page-devis-list-v3 .devis-card-title h4 {
  background: transparent;
  color: #fff;
  padding: 0;
  border-radius: 0;
  margin-bottom: 0.15rem;
}
body.page-devis-list-v3 .devis-card-title p {
  color: rgba(255, 255, 255, 0.88);
}
body.page-devis-list-v3 .devis-card-title h4 .tag--blue,
body.page-devis-list-v3 .devis-card-title .pp-proposal-subtitle-title {
  color: #fff;
}
body.page-devis-list-v3 .devis-card-title h4 .tag--blue {
  background: rgba(255, 255, 255, 0.22);
}
body.page-devis-list-v3 .devis-card-header .tag--sage,
body.page-devis-list-v3 .devis-card-header .tag--neutral {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}
body.page-devis-list-v3 .devis-card-header .tag--amber {
  background: #fff;
  color: var(--exp-accent);
  border: none;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
  font-weight: 700;
}
body.page-devis-list-v3 .devis-card-header .tag--clay {
  background: #fff;
  color: #b45309;
  border: none;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
  font-weight: 700;
}
body.page-devis-list-v3 .devis-card-header-aside .devis-card-meta {
  color: rgba(255, 255, 255, 0.82);
}
body.page-devis-list-v3 .devis-card-header .devis-card-status-expiry {
  color: #fff;
}
@media (max-width: 767px) {
  body.page-devis-list-v3 .devis-card-header {
    margin: -1rem -1rem 0.75rem;
    padding: 0.75rem 1rem 0.65rem;
  }
}

html:has(body.page-devis-list-v3:not(.page-devis-detail)) {
  background: #ffffff;
}
body.page-devis-list-v3:not(.page-devis-detail) {
  --bg: #ffffff;
  --exp-page-bg: #ffffff;
  background: #ffffff;
}
body.page-devis-list-v3:not(.page-devis-detail) .app,
body.page-devis-list-v3:not(.page-devis-detail) .main,
body.page-devis-list-v3:not(.page-devis-detail) .main-content,
body.page-devis-list-v3:not(.page-devis-detail) .topbar {
  background: #ffffff;
}
body.page-devis-list-v3:not(.page-devis-detail) .devis-card {
  background: #ffffff;
  border: 1px solid var(--exp-primary);
  box-shadow: none;
}
body.page-devis-list-v3:not(.page-devis-detail) .devis-card:hover {
  border-color: var(--exp-primary);
  box-shadow: 0 2px 10px rgba(var(--exp-primary-rgb), 0.12);
}
body.page-devis-list-v3:not(.page-devis-detail) .devis-card-context {
  margin-bottom: 0.85rem;
}
body.page-devis-list-v3:not(.page-devis-detail) .devis-card-context::after {
  content: '';
  display: block;
  width: 92%;
  max-width: none;
  height: 1px;
  margin: 0.75rem auto 0;
  background: rgba(var(--exp-primary-rgb), 0.28);
}
/* Mes devis 3 — mobile : mise en avant Part patient/Mutuelle (essai)
   Revenir en arrière : PP_DEVIS_V3_LIST_RESTE_HIGHLIGHT = false */
@media (max-width: 767px) {
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card--compact:not(.devis-card--option):not(.devis-card--proposals)
  .devis-card-body > .devis-stat-reste-block {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.35rem;
    flex: 0 0 100%;
    width: 100%;
    box-sizing: border-box;
    margin-top: 0.45rem;
    margin-bottom: 0.15rem;
    padding: 0.65rem 0.85rem 0.7rem;
    background: rgba(var(--exp-primary-rgb), 0.1);
    border: none;
    border-radius: 8px;
  }
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card--compact:not(.devis-card--option):not(.devis-card--proposals)
  .devis-stat-reste-block > .devis-stat--clay {
    display: flex;
    flex-direction: row;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.65rem;
    width: 100%;
    margin: 0;
    padding: 0;
    background: transparent;
    border: none;
  }
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card--compact:not(.devis-card--option):not(.devis-card--proposals)
  .devis-stat-reste-block > .devis-stat--clay .devis-stat__label {
    color: var(--exp-primary);
    font-weight: 600;
    font-size: 0.88rem;
    flex: 1 1 auto;
    min-width: 0;
    margin-bottom: 0;
  }
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card--compact:not(.devis-card--option):not(.devis-card--proposals)
  .devis-stat-reste-block > .devis-stat--clay .devis-stat__amount {
    color: var(--exp-primary);
    font-size: 1.2rem;
    font-weight: 700;
    line-height: 1.15;
    text-align: right;
    flex: 0 1 48%;
  }
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card--compact:not(.devis-card--option):not(.devis-card--proposals)
  .devis-stat-reste-block > .devis-stat--complement {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.05rem;
    margin: 0;
    padding: 0;
    background: transparent;
    border: none;
  }
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card--compact:not(.devis-card--option):not(.devis-card--proposals)
  .devis-stat-reste-block .devis-stat__mutuelle-title,
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card--compact:not(.devis-card--option):not(.devis-card--proposals)
  .devis-stat-reste-block .devis-stat__mutuelle-sub {
    display: block;
    font-size: 0.78rem;
    font-weight: 400;
    line-height: 1.3;
    color: var(--ink-soft);
  }
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card--compact:not(.devis-card--option):not(.devis-card--proposals)
  .devis-card-actions {
    margin-top: 0.55rem;
    padding: 0;
    background: transparent;
    border: none;
  }
}
/*
 * Mes devis 3 — liste desktop : mise en avant Part patient/Mutuelle (essai)
 * Fond lavande sans bordure, à côté d'Honoraires / Remboursé Sécu + bouton sur une ligne.
 * Revenir en arrière : PP_DEVIS_V3_LIST_RESTE_HIGHLIGHT = false dans components.js
 */
@media (min-width: 768px) {
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-card-pricing-row {
    flex-wrap: nowrap;
    align-items: flex-end;
    gap: 0.85rem;
  }
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-card-body {
    display: flex;
    flex-wrap: nowrap;
    align-items: flex-start;
    gap: 1.85rem;
    flex: 1 1 auto;
    min-width: 0;
    width: auto;
  }
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-card-body > .devis-stat:first-of-type .devis-stat__label {
    color: var(--ink-soft);
    font-weight: 400;
    font-size: 0.82rem;
  }
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-card-actions {
    flex: 0 0 auto;
    margin-top: 0;
    align-self: flex-end;
  }
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-card-body > .devis-stat {
    flex: 0 1 auto;
    min-width: 0;
  }
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-card-body > .devis-stat-reste-block {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 1.85rem;
    flex: 0 1 auto;
    min-width: 0;
    max-width: none;
    width: auto;
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    background: transparent;
    border: none;
    border-radius: 0;
  }
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-stat-reste-block > .devis-stat--clay {
    display: block;
    flex: 0 0 auto;
    width: auto;
    margin: 0;
    padding: 0;
    background: transparent;
    border: none;
  }
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-stat-reste-block > .devis-stat--clay .devis-stat__label {
    display: block;
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--exp-primary);
    margin-bottom: 0.1rem;
    white-space: nowrap;
  }
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-stat-reste-block > .devis-stat--clay .devis-stat__amount {
    display: block;
    margin-left: 0;
    text-align: left;
    font-size: 0.98rem;
    font-weight: 700;
    color: var(--exp-primary);
  }
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-stat-reste-block > .devis-stat--complement {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    gap: 0.05rem;
    flex: 0 1 auto;
    min-width: 0;
    margin: 0;
    padding: 0;
    background: transparent;
    border: none;
  }
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-stat-reste-block .devis-stat__mutuelle-title,
  body.page-devis-list-v3.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-stat-reste-block .devis-stat__mutuelle-sub {
    display: block;
    font-family: var(--sans);
    font-size: 0.82rem;
    font-weight: 400;
    line-height: 1.3;
    color: var(--ink-soft);
  }
}
body.page-devis-list-v3:not(.page-devis-detail) .devis-lifecycle-panel--card {
  border: 1px solid rgba(var(--exp-primary-rgb), 0.35);
  background: #ffffff;
}
body.page-devis-list-v3:not(.page-devis-detail) .devis-lifecycle-panel--card[open] {
  background: #ffffff;
}
body.page-devis-list-v3:not(.page-devis-detail) .empty-state {
  background: #ffffff;
  border: 1px solid rgba(var(--exp-primary-rgb), 0.35);
  border-radius: var(--radius);
}

html:has(body.page-devis-list-v3.page-devis-detail) {
  background: #ffffff;
}
body.page-devis-list-v3.page-devis-detail {
  --bg: #ffffff;
  --exp-page-bg: #ffffff;
  background: #ffffff;
}
body.page-devis-list-v3.page-devis-detail .app,
body.page-devis-list-v3.page-devis-detail .main,
body.page-devis-list-v3.page-devis-detail .main-content,
body.page-devis-list-v3.page-devis-detail .topbar {
  background: #ffffff;
}
body.page-devis-list-v3.page-devis-detail .detail-header {
  background: var(--exp-primary);
  border: none;
  border-radius: var(--radius-sm);
  padding: 1rem 1.15rem;
  margin-bottom: 1.25rem;
  color: #fff;
  box-shadow: 0 4px 14px rgba(var(--exp-primary-rgb), 0.2);
}
body.page-devis-list-v3.page-devis-detail .detail-header h1 {
  color: #fff;
}
body.page-devis-list-v3.page-devis-detail .detail-header-subtitle {
  color: rgba(255, 255, 255, 0.88);
}
body.page-devis-list-v3.page-devis-detail .detail-header-subtitle .pp-proposal-subtitle-title {
  color: #fff;
}
body.page-devis-list-v3.page-devis-detail .detail-header-amount-label {
  color: rgba(255, 255, 255, 0.82);
}
body.page-devis-list-v3.page-devis-detail .detail-header-amount-value {
  color: #fff;
}
body.page-devis-list-v3.page-devis-detail .detail-header .tag--clay {
  background: #fff;
  color: #b45309;
  border: none;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
  font-weight: 700;
}
body.page-devis-list-v3.page-devis-detail .detail-header .tag--sage,
body.page-devis-list-v3.page-devis-detail .detail-header .tag--neutral {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}
body.page-devis-list-v3.page-devis-detail .detail-header .tag--amber {
  background: #fff;
  color: var(--exp-accent);
  border: none;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
  font-weight: 700;
}
body.page-devis-list-v3.page-devis-detail .detail-header .chip {
  background: #fff;
  border-color: transparent;
  color: var(--ink);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
}
body.page-devis-list-v3.page-devis-detail .detail-header .chip .tag--amber,
body.page-devis-list-v3.page-devis-detail .detail-header .chip .tag--neutral {
  background: var(--amber-soft);
  color: var(--accent-ink);
  border: 1px solid rgba(var(--accent-rgb), 0.25);
}
body.page-devis-list-v3.page-devis-detail .docs-sign-prompt {
  background: var(--surface);
  border-color: var(--line);
  box-shadow: none;
}
body.page-devis-list-v3.page-devis-detail .docs-sign-list .doc-list-item--required {
  background: var(--exp-primary-soft);
  border-color: var(--exp-primary-soft-border);
}
body.page-devis-list-v3.page-devis-detail .docs-sign-list .doc-list-item--required:hover {
  border-color: var(--exp-primary);
  box-shadow: 0 2px 8px rgba(var(--exp-primary-rgb), 0.12);
}
body.page-devis-list-v3.page-devis-detail .docs-sign-list .doc-list-item--info {
  background: rgba(var(--exp-primary-rgb), 0.05);
  border-color: rgba(var(--exp-primary-rgb), 0.14);
}
body.page-devis-list-v3.page-devis-detail .docs-sign-list .doc-list-item--info:hover {
  border-color: rgba(var(--exp-primary-rgb), 0.28);
  box-shadow: 0 2px 6px rgba(var(--exp-primary-rgb), 0.08);
}
body.page-devis-list-v3.page-devis-detail .encart--sage,
body.page-devis-list-v3.page-devis-detail .info-box {
  background: #ffffff;
  border: 1px solid var(--exp-primary);
  border-radius: var(--radius-sm);
  padding: 1rem 1.15rem;
  box-shadow: none;
}
body.page-devis-list-v3.page-devis-detail .proposal-block {
  background: #ffffff;
  border: 1px solid rgba(var(--exp-primary-rgb), 0.35);
  border-left: 1px solid rgba(var(--exp-primary-rgb), 0.35);
  box-shadow: none;
}
body.page-devis-list-v3.page-devis-detail .proposal-block .proposal-header {
  background: rgba(var(--exp-primary-rgb), 0.04);
}
/* « ou » aligné sur les titres des propositions */
body.page-devis-list-v3.page-devis-detail .proposal-sep {
  align-self: flex-start;
  margin-top: 0.65rem;
}
body.page-devis-list-v3.page-devis-detail .proposal-sep span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.1rem;
  height: 2.1rem;
  padding: 0 0.35rem;
  border-radius: 999px;
  background: var(--exp-primary);
  color: #ffffff;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: lowercase;
  letter-spacing: 0;
}
body.page-devis-list-v3.page-devis-detail .montant-final-wrap,
body.page-devis-list-v3.page-devis-detail .detail-rail-card,
body.page-devis-list-v3.page-devis-detail .timeline-card {
  background: #ffffff;
  border: 1px solid rgba(var(--exp-primary-rgb), 0.35);
  box-shadow: none;
}

/* Mes devis 3 — libellés « Honoraires » en noir non gras (réversible : supprimer ce bloc) */
body.page-devis-list-v3 .devis-card-body > .devis-stat:first-of-type .devis-stat__label,
body.page-devis-list-v3 .devis-card-option-head-row > .devis-card-option-head:nth-child(2),
body.page-devis-list-v3.page-devis-detail .rail-amounts__row:not(.rail-amounts__row--highlight) > span:first-child,
body.page-devis-list-v3.page-devis-detail .proposal-pricing-row:first-child:not(.proposal-pricing-row--charge) > span:first-child,
body.page-devis-list-v3.page-devis-detail .detail-recap-mobile__amount-row:first-child > span:first-child,
body.page-devis-list-v3 .sticky-bar-amount-row:first-child .sticky-bar-amount-label {
  color: var(--ink);
  font-weight: 400;
}

/* Mes devis 3 — libellé Part patient/Mutuelle en violet (cartouches + propositions) */
body.page-devis-list-v3:not(.page-devis-detail) .devis-stat__label.pp-reste-label,
body.page-devis-list-v3:not(.page-devis-detail) .devis-card-option-cell__label.pp-reste-label,
body.page-devis-list-v3:not(.page-devis-detail) .devis-card-option-head.pp-reste-label {
  color: var(--exp-primary);
}
body.page-devis-list-v3.page-devis-detail .proposal-pricing-row--charge > .pp-reste-label,
body.page-devis-list-v3.page-devis-detail .proposal-pricing--harmonized .proposal-pricing-row--charge > span.pp-reste-label,
body.page-devis-list-v3.page-devis-detail--proposals .proposal-pricing--reste-only .proposal-pricing-row--charge > .pp-reste-label {
  color: var(--exp-primary);
  font-weight: 600;
}

/* Détail devis — mobile : libellé Part patient/Mutuelle plus grand */
@media (max-width: 1023px) {
  .page-devis-detail .proposal-pricing-row--charge > .pp-reste-label,
  .page-devis-detail .proposal-pricing--harmonized .proposal-pricing-row--charge > span.pp-reste-label,
  .page-devis-detail .proposal-pricing--reste-only .proposal-pricing-row--charge > .pp-reste-label,
  .page-devis-detail .cout-reste-row .pp-reste-label,
  .page-devis-detail .detail-recap-mobile__amount-row--highlight .pp-reste-label,
  .page-devis-detail .sticky-bar-amount-row--highlight .sticky-bar-amount-label.pp-reste-label,
  .page-devis-detail .sticky-bar-reste-row .pp-reste-label,
  .page-devis-detail .detail-header-amount-label.pp-reste-label,
  .page-devis-detail .sig-reste-row .pp-reste-label {
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.25;
  }

  body.page-devis-list-v3.page-devis-detail .proposal-pricing-row--charge > .pp-reste-label,
  body.page-devis-list-v3.page-devis-detail .proposal-pricing--harmonized .proposal-pricing-row--charge > span.pp-reste-label,
  body.page-devis-list-v3.page-devis-detail--proposals .proposal-pricing--reste-only .proposal-pricing-row--charge > .pp-reste-label,
  body.page-devis-list-v3.page-devis-detail .cout-reste-row .pp-reste-label {
    font-size: 1.08rem;
    font-weight: 700;
  }
}

/* Mes devis 3 � suivi liste colle au bas du cartouche (pleine largeur)
   Reversible : supprimer ce bloc + branches isV3 dans devis-list/components/devis-detail */
body.page-devis-list-v3:not(.page-devis-detail) .devis-card {
  --devis-card-pad: 1.15rem;
  display: flex;
  flex-direction: column;
}
body.page-devis-list-v3:not(.page-devis-detail) .devis-card .devis-lifecycle-panel--icon {
  margin: 1.25rem calc(-1 * var(--devis-card-pad)) calc(-1 * var(--devis-card-pad));
  border: none;
  border-top: 1px solid rgba(var(--exp-primary-rgb), 0.2);
  background: rgba(var(--exp-primary-rgb), 0.05);
  box-shadow: none;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  align-self: stretch;
  width: auto;
  border-radius: 0;
}
body.page-devis-list-v3:not(.page-devis-detail) .devis-card .devis-lifecycle-panel--icon[open] {
  background: rgba(var(--exp-primary-rgb), 0.07);
  border-top-color: rgba(var(--exp-primary-rgb), 0.22);
}
body.page-devis-list-v3:not(.page-devis-detail) .devis-card .devis-lifecycle-panel--icon .devis-lifecycle-summary {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  width: 100%;
  max-width: none;
  padding: 0.55rem var(--devis-card-pad);
  border: none;
  background: transparent;
  color: var(--exp-primary);
  cursor: pointer;
  border-radius: 0;
}
body.page-devis-list-v3:not(.page-devis-detail) .devis-card .devis-lifecycle-panel--icon[open] .devis-lifecycle-summary {
  width: 100%;
  justify-content: flex-start;
  border: none;
  border-bottom: 1px solid rgba(var(--exp-primary-rgb), 0.12);
  background: transparent;
}
body.page-devis-list-v3:not(.page-devis-detail) .devis-card .devis-lifecycle-panel--icon .devis-lifecycle-summary__icon {
  opacity: 0.9;
  flex-shrink: 0;
}
body.page-devis-list-v3:not(.page-devis-detail) .devis-card .devis-lifecycle-panel--icon .devis-lifecycle-summary__expire {
  font-size: 0.72rem;
  font-weight: 500;
  color: var(--ink-soft);
  line-height: 1.2;
  white-space: nowrap;
  flex: 1 1 auto;
  min-width: 0;
}
body.page-devis-list-v3:not(.page-devis-detail) .devis-card .devis-lifecycle-panel--icon .devis-lifecycle-summary__chevron {
  color: var(--exp-primary);
  opacity: 0.65;
  margin-left: auto;
  flex-shrink: 0;
}
body.page-devis-list-v3:not(.page-devis-detail) .devis-card .devis-lifecycle-panel--icon .devis-lifecycle-body {
  width: 100%;
  padding: 0.4rem var(--devis-card-pad) 0.65rem;
  box-sizing: border-box;
}
@media (max-width: 767px) {
  body.page-devis-list-v3:not(.page-devis-detail) .devis-card {
    --devis-card-pad: 1rem;
  }
}

body.page-devis-list-v3.page-devis-detail .devis-page-header--detail-v3 {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.1rem;
  margin-bottom: 0.75rem;
}
body.page-devis-list-v3.page-devis-detail .detail-patient-above {
  margin: 0.15rem 0 0.75rem;
}
body.page-devis-list-v3.page-devis-detail .back-link--chevron {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.05rem 0;
  margin: 0;
  border: none;
  background: transparent;
  color: var(--exp-primary);
  text-decoration: none;
  line-height: 1;
}
body.page-devis-list-v3.page-devis-detail .back-link--chevron svg {
  width: 1.35rem;
  height: 1.35rem;
}
body.page-devis-list-v3.page-devis-detail .back-link--chevron:hover {
  color: var(--exp-primary-deep, #574080);
  background: transparent;
  opacity: 0.85;
}
body.page-devis-list-v3.page-devis-detail .detail-header--v3-lite {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "main status"
    "amount amount";
  align-items: start;
  gap: 0.55rem 0.75rem;
  margin-bottom: 0.75rem;
  border-radius: var(--radius);
  box-shadow: 0 4px 14px rgba(var(--exp-primary-rgb), 0.2);
}
body.page-devis-list-v3.page-devis-detail .detail-header-block {
  margin-bottom: 1.15rem;
  box-shadow: none;
}
/* Description � proposition 1 (lavande). Pour revenir � la 3 : fond #fff, border-left 4px solid var(--exp-primary), texte ink */
body.page-devis-list-v3.page-devis-detail .detail-header-desc {
  background: #fff;
  color: var(--ink-2);
  padding: 0.85rem 1.05rem 0.95rem 1.15rem;
  border: 2px solid rgba(var(--exp-primary-rgb), 0.22);
  border-left: 4px solid var(--exp-primary);
  border-radius: var(--radius);
}
body.page-devis-list-v3.page-devis-detail .detail-header-desc__text {
  margin: 0;
  font-size: 0.86rem;
  line-height: 1.5;
  font-weight: 400;
  color: var(--ink-2);
}
body.page-devis-list-v3.page-devis-detail .detail-header-desc__text + .detail-header-desc__text {
  margin-top: 0.4rem;
}
body.page-devis-list-v3.page-devis-detail .detail-header--v3-lite .detail-header-main {
  grid-area: main;
  min-width: 0;
}
body.page-devis-list-v3.page-devis-detail .detail-header-meta--status {
  grid-area: status;
  justify-self: end;
  align-self: start;
  margin: 0;
  flex-wrap: nowrap;
}
body.page-devis-list-v3.page-devis-detail .detail-header--v3-lite .detail-header-amount {
  grid-area: amount;
  width: 100%;
  text-align: left;
}
/* Mes devis 3 — détail desktop : Part patient/Mutuelle plus grand, montant à droite */
@media (min-width: 1024px) {
  body.page-devis-list-v3.page-devis-detail .detail-header--v3-lite .detail-header-amount {
    display: flex;
    flex-direction: row;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    text-align: left;
    max-width: none;
  }
  body.page-devis-list-v3.page-devis-detail .detail-header-amount-label {
    font-size: 0.95rem;
    font-weight: 600;
    flex: 1 1 auto;
    min-width: 0;
  }
  body.page-devis-list-v3.page-devis-detail .detail-header-amount-value {
    flex: 0 0 auto;
    margin-left: auto;
    text-align: right;
  }
  body.page-devis-list-v3.page-devis-detail .rail-amounts__reste-block {
    margin: 0.4rem 0 0.2rem;
    padding: 0.55rem 0.65rem;
    background: rgba(var(--exp-primary-rgb), 0.09);
    border-radius: 8px;
  }
  body.page-devis-list-v3.page-devis-detail .rail-amounts__row--highlight {
    display: flex;
    flex-direction: row;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    margin: 0;
    padding: 0;
    background: transparent;
    border-radius: 0;
  }
  body.page-devis-list-v3.page-devis-detail .rail-amounts__row--highlight .pp-reste-label {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--exp-primary);
    flex: 1 1 auto;
    min-width: 0;
  }
  body.page-devis-list-v3.page-devis-detail .rail-amounts__row--highlight > span:last-child {
    flex: 0 0 auto;
    margin-left: auto;
    text-align: right;
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--exp-primary);
  }
  body.page-devis-list-v3.page-devis-detail .rail-amounts__reste-block .rail-amounts__mutuelle-note {
    margin: 0.35rem 0 0;
    color: var(--exp-primary);
  }
  body.page-devis-list-v3.page-devis-detail .proposal-pricing-row--charge {
    display: flex;
    flex-direction: row;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
  }
  body.page-devis-list-v3.page-devis-detail .proposal-pricing-row--charge .pp-reste-label {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--exp-primary);
    flex: 1 1 auto;
    min-width: 0;
  }
  body.page-devis-list-v3.page-devis-detail .proposal-pricing-row--charge > strong {
    flex: 0 0 auto;
    margin-left: auto;
    text-align: right;
  }
  body.page-devis-list-v3.page-devis-detail .cout-reste-row {
    display: flex;
    flex-direction: row;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
  }
  body.page-devis-list-v3.page-devis-detail .cout-reste-row .pp-reste-label {
    font-size: 0.95rem;
    font-weight: 600;
    flex: 1 1 auto;
    min-width: 0;
  }
  body.page-devis-list-v3.page-devis-detail .cout-reste-row #cout-reste-value {
    flex: 0 0 auto;
    margin-left: auto;
    text-align: right;
  }
}
body.page-devis-list-v3.page-devis-detail .detail-header-quiet {
  display: inline-block;
  margin-top: 0.35rem;
  font-size: 0.68rem;
  font-weight: 500;
  line-height: 1.2;
  color: rgba(255, 255, 255, 0.58);
  letter-spacing: 0.01em;
}
body.page-devis-list-v3.page-devis-detail .detail-header-meta--status .tag {
  font-size: 0.68rem;
  padding: 0.15rem 0.45rem;
  font-weight: 600;
  box-shadow: none;
  white-space: nowrap;
}
body.page-devis-list-v3.page-devis-detail .detail-header--v3-lite .detail-header-subtitle {
  font-size: 0.8rem;
  color: rgba(255, 255, 255, 0.72);
}
body.page-devis-list-v3.page-devis-detail .detail-suivi-meta {
  display: flex;
  align-items: flex-start;
  margin: 0 0 0.85rem;
}
body.page-devis-list-v3.page-devis-detail .devis-lifecycle-panel--icon {
  margin: 0;
  opacity: 0.85;
  align-items: stretch;
  width: 100%;
  max-width: 100%;
}
body.page-devis-list-v3.page-devis-detail .devis-lifecycle-panel--icon .devis-lifecycle-summary {
  width: auto;
  max-width: 100%;
  padding: 0.28rem 0.55rem;
  gap: 0.35rem;
  border-color: rgba(var(--exp-primary-rgb), 0.16);
  background: rgba(var(--exp-primary-rgb), 0.04);
}
body.page-devis-list-v3.page-devis-detail .devis-lifecycle-panel--icon[open] {
  width: 100%;
}
body.page-devis-list-v3.page-devis-detail .devis-lifecycle-panel--icon[open] .devis-lifecycle-summary {
  width: 100%;
}
body.page-devis-list-v3.page-devis-detail .devis-lifecycle-summary__expire {
  font-size: 0.72rem;
  font-weight: 500;
  color: var(--ink-soft);
  white-space: nowrap;
  line-height: 1.2;
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact {
  padding: 0.75rem 0.85rem;
  padding-bottom: calc(0.75rem + env(safe-area-inset-bottom, 0px));
  background-color: #ffffff;
  transition: background-color 0.2s ease, border-color 0.2s ease;
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact.is-choice-made {
  background-color: color-mix(in srgb, rgb(var(--exp-primary-rgb)) 14%, #ffffff);
  border-top-color: rgba(var(--exp-primary-rgb), 0.35);
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "info action"
    "docs docs";
  gap: 0.5rem 0.85rem;
  align-items: center;
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-info {
  grid-area: info;
  flex: unset;
  min-width: 0;
  max-width: none;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.28rem;
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-choice {
  display: flex;
  align-items: center;
  gap: 0.3rem;
  min-width: 0;
  max-width: 100%;
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-choice__icon {
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
  color: var(--exp-primary);
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-choice__icon[hidden] {
  display: none;
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-choice__label {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--ink-soft);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact.is-choice-made .sticky-bar-choice__label {
  color: var(--exp-primary);
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-amounts {
  flex: 0 0 auto;
  width: max-content;
  max-width: 100%;
  min-width: 0;
  gap: 0.22rem;
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-amount-row {
  justify-content: flex-start;
  width: auto;
  max-width: 100%;
  gap: 0.65rem;
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-amount-label {
  font-size: 0.65rem;
  color: var(--ink-soft);
  min-width: 7.25rem;
  max-width: 7.25rem;
  overflow: hidden;
  text-overflow: ellipsis;
  flex-shrink: 0;
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-amount-row--highlight .sticky-bar-amount-label.pp-reste-label,
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-reste-row .pp-reste-label {
  font-size: 0.8rem;
  font-weight: 700;
  line-height: 1.2;
  color: var(--exp-primary);
  min-width: 0;
  max-width: none;
  overflow: visible;
  text-overflow: unset;
  white-space: normal;
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-amount-row .sticky-bar-amount-value {
  font-size: 0.75rem;
  font-weight: 600;
  flex-shrink: 0;
  margin-left: 0;
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-amount-row--highlight .sticky-bar-amount-value {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--exp-primary);
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-cta {
  grid-area: action;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.35rem;
  min-width: 0;
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-cta #mobile-sign-btn,
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact #mobile-sign-btn {
  grid-area: auto;
  flex: 0 0 auto;
  min-width: 0;
  width: 100%;
  margin-left: 0;
  padding: 0.55rem 0.95rem;
  font-size: 0.82rem;
  white-space: nowrap;
  box-shadow: 0 1px 4px rgba(var(--exp-primary-rgb), 0.18);
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-cta #mobile-refuse-btn {
  width: 100%;
  padding: 0.4rem 0.75rem;
  font-size: 0.78rem;
  white-space: nowrap;
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-docs {
  grid-area: docs;
  justify-content: center;
  align-items: center;
  align-self: stretch;
  margin-top: 0;
  gap: 0.4rem;
  width: 100%;
  max-width: 100%;
  flex: unset;
  padding-top: 0.4rem;
  border-top: 1px solid rgba(var(--exp-primary-rgb), 0.16);
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-docs-count {
  font-size: 0.62rem;
  font-weight: 600;
  color: var(--exp-primary);
  letter-spacing: 0.01em;
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-docs-progress {
  flex: 0 0 3.75rem;
  min-width: 3.75rem;
  max-width: 3.75rem;
  height: 3px;
  background: rgba(var(--exp-primary-rgb), 0.16);
  border-radius: 0;
}
body.page-devis-list-v3.page-devis-detail .sticky-bar--v3-compact .sticky-bar-docs-progress-bar {
  background: var(--exp-primary);
  border-radius: 0;
}

@media (max-width: 1023px) {
  body.page-devis-list-v3 .devis-page-header__subtitle {
    display: none;
  }
  body.page-devis-list-v3 .devis-filters-wrap--icon {
    max-width: none;
  }
  body.page-devis-list-v3 .devis-filters-toggle--icon {
    width: auto;
    min-width: 2.5rem;
    min-height: 2.5rem;
    padding: 0.45rem;
    justify-content: center;
    position: relative;
  }
  body.page-devis-list-v3 .devis-filters-toggle--icon .devis-filters-toggle__main {
    flex: 0 0 auto;
    gap: 0;
    position: relative;
  }
  body.page-devis-list-v3 .devis-filters-toggle__dot {
    position: absolute;
    top: -0.15rem;
    right: -0.2rem;
    width: 0.45rem;
    height: 0.45rem;
    border-radius: 50%;
    background: var(--exp-accent, var(--accent));
    box-shadow: 0 0 0 2px #fff;
  }
  body.page-devis-list-v3 .devis-filters-wrap--icon.is-open {
    flex: 1 1 100%;
  }
  body.page-devis-list-v3 .devis-filters-wrap--icon.is-open .devis-filters-toggle--icon {
    margin-bottom: 0.15rem;
  }
  body.page-devis-list-v3 .patient-group-header {
    padding: 0.45rem 0;
    gap: 0.55rem;
  }
  body.page-devis-list-v3 .patient-group-header ~ .patient-group-header {
    margin-top: 1.1rem;
  }
  body.page-devis-list-v3 .patient-group-name {
    font-size: 0.88rem;
  }
  body.page-devis-list-v3 .patient-group-meta {
    display: none;
  }
  body.page-devis-list-v3 .devis-experiment-banner {
    display: none;
  }
  body.page-devis-list-v3.page-devis-detail .detail-header--v3-lite {
    padding: 0.85rem 1rem;
    margin-bottom: 0.65rem;
    gap: 0.55rem;
  }
  body.page-devis-list-v3.page-devis-detail .detail-header--v3-lite h1 {
    font-size: 1.1rem;
  }
  body.page-devis-list-v3.page-devis-detail .detail-header-desc {
    padding: 0.75rem 0.9rem 0.85rem 1rem;
  }
  body.page-devis-list-v3.page-devis-detail .detail-header-desc__text {
    font-size: 0.82rem;
  }
  body.page-devis-list-v3.page-devis-detail .detail-patient-above {
    margin-bottom: 0.55rem;
  }
  body.page-devis-list-v3.page-devis-detail .patient-group-meta {
    display: none;
  }
}

/* Mes devis 6 & 7 � violet fonce, fond blanc, bordure cartouche (V7 : boutons verts) */
body.page-devis-list-v6 .devis-card-header,
body.page-devis-list-v7 .devis-card-header {
  background: var(--exp-primary);
  color: #fff;
  margin: -1.15rem -1.15rem 0.75rem;
  padding: 0.85rem 1.15rem 0.75rem;
  border-radius: var(--radius) var(--radius) 0 0;
}
body.page-devis-list-v6 .devis-card-title h4,
body.page-devis-list-v7 .devis-card-title h4 {
  background: transparent;
  color: #fff;
  padding: 0;
  border-radius: 0;
  margin-bottom: 0.15rem;
}
body.page-devis-list-v6 .devis-card-title p,
body.page-devis-list-v7 .devis-card-title p {
  color: rgba(255, 255, 255, 0.88);
}
body.page-devis-list-v6 .devis-card-title h4 .tag--blue,
body.page-devis-list-v7 .devis-card-title h4 .tag--blue,
body.page-devis-list-v6 .devis-card-title .pp-proposal-subtitle-title,
body.page-devis-list-v7 .devis-card-title .pp-proposal-subtitle-title {
  color: #fff;
}
body.page-devis-list-v6 .devis-card-title h4 .tag--blue,
body.page-devis-list-v7 .devis-card-title h4 .tag--blue {
  background: rgba(255, 255, 255, 0.22);
}
body.page-devis-list-v6 .devis-card-header .tag--sage,
body.page-devis-list-v7 .devis-card-header .tag--sage,
body.page-devis-list-v6 .devis-card-header .tag--neutral,
body.page-devis-list-v7 .devis-card-header .tag--neutral {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}
body.page-devis-list-v6 .devis-card-header .tag--amber,
body.page-devis-list-v7 .devis-card-header .tag--amber {
  background: #fff;
  color: var(--exp-accent);
  border: none;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
  font-weight: 700;
}
body.page-devis-list-v6 .devis-card-header .tag--clay,
body.page-devis-list-v7 .devis-card-header .tag--clay {
  background: #fff;
  color: #b45309;
  border: none;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
  font-weight: 700;
}
body.page-devis-list-v6 .devis-card-header-aside .devis-card-meta,
body.page-devis-list-v7 .devis-card-header-aside .devis-card-meta {
  color: rgba(255, 255, 255, 0.82);
}
body.page-devis-list-v6 .devis-card-header .devis-card-status-expiry,
body.page-devis-list-v7 .devis-card-header .devis-card-status-expiry {
  color: #fff;
}
@media (max-width: 767px) {
body.page-devis-list-v6 .devis-card-header,
  body.page-devis-list-v7 .devis-card-header {
    margin: -1rem -1rem 0.75rem;
    padding: 0.75rem 1rem 0.65rem;
  }
}

html:has(body.page-devis-list-v6:not(.page-devis-detail)),
html:has(body.page-devis-list-v7:not(.page-devis-detail)) {
  background: #ffffff;
}
body.page-devis-list-v6:not(.page-devis-detail),
body.page-devis-list-v7:not(.page-devis-detail) {
  --bg: #ffffff;
  --exp-page-bg: #ffffff;
  background: #ffffff;
}
body.page-devis-list-v6:not(.page-devis-detail) .app,
body.page-devis-list-v7:not(.page-devis-detail) .app,
body.page-devis-list-v6:not(.page-devis-detail) .main,
body.page-devis-list-v7:not(.page-devis-detail) .main,
body.page-devis-list-v6:not(.page-devis-detail) .main-content,
body.page-devis-list-v7:not(.page-devis-detail) .main-content,
body.page-devis-list-v6:not(.page-devis-detail) .topbar,
body.page-devis-list-v7:not(.page-devis-detail) .topbar {
  background: #ffffff;
}
body.page-devis-list-v6:not(.page-devis-detail) .devis-card,
body.page-devis-list-v7:not(.page-devis-detail) .devis-card {
  background: #ffffff;
  border: 1px solid var(--exp-primary);
  box-shadow: none;
}
body.page-devis-list-v6:not(.page-devis-detail) .devis-card:hover,
body.page-devis-list-v7:not(.page-devis-detail) .devis-card:hover {
  border-color: var(--exp-primary);
  box-shadow: 0 2px 10px rgba(var(--exp-primary-rgb), 0.12);
}
body.page-devis-list-v6:not(.page-devis-detail) .devis-lifecycle-panel--card,
body.page-devis-list-v7:not(.page-devis-detail) .devis-lifecycle-panel--card {
  border: 1px solid rgba(var(--exp-primary-rgb), 0.35);
  background: #ffffff;
}
body.page-devis-list-v6:not(.page-devis-detail) .devis-lifecycle-panel--card[open],
body.page-devis-list-v7:not(.page-devis-detail) .devis-lifecycle-panel--card[open] {
  background: #ffffff;
}
body.page-devis-list-v6:not(.page-devis-detail) .empty-state,
body.page-devis-list-v7:not(.page-devis-detail) .empty-state {
  background: #ffffff;
  border: 1px solid rgba(var(--exp-primary-rgb), 0.35);
  border-radius: var(--radius);
}

html:has(body.page-devis-list-v6.page-devis-detail),
html:has(body.page-devis-list-v7.page-devis-detail) {
  background: #ffffff;
}
body.page-devis-list-v6.page-devis-detail,
body.page-devis-list-v7.page-devis-detail {
  --bg: #ffffff;
  --exp-page-bg: #ffffff;
  background: #ffffff;
}
body.page-devis-list-v6.page-devis-detail .app,
body.page-devis-list-v7.page-devis-detail .app,
body.page-devis-list-v6.page-devis-detail .main,
body.page-devis-list-v7.page-devis-detail .main,
body.page-devis-list-v6.page-devis-detail .main-content,
body.page-devis-list-v7.page-devis-detail .main-content,
body.page-devis-list-v6.page-devis-detail .topbar,
body.page-devis-list-v7.page-devis-detail .topbar {
  background: #ffffff;
}
body.page-devis-list-v6.page-devis-detail .detail-header,
body.page-devis-list-v7.page-devis-detail .detail-header {
  background: var(--exp-primary);
  border: none;
  border-radius: var(--radius-sm);
  padding: 1rem 1.15rem;
  margin-bottom: 1.25rem;
  color: #fff;
  box-shadow: 0 4px 14px rgba(var(--exp-primary-rgb), 0.2);
}
body.page-devis-list-v6.page-devis-detail .detail-header h1,
body.page-devis-list-v7.page-devis-detail .detail-header h1 {
  color: #fff;
}
body.page-devis-list-v6.page-devis-detail .detail-header-subtitle,
body.page-devis-list-v7.page-devis-detail .detail-header-subtitle {
  color: rgba(255, 255, 255, 0.88);
}
body.page-devis-list-v6.page-devis-detail .detail-header-subtitle .pp-proposal-subtitle-title,
body.page-devis-list-v7.page-devis-detail .detail-header-subtitle .pp-proposal-subtitle-title {
  color: #fff;
}
body.page-devis-list-v6.page-devis-detail .detail-header-amount-label,
body.page-devis-list-v7.page-devis-detail .detail-header-amount-label {
  color: rgba(255, 255, 255, 0.82);
}
body.page-devis-list-v6.page-devis-detail .detail-header-amount-value,
body.page-devis-list-v7.page-devis-detail .detail-header-amount-value {
  color: #fff;
}
body.page-devis-list-v6.page-devis-detail .detail-header .tag--clay,
body.page-devis-list-v7.page-devis-detail .detail-header .tag--clay {
  background: #fff;
  color: #b45309;
  border: none;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
  font-weight: 700;
}
body.page-devis-list-v6.page-devis-detail .detail-header .tag--sage,
body.page-devis-list-v7.page-devis-detail .detail-header .tag--sage,
body.page-devis-list-v6.page-devis-detail .detail-header .tag--neutral,
body.page-devis-list-v7.page-devis-detail .detail-header .tag--neutral {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}
body.page-devis-list-v6.page-devis-detail .detail-header .tag--amber,
body.page-devis-list-v7.page-devis-detail .detail-header .tag--amber {
  background: #fff;
  color: var(--exp-accent);
  border: none;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
  font-weight: 700;
}
body.page-devis-list-v6.page-devis-detail .detail-header .chip,
body.page-devis-list-v7.page-devis-detail .detail-header .chip {
  background: #fff;
  border-color: transparent;
  color: var(--ink);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
}
body.page-devis-list-v6.page-devis-detail .detail-header .chip .tag--amber,
body.page-devis-list-v7.page-devis-detail .detail-header .chip .tag--amber,
body.page-devis-list-v6.page-devis-detail .detail-header .chip .tag--neutral,
body.page-devis-list-v7.page-devis-detail .detail-header .chip .tag--neutral {
  background: var(--amber-soft);
  color: var(--accent-ink);
  border: 1px solid rgba(var(--accent-rgb), 0.25);
}
body.page-devis-list-v6.page-devis-detail .docs-sign-prompt,
body.page-devis-list-v7.page-devis-detail .docs-sign-prompt {
  background: var(--surface);
  border-color: var(--line);
  box-shadow: none;
}
body.page-devis-list-v6.page-devis-detail .docs-sign-list .doc-list-item--required,
body.page-devis-list-v7.page-devis-detail .docs-sign-list .doc-list-item--required {
  background: var(--exp-primary-soft);
  border-color: var(--exp-primary-soft-border);
}
body.page-devis-list-v6.page-devis-detail .docs-sign-list .doc-list-item--required:hover,
body.page-devis-list-v7.page-devis-detail .docs-sign-list .doc-list-item--required:hover {
  border-color: var(--exp-primary);
  box-shadow: 0 2px 8px rgba(var(--exp-primary-rgb), 0.12);
}
body.page-devis-list-v6.page-devis-detail .docs-sign-list .doc-list-item--info,
body.page-devis-list-v7.page-devis-detail .docs-sign-list .doc-list-item--info {
  background: rgba(var(--exp-primary-rgb), 0.05);
  border-color: rgba(var(--exp-primary-rgb), 0.14);
}
body.page-devis-list-v6.page-devis-detail .docs-sign-list .doc-list-item--info:hover,
body.page-devis-list-v7.page-devis-detail .docs-sign-list .doc-list-item--info:hover {
  border-color: rgba(var(--exp-primary-rgb), 0.28);
  box-shadow: 0 2px 6px rgba(var(--exp-primary-rgb), 0.08);
}
body.page-devis-list-v6.page-devis-detail .encart--sage,
body.page-devis-list-v7.page-devis-detail .encart--sage,
body.page-devis-list-v6.page-devis-detail .info-box,
body.page-devis-list-v7.page-devis-detail .info-box {
  background: #ffffff;
  border: 1px solid var(--exp-primary);
  border-radius: var(--radius-sm);
  padding: 1rem 1.15rem;
  box-shadow: none;
}
body.page-devis-list-v6.page-devis-detail .proposal-block,
body.page-devis-list-v7.page-devis-detail .proposal-block {
  background: #ffffff;
  border: 2px solid var(--exp-primary);
  box-shadow: none;
}
body.page-devis-list-v6.page-devis-detail .proposal-block .proposal-header,
body.page-devis-list-v7.page-devis-detail .proposal-block .proposal-header {
  background: rgba(var(--exp-primary-rgb), 0.04);
}
body.page-devis-list-v6.page-devis-detail .montant-final-wrap,
body.page-devis-list-v7.page-devis-detail .montant-final-wrap,
body.page-devis-list-v6.page-devis-detail .detail-rail-card,
body.page-devis-list-v7.page-devis-detail .detail-rail-card,
body.page-devis-list-v6.page-devis-detail .timeline-card,
body.page-devis-list-v7.page-devis-detail .timeline-card {
  background: #ffffff;
  border: 1px solid rgba(var(--exp-primary-rgb), 0.35);
  box-shadow: none;
}

/* Mes devis 3 � boutons d'action (liste + d�tail + barre sticky) */
body.page-devis-list-v3 .btn--primary {
  background: var(--v3-action-btn);
  border-color: var(--v3-action-btn);
  color: #fff;
  box-shadow: 0 2px 8px rgba(var(--v3-action-btn-rgb), 0.28);
}
body.page-devis-list-v3 .btn--primary:hover {
  background: var(--v3-action-btn-hover);
  border-color: var(--v3-action-btn-hover);
  box-shadow: 0 4px 14px rgba(var(--v3-action-btn-rgb), 0.35);
  filter: none;
}

/* Mes devis 7 � boutons d'action (liste + d�tail + barre sticky) */
body.page-devis-list-v7 .btn--primary {
  background: var(--v7-action-btn);
  border-color: var(--v7-action-btn);
  color: #fff;
  box-shadow: 0 2px 8px rgba(var(--v7-action-btn-rgb), 0.28);
}
body.page-devis-list-v7 .btn--primary:hover {
  background: var(--v7-action-btn-hover);
  border-color: var(--v7-action-btn-hover);
  box-shadow: 0 4px 14px rgba(var(--v7-action-btn-rgb), 0.35);
  filter: none;
}

/* Mes devis 2 � r�cap propositions int�gr� sous les blocs */
.detail-rail--proposals-footer {
  width: 100%;
  margin-top: 1rem;
}
.detail-rail-card--proposals-footer {
  position: static;
  top: auto;
  width: 100%;
  max-width: none;
  padding: 1rem 1.15rem;
  border-top: 1px dashed rgba(var(--primary-rgb), 0.18);
  border-radius: var(--radius);
  margin-top: 1rem;
}
.proposal-alternatives-section .montant-final-wrap {
  margin-bottom: 0;
}
.detail-rail-footer-title {
  font-family: var(--sans);
  font-size: 0.92rem;
  font-weight: 700;
  color: var(--ink);
  margin: 0 0 0.35rem;
  width: 100%;
}
.detail-rail-footer-inner {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 1rem 1.5rem;
  align-items: start;
  width: 100%;
}
.detail-rail-footer-docs {
  min-width: 0;
}
.detail-rail-footer-docs .rail-docs-checklist {
  margin-bottom: 0;
}
.detail-rail-footer-cta {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.5rem;
  min-width: min(100%, 16rem);
}
.detail-rail-card--proposals-footer .rail-amounts {
  border-top: none;
  padding-top: 0;
  margin-bottom: 0;
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  width: 100%;
}
.detail-rail-card--proposals-footer .rail-amounts__row {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: baseline;
  gap: 0.75rem;
  margin-bottom: 0;
  width: 100%;
}
.detail-rail-card--proposals-footer .rail-amounts__row--highlight {
  flex-direction: row;
  align-items: baseline;
  text-align: inherit;
}
.detail-rail-card--proposals-footer .rail-amounts__row--highlight span:last-child {
  font-size: 1.05rem;
}
.detail-rail-card--proposals-footer .detail-rail-actions {
  margin-top: 0;
  justify-content: flex-end;
}
.detail-rail-card--proposals-footer .detail-rail-reassurance {
  margin-top: 0.65rem;
  justify-content: center;
  width: 100%;
}

.devis-card--expired {
  opacity: 0.6;
}
.devis-card-header {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  margin-bottom: 0.75rem;
  min-width: 0;
}
.devis-card-title {
  flex: 1;
  min-width: 0;
}
.devis-card-title h4 {
  font-family: var(--sans);
  font-size: 0.92rem;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 0.15rem;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.devis-card-title p {
  font-size: 0.78rem;
  color: var(--ink-soft);
  overflow-wrap: anywhere;
  word-break: break-word;
}
.pp-proposal-subtitle-title {
  font-weight: 700;
  color: var(--ink);
}
.detail-header-subtitle .pp-proposal-subtitle-title {
  font-weight: 700;
  color: var(--ink);
}
.devis-card-header .tag {
  flex-shrink: 0;
}
.devis-card-status-stack {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.25rem;
  flex-shrink: 0;
}
.devis-card-status-expiry {
  font-size: 0.72rem;
  font-weight: 600;
  line-height: 1.2;
  color: var(--ink-soft);
  white-space: nowrap;
}
.devis-card-context {
  margin-bottom: 1.05rem;
}
.devis-card-context .care-context {
  margin-top: 0;
}
.devis-card-body {
  display: flex;
  align-items: flex-start;
  gap: 1.3rem;
  flex-wrap: wrap;
  margin-bottom: 0.75rem;
}
.devis-card .devis-stat {
  flex: 0 0 auto;
}
.devis-stat {
  font-size: 0.78rem;
  color: var(--ink-soft);
}
.devis-stat strong {
  display: block;
  font-size: 0.92rem;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.devis-card .devis-stat__label {
  display: block;
  font-family: var(--sans);
  font-size: 0.82rem;
  font-weight: 400;
  color: var(--ink-soft);
  line-height: 1.3;
  margin-bottom: 0.15rem;
  white-space: nowrap;
}
.devis-card .devis-stat--complement .devis-stat__label {
  white-space: nowrap;
}
.devis-card .devis-stat__amount {
  display: block;
  font-family: var(--sans);
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.devis-card .devis-stat--clay .devis-stat__amount { color: var(--clay-ink); }
.devis-card .devis-stat__note {
  display: block;
  font-family: var(--sans);
  font-size: 0.68rem;
  font-weight: 400;
  line-height: 1.35;
  color: var(--ink-soft);
}
.devis-stat--clay strong { color: var(--clay-ink); }
.devis-card .devis-stat--clay .devis-stat__amount,
.devis-card .devis-stat__amount.pp-reste-amount,
.detail-header-amount-value,
.proposal-pricing-row--charge > strong,
.rail-amounts__row--highlight > span:last-child,
.detail-recap-mobile__amount-row--highlight > strong,
.sticky-bar-amount-value,
.sticky-bar-reste-row strong,
#cout-reste-value,
#sig-reste-value {
  font-weight: 700;
}
.devis-card-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  flex-wrap: wrap;
}
.devis-card-chips {
  display: flex;
  gap: 0.4rem;
  flex-wrap: wrap;
  align-items: center;
}
.devis-card-meta {
  font-size: 0.75rem;
  color: var(--ink-soft);
}

/* ---- Devis card � mise en page compacte (essai, r�versible via PP_DEVIS_CARD_COMPACT) ---- */

.devis-card--compact .devis-card-header-aside {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.3rem;
  flex-shrink: 0;
  text-align: right;
}
.devis-card--compact .devis-card-status .tag {
  margin: 0;
}
.devis-card--compact .devis-card-header-aside .devis-card-meta {
  white-space: nowrap;
}
.devis-card--compact .devis-card-pricing-row {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}
.devis-card--compact .devis-card-body {
  margin-bottom: 0;
  flex: 1 1 auto;
  min-width: 0;
}
.devis-card--compact .devis-card-actions {
  flex: 0 0 auto;
  align-self: flex-end;
  margin-top: 0.4rem;
}

/* ---- �cheancier cards ---- */

.echeance-cards {
  display: flex;
  gap: 0.75rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 0.5rem;
}
.echeance-card {
  flex: 0 0 auto;
  min-width: 160px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  padding: 0.85rem 1rem;
  scroll-snap-align: start;
  text-align: center;
}
.echeance-card-label {
  font-size: 0.75rem;
  color: var(--ink-soft);
  margin-bottom: 0.25rem;
}
.echeance-card-amount {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.echeance-card-date {
  font-size: 0.72rem;
  color: var(--ink-soft);
  margin-top: 0.2rem;
}

/* ---- Decision rail (sticky droite, desktop) ---- */

.detail-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
}

.detail-main { min-width: 0; }

.detail-rail {
  display: none;
}

/* ---- R�cap mobile (simulation, sous l'en-t�te) ---- */

.detail-recap-mobile {
  display: none;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 1rem 1.15rem;
  margin-bottom: 1.25rem;
}
.detail-recap-mobile__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.85rem;
  padding-bottom: 0.65rem;
  border-bottom: 1px solid var(--line-soft);
}
.detail-recap-mobile__title {
  font-family: var(--sans);
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--ink);
  margin: 0;
}
.detail-recap-mobile__sim {
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--sage);
  background: var(--sage-soft);
  padding: 0.2rem 0.45rem;
  border-radius: 999px;
}
.detail-recap-mobile__meta {
  display: grid;
  gap: 0.55rem;
  margin: 0 0 0.85rem;
}
.detail-recap-mobile__row {
  display: grid;
  grid-template-columns: 5.5rem 1fr;
  gap: 0.5rem;
  align-items: start;
}
.detail-recap-mobile__row dt {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--ink-soft);
  margin: 0;
}
.detail-recap-mobile__row dd {
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--ink);
  margin: 0;
  line-height: 1.4;
}
.detail-recap-mobile__sub {
  display: block;
  font-size: 0.72rem;
  font-weight: 400;
  color: var(--ink-soft);
  margin-top: 0.1rem;
}
.detail-recap-mobile__sub--warn {
  color: var(--clay-ink);
  font-weight: 600;
}
.detail-recap-mobile__docs {
  margin-bottom: 0.85rem;
  padding: 0.75rem;
  background: var(--bg);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-sm);
}
.detail-recap-mobile__docs-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 0.45rem;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--ink-soft);
}
.detail-recap-mobile__amounts {
  padding-top: 0.75rem;
  border-top: 1px solid var(--line-soft);
  margin-bottom: 0.75rem;
}
.detail-recap-mobile__amount-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 0.75rem;
  font-size: 0.82rem;
  color: var(--ink-soft);
  margin-bottom: 0.35rem;
}
.detail-recap-mobile__amount-row strong {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.detail-recap-mobile__amount-row--highlight {
  font-size: 0.88rem;
  color: var(--ink-2);
  margin-bottom: 0;
}
.detail-recap-mobile__amount-row--highlight strong {
  font-size: 1.1rem;
  color: var(--clay-ink);
}
.detail-recap-mobile__mutuelle-note {
  font-size: 0.72rem;
  color: var(--ink-soft);
  line-height: 1.45;
  margin: 0.35rem 0 0;
  text-align: right;
}
.detail-recap-mobile__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  justify-content: center;
  margin-bottom: 0.5rem;
}
.detail-recap-mobile__reassurance {
  margin-top: 0;
  justify-content: center;
  text-align: center;
}

/* ---- Sticky bar mobile (devis signature) ---- */

.sticky-bar {
  display: none;
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 150;
  background: var(--surface);
  border-top: 1px solid var(--line);
  padding: 0.75rem 1rem;
  padding-bottom: calc(0.75rem + env(safe-area-inset-bottom, 0px));
  box-shadow: 0 -4px 16px rgba(15, 23, 42, 0.08);
}
.sticky-bar-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.sticky-bar-amounts {
  display: flex;
  flex-direction: column;
  gap: 0.08rem;
  min-width: 0;
  flex: 1;
}
.sticky-bar-amount-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.65rem;
  width: 100%;
  min-width: 0;
}
.sticky-bar-amount {
  font-size: 0.78rem;
  color: var(--ink-soft);
}
.sticky-bar-amount strong {
  display: block;
  font-size: 1.1rem;
  color: var(--clay-ink);
  font-variant-numeric: tabular-nums;
}

/* Barre sticky enrichie (r�versible via PP_DEVIS_STICKY_ENRICHED) */
.sticky-bar-info {
  flex: 1;
  min-width: 0;
}
.sticky-bar-info .sticky-bar-docs {
  margin-top: 0.25rem;
}
.sticky-bar-topline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.65rem;
  margin-bottom: 0.1rem;
}
.sticky-bar-amount-label {
  font-size: 0.78rem;
  color: var(--ink);
  white-space: nowrap;
  flex-shrink: 0;
}
.sticky-bar-amount-row .sticky-bar-amount-value {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
  line-height: 1.2;
}
.sticky-bar-amount-row--highlight .sticky-bar-amount-value {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--clay-ink);
}
.sticky-bar-amount-value {
  display: block;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--clay-ink);
  font-variant-numeric: tabular-nums;
  line-height: 1.2;
}
.sticky-bar-docs {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  min-width: 0;
  flex: 1;
  justify-content: flex-end;
}
.sticky-bar-docs-count {
  font-size: 0.68rem;
  font-weight: 600;
  color: var(--ink-soft);
  white-space: nowrap;
  flex-shrink: 0;
}
.sticky-bar-docs-progress {
  flex: 1;
  min-width: 2.5rem;
  max-width: 5.5rem;
  height: 4px;
  background: var(--line-soft);
  border-radius: 999px;
  overflow: hidden;
}
.sticky-bar-docs-progress-bar {
  height: 100%;
  background: var(--accent);
  border-radius: 999px;
  transition: width 0.3s ease;
}
.sticky-bar--enriched .btn {
  flex-shrink: 0;
  align-self: center;
}

/* ---- Document list items ---- */

.doc-list-item {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  padding: 0.85rem 1rem;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: all var(--transition);
  max-width: 100%;
  min-width: 0;
}
.doc-list-item:hover {
  box-shadow: var(--shadow);
  border-color: rgba(var(--primary-rgb),0.2);
}
.doc-list-item.is-viewed { opacity: 0.65; }
.doc-icon {
  width: 40px;
  height: 40px;
  border-radius: var(--radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.doc-icon--pdf { background: var(--clay-soft); color: var(--clay-ink); }
.doc-icon--video { background: var(--blue-soft); color: var(--blue-ink); }
.doc-icon svg { width: 20px; height: 20px; }
.doc-info { flex: 1; min-width: 0; }
.doc-info-title {
  font-weight: 600;
  font-size: 0.88rem;
  color: var(--ink);
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.4rem;
  min-width: 0;
}
.doc-info-sub {
  font-size: 0.75rem;
  color: var(--ink-soft);
  overflow-wrap: anywhere;
  word-break: break-word;
}
.doc-list-item-arrow { color: var(--ink-soft); flex-shrink: 0; }
.doc-list-item--required {
  border-color: rgba(var(--accent-rgb),0.45);
  background: rgba(var(--accent-rgb), 0.07);
}
.doc-list-item--required:hover {
  border-color: var(--accent);
  box-shadow: 0 2px 12px rgba(var(--accent-rgb),0.15);
}
.doc-list-item--info {
  border-color: rgba(var(--primary-rgb), 0.18);
  background: rgba(var(--primary-rgb), 0.04);
}
.doc-list-item--info:hover {
  border-color: rgba(var(--primary-rgb), 0.32);
  box-shadow: 0 2px 8px rgba(var(--primary-rgb), 0.08);
}
.doc-list-item--pedago {
  border-color: rgba(var(--primary-rgb), 0.28);
  border-left-width: 4px;
  border-left-color: var(--sage);
  background: rgba(var(--primary-rgb), 0.06);
}

/* ---- Documents � signer (encart prioritaire) ---- */

.docs-sign-prompt {
  background: var(--devis-banner-bg);
  border: 1.5px solid var(--devis-banner-edge);
  border-radius: var(--radius);
  padding: 1.15rem 1.25rem;
}
.docs-sign-prompt-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin-bottom: 0.35rem;
}
.docs-sign-prompt-title {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-family: var(--serif);
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--ink);
}
.docs-sign-prompt-title svg { color: var(--sage); flex-shrink: 0; }
.docs-sign-prompt-count {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--sage);
  background: rgba(255,255,255,0.7);
  padding: 0.25rem 0.6rem;
  border-radius: 999px;
  white-space: nowrap;
}
.docs-sign-prompt-desc {
  font-size: 0.82rem;
  color: var(--ink-2);
  line-height: 1.55;
  margin-bottom: 0.75rem;
}
.docs-sign-progress {
  height: 4px;
  background: rgba(var(--accent-rgb),0.2);
  border-radius: 999px;
  overflow: hidden;
  margin-bottom: 0.85rem;
}
.docs-sign-progress-bar {
  height: 100%;
  background: var(--accent);
  border-radius: 999px;
  transition: width 0.3s ease;
}
.docs-sign-list {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.docs-complement-desc {
  font-size: 0.82rem;
  color: var(--ink-soft);
  margin: -0.5rem 0 0.85rem;
  line-height: 1.5;
}
.docs-complement-list {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

/* ---- Rail desktop (d�tail devis) ---- */

.detail-rail-card {
  position: sticky;
  top: 1rem;
  padding: 1rem;
}
.rail-field {
  margin-bottom: 0.65rem;
}
.rail-field__label {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--ink-soft);
  margin-bottom: 0.2rem;
}
.rail-field__value {
  font-size: 0.86rem;
  font-weight: 500;
  color: var(--ink);
  line-height: 1.35;
}
.rail-field__sub {
  font-size: 0.8rem;
  font-weight: 400;
  color: var(--ink-soft);
  line-height: 1.35;
  margin-top: 0.1rem;
}
.rail-expire-soon {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--clay-ink);
  white-space: nowrap;
}
/* Mes devis 3 — rail desktop allégé */
body.page-devis-list-v3.page-devis-detail .rail-field--care {
  margin-bottom: 0.55rem;
}
body.page-devis-list-v3.page-devis-detail .rail-field--care .care-context {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.3rem;
  font-size: 0.82rem;
  color: var(--ink-2);
}
body.page-devis-list-v3.page-devis-detail .rail-field--care .care-context-sep {
  display: none;
}
body.page-devis-list-v3.page-devis-detail .rail-field--care .care-context-item svg {
  opacity: 0.55;
  color: var(--exp-primary);
}
body.page-devis-list-v3.page-devis-detail .rail-field--expire-inline {
  margin-bottom: 0.75rem;
}
body.page-devis-list-v3.page-devis-detail .rail-field__expire-line {
  display: block;
  font-size: 0.86rem;
  font-weight: 500;
  color: var(--ink);
  line-height: 1.35;
  white-space: nowrap;
}
body.page-devis-list-v3.page-devis-detail .rail-field__expire-line .rail-expire-soon {
  font-size: 0.8rem;
}
.rail-amounts {
  border-top: 1px solid var(--line);
  padding-top: 0.75rem;
  margin-bottom: 0.65rem;
}
.rail-amounts__row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 0.5rem;
  font-size: 0.82rem;
  color: var(--ink-soft);
  margin-bottom: 0.2rem;
}
.rail-amounts__row span:last-child {
  font-weight: 600;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.rail-amounts__row--highlight {
  font-size: 0.92rem;
  color: var(--ink-2);
  margin-bottom: 0;
}
.rail-amounts__row--highlight span:last-child {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--clay-ink);
}
.rail-amounts__mutuelle-note {
  font-size: 0.72rem;
  color: var(--ink-soft);
  line-height: 1.45;
  margin: 0.35rem 0 0;
  text-align: left;
}
.detail-rail-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.35rem 0.5rem;
  margin-top: 0.55rem;
}
.detail-rail-reassurance {
  margin-top: 0.55rem;
  font-size: 0.74rem;
}

/* ---- Rail : checklist documents ---- */

.rail-docs-checklist {
  margin-bottom: 0.75rem;
  padding: 0.65rem 0.75rem;
  background: var(--amber-soft);
  border: 1px solid rgba(var(--accent-rgb),0.25);
  border-radius: var(--radius-sm);
}
.rail-docs-checklist-header {
  display: flex;
  justify-content: flex-start;
  align-items: center;
  gap: 0.4rem;
  margin-bottom: 0.35rem;
}
.rail-docs-count {
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--accent-ink);
}
.rail-docs-checklist-items {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.rail-doc-item {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
  padding: 0.35rem 0.25rem;
  border: none;
  background: transparent;
  border-radius: var(--radius-sm);
  cursor: pointer;
  text-align: left;
  font-family: var(--sans);
  transition: background var(--transition);
}
.rail-doc-item:hover { background: rgba(255,255,255,0.5); }
.rail-doc-check {
  width: 16px;
  height: 16px;
  border: 2px solid #4b5563;
  border-radius: 50%;
  flex-shrink: 0;
  position: relative;
}
.rail-doc-item.is-viewed .rail-doc-check {
  background: var(--good);
  border-color: var(--good);
}
.rail-doc-item.is-viewed .rail-doc-check::after {
  content: '';
  position: absolute;
  left: 4px;
  top: 1px;
  width: 4px;
  height: 7px;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.rail-doc-label {
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--ink);
  line-height: 1.3;
}
.rail-doc-item.is-viewed .rail-doc-label {
  color: var(--ink-soft);
  text-decoration: line-through;
  text-decoration-color: rgba(0,0,0,0.15);
}

/* ---- Alternative block ---- */

.alternative-block {
  background: var(--bg-warm);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 1.15rem;
}
.alternative-block h4 {
  font-family: var(--sans);
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--ink);
  margin-bottom: 0.4rem;
}
.alternative-block p {
  font-size: 0.82rem;
  color: var(--ink-2);
  line-height: 1.6;
}

/* ---- Greeting (accueil) ---- */

.greeting-title {
  font-family: var(--serif);
  font-size: 1.65rem;
  font-weight: 600;
  color: var(--ink);
}
.greeting-sub {
  font-size: 0.9rem;
  color: var(--ink-soft);
  margin-top: 0.25rem;
}

/* ---- Hero card chips ---- */

.hero-card-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  align-items: center;
}

/* ---- Hero card (accueil) ---- */

.hero-card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-left: 4px solid var(--clay);
  border-radius: var(--radius);
  padding: 1.5rem;
  margin-bottom: 1.5rem;
  display: flex;
  gap: 1.5rem;
  align-items: stretch;
}
.hero-card-visual {
  border-radius: var(--radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  min-width: 0;
  width: auto;
  max-width: min(220px, 36%);
  background: var(--sage-soft);
  border: 1px solid rgba(var(--primary-rgb),0.18);
  padding: 0.5rem 0.45rem;
}
.hero-card-visual .dental-chart-wrap {
  width: auto;
  max-width: 100%;
}
.hero-card-visual .dental-chart-label {
  font-size: 0.72rem;
  font-weight: 600;
  margin-top: 0.25rem;
  line-height: 1.3;
  text-align: center;
}
.hero-card-body { flex: 1; min-width: 0; }
.hero-card-body h3 {
  font-family: var(--serif);
  font-size: 1.1rem;
  margin-bottom: 0.35rem;
}
.hero-card-body p {
  font-size: 0.85rem;
  color: var(--ink-2);
  margin-bottom: 0.75rem;
  line-height: 1.5;
}
.hero-card-amounts {
  display: flex;
  gap: 1.25rem;
  margin-bottom: 0.75rem;
  flex-wrap: wrap;
}
.hero-card-amounts .devis-stat strong { font-size: 1rem; }

/* ---- � faire list ---- */

.todo-item {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.85rem 1rem;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  margin-bottom: 0.5rem;
  transition: all var(--transition);
}
.todo-item:hover { box-shadow: var(--shadow-sm); }
.todo-icon {
  width: 36px;
  height: 36px;
  border-radius: var(--radius-xs);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.todo-icon--devis { background: var(--clay-soft); color: var(--clay); }
.todo-icon--pay { background: var(--amber-soft); color: var(--amber); }
.todo-icon--doc { background: var(--blue-soft); color: var(--blue); }
.todo-icon svg { width: 18px; height: 18px; }
.todo-info { flex: 1; min-width: 0; }
.todo-info-title { font-weight: 600; font-size: 0.85rem; color: var(--ink); }
.todo-info-meta { font-size: 0.72rem; color: var(--ink-soft); }
.todo-amount {
  font-weight: 700;
  font-size: 0.9rem;
  color: var(--clay-ink);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* ---- RDV mini cards ---- */

.rdv-mini {
  display: flex;
  gap: 0.75rem;
  padding: 0.85rem 1rem;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  margin-bottom: 0.5rem;
}
.rdv-date-block {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-width: 48px;
  padding: 0.35rem 0.5rem;
  background: var(--sage-soft);
  border-radius: var(--radius-xs);
  text-align: center;
  border-top: 2px solid var(--sage);
}
.rdv-date-day { font-size: 1.1rem; font-weight: 700; color: var(--sage-ink); line-height: 1; }
.rdv-date-month { font-size: 0.6rem; font-weight: 700; color: var(--sage); text-transform: uppercase; letter-spacing: 0.04em; }
.rdv-info { flex: 1; }
.rdv-info-title { font-weight: 600; font-size: 0.85rem; color: var(--ink); }
.rdv-info-meta { font-size: 0.75rem; color: var(--ink-soft); }

/* Contexte cabinet + praticien (accueil, devis, RDV) */
.care-context {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.25rem 0.35rem;
  font-size: 0.7rem;
  color: var(--ink-soft);
  margin-top: 0.15rem;
  line-height: 1.4;
}
.care-context-item {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  max-width: 100%;
  min-width: 0;
}
.care-context-item span {
  overflow-wrap: anywhere;
  word-break: break-word;
}
.care-context-item svg {
  width: 12px;
  height: 12px;
  opacity: 0.5;
  flex-shrink: 0;
}
.care-context-sep {
  opacity: 0.35;
  user-select: none;
}
.hero-card-body .care-context {
  margin-top: 0;
  margin-bottom: 0.75rem;
}

/* ---- Finance mini ---- */

/* ---- Finance section (accueil enrichie) ---- */

.finance-title-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 0.65rem;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.finance-global-solde {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
}
.finance-global-solde-label {
  font-size: 0.82rem;
  color: var(--ink-soft);
}
.finance-global-solde-amount {
  font-size: 1.35rem;
  font-weight: 800;
  color: var(--clay-ink);
  font-variant-numeric: tabular-nums;
}

.finance-next-banner {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.55rem 0.85rem;
  background: var(--sage-soft);
  border-radius: var(--radius-sm);
  font-size: 0.82rem;
  color: var(--ink-2);
  margin-bottom: 0.75rem;
}
.finance-next-banner strong {
  color: var(--sage-ink);
  font-variant-numeric: tabular-nums;
}
.finance-next-banner-icon {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--surface);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.finance-next-banner-icon svg { width: 14px; height: 14px; color: var(--sage); }

.finance-cabinets-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
  gap: 0.65rem;
}

.finance-cabinet-card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  padding: 0.85rem 1rem;
  margin-bottom: 0.5rem;
}
.finance-cab-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 0.35rem;
}
.finance-cab-name {
  font-weight: 600;
  font-size: 0.85rem;
  color: var(--ink);
}
.finance-cab-solde {
  font-weight: 700;
  font-size: 0.95rem;
  color: var(--clay-ink);
  font-variant-numeric: tabular-nums;
}
.finance-cab-meta {
  font-size: 0.75rem;
  color: var(--ink-soft);
  display: flex;
  align-items: center;
  gap: 0.35rem;
  flex-wrap: wrap;
  margin-bottom: 0.65rem;
}

.finance-echeancier {
  margin-top: 0.5rem;
}
.finance-ech-label {
  font-size: 0.7rem;
  font-weight: 600;
  color: var(--ink-soft);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 0.4rem;
}
.finance-ech-steps {
  display: flex;
  gap: 0.35rem;
}
.finance-ech-step {
  flex: 1;
  text-align: center;
  padding: 0.4rem 0.25rem;
  background: var(--line-soft);
  border-radius: var(--radius-xs);
  position: relative;
}
.finance-ech-step--due {
  background: var(--sage-soft);
  border: 1px solid rgba(var(--primary-rgb),0.25);
}
.finance-ech-step-amount {
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.finance-ech-step--due .finance-ech-step-amount {
  color: var(--sage-ink);
}
.finance-ech-step-date {
  font-size: 0.6rem;
  color: var(--ink-soft);
  margin-top: 0.1rem;
}

.finance-single-pay {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.8rem;
  color: var(--ink-2);
  padding: 0.5rem 0.65rem;
  background: var(--sage-soft);
  border-radius: var(--radius-xs);
}
.finance-single-pay svg { width: 14px; height: 14px; color: var(--sage); flex-shrink: 0; }
.finance-single-pay strong { color: var(--sage-ink); font-variant-numeric: tabular-nums; }

/* Ancien finance-mini (gard� pour r�trocompat) */
.finance-mini {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  padding: 1rem;
}
.finance-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.4rem 0;
}
.finance-row + .finance-row { border-top: 1px solid var(--line-soft); }
.finance-label { font-size: 0.82rem; color: var(--ink-soft); }
.finance-value { font-weight: 700; font-size: 0.95rem; color: var(--ink); font-variant-numeric: tabular-nums; }

/* ---- Conseils rail ---- */

.conseils-rail {
  display: flex;
  gap: 0.75rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 0.5rem;
  max-width: 100%;
}
.conseil-card {
  flex: 0 0 auto;
  width: 220px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  padding: 1rem;
  scroll-snap-align: start;
}
.conseil-card h4 {
  font-family: var(--sans);
  font-weight: 600;
  font-size: 0.85rem;
  color: var(--ink);
  margin-bottom: 0.25rem;
}
.conseil-card p {
  font-size: 0.75rem;
  color: var(--ink-soft);
  line-height: 1.5;
}

/* ---- Actes table ---- */

.actes-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.82rem;
}
.actes-table th {
  text-align: left;
  font-weight: 600;
  color: var(--ink-soft);
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 0.5rem 0.75rem;
  border-bottom: 2px solid var(--line);
}
.actes-table td {
  padding: 0.65rem 0.75rem;
  border-bottom: 1px solid var(--line-soft);
  color: var(--ink-2);
  font-variant-numeric: tabular-nums;
}
.actes-table tr:last-child td { border-bottom: none; }
.actes-table .col-label { font-weight: 500; color: var(--ink); }
.actes-table .col-secu { color: var(--blue-ink); }
.actes-table .col-mutuelle { color: var(--amber-ink); }
.actes-table .col-reste { color: var(--clay-ink); font-weight: 600; }

/* ---- Back link ---- */

.back-link {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--sage);
  margin-bottom: 1rem;
  transition: color var(--transition);
  text-decoration: none;
}
.back-link:hover { color: var(--sage-dk); text-decoration: underline; }
.back-link svg { width: 18px; height: 18px; }

/* ---- Detail header (devis detail � align� V3) ---- */

.detail-header {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 1.5rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--line);
  min-width: 0;
}
.detail-header-main {
  flex: 1 1 12rem;
  min-width: 0;
}
.detail-header-meta {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
  flex-shrink: 0;
}
.detail-header-subtitle {
  margin: 0;
  line-height: 1.45;
}
.detail-header h1 {
  font-size: 1.35rem;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
  margin-bottom: 0.15rem;
}
.detail-header-amount {
  text-align: right;
  flex-shrink: 0;
}
.detail-header-amount-label {
  font-size: 0.72rem;
  color: var(--ink-soft);
}
.detail-header-amount-value {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--clay-ink);
  font-variant-numeric: tabular-nums;
}

.page-devis-detail .back-link {
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--ink-soft);
  text-decoration: none;
}
.page-devis-detail .back-link:hover {
  color: var(--ink);
  text-decoration: none;
}

.page-devis-detail .section-title {
  color: var(--ink);
}
.page-devis-detail .section-title svg {
  color: var(--sage);
  opacity: 1;
}
.page-devis-detail .info-box {
  background: rgba(var(--primary-rgb), 0.08);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  padding: 1rem 1.15rem;
}
.page-devis-detail .info-box-title {
  font-weight: 700;
  font-size: 0.95rem;
  color: var(--ink);
  margin: 0 0 0.4rem;
}
.page-devis-detail .info-box p {
  margin: 0;
  font-size: 0.9rem;
  color: var(--ink-2);
  line-height: 1.55;
}
.page-devis-detail .doc-list-item--pedago {
  border-left-width: 1px;
  border-left-color: var(--line);
}
.page-devis-detail .actes-table th {
  color: var(--sage);
  background: rgba(var(--primary-rgb), 0.06);
}

/* ---- Reassurance ---- */

.reassurance {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.78rem;
  color: var(--ink-soft);
  margin-top: 0.75rem;
}
.reassurance svg { width: 16px; height: 16px; color: var(--sage); flex-shrink: 0; }

/* ---- Section spacer ---- */

.section-spacer { margin-bottom: 2rem; }

/* ---- Dashboard grid ---- */

.dash-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
  align-items: start;
}
.dash-col { min-width: 0; }

/* ============================================================
   RESPONSIVE � Tablette (768�1023px)
   ============================================================ */

@media (min-width: 768px) and (max-width: 1023px) {
  .sidebar { display: none; }
  .main { margin-left: 0; }
  .topbar { display: grid; }
  .bottom-nav { display: block; }
  .main-content {
    padding: 1.5rem;
    padding-bottom: calc(4.5rem + env(safe-area-inset-bottom, 0px));
  }
  body.page-devis-list-alt .main-content,
  body.page-devis-list-v2 .main-content,
  body.page-devis-list-v3 .main-content,
  body.page-devis-list-v4 .main-content,
  body.page-devis-list-v5 .main-content,
  body.page-devis-list-v6 .main-content,
  body.page-devis-list-v7 .main-content,
  body.page-devis-detail .main-content {
    padding-top: 0.85rem;
  }
  .dash-grid { grid-template-columns: 1fr 1fr; }
  .detail-layout { grid-template-columns: 1fr; }
  .detail-rail { display: none; }
  .detail-recap-mobile { display: block; }
  .sticky-bar { display: block; bottom: calc(3.5rem + env(safe-area-inset-bottom, 0px)); }
}

/* Filtres liste devis � repli�s par d�faut (tablette + mobile) */
@media (max-width: 1023px) {
  .devis-page-header__top {
    align-items: center;
    gap: 0.5rem;
  }
  .devis-page-header__top .devis-filters-wrap {
    width: auto;
    flex: 0 0 auto;
    margin-left: auto;
    max-width: min(100%, 14rem);
  }
  .devis-filters-wrap.is-open {
    flex: 1 1 100%;
    max-width: none;
    margin-left: 0;
  }
  .devis-filters-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    width: 100%;
    padding: 0.55rem 0.75rem;
    font-family: inherit;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--ink-2);
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    cursor: pointer;
    text-align: left;
    transition: border-color 0.2s, background 0.2s;
  }
  .devis-filters-toggle:hover {
    border-color: rgba(var(--primary-rgb), 0.35);
    background: rgba(var(--primary-rgb), 0.04);
  }
  .devis-filters-toggle:focus-visible {
    outline: 2px solid rgba(var(--primary-rgb), 0.35);
    outline-offset: 2px;
  }
  .devis-filters-toggle__main {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    min-width: 0;
    flex: 1;
  }
  .devis-filters-toggle__main svg {
    flex-shrink: 0;
    opacity: 0.85;
  }
  .devis-filters-toggle__label {
    flex-shrink: 0;
  }
  .devis-filters-toggle__summary {
    font-weight: 500;
    color: var(--primary);
    font-size: 0.78rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
  }
  .devis-filters-toggle__summary::before {
    content: '�';
    margin: 0 0.35rem;
    color: var(--ink-soft);
    font-weight: 400;
  }
  .devis-filters-toggle__chevron {
    display: inline-flex;
    flex-shrink: 0;
    color: var(--ink-soft);
    transition: transform 0.2s ease;
  }
  .devis-filters-wrap.is-open .devis-filters-toggle__chevron {
    transform: rotate(180deg);
  }
  .devis-filters-wrap .devis-filters {
    display: none;
    margin-top: 0.5rem;
    align-items: stretch;
  }
  .devis-filters-wrap.is-open .devis-filters {
    display: flex;
  }
  .devis-cabinet-filter {
    width: 100%;
    justify-content: space-between;
  }
  .devis-cabinet-filter__select {
    flex: 1 1 auto;
    min-width: 0;
    max-width: none;
  }
  .devis-filter-chips {
    justify-content: flex-start;
  }
}

/* ============================================================
   RESPONSIVE � Mobile (< 768px)
   ============================================================ */

@media (max-width: 767px) {
  .sidebar { display: none; }
  .main { margin-left: 0; }
  .topbar { display: grid; padding: 0.5rem 1rem; }
  .bottom-nav { display: block; }
  .main-content {
    padding: 1rem;
    padding-bottom: calc(4.5rem + env(safe-area-inset-bottom, 0px));
  }
  body.page-devis-list-alt .main-content,
  body.page-devis-list-v2 .main-content,
  body.page-devis-list-v3 .main-content,
  body.page-devis-list-v4 .main-content,
  body.page-devis-list-v5 .main-content,
  body.page-devis-list-v6 .main-content,
  body.page-devis-list-v7 .main-content,
  body.page-devis-detail .main-content {
    padding-top: 0.5rem;
  }

  .dash-grid { grid-template-columns: 1fr; }
  .detail-layout { grid-template-columns: 1fr; }
  .detail-rail { display: none; }
  .detail-recap-mobile { display: block; }
  .sticky-bar { display: block; bottom: calc(3.5rem + env(safe-area-inset-bottom, 0px)); }
  .hero-card {
    flex-direction: column;
    align-items: stretch;
    gap: 1rem;
    padding: 1.15rem;
  }
  .hero-card-visual {
    width: auto;
    min-width: 0;
    max-width: 100%;
    padding: 0.65rem 0.5rem;
    order: -1;
    align-self: center;
  }
  .hero-card-visual .dental-chart-wrap {
    width: auto;
    max-width: min(200px, 72vw);
    margin: 0 auto;
  }
  .hero-card-visual .dental-chart-label {
    font-size: 0.75rem;
  }

  .devis-card {
    padding: 1rem;
  }
  .devis-card-footer {
    flex-direction: column;
    align-items: stretch;
    gap: 0.65rem;
  }
  .devis-card-footer .btn {
    width: 100%;
    white-space: normal;
    text-align: center;
  }
  .devis-card-meta {
    width: 100%;
  }
  .devis-card--compact .devis-card-pricing-row {
    flex-direction: column;
    align-items: stretch;
  }
  .devis-card--compact .devis-card-actions {
    align-self: stretch;
  }
  .devis-card--compact .devis-card-actions .btn {
    width: 100%;
    white-space: normal;
    text-align: center;
  }
  .devis-card--compact .devis-card-header-aside .devis-card-meta {
    white-space: normal;
  }
  .devis-card-title h4 .tag {
    display: inline-flex;
    margin-top: 0.2rem;
    margin-left: 0;
  }

  .todo-item,
  .rdv-mini,
  .finance-cabinet-card,
  .card,
  .docs-sign-prompt {
    max-width: 100%;
    min-width: 0;
  }
  .todo-info,
  .rdv-info {
    min-width: 0;
  }
  .todo-info-meta {
    overflow-wrap: anywhere;
    word-break: break-word;
  }
  .todo-info-meta .chip {
    max-width: 100%;
    white-space: normal;
  }

  .tab-btn {
    padding: 0.6rem 0.85rem;
    font-size: 0.82rem;
  }

  .encart--flex {
    flex-direction: column;
  }
  .encart-body {
    min-width: 0;
    width: 100%;
  }
  .encart-visual {
    width: 100%;
    max-width: 100%;
    align-self: center;
  }
  .encart-visual .dental-chart-wrap {
    width: auto;
    max-width: min(180px, 65vw);
    margin: 0 auto;
  }

  .finance-ech-steps { flex-wrap: wrap; }
  .finance-ech-step { min-width: calc(50% - 0.2rem); flex: 0 0 auto; }

  .finance-global-solde-amount { font-size: 1.1rem; }
  .finance-cabinets-grid { grid-template-columns: 1fr; }

  .actes-table { font-size: 0.75rem; }
  .actes-table th, .actes-table td { padding: 0.5rem; }

  .echeance-cards {
    gap: 0.5rem;
    margin-left: -0.25rem;
    margin-right: -0.25rem;
    padding-left: 0.25rem;
    padding-right: 0.25rem;
  }
  .echeance-card { min-width: min(140px, 78vw); }

  .detail-header {
    gap: 0.5rem;
    padding-bottom: 0.75rem;
    margin-bottom: 1rem;
  }
  .detail-header-main {
    flex: 1 1 100%;
    width: 100%;
  }
  .detail-header h1 {
    font-size: 1.2rem;
    line-height: 1.25;
    margin-bottom: 0.1rem;
  }
  .detail-header-subtitle {
    font-size: 0.82rem;
  }
  .detail-header-meta {
    width: 100%;
    justify-content: flex-start;
  }
  .detail-header-amount {
    width: 100%;
    text-align: left;
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
  }

  .docs-sign-prompt {
    padding: 1rem;
  }

  .overlay-panel { max-width: 100%; border-radius: var(--radius) var(--radius) 0 0; align-self: flex-end; }
}

/* ============================================================
   RESPONSIVE � Desktop (? 1024px)
   ============================================================ */

@media (min-width: 1024px) {
  .topbar { display: grid; }

  .detail-layout {
    grid-template-columns: 1fr 340px;
  }
  .detail-rail {
    display: block;
    position: sticky;
    top: 1rem;
    align-self: start;
  }
  .sticky-bar { display: none; }

  /* Mes devis 2 — détail 2 propositions : pleine largeur pour les colonnes */
  body.page-devis-list-alt.page-devis-detail--proposals .main-content {
    max-width: none;
    width: 100%;
    padding-left: 2.5rem;
    padding-right: 2.5rem;
  }
  body.page-devis-list-alt.page-devis-detail--proposals .detail-layout {
    grid-template-columns: 1fr;
    max-width: none;
  }
  body.page-devis-list-alt.page-devis-detail--proposals .detail-main,
  body.page-devis-list-alt.page-devis-detail--proposals .proposal-alternatives-section {
    width: 100%;
    max-width: none;
  }
  body.page-devis-list-alt.page-devis-detail--proposals .proposal-columns-row {
    display: flex;
    align-items: stretch;
    gap: 0 1.5rem;
    width: 100%;
  }
  body.page-devis-list-alt.page-devis-detail--proposals .proposal-column {
    flex: 1 1 0;
    width: 0;
    min-width: 0;
  }
  body.page-devis-list-alt.page-devis-detail--proposals .detail-rail-footer-inner {
    grid-template-columns: 1fr minmax(16rem, 20rem);
    align-items: center;
  }
  body.page-devis-list-alt.page-devis-detail--proposals .detail-rail-footer-docs .rail-docs-checklist-items {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.35rem 0.75rem;
    align-items: start;
  }

  /* Mes devis 3 — détail 2 propositions : pleine largeur + récap sticky bas */
  body.page-devis-list-v3.page-devis-detail--proposals .main-content {
    max-width: none;
    width: 100%;
    padding-left: 2.5rem;
    padding-right: 2.5rem;
    padding-bottom: 5.5rem;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .detail-layout {
    grid-template-columns: 1fr;
    max-width: none;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .detail-main,
  body.page-devis-list-v3.page-devis-detail--proposals .proposal-alternatives-section {
    width: 100%;
    max-width: none;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .proposal-columns-row {
    display: flex;
    align-items: stretch;
    gap: 0 1.5rem;
    width: 100%;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .proposal-column {
    flex: 1 1 0;
    width: 0;
    min-width: 0;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .proposal-pricing--reste-only {
    margin-bottom: 0.85rem;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .proposal-pricing--reste-only .proposal-pricing-row--charge {
    font-size: 1rem;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .proposal-pricing--reste-only .proposal-pricing-row--charge .pp-reste-label {
    color: var(--exp-primary);
  }
  body.page-devis-list-v3.page-devis-detail--proposals .proposal-pricing--reste-only .proposal-pricing-row--charge strong {
    font-size: 1.25rem;
  }
  /* Barre sticky compacte — bas d'écran */
  body.page-devis-list-v3.page-devis-detail--proposals .detail-rail--v3-compact {
    display: block;
    position: fixed;
    top: auto;
    left: var(--sidebar-w);
    right: 0;
    bottom: 0;
    z-index: 40;
    margin: 0;
    width: auto;
    height: auto;
    align-self: auto;
    padding: 0.65rem 1.5rem;
    padding-bottom: calc(0.65rem + env(safe-area-inset-bottom, 0px));
    box-sizing: border-box;
    background-color: color-mix(in srgb, rgb(var(--exp-primary-rgb)) 6%, #ffffff);
    border-top: 2px solid rgba(var(--exp-primary-rgb), 0.32);
    box-shadow:
      0 -10px 32px rgba(64, 44, 94, 0.16),
      0 -2px 8px rgba(64, 44, 94, 0.08);
    transition: background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .detail-rail--v3-compact.is-choice-made {
    background-color: color-mix(in srgb, rgb(var(--exp-primary-rgb)) 14%, #ffffff);
    border-top-color: rgba(var(--exp-primary-rgb), 0.45);
    box-shadow:
      0 -12px 36px rgba(64, 44, 94, 0.2),
      0 -2px 10px rgba(64, 44, 94, 0.1);
    padding-top: 0.7rem;
    padding-bottom: calc(0.7rem + env(safe-area-inset-bottom, 0px));
  }
  body.page-devis-list-v3.page-devis-detail--proposals .detail-rail-v3-inner {
    display: flex;
    align-items: center;
    gap: 1rem 1.25rem;
    flex-wrap: nowrap;
    width: 100%;
    max-width: none;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-lead {
    display: flex;
    align-items: center;
    gap: 1rem 1.35rem;
    flex: 1 1 auto;
    min-width: 0;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-docs {
    flex: 0 1 11rem;
    min-width: 8.5rem;
    max-width: 12.5rem;
    margin-left: auto;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-docs__head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.28rem;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-docs__label {
    font-size: 0.72rem;
    font-weight: 500;
    color: var(--ink-soft);
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-docs__count {
    font-size: 0.72rem;
    font-weight: 700;
    color: var(--exp-primary);
    font-variant-numeric: tabular-nums;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-docs__progress {
    height: 4px;
    background: rgba(var(--exp-primary-rgb), 0.16);
    overflow: hidden;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-docs__progress-bar {
    height: 100%;
    width: 0%;
    background: var(--exp-primary);
    transition: width 0.25s ease;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-choice {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.12rem;
    flex: 1 1 18rem;
    min-width: 14rem;
    max-width: 28rem;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-choice__row {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    min-width: 0;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-choice__icon {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    color: var(--exp-primary);
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-choice__icon[hidden] {
    display: none;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-choice__label {
    display: block;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--ink-soft);
    white-space: nowrap;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .detail-rail--v3-compact.is-choice-made .rail-v3-choice__label {
    color: var(--exp-primary);
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-choice__title {
    display: block;
    width: 100%;
    max-width: 100%;
    padding-left: 0;
    font-size: 0.72rem;
    font-weight: 500;
    color: var(--ink);
    line-height: 1.25;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .detail-rail--v3-compact.is-choice-made .rail-v3-choice__title {
    padding-left: calc(16px + 0.35rem);
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-choice__title[hidden] {
    display: none;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-reste {
    display: none;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.05rem;
    flex: 0 0 auto;
    margin-left: 0;
    padding-left: 1rem;
    border-left: 1px solid rgba(var(--exp-primary-rgb), 0.18);
  }
  body.page-devis-list-v3.page-devis-detail--proposals .detail-rail--v3-compact.is-choice-made .rail-v3-reste {
    display: flex;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-reste__label {
    font-size: 0.68rem;
    font-weight: 600;
    color: var(--exp-primary);
    white-space: nowrap;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-reste__value {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--exp-primary);
    font-variant-numeric: tabular-nums;
    line-height: 1.15;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-cta {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    flex: 0 0 auto;
    margin-left: auto;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-docs + .rail-v3-cta {
    margin-left: 0;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-cta .btn--primary {
    white-space: nowrap;
  }
  @media (max-width: 1280px) {
    body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-choice {
      min-width: 12rem;
      max-width: 22rem;
    }
    body.page-devis-list-v3.page-devis-detail--proposals .rail-v3-docs {
      min-width: 7.5rem;
      max-width: 11rem;
    }
  }
}

@media (max-width: 1023px) {
  body.page-devis-list-alt.page-devis-detail--proposals .detail-rail-footer-inner {
    grid-template-columns: 1fr;
    gap: 0.65rem;
    align-items: stretch;
  }
  body.page-devis-list-alt.page-devis-detail--proposals .detail-rail-footer-cta {
    min-width: 0;
    width: 100%;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .proposal-pricing--reste-only .proposal-pricing-row--charge strong {
    font-size: 1.15rem;
  }
  body.page-devis-list-v3.page-devis-detail--proposals .detail-rail--v3-compact {
    display: none;
  }
}

/* ---- Utilities ---- */

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  border: 0;
}

.flex-center {
  display: flex;
  align-items: center;
  justify-content: center;
}

.gap-sm { gap: 0.5rem; }
.gap-md { gap: 0.75rem; }
.gap-lg { gap: 1.25rem; }
.mb-1 { margin-bottom: 0.5rem; }
.mb-2 { margin-bottom: 0.75rem; }
.mb-3 { margin-bottom: 1rem; }
.mb-4 { margin-bottom: 1.5rem; }
.mt-2 { margin-top: 0.75rem; }
.mt-3 { margin-top: 1rem; }
.text-sage { color: var(--sage-ink); }
.text-clay { color: var(--clay-ink); }
.text-amber { color: var(--amber-ink); }
.text-blue { color: var(--blue-ink); }
.text-soft { color: var(--ink-soft); }
.fw-600 { font-weight: 600; }
.fs-sm { font-size: 0.82rem; }
.fs-xs { font-size: 0.72rem; }

/* ---- Sch�ma dentaire ---- */

.dental-chart-wrap {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 0.2rem;
  max-width: 100%;
}
.dental-chart-wrap--sm { gap: 0.15rem; }

.dental-chart {
  display: block;
  overflow: hidden;
  width: auto;
  height: auto;
  max-width: 100%;
  margin: 0 auto;
  aspect-ratio: 409 / 694;
}
/* Ratio viewBox 409�694 � hauteur plafonn�e pour ne pas envahir la page */
.dental-chart--sm { max-height: 88px;  max-width: min(160px, 48vw); }
.dental-chart--md { max-height: 112px; max-width: min(200px, 55vw); }
.dental-chart--lg { max-height: 136px; max-width: min(240px, 62vw); }
.dental-chart--pro {
  width: auto;
  height: auto;
}
.dental-chart--pro .dental-tooth {
  transition: opacity 0.2s ease;
}
.dental-chart--pro .dental-tooth:not(.dental-tooth--active) .dental-tooth-body {
  opacity: 0.92;
}
.dental-chart--pro .dental-tooth--active {
  filter: drop-shadow(0 2px 4px rgba(var(--primary-rgb),0.35));
}
.dental-chart--pro .dental-tooth--active .dental-tooth-outline {
  stroke-width: 1.8;
}
.dental-chart--pro .dental-tooth-label {
  pointer-events: none;
  paint-order: stroke fill;
  stroke: rgba(0,0,0,0.2);
  stroke-width: 0.4px;
  font-family: var(--sans);
}

.dental-chart-label {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--sage-ink);
  text-align: center;
  letter-spacing: 0.02em;
  overflow-wrap: anywhere;
  word-break: break-word;
  max-width: 100%;
}
.dental-chart-wrap--sm .dental-chart-label { font-size: 0.6rem; }
.dental-chart-wrap--lg .dental-chart-label { font-size: 0.82rem; }

/* ---- Devis card � variantes option / propositions ---- */

.devis-card-title h4 .tag {
  vertical-align: middle;
  margin-left: 0.35rem;
}
.devis-card-tariffs--option,
.devis-card-tariffs--proposals {
  width: 100%;
  min-width: 0;
}
.devis-card-option-table {
  display: grid;
  grid-template-columns: max-content repeat(3, max-content);
  column-gap: 1.3rem;
  row-gap: 0.2rem;
  align-items: center;
  width: 100%;
  min-width: 0;
}
.devis-card-option-table--complement {
  grid-template-columns: max-content repeat(4, max-content);
}
.devis-card-option-head-row,
.devis-card-option-data-row,
.devis-card-option-values {
  display: contents;
}
.devis-card-option-corner {
  grid-column: 1;
  grid-row: 1;
}
.devis-card-option-head {
  font-family: var(--sans);
  font-size: 0.82rem;
  font-weight: 400;
  color: var(--ink-soft);
  line-height: 1.3;
  white-space: nowrap;
}
.devis-card-option-head--complement {
  white-space: nowrap;
}
.devis-card-option-row-label {
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--ink);
  white-space: nowrap;
  padding-right: 0.55rem;
}
.devis-card-option-cell {
  text-align: left;
}
.devis-card-option-cell__label {
  display: none;
}
.devis-card-option-cell .devis-stat__amount {
  margin: 0;
}
.devis-card-option-cell .devis-stat__amount--clay {
  color: var(--clay-ink);
}
.devis-card-option-cell--complement {
  grid-column: 5;
  align-self: center;
  max-width: 6.5rem;
  text-align: left;
}
.devis-card-option-cell--complement .devis-card-option-cell__label {
  display: none;
}
.devis-card-option-complement-note {
  display: block;
  line-height: 1.35;
}
/* ---- D�tail � compl�ment optionnel ---- */

.doc-list-item--option {
  flex-direction: column;
  align-items: stretch;
  border: 2px solid rgba(236, 116, 13, 0.45);
  background: rgba(236, 116, 13, 0.04);
}
.doc-list-item--option .doc-option-first-row {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  width: 100%;
}
.doc-list-item--option .doc-option-line {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.35rem;
  flex: 1;
  min-width: 0;
}
.doc-list-item--option .doc-option-line .doc-info {
  width: 100%;
  min-width: 0;
}
.doc-list-item--option .option-badge {
  font-size: 0.68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--accent-hover, #c45f08);
  background: rgba(236, 116, 13, 0.12);
  padding: 0.2rem 0.5rem;
  border-radius: 4px;
  flex-shrink: 0;
}
.doc-list-item--option .doc-option-price {
  font-weight: 700;
  font-size: 0.92rem;
  color: var(--primary);
  flex-shrink: 0;
}
.doc-list-item--option .doc-option-second-row {
  display: flex;
  padding: 0.6rem 0 0;
  margin-top: 0.5rem;
  border-top: 1px dashed var(--line);
  padding-left: calc(2.5rem + 0.75rem);
}
.doc-list-item--option .option-choice {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
}
.doc-list-item--option.option-accepted {
  border-color: var(--good);
  background: var(--good-soft);
}
.doc-list-item--option.option-refused {
  border-color: #b91c1c;
  background: #fef2f2;
}
.doc-list-item--option.option-accepted .option-status-badge {
  color: var(--good-ink);
}
.doc-list-item--option.option-refused .option-status-badge {
  color: #b91c1c;
}
.option-status-badge {
  font-size: 0.72rem;
  font-weight: 700;
}

.btn-option {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.4rem 0.75rem;
  font-size: 0.82rem;
  font-weight: 600;
  border-radius: 6px;
  cursor: pointer;
  border: 2px solid var(--line);
  background: var(--surface);
  color: var(--ink);
  font-family: inherit;
  transition: border-color 0.2s, background 0.2s, color 0.2s;
}
.btn-option:hover {
  border-color: var(--primary-soft);
  color: var(--primary);
}
.btn-option.selected-accept {
  border-color: var(--good);
  background: var(--good-soft);
  color: var(--good-ink);
}
.btn-option.selected-refuse {
  border-color: #b91c1c;
  background: #fef2f2;
  color: #b91c1c;
}

.montant-final-wrap {
  margin-top: 1rem;
  padding: 0.85rem 1rem;
  background: var(--bg-warm);
  border-radius: var(--radius-sm);
  border: 1px solid var(--line);
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.75rem;
}
.montant-final-label {
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--ink);
}
.montant-final-value {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--primary);
  font-variant-numeric: tabular-nums;
}

/* ---- D�tail � deux propositions ---- */

.proposal-alternatives-intro {
  font-size: 0.9rem;
  line-height: 1.6;
  color: var(--ink-2);
  margin-bottom: 1.25rem;
}

/* En clair / Pourquoi � devis 2 propositions */
.proposals-enclair-intro {
  font-size: 0.88rem;
  line-height: 1.65;
  color: var(--ink-2);
  margin: 0 0 0.85rem;
}
.proposals-enclair-list,
.proposals-pourquoi-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.proposals-enclair-item__label,
.proposals-pourquoi-item__label {
  display: block;
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 0.2rem;
}
.proposals-enclair-item__text {
  font-size: 0.85rem;
  line-height: 1.55;
  color: var(--ink-2);
  margin: 0;
}
.proposals-pourquoi-box {
  margin-top: 1rem;
}
.proposals-pourquoi-intro {
  font-size: 0.88rem;
  line-height: 1.6;
  color: var(--ink-2);
  margin: 0 0 0.65rem;
}
.proposals-pourquoi-item {
  font-size: 0.85rem;
  line-height: 1.55;
  color: var(--ink-2);
}

.proposal-columns-row {
  display: flex;
  align-items: stretch;
  gap: 0 1.25rem;
  width: 100%;
}
.proposal-sep {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 0.25rem;
  align-self: start;
  margin-top: 1rem;
  flex: 0 0 auto;
}
.proposal-sep span {
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--ink-soft);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.proposal-column,
.proposal-block {
  border: 2px solid rgba(var(--primary-rgb), 0.32);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--shadow-sm);
  border-left: 4px solid var(--primary);
  overflow: hidden;
  min-width: 0;
  display: flex;
  flex-direction: column;
  flex: 1 1 0;
  width: 0;
}
.proposal-block.proposal-accepted {
  border-color: var(--good);
  border-left-color: var(--good);
  background: var(--good-soft);
}
.proposal-block.proposal-refused {
  border-color: #b91c1c;
  border-left-color: #b91c1c;
  background: #fef2f2;
}
.proposal-block.proposal-accepted .proposal-header {
  background: rgba(5, 150, 105, 0.12);
  border-bottom-color: rgba(5, 150, 105, 0.2);
}
.proposal-block.proposal-refused .proposal-header {
  background: rgba(185, 28, 28, 0.08);
  border-bottom-color: rgba(185, 28, 28, 0.18);
}
.proposal-header {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.5rem;
  padding: 0.85rem 1rem;
  border-bottom: 1px solid var(--line);
  background: rgba(var(--primary-rgb), 0.05);
}
.proposal-number {
  width: 1.65rem;
  height: 1.65rem;
  border-radius: 50%;
  background: var(--primary);
  color: #fff;
  font-size: 0.85rem;
  font-weight: 800;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.proposal-block.proposal-accepted .proposal-number { background: var(--good); }
.proposal-block.proposal-refused .proposal-number { background: #b91c1c; }
.proposal-block.proposal-accepted .proposal-status-badge { color: var(--good-ink); }
.proposal-block.proposal-refused .proposal-status-badge { color: #b91c1c; }
.proposal-title {
  font-size: 1.12rem;
  font-weight: 700;
  color: var(--ink);
  margin: 0;
  flex: 1;
  min-width: 0;
  line-height: 1.3;
}
.proposal-header-amount {
  display: none;
}
.proposal-status-badge {
  font-size: 0.75rem;
  font-weight: 700;
  width: 100%;
}
.proposal-block-body {
  padding: 1rem;
}
.proposal-pricing {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.3rem;
  margin-bottom: 0.85rem;
  padding-bottom: 0.85rem;
  border-bottom: 1px solid var(--line);
}
.proposal-pricing-row {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  font-size: 0.82rem;
}
.proposal-pricing-row > span {
  white-space: nowrap;
}
.proposal-pricing-row strong {
  font-variant-numeric: tabular-nums;
  color: var(--ink);
}
.proposal-pricing-row--charge strong {
  color: var(--clay-ink);
}
.proposal-pricing--harmonized {
  flex-direction: column;
  flex-wrap: nowrap;
  gap: 0.28rem;
  margin-bottom: 0.85rem;
  padding-bottom: 0.85rem;
  border-bottom: 1px solid var(--line);
}
.proposal-pricing--harmonized .proposal-pricing-row {
  flex-direction: row;
  justify-content: space-between;
  align-items: baseline;
  gap: 0.65rem;
  width: 100%;
  font-size: 0.82rem;
}
.proposal-pricing--harmonized .proposal-pricing-row > span:first-child {
  flex: 1 1 auto;
  min-width: 0;
  color: var(--ink-soft);
  white-space: normal;
}
.proposal-pricing--harmonized .proposal-pricing-row strong,
.proposal-pricing--harmonized .proposal-pricing-row .devis-stat__note {
  flex-shrink: 0;
  text-align: right;
}
.proposal-pricing-row--complement .devis-stat__note {
  font-size: 0.68rem;
  line-height: 1.35;
  color: var(--ink-soft);
  max-width: 52%;
}
.proposal-resume-encart {
  margin-bottom: 0.85rem;
  padding: 0.85rem 1rem;
}
.proposal-resume-encart .proposal-resume {
  margin-bottom: 0;
}
body.page-devis-list-v3.page-devis-detail .proposal-traitement-box {
  margin: 0 0 0.85rem;
  border: none;
  background: transparent;
  padding-left: 0;
  padding-right: 0;
}
body.page-devis-list-v3.page-devis-detail .proposal-traitement-box .proposal-traitement-text {
  margin: 0;
  font-size: 0.88rem;
  line-height: 1.55;
  color: var(--ink-2);
}
.proposal-block--harmonized .proposal-docs-title {
  margin-top: 0;
}
.proposal-etapes-section {
  margin: 0.85rem 0 1rem;
  padding-top: 0.85rem;
  border-top: 1px solid var(--line-soft);
  min-width: 0;
}
.proposal-etapes-title {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--ink);
  margin: 0 0 0.65rem;
  line-height: 1.35;
}
.timeline--nested {
  margin-top: 0;
  padding-left: 1.85rem;
}
.timeline--nested::before {
  left: 0.72rem;
}
.timeline--nested .timeline-step {
  padding-left: 0;
  padding-bottom: 0.75rem;
}
.timeline--nested .timeline-dot {
  width: 1.45rem;
  height: 1.45rem;
  font-size: 0.72rem;
  left: -1.85rem;
}
.timeline--nested .timeline-card {
  padding: 0.55rem 0.7rem;
}
.timeline--nested .timeline-title {
  font-size: 0.84rem;
}
.timeline--nested .timeline-meta {
  font-size: 0.72rem;
  margin-bottom: 0.25rem;
}
.timeline--nested .timeline-desc {
  font-size: 0.8rem;
  line-height: 1.5;
}
.timeline--nested .timeline-but {
  margin-top: 0.35rem;
  padding: 0.4rem 0.55rem;
  font-size: 0.74rem;
}
.proposal-alternatives-section--harmonized {
  margin-top: 0;
}
.proposal-resume {
  font-size: 0.88rem;
  line-height: 1.6;
  color: var(--ink-2);
  margin-bottom: 0.85rem;
}
.proposal-etapes {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  margin-bottom: 0.85rem;
}
.proposal-etape {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.82rem;
  color: var(--ink-2);
}
.proposal-etape-num {
  width: 1.35rem;
  height: 1.35rem;
  border-radius: 50%;
  background: var(--bg-warm);
  border: 1px solid var(--line);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--primary);
  flex-shrink: 0;
}
.proposal-docs-title {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 0.5rem;
}
.proposal-docs-progress-wrap {
  margin-bottom: 0.65rem;
}
.proposal-docs-progress-head {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 0.35rem;
}
.proposal-docs-count {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--sage);
  background: var(--sage-soft);
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  white-space: nowrap;
}
.proposal-docs-progress {
  margin-bottom: 0;
}
.proposal-docs-list {
  margin-bottom: 0.75rem;
}
.proposal-choice-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  justify-content: center;
  padding-top: 0.75rem;
  border-top: 1px dashed var(--line);
}

/* Mes devis 3 bis — actions de choix isolées, alignées en bas des 2 colonnes */
body.page-devis-list-v3-bis.page-devis-detail .proposal-block-body {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
}
body.page-devis-list-v3-bis.page-devis-detail .proposal-choice-row--emphasis {
  flex-direction: column;
  align-items: stretch;
  gap: 0.5rem;
  margin: auto -1rem -1rem;
  padding: 0.95rem 1rem 1rem;
  border-top: 1px solid rgba(var(--exp-primary-rgb), 0.18);
  background: color-mix(in srgb, var(--ink) 3.5%, #ffffff);
  border-left: none;
  border-right: none;
  border-bottom: none;
  border-radius: 0;
  box-shadow: none;
  flex-shrink: 0;
}
body.page-devis-list-v3-bis.page-devis-detail .proposal-choice-section-label {
  margin: 0 0 0.15rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ink-soft);
  text-align: left;
}
body.page-devis-list-v3-bis.page-devis-detail .proposal-choice-row--emphasis .btn-option {
  width: 100%;
  justify-content: center;
  min-height: 2.55rem;
  padding: 0.55rem 0.9rem;
  font-size: 0.9rem;
  border-radius: 8px;
  background: var(--surface);
  color: var(--ink);
  border-width: 1.5px;
  border-style: solid;
}
body.page-devis-list-v3-bis.page-devis-detail .proposal-choice-row--emphasis .btn-option:hover {
  background: var(--surface);
  color: var(--ink);
}
body.page-devis-list-v3-bis.page-devis-detail .proposal-choice-row--emphasis .btn-option--choose {
  border-color: var(--v3-action-btn);
}
body.page-devis-list-v3-bis.page-devis-detail .proposal-choice-row--emphasis .btn-option--choose:hover {
  border-color: var(--v3-action-btn-hover);
}
body.page-devis-list-v3-bis.page-devis-detail .proposal-choice-row--emphasis .btn-option--refuse {
  border-color: #dc2626;
}
body.page-devis-list-v3-bis.page-devis-detail .proposal-choice-row--emphasis .btn-option--refuse:hover {
  border-color: #b91c1c;
}
body.page-devis-list-v3-bis.page-devis-detail .btn-option--choose .btn-option__icon {
  color: var(--v3-action-btn);
}
body.page-devis-list-v3-bis.page-devis-detail .btn-option--refuse .btn-option__icon {
  color: #b91c1c;
}
body.page-devis-list-v3-bis.page-devis-detail .btn-option--choose .btn-option__label,
body.page-devis-list-v3-bis.page-devis-detail .btn-option--refuse .btn-option__label {
  color: var(--ink);
}
body.page-devis-list-v3-bis.page-devis-detail .proposal-choice-row--emphasis .btn-option--choose.selected-accept {
  border-color: var(--good);
  background: var(--good-soft);
  color: var(--ink);
}
body.page-devis-list-v3-bis.page-devis-detail .btn-option--choose.selected-accept .btn-option__icon {
  color: var(--good-ink);
}
body.page-devis-list-v3-bis.page-devis-detail .proposal-choice-row--emphasis .btn-option--refuse.selected-refuse {
  border-color: #b91c1c;
  background: #fef2f2;
  color: var(--ink);
}
body.page-devis-list-v3-bis.page-devis-detail .btn-option--refuse.selected-refuse .btn-option__icon {
  color: #b91c1c;
}
body.page-devis-list-v3-bis.page-devis-detail .proposal-choice-row.is-guide-pulse {
  animation: pp-choice-guide-pulse 1.4s ease-out 1;
}
@keyframes pp-choice-guide-pulse {
  0% {
    box-shadow: 0 0 0 0 rgba(var(--v3-action-btn-rgb), 0.45);
  }
  40% {
    box-shadow: 0 0 0 6px rgba(var(--v3-action-btn-rgb), 0.22);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(var(--v3-action-btn-rgb), 0);
  }
}
body.page-devis-list-v3-bis.page-devis-detail .detail-rail--v3-compact:not(.is-choice-made) .rail-v3-choice__label,
body.page-devis-list-v3-bis.page-devis-detail .sticky-bar--v3-compact:not(.is-choice-made) .sticky-bar-choice__label {
  color: var(--exp-primary);
  font-weight: 700;
}

.btn.disabled,
.btn.disabled:hover {
  opacity: 0.45;
  cursor: not-allowed;
  pointer-events: none;
}

/* ============================================================
   Mes devis 3 bis — synthèse 2 propositions en colonnes (desktop)
   ============================================================ */

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--proposals-cols .devis-card-proposals-cols {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.85rem;
  width: 100%;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.65rem;
  min-width: 0;
  padding: 0.85rem 0.95rem;
  background: #ffffff;
  border: 1px solid rgba(var(--exp-primary-rgb), 0.22);
  border-radius: var(--radius-sm);
  box-sizing: border-box;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__badge {
  display: inline-flex;
  align-items: center;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: #ffffff;
  background: var(--exp-primary);
  padding: 0.22rem 0.55rem;
  border-radius: 4px;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__titles {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  min-width: 0;
  width: 100%;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__title {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--ink);
  line-height: 1.3;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__sub {
  font-size: 0.78rem;
  color: var(--ink-soft);
  line-height: 1.35;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__pricing {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: start;
  gap: 0.45rem 0.75rem;
  width: 100%;
  padding: 0.7rem 0.75rem;
  background: rgba(var(--exp-primary-rgb), 0.05);
  border: 1px solid rgba(var(--exp-primary-rgb), 0.12);
  border-radius: 6px;
  box-sizing: border-box;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__stat {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.12rem;
  min-width: 0;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__stat-label {
  font-size: 0.68rem;
  font-weight: 500;
  color: var(--ink-soft);
  line-height: 1.25;
  white-space: normal;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__stat-value {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
  line-height: 1.2;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__stat--reste .devis-card-prop-col__stat-label {
  color: var(--exp-primary);
  font-weight: 600;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__stat--reste .devis-card-prop-col__stat-value {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--exp-primary);
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__mutuelle-note {
  display: block;
  grid-column: 1 / -1;
  margin: 0;
  font-size: 0.65rem;
  font-weight: 500;
  color: var(--ink-soft);
  line-height: 1.3;
  white-space: nowrap;
  text-align: right;
}

/* Propositions — tarifs en lignes (mutuelle dans l’encadré violet) */
body.page-devis-list-v3-bis:not(.page-devis-detail) {
  --pp-tarif-label-col: 12.25rem;
  --pp-tarif-value-gap: 1.1rem;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col--rows {
  gap: 0.75rem;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__rows {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  width: 100%;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__row {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  width: 100%;
  font-size: 0.82rem;
  color: var(--ink-soft);
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__row strong {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
  text-align: right;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__reste {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.35rem;
  width: 100%;
  padding: 0.65rem 0.75rem;
  background: rgba(var(--exp-primary-rgb), 0.09);
  border-radius: 8px;
  box-sizing: border-box;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__reste-main {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  width: 100%;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__reste-label {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--exp-primary);
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__reste-value {
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--exp-primary);
  font-variant-numeric: tabular-nums;
  text-align: right;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__reste .devis-card-prop-col__mutuelle {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  width: 100%;
  font-size: 0.72rem;
  color: var(--ink-soft);
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__reste .devis-card-prop-col__mutuelle-label {
  font-weight: 600;
  white-space: nowrap;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__reste .devis-card-prop-col__mutuelle-note {
  display: inline;
  grid-column: auto;
  margin: 0;
  white-space: normal;
  text-align: right;
  font-size: inherit;
  font-weight: 500;
  line-height: 1.3;
  color: inherit;
}

/* Mes devis 3 bis — devis simple : mutuelle dans l’encadré violet, montants à droite */
body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
.devis-card:not(.devis-card--option):not(.devis-card--proposals)
.devis-card-body > .devis-stat-reste-block {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.35rem;
  width: 100%;
  max-width: none;
  box-sizing: border-box;
  margin-top: 0.35rem;
  padding: 0.65rem 0.75rem;
  background: rgba(var(--exp-primary-rgb), 0.09);
  border: none;
  border-radius: 8px;
}

body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
.devis-card:not(.devis-card--option):not(.devis-card--proposals)
.devis-stat-reste-block > .devis-stat--clay {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  width: 100%;
  margin: 0;
  padding: 0;
  background: transparent;
  border: none;
}

body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
.devis-card:not(.devis-card--option):not(.devis-card--proposals)
.devis-stat-reste-block > .devis-stat--clay .devis-stat__label {
  color: var(--exp-primary);
  font-weight: 700;
  font-size: 0.9rem;
  margin-bottom: 0;
}

body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
.devis-card:not(.devis-card--option):not(.devis-card--proposals)
.devis-stat-reste-block > .devis-stat--clay .devis-stat__amount {
  color: var(--exp-primary);
  font-size: 1.2rem;
  font-weight: 700;
  text-align: right;
}

body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
.devis-card:not(.devis-card--option):not(.devis-card--proposals)
.devis-stat-reste-block > .devis-stat--complement {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  width: 100%;
  margin: 0;
  padding: 0;
  background: transparent;
  border: none;
}

body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
.devis-card:not(.devis-card--option):not(.devis-card--proposals)
.devis-stat-reste-block .devis-stat__mutuelle-title,
body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
.devis-card:not(.devis-card--option):not(.devis-card--proposals)
.devis-stat-reste-block .devis-stat__mutuelle-sub {
  display: inline;
  font-size: 0.72rem;
  font-weight: 500;
  line-height: 1.3;
  color: var(--ink-soft);
}

body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
.devis-card:not(.devis-card--option):not(.devis-card--proposals)
.devis-stat-reste-block .devis-stat__mutuelle-title {
  font-weight: 600;
  white-space: nowrap;
}

body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
.devis-card:not(.devis-card--option):not(.devis-card--proposals)
.devis-stat-reste-block .devis-stat__mutuelle-sub {
  text-align: right;
}

/* Devis simple : Honoraires / Sécu — montants à droite */
body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
.devis-card:not(.devis-card--option):not(.devis-card--proposals)
.devis-card-body > .devis-stat {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  width: 100%;
  flex: none;
}

body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
.devis-card:not(.devis-card--option):not(.devis-card--proposals)
.devis-card-body > .devis-stat .devis-stat__label {
  margin-bottom: 0;
}

body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
.devis-card:not(.devis-card--option):not(.devis-card--proposals)
.devis-card-body > .devis-stat .devis-stat__amount {
  text-align: right;
}

@media (min-width: 768px) {
  body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-card-pricing-row {
    flex-direction: column;
    align-items: stretch;
    flex-wrap: nowrap;
    gap: 0.85rem;
  }

  body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-card-body {
    display: flex;
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: stretch;
    gap: 0.35rem;
    width: 100%;
    flex: none;
  }

  body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-card-body > .devis-stat-reste-block {
    flex: none;
    width: 100%;
    margin-top: 0.4rem;
  }

  body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-card-actions {
    display: flex;
    justify-content: flex-end;
    align-self: stretch;
    width: 100%;
    margin-top: 0;
  }

  body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-card-actions .btn {
    width: auto;
    flex: 0 0 auto;
  }
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-proposals-sep {
  display: none;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  align-self: center;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-proposals-sep span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.1rem;
  height: 2.1rem;
  padding: 0 0.35rem;
  border-radius: 999px;
  background: var(--exp-primary);
  color: #ffffff;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: lowercase;
}

@media (min-width: 1024px) {
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--proposals-cols.devis-card--compact .devis-card-pricing-row {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.85rem;
    width: 100%;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--proposals-cols .devis-card-body {
    display: block;
    width: 100%;
    max-width: none;
    flex: none;
    min-width: 0;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--proposals-cols .devis-card-tariffs--proposals-cols {
    display: block;
    width: 100%;
    max-width: none;
    min-width: 0;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--proposals-cols .devis-card-proposals-cols {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: stretch;
    gap: 0.75rem 0.65rem;
    width: 100%;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--proposals-cols .devis-card-prop-col {
    width: auto;
    min-width: 0;
    max-width: none;
    flex: unset;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--proposals-cols .devis-card-proposals-sep {
    display: flex;
    width: auto;
    margin: 0;
    align-self: center;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--proposals-cols .devis-card-actions {
    align-self: flex-end;
    margin-top: 0.15rem;
  }

  /* Complément optionnel — 2 colonnes */
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols.devis-card--compact .devis-card-pricing-row {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.85rem;
    width: 100%;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-body {
    display: block;
    width: 100%;
    max-width: none;
    flex: none;
    min-width: 0;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-tariffs--option-cols {
    display: block;
    width: 100%;
    max-width: none;
    min-width: 0;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-option-cols {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: stretch;
    gap: 0.75rem 0.65rem;
    width: 100%;
  }

  /* Badge au niveau du titre, hors flux → pas de blanc, Honoraires alignés */
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-opt-col--with {
    position: relative;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-opt-col__delta {
    position: absolute;
    top: 0.95rem;
    right: 1rem;
    z-index: 1;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-opt-col--with .devis-card-opt-col__titles,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-opt-col:not(.devis-card-opt-col--with) .devis-card-opt-col__titles {
    /* Même largeur utile des titres → même hauteur de sous-titre (spacer inclus) */
    padding-right: 7.25rem;
  }

  /* Espace avant Honoraires : le badge ne chevauche plus les tarifs */
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-opt-col__rows {
    margin-top: 1.5rem;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-option-sep {
    display: flex;
    align-items: center;
    justify-content: center;
    align-self: center;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-actions {
    align-self: flex-end;
    margin-top: 0.15rem;
  }
}

/* Mes devis 3 bis — option : colonnes (base + desktop override) */
body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-option-cols {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  width: 100%;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-option-sep {
  display: none;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-option-sep span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.1rem;
  height: 2.1rem;
  padding: 0 0.35rem;
  border-radius: 999px;
  background: var(--exp-primary);
  color: #ffffff;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: lowercase;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  min-width: 0;
  padding: 0.95rem 1rem;
  background: #ffffff;
  border: 1px solid rgba(var(--exp-primary-rgb), 0.22);
  border-radius: var(--radius-sm);
  box-sizing: border-box;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.75rem;
  width: 100%;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__titles {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  min-width: 0;
  flex: 1 1 auto;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__title {
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--ink);
  line-height: 1.3;
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__sub {
  font-size: 0.8rem;
  color: var(--ink-soft);
  line-height: 1.35;
  font-weight: 500;
  text-transform: none;
  letter-spacing: 0;
}

/* Réserve la hauteur du sous-titre à gauche (alignement des tarifs desktop) */
body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__sub--spacer {
  visibility: hidden;
  pointer-events: none;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__delta {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.1rem;
  flex: 0 0 auto;
  max-width: 8.5rem;
  padding: 0.35rem 0.5rem;
  background: rgba(236, 116, 13, 0.12);
  border-radius: 6px;
  text-align: right;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__delta-value {
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--accent-hover, #c45f08);
  font-variant-numeric: tabular-nums;
  line-height: 1.2;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__delta-note {
  font-size: 0.62rem;
  font-weight: 500;
  color: var(--accent-hover, #c45f08);
  line-height: 1.3;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__rows {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  width: 100%;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__row {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  width: 100%;
  font-size: 0.82rem;
  color: var(--ink-soft);
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__row strong {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
  text-align: right;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__reste {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.35rem;
  width: 100%;
  padding: 0.65rem 0.75rem;
  background: rgba(var(--exp-primary-rgb), 0.09);
  border-radius: 8px;
  box-sizing: border-box;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__reste-main {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  width: 100%;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__reste-label {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--exp-primary);
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__reste-value {
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--exp-primary);
  font-variant-numeric: tabular-nums;
  text-align: right;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__reste .devis-card-opt-col__mutuelle {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  width: 100%;
  font-size: 0.72rem;
  color: var(--ink-soft);
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__reste .devis-card-opt-col__mutuelle-label {
  font-weight: 600;
  white-space: nowrap;
}

body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__reste .devis-card-opt-col__mutuelle-note {
  text-align: right;
  line-height: 1.3;
}

/* Synthèse desktop — Part patient/Mutuelle un peu plus gros (tous les cas) */
@media (min-width: 1024px) {
  body.page-devis-list-v3:not(.page-devis-detail)
  .devis-stat-reste-block > .devis-stat--clay .devis-stat__label.pp-reste-label,
  body.page-devis-list-v3:not(.page-devis-detail)
  .devis-stat__label.pp-reste-label,
  body.page-devis-list-v3-bis.pp-v3-reste-highlight:not(.page-devis-detail)
  .devis-card:not(.devis-card--option):not(.devis-card--proposals)
  .devis-stat-reste-block > .devis-stat--clay .devis-stat__label,
  body.page-devis-list-v3-bis:not(.page-devis-detail)
  .devis-card-opt-col__reste-label,
  body.page-devis-list-v3-bis:not(.page-devis-detail)
  .devis-card-prop-col__reste-label {
    font-size: 0.9rem;
    font-weight: 700;
  }
}

/* Mes devis 3 bis — synthèse option / 2 propositions (mobile + tablette) */
@media (max-width: 1023px) {
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--proposals-cols.devis-card--compact .devis-card-pricing-row,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols.devis-card--compact .devis-card-pricing-row {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.85rem;
    width: 100%;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--proposals-cols .devis-card-body,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-body {
    display: block;
    width: 100%;
    max-width: none;
    flex: none;
    min-width: 0;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--proposals-cols .devis-card-tariffs--proposals-cols,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-tariffs--option-cols {
    display: block;
    width: 100%;
    max-width: none;
    min-width: 0;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--proposals-cols .devis-card-proposals-cols,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-option-cols {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.75rem;
    width: 100%;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--proposals-cols .devis-card-proposals-sep,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-option-sep {
    display: flex;
    align-items: center;
    justify-content: center;
    align-self: center;
    width: 100%;
    padding: 0.1rem 0;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-option-sep span {
    background: var(--exp-primary);
    color: #ffffff;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--proposals-cols .devis-card-actions,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-actions,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card:not(.devis-card--option):not(.devis-card--proposals) .devis-card-actions {
    display: flex;
    justify-content: center;
    align-self: stretch;
    width: 100%;
    margin-top: 0.1rem;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--proposals-cols .devis-card-actions .btn,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card--option-cols .devis-card-actions .btn,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card:not(.devis-card--option):not(.devis-card--proposals) .devis-card-actions .btn {
    width: auto;
    max-width: 100%;
    flex: 0 0 auto;
    text-align: center;
    white-space: nowrap;
  }

  /* Option : badge à côté du titre (flux normal), titres qui laissent la place */
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__head {
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 0.55rem;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__delta {
    max-width: 7.25rem;
    flex-shrink: 0;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__title {
    font-size: 0.78rem;
  }

  /* Mobile : montants à droite (comme le devis simple) — option + propositions */
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__row,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__reste-main,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__reste .devis-card-opt-col__mutuelle,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__row,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__reste-main,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__reste .devis-card-prop-col__mutuelle {
    display: flex;
    flex-direction: row;
    align-items: baseline;
    justify-content: space-between;
    column-gap: 0.75rem;
    width: 100%;
    max-width: none;
    grid-template-columns: none;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__reste,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__reste {
    align-items: stretch;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__row strong,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__reste-value,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-opt-col__reste .devis-card-opt-col__mutuelle-note,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__row strong,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__reste-value,
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__reste .devis-card-prop-col__mutuelle-note {
    text-align: right;
  }

  /* 2 propositions : tarifs lisibles sur petit écran */
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__pricing {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.55rem 0.5rem;
    padding: 0.65rem 0.7rem;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__stat-label {
    font-size: 0.64rem;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__stat-value {
    font-size: 0.85rem;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__stat--reste .devis-card-prop-col__stat-value {
    font-size: 0.98rem;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__mutuelle-note {
    white-space: normal;
    text-align: left;
  }
}

@media (max-width: 480px) {
  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__pricing {
    grid-template-columns: 1fr;
    gap: 0.5rem;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__stat {
    flex-direction: row;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    width: 100%;
  }

  body.page-devis-list-v3-bis:not(.page-devis-detail) .devis-card-prop-col__stat--reste {
    padding: 0.45rem 0.55rem;
    margin: 0.1rem -0.15rem;
    background: rgba(var(--exp-primary-rgb), 0.09);
    border-radius: 6px;
  }
}

/* ============================================================
   RESPONSIVE � Devis option / 2 propositions (liste + d�tail)
   Apr�s les styles de base : priorit� cascade sur tablette et mobile.
   ============================================================ */

@media (max-width: 1023px) {
  .page-devis-detail .detail-main,
  .page-devis-detail .section-spacer,
  .page-devis-detail .docs-sign-prompt,
  .page-devis-detail .docs-sign-list {
    min-width: 0;
    max-width: 100%;
  }

  .page-devis-detail .detail-header-main {
    flex: 1 1 100%;
    width: 100%;
  }
  .page-devis-detail .detail-header-meta {
    width: 100%;
    justify-content: flex-start;
  }

  /* ---- Liste : cartouches tarifs ---- */
  .devis-card--option,
  .devis-card--proposals {
    overflow: hidden;
  }
  .devis-card--option .devis-card-pricing-row,
  .devis-card--proposals .devis-card-pricing-row {
    flex-direction: column;
    align-items: stretch;
  }
  .devis-card--option .devis-card-body,
  .devis-card--proposals .devis-card-body {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    flex-direction: column;
    gap: 0.5rem;
    margin-bottom: 0;
  }
  .devis-card-tariffs--option,
  .devis-card-tariffs--proposals {
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }
  .devis-card-option-table {
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    grid-template-columns: unset;
  }
  .devis-card-option-head-row,
  .devis-card-option-data-row,
  .devis-card-option-values {
    display: flex;
  }
  .devis-card-option-head-row {
    display: none;
  }
  .devis-card-option-data-row {
    flex-direction: column;
    gap: 0.35rem;
    width: 100%;
    min-width: 0;
    padding-bottom: 0.55rem;
    border-bottom: 1px dashed rgba(var(--primary-rgb), 0.14);
  }
  .devis-card-option-data-row:last-child {
    border-bottom: none;
    padding-bottom: 0;
  }
  .devis-card-option-row-label {
    font-size: 0.74rem;
    padding-right: 0;
    white-space: normal;
  }
  .devis-card-option-values {
    flex-direction: column;
    gap: 0.28rem;
    width: 100%;
    min-width: 0;
    overflow: visible;
  }
  .devis-card-option-cell {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: baseline;
    gap: 0.65rem;
    width: 100%;
    min-width: 0;
    text-align: right;
  }
  .devis-card-option-cell__label {
    display: block;
    flex: 1 1 auto;
    min-width: 0;
    text-align: left;
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--ink-soft);
    line-height: 1.25;
    white-space: normal;
  }
  .devis-card-option-cell .devis-stat__amount {
    flex-shrink: 0;
    font-size: 0.82rem;
    white-space: nowrap;
  }
  .devis-card-option-cell--complement {
    grid-column: unset;
    grid-row: unset;
    max-width: none;
    align-self: auto;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: baseline;
    gap: 0.65rem;
    width: 100%;
    min-width: 0;
    text-align: left;
  }
  .devis-card-option-cell--complement .devis-card-option-cell__label {
    display: block;
    flex: 1 1 auto;
    min-width: 0;
    text-align: left;
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--ink-soft);
    line-height: 1.25;
    white-space: normal;
  }
  .devis-card-option-complement-note {
    flex: 0 1 48%;
    max-width: none;
    margin-top: 0;
    font-size: 0.66rem;
    line-height: 1.35;
    text-align: right;
  }

  .devis-card:not(.devis-card--option):not(.devis-card--proposals) .devis-card-body {
    flex-direction: column;
    align-items: stretch;
    gap: 0.28rem;
    width: 100%;
    min-width: 0;
    margin-bottom: 0;
  }
  .devis-card:not(.devis-card--option):not(.devis-card--proposals) .devis-card-body > .devis-stat {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: baseline;
    gap: 0.65rem;
    width: 100%;
    min-width: 0;
  }
  .devis-card:not(.devis-card--option):not(.devis-card--proposals) .devis-card-body > .devis-stat .devis-stat__label {
    margin-bottom: 0;
    white-space: normal;
    flex: 1 1 auto;
    min-width: 0;
  }
  .devis-card:not(.devis-card--option):not(.devis-card--proposals) .devis-card-body > .devis-stat .devis-stat__amount,
  .devis-card:not(.devis-card--option):not(.devis-card--proposals) .devis-card-body > .devis-stat .devis-stat__note {
    flex: 0 1 48%;
    text-align: right;
  }
  .devis-card--compact.devis-card--option .devis-card-actions,
  .devis-card--compact.devis-card--proposals .devis-card-actions {
    align-self: stretch;
    margin-top: 0;
    width: 100%;
  }
  .devis-card--compact.devis-card--option .devis-card-actions .btn,
  .devis-card--compact.devis-card--proposals .devis-card-actions .btn {
    width: 100%;
    text-align: center;
    white-space: normal;
  }

  /* ---- D�tail : deux propositions ---- */
  .proposal-alternatives-section,
  .proposal-block,
  .proposal-block-body {
    min-width: 0;
    max-width: 100%;
  }
  .proposal-columns-row {
    flex-direction: column;
    gap: 0.75rem;
    min-width: 0;
  }
  .proposal-column {
    flex: 1 1 auto;
    width: 100%;
  }
  .proposal-sep {
    padding: 0.15rem 0;
    margin-top: 0;
    justify-self: center;
  }
  .proposal-header {
    gap: 0.4rem;
  }
  .proposal-title {
    flex: 1 1 calc(100% - 2.5rem);
    min-width: 0;
  }
  .proposal-status-badge {
    margin-left: calc(1.65rem + 0.5rem);
  }
  .proposal-pricing {
    flex-direction: column;
    flex-wrap: nowrap;
    gap: 0.35rem;
    overflow: visible;
    padding-bottom: 0.65rem;
  }
  .proposal-pricing-row {
    flex-direction: row;
    justify-content: space-between;
    align-items: baseline;
    width: 100%;
    min-width: 0;
    gap: 0.65rem;
  }
  .proposal-pricing-row > span {
    white-space: normal;
    flex: 1 1 auto;
    min-width: 0;
    text-align: left;
  }
  .proposal-pricing-row strong {
    flex-shrink: 0;
    text-align: right;
  }
  .proposal-choice-row {
    flex-direction: column;
    align-items: stretch;
  }
  .proposal-choice-row .btn-option {
    width: 100%;
    justify-content: center;
  }
  .proposal-etapes-section {
    margin: 0.75rem 0 0.85rem;
    padding-top: 0.75rem;
  }
  .proposal-etapes-title {
    font-size: 0.84rem;
  }
  .timeline--nested .timeline-step {
    padding-bottom: 0.65rem;
  }
  .timeline--nested .timeline-card {
    padding: 0.5rem 0.6rem;
  }

  /* ---- D�tail : compl�ment optionnel ---- */
  .doc-list-item--option {
    max-width: 100%;
    min-width: 0;
  }
  .doc-list-item--option .doc-option-first-row {
    display: grid;
    grid-template-columns: auto 1fr auto;
    grid-template-areas:
      "icon badge arrow"
      "title title title"
      "sub sub sub"
      "price price price";
    gap: 0.35rem 0.65rem;
    align-items: start;
    width: 100%;
  }
  .doc-list-item--option .doc-option-line,
  .doc-list-item--option .doc-info {
    display: contents;
  }
  .doc-list-item--option .doc-icon {
    grid-area: icon;
    align-self: start;
  }
  .doc-list-item--option .option-badge {
    grid-area: badge;
    justify-self: start;
    width: auto;
  }
  .doc-list-item--option .doc-info-title {
    grid-area: title;
    min-width: 0;
    align-self: start;
    line-height: 1.35;
    overflow-wrap: anywhere;
    word-break: break-word;
  }
  .doc-list-item--option .doc-info-sub {
    grid-area: sub;
    width: 100%;
    line-height: 1.45;
    overflow-wrap: anywhere;
    word-break: break-word;
  }
  .doc-list-item--option .doc-option-price {
    grid-area: price;
    justify-self: start;
    width: auto;
    text-align: left;
  }
  .doc-list-item--option .doc-list-item-arrow {
    grid-area: arrow;
    align-self: start;
  }
  .doc-list-item--option .doc-option-second-row {
    padding-left: 0;
    margin-top: 0.65rem;
  }
  .doc-list-item--option .option-choice {
    flex-direction: column;
    width: 100%;
  }
  .doc-list-item--option .btn-option {
    width: 100%;
    justify-content: center;
  }
  .montant-final-wrap {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.25rem;
    max-width: 100%;
  }
}

@media (max-width: 767px) {
  .proposal-status-badge {
    margin-left: 0;
    width: 100%;
  }
  .proposal-header {
    flex-direction: column;
    align-items: flex-start;
  }
  .proposal-title {
    flex: 1 1 auto;
    width: 100%;
  }
  .proposal-number {
    align-self: flex-start;
  }
}

/* ---- Visionneuse signature (plein �cran) ---- */

.sign-viewer {
  position: fixed;
  z-index: 200;
  left: var(--sidebar-w);
  right: 0;
  bottom: 0;
  top: var(--topbar-h);
  display: flex;
  flex-direction: column;
  background: #dfe5ec;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.25s ease, visibility 0.25s ease;
}
.sign-viewer.is-open {
  opacity: 1;
  visibility: visible;
}

.sign-viewer__header {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 0.75rem 1rem;
  padding: 0.85rem 1rem 0.85rem 1rem;
  background: var(--surface);
  border-bottom: 1px solid var(--line);
  flex-shrink: 0;
}
.sign-viewer__back {
  margin: 0;
  white-space: nowrap;
}
.sign-viewer__header-text {
  min-width: 0;
  text-align: center;
}
.sign-viewer__section {
  font-family: var(--sans);
  font-size: 1.05rem;
  font-weight: 600;
  letter-spacing: normal;
  text-transform: none;
  color: var(--ink);
  margin: 0 0 0.15rem;
}
.sign-viewer__title {
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--ink);
  margin: 0;
}
.sign-viewer__subtitle {
  font-size: 0.78rem;
  color: var(--ink-soft);
  margin: 0.15rem 0 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.sign-viewer__body {
  flex: 1;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) min(17.5rem, 30vw);
  gap: 0;
  position: relative;
}
.sign-viewer__main {
  overflow-y: auto;
  padding: 1.25rem 1.5rem 6rem;
  scroll-behavior: smooth;
}
.sign-viewer__sidebar {
  overflow-y: auto;
  background: var(--surface);
  border-left: 1px solid var(--line);
  padding: 1rem 0.85rem 6rem;
}

.sign-viewer-page {
  max-width: 52rem;
  margin: 0 auto 1.5rem;
}
.sign-viewer-page__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.5rem;
  padding: 0 0.15rem;
}
.sign-viewer-page__doc {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--ink-2);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sign-viewer-page__num {
  font-size: 0.72rem;
  color: var(--ink-soft);
  white-space: nowrap;
}
.sign-viewer-page__sheet {
  background: #fff;
  border: 1px solid #c5cdd6;
  border-radius: 4px;
  box-shadow: 0 4px 18px rgba(15, 23, 42, 0.1);
  min-height: min(72vh, 52rem);
  padding: 2rem 2.25rem;
  display: flex;
  flex-direction: column;
}
.sign-viewer-page__sheet-head {
  margin-bottom: 1.5rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--line-soft);
}
.sign-viewer-page__sheet-title {
  font-family: var(--serif);
  font-size: 1.15rem;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 0.35rem;
}
.sign-viewer-page__sheet-sub {
  font-size: 0.75rem;
  color: var(--ink-soft);
}
.sign-viewer-page__lines {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  flex: 1;
}
.sign-viewer-page__line {
  height: 0.55rem;
  border-radius: 999px;
  background: linear-gradient(90deg, #e8edf2 0%, #f1f5f9 100%);
}

.sign-viewer-doc-group + .sign-viewer-doc-group {
  margin-top: 1.15rem;
  padding-top: 1rem;
  border-top: 1px solid var(--line-soft);
}
.sign-viewer-doc-group__title {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--ink-soft);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 0.55rem;
  line-height: 1.35;
}
.sign-viewer-thumbs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.5rem;
}
.sign-viewer-thumb {
  border: 2px solid var(--line);
  border-radius: 6px;
  padding: 0;
  background: #f8fafc;
  cursor: pointer;
  transition: border-color var(--transition), box-shadow var(--transition);
  aspect-ratio: 3 / 4;
}
.sign-viewer-thumb:hover {
  border-color: rgba(var(--primary-rgb), 0.35);
}
.sign-viewer-thumb.is-active {
  border-color: var(--sage);
  box-shadow: 0 0 0 2px rgba(var(--primary-rgb), 0.15);
}
.sign-viewer-thumb__sheet {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  background: linear-gradient(180deg, #fff 0%, #f1f5f9 100%);
  border-radius: 4px;
}
.sign-viewer-thumb__num {
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--ink-soft);
}

.sign-viewer__footer {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  display: flex;
  justify-content: flex-end;
  padding: 0.85rem 1.25rem;
  background: linear-gradient(180deg, rgba(223, 229, 236, 0) 0%, rgba(223, 229, 236, 0.92) 35%, #dfe5ec 100%);
  pointer-events: none;
  z-index: 2;
}
.sign-viewer__sign-btn {
  pointer-events: auto;
  min-width: min(100%, 15rem);
}

@media (max-width: 1023px) {
  .sign-viewer {
    left: 0;
    top: var(--topbar-h);
    bottom: calc(3.5rem + env(safe-area-inset-bottom, 0px));
  }
}

@media (max-width: 900px) {
  .sign-viewer__body {
    grid-template-columns: 1fr;
    grid-template-rows: minmax(0, 1fr) auto;
  }
  .sign-viewer__sidebar {
    border-left: none;
    border-top: 1px solid var(--line);
    max-height: 11.5rem;
    padding-bottom: 1rem;
  }
  .sign-viewer__main {
    padding-bottom: 1.25rem;
  }
  .sign-viewer-doc-group {
    display: flex;
    flex-direction: column;
  }
  .sign-viewer-thumbs {
    grid-template-columns: repeat(auto-fill, minmax(4.5rem, 1fr));
    overflow-x: auto;
  }
  .sign-viewer-page__sheet {
    min-height: 58vh;
    padding: 1.25rem 1rem;
  }
}

@media (max-width: 600px) {
  .sign-viewer__header {
    padding: 0.65rem 0.75rem 0.65rem 0.5rem;
  }
  .sign-viewer__main {
    padding: 0.85rem 0.75rem 1rem;
  }
  .sign-viewer__footer {
    padding: 0.65rem 0.75rem;
    justify-content: stretch;
  }
  .sign-viewer__sign-btn {
    width: 100%;
    min-width: 0;
  }
}

/* ---- V�rification date de naissance (Mes devis 5) ---- */

body.devis-access-gate-active .app {
  filter: blur(5px);
  pointer-events: none;
  user-select: none;
}

body.devis-access-gate-active .devis-access-gate {
  pointer-events: auto;
}

.devis-access-gate {
  position: fixed;
  inset: 0;
  z-index: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.25s ease, visibility 0.25s ease;
}
.devis-access-gate.is-open {
  opacity: 1;
  visibility: visible;
}
.devis-access-gate__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, 0.52);
  backdrop-filter: blur(3px);
}
.devis-access-gate__panel {
  position: relative;
  width: min(100%, 34rem);
  max-height: calc(100vh - 2rem);
  overflow-y: auto;
  background: var(--surface);
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
  border: 1px solid rgba(var(--exp-primary-rgb, 30, 58, 95), 0.12);
  padding: 1.5rem 1.35rem 1.35rem;
}
.devis-access-gate__brand {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  margin-bottom: 1.1rem;
  color: var(--exp-primary, #1e3a5f);
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.01em;
}
.devis-access-gate__brand-mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  background: rgba(var(--exp-primary-rgb, 30, 58, 95), 0.1);
}
.devis-access-gate__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  margin: 0 auto 0.85rem;
  border-radius: 50%;
  background: rgba(var(--exp-primary-rgb, 30, 58, 95), 0.1);
  color: var(--exp-primary, #1e3a5f);
}
.devis-access-gate__icon--warn {
  background: rgba(220, 38, 38, 0.1);
  color: #b91c1c;
}
.devis-access-gate__title {
  font-family: var(--serif);
  font-size: 1.28rem;
  font-weight: 600;
  line-height: 1.3;
  text-align: center;
  color: var(--ink);
  margin-bottom: 0.65rem;
}
.devis-access-gate__lead {
  font-size: 0.88rem;
  line-height: 1.55;
  color: var(--ink-2);
  text-align: center;
  margin-bottom: 0;
}
.devis-access-gate__lead--follow {
  margin-top: 0.85rem;
}
.devis-access-gate__locked-intro {
  font-size: 0.9rem;
  line-height: 1.55;
  font-weight: 500;
  color: var(--ink);
  text-align: center;
  margin-bottom: 0.85rem;
}
.devis-access-gate__locked-msg {
  font-size: 0.9rem;
  line-height: 1.55;
  font-weight: 500;
  color: var(--ink);
  text-align: center;
  margin-bottom: 1rem;
}
.devis-access-gate__hint {
  font-size: 0.82rem;
  line-height: 1.5;
  color: var(--ink-soft);
  text-align: center;
  margin-bottom: 1rem;
}
.devis-access-gate__form {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  margin-top: 1rem;
}
.devis-access-gate__label {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--ink);
}
.devis-access-gate__input {
  width: 100%;
  padding: 0.7rem 0.85rem;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  font-family: var(--sans);
  font-size: 1rem;
  letter-spacing: 0.04em;
  text-align: center;
  transition: border-color var(--transition), box-shadow var(--transition);
}
.devis-access-gate__input:focus {
  outline: none;
  border-color: var(--exp-primary, #1e3a5f);
  box-shadow: 0 0 0 3px rgba(var(--exp-primary-rgb, 30, 58, 95), 0.15);
}
.devis-access-gate__error {
  font-size: 0.78rem;
  line-height: 1.45;
  color: #b91c1c;
  background: rgba(220, 38, 38, 0.08);
  border: 1px solid rgba(220, 38, 38, 0.2);
  border-radius: var(--radius-sm);
  padding: 0.55rem 0.65rem;
  margin: 0;
}
.devis-access-gate__error-line2 {
  display: block;
  margin-top: 0.45rem;
}
.devis-access-gate__submit {
  align-self: center;
  margin-top: 0.35rem;
  min-width: 10rem;
}
.devis-access-gate__privacy {
  margin-top: 1rem;
  font-size: 0.72rem;
  line-height: 1.45;
  color: var(--ink-soft);
  text-align: center;
}
.devis-access-gate__contact-card {
  margin-top: 0.5rem;
  padding: 0.85rem 1rem;
  border-radius: var(--radius-sm);
  background: rgba(var(--exp-primary-rgb, 30, 58, 95), 0.06);
  border: 1px solid rgba(var(--exp-primary-rgb, 30, 58, 95), 0.14);
}
.devis-access-gate__contact-name {
  font-size: 0.92rem;
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 0.15rem;
}
.devis-access-gate__contact-cabinet {
  font-size: 0.78rem;
  color: var(--ink-soft);
  margin-bottom: 0.65rem;
}
.devis-access-gate__contact-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}
.devis-access-gate__contact-list a {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  font-size: 0.82rem;
  font-weight: 500;
  color: var(--exp-primary, #1e3a5f);
  word-break: break-all;
}
.devis-access-gate__contact-list a:hover {
  text-decoration: underline;
}

@media (max-width: 600px) {
  .devis-access-gate {
    padding: 0.75rem;
    align-items: flex-end;
  }
  .devis-access-gate__panel {
    width: 100%;
    max-height: calc(100vh - 1.5rem);
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    padding: 1.25rem 1rem 1.5rem;
  }
  .devis-access-gate__title {
    font-size: 1.15rem;
  }
}

/* ============================================================
   Pages d'erreur (401 / 404 / 500) � design Mes devis 2
   Fichiers autonomes (erreur-*.html, erreurs.html) : hors shell,
   hors nav Mes devis. Reversible : supprimer ce bloc + les HTML.
   ============================================================ */

body.page-error {
  min-height: 100vh;
  margin: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  overflow-x: clip;
}

/* Palette alignee sur Mes devis 2 */
body.page-error--v2 {
  --exp-page-bg: #e9f0f9;
  --exp-primary: #1c458f;
  --exp-primary-rgb: 28, 69, 143;
  --exp-primary-deep: #163a75;
  --exp-accent: #EC740D;
  --exp-accent-rgb: 236, 116, 13;
  --primary-rgb: 28, 69, 143;
  --accent: #EC740D;
  --accent-hover: #c9620b;
  --accent-rgb: 236, 116, 13;
  --radius: 0;
  --radius-sm: 0;
  --radius-xs: 0;
  background: var(--exp-page-bg);
  color: var(--ink-2);
}

.error-page {
  width: 100%;
  max-width: 32rem;
}

.error-page__card {
  background: #fff;
  border: 1px solid var(--exp-primary);
  border-radius: var(--radius);
  padding: 2rem 1.75rem;
  text-align: center;
  box-shadow: none;
}

.error-page__card--hub {
  text-align: left;
}

.error-page__code {
  font-family: var(--sans);
  font-size: 0.85rem;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0.04em;
  color: var(--exp-primary);
  margin: 0 0 0.85rem;
}

.error-page__brand {
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--exp-primary);
  margin: 0 0 0.85rem;
}

.error-page__title {
  font-family: var(--serif);
  font-size: clamp(1.2rem, 3.5vw, 1.45rem);
  font-weight: 600;
  color: var(--ink);
  line-height: 1.35;
  margin: 0 0 0.75rem;
}

.error-page__message {
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--ink-soft);
  margin: 0;
}

.error-page__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  justify-content: center;
}

.error-page__card--hub .error-page__actions {
  justify-content: flex-start;
}

.error-hub-list {
  list-style: none;
  margin: 0 0 1.5rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.error-hub-list .btn {
  width: 100%;
  justify-content: center;
}

@media (max-width: 480px) {
  body.page-error {
    padding: 1rem;
    align-items: flex-start;
    padding-top: 2.5rem;
  }
  .error-page__card {
    padding: 1.5rem 1.15rem;
  }
  .error-page__actions {
    flex-direction: column;
  }
  .error-page__actions .btn {
    width: 100%;
  }
}
