body {
    --bs-body-font-size: 0.8rem;
    --bs-body-font-weight: 400;
    --bs-body-line-height: 1.2;
}


.navbar-dark-all-page {
    background-color: #3575cc;
    opacity: 0.8;
    height: 100px;
    background-image: url("/static/vendor/front/svg/components/wave-pattern-light.678905678f26.svg");
}

.cursor-move {
    cursor: move;
}

.form-control {
    border-radius: 0 !important;
    padding: 3px 6px;
}

.form-control-sm {
    border-radius: 0 !important;
    padding: 3px 6px !important;
    min-height: auto !important;
    font-size: 0.875rem !important; /* ou 14px */
    line-height: 1.2 !important;
}


select.form-select {
    padding: 6px 2.25rem 6px 6px;
    line-height: 1.2;
    border-radius: 0 !important;
}


.form-control,
select.form-select,
select.form-control,
select.js-select,
.span-befor-search-input {
    background-color: #f1f3f5;
    border-color: #d7dee6;
    border-radius: 0;
    height: 30px;
}

select.form-select,
select.form-control,
select.js-select {
    background-position: right .65rem center;
    background-repeat: no-repeat;
    padding-right: 2.25rem !important;
    text-overflow: ellipsis;
    white-space: nowrap;
}

select.form-select-sm {
    padding-right: 2rem !important;
}

.ts-wrapper.form-control, .ts-wrapper.form-select {
   background-color: #f1f3f5;
}

/* TomSelect : aligner les widgets sur les <select> natifs
   (hauteur 30px, coins carrés, même bordure/fond). */
.ts-wrapper.form-select,
.ts-wrapper.form-control {
    border-radius: 0;
    padding: 0;
    border: 0;
    min-height: 0;
    height: auto;
}
.ts-wrapper.single .ts-control {
    min-height: 30px;
    height: 30px;
    border-radius: 0;
    border: 1px solid #d7dee6;
    background-color: #f1f3f5;
    padding-top: 0;
    padding-bottom: 0;
    display: flex;
    align-items: center;
    line-height: normal;
}
/* L'item sélectionné devient un conteneur centré pleine hauteur : le texte est
   centré verticalement même si le thème imbrique le libellé dans un <div>. */
.ts-wrapper.single .ts-control > .item {
    display: flex;
    align-items: center;
    height: 100%;
    padding: 0;
    margin: 0;
    line-height: normal;
}
.ts-wrapper.single .ts-control > input {
    height: auto;
    min-height: 0;
    margin: 0;
    padding: 0;
    align-self: center;
    line-height: normal;
}

/* Tom Select compact, aligned with PLAMOGES native selects.
   Apply this class to the field container. It supports both single and
   multiple widgets; multiple widgets can still grow onto several lines. */
.plamoges-tom-select-compact .ts-wrapper.form-select,
.plamoges-tom-select-compact .ts-wrapper.form-control {
    min-height: 30px;
    padding: 0;
    border: 1px solid #d7dee6 !important;
    border-radius: 0;
    background-color: #f1f3f5 !important;
    box-shadow: none;
    position: relative;
}

.plamoges-tom-select-compact .ts-control {
    min-height: 28px;
    align-items: center;
    padding: 0 2.25rem 0 6px;
    border: 0 !important;
    border-radius: 0;
    background: transparent !important;
    box-shadow: none;
    line-height: 1.2;
}

/* The legacy single-select rule draws its own inner border. Inside the
   reusable compact style, the wrapper is the only visible field surface. */
.plamoges-tom-select-compact .ts-wrapper.single .ts-control {
    min-height: 28px;
    height: 28px;
    padding: 0 2.25rem 0 6px;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none;
}

.plamoges-tom-select-compact .ts-wrapper.focus {
    border-color: #86b7fe !important;
}

.input-group-text {
  padding: .5rem 1rem;
  font-size: .8rem;
  border-radius: .3125rem;
}

.input-group-text {
  font-size: 1rem;
  font-weight: 300;
  line-height: 1;
}

textarea.form-control {
    background-color: #f1f3f5;
    border-color: #d7dee6;
    border-radius: 0;
    height: 40px;
}

.modal-header {
    border-radius: 0 !important;
    background-color: #DDDDDD; /* Couleur sombre type desktop */
    color: white;
    border-bottom: 2px solid var(--bs-primary);
    padding: 10px 15px;
    font-weight: bold;
}

#treeContainer {
    background: white;
    border: 1px solid #ccc;
    max-height: 300px;
    overflow-y: auto;
}

.span_ctrl {
    margin-top: 3px;
}

.span_ctrl span {
    cursor: pointer;
    transition: font-weight 0.2s ease;
}

.span_ctrl span:hover {
    font-weight: bold;
}

/* Style barre de langue */
.lang_bar {
    text-align: right;
}

.modal_primary {
    color: #377dff;
    background-color: rgba(55, 125, 255, .15);
    border-bottom: 2px solid var(--bs-primary);
}

.modal_primary h5 {
    color: #377dff;
}

.modal_default {
    color: #71869d;
    background-color: rgba(113, 134, 157, .15);
}

.modal_default h5 {
    color: #71869d;
}

.modal_danger {
    color: #ed4c78;
    background-color: rgba(237, 76, 120, 0.15);
    border-bottom: 2px solid var(--bs-danger);
}

.modal_danger h5 {
    color: #ed4c78;
}

.modal_success {
    color: #00c9a7;
    background-color: rgba(0, 201, 167, 0.15);
    border-bottom: 2px solid var(--bs-success);
}

.modal_success h5 {
    color: #00c9a7;
}

.modal_warning {
    color: #f5ca99;
    background-color: rgba(245, 202, 153, 0.15);
    border-bottom: 2px solid var(--bs-warning);
}

.modal_warning h5 {
    color: #f5ca99;
}


#treeDefault {
    height: 200px; /* hauteur fixe */
    overflow-y: auto; /* ajoute un ascenseur vertical si le contenu dépasse */
    border: 3px solid #ccc; /* optionnel, pour visualiser le conteneur */
    padding: 0.5rem; /* optionnel, pour l’esthétique */
}

#treeDefaultCheckbox {
    max-height: 200px; /* hauteur fixe */
    overflow-y: auto; /* ajoute un ascenseur vertical si le contenu dépasse */
    border: 3px solid #ccc; /* optionnel, pour visualiser le conteneur */
    padding: 0.5rem; /* optionnel, pour l’esthétique */
}

.navbar-brand {
    margin-left: 0px;
}

/* Si la largeur de l’écran est ≤ 360px */
@media (max-width: 360px) {
    .navbar-brand {
        width: 150px;
    }
}

.top_header {
    height: 30px;
    margin-bottom: 5px;
    width: 100%;
    align-items: center;
}


.top_header_module {
    background-color: #ebecee;
    width: 14%; /* largeur fixe */
    height: 30px;
    align-items: center;
    vertical-align: middle;
    text-align: center; /* centrer le texte */
    /* border-radius: 15px; */
    font-weight: bold;
    margin-left: 3px;

}

.top_header_lang {
    background-color: #d7d8da;
    width: 14%; /* largeur fixe */
    height: 30px;
    align-items: center;
    vertical-align: middle;
    text-align: center; /* centrer le texte */
    border-radius: 15px;
    font-weight: bold;
    margin-left: 3px;

}

.top_header_lang span {
    margin-top: 4px; /* décale le texte vers le bas */
    display: inline-block; /* nécessaire pour que margin-top s’applique correctement */
}

.top_header_module span {
    margin-top: 4px; /* décale le texte vers le bas */
    display: inline-block; /* nécessaire pour que margin-top s’applique correctement */
}

/*
.top_header_lang {
    width: 15%; !* largeur fixe *!
    border: 1px solid #ccc; !* bordure grise *!
    border-radius: 3px; !* arrondi *!
    text-align: center; !* centrer le texte *!
    padding: 2px 5px;
    !* un peu d’espace interne *!
    background-color: #cccccc;
    height: 100%;
    align-items: center; !* centre verticalement *!
    justify-content: center; !* centre horizontalement *!
}
*/

/* Tablettes (entre 768px et 991px) */
@media (max-width: 991px) and (min-width: 768px) {
    .top_header_lang {
        width: 20%;
    }
}

/* Sur mobile (max 768px), le bloc langue prend toute la largeur */
@media (max-width: 768px) {
    .top_header_lang {
        width: 100%;
        padding-bottom: 10px;
    }
}

/***** Gestion de la largeur globale de la page principale ****
****************************************************************/
@media (min-width: 576px) {
    .container, .container-sm {
        max-width: 740px
    }
}

@media (min-width: 768px) {
    .container, .container-md, .container-sm {
        max-width: 920px
    }
}

@media (min-width: 992px) {
    .container, .container-lg, .container-md, .container-sm {
        max-width: 1100px
    }
}

@media (min-width: 1200px) {
    .container, .container-lg, .container-md, .container-sm, .container-xl {
        max-width: 1290px
    }
}

/*Bandeau supérieur de la page d'accueil*/
.bandeau-page-accueil {
    background-color: #3575cc;
    opacity: 1;
    height: 100px;
    background-image: url("/static/img/bg_sub_header.ef774e876c4e.png");
}

/* Réglage de la page avec card */
.card-header-page {
    /*background-color: #ebecee; */
    background-color: #f3f4f6;
    padding: 5px 30px 5px 30px;
}

.card-body-page {
    padding: 20px;
}

.card-body-page .container {
    padding: 20px;
}

@media (max-width: 767.98px) {
    /* mobile <768px */
    .card-body-page .container {
        padding: 2px;
    }
}

/* Parcours candidat : groupes compacts des informations personnelles. */
.candidate-form-section {
    container-type: inline-size;
    margin-bottom: 1rem;
    overflow: visible;
    border: 1px solid #dbe5f1;
    border-radius: 8px;
    background: #fff;
}

.candidate-form-section:focus-within {
    position: relative;
    z-index: 5;
}

.candidate-form-section .ts-dropdown {
    z-index: 1080;
}

.candidate-form-section__header {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .7rem 1rem;
    border-bottom: 1px solid #e7edf5;
    background: #f2f7fd;
    border-radius: 8px 8px 0 0;
}

.candidate-form-section__icon {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    color: #2773d4;
    font-size: 1.1rem;
}

.candidate-form-section__title {
    margin: 0;
    color: #102a4c;
    font-size: 1rem;
    font-weight: 700;
}

.candidate-form-section__subtitle {
    margin: .1rem 0 0;
    color: #71839a;
    font-size: .78rem;
}

.candidate-form-section__body {
    padding: 1rem;
    border-radius: 0 0 8px 8px;
}

[data-candidate-field].d-none {
    display: none !important;
}

.candidate-form-section label {
    margin-bottom: .3rem;
    white-space: nowrap;
    font-size: .75rem;
}

.candidate-situation-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

@container (min-width: 720px) {
    .candidate-situation-grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.candidate-form-subsection + .candidate-form-subsection {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid #e7edf5;
}

.candidate-form-subsection__title,
.candidate-parent-column__title {
    margin-bottom: .75rem;
    color: #1e5fae;
    font-size: .9rem;
    font-weight: 700;
}

.candidate-parent-column + .candidate-parent-column {
    border-left: 1px solid #e7edf5;
}

.candidate-form-navigation {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin-top: 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid #e7edf5;
}

.candidate-form-navigation__actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .5rem;
}

.candidate-form-navigation .btn {
    flex-shrink: 0;
    white-space: nowrap;
}

.candidate-document-item {
    min-height: 100%;
    padding: .75rem;
    border: 1px solid #e1e8f0;
    border-radius: 6px;
}

@media (max-width: 767.98px) {
    .candidate-form-section label {
        white-space: normal;
    }

    .candidate-parent-column + .candidate-parent-column {
        margin-top: 1rem;
        padding-top: 1rem;
        border-top: 1px solid #e7edf5;
        border-left: 0;
    }
}

@media (max-width: 575.98px) {
    .candidate-situation-grid {
        grid-template-columns: 1fr;
    }

    .candidate-form-navigation,
    .candidate-form-navigation__actions {
        align-items: stretch;
        flex-direction: column-reverse;
        width: 100%;
    }

    .candidate-form-navigation .btn {
        width: 100%;
    }
}


/* Colonne A occupe 25% */
.palettegauche {
    padding-bottom: 10px;
    background-color: #f7faff;
}

/* Colonne B occupe 75% */
.palettedroite {
    padding-left: 10px;
}

/* Le bandeau de recherche doit grandir avec ses filtres sans imposer une hauteur fixe. */
.bandeau_recherche {
    min-height: 55px;
    height: auto;
    overflow-y: visible;
    background-color: #f7faff; /* juste pour visualiser */
    align-items: flex-start;
}

#searchInput {
    background-color: #ffffff;
    color: #333;
    height: 34px;
}

/* Tableau standard des modèles de page.
   La combinaison historique des classes M1 reçoit automatiquement le même
   rendu que `.plm-model-table`, sans reprise manuelle des écrans existants. */
:is(.table.plm-model-table, .table.table-sm.table-striped.table-bordered.align-middle) {
    border: 1px solid #dce6f1;
    border-collapse: separate;
    border-spacing: 0;
    border-radius: 7px;
    overflow: hidden;
}

:is(.table.plm-model-table, .table.table-sm.table-striped.table-bordered.align-middle) > :not(caption) > * > * {
    padding: 0.62rem 0.8rem;
    border-width: 0 0 1px;
    border-color: #e4eaf1;
    background-clip: padding-box;
    box-shadow: none;
    vertical-align: middle;
}

:is(.table.plm-model-table, .table.table-sm.table-striped.table-bordered.align-middle) > thead > tr > * {
    --bs-table-bg: #eaf4ff;
    color: #173b6d;
    background-color: #eaf4ff;
    font-size: 0.78rem;
    font-weight: 700;
}

:is(.table.plm-model-table, .table.table-sm.table-striped.table-bordered.align-middle) > tbody > tr:nth-child(odd) > * {
    --bs-table-bg: #fff;
    --bs-table-accent-bg: transparent;
    color: #29496f;
    background-color: #fff;
}

:is(.table.plm-model-table, .table.table-sm.table-striped.table-bordered.align-middle) > tbody > tr:nth-child(even) > * {
    --bs-table-bg: #f6f9fc;
    --bs-table-accent-bg: transparent;
    color: #29496f;
    background-color: #f6f9fc;
}

:is(.table.plm-model-table, .table.table-sm.table-striped.table-bordered.align-middle) > tbody > tr:last-child > * {
    border-bottom-width: 0;
}


@media (max-width: 767.98px) {
    /* mobile <768px */
    .bandeau_recherche {
        min-height: 100px;
        height: auto;
    }
}

/* Ligne L2 prend le reste */
.contenu_donnees_modele {
    background-color: #ffffff; /* juste pour visualiser */
}

.btn {
    border-radius: 0px 0px 0px 0px;
}

#ajoutAdminStructModal .modal-content {
    /*height: 90vh;  90% de la hauteur de l’écran
    background-color: #0a53be;*/
}

.btn-sm {
    height: 32px;
    line-height: 1.2; /* ajuste le centrage du texte */
}

/* Espace de filtres opérationnel réutilisable (pilote : Examens > Anonymats). */
.plm-filter-workspace {
    /* PAS d'overflow:hidden ici. Il tranchait le menu deroulant des Tom Select
       des que les filtres finissaient le cadre -- ce qui est le cas des quatre
       ecrans autres que les anonymats, ou un bloc de conseil et une barre
       d'actions prolongent la carte sous les champs. Le cadre arrondi tient
       sans, ses enfants ne touchant pas les angles. */
    overflow: visible;
    border: 1px solid #dfe5ec;
    border-radius: 6px;
    background: #fff;
    box-shadow: 0 0.1875rem 0.75rem rgba(20, 52, 89, 0.08);
}

.plm-filter-workspace__mode {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin: 0 1.25rem;
    padding: 1.1rem 0;
    border-bottom: 1px solid #e5eaf0;
}

.plm-filter-workspace__mode-icon {
    display: inline-flex;
    flex: 0 0 42px;
    width: 42px;
    height: 42px;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: #2874d0;
    background: #eaf3ff;
    font-size: 1.15rem;
}

.plm-filter-workspace__fields {
    margin: 0;
    padding: 1.25rem;
}

.plm-filter-workspace__fields .form-label {
    display: block;
    min-height: 1.25rem;
    margin-bottom: 0.5rem;
    color: #52667b !important;
    font-weight: 500;
}

.plm-filter-workspace__fields .js-program-level-selector > .plamoges-tom-select-compact {
    margin-top: 0 !important;
}

.plm-filter-workspace__fields .form-label .bi,
.plm-filter-workspace__fields > div > .form-label .bi {
    color: #2874d0;
}

/* Les champs de ce motif mesuraient 44px ici, puis 30px vingt lignes plus
   bas : deux regles pour une meme propriete, la seconde gagnant par sa
   specificite. Qui lisait la premiere se trompait, et un `.ts-control` hors
   du style compact gardait vraiment ses 44px. Une seule hauteur desormais,
   celle de la reference, ci-dessous. */
.plm-filter-workspace__fields .ts-control {
    align-items: center;
}

/* Les champs compacts du sous-menu « Notes et saisie ».
   Ces trois regles etaient reservees a #localExamAnonymizationsApp, du temps
   ou cette page etait le PILOTE du motif. Le proprietaire a demande le
   2026-09-22 que les quatre autres ecrans lui ressemblent vraiment : sans
   cette generalisation, ils gardaient la hauteur par defaut de Bootstrap et
   paraissaient plus hauts et plus aeres que la reference.
   La classe .plm-filter-workspace__fields n'existe que sur ces cinq ecrans,
   la portee reste donc exactement la meme. */
.plm-filter-workspace__fields .form-select:not(.ts-hidden-accessible) {
    min-height: 30px;
    height: 30px;
    border-color: #d7dee6;
    background-color: #f1f3f5;
}

.plm-filter-workspace__fields .plamoges-tom-select-compact .ts-wrapper {
    min-height: 30px;
    height: 30px;
    border-color: #d7dee6 !important;
    background-color: #f1f3f5 !important;
}

.plm-filter-workspace__fields .plamoges-tom-select-compact .ts-control {
    min-height: 28px !important;
    height: 28px !important;
}

/* Le menu deroulant doit passer AU-DESSUS de ce qui suit la carte de filtres
   -- sur « Notes », le bloc « Population de saisie » vient juste apres et le
   recouvrirait. Liberer l'overflow du cadre ne suffit donc pas. */
.plm-filter-workspace__fields .ts-dropdown {
    z-index: 1080;
}

.plm-filter-workspace__advice {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    margin: 0 1.25rem 1.1rem;
    padding: 0.85rem 1rem;
    border-left: 3px solid #5b9ce6;
    color: #245f9f;
    background: #f0f6fd;
}

.plm-filter-workspace__advice > .bi {
    flex: 0 0 auto;
    font-size: 1.35rem;
}

.plm-filter-workspace__actions {
    display: flex;
    justify-content: flex-end;
    gap: 0.75rem;
    padding: 1rem 1.25rem;
    border-top: 1px solid #e5eaf0;
    background: #fbfcfe;
}

@media (max-width: 767.98px) {
    .plm-filter-workspace__mode {
        align-items: stretch;
        flex-direction: column;
    }

    .plm-filter-workspace__mode .btn-group,
    .plm-filter-workspace__mode .btn {
        width: 100%;
    }

    .plm-filter-workspace__actions {
        flex-direction: column-reverse;
    }

    .plm-filter-workspace__actions .btn {
        width: 100%;
    }
}
