radiantrh/Bootstrap_new/css/style_office.css
2026-01-20 15:34:13 +00:00

1577 lines
35 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* ============================================
STYLE OFFICE POUR LE PORTAIL RH - VERSION CORRIGÉE
Encodage: UTF-8 sans BOM
============================================ */
:root {
/* PowerPoint/Office 2019 Color Palette */
--office-primary: #b7472a; /* Sidebar color - PowerPoint accent */
--office-secondary: #2b579a; /* Header/buttons - Office blue */
--office-accent: #107c10; /* Success/active states - Excel green */
--office-light: #f3f2f1; /* Background - Office gray */
--office-common: #e6e6e6; /* Background - Office gray */
--office-dark: #323130; /* Text color */
--office-border: #d0d0d0; /* Borders */
--office-hover: #f0f0f0; /* Hover states */
--office-card: #ffffff; /* Card backgrounds */
/* Dimensions */
--sidebar-width: 260px;
--sidebar-collapsed: 85px;
--header-height: 64px;
--transition-speed: 0.3s;
/* Responsive breakpoints */
--breakpoint-tablet: 1200px;
--breakpoint-mobile: 768px;
--office-primary-light: rgba(183, 71, 42, 0.08);
--office-primary-lighter: rgba(183, 71, 42, 0.04);
--office-primary-border: rgba(183, 71, 42, 0.15);
--office-warm-bg: #fefcfb;
--office-card-highlight: #fff9f8;
--content-margin-left: calc(var(--sidebar-width) + 24px);
--content-margin-right: 24px;
--container-max: 1400px;
--container-pad: 24px;
}
/* ============================================
BASE STYLES & RESET
============================================ */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', 'Segoe UI Web (West European)', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif;
background-color: var(--office-common);
color: var(--office-dark);
line-height: 1.5;
overflow-x: hidden;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* ============================================
HEADER STYLES
============================================ */
.app-header {
background-color: var(--office-light) !important;
height: var(--header-height);
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1030;
}
/* Nettoyage du bouton dropdown */
.user-menu.dropdown-toggle {
display: flex;
align-items: center;
outline: none;
box-shadow: none !important;
}
/* Supprimer la petite flèche par défaut de Bootstrap si elle vous gêne */
.user-menu.dropdown-toggle::after {
display: none;
}
/* Style de base de la flèche */
.user-arrow {
font-size: 0.8rem;
transition: transform 0.3s ease;
color: #6c757d; /* Couleur grise discrète */
}
/* Rotation automatique quand le menu est ouvert */
#userDropdownBtn[aria-expanded="true"] .user-arrow {
transform: rotate(180deg);
color: var(--bs-primary); /* Change la couleur en bleu au clic (optionnel) */
}
/* On s'assure que le bouton reste bien aligné horizontalement */
.user-menu {
display: flex;
align-items: center;
}
/* S'assurer que le menu dropdown passe devant tout */
.dropdown-menu {
z-index: 2000 !important;
min-width: 220px;
border: 1px solid rgba(0,0,0,0.1);
}
/* Positionnement quand le header est fixed */
.dropdown-menu[data-bs-popper] {
margin-top: 15px !important;
}
.header-content {
display: flex;
align-items: center;
justify-content: space-between;
height: 100%;
padding: 0 24px;
}
/* 1. Réduction de l'espace global du bouton */
#userDropdownBtn {
gap: 8px; /* Contrôle l'espace entre avatar, texte et flèche */
}
/* 2. Réduction des textes */
.user-name {
font-size: 0.85rem !important; /* Un peu plus petit */
margin-bottom: -2px; /* Rapproche le nom du rôle */
}
.user-role {
font-size: 1.15rem !important;
opacity: 0.8;
}
/* 3. Réduction de l'avatar */
.user-avatar {
width: 32px !important; /* Au lieu de 36 ou 40 */
height: 32px !important;
font-size: 0.8rem; /* Initiales plus petites */
display: flex;
align-items: center;
justify-content: center;
}
/* 4. Rapprochement de la flèche */
.user-arrow {
font-size: 0.7rem;
margin-left: 4px !important; /* Espace réduit avec le texte */
}
/* 5. Densité du menu déroulant (Dropdown) */
.dropdown-menu {
padding: 0.25rem 0; /* Moins d'espace en haut et en bas du menu */
}
.dropdown-item {
padding: 0.4rem 1rem; /* Items plus serrés */
font-size: 0.85rem;
}
.dropdown-header {
padding: 0.5rem 1rem;
}
.logo-container {
display: flex;
align-items: center;
gap: 16px;
}
.app-logo {
display: flex;
align-items: center;
color: #313c4c;
text-decoration: none;
font-weight: 600;
font-size: 20px;
}
.app-logo img { height: 36px; }
.notification-btn i{ font-size : 15pt !important; }
#lienlogo img{ width:50px; max-height: 50px; }
/* ============================================
SIDEBAR STYLES
============================================ */
.app-sidebar {
width: var(--sidebar-width) !important; /* 70px */
background: linear-gradient(180deg, var(--office-primary) 0%, #a53e24 100%);
position: fixed;
top: var(--header-height);
left: 0;
bottom: 0;
z-index: 1020;
box-shadow: 2px 0 8px rgba(0, 0, 0, 0.1);
transition: width var(--transition-speed) ease;
overflow-y: auto;
overflow-x: hidden;
}
/* Pattern overlay */
.app-sidebar::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-image:
radial-gradient(circle at 10% 20%, rgba(255, 255, 255, 0.03) 0%, transparent 20%),
radial-gradient(circle at 90% 80%, rgba(255, 255, 255, 0.03) 0%, transparent 20%);
pointer-events: none;
}
/* Texte normal */
.app-sidebar .nav-link .nav-text {
display: inline;
opacity: 1;
transition: opacity var(--transition-speed) ease;
}
/* En mode réduit : cacher le texte inline */
body.sidebar-collapsed .app-sidebar .nav-link .nav-text {
display: none;
}
/* Overlay flottant au survol */
body.sidebar-collapsed .app-sidebar .nav-link {
position: relative;
}
body.sidebar-collapsed .app-sidebar .nav-link:hover::after {
content: attr(data-label);
position: absolute;
top: 50%;
left: 100%;
transform: translateY(-50%);
background: rgba(0,0,0,0.85);
color: #fff;
padding: 6px 12px;
border-radius: 4px;
white-space: nowrap;
font-size: 14px;
margin-left: 8px;
box-shadow: 0 2px 6px rgba(0,0,0,0.2);
opacity: 0;
transition: opacity var(--transition-speed) ease, transform var(--transition-speed) ease;
z-index: 2000;
}
body.sidebar-collapsed .app-sidebar .nav-link:hover::after {
opacity: 1;
transform: translateY(-50%) translateX(5px);
}
/* Cache les flèches de sous-menu quand c'est réduit */
body.sidebar-collapsed .nav-arrow {
display: none !important;
}
/* Empêche les sous-menus de s'ouvrir verticalement en mode réduit */
/* (Ils resteraient visibles mais écrasés sinon) */
body.sidebar-collapsed .nav-submenu {
display: none !important;
}
/* Centrage des icônes pour un aspect "Barre d'outils" propre */
body.sidebar-collapsed .nav-item .nav-link {
display: flex;
justify-content: center;
padding-left: 0;
padding-right: 0;
}
.sidebar-nav {
padding: 24px 0;
}
.nav-section {
margin-bottom: 32px;
padding: 0 20px;
}
.nav-title {
color: rgba(255, 255, 255, 0.7);
font-size: 12px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
margin-bottom: 12px;
padding: 0 16px;
}
.nav-item {
margin-bottom: 4px;
}
.nav-link {
display: flex;
align-items: center;
color: rgba(255, 255, 255, 0.85);
padding: 12px 16px;
text-decoration: none;
border-radius: 6px;
transition: all 0.2s ease;
position: relative;
overflow: hidden;
}
.nav-link:hover {
background-color: rgba(255, 255, 255, 0.1);
color: white;
}
.nav-link.active {
background-color: rgba(255, 255, 255, 0.15);
color: white;
font-weight: 500;
}
.nav-link i {
width: 24px;
font-size: 18px;
margin-right: 12px;
text-align: center;
}
.nav-text {
flex: 1;
font-size: 14px;
}
.nav-badge {
background-color: var(--office-accent);
color: white;
font-size: 11px;
padding: 2px 6px;
border-radius: 10px;
margin-left: 8px;
}
.nav-arrow {
font-size: 12px;
opacity: 0.7;
transition: transform 0.2s ease;
}
.nav-link[aria-expanded="true"] .nav-arrow {
transform: rotate(90deg);
transition: transform 0.3s;
}
.nav-submenu {
background-color: rgba(0, 0, 0, 0.1);
border-radius: 6px;
margin-top: 4px;
padding: 8px 0;
}
.nav-submenu .nav-link {
padding: 8px 16px 8px 52px;
font-size: 13px;
}
.nav-submenu .nav-link::before {
content: '•';
position: absolute;
left: 36px;
opacity: 0.6;
}
/* ============================================
MAIN CONTENT AREA
============================================ */
.app-main {
margin-left: var(--sidebar-width);
padding-top: var(--header-height);
min-height: 100vh;
transition: margin-left var(--transition-speed) ease, width var(--transition-speed) ease;
background-color: var(--office-light);
width: calc(100% - var(--sidebar-width));
}
/* Quand le sidebar est réduit */
body.sidebar-collapsed .app-main {
margin-left: var(--sidebar-collapsed) !important;
width: calc(100% - var(--sidebar-collapsed)) !important;
}
.toggle-sidebar-btn {
font-size: 20px;
padding-left: 10px;
cursor: pointer;
}
.nav-bar.collapsed {
left: var(--sidebar-collapsed) !important;
}
/* ============================================
NAVIGATION TABS
============================================ */
.nav-bar {
background-color: white;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
border: 1px solid var(--office-border);
position: fixed;
top: var(--header-height); /* Directement sous le header */
left: var(--sidebar-width); /* Commence après la sidebar */
right: 0;
z-index: 1000;
height: 56px;
display: flex;
align-items: center;
padding: 0;
margin: 0;
transition: left var(--transition-speed) ease;
}
/* Conteneur pour centrer le contenu */
.nav-bar > .nav-tabs {
width: 100%;
max-width: var(--container-max);
margin: 0 auto;
padding: 0 var(--container-pad);
height: 100%;
display: flex;
align-items: center;
gap: 4px;
overflow-x: auto;
}
.nav-tab {
display: inline-flex;
align-items: center;
padding: 10px 18px;
background-color: transparent;
color: var(--office-dark);
text-decoration: none;
border-radius: 6px;
font-size: 14px;
font-weight: 500;
white-space: nowrap;
transition: all 0.2s ease;
border: 1px solid transparent;
height: 40px;
}
.nav-tab:hover {
background-color: var(--office-hover);
color: var(--office-secondary);
}
.nav-tab.active {
background-color: var(--office-secondary);
color: white;
border-color: var(--office-secondary);
}
.nav-tab i {
margin-right: 8px;
font-size: 16px;
}
/* Style général de la scrollbar */
.nav-bar > .nav-tabs::-webkit-scrollbar {
height: 10px; /* épaisseur de la barre horizontale */
}
/* Couleur de la piste (fond de la scrollbar) */
.nav-bar > .nav-tabs::-webkit-scrollbar-track {
background: #f1f1f1;
border-radius: 8px;
}
/* Couleur et style du curseur (thumb) */
.nav-bar > .nav-tabs::-webkit-scrollbar-thumb {
background: var(--office-common);
border-radius: 8px;
}
/* Effet au survol */
.nav-bar > .nav-tabs::-webkit-scrollbar-thumb:hover {
background: #97999B;
}
/* Quand le body a la classe sidebar-collapsed */
body.sidebar-collapsed .app-sidebar {
width: var(--sidebar-collapsed) !important;
}
body.sidebar-collapsed .nav-bar {
left: var(--sidebar-collapsed) !important;
}
/* Accessibilité et clickabilité du bouton */
.toggle-sidebar-btn {
cursor: pointer;
}
.toggle-sidebar-btn[role="button"] {
outline: none;
}
/* Content card */
.content-card {
background: var(--office-card);
border-radius: 8px;
box-shadow: 0 2px 6px rgba(0,0,0,.05);
margin-top: 8px; /* Ajout pour rapprocher visuellement la carte de la nav-bar */
}
.content-area {
padding: calc(var(--header-height) + 56px) 24px 24px 24px; /* supprime le +8px */
max-width: 1400px;
margin: 24px auto !important;
}
/* Sidebar collapsée (tablette) */
@media (max-width: 1200px) {
.nav-bar { left: var(--sidebar-collapsed); }
.content-area { padding-left: 24px; padding-right: 24px; }
}
.card-header {
background-color: #fafafa;
border-bottom: 1px solid var(--office-border);
padding: 20px 24px;
font-weight: 600;
color: var(--office-dark);
font-size: 18px;
display: flex;
align-items: center;
justify-content: space-between;
}
.card-body {
padding: 24px;
background-color: var(--office-card);
}
/* ============================================
HEADER CONTROLS
============================================ */
.header-controls {
display: flex;
align-items: center;
gap: 16px;
}
.header-btn {
background: transparent;
border: none;
color: #313c4c;
padding: 8px;
border-radius: 4px;
cursor: pointer;
position: relative;
transition: background-color 0.2s ease;
}
.header-btn:hover {
background-color: rgba(255, 255, 255, 0.1);
}
.notification-badge {
position: absolute;
top: 2px;
right: 2px;
background-color: var(--office-accent);
color: white;
font-size: 10px;
font-weight: 600;
width: 15px;
height: 15px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
}
.user-menu {
display: flex;
align-items: center;
gap: 12px;
cursor: pointer;
padding: 4px 12px;
border-radius: 6px;
transition: background-color 0.2s ease;
}
.user-menu:hover {
background-color: rgba(255, 255, 255, 0.1);
}
.user-avatar {
width: 36px;
height: 36px;
border-radius: 50%;
background: linear-gradient(135deg, var(--office-primary), #ff6b35);
color: white;
display: flex;
align-items: center;
justify-content: center;
font-weight: 600;
font-size: 14px;
}
.user-info {
display: flex;
flex-direction: column;
}
.user-name {
color: #313c4c;
font-weight: 500;
font-size: 14px;
}
.user-role {
color: #313c4c;
font-size: 12px;
}
/* ============================================
CONTEXT PANEL
============================================ */
.context-panel {
position: fixed;
right: -380px;
top: var(--header-height);
bottom: 0;
width: 380px;
background-color: white;
box-shadow: -2px 0 12px rgba(0, 0, 0, 0.1);
z-index: 1015;
transition: right 0.3s ease;
display: flex;
flex-direction: column;
border-left: 1px solid var(--office-border);
}
.context-panel.open {
right: 0;
}
.context-header {
background: linear-gradient(135deg, var(--office-primary), #ee6a49);
color: white;
padding: 20px 24px;
display: flex;
align-items: center;
justify-content: space-between;
}
.context-title {
font-size: 18px;
font-weight: 600;
display: flex;
align-items: center;
gap: 10px;
}
.context-close {
background: transparent;
border: none;
color: white;
font-size: 20px;
cursor: pointer;
padding: 4px;
border-radius: 4px;
transition: background-color 0.2s ease;
}
.context-close:hover {
background-color: rgba(255, 255, 255, 0.1);
}
.context-body {
flex: 1;
padding: 24px;
overflow-y: auto;
background-color: #d0d0d0 !important;
}
.context-section {
margin-bottom: 28px;
}
.section-title {
font-size: 14px;
font-weight: 600;
color: var(--office-secondary);
margin-bottom: 12px;
text-transform: uppercase;
letter-spacing: 0.5px;
display: flex;
align-items: center;
gap: 8px;
}
.section-title i {
font-size: 16px;
}
.info-box {
background-color: #fafafa;
border: 1px solid var(--office-border);
border-radius: 6px;
padding: 16px;
margin-bottom: 12px;
}
.info-label {
font-size: 12px;
color: #666;
margin-bottom: 4px;
}
.info-value {
font-size: 15px;
font-weight: 500;
color: var(--office-dark);
line-height: 1.4;
}
.action-btn {
width: 100%;
padding: 12px;
background-color: white;
border: 1px solid var(--office-border);
border-radius: 6px;
color: var(--office-dark);
font-weight: 500;
text-align: left;
display: flex;
align-items: center;
gap: 10px;
cursor: pointer;
transition: all 0.2s ease;
margin-bottom: 8px;
}
.action-btn:hover {
background-color: var(--office-hover);
border-color: var(--office-secondary);
color: var(--office-secondary);
}
.action-btn i {
width: 20px;
text-align: center;
font-size: 18px;
}
.photo-container {
text-align: center;
padding: 16px;
background-color: #fafafa;
border-radius: 8px;
border: 1px solid var(--office-border);
}
.patient-photo {
width: 150px;
height: 150px;
border-radius: 8px;
object-fit: cover;
border: 3px solid white;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
cursor: pointer;
transition: transform 0.3s ease;
}
.patient-photo:hover {
transform: scale(1.05);
}
/* ============================================
CONTEXT TOGGLE BUTTON
============================================ */
.context-toggle {
position: fixed;
right: 24px;
bottom: 24px;
width: 56px;
height: 56px;
border-radius: 50%;
background: linear-gradient(135deg, var(--office-primary), #ff6b35);
color: white;
border: none;
box-shadow: 0 4px 12px rgba(183, 71, 42, 0.3);
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
z-index: 1010;
transition: all 0.3s ease;
}
.context-toggle:hover {
transform: translateY(-2px);
box-shadow: 0 6px 16px rgba(183, 71, 42, 0.4);
}
/* ============================================
TEST MODE INDICATOR
============================================ */
.test-indicator {
background: linear-gradient(45deg, #ffd700, #ffed4e);
color: #8a6d3b;
padding: 4px 12px;
border-radius: 4px;
font-size: 12px;
font-weight: 600;
display: inline-flex;
align-items: center;
gap: 6px;
margin-left: 12px;
animation: pulse 2s infinite;
}
@keyframes pulse {
0% { opacity: 1; }
50% { opacity: 0.7; }
100% { opacity: 1; }
}
/* ============================================
LANGUAGE SELECTOR
============================================ */
.language-selector {
display: flex;
align-items: center;
gap: 8px;
padding: 6px 12px;
background-color: rgba(255, 255, 255, 0.1);
border-radius: 4px;
cursor: pointer;
transition: background-color 0.2s ease;
color: #313c4c;
}
.language-selector:hover {
background-color: rgba(255, 255, 255, 0.2);
}
.language-flag {
width: 24px;
height: 16px;
object-fit: cover;
border-radius: 2px;
}
/* ============================================
MODAL CUSTOMIZATION
============================================ */
.modal-office .modal-header {
background: linear-gradient(135deg, var(--office-secondary), #1e4a8b);
color: white;
border-bottom: none;
}
.modal-office .modal-title {
font-weight: 600;
}
/* Force le modal et son voile noir au-dessus de tout */
.modal-office {
z-index: 1060 !important;
}
/* Le backdrop (le fond noir) doit aussi être remonté */
.modal-backdrop {
z-index: 1055 !important;
}
.modal.show { z-index: 2000; }
.modal-backdrop.show { z-index: 1999; }
/* ============================================
RESPONSIVE DESIGN
============================================ */
@media (max-width: 1200px) {
.app-sidebar {
width: var(--sidebar-collapsed);
}
.app-main {
margin-left: var(--sidebar-collapsed);
}
.nav-text,
.nav-title,
.nav-badge,
.nav-arrow {
display: none;
}
.nav-link {
justify-content: center;
padding: 16px;
}
.nav-link i {
margin-right: 0;
font-size: 20px;
}
.nav-submenu .nav-link {
padding: 12px;
justify-content: center;
}
.nav-submenu .nav-link::before {
display: none;
}
.context-panel {
width: 100%;
right: -100%;
}
}
/**/
/* Mobile — UNE SEULE définition */
@media (max-width: 768px) {
.app-sidebar { transform: translateX(-100%); width: var(--sidebar-width); }
.app-sidebar.show { transform: translateX(0); }
.app-main { margin-left: 0; }
.nav-bar { left: 0; border-radius: 0; top: var(--header-height); }
.nav-bar > .nav-tabs { padding: 0 16px; }
/* Garder +8px ici pour fermer lécart (rouge) */
.content-area { padding: calc(var(--header-height) + 56px + 8px) 16px 16px 16px; max-width: 100%; }
.content-card { border-radius: 8px; margin: 8px 0 16px 0; /* 8px en haut, 16px en bas */ }
.header-content { padding: 0 16px; }
.user-info { display: none; }
.accordion-header, .accordion-header i, .accordion-header span {
font-size: 1.8rem !important;
font-weight: bold !important;
}
.accordion-title {
font-size: 0.9rem !important;
}
.financial-item {
border-right: none !important;
border-bottom: 1px solid var(--office-border);
}
.editor-paper {
padding: 1rem !important;
font-size: 9pt;
}
.chart-container {
height: 60vh;
}
.card-header {
flex-direction: column;
align-items: flex-start !important;
}
.btn-export {
margin-top: 0.5rem;
align-self: flex-end;
}
}
/* Écrans larges : mêmes insets pour nav-tabs et content-area */
@media (min-width: 1400px) {
.content-area {
padding-left: calc((100vw - 1400px) / 2);
padding-right: calc((100vw - 1400px) / 2);
}
}
/* ============================================
SCROLLBAR STYLING
============================================ */
.app-sidebar::-webkit-scrollbar,
.context-body::-webkit-scrollbar {
width: 6px;
}
.app-sidebar::-webkit-scrollbar-track,
.context-body::-webkit-scrollbar-track {
background: rgba(255, 255, 255, 0.1);
border-radius: 3px;
}
.app-sidebar::-webkit-scrollbar-thumb,
.context-body::-webkit-scrollbar-thumb {
background: rgba(255, 255, 255, 0.3);
border-radius: 3px;
}
.app-sidebar::-webkit-scrollbar-thumb:hover,
.context-body::-webkit-scrollbar-thumb:hover {
background: rgba(255, 255, 255, 0.4);
}
/* ============================================
STYLE DE SCROLLBAR POUR NAV-TABS
============================================ */
.nav-tabs::-webkit-scrollbar {
height: 4px;
}
.nav-tabs::-webkit-scrollbar-track {
background: rgba(0, 0, 0, 0.05);
border-radius: 2px;
}
.nav-tabs::-webkit-scrollbar-thumb {
background: rgba(0, 0, 0, 0.2);
border-radius: 2px;
}
.nav-tabs::-webkit-scrollbar-thumb:hover {
background: rgba(0, 0, 0, 0.3);
}
/*Accueil*/
.container { padding: 0 25px 25px 25px 25px; }
h1 { margin-bottom: 20px; }
.kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.card {
background: #fff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 6px rgba(0,0,0,.05);
}
.card h3 { margin: 0 0 10px; font-size: 14px; color: #666; }
.card .value { font-size: 1.0rem; font-weight: bold; }
.grid-1{display:grid; grid-template-rows:auto; margin-top:25px;}
.grid-2 { display:grid; grid-template-columns: 1fr 1fr; gap:20px; margin-top:25px; }
ul { list-style:none; padding:0; margin:0; }
li { padding:10px 0; border-bottom:1px solid #eee; }
li i { margin-right:10px; color:#007bff; }
.alert i { color:#ff9800; }
.chart {
height: 190px;
background:#eef2f7;
border-radius:6px;
display:flex;
align-items:center;
justify-content:center;
color:#888;
font-style:italic;
min-height: 315px;
}
/* Style pour les sous-détails dans les KPIs */
.sub-values {
margin-top: 10px;
padding-top: 10px;
border-top: 1px solid #eee; /* Fine séparation pour l'harmonie */
}
.sub-item {
display: flex;
justify-content: space-between;
font-size: 12px; /* Plus petit pour ne pas voler la vedette au KPI principal */
color: #666;
line-height: 1.6;
}
.sub-item strong {
color: #333;
}
.accordion-section {
margin-bottom: 2px;
border: 1px solid #ddd;
border-radius: 5px;
overflow: hidden;
}
.accordion-header {
display: flex;
align-items: center;
padding: 12px 15px;
background-color: #f1f5fc;
cursor: pointer;
font-weight: bold;
font-size: 1.1rem;
transition: background-color 0.3s;
margin: 0;
}
.accordion-header:hover {
background-color: #e9ecef;
}
.accordion-header.active {
background-color: #e2e6ea;
}
.accordion-header i:first-child {
margin-right: 10px;
font-size: 1.2rem;
}
.accordion-title {
flex-grow: 1;
}
.accordion-icon {
margin-left: auto;
transition: transform 0.3s ease;
}
.accordion-header.active .accordion-icon {
transform: rotate(180deg);
}
.accordion-content {
display: none;
padding: 2px;
background-color: #fff;
border-top: 1px solid #ddd;
}
.tab-container {
width: 100%;
overflow: auto;
}
.table td.text-end, .table th.text-end {
white-space: nowrap !important;
min-width: 110px; /* Légèrement augmenté pour les gros montants */
padding-left: 15px !important;
padding-right: 15px !important; /* Ajout crucial pour l'équilibre visuel */
font-family: 'Courier New', Courier, monospace; /* Optionnel: police mono pour aligner les décimales */
}
/* Global Container */
#div_accueil,
#div_police,
#div_texte_cp,
#div_emission,
#div_colleges_police,
#div_ajout_adherent,
#div_avenant,
#div_liste_adherent,
#div_adherent,
#div_liste {
background-color: var(--office-light);
color: var(--office-dark);
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
/* Card Styling */
#div_accueil .card,
#div_police .card,
#div_texte_cp .card,
#div_emission .card,
#div_colleges_police .card,
#div_ajout_adherent .card,
#div_avenant .card,
#div_liste_adherent .card,
#div_adherent .card,
#div_liste .card{
border: 1px solid var(--office-border);
border-radius: 2px; /* Office style is more rectangular */
}
#div_police .card-header,
#div_texte_cp .card-header,
#div_emission .card-header,
#div_colleges_police .card-header,
#div_ajout_adherent .card-header,
#div_avenant .card-header,
#div_liste_adherent .card-header
#div_adherent .card-header,
#div_adherent .card-header{
border-bottom: 1px solid var(--office-border) !important;
background-color: white;
color: var(--office-dark);
border-bottom: none;
}
/* Form Controls */
.form-label {
color: var(--office-primary);
margin-bottom: 2px;
font-size: 0.75rem;
}
.form-control {
border-radius: 2px;
border: 1px solid var(--office-border);
font-size: 0.9rem;
padding: 0.5rem 0.75rem;
}
.form-control[readonly] {
background-color: var(--office-warm-bg);
border-color: var(--office-common);
box-shadow: inset 0 1px 2px rgba(0,0,0,0.02);
color: #555;
font-weight: 500;
}
/* Status Boxes (Custom) */
.status-box {
border: 1px solid var(--office-border);
padding: 8px;
text-align: center;
background: white;
display: flex;
flex-direction: column;
border-radius: 2px;
}
.status-box.active {
background-color: var(--office-secondary);
color: white;
border-color: var(--office-secondary);
}
.status-box small {
font-size: 0.65rem;
text-transform: uppercase;
display: block;
}
.status-box span {
font-weight: bold;
font-size: 1rem;
}
/* Financial Footer */
.financial-item {
transition: background 0.3s;
}
.financial-item:hover {
background-color: var(--office-hover);
}
/* Buttons */
.btn-primary {
background-color: var(--office-primary);
border-color: var(--office-primary);
}
.btn-secondary {
background-color: var(--office-secondary);
border-color: var(--office-secondary);
}
.btn-outline-office {
color: var(--office-secondary);
border-color: var(--office-secondary);
}
.btn-outline-office:hover {
background-color: var(--office-secondary);
color: white;
}
/* Tables */
.custom-table thead th {
background-color: var(--office-common);
border-bottom: 2px solid var(--office-primary);
color: var(--office-dark);
font-weight: 600;
font-size: 0.8rem;
padding: 12px;
}
.custom-table tbody td {
padding: 10px 12px;
border-bottom: 1px solid var(--office-border);
}
/* Datepicker Specific */
.datepicker {
border-left: 3px solid var(--office-primary) !important;
font-weight: bold;
}
/* Styles spécifiques à l'éditeur de texte CP */
/* Effet "Feuille de papier" pour le textarea */
.editor-paper {
background-color: #ffffff !important;
background-image:
linear-gradient(#f1f1f1 1px, transparent 1px);
background-size: 100% 2.5rem; /* Simule des lignes d'écriture si besoin */
line-height: 2.5rem;
padding: 2rem !important;
border: 1px solid var(--office-border) !important;
border-radius: 0;
font-family: 'Consolas', 'Monaco', 'Courier New', monospace; /* Police technique et lisible */
color: var(--office-dark);
resize: vertical;
transition: all 0.3s ease;
}
.editor-paper:focus {
outline: none;
box-shadow: 0 0 15px rgba(0,0,0,0.1) !important;
border-color: var(--office-secondary) !important; /* Focus bleu Office */
}
/* Bouton Enregistrer - Style Bleu Office */
#div_texte_cp .btn-secondary {
background-color: var(--office-secondary) !important;
border-color: var(--office-secondary) !important;
border-radius: 2px;
transition: transform 0.2s;
}
#div_texte_cp .btn-secondary:hover {
background-color: #1e4275 !important;
transform: translateY(-1px);
}
/* Conteneur de l'éditeur */
.editor-container {
background: white;
border-radius: 2px;
position: relative;
}
/* Style Table Quittance - Thème Office */
.custom-quittance-table thead th {
background-color: var(--office-primary) !important; /* Orange PowerPoint */
color: white;
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.5px;
border: none;
padding: 12px 8px;
}
.custom-quittance-table tbody td {
font-size: 0.85rem;
border-bottom: 1px solid var(--office-border);
padding: 10px 8px;
}
/* Alternance de couleurs subtile */
.custom-quittance-table tbody tr:nth-child(even) {
background-color: var(--office-primary-lighter);
}
/* Alignements spécifiques */
.text-end { text-align: right !important; }
.text-center { text-align: center !important; }
/* Modal Styles */
.bg-office-blue {
background-color: var(--office-secondary) !important;
}
.btn-office-gray {
background-color: var(--office-common);
color: var(--office-dark);
border: 1px solid var(--office-border);
}
/* Animation au chargement (nécessite Animate.css ou transition simple) */
.animate__fadeIn {
animation: fadeIn 0.5s ease-in;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
/* Boutons d'action dans le tableau */
.custom-quittance-table .btn-group .btn {
padding: 0.25rem 0.5rem;
border-color: var(--office-border);
}
.custom-quittance-table .btn-group .btn:hover {
background-color: var(--office-hover);
}
.custom-quittance-table .btn-link {
color: var(--office-secondary);
}
/* Footer de table plus marqué */
.custom-quittance-table tfoot {
background-color: var(--office-light) !important;
border-top: 2px solid var(--office-secondary);
}
/* Background spécifique pour la carte récapitulative TTC */
.bg-office-primary-lighter {
background-color: var(--office-primary-lighter);
}
/* Header bleu type Office */
.bg-office-blue {
background-color: var(--office-secondary) !important;
}
/* Style spécifique pour le footer de la table émission */
.custom-quittance-table tfoot.table-dark {
background-color: var(--office-dark) !important;
border-top: 3px solid var(--office-primary);
}
@media print {
.btn, .modal, .sr-only { display: none !important; }
.card { border: 1px solid #ddd !important; box-shadow: none !important; }
}
/* Style Table Collèges - Vision Office 365 */
.custom-college-table thead th {
background-color: var(--office-common) !important;
color: var(--office-dark) !important;
font-size: 0.65rem;
font-weight: 800;
text-transform: uppercase;
border-bottom: 2px solid var(--office-primary);
vertical-align: middle;
padding: 10px 5px;
}
.custom-college-table tbody td {
font-size: 0.75rem; /* Compact pour tenir toutes les colonnes */
white-space: nowrap;
padding: 8px 5px;
}
/* Séparateurs verticaux pour groupes de données (Nb, HT, TTC) */
.border-start {
border-left: 1px solid var(--office-border) !important;
}
/* Style des boutons de montant (Action principale) */
.custom-college-table .btn-primary {
background-color: var(--office-secondary);
border: none;
font-size: 0.75rem;
}
.custom-college-table .btn-primary:hover {
background-color: var(--office-primary);
transform: scale(1.05);
}
/* Footer de table sombre type Excel Premium */
.custom-college-table tfoot {
border-top: 3px solid var(--office-primary);
background-color: var(--office-dark) !important;
}
.custom-college-table tfoot td {
padding: 12px 5px;
}
/* Badge de catégorie épuré */
.badge.rounded-pill {
font-weight: 600;
padding: 5px 10px;
}
/* Style Recherche Individuelle */
#div_familiale .form-select,
#div_familiale .form-control {
border: 1px solid var(--office-border);
transition: all 0.2s ease;
border-radius: 4px;
}
#div_familiale .form-select:focus,
#div_familiale .form-control:focus {
border-color: var(--office-secondary);
box-shadow: 0 0 0 0.25rem rgba(43, 87, 154, 0.1);
}
/* Groupement d'input avec icônes */
.input-group-text {
border: 1px solid var(--office-border);
color: #adb5bd;
}
/* Boutons personnalisés */
#div_familiale .btn-primary {
background-color: var(--office-secondary) !important;
border: none;
border-radius: 4px;
}
#div_familiale .btn-primary:hover {
background-color: #1a3a6b !important;
transform: translateY(-1px);
}
#div_familiale .btn-outline-secondary {
color: var(--office-secondary);
border-color: var(--office-secondary);
border-radius: 4px;
}
#div_familiale .btn-outline-secondary:hover {
background-color: var(--office-secondary);
color: white;
}
/* Badge spécifique Primes non facturées */
.badge.bg-warning {
background-color: #fff3cd !important;
color: #856404 !important;
border: 1px solid #ffeeba !important;
font-size: 0.9rem;
padding: 8px 12px;
}
/* Style pour le sélecteur de date focus */
.datepicker:focus {
border-color: var(--office-secondary);
background-color: #f8faff;
}
/* Animation de l'affichage de la prime */
#div_prime:not(:empty) {
border: 2px dashed var(--office-primary-lighter);
padding: 15px;
border-radius: 8px;
background-color: white;
}
/* Styles communs pour tous les graphiques */
.chart-container {
position: relative;
width: 100%;
min-height: 300px;
}
.legend-text {
vertical-align: middle;
}
.btn-export {
padding: 0.25rem 0.5rem;
font-size: 0.75rem;
}