/* =====================================================================
   KUERKOD · BACK-OFFICE ADMIN — « l'espace boutique »

   Page privée, séparée de l'espace client. Elle n'ajoute aucun jeton,
   aucune police, aucune teinte : tout vient de styles.css (rampe bleue
   unique, élévations Fluent, rayons, durées, courbes). Monochrome bleu,
   zéro dégradé vertical, icônes SVG en ligne (jamais d'emoji).

   PLAN
     0 · Icônes (trait / plein)
     1 · Cadre & chrome admin
     2 · États : repli, attente, accès refusé
     3 · Onglets
     4 · Vue : en-têtes de section, barre d'outils
     5 · Tuiles de statistiques
     6 · Tables (desktop) + repli en cartes (mobile)
     7 · Pagination
     8 · Détail client, codes, catalogue, commandes
     9 · Badges, bandeaux, états vides
    10 · Responsive
    11 · Mouvement réduit / impression
   ===================================================================== */

/* =====================================================================
   0 · ICÔNES
   ===================================================================== */
.adm-i-fill{fill:currentColor}
.adm-i-line{fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

/* =====================================================================
   1 · CADRE & CHROME
   ===================================================================== */
body.adm{background:var(--bg)}
.adm-wrap{max-width:1160px;margin:0 auto;padding:0 24px}

.adm-main{display:block;min-height:60vh}
.adm-main:focus{outline:none}

.adm-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

/* Repli / application : sans script, seul le repli s'affiche. */
html.js .adm-nojs{display:none}
html:not(.js) .adm-js{display:none}
.adm-nojs{padding:clamp(40px,6vw,80px) 0}
.adm-note{margin:0;padding:18px 20px;border-radius:var(--r-lg);
  background:var(--surface);border:1px solid var(--border);
  font-size:14.5px;line-height:1.6;color:var(--text-soft);max-width:44em}
.adm-note b{color:var(--text);font-weight:700}

/* ---- La barre d'administration ---- */
.adm-top{position:sticky;top:0;z-index:40;background:var(--surface);
  border-bottom:1px solid var(--border);box-shadow:var(--el-2)}
.adm-top__wrap{max-width:1160px;margin:0 auto;padding:10px 24px;
  display:flex;align-items:center;gap:16px}
.adm-brand{display:inline-flex;align-items:center;gap:12px;flex:none}
.adm-brand__logo{width:auto;height:34px;display:block}
.adm-brand__tag{font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;
  color:var(--brand);background:var(--brand-soft);border:1px solid var(--ku-blue-100);
  padding:5px 10px;border-radius:var(--r-pill);line-height:1}
.adm-brand:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;border-radius:var(--r-sm)}
.adm-top__end{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  justify-content:flex-end}
.adm-who{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;color:var(--text-muted);
  padding:6px 12px;border-radius:var(--r-pill);background:var(--surface-sunken);
  border:1px solid var(--border);max-width:280px}
.adm-who[hidden]{display:none}
.adm-who svg{color:var(--brand);flex:none}
.adm-who__email{font-weight:600;color:var(--text-soft);overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap}
.adm-top__link{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;
  border-radius:var(--r-pill);font-size:14px;font-weight:600;color:var(--text-soft);
  transition:color var(--dur-fast) var(--curve-easyease),background var(--dur-fast) var(--curve-easyease)}
.adm-top__link svg{color:var(--brand)}
.adm-top__link:hover{color:var(--brand);background:var(--ku-blue-25)}
.adm-top__link:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}

/* ---- Boutons : un seul jeu ---- */
.adm-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;
  padding:0 18px;border-radius:var(--r-pill);font-size:14.5px;font-weight:600;letter-spacing:-.005em;
  background:var(--surface);color:var(--text);border:1px solid var(--border-strong);
  transition:border-color var(--dur-fast) var(--curve-easyease),
             background var(--dur-fast) var(--curve-easyease),
             color var(--dur-fast) var(--curve-easyease),
             box-shadow var(--dur-fast) var(--curve-easyease)}
.adm-btn:hover{border-color:var(--brand);color:var(--brand)}
.adm-btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.adm-btn svg{flex:none}
.adm-btn--primary{background:var(--brand);color:var(--on-brand);border-color:var(--brand);
  box-shadow:var(--el-brand-4)}
.adm-btn--primary:hover{background:var(--brand-hover);border-color:var(--brand-hover);
  color:var(--on-brand);box-shadow:var(--el-brand-8)}
.adm-btn--quiet{border-color:transparent;color:var(--text-muted);background:transparent}
.adm-btn--quiet:hover{border-color:transparent;color:var(--brand);background:var(--ku-blue-25)}
.adm-btn--sm{min-height:38px;padding:0 14px;font-size:13.5px}
.adm-btn[disabled]{cursor:default;opacity:.6}
.adm-btn[disabled]:hover{border-color:var(--border-strong);color:var(--text);background:var(--surface)}
.adm-btn--primary[disabled]:hover{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}
/* Le hidden natif doit gagner sur display:inline-flex (même spécificité,
   les styles auteur passent avant l'UA sans cette règle explicite). */
.adm-btn[hidden]{display:none}
.adm-btn__ring{width:15px;height:15px;flex:none;border-radius:50%;
  border:2px solid currentColor;border-top-color:transparent;opacity:.9;
  animation:adm-spin 700ms linear infinite}

/* =====================================================================
   2 · ÉTATS : attente, accès refusé
   ===================================================================== */
.adm-boot{padding:clamp(60px,10vw,130px) 0}
.adm-boot__p{display:flex;align-items:center;justify-content:center;gap:12px;
  font-size:14.5px;color:var(--text-muted)}
.adm-ring{width:20px;height:20px;flex:none;border-radius:50%;
  border:2px solid var(--ku-blue-100);border-top-color:var(--brand);
  animation:adm-spin 700ms linear infinite}
@keyframes adm-spin{to{transform:rotate(360deg)}}

.adm-denied{padding:clamp(48px,8vw,110px) 0}
.adm-denied__card{max-width:520px;margin:0 auto;text-align:center;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r-2xl);
  box-shadow:var(--el-16);padding:clamp(28px,4vw,44px)}
.adm-denied__mark{width:60px;height:60px;margin:0 auto;border-radius:var(--r-lg);display:grid;
  place-items:center;background:var(--ku-blue-50);border:1px solid var(--ku-blue-100)}
.adm-denied__mark svg{width:28px;height:28px;color:var(--brand)}
.adm-denied__h{margin:18px 0 0;font-weight:700;font-size:clamp(24px,3vw,30px);letter-spacing:-.03em;
  color:var(--text)}
.adm-denied__h:focus{outline:none}
.adm-denied__p{margin:12px auto 0;max-width:38em;font-size:15px;line-height:1.6;color:var(--text-soft)}
.adm-denied__acts{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:24px}

/* =====================================================================
   3 · ONGLETS
   ===================================================================== */
.adm-tabs{display:flex;gap:4px;margin:clamp(20px,3vw,32px) 0 0;padding:5px;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);
  box-shadow:var(--el-2);overflow-x:auto;-webkit-overflow-scrolling:touch;
  scrollbar-width:thin}
.adm-tab{display:inline-flex;align-items:center;gap:9px;flex:none;min-height:44px;padding:0 16px;
  border-radius:var(--r-md);font-size:14px;font-weight:600;color:var(--text-muted);
  white-space:nowrap;
  transition:color var(--dur-fast) var(--curve-easyease),background var(--dur-fast) var(--curve-easyease)}
.adm-tab svg{color:currentColor}
.adm-tab:hover{color:var(--brand);background:var(--ku-blue-25)}
.adm-tab:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}
.adm-tab[aria-selected="true"]{color:var(--on-brand);background:var(--brand);box-shadow:var(--el-brand-4)}
.adm-tab[aria-selected="true"]:hover{color:var(--on-brand);background:var(--brand-hover)}

.adm-view{padding:clamp(24px,3.4vw,40px) 0 clamp(48px,7vw,90px)}
.adm-view:focus{outline:none}

/* =====================================================================
   4 · VUE : en-têtes de section, barre d'outils
   ===================================================================== */
.adm-eyebrow{display:flex;align-items:center;gap:9px;margin:0 0 10px;font-size:12px;
  font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--brand)}
.adm-eyebrow svg{width:13px;height:13px;flex:none;color:var(--brand)}
.adm-h{margin:0;font-weight:700;font-size:clamp(24px,2.6vw,32px);line-height:1.1;
  letter-spacing:-.03em;color:var(--text)}
.adm-h .adm-h__n{color:var(--brand)}
.adm-sub{margin:10px 0 0;font-size:15px;line-height:1.6;color:var(--text-soft);max-width:52em}
.adm-sub b{color:var(--text);font-weight:700}
.adm-head{margin:0 0 clamp(20px,2.6vw,30px)}
/* Spécificité 0,2,0 : bat le raccourci margin de .adm-card__h défini plus bas. */
.adm-card__h.adm-subhead{margin-top:clamp(28px,3.6vw,42px)}

/* Barre d'outils : recherche + filtres, alignés, jamais de débordement. */
.adm-toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;
  margin:0 0 clamp(18px,2.4vw,26px)}
.adm-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.adm-field--grow{flex:1 1 260px}
.adm-field__lab{font-size:12.5px;font-weight:700;letter-spacing:.02em;color:var(--text-muted)}
.adm-search{position:relative;display:flex;align-items:center}
.adm-search__ic{position:absolute;left:14px;width:17px;height:17px;color:var(--text-muted);
  pointer-events:none}
.adm-input,.adm-select{width:100%;min-height:48px;padding:12px 15px;border-radius:var(--r-md);
  font-family:var(--font-body);font-size:16px;line-height:1.4;color:var(--text);
  background:var(--surface);border:1px solid var(--border-strong);
  transition:border-color var(--dur-fast) var(--curve-easyease),box-shadow var(--dur-fast) var(--curve-easyease)}
.adm-search .adm-input{padding-left:40px}
.adm-input::placeholder{color:var(--ku-ink-300)}
.adm-input:focus,.adm-select:focus{outline:none;border-color:var(--brand);
  box-shadow:0 0 0 3px var(--ku-blue-100)}
.adm-input:focus-visible,.adm-select:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.adm-input[disabled],.adm-select[disabled]{background:var(--surface-sunken);color:var(--text-muted)}
.adm-select{appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:40px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235A6684' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;background-size:18px}
.adm-help{margin:6px 0 0;font-size:12.5px;line-height:1.5;color:var(--text-muted)}

/* =====================================================================
   5 · TUILES DE STATISTIQUES
   ===================================================================== */
.adm-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:clamp(12px,1.6vw,18px)}
.adm-tile{position:relative;background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-xl);padding:clamp(18px,2.2vw,24px);box-shadow:var(--el-4);
  display:flex;flex-direction:column;gap:4px;overflow:hidden}
.adm-tile__ic{width:38px;height:38px;border-radius:var(--r-md);display:grid;place-items:center;
  background:var(--ku-blue-50);border:1px solid var(--ku-blue-100);margin-bottom:10px}
.adm-tile__ic svg{width:19px;height:19px;color:var(--brand)}
.adm-tile__n{font-weight:700;font-size:clamp(28px,3.4vw,40px);line-height:1;letter-spacing:-.03em;
  color:var(--text);font-variant-numeric:tabular-nums}
.adm-tile__k{font-size:13.5px;font-weight:600;color:var(--text-muted)}
.adm-tile__hint{font-size:12.5px;line-height:1.45;color:var(--text-muted);margin-top:2px}
.adm-tile--brand{background:var(--brand);border-color:var(--brand);box-shadow:var(--el-brand-8)}
.adm-tile--brand .adm-tile__ic{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.25)}
.adm-tile--brand .adm-tile__ic svg,
.adm-tile--brand .adm-tile__n{color:var(--on-brand)}
.adm-tile--brand .adm-tile__k,
.adm-tile--brand .adm-tile__hint{color:var(--ku-blue-100)}

.adm-statgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:clamp(14px,1.8vw,20px);margin-top:clamp(20px,2.6vw,30px)}
.adm-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);
  padding:clamp(20px,2.4vw,26px);box-shadow:var(--el-4)}
.adm-card__h{margin:0 0 6px;font-size:16px;font-weight:700;letter-spacing:-.02em;color:var(--text)}
.adm-card__p{margin:0;font-size:14px;line-height:1.6;color:var(--text-muted)}
.adm-card__p + .adm-card__acts{margin-top:16px}
.adm-card__acts{display:flex;flex-wrap:wrap;gap:10px}

/* =====================================================================
   6 · TABLES — lisibles au bureau, en cartes empilées sur mobile
   ===================================================================== */
.adm-tablewrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);
  box-shadow:var(--el-2);overflow:hidden}
.adm-tablescroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.adm-table{width:100%;border-collapse:collapse;font-size:14px}
.adm-table thead th{text-align:left;font-size:11.5px;font-weight:800;letter-spacing:.08em;
  text-transform:uppercase;color:var(--text-muted);padding:14px 16px;
  background:var(--surface-sunken);border-bottom:1px solid var(--border);white-space:nowrap}
.adm-table tbody td{padding:14px 16px;border-bottom:1px solid var(--ku-ink-50);color:var(--text);
  vertical-align:middle;line-height:1.45}
.adm-table tbody tr:last-child td{border-bottom:0}
.adm-table tbody tr{transition:background var(--dur-fast) var(--curve-easyease)}
.adm-table tbody tr.is-clickable{cursor:pointer}
.adm-table tbody tr.is-clickable:hover{background:var(--ku-blue-25)}
.adm-table tbody tr:focus-within{background:var(--ku-blue-25)}
.adm-table .adm-td-strong{font-weight:700;color:var(--text)}
.adm-table .adm-td-muted{color:var(--text-muted)}
.adm-t-linkbtn{display:inline-flex;align-items:center;gap:8px;font:inherit;font-weight:700;
  color:var(--brand);background:none;border:0;padding:0;text-align:left;cursor:pointer;
  border-bottom:1px solid transparent}
.adm-t-linkbtn:hover{border-bottom-color:currentColor}
.adm-t-linkbtn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:2px}

.adm-table .adm-td-dim{color:var(--text-muted);font-variant-numeric:tabular-nums}
.adm-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:13px;letter-spacing:.02em;color:var(--ku-blue-700)}
.adm-net{display:inline-flex;align-items:center;gap:8px;font-weight:600;white-space:nowrap}
.adm-net svg{width:17px;height:17px;color:var(--brand);flex:none}
.adm-page{display:inline-block;max-width:280px;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;vertical-align:bottom;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:12.5px;color:var(--ku-blue-700)}

/* =====================================================================
   7 · PAGINATION
   ===================================================================== */
.adm-pager{display:flex;align-items:center;gap:14px;flex-wrap:wrap;justify-content:space-between;
  margin-top:16px}
.adm-pager__info{font-size:13.5px;color:var(--text-muted);font-variant-numeric:tabular-nums}
.adm-pager__btns{display:flex;gap:8px}

/* =====================================================================
   8 · DÉTAIL CLIENT · CODES · CATALOGUE · COMMANDES
   ===================================================================== */
.adm-back{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 12px 0 8px;
  margin:0 0 16px;border-radius:var(--r-pill);font-size:14px;font-weight:600;color:var(--text-soft);
  transition:color var(--dur-fast) var(--curve-easyease),background var(--dur-fast) var(--curve-easyease)}
.adm-back svg{color:var(--brand)}
.adm-back:hover{color:var(--brand);background:var(--ku-blue-25)}
.adm-back:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}

.adm-idcard{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);
  box-shadow:var(--el-4);padding:clamp(20px,2.4vw,28px);margin:0 0 clamp(20px,2.6vw,28px)}
.adm-idcard__top{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.adm-idcard__ic{width:46px;height:46px;flex:none;border-radius:50%;display:grid;place-items:center;
  background:var(--ku-blue-50);border:1px solid var(--ku-blue-100)}
.adm-idcard__ic svg{width:22px;height:22px;color:var(--brand)}
.adm-idcard__email{margin:0;font-weight:700;font-size:clamp(18px,2vw,22px);letter-spacing:-.02em;
  color:var(--text);overflow-wrap:anywhere}
.adm-idcard__meta{margin:4px 0 0;font-size:13.5px;color:var(--text-muted)}
.adm-idcard__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:14px;margin-top:20px;padding-top:20px;border-top:1px solid var(--border)}
.adm-idcard__cell dt{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--text-muted);margin:0 0 4px}
.adm-idcard__cell dd{margin:0;font-size:15px;font-weight:600;color:var(--text);
  font-variant-numeric:tabular-nums}

/* ---- Formulaire de génération de codes ---- */
.adm-codeform{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);
  box-shadow:var(--el-4);padding:clamp(20px,2.4vw,28px)}
.adm-codeform__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:14px;align-items:end}
.adm-codeform__go{margin-top:16px}

/* ---- Résultat : lot de codes créés ---- */
.adm-codes{margin-top:clamp(20px,2.6vw,28px);background:var(--surface);border:1px solid var(--ku-blue-200);
  border-radius:var(--r-xl);box-shadow:var(--el-8);padding:clamp(20px,2.4vw,28px)}
.adm-codes__head{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;
  margin-bottom:18px}
.adm-codes__title{margin:0;font-size:16px;font-weight:700;letter-spacing:-.02em;color:var(--text)}
.adm-codes__title b{color:var(--brand)}
.adm-codes__acts{display:flex;gap:8px;flex-wrap:wrap}
.adm-exportbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.adm-codes__list{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.adm-codechip{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border-radius:var(--r-md);
  background:var(--ku-blue-25);border:1px solid var(--ku-blue-100)}
.adm-codechip__code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:15px;font-weight:700;letter-spacing:.03em;color:var(--ku-blue-800)}
.adm-codechip__meta{font-size:12px;color:var(--text-muted)}

/* ---- Planche d'impression ----------------------------------------
   Une vue faite pour la feuille A4 autant que pour l'écran. Le QR est
   dimensionné en MILLIMÈTRES : ce qui sort de l'imprimante mesure
   toujours 26 mm de côté, quelle que soit la résolution.
   ------------------------------------------------------------------ */
.adm-sheet{margin-top:clamp(16px,2vw,22px)}
.adm-sheet__head{padding-bottom:16px;border-bottom:1px solid var(--border);margin-bottom:18px}
.adm-sheet__eyebrow{margin:0 0 6px;font-size:12px;font-weight:800;letter-spacing:.1em;
  text-transform:uppercase;color:var(--brand)}
.adm-sheet__h{margin:0;font-size:clamp(22px,2.6vw,30px);font-weight:800;letter-spacing:-.025em;
  color:var(--text)}
.adm-sheet__meta{margin:6px 0 0;font-size:13.5px;color:var(--text-muted)}
.adm-sheet__note{margin:12px 0 0;padding:10px 14px;border-radius:var(--r-md);
  background:var(--surface-sunken);border:1px solid var(--border);
  font-size:12.5px;line-height:1.55;color:var(--text-soft);max-width:60em}

.adm-sheet__acts{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}

.adm-sheet__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(40mm,1fr));
  gap:6mm 4mm}
.adm-sheet__card{position:relative;margin:0;display:flex;flex-direction:column;align-items:center;
  gap:6px;padding:4mm 2mm 3mm;border:1px solid var(--border);border-radius:var(--r-md);
  background:var(--surface);break-inside:avoid;page-break-inside:avoid}
.adm-sheet__qr{width:26mm;height:26mm;display:block;flex:none}
.adm-sheet__cap{display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center}
.adm-sheet__code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#000}
.adm-sheet__kind{font-size:9.5px;line-height:1.35;color:var(--text-muted)}
/* Toujours atteignable : au doigt comme au clavier, jamais réservé au survol. */
.adm-sheet__dl{position:absolute;top:4px;right:4px;width:32px;height:32px;opacity:.5;
  transition:opacity var(--dur-fast) var(--curve-easyease)}
.adm-sheet__card:hover .adm-sheet__dl,.adm-sheet__dl:hover,.adm-sheet__dl:focus-visible{opacity:1}

/* ---- Catalogue ---- */
.adm-cat{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:clamp(12px,1.6vw,18px);align-items:start}
.adm-catcard{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);
  box-shadow:var(--el-2);padding:18px;display:flex;flex-direction:column;gap:12px}
.adm-catcard__top{display:flex;align-items:flex-start;gap:12px}
.adm-catcard__ic{width:38px;height:38px;flex:none;border-radius:var(--r-md);display:grid;
  place-items:center;background:var(--ku-blue-50);border:1px solid var(--ku-blue-100)}
.adm-catcard__ic svg{width:19px;height:19px;color:var(--brand)}
.adm-catcard__id{min-width:0}
.adm-catcard__label{margin:0;font-size:15px;font-weight:700;letter-spacing:-.01em;color:var(--text);
  overflow-wrap:anywhere}
.adm-catcard__sku{margin:2px 0 0;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  color:var(--text-muted)}
.adm-catcard__price{display:flex;align-items:baseline;gap:8px;margin-top:auto}
.adm-catcard__amt{font-weight:700;font-size:22px;letter-spacing:-.02em;color:var(--text);
  font-variant-numeric:tabular-nums}
.adm-catcard__cur{font-size:13px;color:var(--text-muted)}
.adm-catcard__foot{display:flex;justify-content:flex-end;padding-top:4px}
.adm-catedit{border-top:1px solid var(--border);padding-top:14px;margin-top:2px;display:grid;gap:12px}
.adm-catedit .adm-field{gap:6px}
.adm-catedit__acts{display:flex;gap:8px;flex-wrap:wrap}
.adm-inputwrap{position:relative;display:flex;align-items:center}
.adm-inputwrap__cur{position:absolute;right:14px;font-size:14px;font-weight:600;color:var(--text-muted);
  pointer-events:none}
.adm-inputwrap .adm-input{padding-right:34px}

/* =====================================================================
   8 bis · COMMANDES — saisie, suivi, fabrication

   L'onglet de travail du fondateur. Aucune teinte nouvelle : la
   progression d'une commande se lit sur la rampe bleue existante, du
   contour vide (brouillon) au bleu plein (expédiée). Zéro dégradé.
   ===================================================================== */

/* ---- Pastille de statut ---- */
.adm-ost{display:inline-flex;align-items:center;gap:7px;padding:4px 11px 4px 9px;
  border-radius:var(--r-pill);font-size:12px;font-weight:700;white-space:nowrap;line-height:1.4}
.adm-ost__dot{width:8px;height:8px;border-radius:50%;flex:none}
.adm-ost--draft{background:var(--surface);color:var(--text-muted);
  box-shadow:inset 0 0 0 1px var(--border-strong)}
.adm-ost--draft .adm-ost__dot{box-shadow:inset 0 0 0 2px var(--ku-blue-300)}
.adm-ost--pend{background:var(--ku-blue-25);color:var(--ku-blue-700);
  box-shadow:inset 0 0 0 1px var(--ku-blue-100)}
.adm-ost--pend .adm-ost__dot{background:var(--ku-blue-300)}
.adm-ost--conf{background:var(--ku-blue-50);color:var(--ku-blue-800);
  box-shadow:inset 0 0 0 1px var(--ku-blue-200)}
.adm-ost--conf .adm-ost__dot{background:var(--brand)}
.adm-ost--fab{background:var(--ku-blue-100);color:var(--ku-blue-800);
  box-shadow:inset 0 0 0 1px var(--ku-blue-200)}
.adm-ost--fab .adm-ost__dot{background:var(--ku-blue-600)}
.adm-ost--ship{background:var(--brand);color:var(--on-brand)}
.adm-ost--ship .adm-ost__dot{background:var(--on-brand)}
.adm-ost--void{background:var(--surface-sunken);color:var(--ku-ink-400);
  box-shadow:inset 0 0 0 1px var(--border)}
.adm-ost--void .adm-ost__dot{box-shadow:inset 0 0 0 2px var(--ku-ink-300)}

/* ---- Tableau de bord : compteurs par statut ---- */
.adm-ordstats{margin-top:clamp(20px,2.6vw,30px)}
.adm-ordstats__head{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start;
  justify-content:space-between}
.adm-ordstats__head .adm-card__p{margin-top:6px}
.adm-ordstats__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
  gap:10px;margin-top:18px}
.adm-scount{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:14px 15px;
  border-radius:var(--r-md);background:var(--surface-sunken);border:1px solid var(--border);
  cursor:pointer;text-align:left;
  transition:border-color var(--dur-fast) var(--curve-easyease),
             background var(--dur-fast) var(--curve-easyease)}
.adm-scount:hover{border-color:var(--brand);background:var(--ku-blue-25)}
.adm-scount:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.adm-scount__n{font-weight:700;font-size:26px;line-height:1;letter-spacing:-.03em;
  color:var(--text);font-variant-numeric:tabular-nums}

/* ---- Petit bouton d'icône (retirer une ligne) ---- */
.adm-iconbtn{width:40px;height:40px;flex:none;border-radius:var(--r-md);display:grid;
  place-items:center;background:var(--surface);border:1px solid var(--border-strong);
  color:var(--text-muted);cursor:pointer;
  transition:border-color var(--dur-fast) var(--curve-easyease),
             color var(--dur-fast) var(--curve-easyease),
             background var(--dur-fast) var(--curve-easyease)}
.adm-iconbtn:hover{border-color:var(--brand);color:var(--brand);background:var(--ku-blue-25)}
.adm-iconbtn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.adm-iconbtn[disabled]{cursor:default;opacity:.45}
.adm-iconbtn[disabled]:hover{border-color:var(--border-strong);color:var(--text-muted);
  background:var(--surface)}

/* ---- Formulaire de saisie ---- */
.adm-ordform{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);
  box-shadow:var(--el-4);padding:clamp(20px,2.4vw,28px);display:grid;gap:clamp(20px,2.6vw,28px)}
.adm-ordform__sec{display:grid;gap:12px}
.adm-ordform__h{margin:0;font-size:15px;font-weight:800;letter-spacing:.02em;color:var(--text);
  padding-bottom:10px;border-bottom:1px solid var(--border)}
.adm-ordform__sec .adm-help{margin-top:0}
.adm-ordform__go{justify-self:start}
.adm-textarea{min-height:96px;resize:vertical;line-height:1.55}

.adm-lines{display:grid;gap:12px}
.adm-line{display:grid;grid-template-columns:minmax(0,1fr) 116px auto auto;gap:12px;
  align-items:end;padding:14px;border-radius:var(--r-md);background:var(--surface-sunken);
  border:1px solid var(--border)}
.adm-line .adm-field{min-width:0}
.adm-line__qty{width:116px}
.adm-line .adm-iconbtn{margin-bottom:0}

.adm-check{display:inline-flex;align-items:center;gap:9px;min-height:48px;padding:0 4px;
  font-size:14px;font-weight:600;color:var(--text-soft);cursor:pointer;white-space:nowrap}
.adm-check input{width:20px;height:20px;flex:none;accent-color:var(--brand);cursor:pointer;margin:0}
.adm-check input:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}

/* ---- Repli : adresse d'expédition ---- */
.adm-fold{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-sunken)}
.adm-fold__sum{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 16px;
  font-size:14px;font-weight:700;color:var(--text-soft);cursor:pointer;list-style:none}
.adm-fold__sum::-webkit-details-marker{display:none}
.adm-fold__sum svg{color:var(--brand);transition:transform var(--dur-fast) var(--curve-easyease)}
.adm-fold[open] .adm-fold__sum svg{transform:rotate(90deg)}
.adm-fold__sum:hover{color:var(--brand)}
.adm-fold__sum:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px;
  border-radius:var(--r-md)}
.adm-fold__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;
  padding:4px 16px 18px}
.adm-field--wide{grid-column:1 / -1}

/* ---- Récapitulatif renvoyé par le serveur ---- */
.adm-recap{margin-top:clamp(20px,2.6vw,28px);background:var(--surface);
  border:1px solid var(--ku-blue-200);border-radius:var(--r-xl);box-shadow:var(--el-8);
  padding:clamp(20px,2.4vw,28px);display:grid;gap:16px}
.adm-recap__head{display:flex;flex-wrap:wrap;gap:12px;align-items:center;
  justify-content:space-between}
.adm-recap__h{margin:0;font-size:17px;font-weight:700;letter-spacing:-.02em;color:var(--text)}
.adm-recap__h b{color:var(--brand)}
.adm-recap__p{margin:0;font-size:14px;line-height:1.6;color:var(--text-muted);
  overflow-wrap:anywhere}
.adm-recap__acts{display:flex;flex-wrap:wrap;gap:10px}

/* ---- Totaux ---- */
.adm-tot{margin-top:14px;padding:16px 18px;border-radius:var(--r-md);
  background:var(--surface);border:1px solid var(--border);box-shadow:var(--el-2);
  display:grid;gap:8px;justify-items:end}
.adm-tot__row{display:flex;align-items:baseline;gap:16px}
.adm-tot__k{font-size:13.5px;font-weight:600;color:var(--text-muted)}
.adm-tot__v{font-size:16px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;
  min-width:7.5em;text-align:right}
.adm-tot__row--big .adm-tot__k{font-size:14.5px;color:var(--text-soft)}
.adm-tot__row--big .adm-tot__v{font-size:24px;letter-spacing:-.02em;color:var(--brand)}
.adm-tot__note{margin:4px 0 0;font-size:12.5px;line-height:1.5;color:var(--text-muted);
  justify-self:stretch;text-align:right}

/* ---- Détail : carte d'identité de la commande ---- */
.adm-ordcard{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);
  box-shadow:var(--el-4);padding:clamp(20px,2.4vw,28px);margin:0 0 clamp(18px,2.4vw,24px)}
.adm-ordcard__top{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.adm-ordcard__id{min-width:0;flex:1 1 200px}
.adm-ordcard__h{margin:0;font-weight:700;font-size:clamp(20px,2.2vw,26px);letter-spacing:-.03em;
  color:var(--text)}
.adm-ordcard__meta{margin:4px 0 0;font-size:14px;color:var(--text-muted);overflow-wrap:anywhere}
.adm-ordcard .adm-help{margin-top:14px}

/* ---- Barre d'actions et confirmation en place ---- */
.adm-acts{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 14px}
.adm-confirm{margin:0 0 16px;padding:16px 18px;border-radius:var(--r-md);
  background:var(--ku-blue-25);border:1px solid var(--ku-blue-200)}
.adm-confirm__q{margin:0;font-size:14.5px;line-height:1.55;font-weight:600;color:var(--ku-blue-800)}
.adm-confirm__acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}

/* ---- Ajout de ligne (brouillon) ---- */
.adm-additem{margin-top:16px;padding:clamp(16px,2vw,20px);border-radius:var(--r-lg);
  background:var(--surface);border:1px solid var(--border);box-shadow:var(--el-2)}
.adm-additem__h{margin:0 0 12px;font-size:14px;font-weight:800;letter-spacing:.02em;
  color:var(--text)}
.adm-additem .adm-line{background:transparent;border:0;padding:0;
  grid-template-columns:minmax(0,1fr) 116px auto auto}
.adm-additem .adm-btn{margin-bottom:0}

/* ---- Livraison, note ---- */
.adm-infogrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:clamp(12px,1.6vw,18px)}
.adm-infocard{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);
  box-shadow:var(--el-2);padding:18px}
.adm-infocard__h{margin:0 0 8px;font-size:12px;font-weight:800;letter-spacing:.08em;
  text-transform:uppercase;color:var(--text-muted)}
.adm-infocard__p{margin:0;font-size:14.5px;line-height:1.6;color:var(--text);
  overflow-wrap:anywhere;white-space:pre-line}

/* ---- Suivi : une ligne de temps sobre ---- */
.adm-timeline{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.adm-timeline__i{position:relative;display:flex;align-items:flex-start;gap:14px;
  padding:12px 0 12px 2px}
.adm-timeline__i::before{content:"";position:absolute;left:6px;top:26px;bottom:-2px;width:1px;
  background:var(--border)}
.adm-timeline__i:last-child::before{display:none}
.adm-timeline__dot{width:13px;height:13px;flex:none;margin-top:3px;border-radius:50%;
  background:var(--surface);box-shadow:inset 0 0 0 2px var(--ku-ink-200)}
.adm-timeline__i.is-done .adm-timeline__dot{background:var(--brand);
  box-shadow:inset 0 0 0 2px var(--brand)}
.adm-timeline__k{display:block;font-size:13.5px;font-weight:700;color:var(--text)}
.adm-timeline__v{display:block;margin-top:2px;font-size:13.5px;color:var(--text-soft);
  font-variant-numeric:tabular-nums}
.adm-timeline__v.is-none{color:var(--text-muted)}

/* ---- Codes fabriqués : l'état d'activation sur la puce ---- */
.adm-codechip__st{margin-top:4px;font-size:11.5px;font-weight:700;color:var(--text-muted)}
.adm-codechip__st.is-on{color:var(--brand)}

/* =====================================================================
   9 · BADGES, BANDEAUX, ÉTATS VIDES, ALERTES
   ===================================================================== */
.adm-state{display:inline-flex;align-items:center;gap:7px;padding:4px 11px 4px 9px;
  border-radius:var(--r-pill);font-size:12px;font-weight:700;white-space:nowrap}
.adm-state__dot{width:8px;height:8px;border-radius:50%;flex:none}
.adm-state--on{background:var(--brand);color:var(--on-brand)}
.adm-state--on .adm-state__dot{background:var(--on-brand)}
.adm-state--off{background:var(--surface);color:var(--text-muted);
  box-shadow:inset 0 0 0 1px var(--border-strong)}
.adm-state--off .adm-state__dot{box-shadow:inset 0 0 0 2px var(--ku-blue-300)}
.adm-role{display:inline-block;padding:3px 9px;border-radius:var(--r-pill);font-size:11.5px;
  font-weight:700;letter-spacing:.02em}
.adm-role--admin{background:var(--brand-soft);color:var(--brand);
  box-shadow:inset 0 0 0 1px var(--ku-blue-200)}
.adm-role--user{background:var(--surface-sunken);color:var(--text-muted);
  box-shadow:inset 0 0 0 1px var(--border)}

/* Bandeau d'honnêteté (catalogue) et notes d'information. */
.adm-banner{display:flex;align-items:flex-start;gap:12px;margin:0 0 clamp(20px,2.6vw,28px);
  padding:16px 18px;border-radius:var(--r-lg);background:var(--ku-blue-25);
  border:1px solid var(--ku-blue-200)}
.adm-banner__ic{width:34px;height:34px;flex:none;border-radius:var(--r-md);display:grid;
  place-items:center;background:var(--surface);border:1px solid var(--ku-blue-100)}
.adm-banner__ic svg{width:17px;height:17px;color:var(--brand)}
.adm-banner__t{margin:0;font-size:13.5px;line-height:1.55;color:var(--text-soft)}
.adm-banner__t b{color:var(--text);font-weight:700}

.adm-alert{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:var(--r-md);
  font-size:14px;line-height:1.5;font-weight:600}
.adm-alert svg{width:16px;height:16px;flex:none;margin-top:2px}
.adm-alert[hidden]{display:none}
.adm-alert--err{background:var(--ku-blue-50);border:1px solid var(--ku-blue-200);color:var(--ku-blue-800)}
.adm-alert--ok{background:var(--ku-blue-25);border:1px solid var(--ku-blue-100);color:var(--ku-blue-700)}

.adm-empty{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);
  box-shadow:var(--el-2);padding:clamp(28px,4vw,48px);text-align:center}
.adm-empty__ic{width:52px;height:52px;margin:0 auto;border-radius:var(--r-lg);display:grid;
  place-items:center;background:var(--ku-blue-50);border:1px solid var(--ku-blue-100)}
.adm-empty__ic svg{width:24px;height:24px;color:var(--brand)}
.adm-empty__h{margin:16px 0 0;font-size:clamp(18px,1.8vw,21px);font-weight:700;letter-spacing:-.02em;
  color:var(--text)}
.adm-empty__p{margin:8px auto 0;max-width:40em;font-size:14.5px;line-height:1.6;color:var(--text-soft)}

.adm-loading{padding:clamp(30px,5vw,60px) 0;display:flex;align-items:center;justify-content:center;
  gap:12px;color:var(--text-muted);font-size:14px}

/* =====================================================================
   10 · RESPONSIVE
   ===================================================================== */
@media (max-width:720px){
  .adm-wrap{padding:0 16px}
  .adm-top__wrap{padding:10px 16px}
  .adm-brand__tag{display:none}
  .adm-who{max-width:150px}
  .adm-top__link span{display:none}
  .adm-top__link{padding:0 12px}

  /* Tables → cartes empilées : jamais de débordement de page. */
  .adm-tablewrap{background:transparent;border:0;box-shadow:none;overflow:visible}
  .adm-tablescroll{overflow:visible}
  .adm-table{display:block}
  .adm-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);
    clip-path:inset(50%);white-space:nowrap}
  .adm-table tbody{display:block}
  .adm-table tbody tr{display:block;background:var(--surface);border:1px solid var(--border);
    border-radius:var(--r-lg);box-shadow:var(--el-2);padding:6px 4px;margin-bottom:12px}
  .adm-table tbody tr:last-child{margin-bottom:0}
  .adm-table tbody td{display:flex;justify-content:space-between;align-items:center;gap:16px;
    padding:9px 14px;border-bottom:1px solid var(--ku-ink-50);text-align:right}
  .adm-table tbody tr td:last-child{border-bottom:0}
  .adm-table tbody td::before{content:attr(data-label);flex:none;text-align:left;
    font-size:11.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
    color:var(--text-muted)}
  .adm-table tbody td.adm-td-full{flex-direction:column;align-items:stretch;text-align:left}
  .adm-page{max-width:100%;white-space:normal;overflow-wrap:anywhere}
  .adm-pager{justify-content:center}
  .adm-pager__btns{width:100%;justify-content:space-between}

  /* Commandes : la ligne de saisie s'empile, le bouton de retrait passe
     à droite sous la case logo. Jamais de scroll horizontal de page. */
  .adm-line,
  .adm-additem .adm-line{grid-template-columns:1fr auto;align-items:center}
  .adm-line .adm-field--grow{grid-column:1 / -1}
  .adm-line__qty{width:auto}
  .adm-check{min-height:44px;white-space:normal}
  .adm-additem .adm-btn{grid-column:1 / -1;width:100%}
  .adm-acts .adm-btn{flex:1 1 100%}
  .adm-tot{justify-items:stretch}
  .adm-tot__row{justify-content:space-between}
  .adm-tot__v{min-width:0}
  .adm-ordstats__head{flex-direction:column;align-items:stretch}
  .adm-recap__acts .adm-btn{flex:1 1 100%}
}
@media (max-width:420px){
  .adm-tile__n{font-size:30px}
  .adm-codes__list{grid-template-columns:1fr 1fr}
  .adm-denied__acts .adm-btn{flex:1 1 100%}
  .adm-ordstats__grid{grid-template-columns:1fr 1fr}
}

/* =====================================================================
   11 · MOUVEMENT RÉDUIT / IMPRESSION
   ===================================================================== */
@media (prefers-reduced-motion:reduce){
  .adm-btn,.adm-tab,.adm-top__link,.adm-input,.adm-select,.adm-back,.adm-t-linkbtn,
  .adm-table tbody tr,.adm-scount,.adm-iconbtn,.adm-fold__sum svg,.adm-sheet__dl{transition:none}
  .adm-ring,.adm-btn__ring{animation:none}
}
@media print{
  .kk-skip,.adm-top,.adm-tabs,.adm-toolbar,.adm-pager,
  .adm-acts,.adm-additem,.adm-confirm,.adm-back,.adm-codes__acts,
  .adm-sheet__acts,.adm-sheet__dl{display:none}

  /* La planche prend la feuille : A4, marges d'atelier, rien d'autre. */
  @page{size:A4;margin:12mm}
  body.adm{background:#FFF}
  .adm-wrap{max-width:none;padding:0}
  .adm-sheet__head{border-bottom:1px solid #000;break-after:avoid;page-break-after:avoid}
  .adm-sheet__eyebrow,.adm-sheet__h,.adm-sheet__code{color:#000}
  .adm-sheet__meta,.adm-sheet__kind{color:#333}
  .adm-sheet__note{background:#FFF;border:1px solid #999;color:#333}
  .adm-sheet__grid{grid-template-columns:repeat(4,1fr);gap:5mm 3mm}
  .adm-sheet__card{border:1px solid #BBB;background:#FFF;box-shadow:none}
  .adm-sheet__qr{width:26mm;height:26mm}
}

/* Code d'activation révoqué : la ligne reste lisible mais s'efface — on ne
   supprime pas un code, on le coupe, et la traçabilité doit rester visible. */
.adm-row--off td{color:var(--text-muted)}
.adm-row--off .adm-mono{text-decoration:line-through}

/* ===================================================================
   FICHE SAV D'UN SUPPORT
   Monochrome bleu comme le reste : les états ne se disent pas en rouge
   et vert mais par l'intensité et un liseré. Seul le geste destructeur
   (régénérer un lien) s'autorise une teinte d'alerte, parce qu'il tue
   des QR déjà imprimés.
   =================================================================== */

/* Le lien copiable : ça doit se voir que c'est cliquable, sans crier. */
.adm-copy{display:inline-flex;align-items:center;gap:7px;padding:4px 9px;
  border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-sunken);
  color:var(--text);cursor:pointer;font:inherit;transition:border-color .18s,background .18s,color .18s}
.adm-copy:hover{border-color:var(--brand);color:var(--brand);background:var(--ku-blue-25)}
.adm-copy:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.adm-copy__ic{display:inline-flex;color:var(--text-muted);transition:color .18s}
.adm-copy:hover .adm-copy__ic{color:var(--brand)}
.adm-copy.is-done{border-color:var(--brand);background:var(--brand-soft);color:var(--brand)}
.adm-copy.is-done .adm-copy__txt{font-weight:700}

/* Les lignes d'identité de la fiche. */
.adm-savrow{display:grid;grid-template-columns:190px 1fr;gap:10px 18px;
  padding:12px 0;border-top:1px solid var(--border)}
.adm-savrow:first-of-type{border-top:0}
.adm-savrow__lab{font-size:13.5px;font-weight:600;color:var(--text-muted)}
.adm-savrow__val{font-size:14.5px;color:var(--text);overflow-wrap:anywhere;
  display:flex;flex-direction:column;align-items:flex-start;gap:5px}
.adm-savrow__hint{font-size:13px;color:var(--text-muted);line-height:1.5}
@media (max-width:640px){.adm-savrow{grid-template-columns:1fr;gap:4px}}

.adm-savcode{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px;margin-bottom:4px}
.adm-savcode__meta{font-size:12.5px;color:var(--text-muted)}

/* Une action : intitulé, cas d'usage, et le formulaire qui se déplie. */
.adm-savact{border:1px solid var(--border);border-radius:var(--r-lg);
  margin-top:12px;overflow:hidden;background:var(--surface)}
.adm-savact__go{display:block;width:100%;text-align:left;padding:14px 16px;
  background:none;border:0;cursor:pointer;font:inherit;transition:background .18s}
.adm-savact__go:hover{background:var(--ku-blue-25)}
.adm-savact__go:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}
.adm-savact__t{display:block;font-size:15px;font-weight:650;color:var(--text)}
.adm-savact__w{display:block;margin-top:4px;font-size:13.5px;line-height:1.55;color:var(--text-muted)}
.adm-savact__host{padding:0 16px 16px;display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.adm-savact--danger{border-color:var(--ku-blue-200)}
.adm-savact--danger .adm-savact__t{color:var(--brand)}
.adm-btn--danger{border-color:var(--brand);color:var(--on-brand);background:var(--brand)}
.adm-btn--danger:hover{background:var(--brand-hover);border-color:var(--brand-hover);color:var(--on-brand)}

/* Le rapport de joignabilité. Le verdict d'abord, les deux étapes ensuite. */
.adm-health{margin-top:14px;border:1px solid var(--border);border-left:4px solid var(--border-strong);
  border-radius:var(--r-md);padding:14px 16px;background:var(--surface-sunken)}
.adm-health--ok{border-left-color:var(--brand)}
.adm-health--wait{border-left-color:var(--ku-blue-200)}
.adm-health--err{border-left-color:var(--ku-ink-700)}
.adm-health__verdict{margin:0 0 10px;font-size:14.5px;font-weight:600;line-height:1.55;color:var(--text)}
.adm-health__steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.adm-health__step{padding-left:16px;border-left:2px solid var(--border);display:flex;
  flex-direction:column;gap:2px}
.adm-health__step.is-ok{border-left-color:var(--brand)}
.adm-health__step.is-err{border-left-color:var(--ku-ink-700)}
.adm-health__t{font-size:13.5px;font-weight:600;color:var(--text)}
.adm-health__d{font-size:13.5px;color:var(--text-muted);line-height:1.5}
.adm-health__u{font-size:12.5px;color:var(--text-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  overflow-wrap:anywhere}

/* Le QR de la fiche : taille d'écran, pas taille d'impression. */
.adm-savqr{margin:12px 0;padding:14px;background:#fff;border:1px solid var(--border);
  border-radius:var(--r-md);width:max-content;max-width:100%}
.adm-savqr__svg{display:block;width:168px;height:168px}

/* La cellule SAV porte deux gestes : ouvrir la fiche, ou en copier le lien. */
.adm-td-sav{white-space:nowrap}
.adm-td-sav .adm-btn{margin-right:6px}
.adm-td-sav .adm-copy{padding:5px 10px;font-size:13.5px}
/* position:relative OBLIGATOIRE : le libellé pour lecteurs d'écran est en
   position:absolute et, sans ancêtre positionné, son bloc conteneur devient
   la page entière — il échappe alors au rognage du conteneur à défilement et
   étire le document de plusieurs centaines de pixels. Le bouton lui sert de
   repère, et tout reste rogné là où il faut. */
.adm-copy--icon{padding:7px 9px;position:relative}
.adm-copy--icon .adm-copy__ic{color:var(--text-muted)}
.adm-copy--icon.is-done{border-color:var(--brand);background:var(--brand-soft)}
.adm-copy--icon.is-done .adm-copy__ic{color:var(--brand)}
/* La page liée est la colonne la plus bavarde : on la borne pour que la
   colonne SAV, à droite, reste visible sans défilement horizontal. */
.adm-table .adm-page{max-width:210px}
/* Le lien-bouton doit se comporter comme un bouton, pas comme un lien de texte. */
a.adm-btn{text-decoration:none}
a.adm-btn:hover{text-decoration:none}
