/* ==========================================================================
   RapportSI — direction « Plan de repérage »
   Encre de plan, filets, repères monospaces, rouge extincteur unique signal.
   ========================================================================== */

:root {
  --plan: #eceee9;
  --plan-raised: #f7f8f4;
  --plan-sunken: #e2e5de;
  --sheet: #fdfdfa;
  --ink: #152730;
  --ink-deep: #0e1c24;
  --ink-soft: #31434e;
  --steel: #61747e;
  --line: rgba(21, 39, 48, 0.16);
  --line-strong: rgba(21, 39, 48, 0.34);
  --signal: #c82e1e;
  --signal-deep: #972115;
  --signal-soft: #f8e4e0;
  --signal-ink-on-dark: #f3a89f;
  --valid: #33683f;
  --valid-soft: #e2ebdf;
  --attention: #8f6107;
  --attention-soft: #f4e8c9;
  --focus: #0b5cad;
  --font-ui: "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
  --font-mono: ui-monospace, "Cascadia Mono", "SF Mono", Consolas, "Liberation Mono", monospace;
  --r: 3px;
  --r-sm: 2px;
  --chamfer: polygon(0 0, 100% 0, 100% calc(100% - 8px), calc(100% - 8px) 100%, 0 100%);
  --press: 90ms ease-out;
  --state: 140ms ease-out;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  color-scheme: light;
  font-family: var(--font-ui);
}

* { box-sizing: border-box; }
html {
  background: var(--plan);
  color: var(--ink);
  -webkit-font-smoothing: antialiased;
}
body {
  margin: 0;
  min-width: 320px;
  min-height: 100vh;
  overflow-x: hidden;
  background:
    repeating-linear-gradient(0deg, rgba(21, 39, 48, 0.04) 0 1px, transparent 1px 28px),
    repeating-linear-gradient(90deg, rgba(21, 39, 48, 0.04) 0 1px, transparent 1px 28px),
    var(--plan);
}
button, input, select, textarea { font: inherit; }
button { min-height: 40px; cursor: pointer; border-radius: var(--r-sm); }
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
a:focus-visible,
summary:focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 2px;
}
button:disabled,
input:disabled,
textarea:disabled,
select:disabled { cursor: not-allowed; opacity: .62; }

.mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }

.skip-link {
  position: fixed;
  inset-block-start: -64px;
  inset-inline-start: 12px;
  z-index: 100;
  background: var(--ink-deep);
  color: #eef1f0;
  padding: 10px 14px;
  border: 1px solid rgba(255, 255, 255, .3);
  border-radius: var(--r-sm);
  font-weight: 700;
  font-size: 13px;
}
.skip-link:focus { inset-block-start: 12px; }

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

.rapportsi-splash {
  position: fixed;
  inset: 0;
  z-index: 90;
  display: grid;
  place-items: center;
  padding: 24px;
  background: #0e1c24;
  color: #eef1f0;
  transition: opacity 220ms ease-out, visibility 220ms ease-out;
  animation: splash-fail-safe 1200ms ease-out forwards;
}

.splash-card {
  width: min(40vw, 200px);
  display: grid;
  justify-items: center;
  gap: 12px;
  padding: 0;
  border: 0;
  background: none;
  box-shadow: none;
}

.splash-plaque {
  width: 44px;
  height: 34px;
  display: grid;
  place-items: center;
  background: var(--signal);
  color: #fff;
  clip-path: var(--chamfer);
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .08em;
}

.splash-wordmark {
  margin: 4px 0 16px;
  color: #f4f6f5;
  font-size: 24px;
  line-height: 1;
  font-weight: 800;
  letter-spacing: -.03em;
}

.splash-progress {
  width: 100%;
  height: 3px;
  overflow: hidden;
  background: rgba(238, 241, 240, .12);
  border-radius: 2px;
}

.splash-progress::after {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  background: var(--signal);
  transform: scaleX(0);
  transform-origin: left center;
  animation: splash-progress-fill 850ms cubic-bezier(.4, 0, .2, 1) forwards;
}

.rapportsi-splash.is-dismissed {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

@keyframes splash-progress-fill {
  to { transform: scaleX(1); }
}

@keyframes splash-fail-safe {
  0%, 80% { opacity: 1; visibility: visible; pointer-events: auto; }
  100% { opacity: 0; visibility: hidden; pointer-events: none; }
}

.app-shell { min-height: 100vh; display: flex; flex-direction: column; }

/* --------------------------------------------------------------------------
   Barre supérieure — console sombre à liseré signal
   -------------------------------------------------------------------------- */
.topbar {
  position: sticky;
  top: 0;
  z-index: 30;
  display: grid;
  grid-template-columns: minmax(0, clamp(220px, 24vw, 340px)) minmax(0, clamp(420px, 46vw, 720px)) minmax(0, clamp(200px, 22vw, 320px));
  justify-content: space-between;
  gap: var(--space-4);
  align-items: center;
  padding: 8px clamp(14px, 2.5vw, 28px);
  background: var(--ink-deep);
  color: #eef1f0;
  border-bottom: 3px solid var(--signal);
}
.brand-block { display: flex; align-items: center; gap: 10px; min-width: 0; }
.brand-plaque {
  flex: 0 0 auto;
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  background: var(--signal);
  color: #fff;
  clip-path: var(--chamfer);
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .06em;
}
.brand-text { min-width: 0; }
.brand-eyebrow {
  margin: 0 0 1px;
  color: #8fa3ad;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  white-space: nowrap;
}
h1 {
  margin: 0;
  color: #f4f6f5;
  font-size: clamp(15px, 1.35vw, 19px);
  line-height: 1.1;
  letter-spacing: -.01em;
  font-weight: 700;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.track {
  min-width: 0;
  display: flex;
  align-items: stretch;
  border: 1px solid rgba(255, 255, 255, .16);
  border-radius: var(--r-sm);
  overflow-x: auto;
  scrollbar-width: thin;
  background: rgba(255, 255, 255, .03);
  justify-self: center;
  width: 100%;
}
.step {
  flex: 1 1 0;
  min-width: 0;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border: 0;
  border-right: 1px solid rgba(255, 255, 255, .10);
  border-radius: 0;
  background: transparent;
  color: #a9b8bf;
  padding: 6px 10px;
  font-size: 12.5px;
  font-weight: 650;
  white-space: nowrap;
  transition: background-color var(--state), color var(--state);
}
.step:last-child { border-right: 0; }
.step:hover { background: rgba(255, 255, 255, .07); color: #eef1f0; }
.step-index {
  font-family: var(--font-mono);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .04em;
  border: 1px solid rgba(255, 255, 255, .26);
  padding: 2px 5px;
  border-radius: var(--r-sm);
  color: #c3ced3;
}
.step.is-done .step-index { background: rgba(255, 255, 255, .16); color: #dfe6e8; border-color: transparent; }
.step.is-active { background: rgba(255, 255, 255, .06); color: #fff; }
.step.is-active .step-index { background: var(--signal); border-color: var(--signal); color: #fff; }

.topbar-ops { display: flex; align-items: center; justify-content: flex-end; gap: var(--space-2); min-width: 0; }
.local-status {
  margin: 0;
  flex: 1 1 0;
  min-width: 0;
  max-width: none;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-family: var(--font-mono);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .02em;
  color: #b9d3bd;
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: var(--r-sm);
  padding: 6px 9px;
  transition: color var(--state), border-color var(--state), background-color var(--state);
}
.local-status[data-state="draft"] { color: #eed49b; }
.local-status[data-state="locked"] { color: #b9d3bd; border-color: rgba(120, 190, 135, .4); }
.local-status.is-updating { background: rgba(255, 255, 255, .08); }
.local-status.is-error { color: #f3b6ad; border-color: rgba(200, 46, 30, .55); }
#reset-demo { flex: 0 0 auto; min-width: 40px; white-space: nowrap; }
.topbar .secondary {
  background: transparent;
  color: #dfe6e8;
  border-color: rgba(255, 255, 255, .24);
  box-shadow: none;
}
.topbar .secondary:hover { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .4); }
.topbar .ghost { color: #c3ced3; }
.topbar .ghost:hover { background: rgba(255, 255, 255, .08); color: #fff; }
.topbar .destructive { color: #f0a199; }
/* L'impression est pilotée depuis la toolbar du rapport : éviter un doublon qui réduit la progression. */
#print-current { display: none; }

/* --------------------------------------------------------------------------
   Structure principale
   -------------------------------------------------------------------------- */
.main {
  width: min(100%, 1480px);
  max-width: 100%;
  min-width: 0;
  margin: 0 auto;
  padding: var(--space-4) clamp(14px, 2.5vw, 28px) 56px;
}
.view { display: grid; gap: var(--space-4); min-width: 0; }
.view > *, .panel, .report-stage { min-width: 0; max-width: 100%; }
.reference-note {
  display: inline-flex;
  gap: var(--space-2);
  align-items: center;
  width: fit-content;
  margin-block-end: var(--space-3);
  padding: 6px 10px;
  border: 1px dashed var(--line-strong);
  border-radius: var(--r-sm);
  color: var(--steel);
  background: var(--plan-raised);
  font-family: var(--font-mono);
  font-size: 10.5px;
}
.reference-note strong { color: var(--ink-soft); }

h2 { margin: 0; font-size: 15px; line-height: 1.2; letter-spacing: -.01em; color: var(--ink); font-weight: 700; }
h3 { margin: 0; font-size: 13px; line-height: 1.25; color: var(--ink); font-weight: 700; }
p { margin: 0; color: var(--steel); line-height: 1.45; font-size: 13px; }
small { color: var(--steel); }
strong { color: var(--ink); }

.eyebrow {
  margin: 0 0 3px;
  display: flex;
  align-items: center;
  gap: 7px;
  color: var(--signal-deep);
  font-size: 10.5px;
  line-height: 1.1;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .14em;
}
.eyebrow::before {
  content: "";
  flex: 0 0 auto;
  width: 7px;
  height: 7px;
  background: var(--signal);
}

/* --------------------------------------------------------------------------
   Cartouche — signature du système
   -------------------------------------------------------------------------- */
.cartouche {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr) repeat(auto-fit, minmax(160px, auto));
  align-items: stretch;
  border: 1.5px solid var(--ink);
  border-radius: var(--r-sm);
  background: var(--plan-raised);
  overflow: hidden;
}
.cartouche-index {
  display: grid;
  place-content: center;
  gap: 2px;
  text-align: center;
  background: var(--ink);
  color: #fff;
  border-right: 1.5px solid var(--ink);
  box-shadow: inset 0 4px 0 var(--signal);
  padding: 10px 8px;
}
.cartouche-rep {
  font-family: var(--font-mono);
  font-size: 24px;
  font-weight: 700;
  letter-spacing: .04em;
  line-height: 1;
}
.cartouche-rep-label {
  font-size: 8.5px;
  font-weight: 800;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: #93a6ae;
}
.cartouche-main { padding: 12px 16px; min-width: 0; }
.cartouche-main h2 { font-size: 18px; margin-bottom: 3px; }
.cartouche-cell {
  display: grid;
  align-content: center;
  gap: 3px;
  padding: 10px 14px;
  border-left: 1px solid var(--line);
  min-width: 0;
}
.cartouche-cell > span {
  color: var(--steel);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.cartouche-cell > strong {
  font-family: var(--font-mono);
  font-size: 12.5px;
  font-weight: 700;
  line-height: 1.25;
  overflow-wrap: anywhere;
}

/* --------------------------------------------------------------------------
   Boutons
   -------------------------------------------------------------------------- */
.primary, .secondary, .ghost, .quiet, .danger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border: 1px solid transparent;
  padding: 9px 14px;
  min-height: 42px;
  font-weight: 700;
  font-size: 13px;
  white-space: nowrap;
  transition: transform var(--press), background-color var(--state), border-color var(--state), color var(--state), box-shadow var(--state);
}
.primary:active, .secondary:active, .ghost:active, .quiet:active, .danger:active,
.chip:active, .family-tab:active, .equipment-row:active, .client-row:active, .step:active { transform: translateY(1px); }
.primary:disabled:active, .secondary:disabled:active, .ghost:disabled:active, .quiet:disabled:active, .danger:disabled:active,
.chip:disabled:active, .family-tab:disabled:active, .equipment-row:disabled:active, .client-row:disabled:active, .step:disabled:active { transform: none; }
.primary {
  background: var(--signal);
  color: #fff;
  clip-path: var(--chamfer);
  border-radius: 0;
}
.primary:hover { background: var(--signal-deep); }
.primary:disabled { background: var(--steel); }
.secondary {
  background: var(--plan-raised);
  color: var(--ink);
  border-color: var(--line-strong);
}
.secondary:hover { border-color: var(--ink); background: var(--sheet); }
.ghost { background: transparent; color: var(--steel); border-color: transparent; }
.ghost:hover { background: var(--plan-sunken); color: var(--ink); }
.destructive { color: var(--signal-deep); }
.danger { background: var(--signal-soft); color: var(--signal-deep); border-color: rgba(200, 46, 30, .35); }
.danger:hover { border-color: var(--signal-deep); }
.quiet {
  min-height: 36px;
  border: 0;
  background: transparent;
  color: var(--ink);
  padding: 5px 8px;
  font-weight: 700;
  font-size: 12.5px;
}
.quiet:hover { background: var(--plan-sunken); }
.slim { min-height: 40px; padding: 7px 11px; font-size: 12px; }
.icon { width: 15px; height: 15px; flex: 0 0 auto; }

/* --------------------------------------------------------------------------
   Panneaux, champs, métadonnées
   -------------------------------------------------------------------------- */
.panel {
  background: var(--plan-raised);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 14px 16px;
}
.panel.subtle { background: var(--plan); }
.panel.tight { padding: 10px 12px; }
.panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  flex-wrap: wrap;
  min-width: 0;
  padding-bottom: 9px;
  margin-bottom: 12px;
  border-bottom: 1px solid var(--line);
}
.panel-head > * { min-width: 0; }
.panel-head p { font-size: 12px; }
.toolbar, .row-actions, .signature-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  flex-wrap: wrap;
  min-width: 0;
}
.add-equipment-actions { margin-top: var(--space-3); }
.stack { display: grid; gap: var(--space-3); }
.cluster { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; }
.grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--space-3); }
.col-3 { grid-column: span 3; }
.col-4 { grid-column: span 4; }
.col-5 { grid-column: span 5; }
.col-6 { grid-column: span 6; }
.col-7 { grid-column: span 7; }
.col-8 { grid-column: span 8; }
.col-12 { grid-column: span 12; }

.field { display: grid; gap: 5px; }
label, .label {
  color: var(--ink-soft);
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}
input, select, textarea {
  width: 100%;
  min-height: 40px;
  border: 1px solid var(--line-strong);
  border-radius: var(--r-sm);
  padding: 8px 10px;
  background: #fff;
  color: var(--ink);
  font-size: 13.5px;
}
input:hover, select:hover, textarea:hover { border-color: var(--ink-soft); }
input:focus, select:focus, textarea:focus { border-color: var(--ink); }
textarea { min-height: 104px; resize: vertical; line-height: 1.42; }
input[type="checkbox"] { width: auto; min-height: 0; accent-color: var(--signal); }
::placeholder { color: #93a0a6; }

.meta-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 1px;
  margin: 0;
  background: var(--line);
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  overflow: hidden;
}
.meta-list div {
  min-width: 0;
  background: var(--plan-raised);
  padding: 8px 11px;
}
.meta-list dt, .micro-label {
  color: var(--steel);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.meta-list dd {
  display: block;
  margin: 2px 0 0;
  color: var(--ink);
  font-weight: 700;
  font-size: 13px;
  line-height: 1.25;
  overflow-wrap: anywhere;
}
.meta-list dd.mono { font-family: var(--font-mono); font-size: 12px; }

.badge {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 3px 7px;
  border: 1px solid var(--line-strong);
  border-radius: var(--r-sm);
  background: var(--plan-raised);
  color: var(--ink-soft);
  font-family: var(--font-mono);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .03em;
  line-height: 1;
  white-space: nowrap;
}
.badge.warn { background: var(--attention-soft); color: var(--attention); border-color: rgba(143, 97, 7, .35); }
.badge.ok { background: var(--valid-soft); color: var(--valid); border-color: rgba(51, 104, 63, .35); }
.badge.locked { background: var(--plan-sunken); color: var(--ink-soft); border-color: var(--line-strong); }
.badge.signal { background: var(--signal-soft); color: var(--signal-deep); border-color: rgba(200, 46, 30, .35); }

.lock-banner, .warning-banner {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 9px 12px;
  border: 1px solid;
  border-left: 4px solid;
  border-radius: var(--r-sm);
  font-size: 12.5px;
  font-weight: 700;
}
.lock-banner { color: var(--valid); background: var(--valid-soft); border-color: rgba(51, 104, 63, .4); }
.warning-banner { color: var(--attention); background: var(--attention-soft); border-color: rgba(143, 97, 7, .4); }
.readonly-banner {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 9px 12px;
  border: 1px solid rgba(200, 46, 30, .4);
  border-left: 4px solid var(--signal-deep, #c82e1e);
  border-radius: var(--r-sm);
  color: var(--signal-deep, #c82e1e);
  background: var(--signal-soft, rgba(200, 46, 30, .08));
  font-size: 12.5px;
  font-weight: 700;
}
.empty-state {
  padding: var(--space-4);
  color: var(--steel);
  font-size: 12.5px;
  background: var(--plan);
  border: 1px dashed var(--line-strong);
  border-radius: var(--r-sm);
}

/* --------------------------------------------------------------------------
   Accueil — registre clients
   -------------------------------------------------------------------------- */
.search-dock {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) minmax(150px, 200px) minmax(140px, 180px) auto;
  gap: var(--space-3);
  align-items: end;
  margin-bottom: 12px;
}
.client-table { border: 1px solid var(--line); border-radius: var(--r-sm); overflow: hidden; background: var(--plan-raised); }
.list-head {
  display: grid;
  grid-template-columns: 1.25fr 1.35fr .5fr .5fr .8fr auto;
  gap: 14px;
  padding: 7px 12px;
  color: var(--steel);
  background: var(--plan-sunken);
  border-bottom: 1.5px solid var(--ink);
  font-size: 9px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .12em;
}
.client-list { display: grid; }
.client-row {
  width: 100%;
  min-height: 56px;
  display: grid;
  grid-template-columns: 1.25fr 1.35fr .5fr .5fr .8fr auto;
  gap: 14px;
  align-items: center;
  text-align: start;
  border: 0;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  padding: 9px 12px;
  transition: background-color var(--state), box-shadow var(--state), transform var(--press);
}
.client-row:last-child { border-bottom: 0; }
.client-row:hover { background: var(--sheet); box-shadow: inset 3px 0 0 var(--signal); }
.client-row:focus-visible { outline-offset: -2px; }
.client-row .client-name { display: block; font-weight: 700; font-size: 13.5px; }
.client-row .client-ref {
  display: block;
  margin-top: 2px;
  font-family: var(--font-mono);
  font-size: 10.5px;
  color: var(--steel);
}
.client-row .client-site { color: var(--steel); font-size: 12.5px; line-height: 1.3; }
.client-row .cell { min-width: 0; overflow-wrap: anywhere; }
.client-row .cell strong { font-family: var(--font-mono); font-size: 12.5px; }
.client-row .action-cell { justify-self: end; }
.demo-stamp { font-family: var(--font-mono); font-size: 10.5px; color: var(--steel); }

/* --------------------------------------------------------------------------
   Fiche client
   -------------------------------------------------------------------------- */
.client-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(280px, .75fr);
  gap: var(--space-4);
  align-items: stretch;
}
.identity-card { display: grid; gap: var(--space-3); align-content: start; }
.identity-title { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-3); }
.identity-title h2 { font-size: 20px; }
.site-address { color: var(--ink); font-weight: 650; font-size: 13.5px; }
.next-action {
  display: grid;
  gap: var(--space-3);
  align-content: start;
  background: var(--ink);
  border: 1px solid var(--ink);
  border-radius: var(--r);
  box-shadow: inset 0 4px 0 var(--signal);
  padding: 16px;
}
.next-action h2 { color: #fff; }
.next-action p { color: #a9b8bf; font-size: 12.5px; }
.next-action .eyebrow { color: var(--signal-ink-on-dark); }
.next-action .secondary {
  background: transparent;
  color: #dfe6e8;
  border-color: rgba(255, 255, 255, .28);
}
.next-action .secondary:hover { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .45); }
.history-list { display: grid; }
.history-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  padding: 9px 4px;
  border-bottom: 1px solid var(--line);
}
.history-item:last-child { border-bottom: 0; }
.history-item strong { font-family: var(--font-mono); font-size: 12.5px; }
.history-item small { font-family: var(--font-mono); font-size: 10.5px; }

.client-create { display: grid; gap: var(--space-4); }
.local-ref-note, .form-status {
  display: flex;
  gap: var(--space-2);
  align-items: flex-start;
  padding: 10px 12px;
  border: 1px solid var(--line-strong);
  border-left: 4px solid var(--signal);
  border-radius: var(--r-sm);
  background: var(--sheet);
  color: var(--ink-soft);
  font-size: 12.5px;
  line-height: 1.4;
}
.local-ref-note { flex-wrap: wrap; }
.local-ref-note strong { flex: 0 0 auto; }
.form-status { border-left-color: var(--valid); background: var(--valid-soft); color: var(--valid); font-weight: 700; }
.client-create-actions { padding-top: var(--space-2); border-top: 1px solid var(--line); }
.field.has-error input,
.field.has-error select,
.field.has-error textarea { border-color: var(--signal-deep); box-shadow: inset 3px 0 0 var(--signal); }
.field-error { color: var(--signal-deep); font-family: var(--font-mono); font-weight: 700; letter-spacing: 0; text-transform: none; }
.field small { color: var(--steel); font-size: 10.5px; font-weight: 650; letter-spacing: 0; text-transform: none; }

.table-wrap {
  width: 100%;
  overflow-x: auto;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  background: #fff;
}
table { width: 100%; border-collapse: collapse; min-width: 720px; }
th, td { text-align: start; padding: 8px 10px; vertical-align: top; border-bottom: 1px solid var(--line); }
th {
  color: var(--ink-soft);
  background: var(--plan-sunken);
  border-bottom: 1.5px solid var(--ink);
  font-size: 9px;
  text-transform: uppercase;
  letter-spacing: .1em;
  font-weight: 800;
}
td { font-size: 12.5px; line-height: 1.35; }
td:first-child { font-family: var(--font-mono); font-size: 11.5px; font-weight: 700; white-space: nowrap; }
tr:last-child td { border-bottom: 0; }
tbody tr:hover td { background: var(--plan-raised); }

/* --------------------------------------------------------------------------
   Visite — rail familles + maître/détail
   -------------------------------------------------------------------------- */
.family-tabs {
  min-width: 0;
  max-width: 100%;
  display: flex;
  overflow-x: auto;
  border: 1px solid var(--line-strong);
  border-radius: var(--r-sm);
  background: var(--plan-sunken);
  scrollbar-width: thin;
}
.family-tab {
  flex: 0 0 auto;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: 0;
  border-right: 1px solid var(--line);
  border-radius: 0;
  background: transparent;
  color: var(--ink-soft);
  padding: 8px 12px;
  font-size: 12.5px;
  font-weight: 700;
  white-space: nowrap;
  transition: background-color var(--state), color var(--state), transform var(--press);
}
.family-tab:last-child { border-right: 0; }
.family-tab .index { font-family: var(--font-mono); font-size: 10px; color: var(--steel); }
.family-tab .count {
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 700;
  border: 1px solid var(--line-strong);
  border-radius: var(--r-sm);
  padding: 1px 5px;
  background: var(--plan-raised);
}
.family-tab:hover { background: var(--plan-raised); color: var(--ink); }
.family-tab.is-active { background: var(--ink); color: #fff; }
.family-tab.is-active .index { color: var(--signal-ink-on-dark); }
.family-tab.is-active .count { background: rgba(255, 255, 255, .12); border-color: rgba(255, 255, 255, .3); color: #fff; }

.visit-workbench {
  display: grid;
  grid-template-columns: minmax(300px, 360px) minmax(0, 1fr);
  gap: var(--space-4);
  align-items: start;
}
.master-panel, .detail-panel { min-width: 0; }
.master-panel { position: sticky; top: 84px; }
.equipment-filter { margin-bottom: 8px; min-height: 38px; font-size: 12.5px; }
.equipment-list {
  display: grid;
  max-height: clamp(240px, calc(100vh - 380px), 620px);
  overflow-y: auto;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  background: var(--plan-raised);
  scrollbar-width: thin;
}
.equipment-row {
  width: 100%;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 9px;
  align-items: start;
  border: 0;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  padding: 8px 9px;
  text-align: start;
  min-height: 52px;
  transition: background-color var(--state), box-shadow var(--state), transform var(--press);
}
.equipment-row:last-child { border-bottom: 0; }
.equipment-row:hover { background: var(--sheet); }
.equipment-row.is-active { background: var(--sheet); box-shadow: inset 3px 0 0 var(--signal); }
.equipment-row .serial {
  min-width: 46px;
  padding: 3px 6px;
  border: 1px solid var(--line-strong);
  border-radius: var(--r-sm);
  background: var(--plan-raised);
  font-family: var(--font-mono);
  font-size: 10.5px;
  font-weight: 700;
  text-align: center;
}
.equipment-row.is-active .serial { background: var(--ink); border-color: var(--ink); color: #fff; }
.equipment-row .mainline { display: grid; gap: 1px; min-width: 0; }
.equipment-row .type { font-size: 12.5px; font-weight: 700; overflow-wrap: anywhere; }
.equipment-row .location { color: var(--steel); font-size: 11.5px; overflow-wrap: anywhere; }
.equipment-row .state-mark {
  width: 11px;
  height: 11px;
  margin-top: 3px;
  border: 2px solid var(--steel);
  border-radius: var(--r-sm);
  background: transparent;
}
.equipment-row.is-complete .state-mark { background: var(--valid); border-color: var(--valid); }
.equipment-empty {
  padding: var(--space-4);
  color: var(--steel);
  font-size: 12.5px;
  background: var(--plan);
  border: 1px dashed var(--line-strong);
  border-radius: var(--r-sm);
}

.detail-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--space-3);
  align-items: start;
  padding-bottom: 12px;
  margin-bottom: 12px;
  border-bottom: 1.5px solid var(--ink);
}
.equipment-id-lockup { display: flex; gap: 12px; align-items: flex-start; min-width: 0; }
.control-id {
  flex: 0 0 auto;
  min-width: 60px;
  display: grid;
  place-items: center;
  padding: 9px 8px;
  background: var(--ink);
  color: #fff;
  clip-path: var(--chamfer);
  box-shadow: inset 0 -3px 0 var(--signal);
  font-family: var(--font-mono);
  font-size: 13px;
  font-weight: 700;
}
.detail-title { min-width: 0; }
.detail-title h2 { font-size: 19px; margin-bottom: 3px; }
.detail-title p { font-size: 12.5px; }
.detail-meta { margin-bottom: 0; }
.actions-zone { display: grid; gap: var(--space-3); margin-top: var(--space-4); }
.chips { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.chip {
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--line-strong);
  border-radius: var(--r-sm);
  background: var(--plan-raised);
  color: var(--ink-soft);
  padding: 7px 11px;
  font-size: 12.5px;
  font-weight: 650;
  transition: background-color var(--state), border-color var(--state), color var(--state), box-shadow var(--state), transform var(--press);
}
.chip:hover { border-color: var(--ink); color: var(--ink); }
.chip[aria-pressed="true"] {
  background: var(--ink);
  border-color: var(--ink);
  color: #fff;
  box-shadow: inset 0 -3px 0 var(--signal);
}
.chip[aria-pressed="true"]::before {
  content: "";
  width: 7px;
  height: 7px;
  margin-right: 8px;
  background: var(--signal);
}
.save-line {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--valid);
  font-family: var(--font-mono);
  font-size: 10.5px;
  font-weight: 700;
}
.save-line::before { content: ""; width: 8px; height: 8px; background: var(--valid); border-radius: var(--r-sm); }
.visit-flow-nav {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--space-3);
  align-items: center;
  margin-top: var(--space-4);
  padding: 12px;
  border: 1.5px solid var(--ink);
  border-radius: var(--r-sm);
  background:
    repeating-linear-gradient(90deg, rgba(21, 39, 48, .05) 0 1px, transparent 1px 18px),
    var(--plan-raised);
  box-shadow: inset 0 3px 0 var(--signal);
}
.visit-flow-copy { display: grid; gap: 3px; min-width: 0; }
.visit-flow-copy strong { font-family: var(--font-mono); font-size: 12.5px; overflow-wrap: anywhere; }
.visit-flow-copy span { color: var(--steel); font-size: 12px; }
.visit-flow-buttons { display: flex; gap: var(--space-2); flex-wrap: wrap; justify-content: flex-end; }
.visit-flow-step { min-height: 44px; max-width: 260px; font-size: 12.5px; white-space: nowrap; text-align: center; }
.visit-flow-exit {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--space-3);
  align-items: center;
  margin-top: var(--space-3);
  padding: 12px;
  border: 1px dashed var(--line-strong);
  border-radius: var(--r-sm);
  background: var(--plan);
}
.visit-flow-exit span { color: var(--steel); font-size: 12px; }
.visit-flow-primary { min-height: 48px; padding-inline: 18px; }
.add-equipment summary {
  min-height: 42px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  color: var(--ink);
  font-weight: 700;
  font-size: 13px;
  cursor: pointer;
  list-style-position: inside;
}
.add-equipment[open] summary { margin-bottom: var(--space-3); }

/* --------------------------------------------------------------------------
   Équipements restants — sous-section compacte entre meta-list et toolbar
   -------------------------------------------------------------------------- */
.remaining-block {
  margin: var(--space-2) 0 var(--space-3);
  padding: var(--space-1);
  border: 1px solid var(--line-strong);
  border-radius: var(--r-sm);
  background:
    repeating-linear-gradient(0deg, rgba(21, 39, 48, 0.05) 0 1px, transparent 1px 14px),
    repeating-linear-gradient(90deg, rgba(21, 39, 48, 0.05) 0 1px, transparent 1px 14px),
    var(--plan-sunken);
  overflow: hidden;
}
.remaining-list {
  display: grid;
  max-height: calc(4 * 45px);
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  background: var(--sheet);
  border-radius: var(--r-sm);
}
.remaining-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  grid-template-areas:
    "serial family icon"
    "serial mainline icon";
  align-items: center;
  column-gap: var(--space-3);
  row-gap: 1px;
  width: 100%;
  min-height: 44px;
  padding: var(--space-1) var(--space-3);
  border: 0;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  text-align: left;
  cursor: pointer;
  transition: background-color var(--state), box-shadow var(--state), transform var(--press);
}
.remaining-row:last-child { border-bottom: 0; }
.remaining-row:hover { background: var(--plan-raised); }
.remaining-row:active { background: var(--plan-sunken); transform: translateY(1px); }
.remaining-row:focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: -2px;
  box-shadow: inset 3px 0 0 var(--signal);
  background: var(--plan-raised);
}
.remaining-row .serial {
  grid-area: serial;
  align-self: center;
  max-width: 100%;
  padding: 4px 7px 3px;
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .05em;
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  color: var(--plan);
  background: var(--ink);
  box-shadow: inset 0 2px 0 var(--signal);
  border-radius: var(--r-sm);
}
.remaining-row .family {
  grid-area: family;
  align-self: end;
  min-width: 0;
  font-size: 12.5px;
  font-weight: 700;
  line-height: 1.25;
  color: var(--ink);
  overflow-wrap: anywhere;
}
.remaining-row .mainline {
  grid-area: mainline;
  align-self: start;
  min-width: 0;
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
  font-size: 11px;
  line-height: 1.3;
  color: var(--steel);
  overflow-wrap: anywhere;
}
.remaining-row svg {
  grid-area: icon;
  align-self: center;
  justify-self: end;
  width: 15px;
  height: 15px;
  flex: none;
  color: var(--signal);
  transition: transform var(--state);
}
.remaining-row:hover svg,
.remaining-row:focus-visible svg { transform: translateX(2px); }

@media (max-width: 560px) {
  .remaining-row {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "serial icon"
      "family icon"
      "mainline icon";
    column-gap: var(--space-2);
    row-gap: 2px;
    padding-block: var(--space-2);
  }
  .remaining-row .serial { justify-self: start; }
  .remaining-list { max-height: calc(4 * 66px); }
}

@media (prefers-reduced-motion: reduce) {
  .remaining-row, .remaining-row svg { transition: none !important; }
  .remaining-row:active { transform: none !important; }
  .remaining-row:hover svg, .remaining-row:focus-visible svg { transform: none !important; }
}

@media (forced-colors: active) {
  .remaining-block { background: Canvas; border-color: CanvasText; }
  .remaining-list { background: Canvas; }
  .remaining-row { border-bottom-color: GrayText; }
  .remaining-row .serial {
    forced-color-adjust: none;
    background: CanvasText;
    color: Canvas;
    box-shadow: none;
  }
  .remaining-row .family, .remaining-row .mainline { color: inherit; }
  .remaining-row svg { color: ButtonText; }
  .remaining-row:focus-visible { outline-color: Highlight; box-shadow: none; }
}

/* --------------------------------------------------------------------------
   Révision, signatures
   -------------------------------------------------------------------------- */
.summary-grid, .signature-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(300px, .9fr);
  gap: var(--space-4);
  align-items: start;
}
.signature-grid { margin-top: var(--space-4); }
.observation-list { display: grid; }
.observation-item {
  padding: 9px 12px;
  border-bottom: 1px solid var(--line);
  border-left: 4px solid var(--attention);
  background: var(--attention-soft);
}
.observation-item + .observation-item { margin-top: 6px; }
.observation-item strong { font-family: var(--font-mono); font-size: 11px; }
.observation-item p { margin-top: 3px; font-size: 12.5px; color: var(--ink-soft); }
.signature-block h3 { margin-bottom: 8px; }
.signature-pad canvas {
  width: 100%;
  height: 160px;
  display: block;
  border: 1.5px solid var(--ink);
  border-radius: var(--r-sm);
  background:
    linear-gradient(180deg, transparent calc(100% - 34px), rgba(21, 39, 48, .35) calc(100% - 33px), transparent calc(100% - 32px)),
    #fff;
  touch-action: none;
}
.signature-actions {
  justify-content: space-between;
  color: var(--steel);
  font-family: var(--font-mono);
  font-size: 10.5px;
  margin-top: var(--space-2);
}
.checkbox-line {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  margin: var(--space-4) 0;
  color: var(--ink-soft);
  font-size: 12.5px;
  font-weight: 650;
  text-transform: none;
  letter-spacing: 0;
}
.checkbox-line input { margin-top: 2px; }

/* --------------------------------------------------------------------------
   Rapport A4
   -------------------------------------------------------------------------- */
.report-stage {
  display: grid;
  gap: var(--space-4);
  justify-items: center;
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: var(--space-5);
  background:
    repeating-linear-gradient(0deg, rgba(21, 39, 48, 0.05) 0 1px, transparent 1px 24px),
    repeating-linear-gradient(90deg, rgba(21, 39, 48, 0.05) 0 1px, transparent 1px 24px),
    var(--plan-sunken);
}
.report-toolbar {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  flex-wrap: wrap;
}
.report {
  width: min(100%, 960px);
  min-height: 1120px;
  margin: 0 auto;
  padding: 36px 40px;
  color: var(--ink);
  background: #fff;
  border: 0;
  border-radius: 0;
  box-shadow: 0 8px 28px rgba(21, 39, 48, .14);
}
.report-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 32px;
  padding-bottom: 16px;
  border-bottom: 2px solid var(--ink);
}
.report-head-main { padding: 0; }
.report-head h2 { font-size: 24px; color: var(--ink); }
.report-head .eyebrow { margin-bottom: 6px; }
.report-provider {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 8px;
}
.report-logo {
  flex: 0 0 auto;
  max-height: 48px;
  width: auto;
  object-fit: contain;
}
.report-provider-info {
  display: grid;
  gap: 1px;
  min-width: 0;
}
.report-provider-info .eyebrow {
  margin: 0 0 2px;
  font-size: 12px;
  letter-spacing: .06em;
}
.report-provider-info small {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--ink-soft);
}
.report-identifiers {
  display: grid;
  grid-template-columns: repeat(2, minmax(110px, auto));
  gap: 24px;
  margin: 0;
}
.report-identifiers div { display: grid; gap: 3px; }
.report-identifiers dt, .report-label {
  color: var(--steel);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.report-identifiers dd {
  margin: 0;
  color: var(--ink);
  font-family: var(--font-mono);
  font-size: 13px;
  font-weight: 800;
  white-space: nowrap;
}
.report .report-meta {
  display: grid;
  grid-template-columns: 1.1fr 1.45fr 1fr 1fr;
  gap: 0;
  margin: 0 0 20px;
  border-bottom: 1px solid var(--line-strong);
}
.report .report-meta div {
  min-width: 0;
  display: grid;
  align-content: start;
  gap: 3px;
  padding: 12px 14px 14px;
  border-right: 1px solid var(--line);
  font-size: 11.5px;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.report .report-meta div:first-child { padding-left: 0; }
.report .report-meta div:last-child { padding-right: 0; border-right: 0; }
.report .report-meta strong { color: var(--ink); font-size: 12px; }
.report .report-meta small { color: var(--steel); font-family: var(--font-mono); font-size: 10px; }
.report-section-heading {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 8px;
}
.report-section-heading h3 { margin: 0; color: var(--ink); font-size: 15px; }
.report-section-heading span { color: var(--steel); font-family: var(--font-mono); font-size: 10px; }
.report-table-wrap { overflow-x: auto; border-top: 1px solid var(--ink); }
.report table {
  width: 100%;
  min-width: 0;
  table-layout: fixed;
  font-size: 10.5px;
  border-collapse: collapse;
}
.report th {
  color: var(--steel);
  background: #f4f5f4;
  border-bottom: 1px solid var(--line-strong);
  text-align: left;
}
.report th, .report td {
  padding: 7px 8px;
  border: 0;
  border-bottom: 1px solid var(--line);
  vertical-align: top;
}
.report td:first-child { color: var(--ink); font-family: var(--font-mono); font-weight: 800; white-space: nowrap; }
.report td small { display: block; margin-top: 2px; color: var(--steel); font-family: var(--font-mono); font-size: 9px; }
.report-family-row th {
  padding: 6px 8px;
  color: var(--ink);
  background: #e9edeb;
  border-top: 1px solid var(--line-strong);
  border-bottom: 1px solid var(--line-strong);
  font-size: 10.5px;
  text-transform: none;
}
.report-family-row th span { font-weight: 800; }
.report-family-row th small { float: right; color: var(--steel); font-family: var(--font-mono); font-size: 9px; font-weight: 600; }
.report-col-number { width: 10%; }
.report-col-equipment { width: 22%; }
.report-col-location { width: 17%; }
.report-col-brand { width: 15%; }
.report-col-action { width: 16%; }
.report-col-observation { width: 20%; }
.report-family {
  margin-top: 18px;
  overflow-x: auto;
}
.report-family h3 {
  margin-bottom: 5px;
  padding-bottom: 5px;
  border-bottom: 1px solid var(--ink);
  color: var(--ink);
  font-size: 13px;
}
.report-family > p { color: var(--ink-soft); font-size: 11px; margin: 4px 0; }
.report-observations {
  margin-top: 18px;
  break-inside: avoid;
}
.report-observations h3 {
  margin: 0;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--ink);
  color: var(--ink);
  font-size: 13px;
}
.report-observations p {
  display: grid;
  grid-template-columns: minmax(140px, .35fr) minmax(0, 1fr);
  gap: 14px;
  margin: 0;
  padding: 8px 0;
  border-bottom: 1px solid var(--line);
  color: var(--ink-soft);
  font-size: 10.5px;
}
.report-observations p strong { color: var(--ink); font-family: var(--font-mono); font-size: 9.5px; }
.report-observations .report-empty { display: block; color: var(--steel); }
.signature-images {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  margin-top: 20px;
  break-inside: avoid;
}
.signature-card {
  min-width: 0;
  min-height: 112px;
  display: grid;
  grid-template-rows: auto auto 1fr;
  align-content: start;
  gap: 4px;
  padding: 12px 14px;
  border: 1px solid var(--line-strong);
}
.signature-card > strong { color: var(--ink); font-size: 11px; }
.signature-images img, .signature-empty {
  display: block;
  width: 100%;
  height: 66px;
  margin-top: 4px;
  border: 0;
  border-bottom: 1px solid var(--line-strong);
  background: #fff;
}
.signature-images img { object-fit: contain; object-position: left center; }
.signature-empty { display: grid; place-items: center; color: var(--steel); font-size: 10px; }
.report-footnote {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  margin-top: 16px;
  padding-top: 9px;
  border-top: 1px solid var(--line-strong);
  color: var(--steel);
  font-family: var(--font-mono);
  font-size: 9px;
}
.report-footnote strong { flex: 0 0 auto; color: var(--ink); }

/* --------------------------------------------------------------------------
   Dialog reset
   -------------------------------------------------------------------------- */
.reset-dialog {
  width: min(94vw, 470px);
  max-width: 470px;
  padding: 0;
  color: var(--ink);
  background: var(--plan-raised);
  border: 1.5px solid var(--ink);
  border-radius: var(--r);
  box-shadow: 10px 10px 0 rgba(21, 39, 48, .28);
}
.reset-dialog::backdrop { background: rgba(14, 28, 36, .5); }
.reset-card { display: grid; gap: var(--space-3); padding: var(--space-5); }
.reset-card h2 { font-size: 18px; }
.reset-card p:not(.eyebrow) { color: var(--ink-soft); font-size: 13px; }
.dialog-actions { display: flex; justify-content: flex-end; gap: var(--space-2); flex-wrap: wrap; margin-top: var(--space-2); }

/* Family warning dialog ("Plan de repérage") */
.family-warning-dialog {
  width: min(94vw, 460px);
  max-width: min(94vw, 460px);
  padding: 0;
  background: var(--plan-raised);
  border: 1.5px solid var(--ink);
  border-left: 4px solid var(--signal);
  border-radius: var(--radius-2, 6px);
  box-shadow: 0 8px 24px rgba(14, 28, 36, .18), 0 2px 6px rgba(14, 28, 36, .12);
  overflow-x: hidden;
  box-sizing: border-box;
}
.family-warning-dialog::backdrop { background: rgba(14, 28, 36, .55); }
@media (prefers-reduced-transparency: reduce) {
  .family-warning-dialog::backdrop { background: rgba(14, 28, 36, .92); }
}
.family-warning-card {
  display: grid;
  gap: var(--space-2);
  padding: var(--space-4);
  max-width: 100%;
  box-sizing: border-box;
}
.family-warning-card h2 { font-size: 18px; margin: 0; }
.family-warning-card #family-warning-copy { color: var(--ink-soft); font-size: 13px; line-height: 1.5; margin: 0; }
.family-warning-card #family-warning-question { color: var(--ink); font-size: 13px; font-weight: 600; margin: 0; }
.family-warning-card .dialog-actions button {
  min-height: 44px;
  padding-inline: var(--space-4);
}
.family-warning-dialog :focus-visible {
  outline: 2px solid var(--signal);
  outline-offset: 2px;
}
@media (forced-colors: active) {
  .family-warning-dialog {
    border: 2px solid CanvasText;
    border-left: 5px solid Highlight;
    box-shadow: none;
  }
  .family-warning-dialog :focus-visible { outline: 3px solid Highlight; }
}
@media (max-width: 520px) {
  .family-warning-card .dialog-actions {
    flex-direction: column;
    flex-wrap: nowrap;
  }
  .family-warning-card .dialog-actions button {
    width: 100%;
    box-sizing: border-box;
  }
  .family-warning-card .dialog-actions .secondary { order: -1; }
}

/* --------------------------------------------------------------------------
   Responsive
   -------------------------------------------------------------------------- */
@media (min-width: 1181px) {
  .topbar {
    grid-template-columns:
      minmax(220px, clamp(220px, 22vw, 320px))
      minmax(600px, 1fr)
      minmax(230px, clamp(230px, 20vw, 300px));
    gap: var(--space-3);
  }
  .step {
    flex: 1 1 auto;
    min-width: max-content;
    padding-inline: 8px;
    gap: 6px;
  }
}

@media (max-width: 1180px) {
  .topbar {
    grid-template-columns: minmax(0, clamp(200px, 34vw, 320px)) minmax(0, clamp(240px, 44vw, 420px));
    justify-content: space-between;
    row-gap: var(--space-2);
  }
  .track { grid-column: 1 / -1; grid-row: 2; width: 100%; overflow-x: hidden; }
  .step { flex: 1 1 0; min-width: 0; padding-inline: 6px; gap: 6px; }
  .master-panel { top: 140px; }
  .search-dock { grid-template-columns: minmax(240px, 1fr) minmax(150px, 190px) auto; }
  .client-row, .list-head { grid-template-columns: 1.15fr 1.3fr .48fr .48fr .72fr auto; }
}

@media (max-width: 1040px) {
  .visit-workbench { grid-template-columns: minmax(260px, 300px) minmax(0, 1fr); gap: var(--space-3); }
  .client-hero, .summary-grid, .signature-grid { grid-template-columns: 1fr; }
  .search-dock { grid-template-columns: minmax(0, 1fr) minmax(140px, 180px); }
  .client-row { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1.25fr) minmax(86px, .4fr) minmax(70px, .35fr); }
  .client-row .last-bv { grid-column: 1 / span 2; }
  .client-row .action-cell { grid-column: 3 / span 2; justify-self: stretch; }
  .client-row .action-cell .primary { width: 100%; }
  .list-head { display: none; }
}

@media (min-width: 821px) and (max-width: 1040px) {
  .detail-head { grid-template-columns: minmax(0, 1fr); }
  .equipment-id-lockup { width: 100%; }
  .detail-title { flex: 1 1 auto; }
  .detail-title .eyebrow, .detail-title h2 { white-space: nowrap; }
  .detail-head .cluster {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-2);
    width: 100%;
  }
  .detail-head .cluster > button { min-height: 44px; width: 100%; white-space: nowrap; }
  .visit-flow-nav { grid-template-columns: minmax(0, 1fr); align-items: stretch; }
  .visit-flow-copy .eyebrow, .visit-flow-copy strong { white-space: nowrap; }
  .visit-flow-buttons { display: grid; grid-template-columns: 1fr 1fr; justify-content: stretch; }
  .visit-flow-step { width: 100%; max-width: none; min-height: 44px; }
}

@media (max-width: 820px) {
  .topbar {
    grid-template-columns: minmax(0, 1fr);
    justify-content: stretch;
    padding-inline: 12px;
    gap: var(--space-2);
  }
  .brand-block { grid-row: 1; }
  .topbar-ops { grid-row: 2; flex-wrap: nowrap; justify-content: flex-start; }
  .local-status { flex: 1 1 0; min-width: 0; }
  .track { grid-row: 3; grid-column: auto; overflow-x: auto; }
  .step { flex: 1 0 auto; min-width: 108px; }
  .cartouche { grid-template-columns: 76px minmax(0, 1fr); }
  .cartouche-cell {
    grid-column: 1 / -1;
    border-left: 0;
    border-top: 1px solid var(--line);
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--space-3);
    padding: 8px 14px;
  }
  .visit-workbench { grid-template-columns: 1fr; }
  .master-panel { position: static; }
  .equipment-list { max-height: 320px; }
  .visit-flow-nav { grid-template-columns: 1fr; }
  .visit-flow-buttons { display: grid; grid-template-columns: 1fr 1fr; }
  .visit-flow-step { width: 100%; max-width: none; min-height: 48px; }
  .visit-flow-exit { grid-template-columns: 1fr; }
  .visit-flow-primary { width: 100%; }
  .search-dock { grid-template-columns: 1fr; }
  .client-row { grid-template-columns: 1fr; gap: 6px; }
  .client-row .last-bv, .client-row .action-cell { grid-column: auto; }
  .client-row .action-cell { justify-self: stretch; }
  .report .report-meta { grid-template-columns: 1fr 1fr; }
  .col-3, .col-4, .col-5, .col-6, .col-7, .col-8 { grid-column: span 12; }
  .reference-note { width: 100%; }
}

@media (max-width: 560px) {
  h1 { font-size: 15px; }
  .brand-plaque { width: 34px; height: 34px; }
  .main { padding: 12px 10px 40px; }
  .panel, .report-stage { padding: var(--space-3); }
  .detail-head { grid-template-columns: 1fr; }
  .detail-head .cluster { justify-content: stretch; }
  .detail-head .cluster > button { flex: 1; }
  .visit-flow-buttons { grid-template-columns: 1fr; }
  .report { padding: 18px; min-height: auto; }
  .report-head { grid-template-columns: 1fr; align-items: start; }
  .report-identifiers { width: 100%; grid-template-columns: 1fr 1fr; gap: 12px; }
  .report .report-meta, .signature-images { grid-template-columns: 1fr; }
  .report .report-meta div, .report .report-meta div:first-child, .report .report-meta div:last-child { padding: 10px 0; border-right: 0; }
  .report table, .report thead, .report tbody, .report tr, .report th, .report td { display: block; width: 100%; min-width: 0; }
  .report thead { display: none; }
  .report tbody { display: grid; gap: 8px; }
  .report tr { border: 1px solid #c6ccc9; padding: 8px 10px; }
  .report .report-family-row { padding: 0; border: 0; }
  .report .report-family-row th { padding: 8px 10px; }
  .report td { position: relative; border-bottom: 0; padding: 6px 0 6px 46%; min-height: 30px; overflow-wrap: anywhere; }
  .report td::before {
    position: absolute;
    inset-inline-start: 0;
    top: 6px;
    width: 40%;
    font-weight: 800;
    color: var(--ink-soft);
    text-transform: uppercase;
    letter-spacing: .06em;
    font-size: 9px;
    font-family: var(--font-ui);
  }
  .report td:nth-child(1)::before { content: "N°"; }
  .report td:nth-child(2)::before { content: "Équipement"; }
  .report td:nth-child(3)::before { content: "Implantation"; }
  .report td:nth-child(4)::before { content: "Marque / année"; }
  .report td:nth-child(5)::before { content: "Action"; }
  .report td:nth-child(6)::before { content: "Observation"; }
  .report-observations p { grid-template-columns: 1fr; gap: 4px; }
  .report-footnote { display: grid; }
}

/* Safari iOS zoome les contrôles sous 16 px lors de la prise de focus. */
@media (hover: none) and (pointer: coarse) {
  input, select, textarea { font-size: 16px; }
}

/* --------------------------------------------------------------------------
   Préférences utilisateur
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
  .primary, .secondary, .ghost, .quiet, .danger, .chip, .family-tab, .equipment-row, .client-row, .step, .local-status { transition: none !important; }
  .primary:active, .secondary:active, .ghost:active, .quiet:active, .danger:active, .chip:active, .family-tab:active, .equipment-row:active, .client-row:active, .step:active { transform: none !important; }
  .rapportsi-splash { transition-duration: 1ms; animation-duration: 1ms; }
  .splash-progress::after { animation: none; }
}

@media (prefers-contrast: more) {
  :root { --line: rgba(14, 28, 36, .38); --line-strong: rgba(14, 28, 36, .62); --focus: #00479e; }
  button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, a:focus-visible, summary:focus-visible { outline-width: 3px; }
  body { background: var(--plan); }
  .panel, .client-table, .equipment-list, .family-tabs, input, select, textarea, .badge { border-color: var(--line-strong); }
}

@media (forced-colors: active) {
  .brand-plaque, .cartouche-index, .control-id, .report-bv, .next-action, .family-tab.is-active {
    forced-color-adjust: none;
    background: CanvasText;
    color: Canvas;
    box-shadow: none;
    clip-path: none;
  }
  .cartouche-index, .report-bv { border-color: CanvasText; }
  .primary, .danger { forced-color-adjust: none; background: ButtonText; color: ButtonFace; border: 1px solid ButtonText; clip-path: none; }
  .chip[aria-pressed="true"] { forced-color-adjust: none; background: Highlight; color: HighlightText; box-shadow: none; }
  .chip[aria-pressed="true"]::before, .eyebrow::before { background: Highlight; }
  button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, a:focus-visible { outline: 3px solid Highlight; }
  .report { box-shadow: none; }
}

/* --------------------------------------------------------------------------
   Impression A4
   -------------------------------------------------------------------------- */
@media print {
  body { background: #fff; }
  .topbar, .cartouche, .reference-note, .toolbar, .report-toolbar, .no-print, .skip-link, .visit-flow-nav, .visit-flow-exit { display: none !important; }
  .app-shell { display: block; }
  .main { padding: 0; width: auto; margin: 0; }
  .view { display: block; }
  .report-stage { display: block; overflow: visible; background: #fff; padding: 0; border: 0 !important; box-shadow: none !important; outline: none !important; }
  main, .main, main:focus, main:focus-visible, .main:focus, .main:focus-visible, *:focus, *:focus-visible { outline: none !important; }
  .report {
    box-shadow: none;
    width: auto;
    min-height: 0;
    max-width: none;
    padding: 0;
    border: 0;
    font-size: 9pt;
    line-height: 1.25;
  }
  .report-head {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 10mm;
    align-items: end;
    padding-bottom: 3mm;
    border-bottom: 1.5pt solid #152730;
  }
  .report-head-main { padding: 0; }
  .report-head h2 { font-size: 16pt; margin: 0; }
  .report-head .eyebrow { margin: 0 0 1mm; }
  .report-provider { gap: 3mm; margin-bottom: 2mm; }
  .report-logo { max-height: 14mm; }
  .report-provider-info .eyebrow { font-size: 9pt; margin: 0 0 .5mm; }
  .report-provider-info small { font-size: 7pt; }
  .report-identifiers {
    grid-template-columns: auto auto;
    gap: 7mm;
  }
  .report-identifiers div { gap: .6mm; }
  .report-identifiers dt { font-size: 6.8pt; }
  .report-identifiers dd { font-size: 8.5pt; }
  .report h3 {
    font-size: 10pt;
    margin: 0 0 1.2mm;
    padding-bottom: 1mm;
    border-bottom: .75pt solid #152730;
    break-after: avoid;
    page-break-after: avoid;
  }
  .report p, .report .eyebrow { margin: 1mm 0; }
  .report .report-meta {
    grid-template-columns: 1.1fr 1.45fr 1fr 1fr;
    gap: 0;
    padding: 0;
    margin: 0 0 3.5mm;
    border-bottom: .5pt solid #9aa4a8;
  }
  .report .report-meta div {
    padding: 2.5mm 2.5mm 2.8mm;
    border-right: .4pt solid #d5d9d7;
    font-size: 8.1pt;
    line-height: 1.25;
  }
  .report .report-meta div:first-child { padding-left: 0; }
  .report .report-meta div:last-child { padding-right: 0; border-right: 0; }
  .report .report-meta strong { font-size: 8.3pt; }
  .report .report-meta small, .report-label { font-size: 6.5pt; }
  .report table {
    display: table !important;
    width: 100% !important;
    min-width: 0 !important;
    table-layout: fixed;
    border-collapse: collapse;
    font-size: 8.2pt;
    line-height: 1.2;
  }
  .report thead { display: table-header-group !important; }
  .report tbody { display: table-row-group !important; }
  .report tr {
    display: table-row !important;
    width: auto !important;
    padding: 0 !important;
    border: 0 !important;
    break-inside: avoid;
    page-break-inside: avoid;
  }
  .report th, .report td {
    display: table-cell !important;
    width: auto !important;
    min-width: 0 !important;
    position: static !important;
    padding: 1.5mm 1.2mm !important;
    border: 0 !important;
    border-bottom: .4pt solid #c6ccc9 !important;
    overflow-wrap: anywhere;
  }
  .report th {
    color: #4f626b;
    background: transparent !important;
    border-bottom: .75pt solid #152730 !important;
    font-size: 7.2pt;
  }
  .report td::before { content: none !important; display: none !important; }
  .report-col-number { width: 10% !important; }
  .report-col-equipment { width: 22% !important; }
  .report-col-location { width: 17% !important; }
  .report-col-brand { width: 15% !important; }
  .report-col-action { width: 16% !important; }
  .report-col-observation { width: 20% !important; }
  .report-family-row {
    break-after: avoid;
    page-break-after: avoid;
  }
  .report-family-row th {
    width: auto !important;
    padding: 1.2mm !important;
    color: #152730;
    background: #eef0ef !important;
    border-top: .5pt solid #9aa4a8 !important;
    border-bottom: .5pt solid #9aa4a8 !important;
    font-size: 7.4pt;
  }
  .report-equipment-row td { padding-block: 1.35mm !important; }
  .report-table-wrap { overflow: visible; border-top: .75pt solid #152730; }
  .report-observations { margin-top: 3mm; break-inside: avoid; }
  .report-observations h3 { margin: 0; padding-bottom: 1mm; }
  .report-observations p { padding: 1.5mm 0; font-size: 7.5pt; }
  .signature-images {
    grid-template-columns: 1fr 1fr;
    gap: 8mm;
    margin-top: 3.5mm;
    break-inside: avoid;
    page-break-inside: avoid;
  }
  .signature-card {
    min-height: 25mm;
    padding: 2.5mm 3mm;
    border: .5pt solid #9aa4a8;
  }
  .signature-card > strong { font-size: 8pt; }
  .signature-images img, .signature-empty {
    width: 100%;
    max-width: none;
    height: 15mm;
    margin-top: 1mm;
    border-bottom: .5pt solid #9aa4a8;
    object-position: left center;
  }
  .report-footnote {
    display: flex;
    margin-top: 3mm;
    padding-top: 2mm;
    border-top: .5pt solid #9aa4a8;
    font-size: 6.7pt;
    break-inside: avoid;
  }
  .report-footnote strong { font-size: 6.7pt; }
  @page { margin: 11mm; size: A4; }
}

/* ==========================================================================
   Écrans d'authentification & création d'organisation (SaaS)
   Même langage visuel : carte sombre, liseré signal, champs clairs.
   ========================================================================== */

/* -------------------------------------------------------------------------- */
/* Vue générique d'authentification (connexion / inscription)                 */
/* -------------------------------------------------------------------------- */
.auth-view,
.org-setup-view {
  min-height: calc(100vh - 120px);
  display: grid;
  place-items: center;
  padding: var(--space-6) var(--space-4);
}

.auth-card,
.org-setup-card {
  width: min(100%, 440px);
  display: grid;
  gap: var(--space-4);
  padding: var(--space-6);
  background: var(--ink-deep);
  color: #eef1f0;
  border: 1px solid rgba(255, 255, 255, .12);
  border-bottom: 3px solid var(--signal);
  border-radius: var(--r);
  box-shadow: 0 8px 32px rgba(0, 0, 0, .35);
}

.auth-card .brand-block,
.org-setup-card .brand-block {
  justify-content: center;
  margin-bottom: var(--space-2);
}

.auth-card .brand-plaque,
.org-setup-card .brand-plaque {
  width: 48px;
  height: 38px;
  font-size: 12px;
}

.auth-card h2,
.org-setup-card h2 {
  color: #f4f6f5;
  font-size: 20px;
  text-align: center;
  margin: 0;
}

.auth-card .auth-eyebrow,
.org-setup-card .org-eyebrow {
  color: var(--signal-ink-on-dark);
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
  text-align: center;
  margin: 0;
}

.auth-card .auth-eyebrow::before,
.org-setup-card .org-eyebrow::before {
  display: none;
}

/* Champs sur fond sombre — contraste net avec le conteneur clair métier. */
.auth-card .field,
.org-setup-card .field {
  gap: 6px;
}

.auth-card label,
.org-setup-card label {
  color: #a9b8bf;
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.auth-card input,
.org-setup-card input {
  min-height: 44px;
  border: 1px solid rgba(255, 255, 255, .22);
  border-radius: var(--r-sm);
  padding: 10px 12px;
  background: rgba(255, 255, 255, .06);
  color: #f4f6f5;
  font-size: 14px;
}

.auth-card input::placeholder,
.org-setup-card input::placeholder {
  color: #6f818a;
}

.auth-card input:hover,
.org-setup-card input:hover {
  border-color: rgba(255, 255, 255, .36);
}

.auth-card input:focus,
.org-setup-card input:focus {
  border-color: var(--signal);
  outline: 2px solid var(--signal);
  outline-offset: 1px;
  background: rgba(255, 255, 255, .1);
}

/* Message d'erreur */
.auth-error,
.org-setup-error {
  display: none;
  align-items: center;
  gap: 8px;
  padding: 9px 12px;
  border: 1px solid rgba(200, 46, 30, .5);
  border-left: 4px solid var(--signal);
  border-radius: var(--r-sm);
  background: rgba(200, 46, 30, .15);
  color: #f3a89f;
  font-size: 12.5px;
  font-weight: 700;
  line-height: 1.35;
}

.auth-error.is-visible,
.org-setup-error.is-visible {
  display: flex;
}

.auth-error[aria-live="assertive"],
.org-setup-error[aria-live="assertive"] {
  /* région live announceée au lecteur d'écran */
}

/* Boutons d'auth : primary pleine signal, secondary en mode contour. */
.auth-actions,
.org-setup-actions {
  display: grid;
  gap: var(--space-2);
  margin-top: var(--space-2);
}

.auth-actions .primary,
.org-setup-actions .primary {
  width: 100%;
  min-height: 46px;
  font-size: 14px;
}

.auth-actions .secondary {
  width: 100%;
  min-height: 46px;
  font-size: 14px;
  background: transparent;
  color: #dfe6e8;
  border: 1px solid rgba(255, 255, 255, .28);
  clip-path: none;
  border-radius: var(--r-sm);
}

.auth-actions .secondary:hover {
  background: rgba(255, 255, 255, .08);
  border-color: rgba(255, 255, 255, .45);
  color: #fff;
}

/* Lien de bascule connexion / inscription */
.auth-toggle {
  text-align: center;
  margin-top: var(--space-2);
  font-size: 12.5px;
  color: #8fa3ad;
}

.auth-toggle button {
  display: inline;
  min-height: 0;
  padding: 0 0 0 4px;
  border: 0;
  background: transparent;
  color: var(--signal-ink-on-dark);
  font-size: 12.5px;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}

.auth-toggle button:hover {
  color: #fff;
}

/* Lien « Mot de passe oublié ? » — discret, souligné rouge, aligné à droite. */
.auth-forgot {
  margin: 4px 0 2px;
  text-align: right;
  font-size: 12.5px;
}

.auth-forgot-link {
  display: inline;
  min-height: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--signal-ink-on-dark);
  font-size: 12.5px;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}

.auth-forgot-link:hover {
  color: #fff;
}

.auth-forgot-link:disabled {
  opacity: .6;
  cursor: default;
}

/* Message de confirmation (ex. envoi du lien de réinitialisation). */
.auth-info {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 12px;
  border: 1px solid rgba(255, 255, 255, .18);
  border-left: 4px solid var(--sheet, #dfe6e8);
  border-radius: var(--r-sm);
  background: rgba(255, 255, 255, .06);
  color: #dfe6e8;
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1.35;
}

/* État chargement : bouton en mode « patientez », champs désactivés. */
.auth-card.is-loading input,
.org-setup-card.is-loading input {
  opacity: .55;
  pointer-events: none;
}

.auth-card.is-loading .primary,
.org-setup-card.is-loading .primary {
  position: relative;
  opacity: .8;
  pointer-events: none;
}

.auth-card.is-loading .primary::after,
.org-setup-card.is-loading .primary::after {
  content: "";
  display: inline-block;
  width: 14px;
  height: 14px;
  margin-left: 8px;
  border: 2px solid rgba(255, 255, 255, .35);
  border-top-color: #fff;
  border-radius: 50%;
  animation: auth-spinner 700ms linear infinite;
}

@keyframes auth-spinner {
  to { transform: rotate(360deg); }
}

/* -------------------------------------------------------------------------- */
/* Écran création d'organisation                                               */
/* -------------------------------------------------------------------------- */
.org-setup-card {
  width: min(100%, 520px);
}

.org-setup-hint {
  color: #8fa3ad;
  font-size: 12.5px;
  line-height: 1.45;
  text-align: center;
  margin: 0;
}

/* Les champs optionnels sont signalés par une légende. */
.org-setup-card .field-optional label {
  color: #6f818a;
  font-weight: 650;
}

.org-setup-card .field-optional label::after {
  content: " (optionnel)";
  text-transform: none;
  letter-spacing: 0;
  font-weight: 500;
  font-size: 10.5px;
}

/* Masquage des vues auth / org-setup quand l'app est active (app.js gère data-view). */
.app-shell[data-view="auth"] #view,
.app-shell[data-view="org-setup"] #view {
  display: none;
}

.app-shell[data-view="auth"] #auth-view,
.app-shell[data-view="org-setup"] #org-setup-view {
  display: grid;
}

.app-shell:not([data-view="auth"]) #auth-view,
.app-shell:not([data-view="org-setup"]) #org-setup-view {
  display: none;
}

/* La barre de progression du workflow est masquée sur les écrans d'auth. */
.app-shell[data-view="auth"] .track,
.app-shell[data-view="org-setup"] .track {
  visibility: hidden;
}

.app-shell[data-view="auth"] .reference-note,
.app-shell[data-view="org-setup"] .reference-note {
  display: none;
}

/* ---------------------------------------------------------------------------
   Correction du bug de visibilité des vues racines.
   Les vues racines (#app, #auth-view, #org-setup-view) sont basculées via
   l'attribut HTML `hidden` (node.hidden = true/false dans app.js → fonctions
   hideAllRoots / showAuthView / showOrgSetupView / showApp).
   Les règles d'auteur .app-shell{display:flex} et .auth-view,.org-setup-view
   {display:grid} écrasent la feuille UA [hidden]{display:none} (spécificité
   supérieure), rendant l'attribut hidden inopérant : les trois vues restent
   visibles simultanément. !important restaure la priorité de l'attribut hidden
   sur toute règle display d'auteur, afin que node.hidden = true masque
   réellement l'élément.
   --------------------------------------------------------------------------- */
[hidden] { display: none !important; }

