@import url(https://fonts.googleapis.com/css?family=Roboto:100);
@import url(https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.css);

body {
  background:#fff;  /*bg  1a1a1a  434240  */ 
  font-family: 'Roboto';
  font-size:13px;
  font-weight:300;
  color:#444;
}

.header-spacer {
    height:90px;
}
.container {
    max-width:1400px !important;
    width:90% !important;
}
p{
  color:#555;
}
input:focus{
  background-color:yellow;
}
.flat-form {
  background: #34495e;  /*tablebg e74c3c #34495e  #88565b ed7271*/
  margin: 25px auto;
  width: 390px;
  height: 340px;
  position: relative;
  font-family: 'Roboto';
}
.tabs {
  background: #ed7271;  /*topbar #c0392b #88565b*/
  height: 40px;
  margin: 0;
  padding: 0;
  list-style-type: none;
  width: 100%;
  position: relative;
  display: block;
  margin-bottom: 20px;
}
.tabs li {
  display: block;
  float: left;
  margin: 0;
  padding: 0;
}
.tabs a {
  background: #ed7271;  /*topbar c0392b  #88565b */
  display: block;
  float: left;
  text-decoration: none;
  color: white;
  font-size: 16px;
  padding: 12px 22px 12px 22px;
  /*border-right: 1px solid @tab-border;*/

}
.tabs li:last-child a {
  border-right: none;
  width: 174px;
  padding-left: 0;
  padding-right: 0;
  text-align: center;
}
.tabs a.active {
  background: #ed7271;  /*topbar e74c3c  */
  border-right: none;
  -webkit-transition: all 0.5s linear;
	-moz-transition: all 0.5s linear;
	transition: all 0.5s linear;
}
.form-action {
  padding: 0 20px;
  position: relative;
}

.form-action h1 {
  font-size: 42px;
  padding-bottom: 10px;
}
.form-action p {
  font-size: 12px;
  padding-bottom: 10px;
  line-height: 25px;
}
form {
  /*padding-right: 20px !important;*/
}
form input[type=text],
form input[type=password],
form input[type=submit] {
  font-family: 'Roboto';
}

.validationStyle1 {
    /*position: absolute;
    top: 20px;
    right: 10px;
        */
    color:red;
    font-size:14px;
}


form label {
    font-weight:300;
    text-transform:capitalize;
    letter-spacing:0px;
    color:#222;
    font-size:14px;
}
form input[type=text],
form input[type=password],
form input[type=email],
form input[type=number],
form input[type=date],
form input[type=time] {
  width: 100%;
  max-width: 380px;
  padding:2px 5px;
  margin-bottom: 3px;  
  background: #fff; /* #44454a  */
  border: 1px solid #ccc;
  color: #555;   /* e74c3c e9e9e9  */
  outline: none;
}

.dark-box {
  background: #5e0400;
  box-shadow: 1px 3px 3px #3d0100 inset;
  height: 40px;
  width: 50px;
}
.form-action .dark-box.bottom {
  position: absolute;
  right: 0;
  bottom: -24px;
}
.tabs + .dark-box.top {
  position: absolute;
  right: 0;
  top: 0px;
}
.show {
  display: block;
}
.hide {
  display: none;
}

.button {
    border: none;
    display: block;
    background: #136899;
    height: 40px;
    width: 80px;
    color: #ffffff;
    text-align: center;
    border-radius: 5px;
    /*box-shadow: 0px 3px 1px #2075aa;*/
  	-webkit-transition: all 0.15s linear;
	-moz-transition: all 0.15s linear;
	transition: all 0.15s linear;
}

.button:hover {
    background: #1e75aa;
    /*box-shadow: 0 3px 1px #237bb2;*/
}

.button:active {
    background: #136899;
    /*box-shadow: 0 3px 1px #0f608c;*/
}

::-webkit-input-placeholder {
  color:dark ;    /*  #e74c3c */
}
:-moz-placeholder {
  /* Firefox 18- */
  color: #e74c3c;
}
::-moz-placeholder {
  /* Firefox 19+ */
  color: #e74c3c;
}
:-ms-input-placeholder {
  color: #e74c3c;
}

.fullSpace {
    width: 100%;
    float: left;
}
.formTables {
    width: 100%;float:left;overflow:hidden;
}
.formTablesLinearHead{
    width: 100%;float:left;margin:0;padding:0;background:transparent !important;padding:10px 0px;
}
.formTablesLinearHead li{
    width:auto;float:left;margin:0;padding:5px 0.5%;font-size:14px; color:#5f7c8e;font-weight:300;
    overflow-wrap: break-word; font-weight:bold;
}

.listEditLink1 {
    float:left;
    width:10px;height:10px;background-image:url('/content/images/pencil.png'); background-position:center;
    background-repeat:no-repeat;background-size:100%;cursor:pointer; margin:5px;
    padding:0;border:none;-webkit-appearance:none;appearance:none;background-color:transparent;
}
.listDeleteLink1 {
    float:left;
    width:10px;height:10px;background-image:url('/content/images/trash.png'); background-position:center;
    background-repeat:no-repeat;background-size:100%;cursor:pointer; margin:5px;
    padding:0;border:none;-webkit-appearance:none;appearance:none;background-color:transparent;
}
.listEmailBtn1 {
    display: inline-block;
    float: left;
    cursor: pointer;
    background: #136899;
    color: #ffffff !important;
    font-size: 12px;
    font-weight: 300;
    text-align: center;
    text-decoration: none !important;
    border-radius: 4px;
    padding: 5px 10px;
    margin: 2px 0 2px 5px;
    white-space: nowrap;
    -webkit-transition: all 0.15s linear;
    -moz-transition: all 0.15s linear;
    transition: all 0.15s linear;
}
.listEmailBtn1:hover {
    background: #1e75aa;
}
.listRestoreLink1 {
    float: left;
    width: 14px;
    height: 14px;
    background-image: url(/content/images/restore.png);
    background-position: center;
    background-repeat: no-repeat;
    background-size: 100%;
    cursor: pointer;
    margin: 2px 5px;
    padding:0;border:none;-webkit-appearance:none;appearance:none;background-color:transparent;
}
.listEditLink1 a, .listDeleteLink1 a {
    color:transparent !important;
}


.listMainBlockStyle {
    /*background: #f2f2f2;
    padding-top: 20px;*/
}

.formTablesLinearValues {
    width: 100%;
    float: left;
    margin: 0;
    padding: 5px 0px;
    border: 1px solid #fff;
    background:#f7fcf8;
    border-radius: 6px;
    margin-bottom:5px;
}
.formTablesLinearValues li{
    width:auto;float:left;margin:0;padding:3px 0.5%;font-size:14px; color:#555;font-weight:300; font-size:13px;
    overflow-wrap: break-word;
}
.formTables ul:nth-child(odd) { background: #faf7ed; }



.formWholeDiv {
    width:100%;margin:0;padding:0;
}
.formWholeDiv ul{
    width:100%;float:left; margin-bottom:5px; line-height:25px;
}
.colhalf {
    float:left;
    width:0.5% !important;
}
.col-1 {
    float:left;
    width:1%  !important;
}
.col-2 {
    float:left;
    width:2%  !important;
}
.col-3 {
    float:left;
    width:3%  !important;
}
.col-4 {
    float:left;
    width:4%  !important;
}
.col-5 {
    float:left;
    width:5%  !important;
}
.col-6 {
    float:left;
    width:6%  !important;
}
.col-7 {
    float:left;
    width:7%  !important;
}
.col-8 {
    float:left;
    width:8%  !important;
}
.col-9 {
    float:left;
    width:9%  !important;
}
.col1 {
    float:left;
    width:10%  !important;
}
.col1_5 {
    float:left;
    width:15%  !important;
}
/* 22,5% : 4 colonnes de données à parts égales après les 2 colonnes de 5% (actions, N°), ex. GC Dossiers
   (CustomerFileList.cshtml) -- demande du 26 oct. 2026 "espaces répartis de manière identique entre les colonnes". */
.col2_25 {
    float:left;
    width:22.5%  !important;
}
/* Même principe (colonnes de données à parts égales) pour les autres listes de Paramétrages FT/GC :
   18% = 5 colonnes après 2x5% (Clients) ; 23,75% = 4 colonnes après 5% (Salariés) ;
   45% = 2 colonnes après 2x5% (Types dossiers) ; 47,5% = 2 colonnes après 5% (Tâches, Groupes, Types d'absences, Fériés). */
.col1_8 { float:left; width:18% !important; }
.col2_375 { float:left; width:23.75% !important; }
.col4_5 { float:left; width:45% !important; }
.col4_75 { float:left; width:47.5% !important; }
/* 6 colonnes à parts égales : après une colonne d'actions de 9% (Absences) ou sans colonne d'actions (Consultation absences). */
.col1_5166 { float:left; width:15.1666% !important; }
.col1_666 { float:left; width:16.6666% !important; }
/* 6 colonnes à parts égales après une colonne d'actions de 5% (PMS > Projets). */
.col1_583 { float:left; width:15.8333% !important; }
/* 5 colonnes à parts égales après une colonne d'actions de 3% (Notes de frais > Salariés). */
.col1_94 { float:left; width:19.4% !important; }
/* 6 colonnes à parts égales avant une colonne d'actions de 15% (Liasse fiscale > Formulaires). */
.col1_4166 { float:left; width:14.1666% !important; }
/* 9 colonnes à parts égales avant une colonne d'actions de 4% (Prix de transfert > Transactions). */
.col1_0666 { float:left; width:10.6666% !important; }
.pciTxTable { overflow-x:auto; }
.pciTxTable > ul { min-width:1000px; }
/* Menus déroulants posés en width:100% dans les grilles de formulaires PMS/FT/NDF (ex. PMS > Saisie "Tâche",
   Traitements > Modification/Purge "Projet") : jusqu'à 578px de large à 1050px (27 oct. 2026). Même plafond que les
   autres champs (380px). */
body.pmsPage .container select[style*="width:100%"],
body.ftPage .container select[style*="width:100%"],
body.ndfPage .container select[style*="width:100%"] { max-width:380px; }
.col2 {
    float:left;
    width:20%  !important;
}
.col2_5 {
    float:left;
    width:25%  !important;
}
.col3 {
    float:left;
    width:30%  !important;
}
.col4 {
    float:left;
    width:40%  !important;
}
.col5 {
    float:left;
    width:50%  !important;
}
.col6 {
    float:left;
    width:60%  !important;
}
.col7 {
    float:left;
    width:70%  !important;
}
.col8 {
    float:left;
    width:80%  !important;
}
.col9 {
    float:left;
    width:90%  !important;
}
.col10 {
    float:left;
    width:100%  !important;
}

.btnStyle2 {
    cursor:pointer;
    width: auto;
    float: left;
    background: #f9f9f9;
    color: #999;
    padding: 8px 15px;
    border: 1px solid #eee;
    text-transform: uppercase;
}

.formTextBox {
    width: 100%;
    padding:5px 5px;
    margin-bottom: 10px;
    background: #fff; /* #44454a  */
    border: 1px solid #ccc;
    color: #222;   /* e74c3c e9e9e9  */
    outline: none;
    font-weight:300;
    font-size:14px;
}
.formTextArea {
    width: 100%;
    padding:5px 5px;
    margin-bottom: 10px;
    background: #fff; /* #44454a  */
    border: 1px solid #ccc;
    color: #222;   /* e74c3c e9e9e9  */
    outline: none;
    font-weight:300;
    font-size:14px;
    height:80px;
    min-height:80px;
}

.btnStyle {
    cursor:pointer;
    width: auto;
    padding:4px 15px;
    margin: 5px;    
    border: 1px solid #ccc;
    color: #fff;   /* e74c3c e9e9e9  */
    outline: none;
    font-weight:300;
    font-size:14px;
    background: rgba(164,179,87,1);
    background: -moz-linear-gradient(left, rgba(164,179,87,1) 0%, rgba(117,137,12,1) 57%);
    background: -webkit-gradient(left top, right top, color-stop(0%, rgba(164,179,87,1)), color-stop(57%, rgba(117,137,12,1)));
    background: -webkit-linear-gradient(left, rgba(164,179,87,1) 0%, rgba(117,137,12,1) 57%);
    background: -o-linear-gradient(left, rgba(164,179,87,1) 0%, rgba(117,137,12,1) 57%);
    background: -ms-linear-gradient(left, rgba(164,179,87,1) 0%, rgba(117,137,12,1) 57%);
    background: linear-gradient(to right, rgba(164,179,87,1) 0%, rgba(117,137,12,1) 57%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a4b357', endColorstr='#75890c', GradientType=1 );
}

.btnStyle:hover {
    background: rgba(117,137,12,1);
    background: -moz-linear-gradient(left, rgba(117,137,12,1) 43%, rgba(164,179,87,1) 100%);
    background: -webkit-gradient(left top, right top, color-stop(43%, rgba(117,137,12,1)), color-stop(100%, rgba(164,179,87,1)));
    background: -webkit-linear-gradient(left, rgba(117,137,12,1) 43%, rgba(164,179,87,1) 100%);
    background: -o-linear-gradient(left, rgba(117,137,12,1) 43%, rgba(164,179,87,1) 100%);
    background: -ms-linear-gradient(left, rgba(117,137,12,1) 43%, rgba(164,179,87,1) 100%);
    background: linear-gradient(to right, rgba(117,137,12,1) 43%, rgba(164,179,87,1) 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#75890c', endColorstr='#a4b357', GradientType=1 );
}

.btnStyleSecond {
    cursor:pointer;
    width: auto;
    padding:2px 15px;
    margin: 10px;    
    border: 1px solid #aaa;
    color: #333;   /* e74c3c e9e9e9  */
    outline: none;
    font-weight:300;
    font-size:13px;
    background: #99e0a5;height:25px;
    
}

.radioButtonsContainer ,.radioButtonsContainer ul{
    width:100%;
    float:left;
    font-size:14px;
}
.radioButtonsContainer ul li{
    width:auto;
    float:left;
    margin-right:1px;
    margin-bottom:0px !important;
}

input[type=radio], input[type=checkbox] {
    min-width:12px;
}
/* main.min.css contient une règle mal ciblée ".day-event,input[type=checkbox]{display:none}"
   (fuite d'un composant calendrier) qui masque TOUTES les cases à cocher du site. On la corrige ici. */
input[type=checkbox] {
    display:inline-block !important;
}
.marginL1 {
    margin-left: 10px;
}
.marginL2 {
    margin-left: 20px;
}
.marginL3 {
    margin-left: 30px;
}
.marginL4 {
    margin-left: 40px;
}
.marginB1 {
    margin-bottom: 10px;
}
.marginB2 {
    margin-bottom: 20px;
}
.marginB3 {
    margin-bottom: 30px;
}
.marginB4 {
    margin-bottom: 40px;
}
.marginT1 {
    margin-top: 10px;
}
.marginT2 {
    margin-top: 20px;
}
.marginT3 {
    margin-top: 30px;
}
.marginT4 {
    margin-top: 40px;
}


.widthF1 {
    width: 100px  !important;
}
.widthF2 {
    width: 200px  !important;
}
.widthF3 {
    width: 300px  !important;
}
.widthF4 {
    width: 400px  !important;
}
.widthF5 {
    width: 500px  !important;
}

.formHeading {
    font-size:17px;
    font-weight:400;
    color:#666;
    text-decoration:underline;
}
.infoMessage {
    display:block;
    color:#555;
    font-size:12.5px;
    margin:6px 0 14px;
    clear:both;
}

/* ===== Style "body.gcPage" (ex-HeaderGC.cshtml) : déplacé ici pour s'appliquer sur TOUTE page
   avec <body class="gcPage">, y compris quand elle est affichée depuis un autre module (ex.
   Feuilles de Temps délègue Clients/Dossiers/Types dossiers à Gestion commerciale et charge son
   propre header, HeaderFT.cshtml, pas HeaderGC.cshtml). Tant que ce bloc vivait uniquement dans
   HeaderGC.cshtml, ces pages déléguées perdaient tout ce style -- notamment .btn qui retombait
   sur la seule règle générique du thème (color:#fff, sans fond ni padding), rendant les boutons
   "+ Nouveau..."/"Rechercher"/"Imprimer" invisibles (texte blanc sur fond blanc) bien que présents
   dans le DOM. */
body.gcPage #site-header,
body.ftPage #site-header {
    display: flex !important;
    align-items: center !important;
    height: auto !important;
    min-height: 70px;
}
body.gcPage #site-header .header-content-wrapper,
body.ftPage #site-header .header-content-wrapper {
    height: auto !important;
}
body.gcPage .header-spacer,
body.ftPage .header-spacer,
body.bkPage .header-spacer,
body.dmsPage .header-spacer,
body.lfPage .header-spacer,
body.pmsPage .header-spacer,
body.crmPage .header-spacer {
    /* Valeur de repli avant l'exécution du JS (voir alignerCadreGC/alignerCadreBK/alignerCadreFT/
       alignerCadreDMS/alignerCadreLF dans Header{Module}.cshtml) qui fixe la hauteur réelle dynamiquement :
       le header fait 1 ou 2 lignes de sous-onglets selon l'écran, 150px fixe laissait un vide important sur
       les pages à sous-onglets sur une seule ligne. */
    height: 85px !important;
}
/* BK/FT/DMS/LF (body.bkPage/ftPage/dmsPage/lfPage) : géométrie du header identique à Paie (padding-left:6%
   + largeur:73% pour les onglets, 21% pour les icônes -- voir Header{Module}.cshtml), contrairement à GC
   (84%/10%). Donc la valeur de repli GC (82.394%/11.118%/6.488%, mesurée pour SA géométrie à elle) serait
   fausse ici : on réutilise la même formule --pr-vw que .pr-page-wrap (Paie), déjà calibrée pour cette
   géométrie 6%/73%/21%, comme repli avant qu'alignerCadreBK/FT/DMS/LF (Header{Module}.cshtml) ne fixe la
   position exacte en px. FT utilisait jusqu'ici À TORT la formule GC (84%) alors que son propre header est
   en 73% comme BK -- dérive détectée le 25 oct. 2026 en auditant FT/DMS/LF pour appliquer la charte Paie ;
   DMS et LF n'avaient eux AUCUNE règle d'alignement de `.container` (LF n'avait même aucune classe body du
   tout avant ce fix). */
body.bkPage .container,
body.ftPage .container,
body.dmsPage .container,
body.lfPage .container,
body.pmsPage .container {
    max-width:none !important;
    width:calc(var(--pr-vw) * 0.67 - 43.703125px) !important;
    margin-left:calc(var(--pr-vw) * 0.06 + 73.390625px) !important;
    margin-right:0 !important;
    padding-left:15px !important;
    padding-right:15px !important;
    box-sizing: border-box !important;
}
/* PMS (natif -- Projects.cshtml -- et FT délégué -- Tasks/AbsenceTypes/Holidays/EmployeeGroups/Employees.cshtml,
   voir PMSController.AsPMSPage) : surcharge le padding:15px du bloc bkPage/ftPage/dmsPage/lfPage/pmsPage
   ci-dessus à 0 pour PMS spécifiquement. Même spécificité (0,2,1) que "body.pmsPage .container" dans le
   groupe ci-dessus, donc gagne par ordre de cascade (règle définie après) sans toucher bk/ft/dms/lf seuls.
   Contrairement à BK/DMS/LF, les tableaux PMS (.formTables) sont imbriqués normalement dans .col-xl-12 (pas
   posés directement dessus comme #formBlock/.listMainBlockStyle), donc le gouttière standard Bootstrap
   .row(-15px)/.col(+15px) s'annule déjà toute seule : un padding de 15px ici ajoute un décalage supplémentaire
   qui empêche le bandeau bleu du tableau et les boutons/logo d'atteindre les extrémités du bandeau d'onglets
   -- signalé par l'utilisateur le 25 oct. 2026 sur Projets/Tâches/Types d'absences/Fériés/Groupe de salariés. */
body.pmsPage .container {
    padding-left:0 !important;
    padding-right:0 !important;
}
/* CRM embed (body porte À LA FOIS gcPage ET crmPage, voir Views/GC/Prospects.cshtml/Views/User/Staffs.cshtml
   avec ?embed=CRM) : sélecteur à 2 classes donc plus spécifique que "body.gcPage .container" seul ci-dessous
   (gagne quel que soit l'ordre dans la cascade), réutilise la géométrie CRM/Paie 6%/73%/21%. Ne modifie PAS
   le fallback gcPage simple (body.gcPage seul, sans crmPage, reste à 82.394%/11.118% comme avant). */
body.gcPage.crmPage .container {
    max-width:none !important;
    width:calc(var(--pr-vw) * 0.67 - 43.703125px) !important;
    margin-left:calc(var(--pr-vw) * 0.06 + 73.390625px) !important;
    margin-right:0 !important;
    padding-left:15px !important;
    padding-right:15px !important;
    box-sizing: border-box !important;
}
/* Embed Immobilisations (GC Origines/Fournisseurs/Création de comptes, BK Comptes/Exercices rendus
   sous HeaderIMMO.cshtml, voir IMController.AsIMPage) : même geste que gcPage.crmPage ci-dessus --
   body porte la classe native du module source (gcPage, ou aucune pour BK) + "immoPage" ajoutée
   conditionnellement dans la vue (ViewBag.modulecategory == MODULE_TYPE_IMMOBILISATIONS). HeaderIMMO
   utilise la géométrie 6%/73%/21% (calquée sur Paie), donc même formule --pr-vw, pas celle de GC
   (84%/10%) ni le fallback nu de BK (qui n'a aucune règle de cadre hors ce cas). */
body.immoPage .container,
body.gcPage.immoPage .container {
    max-width:none !important;
    width:calc(var(--pr-vw) * 0.67 - 43.703125px) !important;
    margin-left:calc(var(--pr-vw) * 0.06 + 73.390625px) !important;
    margin-right:0 !important;
    padding-left:15px !important;
    padding-right:15px !important;
    box-sizing: border-box !important;
}
/* PMS > Paramétrages > Clients/Dossiers/Types de dossiers (délégués à GCController, voir
   PMSController.AsPMSPage) : même geste que gcPage.immoPage ci-dessus -- body garde "gcPage" (vue GC
   native, Customers/CustomerFiles/FileTypes.cshtml) + "pmsPage" ajoutée conditionnellement sur
   ViewBag.modulecategory == MODULE_TYPE_PMS. HeaderPMS utilise la géométrie 6%/73%/21% (comme Paie/BK/
   FT/LF), pas celle de GC (84%/10%) -- sans cette règle, le cadre .container restait calé sur la
   géométrie GC alors que le bandeau d'onglets affiché est celui de PMS, d'où le léger débordement
   gauche/droite signalé par l'utilisateur. Padding à 0 (pas 15px comme bkPage/ftPage/dmsPage/lfPage
   ci-dessus) : ces 3 vues GC posent #formBlock/.listMainBlockStyle DIRECTEMENT sur le .col-xl-* (voir
   commentaire "Cadre type carte" plus bas), donc .row(-15px)/.col(+15px) s'annulent déjà -- un padding
   ici (comme découvert le 25 oct. 2026 en testant live le cadre resté décalé de 15px des 2 côtés malgré
   cette règle) ajoute 15px de plus et décale le cadre visible vers l'intérieur, exactement comme pour
   .gcPage seul (cf. commentaire sur body.gcPage .container plus bas). */
body.gcPage.pmsPage .container {
    max-width:none !important;
    width:calc(var(--pr-vw) * 0.67 - 43.703125px) !important;
    margin-left:calc(var(--pr-vw) * 0.06 + 73.390625px) !important;
    margin-right:0 !important;
    padding-left:0 !important;
    padding-right:0 !important;
    box-sizing: border-box !important;
}
body.gcPage .container {
    /* Valeurs de repli ; alignerCadreGC (HeaderGC.cshtml) fixe margin-left/width en px exacts au
       chargement/redimensionnement pour un alignement pixel-parfait sur les 2 extrémités des onglets.
       26 oct. 2026 : HeaderGC passe de 84%/10% à la géométrie commune 6%/73%/21% (les icônes de notification
       chevauchaient le dernier sous-onglet) -- repli recalé sur la formule --pr-vw de Paie, décalée comme
       alignerCadreGC (cadre rentré de 15px de chaque côté, la carte étant la colonne elle-même). */
    width: calc(var(--pr-vw) * 0.67 - 43.703125px - 60px) !important;
    max-width: unset !important;
    margin-left: calc(var(--pr-vw) * 0.06 + 73.390625px + 30px) !important;
    margin-right: 0 !important;
    /* Pas de padding ici : .row (margin -15px) + .col (padding 15px) s'annulent déjà entre eux
       (gouttière Bootstrap standard) pour que le contenu visible retombe pile sur le bord du cadre.
       Ajouter un padding ici décale le contenu visible de 15px de plus vers l'intérieur. */
    padding-left: 0 !important;
    padding-right: 0 !important;
    box-sizing: border-box !important;
}
/* Cadre type "carte" (même esprit que .pr-card en Paie) appliqué directement aux conteneurs
   #formBlock / .listMainBlockStyle déjà présents dans 22 écrans GC (Clients, Fournisseurs, Codes
   analytiques, Types de dossiers...), sans toucher aux vues : bordure, ombre, padding identiques.
   Padding horizontal fixé à 15px (= gouttière Bootstrap standard .col) et non 28px : ces classes sont
   posées DIRECTEMENT sur le .col-xl-* (pas sur un div interne comme .pr-card en Paie), donc leur
   padding remplace celui du .col au lieu de s'y ajouter. Avec 28px le remplacement casse l'annulation
   .row(-15px)/.col(+15px) et décale la carte visible vers l'intérieur par rapport à l'extrémité réelle
   du bandeau d'onglets (cadre aligné par alignerCadreGC dans HeaderGC.cshtml) ; avec 15px la carte
   reste flush avec cette extrémité, comme .pr-card en Paie. Même anti-pattern repéré dans 39 écrans BK
   (.listMainBlockStyle posée directement sur .col-xl-6, ex. SettingsAccounts.cshtml) ; même anti-pattern
   repéré dans 9 écrans DMS (Documents, SettingsDepartments, ProcessDocuments...) le 25 oct. 2026 en
   appliquant la charte Paie à DMS/LF -- scope étendu ici. DMS n'avait AUCUNE règle de carte du tout avant ce
   fix (listMainBlockStyle rendu sans bordure/ombre, directement sur un .col-xl-* non stylé). */
body.gcPage #formBlock,
body.gcPage .listMainBlockStyle,
body.bkPage #formBlock,
body.bkPage .listMainBlockStyle,
body.dmsPage #formBlock,
body.dmsPage .listMainBlockStyle,
body.lfPage #formBlock,
body.lfPage .listMainBlockStyle,
body.pmsPage #formBlock,
body.pmsPage .listMainBlockStyle,
body.crmPage #formBlock,
body.crmPage .listMainBlockStyle,
body.crmPage #listBlock {
    background:#fff;
    border:1px solid #e3e6d4;
    border-radius:6px;
    padding:24px 15px;
    box-shadow:0 1px 3px rgba(0,0,0,0.06);
    box-sizing:border-box;
    margin-bottom:24px;
}
/* Filet de sécurité anti-débordement (BK uniquement, demande du 26 oct. 2026 "la page de travail doit se
   limiter aux extrémités des onglets") : .container/#formBlock/.listMainBlockStyle ont désormais une largeur
   fixe en px calculée par alignerCadreBK() (voir HeaderBK.cshtml) pour coller exactement au bandeau d'onglets
   .bkMainTabs -- mais un contenu interne plus large que prévu (ex. un tableau à beaucoup de colonnes, ou des
   valeurs plus longues qu'en démo) n'a aucun échappatoire et déborderait visuellement hors du cadre, sans
   aucune règle overflow-x sur ces conteneurs. overflow-x:auto transforme un débordement en ascenseur
   horizontal localisé À L'INTÉRIEUR de la carte plutôt qu'un débordement visuel du cadre entier. Testé par
   balayage automatisé (getBoundingClientRect) des 37 pages BK pleine-page avec les données de démo actuelles :
   aucun débordement détecté à 1400px/1050px -- ce filet reste préventif (données réelles potentiellement plus
   larges), pas un fix d'un cas reproduit. */
body.bkPage #formBlock,
body.bkPage .listMainBlockStyle {
    overflow-x:auto;
}
/* Même filet pour Liasse fiscale (26 oct. 2026) : cadre aligné en px par alignerCadreLF (HeaderLF.cshtml),
   y compris sur les écrans BK délégués (#formBlock/.listMainBlockStyle) et les blocs .lfWrap natifs (ex. le
   tableau des champs de Form.cshtml, colonne Valeur = input + bouton OK, qui peut dépasser la largeur prévue). */
body.lfPage #formBlock,
body.lfPage .listMainBlockStyle,
body.lfPage .lfWrap {
    overflow-x:auto;
}
/* Clearfix manquant (même bug déjà corrigé pour .pr-card en Paie, cf. commentaire .pr-card::after plus bas) :
   le contenu de ces cartes (formWholeDiv/li.col4/li.col6 etc.) est flotté. Sans clearfix, la carte s'effondre
   visuellement sur le dernier élément NON flotté, et tout bloc flotté suivant (ex. la ligne de boutons
   Réinitialiser/Sauvegarder, un `<div class="formWholeDiv">` frère placé APRÈS le formulaire dans
   SettingsDepartmentsCreate.cshtml/SettingsDocumentTypesCreate.cshtml/SettingsUserCreate.cshtml) rend hors du
   cadre blanc au lieu d'être inclus dedans. Repéré le 25 oct. 2026 sur DMS > Paramétrages > Départements. */
body.gcPage #formBlock::after,
body.gcPage .listMainBlockStyle::after,
body.bkPage #formBlock::after,
body.bkPage .listMainBlockStyle::after,
body.dmsPage #formBlock::after,
body.dmsPage .listMainBlockStyle::after,
body.lfPage #formBlock::after,
body.lfPage .listMainBlockStyle::after,
body.pmsPage #formBlock::after,
body.pmsPage .listMainBlockStyle::after,
body.crmPage #formBlock::after,
body.crmPage .listMainBlockStyle::after {
    content:"";
    display:table;
    clear:both;
}
/* Page Utilisateurs embarquée dans le CRM (Views/User/Staffs.cshtml?embed=CRM) : body n'a AUCUNE classe
   nativement (page générique hors modules), donc aucune règle d'alignement .container ne s'appliquait —
   contenu collé à gauche, débordant hors du cadre sous l'en-tête CRM (73%/21%, voir body.bkPage .container
   plus haut, même formule réutilisée ici — pas de conflit avec gcPage puisque cette page ne porte pas
   cette classe). */
body.crmPage .container {
    max-width:none !important;
    width:calc(var(--pr-vw) * 0.67 - 43.703125px) !important;
    margin-left:calc(var(--pr-vw) * 0.06 + 73.390625px) !important;
    margin-right:0 !important;
    padding-left:15px !important;
    padding-right:15px !important;
    box-sizing: border-box !important;
}
/* Paire formulaire/liste (#formBlock + .listMainBlockStyle) : sur Paie, le modèle est une carte
   pleine largeur au-dessus de l'autre (empilées), pas deux colonnes côte à côte. On force donc les
   colonnes Bootstrap col-xl-5/col-xl-7 utilisées par ce pattern sur 24 écrans GC à passer en pleine
   largeur (.row est en display:flex, donc l'empilement se fait automatiquement par le flex-wrap). */
body.gcPage .col-xl-5,
body.gcPage .col-xl-7 {
    flex: 0 0 100% !important;
    max-width: 100% !important;
}
body.gcPage input[name="keyword"],
body.ftPage input[name="keyword"] {
    width: 280px !important;
    max-width: 280px;
}
/* Barre d'outils "Rechercher / + Nouveau.. / Imprimer" (22 écrans GC, ex. Articles.cshtml, Customers.cshtml) :
   le champ+bouton Rechercher sont rendus par Ajax.BeginForm, qui produit un <form> en display:block par défaut.
   Les boutons suivants (+ Nouveau.., Imprimer) sont des frères du <form> dans le même conteneur, donc ce
   display:block force un retour à la ligne entre "Rechercher" et "+ Nouveau.." (ils s'empilent au lieu de
   rester sur la même ligne, d'où l'effet "boutons collés" signalé). display:inline-block seul ne suffit pas :
   le <form> n'a pas de largeur explicite, donc son "shrink-to-fit" peut retomber sur la largeur de son seul
   enfant visible (l'input, épinglé à 280px par la règle au-dessus) et faire passer le bouton "Rechercher" à la
   ligne suivante À L'INTÉRIEUR du form. display:contents supprime la boîte du <form> de l'arbre de rendu : son
   contenu (input + bouton submit) se comporte comme s'il était directement un enfant du conteneur parent, sur
   la même ligne que "+ Nouveau.."/"Imprimer", sans aucun effet de largeur du <form> lui-même. Ciblé via
   :has(input[name=keyword]) pour ne viser QUE ce formulaire de filtre, pas les formulaires de saisie complets
   (création/édition) qui, eux, doivent rester en display:block normal. */
body.gcPage form:has(input[name="keyword"]) {
    display: contents;
}
body.gcPage .formTablesLinearHead,
body.ftPage .formTablesLinearHead,
body.bkPage .formTablesLinearHead,
body.dmsPage .formTablesLinearHead,
body.lfPage .formTablesLinearHead,
body.pmsPage .formTablesLinearHead { background:#2C3E6B !important; border-radius:4px 4px 0 0; padding:10px 0.5%; }
body.gcPage .formTablesLinearHead li,
body.ftPage .formTablesLinearHead li,
body.bkPage .formTablesLinearHead li,
body.dmsPage .formTablesLinearHead li,
body.lfPage .formTablesLinearHead li,
body.pmsPage .formTablesLinearHead li { color:#fff; }
body.gcPage .formTables ul.formTablesLinearValues,
body.ftPage .formTables ul.formTablesLinearValues,
body.pmsPage .formTables ul.formTablesLinearValues,
body.ndfPage .formTables ul.formTablesLinearValues,
body.dmsPage .formTables ul.formTablesLinearValues,
body.lfPage .formTables ul.formTablesLinearValues,
body.bkPage .formTables ul.formTablesLinearValues { background:#fff; border:1px solid #E3E6D4; border-radius:0; margin-bottom:0; }
body.gcPage .formTables ul.formTablesLinearValues:nth-child(odd),
body.ftPage .formTables ul.formTablesLinearValues:nth-child(odd),
body.pmsPage .formTables ul.formTablesLinearValues:nth-child(odd),
body.ndfPage .formTables ul.formTablesLinearValues:nth-child(odd),
body.dmsPage .formTables ul.formTablesLinearValues:nth-child(odd),
body.lfPage .formTables ul.formTablesLinearValues:nth-child(odd),
body.bkPage .formTables ul.formTablesLinearValues:nth-child(odd) { background:#EEF0DE; }
body.gcPage .btn,
body.ftPage .btn,
body.pmsPage .btn,
body.ndfPage .btn,
body.dmsPage .btn,
body.lfPage .btn,
body.bkPage .btn,
body.crmPage .btn,
body.sdPage .btn {
    -webkit-appearance:none !important; -moz-appearance:none !important; appearance:none !important;
    background:#DCE2C2; color:#2C3E6B; border:1px solid #AEB885; border-radius:18px;
    font-weight:bold; padding:8px 22px; display:inline-block !important; width:auto !important; height:auto !important;
    box-sizing:border-box; line-height:1.2; vertical-align:middle; font-size:13px; text-align:center; margin:0;
}
body.gcPage .btn:hover,
body.ftPage .btn:hover,
body.pmsPage .btn:hover,
body.ndfPage .btn:hover,
body.dmsPage .btn:hover,
body.lfPage .btn:hover,
body.bkPage .btn:hover,
body.crmPage .btn:hover,
body.sdPage .btn:hover { background:#CBD3A5; }
body.gcPage .btnPrimary,
body.ftPage .btnPrimary,
body.pmsPage .btnPrimary,
body.ndfPage .btnPrimary,
body.dmsPage .btnPrimary,
body.lfPage .btnPrimary,
body.bkPage .btnPrimary,
body.crmPage .btnPrimary,
body.sdPage .btnPrimary { background:#3E6B2F; color:#fff; border:1px solid #2C4A1F; margin-left:0 !important; }
body.gcPage .btnPrimary:hover,
body.ftPage .btnPrimary:hover,
body.pmsPage .btnPrimary:hover,
body.ndfPage .btnPrimary:hover,
body.dmsPage .btnPrimary:hover,
body.lfPage .btnPrimary:hover,
body.bkPage .btnPrimary:hover,
body.crmPage .btnPrimary:hover,
body.sdPage .btnPrimary:hover { background:#345C28; }
body.ndfPage form label { text-transform:none; }
body.dmsPage form label { text-transform:none; }
body.gcPage .btnStyle,
body.ftPage .btnStyle,
body.dmsPage .btnStyle,
body.lfPage .btnStyle,
body.pmsPage .btnStyle,
body.bkPage .btnStyle,
body.pciPage .btnStyle,
body.ilPage .btnStyle {
    -webkit-appearance:none !important; -moz-appearance:none !important; appearance:none !important;
    background:#DCE2C2; color:#2C3E6B; border:1px solid #AEB885; border-radius:18px;
    font-weight:bold; padding:8px 22px; display:inline-block !important; width:auto !important; height:auto !important;
    text-decoration:none; cursor:pointer;
    box-sizing:border-box; line-height:1.2; vertical-align:middle; font-size:13px; text-align:center; margin:0;
}
body.gcPage .btnStyle:hover,
body.ftPage .btnStyle:hover,
body.dmsPage .btnStyle:hover,
body.lfPage .btnStyle:hover,
body.pmsPage .btnStyle:hover,
body.bkPage .btnStyle:hover,
body.pciPage .btnStyle:hover,
body.ilPage .btnStyle:hover { background:#CBD3A5; }
body.gcPage .btnStyleSecond,
body.ftPage .btnStyleSecond,
body.dmsPage .btnStyleSecond,
body.lfPage .btnStyleSecond,
body.pmsPage .btnStyleSecond,
body.bkPage .btnStyleSecond,
body.pciPage .btnStyleSecond,
body.ilPage .btnStyleSecond {
    -webkit-appearance:none !important; -moz-appearance:none !important; appearance:none !important;
    background:#3E6B2F; color:#fff !important; border:1px solid #2C4A1F; border-radius:18px;
    font-weight:bold; padding:8px 22px; display:inline-block !important; width:auto !important; height:auto !important;
    text-decoration:none; cursor:pointer;
    box-sizing:border-box; line-height:1.2; vertical-align:middle; font-size:13px; text-align:center; margin:0;
}
body.gcPage .btnStyleSecond:hover,
body.ftPage .btnStyleSecond:hover,
body.pmsPage .btnStyleSecond:hover,
body.bkPage .btnStyleSecond:hover,
body.lfPage .btnStyleSecond:hover,
body.pciPage .btnStyleSecond:hover,
body.ilPage .btnStyleSecond:hover { background:#345C28; }
/* Ivolife (body.ilPage, 27 oct. 2026) : pages bâties sur le gabarit Paie (.pr-card/.pr-table), charte appliquée
   par les règles ci-dessus (boutons pilules) plus ces ajustements propres au module :
   - .ilBtnSmall : bouton "Ouvrir" des lignes de liste, pilule compacte pour ne pas élargir la colonne d'actions ;
   - .ilDeleteBtn : poubelle rouge (charte, #dd0021) à la place du bouton texte "Supprimer". FontAwesome remplace
     le <i> par un <svg> (fill="currentColor", voir body.dmsPage .listDeleteLink1) : couleur posée sur le bouton ;
   - barre d'actions posée AU-DESSUS d'une carte (ex. "+ Nouveau contrat") : sans le filet ni la marge haute de
     .pr-form-actions, prévus pour le bas des formulaires (filet orphelin sous le fil d'Ariane, constaté le 27 oct.) ;
   - champs : hauteur commune aux <input> et <select> d'une même grille (22px contre 36px mesurés). */
body.ilPage .btnStyle.ilBtnSmall { padding:4px 14px; font-size:12px; }
body.ilPage .ilDeleteBtn {
    background:none; border:0; padding:4px 8px; margin:0 0 0 6px; cursor:pointer; vertical-align:middle;
    color:#dd0021 !important; font-size:14px; line-height:1;
}
body.ilPage .ilDeleteBtn svg, body.ilPage .ilDeleteBtn i { color:#dd0021 !important; }
body.ilPage .ilDeleteBtn:hover { color:#a8001a !important; }
body.ilPage #formBlock > .pr-form-actions:first-child { border-top:0; margin-top:0; padding-top:0; margin-bottom:16px; }
body.ilPage .pr-field input:not([type=checkbox]):not([type=radio]),
body.ilPage .pr-field select { height:38px; }
/* Montants calculés côté serveur (prélevé sur PM, HT/TTC des primes, société du contrat...) : lecture seule, fond
   teinté pour ne pas être pris pour des champs à saisir. */
body.ilPage .pr-field input[readonly] { background:#f4f6f0; color:#555; cursor:default; }
/* Listes Ivolife à ~1050px : 8 à 10 colonnes + actions dépassaient la carte de 80px, "Ouvrir" et la poubelle ne
   se voyaient plus qu'en faisant défiler la carte. Cellules resserrées sous 1200px, actions jamais coupées. */
body.ilPage .pr-table td.pr-actions { white-space:nowrap; }
/* Statut d'encaissement partiel (prime partiellement réglée, prestation partiellement payée) : entre pr-badge-no
   (émise / à payer) et pr-badge-yes (soldée / payée). */
body.ilPage .ilBadgePartiel { background:#fff3cd; color:#856404; }
@media (max-width:1200px) {
    body.ilPage .pr-table th, body.ilPage .pr-table td { padding:8px 6px; font-size:12px; }
    body.ilPage .pr-table th { letter-spacing:0; }
    body.ilPage .btnStyle.ilBtnSmall { padding:3px 10px; }
}
/* Boutons d'action superposés (26 oct. 2026, capture utilisateur) : "Brouillard"/"Validate"/"Delete" sur
   Entries, "Valider le rapprochement"/"Annuler le rapprochement" sur ProcessBankReconcile. Cause : <li
   class="col2"> (grille générique, 20% fixe, voir .col2 plus haut) n'a jamais été prévu pour un bouton à
   texte variable -- un libellé plus long que ~95-100px (la largeur réelle de 20% dans ces cartes BK, ~500px
   de large) déborde du <li> (width:auto sur .btnStyleSecond) et chevauche visuellement le bouton suivant.
   width:auto sur le <li> lui-même (+ float/margin pour les garder en ligne) remplace la grille rigide par
   une largeur qui suit le bouton, sans toucher .col2 ailleurs dans l'appli (form grids légitimes).
   Étendu à lfPage (26 oct. 2026) : LF réutilise ces mêmes vues BK (LFController.AsLFPage) sous body.lfPage,
   où "Brouillard" chevauchait encore "Valider". */
body.bkPage .entryActivitiesBlock li.col2,
body.bkPage .bankReconcileActionBlock li.col2,
body.lfPage .entryActivitiesBlock li.col2,
body.lfPage .bankReconcileActionBlock li.col2 {
    width:auto !important;
    float:left;
    margin-right:10px;
}
/* "Réinitialiser"/"Sauvegarder" (EntryCreate.cshtml .formButtonsBlock) : .btnStyle a margin:0 !important
   (ci-dessus) -- correct quand les 2 boutons tiennent sur une ligne, mais leur <li class="col6"> (60% d'une
   colonne déjà étroite) est parfois trop court pour les deux boutons "width:auto" côte à côte : ils passent
   alors à la ligne SANS AUCUN espace vertical entre eux (margin:0), ce qui les fait visuellement se toucher/
   chevaucher (capture utilisateur 26 oct. 2026). Marge scopée à ce bloc précis, ne touche pas .btnStyle
   ailleurs (où le margin:0 reste voulu pour l'alignement serré des autres barres de boutons). */
/* Révisé le 26 oct. 2026 (harmonisation BK/LF) : la marge 8px à droite du DERNIER bouton suffisait à faire
   passer "Sauvegarder" à la ligne en BK alors que les 2 boutons tenaient côte à côte (LF, sans cette règle,
   les affichait côte à côte). Un gap flex n'espace que l'ENTRE-boutons : côte à côte dès que la place le
   permet, et un espacement vertical propre quand ils passent à la ligne. Appliqué aussi à lfPage (vues BK
   réutilisées par LFController.AsLFPage). */
body.bkPage .formButtonsBlock,
body.lfPage .formButtonsBlock {
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:8px 4px;
}
body.bkPage .formButtonsBlock .btnStyle,
body.lfPage .formButtonsBlock .btnStyle {
    margin:0 !important;
}
/* 11 écrans BK (SettingsAccountsCreate, EntryCreate, SettingsTaxCreate...) utilisent un input submit CACHÉ
   (class="btnStyle btnSubmit", style="display:none;" en ligne) comme déclencheur réel de soumission -- un
   vrai bouton visible et stylé ("Sauvegarder" etc., class="btnSave btnStyle") le déclenche en JS
   (ex. SaveAccount() -> $('.btnSubmit').click()). Le style="display:none" EN LIGNE n'a pas !important, donc
   il perd face à "body.bkPage .btnStyle { display:inline-block !important }" ci-dessus : ce bouton caché
   redevient visible et affiche le texte générique "Submit". On réaffirme display:none en !important,
   spécifiquement sur ces 2 classes qui ne servent QUE de déclencheur caché nulle part ailleurs (vérifié). */
body.bkPage .btnSubmit,
body.bkPage .btnActivitySubmit {
    display: none !important;
}
/* Même bug, 2e occurrence (DMS cette fois) : 10 déclencheurs cachés .btnSubmit répartis sur
   DocumentCreate/OptionsDMSConfigCreate/OptionsDMSPermissionsCreate(x3)/SettingsDocumentTypesCreate/
   SettingsDepartmentsCreate/SettingsUserCreate, tous vérifiés "trigger-only" ($('.btnSubmit').trigger('click')
   ou équivalent, aucun bouton visible réel). "Submit"/"Envoyer" redevenaient visibles depuis l'ajout de
   "body.dmsPage .btnStyle { display:inline-block !important }" lors de la charte Paie->DMS. Si un futur module
   (FT/LF/autre) reçoit le même traitement de charte visuelle, vérifier systématiquement .btnSubmit/.btnActivitySubmit
   AVANT de livrer -- ne pas attendre que l'utilisateur le signale une 3e fois. */
body.dmsPage .btnSubmit,
body.dmsPage .btnActivitySubmit {
    display: none !important;
}
/* Poubelle rouge sur tous les icônes de suppression DMS (demande explicite "la poubelle de suppression doit
   être rouge, celle à côté de modifier aussi"). Tentative initiale en pseudo-élément CSS (::before avec
   content:"\f1f8") abandonnée : rendu comme un carré/glyphe manquant en test réel (police probablement en
   conflit entre fonts.min.css et fontawesome-all.js, non résolu dans le temps imparti) -- remplacé par de
   vraies balises <i class="fas fa-trash"> directement dans chaque vue (même technique que Files.cshtml,
   déjà confirmée fonctionnelle). Cette règle ne fait plus que neutraliser l'icône grise partagée trash.png
   derrière la nouvelle balise <i>. */
body.dmsPage .listDeleteLink1,
body.pmsPage .listDeleteLink1 {
    background-image: none !important;
    width: auto !important;
    height: auto !important;
}
/* FontAwesome est chargé en mode SVG+JS (fontawesome-all.js, voir CommonScripts.cshtml) : au rendu, il
   REMPLACE la balise <i class="fas fa-trash"> par un <svg>, qui n'existe pas encore au chargement de la
   page -- "body.dmsPage .listDeleteLink1 i" ne matche donc plus rien une fois FontAwesome exécuté, d'où
   l'icône restée noire malgré le !important précédent (découvert le 25 oct. 2026, signalé 2x par
   l'utilisateur). Le <svg> généré utilise fill="currentColor" sur son <path>, donc la couleur doit être
   posée sur le conteneur (héritage CSS normal) ET sur le <svg> lui-même par sécurité. */
body.dmsPage .listDeleteLink1,
body.pmsPage .listDeleteLink1 {
    color: #dd0021 !important;
}
body.dmsPage .listDeleteLink1 i,
body.dmsPage .listDeleteLink1 svg,
body.pmsPage .listDeleteLink1 i,
body.pmsPage .listDeleteLink1 svg {
    color: #dd0021 !important;
    font-size: 13px;
}
/* Réinitialiser/Sauvegarder rendus empilés verticalement au lieu de côte à côte, signalé sur les 4 écrans
   partageant ce patron exact (li.col6.marginT1|marginT2, combo spécifique à cette rangée de boutons --
   vérifié via grep, ne touche aucun autre usage de .marginT1/.marginT2 dans DMS) : DocumentCreate,
   SettingsDepartmentsCreate, SettingsDocumentTypesCreate, SettingsUserCreate. Cause exacte non confirmée
   visuellement (pas d'accès navigateur depuis ce fork, cf. rapport), fix défensif en flexbox qui neutralise
   tout float/display hérité sur les <button> enfants (les enfants flex ignorent leur propre float). */
body.dmsPage li.col6.marginT1,
body.dmsPage li.col6.marginT2 {
    display: flex !important;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}
body.gcPage .formBlockInner,
body.ftPage .formBlockInner {
    background:#fff; padding:25px 30px; border-radius:6px;
    box-shadow:0 1px 3px rgba(0,0,0,.08); color:#222;
}
/* Écrans Éditions/Traitements GC (critères, ex. SalesEditionCriteria.cshtml) : l'encadré .formBlockInner est
   imbriqué dans une colonne. Depuis que alignerCadreGC rentre le cadre de 15px (HeaderGC.cshtml), le padding de
   cette colonne le décalait de 15px vers l'intérieur : on l'annule pour l'aligner sur le bord gauche des onglets. */
body.gcPage .gcContentPanel > .row > .col:has(> .formBlockInner) { padding-left:0 !important; padding-right:0 !important; }
/* Colonnes de contenu SANS carte (barre d'outils Rechercher/+ Nouveau/Imprimer, tableau posé à nu comme
   StockOverview.cshtml) : même annulation du padding que ci-dessus, pour qu'elles tombent pile sur les
   extrémités des onglets comme les cartes (signalé le 26 oct. 2026 sur Stocks > Articles et État des stocks :
   barre d'outils et tableau rentrés de 15px). Les cartes (#formBlock/.listMainBlockStyle) gardent leur padding,
   qui est leur rembourrage interne. */
body.gcPage .gcContentPanel > .row > .col:not(#formBlock):not(.listMainBlockStyle) {
    padding-left:0 !important;
    padding-right:0 !important;
}
/* Barre d'outils : en flex, champ de recherche + boutons sur une même ligne alignée à gauche, espacement
   régulier (le margin-left:10px en ligne des boutons est remplacé par le gap). Sans ça, sur Articles, le champ
   (display:block hérité de main.min.css) repoussait "Rechercher" à la ligne. Un tableau dans la même colonne
   (StockOverview) passe sur sa propre ligne pleine largeur, séparé des boutons au lieu d'être collé à l'en-tête bleu. */
body.gcPage .gcContentPanel > .row > .col:has(> .btn, > form > input[name="keyword"]) {
    display:flex !important;
    flex-wrap:wrap;
    align-items:center;
    gap:12px 10px;
}
body.gcPage .gcContentPanel > .row > .col:has(> .btn, > form > input[name="keyword"]) > .btn,
body.gcPage .gcContentPanel > .row > .col > form:has(input[name="keyword"]) > * {
    margin:0 !important;
}
body.gcPage .gcContentPanel > .row > .col:has(> .btn) > .formTables {
    flex:0 0 100%;
    margin-top:4px;
}
/* Carte formulaire vide (#formBlock rempli en Ajax seulement au clic sur "+ Nouveau..." / Modifier) : sans
   contenu, elle s'affichait comme un cadre blanc vide au-dessus de la liste. */
body.gcPage #formBlock:empty { display:none; }
/* Formulaires de critères (Éditions, ex. SalesEditionCriteria.cshtml) : la largeur mini 170px des libellés
   (.formRow label plus bas) sert à aligner le PREMIER champ de chaque ligne en colonne ; appliquée aussi aux
   libellés secondaires ("au"), elle créait 170px de vide et éparpillait les champs (les autres libellés secondaires,
   ex. "Type de dossier", ont été passés sur leur propre ligne dans les vues). Toutes les lignes passent en flex :
   retour à la ligne propre, et plus d'espace blanc parasite (~4px) entre le libellé et un 1er bouton radio, qui
   le sortait de la colonne des champs. Le texte nu "Oui"/"Non" reste collé à son bouton (marge du bouton). */
body.gcPage .formRow {
    display:flex; flex-wrap:wrap; align-items:center; gap:8px 0;
}
/* Colonne des libellés à largeur FIXE (et non minimale) : un libellé long ("Inclure les factures non validées
   (Brouillon)") passe sur 2 lignes au lieu de repousser ses boutons radio hors de la colonne des autres champs. */
body.gcPage .formRow > label:first-child {
    width:170px; white-space:normal; line-height:1.3;
}
body.gcPage .formRow label:not(:first-child) {
    min-width:0 !important;
    margin:0 10px 0 14px !important;
}
body.gcPage .formBlockInner h3,
body.ftPage .formBlockInner h3 { font-size:19px; color:#2C3E6B; margin:0 0 18px; font-weight:700; text-transform:none; }
body.gcPage .formBlockInner h4,
body.ftPage .formBlockInner h4 {
    font-size:13px; color:#2C3E6B; margin:20px 0 10px; font-weight:700;
    text-transform:uppercase; letter-spacing:.3px; border-bottom:1px solid #E3E6D4; padding-bottom:4px;
}
body.gcPage .formRow,
body.ftPage .formRow,
body.lfPage .formRow { margin-bottom:14px; clear:both; overflow:hidden; }
body.gcPage .formRow label,
body.gcPage .formBlockInner label,
body.ftPage .formRow label,
body.ftPage .formBlockInner label,
body.lfPage .formRow label,
body.lfPage .formBlockInner label {
    position:static !important; top:auto !important; display:inline-block; min-width:170px;
    font-size:13px; font-weight:600; color:#333 !important; text-transform:none !important;
    letter-spacing:normal; background:none; padding:0; border-radius:0; margin:0 10px 0 0;
    vertical-align:middle; cursor:default;
}
body.gcPage .formInput,
body.ftPage .formInput,
body.lfPage .formInput {
    padding:7px 10px; border:1px solid #C9CFC0; border-radius:4px; font-size:13px;
    color:#222; background:#fff; vertical-align:middle;
    /* Les <input type=text/number/...> sont déjà plafonnés à 380px par la règle générique
       "form input[type=text]..." (plus haut dans ce fichier), mais pas les <select> : ils héritent
       de la règle globale "select{display:block;width:100%}" du thème (Content/css/main.min.css),
       d'où des champs Client/Dossier/Article qui s'étirent sur toute la largeur de la carte
       (formulaires Devis/Commande/Facture/Avoir/Livraison/Appel d'offres...) au lieu de rester
       compacts comme les champs texte. On plafonne donc .formInput (tous types confondus) au même
       380px pour un rendu uniforme. */
    width:100%; max-width:380px; box-sizing:border-box;
}
/* Quantité (tableau "Lignes de la facture/commande/devis...") : un champ numérique court n'a pas
   besoin de 380px ; plafond plus resserré pour un alignement visuel propre dans la colonne. */
body.gcPage input[type="number"].formInput,
body.ftPage input[type="number"].formInput {
    max-width:140px;
}
/* Feuilles de Temps > Saisie/Consultation (Entries.cshtml/EntriesSearch.cshtml) : le filtre Date et le
   filtre Salarié (class="selectFilter", sans CSS dédiée jusqu'ici) héritent eux aussi de la règle globale
   "input,select{display:block;width:100%;padding:1.1rem}" du thème (main.min.css, même cause que .formInput
   ci-dessus) -- le input[type=date] s'étire en pleine largeur (d'où l'impression de "calendrier très long")
   et le select Salarié retombe sur sa propre ligne au lieu de rester à côté de son label. Les deux onglets
   partagent déjà cette classe .selectFilter, donc un seul correctif couvre les deux. */
body.ftPage .selectFilter,
body.pmsPage .selectFilter {
    display:inline-block !important;
    width:auto !important;
    max-width:260px;
}
body.gcPage .formRow input[type=checkbox],
body.gcPage .formRow input[type=radio],
body.gcPage .formCheckRow input[type=checkbox],
body.ftPage .formRow input[type=checkbox],
body.ftPage .formRow input[type=radio],
body.ftPage .formCheckRow input[type=checkbox],
body.ftPage input[type=checkbox],
body.ftPage input[type=radio],
body.lfPage .formRow input[type=checkbox],
body.lfPage .formRow input[type=radio],
body.lfPage .formCheckRow input[type=checkbox],
body.lfPage input[type=checkbox],
body.lfPage input[type=radio] {
    -webkit-appearance:auto !important; appearance:auto !important;
    opacity:1 !important; position:static !important; z-index:auto !important;
    width:15px !important; height:15px !important; overflow:visible !important;
    pointer-events:auto !important; display:inline-block !important;
    vertical-align:middle; margin:0 6px 0 0;
}
body.gcPage .formCheckRow,
body.ftPage .formCheckRow { margin-bottom:10px; clear:both; overflow:hidden; }
body.gcPage .formCheckRow label,
body.ftPage .formCheckRow label {
    position:static !important; top:auto !important; display:inline !important; min-width:0;
    font-size:13px; font-weight:400; color:#222 !important; text-transform:none !important;
    letter-spacing:normal; background:none; padding:0; margin:0; vertical-align:middle; cursor:pointer;
}
body.gcPage .formActions,
body.ftPage .formActions,
body.lfPage .formActions { margin-top:20px; clear:both; overflow:hidden; }
/* 3e occurrence du bug déjà documenté 2x ci-dessus (BK puis DMS, voir commentaires) : "Saisie sur pièce" de
   LF réutilise Views/BK/EntryCreate.cshtml (déclencheur caché .btnSubmit, "Submit" redevenu visible depuis
   l'ajout de "body.lfPage .btnStyle { display:inline-block !important }"). Même fix. */
body.lfPage .btnSubmit,
body.lfPage .btnActivitySubmit {
    display: none !important;
}
.sitePathStyle {
    padding-right: 12px;
    margin-right: 6px;
    float: left;
    width: auto !important;
    background-image: url('/Content/images/right-arrow.svg');
    background-position: right;
    background-repeat: no-repeat;
    background-size: 8px;
    color:#96b893;
    text-decoration:underline;
    font-size:12px;
}

/* Autocomplete
    ----------------------------------*/
    .ui-autocomplete { position: absolute; cursor: default;top:-10px; }       
    .ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }

    /* workarounds */
    * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */

    /* Menu
    ----------------------------------*/
    .ui-menu {
            list-style:none;
            padding: 5px 0px;
            margin: 0;
            display:block;
            width:227px;
            border-radius:0px;
    }
    .ui-menu .ui-menu {
            margin-top: -3px;
    }
    .ui-menu .ui-menu-item {
            margin:0px 2%;
            padding: 0;
            width: 96%;
    }
    .ui-menu .ui-menu-item a {
            text-decoration:none;
            display:block;
            padding:.2em .4em;
            line-height:1.5;
            zoom:1;
            border-radius:0px;
            
    }
    .ui-menu .ui-menu-item a.ui-state-hover,
    .ui-menu .ui-menu-item a.ui-state-active {
            margin: -1px;
            background:#eee;
            border:0px solid #ddd;
    }

    .ui-menu-item a:hover {
        background:#eee !important;
        /*border:1px solid #ddd;*/
    }

/* DMS -- barre d'outils icone+legende (Ajouter/Supprimer/Copier/Couper/Editer/Archiver/Coller) */
body.dmsPage .btnAddFolder,
body.dmsPage .btnDeleteFolder,
body.dmsPage .btnCopyFolder,
body.dmsPage .btnCutFolder,
body.dmsPage .btnEditFolder,
body.dmsPage .btnArchiveFolder,
body.dmsPage .btnPasteFolder {
    cursor:pointer; border-radius:6px; transition:background-color .12s ease;
}
body.dmsPage .btnAddFolder:hover,
body.dmsPage .btnDeleteFolder:hover,
body.dmsPage .btnCopyFolder:hover,
body.dmsPage .btnCutFolder:hover,
body.dmsPage .btnEditFolder:hover,
body.dmsPage .btnArchiveFolder:hover,
body.dmsPage .btnPasteFolder:hover {
    background-color:#EEF0DE !important;
}
body.dmsPage .btnAddFolder p,
body.dmsPage .btnDeleteFolder p,
body.dmsPage .btnCopyFolder p,
body.dmsPage .btnCutFolder p,
body.dmsPage .btnEditFolder p,
body.dmsPage .btnArchiveFolder p,
body.dmsPage .btnPasteFolder p {
    font-family:Roboto, sans-serif; letter-spacing:.2px;
}


/* Paie (module PR) - gabarit de page commun
    ----------------------------------*/
.pr-page-wrap { max-width:1200px; margin:0 auto; }
/* --pr-vw : largeur de viewport SANS la scrollbar (document.documentElement.clientWidth, cf. script dans
   CommonScripts.cshtml), au lieu de l'unite CSS vw qui INCLUT la scrollbar. Les onglets du bandeau Paie
   (HeaderPR.cshtml, largeurs en %) sont positionnes relativement au corps de page (qui EXCLUT deja la
   scrollbar), donc toute formule basee sur vw derive du bandeau d'exactement la largeur de la scrollbar
   (~15-17px) sur les pages qui n'ont pas besoin d'ascenseur vertical (ex. Absences > Consultation Absence
   avec peu de lignes) - meme si elle etait correcte sur la page utilisee pour la mesure initiale (si elle
   avait un ascenseur). Le fallback 100vw ne s'applique qu'avant l'execution du script (quasi invisible). */
:root { --pr-vw: 100vw; }
/* Aligne la surface de travail Paie sur l'extremite physique des onglets SALARIES (gauche) / DSN (droite)
   du bandeau .prMainTabs (HeaderPR.cshtml). Formule mesuree par getBoundingClientRect() a 1200px et 1600px
   de large (regression lineaire exacte sur les deux points, pas une estimation) : si ces constantes bougent,
   remesurer apres toute modification des pourcentages 6%/73% dans HeaderPR.cshtml. */
.container.pr-page-wrap,
body.ftPage .container.pr-page-wrap,
body.gcPage .container.pr-page-wrap,
body.dmsPage .container.pr-page-wrap {
    max-width:none !important;
    width:calc(var(--pr-vw) * 0.67 - 43.703125px) !important;
    margin-left:calc(var(--pr-vw) * 0.06 + 73.390625px) !important;
    margin-right:0 !important;
    padding-left:15px !important;
    padding-right:15px !important;
}
.pr-card { background:#fff; border:1px solid #e3e6d4; border-radius:6px; padding:24px 28px; margin-bottom:24px; box-shadow:0 1px 3px rgba(0,0,0,0.06); }
/* Clearfix : certaines pages DMS/GC/FT embarquees dans Paie (ex. Parametrages > Departement) placent une
   liste .formTables (float:left, voir plus haut) directement a l'interieur de .pr-card. Sans ce clearfix,
   .pr-card n'a aucun contenu en flux normal et sa hauteur s'effondre a 0 des que la liste contient des lignes :
   le contenu flottant deborde alors visuellement par-dessus la carte/colonne voisine ("les 2 cartes se
   superposent"). Invisible quand la liste est vide (c'est pour ca qu'une capture sans donnees ne montre rien). */
.pr-card::after { content:""; display:table; clear:both; }
/* Filet anti-débordement (même règle que BK/LF, 26 oct. 2026) : un tableau .pr-table posé directement dans la
   carte, sans .pr-table-wrap (ex. Paramétrages > Rubriques, "Constantes" et "Barèmes progressifs"), dépassait
   de la carte et des onglets de 38px à 1050px de large. Ascenseur horizontal localisé dans la carte. */
.pr-page-wrap .pr-card { overflow-x:auto; }
/* Pages DMS intégrées à la Paie/au Suivi de Dossier (ex. SettingsDepartments.cshtml?embed=PR) : la colonne
   porte .listMainBlockStyle (carte DMS, voir body.dmsPage .listMainBlockStyle plus haut) ET contient une .pr-card
   -- double carte, l'extérieure débordait de 15px au-delà de l'extrémité droite des onglets. En mode intégré,
   seule la .pr-card intérieure reste une carte ; la colonne redevient une colonne Bootstrap normale. */
body.dmsPage .container.pr-page-wrap .listMainBlockStyle {
    background:none; border:0; border-radius:0; box-shadow:none;
    padding:0 15px; margin-bottom:0;
}
.pr-card-title { font-size:18px; font-weight:500; color:#333; margin:0 0 18px 0; padding-bottom:12px; border-bottom:2px solid #a4b357; }
.pr-section-title { font-size:12px; font-weight:600; text-transform:uppercase; letter-spacing:0.5px; color:#75890c; margin:22px 0 14px 0; }
.pr-section-title:first-of-type { margin-top:0; }
.pr-field-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(210px, 1fr)); gap:18px 24px; }
.pr-field { display:flex; flex-direction:column; }
.pr-field label { font-size:12px; color:#666; margin-bottom:6px; font-weight:500; }
/* Les libellés des formulaires .pr-field (vues V2 : Paie, GRH, Immobilisations, Ivolife, SCOMS...) sont écrits avec
   leur casse française ; la règle globale "form label { text-transform:capitalize }" des vues historiques en
   faisait "Date De Naissance", "Pièce D'identité" (audit qualité GRH, 27 oct. 2026). */
.pr-field label { text-transform:none; }
.pr-field input, .pr-field select, .pr-field textarea { width:100%; box-sizing:border-box; padding:8px 10px; border:1px solid #ccc; border-radius:4px; font-size:14px; color:#222; background:#fff; font-family:inherit; }
.pr-field input:focus, .pr-field select:focus, .pr-field textarea:focus { border-color:#a4b357; outline:none; box-shadow:0 0 0 2px rgba(164,179,87,0.2); }
.pr-field-full { grid-column:1 / -1; }
/* Champ seul dans sa grille (ex. Immobilisations > Options, select "Référentiel Comptable") : la colonne auto-fit 1fr
   prend toute la largeur de la carte et le champ s'étirait d'un bord à l'autre (signalé le 26 oct. 2026). Même
   plafond que .formInput en GC (380px) ; les zones de texte (textarea) gardent toute la largeur. */
.pr-field input:not([type=checkbox]):not([type=radio]), .pr-field select { max-width:380px; }
/* Menu déroulant posé directement dans un formulaire de carte (hors .pr-field), ex. CRM > Contacts "Toutes les listes" :
   la règle globale du thème "select{width:100%}" l'étirait sur toute la carte. */
.pr-card > form > select { width:auto; max-width:380px; display:inline-block; }
/* Champ Année (4 chiffres) : jamais plus large que nécessaire, même posé en width:100% dans une colonne de grille
   (signalé le 26 oct. 2026 sur Feuilles de Temps > Editions > Contrôle saisies, ~340px de large). */
input[type=number][name="year"] { max-width:120px !important; }
/* Montants et autres valeurs numériques du gabarit Paie (ex. Paie > Salariés "Salaire de base", 253px dans sa grille) :
   180px suffisent (contrôle STRETCH "champ numérique" du script de recette, 27 oct. 2026). */
.pr-field input[type=number] { max-width:180px; }
/* Champ court (code, nombre, sexe...) : évite qu'un seul champ de ce type n'absorbe toute la largeur
   disponible quand il est seul dans sa .pr-field-grid (ex. sélecteur de mois, select référentiel), et évite
   qu'il occupe la même largeur qu'un champ Libellé/Nom dans une grille à plusieurs champs. */
.pr-field-narrow { max-width:160px; }
.pr-table th.pr-col-code, .pr-table td.pr-col-code { width:90px; }
/* Colonne Libellé : largeur minimale pour ne jamais tronquer un nom de cotisation au milieu d'un mot. */
.pr-table th.pr-col-libelle, .pr-table td.pr-col-libelle { min-width:240px; }
/* Colonne Plafond/Plancher (select) : les options affichent le code court (libellé complet en title),
   donc une largeur modeste suffit sans écraser les colonnes voisines. */
.pr-table th.pr-col-select, .pr-table td.pr-col-select { min-width:130px; }
/* Table plus large que sa carte si des colonnes à largeur minimale l'exigent (voir .pr-col-libelle/.pr-col-select) :
   le conteneur défile horizontalement au lieu d'écraser les colonnes pour rester à 100% de la carte. */
.pr-table-wrap { overflow-x:auto; }
.pr-table-wrap .pr-table { width:auto; min-width:100%; }
/* En-tête abrégée (code court) avec le libellé complet en tooltip : évite les en-têtes de colonne
   multi-lignes sur les tableaux à une colonne par rubrique (Surcharge de taux, Livre de paie, etc.). */
.pr-table th.pr-col-abbrev { white-space:nowrap; cursor:help; }
.pr-hint { font-size:12px; color:#888; margin:0 0 16px 0; }
.pr-form-actions { display:flex; justify-content:flex-end; gap:10px; margin-top:24px; padding-top:18px; border-top:1px solid #eee; }
.pr-form-actions .btnStyle { margin:0; padding:9px 28px; border-radius:4px; }
/* .pr-form-actions posée DIRECTEMENT dans la colonne, hors carte = barre d'outils de liste ("+ Nouveau contrat" etc.,
   Ivolife) et non boutons de fin de formulaire : alignée à gauche sur le bord des onglets comme dans les autres
   modules, sans filet, avec un espace avant la carte (27 oct. 2026). Les .pr-form-actions DANS une carte restent à droite. */
.pr-page-wrap .row > .col > .pr-form-actions { justify-content:flex-start; margin-top:0; padding-top:0; border-top:0; margin-bottom:16px; }
.pr-table { width:100%; border-collapse:collapse; font-size:14px; }
/* Colonnes de données à parts égales (demande du 26-27 oct. 2026 "espaces répartis de manière identique entre les
   colonnes", contrôle COLWIDTH du script de recette) : mise en page fixe -- toutes les colonnes sans largeur explicite
   se partagent l'espace. Colonne d'actions (en-tête vide) à largeur fixe. Exclus : tableaux dans .pr-table-wrap
   (larges, défilement horizontal voulu : Variables, Éditions de paie) et colonnes à largeur explicite (.pr-col-*). */
.pr-table:not(.pr-table-wrap .pr-table) { table-layout:fixed; }
.pr-table:not(.pr-table-wrap .pr-table) th:empty { width:210px; }
.pr-table:not(.pr-table-wrap .pr-table) td { overflow-wrap:break-word; }
.pr-table th { text-align:left; padding:10px 12px; background:#f4f6f0; color:#555; font-weight:600; font-size:12px; text-transform:uppercase; letter-spacing:0.3px; border-bottom:2px solid #e3e6d4; }
.pr-table td { padding:10px 12px; border-bottom:1px solid #eee; color:#333; vertical-align:middle; }
.pr-table tr:hover td { background:#fafbf6; }
.pr-table td.pr-num { text-align:right; }
.pr-table td.pr-actions { text-align:right; white-space:nowrap; }
.pr-badge { display:inline-block; padding:2px 10px; border-radius:10px; font-size:12px; font-weight:500; }
.pr-badge-yes { background:#d4edda; color:#155724; }
.pr-badge-no { background:#f1f1f1; color:#777; }
.pr-alert { padding:10px 14px; border-radius:4px; margin-bottom:16px; font-size:14px; }
.pr-alert-success { background:#d4edda; color:#155724; border:1px solid #c3e6cb; }
.pr-alert-error { background:#f8d7da; color:#721c24; border:1px solid #f5c6cb; }
.pr-empty { color:#888; font-size:14px; padding:12px 0; }
@media (max-width:700px) { .pr-card { padding:18px; } }


/* Autocomplete
    ----------------------------------*/

/* Bandeau d'onglets sur UNE ligne + menu "Plus ▾" (script commun de CommonScripts.cshtml, 27 oct. 2026) : sur petit
   écran (1280px), les libellés ne rétrécissent plus et ne passent plus sur 2 lignes ; ce qui ne tient pas va dans
   "Plus". Taille de police normale imposée (annule les réductions sous 1150/1200px des en-têtes de modules). */
#site-header ul.ivoTabsOneLine { flex-wrap:nowrap !important; }
#site-header ul.ivoTabsOneLine > li { flex:1 1 auto !important; min-width:auto !important; }
#site-header ul.ivoTabsOneLine > li > a,
#site-header ul.ivoTabsOneLine > li > span { white-space:nowrap !important; -webkit-hyphens:manual !important; hyphens:manual !important; overflow-wrap:normal !important; }
#site-header ul[class*="MainTabs"].ivoTabsOneLine > li > a,
#site-header ul[class*="MainTabs"].ivoTabsOneLine > li > span { font-size:12px !important; padding-left:8px !important; padding-right:8px !important; letter-spacing:.2px !important; }
#site-header ul[class*="SubTabs"].ivoTabsOneLine > li > a,
#site-header ul[class*="SubTabs"].ivoTabsOneLine > li > span { font-size:11px !important; padding:8px 8px !important; letter-spacing:.1px !important; }
#site-header ul.ivoTabsOneLine > li.ivoPlus { flex:0 0 auto !important; position:relative; }
#site-header li.ivoPlus > ul.ivoPlusMenu {
    display:none; position:absolute; right:0; top:100%; z-index:3000; min-width:230px; margin:0; padding:4px 0;
    list-style:none; box-shadow:0 4px 12px rgba(0,0,0,.25); border-radius:0 0 4px 4px;
}
#site-header li.ivoPlus.open > ul.ivoPlusMenu { display:block; }
#site-header ul.ivoPlusMenu > li { display:block !important; flex:none !important; width:auto !important; }
#site-header ul.ivoPlusMenu > li > a,
#site-header ul.ivoPlusMenu > li > span { display:block !important; text-align:left !important; padding:9px 16px !important; white-space:nowrap !important; font-size:12px !important; }
/* Les règles "li.active a" des en-têtes visaient aussi les entrées du menu quand "Plus" est actif : couleurs explicites. */
#site-header ul.ivoPlusMenu > li:not(.active) > a { color:#EEF1EA !important; background:transparent !important; }
#site-header ul.ivoPlusMenu > li:not(.active) > a:hover { background:rgba(255,255,255,.12) !important; }
#site-header ul.ivoPlusMenu > li.active > a { color:#D8A94A !important; background:rgba(0,0,0,.18) !important; }

/* Menu de gauche : modules non souscrits par la société (companies.modules) affichés grisés et inactifs
   (Views/Shared/MenuLeft.cshtml) ; un administrateur Ivociel les active depuis la fiche de la société. */
.leftMenuEachRow.ivoModuleInactif { opacity: .35; filter: grayscale(1); cursor: not-allowed; }
.leftMenuEachRow.ivoModuleInactif a { pointer-events: none; }
/* Grille des modules d'une société / d'un client (Views/Shared/ModulesCompany.cshtml, Modules.cshtml) :
   tous les modules affichés, ceux qui ne sont pas souscrits grisés. */
.ivoModulesGrille { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 10px; clear: both; }
.ivoModuleCarte { display: flex; align-items: center; gap: 8px; border: 1px solid #c9d3a8; background: #EEF0DE; border-radius: 6px; padding: 10px; font-size: 13px; }
.ivoModuleCarte a, .ivoModuleCarte .ivoModuleLien { display: flex; align-items: center; gap: 8px; color: #333; text-decoration: none; flex: 1; min-width: 0; }
.ivoModuleCarte i { color: #6B8E23; font-size: 18px; width: 22px; text-align: center; }
/* le thème impose display:block et une grande largeur aux cases à cocher : sans !important, la case occupe la carte et le lien du module tombe à 0px (non cliquable) */
.ivoModuleCarte input.chkModules { display: none !important; margin: 0; }
.ivoModulesSociete.edition .ivoModuleCarte input.chkModules { display: inline-block !important; width: 16px !important; height: 16px; flex: 0 0 16px; position: static; opacity: 1; visibility: visible; }
.ivoModuleCarte.inactif { border-color: #ddd; background: #f5f5f5; opacity: .45; filter: grayscale(1); }
.ivoModulesSociete.edition .ivoModuleCarte.inactif { opacity: .8; }

/* ---------- Lisibilité (27 oct. 2026) : textes foncés et graisse normale sur l'ensemble des pages ----------
   Le texte de base était en Roboto Light (300) gris #444, et de nombreux textes en gris clair (#555 à #999,
   fil d'Ariane #96b893) : à peine lisibles. Ce bloc, placé en fin de fichier, passe la graisse 300 en 400 et
   fonce les gris. Les barres du haut (#site-header : onglets blancs / orange sur fond vert) et le menu de gauche
   sont exclus des règles larges. */
body { font-weight: 400; color: #1f2a2c; }
form label, .formTablesLinearHead li, .formTablesLinearValues li, .formTextBox, .formTextArea,
.btnStyle, .btnStyleSecond, .listEmailBtn1 { font-weight: 400; }
:not(#site-header *):not(#sidebar-left *)[style*="font-weight:300"],
:not(#site-header *):not(#sidebar-left *)[style*="font-weight: 300"] { font-weight: 400 !important; }
.formTablesLinearValues li { color: #2b3335; }
.sitePathStyle { color: #3d7a37; }
.pr-hint { color: #4f565b; }
.pr-table th { color: #2b3335; }
:not(#site-header *):not(#sidebar-left *) > small { color: inherit; }
.container label, form label { color: #2f3638; }
/* Gris clairs posés en style en ligne dans les vues (couleur du texte seulement, pas background-color). */
:not(#site-header *):not(#sidebar-left *):is([style^="color:#555"], [style*=";color:#555"], [style*="; color:#555"], [style*=" color: #555"], [style^="color: #555"],
  [style^="color:#666"], [style*=";color:#666"], [style*="; color:#666"], [style*=" color: #666"], [style^="color: #666"],
  [style^="color:#777"], [style*=";color:#777"], [style*="; color:#777"], [style*=" color: #777"], [style^="color: #777"],
  [style^="color:#888"], [style*=";color:#888"], [style*="; color:#888"], [style*=" color: #888"], [style^="color: #888"],
  [style^="color:#999"], [style*=";color:#999"], [style*="; color:#999"], [style*=" color: #999"], [style^="color: #999"],
  [style^="color:#aaa"], [style*=";color:#aaa"], [style*="; color:#aaa"], [style*=" color: #aaa"], [style^="color: #aaa"]) { color: #3a4245 !important; }
.pr-section-title { color: #556b06; }
.formTablesLinearHead li { color: #3b5566; }
p.grhNote { color: #3f4648; }
