* {
    margin: 0;
    padding: 0;
}
@font-face {
  font-family: "Inter Regular";
  src: url("/Intranet/styles/fonts/Inter-Regular.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
}
@font-face {
  font-family: "Inter Bold";
  src: url("/Intranet/styles/fonts/Inter-Bold.ttf") format("truetype");
  font-weight: 700;
  font-style: normal;
}
@font-face {
  font-family: "Inter SemiBold";
  src: url("/Intranet/styles/fonts/Inter-SemiBold.ttf") format("truetype");
  font-weight: 600;
  font-style: normal;
}

:root {
    --couleur-bordure_tableau: #d9d9d9;
}

html {
    overflow: hidden;
}
html,
body {
    height: 100%;
}
body {
    margin: 0;
    width: 100%;
    background-color: white;
    font-family: "Inter Regular", Inter, Arial, sans-serif;
    font-size: 13px;
    line-height: 1;
}
h1.h2 {
    font-size: 1.25em;
}
hr {
    border: 1px dotted silver;
    border-width: 1px 0 0;
    margin: 5px 0;
}
.px0 {
    padding-right: 0px !important;
    padding-left: 0px !important;
}
.clear {
    clear: both;
}
.center {
    text-align: center !important;
}
.right {
    text-align: right !important;
}
.left {
    text-align: left !important;
}
.cursor,
.hand,
tr.hand td {
    cursor: pointer;
}
.w75 {
    width: 75% !important;
}
.fw-bold {
    font-weight: bold;
}
.lien {
    text-decoration: underline;
    cursor: pointer;
    color: rgb(9, 158, 202) !important;
}
.underline {
    text-decoration: underline;
}
#div_corps {
    position: absolute;
    top: 10px;
    bottom: 10px;
    width: 100%;
    overflow-y: auto;
    overflow-x: hidden;
}

#footer_fiche_detail,
.footer_fiche_detail {
    position: absolute;
    bottom: 2px;
    text-align: center;
    height: 38px;
    vertical-align: top;
    left: 0.5%;
    right: 0.5%;
    z-index: 10; /* supérieur au z-index:9 de .content_onglets — fix footer invisible sur Chrome for Testing */
}

#footer_fiche_detail > *,
.footer_fiche_detail > * {
    z-index: 100;
}

/************************
 * THEME GENERAL, COULEUR MENU & ENTETES */
.tr_header > td,
.tr_header > thead > td,
.tr_header > th,
.tr_header > thead > th,
#contenu_menu_bot,
.filtres_header,
.filtres_header_non_float,
.div_contenu #content_detail .conteneur_tableau_donnees,
.div_contenu #onglet_fiche_detail .conteneur_tableau_donnees,
.div_contenu #onglet_fiche_detail .conteneur_tableau_donnees tr td,
.div_contenu #onglet_fiche_detail .conteneur_tableau_donnees tr th,
.tr_header td,
.tr_header th,
.tr_header_sub td,
.tr_header_sub th,
.tr_footer td,
.tr_footer th,
.popin.support .title_support,
.libelle_filtre_bk,
.conteneur_tableau_donnees.entete,
.conteneur_tableau_donnees.entete tr td,
.conteneur_tableau_donnees.entete tr th,
.div_contenu .tr_header th,
.div_contenu .tr_header td,
body .bloc_champ.bt_filtre_on_off,
.paging.selected,
input:checked + .slider {
    background-color: #005477;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}
.tr_niveau1 .td_total,
.tr_niveau2 .td_total,
.tr_niveau1 .td_libelle,
.tr_niveau2 .td_libelle,
.tr_niveau1_total td,
.tr_niveau2_total td {
    background-color: lightgrey;
}
/************************/

/* TABLEAUX */
.tabcontent_global {
    position: absolute;
    top: 64px;
    bottom: 54px;
}
.tab_global {
    position: relative;
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    border-spacing: 0;
    border: 0;
    font-family: "Inter Regular", Inter, Arial, sans-serif;
}
.tab_global caption {
    color: #005477;
    font-weight: bold;
    font-style: italic;
    margin-top: 10px;
    padding: 4px 2px;
}
.tab_global td {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}
.tabcontent_global .tab_global,
.tabcontent_global > div {
    width: 99%;
    left: 0.5%;
    right: 0.5%;
    border-collapse: separate;
}
.tabcontent_global .iframe_liste .tab_global {
    width: 100%;
    left: 0;
    right: 0;
}
/* Compensation scrollbar de l'en-tête de filtre. La table de données (dans
   l'iframe) est amputée de ~17px par sa scrollbar ; l'en-tête (hors iframe) ne
   l'est pas → décalage de 17px. Les pages posent `style="margin-right:17px"` sur
   la table d'en-tête, mais width:99% + table-layout:fixed rendent la marge SANS
   effet. On la convertit ici en réduction réelle de la grille (border-box +
   padding-right), ce qui aligne les colonnes avec les données. Cible uniquement
   les tables marquées (attribut style inline) → aucun autre tableau impacté. */
.tab_global[style*="margin-right:17px"],
.tab_global[style*="margin-right: 17px"],
.tab_global[style*="padding-right:17px"],
.tab_global[style*="padding-right: 17px"] {
    box-sizing: border-box;
    padding-right: 17px !important;
    margin-right: 0 !important;
}
.tr_pagination {
    height: 40px;
    vertical-align: bottom;
}
.tr_header,
.tr_header_sub,
.tr_footer {
    color: white;
    height: 18px;
}
.tr_header_sub td,
.tr_header_sub th,
.tr_footer td,
.tr_footer th {
    padding: 5px 4px;
    /*    background-color: rgb(9, 158, 226);*/
}
.tr_header > td,
.tr_header > thead > td,
.tr_header > th,
.tr_header > thead > th {
    padding: 5px 3px;
    /*    background-color: rgb(9, 158, 226);*/
    border-top: 1px solid grey;
    border-bottom: 1px solid grey;
}

.tr_header > td:first-child,
.tr_header > thead > td:first-child,
.tr_footer > td:first-child,
.tr_footer > thead > td:first-child {
    border-left: 1px solid grey;
}
.tr_header > td:last-child,
.tr_header > thead > td:last-child,
.tr_footer > td:last-child,
.tr_footer > thead > td:last-child {
    border-right: 1px solid grey;
}

.tr_filtre {
    background-color: white;
}
.tr_filtre td {
    padding: 1px 2px;
}
.tr_filtre td .select {
    margin-top: 4px;
    width: 93%;
}
.tr_filtre td .input_text {
    height: 20px;
}

/* FORMULAIRES */
a,
a:hover,
a:visited,
a:focus {
    color: rgb(9, 158, 202);
}
a.bt {
    color: black;
    text-decoration: none;
}
a.bt.button_valid {
    color: white;
}

textarea {
    font-size: inherit;
    font-family: inherit;
}

.icone_action {
    cursor: pointer;
    background-color: white;
    border: 1px solid silver;
    padding: 5px;
    border-radius: 4px;
    font-size: 10px;
}
.icone_action:hover {
    box-shadow: 0px 0px 4px silver;
    background-color: #EEE;
}
.fa.clicicone {
    cursor: pointer;
    font-size: 1.7em;
    padding-left: 3px;
    vertical-align: -15%;
}
i.fa-lg {
    line-height: inherit;
}

.oblig:after {
    content: ' *';
    color: red;
    vertical-align: super;
    font-size: smaller;
    position: absolute;
    margin-left: 3px;
}
legend {
    font-size: 12px;
    font-family: "Inter Regular", Inter, Arial, sans-serif;
    font-weight: bold;
}

/* SELECT */
.select {
    height: 22px !important;
    border: 0 !important;
    overflow: hidden;
    margin: 2px 0;
    margin-bottom: 4px;
    position: relative;
    display: block;
    z-index: 31;
    width: 98%;
}
.select img {
    display: none;
}

.select select {
    appearance: none;
    -moz-appearance: none;
    -webkit-appearance: none;
    border: 1px solid #d5dbe1;
    background-color: #fff;
    height: 22px;
    position: relative;
    z-index: 5;
    width: 100%;
    padding-top: 2px;
    padding-right: 25px;
    text-indent: 2px;
}
.select:before {
    width: 25px;
    right: 0;
    top: 0;
    bottom: 0;
    content: '';
    position: absolute;
    pointer-events: none;
    border: 0;
    z-index: 10;
    background-color: transparent;
}
.select:after {
    content: '\25BC';
    font-size: 11px;
    line-height: 1;
    right: 6px;
    top: 50%;
    margin-top: -5.5px;
    position: absolute;
    pointer-events: none;
    color: #64748b;
    z-index: 10;
}
.select select::-ms-expand {
    display: none;
}

.select_disabled select {
    background-color: transparent !important;
    padding-right: 0px;
    color: white !important;
    border: none;
}
.select_disabled select[disabled] {
    color: white !important;
    opacity: 1;
}
.select_disabled:before {
    content: '';
    display: none;
}
.select_disabled:after {
    content: '';
    display: none;
}

/* INPUT */
input[readonly],
input[disabled],
button[disabled],
textarea[readonly],
textarea[disabled],
.select select[readonly],
.select select[disabled] {
    background: #e5e5e5 !important;
    color: #64748b;
}
.input_text {
    margin: 2px 0;
    border: 1px solid #d5dbe1;
    height: 18px;
    border-radius: 3px;
    width: 95%;
    padding-left: 5px;
}
input[type="checkbox"] {
    accent-color: #005477;
}
input.error_input {
    border: 1px solid #a53535;
    color: #a53535;
}

/* style de gestion d'erreur, censé être aussi "puissant" que le javascript, ce qui justifie le important */
a.erreur_js {
    color: #ffb2b2 !important;
}
.erreur_js,
.div_contenu input[disabled].erreur_js,
.div_contenu input[readonly].erreur_js,
.bloc_champ input[disabled].erreur_js,
.bloc_champ input[readonly].erreur_js,
.bloc_champ select[disabled].erreur_js,
.bloc_champ select[readonly].erreur_js {
    background-color: #ffb2b2 !important;
}

/* ONGLETS */
#onglet_fiche_detail {
    /*
    min-height: 230px;
    */
    max-height: 100%;
    position: absolute;
    right: 0.5%;
    left: 0.5%;
    bottom: 45px;
}
.td_position {
    position: relative;
}
.td_content_frame {
    margin: 0;
    border: 1.2px solid silver;
    width: 100%;
    border-top: 0;
    background-color: white;
    height: 100%;
    vertical-align: top;
    padding: 1px;
    padding-top: 0;
    overflow: hidden;
    text-align: center;
}
.td_content_frame > iframe,
.td_content_frame > div,
.td_content_frame > textarea {
    width: 99.8%;
    margin: 0;
    padding: 0;
    border: 0 solid silver;
}
.td_content_frame > iframe,
.td_content_frame > textarea {
    height: 100%;
}
.td_content_frame > div {
    overflow-x: hidden;
    position: absolute;
    top: 0;
    bottom: 37px;
    left: 1px;
    right: 1px;
}
#content_onglet {
    padding-left: 1.5%;
    overflow-x: auto;
    width: 98.5%;
    white-space: nowrap;
    overflow-y: auto;
    z-index: 10;
    position: relative;
}
.onglet {
    margin: 0 2px;
    display: inline-block;
    padding: 3px 10px;
    text-align: center;
    font-size: 12px;
    color: gray;
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
    background-color: #fafafa;
    border: 1px solid silver;
    cursor: pointer;
    font-family: "Inter Regular", Inter, Arial, sans-serif;
}
.onglet_selected {
    margin: 0 2px;
    display: inline-block;
    padding: 3px 10px;
    padding-top: 5px;
    text-align: center;
    font-size: 12px;
    color: white;
    font-weight: bold;
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
    border: 1px solid #09394d;
    cursor: pointer;
    background: #005477;
}

/* BOUTONS */
.bt {
    margin: 2px 5px 0 0;
    border: 1px solid grey;
    text-transform: inherit;
    background-color: #ffffff;
    padding: 4px 10px;
    font-size: 12px;
    cursor: pointer;
    font-weight: bold;
    transition:
        background-color 0.6s,
        color 0.6s;
    white-space: nowrap;
    border-radius: 0;
    box-shadow: none;
    text-shadow: none;
}
.bt:hover {
    background-color: hsl(206, 81%, 90%);
    transition:
        background-color 0.6s,
        color 0.6s;
}
.bt:after {
    display: inline-block;
    font-size: 1.2em;
    transition:
        transform 0.6s,
        color 0.6s;
    font-family: 'Font Awesome 6 Free'; /* l'app charge FA6 : le nom FA5 donnait des carres "tofu" */
    font-weight: 900; /* requis pour les icones solides en FA6 */
    position: relative;
    top: 1px;
    color: #42a2eb;
    margin: -4px 0 -1px 5px;
}
.bt:hover:after {
    transition:
        transform 0.6s,
        color 0.6s;
}
.bt img {
    display: none;
    height: 14px;
    margin-left: 5px;
    position: relative;
    top: 3px;
}

.bt.add:after {
    content: '\f0fe';
}
.bt.dev:after {
    content: '\f121';
}
.bt.off:after {
    content: '\f146';
}
.bt.ban:after {
    content: '\f05e';
}
.bt.trash:after {
    content: '\f014';
}
.bt.check:after {
    content: '\f00c';
}
.bt.link:after {
    content: '\f0c1';
}
.bt.search:after {
    content: '\f002';
}
.bt.email:after {
    content: '\f0e0';
}
.bt.refresh:after {
    content: '\f021';
}
.bt.back:after {
    content: '\f00d';
}
.bt.lock:after {
    content: '\f023';
}
.bt.unlock:after {
    content: '\f09c';
}
.bt.fan:after {
    content: '\f863';
}
.bt.arrow-right:after {
    content: '\f061';
}
.bt.arrow-left:after {
    content: '\f060';
}
.bt.paperclip:after {
    content: '\f0c6';
}
.bt.gear:after {
    content: '\f013';
}
.bt.edit:after {
    content: '\f044';
}
.bt.sort:after {
    content: '\f0dc';
}
.bt.download:after {
    content: '\f019';
}
.bt.envelope:after {
    content: '\f0e0';
}
.bt.calendar:after {
    content: '\f073';
}

.bt.xls:after {
    content: '\f1c3';
}
.bt.pdf:after {
    content: '\f1c1';
}
.bt.word:after {
    content: '\f1c2';
}
.bt.file:after {
    content: '\f1c5';
}

.bt:after {
    color: #42a2eb;
}
.bt.red:after {
    color: #e73131;
}
.bt.orange:after {
    color: orange;
}
.bt.green:after {
    color: green;
}
.bt.blue:after {
    color: #0d6485;
}

.bt {
    border-color: #42a2eb;
}
.bt.bd_red {
    border-color: red;
}
.bt.bd_green {
    border-color: green;
}

.bt:hover:after {
    transform: rotate(90deg);
}
.bt.lock:hover:after,
.bt.unlock:hover:after,
.bt.trash:hover:after,
.bt.pdf:hover:after,
.bt.xls:hover:after,
.bt.download:hover:after,
.bt.sort:hover:after,
.bt.envelope:hover:after,
.calendar:hover:after {
    transform: scaleX(-1);
}
.bt.arrow-right:hover:after,
.bt.refresh:hover:after {
    transform: rotate(360deg);
}

.button_valid,
.button_cancel,
.button_standard,
.button_disabled {
    text-transform: inherit;
    border: 1px solid #245580;
    color: #fff;
    padding: 4px 10px;
    line-height: 1.4;
    font-size: 13px;
}
.bt[disabled] {
    cursor: inherit;
    color: silver;
}

/*.bt.add:hover:after ,
.bt.add:link:after ,
.bt.off:hover:after {
    transform:rotate(90deg);
    background-color: hsl(0, 70%, 92%);
}
.bt.add:hover {
    color: black;
    background-color: hsl(206, 81%, 90%);
}
.bt.pdf:hover {
    color: black;
    background-color: hsl(0, 0%, 92%);
}*/

table.InputTextButton button.button_valid,
.button_valid {
    background: none;
    background-color: #428eeb;
    color: #ffffff;
    border: none;
    font-weight: bold;
}
.button_cancel {
    background-color: #ffffff;
    color: #3c3c3c;
    border: 1px solid #e04c4c;
    font-weight: bold;
}
.button_standard {
    background-color: #ffffff;
    color: #222222;
    border: 1px solid grey;
    font-weight: bold;
}
.button_valid:hover {
    background-color: hsl(206, 81%, 45%);
}
.button_cancel:hover {
    color: black;
    background-color: hsl(0, 70%, 92%);
}
.button_standard:hover {
    color: black;
    background-color: hsl(0, 0%, 92%);
}

.button_valid[disabled],
.button_cancel[disabled],
.button_standard[disabled],
.button_valid:hover[disabled],
.button_cancel:hover[disabled],
.button_standard:hover[disabled] {
    color: black;
    background-color: silver;
}

/* BOUTONS NAV */
.navbouton ul li {
    padding: 3px 12px;
    text-align: left;
}
.navbouton ul li:hover,
.navbouton li:hover a {
    opacity: 0.8;
    background-color: hsl(206, 81%, 50%);
    color: #fff;
}
.navbouton ul a {
    color: #fff;
    text-decoration: none;
}
.navbouton ul {
    visibility: hidden;
    opacity: 0;
    position: absolute;
    top: 26px;
    left: 0;
    z-index: 100;
    background-color: #42a2eb;
    border: 1px solid #fff;
    box-shadow: 0 2px 10px 0 #666;
    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
    line-height: 1.42857;
    cursor: pointer;
    list-style: none;
    border-radius: 4px;
    font-weight: normal;
    font-size: 12px;
    min-width: 120px;
    transition:
        visibility 0s,
        opacity 0.3s linear;
    color: #fff;
}
.navbouton:hover ul,
.navbouton *:hover {
    visibility: visible;
    opacity: 1;
}
.navbouton span {
    text-align: right;
    padding-left: 10px;
}
/* Font Awesome 6 : la migration FA5 -> FA6 n'avait pas ete repercutee ici, le
   chevron sortait donc en carre "tofu". Le poids 900 est indispensable, \f0da
   n'existe que dans la variante solid. */
.navbouton span:after {
    content: '\f0da';
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    display: inline-block;
}
.navbouton:hover span:after {
    transition: transform 0.2s;
    transform: rotate(90deg);
}
.navbouton {
    text-align: center;
    white-space: nowrap;
    position: relative;
    overflow: visible;

    background-color: #42a2eb;
    border-color: #245580;
    color: #fff;
    padding: 5px 18px;
    line-height: 1.4;
    cursor: pointer;
    border-radius: 4px;
    font-weight: bold;
    font-size: 14px;
    display: inline-block;
}
.upnavbouton ul {
    top: inherit;
    left: inherit;
    bottom: 26px;
    right: 0;
    margin: 0px;
    padding-left: 0px;
}
.upnavbouton:hover span:after {
    transition: transform 0.2s;
    transform: rotate(270deg);
}

/* POPINS */
.div_flou {
    display: none;
    position: fixed;
    width: 100%;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    background-color: #000000;
    z-index: 120;
    filter: alpha(opacity =60);
    -moz-opacity: 0.6;
    opacity: 0.6;
}
.popin-content {
    z-index: 121;
    margin: 0 auto;
    overflow: hidden;
    position: relative;
}
.popin {
    display: none;
    position: fixed;
    overflow: hidden;
    z-index: 122;
}
.popin.support {
    box-shadow: 0 0 10px 0 #303030;
    border-radius: 5px;
    background-color: white;
}

.popin.support .title_support {
    /*    background-color: rgb(9, 158, 226);*/
    width: 100%;
    border-bottom: 1px solid silver;
    height: 25px;
    padding-top: 10px;
    color: white;
    text-align: center;
    font-size: 15px;
    font-weight: bold;
    font-family: "Inter Regular", Inter, Arial, sans-serif;
    box-sizing: content-box;
}
.popin.support .title_support img {
    float: right;
    position: relative;
    right: 2%;
    cursor: pointer;
}
.popin.support .content_support {
    padding: 0 2px;
    padding-top: 1%;
    overflow-y: auto;
    position: absolute;
    top: 35px;
    bottom: 37px;
    overflow-x: hidden;
    text-align: center;
    width: 100%;
    box-sizing: border-box;
}
.popin.support .footer_support {
    clear: both;
    width: 100%;
    text-align: center;
    height: 37px;
    position: absolute;
    bottom: 0;
    padding-bottom: 5px;
}

/* LOADER */
.msgBox.loading {
    background-color: #fafafa;
    border: 1px solid silver;
    color: #303030;
    opacity: 0;
    transition:
        visibility 0.2s linear,
        opacity 0.2s linear;
}
.loading_flou {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: rgba(100, 100, 100, 0.2);
    display: none;
    z-index: 2000;
}

.msgBox {
    color: white;
    background: rgba(30, 30, 30, 0.8);
    font-size: 1.3rem;
}
#msgBox {
    display: none;
}
.msgBox {
    z-index: 10000;
    width: 40%;
    position: absolute;
    top: 30%;
    left: 27.5%;
    padding: 25px 2.5%;
    text-align: center;
    box-shadow: 0 0 10px 00px #303030;
    border-radius: 5px;
    transition:
        visibility 0.3s linear,
        opacity 0.3s linear;
}
.msgBox img {
    float: left;
    position: relative;
    left: 20px;
    height: 25px;
}
.msgBox i {
    margin-right: 10px;
}
.msgBox ul {
    text-align: left;
    font-size: 1.1rem;
}
.msgBox ul li {
    padding-top: 5px;
    margin-left: 5px;
}
.msgBox.ok {
    background-color: rgba(30, 150, 30, 0.8);
}
.msgBox.notice {
    background-color: rgba(200, 128, 00, 0.8);
}
.msgBox.ko {
    background-color: rgba(150, 30, 30, 0.8);
}
.msgBox.ok .icon {
    color: green;
}
.msgBox.ko .icon {
    color: red;
}

/* TITRES */
.entete_liste,
.entete_liste.entete_liste_old {
    display: inline-block;
    color: dimgray;
    font-family: "Inter Regular", Inter, Arial, sans-serif;
    font-weight: bold;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    border: none;
    margin: 3px 2% 0;
    font-size: 22px;
    padding: 10px 0 0;
    background-color: transparent;
}
.entete_liste i.fa-angle-right {
    padding: 0 4px;
    color: black;
    color: dimgray;
}
.entete_liste i.fa-list {
    padding-right: 8px;
    color: #005477;
    vertical-align: bottom;
}
#title_current_page a {
    color: inherit;
    text-decoration: inherit;
}
.div_contenu .entete_liste {
    border: none;
    /*    margin: 3px 2% 0;*/ /*c'est les memes valeurs qu'au dessus, donc ne sert a rien ici, mais casse le css du new design dans layout2024*/
    font-size: 22px;
    /*    padding: 10px 0 0;*/ /*c'est les memes valeurs qu'au dessus, donc ne sert a rien ici, mais casse le css du new design dans layout2024*/
    background-color: transparent;
}
.fil_ariane,
.fil_ariane.fil_ariane_old {
    margin: 5px 2% 0;
    padding: 0 0 10px 0;
    font-size: 0.8em;
    font-family: "Inter Regular", Inter, Arial, sans-serif;
}
.fil_ariane.fil_ariane_old {
    display: block !important;
}
.fil_ariane a {
    color: #005477;
}
.titre_page_en_cours {
    color: #005477;
}

/* LISTES A FILTRE */
.titre_frame {
    margin: 8px 1% 5px;
    text-transform: lowercase;
    font: bold 14px Arial;
    color: rgb(9, 158, 202);
}
.content_liste {
    position: relative;
    display: block;
    text-align: center;
}
.content_bouton {
    display: block;
    margin: 15px auto;
    clear: both;
    text-align: center;
    width: 95%;
    position: relative;
    top: 22px;
}
.content_bouton table {
    margin: 0 auto;
}

.img_titre {
    display: inline-block;
}

/****** affichage du total en bas, dans les listes  *****/
div.affichage_total {
    margin-top: 4px;
    width: 180px;
    text-align: center;
    border: 1px solid #42a2eb;
    border-radius: 2px;
    padding: 5px;
    color: #005477;
    float: right;
}

.filtres_header {
    border: 1px solid silver;
    border-radius: 5px;
    display: inline-block;
    float: right;
    height: 38px;
    margin: 10px 2% 0 0;
    padding: 7px 10px;
    position: relative;
    vertical-align: top;
    box-sizing: border-box;
    overflow: visible;
}
.filtres_header span:first-child {
    color: white;
    display: inline-block;
    font-size: 14px;
    margin-top: 2px;
    margin-right: 10px;
    padding-top: 0px;
    vertical-align: top;
    height: 20px;
    overflow: hidden;
}
.filtres_header .select {
    display: inline-block;
    float: right;
    margin: 0 !important;
    width: 180px;
}
div.div_contenu .filtres_header .select {
    display: inline-block;
    float: right;
    margin: 0 !important;
    width: 180px;
}
.filtres_header .multiselect-wrapper {
    display: flex;
    align-items: center;
    float: right;
    margin: 0 !important;
    width: 180px;
    position: relative;
    overflow: visible;
    height: 100%;
    z-index: 999;
}

div.div_contenu .filtres_header .select::before,
.bloc_champ .select::before {
    width: 21px;
    bottom: 4.5px;
    top: -0.5px;
}
div.div_contenu .filtres_header .select::after,
.bloc_champ .select::after {
    right: 4px;
    top: 47%;
}

/* TOOLTIPS */
.tip-wrap {
    color: #fff;
    min-width: 200px;
    max-width: 350px;
    z-index: 13000;
}
.tip-title {
    font-weight: bold;
    font-size: 11px;
    margin: 0;
    color: #9fd4ff;
    padding: 8px 8px 4px;
    background: url(/../images/tooltips/bubble.png) top left;
}
.tip-text {
    font-size: 11px;
    padding: 4px 8px 8px;
    background: url(/../images/tooltips/bubble.png) bottom right;
}
td.tooltip.noTooltipBootstrap {
    display: table-cell !important;
}
.tooltip.noTooltipBootstrap {
    opacity: 1 !important;
    font-size: revert;
    z-index: auto;
}
*:not(i).tooltip.noTooltipBootstrap {
    font-family: revert;
}
td.tooltip,
tr.tooltip td,
div.tooltip,
label.tooltip,
.help,
i.fa-info-circle {
    cursor: help;
}

/* PAGES DE LISTE-FILTRE */
div.iframe_liste {
    position: absolute;
    top: 60px;
    bottom: 0;
}
div.iframe_liste iframe {
    height: 100%;
    width: 100%;
    border: none;
}

tr.ligne_vide > td {
    border: 0;
    padding: 2px 3px;
    font-size: 13px;
    background-color: #fff;
    color: #333;
    font-style: italic;
}
tr.ligne_donnee td , 
tr.ligne_donnee_light td {
    padding: 2px 3px;
    font-size: 13px;
    vertical-align: middle;
}
/*
INFO :
    tr.ligne_donnee --> avec gestion des laternance de couleur sur les lignes
    tr.ligne_donnee --> sans alternance de couleur, plus ligth, avec une bordure fine séparative
*/
tr.ligne_donnee td {
    border: 0;
}
tr.ligne_donnee_light td {
    border-bottom: 1px solid #f1eeee;
}
tr.ligne_donnee:nth-child(odd) {
    background-color: #f3f3f3;
    color: #333;
}
tr.ligne_donnee:nth-child(even) {
    background-color: #fff;
    color: #333;
}
tr.ligne_donnee td a,
tr.ligne_donnee td a:visited,
tr.ligne_donnee td a:hover,
tr.ligne_donnee td a:focus,
tr.ligne_donnee_light td a,
tr.ligne_donnee_light td a:visited,
tr.ligne_donnee_light td a:hover,
tr.ligne_donnee_light td a:focus {
    color: inherit;
    display: inline-block;
    overflow: hidden;
    text-decoration: inherit;
    text-overflow: ellipsis;
    height: 100%;
    width: 100%;
    vertical-align: middle;
}
.hover:hover,
.hover:hover td,
.hover:hover td > i,
.hover:hover td > span,
tr.forcehover > td {
    /*
    background-color: hsl(206, 81%, 66%) !important;
    color: #ffffff !important;
    */
    background-color: #e1ecf2 !important;
    color: black;
}
.lighthover:hover,
.lighthover:hover td,
.lighthover:hover td > i,
.lighthover:hover td > span {
    background-color: #eee;
}

.div_onglet_haut .conteneur_tableau_donnees {
    left: 0;
    right: 0;
}
.conteneur_tableau_donnees {
    position: absolute;
    left: 0.5%;
    right: 0.5%;
    padding-right: 17px !important;
}
.conteneur_tableau_donnees.central {
    overflow-y: scroll !important;
    padding-right: 0 !important;
}
.tableau_donnees td,
.tableau_donnees th {
    font-size: 13px;
}
.tableau_donnees {
    /*
    border: 1px solid var(--couleur-bordure_tableau);
    */
    border-collapse: collapse;
    width: 99%;
    margin: 0 auto;
}
.conteneur_tableau_donnees .tableau_donnees {
    width: 100%;
}
.tableau_donnees a {
    color: inherit;
}
tr.ligne_vide,
tr.ligne_donnee,
tr.ligne_donnee_light,
tr.tr_total,
tr.tr_niveau1,
tr.tr_niveau2,
tr.tr_niveau3,
tr.tr_niveau1_total,
tr.tr_niveau2_total,
tr.tr_niveau3_total {
    height: 25px;
}
tr.ligne_donnee td,
tr.tr_total td,
tr.tr_niveau1 td,
tr.tr_niveau2 td,
tr.tr_niveau3 td {
    padding: 2px 3px;
}
.tableau_donnees .tr_total td {
    color: white;
}
tr.separateur_top td {
    border-top: 1px black solid !important;
}
.tr_total td {
    font-weight: bold;
    background-color: #595959;
}
.tableau_donnees .libelle_filtre_bk {
    font-size: 12px;
    padding: 1px 5px;
    border: 0;
    border-color: white;
}

.tableau_donnees .select {
    margin: 0;
}

.tr_niveau1_total {
    background-color: white;
}
.tr_niveau2,
.tr_niveau2_total {
    background-color: #42a2eb11;
}
.tr_niveau1,
.tr_niveau2 {
    /* 
    background-color: lightgrey; 
    */
    background-color: #e8f1f7; 
}
.tr_niveau3,
.tr_niveau3_total {
    background-color: #d3d3d355 /*#42a2eb11*/;
    font-weight: bold;
}
.tr_niveau2,
.tr_niveau3,
.tr_niveau2_total td,
.tr_niveau3_total td,
.tr_niveau3_total th {
    /*color: white;*/
}
.tr_niveau3 td,
.tr_niveau3_total td {
    font-weight: bold;
    padding: 2px 3px;
}
.tr_niveau1,
.tr_niveau2,
.tr_niveau3,
.tr_niveau1_total,
.tr_niveau2_total {
    border-top: 1px solid var(--couleur-bordure_tableau);
    border-bottom: 1px solid var(--couleur-bordure_tableau);
}
.tableau_donnees tr td.td_libelle {
    text-align: left;
    border-right: 1px solid var(--couleur-bordure_tableau);
}
.tableau_donnees tr td.td_total {
    border-left: 1px solid var(--couleur-bordure_tableau);
}
.tableau_donnees tr.ligne_donnee td.td_total ,
.tableau_donnees tr.ligne_donnee_light td.td_total {
    /*
    background-color: #bbbbbb60;
    */
    background-color: #eef2f6;
    border-top: 1px solid var(--couleur-bordure_tableau);
}
.tableau_donnees tr td.td_texte {
    text-align: left;
}
.tableau_donnees tr td.td_date {
    text-align: center;
}
.tableau_donnees tr td.td_fin_colonne,
.tableau_donnees tr th.td_fin_colonne {
    border-right: 1px solid var(--couleur-bordure_tableau) !important;
}
.tr_niveau1 .td_total,
.tr_niveau2 .td_total,
.tr_niveau1 .td_libelle,
.tr_niveau2 .td_libelle,
.tr_niveau1_total td,
.tr_niveau2_total td {
    font-weight: bold;
    padding: 1px 5px;
}
tr.tr_niveau4 td {
    font-weight: bold;
}
.tableau_donnees tr td {
    text-align: right;
}
.ligne_desactivee,
tr.ligne_desactivee td {
    font-style: italic;
    color: rgb(9, 158, 202) !important;
}
tr.ligne_donnee.ligne_selectionnee ,
tr.ligne_donnee_light.ligne_selectionnee {
    background-color: rgb(137, 201, 280) !important;
}

/* PAGINATION TABLEAUX */
.pagination_fiche {
    width: 140px;
    position: relative;
    text-align: center;
    margin: 12px 2% 0 0;
    float: right;
}
.pagination_fiche span {
    position: relative;
    top: 7px;
}
.pagination_fiche i {
    color: #005477;
    cursor: pointer;
    position: absolute;
}
.pagination_fiche .fa-arrow-circle-left {
    left: 0;
}
.pagination_fiche .fa-arrow-circle-right {
    right: 0;
}
i.page_precedente {
    position: absolute;
    top: 8px;
    left: 15px;
    cursor: pointer;
    color: #09aee3;
}
i.page_precedente:hover {
    transition: color 0.6s;
    color: #005477;
}

/* MENU_CONTEXTUEL */
.clicmenu,
.clicmenurev {
    cursor: pointer;
}
#menu_contextuel {
    position: fixed;
    background: #e4e4e4;
    width: 200px;
    z-index: 1000;
    border: 1px solid grey;
    border-radius: 3px;
    box-shadow: 2px 3px 4px #444;
    font-size: 12px;
}
#menu_contextuel ul {
    list-style-type: none;
}
#menu_contextuel ul li {
    border-bottom: 1px dotted grey;
    padding: 0px;
    cursor: pointer;
}
#menu_contextuel ul li > :not(a) {
    padding: 6px 10px;
}
#menu_contextuel ul li:hover {
    background-color: #4141ff;
    color: white;
}
#menu_contextuel ul li i {
    padding-right: 8px;
}
#menu_contextuel ul li a {
    text-decoration: none;
    color: inherit;
    display: block;
    padding: 6px 10px;
}

.zone-boutons {
    float: right;
    margin-right: 1%;
    margin-top: 8px;
}

/* GRILLE PAGE EDITION */
div.row div.card {
    /*    margin: 4px 2px;*/
    /*    border: 1px solid #EDEDED;*/
    /*    border-radius: 18px !important;*/
}
.div_contenu {
    min-height: 530px;
    height: 100%;
    position: relative;
    overflow-x: hidden;
    overflow-y: auto;
}

.grille_espace {
    width: 100%;
    float: left;
    height: 20px;
}
.grille_separateur {
    width: 96%;
    float: left;
    border-top: 1px dotted silver;
    margin: 4px 2%;
}
.grille_large_separateur {
    width: 96%;
    float: left;
    border-top: 1px dotted silver;
    padding-bottom: 3px;
    margin: 20px 2%;
}
.grille_edition_1,
.grille_edition_2,
.grille_edition_3,
.grille_edition_4,
.grille_edition_5,
.grille_edition_5 {
    padding: 3px 0 6px;
    float: left;
    width: 100%;
    box-sizing: border-box;
}

/* Conteneurs de grilles CSS Grid */
.grille_edition_grid_1,
.grille_edition_grid_2,
.grille_edition_grid_3,
.grille_edition_grid_4,
.grille_edition_grid_5,
.grille_edition_grid_6 {
    padding: 3px 0 6px;
    display: grid;
    width: 100%;
    box-sizing: border-box;
    gap: 0 10px;
}
.grille_edition_1 h3,
.grille_edition_2 h3,
.grille_edition_3 h3,
.grille_edition_4 h3,
.grille_edition_5 h3,
.grille_edition_6 h3 {
    text-align: center;
    font-size: 13px;
    padding: 0 0 2px 0;
    margin: 0;
    float: left;
    width: 100%;
}

.grille_edition_grid_1 h3,
.grille_edition_grid_2 h3,
.grille_edition_grid_3 h3,
.grille_edition_grid_4 h3,
.grille_edition_grid_5 h3,
.grille_edition_grid_6 h3 {
    text-align: center;
    padding: 0 0 10px 0;
    width: 100%;
    grid-column: 1 / -1; /* grid-column: start / end : 1 = commence à la ligne de grille 1 (première colonne) et -1 = se termine à la ligne de grille -1 (dernière colonne). Cela permet de mettre le titre sur toute la largeur des colonnes. */
}
.grille_edition_1 .bloc_champ {
    width: 100%;
}
.grille_edition_2 .bloc_champ {
    width: 50%;
}
.grille_edition_3 .bloc_champ {
    width: 33.3%;
}
.grille_edition_4 .bloc_champ {
    width: 25%;
}
.grille_edition_5 .bloc_champ {
    width: 20%;
}
.grille_edition_6 .bloc_champ {
    width: 16.6%;
}

/* Grilles d'édition CSS Grid */
.grille_edition_grid_1 {
    grid-template-columns: 1fr;
}

.grille_edition_grid_2 {
    grid-template-columns: 1fr 1fr;
}

.grille_edition_grid_3 {
    grid-template-columns: 1fr 1fr 1fr;
}

.grille_edition_grid_4 {
    grid-template-columns: 1fr 1fr 1fr 1fr;
}

.grille_edition_grid_5 {
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
}

.grille_edition_grid_6 {
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
}
@media screen and (max-width: 640px) {
    .grille_edition_2 .bloc_champ,
    .grille_edition_3 .bloc_champ,
    .grille_edition_4 .bloc_champ,
    .grille_edition_5 .bloc_champ,
    .grille_edition_6 .bloc_champ {
        width: 100%;
    }
    .grille_edition_grid_2,
    .grille_edition_grid_3,
    .grille_edition_grid_4,
    .grille_edition_grid_5,
    .grille_edition_grid_6 {
        grid-template-columns: 1fr;
    }
    .cache_petit {
        display: none;
    }
}
/*@media screen and (max-width: 1025px)
{
    body{
        zoom:0.70 !important;
    }
}
@media screen and (max-width: 1366px)
{
    body{
        zoom:0.75;
    }
}*/
/* BLOC EDITION */
.bloc_champ {
    position: relative;
    float: left;
    min-height: 29px;
}

/* Wrapper flex pour aligner deux bloc_champ côte à côte (ex: ref_client + modele_facture) */
.bloc_champ_flex_row {
    align-items: flex-start;
}
.bloc_champ_flex_row > .bloc_champ {
    flex: 1;
    float: none !important;
    min-width: 0;
    position: relative !important;
    display: flex;
    flex-direction: column;
    min-height: 50px;
}
.bloc_champ_flex_row > .bloc_champ > label {
    width: 100% !important;
    max-width: 100% !important;
    float: none !important;
    text-align: left !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 18px !important;
    font-size: 11px;
    display: block;
}
.bloc_champ_flex_row > .bloc_champ > div {
    position: static !important;
    left: auto !important;
    right: auto !important;
    width: 100% !important;
}

/* Version flexbox de .bloc_champ */
.bloc_champ_flex {
    display: flex;
    align-items: center;
    min-height: 29px;
    position: relative;
}

/* Styles pour les éléments enfants de .bloc_champ_flex */
.bloc_champ_flex > label {
    width: 105px;
    text-align: right;
    white-space: nowrap;
    flex-shrink: 0;
    margin-right: 15px;
}

.bloc_champ_flex > div {
    flex: 1;
    line-height: 28px;
    z-index: auto;
}

.bloc_champ_flex > div > div {
    position: relative;
}
.bloc_champ label,
.bloc_champ_flex label,
.chronos-label,
label.form-label {
    color: #6b7785;
    font-weight: 500;
    line-height: 28px;

    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;

    letter-spacing: .3px;
}
.bloc_champ > label:first-letter,
.bloc_champ label:first-letter,
.bloc_champ_flex > label:first-letter,
.bloc_champ_flex label:first-letter,
.chronos-label:first-letter,
label.form-label:first-letter {
    text-transform: uppercase;
}
.bloc_champ > label {
    width: 120px;
    text-align: left;
    float: left;
    white-space: nowrap;
}
.bloc_champ .cutlabel {
    text-align: center;
    white-space: nowrap;
    box-sizing: border-box;
}
.bloc_champ > div > label {
    text-align: center;
    white-space: nowrap;
    float: left;
    position: relative;
}
.bloc_champ > div:not(.marge_prev) {
    position: absolute;
    left: 135px;
    right: 10px;
    line-height: 28px;
    z-index: auto;
}
.bloc_champ > div > div {
    float: left;
    position: relative;
}
.div_contenu input,
.div_contenu textarea,
.bloc_champ input,
.bloc_champ textarea,
.bloc_champ_flex input,
.bloc_champ_flex textarea {
    width: 100%;
    height: 22px;
    text-indent: 1px;
    padding-left: 0;
    box-sizing: border-box;
    background-color: #ffffff;
    border-radius: 6px;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.div_contenu textarea,
.bloc_champ textarea,
.bloc_champ_flex textarea {
    height: 52px;
    resize: none;
}
.div_contenu input.right,
.bloc_champ input.right,
.bloc_champ_flex input.right {
    padding-right: 5px;
}
.div_contenu input.bouton_droit,
.bloc_champ input.bouton_droit,
.bloc_champ_flex input.bouton_droit,
div.content_support .tableau_donnees input.bouton_droit {
    padding-right: 36px;
}
.bloc_champ .select_bouton,
.bloc_champ_flex .select_bouton {
    padding-right: 22px !important;
}
.bloc_champ .select_bouton button,
.bloc_champ_flex .select_bouton button {
    position: absolute;
    height: 22px;
    top: 4px;
}
.div_contenu input[disabled].lien,
.div_contenu input[readonly].lien,
.bloc_champ input[disabled].lien,
.bloc_champ input[readonly].lien,
.bloc_champ_flex input[disabled].lien,
.bloc_champ_flex input[readonly].lien {
    color: rgb(9, 158, 202);
}
.div_contenu input[type='checkbox'],
.div_contenu input[type='radio'],
.bloc_champ input[type='checkbox'],
.bloc_champ input[type='radio'],
.bloc_champ_flex input[type='checkbox'],
.bloc_champ_flex input[type='radio'] {
    position: relative;
    top: 2px;
    height: inherit;
}
.div_contenu .select,
.bloc_champ .select,
.bloc_champ_flex .select {
    width: 100%;
    padding: 0;
    height: 26px !important;
}
.bloc_champ .selectbouton button,
.bloc_champ_flex .selectbouton button {
    height: 22px;
    margin-top: -1px;
}
.bloc_champ .selectbouton div,
.bloc_champ_flex .selectbouton div {
    right: 22px;
    left: 0;
    position: absolute;
}
input:focus,
textarea:focus,
.select select:focus {
    border-color: #005477;
    box-shadow: 0 0 0 2px rgba(0, 84, 119, .12);
    outline: none;
}
.div_contenu .select select,
.bloc_champ .select select,
.bloc_champ_flex .select select {
    background-color: #ffffff;
    padding-right: 22px;
    z-index: 5;
}
.div_contenu .select:before,
.bloc_champ .select:before,
.bloc_champ_flex .select:before {
    width: 29px;
    bottom: 2px;
    top: 2px;
}
.div_contenu .select:after,
.bloc_champ .select:after,
.bloc_champ_flex .select:after {
    right: 9px;
    top: 52%;
}
.bloc_champ button,
.bloc_champ_flex button,
button.bouton_droit {
    position: absolute;
    color: #64748b;
    border: 1px solid #d5dbe1;
    background-color: white;
    width: 32px;
    right: 0;
    bottom: 2.5px;
    top: 3px;
    cursor: pointer;
    border-radius: 4px;
    line-height: 100% !important;
    transition: background-color .15s ease, border-color .15s ease;
}
.bloc_champ button:hover {
    background-color: #f1f5f8;
    border-color: #b9c4cf;
}

.bloc_champ.bloc_desactive {
    display: none;
    visibility: hidden;
}

.div_contenu .oblig:after {
    top: -2px;
}

.large_label .bloc_champ > label {
    width: 190px;
}

.large_label .bloc_champ > div {
    left: 205px;
}

.large_label .bloc_champ_flex > label {
    width: 190px;
    margin-right: 15px;
}

.content_detail {
    margin: 0 0.5%;
    background-color: white;
    border: 1px solid silver;
    border-radius: 0;
    /*
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;
    */
    padding: 5px 0.5%;
}

.div_contenu .content_detail {
    border: none;
}

/* ONGLETS */
.content_detail.content_onglets {
    border-top: 1px solid silver;
    padding: 0 !important;
    bottom: 45px;
    top: 31px;
    left: 0;
    right: 0;
    position: absolute;
    overflow-y: auto;
    z-index: 9;
}
.content_onglets iframe {
    width: 100%;
    height: 99%;
    border: none;
}
.content_onglets .grille_edition_1,
.content_onglets .grille_edition_2,
.content_onglets .grille_edition_3,
.content_onglets .grille_edition_4,
.content_onglets .grille_edition_5,
.content_onglets .grille_edition_6 {
    margin-top: 6px;
}

.onglet,
.onglet_selected {
    padding: 8px 5px;
    border-radius: 0 4px 0 0;
    border-color: silver;
    font-size: inherit;
}
.onglet {
    margin: 0;
    border-width: 1px 1px 0 0;
    background-color: white;
}
.onglet:hover {
    background-color: hsl(0, 0%, 95%);
}
.onglet_selected,
.onglet_selected:hover {
    color: #005477;
    border-width: 1px 1px 0 0;
    background-color: #e5e5e5;
}

#content_onglet {
    border-left: 1px solid silver;
    border-width: 0 0 0 1px;
    margin: 0 0.5%;
    padding: 0;
    width: 99%;
    background-color: #fff;
    z-index: 10;
}

.bloc_boutons_onglet {
    bottom: 1px;
    height: 36px;
    left: 0;
    right: 0;
    position: absolute;
    margin: 2px 0.5%;
}

#footer_fiche_detail {
    height: 36px;
    padding-top: 3px;
}
.div_contenu .fleches_onglet {
    display: none;
    position: absolute;
    z-index: 50;
    border: 1px solid silver;
    float: left;
    cursor: pointer;
    padding: 6px 0;
    background-color: white;
}
#content_onglet {
    overflow: hidden;
}

/* TABLEAU DANS ONGLET */
.div_contenu #onglet_fiche_detail .conteneur_tableau_donnees {
    left: 0;
    right: 0;
}
.div_contenu #content_detail .conteneur_tableau_donnees,
.div_contenu #onglet_fiche_detail .conteneur_tableau_donnees,
.div_contenu #onglet_fiche_detail .conteneur_tableau_donnees tr td,
.div_contenu #onglet_fiche_detail .conteneur_tableau_donnees tr th {
    border: 0;
    /*    background-color: #42a2eb;*/
    font-weight: bold;
    color: white;
}
.div_contenu #onglet_fiche_detail .conteneur_tableau_donnees.central,
.div_contenu #onglet_fiche_detail .conteneur_tableau_donnees.central tr td,
.div_contenu #onglet_fiche_detail .conteneur_tableau_donnees.central tr th {
    border: inherit;
    border-width: inherit;
    background-color: inherit;
    color: inherit;
    font-weight: inherit;
}
.div_contenu #onglet_fiche_detail .conteneur_tableau_donnees table {
    border: none;
}
.div_contenu .tr_header th,
.div_contenu .tr_header td {
    /*    background-color: #42a2eb;*/
    font-weight: bold;
    color: white;
}
/*.div_contenu tr.ligne_donnee td {
font-size: 13px;
}*/
.conteneur_tableau_donnees.entete,
.conteneur_tableau_donnees.entete tr td,
.conteneur_tableau_donnees.entete tr th {
    /*    background-color: #42a2eb;*/
    color: #fff;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

/* BARRE DE PROGRESSION */
.progress-bar {
    width: 82px;
    height: 3px;
    margin-top: 1px;
    border-radius: 16px;
    box-shadow:
        inset 0 1px 2px #000,
        0 1px 0 #2b2b2b;
    float: right;
    padding: 1px 0 4px 1px;
    overflow: hidden;
}
.contenu-bar {
    height: 7px;
    border-radius: 12px;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.3),
        inset 0 -1px 3px rgba(0, 0, 0, 0.4),
        0 1px 1px #000;
    background: url(../../images/degrade_progressbar.png) repeat-y;
    background-size: 100%;
}

/* AUTOCOMPLETION */
.conteneur_autocompletion {
    position: relative;
    overflow: visible !important;
    z-index: 35;
}
div.autocompletion {
    background-color: white;
    z-index: 1000 !important;
    position: absolute;
    float: none !important;
    width: 100%;
    /*    border-bottom-right-radius:5px;*/
    /*    border-bottom-left-radius:5px;*/
    top: -3px;
    /*    box-shadow: 1px 1px 1px grey;*/
    display: none;
    border: 0px;
    max-height: 155px;
    overflow-y: scroll;
}
.autocompletion_div {
    text-align: left;
    cursor: pointer;
    line-height: 25px;
    border: 1px solid silver;
    border-width: 1px 1px 0;
    padding-left: 4px;
    float: none !important;
    background-color: white;
}
.autocompletion_div:last-child {
    border-width: 1px;
}
.autocompletion_div:hover,
.autocompletion_selected {
    background-color: #099eca;
    color: #ffffff;
}
.autocompletion_no_results {
    font-style: italic;
    line-height: 25px;
    padding-left: 4px;
}

.bloc_champ > div > div > div.autocompletion {
    float: left;
    position: relative;
}

/* Pieces jointes */
.div_attachement {
    position: absolute;
    overflow: hidden;
    width: 100px;
    height: 52px;
    text-align: center;
}
.div_attachement .fa-times {
    position: absolute;
    top: 0;
    right: 12px;
    cursor: pointer;
    color: red;
}
.div_attachement.selectionnee {
    border: 1px dotted black;
}

/*STYLE CSS POUR CREER DES LEGENDES*/
.my-legend .legend-title {
    text-align: left;
    margin-bottom: 8px;
    font-weight: bold;
    font-size: 90%;
}
.my-legend .legend-scale ul {
    margin: 0;
    padding: 0;
    float: left;
    list-style: none;
}
.my-legend .legend-scale ul li {
    display: block;
    float: left;
    width: 50px;
    margin-bottom: 6px;
    text-align: center;
    font-size: 80%;
    list-style: none;
}
.my-legend ul.legend-labels li span {
    display: block;
    float: left;
    height: 15px;
    width: 50px;
}
.my-legend .legend-source {
    font-size: 70%;
    color: #999;
    clear: both;
}
.my-legend a {
    color: #777;
}

/* specifique footer */
#div_footer_astreinte {
    position: absolute;
    margin: auto;
    bottom: 30px;
    border: 2px solid #ff0000;
    right: 20%;
    left: 20%;
    background-color: #ffffff;
    color: #ff0000;
    font-size: 16px;
    text-align: center;
    padding: 15px;
}
#div_footer_astreinte div {
    background-color: #ffff00;
    padding: 5px;
    border: 1px solid #ffd800;
}

/* Pour la suite harmoniser si possible */
.filtre_div_input {
    background-color: white;
    padding: 1px 2px;
}
.filtre_div_input .select {
    margin-top: 4px;
    width: 93%;
}
.filtre_div_input .input_text {
    height: 20px;
}

#footer_fiche_detail.flow {
    overflow: visible;
}
.content_detail.container {
    margin-top: 10px;
    margin-bottom: 10px;
}

/*doit avoir le meme width que .input_text*/
.InputTextButton {
    margin: 2px 0;
    width: 100%;
    border-collapse: collapse;
    border-spacing: 0;
}
table.InputTextButton tr td {
    margin: 0;
    padding: 0;
    overflow: visible;
    background-color: white;
}
.InputTextButton input[type='text'] {
    margin: 0;
    border: 1px solid silver;
    height: 20px;
    width: 100%;
    padding: 0;
    border-top-left-radius: 3px;
    border-bottom-left-radius: 3px;
    border-top-right-radius: 0px;
    border-bottom-right-radius: 0px;
}
.InputTextButton input[type='button'],
.InputTextButton button,
.minibouton {
    position: static;
    font-weight: bold;
    margin: 0;
    padding: 0 3px;
    height: 22px;
    cursor: pointer;
    background: transparent;
    border: 1px solid silver;
    border-left: 0;
    border-top-right-radius: 3px;
    border-bottom-right-radius: 3px;
    border-top-left-radius: 0px;
    border-bottom-left-radius: 0px;
    width: 100%;
    box-sizing: border-box;
}

.td_label {
    font-weight: bold;
    text-align: right;
    padding-right: 5px;
    color: #6b7785;
    /*
    text-transform: lowercase;
    */
}

.ligne_on td {
    background-color: RGB(9, 158, 202) !important;
    color: #ffffff !important;
    padding: 2px 3px;
}
.ligne_off {
    background-color: #ffffff;
    color: #000000;
}
.ligne_off_2 {
    background-color: #f3f3f3;
    color: #000000;
}

.scrollTop {
    cursor: pointer;
    margin-top: 2px;
    opacity: 0.8;
    display: inline-block;
    margin-right: 3px;
    transform: rotate(-90deg);
}
.scrollTop:hover {
    opacity: 1;
}
.scrollTop:after {
    font-family: 'Font Awesome 5 Free';
    content: '\0027A0';
    color: #ffffff;
    background-color: #099eca;
    border-radius: 5px;
    font-size: 2em;
    padding: 2px;
    transition:
        background 0.6s,
        color 0.6s,
        opacity 0.6s;
}
.scrollTop:hover:after {
    color: #ffffff;
    background-color: #005477;
    transition:
        background 0.6s,
        color 0.6s,
        opacity 0.6s;
}

.libelle_filtre_bk {
    /*    background-color: rgb(9, 158, 226);*/
    color: white;
    padding: 5px 15px;
    height: 18px;
    border-top: 1px solid silver;
    border-bottom: 1px solid silver;
    font-size: 14px;
}

.left_corner {
    border-left: 1px solid silver;
    -webkit-border-top-left-radius: 5px;
    -moz-border-radius-topleft: 5px;
    border-top-left-radius: 5px;
}
.right_corner {
    border-right: 1px solid silver;
    -webkit-border-top-right-radius: 5px;
    -moz-border-radius-topright: 5px;
    border-top-right-radius: 5px;
}

.container {
    margin-top: 10px;
    margin-bottom: 10px;
}

div.tiret_nul {
    margin: 3px auto;
    width: 15px;
    height: 5px;
    background-color: #f22e2e;
    border-radius: 2px;
}
.invisible {
    display: none;
}

.survol_nouvelle_categorie:hover {
    color: #099eca;
    cursor: pointer;
}

.entete_annee {
    width: 75%;
    margin: 0 auto;
    border-collapse: separate;
}
.entete_annee .td_left {
    border-left: 1px solid silver;
    border-top-left-radius: 8px;
    border-bottom-left-radius: 8px;
}
.entete_annee .td_right {
    border-right: 1px solid silver;
    border-top-right-radius: 8px;
    border-bottom-right-radius: 8px;
}
.entete_annee .libelle_filtre_bk a {
    color: silver;
}
.entete_annee .libelle_filtre_bk a:hover {
    color: white;
}
.error_info {
    color: red;
}
.msg_info {
    color: green;
}
input.error {
    border-color: red;
    background-color: #f78181;
}
div.error {
    border-color: red;
    background-color: #f78181;
    color: white;
    border-radius: 5px;
}

#footer_fiche_detail .bt_add {
    margin-top: 0;
}

#div_societe {
    position: relative;
    float: right;
    width: 320px;
    height: 20px;
    padding-top: 8px;
    border-radius: 5px;
    right: 7%;
    margin: 15px 0;
    vertical-align: top;
}
#div_societe .select {
    position: absolute !important;
    right: 18px;
    width: 250px !important;
    display: inline-block !important;
    top: 2.5px !important;
}

.marge_prev {
    margin: 20px auto;
}

.participant {
    margin: 1px auto;
    padding-left: 5px;
}
.employe_primexis .bloc_champ {
    margin: 4px 0;
}

.img-zoom-container {
    position: relative;
}
.img-zoom-lens {
    position: absolute;
    border: 1px solid #d4d4d4;
    width: 50px;
    height: 50px;
}
.zoomer {
    border: 2px solid silver;
    border-radius: 3px;
    width: 400px;
    height: 400px;
    position: absolute !important;
    top: -5000px;
    left: -5000px;
    box-shadow: 10px 4px 8px gray;
    z-index: 32;
}
.bloc_champ.attribut.text_area,
.bloc_champ_flex.attribut.text_area {
    min-height: 60px;
}

.bloc_champ.attribut label {
    width: 220px;
    overflow: hidden;
    text-overflow: clip;
    white-space: nowrap;
}

.bloc_champ.attribut > div {
    left: 225px;
}

.bloc_champ_flex.attribut > label {
    width: 190px;
    margin-right: 15px;
    overflow: hidden;
    text-overflow: clip;
    white-space: nowrap;
}

.balance > td,
.balance > thead > td,
.balance > th,
.balance > thead > th {
    padding-right: 0px;
}

.bloc_alerte_modif_histo {
    margin-top: 13px;
    margin-right: 26%;
    font-weight: bold;
    padding: 5px 0.5%;
    float: right;
    text-align: center;
    width: 280px;
    border-left: 3px solid transparent;
}
.span-select-multiple-spannable {
    display: inline-block;
    width: 100%;
    line-height: 20px;
    border: 1px solid silver !important;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    z-index: 99;
    cursor: pointer;
}
.select-multiple-spannable {
    z-index: 100 !important;
}
.col-quantite {
    color: rgb(9, 158, 202) !important;
}
.content-multiple-select-spannable {
    overflow: visible !important;
}
.content-multiple-select-spannable div.select:first-child {
    z-index: 100 !important;
}

/* switch button */
.switch {
    position: relative;
    display: inline-block;
    width: 40px;
    height: 23px;
}

.switch input {
    opacity: 0;
    width: 0;
    height: 0;
}

.slider {
    position: absolute;
    cursor: pointer;
    top: 2px;
    left: 0;
    right: 0;
    /*    bottom: 0;*/
    background-color: #ccc;
    -webkit-transition: 0.4s;
    transition: 0.4s;
    width: 100%;
    height: 20px;
}

.slider:before {
    position: absolute;
    content: '';
    height: 16px;
    width: 16px;
    left: 4px;
    bottom: 2px;
    background-color: white;
    -webkit-transition: 0.4s;
    transition: 0.4s;
}

input:focus + .slider {
    box-shadow: 0 0 1px #42a2eb;
}

input:checked + .slider:before {
    -webkit-transform: translateX(17px);
    -ms-transform: translateX(17px);
    transform: translateX(17px);
}

.slider.round {
    border-radius: 26px;
}

.slider.round:before {
    border-radius: 50%;
}

.bloc_champ .switch,
.bloc_champ_flex .switch {
    top: 2px;
    /*
    left: calc(50% - 25px);
    */
}

.filtre_complementaire span {
    float: left;
    font-weight: bold;
    margin: 6px 15px;
}
#iframe_annuaire {
    top: 130px;
    width: 100%;
}
#iframe_annuaire .title_support img {
    display: none;
}
#iframe_annuaire .title_support {
    width: 100%;
    text-align: center;
    font-weight: bold;
}
.vertical {
    writing-mode: vertical-lr;
}

div.bloc_help_cloture {
    position: absolute;
    right: 324px;
    top: 7px;
    text-align: center;
    height: 23px;
    width: 150px;
    margin: 0 0.5%;
    color: white;
    background-color: hsl(206, 81%, 66%); /*white;*/
    border: 3px solid silver;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;
    padding: 5px 0.5%;
}
.badge.rounded-pill {
    color: white;
    border-radius: 5px;
    font-size: 12px;
    padding: 3px 6px;
    display: inline-block;
    font-weight: 500;
}
/* Nuage de mots */
body .bloc_champ.bt_filtre_on_off,
body .bloc_champ_flex.bt_filtre_on_off {
    text-align: left;
    font-weight: normal;
    font-size: 16px;
    min-height: auto;
    width: auto;
    margin: 4px;
    padding: 4px 10px;
    border: 0px;
    border-radius: 7px;
    /*    background-color: rgb(9, 158, 226);*/
    color: white;
}
body .bloc_champ.bt_filtre_on_off.bt_on,
body .bloc_champ_flex.bt_filtre_on_off.bt_on {
    background-color: DarkGreen;
    font-weight: bold;
}

.paging_content {
    display: flex;
    align-items: center;
    justify-content: center;
}
.nopaging,
.paging {
    float: left;
    padding: 7px 12px;
    margin: 7px;
}
.paging {
    cursor: pointer;
    border-radius: 8px;
    border: 1px solid transparent;
    transition:
        color 0.3s,
        border 0.3s;
}
.paging.selected {
    color: #000055;
    /*    background-color: rgb(9, 158, 226);*/
    color: white;
    border: 1px solid rgb(9, 158, 226);
}
.paging:hover {
    background-color: #f8f8ff;
    color: black;
    border: 1px solid rgb(9, 158, 226);
}

.ligne_donnee .fa-times,
.ligne_donnee_light .fa-times,
.badge.rounded-pill.badge_times {
    color: #ff071c;
}
.ligne_donnee .fa-check,
.ligne_donnee_light .fa-check,
.badge.rounded-pill.badge_check {
    color: #35cf57;
}
#bloc_boutons_haut,
#barre_laterale {
    display: none;
}

.bloc_info {
    float: left;
    width: 140px;
    height: 60px;
    padding: 10px;
    margin-left: 20px;
    border: 1px solid silver;
    border-top: 4px solid rgb(9, 158, 202);
    transition: background 0.6s;
    cursor: pointer;
}
.bloc_info h3 {
    font-size: 11px;
    text-transform: uppercase;
    font-weight: normal;
}
.bloc_info span {
    display: inline-block;
    font-size: 26px;
    margin-top: 16px;
}
.bloc_info:hover {
    background-color: #eee;
}

.categorie-attribut:before {
    clear: both;
}
.categorie-attribut {
    padding: 2px 5px;
    border-bottom: 1px solid silver;
    margin-top: 15px;
    clear: both;
}
div#div_complements h3.categorie-attribut {
    margin-bottom: 12px;
}

.select-container {
    position: relative;
    /*border: 1px solid #ccc;*/
    /*padding: 5px;*/
    /*border-radius: 5px;*/
    cursor: text;
    /*min-height: 40px;*/
    float: right;
    width: 300px;
    background-color: white;
    height: 34px;
    position: relative;
}
#select-input-societe {
    border: none;
    outline: none;
    width: 100%;
    position: absolute;
    top: 18px;
    left: 0;
}
.selected-text {
    display: inline;
    font-size: 14px;
}
.filtres_header .selected-text span {
    color: black;
}
.dropdown {
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    background: white;
    border: 1px solid #ccc;
    max-height: 150px;
    overflow-y: auto;
    z-index: 1000;
    display: none;
    font-size: 14px;
}
.dropdown div {
    padding: 5px;
    cursor: pointer;
    border-bottom: 1px solid #f0f0f0;
}
.dropdown div:hover {
    background: #f0f0f0;
}
.dropdown div.disabled {
    color: gray;
    pointer-events: none;
}
.removable > strong {
    cursor: pointer;
}

/* flex_horizontal_vertical */
.flex_around_center {
    display: flex;
    justify-content: space-around;
    align-items: center;
}
.flex_center_center {
    display: flex;
    justify-content: center;
    align-items: center;
}
.flex_start_center {
    display: flex;
    justify-content: start;
    align-items: center;
}
.flex_end_center {
    display: flex;
    justify-content: end;
    align-items: center;
}

.flex_center_stretch {
    display: flex;
    justify-content: center;
    align-items: stretch;
}

.flex_start_stretch {
    display: flex;
    justify-content: start;
    align-items: stretch;
}

.flex_between_stretch {
    display: flex;
    justify-content: space-between;
    align-items: stretch;
}

.flex_between_start {
    display: flex;
    justify-content: space-between;
    align-items: start;
}

.flex_between_center {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.flex_end_bottom {
    display: flex;
    justify-content: end;
    align-items: flex-end;
}

.flex_row_reverse_center {
    display: flex;
    flex-direction: row-reverse;
    justify-content: center;
    align-items: center;
}

.flex_row_reverse_center {
    display: flex;
    flex-direction: row-reverse;
    justify-content: center;
    align-items: center;
}

.flex_col {
    display: flex;
    flex-direction: column;
}

/* cercle du logo */
.crop_circle_65,
.crop_circle_48 {
    display: flex;
    justify-content: center;
    align-items: center;
    border-radius: 50%;
    border: 1px solid #005477;
    box-shadow: 2px 2px 6px #666;
    color: #005477;
    overflow: hidden;
    font-weight: bold;
}
.crop_circle_65 {
    width: 65px;
    height: 65px;
    font-size: 38px;
}
.crop_circle_48 {
    width: 40px;
    height: 40px;
    font-size: 30px;
}

.crop_circle_65 img,
.crop_circle_48 img {
    width: 100%;
    height: 100%;
}
.crop_circle_48 i {
    font-size: 19px;
}

div.entete_fiche {
    padding: 0px 1%;
    background-color: #03a9f417; /*#c0c0c042*/
}

div.entete_fiche div.flex_center_center {
    width: 5%;
    padding: 2px;
}
div.entete_fiche div button {
    padding: 7px 15px;
}

@keyframes spin {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}

.spinner-rotate {
    animation: spin 1s linear infinite;
}

.gap-10 {
    gap: 10px;
}

.gap-5 {
    gap: 5px;
}

.gap-20 {
    gap: 20px;
}

td.texte_tronque,
div.texte_tronque,
span.texte_tronque {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.label_title {
    margin: 0 0 20px 0;
    font-weight: bold;
    color: #005477;
    line-height: 28px;
}

/* Nouveaux filtres_header à utiliser avec flexbox */
.filtres_header_non_float {
    border: 1px solid silver;
    border-radius: 5px;
    height: 38px;
    margin: 10px 10px 0 0;
    padding: 7px 10px;
    position: relative;
    vertical-align: top;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: space-between;
    overflow: visible;
}
.filtres_header_non_float span:first-child {
    color: white;
    display: inline-block;
    font-size: 14px;
    margin-top: 2px;
    margin-right: 10px;
    padding-top: 0px;
    vertical-align: top;
    height: 20px;
    overflow: hidden;
}
.filtres_header_non_float .select {
    display: inline-block;
    margin: 0;
    width: 180px;
}
div.div_contenu .filtres_header_non_float .select {
    display: inline-block;
    margin: 0;
    width: 180px;
}
div.div_contenu .filtres_header_non_float .select::before,
.bloc_champ .select::before {
    width: 21px;
    bottom: 2.5px;
    top: 1.5px;
}
div.div_contenu .filtres_header_non_float .select::after,
.bloc_champ .select::after {
    right: 4px;
    top: 47%;
}
.filtres_header_non_float .multiselect-wrapper {
    display: flex;
    align-items: center;
    margin: 0 !important;
    width: 180px;
    position: relative;
    overflow: visible;
    height: 100%;
}

.footer-flex {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 100%;
    position: relative;
}
.footer-center {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    gap: 10px;
}
.footer-right {
    position: absolute;
    right: 10px;
    top: 0;
    height: 100%;
    display: flex;
    align-items: center;
}
.footer-right button {
    margin-left: 20px;
}

.clearfix::after {
    content: '';
    display: table;
    clear: both;
}


/**
 * Onglet Attributs 
 * ***/
div#tr_onglet_hautATRBT div.card {
    background: #fff;
    border: 1px solid #e3e8ee;
    border-radius: 6px;
    margin: 12px auto;
    padding: 0 0 10px;
}
/* Bandeau de categorie d'attributs : aligne sur le gris de la charte
   (fond #f7f9fb + filet #e8edf2, comme .entete_fiche) au lieu du bleu clair
   #e8f7fe, qui etait le seul de son espece dans l'application.
   Le libelle vient d'une categorie saisie par l'utilisateur : on le laisse en
   casse d'origine, sans text-transform. */
div#tr_onglet_hautATRBT div.card h3{
    background-color: #f7f9fb;
    color: #005477;
    font-weight: 600;
    border-bottom: 1px solid #e8edf2;
    padding: 10px 15px;
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 6px;
}
/* Aide contextuelle / mode opératoire */
.aide-trigger {
    cursor: pointer;
    font-size: 12px;
    font-weight: normal;
    color: #3498db;
    margin-left: 12px;
}
.bloc_aide {
    background: #f0f4f8;
    border: 1px solid #aed6f1;
    border-radius: 6px;
    border-left: 4px solid #005477;
    padding: 14px 18px;
    margin: 8px 10px 16px;
    font-size: 12px;
    line-height: 1.6;
}
.bloc_aide h5, .bloc_aide h4 {
    font-weight: bold;
    margin: 6px 0;
    font-size: 1.1em;
}
.bloc_aide h4 {
    color:#005477;
}
.bloc_aide h4:before {
    content: 'ⓘ';
    padding-right: 5px;
}
.bloc_aide .attention {
    margin: 6px 0 0 0;
    font-size: 11px;
    color: #555;
}
.bloc_aide .attention:before {
    content: '⚠';
    padding-right: 5px;
    color: orange;
}

.bloc_aide table {
    width:100%;
    border-collapse:collapse;
    margin-bottom:12px;
}
.bloc_aide table td {
    padding:4px 8px;
    border-bottom:1px solid #ddd;
}
.bloc_aide table th {
    padding:5px 8px;
    text-align:left;
}
.bloc_aide ol, .bloc_aide ul {
    margin:0 0 6px 20px;
    padding:0;
}



.message_edition {
    /*padding: 5px 12px;
    border-radius: 4px;
    font-size: 13px;
    position: absolute;
    left: 30%;
    right: 30%;
    margin-top: 2px;
    text-align: center;
    top: 18px;*/

    font-weight: 600;
    margin:0 1%;
    padding:7px 12px;
    border-left: 4px solid #005477;
    background:#f8f9fa;
    border-radius:0 4px 4px 0;
    display:flex;
    align-items:center;
    gap:10px;
    font-size:13px;
}
.message_edition--info {
    background-color: #e8f4fd;
    color: #1a6fa8;
    border-color: #bee3f8;
}
.message_edition--warning {
    background-color: #fff8e1;
    color: #856404;
    border-color: #ffc107;
}
.message_edition--error {
    background-color: #ffdada;
    color: #680202;
    border-color: #ff071c;
}
.message_edition--success {
    background-color: #e0ffe4;
    color: #0e5717;
    border-color: #35cf57;
}

.message_edition i.fa {
    font-size:16px;
    flex-shrink:0;
}

.message_edition--info i.fa {
    color:#005477;
}

.message_edition em {
    margin-left:auto;
    font-size:11px;
    color:#6c757d;
}

/* Wrapper inline pour champs conditionnels type projet (valo TJM) — display:flex survivant au reset JS el.style.display='' */
.typeProjetInlineWrapper {
    display: flex;
    flex-shrink: 0;
    align-items: center;
    gap: 4px;
    white-space: nowrap;
}

/* ============================================================================
   Refonte GLOBALE des boutons (inspiree de la maquette fiche affaire)
   - Primaire (.button_valid)  : teal de marque #005477, plein
   - Secondaire (.button_standard, .bt) : blanc, contour leger
   - Danger (.button_cancel)   : rouge discret (contour)
   - Coins arrondis 6px, padding & transitions homogenes.
   Ordre : base -> secondaire -> primaire/danger, pour que les classes
   combinees (ex. .bt.button_valid) resolvent vers la bonne couleur.
   NB : les themes qui ciblent .bt_rd.button_valid (classique/refonte) gardent
   leur rendu specifique (specificite superieure).
   ============================================================================ */
.bt,
.button_valid,
.button_cancel,
.button_standard,
.button_disabled {
    border-radius: 6px;
    padding: 5px 12px;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.4;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}

/* Secondaire / neutre : fond gris tres clair (au lieu de blanc, pour se
   distinguer du fond de page blanc), contour leger */
.bt,
.button_standard {
    background-color: #eef2f6;
    color: #334155;
    border: 1px solid #d5dbe1;
}
.bt:hover,
.button_standard:hover {
    background-color: #e1e8f0;
    border-color: #b9c4cf;
    color: #334155;
}

/* Primaire : teal de marque, plein */
table.InputTextButton button.button_valid,
.button_valid {
    background-color: #005477;
    color: #ffffff;
    border: 1px solid #005477;
}
.button_valid:hover {
    background-color: #044a66;
    border-color: #044a66;
    color: #ffffff;
}
/* Icone (::after) du bouton primaire : blanche pour rester lisible sur le
   fond teal (par defaut .bt:after est bleu #42a2eb). Vaut pour toute icone
   posee sur un button_valid (refresh, check, ...). */
.bt.button_valid:after {
    color: #ffffff;
}

/* Danger : rouge discret (contour) */
.button_cancel {
    background-color: #ffffff;
    color: #d0342c;
    border: 1px solid #e3a9a5;
}
.button_cancel:hover {
    background-color: #fbecea;
    border-color: #d0342c;
    color: #d0342c;
}

/* Desactive : muet */
.button_disabled {
    background-color: #eef1f4;
    color: #9aa7b2;
    border: 1px solid #e0e5ea;
    cursor: default;
}

/* Boutons semantiques des barres d'action de fiche (cibles par ID stable) :
   la police/positionnement de l'icone viennent de .bt:after (ces boutons
   sont des .bt) ; on ajoute juste le glyphe et la couleur. */

/* Supprimer -> icone poubelle */
#bt_supprimer::after {
    content: '\f014'; /* fa-trash */
    color: #d0342c;
}

/* Valider (et "Valider et retour", meme id) -> vert succes + coche */
#bt_valider {
    background-color: #2e9e5b;
    border-color: #2e9e5b;
    color: #ffffff;
}
#bt_valider:hover {
    background-color: #278a4f;
    border-color: #278a4f;
    color: #ffffff;
}
#bt_valider::after {
    content: '\f00c'; /* fa-check */
    color: #ffffff;
}

/* "Annuler" neutre (ex. annuler une instance de facturation) : gris + icone
   fleche-retour, pour le distinguer nettement du bouton Supprimer (poubelle
   rouge). AfficheBoutonCancelSiDroit ajoute .button_cancel (rouge) : on le
   neutralise ici en gris (specificite .bt.X.button_cancel > .button_cancel). */
.bt.annuler_instance,
.bt.annuler_instance.button_cancel {
    background-color: #eef2f6;
    color: #334155;
    border-color: #d5dbe1;
}
.bt.annuler_instance:hover,
.bt.annuler_instance.button_cancel:hover {
    background-color: #e1e8f0;
    border-color: #b9c4cf;
    color: #475569;
}
.bt.annuler_instance::after {
    content: '\f0e2'; /* fa-arrow-rotate-left (annuler / revenir en arriere) */
    color: #64748b;
}

/* "Invalider" (ex. invalider l'echeance / annuler la validation) : neutre gris
   + icone interdiction (fa-ban), distincte de Annuler (fleche-retour) et de
   Supprimer (poubelle). Meme neutralisation du .button_cancel rouge. */
.bt.invalider_validation,
.bt.invalider_validation.button_cancel {
    background-color: #eef2f6;
    color: #334155;
    border-color: #d5dbe1;
}
.bt.invalider_validation:hover,
.bt.invalider_validation.button_cancel:hover {
    background-color: #e1e8f0;
    border-color: #b9c4cf;
    color: #475569;
}
.bt.invalider_validation::after {
    content: '\f05e'; /* fa-ban (invalider) */
    color: #64748b;
}

/* Nouvelle classe reutilisable : icone copie/duplication (suit la convention
   des .bt.trash / .bt.check). Appliquee au bouton Dupliquer via son id car il
   est genere par AfficherBouton (pas de classe custom possible). */
.bt.copy::after,
#bt_dupliquer::after {
    content: '\f0c5'; /* fa-copy */
}
#bt_dupliquer::after {
    color: #ffffff; /* icone blanche sur le bouton teal */
}

/* Icone a GAUCHE du libelle (au lieu de droite). On conserve le systeme
   .bt.X::after (glyphes) et on repositionne via flexbox : bouton en inline-flex
   + icone en premier (order:-1). Exclusion des .navbouton (menus deroulants). */
.bt:not(.navbouton) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.bt:not(.navbouton)::after {
    order: -1;
    margin: -4px 5px -1px 0; /* espace a droite de l'icone, avant le texte */
}

/* ============================================================================
   Menu "Liens" (fiche affaire) facon maquette : panneau blanc, categories,
   icone par ligne + icone lien externe, hover gris clair.
   Scope .menu_liens pour ne pas toucher les autres .navbouton.
   ============================================================================ */
.menu_liens ul {
    background-color: #ffffff !important;
    color: #334155 !important;
    border: 1px solid #e3e8ee !important;
    border-radius: 10px !important;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .14) !important;
    text-shadow: none !important;
    padding: 6px 0 !important;
    min-width: 290px !important;
    max-height: 380px;
    overflow-y: auto;
}
.menu_liens ul li {
    padding: 0 !important;
    text-align: left !important;
}
/* En-tete de categorie */
.menu_liens ul li.menu_liens_cat {
    padding: 11px 14px 4px !important;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .6px;
    text-transform: uppercase;
    color: #94a3b8;
    cursor: default;
}
.menu_liens ul li.menu_liens_cat:hover,
.menu_liens ul li.menu_liens_cat:hover a {
    background: none !important;
    color: #94a3b8 !important;
    opacity: 1 !important;
}
/* Ligne de lien */
.menu_liens ul li a {
    display: flex !important;
    align-items: center;
    justify-content: flex-start;
    gap: 10px;
    padding: 8px 14px !important;
    color: #334155 !important;
    text-decoration: none;
    text-align: left !important;
}
.menu_liens ul li a:hover,
.menu_liens ul li:hover a {
    background-color: #f1f5f8 !important;
    color: #005477 !important;
    opacity: 1 !important;
}
.menu_liens_icone {
    color: #64748b;
    width: 16px;
    text-align: center;
    flex-shrink: 0;
}
.menu_liens ul li a:hover .menu_liens_icone {
    color: #005477;
}
.menu_liens_libelle {
    flex: 1;
    text-align: left !important;
    white-space: nowrap;
    padding-left: 0 !important; /* annule .navbouton span { padding-left:10px } */
}
/* Le libelle est un <span> : il heritait du chevron .navbouton span:after
   (rendu en carre "tofu") -> on le neutralise pour le menu Liens. */
.menu_liens ul li span::after {
    content: none !important;
    display: none !important;
}
.menu_liens_ext {
    color: #cbd5e1;
    font-size: 11px;
    flex-shrink: 0;
}
.menu_liens ul li a:hover .menu_liens_ext {
    color: #94a3b8;
}
/* Chevron du bouton en FA6 (le nom FA5 ne resout pas toujours) */
.menu_liens > span::after {
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
}

/* ============================================================================
   Composant "workflow de validation" : badges de valideurs.
   Genere par getBadgesWorkflowValidation(). Chaque badge est teinte par le
   statut : la couleur exacte vient de la base via --wf-color (sinon defaut par
   classe). valide = vert/check, attente = orange/point, refuse = rouge/croix.
   ============================================================================ */
.wf-valideurs {
    display: inline-flex;
    flex-wrap: nowrap;
    gap: 2px;
    align-items: center;
    vertical-align: middle;
}
.wf-badge {
    flex-shrink: 0;
}
.wf-badge {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    padding: 0 5px;
    border-radius: 8px;
    font-size: 9px;
    font-weight: 600;
    line-height: 1.5;
    white-space: nowrap;
    color: var(--wf-color, #64748b);
    background-color: #f2f5f8; /* fallback si color-mix non supporte */
    background-color: color-mix(in srgb, var(--wf-color, #64748b) 13%, #ffffff);
    border: 1px solid #e3e8ee; /* fallback */
    border: 1px solid color-mix(in srgb, var(--wf-color, #64748b) 32%, #ffffff);
}
.wf-badge i {
    font-size: 7px;
}
/* Couleurs par defaut si la base ne fournit pas de couleur */
.wf-badge--valide  { --wf-color: #2e9e5b; }
.wf-badge--attente { --wf-color: #e08e0b; }
.wf-badge--refuse  { --wf-color: #d0342c; }

/* Badges plus grands dans la colonne Decision de l'onglet Validation (contexte
   .content_etapes_validation) — l'onglet Factures garde les badges compacts. */
.content_etapes_validation .wf-badge {
    font-size: 12px;
    padding: 3px 11px;
    border-radius: 12px;
    gap: 5px;
}
.content_etapes_validation .wf-badge i {
    font-size: 10px;
}

/* Onglet Validation : lignes de HAUTEUR UNIFORME (max 5 étapes) → tableau plus
   léger. Le motif (textarea) héritait de `.div_contenu textarea { height:52px }`
   et gonflait la ligne « en cours » → on le compacte sur une ligne. Il
   s'agrandit au focus pour permettre la saisie. */
.content_etapes_validation tr.ligne_donnee > td {
    height: 34px;
    vertical-align: middle;
}
.content_etapes_validation textarea,
.content_etapes_validation textarea.input_text {
    height: 26px !important;
    min-height: 26px !important;
    line-height: 18px;
    padding: 3px 6px;
    box-sizing: border-box;
    resize: none;
    overflow: hidden;
    vertical-align: middle;
}
.content_etapes_validation textarea:focus {
    height: 56px !important;   /* s'agrandit au clic pour saisir le motif */
    overflow: auto;
}

/* ============================================================================
   .icone_action : icones-boutons d'action (listes / onglets de fiche).
   Effet tactile moderne au survol (pastille arrondie) SANS changer la couleur
   propre de l'icone (vert = ajouter, rouge = supprimer, etc.).
   ============================================================================ */
.icone_action {
    cursor: pointer;
    font-size: 11px !important; /* icones d'action compactes (annule le fa-lg) */
    transition: transform .12s ease, filter .12s ease;
}
.icone_action:hover {
    transform: scale(1.22); /* leger zoom au survol, aucune taille en plus au repos */
    filter: brightness(0.9);
}
.icone_action:active {
    transform: scale(0.9); /* petit enfoncement au clic */
}

/* Variante desactivee : meme taille compacte que .icone_action, mais sans
   interaction. La transparence (tache non modifiable) vient de la couleur du
   <td> parent (#...30). */
.icone_action_off {
    font-size: 11px !important;
    cursor: default;
}

/* Icone de suppression : petit cadre rouge tres leger pour la faire ressortir. */
.icone_suppression {
    background-color: rgba(208, 52, 44, 0.09);
    border-radius: 6px;
    /*
    color: #d0342c !important;
    */
     /* glyphe poubelle en rouge (pas seulement le cadre) */
    color: red !important;
}
.icone_suppression:hover {
    background-color: rgba(208, 52, 44, 0.18);
}

/* ============================================================================
   Bandeau de titre de fiche (.entete_fiche) — SOCLE COMMUN à toutes les fiches
   qui adoptent cette structure (affaire, facture, …). Fond gris "toolbar" +
   trait ; pastille icône carré-arrondi (le FOND et le GLYPHE sont définis par le
   contexte : dossier vert pour l'affaire, icône de type pour la facture) ;
   cluster de boutons à droite. Le spécifique reste dans le module
   (affaires.css / facturation.css).
   ============================================================================ */
.div_contenu .entete_fiche {
    background-color: #f7f9fb;
    border-bottom: 1px solid #e8edf2;
}
.div_contenu .entete_fiche .crop_circle_48 {
    border: none !important;
    box-shadow: none;
    border-radius: 12px;
}
.div_contenu .entete_fiche .right {
    display: flex;
    flex-wrap: nowrap;
    flex-shrink: 0;
    justify-content: flex-end;
    align-items: center;
    align-self: center;
    gap: 8px;
}
.div_contenu .entete_fiche .right .bt {
    margin: 0;
    padding: 6px 12px;
    border: 1px solid #d5dbe1;
    border-radius: 6px;
    background-color: #ffffff;
    color: #334155;
    font-weight: 500;
    font-size: 12px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: background-color .15s ease, border-color .15s ease;
}
.div_contenu .entete_fiche .right .bt:hover {
    background-color: #f1f5f8;
    border-color: #b9c4cf;
}

/* ============================================================================
   Onglets de fiche (barre de tabs) — SOCLE COMMUN (généralisé depuis affaires.css).
   Style « segmenté » : pastille grise pour l'onglet inactif, pastille teal pleine
   pour l'actif, coins 8px. Scope `#onglet_fiche_detail #content_onglet .onglet`
   → toutes les fiches à onglets (affaire, facture, employé…). La fiche affaire a
   déjà ces règles dans affaires.css (identiques → pas de régression) ; les modules
   gardent leur spécifique par-dessus.
   ============================================================================ */
#onglet_fiche_detail #content_onglet {
    border: none;
    background-color: transparent;
    padding-left: 12px;
}
#onglet_fiche_detail .content_detail.content_onglets {
    top: 44px;
    border-top: none;
}
#onglet_fiche_detail #content_onglet .onglet {
    min-width: auto !important;
    margin: 0 4px 3px 0;
    padding: 8px 16px;
    border: none;
    border-radius: 8px;
    background-color: #e6ecf2;
    color: #5b6b7a;
    font-size: 13px;
    font-weight: 500;
    vertical-align: bottom;
    transition: color .15s ease, background-color .15s ease;
}
#onglet_fiche_detail #content_onglet .onglet:hover {
    background-color: #d5dee7;
    color: #005477;
}
#onglet_fiche_detail #content_onglet .onglet.onglet_selected,
#onglet_fiche_detail #content_onglet .onglet_selected:hover {
    background-color: #005477;
    color: #ffffff;
    font-weight: 600;
    border: none;
    box-shadow: 0 1px 3px rgba(0, 84, 119, 0.20);
}
#onglet_fiche_detail #content_onglet .onglet span[id^="nb_onglet"] {
    font-weight: 600;
    opacity: .75;
}

/* ============================================================================
   Formulaires de fiche — SOCLE COMMUN (généralisé depuis la fiche affaire).
   Inputs arrondis + focus teal ; labels gris, poids moyen, alignés à gauche.
   S'applique à TOUTES les fiches d'édition adoptant la structure standard
   (.div_contenu #content_detail .card / #onglet_fiche_detail .content_onglets).
   Les modules (affaires.css…) gardent leur spécifique par-dessus.
   ============================================================================ */
.div_contenu #content_detail .card input:not([type="checkbox"]):not([type="radio"]),
.div_contenu #content_detail .card select,
.div_contenu #content_detail .card textarea,
.div_contenu #onglet_fiche_detail .content_onglets .bloc_champ input:not([type="checkbox"]):not([type="radio"]),
.div_contenu #onglet_fiche_detail .content_onglets .bloc_champ select,
.div_contenu #onglet_fiche_detail .content_onglets .bloc_champ textarea {
    border: 1px solid #d5dbe1;
    border-radius: 4px;
}
.div_contenu #content_detail .card input:focus,
.div_contenu #content_detail .card select:focus,
.div_contenu #content_detail .card textarea:focus,
.div_contenu #onglet_fiche_detail .content_onglets .bloc_champ input:focus,
.div_contenu #onglet_fiche_detail .content_onglets .bloc_champ select:focus,
.div_contenu #onglet_fiche_detail .content_onglets .bloc_champ textarea:focus {
    border-color: #005477;
    outline: none;
    box-shadow: 0 0 0 2px rgba(0, 84, 119, .12);
}
.div_contenu #content_detail .bloc_champ label,
.div_contenu #content_detail .bloc_champ_flex label,
.div_contenu #onglet_fiche_detail .content_onglets .bloc_champ label,
.div_contenu #onglet_fiche_detail .content_onglets .bloc_champ_flex label {
    color: #6b7785 !important;
    font-weight: 500 !important;
}
.div_contenu #content_detail .bloc_champ > label,
.div_contenu #content_detail .bloc_champ_flex > label,
.div_contenu #onglet_fiche_detail .content_onglets .bloc_champ > label,
.div_contenu #onglet_fiche_detail .content_onglets .bloc_champ_flex > label {
    text-align: left;
}
/* Checkbox/radio des formulaires de fiche : largeur NATURELLE. Sinon
   `.bloc_champ input { width:100% }` les étire, et le navigateur centre le glyphe
   au milieu de la zone valeur → très loin du libellé, illisible. width:auto les
   ramène collés à droite du label. */
.div_contenu #content_detail .card input[type="checkbox"],
.div_contenu #content_detail .card input[type="radio"],
.div_contenu #onglet_fiche_detail .content_onglets .bloc_champ input[type="checkbox"],
.div_contenu #onglet_fiche_detail .content_onglets .bloc_champ input[type="radio"] {
    width: auto !important;
}

/* ============================================================================
   Champs de formulaire dans les POPINS (.content_support) — SOCLE COMMUN.
   Homogénéise toutes les popins support (labels gris à gauche, inputs/selects
   bordure #d5dbe1 + focus teal, flèche du widget .select aplatie). Le chrome
   (titre teal, corps blanc, boutons) est déjà charté par ailleurs.
   ============================================================================ */
.content_support .bloc_champ label {
    color: #6b7785;
    font-weight: 500;
}
.content_support input.input_text:not([type="checkbox"]):not([type="radio"]),
.content_support select,
.content_support textarea.input_text {
    border: 1px solid #d5dbe1;
    border-radius: 4px;
    box-sizing: border-box;
    background-color: #fff;
}
.content_support input.input_text:not([type="checkbox"]):not([type="radio"]) {
    height: 28px;
}
.content_support input.input_text:focus,
.content_support select:focus,
.content_support textarea.input_text:focus {
    border-color: #005477;
    outline: none;
    box-shadow: 0 0 0 2px rgba(0, 84, 119, .12);
}
.content_support .select {
    height: auto !important;
    overflow: visible;
}
.content_support .select select {
    border: 1px solid #d5dbe1 !important;
    border-radius: 4px;
    height: 28px;
    padding: 4px 26px 4px 8px;
    background-color: #fff;
    color: #334155;
}
.content_support .select select:focus {
    border-color: #005477 !important;
    outline: none;
    box-shadow: 0 0 0 2px rgba(0, 84, 119, .12);
}
.content_support .select:before {
    border: 0 !important;
    background-color: transparent !important;
}
.content_support .select:after {
    color: #64748b;
    font-size: 11px;
}

/* Le CONTENEUR .conteneur_tableau_donnees a un fond teal de base (règle globale) ;
   dans un onglet de fiche on le rend transparent — les cellules fournissent le
   fond clair. Sans ça, le teal du conteneur ressort là où les cellules ne
   couvrent pas (petit bloc teal en haut à droite, zone scrollbar). */
body .div_contenu :is(#onglet_fiche_detail, #liste_affaires) .conteneur_tableau_donnees {
    background-color: transparent !important;
}

/* En-têtes de tableaux dans les ONGLETS de fiche : gris clair façon maquette
   (généralisé depuis facturation.css). Sinon `.tr_header` tombe sur le teal
   global des listes de menu → mauvais rendu dans un onglet de fiche. Le préfixe
   `body` + id `#onglet_fiche_detail` bat la règle de base ET les thèmes teal.
   `#liste_affaires` : certaines fiches (groupe_affaires) nomment leur conteneur
   d'onglet différemment → on le couvre aussi via :is(). */
body .div_contenu :is(#onglet_fiche_detail, #liste_affaires) .conteneur_tableau_donnees tr th,
body .div_contenu :is(#onglet_fiche_detail, #liste_affaires) .conteneur_tableau_donnees.entete tr td,
body .div_contenu :is(#onglet_fiche_detail, #liste_affaires) .conteneur_tableau_donnees.entete tr th,
body .div_contenu :is(#onglet_fiche_detail, #liste_affaires) .tr_header th,
body .div_contenu :is(#onglet_fiche_detail, #liste_affaires) .tr_header td,
body .div_contenu :is(#onglet_fiche_detail, #liste_affaires) .tr_header_sub th,
body .div_contenu :is(#onglet_fiche_detail, #liste_affaires) .tr_header_sub td {
    background-color: #f3f6f9 !important;
    color: #64748b !important;
    text-transform: uppercase;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .3px;
    padding-top: 8px !important;
    padding-bottom: 8px !important;
    /* neutralise le cadre gris hérité de `.tr_header > td` (border grey tout autour) */
    border-top: none !important;
    border-left: none !important;
    border-right: none !important;
    border-bottom: 1px solid #e3e8ee !important;
}

/* ============================================================================
   Tableaux de REPORTING — design "synthèse juillet 2026", généralisé depuis
   synthese_production.css mais SCOPÉ à `body.reporting` (les classes tr_niveau*
   sont partagées par ~147 pages tous modules → on ne veut PAS toucher
   Compta/RH/facturation). Une page reporting opte-in via <body class="reporting">.
   Spécificité 0,2,x → bat les règles globales `.tr_niveau*` de commun.css.
   ============================================================================ */
body.reporting tr.tr_niveau1 .td_total,
body.reporting tr.tr_niveau2 .td_total,
body.reporting tr.tr_niveau1 .td_libelle,
body.reporting tr.tr_niveau2 .td_libelle,
body.reporting tr.tr_niveau1_total td,
body.reporting tr.tr_niveau2_total td {
    background-color: #d3e4ef;
}
body.reporting tr.tr_niveau3,
body.reporting tr.tr_niveau3_total {
    background-color: #e0ecf4;
}
/* Rendu "light" synthèse : dans le reporting, `ligne_donnee` adopte le même
   aspect épuré que `ligne_donnee_light` (bordure fine, sans zébrage lourd).
   Fait en CSS et NON par renommage de classe : plusieurs pages reporting ont
   du JS / CSS inline qui cible `.ligne_donnee` (le renommer les casserait). */
body.reporting tr.ligne_donnee {
    background-color: transparent;
}
body.reporting tr.ligne_donnee td {
    border-bottom: 1px solid #f1eeee;
}
body.reporting .value_negative {
    color: red;
}
body.reporting .value_positive {
    color: #00a000;
}

/* Formulaires de FILTRE reporting : les cartes filtre sont `content_detail card`
   SANS id #content_detail ni .div_contenu → le socle formulaire (fiches) ne les
   atteint pas. On applique le même socle charté (inputs arrondis + focus teal),
   scopé reporting. Le widget `.select` ($getTopSelect) supporte déjà ce style
   sur les fiches. */
body.reporting .content_detail input.input_text:not([type="checkbox"]):not([type="radio"]),
body.reporting .content_detail select {
    border: 1px solid #d5dbe1;
    border-radius: 4px;
}
body.reporting .content_detail input.input_text:focus,
body.reporting .content_detail select:focus {
    border-color: #005477;
    outline: none;
    box-shadow: 0 0 0 2px rgba(0, 84, 119, .12);
}
/* Vieux widget `.select` ($getTopSelect : div.select + bordure/boîte-flèche silver)
   harmonisé dans les filtres reporting → bordure charté, coins arrondis, flèche
   discrète, façon selects plats de l'espace Commerce. Scopé reporting (le widget
   est partagé par tout le site). */
body.reporting .select {
    height: auto !important;   /* libère la contrainte 22px pour un select aéré */
    overflow: visible;
}
body.reporting .select select {
    height: 28px;
    padding: 4px 26px 4px 8px;
}
/* champs texte du filtre alignés en hauteur sur les selects */
body.reporting .content_detail input.input_text:not([type="checkbox"]):not([type="radio"]) {
    height: 28px;
    box-sizing: border-box;
}
/* Labels des filtres reporting (td_label) : MÊME style que les labels de fiche
   (socle : gris clair, léger, aligné à gauche) pour un rendu homogène partout. */
body.reporting .td_label {
    font-weight: 500;
    text-align: left;
    vertical-align: middle;
}
/* Champs InputTextButton (dates, collaborateur…) alignés en hauteur sur les
   selects/inputs (sinon 18px vs 28px → désalignement vertical du filtre). */
body.reporting .content_detail .InputTextButton input,
body.reporting .content_detail .InputTextButton button {
    height: 28px;
    box-sizing: border-box;
    vertical-align: middle;
}
/* cellules du filtre centrées verticalement pour un alignement homogène */
body.reporting .content_detail td {
    vertical-align: middle;
}
/* Multi-select "spannable" (Service affaire / employé) : même format que le
   widget .select (bordure chartée, coins arrondis, 28px, flèche discrète). */
body.reporting .span-select-multiple-spannable {
    border: 1px solid #d5dbe1 !important;
    border-radius: 4px;
    height: 28px;
    line-height: 26px;
    padding: 0 24px 0 8px;
    box-sizing: border-box;
    background-color: #fff;
    color: #334155;
    position: relative;
}
body.reporting .span-select-multiple-spannable::after {
    content: '\25BC';
    color: #64748b;
    font-size: 11px;
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    pointer-events: none;
}
/* Labels des colonnes intermédiaires : un peu d'air à gauche pour ne pas
   être collés au champ de la colonne précédente (les labels de 1re colonne,
   :first-child, restent alignés au bord). */
body.reporting .content_detail td.td_label:not(:first-child) {
    padding-left: 14px;
}
/* Bloc filtre reporting en "carte" : bordure chartée + coins arrondis pour bien
   délimiter le filtre du reste de la page. Couvre les 2 wrappers rencontrés :
   .content_detail.card (synthese_production…) et fieldset.card (tableau_activite…).
   Le socle .div_contenu .content_detail supprime la bordure (border:none) et
   .content_detail impose border-radius:0 → on rétablit ici, arrondi et charté,
   avec une spécificité suffisante (0,4,1) pour l'emporter. */
body.reporting .content_detail.card,
body.reporting .div_contenu .content_detail.card,
body.reporting fieldset.card {
    border: 1px solid #d5dbe1 !important;
    border-radius: 7px !important;
    box-sizing: border-box;
}
/* Labels des filtres reporting en bloc_champ / bloc_champ_flex (layout moderne,
   hors div_contenu) → même gris charté que td_label et le socle fiche. */
body.reporting .content_detail .bloc_champ label,
body.reporting .content_detail .bloc_champ_flex label {
    color: #6b7785;
    font-weight: 500;
}
/* Selects intégrés DANS un en-tête de colonne teal (tri, filtre) : on les fond
   dans le header — fond translucide, texte/flèche blancs, bordure discrète —
   au lieu d'une boîte blanche qui détonne sur le teal. */
body.reporting .tr_header .select select,
body.reporting .tr_header_sub .select select {
    background-color: rgba(255, 255, 255, .14) !important;
    border: 1px solid rgba(255, 255, 255, .4) !important;
    color: #fff;
}
body.reporting .tr_header .select select option,
body.reporting .tr_header_sub .select select option {
    color: #334155;
    background-color: #fff;
}
body.reporting .tr_header .select:after,
body.reporting .tr_header_sub .select:after {
    color: #fff;
}

/* ============================================================================
   Segmented control (.segmented) — bascule type iOS : piste grise + segment
   actif blanc (teal) avec indicateur qui GLISSE. Segments équi-largeur.
   L'indicateur se positionne via data-active="0|1|2" sur le conteneur.
   Réutilisable pour tout switch de vue (Tableau / Graphe / …).
   ============================================================================ */
.segmented {
    --seg-count: 3;   /* nombre de segments — surcharger (ex. style="--seg-count:2") */
    position: relative;
    display: inline-flex;
    background: #eef2f6;
    border: 1px solid #e3e8ee;
    border-radius: 8px;
    padding: 3px;
    margin: 12px 0;
    vertical-align: middle;
}
.segmented::before {
    content: '';
    position: absolute;
    top: 3px;
    left: 3px;
    bottom: 3px;
    width: calc((100% - 6px) / var(--seg-count));
    background: #ffffff;
    border-radius: 6px;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .14);
    transition: transform .22s cubic-bezier(.4, 0, .2, 1);
    z-index: 0;
}
.segmented[data-active="1"]::before { transform: translateX(100%); }
.segmented[data-active="2"]::before { transform: translateX(200%); }
.segmented .seg {
    position: relative;
    z-index: 1;
    flex: 1 1 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    white-space: nowrap;
    border: 0;
    background: transparent;
    color: #64748b;
    font-size: 13px;
    font-weight: 500;
    padding: 7px 18px;
    cursor: pointer;
    transition: color .18s ease;
}
.segmented .seg:hover { color: #334155; }
.segmented[data-active="0"] .seg:nth-child(1),
.segmented[data-active="1"] .seg:nth-child(2),
.segmented[data-active="2"] .seg:nth-child(3) {
    color: #005477;
}

/* ============================================================================
   Bouton "Actualiser" homogène (.btn_refresh) — teal + icône refresh à gauche.
   Standard à généraliser sur tous les boutons Actualiser des pages filtre.
   ============================================================================ */
.btn_refresh {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    gap: 7px;
    /* !important : bat .InputTextButton button (fond transparent + bordure silver)
       qui gagnait en spécificité et rendait le bouton "blanc". */
    background-color: #005477 !important;
    color: #ffffff !important;
    border: 1px solid #005477 !important;
    border-radius: 6px !important;
    padding: 7px 16px !important;
    height: auto !important;
    width: auto !important;
    font-size: 12px;
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
    white-space: nowrap;
    transition: background-color .15s ease, border-color .15s ease;
}
.btn_refresh::before {
    content: '\f021'; /* fa-arrows-rotate (refresh) */
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    font-size: 12px;
}
.btn_refresh:hover {
    background-color: #044a66 !important;
    border-color: #044a66 !important;
    color: #ffffff !important;
}

/* ============================================================================
   REFONTE LISTES — pages FILTRE/LISTE (nouveau ton "maquette"). SCOPE :
   `.tabcontent_global` (conteneur des pages filtre) + `.liste_resultats` (le
   <table> de l'iframe de résultats). Les listes DANS les fiches
   (`#onglet_fiche_detail`) NE sont PAS touchées (autre conteneur, style propre).
   Préfixe `body` + `!important` pour battre le socle teal et les thèmes.
   ============================================================================ */

/* 1. En-tête de colonnes : teal foncé, blanc UPPERCASE, coins arrondis en haut.
   (Pas de chevron de tri ajouté : ceux-ci n'existent que sur les colonnes
   triables, gérées par le markup — la liste des instances n'en a pas.) */
/* .tr_footer partage ce traitement : c'est l'autre bandeau de chrome du même
   tableau (la ligne de total), et il doit donc porter exactement la même teinte,
   la même casse et la même graisse que l'en-tête. Sans cette ligne, une page qui
   balise correctement son total en .tr_footer retombait sur le style historique du
   socle — texte en casse d'origine, taille par défaut, filets gris — et détonnait
   à côté de son propre en-tête. C'est ce qui poussait certaines pages à détourner
   .tr_header pour leur ligne de total. */
body .tabcontent_global .tr_header,
body .tabcontent_global .tr_header td,
body .tabcontent_global .tr_header th,
body .tabcontent_global .tr_footer,
body .tabcontent_global .tr_footer td,
body .tabcontent_global .tr_footer th {
    background-color: #005477 !important;
    color: #ffffff !important;
    font-weight: 600;
    text-transform: uppercase;
    font-size: 11px;
    letter-spacing: .4px;
    border: none !important;
    padding-top: 3px;
    padding-bottom: 3px;
    vertical-align: middle;
}
/* En-tête compact : le select de colonne ne prend plus de place inutile
   (la boîte n'est plus visible) → on réduit sa hauteur. */
body .tabcontent_global .tr_header .select,
body .tabcontent_global .tr_header .select_attribute {
    height: 20px !important;
    line-height: 20px !important;
}
/* Bouton "sauver colonnes" (liste dynamique) : flottant à droite de l'en-tête,
   petit bouton blanc + icône teal, calé sur la hauteur du bandeau teal.
   !important pour battre le fond teal posé par le JS de la page. */
.tabcontent_global #btn_sauvegarder_colonnes {
    width: 18px !important;   /* tient dans l'espace de la scrollbar (~17px) */
    height: 28px !important;
    background-color: #ffffff !important;
    border: none !important;
    border-radius: 3px !important;
    color: #005477 !important;
    box-sizing: border-box;
}
.tabcontent_global #btn_sauvegarder_colonnes i {
    color: #005477 !important;
    font-size: 12px;
}
/* Hauteur du bandeau teal (tr_header) — compacte 28px. Le padding vertical du
   <td> s'AJOUTAIT au height (28+3+3=34px sur les listes simples) → on le met à 0
   ici ; le contenu reste centré via vertical-align:middle. */
body .tabcontent_global .tr_header td,
body .tabcontent_global .tr_header th {
    height: 28px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}
body .tabcontent_global .tr_header td:first-child,
body .tabcontent_global .tr_header th:first-child { border-top-left-radius: 8px; }
body .tabcontent_global .tr_header td:last-child,
body .tabcontent_global .tr_header th:last-child { border-top-right-radius: 8px; }

/* 2. Filtres du haut (Service / Société / Établissement…) : petite CARTE
   moderne (fond blanc, bordure claire, ombre douce), label gris UPPERCASE, et
   le <select> lui-même arrondi + focus teal. On garde le composant .select
   (et sa flèche) : c'est juste du restyle, rien de cassé. */
body .filtres_header,
body .filtres_header_non_float {
    background-color: #ffffff !important;
    color: #64748b !important;
    border: 1px solid #e3e8ee !important;
    border-radius: 8px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
    /* Label + select alignés verticalement (au lieu de vertical-align:top + float). */
    display: inline-flex !important;
    align-items: center;
    gap: 10px;
}
body .filtres_header .select,
body .filtres_header_non_float .select,
body .filtres_header .multiselect-wrapper,
body .filtres_header_non_float .multiselect-wrapper {
    float: none !important;
}
body .filtres_header span,
body .filtres_header_non_float span {
    color: #64748b !important;
}
body .filtres_header span:first-child,
body .filtres_header_non_float span:first-child {
    font-size: 11px !important;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .3px;
    margin: 0 !important;
    height: auto !important;
}
/* Le <select> du filtre : arrondi, bordure claire, hover + focus teal. */
body .filtres_header .select select,
body .filtres_header_non_float .select select {
    border: 1px solid #d5dbe1 !important;
    border-radius: 6px !important;
    background-color: #f7f9fb !important;
    color: #334155 !important;
    transition: border-color .15s ease, box-shadow .15s ease;
}
body .filtres_header .select select:hover {
    border-color: #b9c4cf !important;
}
body .filtres_header .select select:focus {
    border-color: #005477 !important;
    box-shadow: 0 0 0 2px rgba(0, 84, 119, .12) !important;
}

/* 3. Ligne de recherche : champs arrondis + LOUPE dans les inputs texte */
/* NB : le wrapper `.select` est sans bordure (composant `.select{border:0}`) et
   c'est le <select> natif à l'intérieur qui porte la bordure → on borde le
   <select> (et les inputs), PAS le wrapper, sinon double bordure. */
body .tabcontent_global .tr_filtre input:not([type="checkbox"]):not([type="radio"]),
body .tabcontent_global .tr_filtre select,
body .tabcontent_global .tr_filtre .input_text {
    border: 1px solid #d5dbe1 !important;
    border-radius: 6px !important;
    /* padding loupe (24px) inclus dans la largeur -> plus de débordement sur la
       colonne suivante (les inputs ont width:100%). */
    box-sizing: border-box !important;
    max-width: 100% !important;
}
body .tabcontent_global .tr_filtre input[type="text"],
body .tabcontent_global .tr_filtre .input_text:not(textarea) {
    padding-left: 24px;
    /* L'input remplit sa cellule -> son bord s'aligne avec l'en-tête de colonne
       (droite/gauche), au lieu de rester collé à gauche du <td>. */
    width: 100% !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%2394a3b8' stroke-width='1.6'%3E%3Ccircle cx='7' cy='7' r='4.3'/%3E%3Cline x1='10.5' y1='10.5' x2='14' y2='14'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: 8px center;
    background-size: 12px;
}
body .tabcontent_global .tr_filtre input:focus,
body .tabcontent_global .tr_filtre select:focus,
body .tabcontent_global .tr_filtre .input_text:focus {
    border-color: #005477 !important;
    outline: none;
    box-shadow: 0 0 0 2px rgba(0, 84, 119, .12);
}

/* 4. Lignes de résultats (iframe) : alternance douce + hover teal léger. Ciblé
   `.liste_resultats` (classe posée sur le <table> des résultats) → n'impacte pas
   les listes des fiches. */
body .liste_resultats tr.ligne_donnee:nth-child(odd) { background-color: #f7f9fb; }
body .liste_resultats tr.ligne_donnee:nth-child(even) { background-color: #ffffff; }
body .liste_resultats tr.ligne_donnee.hover:hover td,
body .liste_resultats tr.ligne_donnee.hover:hover td > i,
body .liste_resultats tr.ligne_donnee.hover:hover td > a {
    background-color: #eef5f8 !important;
}

/* 5. Bandeau total en bas de liste : blocs allégés (carte claire). */
div.affichage_total {
    border: 1px solid #e3e8ee;
    border-radius: 8px;
    background-color: #ffffff;
    color: #334155;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .05);
    padding: 6px 14px;
}

/* 6. Pagination : boutons blancs arrondis, page active teal, hover teal léger.
   (Pas de sélecteur de taille de page — non géré par l'appli.) */
.paging_content .paging {
    float: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    box-sizing: border-box;
    padding: 3px 6px;
    margin: 0 2px;
    border: 1px solid #e3e8ee !important;
    border-radius: 7px;
    background-color: #ffffff;
    color: #334155;
    font-size: 12px;
    font-weight: 500;
}
.paging_content .paging:hover {
    background-color: #eef5f8;
    border-color: #b9c4cf !important;
    color: #005477;
}
.paging_content .paging.selected {
    background-color: #005477 !important;
    border-color: #005477 !important;
    color: #ffffff !important;
}
.paging_content .nopaging {
    float: none;
    color: #94a3b8;
}

/* 7a. Badge de STATUT (colonne Statut, badge seul) : un peu plus grand. */
.liste_resultats .wf-badge {
    font-size: 10px;
    padding: 1px 7px;
    border-radius: 9px;
}
/* 7b. Badges de WORKFLOW (colonne Workflow, groupe .wf-valideurs) : petits +
   nowrap, comme l'onglet Factures de la fiche. Le title de la cellule
   (getTitreWorkflowValidation) liste les valideurs → pas besoin de wrap. */
.liste_resultats .wf-valideurs {
    flex-wrap: nowrap;
    gap: 2px;
}
.liste_resultats .wf-valideurs .wf-badge {
    font-size: 9px;
    padding: 0 5px;
    border-radius: 8px;
}

/* Légende d'aide repliable (onboarding). Sur les pages liste, `.tabcontent_global`
   est en position:absolute (top fixe) : une légende en flux la chevaucherait. Ici
   elle est repliée par défaut (summary compact) et, dépliée, le contenu s'affiche
   en OVERLAY au-dessus de la liste (aucun décalage de mise en page). Réutilisable :
   <details class="aide_legende"><summary>…</summary><div class="aide_legende_contenu">…</div></details>
   Prévoir un `top` un peu plus grand sur .tabcontent_global pour la ligne repliée. */
.aide_legende {
    margin: 6px 3% 0;
    position: relative;
    z-index: 60;
}
.aide_legende > summary {
    cursor: pointer;
    list-style: none;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    font-weight: 600;
    color: #005477;
    background: #f4f9fd;
    border: 1px solid #d6e6f2;
    border-left: 3px solid #005477;
    border-radius: 4px;
    padding: 6px 14px;
    user-select: none;
}
.aide_legende > summary::-webkit-details-marker { display: none; }
.aide_legende > summary i { color: #005477; }
.aide_legende_contenu {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    width: 70%;
    min-width: 420px;
    max-height: 62vh;
    overflow-y: auto;
    background: #f4f9fd;
    border: 1px solid #d6e6f2;
    border-left: 3px solid #005477;
    border-radius: 4px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .14);
    padding: 12px 18px;
    font-size: 12px;
    line-height: 1.5;
    color: #333;
}
.aide_legende_contenu p { margin: 0 0 8px; }
.aide_legende_contenu p:last-child { margin-bottom: 0; }
.aide_legende_contenu ul { margin: 0 0 8px 18px; padding: 0; }

/* 8. Barre de filtre date/projet/CdP au-dessus de certaines listes
   (.bloc_filtre_date, ex. liste des factures) : PAS de carte (évite le deux-tons
   gris-carte / inputs-blancs) → fond transparent, champs blancs bordés, plus
   aérés/hauts, labels gris. */
.bloc_filtre_date {
    background-color: #ffffff !important;   /* blanc (= inputs) → pas de deux-tons */
    border: 1px solid #e3e8ee !important;   /* on garde une délimitation */
    border-radius: 8px !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .03);
    padding: 6px 10px !important;
    box-sizing: border-box;
}
.bloc_filtre_date .td_label {
    color: #64748b !important;
    font-weight: 600;
    font-size: 12px;
    padding-right: 8px !important;
}
.bloc_filtre_date input.input_text,
.bloc_filtre_date .select select {
    border: 1px solid #d5dbe1 !important;
    border-radius: 6px !important;
    background-color: #ffffff !important;
    height: 30px !important;
}
.bloc_filtre_date .select,
.bloc_filtre_date .select select {
    height: 30px !important;
}
.bloc_filtre_date input.input_text:focus,
.bloc_filtre_date .select select:focus {
    border-color: #005477 !important;
    outline: none;
    box-shadow: 0 0 0 2px rgba(0, 84, 119, .12) !important;
}

/* 9. En-têtes de LISTES DYNAMIQUES (colonnes configurables via <select
   class="select_attribute">) : on les fait ressembler à des libellés propres
   (transparent, blanc, uppercase), et la flèche de config n'apparaît qu'au
   SURVOL de la cellule d'en-tête → en-tête aussi net que les listes simples. */
/* Le <select> natif : transparent, blanc, uppercase (= libellé propre). */
.tabcontent_global .tr_header .select_attribute {
    background-color: transparent !important;
    border: none !important;
    color: #ffffff !important;
    font-weight: 600 !important;
    text-transform: uppercase;
    font-size: 11px !important;
    letter-spacing: .4px;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    cursor: pointer;
    padding: 0 12px 0 0 !important;
}
/* Le WRAPPER .select dessine une boîte silver + une flèche grise : on retire la
   boîte, et la flèche devient un petit chevron blanc qui n'apparaît qu'au
   SURVOL de la colonne → en-tête net comme une liste simple. */
.tabcontent_global .tr_header .select::before {
    display: none !important;
}
.tabcontent_global .tr_header .select::after {
    content: '\25BE' !important;
    color: #ffffff !important;
    font-size: 10px !important;
    right: 2px !important;
    opacity: .7; /* chevron discret mais TOUJOURS visible */
    transition: opacity .12s ease;
}
.tabcontent_global .tr_header td:hover .select::after,
.tabcontent_global .tr_header th:hover .select::after {
    opacity: 1;
}
/* le menu déroulant (options) reste lisible : fond blanc, texte sombre. */
.tabcontent_global .tr_header .select_attribute option {
    color: #334155;
    background-color: #ffffff;
    text-transform: none;
}

table tr td.exergue{
    /* utilisé pour mettre en valeur une donnée dans une liste */
    font-weight:bold;
    color: #005477;
}


/* bloc légende */
#conteneur_legende {
    position: relative;
    cursor: help;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 12px;
    border: 1px solid #e3e8ee;
    border-radius: 8px;
    background-color: #ffffff;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
    color: #64748b;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .3px;
    white-space: nowrap;
}
#conteneur_legende > i {
    color: #005477;
    font-size: 13px;
}

#bloc_legende {
    display: block;
    visibility: hidden;
    opacity: 0;
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    z-index: 60;
    box-sizing: border-box;
    width: 280px;
    /* La legende peut etre longue (couleurs + liste des absences) :
        on la borne a la hauteur de la fenetre et on la fait defiler. */
    max-height: 70vh;
    overflow-y: auto;
    padding: 10px 12px;
    border: 1px solid #e3e8ee;
    border-radius: 8px;
    background-color: #ffffff;
    box-shadow: 0 4px 14px rgba(0, 0, 0, .12);
    color: #334155;
    font-size: 12px;
    font-weight: normal;
    text-transform: none;
    letter-spacing: 0;
    text-align: left;
    white-space: normal;
    transition: opacity 0.2s;
}
#conteneur_legende:hover #bloc_legende {
    opacity: 1;
    visibility: visible;
}
#bloc_legende b {
    color: #005477;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: .3px;
}
#bloc_legende ul {
    margin: 6px 0 0;
    padding: 0 0 0 18px;
}
#bloc_legende .ligne_legende {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 4px;
}
#bloc_legende .pastille_legende {
    flex: none;
    width: 12px;
    height: 12px;
    border-radius: 3px;
    border: 1px solid rgba(0, 0, 0, .08);
}
/* Un intertitre (Couleurs / Liste des absences) sauf le premier. */
#bloc_legende b {
    display: block;
    margin-top: 10px;
}
#bloc_legende b:first-child {
    margin-top: 0;
}