/* Suite Consultance - Style principal */ :root { /* Couleurs de base */ --primary-color: #007bff; --primary-hover: #0069d9; --secondary-color: #6c757d; --success-color: #28a745; --info-color: #17a2b8; --warning-color: #ffc107; --danger-color: #dc3545; --light-color: #f8f9fa; --dark-color: #343a40; --body-bg: #f8f9fa; --card-bg: #ffffff; --text-color: #212529; --border-color: #dee2e6; /* Couleurs spécifiques pour chaque module */ --crm-color: #6a4c93; --crm-hover: #593c80; --crm-light: #d0bdf4; --propositions-color: #1a936f; --propositions-hover: #127a5c; --propositions-light: #88d498; --devis-color: #e76f51; --devis-hover: #d65f41; --devis-light: #f4a261; --project-color: #ce476d; --project-hover: #b3375a; --project-light: #f087a1; --task-color: #007bff; --task-hover: #0062cc; --task-light: #66afe9; --email-color: #a79228; --email-hover: #8a7a1f; --email-light: #f4d03f; /* Couleurs des boutons standard */ --btn-text-color: #fff; --btn-text-hover: #fff; } /* Mode sombre */ body.dark-mode { --primary-color: #0d6efd; --primary-hover: #0b5ed7; --secondary-color: #6c757d; --body-bg: #121212; --card-bg: #1e1e1e; --text-color: #f8f9fa; --border-color: #495057; --light-color: #2c2c2c; /* Redéfinition pour le mode sombre */ --success-color: #198754; --info-color: #0dcaf0; --warning-color: #ffc107; --danger-color: #dc3545; /* Couleurs des modules en mode sombre */ --crm-color: #8e72b4; --crm-hover: #7c5fa3; --crm-light: #6a4c93; --propositions-color: #3cb991; --propositions-hover: #2ca57d; --propositions-light: #1a936f; --devis-color: #f4845f; --devis-hover: #e76f51; --devis-light: #d65f41; } body { background-color: var(--body-bg); color: var(--text-color); transition: background-color 0.5s ease, color 0.5s ease; } /* Transition fluide pour tous les éléments */ *, *::before, *::after { transition: background-color 0.5s ease, border-color 0.5s ease, color 0.3s ease, box-shadow 0.3s ease; } /* Mais pas pour les animations et transformations */ .fade-in, .fade-out, [class*="animation-"], [class*="transition-"], .modal.fade, .collapsing, .carousel-item { transition: none; } .dark-mode .navbar { background-color: #343a40 !important; } .dark-mode .card { background-color: var(--card-bg); border-color: var(--border-color); } .dark-mode .table { color: var(--text-color); } .dark-mode .footer { background-color: #343a40 !important; } .dark-mode .text-muted { color: #adb5bd !important; } .dark-mode .form-control, .dark-mode .form-select { background-color: #2c2c2c; border-color: var(--border-color); color: var(--text-color); } .dark-mode .input-group-text { background-color: #2c2c2c; border-color: var(--border-color); color: var(--text-color); } .dark-mode .btn-outline-secondary { color: #adb5bd; border-color: #adb5bd; } .dark-mode .modal-content { background-color: var(--card-bg); color: var(--text-color); } .dark-mode .list-group-item { background-color: var(--card-bg); color: var(--text-color); border-color: var(--border-color); } .dark-mode a { color: #6ea8fe; } .dark-mode a:hover { color: #9ec5fe; } .dark-mode .navbar-dark .navbar-nav .nav-link { color: #ffffff !important; } .dark-mode .navbar-dark .navbar-nav .nav-link:hover, .dark-mode .navbar-dark .navbar-nav .nav-link:focus { color: rgba(255, 255, 255, 0.9) !important; } .dark-mode .navbar-dark .navbar-nav .nav-link.active { color: #ffffff !important; } /* Styles supplémentaires pour le mode sombre */ .dark-mode .bg-light { background-color: #2c2c2c !important; } .dark-mode .border { border-color: var(--border-color) !important; } .dark-mode .alert { background-color: #2c2c2c; color: var(--text-color); border-color: var(--border-color); } .dark-mode .alert-success { background-color: rgba(25, 135, 84, 0.2); color: #75b798; border-color: #198754; } .dark-mode .alert-danger { background-color: rgba(220, 53, 69, 0.2); color: #ea868f; border-color: #dc3545; } .dark-mode .alert-warning { background-color: rgba(255, 193, 7, 0.2); color: #ffda6a; border-color: #ffc107; } .dark-mode .alert-info { background-color: rgba(13, 202, 240, 0.2); color: #6edff6; border-color: #0dcaf0; } .dark-mode .dropdown-menu { background-color: #2c2c2c; border-color: var(--border-color); } .dark-mode .dropdown-item { color: var(--text-color); } .dark-mode .dropdown-item:hover { background-color: #3e3e3e; color: var(--text-color); } /* Styles des dropdowns par module */ body[data-module="crm"] .dropdown-item:hover { background-color: rgba(106, 76, 147, 0.1); } body[data-module="propositions"] .dropdown-item:hover { background-color: rgba(26, 147, 111, 0.1); } body[data-module="devis"] .dropdown-item:hover { background-color: rgba(231, 111, 81, 0.1); } .dark-mode[data-module="crm"] .dropdown-item:hover { background-color: rgba(208, 189, 244, 0.1); } .dark-mode[data-module="propositions"] .dropdown-item:hover { background-color: rgba(136, 212, 152, 0.1); } .dark-mode[data-module="devis"] .dropdown-item:hover { background-color: rgba(244, 162, 97, 0.1); } .dark-mode .jumbotron { background-color: var(--card-bg); color: var(--text-color); } .dark-mode .breadcrumb { background-color: #2c2c2c; } .dark-mode .page-link { background-color: #2c2c2c; border-color: var(--border-color); color: var(--text-color); } .dark-mode .page-item.active .page-link { background-color: var(--primary-color); border-color: var(--primary-color); } .dark-mode .badge { background-color: #3e3e3e; color: var(--text-color); } .dark-mode hr { border-color: var(--border-color); } .dark-mode .modal-header, .dark-mode .modal-footer { border-color: var(--border-color); } .dark-mode .form-check-input { background-color: #3e3e3e; border-color: var(--border-color); } /* Cartes */ .card { box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); transition: box-shadow 0.3s ease; border-radius: 0.5rem; overflow: hidden; } .card:hover { box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); } /* Styles de carte spécifiques aux modules */ body[data-module="crm"] .card { border-top: 3px solid var(--crm-color); } body[data-module="propositions"] .card { border-top: 3px solid var(--propositions-color); } body[data-module="devis"] .card { border-top: 3px solid var(--devis-color); } .dark-mode[data-module="crm"] .card { border-top: 3px solid var(--crm-light); } .dark-mode[data-module="propositions"] .card { border-top: 3px solid var(--propositions-light); } .dark-mode[data-module="devis"] .card { border-top: 3px solid var(--devis-light); } /* Navigation */ .navbar { box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .navbar-brand { font-weight: bold; } /* Style pour les liens de la barre de navigation principale uniquement */ .navbar .nav-link { font-weight: 500; color: #ffffff !important; } .navbar .nav-link:hover { color: rgba(255, 255, 255, 0.9) !important; } .navbar .nav-link.active { font-weight: 600; color: #ffffff !important; } /* Styles des onglets par module */ .nav-tabs { border-bottom: 1px solid #dee2e6; } .nav-tabs .nav-link { margin-bottom: -1px; border: 1px solid transparent; border-top-left-radius: 0.25rem; border-top-right-radius: 0.25rem; color: var(--secondary-color); background-color: transparent; } .nav-tabs .nav-link:hover { border-color: #e9ecef #e9ecef #dee2e6; color: var(--primary-color); background-color: rgba(0, 0, 0, 0.02); } .nav-tabs .nav-link.active { color: var(--primary-color); background-color: #fff; border-color: #dee2e6 #dee2e6 #fff; border-bottom-width: 2px; } /* CRM Tab Style */ body[data-module="crm"] .nav-tabs { border-bottom-color: var(--crm-color); } body[data-module="crm"] .nav-tabs .nav-link.active { border-bottom: 2px solid var(--crm-color); } /* Propositions Tab Style */ body[data-module="propositions"] .nav-tabs { border-bottom-color: var(--propositions-color); } body[data-module="propositions"] .nav-tabs .nav-link.active { border-bottom: 2px solid var(--propositions-color); } /* Devis Tab Style */ body[data-module="devis"] .nav-tabs { border-bottom-color: var(--devis-color); } body[data-module="devis"] .nav-tabs .nav-link.active { border-bottom: 2px solid var(--devis-color); } /* Dark Mode Tabs */ .dark-mode .nav-tabs .nav-link.active { background-color: var(--card-bg); border-color: var(--border-color) var(--border-color) var(--card-bg); color: var(--primary-color); } .dark-mode .nav-tabs .nav-link { color: var(--text-color); } .dark-mode .nav-tabs .nav-link:hover { color: var(--primary-color); background-color: rgba(255, 255, 255, 0.05); border-color: var(--border-color); } /* Spécificités mode sombre pour les onglets de modules */ .dark-mode[data-module="crm"] .nav-tabs .nav-link.active { color: var(--crm-light); border-bottom: 2px solid var(--crm-light); } .dark-mode[data-module="crm"] .nav-tabs .nav-link:hover { color: var(--crm-light); } .dark-mode[data-module="propositions"] .nav-tabs .nav-link.active { color: var(--propositions-light); border-bottom: 2px solid var(--propositions-light); } .dark-mode[data-module="propositions"] .nav-tabs .nav-link:hover { color: var(--propositions-light); } .dark-mode[data-module="devis"] .nav-tabs .nav-link.active { color: var(--devis-light); border-bottom: 2px solid var(--devis-light); } .dark-mode[data-module="devis"] .nav-tabs .nav-link:hover { color: var(--devis-light); } /* Couleurs spécifiques des modules */ /* CRM */ .navbar-module-crm { background-color: var(--crm-color) !important; } .navbar-module-crm .navbar-brand, .navbar-module-crm .nav-link { color: #ffffff !important; } .btn-crm { background-color: var(--crm-color); border-color: var(--crm-color); color: var(--btn-text-color); } .btn-crm:hover, .btn-crm:focus { background-color: var(--crm-hover); border-color: var(--crm-hover); color: var(--btn-text-color); } .btn-outline-crm { color: var(--crm-color); border-color: var(--crm-color); } .btn-outline-crm:hover, .btn-outline-crm:focus { background-color: var(--crm-color); color: var(--btn-text-color); } .text-crm { color: var(--crm-color) !important; } .bg-crm { background-color: var(--crm-color) !important; color: var(--btn-text-color); } .bg-crm-light { background-color: var(--crm-light) !important; } /* Propositions */ .navbar-module-propositions { background-color: var(--propositions-color) !important; } .navbar-module-propositions .navbar-brand, .navbar-module-propositions .nav-link { color: #ffffff !important; } .btn-propositions { background-color: var(--propositions-color); border-color: var(--propositions-color); color: var(--btn-text-color); } .btn-propositions:hover, .btn-propositions:focus { background-color: var(--propositions-hover); border-color: var(--propositions-hover); color: var(--btn-text-color); } .btn-outline-propositions { color: var(--propositions-color); border-color: var(--propositions-color); } .btn-outline-propositions:hover, .btn-outline-propositions:focus { background-color: var(--propositions-color); color: var(--btn-text-color); } .text-propositions { color: var(--propositions-color) !important; } .bg-propositions { background-color: var(--propositions-color) !important; color: var(--btn-text-color); } .bg-propositions-light { background-color: var(--propositions-light) !important; } /* Devis */ .navbar-module-devis { background-color: var(--devis-color) !important; } .navbar-module-devis .navbar-brand, .navbar-module-devis .nav-link { color: #ffffff !important; } /* Projects */ .navbar-module-project { background-color: var(--project-color) !important; } .navbar-module-project .navbar-brand, .navbar-module-project .nav-link { color: #ffffff !important; } /* Emails */ .navbar-module-email { background-color: var(--email-color) !important; } .navbar-module-email .navbar-brand, .navbar-module-email .nav-link { color: #ffffff !important; } .btn-devis { background-color: var(--devis-color); border-color: var(--devis-color); color: var(--btn-text-color); } .btn-devis:hover, .btn-devis:focus { background-color: var(--devis-hover); border-color: var(--devis-hover); color: var(--btn-text-color); } .btn-outline-devis { color: var(--devis-color); border-color: var(--devis-color); } .btn-outline-devis:hover, .btn-outline-devis:focus { background-color: var(--devis-color); color: var(--btn-text-color); } .text-devis { color: var(--devis-color) !important; } .bg-devis { background-color: var(--devis-color) !important; color: var(--btn-text-color); } .bg-devis-light { background-color: var(--devis-light) !important; } /* Forms */ .form-control:focus { border-color: var(--primary-color); box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } /* Module-specific form focus styles */ body[data-module="crm"] .form-control:focus { border-color: var(--crm-color); box-shadow: 0 0 0 0.2rem rgba(106, 76, 147, 0.25); } body[data-module="propositions"] .form-control:focus { border-color: var(--propositions-color); box-shadow: 0 0 0 0.2rem rgba(26, 147, 111, 0.25); } body[data-module="devis"] .form-control:focus { border-color: var(--devis-color); box-shadow: 0 0 0 0.2rem rgba(231, 111, 81, 0.25); } /* Dark mode form styles */ .dark-mode .form-control:focus { border-color: var(--primary-color); box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.25); background-color: #3e3e3e; } .dark-mode[data-module="crm"] .form-control:focus { border-color: var(--crm-color); box-shadow: 0 0 0 0.2rem rgba(142, 114, 180, 0.25); background-color: #3e3e3e; } .dark-mode[data-module="propositions"] .form-control:focus { border-color: var(--propositions-color); box-shadow: 0 0 0 0.2rem rgba(60, 185, 145, 0.25); background-color: #3e3e3e; } .dark-mode[data-module="devis"] .form-control:focus { border-color: var(--devis-color); box-shadow: 0 0 0 0.2rem rgba(244, 132, 95, 0.25); background-color: #3e3e3e; } .dark-mode input::placeholder, .dark-mode textarea::placeholder { color: #adb5bd; opacity: 0.7; } .dark-mode .form-text { color: #adb5bd; } .dark-mode .form-label { color: var(--text-color); } /* Buttons */ .btn-primary { background-color: var(--primary-color); border-color: var(--primary-color); color: var(--btn-text-color); } .btn-primary:hover { background-color: var(--primary-hover); border-color: var(--primary-hover); color: var(--btn-text-color); } .btn a, .btn-primary a, .btn-secondary a, .btn-success a, .btn-danger a, .btn-warning a, .btn-info a, .btn-crm a, .btn-propositions a, .btn-devis a { color: #ffffff !important; text-decoration: none; } .btn a:hover, .btn-primary a:hover, .btn-secondary a:hover, .btn-success a:hover, .btn-danger a:hover, .btn-warning a:hover, .btn-info a:hover, .btn-crm a:hover, .btn-propositions a:hover, .btn-devis a:hover { color: #ffffff !important; text-decoration: none; } .dark-mode .btn-light { background-color: #2c2c2c; border-color: #2c2c2c; color: var(--text-color); } .dark-mode .btn-light:hover { background-color: #3e3e3e; border-color: #3e3e3e; color: var(--text-color); } .dark-mode .btn-outline-light { color: #e9ecef; border-color: #e9ecef; } .dark-mode .btn-outline-light:hover { background-color: #e9ecef; color: #212529; } .dark-mode .btn-link { color: var(--primary-color); } /* Sélecteur de mode sombre */ #darkModeSwitch { cursor: pointer; } #darkModeLabel { cursor: pointer; transition: all 0.3s ease; color: #ffffff; } #darkModeSwitch:checked + #darkModeLabel .fa-sun { color: #ffc107; } .dark-mode #darkModeLabel .fa-moon { color: #ffffff; } /* Animations */ .fade-in { animation: fadeIn 0.5s ease; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } /* Tableaux responsifs */ .table-responsive { overflow-x: auto; -webkit-overflow-scrolling: touch; } .dark-mode .table-striped tbody tr:nth-of-type(odd) { background-color: rgba(255, 255, 255, 0.05); } .dark-mode .table-hover tbody tr:hover { background-color: rgba(255, 255, 255, 0.075); } .dark-mode .table thead th { border-bottom-color: var(--border-color); } .dark-mode .table td, .dark-mode .table th { border-top-color: var(--border-color); } /* Colors for links in tables and content */ .table a, .card-body a:not(.btn) { color: var(--primary-color); text-decoration: none; } .table a:hover, .card-body a:not(.btn):hover { color: var(--primary-hover); text-decoration: underline; } /* Styles pour les liens selon le module actif */ /* CRM */ body[data-module="crm"] .table a, body[data-module="crm"] .card-body a:not(.btn), body[data-module="crm"] .nav-tabs .nav-link { color: var(--crm-color); } body[data-module="crm"] .table a:hover, body[data-module="crm"] .card-body a:not(.btn):hover, body[data-module="crm"] .nav-tabs .nav-link:hover { color: var(--crm-hover); } body[data-module="crm"] .nav-tabs .nav-link.active { color: var(--crm-color); border-color: #dee2e6 #dee2e6 #fff; border-bottom-color: var(--crm-color); font-weight: 600; background-color: #fff; } /* Propositions */ body[data-module="propositions"] .table a, body[data-module="propositions"] .card-body a:not(.btn), body[data-module="propositions"] .nav-tabs .nav-link { color: var(--propositions-color); } body[data-module="propositions"] .table a:hover, body[data-module="propositions"] .card-body a:not(.btn):hover, body[data-module="propositions"] .nav-tabs .nav-link:hover { color: var(--propositions-hover); } body[data-module="propositions"] .nav-tabs .nav-link.active { color: var(--propositions-color); border-color: #dee2e6 #dee2e6 #fff; border-bottom-color: var(--propositions-color); font-weight: 600; background-color: #fff; } /* Devis */ body[data-module="devis"] .table a, body[data-module="devis"] .card-body a:not(.btn), body[data-module="devis"] .nav-tabs .nav-link { color: var(--devis-color); } body[data-module="devis"] .table a:hover, body[data-module="devis"] .card-body a:not(.btn):hover, body[data-module="devis"] .nav-tabs .nav-link:hover { color: var(--devis-hover); } body[data-module="devis"] .nav-tabs .nav-link.active { color: var(--devis-color); border-color: #dee2e6 #dee2e6 #fff; border-bottom-color: var(--devis-color); font-weight: 600; background-color: #fff; } /* Mode sombre */ .dark-mode .table a, .dark-mode .card-body a:not(.btn) { color: #6ea8fe; } .dark-mode .table a:hover, .dark-mode .card-body a:not(.btn):hover { color: #9ec5fe; } /* Adaptation pour le mode sombre par module */ .dark-mode[data-module="crm"] .table a, .dark-mode[data-module="crm"] .card-body a:not(.btn), .dark-mode[data-module="crm"] .nav-tabs .nav-link { color: var(--crm-light); } .dark-mode[data-module="crm"] .nav-tabs .nav-link.active { background-color: var(--card-bg); border-color: var(--border-color) var(--border-color) var(--card-bg); } .dark-mode[data-module="propositions"] .table a, .dark-mode[data-module="propositions"] .card-body a:not(.btn), .dark-mode[data-module="propositions"] .nav-tabs .nav-link { color: var(--propositions-light); } .dark-mode[data-module="propositions"] .nav-tabs .nav-link.active { background-color: var(--card-bg); border-color: var(--border-color) var(--border-color) var(--card-bg); } .dark-mode[data-module="devis"] .table a, .dark-mode[data-module="devis"] .card-body a:not(.btn), .dark-mode[data-module="devis"] .nav-tabs .nav-link { color: var(--devis-light); } .dark-mode[data-module="devis"] .nav-tabs .nav-link.active { background-color: var(--card-bg); border-color: var(--border-color) var(--border-color) var(--card-bg); } /* Footer */ .footer { margin-top: 2rem; background-color: var(--light-color); color: var(--secondary-color); padding: 1.5rem 0; transition: background-color 0.5s ease, color 0.5s ease; } .footer a { color: var(--primary-color); text-decoration: none; } .footer a:hover { color: var(--primary-hover); text-decoration: underline; } /* Module-specific Footer */ body[data-module="crm"] .footer a { color: var(--crm-color); } body[data-module="crm"] .footer a:hover { color: var(--crm-hover); } body[data-module="propositions"] .footer a { color: var(--propositions-color); } body[data-module="propositions"] .footer a:hover { color: var(--propositions-hover); } body[data-module="devis"] .footer a { color: var(--devis-color); } body[data-module="devis"] .footer a:hover { color: var(--devis-hover); } .dark-mode .footer { background-color: #343a40 !important; } .dark-mode .footer .text-muted { color: #adb5bd !important; } .dark-mode .footer a { color: #6ea8fe; } .dark-mode .footer a:hover { color: #9ec5fe; } .dark-mode[data-module="crm"] .footer a { color: var(--crm-light); } .dark-mode[data-module="propositions"] .footer a { color: var(--propositions-light); } .dark-mode[data-module="devis"] .footer a { color: var(--devis-light); } /* Cartes d'accueil */ .card .fas, .card .far { color: var(--primary-color); } /* Infobulle personnalisée */ .custom-tooltip { position: relative; display: inline-block; } .custom-tooltip .tooltip-text { visibility: hidden; width: 120px; background-color: #555; color: #fff; text-align: center; border-radius: 6px; padding: 5px; 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; } /* Titres et en-têtes */ h1, h2, h3, h4, h5, h6 { font-weight: 700; margin-bottom: 1rem; } /* Styles de titres spécifiques aux modules */ body[data-module="crm"] h1, body[data-module="crm"] .card-header { border-left: 4px solid var(--crm-color); padding-left: 10px; } body[data-module="propositions"] h1, body[data-module="propositions"] .card-header { border-left: 4px solid var(--propositions-color); padding-left: 10px; } body[data-module="devis"] h1, body[data-module="devis"] .card-header { border-left: 4px solid var(--devis-color); padding-left: 10px; } /* Page d'accueil */ .jumbotron { background-color: var(--card-bg); border-radius: 0.3rem; padding: 2rem 1rem; margin-bottom: 2rem; box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); }