@layer components{
/* ── Framework MX : tous les modals au niveau de l'Assistant (rail illustré + split) ──
   Généralise l'anatomie du wizard (.wizx-*) à l'ensemble des modals : rail gauche
   dégradé avec pastille, illustration SVG thémée, puces d'info, en-tête éditorial,
   contenu scrollable et footer d'actions cohérent. Le wizard lui-même reste sur .wizx-*. */

/* Carte : flex colonne, hauteur pilotée par le contenu, plafonnée à l'écran */
#modal.mx .modal-card{width:min(880px,calc(100vw - 28px));max-height:calc(100vh - 48px);
  display:flex;flex-direction:column;overflow:hidden}
#modal.mx.mx-sm .modal-card{width:min(720px,calc(100vw - 28px))}
#modal.mx.mx-lg .modal-card{width:min(1040px,calc(100vw - 28px))}
#modal.mx .modal-head{display:none}
#modal.mx .modal-body{flex:1;min-height:0;padding:0;display:flex}

.mxw{display:grid;grid-template-columns:264px 1fr;flex:1;min-height:0;min-width:0}
#modal.mx.mx-noside .mxw{grid-template-columns:1fr}
#modal.mx.mx-noside .mx-side{display:none}

/* Rail gauche - mêmes recettes que .wizx-side */
.mx-side{display:flex;flex-direction:column;gap:var(--sp-14);padding:var(--sp-22) var(--sp-20) var(--sp-16);border-right:1px solid var(--line);
  background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 7%,var(--bg2)),var(--bg2) 58%);
  min-height:0;overflow:auto}
.mx-brand{display:flex;align-items:center;gap:var(--sp-10)}
.mx-logo{width:34px;height:34px;border-radius:var(--radius);display:grid;place-items:center;flex:none;
  background:linear-gradient(135deg,var(--accent),var(--accent-h));color:var(--on-solid);
  box-shadow:0 4px 12px color-mix(in srgb,var(--accent) 35%,transparent)}
.mx-logo svg.ic{width:18px;height:18px}
.mx-bt{font-weight:var(--fw-bold);font-size:var(--fs-base);letter-spacing:-.01em}
.mx-bs{font-size:var(--fs-xs);color:var(--mut)}
.mx-art{margin:0 -2px}
.mx-art svg{width:100%;height:auto;display:block}
.mx-points{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-8)}
.mx-points li{display:flex;gap:var(--sp-8);align-items:flex-start;font-size:var(--fs-xs);color:var(--mut);line-height:1.45;min-width:0}
.mx-points li svg.ic{width:13px;height:13px;flex:none;margin-top:var(--sp-1);color:var(--accent)}
.mx-points li b{color:var(--txt);font-weight:var(--fw-strong)}
.mx-fill{flex:1}
.mx-reassure{display:flex;gap:var(--sp-6);align-items:flex-start;font-size:var(--fs-xs);color:var(--mut);line-height:1.45;
  margin:0;padding-top:var(--sp-12);border-top:1px solid var(--line2)}
.mx-reassure svg.ic{width:13px;height:13px;flex:none;margin-top:var(--sp-1)}

/* Zone principale - en-tête éditorial, contenu scrollable, footer sticky */
.mx-main{display:flex;flex-direction:column;min-height:0;min-width:0;position:relative}
.mx-close{position:absolute;top:14px;right:14px;z-index:2}
.mx-head{padding:var(--sp-24) var(--sp-28) var(--sp-4);flex:none}
.mx-eyebrow{font-size:var(--fs-xs);font-weight:var(--fw-bold);letter-spacing:.07em;text-transform:uppercase;color:var(--accent)}
.mx-head h3{margin:var(--sp-4) 0 var(--sp-6);font-size:var(--fs-lg);font-weight:var(--fw-bold);letter-spacing:-.015em;padding-right:var(--sp-34)}
.mx-lead{margin:0;font-size:var(--fs-md);color:var(--mut);line-height:1.55;max-width:560px}
.mx-lead b{color:var(--txt);font-weight:var(--fw-strong)}
.mx-content{flex:1;min-height:120px;overflow:auto;padding:var(--sp-16) var(--sp-28) var(--sp-18)}
.mx-foot{display:flex;align-items:center;gap:var(--sp-10);padding:var(--sp-14) var(--sp-28);border-top:1px solid var(--line);
  background:var(--card);flex:none}
.mx-foot .sp{flex:1}
.mx-foot .primary svg.ic,.mx-foot .danger svg.ic{width:15px;height:15px;vertical-align:-2px;margin-right:var(--sp-4)}

/* Chargement standardisé (même habillage que l'état chargé : pas de saut visuel) */
.mx-loading{display:flex;align-items:center;justify-content:center;gap:var(--sp-10);min-height:160px;
  color:var(--mut);font-size:var(--fs-md)}

/* Écran étroit : rail réduit en bandeau horizontal (brand seul), comme le wizard */
@media(max-width:880px){
  #modal.mx .modal-card{width:calc(100vw - 16px);max-height:calc(100vh - 20px)}
  .mxw{grid-template-columns:1fr;grid-template-rows:auto 1fr}
  .mx-side{flex-direction:row;align-items:center;gap:var(--sp-14);border-right:0;border-bottom:1px solid var(--line);
    padding:var(--sp-12) var(--sp-16);overflow:visible}
  .mx-art,.mx-points,.mx-reassure,.mx-fill,.mx-bs{display:none}
  .mx-head{padding:var(--sp-18) var(--sp-20) var(--sp-4)}
  .mx-content{padding:var(--sp-14) var(--sp-20) var(--sp-14)}
  .mx-foot{padding:var(--sp-12) var(--sp-20)}
}

/* ── Confirmation (dhConfirm) : dialog empilable au-dessus de #modal ── */
#mx-confirm .mxc-card{width:min(440px,calc(100vw - 32px));background:var(--card);border:1px solid var(--line);
  border-radius:var(--radius-modal);box-shadow:var(--elev-1);padding:var(--sp-22) var(--sp-22) var(--sp-18);
  display:flex;flex-direction:column;gap:var(--sp-10)}
.mxc-badge{width:44px;height:44px;border-radius:var(--radius);display:grid;place-items:center;
  background:linear-gradient(135deg,var(--accent),var(--accent-h));color:var(--on-solid);
  box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 30%,transparent)}
.mxc-badge svg.ic{width:21px;height:21px}
#mx-confirm .danger .mxc-badge{background:linear-gradient(135deg,var(--err),color-mix(in srgb,var(--err) 70%,#7f1d1d));
  box-shadow:0 4px 14px color-mix(in srgb,var(--err) 30%,transparent)}
.mxc-t{margin:var(--sp-2) 0 0;font-size:var(--fs-lg);font-weight:var(--fw-bold);letter-spacing:-.01em}
.mxc-m{margin:0;font-size:var(--fs-md);color:var(--mut);line-height:1.55}
.mxc-m b,.mxc-m code{color:var(--txt)}
.mxc-d{font-size:var(--fs-sm);color:var(--mut);line-height:var(--lh-normal);border:1px solid var(--line2);border-radius:var(--radius-sm);
  background:var(--card2);padding:var(--sp-8) var(--sp-10)}
.mxc-type label{display:block;font-size:var(--fs-sm);color:var(--mut);margin-bottom:var(--sp-6)}
.mxc-type label b{color:var(--txt)}
.mxc-type input{width:100%;font-family:var(--font-mono)}
.mxc-foot{display:flex;gap:var(--sp-10);justify-content:flex-end;margin-top:var(--sp-6)}

/* ── Complément PlanetHoster N0C - UI ── */
.ph-steps{display:flex;margin-bottom:var(--sp-18);border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}
.ph-step{flex:1;padding:var(--sp-8) var(--sp-6) var(--sp-8);font-size:var(--fs-2xs);font-weight:var(--fw-strong);cursor:pointer;border:none;background:var(--card2);color:var(--mut);transition:background .15s,color .15s;line-height:1.3;text-align:center}
.ph-step:not(:last-child){border-right:1px solid var(--line)}
.ph-step:hover{background:var(--card);color:var(--txt)}
.ph-step.on{background:var(--accent);color:var(--on-solid)}
.ph-step-n{display:block;font-size:var(--fs-base);font-weight:var(--fw-bold);line-height:1.1;margin-bottom:var(--sp-2);opacity:.5}
.ph-step.on .ph-step-n{opacity:1}

.ph-sec{display:flex;align-items:center;gap:var(--sp-8);margin:var(--sp-16) 0 var(--sp-10);padding-bottom:var(--sp-8);border-bottom:1px solid var(--line2)}
.ph-sec:first-child{margin-top:0}
.ph-sec svg.ic{width:15px;height:15px;color:var(--accent);flex:none}
.ph-sec-t{font-weight:var(--fw-strong);font-size:var(--fs-md);color:var(--txt)}
.ph-sec-s{font-size:var(--fs-xs);color:var(--mut);margin-left:auto;max-width:52%;text-align:right;line-height:var(--lh-snug)}

.ph-label{display:block;font-size:var(--fs-sm);font-weight:var(--fw-strong);color:var(--mut);margin:var(--sp-10) 0 var(--sp-4);letter-spacing:.01em}
.ph-label:first-child{margin-top:0}
.ph-label .badge{margin-left:var(--sp-6);vertical-align:middle}
.ph-hint{font-size:var(--fs-xs);color:var(--mut2);margin:var(--sp-2) 0 var(--sp-8);line-height:1.45}

.ph-tip{background:color-mix(in srgb,var(--accent) 6%,var(--card2));border:1px solid color-mix(in srgb,var(--accent) 18%,var(--line));border-radius:var(--radius-sm);padding:var(--sp-8) var(--sp-12);font-size:var(--fs-sm);color:var(--mut);line-height:var(--lh-normal);margin-bottom:var(--sp-12)}
.ph-tip b{color:var(--txt);font-weight:var(--fw-strong)}
.ph-warn-tip{background:color-mix(in srgb,var(--warn) 8%,var(--card2));border:1px solid color-mix(in srgb,var(--warn) 22%,var(--line));border-radius:var(--radius-sm);padding:var(--sp-8) var(--sp-12);font-size:var(--fs-sm);color:var(--mut);line-height:var(--lh-normal);margin-bottom:var(--sp-12);display:flex;gap:var(--sp-8);align-items:flex-start}
.ph-warn-tip svg.ic{width:14px;height:14px;color:var(--warn);flex:none;margin-top:var(--sp-1)}

.ph-field-row{display:flex;gap:var(--sp-8);align-items:flex-end;margin-bottom:var(--sp-10)}
.ph-field-row>*{flex:1;min-width:0}
.ph-field-row>.flex-none{flex:none}

.ph-test-row{display:flex;align-items:center;gap:var(--sp-10);margin:var(--sp-10) 0}
.ph-test-out{font-size:var(--fs-sm);font-weight:var(--fw-strong);padding:var(--sp-2) var(--sp-8);border-radius:var(--radius-pill);flex:none}
.ph-test-out.ok{background:color-mix(in srgb,var(--ok) 12%,transparent);color:var(--ok)}
.ph-test-out.err{background:color-mix(in srgb,var(--err) 12%,transparent);color:var(--err)}

.ph-result{padding:var(--sp-10) var(--sp-12);border-radius:var(--radius-sm);font-size:var(--fs-md);font-weight:var(--fw-strong);margin-bottom:var(--sp-6);display:flex;align-items:center;gap:var(--sp-8)}
.ph-result.ok{background:color-mix(in srgb,var(--ok) 10%,var(--card2));color:var(--ok);border:1px solid color-mix(in srgb,var(--ok) 22%,var(--line))}
.ph-result.err{background:color-mix(in srgb,var(--err) 10%,var(--card2));color:var(--err);border:1px solid color-mix(in srgb,var(--err) 22%,var(--line))}

.ph-steps-out{display:flex;flex-direction:column;gap:var(--sp-2);margin-top:var(--sp-8)}
.ph-step-row{display:flex;gap:var(--sp-10);align-items:baseline;font-size:var(--fs-sm);padding:var(--sp-4) var(--sp-8);border-radius:var(--radius-sm)}
.ph-step-row.s-ok{background:color-mix(in srgb,var(--ok) 8%,var(--card2))}
.ph-step-row.s-err{background:color-mix(in srgb,var(--err) 8%,var(--card2))}
.ph-step-row .si{font-size:var(--fs-md);width:15px;text-align:center;flex:none}
.ph-step-row.s-ok .si{color:var(--ok)}
.ph-step-row.s-err .si{color:var(--err)}
.ph-step-row.s-warn .si{color:var(--warn)}
.ph-step-row .sl{font-weight:var(--fw-strong);color:var(--txt);white-space:nowrap;flex:none}
.ph-step-row .sm{color:var(--mut);min-width:0;overflow:hidden;text-overflow:ellipsis}
.ph-step-row .sc{font-size:var(--fs-xs);color:var(--mut2);margin-left:auto;white-space:nowrap;flex:none}

.ph-svc-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-8);margin:var(--sp-4) 0 var(--sp-6)}
.ph-svc-btn{border:1px solid var(--line);border-radius:var(--radius-sm);padding:var(--sp-12) var(--sp-14);cursor:pointer;background:var(--card2);text-align:left;transition:border-color .15s,background .15s}
.ph-svc-btn:hover{border-color:var(--accent);background:var(--card)}
.ph-svc-btn svg.ic{width:18px;height:18px;color:var(--accent);margin-bottom:var(--sp-6);display:block}
.ph-svc-name{display:block;font-weight:var(--fw-strong);font-size:var(--fs-md);color:var(--txt)}
.ph-svc-desc{display:block;font-size:var(--fs-xs);color:var(--mut);margin-top:var(--sp-2);line-height:var(--lh-snug)}

.ph-list-item{display:flex;gap:var(--sp-8);align-items:center;padding:var(--sp-6) 0;border-bottom:1px solid var(--line2);font-size:var(--fs-md)}
.ph-list-item:last-child{border-bottom:0}
.ph-list-name{font-weight:var(--fw-strong);flex:none}
.ph-list-meta{font-size:var(--fs-xs);color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ph-list-sp{flex:1}

.ph-toggle-card{display:flex;align-items:flex-start;gap:var(--sp-12);padding:var(--sp-10) var(--sp-14);background:var(--card2);border:1px solid var(--line);border-radius:var(--radius-sm);margin-bottom:var(--sp-12)}
.ph-toggle-card input[type=checkbox]{margin-top:var(--sp-2);flex:none}
.ph-toggle-card label{font-size:var(--fs-md);font-weight:var(--fw-medium);color:var(--txt);cursor:pointer;flex:1}
.ph-toggle-card .mini{flex:none;align-self:flex-start}
.ph-tc-sub{display:block;font-size:var(--fs-xs);color:var(--mut);margin-top:var(--sp-2);font-weight:var(--fw-regular)}

.ph-conn-dot{font-size:var(--fs-2xs);vertical-align:1px;pointer-events:none}

/* ── cap:infra - panneau « Tes serveurs & sites » ── */
.inf-intro{display:flex;gap:var(--sp-8);align-items:flex-start;
  background:color-mix(in srgb,var(--accent) 6%,var(--card2));
  border:1px solid color-mix(in srgb,var(--accent) 18%,var(--line));border-radius:var(--radius-sm);
  padding:var(--sp-10) var(--sp-12);font-size:var(--fs-sm);color:var(--mut);line-height:var(--lh-normal);margin-bottom:var(--sp-16)}
.inf-intro svg.ic{width:15px;height:15px;color:var(--accent);flex:none;margin-top:var(--sp-1)}
.inf-intro b{color:var(--txt);font-weight:var(--fw-strong)}

.inf-empty{text-align:center;color:var(--mut);font-size:var(--fs-sm);line-height:1.55;
  padding:var(--sp-26) var(--sp-18);border:1px dashed var(--line);border-radius:var(--radius);background:var(--card2)}
.inf-empty svg.ic{width:26px;height:26px;color:var(--mut2);margin-bottom:var(--sp-8)}
.inf-empty b{color:var(--txt)}
.inf-empty b:first-of-type{display:block;font-size:var(--fs-md);margin-bottom:var(--sp-4)}

/* Carte par nœud : en-tête + tuiles de stats + liste de sites */
.inf-node{border:1px solid var(--line);border-radius:var(--radius);background:var(--card2);
  overflow:hidden;margin-bottom:var(--sp-14)}
.inf-node:last-child{margin-bottom:0}
.inf-node.off{opacity:.92}
.inf-node-head{display:flex;align-items:center;gap:var(--sp-10);padding:var(--sp-12) var(--sp-14)}
.inf-node-id{display:flex;align-items:center;gap:var(--sp-10);flex:1;min-width:0}
.inf-node-dot{width:9px;height:9px;border-radius:50%;flex:none;background:var(--ok);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--ok) 22%,transparent)}
.inf-node-dot.down{background:var(--err);box-shadow:0 0 0 3px color-mix(in srgb,var(--err) 22%,transparent)}
.inf-node-name{font-weight:var(--fw-bold);font-size:var(--fs-base);letter-spacing:-.01em;color:var(--txt)}
.inf-node-sub{font-size:var(--fs-xs);color:var(--mut);font-family:var(--font-mono);margin-top:var(--sp-2)}
.inf-node-rm,.inf-node-ed{flex:none}

.inf-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-1);background:var(--line);
  border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.inf-stat{background:var(--card);padding:var(--sp-8) var(--sp-10);text-align:center}
.inf-stat-v{display:block;font-size:var(--fs-base);font-weight:var(--fw-bold);color:var(--txt);letter-spacing:var(--ls-tight);line-height:1.1}
.inf-stat-k{display:block;font-size:var(--fs-2xs);font-weight:var(--fw-strong);letter-spacing:.04em;text-transform:uppercase;color:var(--mut);margin-top:var(--sp-2)}

.inf-sites{padding:var(--sp-2) var(--sp-14) var(--sp-8)}
.inf-site{display:flex;align-items:center;gap:var(--sp-10);padding:var(--sp-8) 0;border-top:1px solid var(--line2)}
.inf-site:first-child{border-top:0}
.inf-site-main{flex:1;min-width:0}
.inf-site-name{font-weight:var(--fw-strong);font-size:var(--fs-md);color:var(--txt)}
.inf-site-meta{display:block;font-size:var(--fs-xs);color:var(--mut);margin-top:var(--sp-2)}
.inf-site-actions{display:flex;align-items:center;gap:var(--sp-6);flex:none}
.inf-act{display:grid;place-items:center;width:30px;height:30px;padding:0}
.inf-act svg.ic{width:15px;height:15px}
.inf-site-none{color:var(--mut2);font-size:var(--fs-sm);padding:var(--sp-10) 0 var(--sp-4);line-height:var(--lh-normal)}

.inf-down{display:flex;align-items:center;gap:var(--sp-6);font-size:var(--fs-xs);color:var(--err);
  padding:0 var(--sp-14) var(--sp-12);line-height:1.4}
.inf-down svg.ic{width:14px;height:14px;flex:none}

.inf-legend{display:flex;flex-wrap:wrap;gap:var(--sp-6) var(--sp-16);margin-top:var(--sp-14);padding-top:var(--sp-12);
  border-top:1px solid var(--line2);font-size:var(--fs-xs);color:var(--mut)}
.inf-legend span{display:flex;align-items:center;gap:var(--sp-4)}
.inf-legend svg.ic{width:13px;height:13px;color:var(--mut2)}
.inf-legend b{color:var(--txt);font-weight:var(--fw-strong)}

/* ── Deploy Modal - rapport post-déploiement ── */
.dm-url{font-size:var(--fs-xs);color:var(--mut);font-family:var(--font-mono);word-break:break-all;display:block;margin-top:var(--sp-2)}
.dm-close-btn:disabled{opacity:.4;cursor:not-allowed}
.dm-report{margin-top:var(--sp-20);padding-top:var(--sp-18);border-top:1px solid var(--line)}
/* Header résultat */
.dm-rhead{display:flex;align-items:center;gap:var(--sp-12);padding-bottom:var(--sp-16);border-bottom:1px solid var(--line);margin-bottom:var(--sp-16)}
.dm-rhead-icon{width:38px;height:38px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;font-size:var(--fs-lg);flex:none}
.dm-rhead-icon.ok{background:color-mix(in srgb,var(--ok) 12%,transparent);color:var(--ok)}
.dm-rhead-icon.err{background:color-mix(in srgb,var(--err) 12%,transparent);color:var(--err)}
.dm-rhead-t{font-size:var(--fs-base);font-weight:var(--fw-strong);line-height:1.25;color:var(--fg)}
.dm-rhead-msg{font-size:var(--fs-xs);color:var(--mut);margin-top:var(--sp-2);font-family:var(--font-mono);word-break:break-all}
/* Grille métriques */
.dm-metrics2{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-1);
  background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-bottom:var(--sp-14)}
.dm-m2{background:var(--card,var(--bg));padding:var(--sp-10) var(--sp-8);text-align:center}
.dm-mk2{display:block;font-size:var(--fs-2xs);font-weight:var(--fw-bold);letter-spacing:.07em;text-transform:uppercase;color:var(--mut);margin-bottom:var(--sp-4)}
.dm-mv2{font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--fg);letter-spacing:-.025em;display:block;line-height:var(--lh-flat)}
.dm-mv2.ok{color:var(--ok)}
.dm-mv2.err{color:var(--err)}
/* Snapshot row */
.dm-snap-row{display:flex;align-items:center;gap:var(--sp-8);padding:var(--sp-8) var(--sp-12);
  background:var(--bg2);border-radius:var(--radius);margin-bottom:var(--sp-14)}
.dm-snap-ic{font-size:var(--fs-md);color:var(--mut);flex:none}
.dm-snap-lbl{font-size:var(--fs-2xs);font-weight:var(--fw-bold);letter-spacing:.07em;text-transform:uppercase;color:var(--mut);flex:none}
.dm-snap-val{font-size:var(--fs-xs);font-family:var(--font-mono);font-weight:var(--fw-strong);color:var(--fg);word-break:break-all}
/* Erreur dépliable */
.dm-err-det{margin-top:var(--sp-12);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.dm-err-det summary{padding:var(--sp-8) var(--sp-12);cursor:pointer;font-size:var(--fs-sm);font-weight:var(--fw-strong);background:var(--bg2);color:var(--mut)}
.dm-err-det summary:hover{background:var(--bg3,var(--bg2))}
.dm-err-det pre{margin:0;padding:var(--sp-12) var(--sp-14);font-size:var(--fs-xs);background:var(--bg);overflow:auto;max-height:160px;white-space:pre-wrap;word-break:break-all;color:var(--err)}
/* Bannière mise à jour disponible */
.dm-update-banner{display:flex;align-items:center;gap:var(--sp-12);padding:var(--sp-10) var(--sp-14);
  border-radius:var(--radius);background:color-mix(in srgb,var(--accent) 8%,transparent);
  border:1px solid color-mix(in srgb,var(--accent) 22%,transparent);margin-top:var(--sp-16)}
.dm-update-ic{font-size:var(--fs-base);flex:none;animation:dmBlink 2.2s ease-in-out infinite}
@keyframes dmBlink{0%,100%{opacity:.55}50%{opacity:1}}
.dm-update-txt{flex:1;min-width:0}
.dm-update-t{font-size:var(--fs-sm);font-weight:var(--fw-strong);color:var(--fg)}
.dm-update-s{font-size:var(--fs-xs);color:var(--mut);margin-top:var(--sp-2)}

/* ── Aide-mémoire raccourcis clavier (lot U4) ── */
.dh-kbd-table{width:100%;border-collapse:collapse;font-size:var(--fs-md)}
.dh-kbd-table td{padding:var(--sp-6) var(--sp-10);border-bottom:1px solid var(--line)}
.dh-kbd-table tr:last-child td{border-bottom:none}
.dh-kbd-table td:first-child{white-space:nowrap;width:1%}
.dh-kbd-table kbd{display:inline-block;min-width:22px;padding:var(--sp-2) var(--sp-6);text-align:center;
  font:12px/1.4 var(--font-mono,ui-monospace,Menlo,monospace);color:var(--txt);
  background:var(--bg);border:1px solid var(--line);border-bottom-width:2px;border-radius:var(--radius-sm)}

/* ── Palette de commandes ⌘K (lot U4) ── */
.dhpal-overlay{position:fixed;inset:0;z-index:var(--z-popover,10000);background:rgba(0,0,0,.42);
  display:flex;align-items:flex-start;justify-content:center;padding-top:14vh;backdrop-filter:blur(2px)}
.dhpal{width:min(560px,92vw);background:var(--card);border:1px solid var(--line);
  border-radius:var(--radius,10px);box-shadow:var(--elev-2);overflow:hidden}
.dhpal-input{width:100%;box-sizing:border-box;padding:var(--sp-14) var(--sp-16);font-size:var(--fs-base);color:var(--txt);
  background:transparent;border:none;border-bottom:1px solid var(--line);outline:none}
.dhpal-list{max-height:min(46vh,420px);overflow:auto;padding:var(--sp-6)}
.dhpal-row{display:flex;align-items:center;gap:var(--sp-10);padding:var(--sp-8) var(--sp-10);border-radius:var(--radius-sm,8px);
  font-size:var(--fs-md);color:var(--txt);cursor:pointer}
.dhpal-row svg.ic{width:16px;height:16px;flex:none;color:var(--mut)}
.dhpal-row.active{background:color-mix(in srgb,var(--accent) 14%,transparent)}
.dhpal-row.active svg.ic{color:var(--accent)}
.dhpal-lbl{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dhpal-hint{flex:none;font-size:var(--fs-xs);color:var(--mut2)}
.dhpal-empty{padding:var(--sp-18);text-align:center;color:var(--mut);font-size:var(--fs-md)}
.dhpal-foot{display:flex;gap:var(--sp-14);padding:var(--sp-8) var(--sp-14);border-top:1px solid var(--line);
  font-size:var(--fs-xs);color:var(--mut2)}

/* ── Validation inline des formulaires (dhFieldError, 08-toast-modal.js) ── */
.field-err{font-size:var(--fs-sm);color:var(--err);margin-top:var(--sp-4)}
[aria-invalid="true"]{border-color:var(--err)!important}

}
