/**
 * SIGRH - Système Intégré de Gestion RH
 * Feuille de style principale
 */

/* Variables */
:root {
    --primary: #0d6efd;
    --secondary: #6c757d;
    --success: #198754;
    --info: #0dcaf0;
    --warning: #ffc107;
    --danger: #dc3545;
    --light: #f8f9fa;
    --dark: #212529;
    --primary-dark: #0b5ed7;
    --primary-light: #3d8bfd;
    --body-bg: #f5f5f5;
    --card-border-radius: 0.5rem;
    --sidebar-width: 280px;
}

/* Base */
body {
    background-color: var(--body-bg);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

main {
    flex: 1;
}

/* Typographie */
h1, h2, h3, h4, h5, h6 {
    font-weight: 600;
    margin-bottom: 1rem;
}

.page-title {
    margin-bottom: 1.5rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid #dee2e6;
}

.text-primary-dark {
    color: var(--primary-dark);
}

.text-primary-light {
    color: var(--primary-light);
}

/* Cartes */
.card {
    border-radius: var(--card-border-radius);
    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
    margin-bottom: 1.5rem;
    border: none;
}

.card-header {
    background-color: #fff;
    border-bottom: 1px solid rgba(0, 0, 0, 0.125);
    padding: 1rem 1.25rem;
    font-weight: 600;
}

.card-header:first-child {
    border-radius: calc(var(--card-border-radius) - 1px) calc(var(--card-border-radius) - 1px) 0 0;
}

.card-footer {
    background-color: #fff;
    border-top: 1px solid rgba(0, 0, 0, 0.125);
    padding: 1rem 1.25rem;
}

/* Boutons */
.btn {
    font-weight: 500;
    padding: 0.5rem 1rem;
    border-radius: 0.25rem;
}

.btn-primary {
    background-color: var(--primary);
    border-color: var(--primary);
}

.btn-primary:hover, .btn-primary:focus {
    background-color: var(--primary-dark);
    border-color: var(--primary-dark);
}

.btn-outline-primary {
    color: var(--primary);
    border-color: var(--primary);
}

.btn-outline-primary:hover, .btn-outline-primary:focus {
    background-color: var(--primary);
    border-color: var(--primary);
    color: #fff;
}

.btn-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.btn-icon i {
    margin-right: 0.5rem;
}

.btn-icon-only {
    width: 2.5rem;
    height: 2.5rem;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.btn-icon-only i {
    margin-right: 0;
}

.btn-sm.btn-icon-only {
    width: 2rem;
    height: 2rem;
}

.btn-lg.btn-icon-only {
    width: 3rem;
    height: 3rem;
}

.btn-action {
    margin-right: 0.25rem;
}

/* Formulaires */
.form-control, .form-select {
    border-radius: 0.25rem;
    padding: 0.5rem 0.75rem;
}

.form-control:focus, .form-select:focus {
    border-color: var(--primary-light);
    box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}

.form-label {
    font-weight: 500;
    margin-bottom: 0.5rem;
}

.form-text {
    color: var(--secondary);
    font-size: 0.875rem;
    margin-top: 0.25rem;
}

.form-group {
    margin-bottom: 1rem;
}

.required-field::after {
    content: " *";
    color: var(--danger);
}

.form-check-input:checked {
    background-color: var(--primary);
    border-color: var(--primary);
}

.form-check-input:focus {
    border-color: var(--primary-light);
    box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}

/* Select2 */
.select2-container--bootstrap-5 .select2-selection {
    border-radius: 0.25rem;
    padding: 0.5rem 0.75rem;
    height: auto;
    min-height: 38px;
}

.select2-container--bootstrap-5 .select2-selection--single .select2-selection__rendered {
    padding: 0;
}

.select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__rendered {
    padding: 0;
}

.select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__choice {
    background-color: var(--primary);
    border-color: var(--primary);
    color: #fff;
    padding: 0.25rem 0.5rem;
    margin-right: 0.5rem;
    margin-top: 0.25rem;
}

.select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__choice__remove {
    color: #fff;
    margin-right: 0.25rem;
}

.select2-container--bootstrap-5 .select2-dropdown {
    border-color: var(--primary-light);
    border-radius: 0.25rem;
}

.select2-container--bootstrap-5 .select2-results__option--highlighted[aria-selected] {
    background-color: var(--primary);
    color: #fff;
}

/* Flatpickr */
.flatpickr-calendar {
    border-radius: 0.25rem;
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}

.flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange, .flatpickr-day.selected.inRange, .flatpickr-day.startRange.inRange, .flatpickr-day.endRange.inRange, .flatpickr-day.selected:focus, .flatpickr-day.startRange:focus, .flatpickr-day.endRange:focus, .flatpickr-day.selected:hover, .flatpickr-day.startRange:hover, .flatpickr-day.endRange:hover, .flatpickr-day.selected.prevMonthDay, .flatpickr-day.startRange.prevMonthDay, .flatpickr-day.endRange.prevMonthDay, .flatpickr-day.selected.nextMonthDay, .flatpickr-day.startRange.nextMonthDay, .flatpickr-day.endRange.nextMonthDay {
    background: var(--primary);
    border-color: var(--primary);
}

/* DataTables */
.dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter, .dataTables_wrapper .dataTables_info, .dataTables_wrapper .dataTables_processing, .dataTables_wrapper .dataTables_paginate {
    margin-bottom: 1rem;
}

.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
    background: var(--primary);
    border-color: var(--primary);
    color: #fff !important;
}

.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
    background: var(--primary-light);
    border-color: var(--primary-light);
    color: #fff !important;
}

.table-actions {
    white-space: nowrap;
}

/* Badges */
.badge {
    font-weight: 500;
    padding: 0.35em 0.65em;
    border-radius: 0.25rem;
}

.badge-status {
    font-size: 0.875rem;
    padding: 0.35em 0.65em;
    border-radius: 0.25rem;
}

.badge-actif {
    background-color: var(--success);
    color: #fff;
}

.badge-suspendu {
    background-color: var(--warning);
    color: #212529;
}

.badge-fin-contrat {
    background-color: var(--danger);
    color: #fff;
}

.badge-cdi {
    background-color: var(--primary);
    color: #fff;
}

.badge-cdd {
    background-color: var(--info);
    color: #212529;
}

/* Alertes */
.alert {
    border-radius: 0.25rem;
    padding: 1rem;
    margin-bottom: 1rem;
}

.alert-dismissible .btn-close {
    padding: 1.25rem;
}

/* Tableaux */
.table {
    margin-bottom: 0;
}

.table th {
    font-weight: 600;
    background-color: rgba(0, 0, 0, 0.03);
}

.table-hover tbody tr:hover {
    background-color: rgba(0, 0, 0, 0.02);
}

.table-striped tbody tr:nth-of-type(odd) {
    background-color: rgba(0, 0, 0, 0.02);
}

/* Pagination */
.pagination {
    margin-bottom: 0;
}

.page-link {
    color: var(--primary);
    padding: 0.5rem 0.75rem;
}

.page-item.active .page-link {
    background-color: var(--primary);
    border-color: var(--primary);
}

/* Navbar */
.navbar {
    padding: 0.5rem 1rem;
}

.navbar-brand {
    font-weight: 600;
}

.navbar-dark .navbar-nav .nav-link {
    color: rgba(255, 255, 255, 0.85);
}

.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {
    color: #fff;
}

.navbar-dark .navbar-nav .nav-link.active {
    color: #fff;
    font-weight: 600;
}

/* Footer */
.footer {
    padding: 1rem 0;
    border-top: 1px solid #dee2e6;
}

/* Tableau de bord */
.dashboard-card {
    border-radius: var(--card-border-radius);
    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
    margin-bottom: 1.5rem;
    border: none;
    transition: transform 0.2s;
}

.dashboard-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}

.dashboard-card .card-body {
    padding: 1.5rem;
}

.dashboard-card .card-title {
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: 0.5rem;
}

.dashboard-card .card-value {
    font-size: 2rem;
    font-weight: 700;
    margin-bottom: 0.5rem;
}

.dashboard-card .card-icon {
    font-size: 2.5rem;
    opacity: 0.8;
}

.dashboard-card.card-primary {
    background-color: var(--primary);
    color: #fff;
}

.dashboard-card.card-success {
    background-color: var(--success);
    color: #fff;
}

.dashboard-card.card-warning {
    background-color: var(--warning);
    color: #212529;
}

.dashboard-card.card-danger {
    background-color: var(--danger);
    color: #fff;
}

.dashboard-card.card-info {
    background-color: var(--info);
    color: #212529;
}

.dashboard-card.card-secondary {
    background-color: var(--secondary);
    color: #fff;
}

/* Profil employé */
.profile-header {
    background-color: #fff;
    border-radius: var(--card-border-radius);
    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
    margin-bottom: 1.5rem;
    padding: 1.5rem;
}

.profile-header .profile-name {
    font-size: 1.5rem;
    font-weight: 600;
    margin-bottom: 0.5rem;
}

.profile-header .profile-info {
    font-size: 1rem;
    margin-bottom: 0.25rem;
}

.profile-header .profile-status {
    margin-top: 1rem;
}

.profile-tabs {
    margin-bottom: 1.5rem;
}

.profile-tabs .nav-link {
    font-weight: 500;
    padding: 0.75rem 1rem;
    color: var(--dark);
}

.profile-tabs .nav-link.active {
    font-weight: 600;
    color: var(--primary);
    border-bottom: 2px solid var(--primary);
}

/* Documents */
.document-card {
    border-radius: var(--card-border-radius);
    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
    margin-bottom: 1.5rem;
    border: none;
    transition: transform 0.2s;
}

.document-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}

.document-card .card-body {
    padding: 1.5rem;
}

.document-card .document-icon {
    font-size: 2.5rem;
    margin-bottom: 1rem;
}

.document-card .document-title {
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: 0.5rem;
}

.document-card .document-info {
    font-size: 0.875rem;
    margin-bottom: 0.25rem;
}

.document-card .document-actions {
    margin-top: 1rem;
}

/* Alertes */
.alert-card {
    border-radius: var(--card-border-radius);
    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
    margin-bottom: 1.5rem;
    border: none;
    transition: transform 0.2s;
}

.alert-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}

.alert-card .card-body {
    padding: 1.5rem;
}

.alert-card .alert-icon {
    font-size: 2.5rem;
    margin-bottom: 1rem;
}

.alert-card .alert-title {
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: 0.5rem;
}

.alert-card .alert-info {
    font-size: 0.875rem;
    margin-bottom: 0.25rem;
}

.alert-card .alert-actions {
    margin-top: 1rem;
}

.alert-card.alert-warning {
    border-left: 4px solid var(--warning);
}

.alert-card.alert-danger {
    border-left: 4px solid var(--danger);
}

.alert-card.alert-info {
    border-left: 4px solid var(--info);
}

.alert-card.alert-success {
    border-left: 4px solid var(--success);
}

/* Moyens d'accès */
.moyen-acces-card {
    border-radius: var(--card-border-radius);
    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
    margin-bottom: 1.5rem;
    border: none;
    transition: transform 0.2s;
}

.moyen-acces-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}

.moyen-acces-card .card-body {
    padding: 1.5rem;
}

.moyen-acces-card .moyen-acces-icon {
    font-size: 2.5rem;
    margin-bottom: 1rem;
}

.moyen-acces-card .moyen-acces-title {
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: 0.5rem;
}

.moyen-acces-card .moyen-acces-info {
    font-size: 0.875rem;
    margin-bottom: 0.25rem;
}

.moyen-acces-card .moyen-acces-actions {
    margin-top: 1rem;
}

.moyen-acces-card.moyen-acces-actif {
    border-left: 4px solid var(--success);
}

.moyen-acces-card.moyen-acces-restitue {
    border-left: 4px solid var(--secondary);
}

/* Contrats */
.contrat-card {
    border-radius: var(--card-border-radius);
    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
    margin-bottom: 1.5rem;
    border: none;
    transition: transform 0.2s;
}

.contrat-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}

.contrat-card .card-body {
    padding: 1.5rem;
}

.contrat-card .contrat-icon {
    font-size: 2.5rem;
    margin-bottom: 1rem;
}

.contrat-card .contrat-title {
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: 0.5rem;
}

.contrat-card .contrat-info {
    font-size: 0.875rem;
    margin-bottom: 0.25rem;
}

.contrat-card .contrat-actions {
    margin-top: 1rem;
}

.contrat-card.contrat-cdi {
    border-left: 4px solid var(--primary);
}

.contrat-card.contrat-cdd {
    border-left: 4px solid var(--info);
}

.contrat-card.contrat-avenant {
    border-left: 4px solid var(--warning);
}

/* Utilitaires */
.cursor-pointer {
    cursor: pointer;
}

.bg-light-hover:hover {
    background-color: rgba(0, 0, 0, 0.03);
}

.text-truncate-2 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    text-overflow: ellipsis;
}

.text-truncate-3 {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    text-overflow: ellipsis;
}

.border-dashed {
    border-style: dashed !important;
}

.opacity-75 {
    opacity: 0.75;
}

.opacity-50 {
    opacity: 0.5;
}

.opacity-25 {
    opacity: 0.25;
}

/* Responsive */
@media (max-width: 767.98px) {
    .dashboard-card .card-value {
        font-size: 1.5rem;
    }
    
    .dashboard-card .card-icon {
        font-size: 2rem;
    }
    
    .profile-header {
        padding: 1rem;
    }
    
    .profile-header .profile-name {
        font-size: 1.25rem;
    }
    
    .profile-tabs .nav-link {
        padding: 0.5rem 0.75rem;
        font-size: 0.875rem;
    }
    
    .table-responsive {
        margin-bottom: 1rem;
    }
}