/* Module Distrib : composants propres, independants du build Tailwind fige
   (docs/FRONTEND_VENDORING.md). Mobile d'abord, gros boutons. */
.dx-card { background:#fff; border:1px solid #F3F4F6; border-radius:1rem; box-shadow:0 1px 2px rgba(0,0,0,.04); padding:1.25rem; margin-bottom:1rem; }
.dx-h1 { font-size:1.375rem; font-weight:800; color:#111827; margin:0 0 .25rem; }
.dx-h2 { font-size:1rem; font-weight:700; color:#111827; margin:0 0 .75rem; }
.dx-sub { font-size:.875rem; color:#6B7280; margin:0 0 1rem; }
.dx-nav { display:flex; gap:.5rem; overflow-x:auto; margin-bottom:1.25rem; padding-bottom:.25rem; }
.dx-nav a { white-space:nowrap; padding:.5rem .875rem; border-radius:.75rem; font-size:.875rem; font-weight:600; color:#4B5563; background:#fff; border:1px solid #E5E7EB; text-decoration:none; }
.dx-nav a.is-active { background:#FFF5F3; border-color:#FF4D2E; color:#FF4D2E; }
.dx-btn { display:inline-block; text-align:center; padding:.75rem 1.25rem; border-radius:.75rem; font-weight:700; font-size:.9375rem; background:#FF4D2E; color:#fff; border:0; cursor:pointer; text-decoration:none; min-height:2.75rem; }
.dx-btn:hover { background:#E63A1C; }
.dx-btn-block { display:block; width:100%; }
.dx-btn-ghost { background:#fff; color:#374151; border:1.5px solid #E5E7EB; }
.dx-btn-ghost:hover { background:#F9FAFB; }
.dx-btn-danger { background:#fff; color:#DC2626; border:1.5px solid #FCA5A5; }
.dx-btn-danger:hover { background:#FEF2F2; }
.dx-btn-sm { padding:.5rem .875rem; min-height:2.25rem; font-size:.8125rem; }
.dx-row { display:flex; align-items:center; justify-content:space-between; gap:.75rem; padding:.75rem 0; border-top:1px solid #F3F4F6; }
.dx-row:first-child { border-top:0; }
.dx-row > .dx-grow { min-width:0; flex:1; }
.dx-name { font-weight:700; color:#111827; overflow-wrap:anywhere; }
.dx-meta { font-size:.8125rem; color:#6B7280; }
.dx-badge { display:inline-block; font-size:.75rem; font-weight:700; padding:.125rem .5rem; border-radius:999px; background:#F3F4F6; color:#4B5563; }
.dx-badge-ok { background:#DCFCE7; color:#166534; }
.dx-badge-warn { background:#FEF3C7; color:#92400E; }
.dx-badge-bad { background:#FEE2E2; color:#991B1B; }
.dx-alert { border-radius:.75rem; padding:.75rem 1rem; font-size:.875rem; margin-bottom:1rem; background:#FEF3C7; border:1px solid #FCD34D; color:#92400E; }
.dx-alert-bad { background:#FEF2F2; border-color:#FCA5A5; color:#991B1B; }
.dx-alert-ok { background:#F0FDF4; border-color:#86EFAC; color:#166534; }
.dx-grid { display:grid; grid-template-columns:1fr 1fr; gap:.75rem; }
.dx-stat { text-align:center; padding:.75rem; border-radius:.75rem; background:#F9FAFB; }
.dx-stat b { display:block; font-size:1.25rem; color:#111827; }
.dx-stat span { font-size:.75rem; color:#6B7280; }
.dx-inline { display:flex; gap:.5rem; align-items:flex-end; flex-wrap:wrap; }
.dx-inline > div { flex:1; min-width:6rem; }
.dx-phone { display:flex; gap:.5rem; }
.dx-phone select { width:9.5rem; flex-shrink:0; }
.dx-secret { font-family:ui-monospace,monospace; font-size:1.5rem; font-weight:800; letter-spacing:.08em; text-align:center; padding:1rem; background:#FFF5F3; border:2px dashed #FF4D2E; border-radius:.75rem; user-select:all; }
.dx-thumbs { display:flex; gap:.5rem; flex-wrap:wrap; }
.dx-thumb { position:relative; width:5rem; }
.dx-thumb img { width:5rem; height:5rem; object-fit:cover; border-radius:.5rem; border:1px solid #E5E7EB; }
.dx-banner { display:block; background:#FFF5F3; border:1.5px solid #FF4D2E; border-radius:1rem; padding:.875rem 1rem; margin-bottom:1rem; }
.dx-banner p { margin:0; }
[hidden] { display:none !important; }
.dx-btn-xl { padding:1rem 1.25rem; font-size:1.0625rem; min-height:3.5rem; }
.dx-bar { height:.5rem; border-radius:999px; background:#F3F4F6; overflow:hidden; }
.dx-bar > i { display:block; height:100%; background:#22C55E; }
.dx-bar-bad > i { background:#DC2626; }
.dx-bar-warn > i { background:#FFB800; }
