@import "../vendor/bootstrap/bootstrap.min-qmLuFzB.css";
@import "bootstrap-legacy-theme-RGUKM0B.css";
@import "../vendor/font-awesome/font-awesome.min-ELsZ1rF.css";
@import "front-FtGRwsP.css";
@import "front-menu-vertical-XfGkzlg.css";

body {
    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
    font-size: 14px;
    line-height: 1.42857143;
    color: #333;
    background-color: #fff;
}

.utt-page-header {
    margin-bottom: 1.5rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid #dee2e6;
    font-size: 36px;
    color: #333;
}

/* Dashboard tiles */
.utt-tile {
    border: 1px solid #dee2e6;
    border-radius: 0.25rem;
    background-color: #fff;
    margin-bottom: 1rem;
    overflow: hidden;
    transition: transform 120ms ease, box-shadow 120ms ease;
}

.utt-tile:hover {
    transform: translateY(-1px);
    box-shadow: 0 0.25rem 0.75rem rgba(0,0,0,0.08);
}

.utt-tile a {
    text-decoration: none;
}

.utt-tile .card-header {
    padding: 0.9rem 1.1rem;
    border-bottom: 0;
    font-weight: 600;
}

.utt-tile .card-body {
    padding: 1rem;
}

.utt-tile .card-footer {
    padding: 0.5rem 1rem;
    border-top: 1px solid #dee2e6;
    background-color: #f8f9fa;
    gap: 0.75rem;
}

.utt-tile .huge {
    font-size: 1.5rem;
    line-height: 1.2;
}

.utt-tile .card-header .row {
    --bs-gutter-x: 0.75rem;
    align-items: center;
}

.utt-tile .card-header .huge {
    margin: 0;
    white-space: nowrap;
}

.utt-tile .card-header .fa-4x {
    font-size: 2.6rem;
    line-height: 1;
}

.utt-tile.tile-default .card-header { background: #f8f9fa; color: #333; }
.utt-tile.tile-parametres .card-header { background: #8a4b1c; color: #fff; }
.utt-tile.tile-red .card-header { background: #d9534f; color: #fff; }
.utt-tile.tile-primary .card-header { background: #337ab7; color: #fff; }
.utt-tile.tile-bancaires .card-header { background: #d86adf; color: #fff; }
.utt-tile.tile-titres .card-header { background: #7b2c83; color: #fff; }
.utt-tile.tile-disciplines .card-header { background: #b9a6ff; color: #fff; }
.utt-tile.tile-green .card-header { background: #5cb85c; color: #fff; }
.utt-tile.tile-propositions .card-header { background: #6c757d; color: #fff; }
.utt-tile.tile-matieres .card-header { background: #c8d400; color: #fff; }
.utt-tile.tile-cours .card-header { background: #6aa3a0; color: #fff; }
.utt-tile.tile-yellow .card-header { background: #f0ad4e; color: #fff; }
.utt-tile.tile-cines .card-header { background: #5a67b0; color: #fff; }
.utt-tile.tile-theatres .card-header { background: #2dbb3a; color: #fff; }
.utt-tile.tile-bordereaux .card-header { background: #2b2b2b; color: #fff; }
.utt-tile.tile-statistiques .card-header { background: #ff4f1a; color: #fff; }
.utt-tile.tile-rubriques .card-header { background: #6c9bd1; color: #fff; }
.utt-tile.tile-pages .card-header { background: #8c8c8c; color: #fff; }
.utt-tile.tile-documents .card-header { background: #4aa3a3; color: #fff; }
.utt-tile.tile-proces .card-header { background: #7a7a7a; color: #fff; }
.utt-tile.tile-alertes .card-header { background: #d9534f; color: #fff; }
.utt-tile.tile-newsletters .card-header { background: #ff4f1a; color: #fff; }

.mgl-15 {
    margin-left: 15px;
}

/* Modal connexion (front) */
.utt-modal-login {
    border: 3px solid #ee7a2a;
    border-radius: 0;
}

.utt-modal-login__header {
    background: #ee7a2a;
    color: #fff;
    border-bottom: 1px solid rgba(0, 0, 0, 0.15);
}

.utt-modal-login__header .modal-title {
    font-size: 1.5rem;
    font-weight: 500;
}

.utt-modal-login__close {
    filter: invert(1) grayscale(100%);
    opacity: 0.95;
}

.utt-modal-login__close:hover {
    opacity: 1;
}

.utt-modal-login__body {
    background: #f3f3f3;
    padding: 2rem 1.75rem;
}

.utt-login-form {
    max-width: 760px;
    margin: 0 auto;
}

.utt-login-input {
    background: #eaf3ff;
}

.utt-login-link {
    text-decoration: underline;
}

.utt-login-checkbox {
    width: 1.6rem;
    height: 1.6rem;
    accent-color: #8e44ad;
}

.utt-login-password-toggle {
    background: #eaf3ff;
    border-color: #c6d1db;
    border-left: 0;
    color: #6c757d;
    transition: color 120ms ease;
}

.utt-login-password-toggle:hover,
.utt-login-password-toggle:focus,
.utt-login-password-toggle:focus-visible,
.utt-login-password-toggle:active {
    background: #eaf3ff;
    border-color: #c6d1db;
    border-left: 0;
    color: #ee7a2a;
    box-shadow: none;
}

/* Front gallery */
.image-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 12px;
}

.galerie-image-link {
    display: block;
    border: 1px solid #d9e1ea;
    border-radius: 8px;
    overflow: hidden;
    background: #f8fbff;
    box-shadow: 0 8px 18px rgba(31, 111, 178, 0.08);
    transition: transform 120ms ease, box-shadow 120ms ease;
}

.galerie-image-link:hover,
.galerie-image-link:focus-visible {
    transform: translateY(-2px);
    box-shadow: 0 12px 24px rgba(31, 111, 178, 0.18);
}

.galerie-image {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
}

.utt-gallery-lightbox-open {
    overflow: hidden;
}

.utt-gallery-lightbox {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: rgba(8, 18, 31, 0.88);
}

.utt-gallery-lightbox[hidden] {
    display: none;
}

.utt-gallery-lightbox__dialog {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    width: min(100%, 1280px);
}

.utt-gallery-lightbox__figure {
    margin: 0;
    max-width: 100%;
}

.utt-gallery-lightbox__image {
    display: block;
    max-width: min(100vw - 180px, 1120px);
    max-height: calc(100vh - 150px);
    width: auto;
    height: auto;
    border-radius: 12px;
    box-shadow: 0 18px 45px rgba(0, 0, 0, 0.35);
    background: #fff;
}

.utt-gallery-lightbox__caption {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-top: 12px;
    color: #fff;
    font-size: 15px;
}

.utt-gallery-lightbox__title {
    font-weight: 600;
}

.utt-gallery-lightbox__counter {
    color: rgba(255, 255, 255, 0.8);
}

.utt-gallery-lightbox__close,
.utt-gallery-lightbox__nav {
    border: 0;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.12);
    color: #fff;
    padding: 10px 16px;
    font-weight: 600;
    backdrop-filter: blur(6px);
}

.utt-gallery-lightbox__close:hover,
.utt-gallery-lightbox__close:focus-visible,
.utt-gallery-lightbox__nav:hover,
.utt-gallery-lightbox__nav:focus-visible {
    background: rgba(255, 255, 255, 0.22);
}

.utt-gallery-lightbox__close {
    position: absolute;
    top: -56px;
    right: 0;
}

@media (max-width: 768px) {
    .utt-gallery-lightbox {
        padding: 16px;
    }

    .utt-gallery-lightbox__dialog {
        gap: 10px;
    }

    .utt-gallery-lightbox__close {
        position: static;
        align-self: flex-start;
    }

    .utt-gallery-lightbox__dialog {
        display: grid;
        grid-template-columns: 1fr;
        justify-items: center;
    }

    .utt-gallery-lightbox__nav {
        width: 100%;
        max-width: 320px;
    }

    .utt-gallery-lightbox__image {
        max-width: calc(100vw - 32px);
        max-height: calc(100vh - 220px);
    }

    .utt-gallery-lightbox__caption {
        flex-direction: column;
        align-items: flex-start;
    }
}

/* Admin navbar */
.utt-admin-navbar {
    padding-top: 0.15rem;
    padding-bottom: 0.15rem;
}

.utt-admin-navbar__brand {
    font-weight: 400;
    font-size: 18px;
    line-height: 1.1;
    letter-spacing: 0.5px;
    color: #6c757d;
    padding-top: 0;
    padding-bottom: 0;
    margin: 0;
}

.utt-admin-navbar__brand:hover {
    color: #6c757d;
}

.utt-admin-navbar .nav-link {
    padding-top: 0.25rem;
    padding-bottom: 0.25rem;
}

.navbar ul li .utt-admin-navbar__user {
    color: #337ab7;
    font-weight: 500;
    font-size: 13px;
    text-transform: capitalize;
}


/* Admin sidebar */
.utt-admin-sidebar {
    max-width: 320px;
}

@media (min-width: 1200px) {
    .utt-admin-sidebar {
        flex: 0 0 310px;
    }
}

.utt-admin-sidebar .list-group {
    border: 1px solid #e6e6e6;
    border-radius: 8px;
    overflow: hidden;
}

.utt-admin-sidebar .small,
.utt-admin-sidebar.small {
    font-size: 1.1em;
}

.utt-admin-sidebar .list-group-item {
    border-color: #e6e6e6;
    padding: 12px 16px;
}

.utt-admin-sidebar .list-group-item i {
    width: 18px;
    text-align: center;
}

.utt-admin-sidebar .list-group-item.text-uppercase {
    background: #f8f9fa;
    font-size: 13px;
    letter-spacing: 0.01em;
}

/* Spaced admin forms */
.utt-form-spaced .form-group {
    margin-bottom: 18px;
}

.utt-form-spaced .control-label {
    display: block;
    font-weight: 700;
    margin-bottom: 6px;
}

.utt-form-spaced .checkbox {
    margin-top: 6px;
}

/* Actions alignées */
.utt-actions-horizontal {
    display: flex;
    gap: 12px;
    margin-top: 12px;
}

.utt-actions-horizontal .btn {
    flex: 1 1 0;
    text-align: center;
}

.utt-stat-recap {
    max-width: 640px;
    margin-top: 14px;
    padding: 16px 18px;
    border: 1px solid #d6e0ea;
    border-radius: 6px;
    background: #f8fbff;
}

.utt-stat-recap__list {
    display: grid;
    gap: 10px;
    margin: 0;
}

.utt-stat-recap__row {
    display: grid;
    grid-template-columns: minmax(150px, 210px) 1fr;
    gap: 16px;
    align-items: baseline;
}

.utt-stat-recap__row dt {
    color: #5f6f7f;
    font-weight: 700;
}

.utt-stat-recap__row dd {
    margin: 0;
    color: #333;
    font-size: 17px;
    font-weight: 600;
    overflow-wrap: anywhere;
}

.utt-stat-recap__actions {
    max-width: 220px;
    margin-top: 18px;
}

@media (max-width: 575.98px) {
    .utt-stat-recap__row {
        grid-template-columns: 1fr;
        gap: 2px;
    }
}

/* Harmoniser les paires de boutons (retour / valider) */
.record_actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 12px;
    width: 100%;
}

.btn-group.record_actions {
    display: flex;
}

.record_actions .btn {
    flex: 1 1 50%;
    min-width: 180px;
    text-align: center;
}

.record_actions .btn:only-child {
    flex: 0 0 auto;
    min-width: 0;
}

.simple-dt-controls,
.simple-dt-footer {
    background: #eef4fb;
    border: 1px solid #d4dce6;
    padding: 8px 12px;
}

.simple-dt-controls {
    border-bottom: 0;
    border-radius: 4px 4px 0 0;
}

.simple-dt-footer {
    border-top: 0;
    border-radius: 0 0 4px 4px;
}

.utt-row-delete-warning > td,
.utt-row-delete-warning > th {
    background-color: #df7f7b !important;
}

.swal2-popup {
    width: min(31.5rem, calc(100vw - 2rem)) !important;
    padding: 1rem 1rem 0.9rem !important;
    font-size: 1rem !important;
}

.swal2-title {
    padding: 0.3em 0.9em 0 !important;
    font-size: 1.2rem !important;
    line-height: 1.2 !important;
}

.swal2-html-container,
.swal2-text {
    margin: 0.6em 1em 0.1em !important;
    font-size: 0.95rem !important;
    line-height: 1.35 !important;
}

.swal2-icon {
    margin: 0.65em auto 0.45em !important;
}

.swal2-actions {
    margin: 0.9em auto 0 !important;
    gap: 0.5rem !important;
}

.swal2-styled {
    margin: 0 !important;
    padding: 0.5em 1em !important;
    font-size: 0.92rem !important;
    min-width: 7.5rem;
}

body[data-ui-context="admin"] .table {
    border-color: #ddd;
}

/* Les liens dans les tableaux ne sont pas soulignés (surcharge du souligné Bootstrap par défaut sur les <a>) */
body[data-ui-context="admin"] .table a {
    text-decoration: none;
}

body[data-ui-context="admin"] .table > :not(:first-child) {
    border-top: 1px solid #ddd;
}

body[data-ui-context="admin"] .table-bordered > :not(caption) > *,
body[data-ui-context="admin"] .table-bordered > :not(caption) > * > * {
    border-color: #ddd;
}

table.dataTable thead th.utt-admin-table-sortable,
table.dataTable_cursus_etu thead th.utt-admin-table-sortable,
table.dataTableCronEtu thead th.utt-admin-table-sortable,
table.dataTableCronDoc thead th.utt-admin-table-sortable,
table.dataTableCronProp thead th.utt-admin-table-sortable,
table.dataTable_popup thead th.utt-admin-table-sortable,
table.dataTableListe thead th.utt-admin-table-sortable,
table.dataTableListeConference thead th.utt-admin-table-sortable,
table.dataTableListeProposition thead th.utt-admin-table-sortable {
    cursor: pointer;
    padding-right: 24px;
    position: relative;
}

table.dataTable thead th.utt-admin-table-sortable::after,
table.dataTable_cursus_etu thead th.utt-admin-table-sortable::after,
table.dataTableCronEtu thead th.utt-admin-table-sortable::after,
table.dataTableCronDoc thead th.utt-admin-table-sortable::after,
table.dataTableCronProp thead th.utt-admin-table-sortable::after,
table.dataTable_popup thead th.utt-admin-table-sortable::after,
table.dataTableListe thead th.utt-admin-table-sortable::after,
table.dataTableListeConference thead th.utt-admin-table-sortable::after,
table.dataTableListeProposition thead th.utt-admin-table-sortable::after {
    color: #a6adb4;
    content: '\2195';
    font-size: 12px;
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
}

table.dataTable thead th.utt-admin-table-sortable.sorted-asc::after,
table.dataTable_cursus_etu thead th.utt-admin-table-sortable.sorted-asc::after,
table.dataTableCronEtu thead th.utt-admin-table-sortable.sorted-asc::after,
table.dataTableCronDoc thead th.utt-admin-table-sortable.sorted-asc::after,
table.dataTableCronProp thead th.utt-admin-table-sortable.sorted-asc::after,
table.dataTable_popup thead th.utt-admin-table-sortable.sorted-asc::after,
table.dataTableListe thead th.utt-admin-table-sortable.sorted-asc::after,
table.dataTableListeConference thead th.utt-admin-table-sortable.sorted-asc::after,
table.dataTableListeProposition thead th.utt-admin-table-sortable.sorted-asc::after {
    color: #6b7280;
    content: '\25B2';
}

table.dataTable thead th.utt-admin-table-sortable.sorted-desc::after,
table.dataTable_cursus_etu thead th.utt-admin-table-sortable.sorted-desc::after,
table.dataTableCronEtu thead th.utt-admin-table-sortable.sorted-desc::after,
table.dataTableCronDoc thead th.utt-admin-table-sortable.sorted-desc::after,
table.dataTableCronProp thead th.utt-admin-table-sortable.sorted-desc::after,
table.dataTable_popup thead th.utt-admin-table-sortable.sorted-desc::after,
table.dataTableListe thead th.utt-admin-table-sortable.sorted-desc::after,
table.dataTableListeConference thead th.utt-admin-table-sortable.sorted-desc::after,
table.dataTableListeProposition thead th.utt-admin-table-sortable.sorted-desc::after {
    color: #6b7280;
    content: '\25BC';
}

/* Filtres en colonne, espacés et labels en gras */
.filter {
    margin-bottom: 12px;
}

#filter .form-group {
    margin-bottom: 12px;
}

#filter label {
    font-weight: 700;
}

.utt-action-proxy {
    flex: 1 1 0;
    text-align: center;
}

.utt-hidden-submit {
    display: none !important;
}

.simple-dt-search {
    min-width: 220px;
}

.hide {
    display: none !important;
}

.hidden {
    display: none !important;
}

/* Espacer et renforcer les labels de tous les formulaires */
form .form-group {
    margin-bottom: 14px;
}

form label {
    font-weight: 700;
}

/* Encadré gris doux autour du groupe Promotion/Retraité/Exonération/Type d'exonération/Inscription
   dans le formulaire création/édition étudiant (templates/admin/user/editEtudiant.html.twig). */
#block_option_etudiant {
    background-color: #ECECEC;
    border-radius: 8px;
    padding: 20px;
    border: none;
}

/* Marqueur visuel des champs obligatoires.
   Cible : labels Symfony (class="required" auto-ajoutée), legend des types composés (ex. VichFileType),
   + labels/legend d'un conteneur contenant un input/select/textarea HTML5 required. */
form label.required::after,
form legend.required::after,
form .form-group:has(:is(input, select, textarea)[required]) > label:not(.required)::after,
form fieldset:has(:is(input, select, textarea)[required]) > legend:not(.required)::after {
    content: " *";
    color: #d9534f;
    font-weight: 700;
    margin-left: 0.15rem;
}

/* Formulaire de proposition de conférence : colore les champs selon la saisie. */
[data-controller~="proposition-form"] .form-control:valid {
    background-color: #fff;
}
[data-controller~="proposition-form"] .form-control:invalid {
    background-color: #FAFFBD;
}
/* Champ Titre : autocomplete TomSelect qui masque le <select> natif requis. Quand
   il est vide, TomSelect pose la classe ".invalid" sur le wrapper (équivalent de
   :invalid). On reporte l'indicateur jaune "obligatoire" sur le contrôle visible
   (.ts-control, qui porte sinon le fond blanc var(--bs-body-bg)). */
[data-controller~="proposition-form"] .CTitre .ts-wrapper.invalid .ts-control {
    background-color: #FAFFBD !important;
}

h3, .h3 {
    font-size: 24px;
    color: #333;
}

@media (min-width: 1400px) {
.container, .container-lg, .container-md, .container-sm, .container-xl, .container-xxl
    {
        max-width: 1480px;
    }
}

.btn-info, .btn-warning {
    color: #fff;
}

.flatpickr-calendar.utt-flatpickr-with-quick-times {
    width: auto;
    min-width: 394px;
}

.utt-flatpickr-with-quick-times .flatpickr-innerContainer {
    align-items: stretch;
    overflow: visible;
}

.utt-flatpickr-with-quick-times .flatpickr-rContainer {
    flex: 0 0 auto;
}

.utt-flatpickr-quick-times {
    display: flex;
    flex-direction: column;
    flex: 0 0 86px;
    border-left: 1px solid #e6e6e6;
    background: #fff;
}

.utt-flatpickr-quick-times__button {
    border: 0;
    border-bottom: 1px solid #f1f1f1;
    background: #fff;
    color: #555;
    padding: 10px 12px;
    text-align: center;
    line-height: 1.2;
    cursor: pointer;
    transition: background-color 120ms ease, color 120ms ease;
}

.utt-flatpickr-quick-times__button:last-child {
    border-bottom: 0;
}

.utt-flatpickr-quick-times__button:hover,
.utt-flatpickr-quick-times__button:focus-visible {
    background: #f5f9ff;
    color: #1f5f99;
    outline: 0;
}

.utt-flatpickr-quick-times__button.is-selected {
    background: #eef5ff;
    color: #0d6efd;
    font-weight: 700;
}
