/* =====================================================================
   ComptaMaster — Charte UI commune (fichier statique, sans compilation)
   ---------------------------------------------------------------------
   Chargé une seule fois dans resources/views/partial/head.blade.php,
   juste après app.min.css (cache-busting par filemtime).

   Règles :
   - Jetons préfixés --cm-* uniquement (aucune collision avec l'existant).
   - Classes préfixées cm- uniquement ; aucun sélecteur d'élément nu
     (body, input, table, h1…) : une page non migrée ne change pas.
   - Mobile-first : styles de base = téléphone, puis paliers
     640px (sm), 768px (md), 992px (lg), 1200px (xl) en min-width.
   - Référence visuelle : tableau de bord (pages/index.blade.php).
   - Catalogue illustré : page locale /charte ; documentation : charte-ui.md.
   ===================================================================== */

/* ---------------------------------------------------------------------
   1. Jetons
   --------------------------------------------------------------------- */
:root{
  --cm-primary:#0B4650;
  --cm-primary-light:#165b67;
  --cm-accent:#00C49A;
  --cm-accent-hover:#00a884;
  --cm-danger:#E74C3C;
  --cm-danger-hover:#c0392b;
  --cm-warning:#F59E0B;
  --cm-info:#3B82F6;
  --cm-text:#1e293b;
  --cm-text-muted:#64748b;
  --cm-text-faint:#94a3b8;
  --cm-border:#e2e8f0;
  --cm-border-soft:#f1f5f9;
  --cm-surface:#ffffff;
  --cm-surface-alt:#f8fafc;
  --cm-bg:#f1f5f9;
  --cm-shadow:0 4px 6px -1px rgba(0,0,0,.05),0 2px 4px -1px rgba(0,0,0,.03);
  --cm-shadow-lg:0 12px 30px rgba(15,23,42,.12);
  --cm-shadow-primary:0 10px 25px rgba(11,70,80,.25);
  --cm-focus-ring:0 0 0 3px rgba(0,196,154,.12);
  --cm-radius-sm:10px;
  --cm-radius:12px;
  --cm-radius-md:14px;
  --cm-radius-lg:16px;
  --cm-radius-xl:20px;
  --cm-font:'Inter',sans-serif;
  --cm-font-mono:ui-monospace,SFMono-Regular,Menlo,monospace;
  --cm-tap:44px;
  /* Zone du trait d'accueil des iPhone. Navigateur : env() ; application iPhone : l'application pose cette variable sur <html> (MainViewController.swift). */
  --cm-safe-bottom:env(safe-area-inset-bottom,0px);
}

/* ---------------------------------------------------------------------
   2. Mise en page
   --------------------------------------------------------------------- */
.cm-page{font-family:var(--cm-font);color:var(--cm-text);}
.cm-container{max-width:1200px;margin:0 auto;padding:1.25rem 1rem;font-family:var(--cm-font);color:var(--cm-text);}
.cm-container-narrow{max-width:760px;}
@media (min-width:768px){.cm-container{padding:2rem;}}

.cm-grid{display:grid;grid-template-columns:1fr;gap:1.5rem;}
@media (min-width:992px){
  .cm-grid-2{grid-template-columns:1fr 1fr;}
  .cm-grid-3{grid-template-columns:repeat(3,1fr);}
  .cm-grid-main{grid-template-columns:2fr 1fr;}
}
.cm-sticky{position:static;}
@media (min-width:992px){.cm-sticky{position:sticky;top:1.5rem;}}

/* ---------------------------------------------------------------------
   3. En-tête de page
   --------------------------------------------------------------------- */
.cm-header{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;min-width:0;}
.cm-header-icon{width:48px;height:48px;border-radius:14px;background:var(--cm-primary);color:#fff;display:grid;place-items:center;font-size:1.2rem;box-shadow:var(--cm-shadow-primary);flex-shrink:0;}
.cm-title{font-size:1.3rem;font-weight:800;color:var(--cm-primary);letter-spacing:-.5px;margin:0;line-height:1.2;}
.cm-subtitle{color:var(--cm-text-muted);font-size:.85rem;margin:.15rem 0 0;}
@media (min-width:768px){
  .cm-header-icon{width:52px;height:52px;font-size:1.3rem;}
  .cm-title{font-size:1.5rem;}
  .cm-subtitle{font-size:.9rem;}
}
.cm-header-row{display:flex;flex-direction:column;align-items:stretch;gap:1rem;margin-bottom:1.5rem;}
.cm-header-row .cm-header{margin-bottom:0;}
.cm-header-actions{display:flex;flex-wrap:wrap;gap:.5rem;}
.cm-header-actions .cm-btn{flex:1 1 auto;}
@media (min-width:768px){
  .cm-header-row{flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:wrap;}
  .cm-header-actions .cm-btn{flex:0 0 auto;}
}

/* ---------------------------------------------------------------------
   4. Onglets (liens ou onglets Bootstrap .nav)
   --------------------------------------------------------------------- */
.cm-tabs{display:flex;flex-wrap:wrap;gap:.4rem;margin:0 0 1.25rem;padding:0;list-style:none;border:none;}
.cm-tab{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:40px;padding:.45rem .75rem;margin:0;border-radius:var(--cm-radius);font-weight:600;font-size:.85rem;color:var(--cm-text-muted);background:var(--cm-surface);border:1px solid var(--cm-border);text-decoration:none;white-space:nowrap;cursor:pointer;transition:.15s;}
.cm-tab:hover{color:var(--cm-primary);border-color:var(--cm-primary);text-decoration:none;}
.cm-tab.active,.cm-tab.active:hover{background:var(--cm-primary);color:#fff;border-color:var(--cm-primary);box-shadow:0 6px 16px rgba(11,70,80,.2);}
.cm-tab .cm-pill{margin-left:.15rem;}
.cm-tab.active .cm-pill{background:rgba(255,255,255,.2);color:#fff;}
@media (min-width:768px){.cm-tabs{gap:.5rem;margin-bottom:1.5rem;}.cm-tab{min-height:0;padding:.6rem 1rem;font-size:.85rem;}}

/* ---------------------------------------------------------------------
   5. Cartes / panneaux
   --------------------------------------------------------------------- */
.cm-card{background:var(--cm-surface);border-radius:var(--cm-radius-lg);padding:1.1rem;box-shadow:var(--cm-shadow);border:1px solid rgba(0,0,0,.04);margin-bottom:1.5rem;}
.cm-grid > .cm-card,.cm-stats > .cm-card{margin-bottom:0;}
@media (min-width:768px){.cm-card{border-radius:var(--cm-radius-xl);padding:1.5rem;}}
.cm-card-title{font-weight:700;font-size:1rem;margin:0 0 .35rem;display:flex;align-items:center;gap:.6rem;color:var(--cm-text);}
.cm-card-title i{color:var(--cm-primary);}
.cm-card-desc{font-size:.8rem;color:var(--cm-text-muted);margin:0 0 1.25rem;}
.cm-card-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:1rem;}
.cm-card-head .cm-card-title,.cm-card-head .cm-card-desc{margin-bottom:0;}

/* Bandeau mis en avant (dégradé primaire) */
.cm-banner{background:linear-gradient(135deg,var(--cm-primary),var(--cm-primary-light));color:#fff;border-radius:var(--cm-radius-xl);padding:1.25rem;margin-bottom:1.25rem;display:flex;flex-direction:column;gap:1rem;box-shadow:var(--cm-shadow-primary);}
.cm-banner-title{font-weight:800;font-size:1.05rem;}
.cm-banner-text{font-size:.82rem;opacity:.85;margin-top:.2rem;max-width:620px;}
@media (min-width:768px){.cm-banner{flex-direction:row;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;}}

/* Blocs colorés (ex. recette / dépense) */
.cm-block{border-radius:var(--cm-radius-lg);padding:1.1rem;margin-bottom:1.25rem;border:1px solid transparent;}
.cm-block-success{background:rgba(0,196,154,.05);border-color:rgba(0,196,154,.25);}
.cm-block-danger{background:rgba(231,76,60,.04);border-color:rgba(231,76,60,.2);}
.cm-block-info{background:rgba(59,130,246,.05);border-color:rgba(59,130,246,.2);}
.cm-block-muted{background:var(--cm-surface-alt);border-color:var(--cm-border);}
.cm-block-title{font-weight:700;font-size:1rem;margin:0 0 1rem;display:flex;align-items:center;gap:.5rem;}
@media (min-width:768px){.cm-block{padding:1.25rem;}}

/* ---------------------------------------------------------------------
   6. Indicateurs (KPI)
   --------------------------------------------------------------------- */
.cm-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin-bottom:1.25rem;}
.cm-stats-4{grid-template-columns:1fr 1fr;}
@media (min-width:640px){.cm-stats{grid-template-columns:repeat(3,1fr);gap:1.5rem;margin-bottom:1.5rem;}.cm-stats-2{grid-template-columns:1fr 1fr;}.cm-stats-4{grid-template-columns:1fr 1fr;}}
@media (min-width:992px){.cm-stats-4{grid-template-columns:repeat(4,1fr);}}
.cm-stat{background:var(--cm-surface);border-radius:var(--cm-radius-lg);padding:.85rem .9rem;box-shadow:var(--cm-shadow);border:1px solid rgba(0,0,0,.04);min-width:0;}
@media (min-width:768px){.cm-stat{padding:1.25rem 1.5rem;}.cm-stat-icon{width:42px;height:42px;border-radius:var(--cm-radius);margin-bottom:.85rem;font-size:1.1rem;}.cm-stat-label{font-size:.72rem;}.cm-stat-hint{font-size:.75rem;}}
.cm-stat-icon{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:.55rem;font-size:.95rem;background:rgba(11,70,80,.08);color:var(--cm-primary);}
.cm-stat-icon.is-accent{background:rgba(0,196,154,.1);color:var(--cm-accent);}
.cm-stat-icon.is-danger{background:rgba(231,76,60,.1);color:var(--cm-danger);}
.cm-stat-icon.is-warning{background:rgba(245,158,11,.12);color:var(--cm-warning);}
.cm-stat-icon.is-info{background:rgba(59,130,246,.1);color:var(--cm-info);}
.cm-stat-label{font-size:.66rem;color:var(--cm-text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin-bottom:.3rem;}
.cm-stat-value{font-size:1.15rem;font-weight:800;color:var(--cm-text);line-height:1.2;overflow-wrap:anywhere;}
@media (min-width:768px){.cm-stat-value{font-size:1.4rem;}}
.cm-stat-hint{font-size:.7rem;color:var(--cm-text-muted);margin-top:.35rem;}

/* ---------------------------------------------------------------------
   7. Listes en cartes (remplacent les tableaux)
   --------------------------------------------------------------------- */
.cm-list{display:flex;flex-direction:column;gap:.75rem;}
.cm-row{background:var(--cm-surface);border:1px solid var(--cm-border);border-radius:var(--cm-radius-md);padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.6rem;transition:.15s;}
.cm-row:hover{border-color:rgba(11,70,80,.35);box-shadow:var(--cm-shadow);}
.cm-row.is-muted{opacity:.6;}
@media (min-width:768px){.cm-row{flex-direction:row;align-items:center;justify-content:space-between;}}
.cm-row-main{display:flex;gap:.9rem;align-items:flex-start;min-width:0;flex:1 1 auto;}
.cm-row-body{min-width:0;}
.cm-row-icon{width:40px;height:40px;border-radius:var(--cm-radius);background:rgba(11,70,80,.08);color:var(--cm-primary);display:grid;place-items:center;flex-shrink:0;}
.cm-row-title{font-weight:700;font-size:.95rem;color:var(--cm-text);text-decoration:none;overflow-wrap:anywhere;}
a.cm-row-title:hover{color:var(--cm-primary);text-decoration:none;}
.cm-row-sub{font-size:.78rem;color:var(--cm-text-muted);margin-top:.15rem;}
.cm-row-side{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;}
@media (min-width:768px){.cm-row-side{justify-content:flex-end;flex-shrink:0;}}

/* ---------------------------------------------------------------------
   8. Tableaux chiffrés (exception : états comptables)
   --------------------------------------------------------------------- */
.cm-table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -1.1rem;padding:0 1.1rem;}
@media (min-width:768px){.cm-table-scroll{margin:0 -1.5rem;padding:0 1.5rem;}}
.cm-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.8rem;min-width:640px;}
.cm-table th{font-size:.68rem;text-transform:uppercase;letter-spacing:.4px;color:var(--cm-text-muted);font-weight:700;text-align:left;padding:.55rem .5rem;border-bottom:1px solid var(--cm-border);white-space:nowrap;background:var(--cm-surface);}
.cm-table td{padding:.5rem;border-bottom:1px solid var(--cm-border-soft);vertical-align:middle;}
.cm-table tbody tr:hover td{background:#fafcfc;}
.cm-table tfoot td{font-weight:800;border-top:2px solid var(--cm-border);border-bottom:none;}
.cm-table .cm-num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;}
.cm-table .cm-center{text-align:center;}
.cm-table tr.is-cancelled td{color:var(--cm-text-faint);}
.cm-table tr.is-cancelled td:not(:last-child){text-decoration:line-through;}
.cm-table-top td{vertical-align:top;}
@media (min-width:768px){.cm-table{font-size:.85rem;}.cm-table td{padding:.6rem .5rem;}}

/* ---------------------------------------------------------------------
   9. Fiche détail
   --------------------------------------------------------------------- */
.cm-dl{display:grid;grid-template-columns:1fr;gap:.9rem;margin:0;}
@media (min-width:640px){.cm-dl{grid-template-columns:1fr 1fr;}}
.cm-dl-span{grid-column:1 / -1;}
.cm-dt{font-size:.72rem;color:var(--cm-text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.4px;}
.cm-dd{font-size:.92rem;font-weight:600;margin:.15rem 0 0;white-space:pre-line;overflow-wrap:anywhere;}

/* ---------------------------------------------------------------------
   10. Badges
   --------------------------------------------------------------------- */
.cm-pill{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .6rem;border-radius:999px;font-size:.7rem;font-weight:700;white-space:nowrap;line-height:1.5;background:var(--cm-border-soft);color:var(--cm-text-muted);}
.cm-pill-success{background:rgba(0,196,154,.1);color:var(--cm-accent);}
.cm-pill-danger{background:rgba(231,76,60,.1);color:var(--cm-danger);}
.cm-pill-warning{background:rgba(245,158,11,.12);color:#b45309;}
.cm-pill-info{background:rgba(59,130,246,.1);color:var(--cm-info);}
.cm-pill-primary{background:rgba(11,70,80,.1);color:var(--cm-primary);}
.cm-pill-muted{background:var(--cm-border-soft);color:var(--cm-text-muted);}
.cm-pill-gold{background:#DAA520;color:#fff;font-size:.6rem;font-weight:800;padding:.1rem .35rem;border-radius:6px;}

/* ---------------------------------------------------------------------
   11. Formulaires
   --------------------------------------------------------------------- */
.cm-field{margin-bottom:1.25rem;min-width:0;}
.cm-label{display:block;font-weight:600;font-size:.85rem;color:var(--cm-text);margin-bottom:.45rem;}
.cm-required{color:var(--cm-danger);margin-left:.15rem;}
.cm-help{font-size:.75rem;color:var(--cm-text-muted);margin-top:.4rem;line-height:1.45;}
.cm-error{color:var(--cm-danger);font-size:.75rem;margin-top:.35rem;font-weight:600;}
/* 16px sur mobile : évite le zoom automatique d'iOS au focus */
.cm-input{display:block;width:100%;min-height:var(--cm-tap);padding:.6rem .9rem;border:2px solid var(--cm-border);border-radius:var(--cm-radius);font-family:inherit;font-size:1rem;font-weight:600;color:var(--cm-text);background-color:var(--cm-surface);transition:border-color .15s,box-shadow .15s;}
.cm-input:focus{outline:none;border-color:var(--cm-accent);box-shadow:var(--cm-focus-ring);}
.cm-input::placeholder{color:var(--cm-text-faint);font-weight:500;}
.cm-input:disabled,.cm-input[readonly]{background-color:var(--cm-surface-alt);color:var(--cm-text-muted);cursor:not-allowed;}
.cm-input.is-invalid{border-color:var(--cm-danger);}
select.cm-input,textarea.cm-input{font-weight:500;}
textarea.cm-input{min-height:90px;resize:vertical;}
@media (min-width:768px){.cm-input{font-size:.95rem;min-height:0;padding:.65rem .9rem;}}
/* iOS uniquement (@supports -webkit-touch-callout : Safari et WebView iPhone) : les champs date / mois / heure ont une largeur propre
   et débordent de leur carte malgré width:100%. On retire l'apparence native, on autorise le rétrécissement
   et on aligne la valeur à gauche (comme les autres champs). Android et ordinateur : aucun changement. */
@supports (-webkit-touch-callout:none){
input.cm-input[type="date"],input.cm-input[type="month"],input.cm-input[type="time"],input.cm-input[type="week"],input.cm-input[type="datetime-local"]{-webkit-appearance:none;appearance:none;min-width:0;max-width:100%;box-sizing:border-box;text-align:left;}
input.cm-input[type="date"]::-webkit-date-and-time-value,input.cm-input[type="month"]::-webkit-date-and-time-value,input.cm-input[type="time"]::-webkit-date-and-time-value,input.cm-input[type="week"]::-webkit-date-and-time-value,input.cm-input[type="datetime-local"]::-webkit-date-and-time-value{text-align:left;min-height:1.4em;margin:0;}
}

/* Champ + suffixe (unité, devise…) */
.cm-input-group{display:flex;align-items:center;gap:.5rem;max-width:220px;}
.cm-input-suffix{font-size:.85rem;font-weight:600;color:var(--cm-text-muted);white-space:nowrap;}
/* Champ + bouton d'ajout rapide */
.cm-input-add{display:flex;gap:.5rem;align-items:stretch;}
.cm-input-add > :first-child{flex:1;min-width:0;}
.cm-add-btn{width:var(--cm-tap);min-height:var(--cm-tap);flex-shrink:0;border-radius:var(--cm-radius);border:2px solid var(--cm-border);background:var(--cm-surface);color:var(--cm-primary);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s;}
.cm-add-btn:hover{border-color:var(--cm-accent);color:var(--cm-accent);}
/* Champ de recherche avec loupe */
.cm-search{position:relative;}
.cm-search > i{position:absolute;left:.9rem;top:50%;transform:translateY(-50%);color:var(--cm-text-faint);font-size:.85rem;pointer-events:none;}
.cm-search .cm-input{padding-left:2.4rem;}

/* Grilles de formulaire : 1 colonne sur mobile */
.cm-cols{display:grid;grid-template-columns:1fr;gap:0 1rem;}
.cm-span-all{grid-column:1 / -1;}
@media (min-width:768px){
  .cm-cols-2{grid-template-columns:1fr 1fr;}
  .cm-cols-3{grid-template-columns:repeat(3,1fr);}
  .cm-cols-4{grid-template-columns:repeat(4,1fr);}
  .cm-span-2{grid-column:span 2;}
}

/* Choix en cartes (radio / checkbox) */
.cm-choices{display:grid;grid-template-columns:1fr;gap:.75rem;}
@media (min-width:640px){.cm-choices{grid-template-columns:1fr 1fr;}.cm-choices-3{grid-template-columns:repeat(3,1fr);}}
.cm-choice{display:flex;gap:.75rem;align-items:flex-start;border:2px solid var(--cm-border);border-radius:var(--cm-radius-md);padding:.9rem 1rem;cursor:pointer;transition:.15s;background:var(--cm-surface);margin:0;}
.cm-choice:hover{border-color:var(--cm-accent);}
.cm-choice:has(input:checked){border-color:var(--cm-accent);background:rgba(0,196,154,.06);}
.cm-choice input{margin-top:.2rem;width:18px;height:18px;accent-color:var(--cm-accent);flex-shrink:0;}
.cm-choice-body{flex:1;min-width:0;}
.cm-choice-title{font-weight:700;font-size:.9rem;}
.cm-choice-desc{font-size:.75rem;color:var(--cm-text-muted);margin-top:.15rem;}
.cm-choice-side{font-weight:800;font-size:.9rem;white-space:nowrap;}

/* Case simple */
.cm-check{display:flex;align-items:center;gap:.5rem;min-height:var(--cm-tap);font-size:.85rem;font-weight:500;cursor:pointer;margin:0;}
.cm-check input{accent-color:var(--cm-accent);width:18px;height:18px;flex-shrink:0;}
@media (min-width:768px){.cm-check{min-height:0;}.cm-check input{width:16px;height:16px;}}

/* Puces sélectionnables */
.cm-chips{display:flex;flex-wrap:wrap;gap:.5rem;}
.cm-chip{display:inline-flex;align-items:center;gap:.35rem;min-height:38px;border:2px solid var(--cm-border);background:var(--cm-surface);border-radius:999px;padding:.4rem .9rem;font-size:.8rem;font-weight:700;cursor:pointer;transition:.15s;color:var(--cm-text);}
.cm-chip:hover{border-color:var(--cm-accent);}
.cm-chip.active,.cm-chip:has(input:checked){border-color:var(--cm-accent);background:rgba(0,196,154,.08);color:var(--cm-primary);}
.cm-chip input{position:absolute;opacity:0;pointer-events:none;}

/* Zone de dépôt photo / fichier */
.cm-upload{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-top:.25rem;}
.cm-upload-single{grid-template-columns:1fr;}
.cm-upload-btn{display:block;border:2px dashed #cbd5e1;background:var(--cm-surface-alt);border-radius:var(--cm-radius-md);padding:1.1rem .75rem;text-align:center;cursor:pointer;transition:all .2s;color:var(--cm-text-muted);font-weight:600;font-size:.85rem;margin:0;}
.cm-upload-btn:hover{background:rgba(0,196,154,.06);border-color:var(--cm-accent);color:var(--cm-primary);}
.cm-upload-btn i{font-size:1.4rem;display:block;margin-bottom:.4rem;}
.cm-upload-btn input[type="file"]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;}
.cm-upload-name{margin-top:.6rem;font-size:.85rem;font-weight:600;color:var(--cm-primary);display:flex;align-items:center;gap:6px;overflow-wrap:anywhere;}

/* Filtres : 1 colonne sur mobile, grille dès md */
.cm-filters{display:grid;grid-template-columns:minmax(0,1fr);gap:.75rem;margin-bottom:1.25rem;}
.cm-filters .cm-field{margin-bottom:0;}
@media (min-width:768px){
  .cm-filters{grid-template-columns:2fr 1fr 1fr auto;align-items:end;}
  .cm-filters-3{grid-template-columns:2fr 1fr auto;}
  .cm-filters-5{grid-template-columns:2fr 2fr 1fr 1fr auto;}
  .cm-filters-6{grid-template-columns:2fr 1fr 1fr 1fr 1fr auto;}
}
/* Sélecteur de période compact */
.cm-period{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;}
.cm-period .cm-input{width:auto;min-width:120px;flex:1 1 120px;}
@media (min-width:768px){.cm-period .cm-input{flex:0 0 auto;}}

/* ---------------------------------------------------------------------
   12. Boutons
   --------------------------------------------------------------------- */
.cm-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:var(--cm-tap);border:1px solid transparent;border-radius:var(--cm-radius);padding:.65rem 1.25rem;font-family:inherit;font-weight:700;font-size:.9rem;line-height:1.2;cursor:pointer;transition:.15s;text-decoration:none;white-space:nowrap;}
.cm-btn:hover,.cm-btn:focus{text-decoration:none;}
.cm-btn:focus-visible{outline:none;box-shadow:var(--cm-focus-ring);}
.cm-btn:disabled,.cm-btn.disabled{opacity:.55;cursor:not-allowed;pointer-events:none;}
.cm-btn-primary{background:var(--cm-accent);color:#fff;box-shadow:0 4px 12px rgba(0,196,154,.2);}
.cm-btn-primary:hover,.cm-btn-primary:focus{background:var(--cm-accent-hover);color:#fff;}
.cm-btn-dark{background:var(--cm-primary);color:#fff;}
.cm-btn-dark:hover,.cm-btn-dark:focus{background:var(--cm-primary-light);color:#fff;}
.cm-btn-light{background:var(--cm-surface);color:var(--cm-text);border-color:var(--cm-border);}
.cm-btn-light:hover,.cm-btn-light:focus{border-color:var(--cm-primary);color:var(--cm-primary);}
.cm-btn-danger{background:var(--cm-danger);color:#fff;box-shadow:0 4px 12px rgba(231,76,60,.2);}
.cm-btn-danger:hover,.cm-btn-danger:focus{background:var(--cm-danger-hover);color:#fff;}
.cm-btn-ghost{background:transparent;color:var(--cm-text-muted);}
.cm-btn-ghost:hover{background:var(--cm-border-soft);color:var(--cm-primary);}
.cm-btn-sm{padding:.45rem .9rem;font-size:.8rem;border-radius:var(--cm-radius-sm);}
.cm-btn-block{width:100%;}
@media (min-width:768px){.cm-btn{min-height:0;padding:.7rem 1.4rem;}.cm-btn-sm{padding:.45rem .9rem;}}
.cm-btn-link-danger{display:inline-flex;align-items:center;gap:.35rem;min-height:var(--cm-tap);background:none;border:none;color:var(--cm-danger);font-weight:600;font-size:.8rem;cursor:pointer;padding:.45rem .5rem;text-decoration:none;}
.cm-btn-link-danger:hover{text-decoration:underline;color:var(--cm-danger);}
@media (min-width:768px){.cm-btn-link-danger{min-height:0;}}

/* Barre d'action simple (bouton pleine largeur sur mobile) */
.cm-actions{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:flex-end;}
.cm-actions .cm-btn{width:100%;}
@media (min-width:640px){.cm-actions .cm-btn{width:auto;}}
/* Barre d'actions de formulaire : empilés sur mobile, Annuler en dessous */
.cm-form-actions{display:flex;flex-direction:column-reverse;gap:.6rem;margin-top:1.5rem;}
.cm-form-actions .cm-btn{width:100%;}
@media (min-width:640px){.cm-form-actions{flex-direction:row;justify-content:flex-end;}.cm-form-actions .cm-btn{width:auto;}}

/* Bouton icône (actions de ligne) : 44px au doigt, 36px dès md */
.cm-icon-btn{width:var(--cm-tap);height:var(--cm-tap);border-radius:var(--cm-radius-sm);display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--cm-border);background:var(--cm-surface);color:var(--cm-text-muted);cursor:pointer;transition:.15s;text-decoration:none;flex-shrink:0;padding:0;}
.cm-icon-btn:hover{color:var(--cm-primary);border-color:var(--cm-primary);text-decoration:none;}
.cm-icon-btn.danger:hover,.cm-icon-btn-danger:hover{color:var(--cm-danger);border-color:var(--cm-danger);background:#fef2f2;}
@media (min-width:768px){.cm-icon-btn{width:36px;height:36px;}}
.cm-inline-form{display:inline;margin:0;}

/* Menu d'actions déroulant (ouvert par la classe .is-open) */
.cm-menu{position:relative;display:inline-block;}
.cm-menu-list{display:none;position:absolute;right:0;top:calc(100% + 6px);min-width:200px;background:var(--cm-surface);border:1px solid var(--cm-border);border-radius:var(--cm-radius-md);box-shadow:var(--cm-shadow-lg);z-index:40;padding:.35rem;}
.cm-menu-list.is-open{display:block;}
.cm-menu-list > a,.cm-menu-list > button,.cm-menu-list > form > button,.cm-menu-item{display:flex;align-items:center;gap:.5rem;width:100%;min-height:var(--cm-tap);text-align:left;background:none;border:none;padding:.55rem .75rem;border-radius:var(--cm-radius-sm);font-family:inherit;font-size:.85rem;color:var(--cm-text);cursor:pointer;text-decoration:none;}
.cm-menu-list > a:hover,.cm-menu-list > button:hover,.cm-menu-list > form > button:hover,.cm-menu-item:hover{background:var(--cm-border-soft);color:var(--cm-text);text-decoration:none;}
.cm-menu-item.is-danger{color:var(--cm-danger);}
@media (min-width:768px){.cm-menu-list > a,.cm-menu-list > button,.cm-menu-list > form > button,.cm-menu-item{min-height:0;}}

/* ---------------------------------------------------------------------
   13. Messages
   --------------------------------------------------------------------- */
.cm-alert{border-radius:var(--cm-radius-md);padding:.9rem 1rem;margin-bottom:1.25rem;display:flex;gap:.75rem;align-items:flex-start;font-size:.9rem;}
.cm-alert > i{margin-top:.2rem;}
.cm-alert ul{margin:0;padding-left:1.1rem;}
.cm-alert-success{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534;}
.cm-alert-danger{background:#fef2f2;border:1px solid #fecaca;color:#991b1b;}
.cm-alert-warning{background:#fffbeb;border:1px solid #fde68a;color:#92400e;}
.cm-alert-info{background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af;}
@media (min-width:768px){.cm-alert{padding:1rem 1.25rem;}}
.cm-note{background:rgba(59,130,246,.06);border:1px solid rgba(59,130,246,.15);border-radius:var(--cm-radius-md);padding:.9rem 1rem;font-size:.78rem;color:#1e40af;display:flex;gap:.6rem;margin-bottom:1.25rem;line-height:1.5;}
/* Notifications flottantes (bas de l'écran, au-dessus de tout) */
.cm-toasts{position:fixed;bottom:16px;right:16px;left:16px;z-index:1060;display:flex;flex-direction:column;align-items:stretch;pointer-events:none;}
.cm-toasts .cm-alert{pointer-events:auto;box-shadow:var(--cm-shadow-lg);margin-bottom:.5rem;}
@media (min-width:640px){.cm-toasts{left:auto;bottom:20px;right:20px;align-items:flex-end;}.cm-toasts .cm-alert{max-width:380px;}}

/* ---------------------------------------------------------------------
   14. Modales Bootstrap (apparence seulement : data-bs-toggle="modal")
   --------------------------------------------------------------------- */
.cm-modal .modal-dialog{margin:.75rem;}
@media (min-width:640px){.cm-modal .modal-dialog{margin:1.75rem auto;}}
.cm-modal .modal-content{border:none;border-radius:var(--cm-radius-xl);box-shadow:0 30px 60px rgba(0,0,0,.12);font-family:var(--cm-font);color:var(--cm-text);}
.cm-modal .modal-header,.cm-modal .modal-footer{border-color:var(--cm-border);padding:1rem 1.25rem;}
.cm-modal .modal-title{font-weight:800;color:var(--cm-primary);font-size:1.05rem;}
.cm-modal .modal-body{padding:1.25rem;}
.cm-modal .modal-footer{gap:.5rem;}
.cm-modal .modal-footer .cm-btn{flex:1 1 auto;}
@media (min-width:640px){
  .cm-modal .modal-header,.cm-modal .modal-footer{padding:1.1rem 1.5rem;}
  .cm-modal .modal-body{padding:1.5rem;}
  .cm-modal .modal-footer .cm-btn{flex:0 0 auto;}
}

/* Fenêtre autonome sans Bootstrap (ouverte par la classe .is-open) */
.cm-dialog{display:none;position:fixed;inset:0;z-index:1060;background:rgba(15,23,42,.55);align-items:flex-end;justify-content:center;padding:0;}
.cm-dialog.is-open{display:flex;}
.cm-dialog-box{background:var(--cm-surface);border-radius:var(--cm-radius-xl) var(--cm-radius-xl) 0 0;width:100%;max-height:92vh;display:flex;flex-direction:column;box-shadow:0 20px 50px rgba(0,0,0,.3);font-family:var(--cm-font);color:var(--cm-text);}
.cm-dialog-head{padding:1rem 1.25rem;border-bottom:1px solid var(--cm-border);display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;}
.cm-dialog-title{font-weight:800;color:var(--cm-primary);font-size:1.05rem;margin:0;}
.cm-dialog-body{padding:1rem 1.25rem;overflow-y:auto;}
.cm-dialog-foot{padding:1rem 1.25rem;border-top:1px solid var(--cm-border);display:flex;justify-content:space-between;align-items:center;gap:.75rem;flex-wrap:wrap;}
.cm-dialog-close{background:none;border:none;width:var(--cm-tap);height:var(--cm-tap);margin:-.6rem -.6rem 0 0;font-size:1.4rem;color:var(--cm-text-faint);cursor:pointer;line-height:1;flex-shrink:0;}
.cm-dialog-close:hover{color:var(--cm-text);}
@media (min-width:640px){
  .cm-dialog{align-items:center;padding:1rem;}
  .cm-dialog-box{max-width:640px;border-radius:var(--cm-radius-xl);}
  .cm-dialog-head,.cm-dialog-body,.cm-dialog-foot{padding-left:1.4rem;padding-right:1.4rem;}
}

/* ---------------------------------------------------------------------
   15. Frise chronologique / historique
   --------------------------------------------------------------------- */
.cm-timeline{list-style:none;margin:0;padding:0;}
.cm-timeline > li,.cm-timeline-item{position:relative;padding:0 0 1.2rem 2.2rem;border-left:2px solid var(--cm-border);margin-left:.9rem;}
.cm-timeline > li:last-child,.cm-timeline-item:last-child{border-left-color:transparent;padding-bottom:0;}
.cm-timeline-dot{position:absolute;left:-15px;top:-2px;width:28px;height:28px;border-radius:50%;background:var(--cm-accent);color:#fff;display:grid;place-items:center;font-size:.7rem;border:3px solid #fff;box-shadow:0 0 0 1px var(--cm-border);}
.cm-timeline-date{font-size:.72rem;color:var(--cm-text-muted);font-weight:600;}
.cm-timeline-title{font-weight:700;font-size:.9rem;margin-top:.1rem;}
.cm-timeline-detail{font-size:.8rem;color:var(--cm-text-muted);margin-top:.15rem;line-height:1.45;}
/* Variante compacte (simple point) */
.cm-timeline-compact > li,.cm-timeline-compact .cm-timeline-item{padding-left:1.5rem;margin-left:.4rem;padding-bottom:1rem;}
.cm-timeline-compact > li::before,.cm-timeline-compact .cm-timeline-item::before{content:'';position:absolute;left:-7px;top:.2rem;width:12px;height:12px;border-radius:50%;background:var(--cm-accent);border:2px solid #fff;box-shadow:0 0 0 2px var(--cm-accent);}

/* ---------------------------------------------------------------------
   16. Accordéon (details / summary)
   --------------------------------------------------------------------- */
.cm-accordion{border:1px solid var(--cm-border);border-radius:var(--cm-radius-md);margin-bottom:.75rem;overflow:hidden;background:var(--cm-surface);}
.cm-accordion > summary,.cm-accordion-head{list-style:none;cursor:pointer;padding:.9rem 1rem;display:flex;flex-direction:column;gap:.55rem;min-height:var(--cm-tap);}
.cm-accordion > summary::-webkit-details-marker,.cm-accordion-head::-webkit-details-marker{display:none;}
.cm-accordion[open] > summary,.cm-accordion[open] > .cm-accordion-head{background:var(--cm-surface-alt);border-bottom:1px solid var(--cm-border);}
.cm-accordion-line{display:flex;justify-content:space-between;align-items:center;gap:.5rem;}
.cm-accordion-title{font-weight:700;font-size:.9rem;}
.cm-accordion-meta{font-size:.75rem;color:var(--cm-text-muted);font-weight:500;}
.cm-accordion-body{padding:1rem;}

/* Barre de plage horaire (frise 24 h) */
.cm-track{position:relative;height:8px;background:var(--cm-border-soft);border-radius:999px;overflow:hidden;}
.cm-track-seg{position:absolute;top:0;bottom:0;left:var(--cm-start,0);width:var(--cm-width,100%);background:linear-gradient(90deg,var(--cm-primary),var(--cm-accent));border-radius:999px;}
.cm-track-scale{display:flex;justify-content:space-between;font-size:.65rem;color:var(--cm-text-muted);margin-top:.2rem;}

/* ---------------------------------------------------------------------
   17. Divers
   --------------------------------------------------------------------- */
.cm-divider{border:0;border-top:1px dashed var(--cm-border);margin:1.25rem 0;}
.cm-empty{color:var(--cm-text-muted);font-size:.85rem;text-align:center;padding:1.5rem 0;}
.cm-empty > i{display:block;font-size:1.8rem;color:var(--cm-text-faint);margin-bottom:.5rem;}
.cm-pagination{margin-top:1.25rem;display:flex;justify-content:center;overflow-x:auto;}
.cm-amount{font-weight:800;color:var(--cm-primary);white-space:nowrap;font-variant-numeric:tabular-nums;}
.cm-amount small{font-size:.7em;color:var(--cm-text-muted);font-weight:600;}
.cm-amount.is-positive{color:var(--cm-accent);}
.cm-amount.is-negative{color:var(--cm-danger);}
.cm-avatar{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,rgba(0,196,154,.15),rgba(11,70,80,.1));color:var(--cm-primary);font-weight:800;font-size:.85rem;flex-shrink:0;text-transform:uppercase;}
.cm-avatar-square{border-radius:var(--cm-radius);background:rgba(11,70,80,.08);}
.cm-avatar-sm{width:32px;height:32px;font-size:.72rem;}
.cm-avatar.is-archived{filter:grayscale(1);opacity:.5;}
.cm-code{font-family:var(--cm-font-mono);font-weight:700;color:var(--cm-primary);font-size:.8rem;}
.cm-mono{font-family:var(--cm-font-mono);}

/* ---------------------------------------------------------------------
   18. Utilitaires
   --------------------------------------------------------------------- */
.cm-text-primary{color:var(--cm-primary) !important;}
.cm-text-accent{color:var(--cm-accent) !important;}
.cm-text-danger{color:var(--cm-danger) !important;}
.cm-text-warning{color:var(--cm-warning) !important;}
.cm-text-info{color:var(--cm-info) !important;}
.cm-text-muted{color:var(--cm-text-muted) !important;}
.cm-text-faint{color:var(--cm-text-faint) !important;}
.cm-text-strong{font-weight:700 !important;}
.cm-text-bold{font-weight:800 !important;}
.cm-text-sm{font-size:.8rem !important;}
.cm-text-xs{font-size:.72rem !important;}
.cm-text-right{text-align:right !important;}
.cm-text-center{text-align:center !important;}
.cm-nowrap{white-space:nowrap !important;}
.cm-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}
.cm-strike{text-decoration:line-through;}

.cm-mt-0{margin-top:0 !important;}
.cm-mt-1{margin-top:.25rem !important;}
.cm-mt-2{margin-top:.5rem !important;}
.cm-mt-3{margin-top:1rem !important;}
.cm-mt-4{margin-top:1.5rem !important;}
.cm-mb-0{margin-bottom:0 !important;}
.cm-mb-1{margin-bottom:.25rem !important;}
.cm-mb-2{margin-bottom:.5rem !important;}
.cm-mb-3{margin-bottom:1rem !important;}
.cm-mb-4{margin-bottom:1.5rem !important;}

.cm-flex{display:flex;align-items:center;}
.cm-flex-wrap{flex-wrap:wrap;}
.cm-flex-between{justify-content:space-between !important;}
.cm-flex-end{justify-content:flex-end !important;}
.cm-flex-1{flex:1 1 auto;min-width:0;}
.cm-gap-1{gap:.25rem !important;}
.cm-gap-2{gap:.5rem !important;}
.cm-gap-3{gap:1rem !important;}
.cm-gap-4{gap:1.5rem !important;}
.cm-w-100{width:100% !important;}

.cm-hidden{display:none !important;}
.cm-hide-mobile{display:none !important;}
@media (min-width:768px){
  .cm-only-mobile{display:none !important;}
  .cm-hide-mobile{display:revert !important;}
}
.cm-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}

/* ---------------------------------------------------------------------
   19. Documentation (page de référence /charte, réutilisable ailleurs)
   --------------------------------------------------------------------- */
.cm-doc-section{scroll-margin-top:80px;}
.cm-doc-nav{display:flex;flex-wrap:wrap;gap:.4rem;}
.cm-demo{border:1px dashed var(--cm-border);border-radius:var(--cm-radius-md);padding:1rem;background:var(--cm-bg);margin-bottom:.75rem;}
.cm-codeblock{background:#0f172a;color:#e2e8f0;border-radius:var(--cm-radius);padding:.9rem 1rem;font-family:var(--cm-font-mono);font-size:.72rem;line-height:1.55;overflow-x:auto;white-space:pre;margin:0 0 1.5rem;max-height:320px;}
.cm-swatches{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;}
@media (min-width:640px){.cm-swatches{grid-template-columns:repeat(4,1fr);}}
.cm-swatch{border-radius:var(--cm-radius);border:1px solid var(--cm-border);overflow:hidden;background:var(--cm-surface);font-size:.72rem;}
.cm-swatch-color{height:52px;}
.cm-swatch-name{padding:.45rem .6rem;font-family:var(--cm-font-mono);font-weight:700;color:var(--cm-text);}
.cm-swatch-value{padding:0 .6rem .5rem;color:var(--cm-text-muted);font-family:var(--cm-font-mono);}
.cm-swatch-primary{background:var(--cm-primary);}
.cm-swatch-primary-light{background:var(--cm-primary-light);}
.cm-swatch-accent{background:var(--cm-accent);}
.cm-swatch-danger{background:var(--cm-danger);}
.cm-swatch-warning{background:var(--cm-warning);}
.cm-swatch-info{background:var(--cm-info);}
.cm-swatch-text{background:var(--cm-text);}
.cm-swatch-text-muted{background:var(--cm-text-muted);}
.cm-swatch-border{background:var(--cm-border);}
.cm-swatch-surface{background:var(--cm-surface);}
.cm-swatch-surface-alt{background:var(--cm-surface-alt);}
.cm-swatch-bg{background:var(--cm-bg);}
/* Position d'exemple de la plage horaire (en page réelle, left/width viennent des données). */
.cm-demo-seg{--cm-start:25%;--cm-width:50%;}

/* ---------------------------------------------------------------------
   20. Compléments génériques (ajoutés à l'Étape 2, migration tp-* → cm-*)
   --------------------------------------------------------------------- */
/* Variantes de composants existants */
.cm-amount-lg{font-size:1.05rem;}
.cm-avatar-lg{width:52px;height:52px;font-size:1rem;border-radius:14px;}
.cm-icon-btn-ghost{border-color:transparent;background:transparent;}
.cm-icon-btn-ghost:hover{background:var(--cm-border-soft);border-color:transparent;}
.cm-icon-btn-ghost.danger:hover{background:rgba(231,76,60,.08);border-color:transparent;}
.cm-choice-compact{padding:.65rem .8rem;border-width:1px;border-radius:var(--cm-radius);margin-bottom:.45rem;}
.cm-choice-compact .cm-choice-title{font-weight:600;font-size:.88rem;}
.cm-chip-sm{min-height:34px;padding:.3rem .8rem;font-size:.78rem;text-decoration:none;}
.cm-chip-sm:hover{color:var(--cm-primary);text-decoration:none;}
.cm-chip.is-current,.cm-chip.is-current:hover{border-color:var(--cm-primary);background:var(--cm-primary);color:#fff;}
.cm-block-dashed{border-style:dashed;border-color:var(--cm-text-faint);}
.cm-block-lead{font-size:.85rem;font-weight:700;color:var(--cm-primary);margin-bottom:.5rem;}
.cm-row.is-flagged{border-color:rgba(231,76,60,.35);background:rgba(231,76,60,.03);}
@media (min-width:768px){
  .cm-filters-4w{grid-template-columns:2fr 2fr 1fr auto;}
  .cm-filters-5b{grid-template-columns:1fr 1fr 1.5fr 1.5fr auto;}
  .cm-filters-7{grid-template-columns:1fr 1fr 1.5fr 1.5fr 1fr 1fr auto;}
}

/* Formulaire resserré (ligne d'ajout, zone dense) */
.cm-compact .cm-label{font-size:.72rem;margin-bottom:.3rem;}
.cm-compact .cm-input{padding:.5rem .7rem;font-size:.95rem;}
@media (min-width:768px){.cm-compact .cm-input{font-size:.85rem;}}

/* Volets affichés un par un (onglets en JavaScript) */
.cm-pane{display:none;}
.cm-pane.actif,.cm-pane.is-open{display:block;}

/* Zone en cours de rechargement */
.cm-loading{opacity:.5;transition:opacity .15s;pointer-events:none;}

/* En-tête « résumé » en dégradé (fiche de contexte en haut de formulaire) */
.cm-hero{background:linear-gradient(135deg,var(--cm-primary),var(--cm-primary-light));color:#fff;border-radius:var(--cm-radius-xl);padding:1.1rem 1.25rem;margin-bottom:1.5rem;box-shadow:var(--cm-shadow-primary);}
.cm-hero-title{font-size:1.15rem;font-weight:800;overflow-wrap:anywhere;}
.cm-hero-line{font-size:.85rem;opacity:.9;margin-top:.3rem;}
.cm-hero .cm-pill{background:rgba(255,255,255,.2);color:#fff;}
@media (min-width:768px){.cm-hero{padding:1.25rem 1.5rem;}.cm-hero-title{font-size:1.25rem;}}

/* Barre d'action groupée (sélection multiple), collante en haut */
.cm-batchbar{position:sticky;top:.75rem;z-index:20;background:var(--cm-primary);color:#fff;border-radius:var(--cm-radius-xl);padding:1rem;margin-bottom:1.25rem;box-shadow:0 10px 25px rgba(11,70,80,.3);}
.cm-batchbar .cm-label{color:#fff;}
.cm-batchbar .cm-help{color:rgba(255,255,255,.75);}
.cm-batchbar .cm-choices{grid-template-columns:1fr 1fr;}
.cm-batchbar .cm-choice{padding:.55rem .75rem;}
.cm-batchbar-grid{display:grid;grid-template-columns:1fr;gap:1rem;align-items:end;}
@media (min-width:768px){.cm-batchbar{padding:1.1rem 1.25rem;}}
@media (min-width:992px){
  .cm-batchbar-grid-3{grid-template-columns:2fr 1fr auto;}
  .cm-batchbar-grid-4{grid-template-columns:1.2fr 1.5fr 2fr auto;}
}
/* Case « tout sélectionner » et ligne sélectionnable */
.cm-select-all{display:flex;align-items:center;gap:.5rem;min-height:var(--cm-tap);font-weight:600;font-size:.85rem;margin-bottom:.75rem;cursor:pointer;}
.cm-select-all input{width:18px;height:18px;accent-color:var(--cm-accent);}
.cm-selectable{display:flex;gap:.75rem;align-items:flex-start;min-width:0;}
.cm-selectable > input[type=checkbox]{width:22px;height:22px;margin-top:.55rem;accent-color:var(--cm-accent);flex-shrink:0;}
@media (min-width:768px){.cm-select-all{min-height:0;}.cm-selectable > input[type=checkbox]{width:20px;height:20px;}}

/* Identité (avatar + nom) en tête de fiche */
.cm-profile{display:flex;gap:1rem;align-items:center;min-width:0;}

/* Sélecteur de jours de la semaine (cases masquées) */
.cm-days{display:flex;flex-wrap:wrap;gap:.4rem;}
.cm-day{margin:0;}
.cm-day input{position:absolute;opacity:0;pointer-events:none;}
.cm-day span{display:inline-flex;align-items:center;justify-content:center;min-width:48px;min-height:40px;padding:.45rem .6rem;border:2px solid var(--cm-border);border-radius:var(--cm-radius-sm);font-size:.8rem;font-weight:700;cursor:pointer;color:var(--cm-text-muted);background:var(--cm-surface);transition:.15s;}
.cm-day input:checked + span{border-color:var(--cm-accent);background:rgba(0,196,154,.1);color:var(--cm-primary);}
.cm-day input:focus-visible + span{box-shadow:var(--cm-focus-ring);}
.cm-days-off .cm-day input:checked + span{border-color:var(--cm-danger);background:rgba(231,76,60,.08);color:var(--cm-danger);}

/* Navigation par date (précédent / date / suivant) */
.cm-date-nav{display:flex;align-items:center;gap:.5rem;}
.cm-date-nav .cm-input{max-width:190px;}

/* Fil d'activité (journal, historique) */
.cm-feed-item{display:flex;gap:.9rem;align-items:flex-start;padding:.95rem 0;border-bottom:1px solid var(--cm-border-soft);}
.cm-feed-item:last-child{border-bottom:none;}
.cm-feed-icon{width:38px;height:38px;border-radius:var(--cm-radius);background:rgba(11,70,80,.08);color:var(--cm-primary);display:grid;place-items:center;flex-shrink:0;}
.cm-feed-icon.paie,.cm-feed-icon.is-accent{background:rgba(0,196,154,.1);color:var(--cm-accent);}
.cm-feed-body{flex:1;min-width:0;}
.cm-feed-title{font-weight:700;font-size:.9rem;}
.cm-feed-meta{font-size:.75rem;color:var(--cm-text-muted);margin-top:.15rem;}
.cm-feed-item details{margin-top:.4rem;}
.cm-feed-item summary{font-size:.75rem;color:var(--cm-primary);font-weight:700;cursor:pointer;}
.cm-feed-item ul{margin:.4rem 0 0;padding-left:1.1rem;font-size:.78rem;color:var(--cm-text);}
.cm-feed-item ul li{margin-bottom:.15rem;word-break:break-word;}

/* Pied de formulaire collant en bas d'écran */
.cm-sticky-footer{position:sticky;bottom:0;z-index:20;display:flex;flex-direction:column-reverse;gap:.6rem;padding:1rem 0;background:linear-gradient(to top,var(--cm-bg) 70%,rgba(241,245,249,0));}
.cm-sticky-footer .cm-btn{width:100%;}
@media (min-width:640px){.cm-sticky-footer{flex-direction:row;justify-content:flex-end;}.cm-sticky-footer .cm-btn{width:auto;}}

/* Cellule éditable dans un tableau (saisie en ligne) */
.cm-cell{width:100%;padding:.4rem .55rem;border:1px solid transparent;border-radius:8px;background:transparent;font-family:inherit;font-size:.85rem;font-weight:500;color:var(--cm-text);transition:.15s;}
.cm-cell:hover{border-color:var(--cm-border);background:var(--cm-surface);}
.cm-cell:focus{outline:none;border-color:var(--cm-accent);background:var(--cm-surface);box-shadow:var(--cm-focus-ring);}
.cm-cell.cm-num{text-align:right;}

/* ---------------------------------------------------------------------
   21. Composants propres à un module
   --------------------------------------------------------------------- */

/* ---- Rôles & utilisateurs : sélecteur de permissions (cm-perm-*) ---- */
.cm-perm-barre{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:space-between;margin-bottom:1rem;}
.cm-perm-recherche{position:relative;flex:1 1 100%;min-width:0;}
.cm-perm-recherche i{position:absolute;left:.9rem;top:50%;transform:translateY(-50%);color:var(--cm-text-faint);font-size:.85rem;pointer-events:none;}
.cm-perm-recherche .cm-input{padding-left:2.4rem;}
@media (min-width:640px){.cm-perm-recherche{flex:1 1 240px;}}
.cm-perm-compteur{font-size:.85rem;color:var(--cm-text-muted);white-space:nowrap;}
.cm-perm-compteur strong{color:var(--cm-primary);font-size:1.05rem;}
.cm-perm-modules{display:grid;grid-template-columns:1fr;gap:1rem;}
@media (min-width:992px){.cm-perm-modules{grid-template-columns:1fr 1fr;}}
.cm-perm-module{border:1px solid var(--cm-border);border-radius:var(--cm-radius-lg);background:var(--cm-surface);overflow:hidden;align-self:start;}
.cm-perm-module-tete{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.8rem 1rem;background:var(--cm-surface-alt);border-bottom:1px solid var(--cm-border);}
.cm-perm-module-titre{display:flex;align-items:center;gap:.6rem;font-weight:800;font-size:.9rem;color:var(--cm-primary);}
.cm-perm-module-icone{width:30px;height:30px;border-radius:9px;background:rgba(11,70,80,.08);color:var(--cm-primary);display:grid;place-items:center;font-size:.8rem;flex-shrink:0;}
.cm-perm-module-icone.is-warning{background:rgba(245,158,11,.12);color:#b45309;}
.cm-perm-liste{display:flex;flex-direction:column;}
.cm-perm-item{display:flex;gap:.75rem;align-items:flex-start;min-height:var(--cm-tap);padding:.7rem 1rem;border-bottom:1px solid var(--cm-border-soft);cursor:pointer;margin:0;transition:.12s;}
.cm-perm-item:last-child{border-bottom:none;}
.cm-perm-item:hover{background:#fafcfc;}
.cm-perm-item:has(input:checked){background:rgba(0,196,154,.05);}
.cm-perm-item input{width:18px;height:18px;margin-top:.15rem;accent-color:var(--cm-accent);flex-shrink:0;}
.cm-perm-item-corps{display:flex;flex-direction:column;gap:.15rem;min-width:0;}
.cm-perm-item-libelle{font-weight:600;font-size:.87rem;color:var(--cm-text);}
.cm-perm-item-description{font-size:.75rem;color:var(--cm-text-muted);line-height:1.4;}
.cm-perm-pastille{margin-left:.3rem;font-size:.62rem;vertical-align:middle;}
.cm-perm-item.cm-perm-herite{opacity:.55;cursor:not-allowed;}
.cm-perm-heritees{margin-top:1.25rem;border:1px dashed var(--cm-warning);border-radius:var(--cm-radius-lg);padding:1rem 1.1rem;background:#fffbeb;}
.cm-perm-heritees .cm-perm-item{background:transparent;border-bottom-color:#fde68a;}

/* ---- Rôles : liste en cartes (cm-role-*) ---- */
.cm-role-grille{display:grid;grid-template-columns:1fr;gap:1rem;}
@media (min-width:768px){.cm-role-grille{grid-template-columns:1fr 1fr;}}
@media (min-width:1200px){.cm-role-grille{grid-template-columns:1fr 1fr 1fr;}}
.cm-role-carte{background:var(--cm-surface);border:1px solid var(--cm-border);border-radius:18px;padding:1.2rem 1.25rem;display:flex;flex-direction:column;gap:.8rem;box-shadow:var(--cm-shadow);transition:.15s;}
.cm-role-carte:hover{border-color:rgba(11,70,80,.35);}
.cm-role-tete{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;}
.cm-role-nom{font-weight:800;font-size:1.02rem;color:var(--cm-text);text-decoration:none;}
a.cm-role-nom:hover{color:var(--cm-primary);text-decoration:none;}
.cm-role-meta{font-size:.78rem;color:var(--cm-text-muted);margin-top:.15rem;}
.cm-role-modules{display:flex;flex-wrap:wrap;gap:.35rem;}
.cm-role-actions{display:flex;gap:.4rem;margin-top:auto;padding-top:.3rem;border-top:1px dashed var(--cm-border);}
.cm-role-icone{width:40px;height:40px;border-radius:var(--cm-radius);display:grid;place-items:center;background:rgba(11,70,80,.08);color:var(--cm-primary);flex-shrink:0;}
.cm-role-icone.systeme{background:var(--cm-primary);color:#fff;}

/* ---- Utilisateurs (cm-user-*) ---- */
.cm-user-roles{display:grid;grid-template-columns:1fr;gap:.6rem;}
@media (min-width:640px){.cm-user-roles{grid-template-columns:1fr 1fr;}}
@media (min-width:992px){.cm-user-roles{grid-template-columns:1fr 1fr 1fr;}}
.cm-user-roles-liste{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.35rem;}
.cm-user-directes > summary{list-style:none;cursor:pointer;}
.cm-user-directes > summary::-webkit-details-marker{display:none;}
.cm-user-directes > summary .cm-card-title::after{content:'\f078';font-family:'Font Awesome 6 Free','Font Awesome 5 Free';font-weight:900;font-size:.7rem;margin-left:.5rem;color:var(--cm-text-muted);}
.cm-user-directes[open] > summary .cm-card-title::after{content:'\f077';}

/* ---- Modules optionnels (cm-mod-*) ---- */
.cm-mod-grille{display:grid;grid-template-columns:1fr;gap:1.25rem;}
@media (min-width:992px){.cm-mod-grille{grid-template-columns:1fr 1fr;}}
.cm-mod-carte{background:var(--cm-surface);border:1px solid var(--cm-border);border-radius:var(--cm-radius-xl);padding:1.1rem;box-shadow:var(--cm-shadow);display:flex;flex-direction:column;gap:1rem;}
@media (min-width:768px){.cm-mod-carte{padding:1.5rem;}}
.cm-mod-carte.actif{border-color:rgba(0,196,154,.45);box-shadow:0 10px 25px rgba(0,196,154,.08);}
.cm-mod-tete{display:flex;gap:1rem;align-items:flex-start;}
.cm-mod-icone{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;font-size:1.3rem;background:rgba(11,70,80,.08);color:var(--cm-primary);flex-shrink:0;}
.cm-mod-carte.actif .cm-mod-icone{background:var(--cm-primary);color:#fff;}
.cm-mod-nom{font-weight:800;font-size:1.05rem;color:var(--cm-text);}
.cm-mod-etat{font-size:.78rem;color:var(--cm-text-muted);margin-top:.2rem;}
.cm-mod-apports{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem;}
.cm-mod-apports li{font-size:.85rem;display:flex;gap:.55rem;align-items:flex-start;}
.cm-mod-apports i{color:var(--cm-accent);margin-top:.2rem;font-size:.75rem;}
.cm-mod-pied{display:flex;justify-content:space-between;align-items:center;gap:.75rem;flex-wrap:wrap;padding-top:.9rem;border-top:1px dashed var(--cm-border);}
.cm-mod-verrou{font-size:.8rem;color:#92400e;display:flex;gap:.5rem;align-items:center;}

/* ---- Paie (cm-paie-*) ---- */
.cm-paie-famille{margin-bottom:1.1rem;}
.cm-paie-famille-titre{font-weight:800;font-size:.85rem;margin-bottom:.5rem;display:flex;align-items:center;gap:.5rem;}
.cm-paie-ajout-grille{display:grid;grid-template-columns:1fr;gap:.6rem;align-items:end;}
@media (min-width:768px){
  .cm-paie-ajout-grille.indemnite{grid-template-columns:1fr 2fr 1.2fr 1.1fr 1fr auto;}
  .cm-paie-ajout-grille.cotisation{grid-template-columns:.9fr 2fr 1.1fr 1.1fr 1.1fr .8fr auto;}
  .cm-paie-ajout-grille.grille{grid-template-columns:2fr 1fr 1.3fr 1.2fr auto;}
}
.cm-paie-bloc{border:1px solid var(--cm-border);border-radius:var(--cm-radius-lg);padding:1.1rem 1.2rem;background:#fcfdfd;}
.cm-paie-bloc-titre{font-weight:800;font-size:.92rem;color:var(--cm-primary);display:flex;align-items:center;gap:.6rem;margin-bottom:1rem;}
.cm-paie-bloc-lettre{width:26px;height:26px;border-radius:8px;color:#fff;background:var(--cm-primary);display:grid;place-items:center;font-size:.8rem;flex-shrink:0;}
.cm-paie-sim{background:linear-gradient(135deg,var(--cm-primary),var(--cm-primary-light));border-radius:var(--cm-radius-xl);padding:1.1rem;color:#fff;}
@media (min-width:768px){.cm-paie-sim{padding:1.25rem 1.4rem;}}
.cm-paie-sim .cm-label{color:rgba(255,255,255,.85);}
.cm-paie-sim-grille{display:grid;grid-template-columns:1fr;gap:.9rem;margin-bottom:1rem;}
@media (min-width:768px){.cm-paie-sim-grille{grid-template-columns:1fr 1fr 1fr 1.3fr;}}
.cm-paie-sim-resultats{display:grid;grid-template-columns:1fr;gap:.75rem;}
@media (min-width:768px){.cm-paie-sim-resultats{grid-template-columns:repeat(3,1fr);}}
.cm-paie-sim-resultats > div{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.15);border-radius:var(--cm-radius-md);padding:.85rem 1rem;}
.cm-paie-sim-resultats span{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.4px;opacity:.8;font-weight:700;}
.cm-paie-sim-resultats strong{display:block;font-size:1.35rem;font-weight:800;margin:.2rem 0;}
.cm-paie-sim-resultats small{display:block;font-size:.72rem;opacity:.8;line-height:1.4;}

/* ---- Terrain (cm-tr-*) ---- */
.cm-tr-historique{font-size:.75rem;color:var(--cm-text-muted);margin-top:.35rem;}
.cm-tr-historique form{display:inline;}
.cm-tr-historique button{background:none;border:none;color:var(--cm-danger);cursor:pointer;padding:0 .2rem;font-size:.75rem;}
.cm-tr-calendrier{display:grid;grid-template-columns:repeat(7,1fr);gap:.35rem;}
.cm-tr-cal-jour{border-radius:var(--cm-radius-sm);padding:.35rem .2rem;text-align:center;font-size:.68rem;font-weight:600;background:var(--cm-border-soft);color:var(--cm-text-muted);}
.cm-tr-cal-jour strong{display:block;font-size:.8rem;}
.cm-tr-cal-jour.travail{background:rgba(0,196,154,.12);color:var(--cm-primary);}
.cm-tr-cal-jour.repos-fixe{background:rgba(231,76,60,.08);color:var(--cm-danger);}
.cm-tr-cal-jour.sur-repos{background:rgba(245,158,11,.15);color:#b45309;}
.cm-tr-cal-jour.hors-periode{background:var(--cm-surface);border:1px dashed var(--cm-border);color:#cbd5e1;}
.cm-tr-cycle{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:.4rem;margin-top:.75rem;}
.cm-tr-cycle-jour{border:2px solid var(--cm-border);border-radius:var(--cm-radius-sm);padding:.4rem .2rem;min-height:var(--cm-tap);text-align:center;cursor:pointer;user-select:none;transition:.15s;background:var(--cm-surface);}
.cm-tr-cycle-jour small{display:block;font-size:.65rem;color:var(--cm-text-muted);font-weight:600;}
.cm-tr-cycle-jour strong{font-size:.75rem;}
.cm-tr-cycle-jour.travail{border-color:var(--cm-accent);background:rgba(0,196,154,.1);color:var(--cm-primary);}
.cm-tr-cycle-jour.repos{background:var(--cm-surface-alt);color:var(--cm-text-muted);}
.cm-tr-motif{display:flex;gap:3px;flex-wrap:wrap;}
.cm-tr-motif span{width:14px;height:14px;border-radius:4px;background:var(--cm-border);}
.cm-tr-motif span.t{background:var(--cm-accent);}
.cm-tr-gps{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;font-size:.82rem;}
.cm-tr-gps-etat{font-weight:600;}
.cm-tr-site{margin-bottom:1.25rem;}
.cm-tr-site-titre{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.75rem;}
.cm-tr-site-titre a{font-weight:800;color:var(--cm-primary);text-decoration:none;font-size:1rem;}
.cm-tr-vac{margin-bottom:.6rem;}
.cm-tr-vac.constatee{border-color:rgba(231,76,60,.35);background:rgba(231,76,60,.03);}
.cm-tr-vac .cm-btn{width:100%;}
@media (min-width:768px){.cm-tr-vac .cm-btn{width:auto;}}
.cm-tr-piece{flex-basis:100%;border-top:1px dashed var(--cm-border);padding-top:.75rem;margin-top:.25rem;}
.cm-tr-piece .cm-input{padding:.45rem .6rem;font-size:.95rem;}
@media (min-width:768px){.cm-tr-piece .cm-input{font-size:.85rem;}}
.cm-tr-piece.manquante .cm-input{border-color:var(--cm-danger);}
.cm-tr-qualif .cm-row{flex-wrap:wrap;}
.cm-tr-journal-form{display:grid;grid-template-columns:1fr;gap:.9rem;align-items:end;}
@media (min-width:768px){.cm-tr-journal-form{grid-template-columns:1fr 1fr 1.3fr 1.5fr auto;}}
.cm-tr-journal-form .cm-field{margin-bottom:0;}

/* ---------------------------------------------------------------------
   22. Compléments de l'Étape 2b (remplacement des style="…")
   --------------------------------------------------------------------- */
/* Largeurs de conteneur */
.cm-container-md{max-width:900px;}
.cm-container-lg{max-width:1100px;}
/* Pastilles d'icône colorées : KPI, lignes de liste, fil d'activité */
.cm-stat-icon.is-primary,.cm-row-icon.is-primary,.cm-feed-icon.is-primary{background:rgba(11,70,80,.1);color:var(--cm-primary);}
.cm-row-icon.is-accent{background:rgba(0,196,154,.1);color:var(--cm-accent);}
.cm-row-icon.is-danger,.cm-feed-icon.is-danger{background:rgba(231,76,60,.1);color:var(--cm-danger);}
.cm-row-icon.is-warning,.cm-feed-icon.is-warning{background:rgba(245,158,11,.12);color:#b45309;}
.cm-row-icon.is-info,.cm-feed-icon.is-info{background:rgba(59,130,246,.1);color:var(--cm-info);}
.cm-stat-icon.is-muted,.cm-row-icon.is-muted{background:var(--cm-border-soft);color:var(--cm-text-muted);}
/* États vides */
.cm-empty-icon{display:block;font-size:1.5rem;opacity:.4;margin-bottom:.5rem;}
.cm-empty-icon-lg{font-size:2rem;color:#cbd5e1;}
.cm-empty-card{padding:3rem 1rem;}
/* Page d'information centrée (module inactif, accès restreint) */
.cm-card-hero{padding:2rem 1.25rem;text-align:center;}
@media (min-width:768px){.cm-card-hero{padding:2.5rem 1.75rem;}}
.cm-header-icon-lg{margin:0 auto 1.25rem;width:64px;height:64px;font-size:1.6rem;}
.cm-title-sm{font-size:1.35rem;}
.cm-subtitle-center{margin:.6rem auto 1.5rem;max-width:520px;}
/* Colonnes de tableau à largeur fixe */
.cm-col-xs{width:95px;}
.cm-col-sm{width:120px;}
.cm-col-md{width:140px;}
/* Graphique */
.cm-chart{position:relative;height:320px;}
/* Utilitaires complémentaires */
.cm-text-body{color:var(--cm-text) !important;}
.cm-text-white{color:#fff !important;}
.cm-text-inherit{color:inherit !important;}
.cm-text-success{color:#16a34a !important;}
.cm-text-warning-dark{color:#b45309 !important;}
.cm-text-whatsapp{color:#25D366 !important;}
.cm-text-violet{color:#7c3aed !important;}
.cm-text-base{font-size:.9rem !important;}
.cm-text-lg{font-size:1.05rem !important;}
.cm-text-xl{font-size:1.15rem !important;}
.cm-text-2xl{font-size:1.35rem !important;}
.cm-text-left{text-align:left !important;}
.cm-fw-500{font-weight:500 !important;}
.cm-fw-600{font-weight:600 !important;}
.cm-uppercase{text-transform:uppercase !important;}
.cm-italic{font-style:italic !important;}
.cm-no-underline,.cm-no-underline:hover{text-decoration:none !important;}
.cm-pointer{cursor:pointer;}
.cm-min-w-0{min-width:0 !important;}
.cm-m-0{margin:0 !important;}
.cm-ml-1{margin-left:.15rem !important;}
.cm-mw-xs{max-width:220px !important;}
.cm-mw-sm{max-width:320px !important;}
.cm-mw-md{max-width:480px !important;}
.cm-contents{display:contents !important;}
.cm-bg-primary{background:var(--cm-primary) !important;}
.cm-bg-accent{background:var(--cm-accent) !important;}
.cm-bg-danger{background:var(--cm-danger) !important;}
.cm-bg-warning{background:var(--cm-warning) !important;}
.cm-fieldset-reset{border:0;padding:0;margin:0;min-width:0;}
/* Compléments 2b (cas traités à la main) */
.cm-stats-auto{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));}
.cm-help-flush{margin:-.25rem 0 .5rem;}
.cm-checkbox{accent-color:var(--cm-accent);width:18px;height:18px;}
@media (min-width:768px){.cm-checkbox{width:16px;height:16px;}}
.cm-flex-center{justify-content:center !important;}
.cm-items-center{align-items:center !important;}
.cm-note-warning{background:rgba(245,158,11,.08);border-color:rgba(245,158,11,.3);color:#92400e;}
.cm-check-offset{margin-top:0;}
@media (min-width:768px){.cm-check-offset{margin-top:1.6rem;}}
.cm-card-compact{padding:1rem;}
.cm-icon-btn:disabled,.cm-icon-btn.disabled{opacity:.4;cursor:not-allowed;}
.cm-dl-3{gap:.75rem;min-width:0;}
@media (min-width:640px){.cm-dl-3{grid-template-columns:repeat(3,minmax(0,1fr));}}
.cm-dl-auto{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));}
.cm-hero-kicker{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;opacity:.8;}
.cm-text-warning-light{color:#fde68a !important;}
.cm-list-plain{list-style:none;padding:0;margin:0;line-height:1.6;}
/* Couleur de pastille fournie par les données (style="--cm-dot-bg: …") */
.cm-timeline-dot{background:var(--cm-dot-bg,var(--cm-accent));}

/* Pagination de la charte (vue partial/pagination) */
.cm-pagination{display:block;margin-top:1.25rem;overflow:visible;}
.cm-pager{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap;}
.cm-pager-info{font-size:.8rem;color:var(--cm-text-muted);width:100%;text-align:center;order:3;}
.cm-pager-pages{display:none;list-style:none;margin:0;padding:0;gap:.3rem;flex-wrap:wrap;}
.cm-pager-link{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;min-width:var(--cm-tap);height:var(--cm-tap);padding:0 .75rem;border-radius:var(--cm-radius-sm);border:1px solid var(--cm-border);background:var(--cm-surface);color:var(--cm-text);font-weight:600;font-size:.85rem;text-decoration:none;transition:.15s;}
.cm-pager-link:hover{border-color:var(--cm-primary);color:var(--cm-primary);text-decoration:none;}
.cm-pager-link.is-current{background:var(--cm-primary);border-color:var(--cm-primary);color:#fff;}
.cm-pager-link.is-disabled{opacity:.45;pointer-events:none;}
.cm-pager-dots{display:inline-flex;align-items:flex-end;padding:0 .2rem;color:var(--cm-text-faint);}
.cm-pager-step{font-size:.85rem;font-weight:600;color:var(--cm-text-muted);}
@media (min-width:768px){
  .cm-pager-pages{display:flex;}
  .cm-pager-step{display:none;}
  .cm-pager-link{min-width:36px;height:36px;padding:0 .6rem;}
  .cm-pager-info{width:auto;order:0;text-align:left;}
}
/* Ligne activable (case cochée = ligne mise en avant) */
.cm-row.is-active{border-color:rgba(0,196,154,.45);background:rgba(0,196,154,.04);}
.cm-row-fields{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-start;}
.cm-row-fields .cm-field{margin-bottom:0;min-width:0;flex:1 1 120px;}
.cm-row-fields .cm-input-group{max-width:none;}
@media (min-width:768px){.cm-row-fields{flex-wrap:nowrap;}.cm-row-fields .cm-field{flex:0 0 140px;}}
/* Fenêtre au-dessus d'une autre (visionneuse ouverte depuis une fenêtre) et visionneuse de document */
.cm-dialog-top{z-index:1070;}
.cm-dialog-box-lg{max-width:900px;}
.cm-dialog-box-viewer{height:92vh;max-height:92vh;}
@media (min-width:640px){.cm-dialog-box-lg{max-width:900px;}.cm-dialog-box-viewer{max-width:1100px;height:90vh;}}
.cm-viewer{position:relative;flex:1 1 auto;background:var(--cm-border);overflow:hidden;}
.cm-viewer iframe{width:100%;height:100%;border:0;display:block;}
.cm-viewer img{position:absolute;inset:0;margin:auto;max-width:100%;max-height:100%;}
/* Tableau chiffré : colonne figée, groupes et colonnes mises en avant (livre de paie, états) */
.cm-table .cm-sticky-col{position:sticky;left:0;z-index:1;background:var(--cm-surface);box-shadow:1px 0 0 var(--cm-border-soft);}
.cm-table thead .cm-sticky-col{z-index:2;}
.cm-table tfoot .cm-sticky-col{background:var(--cm-surface-alt);}
.cm-table .cm-th-group{text-align:center;color:#6d28d9;background:rgba(124,58,237,.06);}
.cm-table .cm-col-hl{background:var(--cm-surface-alt);}
.cm-table .cm-col-net{background:rgba(11,70,80,.06);color:var(--cm-primary);font-weight:800;}
.cm-table tfoot td{background:var(--cm-surface-alt);}
.cm-table-wide{min-width:900px;}
/* Bouton présenté comme un lien (ex. nom cliquable qui ouvre une fenêtre) */
.cm-link-btn{background:none !important;border:0;padding:0;margin:0;font:inherit;text-align:left;cursor:pointer;box-shadow:none;}
.cm-link-btn:hover{color:var(--cm-primary);text-decoration:underline;}
/* Jauge de progression (largeur fournie par les données : style="--cm-width: 42%;") */
.cm-meter{height:8px;background:var(--cm-border-soft);border-radius:999px;overflow:hidden;}
.cm-meter-sm{height:6px;}
.cm-meter-bar{height:100%;width:var(--cm-width,0);border-radius:999px;background:var(--cm-primary);transition:width .3s;}
.cm-meter-bar.is-accent{background:var(--cm-accent);}
.cm-meter-bar.is-warning{background:var(--cm-warning);}
.cm-meter-bar.is-danger{background:var(--cm-danger);}
/* Lignes clé / valeur compactes (détail dans une carte KPI) */
.cm-kv{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;font-size:.78rem;padding:.2rem 0;}
.cm-kv > span:first-child{color:var(--cm-text-muted);}
.cm-kv > span:last-child{font-weight:700;white-space:nowrap;}
.cm-kv-total{border-top:1px solid var(--cm-border-soft);margin-top:.3rem;padding-top:.45rem;font-weight:800;}
.cm-kv-total > span:first-child{color:var(--cm-text);}
/* Mini-liste (classement, derniers éléments) */
.cm-mini-row{display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding:.6rem 0;border-bottom:1px solid var(--cm-border-soft);}
.cm-mini-row:last-child{border-bottom:none;}
.cm-mini-rank{width:26px;height:26px;border-radius:8px;background:var(--cm-border-soft);color:var(--cm-text-muted);display:grid;place-items:center;font-size:.75rem;font-weight:800;flex-shrink:0;}
.cm-scroll-y{max-height:15rem;overflow-y:auto;}
.cm-chart-sm{position:relative;height:200px;}
/* Étapes numérotées d'un long formulaire */
.cm-step{width:26px;height:26px;border-radius:8px;background:var(--cm-primary);color:#fff;display:inline-grid;place-items:center;font-size:.8rem;font-weight:800;flex-shrink:0;}
.cm-step.is-accent{background:var(--cm-accent);}
.cm-step.is-warning{background:var(--cm-warning);}
.cm-step.is-violet{background:#7c3aed;}
.cm-card-title .cm-step + span{color:var(--cm-text);}
/* Champ verrouillé piloté par script (même rendu qu'un champ readonly) */
.cm-input.is-locked{background-color:var(--cm-surface-alt);color:var(--cm-text-muted);cursor:not-allowed;}
/* Champ de saisie mis en avant (montant principal) */
.cm-input-lg{font-size:1.15rem !important;font-weight:800;}
/* Champ fichier natif */
.cm-file{display:block;width:100%;font-size:.85rem;color:var(--cm-text-muted);}
.cm-file::file-selector-button{margin-right:.75rem;border:0;border-radius:var(--cm-radius-sm);padding:.55rem .9rem;background:rgba(0,196,154,.1);color:var(--cm-primary);font-weight:700;cursor:pointer;}
/* Bandeau d'estimation en direct (fond sombre) */
.cm-estimate{background:var(--cm-primary);color:#fff;border-radius:var(--cm-radius-xl);padding:1rem;margin-bottom:1.25rem;box-shadow:var(--cm-shadow-primary);}
.cm-estimate-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.75rem;}
.cm-estimate-title{font-weight:800;font-size:.8rem;text-transform:uppercase;letter-spacing:.5px;opacity:.9;}
.cm-estimate-note{font-size:.72rem;opacity:.7;font-style:italic;}
.cm-estimate-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;}
.cm-estimate-cell{background:rgba(255,255,255,.08);border-radius:var(--cm-radius);padding:.6rem .7rem;min-width:0;}
.cm-estimate-cell span{display:block;font-size:.68rem;opacity:.75;text-transform:uppercase;letter-spacing:.3px;}
.cm-estimate-cell strong{display:block;font-size:1rem;font-weight:800;overflow-wrap:anywhere;}
.cm-estimate-cell.is-minus strong{color:#fecaca;}
.cm-estimate-cell.is-net{background:var(--cm-accent);grid-column:1 / -1;}
.cm-estimate-cell.is-net strong{font-size:1.25rem;}
@media (min-width:768px){.cm-estimate{padding:1.25rem 1.5rem;}.cm-estimate-grid{grid-template-columns:repeat(5,minmax(0,1fr));}.cm-estimate-cell.is-net{grid-column:auto;}}
.cm-capitalize{text-transform:capitalize !important;}
/* Grille latérale : colonne étroite + colonne large (fiche détaillée) */
.cm-grid-side{display:grid;grid-template-columns:1fr;gap:1.25rem;align-items:start;}
.cm-grid-side > div{min-width:0;}
@media (min-width:992px){.cm-grid-side{grid-template-columns:1fr 2fr;gap:1.5rem;}}
/* Onglets réservés au mobile : un seul volet visible sous 992 px, tout visible au-delà */
.cm-tabs-mobile{margin-bottom:1rem;}
.cm-tabpane:not(.is-current){display:none;}
@media (min-width:992px){.cm-tabs-mobile{display:none;}.cm-tabpane{display:block !important;}}
/* En-tête de fiche personne */
.cm-avatar-xl{width:64px;height:64px;font-size:1.4rem;background:var(--cm-primary);color:#fff;box-shadow:var(--cm-shadow-primary);}
/* Mise en avant du salaire actuel */
.cm-highlight{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;}
.cm-highlight-value{font-size:1.6rem;font-weight:800;color:var(--cm-primary);line-height:1.1;overflow-wrap:anywhere;}
.cm-highlight-value small{font-size:.9rem;color:var(--cm-text-muted);font-weight:600;}
@media (min-width:768px){.cm-highlight-value{font-size:2rem;}}
/* Grille de tuiles (fiches courtes : clients, fournisseurs…) : 1 col téléphone, 2 dès 640, 3 dès 1200 */
.cm-tiles{display:grid;grid-template-columns:1fr;gap:.75rem;}
@media (min-width:640px){.cm-tiles{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (min-width:1200px){.cm-tiles{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;}}
.cm-tile{background:var(--cm-surface);border:1px solid var(--cm-border);border-radius:var(--cm-radius-md);padding:.85rem .9rem;display:flex;flex-direction:column;gap:.55rem;min-width:0;transition:.15s;}
.cm-tile:hover{border-color:rgba(11,70,80,.35);box-shadow:var(--cm-shadow);}
.cm-tile-head{display:flex;gap:.7rem;align-items:center;min-width:0;}
.cm-tile-title{font-weight:700;font-size:.95rem;color:var(--cm-text);text-decoration:none;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
a.cm-tile-title:hover{color:var(--cm-primary);text-decoration:none;}
.cm-tile-sub{font-size:.76rem;color:var(--cm-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cm-tile-foot{display:flex;justify-content:flex-end;gap:.4rem;margin-top:auto;padding-top:.5rem;border-top:1px dashed var(--cm-border);}
/* Recherche dynamique : compteur de résultats */
.cm-search-count{font-size:.78rem;color:var(--cm-text-muted);margin:-.5rem 0 .75rem;}
/* Menu déroulant Bootstrap à la charte (data-bs-toggle="dropdown") */
.cm-dropdown{border:1px solid var(--cm-border);border-radius:var(--cm-radius-md);box-shadow:var(--cm-shadow-lg);padding:.35rem;min-width:200px;font-family:var(--cm-font);}
.cm-dropdown form{margin:0;}
/* Statuts de document commercial (factures, proformas, bordereaux) */
.cm-doc-ref{font-family:var(--cm-font-mono);font-weight:800;color:var(--cm-primary);font-size:.85rem;}
/* ---- Lignes d'un document commercial (factures, proformas…) ---- */
.cm-lines{display:flex;flex-direction:column;gap:.6rem;}
.cm-lines-head{display:none;}
.cm-line{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-template-areas:"num des des des des del" "qte qte pu pu mnt mnt";gap:.5rem .6rem;align-items:end;background:var(--cm-surface);border:1px solid var(--cm-border);border-radius:var(--cm-radius-md);padding:.75rem;}
.cm-line.dragging{opacity:.4;background:rgba(59,130,246,.08);}
.cm-line-drag{grid-area:drag;display:none;color:var(--cm-text-faint);cursor:move;text-align:center;}
.cm-line-drag:hover{color:var(--cm-primary);}
.cm-line-num{grid-area:num;align-self:center;width:30px;height:30px;border-radius:50%;background:rgba(11,70,80,.08);color:var(--cm-primary);display:grid;place-items:center;font-size:.8rem;font-weight:800;}
.cm-line-des{grid-area:des;min-width:0;}
.cm-line-qte{grid-area:qte;min-width:0;}
.cm-line-pu{grid-area:pu;min-width:0;}
.cm-line-mnt{grid-area:mnt;min-width:0;text-align:right;}
.cm-line-mnt strong{display:block;font-weight:800;color:var(--cm-primary);padding:.55rem 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cm-line-del{grid-area:del;justify-self:end;align-self:center;}
.cm-line-label{display:block;font-size:.68rem;font-weight:700;color:var(--cm-text-muted);text-transform:uppercase;letter-spacing:.3px;margin-bottom:.2rem;}
@media (min-width:768px){
  .cm-lines-head,.cm-line{grid-template-columns:22px 34px minmax(0,1fr) 100px 150px 130px 40px;grid-template-areas:"drag num des qte pu mnt del";}
  .cm-lines-head{display:grid;gap:.6rem;padding:0 .75rem;font-size:.68rem;font-weight:700;color:var(--cm-text-muted);text-transform:uppercase;letter-spacing:.3px;}
  .cm-lines-head > span:nth-child(n+4){text-align:right;}
  .cm-line{align-items:center;padding:.5rem .75rem;}
  .cm-line-drag{display:block;}
  .cm-line-label{display:none;}
}
/* Totaux d'un document */
.cm-totals{background:linear-gradient(135deg,var(--cm-primary),var(--cm-primary-light));color:#fff;border-radius:var(--cm-radius-lg);padding:1rem 1.1rem;margin-top:1rem;}
.cm-totals-row{display:flex;justify-content:space-between;gap:1rem;font-size:.88rem;padding:.2rem 0;}
.cm-totals-row span{opacity:.85;}
.cm-totals-row strong{white-space:nowrap;}
.cm-totals-final{border-top:1px solid rgba(255,255,255,.25);margin-top:.5rem;padding-top:.6rem;align-items:baseline;}
.cm-totals-final span{opacity:1;font-weight:800;}
.cm-totals-final strong{font-size:1.35rem;font-weight:800;}
@media (min-width:768px){.cm-totals{max-width:420px;margin-left:auto;}}
/* Suggestions d'autocomplétion (positionnées par script sous le champ) */
.cm-suggest{background:var(--cm-surface);border:1px solid var(--cm-border);border-radius:var(--cm-radius-sm);box-shadow:var(--cm-shadow-lg);display:none;max-height:250px;overflow-y:auto;z-index:99999;font-family:var(--cm-font);}
.cm-suggest-item{padding:.6rem .9rem;cursor:pointer;border-bottom:1px solid var(--cm-border-soft);}
.cm-suggest-item:last-child{border-bottom:none;}
.cm-suggest-item:hover{background:var(--cm-surface-alt);}
.cm-suggest-title{font-weight:700;font-size:.88rem;color:var(--cm-primary);}
.cm-suggest-meta{font-size:.74rem;color:var(--cm-text-muted);}
/* Interrupteur (case stylée en bascule) */
.cm-switch{display:flex;align-items:center;gap:.6rem;min-height:var(--cm-tap);font-weight:700;font-size:.88rem;cursor:pointer;margin:0 0 .4rem;}
.cm-switch input{appearance:none;-webkit-appearance:none;width:40px;height:22px;border-radius:999px;background:var(--cm-border);position:relative;cursor:pointer;transition:.15s;flex-shrink:0;margin:0;}
.cm-switch input::after{content:'';position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:.15s;}
.cm-switch input:checked{background:var(--cm-accent);}
.cm-switch input:checked::after{left:21px;}
.cm-switch input:focus-visible{box-shadow:var(--cm-focus-ring);}
@media (min-width:768px){.cm-switch{min-height:0;}}

/* Utilitaire : largeur naturelle (ex. select court accolé à un champ) */
.cm-w-auto{width:auto;flex:0 0 auto;}

/* =====================================================================
   23. BARRE D'ACTIONS DE DOCUMENT + APERÇU A4 (factures, proformas…)
   ===================================================================== */
/* Barre d'actions : statut au-dessus, boutons 2 par ligne sur mobile, en ligne dès 768 px */
.cm-toolbar{background:var(--cm-surface);border:1px solid var(--cm-border);border-radius:var(--cm-radius-lg);box-shadow:var(--cm-shadow);padding:.85rem;display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.25rem;}
.cm-toolbar-status{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;}
.cm-toolbar-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;}
.cm-toolbar-actions > form,.cm-toolbar-actions > .dropdown{margin:0;min-width:0;}
/* Mobile : un libellé long (ex. « Signature & cachet ») passe sur deux lignes au lieu de déborder ; boutons d'une même ligne à même hauteur */
.cm-toolbar-actions .cm-btn{width:100%;height:100%;min-width:0;padding-left:.75rem;padding-right:.75rem;white-space:normal;text-align:center;}
.cm-toolbar-actions > .cm-toolbar-wide{grid-column:1 / -1;}
@media (min-width:768px){
  .cm-toolbar{flex-direction:row;align-items:center;justify-content:space-between;padding:.85rem 1.1rem;}
  .cm-toolbar-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;}
  .cm-toolbar-actions .cm-btn{width:auto;height:auto;white-space:nowrap;}
}
.cm-btn-outline-danger{background:var(--cm-surface);color:var(--cm-danger);border-color:var(--cm-danger);}
.cm-btn-outline-danger:hover,.cm-btn-outline-danger:focus{background:rgba(231,76,60,.06);color:var(--cm-danger);}
/* Bouton à la couleur de marque de l'entreprise : --cm-brand posé en ligne (donnée) */
.cm-btn-brand{background:var(--cm-brand,var(--cm-primary));color:#fff;}
.cm-btn-brand:hover,.cm-btn-brand:focus{color:#fff;opacity:.88;}
.cm-dropdown-panel{padding:.9rem 1rem;min-width:260px;}
.cm-dropdown-panel .cm-switch{font-size:.85rem;}
.cm-dropdown-title{font-weight:800;font-size:.85rem;color:var(--cm-text);padding-bottom:.5rem;margin-bottom:.5rem;border-bottom:1px solid var(--cm-border);}

/* Aperçu A4 : variables de marque posées en ligne (--cm-doc-primary, --cm-doc-font, --cm-doc-size) */
.cm-a4{--cm-doc-primary:#0f172a;--cm-doc-font:'Inter',sans-serif;--cm-doc-size:13px;
  position:relative;z-index:1;width:100%;max-width:210mm;margin:0 auto 1.5rem;background:#fff;box-sizing:border-box;
  padding:1.25rem 1rem 1.5rem;box-shadow:0 10px 30px rgba(0,0,0,.15);font-family:var(--cm-doc-font);color:#1e293b;
  font-size:calc(var(--cm-doc-size) * .9);line-height:1.4;display:flex;flex-direction:column;overflow:hidden;}
@media (min-width:768px){ .cm-a4{min-height:297mm;padding:15mm 15mm 20mm;font-size:var(--cm-doc-size);} }
.cm-a4-main{flex:1;display:flex;flex-direction:column;}
.cm-a4-watermark{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-30deg);width:80%;z-index:-1;pointer-events:none;opacity:.08;display:none;}
.cm-a4-watermark img{width:100%;height:auto;filter:grayscale(100%);}
.cm-a4.is-watermark .cm-a4-watermark{display:block;}
.cm-a4-accent{height:6px;background:var(--cm-doc-primary);width:100%;position:absolute;top:0;left:0;}
.cm-a4-head{display:flex;flex-direction:column;gap:1rem;margin:10px 0 25px;}
.cm-a4-head-right{text-align:left;}
@media (min-width:768px){
  .cm-a4-head{flex-direction:row;justify-content:space-between;}
  .cm-a4-head-left{width:50%;}
  .cm-a4-head-right{width:45%;text-align:right;}
}
.cm-a4-logo{max-height:70px;max-width:100%;margin-bottom:12px;}
.cm-a4-company{font-size:1.6em;font-weight:800;color:var(--cm-doc-primary);text-transform:uppercase;margin:0;}
.cm-a4-issuer{font-size:.9em;color:#64748b;}
.cm-a4-meta{border-bottom:2px solid var(--cm-doc-primary);padding-bottom:5px;margin-bottom:10px;display:inline-block;font-size:.95em;}
.cm-a4-client{background:rgba(248,250,252,.6);padding:12px 15px;border-radius:6px;border:1px solid #e2e8f0;text-align:left;min-width:220px;}
.cm-a4-client-label{font-size:.85em;font-weight:800;text-transform:uppercase;color:var(--cm-doc-primary);display:block;}
.cm-a4-client-name{font-size:1.2em;font-weight:700;color:#0f172a;}
.cm-a4-client-infos{display:block;font-size:.9em;color:#475569;}
.cm-a4-title{text-align:center;margin:20px 0;font-size:2em;font-weight:900;color:var(--cm-doc-primary);text-transform:uppercase;letter-spacing:4px;line-height:1;opacity:.9;}
@media (min-width:768px){ .cm-a4-title{font-size:2.8em;} }
.cm-a4-object{margin-bottom:20px;padding:8px 10px;border-left:3px solid var(--cm-doc-primary);background:rgba(255,255,255,.5);font-size:.95em;}
.cm-a4-table-wrap{margin-bottom:20px;overflow-x:auto;}
.cm-a4-table{width:100%;border-collapse:collapse;}
.cm-a4-table th{text-align:left;padding:10px 8px;background:var(--cm-doc-primary);color:#fff;text-transform:uppercase;font-size:.85em;font-weight:700;}
.cm-a4-table td{padding:10px 8px;border-bottom:1px solid #e2e8f0;vertical-align:top;background:transparent;}
.cm-a4-table .is-center{text-align:center;}
.cm-a4-table .is-end{text-align:right;white-space:nowrap;}
.cm-a4-col-des{width:45%;} .cm-a4-col-qte{width:10%;} .cm-a4-col-pu{width:20%;} .cm-a4-col-tot{width:25%;}
.cm-a4-desc{color:#64748b;}
.cm-a4-totals{display:flex;justify-content:flex-end;margin-bottom:25px;}
.cm-a4-totals-box{width:100%;background:rgba(255,255,255,.9);padding:10px;border-radius:6px;border:1px solid #f1f5f9;}
@media (min-width:768px){ .cm-a4-totals-box{width:45%;} }
.cm-a4-total-row{display:flex;justify-content:space-between;gap:1rem;padding:4px 0;font-size:1em;color:#64748b;}
.cm-a4-total-row.is-neg{color:#ef4444;}
.cm-a4-total-row.is-paid{margin-top:5px;color:#059669;font-weight:600;}
.cm-a4-total-row.is-split{margin-top:5px;border-top:1px dashed #cbd5e1;padding-top:5px;}
.cm-a4-total-row.is-sep{margin-top:8px;border-top:1px solid #e2e8f0;padding-top:8px;}
.cm-a4-total-row .is-due{color:#dc2626;}
.cm-a4-total-final{border-top:2px solid var(--cm-doc-primary);margin-top:8px;padding-top:8px;color:var(--cm-doc-primary);font-weight:800;font-size:1.25em;display:flex;justify-content:space-between;gap:1rem;}
.cm-a4-arrete{background:rgba(241,245,249,.8);border:1px solid #cbd5e1;padding:12px;border-radius:6px;text-align:center;font-size:1em;color:#334155;margin-bottom:30px;}
.cm-a4-arrete-note{font-size:.9em;font-style:italic;color:#64748b;}
.cm-a4-note{margin-bottom:25px;padding:10px 12px;border-left:3px solid var(--cm-doc-primary);background:rgba(248,250,252,.6);font-size:.9em;color:#334155;}
.cm-a4-note strong{color:var(--cm-doc-primary);}
.cm-a4-sign{display:flex;justify-content:flex-end;margin-top:auto;padding-bottom:20px;}
.cm-a4-sign-box{text-align:center;width:250px;max-width:100%;}
.cm-a4-sign-name{font-weight:800;font-size:1.1em;color:#0f172a;}
.cm-a4-sign-role{font-size:.9em;font-style:italic;color:#64748b;}
.cm-a4-sign-by{font-size:.8em;text-transform:uppercase;color:#94a3b8;}
.cm-a4-sign-by-name{font-weight:700;font-size:1.1em;}
.cm-a4-sign-imgs{height:80px;position:relative;display:flex;justify-content:center;align-items:center;margin-top:10px;}
.cm-a4-sign-img{max-height:60px;max-width:150px;z-index:2;}
.cm-a4-stamp{position:absolute;opacity:.8;z-index:1;max-height:80px;top:-10px;right:20px;transform:rotate(-10deg);}
.cm-a4-footer{text-align:center;padding-top:15px;border-top:2px solid #e2e8f0;font-size:.85em;color:#64748b;background:#fff;margin-top:10px;}
@media print{ .cm-no-print{display:none !important;} .cm-a4{box-shadow:none;margin:0;} }
.cm-a4-wrap{max-width:210mm;margin:0 auto;}
.cm-a4-validity{font-size:.9em;color:#64748b;}

/* Variante « livraison » des lignes (bordereaux : désignation, détails, quantité — sans prix) */
.cm-lines-bl .cm-line{grid-template-areas:"des des des des des del" "dsc dsc dsc dsc qte qte";}
.cm-line-dsc{grid-area:dsc;min-width:0;}
@media (min-width:768px){
  .cm-lines-bl .cm-lines-head,.cm-lines-bl .cm-line{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) 110px 40px;grid-template-areas:"des dsc qte del";}
  .cm-lines-bl .cm-lines-head > span:nth-child(n+3){text-align:center;}
}
/* Aperçu A4 — bordereau : colonne Observation, double signature client / fournisseur */
.cm-a4-col-obs{width:35%;}
.cm-a4-table td.cm-a4-obs{border-left:1px solid #e2e8f0;height:35px;}
.cm-a4-ref{margin-bottom:20px;}
.cm-a4-ref p{margin:0 0 .5rem;}
.cm-a4-internal{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;padding:.6rem .8rem;font-size:.85em;color:#64748b;}
.cm-a4-sign-dual{display:flex;flex-direction:column;gap:1.5rem;margin-top:auto;padding-bottom:20px;}
.cm-a4-sign-half{text-align:left;}
.cm-a4-sign-half.is-end{text-align:right;}
.cm-a4-sign-caption{font-weight:700;text-transform:uppercase;font-size:.8em;color:#64748b;margin-bottom:.4rem;}
.cm-a4-sign-hint{font-size:.85em;color:#64748b;}
.cm-a4-sign-line{height:60px;border-bottom:1px dashed #cbd5e1;margin-top:10px;width:80%;}
.cm-a4-sign-imgs.is-end{justify-content:flex-end;height:100px;}
.cm-a4-sign-imgs.is-end .cm-a4-sign-img{max-height:70px;}
.cm-a4-sign-imgs.is-end .cm-a4-stamp{right:0;max-height:110px;}
@media (min-width:768px){
  .cm-a4-sign-dual{flex-direction:row;justify-content:space-between;align-items:flex-end;}
  .cm-a4-sign-half{width:45%;}
}
/* Ligne sélectionnable (case à cocher en tête de ligne : relances groupées…) */
.cm-row-check{align-self:center;flex-shrink:0;}
.cm-list-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:.6rem;}
.cm-items-end{align-items:flex-end;}

/* Variante « achat » des lignes (sans poignée ni numéro : désignation, qté, coût, montant) */
.cm-lines-achat .cm-line{grid-template-areas:"des des des des des del" "qte qte pu pu mnt mnt";}
@media (min-width:768px){
  .cm-lines-achat .cm-lines-head,.cm-lines-achat .cm-line{grid-template-columns:minmax(0,1fr) 100px 150px 130px 40px;grid-template-areas:"des qte pu mnt del";}
  .cm-lines-achat .cm-lines-head > span:nth-child(n+2){text-align:right;}
}
/* Carte de choix sans case visible (mode de saisie…) : l'état coché suffit */
.cm-choice-card{flex-direction:column;align-items:center;text-align:center;padding:1.1rem 1rem;}
.cm-choice-card input{position:absolute;opacity:0;pointer-events:none;}
.cm-choice-card .cm-choice-icon{font-size:1.6rem;color:var(--cm-primary);}
.cm-choice-card:has(input:disabled){cursor:not-allowed;opacity:.7;}
/* Encadré de paramètre fiscal (interrupteur + taux) */
.cm-param{background:var(--cm-surface-alt);border:1px solid var(--cm-border);border-radius:var(--cm-radius-md);padding:.85rem 1rem;}
.cm-choice-card{position:relative;}
/* Sélecteur de couleur natif */
.cm-input-color{height:48px;padding:.3rem;cursor:pointer;}
/* Pastille de couleur (couleur de données via --cm-swatch) */
.cm-swatch{width:36px;height:36px;border-radius:var(--cm-radius);background:var(--cm-swatch,var(--cm-primary));border:2px solid var(--cm-border-soft);flex-shrink:0;}
/* Indicateur en alerte (bordure rouge) */
.cm-stat.is-alert{border-color:var(--cm-danger);box-shadow:0 0 0 2px rgba(231,76,60,.2);}
/* Variation de stock signée */
.cm-delta{font-weight:800;font-size:1.05rem;white-space:nowrap;font-variant-numeric:tabular-nums;}
.cm-delta.is-plus{color:#16a34a;}
.cm-delta.is-minus{color:var(--cm-danger);}
.cm-delta.is-zero{color:var(--cm-text-muted);}
/* Carte mise en avant (fond primaire) — ex. top articles de la caisse */
.cm-card-feature{background:var(--cm-primary);color:#fff;box-shadow:0 10px 25px rgba(11,70,80,.3);}
.cm-card-feature .cm-card-title{color:#fff;}
.cm-card-feature .cm-mini-row{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.1);border-radius:var(--cm-radius);padding:.65rem .85rem;margin-bottom:.5rem;}
.cm-card-feature .cm-mini-row:last-child{margin-bottom:0;}
.cm-card-feature .cm-empty{color:rgba(255,255,255,.75);}
.cm-pill-onfeature{background:rgba(0,196,154,.2);color:var(--cm-accent);}
.cm-chart-md{position:relative;height:250px;}

/* Panneau centré à en-tête coloré (ouverture / fermeture de caisse…) */
.cm-center-page{min-height:70vh;display:flex;align-items:center;justify-content:center;padding:1rem 0;}
.cm-panel{width:100%;max-width:560px;background:var(--cm-surface);border-radius:var(--cm-radius-lg);box-shadow:var(--cm-shadow-lg);overflow:hidden;}
.cm-panel-lg{max-width:680px;}
.cm-panel-head{background:var(--cm-primary);color:#fff;text-align:center;padding:1.5rem 1rem;}
.cm-panel-head.is-danger{background:var(--cm-danger);}
.cm-panel-head > i{font-size:2.2rem;display:block;margin-bottom:.5rem;}
.cm-panel-head > i.is-accent{color:var(--cm-accent);}
.cm-panel-head h1{color:#fff;font-size:1.35rem;font-weight:800;margin:0;}
.cm-panel-head p{color:rgba(255,255,255,.75);font-size:.85rem;margin:.3rem 0 0;}
.cm-panel-body{padding:1.25rem;}
@media (min-width:768px){ .cm-panel-body{padding:2rem;} }
.cm-section-title{font-weight:800;font-size:1rem;color:var(--cm-primary);border-bottom:2px solid var(--cm-border-soft);padding-bottom:.5rem;margin:0 0 1rem;}
.cm-stack{display:grid;gap:.5rem;}
.cm-stack .cm-btn{width:100%;}
/* Indicateur mis en valeur (fond accent) */
.cm-stat.is-highlight{background:var(--cm-accent);color:#fff;}
.cm-stat.is-highlight .cm-stat-label,.cm-stat.is-highlight .cm-stat-value{color:#fff;}
/* Grandes lignes clé / valeur (rapport de caisse) */
.cm-kv-lg{font-size:.92rem;padding:.55rem 0;}
.cm-kv-lg.cm-kv-total{font-size:1.05rem;background:var(--cm-surface-alt);padding:.8rem .6rem;border-radius:var(--cm-radius-sm);}
@media print{ .cm-card,.cm-panel{box-shadow:none !important;border:1px solid #ddd !important;} }
.cm-panel-full{max-width:none;}
.cm-kv-sep{border-top:1px solid var(--cm-border-soft);margin-top:.3rem;}

/* =====================================================================
   24. TRÉSORERIE (étape 6)
   ===================================================================== */
/* Icône de type de compte (banque / mobile money / espèces) */
.cm-acc-icon{width:44px;height:44px;border-radius:var(--cm-radius);display:grid;place-items:center;font-size:1.15rem;flex-shrink:0;background:rgba(11,70,80,.08);color:var(--cm-primary);}
.cm-acc-icon.is-mobile{background:rgba(245,158,11,.12);color:var(--cm-warning);}
.cm-acc-icon.is-cash{background:rgba(0,196,154,.12);color:var(--cm-accent);}
/* Bloc solde d'une tuile de compte */
.cm-balance{background:var(--cm-surface-alt);border-radius:var(--cm-radius);padding:.6rem .75rem;}
.cm-balance-label{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--cm-text-muted);}
.cm-balance-value{font-size:1.25rem;font-weight:800;color:var(--cm-text);font-variant-numeric:tabular-nums;}
.cm-balance-value small{font-size:.6em;color:var(--cm-text-muted);font-weight:700;}
.cm-balance-value.is-negative{color:var(--cm-danger);}
/* Point de statut */
.cm-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--cm-text-faint);margin-right:.35rem;vertical-align:middle;}
.cm-dot.is-on{background:var(--cm-accent);box-shadow:0 0 0 3px rgba(0,196,154,.18);}
.cm-tile-foot-between{justify-content:space-between;align-items:center;}
/* Bandeau de solde (fiche d'un compte) */
.cm-hero-balance{background:linear-gradient(135deg,var(--cm-primary) 0%,var(--cm-primary-light) 100%);color:#fff;border-radius:var(--cm-radius-lg);padding:1.5rem 1.25rem;text-align:center;margin-bottom:1.25rem;box-shadow:var(--cm-shadow-primary);}
.cm-hero-balance.is-mobile{background:linear-gradient(135deg,#b45309 0%,#f59e0b 100%);}
.cm-hero-balance.is-cash{background:linear-gradient(135deg,#047857 0%,var(--cm-accent) 100%);}
.cm-hero-balance .cm-acc-icon{margin:0 auto .6rem;background:rgba(255,255,255,.18);color:#fff;}
.cm-hero-balance h1{color:#fff;font-size:1.3rem;font-weight:800;margin:0;}
.cm-hero-balance .cm-hero-type{display:inline-block;margin-top:.35rem;font-size:.75rem;font-weight:700;background:rgba(255,255,255,.18);padding:.2rem .6rem;border-radius:999px;}
.cm-hero-balance .cm-hero-label{margin-top:1rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.6px;opacity:.8;font-weight:700;}
.cm-hero-balance .cm-hero-value{font-size:2rem;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1;}
.cm-hero-balance .cm-hero-value small{font-size:.5em;opacity:.8;}
.cm-mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.5px;overflow-wrap:anywhere;}
.cm-hero-balance.is-expense{background:linear-gradient(135deg,#b91c1c 0%,var(--cm-danger) 100%);}
.cm-hero-balance .cm-hero-status{display:inline-block;margin-top:.6rem;font-size:.75rem;font-weight:800;background:#fff;color:var(--cm-primary);padding:.25rem .75rem;border-radius:999px;}
.cm-hero-balance .cm-hero-status.is-pending{color:#92400e;background:#fef3c7;}
.cm-meta-foot{display:flex;justify-content:space-between;gap:.75rem;flex-wrap:wrap;font-size:.75rem;color:var(--cm-text-muted);border-top:1px dashed var(--cm-border);padding-top:.75rem;margin-top:1rem;}
/* Assistant d'import : étape n/3 */
.cm-steps-badge{display:inline-flex;align-items:center;gap:.35rem;font-size:.72rem;font-weight:800;color:var(--cm-primary);background:rgba(11,70,80,.08);border-radius:999px;padding:.2rem .6rem;}
/* Correspondance de colonnes (ligne champ → colonne) */
.cm-map-row{display:grid;grid-template-columns:1fr;gap:.35rem;padding:.75rem 0;border-bottom:1px solid var(--cm-border-soft);}
.cm-map-row:last-child{border-bottom:none;}
.cm-map-label{font-weight:700;font-size:.88rem;}
@media (min-width:768px){ .cm-map-row{grid-template-columns:1fr 1fr;align-items:center;gap:1rem;} }
/* Journal d'erreurs défilant */
.cm-log{max-height:250px;overflow-y:auto;background:var(--cm-surface-alt);border:1px solid var(--cm-border);border-radius:var(--cm-radius);padding:.75rem;margin:0;list-style:none;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;color:var(--cm-danger);}
.cm-log li{padding:.35rem 0;border-bottom:1px solid rgba(231,76,60,.12);}
.cm-log li:last-child{border-bottom:none;}

/* Bureau de tri (sas d'import) : 3 colonnes dès 992 px, onglets sur mobile */
.cm-sas-grid{display:grid;grid-template-columns:1fr;gap:1rem;margin-bottom:1.25rem;}
.cm-sas-col{background:var(--cm-surface);border:1px solid var(--cm-border);border-radius:var(--cm-radius-lg);display:flex;flex-direction:column;overflow:hidden;min-width:0;}
.cm-sas-head{padding:.9rem;border-bottom:1px solid var(--cm-border);background:var(--cm-surface-alt);}
.cm-sas-title{display:flex;align-items:center;gap:.5rem;font-weight:800;margin-bottom:.65rem;}
.cm-sas-title input{width:18px;height:18px;accent-color:var(--cm-primary);flex-shrink:0;}
.cm-sas-filters{display:flex;gap:.5rem;margin-top:.5rem;}
.cm-sas-filters > select{flex:2;min-width:0;}
.cm-seg{display:flex;gap:4px;flex:3;}
.cm-seg-btn{flex:1;min-height:38px;font-size:.75rem;padding:.3rem .4rem;border:1px solid var(--cm-border);border-radius:var(--cm-radius-sm);background:var(--cm-surface);color:var(--cm-text-muted);font-weight:700;cursor:pointer;transition:.15s;}
.cm-seg-btn:hover{color:var(--cm-primary);}
.cm-seg-btn.active{background:var(--cm-primary);border-color:var(--cm-primary);color:#fff;}
.cm-sas-body{flex:1;overflow-y:auto;padding:.75rem;background:var(--cm-bg);max-height:60vh;}
.cm-sas-item{display:flex;gap:.75rem;align-items:flex-start;background:var(--cm-surface);border:1px solid var(--cm-border);border-radius:var(--cm-radius-md);padding:.8rem;margin-bottom:.6rem;cursor:pointer;transition:.15s;}
.cm-sas-item:hover{border-color:var(--cm-primary-light);}
.cm-sas-item.selected{border-color:var(--cm-primary);background:#f0fdfa;box-shadow:0 0 0 2px rgba(11,70,80,.1);}
.cm-sas-item > input{width:20px;height:20px;accent-color:var(--cm-primary);margin-top:2px;flex-shrink:0;cursor:pointer;}
.cm-sas-content{flex:1;min-width:0;}
.cm-sas-top{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem;margin-bottom:.3rem;}
.cm-sas-date{font-size:.72rem;font-weight:700;color:var(--cm-text-muted);text-transform:uppercase;}
.cm-sas-libelle{font-weight:600;font-size:.9rem;line-height:1.3;overflow-wrap:anywhere;}
.cm-sas-amount{font-weight:800;font-size:1.05rem;margin-top:.25rem;font-variant-numeric:tabular-nums;}
@media (min-width:992px){
  .cm-sas-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
  .cm-sas-col{height:calc(100vh - 300px);min-height:480px;}
  .cm-sas-body{max-height:none;}
}
/* Barre d'action collante (sélection + actions) */
.cm-actionbar{position:sticky;bottom:.75rem;z-index:1000;background:#1e293b;color:#fff;border-radius:var(--cm-radius-lg);padding:.75rem 1rem;display:flex;flex-direction:column;gap:.6rem;box-shadow:0 10px 40px rgba(0,0,0,.25);}
.cm-actionbar-sum{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;}
.cm-actionbar-stat{display:flex;flex-direction:column;}
.cm-actionbar-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.5px;color:#94a3b8;font-weight:700;}
.cm-actionbar-value{font-size:1.1rem;font-weight:800;}
.cm-actionbar-value.is-info{color:#7dd3fc;}
.cm-actionbar-value.is-warning{color:#fcd34d;}
.cm-actionbar-btns{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;}
.cm-actionbar-btns .cm-btn{flex:1 1 auto;}
.cm-actionbar-warn{color:#fca5a5;font-size:.82rem;font-weight:600;line-height:1.25;}
@media (min-width:992px){
  .cm-actionbar{flex-direction:row;justify-content:space-between;align-items:center;padding:1rem 1.5rem;}
  .cm-actionbar-btns .cm-btn{flex:0 0 auto;}
  .cm-actionbar-warn{max-width:340px;text-align:right;}
}
.cm-btn-warning{background:#f59e0b;color:#fff;}
.cm-btn-warning:hover,.cm-btn-warning:focus{background:#d97706;color:#fff;}
.cm-btn-violet{background:#8b5cf6;color:#fff;}
.cm-btn-violet:hover,.cm-btn-violet:focus{background:#6d28d9;color:#fff;}
.cm-btn-info{background:#3b82f6;color:#fff;}
.cm-btn-info:hover,.cm-btn-info:focus{background:#2563eb;color:#fff;}
.cm-btn-soft-warning{background:#fffbeb;color:#d97706;border-color:#fde68a;}
.cm-btn-soft-warning:hover,.cm-btn-soft-warning:focus{background:#fef3c7;color:#b45309;}
/* Pastille de compteur sur un bouton */
.cm-count-badge{position:absolute;top:-6px;right:-6px;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:var(--cm-danger);color:#fff;font-size:.65rem;font-weight:800;display:grid;place-items:center;}
.cm-relative{position:relative;}
/* Liste déroulante ouverte (select size=n) */
.cm-listbox{height:auto;min-height:160px;padding:.35rem;}
@media (min-width:992px){ .cm-sas-col.cm-tabpane{display:flex !important;} }

/* =====================================================================
   25. COMPTABILITÉ & FISCALITÉ (étape 7)
   ===================================================================== */
/* Tableau comptable : colonnes de solde mises en évidence, code de compte */
.cm-table .cm-col-solde{background:#f5f7ff;}
.cm-table tfoot td.cm-col-solde{color:#4f46e5;}
.cm-account{font-weight:800;color:var(--cm-primary);white-space:nowrap;}
.cm-journal{display:inline-block;font-size:.7rem;font-weight:800;padding:.15rem .45rem;border-radius:6px;background:rgba(11,70,80,.08);color:var(--cm-primary);}
/* Barre d'actions de filtre compacte (Actualiser / Réinitialiser / CSV / PDF) */
.cm-filter-actions{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;align-self:end;}
.cm-filter-actions .cm-btn{width:100%;padding-left:.5rem;padding-right:.5rem;}
.cm-btn-csv{background:#10b981;color:#fff;}
.cm-btn-csv:hover,.cm-btn-csv:focus{background:#059669;color:#fff;}
.cm-btn-pdf{background:#ef4444;color:#fff;}
.cm-btn-pdf:hover,.cm-btn-pdf:focus{background:#dc2626;color:#fff;}
/* État comptable en lignes (bilan, compte de résultat) */
.cm-report{background:var(--cm-surface);border:1px solid var(--cm-border);border-radius:var(--cm-radius-lg);overflow:hidden;min-width:0;}
.cm-report-head{display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding:.85rem 1rem;font-weight:800;color:#fff;background:var(--cm-primary);}
.cm-report-head.is-danger{background:var(--cm-danger);}
.cm-report-head.is-accent{background:var(--cm-accent);}
.cm-report-body{padding:.5rem 1rem 1rem;}
.cm-report-sub{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--cm-text-muted);padding:.75rem 0 .35rem;border-bottom:1px solid var(--cm-border);margin-bottom:.25rem;}
.cm-report-row{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;padding:.4rem 0;border-bottom:1px dashed var(--cm-border-soft);font-size:.85rem;}
.cm-report-row:last-child{border-bottom:none;}
.cm-report-row .cm-report-lbl{min-width:0;overflow-wrap:anywhere;}
.cm-report-row .cm-report-amt{font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums;}
.cm-report-code{font-weight:800;color:var(--cm-primary);margin-right:.35rem;}
.cm-report-total{display:flex;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;font-weight:800;background:var(--cm-surface-alt);border-top:2px solid var(--cm-border);}
/* Ligne à 4 colonnes (libellé + brut / amort. / net) : 2 lignes sur mobile */
.cm-report-row4{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-areas:"lbl lbl lbl" "b a n";gap:.15rem .5rem;padding:.45rem 0;border-bottom:1px dashed var(--cm-border-soft);font-size:.82rem;}
.cm-report-row4 > :nth-child(1){grid-area:lbl;font-weight:600;overflow-wrap:anywhere;}
.cm-report-row4 > :nth-child(2){grid-area:b;}
.cm-report-row4 > :nth-child(3){grid-area:a;color:var(--cm-text-muted);}
.cm-report-row4 > :nth-child(4){grid-area:n;font-weight:800;}
.cm-report-row4 > :nth-child(n+2){text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;}
.cm-report-row4.is-head{font-size:.66rem;font-weight:800;text-transform:uppercase;color:var(--cm-text-muted);border-bottom:1px solid var(--cm-border);}
.cm-report-row4.is-head > :nth-child(1){display:none;}
@media (min-width:768px){
  .cm-report-row4{grid-template-columns:minmax(0,1fr) 95px 95px 95px;grid-template-areas:"lbl b a n";align-items:baseline;}
  .cm-report-row4.is-head > :nth-child(1){display:block;}
}
/* Résultat net mis en avant */
.cm-result{background:var(--cm-surface);border:1px solid var(--cm-border);border-radius:var(--cm-radius-lg);text-align:center;padding:1.25rem 1rem;margin-bottom:1.25rem;box-shadow:var(--cm-shadow);}
.cm-result-value{font-size:2rem;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.15;}
.cm-result-value.is-positive{color:#16a34a;}
.cm-result-value.is-negative{color:var(--cm-danger);}
/* Lignes de tableau d'état (SIG, TFT) */
.cm-table tr.is-section td{background:var(--cm-surface-alt);font-weight:800;color:var(--cm-primary);text-transform:uppercase;font-size:.75rem;letter-spacing:.4px;}
.cm-table tr.is-section.is-warning td{background:#fff7ed;color:#c2410c;}
.cm-table tr.is-section.is-info td{background:#eff6ff;color:#1e40af;}
.cm-table tr.is-subtotal td{font-weight:800;border-top:1px solid var(--cm-border);}
.cm-table tr.is-final td{font-weight:800;background:var(--cm-primary);color:#fff;font-size:.95rem;}
.cm-table-plain{min-width:0;}
.cm-report-total .cm-report-row4{border-bottom:none;padding:0;font-size:.85rem;}
/* Variante « écriture comptable » des lignes (compte, libellé, débit, crédit) */
.cm-lines-od .cm-line{grid-template-areas:"des des des des des del" "dsc dsc dsc dsc dsc dsc" "qte qte qte pu pu pu";}
@media (min-width:768px){
  .cm-lines-od .cm-lines-head,.cm-lines-od .cm-line{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) 130px 130px 40px;grid-template-areas:"des dsc qte pu del";}
  .cm-lines-od .cm-lines-head > span:nth-child(3),.cm-lines-od .cm-lines-head > span:nth-child(4){text-align:right;}
}
.cm-lines-od .sr-wrap{min-width:0;}
/* Indicateur d'équilibre d'une écriture */
.cm-balance-state{text-align:center;font-weight:800;padding:.75rem;border-radius:var(--cm-radius);margin:1rem 0;}
.cm-balance-state.balanced{background:#dcfce7;color:#166534;}
.cm-balance-state.unbalanced{background:#fee2e2;color:#991b1b;}
/* Étapes de contrôle (clôture d'exercice…) */
.cm-checkstep{display:flex;gap:.9rem;align-items:flex-start;background:var(--cm-surface);border:1px solid var(--cm-border);border-radius:var(--cm-radius-md);padding:1rem;margin-bottom:.75rem;}
.cm-checkstep-icon{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;background:var(--cm-border-soft);color:var(--cm-text-muted);}
.cm-checkstep-icon.is-ok{background:#dcfce7;color:#16a34a;}
.cm-checkstep-icon.is-ko{background:#fee2e2;color:var(--cm-danger);}
.cm-checkstep-title{font-weight:800;font-size:.95rem;margin:0 0 .25rem;}
.cm-checkstep p{margin:0;font-size:.85rem;color:var(--cm-text-muted);}
/* Ligne d'exercice archivé : année + actions */
.cm-year{min-width:56px;height:56px;border-radius:var(--cm-radius-md);background:var(--cm-primary);color:#fff;font-weight:800;font-size:1.05rem;display:grid;place-items:center;flex-shrink:0;}
@media (min-width:992px){ .cm-sas-grid.cm-sas-grid-2{grid-template-columns:repeat(2,minmax(0,1fr));} }
/* Cercle de progression (pourcentage en texte) */
.cm-progress-circle{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;font-size:.8rem;font-weight:800;background:rgba(245,158,11,.12);color:#b45309;flex-shrink:0;}
.cm-progress-circle.is-done{background:#dcfce7;color:#16a34a;}
/* Carte de diagnostic (contrôle automatique) */
.cm-diag{display:flex;flex-direction:column;gap:.6rem;}
.cm-diag-head{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;}
.cm-diag-head > i{font-size:1.6rem;opacity:.35;}
.cm-table tr.is-valid td{background:#f0fdf4;color:#166534;}
.cm-table tr.is-invalid td{background:#fef2f2;color:#991b1b;}
.cm-table tr.is-group td{background:var(--cm-surface-alt);text-align:center;font-size:.72rem;font-weight:800;text-transform:uppercase;color:var(--cm-text-muted);}
/* Fiscalité : largeur max 640px centrée (liquidation TVA) */
.cm-mw-lg{max-width:640px;}
.cm-mx-auto{margin-left:auto;margin-right:auto;}

/* ==========================================================
   26. FISCALITÉ (lot 7e)
   ========================================================== */
/* Variante « ajustements fiscaux » des lignes : type, nature, ligne e-SINTAX, montant */
.cm-line-typ{grid-area:typ;min-width:0;}
.cm-line-cod{grid-area:cod;min-width:0;display:flex;align-items:center;gap:.35rem;}
.cm-lines-tax .cm-line{grid-template-areas:"typ typ typ typ typ del" "des des des des des des" "cod cod mnt mnt mnt mnt";}
@media (min-width:768px){
  .cm-lines-tax .cm-lines-head,.cm-lines-tax .cm-line{grid-template-columns:180px minmax(0,1fr) 90px 150px 40px;grid-template-areas:"typ des cod mnt del";}
  .cm-lines-tax .cm-lines-head > span:nth-child(4){text-align:right;}
}
.cm-esintax{display:inline-block;background:#fee2e2;color:#991b1b;border:1px solid #f87171;border-radius:4px;font-size:.7rem;font-weight:800;padding:.1rem .4rem;white-space:nowrap;}
.cm-tax-result{padding:1rem;border-radius:var(--cm-radius-md);background:var(--cm-bg);border:1px solid var(--cm-border);text-align:center;}
.cm-tax-result-value{font-size:1.6rem;font-weight:900;line-height:1.2;color:var(--cm-primary);}
.cm-tax-result-value.is-negative{color:var(--cm-danger);}
.cm-note-accent{background:#f0fdfa;border-left:4px solid var(--cm-accent);}
/* États nominatifs DGI / CNSS : en-tête formulaire, colonnes colorées, récap, signatures */
.cm-dgi-head{display:grid;grid-template-columns:1fr;gap:.75rem 2rem;background:var(--cm-surface);border:2px solid var(--cm-primary);border-radius:var(--cm-radius-md);padding:1rem 1.1rem;margin-bottom:1.25rem;}
@media (min-width:640px){.cm-dgi-head{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (min-width:992px){.cm-dgi-head{grid-template-columns:repeat(3,minmax(0,1fr));padding:1.25rem 1.5rem;}}
.cm-dgi-field{display:flex;flex-direction:column;gap:.15rem;min-width:0;}
.cm-dgi-field.is-full{grid-column:1 / -1;}
.cm-dgi-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.5px;color:var(--cm-text-muted);font-weight:700;}
.cm-dgi-value{font-size:.95rem;font-weight:700;color:var(--cm-text);overflow-wrap:anywhere;}
.cm-table .cm-col-iuts{color:#dc2626;}
.cm-table .cm-col-ouv{color:#0369a1;}
.cm-table .cm-col-pat{color:#7c3aed;}
.cm-table .cm-col-tpa{color:#d97706;}
.cm-table .cm-col-pay{color:#166534;font-weight:800;}
.cm-table .cm-th-sub{display:block;font-weight:400;font-size:.68rem;text-transform:none;}
.cm-table td.cm-upper{text-transform:uppercase;font-weight:700;}
.cm-stat.is-top{border-top:3px solid var(--cm-border);}
.cm-stat.is-top-iuts{border-top-color:#dc2626;}
.cm-stat.is-top-ouv{border-top-color:#0369a1;}
.cm-stat.is-top-pat{border-top-color:#7c3aed;}
.cm-stat.is-top-tpa{border-top-color:#d97706;}
.cm-stat.is-top-total{border-top-color:#16a34a;}
.cm-sign-dual{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-top:2rem;text-align:center;}
.cm-sign-role{font-size:.8rem;color:var(--cm-text-muted);margin-bottom:2.5rem;}
.cm-sign-line{border-top:1px solid #cbd5e1;padding-top:.5rem;font-size:.75rem;color:var(--cm-text-faint);}
@media print{
  .cm-dgi-head{border:1px solid #ccc;}
  .cm-table thead th{background:#f1f5f9 !important;-webkit-print-color-adjust:exact;print-color-adjust:exact;}
  .cm-table-scroll{overflow:visible;margin:0;padding:0;}
}
/* Liasse fiscale : carte grisée + liste à puces cochées */
.cm-card.is-alt{background:var(--cm-surface-alt);}
.cm-check-list{list-style:none;padding:0;margin:0 0 1rem;display:flex;flex-direction:column;gap:.6rem;}
.cm-check-list li{display:flex;align-items:flex-start;gap:.5rem;color:var(--cm-text-body,#475569);font-size:.9rem;}
.cm-check-list li i{color:var(--cm-accent);margin-top:.15rem;}
/* Notes annexes RSI : en-tête d'impression et grille 3 colonnes */
.cm-stats-3{grid-template-columns:1fr;}
@media (min-width:768px){.cm-stats-3{grid-template-columns:repeat(3,minmax(0,1fr));}}
.cm-stat-text{font-size:.95rem;font-weight:800;color:var(--cm-text);line-height:1.3;overflow-wrap:anywhere;}
.cm-print-only{display:none;}
@media print{
  .cm-print-only{display:block !important;text-align:center;margin-bottom:2rem;border-bottom:2px solid #000;padding-bottom:1rem;}
  .cm-print-only h2{font-size:22px;font-weight:bold;margin:0 0 10px;text-transform:uppercase;color:#000;}
  .cm-print-only p{font-size:15px;margin:0;color:#000;}
  .cm-print-flat .cm-stat,.cm-print-flat .cm-card{border:1px solid #000 !important;box-shadow:none !important;border-radius:0 !important;page-break-inside:avoid;background:transparent !important;}
  .cm-print-flat .cm-stat-icon{display:none !important;}
  .cm-print-flat .cm-section-title{color:#000;border-bottom-color:#000;}
}
/* Barre « année + actions » des états fiscaux (IUTS, CNSS, notes annexes) :
   mobile = sélecteur et bouton sur une ligne, actions en dessous ; dès 768px = une seule ligne */
.cm-yearbar{background:var(--cm-surface);border:1px solid rgba(0,0,0,.04);border-radius:var(--cm-radius-lg);box-shadow:var(--cm-shadow);padding:.85rem;display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.25rem;}
.cm-yearbar-form{display:flex;align-items:center;gap:.5rem;margin:0;}
.cm-yearbar-form .cm-label{margin:0;white-space:nowrap;}
.cm-yearbar-form .cm-input{flex:1 1 auto;min-width:0;width:auto;}
.cm-yearbar-form .cm-btn{flex-shrink:0;}
.cm-yearbar-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.5rem;}
.cm-yearbar-actions .cm-btn{width:100%;}
@media (min-width:768px){
  .cm-yearbar{flex-direction:row;align-items:center;justify-content:space-between;padding:.85rem 1.1rem;}
  .cm-yearbar-form .cm-input{flex:0 0 auto;min-width:120px;}
  .cm-yearbar-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;}
  .cm-yearbar-actions .cm-btn{width:auto;}
}

/* ==========================================================
   27. COQUE DE NAVIGATION (lot 8a)
   ========================================================== */
/* Barre de navigation inférieure — mobile uniquement (masquée dès 768px par cm-only-mobile).
   Capsule flottante façon application : fond translucide flouté, coins arrondis,
   onglet courant en pastille. Décollée du bas de l'écran de la zone de sécurité
   (var(--cm-safe-bottom)) pour ne pas gêner la barre d'accueil des iPhone. */
.cm-bottomnav{position:fixed;left:12px;right:12px;bottom:calc(10px + var(--cm-safe-bottom));width:calc(100% - 24px);z-index:1035;display:flex;align-items:stretch;gap:2px;padding:6px;background:rgba(255,255,255,.9);-webkit-backdrop-filter:blur(16px) saturate(180%);backdrop-filter:blur(16px) saturate(180%);border:1px solid rgba(15,23,42,.06);border-radius:26px;box-shadow:0 10px 30px rgba(15,23,42,.16),0 2px 6px rgba(15,23,42,.06);font-family:var(--cm-font);}
/* Largeur selon le libellé (flex-basis auto) : « Accueil » et « Menu », courts, laissent la place à « Transactions » et « Facturation » */
.cm-bottomnav-item{flex:1 1 auto;min-width:0;min-height:58px;padding:.5rem .15rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;background:transparent;border:0;border-radius:20px;color:#475569;text-decoration:none;font-size:.7rem;font-weight:600;line-height:1.1;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .2s,color .2s,transform .12s;}
.cm-bottomnav-item i{font-size:1.4rem;line-height:1;}
.cm-bottomnav-item:hover,.cm-bottomnav-item:focus-visible{color:var(--cm-primary);text-decoration:none;}
.cm-bottomnav-item:active{transform:scale(.94);}
.cm-bottomnav-item.is-current{background:rgba(0,196,154,.14);color:var(--cm-primary);font-weight:700;}
.cm-bottomnav-item.is-current i{color:var(--cm-accent);}
.cm-bottomnav-label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* Réserve la hauteur de la capsule en bas de page pour ne rien masquer */
.cm-bottomnav-spacer{height:calc(96px + var(--cm-safe-bottom));}
/* Saisie au clavier (partial.mobile-nav) : la barre fixe ne recouvre pas le champ en cours de saisie */
html.cm-saisie-active .cm-bottomnav{display:none;}
/* Bouton « haut de page » remonté au-dessus de la capsule sur mobile */
body:has(.cm-bottomnav) .btn-scroll-top{bottom:calc(100px + var(--cm-safe-bottom));}
/* Sur mobile, la capsule remplace le bouton hamburger de l'en-tête ; le logo reprend sa place à gauche */
body:has(.cm-bottomnav) .app-header .mobile-toggler{display:none !important;}
body:has(.cm-bottomnav) .app-header .brand{display:flex;padding-left:1rem;}
@media (min-width:768px){
  body:has(.cm-bottomnav) .btn-scroll-top{bottom:1.875rem;}
  body:has(.cm-bottomnav) .app-header .mobile-toggler{display:block !important;}
  body:has(.cm-bottomnav) .app-header .brand{padding-left:0;}
}
@media (min-width:992px){
  body:has(.cm-bottomnav) .app-header .mobile-toggler{display:none !important;}
}

/* En-tête : logo de l'application (plus spécifique que « .app-header .brand img » de Color Admin,
   qui le bridait à la hauteur utile de l'en-tête), logo de l'entreprise à la place de la photo */
.app-header .brand .cm-brand-logo{height:32px;max-height:32px;width:auto;max-width:none;}
@media (min-width:768px){.app-header .brand .cm-brand-logo{height:40px;max-height:40px;}}
.cm-header-logo{width:100%;height:100%;object-fit:contain;background:#fff;border-radius:50%;border:1px solid var(--cm-border);padding:2px;}
.cm-header-avatar{width:100%;height:100%;display:flex;align-items:center;justify-content:center;border-radius:50%;background:rgba(11,70,80,.08);color:var(--cm-primary);font-size:1rem;}

/* Notifications de l'en-tête */
.cm-notif-badge{background-color:var(--cm-danger) !important;color:#fff !important;}
.cm-notif-dot{color:var(--cm-accent);font-size:8px;}
.cm-notif-menu .dropdown-item:active,.cm-notif-menu .dropdown-item:focus{background-color:rgba(0,196,154,.1) !important;color:inherit !important;}

/* Badge du plan dans la barre latérale */
.cm-plan-badge{display:block;padding:.5rem;border-radius:var(--cm-radius-sm);color:#fff;font-size:.75rem;font-weight:700;letter-spacing:1px;text-transform:uppercase;text-align:center;background:#64748b;}
.cm-plan-badge.is-entrepreneur{background:#2563eb;}
.cm-plan-badge.is-croissance{background:#9333ea;}
.cm-plan-badge.is-elite{background:#059669;}

/* ==========================================================
   28. BANDEAUX GLOBAUX (lot 8a) — flash, annonces, usurpation, teasing WhatsApp
   ========================================================== */
/* Zone des bandeaux au-dessus du contenu des pages (alignée sur cm-container) */
.cm-flash-wrap{padding-bottom:0;display:flex;flex-direction:column;gap:.75rem;}
.cm-flash-wrap > .cm-alert{margin-bottom:0;}
/* Alerte avec action à droite (retour à la ligne sur mobile) */
.cm-alert-action{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;font-weight:600;}
.cm-alert-action-text{display:flex;align-items:center;gap:.6rem;min-width:0;}

/* Paliers de recharge (modale « Recharger le portefeuille ») */
.cm-palier-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;margin-bottom:1rem;}
@media (min-width:640px){.cm-palier-grid-4{grid-template-columns:repeat(4,minmax(0,1fr));}}
.cm-hero-balance .cm-hero-type + .cm-hero-type{margin-left:.35rem;}
.cm-palier{min-height:var(--cm-tap);border:2px solid var(--cm-border);background:var(--cm-surface);border-radius:var(--cm-radius-sm);padding:.6rem;font-weight:700;color:var(--cm-text);cursor:pointer;transition:.15s;}
.cm-palier:hover{border-color:var(--cm-accent);}
.cm-palier.is-selected{border-color:var(--cm-accent);background:rgba(0,196,154,.08);color:var(--cm-primary);}

/* Annonces de la plateforme */
@keyframes cm-slide-down{from{opacity:0;transform:translateY(-15px);}to{opacity:1;transform:translateY(0);}}
.cm-announce{display:flex;align-items:flex-start;gap:1rem;position:relative;border-radius:var(--cm-radius-sm);padding:1rem 1.1rem;border:1px solid #bfdbfe;border-left:4px solid #3b82f6;background:#eff6ff;color:#1e40af;box-shadow:0 4px 6px -1px rgba(0,0,0,.05);animation:cm-slide-down .4s cubic-bezier(.16,1,.3,1) forwards;}
.cm-announce.is-warning{background:#fffbeb;border-color:#fcd34d;border-left-color:#f59e0b;color:#92400e;}
.cm-announce.is-danger{background:#fef2f2;border-color:#fecaca;border-left-color:#ef4444;color:#b91c1c;}
.cm-announce.is-success{background:#f0fdf4;border-color:#bbf7d0;border-left-color:#22c55e;color:#15803d;}
.cm-announce-icon{font-size:1.4rem;line-height:1;margin-top:2px;flex-shrink:0;}
.cm-announce-body{flex:1;min-width:0;}
.cm-announce-title{margin:0 0 .2rem;font-size:.95rem;font-weight:800;text-transform:uppercase;letter-spacing:.025em;color:inherit;}
.cm-announce-text{margin:0;font-size:.9rem;line-height:1.5;font-weight:500;opacity:.95;overflow-wrap:anywhere;}
.cm-announce-close{background:none;border:0;color:inherit;opacity:.45;cursor:pointer;font-size:1.3rem;line-height:1;width:var(--cm-tap);height:var(--cm-tap);margin:-.7rem -.7rem 0 0;flex-shrink:0;}
.cm-announce-close:hover{opacity:.8;}
/* Bloc de diagnostic (?debug_roles=1) */
.cm-debug{background:#000;color:#0f0;padding:10px;font-family:var(--cm-font-mono);font-size:11px;border-radius:5px;border:1px solid #0f0;overflow-wrap:anywhere;}

/* Bandeau « Mode Admin » (usurpation d'identité) — toujours au-dessus de tout */
@keyframes cm-slide-up{from{transform:translateY(100%);}to{transform:translateY(0);}}
.cm-impersonate{position:fixed;left:0;bottom:0;width:100%;z-index:2147483647;background:#dc2626;color:#fff;box-shadow:0 -2px 10px rgba(0,0,0,.2);font-family:var(--cm-font);font-size:12px;line-height:1.35;padding:8px 12px calc(8px + var(--cm-safe-bottom));display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:10px;text-align:left;animation:cm-slide-up .3s ease-out forwards;}
.cm-impersonate-content{display:flex;flex-direction:row;align-items:center;gap:8px;min-width:0;}
.cm-impersonate-label{text-transform:uppercase;opacity:.9;margin-right:5px;}
.cm-impersonate-btn{display:inline-flex;align-items:center;flex-shrink:0;min-height:36px;background:#fff;color:#dc2626;border:1px solid #fff;padding:6px 12px;border-radius:50px;font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;text-decoration:none;}
.cm-impersonate-btn:hover{background:#f1f1f1;color:#b91c1c;text-decoration:none;}
/* Place réservée en bas de page ; sur mobile, le bandeau se pose au-dessus de la capsule */
body:has(.cm-impersonate){margin-bottom:60px !important;}
/* Sur mobile, bandeau posé en bandeau arrondi juste au-dessus de la capsule */
body:has(.cm-impersonate):has(.cm-bottomnav) .cm-impersonate{left:12px;right:12px;width:auto;bottom:calc(92px + var(--cm-safe-bottom));padding:8px 10px 8px 14px;border-radius:18px;}
@media (min-width:640px){
  .cm-impersonate{font-size:14px;padding:10px 20px;}
  .cm-impersonate-content{gap:12px;}
  .cm-impersonate-btn{font-size:12px;padding:6px 16px;}
}
@media (min-width:768px){
  body:has(.cm-impersonate):has(.cm-bottomnav) .cm-impersonate{left:0;right:0;width:100%;bottom:0;border-radius:0;padding:10px 20px;}
}

/* Bulle dorée « WhatsApp bientôt disponible » */
.cm-wa-toast{position:fixed;top:1.5rem;left:50%;transform:translateX(-50%) translateY(-150%);z-index:9999;opacity:0;pointer-events:none;transition:transform .45s cubic-bezier(.2,.8,.2,1),opacity .45s;background:linear-gradient(135deg,#B8860B,#DAA520,#F5D76E);color:#4a3500;padding:1rem 1.5rem;border-radius:1rem;box-shadow:0 12px 30px rgba(184,134,11,.35);font-weight:700;width:max-content;max-width:calc(100vw - 2rem);display:flex;align-items:center;gap:.75rem;font-size:.95rem;font-family:var(--cm-font);}
.cm-wa-toast.is-open{transform:translateX(-50%) translateY(0);opacity:1;}
.cm-wa-toast-icon{font-size:1.4rem;}
.cm-wa-toast-kicker{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;opacity:.75;}

/* ==========================================================
   29. TABLEAU DE BORD & SUIVI (lot 8b)
   ========================================================== */
/* Ligne-carte cliquable (lien entier) et ligne toujours horizontale */
a.cm-row{text-decoration:none;color:inherit;}
a.cm-row:hover{text-decoration:none;color:inherit;}
.cm-row.cm-row-inline{flex-direction:row;align-items:flex-start;}
/* Notifications : icône pleine pour les non lues, pastille « non lu » */
.cm-row-icon.is-solid{background:var(--cm-accent);color:#fff;box-shadow:0 4px 12px rgba(0,196,154,.2);border-radius:50%;}
.cm-unread-dot{width:8px;height:8px;border-radius:50%;background:var(--cm-accent);margin-top:.5rem;flex-shrink:0;}
.cm-meta-sep{opacity:.5;margin:0 4px;}
/* Lien « Retour » discret au-dessus d'un titre */
.cm-back{display:inline-flex;align-items:center;gap:.5rem;min-height:var(--cm-tap);color:var(--cm-text-muted);font-weight:700;font-size:.9rem;text-decoration:none;}
.cm-back:hover{color:var(--cm-primary);text-decoration:none;}
/* Historique d'activité : repère de date, mise en avant, colonne d'action */
.cm-day-marker{margin:1.25rem 0 .5rem;}
.cm-day-marker:first-child{margin-top:0;}
.cm-day-badge{display:inline-block;background:var(--cm-primary);color:#fff;font-size:.72rem;font-weight:700;padding:.25rem .75rem;border-radius:999px;text-transform:capitalize;}
.cm-mark{font-weight:600;color:var(--cm-text);background:var(--cm-border-soft);padding:0 4px;border-radius:4px;overflow-wrap:anywhere;}
.cm-feed-icon.is-muted{background:var(--cm-border-soft);color:var(--cm-text-muted);}
.cm-feed-side{flex-shrink:0;align-self:center;}
.cm-feed-text{font-size:.88rem;color:var(--cm-text);margin:.2rem 0 0;line-height:1.45;}
/* Obligations fiscales : cases d'état (N/A, déclaré, payé) sous chaque déclaration */
.cm-row.cm-row-wrap{flex-wrap:wrap;}
.cm-decl-checks{flex:1 1 100%;display:flex;flex-wrap:wrap;align-items:center;gap:.25rem 1.25rem;padding-top:.6rem;border-top:1px dashed var(--cm-border);}
.cm-decl-checks form{margin:0;}
.cm-decl-checks .cm-check.is-locked{color:var(--cm-text-faint);cursor:default;}
.cm-decl-checks .cm-btn{min-height:36px;}
.cm-nominatif{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;font-weight:700;color:var(--cm-primary);text-decoration:none;background:#e0f2fe;border:1px solid #bae6fd;border-radius:6px;padding:.25rem .6rem;white-space:nowrap;}
.cm-nominatif:hover{background:#bae6fd;color:var(--cm-primary);text-decoration:none;}
.cm-nominatif.is-cnss{background:#faf5ff;border-color:#d8b4fe;color:#7c3aed;}
.cm-nominatif.is-cnss:hover{background:#ede9fe;}
/* Analyse financière : onglets de période, grille Actif/Passif, KPI spéciaux, simulateur */
.cm-segmented{display:inline-flex;background:var(--cm-border-soft);padding:4px;border-radius:12px;gap:2px;}
.cm-segmented-item{min-height:38px;display:inline-flex;align-items:center;justify-content:center;padding:.35rem 1rem;border-radius:9px;font-size:.85rem;font-weight:600;color:var(--cm-text-muted);text-decoration:none;}
.cm-segmented-item:hover{color:var(--cm-text);text-decoration:none;}
.cm-segmented-item.active{background:var(--cm-surface);color:var(--cm-primary);box-shadow:0 2px 6px rgba(0,0,0,.05);}
.cm-grid-xl-2{display:grid;grid-template-columns:1fr;gap:1rem;}
.cm-grid-xl-2 > div{min-width:0;}
@media (min-width:1200px){.cm-grid-xl-2{grid-template-columns:1fr 1fr;gap:1.5rem;}}
.cm-section-title.is-success{color:var(--cm-accent);}
.cm-section-title.is-danger{color:var(--cm-danger);}
.cm-stat.is-soft-warning{background:#fffbeb;border-color:rgba(245,158,11,.45);}
.cm-stat.is-dark{background:linear-gradient(135deg,var(--cm-primary) 0%,#105c69 100%);color:#fff;border:0;box-shadow:0 10px 25px rgba(11,70,80,.25);}
.cm-stat.is-dark .cm-stat-label,.cm-stat.is-dark .cm-stat-hint{color:rgba(255,255,255,.8);}
.cm-stat.is-dark .cm-stat-value{color:#fff;font-size:1.5rem;}
.cm-stat.is-dark .cm-stat-icon{background:rgba(255,255,255,.18);color:#fff;}
.cm-stat-top{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;}
.cm-stat-top .cm-stat-icon{margin-bottom:0;}
/* Carte modifiée par le simulateur (stress test) */
.cm-stat.is-simulated{border:2px dashed #8b5cf6 !important;background:#f5f3ff !important;color:var(--cm-text);box-shadow:none;}
.cm-stat.is-simulated .cm-stat-value{color:#6d28d9 !important;}
.cm-stat.is-simulated .cm-stat-label,.cm-stat.is-simulated .cm-stat-hint{color:#5b21b6 !important;}
.cm-stat.is-simulated .cm-stat-icon{background:rgba(139,92,246,.15) !important;color:#6d28d9 !important;}
.cm-tip{color:var(--cm-text-faint);cursor:help;font-size:.85rem;margin-left:.25rem;}
.cm-tip:hover{color:var(--cm-primary);}
/* Bandeau de projection statistique */
.cm-projection{background:linear-gradient(to right,#f8fafc,#f1f5f9);border:1px dashed #cbd5e1;border-radius:var(--cm-radius-lg);padding:1.1rem;display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem;transition:.3s;}
.cm-projection.is-simulated{background:linear-gradient(to right,#f5f3ff,#ede9fe);border-color:#8b5cf6;}
.cm-proj-stats{display:grid;grid-template-columns:1fr;gap:.6rem;}
.cm-proj-stat{text-align:center;background:var(--cm-surface);padding:.65rem 1rem;border-radius:var(--cm-radius-sm);box-shadow:0 2px 5px rgba(0,0,0,.02);}
.cm-proj-stat-label{font-size:.72rem;text-transform:uppercase;font-weight:700;color:var(--cm-text-muted);margin-bottom:.25rem;}
.cm-proj-stat-val{font-size:1.15rem;font-weight:800;}
.cm-proj-stat.is-solde{background:var(--cm-primary);color:#fff;transition:background .3s;}
.cm-proj-stat.is-solde .cm-proj-stat-label{color:rgba(255,255,255,.75);}
.cm-proj-stat.is-solde.is-negative{background:#dc2626;}
@media (min-width:640px){.cm-proj-stats{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media (min-width:992px){.cm-projection{flex-direction:row;align-items:center;justify-content:space-between;padding:1.5rem;}.cm-proj-stats{min-width:520px;}}
/* Graphique principal plus haut sur grand écran ; barres colorées par la donnée */
.cm-chart-lg{position:relative;height:280px;}
@media (min-width:768px){.cm-chart-lg{height:400px;}}
.cm-meter-bar.is-data{background:var(--cm-bar,var(--cm-primary));}
.cm-bar-item{padding:.8rem 0;border-bottom:1px dashed var(--cm-border-soft);}
.cm-bar-item:last-child{border-bottom:0;}
/* Panneau latéral Bootstrap (offcanvas) du simulateur */
.cm-offcanvas{font-family:var(--cm-font);}
.cm-offcanvas .offcanvas-header{background:linear-gradient(135deg,#8b5cf6,#6d28d9);color:#fff;align-items:flex-start;}
.cm-offcanvas .offcanvas-title{color:#fff;font-weight:800;}
.cm-offcanvas .offcanvas-body{background:var(--cm-surface-alt);}
.cm-stress-group{background:var(--cm-surface);border:1px solid var(--cm-border);border-radius:var(--cm-radius-md);padding:1rem;margin-bottom:1rem;}
.cm-stress-range{display:flex;align-items:center;gap:.6rem;}
.cm-stress-range input[type=range]{flex:1;accent-color:#8b5cf6;min-height:var(--cm-tap);}
.cm-stress-range .cm-pill{min-width:48px;justify-content:center;}
/* Tableau de bord d'accueil */
.cm-is-onboarding{filter:grayscale(.2);opacity:.95;}
.cm-onboarding{display:flex;flex-direction:column;gap:.75rem;background:#fffbeb;border:1px solid #fde68a;border-left:5px solid var(--cm-warning);border-radius:var(--cm-radius-md);padding:1rem;margin-bottom:1.25rem;}
.cm-onboarding-main{display:flex;align-items:center;gap:.9rem;}
.cm-onboarding-icon{width:40px;height:40px;border-radius:50%;background:var(--cm-warning);color:#fff;display:grid;place-items:center;flex-shrink:0;}
@media (min-width:768px){.cm-onboarding{flex-direction:row;align-items:center;justify-content:space-between;}}
.cm-stat.is-positive{background:#f0fdf4;border-color:#bbf7d0;}
.cm-stat.is-positive .cm-stat-icon{background:#059669;color:#fff;}
.cm-stat.is-positive .cm-stat-label,.cm-stat.is-positive .cm-stat-hint{color:#166534;}
.cm-stat.is-positive .cm-stat-value{color:#15803d;}
.cm-stat.is-negative{background:#fef2f2;border-color:#fecaca;}
.cm-stat.is-negative .cm-stat-icon{background:#dc2626;color:#fff;}
.cm-stat.is-negative .cm-stat-label,.cm-stat.is-negative .cm-stat-hint{color:#991b1b;}
.cm-stat.is-negative .cm-stat-value{color:#b91c1c;}
.cm-stat.is-action{background:var(--cm-primary);color:#fff;border:0;display:flex;flex-direction:column;}
.cm-stat.is-action .cm-stat-icon{background:rgba(255,255,255,.15);color:#fff;}
.cm-stat.is-action .cm-stat-label{color:rgba(255,255,255,.75);}
.cm-stat.is-action .cm-btn{margin-top:auto;}
.cm-stat-value small{font-size:.55em;font-weight:500;opacity:.65;}
/* Panneau « Mes comptes » (fond primaire) */
.cm-accounts{background:var(--cm-primary);border-radius:var(--cm-radius-lg);padding:1.25rem;color:#fff;box-shadow:0 10px 25px rgba(11,70,80,.3);margin-bottom:1rem;}
.cm-accounts-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.9rem;font-weight:700;}
.cm-accounts-link{color:rgba(255,255,255,.75);font-size:.85rem;text-decoration:none;min-height:var(--cm-tap);display:inline-flex;align-items:center;gap:.3rem;}
.cm-accounts-link:hover{color:#fff;text-decoration:none;}
.cm-account-item{display:flex;align-items:center;gap:1rem;background:rgba(255,255,255,.1);padding:.85rem 1rem;border-radius:12px;margin-bottom:.75rem;border:1px solid rgba(255,255,255,.1);}
.cm-account-item:last-child{margin-bottom:0;}
.cm-account-icon{width:40px;height:40px;background:#fff;color:var(--cm-primary);border-radius:10px;display:grid;place-items:center;font-size:1.1rem;flex-shrink:0;}
.cm-account-name{font-size:.85rem;font-weight:600;opacity:.8;}
.cm-account-balance{font-size:1.1rem;font-weight:700;}
/* Lignes de liste compactes dans une carte */
.cm-list-row{display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding:.7rem 0;border-bottom:1px solid var(--cm-border-soft);}
.cm-list-row:last-child{border-bottom:0;}
.cm-list-main{font-weight:600;font-size:.88rem;color:var(--cm-text);min-width:0;overflow-wrap:anywhere;}
.cm-list-sub{font-size:.75rem;color:var(--cm-text-muted);margin-top:.1rem;}
.cm-list-row > .cm-pill,.cm-list-row > strong{flex-shrink:0;}

/* ==========================================================
   30. RETOURS LOT 8b — barre latérale, accueil, analyse, terrain
   ========================================================== */
/* Lien actif de la barre latérale Color Admin : couleurs de la charte (au lieu du bleu du thème) */
.app-sidebar{--bs-app-sidebar-menu-link-active-color:var(--cm-primary);}
.app-sidebar .menu .menu-item.active:not(.has-sub) > .menu-link{background:rgba(0,196,154,.1);border-radius:10px;}
.app-sidebar .menu .menu-item.active > .menu-link .menu-icon,.app-sidebar .menu .menu-item.active:not(.has-sub) > .menu-link .menu-text{color:var(--cm-primary);}
.app-sidebar .menu .menu-item.active > .menu-link .menu-icon i{color:var(--cm-accent);}

/* Colonnes de hauteur égale : la carte « remplissante » absorbe l'espace (plus de vide sous un graphique) */
.cm-col-fill{display:flex;flex-direction:column;gap:1.25rem;min-width:0;}
.cm-col-fill > *{margin-bottom:0 !important;}
.cm-card-fill{flex:1 1 auto;display:flex;flex-direction:column;}
.cm-card-fill .cm-chart,.cm-card-fill .cm-chart-md{flex:1 1 0;min-height:300px;height:auto;}
.cm-card-fill .cm-chart-md{min-height:250px;}
.cm-card-fill .cm-chart canvas,.cm-card-fill .cm-chart-md canvas{position:absolute;inset:0;}
/* Grille dont les cartes directes n'ajoutent pas leur marge basse (l'espacement vient de la grille) */
.cm-grid-tight > .cm-card{margin-bottom:0;}

/* Analyse financière : grille de filtres dédiée et paire de boutons */
.cm-filters-analyse{display:grid;grid-template-columns:1fr;gap:.75rem;}
@media (min-width:768px){.cm-filters-analyse{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (min-width:1200px){.cm-filters-analyse{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1.3fr) minmax(0,1.2fr);align-items:end;}}
.cm-btn-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;}

/* Accueil — bloc Opérations terrain */
.cm-tdb-head{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin:0 0 1rem;}
.cm-tdb-title{font-size:1.05rem;font-weight:800;color:var(--cm-primary);margin:0;display:flex;align-items:center;gap:.5rem;}
.cm-tdb-title small{display:block;font-size:.78rem;font-weight:600;color:var(--cm-text-muted);text-transform:capitalize;}
.cm-tdb-link{font-size:.8rem;font-weight:700;color:var(--cm-primary);text-decoration:none;white-space:nowrap;min-height:var(--cm-tap);display:inline-flex;align-items:center;gap:.3rem;}
.cm-tdb-link:hover{color:var(--cm-accent);text-decoration:none;}
.cm-ronde{background:linear-gradient(135deg,var(--cm-primary),#165b67);border-radius:18px;padding:1rem 1.1rem;color:#fff;box-shadow:0 10px 25px rgba(11,70,80,.25);display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1rem;}
.cm-ronde-count{font-size:2rem;font-weight:800;line-height:1;}
.cm-ronde-infos{flex:1;min-width:0;}
.cm-ronde-title{font-weight:800;}
.cm-ronde-text{font-size:.8rem;opacity:.85;line-height:1.35;}
.cm-ronde-btn{background:var(--cm-accent);color:#fff;border-radius:12px;padding:1rem;font-weight:800;text-decoration:none;white-space:nowrap;box-shadow:0 4px 12px rgba(0,196,154,.3);display:inline-flex;align-items:center;justify-content:center;gap:.5rem;width:100%;min-height:var(--cm-tap);}
.cm-ronde-btn:hover{background:var(--cm-accent-hover);color:#fff;text-decoration:none;}
@media (min-width:576px){.cm-ronde{flex-wrap:nowrap;}.cm-ronde-btn{width:auto;padding:.85rem 1.1rem;}}
.cm-stat-mini-head{display:flex;align-items:center;gap:.5rem;margin-bottom:.35rem;}
.cm-stat-mini-head .cm-stat-icon{width:30px;height:30px;border-radius:9px;font-size:.8rem;margin-bottom:0;}
.cm-stat-mini-head .cm-stat-label{margin-bottom:0;}
a.cm-stat{text-decoration:none;color:inherit;}
a.cm-stat:hover{text-decoration:none;color:inherit;border-color:rgba(11,70,80,.35);}
.cm-grid-tdb{display:grid;grid-template-columns:1fr;gap:1rem;}
.cm-grid-tdb > .cm-card{margin-bottom:0;}
@media (min-width:992px){.cm-grid-tdb{grid-template-columns:3fr 2fr;gap:1.5rem;}}
a.cm-list-row{text-decoration:none;color:inherit;}
a.cm-list-row:hover .cm-list-main{color:var(--cm-primary);}
.cm-list-row-body{flex:1;min-width:0;}
.cm-more-link{display:block;text-align:center;font-size:.8rem;font-weight:700;color:var(--cm-primary);padding-top:.6rem;text-decoration:none;min-height:var(--cm-tap);}
.cm-meter-bar.is-gradient{background:linear-gradient(90deg,var(--cm-primary),var(--cm-accent));}
.cm-tdb-off{text-align:center;padding:2rem 1.5rem;}
.cm-tdb-off-icon{width:60px;height:60px;border-radius:16px;background:var(--cm-border-soft);color:var(--cm-text-muted);display:grid;place-items:center;font-size:1.5rem;margin:0 auto 1rem;}
.cm-tdb-off-text{color:var(--cm-text-muted);font-size:.9rem;max-width:460px;margin:0 auto 1.25rem;}
.cm-filters-analyse .cm-field{margin-bottom:0;}

/* ==========================================================
   31. PARAMÈTRES & PROFIL (lot 8c)
   ========================================================== */
/* Bandeau d'identité du profil */
.cm-profile-hero{position:relative;overflow:hidden;background:linear-gradient(135deg,var(--cm-primary) 0%,#0c5965 100%);border-radius:var(--cm-radius-xl);padding:1.5rem 1.25rem;margin-bottom:1.25rem;box-shadow:0 8px 30px rgba(11,70,80,.15);color:#fff;display:flex;flex-direction:column;align-items:center;gap:1rem;text-align:center;}
.cm-profile-hero::before{content:'';position:absolute;top:-50%;right:-10%;width:300px;height:300px;background:rgba(255,255,255,.05);border-radius:50%;pointer-events:none;}
.cm-profile-avatar{position:relative;width:90px;height:90px;border-radius:20px;object-fit:contain;padding:6px;background:#fff;border:4px solid rgba(255,255,255,.2);box-shadow:0 8px 20px rgba(0,0,0,.2);}
.cm-profile-name{position:relative;color:#fff;font-weight:800;font-size:1.4rem;margin:0 0 .25rem;overflow-wrap:anywhere;}
.cm-profile-mail{position:relative;color:rgba(255,255,255,.8);font-size:.95rem;overflow-wrap:anywhere;}
.cm-profile-stats{position:relative;display:flex;flex-direction:column;gap:.4rem;margin-top:.75rem;align-items:center;}
.cm-profile-stat{display:flex;align-items:center;gap:.5rem;color:rgba(255,255,255,.9);font-size:.9rem;}
.cm-profile-stat i{color:var(--cm-accent);}
@media (min-width:768px){
  .cm-profile-hero{flex-direction:row;text-align:left;gap:2rem;padding:2rem;}
  .cm-profile-avatar{width:110px;height:110px;}
  .cm-profile-name{font-size:1.8rem;}
  .cm-profile-stats{flex-direction:row;gap:2rem;align-items:center;}
}
/* En-tête de section avec pastille d'icône */
.cm-sec-head{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem;padding-bottom:1rem;border-bottom:2px solid var(--cm-border);}
.cm-sec-icon{width:40px;height:40px;flex-shrink:0;border-radius:10px;display:grid;place-items:center;color:#fff;font-size:1.05rem;background:linear-gradient(135deg,var(--cm-accent) 0%,#00d4a8 100%);}
.cm-sec-icon.is-muted{background:linear-gradient(135deg,#64748b 0%,#475569 100%);}
.cm-sec-icon.is-warning{background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%);}
.cm-sec-title{margin:0;font-weight:700;font-size:1.05rem;color:var(--cm-primary);}
.cm-card.is-accent-left{border-left:4px solid var(--cm-accent);}
.cm-card.is-muted-left{border-left:4px solid #64748b;}
.cm-card.is-warning-left{border-left:4px solid var(--cm-warning);}
.cm-card.is-accent-top{border-top:4px solid var(--cm-accent);}
.cm-card.is-accent-border{border:2px solid var(--cm-accent);}
/* Ligne « texte + bouton » d'un réglage (empilée sur mobile) */
.cm-setting-row{display:flex;flex-direction:column;align-items:stretch;gap:.75rem;padding:.75rem 0;border-bottom:1px solid var(--cm-border-soft);}
.cm-setting-row:last-child{border-bottom:0;padding-bottom:0;}
.cm-setting-row:first-of-type{padding-top:0;}
.cm-setting-title{font-weight:700;color:var(--cm-text);margin:0 0 .15rem;}
.cm-setting-desc{font-size:.82rem;color:var(--cm-text-muted);margin:0;}
@media (min-width:768px){.cm-setting-row{flex-direction:row;align-items:center;justify-content:space-between;}.cm-setting-row > .cm-btn,.cm-setting-row > form{flex-shrink:0;}}
.cm-btn-outline-warning{background:transparent;border:2px solid var(--cm-warning);color:var(--cm-text);}
.cm-btn-outline-warning:hover{background:rgba(245,158,11,.08);color:var(--cm-text);}
/* Zone de dépôt d'image avec aperçu (logo, cachet, signature) */
.cm-dropzone{position:relative;border:2px dashed var(--cm-border);border-radius:12px;padding:1.25rem;min-height:150px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;background:#fafafa;cursor:pointer;transition:.2s;}
.cm-dropzone:hover{border-color:var(--cm-accent);background:rgba(0,196,154,.05);}
.cm-dropzone.is-sm{min-height:110px;padding:1rem;}
.cm-dropzone-input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;}
.cm-dropzone-icon{display:block;font-size:1.8rem;color:#9ca3af;margin-bottom:.5rem;}
.cm-dropzone-text{font-size:.9rem;color:var(--cm-text);font-weight:700;}
.cm-dropzone-sub{font-size:.75rem;color:#9ca3af;}
.cm-dropzone-img{max-height:100px;max-width:100%;object-fit:contain;margin-bottom:8px;border-radius:6px;box-shadow:0 4px 10px rgba(0,0,0,.1);}
.cm-dropzone.is-sm .cm-dropzone-img{max-height:60px;box-shadow:none;}
/* Couleur + code hexadécimal */
.cm-color-field{display:flex;align-items:center;gap:.6rem;}
.cm-color-field .cm-input-color{width:56px;flex-shrink:0;}
.cm-color-field .cm-input{font-family:var(--cm-font-mono);text-transform:uppercase;max-width:140px;}
.cm-range{width:100%;accent-color:var(--cm-accent);min-height:var(--cm-tap);}
/* Aperçu miniature d'un document (couleur, police, taille via variables de données) */
.cm-doc-mini{position:relative;overflow:hidden;border:2px solid var(--cm-border);border-radius:12px;padding:1.25rem;background:#fff;box-shadow:0 4px 6px -1px rgba(0,0,0,.05);font-family:var(--cm-doc-font,'Inter',sans-serif);font-size:var(--cm-doc-size,13px);}
.cm-doc-mini-head{display:flex;justify-content:space-between;align-items:center;gap:.5rem;flex-wrap:wrap;border-bottom:2px solid var(--cm-doc-primary,var(--cm-primary));margin-bottom:15px;padding-bottom:10px;}
.cm-doc-mini-title{font-weight:800;color:var(--cm-doc-primary,var(--cm-primary));text-transform:uppercase;font-size:1.2em;overflow-wrap:anywhere;}
.cm-doc-mini-wm{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-30deg);opacity:.05;pointer-events:none;font-size:3rem;font-weight:900;color:#000;}
.cm-doc-mini-table{width:100%;border-collapse:collapse;margin-top:.75rem;font-size:.9em;}
.cm-doc-mini-table th{background:#f8f9fa;text-align:left;padding:.4rem;}
.cm-doc-mini-table td{padding:.4rem;border-top:1px solid #eee;}
.cm-doc-mini-table .cm-num{text-align:right;font-weight:700;}
/* Zone verrouillée (fonction Premium) : voile au-dessus des réglages, message au-dessus du voile */
.cm-locked-zone{position:relative;}
.cm-locked-overlay{position:absolute;inset:0;z-index:10;display:flex;justify-content:center;align-items:center;background:rgba(255,255,255,.6);border-radius:var(--cm-radius-lg);backdrop-filter:blur(1px);}
.cm-locked-overlay i{font-size:2.5rem;color:#d1d5db;background:#fff;padding:1.25rem;border-radius:50%;box-shadow:0 10px 25px rgba(0,0,0,.1);}
.cm-above-lock{position:relative;z-index:11;}
.cm-premium{display:flex;align-items:center;gap:1rem;background:#fffbeb;border:2px solid #fcd34d;color:#92400e;border-radius:12px;padding:1rem 1.25rem;margin-bottom:1.25rem;}
.cm-premium > i{font-size:1.5rem;color:var(--cm-warning);}
.cm-premium a{font-weight:700;color:var(--cm-primary);text-decoration:underline;}
/* Numérotation : balises à insérer et aperçu */
.cm-input-mono{font-family:var(--cm-font-mono);}
.cm-tag-row{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.6rem;}
.cm-tag-row .cm-chip code{color:var(--cm-primary);font-size:.8rem;}
.cm-num-preview{margin-top:.75rem;background:var(--cm-surface-alt);border:1px dashed var(--cm-border);border-radius:var(--cm-radius-sm);padding:.6rem .8rem;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;}
.cm-num-preview-label{font-size:.75rem;font-weight:700;text-transform:uppercase;color:var(--cm-text-muted);}
.cm-num-preview-value{font-family:var(--cm-font-mono);font-weight:800;color:var(--cm-primary);font-size:1.05rem;overflow-wrap:anywhere;}
/* Signataires : cadre de signature */
.cm-sig-box{width:100px;height:60px;flex-shrink:0;background:#fff;border:1px solid var(--cm-border);border-radius:8px;padding:4px;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--cm-text-faint);font-size:10px;}
.cm-sig-box img{max-width:100%;max-height:100%;object-fit:contain;}
/* Double authentification */
.cm-qr{background:var(--cm-border-soft);padding:1.25rem;border-radius:12px;text-align:center;border:1px dashed #cbd5e1;}
.cm-qr-code{display:flex;justify-content:center;}
.cm-recovery{background:var(--cm-surface-alt);border:1px solid var(--cm-border);padding:1.25rem;border-radius:12px;margin-bottom:1.5rem;}
.cm-recovery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;margin-top:1rem;}
@media (min-width:640px){.cm-recovery-grid{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));}}
.cm-recovery-code{background:#fff;border:1px solid var(--cm-border);padding:.65rem;text-align:center;border-radius:8px;font-family:var(--cm-font-mono);font-weight:700;color:var(--cm-primary);}
.cm-ribbon{position:absolute;top:1.1rem;right:-2.2rem;background:var(--cm-accent);color:#fff;font-size:.68rem;font-weight:800;padding:.2rem 2.5rem;transform:rotate(45deg);}
.cm-card.is-clip{position:relative;overflow:hidden;}
.cm-otp{font-family:var(--cm-font-mono);font-size:1.4rem;letter-spacing:.4em;text-align:center;}

/* ==========================================================
   32. ABONNEMENT, SUPPORT, AMBASSADEUR (lot 8d)
   ========================================================== */
/* Pulsation douce d'un bouton d'appel à l'action */
@keyframes cm-pulse{0%{box-shadow:0 0 0 0 rgba(0,196,154,.45);}100%{box-shadow:0 0 0 14px rgba(0,196,154,0);}}
.cm-pulse{animation:cm-pulse 2s infinite;}
/* Carte « Ma formule » */
.cm-plan-card{padding:0;overflow:hidden;}
.cm-plan-card-head{background:linear-gradient(135deg,#59A15B 0%,var(--cm-accent) 100%);color:#fff;text-align:center;padding:1.5rem 1.25rem;}
.cm-plan-card-name{display:flex;align-items:center;justify-content:center;gap:.75rem;font-size:1.3rem;font-weight:800;margin:0;color:#fff;}
.cm-plan-card-name i{opacity:.6;}
.cm-plan-status{display:inline-flex;align-items:center;gap:.3rem;margin-top:.6rem;border:1px solid #fff;border-radius:999px;padding:.15rem .6rem;font-size:.7rem;font-weight:800;}
.cm-plan-status.is-off{background:var(--cm-danger);border-color:var(--cm-danger);}
.cm-plan-card-body{padding:1.25rem;}
.cm-plan-days{display:flex;align-items:center;justify-content:center;gap:.9rem;margin-bottom:1rem;}
.cm-plan-days-value{font-size:3rem;font-weight:800;line-height:1;color:var(--cm-text);}
.cm-plan-days-label{font-size:.72rem;font-weight:700;text-transform:uppercase;color:var(--cm-text-muted);}
.cm-meter-bar.is-danger{background:var(--cm-danger);}
.cm-meter-bar.is-violet{background:#8b5cf6;}
.cm-meter-lg{height:12px;}
/* Page « fonctionnalité à débloquer » */
.cm-unlock{max-width:600px;margin:0 auto;padding:2rem 0;text-align:center;min-height:60vh;display:flex;flex-direction:column;justify-content:center;}
.cm-unlock-icon{width:100px;height:100px;margin:0 auto 1.5rem;border-radius:50%;background:#fffbeb;color:var(--cm-warning);display:grid;place-items:center;font-size:2.8rem;}
.cm-unlock-title{font-size:1.5rem;font-weight:800;color:var(--cm-primary);margin:0 0 .75rem;}
.cm-unlock-text{font-size:1.05rem;color:var(--cm-text-muted);margin:0 0 2rem;max-width:100%;overflow-wrap:anywhere;word-break:break-word;}
.cm-unlock-actions{display:flex;flex-direction:column-reverse;gap:.75rem;}
@media (min-width:640px){.cm-unlock-actions{flex-direction:row;justify-content:center;}}
/* Espace suspendu : interface floutée, carte de réactivation au premier plan */
body:has(.cm-suspend) #content,body:has(.cm-suspend) #sidebar,body:has(.cm-suspend) #header,body:has(.cm-suspend) .cm-bottomnav{filter:blur(8px);pointer-events:none;user-select:none;transition:filter .5s ease;}
.cm-suspend{position:fixed;inset:0;z-index:10050;display:flex;align-items:center;justify-content:center;padding:1rem;background:rgba(11,70,80,.6);backdrop-filter:blur(5px);}
.cm-suspend-card{background:#fff;width:100%;max-width:500px;border-radius:16px;box-shadow:0 25px 50px -12px rgba(0,0,0,.5);padding:2rem 1.5rem;text-align:center;border-top:6px solid var(--cm-warning);animation:cm-slide-up .4s ease-out;font-family:var(--cm-font);}
.cm-suspend-icon{font-size:3.5rem;color:var(--cm-warning);margin-bottom:1rem;}
.cm-suspend-title{font-size:1.4rem;font-weight:800;color:var(--cm-text);margin:0 0 .75rem;}
.cm-link-muted{background:none;border:0;padding:0;color:var(--cm-text-muted);font-weight:700;font-size:.85rem;text-decoration:none;cursor:pointer;min-height:var(--cm-tap);}
.cm-link-muted:hover{color:var(--cm-primary);}
/* Support : conversation d'un ticket (bulles façon messagerie) */
.cm-chat{display:flex;flex-direction:column;height:calc(100dvh - 60px - 140px - var(--cm-safe-bottom));min-height:420px;}
@media (min-width:768px){.cm-chat{height:calc(100vh - 150px);}}
.cm-chat-head{background:var(--cm-surface);padding:.85rem 1rem;border-radius:16px 16px 0 0;border:1px solid var(--cm-border);border-bottom:0;display:flex;justify-content:space-between;align-items:center;gap:.75rem;flex-shrink:0;}
.cm-chat-title{display:flex;align-items:center;gap:.6rem;min-width:0;}
.cm-chat-back{color:var(--cm-text-faint);width:var(--cm-tap);height:var(--cm-tap);display:grid;place-items:center;flex-shrink:0;text-decoration:none;font-size:1.1rem;}
.cm-chat-back:hover{color:var(--cm-primary);}
.cm-chat-subject{font-size:1.05rem;font-weight:700;color:var(--cm-text);margin:0;overflow-wrap:anywhere;}
.cm-chat-meta{display:none;gap:.5rem;margin-top:.25rem;font-size:.8rem;color:var(--cm-text-muted);}
@media (min-width:768px){.cm-chat-meta{display:flex;}.cm-chat-head{padding:1rem 1.5rem;}}
.cm-chat-ref{font-family:var(--cm-font-mono);background:var(--cm-border-soft);padding:2px 6px;border-radius:4px;}
.cm-chat-tag{background:var(--cm-border-soft);padding:2px 8px;border-radius:4px;}
.cm-chat-body{flex:1;overflow-y:auto;background:var(--cm-surface-alt);border:1px solid var(--cm-border);padding:1rem;display:flex;flex-direction:column;gap:1.25rem;}
@media (min-width:768px){.cm-chat-body{padding:1.5rem;}}
.cm-msg{display:flex;width:100%;justify-content:flex-start;}
.cm-msg.is-me{justify-content:flex-end;}
.cm-msg-group{max-width:90%;display:flex;flex-direction:column;align-items:flex-start;}
.cm-msg.is-me .cm-msg-group{align-items:flex-end;}
@media (min-width:768px){.cm-msg-group{max-width:75%;}}
.cm-msg-info{font-size:.75rem;color:var(--cm-text-muted);margin-bottom:4px;display:flex;gap:6px;align-items:center;}
.cm-msg-bubble{padding:.85rem 1.1rem;font-size:.95rem;line-height:1.5;box-shadow:0 2px 4px rgba(0,0,0,.05);background:#fff;border:1px solid var(--cm-border);color:var(--cm-text);border-radius:12px 12px 12px 0;overflow-wrap:anywhere;}
.cm-msg.is-me .cm-msg-bubble{background:var(--cm-accent);border-color:var(--cm-accent);color:#fff;border-radius:12px 12px 0 12px;}
.cm-msg-files{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.6rem;}
.cm-msg-file{display:inline-flex;align-items:center;gap:.35rem;font-size:.8rem;font-weight:600;padding:.3rem .6rem;border-radius:6px;text-decoration:none;background:var(--cm-border-soft);color:var(--cm-primary);}
.cm-msg.is-me .cm-msg-file{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.35);}
.cm-msg.is-me .cm-msg-file:hover{background:rgba(255,255,255,.1);}
.cm-chat-closed{text-align:center;padding:1rem;background:var(--cm-border-soft);color:var(--cm-text-muted);font-size:.9rem;border-radius:8px;}
.cm-chat-reply{background:var(--cm-surface);padding:1rem;border:1px solid var(--cm-border);border-top:0;border-radius:0 0 16px 16px;flex-shrink:0;display:flex;flex-direction:column;gap:.6rem;}
.cm-chat-reply-row{display:flex;flex-direction:column;gap:.6rem;}
.cm-chat-input{resize:none;height:56px;transition:height .2s;}
.cm-chat-input:focus{height:90px;}
@media (min-width:768px){.cm-chat-reply-row{flex-direction:row;}.cm-chat-reply-row .cm-btn{flex-shrink:0;align-self:stretch;}}
.cm-chat-attach{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;font-size:.85rem;color:var(--cm-text-muted);}
.cm-chat-attach .cm-file{max-width:100%;}
/* Liste des tickets : statuts */
.cm-pill-violet{background:#f3e8ff;color:#6b21a8;}
.cm-pill-orange{background:#ffedd5;color:#9a3412;}
/* Programme ambassadeur */
.cm-steps-3{display:grid;grid-template-columns:1fr;gap:1rem;margin-bottom:1.5rem;}
@media (min-width:768px){.cm-steps-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem;}}
.cm-steps-3 > .cm-card{margin-bottom:0;text-align:center;}
.cm-step-icon{width:64px;height:64px;border-radius:16px;display:grid;place-items:center;font-size:1.6rem;margin:0 auto 1rem;background:rgba(59,130,246,.1);color:var(--cm-info);}
.cm-step-icon.is-warning{background:rgba(245,158,11,.1);color:var(--cm-warning);}
.cm-step-icon.is-accent{background:rgba(0,196,154,.1);color:var(--cm-accent);}
.cm-step-title{font-size:1.1rem;font-weight:800;color:var(--cm-text);margin-bottom:.5rem;}
.cm-step-desc{font-size:.92rem;color:var(--cm-text-muted);line-height:1.5;margin:0;}
.cm-intro{text-align:center;margin-bottom:2rem;}
.cm-intro-title{font-size:1.8rem;font-weight:800;color:var(--cm-primary);margin:.5rem 0 .75rem;letter-spacing:-.5px;}
.cm-intro-text{color:var(--cm-text-muted);font-size:1.02rem;margin:0 auto;max-width:600px;line-height:1.6;}
@media (min-width:768px){.cm-intro-title{font-size:2.3rem;}}
.cm-pill-lg{padding:.45rem 1rem;font-size:.78rem;letter-spacing:1px;text-transform:uppercase;}
/* Bloc d'appel à l'action sur fond primaire */
.cm-cta{position:relative;overflow:hidden;background:var(--cm-primary);border-radius:24px;padding:2rem 1.25rem;color:#fff;text-align:center;box-shadow:0 15px 35px rgba(11,70,80,.25);}
.cm-cta::before{content:'';position:absolute;top:-100px;left:-100px;width:300px;height:300px;background:radial-gradient(circle,rgba(255,255,255,.07) 0%,transparent 70%);border-radius:50%;pointer-events:none;}
.cm-cta::after{content:'';position:absolute;bottom:-50px;right:-50px;width:200px;height:200px;background:radial-gradient(circle,rgba(0,196,154,.15) 0%,transparent 70%);border-radius:50%;pointer-events:none;}
.cm-cta > *{position:relative;z-index:1;}
@media (min-width:768px){.cm-cta{padding:3rem 2rem;}}
.cm-cta-title{font-size:1.5rem;font-weight:800;margin-bottom:.75rem;}
.cm-cta-text{font-size:1rem;opacity:.9;margin:0 auto 1.5rem;max-width:500px;}
.cm-btn-white{background:#fff;color:var(--cm-primary);box-shadow:0 5px 15px rgba(0,0,0,.1);}
.cm-btn-white:hover,.cm-btn-white:focus{background:var(--cm-border-soft);color:var(--cm-primary);}
.cm-cta-success{background:rgba(255,255,255,.1);border-radius:16px;padding:1.5rem;border:1px dashed rgba(255,255,255,.3);display:inline-block;}
.cm-cta-success-icon{font-size:3rem;display:block;margin-bottom:.75rem;}
.cm-turnstile{display:inline-block;margin-bottom:1.25rem;}
.cm-cta .cm-error{color:#ffcccc;}
/* Titres et textes du bloc sur fond primaire : blanc (Color Admin force une couleur sombre sur h1–h6) */
.cm-cta .cm-cta-title,.cm-cta h1,.cm-cta h2,.cm-cta h3,.cm-cta p{color:#fff;}
.cm-cta-success p{opacity:.85;}
.cm-cta-success{background:rgba(0,196,154,.14);border-color:rgba(0,196,154,.55);}
/* Code promo à partager */
.cm-promo{position:relative;overflow:hidden;background:var(--cm-primary);border-radius:20px;padding:1.5rem;color:#fff;box-shadow:0 10px 25px rgba(11,70,80,.3);display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;height:100%;}
.cm-promo::before{content:'';position:absolute;top:-50px;right:-50px;width:200px;height:200px;background:radial-gradient(circle,rgba(255,255,255,.1) 0%,transparent 70%);border-radius:50%;pointer-events:none;}
.cm-promo > *{position:relative;}
.cm-promo-icon{font-size:2.8rem;opacity:.8;margin-bottom:.5rem;}
.cm-promo-title{font-size:1.25rem;font-weight:800;color:#fff;margin:0 0 .25rem;}
.cm-promo-meta{font-size:.9rem;color:rgba(255,255,255,.7);margin:0;}
.cm-promo-meta strong{color:#fff;}
.cm-promo-code{display:block;width:100%;max-width:320px;background:rgba(255,255,255,.15);padding:1rem;border-radius:12px;border:1px dashed rgba(255,255,255,.4);margin:1.25rem 0;font-family:var(--cm-font-mono);font-size:1.8rem;font-weight:700;letter-spacing:2px;color:#fff;cursor:pointer;transition:.2s;}
.cm-promo-code:hover{background:rgba(255,255,255,.25);}
.cm-promo-code small{display:block;font-family:var(--cm-font);font-size:.7rem;font-weight:500;letter-spacing:0;text-transform:uppercase;margin-top:5px;opacity:.75;}
.cm-share{display:flex;gap:.6rem;justify-content:center;}
.cm-share-btn{width:var(--cm-tap);height:var(--cm-tap);border-radius:50%;background:#fff;display:grid;place-items:center;text-decoration:none;font-size:1.1rem;}
.cm-share-btn:hover{background:var(--cm-border-soft);text-decoration:none;}
.cm-pill-teal{background:rgba(11,70,80,.12);color:var(--cm-primary);}

/* ==========================================================
   33. BULLETIN DE PAIE — aperçu écran (lot 8e), dans un cm-a4
   ========================================================== */
.cm-bp-period{font-size:1.1em;color:var(--cm-doc-primary);font-weight:600;margin-bottom:5px;}
.cm-bp-title{font-size:1.5em;font-weight:900;color:#0f172a;text-transform:uppercase;margin:0;letter-spacing:1px;}
@media (min-width:768px){.cm-bp-title{font-size:1.8em;}.cm-a4-head-right.cm-bp-meta{text-align:right;}}
.cm-bp-stamp{display:inline-block;padding:5px 15px;border-radius:4px;font-weight:800;text-transform:uppercase;font-size:.9em;letter-spacing:1px;transform:rotate(-5deg);border:2px solid currentColor;margin-top:10px;}
.cm-bp-stamp.is-paye{color:#16a34a;background:#dcfce7;}
.cm-bp-stamp.is-partiel{color:#ca8a04;background:#fef9c3;}
.cm-bp-stamp.is-non_paye{color:#dc2626;background:#fee2e2;}
.cm-bp-employee{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:15px;margin-bottom:25px;position:relative;z-index:2;}
.cm-bp-emp-name{font-size:1.3em;font-weight:800;color:var(--cm-doc-primary);border-bottom:1px solid #e2e8f0;padding-bottom:8px;margin-bottom:12px;text-transform:uppercase;overflow-wrap:anywhere;}
.cm-bp-emp-grid{display:grid;grid-template-columns:1fr;gap:4px 15px;font-size:.95em;}
@media (min-width:768px){.cm-bp-emp-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 15px;}}
.cm-bp-emp-row{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;border-bottom:1px dashed #e2e8f0;padding-bottom:3px;}
.cm-bp-emp-label{color:#64748b;font-weight:600;font-size:.85em;white-space:nowrap;}
.cm-bp-emp-val{color:#0f172a;font-weight:700;text-align:right;overflow-wrap:anywhere;}
.cm-bp-table{width:100%;min-width:560px;border-collapse:collapse;font-size:.95em;}
.cm-bp-table thead th{background:#fff;color:#0f172a;text-align:center;text-transform:uppercase;font-size:.85em;font-weight:800;border:1px solid #cbd5e1;padding:8px;vertical-align:middle;}
.cm-bp-table thead th.is-left{text-align:left;padding-left:10px;}
.cm-bp-table thead th.is-group{background:#f8fafc;}
.cm-bp-table thead th.is-sub{font-size:.8em;}
.cm-bp-table td{padding:5px 8px;border:1px solid #e2e8f0;vertical-align:middle;}
.cm-bp-code{text-align:center;width:10%;color:#64748b;font-size:.9em;}
.cm-bp-code.is-strong{color:#0f172a;font-weight:700;}
.cm-bp-lib{text-align:left;font-weight:600;width:30%;color:#0f172a;}
.cm-bp-taux{text-align:center;width:10%;color:#64748b;font-size:.9em;}
.cm-bp-gain,.cm-bp-ret{text-align:right;width:17.5%;color:#334155;}
.cm-bp-pat{text-align:right;width:15%;background:#fdfdfd;color:#94a3b8;font-style:italic;}
.cm-bp-table tr.is-red td.cm-bp-code,.cm-bp-table tr.is-red td.cm-bp-lib,.cm-bp-table tr.is-red td.cm-bp-ret{color:#b91c1c;font-weight:700;}
.cm-bp-table tr.is-employer td.cm-bp-lib{font-weight:400;font-style:italic;color:#64748b;}
.cm-bp-table tr.is-total{background:#f8fafc;font-weight:800;text-transform:uppercase;}
.cm-bp-table tr.is-total td{border-top:2px solid #0f172a;color:#0f172a;}
.cm-bp-table tr.is-total td.cm-bp-ret{color:#ef4444;font-weight:900;}
.cm-bp-table tr.is-total td.cm-bp-pat{border-left:1px solid #0f172a;font-weight:700;}
.cm-bp-table tr.is-sub td{background:#fff;font-weight:700;color:var(--cm-doc-primary);}
.cm-bp-table td.is-label-end{text-align:right;padding-right:15px;}
.cm-bp-bottom{display:flex;flex-direction:column;gap:20px;margin:15px 0 40px;}
@media (min-width:768px){.cm-bp-bottom{flex-direction:row;justify-content:space-between;align-items:flex-start;}}
.cm-bp-billetage{font-size:.85em;min-width:0;}
@media (min-width:768px){.cm-bp-billetage{width:60%;}}
.cm-bp-billetage-title{font-size:1.1em;font-weight:700;color:#0f172a;margin-bottom:5px;}
.cm-bp-billetage-table{width:100%;border-collapse:collapse;margin-top:5px;}
.cm-bp-billetage-table th{border:1px solid #e2e8f0;padding:4px;background:#f8fafc;text-align:center;color:#64748b;font-weight:600;}
.cm-bp-billetage-table td{border:1px solid #e2e8f0;padding:4px;text-align:center;font-weight:800;color:#0f172a;}
.cm-bp-base-conges{margin-top:15px;font-weight:700;color:#0f172a;}
.cm-bp-net{background:#fff;border:2px solid #0f172a;padding:15px 25px;text-align:right;border-radius:4px;align-self:flex-end;}
.cm-bp-net-label{display:block;font-size:.9em;font-weight:800;color:#0f172a;text-transform:uppercase;margin-bottom:2px;}
.cm-bp-net-amount{display:block;font-size:1.6em;font-weight:900;color:#0f172a;white-space:nowrap;}
.cm-bp-signs{display:flex;justify-content:space-between;gap:1rem;margin-top:10px;page-break-inside:avoid;padding:0 10px;}
.cm-bp-sig{width:45%;text-align:center;position:relative;min-height:100px;}
.cm-bp-sig-title{font-size:1em;font-weight:700;color:var(--cm-doc-primary);margin-bottom:10px;}
.cm-bp-sig-imgs{height:70px;display:flex;justify-content:center;align-items:center;position:relative;}
.cm-bp-sig-img{position:relative;z-index:2;max-height:60px;max-width:150px;}
.cm-bp-sig-name{margin-top:6px;font-weight:700;font-size:.95em;color:#1f2937;}
.cm-bp-sig-role{font-size:.85em;color:#64748b;}
.cm-a4.cm-bp{padding-top:1.5rem;}
@media print{
  @page{size:A4;margin:0;}
  .cm-a4.cm-bp{box-shadow:none;margin:0;width:100%;max-width:none;}
  .cm-bp-table{min-width:0;}
  .cm-a4.cm-bp *{-webkit-print-color-adjust:exact !important;print-color-adjust:exact !important;}
}

/* ================================================================
   34. LIENS TEXTE (charte : couleur primaire, jamais le bleu navigateur)
   ================================================================ */
a.cm-link,.cm-help a{color:var(--cm-primary);font-weight:600;text-decoration:none;}
a.cm-link:hover,a.cm-link:focus-visible,.cm-help a:hover,.cm-help a:focus-visible{color:var(--cm-primary);text-decoration:underline;text-underline-offset:2px;}

/* ================================================================
   35. LISTE DÉROULANTE AVEC RECHERCHE (partial/select-recherche, attribut data-recherche)
   ================================================================ */
.sr-wrap{position:relative;width:100%;}
.sr-wrap select.sr-source{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px;}
.sr-toggle{width:100%;min-height:var(--cm-tap);display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.6rem .9rem;border:2px solid var(--cm-border);border-radius:var(--cm-radius);background:var(--cm-surface);font-family:inherit;font-size:1rem;font-weight:500;color:var(--cm-text);cursor:pointer;text-align:left;transition:border-color .15s,box-shadow .15s;}
.sr-toggle:focus,.sr-wrap.sr-open .sr-toggle{outline:none;border-color:var(--cm-accent);box-shadow:var(--cm-focus-ring);}
.sr-toggle .sr-texte{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sr-toggle .sr-texte.sr-vide{color:var(--cm-text-faint);}
.sr-toggle i{color:var(--cm-text-muted);font-size:.8rem;flex-shrink:0;}
.sr-panel{display:none;position:absolute;z-index:1050;left:0;right:0;top:calc(100% + 6px);background:var(--cm-surface);border:1px solid var(--cm-border);border-radius:var(--cm-radius-md);box-shadow:var(--cm-shadow-lg);overflow:hidden;}
.sr-wrap.sr-open .sr-panel{display:block;}
.sr-search{padding:.6rem;border-bottom:1px solid var(--cm-border-soft);}
.sr-search input{width:100%;min-height:var(--cm-tap);padding:.55rem .8rem;border:2px solid var(--cm-border);border-radius:var(--cm-radius-sm);font-family:inherit;font-size:1rem;}
.sr-search input:focus{outline:none;border-color:var(--cm-accent);}
.sr-liste{max-height:280px;overflow-y:auto;margin:0;padding:.35rem;list-style:none;}
.sr-option{min-height:var(--cm-tap);display:flex;align-items:center;padding:.55rem .75rem;border-radius:var(--cm-radius-sm);font-size:.9rem;cursor:pointer;color:var(--cm-text);}
.sr-option.sr-actif{background:rgba(0,196,154,.1);}
.sr-option.sr-choisi{font-weight:700;color:var(--cm-primary);}
.sr-option.sr-desactive{color:var(--cm-text-faint);cursor:not-allowed;}
.sr-aucun{padding:.9rem;text-align:center;font-size:.85rem;color:var(--cm-text-muted);}
.sr-compteur{padding:.35rem .9rem .5rem;font-size:.72rem;color:var(--cm-text-faint);border-top:1px solid var(--cm-border-soft);}
.sr-wrap:has(select:disabled) .sr-toggle{opacity:.6;cursor:not-allowed;background:var(--cm-surface-alt);}
@media (min-width:768px){
  .sr-toggle,.sr-search input{font-size:.95rem;}
  .sr-option{min-height:38px;font-size:.88rem;}
}

/* ================================================================
   36. CAISSE (POS) — pages/pos/index (plein écran, sans menu, Alpine)
   Mobile d'abord : 1 colonne + panier en volet ; dès 992 px : catalogue 2/3 + panier 1/3.
   Le ticket imprimé (pages/pos/ticket + modèle hors ligne) garde ses styles propres (80 mm).
   ================================================================ */
[x-cloak]{display:none !important;}
.cm-pos-body{margin:0;font-family:var(--cm-font);background:var(--cm-bg);color:var(--cm-text);}
.cm-pos-body ::-webkit-scrollbar{width:6px;height:4px;}
.cm-pos-body ::-webkit-scrollbar-track{background:transparent;}
.cm-pos-body ::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:10px;}
.cm-pos{min-height:100vh;display:flex;flex-direction:column;padding:1rem;box-sizing:border-box;}
.cm-pos-ico{width:20px;height:20px;flex-shrink:0;}
.cm-pos-ico-sm{width:14px;height:14px;flex-shrink:0;}
.cm-pos-ico-md{width:18px;height:18px;flex-shrink:0;}
.cm-pos-ico-lg{width:28px;height:28px;flex-shrink:0;}
.cm-pos-ico-xl{width:48px;height:48px;flex-shrink:0;}

/* Barre du haut */
.cm-pos-bar{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem;}
.cm-pos-bar-group{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;}
/* Bouton Quitter (carré 44 px sur mobile, avec libellé dès 768 px) + bloc marque (icône + titre + entreprise) */
.cm-pos-body .cm-pos-quit{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-width:var(--cm-tap);min-height:var(--cm-tap);padding:0 .7rem;border:1px solid var(--cm-border);border-radius:var(--cm-radius);background:var(--cm-surface);color:var(--cm-text-muted);font-weight:700;font-size:.85rem;text-decoration:none;box-shadow:var(--cm-shadow);transition:.15s;}
.cm-pos-body .cm-pos-quit:hover{color:var(--cm-danger);border-color:rgba(231,76,60,.4);text-decoration:none;}
.cm-pos-quit-label{display:none;}
.cm-pos-brand{display:flex;align-items:center;gap:.75rem;min-width:0;}
.cm-pos-brand-icon{width:var(--cm-tap);height:var(--cm-tap);border-radius:var(--cm-radius);background:var(--cm-primary);color:#fff;display:grid;place-items:center;flex-shrink:0;box-shadow:var(--cm-shadow-primary);}
.cm-pos-body .cm-pos-title{margin:0;font-family:var(--cm-font);font-size:1.15rem;font-weight:800;line-height:1.15;letter-spacing:-.3px;color:var(--cm-primary);}
.cm-pos-subtitle{font-size:.78rem;font-weight:600;color:var(--cm-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60vw;}
.cm-pos-body a.cm-btn{text-decoration:none;}
.cm-pos-badge{display:inline-flex;align-items:center;gap:6px;padding:.3rem .8rem;border-radius:999px;font-weight:700;font-size:.8rem;border:1px solid currentColor;}
.cm-pos-badge.is-offline{color:var(--cm-danger);background:rgba(231,76,60,.1);}
.cm-pos-badge.is-pending{color:#d97706;background:rgba(245,158,11,.1);}
.cm-pos-badge.is-session{color:var(--cm-primary);border-color:var(--cm-accent);background:rgba(0,196,154,.1);padding:.5rem 1rem;}
.cm-pos-dot{width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block;flex-shrink:0;}
.cm-pos-badge.is-session .cm-pos-dot{background:var(--cm-accent);}
.cm-pos-sync{background:var(--cm-warning);color:#fff;border:none;border-radius:6px;padding:2px 8px;font-size:.7rem;font-weight:700;cursor:pointer;margin-left:4px;}
.cm-pos-sync:disabled{opacity:.5;cursor:not-allowed;}
.cm-pos-quota{background:var(--cm-surface);border:1px solid var(--cm-border);padding:.5rem 1rem;border-radius:var(--cm-radius);display:flex;flex-direction:column;gap:4px;min-width:160px;box-shadow:var(--cm-shadow);}
.cm-pos-quota-head{display:flex;justify-content:space-between;gap:.75rem;font-size:.75rem;font-weight:700;color:var(--cm-text-muted);}
.cm-pos-quota-count{color:var(--cm-bar,var(--cm-info));}
.cm-pos-quota-track{background:var(--cm-border);height:6px;border-radius:999px;overflow:hidden;}
.cm-pos-quota-fill{height:100%;width:var(--cm-width,0%);background:var(--cm-bar,var(--cm-info));transition:width .3s ease;}
.cm-pos-search{position:relative;width:100%;}
.cm-pos-search .cm-pos-ico-md{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--cm-text-muted);pointer-events:none;}
.cm-pos-search .cm-input{padding-left:2.5rem;}

/* Paniers en attente */
.cm-pos-held{display:flex;gap:.5rem;margin-bottom:1rem;overflow-x:auto;padding-bottom:5px;}
.cm-pos-held-chip{display:inline-flex;align-items:center;gap:8px;min-height:40px;background:#fffbeb;border:1px solid #fde68a;color:#d97706;padding:6px 12px;border-radius:999px;font-size:.8rem;font-weight:700;cursor:pointer;white-space:nowrap;transition:.2s;}
.cm-pos-held-chip:hover{background:#fef3c7;transform:translateY(-1px);}

/* Grille principale */
.cm-pos-grid{display:grid;grid-template-columns:1fr;gap:1rem;flex:1;padding-bottom:90px;}
.cm-pos-panel{background:var(--cm-surface);border-radius:var(--cm-radius-xl);padding:1rem;box-shadow:var(--cm-shadow);display:flex;flex-direction:column;overflow:hidden;min-width:0;}

/* Catalogue */
.cm-pos-cats{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:1rem;margin-bottom:1rem;border-bottom:1px solid var(--cm-border);flex-shrink:0;}
/* Catégories : pastille couleur (couleur POS de la catégorie, variable --cm-cat) + nombre d'articles */
.cm-pos-body .cm-pos-cat{display:inline-flex;align-items:center;gap:.5rem;flex-shrink:0;min-height:var(--cm-tap);padding:.45rem .9rem;border-radius:999px;font-family:var(--cm-font);font-weight:700;font-size:.85rem;line-height:1.2;cursor:pointer;white-space:nowrap;border:2px solid var(--cm-border);background:var(--cm-surface);color:var(--cm-text-muted);transition:.15s;}
.cm-pos-body .cm-pos-cat:hover{border-color:var(--cm-accent);color:var(--cm-primary);}
.cm-pos-body .cm-pos-cat.is-active{background:var(--cm-primary);border-color:var(--cm-primary);color:#fff;box-shadow:0 6px 16px rgba(11,70,80,.2);}
.cm-pos-cat-dot{width:10px;height:10px;border-radius:50%;background:var(--cm-cat,var(--cm-text-faint));flex-shrink:0;box-shadow:0 0 0 2px rgba(255,255,255,.8);}
.cm-pos-cat-count{min-width:22px;padding:1px 7px;border-radius:999px;background:var(--cm-border-soft);color:var(--cm-text-muted);font-size:.72rem;font-weight:800;text-align:center;}
.cm-pos-cat.is-active .cm-pos-cat-count{background:rgba(255,255,255,.2);color:#fff;}
.cm-pos-catalog{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:.75rem;overflow-y:auto;align-content:start;}
.cm-pos-item{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:var(--cm-surface);border:2px solid rgba(0,0,0,.03);border-radius:var(--cm-radius-lg);padding:1rem .75rem;box-shadow:var(--cm-shadow);cursor:pointer;transition:.2s;font-family:inherit;color:inherit;}
.cm-pos-item:hover{border-color:var(--cm-accent);transform:translateY(-3px);}
.cm-pos-item-stock{position:absolute;top:8px;right:8px;padding:2px 8px;border-radius:999px;font-size:.7rem;font-weight:800;background:var(--cm-border-soft);color:var(--cm-primary);}
.cm-pos-item-stock.is-out{background:rgba(231,76,60,.1);color:var(--cm-danger);}
.cm-pos-item-initials{width:48px;height:48px;border-radius:var(--cm-radius);display:flex;align-items:center;justify-content:center;margin-bottom:.75rem;font-size:1.1rem;font-weight:800;background:var(--cm-border-soft);color:var(--cm-primary);transition:.2s;}
.cm-pos-item:hover .cm-pos-item-initials{background:var(--cm-accent);color:#fff;}
.cm-pos-item-name{font-size:.8rem;color:var(--cm-text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:.35rem;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.cm-pos-item-ref{font-size:.72rem;color:var(--cm-text-muted);margin-bottom:.4rem;}
.cm-pos-item-price{font-size:1.15rem;font-weight:800;color:var(--cm-primary);line-height:1.2;}
.cm-pos-empty{grid-column:1 / -1;text-align:center;padding:3rem 0;color:var(--cm-text-muted);font-weight:600;}
.cm-pos-empty .cm-pos-ico-xl{display:block;margin:0 auto 1rem;opacity:.4;}
.cm-pos-empty p{margin:0;}

/* Panier (volet plein écran sur mobile) */
.cm-pos-cart{position:fixed;inset:0;z-index:100;border-radius:0;transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);}
.cm-pos-cart.is-open{transform:translateX(0);}
.cm-pos-cart-head{display:flex;justify-content:space-between;align-items:center;gap:.5rem;border-bottom:1px solid var(--cm-border);padding-bottom:1rem;}
.cm-pos-cart-title{margin:0;font-size:1.15rem;font-weight:800;color:var(--cm-primary);display:flex;align-items:center;gap:8px;}
.cm-pos-cart-close{display:flex;align-items:center;justify-content:center;width:var(--cm-tap);height:var(--cm-tap);background:rgba(0,0,0,.05);border:none;border-radius:50%;color:var(--cm-text);cursor:pointer;}
.cm-pos-cart-actions{display:flex;gap:.5rem;}
.cm-pos-text-btn{display:inline-flex;align-items:center;gap:4px;min-height:var(--cm-tap);background:none;border:none;font-weight:600;cursor:pointer;padding:0 .25rem;}
.cm-pos-text-btn.is-warning{color:var(--cm-warning);}
.cm-pos-text-btn.is-danger{color:var(--cm-danger);}
.cm-pos-text-btn.is-muted{color:var(--cm-text-muted);padding:0 1rem;}
.cm-pos-text-btn:disabled{opacity:.5;cursor:not-allowed;}
.cm-pos-cart-list{flex:1;overflow-y:auto;margin:1rem 0;padding-right:5px;}
.cm-pos-cart-empty{text-align:center;padding:4rem 0;color:var(--cm-text-muted);}
.cm-pos-cart-empty .cm-pos-ico-xl{display:block;margin:0 auto 1rem;opacity:.3;}
.cm-pos-line{display:flex;align-items:center;gap:.75rem;background:var(--cm-surface);padding:.75rem 1rem;border-radius:var(--cm-radius);margin-bottom:.5rem;border:1px solid var(--cm-border);transition:.3s;}
.cm-pos-line:hover{border-color:var(--cm-primary-light);}
.cm-pos-line-body{flex:1;min-width:0;}
.cm-pos-line-name{font-size:.9rem;font-weight:600;color:var(--cm-text);overflow-wrap:anywhere;}
.cm-pos-line-amount{font-size:1.05rem;font-weight:800;color:var(--cm-primary);font-variant-numeric:tabular-nums;}
.cm-pos-qty{display:flex;align-items:center;background:var(--cm-border-soft);border-radius:var(--cm-radius-sm);padding:4px;border:1px solid var(--cm-border);flex-shrink:0;}
.cm-pos-qty-btn{width:var(--cm-tap);height:var(--cm-tap);border:none;background:var(--cm-surface);border-radius:8px;cursor:pointer;font-weight:800;font-size:1.1rem;color:var(--cm-primary);box-shadow:0 1px 2px rgba(0,0,0,.05);}
.cm-pos-qty-input{width:44px;text-align:center;font-weight:800;font-size:.95rem;color:var(--cm-primary);background:transparent;border:none;outline:none;font-family:inherit;-moz-appearance:textfield;}
.cm-pos-qty-input::-webkit-outer-spin-button,.cm-pos-qty-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.cm-pos-cart-foot{border-top:1px solid var(--cm-border);padding-top:1rem;margin-top:auto;}
.cm-pos-discount{background:var(--cm-border-soft);padding:.75rem 1rem;border-radius:var(--cm-radius);margin-bottom:1rem;border:1px solid var(--cm-border);}
.cm-pos-discount-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;font-size:.85rem;font-weight:700;color:var(--cm-primary);}
.cm-pos-discount-cancel{padding:2px 8px;border-radius:6px;font-weight:700;font-size:.75rem;cursor:pointer;background:rgba(231,76,60,.1);color:var(--cm-danger);border:none;min-height:32px;}
.cm-pos-discount-row{display:flex;gap:.5rem;}
.cm-pos-discount-row select{width:45%;flex-shrink:0;}
.cm-pos-discount-row input{flex:1;min-width:0;}
.cm-pos-total{display:flex;justify-content:space-between;align-items:flex-end;gap:.5rem;margin-bottom:1rem;}
.cm-pos-total-label{color:var(--cm-text-muted);font-weight:600;text-transform:uppercase;font-size:.85rem;}
.cm-pos-total-old{text-decoration:line-through;color:var(--cm-text-muted);font-size:.9rem;}
.cm-pos-total-value{font-size:1.75rem;font-weight:800;color:var(--cm-primary);font-variant-numeric:tabular-nums;white-space:nowrap;}
.cm-pos-cta{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:56px;background:var(--cm-accent);color:#fff;border:none;border-radius:var(--cm-radius);padding:1rem 1.25rem;font-size:1.05rem;font-weight:800;cursor:pointer;transition:.2s;font-family:inherit;}
.cm-pos-cta:hover{background:var(--cm-accent-hover);}
.cm-pos-cta:disabled{background:var(--cm-border);color:var(--cm-text-muted);cursor:not-allowed;}
.cm-pos-fab{display:flex;align-items:center;justify-content:center;position:fixed;right:1.25rem;bottom:calc(1.25rem + var(--cm-safe-bottom));z-index:90;width:4rem;height:4rem;border-radius:50%;background:var(--cm-accent);color:#fff;border:none;box-shadow:0 10px 25px -5px rgba(0,0,0,.3);cursor:pointer;transition:transform .2s;}
.cm-pos-fab:active{transform:scale(.95);}
.cm-pos-fab-count{position:absolute;top:-5px;right:-5px;background:var(--cm-danger);color:#fff;font-weight:800;font-size:.8rem;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid var(--cm-bg);}

/* Fenêtres (paiement, alerte) — pilotées par x-show */
.cm-pos-modal{position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:9999;padding:1rem;}
.cm-pos-modal.is-alert{z-index:10000;}
.cm-pos-modal-box{background:var(--cm-surface);border-radius:var(--cm-radius-xl);width:100%;max-width:700px;max-height:95vh;display:flex;flex-direction:column;box-shadow:0 25px 50px -12px rgba(0,0,0,.25);overflow:hidden;}
.cm-pos-modal-head{background:var(--cm-primary);padding:1.1rem 1.25rem;color:#fff;display:flex;justify-content:space-between;align-items:center;gap:.75rem;flex-shrink:0;}
.cm-pos-modal-title{margin:0;font-size:1.15rem;font-weight:700;color:#fff;}
.cm-pos-modal-close{display:flex;align-items:center;justify-content:center;width:var(--cm-tap);height:var(--cm-tap);background:none;border:none;color:#fff;cursor:pointer;opacity:.75;}
.cm-pos-modal-close:hover{opacity:1;}
.cm-pos-modal-body{padding:1.25rem;overflow-y:auto;flex:1;}
.cm-pos-modal-foot{padding:1rem 1.25rem;border-top:1px solid var(--cm-border);display:flex;flex-direction:column-reverse;gap:.5rem;background:var(--cm-border-soft);flex-shrink:0;}
.cm-pos-modal-foot .cm-pos-cta,.cm-pos-modal-foot .cm-pos-text-btn{width:100%;justify-content:center;}
.cm-pos-pay{display:flex;flex-direction:column-reverse;gap:1.5rem;}
.cm-pos-pay-left{display:flex;flex-direction:column;min-width:0;}
.cm-pos-pay-right{display:flex;flex-direction:column;gap:1rem;}
.cm-pos-pay-title{font-size:.95rem;font-weight:700;color:var(--cm-primary);margin:0 0 1rem;text-transform:uppercase;}
.cm-pos-pay-row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;position:relative;background:var(--cm-surface);padding:.75rem;border-radius:var(--cm-radius-sm);border:1px solid var(--cm-border);margin-bottom:.75rem;box-shadow:0 2px 4px rgba(0,0,0,.02);}
.cm-pos-pay-method,.cm-pos-pay-account{width:calc(50% - .25rem);min-width:0;}
.cm-pos-pay-amount{width:calc(100% - 52px);font-weight:800;}
.cm-pos-pay-delete{display:flex;align-items:center;justify-content:center;width:var(--cm-tap);height:var(--cm-tap);background:rgba(231,76,60,.1);border:none;border-radius:8px;color:var(--cm-danger);cursor:pointer;}
.cm-pos-pay-add{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:var(--cm-tap);background:var(--cm-surface);border:1px dashed var(--cm-primary);color:var(--cm-primary);padding:.75rem;border-radius:var(--cm-radius-sm);font-weight:600;cursor:pointer;font-family:inherit;}
.cm-pos-recap{background:var(--cm-border-soft);padding:1.25rem;border-radius:var(--cm-radius-lg);text-align:center;border:1px solid var(--cm-border);}
.cm-pos-recap-label{color:var(--cm-text-muted);font-size:.85rem;font-weight:700;text-transform:uppercase;margin-bottom:.5rem;}
.cm-pos-recap-value{font-size:2rem;font-weight:800;color:var(--cm-primary);font-variant-numeric:tabular-nums;}
.cm-pos-balance{padding:1.25rem;border-radius:var(--cm-radius-lg);text-align:center;border:2px solid var(--cm-border);background:var(--cm-border-soft);}
.cm-pos-balance-label{font-size:.85rem;font-weight:700;text-transform:uppercase;margin-bottom:.5rem;}
.cm-pos-balance-value{font-size:1.75rem;font-weight:800;font-variant-numeric:tabular-nums;}
.cm-pos-balance.is-change{background:rgba(0,196,154,.1);border-color:var(--cm-accent);}
.cm-pos-balance.is-change .cm-pos-balance-label{color:var(--cm-primary);}
.cm-pos-balance.is-change .cm-pos-balance-value{color:var(--cm-accent);}
.cm-pos-balance.is-due{background:rgba(231,76,60,.1);border-color:var(--cm-danger);}
.cm-pos-balance.is-due .cm-pos-balance-label,.cm-pos-balance.is-due .cm-pos-balance-value{color:var(--cm-danger);}
.cm-pos-balance.is-ok{background:rgba(59,130,246,.1);border-color:var(--cm-info);}
.cm-pos-balance.is-ok .cm-pos-balance-label,.cm-pos-balance.is-ok .cm-pos-balance-value{color:var(--cm-info);}
.cm-pos-alert-box{background:var(--cm-surface);border-radius:var(--cm-radius-xl);width:100%;max-width:400px;padding:2rem 1.5rem;text-align:center;box-shadow:0 25px 50px -12px rgba(0,0,0,.25);position:relative;}
.cm-pos-alert-icon{display:inline-flex;background:rgba(231,76,60,.1);color:var(--cm-danger);padding:1rem;border-radius:50%;margin-bottom:1rem;}
.cm-pos-alert-title{margin:0 0 .5rem;color:var(--cm-text);font-size:1.25rem;font-weight:800;}
.cm-pos-alert-text{color:var(--cm-text-muted);margin:0 0 1.5rem;font-size:.95rem;line-height:1.5;}

@media (min-width:640px){
  .cm-pos-bar-group.is-end{justify-content:flex-end;}
}
@media (min-width:768px){
  .cm-pos{padding:1.25rem;}
  .cm-pos-body .cm-pos-title{font-size:1.35rem;}
  .cm-pos-quit-label{display:inline;}
  .cm-pos-subtitle{max-width:320px;}
  .cm-pos-panel{padding:1.25rem;}
  .cm-pos-catalog{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1rem;}
  .cm-pos-item{padding:1.25rem 1rem;}
  .cm-pos-item-price{font-size:1.3rem;}
  .cm-pos-pay{flex-direction:row;gap:2rem;align-items:flex-start;}
  .cm-pos-pay-left{flex:2;}
  .cm-pos-pay-right{flex:1;}
  .cm-pos-pay-lines{max-height:320px;overflow-y:auto;}
  .cm-pos-modal-foot{flex-direction:row;justify-content:flex-end;}
  .cm-pos-modal-foot .cm-pos-cta,.cm-pos-modal-foot .cm-pos-text-btn{width:auto;}
  .cm-pos-modal-foot .cm-pos-cta{padding:1rem 2rem;}
}
@media (min-width:992px){
  .cm-pos{height:100vh;overflow:hidden;padding:1.5rem;}
  .cm-pos-bar{flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:wrap;}
  .cm-pos-search{width:300px;}
  .cm-pos-grid{grid-template-columns:2fr 1fr;gap:1.5rem;overflow:hidden;padding-bottom:0;}
  .cm-pos-panel{padding:1.5rem;}
  .cm-pos-cart{position:static;transform:none;transition:none;border-radius:var(--cm-radius-xl);z-index:auto;}
  .cm-pos-cart-close,.cm-pos-fab{display:none;}
  .cm-pos-qty-btn{width:34px;height:34px;}
  .cm-pos-total-value{font-size:2rem;}
  /* Fenêtre de paiement : lignes sur une seule rangée (moyen | compte | montant | suppression) */
  .cm-pos-modal-box{max-width:900px;}
  .cm-pos-pay-lines{background:var(--cm-border-soft);padding:1rem;border-radius:var(--cm-radius);border:1px solid var(--cm-border);}
  .cm-pos-pay-row{flex-wrap:nowrap;background:transparent;padding:0;border:none;box-shadow:none;}
  .cm-pos-pay-method{width:150px;flex-shrink:0;}
  .cm-pos-pay-account{flex:1;width:auto;min-width:140px;}
  .cm-pos-pay-amount{width:130px;flex-shrink:0;text-align:right;}
  .cm-pos-pay-delete{background:none;}
}

/* ================================================================
   37. COQUE GLOBALE (layouts.default) — remplace le <style> de partial/head
   Mêmes valeurs qu'avant : police Inter, fond #f1f5f9 (--cm-bg), texte #2E2E2E.
   La caisse (body.cm-pos-body) garde ses propres réglages (sélecteur de classe prioritaire).
   ================================================================ */
body{font-family:var(--cm-font);background:var(--cm-bg);color:#2E2E2E;}

/* ================================================================
   38. FENÊTRE DE CONFIRMATION (partial/confirm-dialog) — remplace confirm() / alert() natifs
   Déclaratif : data-confirm="Message" sur un <form>, <a> ou <button> (+ data-confirm-title,
   data-confirm-ok, data-confirm-variant="danger|primary"). JavaScript : await cmConfirm(msg, opts), cmAlert(msg).
   Au-dessus de toutes les autres fenêtres (cm-dialog 1060, fenêtres de la caisse 10000).
   ================================================================ */
.cm-confirm{display:none;position:fixed;inset:0;z-index:10050;background:rgba(15,23,42,.55);backdrop-filter:blur(3px);align-items:center;justify-content:center;padding:1rem;}
.cm-confirm.is-open{display:flex;animation:cm-confirm-fade .15s ease-out;}
.cm-confirm-box{width:100%;max-width:420px;background:var(--cm-surface);border-radius:var(--cm-radius-xl);box-shadow:0 25px 50px -12px rgba(0,0,0,.3);padding:1.5rem 1.25rem 1.25rem;text-align:center;font-family:var(--cm-font);color:var(--cm-text);animation:cm-confirm-pop .18s ease-out;}
.cm-confirm-icon{width:56px;height:56px;margin:0 auto 1rem;border-radius:50%;display:grid;place-items:center;background:rgba(11,70,80,.08);color:var(--cm-primary);}
.cm-confirm-icon svg{width:28px;height:28px;}
.cm-confirm.is-danger .cm-confirm-icon{background:rgba(231,76,60,.1);color:var(--cm-danger);}
.cm-confirm.is-alert .cm-confirm-icon{background:rgba(59,130,246,.1);color:var(--cm-info);}
/* Information en rouge (cmAlert variant danger) : refus métier */
.cm-confirm.is-alert.is-danger .cm-confirm-icon{background:rgba(231,76,60,.1);color:var(--cm-danger);}
.cm-confirm-title{margin:0 0 .5rem;font-size:1.15rem;font-weight:800;color:var(--cm-primary);line-height:1.3;}
.cm-confirm.is-danger .cm-confirm-title{color:var(--cm-text);}
.cm-confirm-text{margin:0 0 1.5rem;font-size:.95rem;line-height:1.55;color:var(--cm-text-muted);white-space:pre-line;overflow-wrap:anywhere;}
.cm-confirm-actions{display:flex;flex-direction:column-reverse;gap:.5rem;}
.cm-confirm-actions .cm-btn{width:100%;}
.cm-confirm.is-alert .cm-confirm-cancel{display:none;}
.cm-confirm-open{overflow:hidden;}
@keyframes cm-confirm-fade{from{opacity:0;}to{opacity:1;}}
@keyframes cm-confirm-pop{from{opacity:0;transform:translateY(8px) scale(.98);}to{opacity:1;transform:none;}}
@media (min-width:640px){
  .cm-confirm-box{padding:1.75rem 1.75rem 1.5rem;}
  .cm-confirm-actions{flex-direction:row;justify-content:center;}
  .cm-confirm-actions .cm-btn{width:auto;min-width:130px;}
}
@media (prefers-reduced-motion:reduce){.cm-confirm.is-open,.cm-confirm-box{animation:none;}}

/* ==========================================================================
   39. CHOIX DU PLAN D'ABONNEMENT (subscription/index) — mobile-first
   Bascule Mensuel/Annuel pilotée par data-freq sur .cm-plan-page (aucun JS pour les prix).
   ========================================================================== */
.cm-plan-switch{display:flex;flex-direction:column;align-items:center;gap:.55rem;margin-bottom:1.5rem;}
.cm-plan-switch-note{font-size:.78rem;font-weight:700;color:var(--cm-accent);}
button.cm-segmented-item{border:0;background:transparent;cursor:pointer;font-family:inherit;}
button.cm-segmented-item.active{background:var(--cm-surface);}
.cm-plan-grid{display:grid;grid-template-columns:1fr;gap:1.1rem;margin-bottom:1.5rem;}
@media (min-width:768px){.cm-plan-grid{grid-template-columns:repeat(2,1fr);}}
@media (min-width:1200px){.cm-plan-grid{grid-template-columns:repeat(4,1fr);}.cm-plan-grid-3{grid-template-columns:repeat(3,1fr);}}
.cm-plan-choice{position:relative;display:flex;flex-direction:column;background:var(--cm-surface);border:2px solid var(--cm-border);border-radius:var(--cm-radius-lg);cursor:pointer;transition:.15s;overflow:hidden;margin:0;box-shadow:var(--cm-shadow);}
.cm-plan-choice:hover{border-color:var(--cm-accent);}
.cm-plan-choice input{position:absolute;opacity:0;pointer-events:none;}
.cm-plan-choice:has(input:checked){border-color:var(--cm-accent);box-shadow:0 0 0 3px rgba(0,196,154,.2);}
.cm-plan-choice:has(input:focus-visible){outline:2px solid var(--cm-primary);outline-offset:2px;}
.cm-plan-choice-tag{position:absolute;top:.7rem;right:.7rem;}
.cm-plan-choice-check{position:absolute;top:.7rem;left:.7rem;width:26px;height:26px;border-radius:50%;background:var(--cm-accent);color:#fff;display:none;place-items:center;font-size:.8rem;}
.cm-plan-choice:has(input:checked) .cm-plan-choice-check{display:grid;}
.cm-plan-choice-head{padding:2.2rem 1.1rem 1rem;text-align:center;border-bottom:1px solid var(--cm-border-soft);}
.cm-plan-choice-name{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.5px;margin:0 0 .25rem;color:var(--cm-primary);}
.cm-plan-choice-desc{font-size:.8rem;color:var(--cm-text-muted);margin:0 0 .9rem;min-height:2.4em;}
.cm-plan-price{font-size:1.9rem;font-weight:800;line-height:1.1;color:var(--cm-text);}
.cm-plan-price small{font-size:.8rem;font-weight:700;color:var(--cm-text-muted);}
.cm-plan-price-sub{font-size:.75rem;font-weight:700;color:var(--cm-accent);margin-top:.35rem;}
.cm-plan-choice-body{padding:1rem 1.1rem 1.25rem;flex:1;}
.cm-plan-cat{font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:1px;color:var(--cm-text-muted);margin:0 0 .5rem;}
.cm-plan-choice-body .cm-check-list{margin-bottom:1rem;}
.cm-plan-page[data-freq="monthly"] .cm-only-yearly{display:none;}
.cm-plan-page[data-freq="yearly"] .cm-only-monthly{display:none;}
.cm-plan-promo{display:flex;flex-direction:column;gap:.6rem;}
.cm-plan-promo-row{display:flex;gap:.5rem;}
.cm-plan-promo-row .cm-input{text-transform:uppercase;}
.cm-plan-promo-msg{font-size:.8rem;font-weight:700;min-height:1.2em;}
.cm-plan-summary{position:sticky;bottom:0;z-index:20;margin-bottom:0;display:flex;flex-direction:column;gap:.75rem;}
@media (min-width:768px){.cm-plan-summary{flex-direction:row;align-items:center;justify-content:space-between;}}
.cm-plan-total-label{font-size:.7rem;font-weight:700;text-transform:uppercase;color:var(--cm-text-muted);}
.cm-plan-total-value{font-size:1.7rem;font-weight:800;line-height:1.1;color:var(--cm-primary);}
.cm-plan-total-value small{font-size:.8rem;font-weight:700;color:var(--cm-text-muted);}
.cm-plan-total-old{font-size:.95rem;color:var(--cm-text-muted);text-decoration:line-through;margin-right:.4rem;}
.cm-plan-summary .cm-btn{width:100%;}
@media (min-width:768px){.cm-plan-summary .cm-btn{width:auto;min-width:240px;}}

/* ==========================================================================
   40. PAIEMENT D'ABONNEMENT (subscription/paiement) — mobile-first
   Choix de l'opérateur, saisie du numéro et du code, attente de confirmation.
   ========================================================================== */
.cm-pay-phone{display:flex;gap:.5rem;align-items:stretch;}
.cm-pay-prefix{display:flex;align-items:center;padding:0 .9rem;border:2px solid var(--cm-border);border-radius:var(--cm-radius);background:var(--cm-border-soft);font-weight:700;color:var(--cm-text-muted);}
.cm-pay-phone .cm-input{flex:1;min-width:0;}
.cm-pay-fee{font-size:.75rem;font-weight:600;color:var(--cm-text-muted);}
.cm-pay-state{text-align:center;padding:1.25rem .5rem;}
.cm-pay-state-icon{font-size:2.6rem;color:var(--cm-accent);margin-bottom:.75rem;}
.cm-pay-state-icon.is-danger{color:var(--cm-danger);}
.cm-pay-state-title{font-size:1.2rem;font-weight:800;margin:0 0 .4rem;color:var(--cm-text);}
.cm-pay-state-text{font-size:.9rem;color:var(--cm-text-muted);margin:0 auto 1rem;max-width:460px;}
.cm-pay-message{font-size:.85rem;font-weight:700;margin-bottom:1rem;min-height:1.2em;}


/* ==========================================================================
   41. PAGES D'AUTHENTIFICATION PUBLIQUES (auth/inscription) — mobile-first
   Page sous layouts.empty (sans coque ni barre latérale) : fond de charte,
   logo, carte centrée, case à cocher multiligne. Les champs, boutons et
   alertes sont les composants habituels (cm-field, cm-input, cm-btn, cm-alert).
   ========================================================================== */
.cm-auth{min-height:100vh;min-height:100dvh;display:flex;align-items:flex-start;justify-content:center;padding:1.25rem 1rem;background:var(--cm-bg);font-family:var(--cm-font);color:var(--cm-text);}
.cm-auth *,.cm-auth *::before,.cm-auth *::after{box-sizing:border-box;}
@media (min-width:640px){.cm-auth{align-items:center;padding:2rem 1rem;}}
.cm-auth-card{width:100%;max-width:560px;}
.cm-auth-card .cm-card{padding:1.5rem 1.15rem;}
@media (min-width:640px){.cm-auth-card .cm-card{padding:2rem 2.25rem;}}
.cm-auth-brand{display:flex;justify-content:center;margin-bottom:1.25rem;}
.cm-auth-logo{height:44px;width:auto;}
.cm-check-top{align-items:flex-start;line-height:1.5;}
.cm-check-top input{margin-top:.2rem;}
@media (min-width:768px){.cm-check-top{min-height:0;}}
.cm-auth-foot{text-align:center;font-size:.85rem;color:var(--cm-text-muted);margin:1.25rem 0 0;}

/* ================================================================
   42. ONBOARDING DU DASHBOARD (bloc de configuration non bloquant)
   ================================================================ */
.cm-onb{background:var(--cm-surface);border:1px solid var(--cm-border);border-left:5px solid var(--cm-accent);border-radius:var(--cm-radius-md);padding:1rem;margin-bottom:1.25rem;box-shadow:var(--cm-shadow);}
.cm-onb-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;margin-bottom:.6rem;}
.cm-onb-title{margin:0;font-size:1.05rem;font-weight:700;color:var(--cm-text);}
.cm-onb-sub{margin:.15rem 0 0;font-size:.85rem;color:var(--cm-text-muted);}
.cm-onb-tabs{flex-wrap:nowrap;overflow-x:auto;margin:.85rem 0 .5rem;padding-bottom:.25rem;}
.cm-onb-tabs .cm-tab{flex-shrink:0;}
.cm-onb-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem;}
.cm-onb-item{display:flex;flex-direction:column;gap:.6rem;padding:.6rem .75rem;border:1px solid var(--cm-border-soft);border-radius:var(--cm-radius-sm);background:var(--cm-surface-alt);}
.cm-onb-item.is-done{opacity:.65;}
.cm-onb-item.is-done .cm-onb-name{text-decoration:line-through;}
.cm-onb-item.is-locked{border-style:dashed;}
.cm-onb-item.is-ignored{border-style:dashed;opacity:.75;}
.cm-onb-actions{display:flex;align-items:center;gap:.4rem;flex-shrink:0;}
.cm-onb-main{display:flex;align-items:flex-start;gap:.75rem;min-width:0;}
.cm-onb-check{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;background:var(--cm-border-soft);color:var(--cm-text-muted);}
.cm-onb-item.is-done .cm-onb-check{background:var(--cm-accent);color:#fff;}
.cm-onb-name{font-weight:600;color:var(--cm-text);font-size:.95rem;}
.cm-onb-desc{font-size:.85rem;color:var(--cm-text-muted);margin-top:.1rem;}
.cm-onb-miss{font-size:.8rem;color:var(--cm-warning);margin-top:.25rem;font-weight:600;}
.cm-onb-compact{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;padding:.6rem .9rem;margin-bottom:1.25rem;border:1px dashed var(--cm-border);border-radius:var(--cm-radius-sm);background:var(--cm-surface);font-size:.9rem;color:var(--cm-text-muted);}
@media (min-width:768px){.cm-onb-item{flex-direction:row;align-items:center;justify-content:space-between;}}

/* ==========================================================================
   43. Aperçu des emails (page locale /charte/emails)
   ========================================================================== */
.cm-mailpreview{min-width:0;}
.cm-mailpreview-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.4rem;margin-bottom:.5rem;}
.cm-mailframe{display:block;width:100%;height:640px;border:1px solid var(--cm-border);border-radius:var(--cm-radius-md);background:var(--cm-bg);}
.cm-mailframe.is-mobile{max-width:375px;margin-left:auto;margin-right:auto;}
button.cm-segmented-item{border:0;background:transparent;cursor:pointer;font-family:inherit;}
button.cm-segmented-item.active{background:var(--cm-surface);}

/* Trésorerie : pastilles du dashboard cliquables (lien vers l'historique des comptes) + ligne de filtre pleine largeur */
a.cm-account-item{color:inherit;text-decoration:none;transition:.15s;}
a.cm-account-item:hover{background:rgba(255,255,255,.18);color:inherit;text-decoration:none;}
.cm-filters-full{grid-column:1/-1;}

/* ==========================================================================
   44. Application mobile : aperçu d'une image ouverte (pages/app_fichier)
   ========================================================================== */
.cm-fichier-apercu{display:block;max-width:100%;max-height:60vh;margin:0 auto 1rem;border:1px solid var(--cm-border);border-radius:var(--cm-radius);background:var(--cm-surface);}
