/*
 * Sans mètre — espace atelier (back-office). Ordinateur et tablette.
 * S'appuie sur les jetons et composants de /assets/css/flaurence.css.
 */

/* ------------------------------------------------------------------ gabarit */
.atelier-app { display: flex; flex-direction: column; min-height: 100dvh; }
.atelier-main { flex: 1; outline: none; padding-bottom: var(--space-8); }
.atelier-main .container { width: min(100% - 2.5rem, 86rem); }
.page { padding-top: var(--space-5); display: flex; flex-direction: column; gap: var(--space-6); }
.boot { padding: var(--space-7) 0; }
.boot-spinner, .loading { display: flex; align-items: center; gap: var(--space-2); color: var(--ink-2); margin: 0; }

.small { font-size: var(--step--1); }
.mono { font-family: var(--font-mono); letter-spacing: 0.02em; }
.strong { font-weight: 700; }
.pre-line { white-space: pre-line; }
.cluster-tight { gap: var(--space-2); }
.nowrap { white-space: nowrap; }

/* ------------------------------------------------------------------ barre supérieure */
.topbar {
  position: sticky;
  top: 0;
  z-index: 60;
  background: color-mix(in srgb, var(--paper) 94%, transparent);
  backdrop-filter: saturate(1.2) blur(8px);
  -webkit-backdrop-filter: saturate(1.2) blur(8px);
  border-bottom: 1px solid var(--line);
}
.topbar-inner {
  width: min(100% - 2.5rem, 86rem);
  margin-inline: auto;
  min-height: 64px;
  display: flex;
  align-items: center;
  gap: var(--space-5);
}
.topbar .brand .logo, .login-brand .logo { width: 2rem; height: 2rem; color: var(--ink); }
.topbar .brand { min-height: var(--tap); min-width: var(--tap); }
.arrivals:empty { display: none; }
.consent-badge { white-space: nowrap; }
.withdrawn-band .btn { margin-top: var(--space-2); }
.brand-sub {
  font-family: var(--font-sans);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--thread);
  border: 1.5px dashed color-mix(in srgb, var(--thread) 60%, transparent);
  border-radius: 999px;
  padding: 0.1rem 0.5rem;
}
.topnav ul { display: flex; gap: var(--space-1); }
.topnav li + li { margin: 0; }
.topnav a {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-height: var(--tap);
  padding: 0 var(--space-3);
  border-radius: 999px;
  color: var(--ink-2);
  font-weight: 600;
  text-decoration: none;
}
.topnav a:hover { background: var(--paper-2); color: var(--ink); }
.topnav a[aria-current="page"] { background: var(--thread-soft); color: var(--thread-strong); }
.topbar-user { margin-left: auto; display: flex; align-items: center; gap: var(--space-3); min-width: 0; }
.topbar-who { margin: 0; display: flex; flex-direction: column; line-height: 1.2; text-align: right; min-width: 0; }
.topbar-who #atelier-name { font-weight: 650; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 16rem; }

@media (max-width: 1100px) { .topbar-who { display: none; } }
@media (max-width: 860px) {
  .topnav a span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .topnav a { padding: 0; width: var(--tap); justify-content: center; }
}
/* téléphone (usage d'appoint) : barre compacte, bouton de déconnexion réduit à son icône */
@media (max-width: 640px) {
  .topbar-inner { width: min(100% - 1.5rem, 86rem); gap: var(--space-2); }
  .brand-sub { display: none; }
  #logout-button { padding: 0; width: var(--tap); min-width: var(--tap); justify-content: center; }
  #logout-button span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .atelier-main .container { width: min(100% - 1.5rem, 86rem); }
  .panel { padding: var(--space-4); }
}
/* les colonnes de grille ne s'élargissent jamais au-delà de l'écran (tableaux défilants) */
.dash-grid > *, .client-grid > *, .session-top > *, .settings-grid > *, .fitting-grid > *, .quality-grid > *, .grid-2 > * { min-width: 0; }

/* ------------------------------------------------------------------ en-tête de page */
.page-header { display: flex; flex-direction: column; gap: var(--space-3); }
.crumbs ol { display: flex; flex-wrap: wrap; gap: var(--space-2); font-size: var(--step--1); color: var(--ink-2); }
.crumbs li + li { margin: 0; }
.crumbs li + li::before { content: "›"; margin-right: var(--space-2); color: var(--ink-3); }
.crumbs a { color: var(--ink-2); }
.page-header-main { display: flex; flex-wrap: wrap; gap: var(--space-4); align-items: flex-end; justify-content: space-between; }
.page-header-text { min-width: 0; flex: 1 1 28rem; }
.title-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3); }
.title-row h1 { margin: 0; }
.page-subtitle { margin: var(--space-2) 0 0; }
.meta-line .sep { color: var(--ink-3); }
.page-actions { flex: none; }

/* ------------------------------------------------------------------ panneaux */
.panel {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: var(--space-5);
  box-shadow: var(--shadow-1);
  min-width: 0;
}
.panel .panel { box-shadow: none; padding: 0; border: 0; background: transparent; }
.panel-head { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: flex-start; justify-content: space-between; margin-bottom: var(--space-4); }
.panel-title { margin: 0; display: flex; align-items: center; gap: var(--space-2); }
h3.panel-title { font-size: var(--step-1); }
.panel-desc { margin: var(--space-1) 0 0; font-size: var(--step--1); }
.panel-accent { border-top: 4px solid var(--thread); }
.sub-title { font-size: var(--step-1); margin: var(--space-2) 0 var(--space-2); display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap; }
.count {
  display: inline-grid;
  place-items: center;
  min-width: 1.8rem;
  height: 1.8rem;
  padding: 0 0.45rem;
  border-radius: 999px;
  background: var(--paper-2);
  color: var(--ink-2);
  font-family: var(--font-sans);
  font-size: var(--step--1);
  font-weight: 700;
}
.panel-accent .count { background: var(--thread-soft); color: var(--thread-strong); }

.badge-info { background: var(--info-soft); color: var(--info); }
.badge-muted { background: transparent; border: 1px dashed var(--line-strong); color: var(--ink-2); }
.badge .icon { width: 1em; height: 1em; }

.empty-state { text-align: center; padding: var(--space-6) var(--space-4); color: var(--ink-2); display: flex; flex-direction: column; align-items: center; gap: var(--space-2); }
.empty-state .icon-xl { color: var(--thread); }
.empty-title { font-family: var(--font-serif); font-size: var(--step-1); font-weight: 600; color: var(--ink); margin: 0; }
.empty-state p { margin: 0; }

.form-status:empty { display: none; }
.success-text { display: flex; gap: var(--space-2); align-items: flex-start; margin: 0; color: var(--sage); font-weight: 600; font-size: var(--step--1); }
.warn-text { display: flex; gap: var(--space-2); align-items: flex-start; margin: 0; color: var(--ochre); font-weight: 600; font-size: var(--step--1); }
.warn-text:empty { display: none; }
.btn-spinner { width: 1em; height: 1em; border-width: 2px; }
.textarea { min-height: 6rem; resize: vertical; line-height: 1.45; }
.input-file { padding: 0.55rem; min-height: 48px; }
.input:disabled { background: var(--paper-2); color: var(--ink-2); border-style: dashed; cursor: not-allowed; opacity: 1; }
/* sélecteur de fichier (textes français, input natif accessible mais invisible) */
.file-picker { position: relative; display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); min-width: 0; }
.file-native { position: absolute; left: 0; top: 0; width: 1px; height: 1px; opacity: 0; overflow: hidden; }
.file-btn { cursor: pointer; }
.file-native:focus-visible + .file-btn { outline: 3px solid var(--focus); outline-offset: 2px; }
.file-picker.is-disabled .file-btn { opacity: 0.5; cursor: not-allowed; pointer-events: none; }
.file-name { min-width: 0; overflow-wrap: anywhere; }
.file-name.is-chosen { color: var(--ink); font-weight: 600; }
.file-name.is-too-big { color: var(--danger); }
.grid-2 { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); align-items: start; }
.grid-2 > .field + .field { margin-top: 0; }
.stack > .field + .field, .stack-s > .field + .field { margin-top: 0; }
.form-narrow { max-width: 32rem; }
.password-wrap { display: flex; gap: var(--space-2); align-items: center; }
.password-wrap .input { flex: 1; }
.check-compact { padding: var(--space-2) var(--space-3); }
.check-compact input[type="checkbox"] { width: 1.35rem; height: 1.35rem; }

/* ------------------------------------------------------------------ tableaux */
/* position relative : les textes masqués (.sr-only, en position absolue) restent dans la zone défilante */
.table-wrap { position: relative; overflow-x: auto; margin: 0; -webkit-overflow-scrolling: touch; }
.table-scroll { max-height: 32rem; overflow-y: auto; border: 1px solid var(--line); border-radius: var(--radius-s); }
.table-scroll thead th { position: sticky; top: 0; background: var(--surface); z-index: 1; }
.data-table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.data-table th, .data-table td { padding: 0.6rem 0.6rem; border-bottom: 1px dashed var(--line-strong); text-align: left; vertical-align: middle; }
.data-table thead th { border-bottom: 2px solid var(--ink); font-size: var(--step--1); font-weight: 700; color: var(--ink-2); white-space: nowrap; }
.data-table tbody th { font-weight: 600; }
.data-table tbody tr:hover { background: color-mix(in srgb, var(--paper-2) 60%, transparent); }
.data-table.compact th, .data-table.compact td { padding: 0.45rem 0.5rem; font-size: var(--step--1); }
.data-table .val { text-align: right; white-space: nowrap; }
.data-table .actions-cell { text-align: right; white-space: nowrap; width: 1%; }
.row-link { font-weight: 650; text-decoration: none; }
.row-link:hover { text-decoration: underline; }
.row-problem { background: var(--danger-soft); }
.data-table .badge { white-space: nowrap; }
@media (max-width: 700px) { .hide-s { display: none; } }

/* ------------------------------------------------------------------ tableau de bord */
.dash-grid { display: grid; gap: var(--space-5); grid-template-columns: 1fr; }
@media (min-width: 1200px) { .dash-grid { grid-template-columns: 3fr 2fr; } }
.todo-list { display: flex; flex-direction: column; gap: var(--space-2); }
.todo-list li + li { margin: 0; }
.todo-item {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1.6fr) auto;
  gap: var(--space-3);
  align-items: center;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-s);
  background: var(--paper);
}
.todo-main { display: flex; flex-direction: column; min-width: 0; }
/* cible tactile ≥ 44 px sur tablette */
.todo-name { font-weight: 650; text-decoration: none; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-height: var(--tap); display: inline-flex; align-items: center; }
.todo-name:hover { color: var(--thread); text-decoration: underline; }
.todo-meta { gap: var(--space-2); font-size: var(--step--1); }
.todo-sub { margin: var(--space-2) 0 0; }
.todo-more { margin: 0; }
@media (max-width: 600px) { .todo-item { grid-template-columns: 1fr auto; } .todo-meta { grid-column: 1 / -1; grid-row: 2; } }

.toolbar { display: flex; flex-wrap: wrap; gap: var(--space-4); align-items: flex-end; justify-content: space-between; }
.search-field { flex: 1 1 22rem; max-width: 34rem; }
.search-wrap { position: relative; }
.search-wrap .icon { position: absolute; left: 0.9rem; top: 50%; transform: translateY(-50%); color: var(--ink-2); pointer-events: none; }
.search-wrap .input { padding-left: 2.7rem; }
.chips { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.chip {
  min-height: var(--tap);
  padding: 0 var(--space-4);
  border-radius: 999px;
  border: 1.5px solid var(--line-strong);
  background: var(--surface);
  color: var(--ink);
  font: inherit;
  font-size: var(--step--1);
  font-weight: 600;
  cursor: pointer;
}
.chip:hover { background: var(--paper-2); }
.chip[aria-pressed="true"] { background: var(--ink); color: var(--paper); border-color: var(--ink); }

/* ------------------------------------------------------------------ fiche cliente */
.client-grid { display: grid; gap: var(--space-5); grid-template-columns: 1fr; align-items: start; }
@media (min-width: 1000px) { .client-grid { grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr); } }
.info-list { display: grid; grid-template-columns: max-content 1fr; gap: var(--space-2) var(--space-4); margin: 0; }
.info-list dt { color: var(--ink-2); font-size: var(--step--1); font-weight: 600; padding-top: 0.1rem; }
.info-list dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.grafis-name-display { display: flex; align-items: center; gap: var(--space-3); margin: 0 0 var(--space-2); flex-wrap: wrap; }
.grafis-name {
  font-size: 1.6rem;
  font-weight: 700;
  padding: 0.2rem 0.7rem;
  border: 2px dashed color-mix(in srgb, var(--thread) 60%, transparent);
  border-radius: var(--radius-s);
  background: var(--paper);
}
.input-grafis { max-width: 11rem; text-transform: uppercase; font-size: 1.15rem; letter-spacing: 0.08em; }
.input-grafis::placeholder { text-transform: none; letter-spacing: 0; }
.rgpd-actions { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); }
.rgpd-actions > div { padding: var(--space-4); border: 1px solid var(--line); border-radius: var(--radius-s); background: var(--paper); }
.rgpd-actions p { margin-bottom: var(--space-2); }
.rgpd-title { font-weight: 700; }
.mode-choice { align-items: flex-start; gap: var(--space-3); padding-block: var(--space-4); }
.mode-choice .icon-l { color: var(--thread); flex: none; margin-top: 0.1rem; }

/* ------------------------------------------------------------------ boîtes de dialogue */
.dialog {
  width: min(100% - 2rem, 34rem);
  max-height: min(92dvh, 52rem);
  padding: 0;
  border: 1px solid var(--line);
  border-radius: var(--radius-l);
  background: var(--surface);
  color: var(--ink);
  box-shadow: var(--shadow-2);
  overflow: auto;
}
.dialog-s { width: min(100% - 2rem, 28rem); }
.dialog-m { width: min(100% - 2rem, 40rem); }
.dialog::backdrop { background: rgb(20 20 28 / 45%); backdrop-filter: blur(2px); }
.dialog[open] { animation: dialog-in 0.18s var(--ease); }
@keyframes dialog-in { from { opacity: 0; transform: translateY(8px) scale(0.99); } }
.dialog-head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); padding: var(--space-4) var(--space-5) 0; }
.dialog-title { margin: 0; font-size: var(--step-2); }
.dialog-body { padding: var(--space-4) var(--space-5) var(--space-5); }
.dialog-actions { display: flex; flex-wrap: wrap; gap: var(--space-3); justify-content: flex-end; margin-top: var(--space-2); }

/* ------------------------------------------------------------------ partage du lien */
.share { display: grid; gap: var(--space-5); grid-template-columns: 1fr; align-items: start; }
@media (min-width: 900px) { .share { grid-template-columns: minmax(0, 1fr) auto; } .share-atelier { grid-template-columns: auto minmax(0, 1fr); } }
.share-url-row { flex-wrap: nowrap; }
.share-url { flex: 1; min-width: 0; font-size: 0.95rem; }
.share-message { min-height: 12rem; font-size: var(--step--1); }
.share-qr { display: flex; flex-direction: column; align-items: center; gap: var(--space-2); }
.qr-img { width: 220px; height: 220px; border-radius: var(--radius-s); border: 1px solid var(--line); background: #fff; image-rendering: pixelated; }
.qr-big { width: min(22rem, 70vw); height: auto; aspect-ratio: 1; margin-inline: auto; }

/* ------------------------------------------------------------------ séance */
.progress-steps { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: var(--space-2); }
.progress-steps li + li { margin: 0; }
.ps { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-3); border-radius: 999px; border: 1.5px solid var(--line); font-size: var(--step--1); font-weight: 600; color: var(--ink-2); }
.ps-dot { display: inline-grid; place-items: center; width: 1.6rem; height: 1.6rem; border-radius: 50%; border: 2px dashed var(--line-strong); font-size: 0.8rem; }
.ps-dot .icon { width: 1rem; height: 1rem; }
.ps-done { color: var(--sage); border-color: color-mix(in srgb, var(--sage) 40%, transparent); background: var(--sage-soft); }
.ps-done .ps-dot { border: 0; background: var(--sage); color: var(--surface); }
.ps-current { color: var(--thread-strong); border-color: var(--thread); background: var(--thread-soft); }
.ps-current .ps-dot { border-color: var(--thread); color: var(--thread-strong); }
.ps-failed { color: var(--danger); border-color: var(--danger); background: var(--danger-soft); }
.ps-failed .ps-dot { border: 0; background: var(--danger); color: #fff; }

.session-top { display: grid; gap: var(--space-5); grid-template-columns: 1fr; align-items: start; }
@media (min-width: 1100px) { .session-top { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); } }
.notice-split { display: flex; flex-wrap: wrap; gap: var(--space-3) var(--space-5); align-items: center; justify-content: space-between; }
.notice-split > div { flex: 1 1 18rem; }
.notice-split > div > :last-child { margin-bottom: 0; }
#validation-state:focus { outline: 3px solid var(--focus); outline-offset: 2px; }

.kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: var(--space-3); margin: 0; }
.kpi { padding: var(--space-3) var(--space-4); border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-1); }
.kpi dt { font-size: var(--step--1); color: var(--ink-2); font-weight: 600; }
.kpi dd { margin: 0; display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--space-2); }
.kpi-value { font-family: var(--font-serif); font-size: 1.55rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.kpi-text { font-size: 1.2rem; }
.kpi-unc { color: var(--ink-2); font-size: var(--step--1); }
.kpis-s .kpi { box-shadow: none; }

.export-group-title { font-family: var(--font-sans); font-size: var(--step--1); text-transform: uppercase; letter-spacing: 0.1em; color: var(--ink-2); margin: 0; }
.export-list { display: grid; gap: var(--space-3); grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr)); }
.export-list li + li { margin: 0; }
.export-item { display: grid; gap: var(--space-1); }
.export-item .btn { justify-content: flex-start; width: 100%; }
.export-item p { margin: 0 0 0 var(--space-2); font-size: 0.82rem; }
.export-status:empty { display: none; }

/* onglets */
.tabs-wrap { display: flex; flex-direction: column; gap: var(--space-4); }
.tabs {
  display: flex;
  gap: var(--space-1);
  overflow-x: auto;
  border-bottom: 2px solid var(--line);
  scrollbar-width: thin;
}
.tab {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-height: 48px;
  padding: 0 var(--space-4);
  border: 0;
  border-bottom: 3px solid transparent;
  margin-bottom: -2px;
  background: none;
  color: var(--ink-2);
  font: inherit;
  font-weight: 650;
  white-space: nowrap;
  cursor: pointer;
}
.tab:hover { color: var(--ink); background: var(--paper-2); }
.tab[aria-selected="true"] { color: var(--thread-strong); border-bottom-color: var(--thread); }
.tab:focus-visible { outline-offset: -3px; }
.tab-count { display: inline-grid; place-items: center; min-width: 1.5rem; height: 1.5rem; padding: 0 0.35rem; border-radius: 999px; background: var(--paper-2); color: var(--ink-2); font-size: 0.78rem; font-weight: 700; }
.tab-count-warning { background: var(--ochre-soft); color: var(--ochre); }
.tab-count-error { background: var(--danger-soft); color: var(--danger); }
.tab-panel { outline: none; }
.tab-panel:focus-visible { outline: 3px solid var(--focus); outline-offset: 4px; border-radius: var(--radius-s); }

/* vue d'ensemble */
.overview { display: grid; gap: var(--space-4); grid-template-columns: 1fr; align-items: center; padding: var(--space-4); }
.overview .kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 640px) {
  .overview { grid-template-columns: minmax(10rem, 13rem) minmax(0, 1fr); }
  .overview .kpis { grid-template-columns: 1fr; }
}
.overview .kpi { box-shadow: none; background: var(--paper); }

/* mesures */
.measures-layout { display: block; }
.measures-table .num-col { width: 3.2rem; color: var(--ink-2); }
.measures-table .code-col { width: 4.5rem; font-weight: 700; }
.measures-table td.name, .measures-table th.name { min-width: 14rem; }
.m-name { display: block; font-weight: 600; }
.measures-table th.name .m-name { font-weight: 600; }
.m-de { display: block; font-size: 0.8rem; color: var(--ink-3); font-style: italic; }
.m-formula { display: block; font-size: 0.8rem; color: var(--info); }
.m-formula .icon { width: 0.95em; height: 0.95em; }
.m-note { display: block; font-size: 0.8rem; color: var(--ink-2); font-weight: 400; max-width: 42rem; }
.m-name + .badge, .m-de + .badge, .m-formula + .badge, .m-note + .badge, .badge + .badge { margin-top: 0.25rem; margin-right: 0.25rem; }
.badge-edited { background: var(--thread-soft); color: var(--thread-strong); }
.badge-verify { background: transparent; border: 1px dashed var(--ochre); color: var(--ochre); }
.measures-table .val-main { font-size: 1.05rem; font-weight: 750; font-variant-numeric: tabular-nums; }
.val-original { display: block; font-size: 0.8rem; color: var(--ink-2); }
.measures-table .unc { color: var(--ink-2); text-align: right; white-space: nowrap; }
.measures-table td.val, .measures-table td.unc, .measures-table td.conf-col, .measures-table td.mm,
.measures-table th.val, .measures-table th.unc, .measures-table th.mm { width: 1%; white-space: nowrap; }
@media (max-width: 1200px) {
  .measures-table th, .measures-table td { padding-inline: 0.4rem; }
  .measures-table .num-col { width: 2.6rem; }
  .measures-table .code-col { width: 3.6rem; }
}
.measures-table .mm { text-align: right; font-weight: 700; color: var(--ink); }
.measures-table tr.is-edited > td.val .val-main { color: var(--thread-strong); }
.measures-table tr.m-manual, .measures-table tr.m-status-missing { background: color-mix(in srgb, var(--paper-2) 55%, transparent); }
.measures-table tr.m-manual th, .measures-table tr.m-manual .m-name { color: var(--ink-2); }
.edit-row > td { background: var(--thread-soft); border-bottom: 2px solid var(--thread); padding: var(--space-4); }
.edit-row:hover { background: transparent; }
.edit-form { display: flex; flex-direction: column; gap: var(--space-3); }
.edit-grid { display: grid; gap: var(--space-4); grid-template-columns: minmax(14rem, 21rem) minmax(14rem, 1fr); align-items: start; }
.badge-check .icon { width: 0.95em; height: 0.95em; }
@media (max-width: 700px) { .edit-grid { grid-template-columns: 1fr; } }
.edit-form .field + .field { margin-top: 0; }
.input-value { text-align: right; font-weight: 700; font-size: 1.15rem; }
.input-unit-s { max-width: 9rem; }
.input-unit-s .input { min-height: 44px; padding-block: 0.45rem; }
.tape-help summary { cursor: pointer; font-weight: 600; font-size: var(--step--1); color: var(--thread); }
.tape-help p { margin: var(--space-2) 0 0; font-size: var(--step--1); }
.history-list { margin: var(--space-2) 0 0; display: flex; flex-direction: column; gap: 0.2rem; font-size: var(--step--1); }
.history-list li + li { margin: 0; }

.conf { display: inline-flex; align-items: center; gap: 0.4rem; font-size: var(--step--1); font-weight: 600; white-space: nowrap; }
.conf-dot { width: 0.8rem; height: 0.8rem; border-radius: 50%; flex: none; }
.conf-high { color: var(--sage); }
.conf-high .conf-dot { background: var(--sage); }
.conf-medium { color: var(--ochre); }
.conf-medium .conf-dot { background: var(--ochre); border-radius: 2px; transform: rotate(45deg) scale(0.85); }
.conf-low { color: var(--danger); }
.conf-low .conf-dot { background: transparent; border: 2.5px solid var(--danger); }

/* silhouette */
.silhouette { margin: 0; display: flex; flex-direction: column; gap: var(--space-3); }
.sil-views { display: flex; gap: var(--space-3); align-items: flex-end; }
.sil-view { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; gap: var(--space-1); min-width: 0; }
.sil-svg { width: 100%; height: auto; max-height: 26rem; }
.sil-caption { margin: 0; font-size: var(--step--1); font-weight: 650; color: var(--ink-2); }
.sil-body { fill: color-mix(in srgb, var(--ink) 10%, var(--surface)); stroke: var(--ink-2); stroke-width: 5; stroke-linejoin: round; }
.sil-arm { fill: color-mix(in srgb, var(--ink) 16%, var(--surface)); }
.sil-floor { stroke: var(--line-strong); stroke-width: 4; }
.sil-height { stroke: var(--ink-3); stroke-width: 3; stroke-dasharray: 10 8; }
.sil-level { stroke: var(--thread); stroke-width: 5; stroke-dasharray: 16 10; }
.sil-level-dot { fill: var(--thread); }
.sil-leader { fill: none; stroke: var(--thread); stroke-width: 2.5; }
.sil-label { fill: var(--thread-strong); font-family: var(--font-sans); font-weight: 700; }
.sil-value { fill: var(--ink); font-family: var(--font-sans); font-weight: 600; }
.silhouette[data-kind="generic"] .sil-body { fill: none; stroke-dasharray: 12 8; }
.silhouette figcaption { margin: 0; }

/* contrôles */
.quality-grid { display: grid; gap: var(--space-5); grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr)); }
.quality-view { padding: var(--space-4); border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.check-list { display: flex; flex-direction: column; gap: var(--space-2); }
.check-list li + li { margin: 0; }
.check-item { display: grid; grid-template-columns: auto 1fr; gap: var(--space-2); align-items: start; padding: var(--space-2) var(--space-3); border-radius: var(--radius-s); }
.check-item.is-error { background: var(--danger-soft); }
.check-item.is-warning { background: var(--ochre-soft); }
.check-item.is-info { background: var(--info-soft); }
.chk { display: inline-flex; }
.chk .icon { width: 1.3rem; height: 1.3rem; }
.chk-ok { color: var(--sage); }
.chk-error { color: var(--danger); }
.chk-warning { color: var(--ochre); }
.chk-info { color: var(--info); }

/* mètre ruban */
.tape-table .tape-how { display: none; }
.tape-table.show-how .tape-how { display: block; }
.tape-table td, .tape-table th { vertical-align: middle; }
.tape-table .delta { display: inline-block; min-width: 4.5rem; }
.tape-table th.name label { cursor: pointer; }
.delta { font-weight: 700; }
.delta-ok { color: var(--sage); }
.delta-warn { color: var(--ochre); }
.delta-bad { color: var(--danger); }
.tape-options { align-items: start; }

/* essayage */
.fitting-grid { display: grid; gap: var(--space-5); grid-template-columns: 1fr; align-items: start; }
@media (min-width: 1100px) { .fitting-grid { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); } }
.fb-line { display: grid; grid-template-columns: minmax(12rem, 1.4fr) 9rem minmax(10rem, 1.4fr) auto; gap: var(--space-3); align-items: end; padding: var(--space-3); border: 1px dashed var(--line-strong); border-radius: var(--radius-s); }
.fb-line .field + .field { margin-top: 0; }
.fb-line .input-unit-s .input { min-height: 52px; }
@media (max-width: 800px) { .fb-line { grid-template-columns: 1fr 1fr; } .fb-line .fb-note { grid-column: 1 / -1; } }
.feedback-list { display: flex; flex-direction: column; gap: var(--space-3); }
.feedback-list li + li { margin: 0; }
.feedback { padding: var(--space-4); }
.feedback-head { margin-bottom: var(--space-2); }
.delta-inline { display: inline-block; min-width: 5.5rem; font-weight: 700; color: var(--thread-strong); }

.event-list { display: flex; flex-direction: column; gap: var(--space-2); }
.event-list li { display: flex; gap: var(--space-2); align-items: flex-start; margin: 0; }
.event-list .icon { color: var(--thread); margin-top: 0.2rem; }

.danger-zone { border-color: color-mix(in srgb, var(--danger) 30%, var(--line)); }
.danger-zone summary { color: var(--danger); }

/* ------------------------------------------------------------------ réglages */
.settings-grid { display: grid; gap: var(--space-5); grid-template-columns: 1fr; align-items: start; }
@media (min-width: 1000px) { .settings-grid { grid-template-columns: 14rem minmax(0, 1fr); } .side-nav { position: sticky; top: 84px; } }
.side-nav ul { display: flex; flex-direction: column; gap: var(--space-1); }
.side-nav li + li { margin: 0; }
.side-nav a { display: flex; align-items: center; min-height: var(--tap); padding: 0 var(--space-3); border-radius: var(--radius-s); color: var(--ink-2); font-weight: 600; text-decoration: none; }
.side-nav a:hover { background: var(--paper-2); color: var(--ink); }
@media (max-width: 999px) { .side-nav ul { flex-direction: row; flex-wrap: wrap; } .side-nav a { border: 1px solid var(--line); border-radius: 999px; } }
.settings-content > .panel { scroll-margin-top: 84px; }
.printables { display: grid; gap: var(--space-3); grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); }
.printables li + li { margin: 0; }
.printable { display: grid; grid-template-columns: auto 1fr; gap: var(--space-3); padding: var(--space-4); border: 1px solid var(--line); border-radius: var(--radius-s); background: var(--paper); }
.printable .icon-l { color: var(--thread); }
.printable-link { font-weight: 700; }
.printable p { margin: var(--space-1) 0 0; }
.report-pre { margin: 0; padding: var(--space-4); max-height: 28rem; overflow: auto; background: var(--paper-2); border-radius: var(--radius-s); font-family: var(--font-mono); font-size: 0.8rem; line-height: 1.45; white-space: pre-wrap; overflow-wrap: anywhere; }

/* ------------------------------------------------------------------ aide */
.help-toc ol { display: flex; flex-wrap: wrap; gap: var(--space-2); margin: 0; padding: 0; list-style: none; }
.help-toc li + li { margin: 0; }
.help-toc a { display: inline-flex; align-items: center; min-height: var(--tap); padding: 0 var(--space-4); border: 1px solid var(--line-strong); border-radius: 999px; background: var(--surface); color: var(--ink); font-weight: 600; font-size: var(--step--1); text-decoration: none; }
.help-toc a:hover { background: var(--paper-2); }
.doc .panel-title { margin-top: 0; }
.atelier-app .list-steps strong { display: inline; }
.help-page .panel { scroll-margin-top: 84px; }
.help-page .list-icons > li { grid-template-columns: auto 1fr; }

/* ------------------------------------------------------------------ connexion */
.login-page { min-height: 80dvh; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-4); padding: var(--space-6) var(--space-4); }
.login-card { width: min(100%, 27rem); padding: var(--space-6); }
.login-brand { margin: 0 0 var(--space-3); }
.login-card h1 { font-size: var(--step-3); }

/* ------------------------------------------------------------------ impression */
@media print {
  .topbar, .skip-link, .demo-banner, .side-nav, .page-actions, .actions-cell, .tabs, .dialog, .danger-zone, .export-list, button { display: none !important; }
  body { background: #fff; color: #000; }
  .panel { box-shadow: none; border-color: #999; break-inside: avoid; }
}

@media (prefers-reduced-motion: reduce) {
  .dialog[open] { animation: none; }
}

.last-name { text-transform: uppercase; letter-spacing: 0.02em; }
