html, body,
button,
input,
select,
textarea {
    font-family: 'Open Sans', Arial, sans-serif !important;
}

:root {
    --bleu-commun: #1B4379;
    --bleu-commun-hover: #28528a;
    --bleu-pass: #0E619E;
    --bleu-pass-hover: #2a77ae;
    --vert-las1: #7CBF5C;
    --vert-las1-hover: #8ec972;
    --vert-las2: #009F7E;
    --vert-las2-hover: #1ab092;
    --gradient-bleu-vert: linear-gradient(-45deg, #0E619E 20%, #7CBF5C 100%);
    --gradient-bleu-pass: radial-gradient(#3B81B3, #0E619E);
    --gradient-vert-las1: radial-gradient(#9BD481, #7CBF5C);
    --gradient-vert-las2: radial-gradient(#3FBAA2, #009F7E);
    --bs-primary: #0E619E;
    --bleu-commun-transparent: #1b447978;
    --bs-primary-rgb: 27, 67, 121;
}

.bg-gradient-pass {
    background-image: var(--gradient-bleu-pass);
}
.bg-gradient-las-ms1 {
    background-image: var(--gradient-vert-las1);
}
.bg-gradient-las-ms2 {
    background-image: var(--gradient-vert-las2);
}

.bg-gradient-primary {
background-color: #1B4379;
background-image: linear-gradient(225deg,#1B4379 0%,#0d2d56 100%);
}

.bg-gradient-bleu-vert {
    background-color: var(--bleu-commun);
    background-image: var(--gradient-bleu-vert);
}

.bg-gradient-bleu-vert2 {
    background-color: #1B4379;
    background-image: linear-gradient(45deg,#0E619E 20%,#7CBF5C 100%);
}
.bg-primary {
  background-color: #1B4379 !important;
}
.sidebar {
    background-color: var(--bg-primary);
    width:18rem !important;
}
.sidebar-title {
    padding: 10px 1rem 10px;
    font-size:15px;
    font-weight:bold;
}
#accordionSidebar {
    display: flex;
    flex-direction: column;
}
#accordionSidebar .nav-item {
    width: 100%;
    margin-bottom:0.25rem;
    margin-top:0.25rem;
}
#accordionSidebar .nav-link {
    width: 100%;
}
.sidebar .sidebar-brand {
  background-color:none !important;
  width: 100%;
  height: 6rem; /* ajuste si besoin */
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);;
}
.topbar {
  height: 6rem;
}

.nav-icon {
    width: 30px;
    height: 30px;
    margin-right: 8px;
    vertical-align: middle;
}
.nav-link span {
    vertical-align: middle;
}

.card {
  overflow: hidden !important;
}

/* pousse le footer en bas proprement */
.sidebar-footer {
    margin-top: auto;
}

/* enlève les marges excessives du hr */
.sidebar hr.sidebar-divider {
    margin: 0.5rem 1rem 0.5rem 1rem !important;
}

.btn-primary {
  color: #fff;
  background-color: var(--bleu-commun);
  border-color: var(--bleu-commun);
}
.btn-primary:hover {
  color: #fff;
  background-color: var(--bleu-commun-hover);
  border-color: var(--bleu-commun-hover);
}

.btn-success {
  color: #fff;
  background-color: #a0d070;
  border-color: #a0d070;
}
.btn-success:hover {
  color: #fff;
  background-color: #b6de8e !important;
  border-color: #b6de8e !important;
}
.badge-success {
  color: #fff;
  background-color: #a0d070 !important;
  border-color: #a0d070 !important;
}

.btn-bleu-commun {
  color: #fff;
  background-color: var(--bleu-commun);
  border-color: var(--bleu-commun);
}
.btn-bleu-commun:hover {
  color: #fff;
  background-color: var(--bleu-commun-hover);
  border-color:var(--bleu-commun-hover);
}

.bg-info{
  color: #fff;
  background-color: var(--bleu-commun-transparent) !important;
  border-color:none !important;
}

.header {
  color: white;
  font-weight: normal;
  font-size: 1.5rem;
  text-align: center;

  border-radius: 10px;
  padding: 0.5rem;
  margin-bottom: 20px;

  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
}

.header-pass {
  background: var(--gradient-bleu-pass);
}

.header-las-ms1 {
  background: var(--gradient-vert-las1);
}

.header-las-ms2 {
  background: var(--gradient-vert-las2);
}

.card-header-pass{
  background: var(--gradient-bleu-pass);
}

.card-header-las-ms1 {
  background: var(--gradient-vert-las1);
}

.card-header-las-ms2 {
  background: var(--gradient-vert-las2);
}

/* CSS POUR TABULATOR*/
/* En-têtes de tous les tableaux Tabulator */

.tabulator .tabulator-header,
.tabulator .tabulator-col {
    background-color: var(--bleu-commun) !important;
    color: white;
}
.tabulator .tabulator-header .tabulator-col .tabulator-col-title {
    text-align: center !important;
}

.tabulator .tabulator-col:hover {
    background-color: var(--bleu-commun-hover) !important;
}

.tabulator .tabulator-col .tabulator-col-content {
    padding: 10px;
}

.tabulator .tabulator-col-title {
    font-size: 14px;
    font-weight: normal;
}
.tabulator-page.active {
  background-color: var(--bleu-commun) !important;
  border-color: var(--bleu-commun)!important;
  color: #fff;}
.tabulator-page:hover {
  color: var(--bleu-commun)!important;
}
.separateur-vertical-tabulator{
    border-left: 1px solid #dee2e6 !important;
}
.tabulator-gras {
        font-weight: bold;
    }

label {
  display: inline-block;
  margin-bottom: 0.1rem !important;
  color:var(--bleu-commun);
}
.form-text {
  display: block;
  margin-bottom:0.2rem !important;
}
.modal-header{
    color:white !important;
    background-color:var(--bleu-commun) !important;
}
.close {
    color: white;
    opacity: 1;
}

.close:hover {
    color: white;
    opacity: 0.8;
}


/* ========================= */
/* SIDEBAR */
/* ========================= */


.sidebar-logo {
    max-height: 6rem;
    width: auto;
}


.sidebar-logo-mini {
    display: none;
}

.sidebar-heading{
    font-size:0.85rem !important;
    padding-bottom: 12px;
}


/* Sidebar ouverte */

.sidebar:not(.toggled) .sidebar-logo-full {
    display: block;
}


.sidebar:not(.toggled) .sidebar-logo-mini {
    display: none;
}



/* Sidebar repliée */

.sidebar.toggled .sidebar-logo-full {
    display: none;
}


.sidebar.toggled .sidebar-logo-mini {
    display: block;
    width: 6rem;
    height: auto;
    max-width: none;
}



/* ========================= */
/* TITRES DE SECTIONS */
/* ========================= */


.sidebar-title-container {

    background-color:white;
    border-radius:10px;
    margin:0 1rem;
    padding:0.5rem 0;

    text-align:center;

}

.sidebar-title {

    font-size:0.85rem;
    font-weight:bold;

}
.collapse-header {
    white-space: normal !important;
    overflow-wrap: break-word;
    word-break: break-word;
    line-height: 1.3;
}

.sidebar.toggled .sidebar-title-container {

    display:none;

}



/* ========================= */
/* ICÔNES PERSONNALISÉES */
/* ========================= */


.nav-icon {
    min-width:2rem;
    min-height:2rem;
    object-fit:contain;
}
/* ========================= */
/* SIDEBAR REDUITE */
/* ========================= */

.sidebar .nav-link {
    display: flex;
    align-items: center;      /* centre verticalement l'icône */
    gap: .75rem;
    width: 100%;
    padding: .75rem 1rem;
}

.sidebar .nav-icon {
    flex: 0 0 30px;
    width: 30px;
    height: 30px;
    margin: 0;
    object-fit: contain;
}

.sidebar:not(.toggled) .nav-link {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: .75rem;
}

.sidebar:not(.toggled) .nav-link span {
    flex: 1 1 auto;
    min-width: 0;
    overflow-wrap: break-word;
    word-break: normal;
    white-space: normal;
    line-height: 1.3;
}
.sidebar.toggled {
    width: 6.5rem !important;
}
.sidebar.toggled .nav-link {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: .35rem;
    padding: .75rem .25rem;
}

.sidebar.toggled .nav-icon {
    width: 30px;
    height: 30px;
    margin: 0;
}

.sidebar.toggled .nav-link span {
    width: 100%;
    max-width: 100%;
    text-align: center;
    white-space: normal;
    word-break: break-word;
    line-height: 1.15;
    font-size: .72rem;
}

.sidebar .collapse-item {
    white-space: normal !important;
    overflow-wrap: break-word;
    line-height: 1.3;
}


/* ========================= */
/* SCROLL */
/* ========================= */

.sidebar {
    overflow-y: auto;
}
.sidebar.toggled .nav-item .collapse {
    position: absolute;
    left: 6.5rem;
    z-index: 9999;
}

.sidebar.toggled .collapse-inner {
    min-width: 12rem !important;
}

.sidebar .nav-item .nav-link:hover {
    background-color: rgba(255, 255, 255, 0.15) !important;
}
#univer-container {

            height:800px;
            width:100%;

        }

/* CSS personnalisé pour modal synchronisation Moodle */
.synchro-step {
    position: relative;
    padding: 12px 15px 12px 42px;
    margin-bottom: 8px;
    border-radius: 5px;
    background-color: #f8f9fa;
    color: #6c757d;
    font-weight: normal;
    transition: all 0.2s ease;
}

.synchro-step::before {
    position: absolute;
    left: 15px;
    top: 50%;
    transform: translateY(-50%);

    width: 18px;
    height: 18px;

    border-radius: 50%;

    content: "";
}

.synchro-pending {
    color: #6c757d;
    background-color: #f8f9fa;
}

.synchro-pending::before {
    border: 2px solid #adb5bd;
    background-color: white;
}

.synchro-active {
    color: #007bff;
    background-color: #eaf4ff;
    font-weight: 600;
}

.synchro-active::before {
    border: 2px solid #007bff;
    background-color: #007bff;
}

.synchro-success {
    color: #28a745;
    background-color: #eaf7ed;
    font-weight: 700;
}

.synchro-success::before {
    content: "✓";

    display: flex;
    align-items: center;
    justify-content: center;

    background-color: #28a745;
    color: white;

    font-size: 12px;
    font-weight: bold;
}

.synchro-error {
    color: #dc3545;
    background-color: #fcebec;
    font-weight: 600;
}

.synchro-error::before {
    content: "×";

    display: flex;
    align-items: center;
    justify-content: center;

    background-color: #dc3545;
    color: white;

    font-size: 13px;
    font-weight: bold;
}

/*-----------------------------*/
/*---------- DASHBOARD ----------*/
/*------------------------------*/
/* Note avec épingle */
.note-card {
    position: relative;
    max-width: 300px;
    padding: 35px 25px 25px;
    margin: 35px 35px 35px;

    background: #E1EEFA;

    border-radius: 2px;

    box-shadow:
        0 4px 10px rgba(0, 0, 0, 0.18);

    transform: rotate(-1.5deg);

    transition:
        transform 0.2s ease,
        box-shadow 0.2s ease;
}

.note-card:hover {
    transform: rotate(0deg) translateY(-3px);

    box-shadow:
        0 8px 18px rgba(0, 0, 0, 0.22);
}

.pin {
    position: absolute;

    top: -10px;
    left: 50%;

    width: 20px;
    height: 20px;

    transform: translateX(-50%);

    background: #1c4379;

    border-radius: 50%;

    box-shadow:
        0 2px 4px rgba(0, 0, 0, 0.35);
}
/* -------------- Astuces ----------------*/
/* -------------- Astuces ----------------*/

.astuce {
    position: fixed;
    right: 25px;
    bottom: 25px;
    z-index: 1000;
}


/* Bouton 💡 */

.astuce-btn {
    width: 50px;
    height: 50px;

    border: none;
    border-radius: 50%;

    cursor: pointer;

    font-size: 22px;

    box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);
}


/* Conteneur invisible */

.astuce-card {
    position: absolute;

    right: 0;
    bottom: 65px;

    width: 500px;
    height: 180px;

    background: rgba(255, 255, 255, 0.70);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);

    border-radius: 20px;

    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.08);

    opacity: 0;
    visibility: hidden;
    transform: translateY(10px);

    transition:
        opacity 0.2s ease,
        transform 0.2s ease,
        visibility 0.2s;
}

/* Bulle */

.astuce-bulle {
    position: absolute;

    left: 15px;
    bottom: 60px;

    width: 320px;

    padding: 15px 18px;

    background: white;

    border: 0px solid #343a40;
    border-radius: 18px;

    box-shadow: 0 3px 10px rgba(0, 0, 0, 0.12);

    z-index: 2;
}


/* Pointe de la bulle */

.astuce-bulle::after {
    content: "";

    position: absolute;

    right: -18px;
    bottom: 20px;

    width: 0;
    height: 0;

    border-top: 0px solid transparent;
    border-bottom: 0px solid transparent;
    border-left: 0px solid #343a40;
}

.astuce-bulle::before {
    content: "";

    position: absolute;

    right: -14px;
    bottom: 20px;

    width: 0;
    height: 0;

    border-top: 8px solid transparent;
    border-bottom: 8px solid transparent;
    border-left: 15px solid white;

    z-index: 1;
}


/* Texte */

.astuce-bulle strong {
    display: block;
    margin-bottom: 6px;
}

.astuce-bulle p {
    margin: 0;
}


/* Avatar */

.astuce-avatar {
    position: absolute;

    right: 15px;
    bottom: 0;
}

.astuce-avatar img {
    width: 150px;
    height: 150px;

    object-fit: contain;
}

/* Apparition au survol */

.astuce:hover .astuce-card {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}
```
