/* ============================================================
   CETEMOH · Utilities
   Centralisation des style="..." inline répétés (P1 audit).
   Generation ONCE from utils_map (build tooling); keep in sync.
   Charge en DERNIER dans les deux layouts => priorite sur les
   composants a memoire d'equal specificity (equivalent inline).
   ============================================================ */

.u-inline { display:inline; }
.u-flex-1 { flex:1; }
.u-w-100 { width:100%; }
.u-w-auto { width:auto; }
.u-w-auto-min200 { width:auto;
    min-width:200px; }
.u-wauto-chip { width:auto;
    padding:7px 10px;
    font-size:.8rem; }
.u-w100-fs8 { width:100%;
    font-size:.8rem; }
.u-w-140 { width:140px; }
.u-w-150 { width:150px; }
.u-w-130 { width:130px; }
.u-w-120 { width:120px; }
.u-w-110 { width:110px; }
.u-w-100 { width:100px; }
.u-w-180 { width:180px; }
.u-w180-fs82 { width:180px;
    font-size:.82rem; }
.u-w-200 { width:200px; }
.u-w80-fs7 { width:80px;
    font-size:.7rem; }
.u-w-125 { width:125px; }
.u-maxw-400 { max-width:400px; }
.u-maxw-460 { max-width:460px; }
.u-maxw-420 { max-width:420px; }
.u-minw-120 { min-width:120px; }
.u-minw-80-center { min-width:80px;
    text-align:center; }
.u-label { min-width:80px;
    color:var(--text-faint);
    font-size:.8rem;
    text-transform:uppercase;
    letter-spacing:.5px; }
.u-items-start { align-items:start; }
.u-nowrap { white-space:nowrap; }
.u-pointer { cursor:pointer; }
.u-scroll-x { overflow-x:auto; }
.u-scroll-y { max-height:400px;
    overflow-y:auto; }
.u-flex-8 { display:flex;
    gap:8px; }
.u-flex-12 { display:flex;
    gap:12px; }
.u-flex-6 { display:flex;
    gap:6px; }
.u-flex-4 { display:flex;
    gap:4px; }
.u-flex-8-center { display:flex;
    gap:8px;
    align-items:center; }
.u-flex-8-center-wrap { display:flex;
    gap:8px;
    align-items:center;
    flex-wrap:wrap; }
.u-flex-8-start { display:flex;
    gap:8px;
    align-items:flex-start; }
.u-flex-8-wrap { display:flex;
    gap:8px;
    flex-wrap:wrap; }
.u-flex-4-wrap { display:flex;
    gap:4px;
    flex-wrap:wrap; }
.u-flex-between-wrap { display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:16px;
    flex-wrap:wrap; }
.u-flex-between-mb20 { display:flex;
    justify-content:space-between;
    align-items:center;
    margin-bottom:20px; }
.u-flex-center-10-m0 { display:flex;
    align-items:center;
    gap:10px;
    margin:0; }
.u-flex-12-wrap-mb8 { display:flex;
    gap:12px;
    margin-bottom:8px;
    flex-wrap:wrap; }
.u-flex-12-start-mb14 { display:flex;
    gap:12px;
    margin-bottom:14px;
    align-items:flex-start; }
.u-flex-end-mt16 { display:flex;
    gap:8px;
    justify-content:flex-end;
    margin-top:16px; }
.u-flex-end-mt20 { display:flex;
    gap:8px;
    justify-content:flex-end;
    margin-top:20px; }
.u-flex-end { display:flex;
    gap:8px;
    justify-content:flex-end; }
.u-flex-20-mb30 { display:flex;
    gap:20px;
    margin-bottom:30px; }
.u-flex-wrap-10-mt4 { display:flex;
    flex-wrap:wrap;
    gap:10px;
    margin-top:4px; }
.u-wrap8-mb16 { flex-wrap:wrap;
    gap:8px;
    margin-bottom:16px; }
.u-chip-toggle { display:flex;
    align-items:center;
    gap:6px;
    font-size:14px;
    cursor:pointer;
    padding:4px 10px;
    border:1px solid var(--border);
    border-radius:var(--radius);
    background:var(--bg-card); }
.u-grid-2 { display:grid;
    grid-template-columns:1fr 1fr;
    gap:16px; }
.u-grid-2-gap12 { display:grid;
    grid-template-columns:1fr 1fr;
    gap:12px; }
.u-m0 { margin:0; }
.u-m-8-0-0-16-fs85 { margin:8px 0 0 16px;
    font-size:0.85rem; }
.u-mt4-pre { margin:4px 0 0;
    white-space:pre-wrap; }
.u-m-3-0-0-0-w90 { margin:3px 0 0 0;
    width:90px; }
.u-my-12 { margin:12px 0; }
.mt-12 { margin-top:12px; }
.mt-20 { margin-top:20px; }
.mt-16 { margin-top:16px; }
.mt-24 { margin-top:24px; }
.mt-8 { margin-top:8px; }
.mt-6 { margin-top:6px; }
.mt-4 { margin-top:4px; }
.mb-16 { margin-bottom:16px; }
.mb-24 { margin-bottom:24px; }
.mb-12 { margin-bottom:12px; }
.mb-8 { margin-bottom:8px; }
.mb-20 { margin-bottom:20px; }
.mb-0 { margin-bottom:0; }
.mb-10 { margin-bottom:10px; }
.mb-6 { margin-bottom:6px; }
.mb-15 { margin-bottom:15px; }
.u-mb16-wrap8 { margin-bottom:16px;
    gap:8px;
    flex-wrap:wrap; }
.u-mr-6 { margin-right:6px; }
.u-mr-8 { margin-right:8px; }
.u-mt12-muted-13 { margin-top:12px;
    color:var(--text-muted);
    font-size:13px; }
.u-fs-65 { font-size:.65rem; }
.u-fs-62 { font-size:.62rem; }
.u-fs-72 { font-size:.72rem; }
.u-fs-7 { font-size:.7rem; }
.u-fs-8 { font-size:.8rem; }
.u-fs-6 { font-size:.6rem; }
.u-fs-64 { font-size:.64rem; }
.u-fs-68 { font-size:.68rem; }
.u-fs-74 { font-size:.74rem; }
.u-fs-78 { font-size:.78rem; }
.u-fs-12 { font-size:1.2rem; }
.u-text-xs { font-size:.75rem; }
.u-text-sm { font-size:.82rem; }
.u-text-md { font-size:.85rem; }
.u-fs-9-m0 { font-size:.9rem;
    margin:0; }
.u-fs-95-mb12 { font-size:.95rem;
    margin-bottom:12px; }
.u-fs-72-mt6 { font-size:.72rem;
    margin-top:6px; }
.u-fs-7-ml4 { font-size:.7rem;
    margin-left:4px; }
.u-fs-68-mid { font-size:.68rem;
    vertical-align:middle; }
.u-fs85-muted-auto { font-size:.85rem;
    color:var(--text-muted);
    margin-right:auto; }
.u-fs85-pl20 { font-size:.85rem;
    padding-left:20px; }
.u-fs20-success { font-size:2rem;
    color:var(--success); }
.u-fs8-600 { font-size:.8rem;
    font-weight:600; }
.u-fs8-w125 { font-size:.8rem;
    width:125px; }
.u-600-nowrap { font-weight:600;
    white-space:nowrap; }
.u-700-mb6 { font-weight:700;
    font-size:.85rem;
    margin-bottom:6px; }
.u-700 { font-weight:700; }
.u-400-fs65 { font-weight:400;
    font-size:.65rem; }
.u-400-fs12 { font-weight:400;
    font-size:12px; }
.text-center { text-align:center; }
.u-center-p32 { text-align:center;
    padding:32px; }
.u-center-p24 { text-align:center;
    padding:24px; }
.u-center-p40-muted { text-align:center;
    padding:40px;
    color:var(--text-muted); }
.u-text-success { color:var(--success); }
.u-text-danger { color:var(--danger); }
.u-text-warning { color:var(--warning); }
.u-text-info { color:var(--info); }
.u-text-muted { color:var(--text-muted); }
.u-text-muted-mb20 { color:var(--text-muted);
    margin-bottom:20px; }
.u-text-muted-14 { color:var(--text-muted);
    font-size:14px;
    line-height:1.6; }
.u-primary-mb4 { color:var(--primary);
    margin-bottom:4px; }
.u-section-title { color:var(--primary);
    font-size:1.15rem;
    margin:24px 0 10px; }
.u-teal-tint { background:rgba(42,122,122,.08);
    border-color:rgba(42,122,122,.2);
    color:var(--teal); }
.u-dot-success { background:var(--success);
    color:#fff;
    border-radius:50%;
    width:22px;
    height:22px;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:11px;
    flex-shrink:0;
    margin-top:2px; }
.u-dot-primary { background:var(--primary);
    color:#fff;
    border-radius:50%;
    width:22px;
    height:22px;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:11px;
    flex-shrink:0;
    margin-top:2px; }
.u-accent-badge { background:var(--accent);
    color:#1a1a1a;
    font-weight:800;
    padding:8px 12px;
    border-radius:8px;
    font-size:14px; }
.u-chip { padding:2px 8px;
    font-size:.75rem; }
.u-chip-btn { padding:2px 10px;
    font-size:.75rem;
    border:none;
    cursor:pointer; }
.u-chip-outline { padding:4px 6px;
    font-size:.75rem;
    border:1px solid var(--border);
    border-radius:var(--radius);
    margin-bottom:4px; }
.u-p0-ovh { padding:0;
    overflow:hidden; }
.u-row-head { padding:10px 14px;
    border-bottom:1px solid var(--border,#e2e8f0);
    display:flex;
    align-items:center;
    justify-content:space-between; }
.u-code { background:var(--bg-muted);
    padding:8px;
    border-radius:4px;
    font-size:0.8rem;
    overflow-x:auto; }
.u-thumb { height:40px;
    width:60px;
    object-fit:cover;
    border-radius:4px; }
.u-thumb-tall { max-height:100px;
    border-radius:4px; }
.u-list-none-mt16 { list-style:none;
    margin-top:16px; }

@media (max-width: 720px) {
    .u-grid-2 { grid-template-columns: 1fr; }
}
