:root { --primary-color: #006358; --secondary-color: #d4b830; --accent-color: #c1292e; --text-color: #333333; --background-color: #f0f2f5; --white: #ffffff; --card-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); --transition: all 0.3s ease; } /* Réinitialisation et styles de base */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Poppins', sans-serif; background-color: var(--background-color); color: var(--text-color); line-height: 1.6; } .container { max-width: 1200px; margin: 0 auto; padding: 20px; } .btn-group { display: flex; flex-wrap: wrap; gap: 15px; margin-top: 30px; margin-bottom: 30px; } .btn-group .btn { flex: 1 1 auto; } /* Styles pour les sections déroulantes */ .collapsible-section { background-color: var(--white); border-radius: 10px; margin-bottom: 20px; box-shadow: var(--card-shadow); overflow: hidden; transition: var(--transition); } .collapsible-header { background: linear-gradient(45deg, var(--primary-color), var(--secondary-color)); color: var(--white); padding: 15px 20px; cursor: pointer; display: flex; justify-content: space-between; align-items: center; transition: var(--transition); } .collapsible-header:hover { background: linear-gradient(45deg, var(--secondary-color), var(--primary-color)); } .collapsible-header h3 { margin: 0; font-size: 1.2em; } .collapsible-content { max-height: 0; overflow: hidden; transition: max-height 0.3s ease-out; } .collapsible-content.active { max-height: 1000px; /* Ajustez selon vos besoins */ transition: max-height 0.5s ease-in; } /* En-tête */ header { background: rgba(0, 99, 88, 0.9); backdrop-filter: blur(10px); position: sticky; top: 0; z-index: 1000; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); color: var(--white); } .logo img { height: auto; width: 30%; max-width: 300px; transition: transform 0.3s ease; } .logo img:hover { transform: scale(1.1); } nav ul { display: flex; justify-content: flex-end; list-style-type: none; margin: 0; padding: 0; } nav ul li { margin-left: 20px; } nav ul li a { color: var(--white); text-decoration: none; font-weight: 500; transition: color 0.3s ease; } nav ul li a:hover { color: var(--secondary-color); } /* Navigation rétractable sur petits écrans */ .nav-toggle { display: none; cursor: pointer; font-size: 1.5em; color: var(--white); } @media (max-width: 768px) { .nav-toggle { display: block; } nav ul { display: none; flex-direction: column; position: absolute; top: 100%; left: 0; width: 100%; background: rgba(0, 99, 88, 0.95); padding: 20px 0; align-items: center; } nav ul.show { display: flex; } nav ul li { margin: 10px 0; text-align: center; } .btn-logout { margin-top: 20px; } } /* Titres */ h1, h2, h3, h4, h5, h6 { color: var(--primary-color); margin-bottom: 5px; font-weight: bold; } /* Boutons */ .btn, button, input[type="submit"] { display: inline-block; padding: 12px 24px; color: var(--white); border: none; border-radius: 50px; font-weight: 500; transition: all 0.3s ease; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); cursor: pointer; position: relative; overflow: hidden; } .btn i, button i, input[type="submit"] i { margin-right: 8px; } .btn::before, button::before, input[type="submit"]::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(45deg, var(--secondary-color), var(--primary-color)); opacity: 0; transition: opacity 0.3s ease; font-family: "Font Awesome 5 Free"; font-weight: 900; margin-right: 8px; } .btn:hover::before, button:hover::before, input[type="submit"]:hover::before { opacity: 0.5; } .btn span, button span, input[type="submit"] span { position: relative; z-index: 1; } .btn:hover, button:hover, input[type="submit"]:hover { color: var(--white); transform: translateY(-3px); box-shadow: 0 6px 8px rgba(0, 0, 0, 0.15); } .action-buttons { display: flex; flex-wrap: nowrap; gap: 5px; } .action-buttons .btn { padding: 5px 10px; font-size: 0.8em; } /* Grille de groupes */ .groupe-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 30px; margin-top: 50px; } .groupe-card.groupe-filleul { border: 2px solid var(--secondary-color); position: relative; } .groupe-card.groupe-filleul::before { content: 'Filleul'; position: absolute; top: 10px; right: 10px; background-color: var(--secondary-color); color: white; padding: 5px 10px; border-radius: 15px; font-size: 0.8em; } .groupe-card { background: var(--white); border-radius: 20px; padding: 30px; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); transition: all 0.3s ease; overflow: hidden; position: relative; } .groupe-card::before { content: ''; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: linear-gradient( to bottom right, rgba(212, 184, 48, 0.2) 0%, rgba(212, 184, 48, 0.05) 100% ); transform: rotate(45deg); z-index: 0; transition: all 0.5s ease; pointer-events: none; } .groupe-card:hover::before { top: -75%; left: -75%; } .groupe-card:hover { transform: translateY(-10px) scale(1.02); box-shadow: 0 20px 30px rgba(0, 0, 0, 0.15); } .groupe-card h3 { font-size: 1.5em; margin-bottom: 20px; position: relative; z-index: 1; } .groupe-card p { margin-bottom: 15px; position: relative; z-index: 1; } .groupe-card .btn { margin-top: 15px; width: 100%; text-align: center; position: relative; z-index: 2; } /* Formulaires */ form { background: var(--white); padding: 10px; border-radius: 20px; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); } .form-group { margin-bottom: 25px; } label { display: block; margin-bottom: 8px; font-weight: 500; color: var(--primary-color); } input[type="text"], input[type="email"], input[type="password"], input[type="tel"], select, textarea { width: 100%; padding: 12px 20px; margin: 8px 0; display: inline-block; border: 1px solid #ccc; border-radius: 25px; box-sizing: border-box; transition: 0.3s; outline: none; } input[type="text"]:focus, input[type="email"]:focus, input[type="password"]:focus, input[type="tel"]:focus, select:focus, textarea:focus { border-color: var(--primary-color); box-shadow: 0 0 8px rgba(0, 99, 88, 0.2); } /* Tableaux */ table { width: 100%; min-width: 1000px; border-collapse: separate; border-spacing: 0; background: var(--white); border-radius: 20px; overflow: hidden; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); margin-bottom: 30px; } .table-responsive { overflow-x: auto; -webkit-overflow-scrolling: touch; } th, td { padding: 20px; white-space: nowrap; text-align: left; border-bottom: 1px solid #e0e0e0; } th { background-color: var(--primary-color); color: var(--white); font-weight: 500; } tr:last-child td { border-bottom: none; } tr { box-shadow: var(--card-shadow); transition: var(--transition); } tr:hover { transform: translateY(-3px); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15); } /* Réduire la taille des boutons d'action dans les tableaux */ table .btn { padding: 8px 16px; font-size: 0.9em; } /* Pagination */ .pagination { display: flex; justify-content: center; margin-top: 50px; } .pagination a { color: var(--primary-color); padding: 10px 18px; text-decoration: none; transition: all 0.3s ease; border: 1px solid var(--primary-color); margin: 0 5px; border-radius: 50px; } .pagination a.active { background-color: var(--primary-color); color: var(--white); } .pagination a:hover:not(.active) { background-color: var(--secondary-color); color: var(--primary-color); } .groupes-filleuls { margin-top: 30px; } .groupes-filleuls ul { list-style-type: none; padding: 0; } .groupes-filleuls li { background-color: var(--white); border-radius: 10px; padding: 15px; margin-bottom: 10px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); transition: all 0.3s ease; } .groupes-filleuls li:hover { transform: translateY(-3px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); } .groupes-filleuls a { color: var(--primary-color); text-decoration: none; font-weight: 500; } /* Style uniforme pour les boutons de recherche et d'exportation */ .search-filter-form button, .export-links a { padding: 12px 24px; background: linear-gradient(45deg, var(--primary-color), var(--secondary-color)); color: var(--white); border: none; border-radius: 50px; text-decoration: none; font-weight: 500; transition: all 0.3s ease; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .search-filter-form button:hover, .export-links a:hover { transform: translateY(-3px); box-shadow: 0 6px 8px rgba(0, 0, 0, 0.15); background: linear-gradient(45deg, var(--secondary-color), var(--primary-color)); } /* Modal pour la modification des membres */ .modal { display: none; position: fixed; z-index: 1000; padding-top: 100px; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: rgba(0, 0, 0, 0.9); } .modal-content { background-color: var(--white); margin: 10% auto; padding: 20px; border: 1px solid #888; border-radius: 5px; width: 80%; max-width: 700px; position: relative; animation-name: modalopen; animation-duration: 0.4s; justify-content: center; display: block; } .btn-close { color: #aaa; float: right; font-size: 28px; font-weight: bold; cursor: pointer; } .close { position: absolute; top: 15px; right: 35px; color: #f1f1f1; font-size: 40px; font-weight: bold; transition: 0.3s; } .close:hover, .close:focus { color: #bbb; text-decoration: none; cursor: pointer; } @keyframes modalopen { from { top: -300px; opacity: 0; } to { top: 0; opacity: 1; } } .close { color: var(--text-color); float: right; font-size: 28px; font-weight: bold; cursor: pointer; transition: color 0.3s ease; } .close:hover, .close:focus { color: var(--accent-color); text-decoration: none; } /* Messages pop-up */ .popup { position: fixed; top: 20px; right: 20px; padding: 15px 25px; border-radius: 10px; color: var(--white); font-weight: 500; opacity: 0; transform: translateY(-20px); transition: all 0.3s ease; z-index: 1000; } .popup.success { background-color: var(--primary-color); } .popup.error { background-color: var(--accent-color); } .popup.show { opacity: 1; transform: translateY(0); } /* Animations */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .fade-in { animation: fadeIn 0.5s ease-in; } @keyframes slideIn { from { transform: translateY(50px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .slide-in { animation: slideIn 0.5s ease-out; } /* Styles pour le formulaire de recherche et de filtrage */ .search-filter-form { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 20px; background: var(--white); padding: 30px; border-radius: 20px; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); } .search-filter-form input, .search-filter-form select { flex: 1 1 200px; } .search-filter-form button { flex: 1 1 100px; } /* Footer */ footer { background: #006358; color: var(--white); text-align: center; padding: 30px 0; margin-top: 80px; } /* Styles pour les messages de confirmation/erreur */ .message { padding: 20px; margin-bottom: 30px; border-radius: 10px; font-weight: 500; } .message.success { background-color: rgba(0, 99, 88, 0.1); color: var(--primary-color); border: 1px solid var(--primary-color); } .message.error { background-color: rgba(193, 41, 46, 0.1); color: var(--accent-color); border: 1px solid var(--accent-color); } /* Styles spécifiques pour la page liste_membres.php */ .export-links { display: flex; justify-content: flex-end; margin-bottom: 20px; } .export-links a { margin-left: 15px; } #editForm .form-group input[type="tel"] { width: 100%; padding: 12px; font-size: 16px; border: none; border-radius: 4px; background-color: var(--background-color); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); transition: box-shadow 0.3s ease; } #editForm .form-group input[type="tel"]:focus { outline: none; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2); } /* Styles pour les rapports */ .rapport-container, .rapports-container { max-width: 1200px; margin: 0 auto; padding: 20px; } .rapport-header, .rapports-grid { margin-bottom: 30px; } .rapport-date { color: #666; font-style: italic; } /* Aligner la navigation */ .header-content { display: flex; justify-content: space-between; align-items: center; } .rapport-summary { display: flex; justify-content: space-between; margin-bottom: 30px; } .summary-card { background-color: var(--white); border-radius: 10px; padding: 20px; text-align: center; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); flex: 1; margin: 0 10px; } .rapport-chart { background-color: var(--white); border-radius: 10px; padding: 20px; margin-bottom: 30px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .membre-card { background-color: var(--white); border-radius: 10px; padding: 20px; margin-bottom: 20px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); max-width: 400px; margin: 0 auto; } .rapport-card { background-color: var(--white); border-radius: 10px; padding: 20px; margin-bottom: 20px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); display: flex; align-items: center; } .rapport-icon { font-size: 2em; margin-right: 20px; color: var(--primary-color); } .rapport-info { flex-grow: 1; } .rapport-actions { display: flex; gap: 10px; } .btn-primary, .btn-secondary { padding: 10px 20px; border-radius: 5px; text-decoration: none; font-weight: bold; transition: background-color 0.3s ease; } .btn-primary { background-color: var(--primary-color); color: var(--white); } .btn-secondary { background-color: var(--secondary-color); color: var(--white); } .btn-primary:hover, .btn-secondary:hover { opacity: 0.9; } /* Styles pour la page de génération de rapport */ .rapport-form textarea { width: 100%; min-height: 200px; margin-bottom: 20px; } .suivi-info { background-color: rgba(0, 99, 88, 0.1); border-radius: 5px; padding: 15px; margin-top: 15px; } .no-suivi { color: var(--accent-color); font-style: italic; } /* Responsive design */ @media (max-width: 768px) { .rapport-summary, .rapport-actions { flex-direction: column; } .summary-card, .btn-primary, .btn-secondary { width: 100%; margin-bottom: 10px; } .search-filter-form button { flex: 0 1 auto; } .search-filter-form input, .search-filter-form select, .search-filter-form button { width: 100%; margin-bottom: 15px; } .groupe-grid { grid-template-columns: 1fr; } .rapport-card { flex-direction: column; text-align: center; } .rapport-icon { margin-right: 0; margin-bottom: 10px; } .rapport-actions { margin-top: 15px; } } /* Styles pour améliorer l'accessibilité */ .visually-hidden { position: absolute !important; height: 1px; width: 1px; overflow: hidden; clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; } /* Styles pour le focus */ a:focus, button:focus, input:focus, select:focus, textarea:focus { outline: 2px solid var(--accent-color); outline-offset: 2px; } /* Styles pour les erreurs de formulaire */ .form-error { color: var(--accent-color); font-size: 0.9em; margin-top: 5px; } /* Animation pour les cartes */ @keyframes cardAppear { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .groupe-card, .rapport-card, .membre-card { animation: cardAppear 0.5s ease-out; } /* Style pour la photo du membre */ .membre-info { display: flex; gap: 30px; margin-bottom: 30px; } .membre-details { flex: 1; } .membre-photo { width: 200px; height: 200px; background-color: rgba(0, 99, 88, 0.1); border-radius: 10px; overflow: hidden; display: flex; align-items: center; justify-content: center; } .membre-photo img { max-width: 100%; max-height: 100%; object-fit: cover; } /* Apparence des champs de date et heure */ .presence-form .date-time-fields { display: flex; gap: 20px; margin-bottom: 30px; } .presence-form .date-time-fields .form-group { flex: 1; } .presence-form input[type="date"], .presence-form input[type="time"] { width: 100%; padding: 12px; border: 1px solid #ddd; border-radius: 8px; font-size: 16px; background-color: #f8f8f8; transition: all 0.3s ease; } .presence-form input[type="date"]:focus, .presence-form input[type="time"]:focus { border-color: var(--primary-color); box-shadow: 0 0 0 2px rgba(0, 99, 88, 0.1); } /* Style pour le bouton de retour en haut de page */ .back-to-top { position: fixed; bottom: 20px; right: 20px; background-color: var(--primary-color); color: var(--white); width: 50px; height: 50px; text-align: center; line-height: 50px; border-radius: 50%; font-size: 20px; cursor: pointer; transition: background-color 0.3s, opacity 0.5s, visibility 0.5s; opacity: 0; visibility: hidden; z-index: 1000; } .back-to-top:hover { background-color: var(--secondary-color); } .back-to-top.show { opacity: 1; visibility: visible; } /* Style pour les tooltips */ .tooltip { position: relative; display: inline-block; } .tooltip .tooltiptext { visibility: hidden; width: 120px; background-color: var(--text-color); color: var(--white); text-align: center; border-radius: 6px; padding: 5px 0; position: absolute; z-index: 1; bottom: 125%; left: 50%; margin-left: -60px; opacity: 0; transition: opacity 0.3s; } .tooltip:hover .tooltiptext { visibility: visible; opacity: 1; } .login-container { max-width: 400px; margin: 100px auto; padding: 20px; background-color: #fff; border-radius: 5px; box-shadow: 0 0 10px rgba(0,0,0,0.1); } .login-container h2 { text-align: center; margin-bottom: 20px; } .login-container .form-group { margin-bottom: 15px; } .login-container label { display: block; margin-bottom: 5px; } .login-container input[type="text"] { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; } .login-container .btn { width: 100%; padding: 10px; background-color: var(--primary-color); color: #fff; border: none; border-radius: 4px; cursor: pointer; } .login-container .btn:hover { background-color: var(--secondary-color); } .btn-logout { background-color: #dc3545; color: white; padding: 8px 15px; border-radius: 5px; text-decoration: none; transition: background-color 0.3s ease; border: 2px solid #dc3545; } .btn-logout i { margin-right: 5px; } .btn-logout:hover { background-color: #c82333; color: white; border-color: #c82333; } nav ul li .btn-logout { background-color: #dc3545; color: white; } nav ul li .btn-logout:hover { background-color: #c82333; color: white; } .floating-button { position: fixed; bottom: 20px; right: 20px; z-index: 1000; } .btn-round { width: 60px; height: 60px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 24px; box-shadow: 0 2px 5px rgba(0,0,0,0.2); } .statistics-container { background-color: #ffffff; border-radius: 10px; box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); padding: 20px; margin-top: 20px; } .filter-section { display: flex; flex-wrap: wrap; gap: 20px; margin-bottom: 20px; } .filter-item { flex: 1; min-width: 200px; } .filter-item label { display: block; margin-bottom: 5px; font-weight: 500; } .filter-item select, .filter-item input { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 5px; font-size: 14px; } .btn-update { background-color: var(--primary-color); color: white; border: none; padding: 10px 20px; border-radius: 5px; cursor: pointer; transition: background-color 0.3s; } .btn-update:hover { background-color: var(--secondary-color); } #chartContainer { height: 400px; margin-top: 20px; } .evenements-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-top: 10px; } .evenement-item { display: flex; align-items: center; } .evenement-item input[type="checkbox"] { margin-right: 10px; } .statistics-summary { margin-top: 20px; padding: 15px; background-color: #f8f9fa; border-radius: 5px; } .statistics-summary h3 { margin-top: 0; } .statistics-details { display: flex; flex-wrap: wrap; gap: 20px; margin-top: 20px; } .statistics-category { flex: 1; min-width: 200px; background-color: #f8f9fa; border-radius: 5px; padding: 15px; } .statistics-category h4 { margin-top: 0; margin-bottom: 10px; } .suivi-item { background-color: #f8f9fa; border: 1px solid #dee2e6; border-radius: 5px; margin-bottom: 15px; overflow: hidden; } .suivi-header { background-color: #e9ecef; padding: 10px 15px; cursor: pointer; } .suivi-content { padding: 15px; display: none; } .suivi-content.active { display: block; } .filter-form select, .filter-form input { padding: 5px; } .container { max-width: 1200px; margin: 0 auto; padding: 20px; } .section { background-color: #fff; border-radius: 10px; padding: 20px; margin-bottom: 30px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .form-group { margin-bottom: 20px; } .form-group label { display: block; margin-bottom: 5px; font-weight: bold; } .form-group input, .form-group select { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; } .btn { display: inline-block; padding: 10px 20px; background-color: #007bff; color: #fff; border: none; border-radius: 4px; cursor: pointer; transition: background-color 0.3s ease; } .btn:hover { background-color: #0056b3; } .grid-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; } .grid-item { background-color: #f8f9fa; padding: 20px; border-radius: 4px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .statistics-container { background-color: #ffffff; border-radius: 10px; box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); padding: 20px; margin-top: 20px; } .filter-section { display: flex; flex-wrap: wrap; gap: 20px; margin-bottom: 20px; } .filter-item { flex: 1; min-width: 200px; } .filter-item label { display: block; margin-bottom: 5px; font-weight: 500; } .filter-item select, .filter-item input { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 5px; font-size: 14px; } .btn-update { background-color: var(--primary-color); color: white; border: none; padding: 10px 20px; border-radius: 5px; cursor: pointer; transition: background-color 0.3s; } .btn-update:hover { background-color: var(--secondary-color); } #chartContainer { height: 400px; margin-top: 20px; } .evenements-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-top: 10px; } .evenement-item { display: flex; align-items: center; } .evenement-item input[type="checkbox"] { margin-right: 10px; } .statistics-summary { margin-top: 20px; padding: 15px; background-color: #f8f9fa; border-radius: 5px; } .statistics-summary h3 { margin-top: 0; } /* Styles pour le conteneur du graphique */ .chart-container { position: relative; margin: auto; height: 80vh; width: 80vw; } /* Media queries pour les différentes tailles d'écran */ @media (max-width: 768px) { .chart-container { height: 60vh; width: 95vw; } } @media (max-width: 480px) { .chart-container { height: 50vh; width: 100%; } } /* Ajustements pour le formulaire de filtre sur petits écrans */ @media (max-width: 768px) { .filter-section { flex-direction: column; } .filter-item { width: 100%; margin-bottom: 10px; } } /* Styles pour le conteneur du graphique */ .chart-container { position: relative; height: 60vh; width: 100%; margin-bottom: 30px; } /* Media queries pour les différentes tailles d'écran */ @media (max-width: 768px) { .chart-container { height: 50vh; } } @media (max-width: 480px) { .chart-container { height: 40vh; margin-bottom: 100px; } } /* Ajustements pour le tableau responsive */ @media (max-width: 768px) { .table-responsive { overflow-x: auto; -webkit-overflow-scrolling: touch; } table { min-width: 100%; font-size: 14px; } th, td { padding: 8px; } } @media (max-width: 768px) { .nav-toggle { display: block; cursor: pointer; font-size: 1.5em; color: var(--white); z-index: 1000; } nav ul { display: none; position: absolute; top: 100%; left: 0; width: 100%; background: rgba(0, 99, 88, 0.95); flex-direction: column; padding: 20px 0; z-index: 999; } nav ul.show { display: flex; } nav ul li { margin: 10px 0; } .nav-toggle.active + nav ul { display: flex; } } .chart-container { position: relative; height: 60vh; width: 100%; margin-bottom: 30px; } @media (max-width: 768px) { .chart-container { height: 50vh; } } @media (max-width: 480px) { .chart-container { height: 40vh; margin-bottom: 150px; } } /* Styles spécifiques pour chaque type de bouton */ .btn-details::before { font-family: "Font Awesome 5 Free"; content: "\f05a"; margin-right: 8px; } .btn-add-group::before { font-family: "Font Awesome 5 Free"; content: "\f067"; margin-right: 8px; } .btn-edit::before { font-family: "Font Awesome 5 Free"; content: "\f044"; margin-right: 8px; } .btn-follow-up::before { font-family: "Font Awesome 5 Free"; content: "\f201"; margin-right: 8px; } .btn-add-member::before { font-family: "Font Awesome 5 Free"; content: "\f234"; margin-right: 8px; } .btn-create-child-group::before { font-family: "Font Awesome 5 Free"; content: "\f0c0"; margin-right: 8px; } .btn-manage-attendance::before { font-family: "Font Awesome 5 Free"; content: "\f073"; margin-right: 8px; } .btn-save-follow-up::before { font-family: "Font Awesome 5 Free"; content: "\f0c7"; margin-right: 8px; } .btn-back::before { font-family: "Font Awesome 5 Free"; content: "\f060"; margin-right: 8px; } .btn-save::before { font-family: "Font Awesome 5 Free"; content: "\f0c7"; margin-right: 8px; } .btn-delete::before { font-family: "Font Awesome 5 Free"; content: "\f1f8"; margin-right: 8px; } .btn-add::before { font-family: "Font Awesome 5 Free"; content: "\f067"; margin-right: 8px; } .btn-create::before { font-family: "Font Awesome 5 Free"; content: "\f067"; margin-right: 8px; } .btn-export-csv::before { font-family: "Font Awesome 5 Free"; content: "\f56d"; margin-right: 8px; } .btn-merge::before { font-family: "Font Awesome 5 Free"; content: "\f0c1"; margin-right: 8px; } .btn-filter::before { font-family: "Font Awesome 5 Free"; content: "\f0b0"; margin-right: 8px; } .btn-export-excel::before { font-family: "Font Awesome 5 Free"; content: "\f1c3"; margin-right: 8px; } .btn-export-pdf::before { font-family: "Font Awesome 5 Free"; content: "\f1c1"; margin-right: 8px; } .btn-modify::before { font-family: "Font Awesome 5 Free"; content: "\f044"; margin-right: 8px; } .btn-update::before { font-family: "Font Awesome 5 Free"; content: "\f021"; margin-right: 8px; } /* Style spécifique pour le bouton de bascule */ .btn-toggle { margin: 5px; } /* Styles pour la nouvelle pagination */ .pagination { display: flex; align-items: center; justify-content: center; margin-top: 20px; } .btn-pagination { padding: 8px 12px; background-color: var(--primary-color); color: white; border: none; border-radius: 4px; cursor: pointer; transition: background-color 0.3s; text-decoration: none; } .btn-pagination:hover:not(.disabled) { background-color: var(--secondary-color); } .btn-pagination.disabled { opacity: 0.5; cursor: not-allowed; } .pagination-info { margin: 0 15px; font-weight: bold; } /* Styles pour l'animation du logo */ @keyframes logoAnimation { 0% { transform: rotateY(0) scale(1); } 50% { transform: rotateY(180deg) scale(1.1); } 100% { transform: rotateY(360deg) scale(1); } } .logo.animate { animation: logoAnimation 0.5s ease-in-out; } /* Styles pour les messages pop-up */ .modal-dialog { display: flex; justify-content: center; align-items: center; min-height: 100%; } .modal-body { font-size: 24px; color: var(--text-color); text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } @keyframes fadeInUp { from { opacity: 0; transform: translateY(50px); } to { opacity: 1; transform: translateY(0); } } @keyframes gradientAnimation { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Styles pour les boutons spécifiques */ .btn-pink { background-color: #ff6b6b; color: #fff; border: none; transition: transform 0.3s ease; } .btn-pink:hover { transform: scale(1.05); } .btn-blue { background-color: #3498db; color: #fff; border: none; transition: transform 0.3s ease; } .btn-blue:hover { transform: scale(1.05); } .btn-pink i, .btn-blue i { margin-right: 10px; } /* Styles pour les tableaux */ #table-membres { min-width: 3000px; } .table-container { max-height: 500px; overflow-y: auto; border: 1px solid var(--primary-color); border-radius: 5px; margin-bottom: 20px; } .table-container::-webkit-scrollbar { width: 10px; } .table-container::-webkit-scrollbar-track { background: #f5f5f5; } .table-container::-webkit-scrollbar-thumb { background: var(--primary-color); border-radius: 5px; } .table-container::-webkit-scrollbar-thumb:hover { background: var(--secondary-color); } /* Styles pour les formulaires de présence */ .presence-form { background-color: var(--white); padding: 20px; border-radius: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); margin-bottom: 20px; } .presence-form h3 { margin-bottom: 15px; color: var(--primary-color); } .presence-form .form-group { margin-bottom: 15px; } .presence-form label { display: block; margin-bottom: 5px; font-weight: bold; } .presence-form input[type="date"], .presence-form input[type="time"], .presence-form select { width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px; } .presence-form button { background-color: var(--primary-color); color: white; border: none; padding: 10px 20px; border-radius: 4px; cursor: pointer; transition: background-color 0.3s; } .presence-form button:hover { background-color: var(--secondary-color); } /* Styles pour la page de statistiques */ .stats-container { background-color: var(--white); border-radius: 10px; padding: 20px; margin-bottom: 20px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } .stats-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .stats-title { font-size: 24px; color: var(--primary-color); } .stats-period { font-size: 16px; color: #666; } .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; } .stats-card { background-color: #f8f9fa; border-radius: 8px; padding: 15px; text-align: center; } .stats-card-title { font-size: 18px; color: var(--primary-color); margin-bottom: 10px; } .stats-card-value { font-size: 24px; font-weight: bold; color: var(--secondary-color); } /* Styles pour les graphiques */ .chart-wrapper { background-color: var(--white); border-radius: 10px; padding: 20px; margin-bottom: 20px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } .chart-title { font-size: 20px; color: var(--primary-color); margin-bottom: 15px; } /* Styles pour la page de profil */ .profile-container { background-color: var(--white); border-radius: 10px; padding: 20px; margin-bottom: 20px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } .profile-header { display: flex; align-items: center; margin-bottom: 20px; } .profile-picture { width: 100px; height: 100px; border-radius: 50%; object-fit: cover; margin-right: 20px; } .profile-name { font-size: 24px; color: var(--primary-color); } .profile-info { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; } .profile-info-item { margin-bottom: 15px; } .profile-info-label { font-weight: bold; color: var(--primary-color); } .profile-actions { margin-top: 20px; } /* Styles pour la page de paramètres */ .settings-container { background-color: var(--white); border-radius: 10px; padding: 20px; margin-bottom: 20px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } .settings-section { margin-bottom: 30px; } .settings-title { font-size: 20px; color: var(--primary-color); margin-bottom: 15px; } .settings-form .form-group { margin-bottom: 20px; } .settings-form label { display: block; margin-bottom: 5px; font-weight: bold; } .settings-form input[type="text"], .settings-form input[type="email"], .settings-form input[type="password"], .settings-form select { width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px; } .settings-form button { background-color: var(--primary-color); color: white; border: none; padding: 10px 20px; border-radius: 4px; cursor: pointer; transition: background-color 0.3s; } .settings-form button:hover { background-color: var(--secondary-color); } /* Styles pour les notifications */ .notification { position: fixed; top: 20px; right: 20px; padding: 15px 20px; border-radius: 5px; color: white; font-weight: bold; z-index: 1000; opacity: 0; transition: opacity 0.3s ease-in-out; } .notification.show { opacity: 1; } .notification.success { background-color: #28a745; } .notification.error { background-color: #dc3545; } .notification.info { background-color: #17a2b8; } /* Styles pour l'impression */ @media print { header, footer, .no-print { display: none; } body { font-size: 12pt; line-height: 1.5; } .container { width: 100%; margin: 0; padding: 0; } table { page-break-inside: auto; } tr { page-break-inside: avoid; page-break-after: auto; } thead { display: table-header-group; } tfoot { display: table-footer-group; } } /* Styles pour l'accessibilité */ .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } /* Focus visible pour l'accessibilité au clavier */ a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid var(--accent-color); outline-offset: 2px; } /* Styles pour les animations de transition de page */ .page-transition-enter { opacity: 0; transform: translateY(20px); } .page-transition-enter-active { opacity: 1; transform: translateY(0); transition: opacity 300ms, transform 300ms; } .page-transition-exit { opacity: 1; } .page-transition-exit-active { opacity: 0; transition: opacity 300ms; } /* Styles pour les animations de chargement */ @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .loading-spinner { display: inline-block; width: 50px; height: 50px; border: 3px solid rgba(255,255,255,.3); border-radius: 50%; border-top-color: var(--primary-color); animation: spin 1s ease-in-out infinite; } /* Styles pour les tooltips personnalisés */ .custom-tooltip { position: relative; display: inline-block; } .custom-tooltip .tooltip-text { visibility: hidden; width: 120px; background-color: var(--text-color); color: var(--white); text-align: center; border-radius: 6px; padding: 5px 0; position: absolute; z-index: 1; bottom: 125%; left: 50%; margin-left: -60px; opacity: 0; transition: opacity 0.3s; } .custom-tooltip:hover .tooltip-text { visibility: visible; opacity: 1; } /* Styles pour les effets de survol des cartes */ .hover-card { transition: transform 0.3s ease, box-shadow 0.3s ease; } .hover-card:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); } /* Styles pour les messages de confirmation */ .confirmation-dialog { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: var(--white); padding: 20px; border-radius: 10px; box-shadow: 0 0 20px rgba(0, 0, 0, 0.2); z-index: 1000; } .confirmation-dialog-backdrop { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); z-index: 999; } /* Styles pour les boutons de pagination avancée */ .pagination-advanced { display: flex; justify-content: center; align-items: center; margin-top: 20px; } .pagination-advanced .btn { margin: 0 5px; padding: 8px 12px; border-radius: 4px; } .pagination-advanced .current-page { font-weight: bold; margin: 0 10px; } .membres-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 10px; } .membre-item { display: flex; align-items: center; background-color: #f5f5f5; padding: 10px; border-radius: 5px; } .membre-item input[type="checkbox"] { margin-right: 10px; } #imageModal .modal-content { margin: auto; } /* Styles pour le modal de modification */ #editModal .modal-content { text-align: left; /* Aligne tout le contenu à gauche */ } #editModal .form-group { margin-bottom: 15px; } #editModal label { display: block; margin-bottom: 5px; font-weight: bold; } #editModal input[type="text"], #editModal input[type="tel"], #editModal input[type="file"], #editModal select { width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px; box-sizing: border-box; /* Assure que le padding est inclus dans la largeur */ } #editModal .btn { margin-top: 10px; } @media (min-width: 768px) { #editModal .modal-content { width: 80%; max-width: 600px; /* Ou la largeur que vous préférez */ } } /* Fin du fichier CSS */ .categorie-titre { background-color: #e9ecef; font-weight: bold; font-size: 1.1em; padding: 10px 5px; border-top: 2px solid #006358; } .categorie-titre:hover { background-color: #d1ecf1; cursor: pointer; } /* Styles pour les en-têtes de tableau */ .table thead th { background-color: #006358; color: #ffffff; font-weight: bold; padding: 12px; border-bottom: 2px solid #004a42; } /* Styles pour les lignes de catégorie */ .categorie-titre { background-color: #d4b830; color: #006358; font-weight: bold; font-size: 1.1em; padding: 10px 15px; cursor: pointer; transition: background-color 0.3s ease; } .categorie-titre:hover { background-color: #c1a92b; } /* Styles pour les lignes de données */ .table tbody tr:nth-child(even) { background-color: #f0f2f5; } .table tbody tr:hover { background-color: #e0e5e9; } /* Styles pour les cellules de données */ .table td { padding: 10px; border-bottom: 1px solid #dee2e6; } /* Icône pour les catégories */ .categorie-titre i { margin-right: 10px; } th { cursor: pointer; } th.sort-asc::after { content: ' ▲'; } th.sort-desc::after { content: ' ▼'; } th[data-column] { cursor: pointer; } th[data-column]::after { content: '\25B2'; /* Triangle pointant vers le haut */ margin-left: 5px; visibility: hidden; } th[data-column].sort-asc::after { visibility: visible; } th[data-column].sort-desc::after { content: '\25BC'; /* Triangle pointant vers le bas */ visibility: visible; } .dropdown { position: relative; } .dropdown-content { display: none; position: absolute; background-color: white; min-width: 160px; box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); z-index: 1; } .dropdown-content a { color: var(--text-color); padding: 12px 16px; text-decoration: none; display: block; } .dropdown:hover .dropdown-content { display: block; }