/* ============================================================ INTER SANTÉ — THEME MODERN (STRATEGIC UX EDITION) SaaS Premium UI v2025 - High-End HealthTech B2B ============================================================ */ /* === 1. TYPOGRAPHIE & FONT-FACE === */ @import url('https://fonts.googleapis.com/css2?family=Syne:wght@600;700;800&family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,700;1,9..40,400&display=swap'); :root { /* --- Palette Chromatique "Trust & Health" --- */ --color-primary: #1a6b4a; /* Vert émeraude profond (Stabilité) */ --color-primary-light: #25a06e; --color-primary-dark: #114532; --color-primary-ghost: rgba(26, 107, 74, 0.08); --color-accent: #0abf7c; /* Cyan/Vert médical */ /* --- Status Colors (Clarté décisionnelle) --- */ --color-success: #2ec4b6; /* Validé / Payé */ --color-warning: #f4a261; /* En attente / À compléter */ --color-urgent: #e63946; /* Rejeté / Anomalie / Retard */ --color-info: #3a86ff; /* Information / Courtier */ /* --- Neutres & Surfaces --- */ --bg-app: #f8fafc; /* Fond très clair "Lumière" */ --bg-card: #ffffff; --text-main: #0f172a; /* Bleu-noir pour contraste maximal */ --text-muted: #64748b; --border-light: #e2e8f0; /* --- Design Tokens --- */ --shadow-sm: 0 1px 2px rgba(0,0,0,0.05); --shadow-md: 0 10px 15px -3px rgba(0,0,0,0.06), 0 4px 6px -2px rgba(0,0,0,0.03); --shadow-lg: 0 20px 25px -5px rgba(0,0,0,0.1), 0 10px 10px -5px rgba(0,0,0,0.04); --radius-lg: 14px; --radius-md: 8px; --transition-fast: 0.2s cubic-bezier(0.4, 0, 0.2, 1); --transition-smooth: 0.4s cubic-bezier(0.075, 0.82, 0.165, 1); } /* === 2. RESET & FONDATION === */ body { background-color: var(--bg-app) !important; color: var(--text-main); font-family: 'DM Sans', sans-serif !important; -webkit-font-smoothing: antialiased; letter-spacing: -0.01em; } h1, h2, h3, .logo-text { font-family: 'Syne', sans-serif; font-weight: 700; color: var(--color-primary-dark); } /* === 3. PATTERN : NAVIGATION (SIDEBAR) === */ .sidebar { background: white !important; border-right: 1px solid var(--border-light) !important; box-shadow: none !important; width: 260px; } .sidebar-nav .nav-link { color: var(--text-muted) !important; font-weight: 500; border-radius: var(--radius-md); margin: 4px 15px; padding: 10px 15px; transition: var(--transition-fast); } .sidebar-nav .nav-link i { font-size: 1.25rem; color: var(--text-muted); } .sidebar-nav .nav-link:hover, .sidebar-nav .nav-link.active-main { background-color: var(--color-primary-ghost) !important; color: var(--color-primary) !important; } .sidebar-nav .nav-link.active-main { position: relative; } .sidebar-nav .nav-link.active-main::before { content: ""; position: absolute; left: -15px; top: 15%; height: 70%; width: 4px; background: var(--color-primary); border-radius: 0 4px 4px 0; } /* === 4. PATTERN : DATA CARDS & KPI === */ .card { background: var(--bg-card); border: 1px solid var(--border-light) !important; border-radius: var(--radius-lg) !important; box-shadow: var(--shadow-sm) !important; transition: var(--transition-smooth); } .card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md) !important; } .kpi-card { border-left: 4px solid var(--color-primary) !important; } .kpi-value { font-size: 1.8rem; font-weight: 800; font-family: 'Syne', sans-serif; color: var(--text-main); } /* === 5. PATTERN : TABLEAUX ÉPURÉS (STRIPE STYLE) === */ .table-responsive { border-radius: var(--radius-lg); background: white; } .table { margin-bottom: 0; } .table thead th { background-color: #f8fafc !important; color: var(--text-muted); font-weight: 600; font-size: 0.75rem; text-transform: uppercase; padding: 16px !important; border-bottom: 1px solid var(--border-light) !important; } .table tbody tr { transition: var(--transition-fast); } .table tbody tr:hover { background-color: #f1f5f9 !important; } .table td { padding: 16px !important; vertical-align: middle; border-bottom: 1px solid #f1f5f9 !important; } /* === 6. PATTERN : CONTEXTUAL SIDE DRAWER (BARRE DROITE) === */ #barre_laterale_d { position: fixed; top: 0; right: -350px; width: 350px; height: 100vh; background: white; z-index: 1050; border-left: 1px solid var(--border-light); box-shadow: var(--shadow-lg); transition: var(--transition-smooth); padding: 24px; } #barre_laterale_d.active { right: 0; } .info-box { background: #f1f5f9; border-radius: var(--radius-md); padding: 12px; margin-bottom: 12px; } .info-box label { display: block; font-size: 0.65rem; font-weight: 700; text-transform: uppercase; color: var(--text-muted); margin-bottom: 4px; } .info-box span { font-weight: 600; color: var(--color-primary-dark); } /* === 7. PATTERN : SKELETON LOADING ANIMATION === */ .skeleton { background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: skeleton-loading 1.5s infinite; border-radius: 4px; } @keyframes skeleton-loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* === 8. PATTERN : BULK ACTIONS BAR (FLOATING) === */ .bulk-actions-bar { position: fixed; bottom: 30px; left: 50%; transform: translateX(-50%); background: var(--text-main); color: white; padding: 12px 24px; border-radius: 50px; display: flex; align-items: center; gap: 20px; box-shadow: var(--shadow-lg); z-index: 2000; animation: slideUp 0.3s ease-out; } @keyframes slideUp { from { bottom: -100px; } to { bottom: 30px; } } /* === 9. PATTERN : COMMAND BAR (CMD+K) === */ .command-bar-wrapper { background: rgba(15, 23, 42, 0.8); backdrop-filter: blur(8px); position: fixed; inset: 0; z-index: 9999; display: flex; justify-content: center; padding-top: 100px; } .command-bar { width: 600px; background: white; border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-lg); } .command-input { width: 100%; border: none; padding: 20px; font-size: 1.1rem; outline: none; border-bottom: 1px solid var(--border-light); } /* === 10. BOUTONS & MICRO-INTERACTIONS === */ .btn-primary { background: var(--color-primary) !important; border: none !important; border-radius: var(--radius-md) !important; padding: 10px 24px !important; font-weight: 600 !important; box-shadow: 0 4px 6px rgba(26, 107, 74, 0.2) !important; transition: var(--transition-fast) !important; } .btn-primary:hover { background: var(--color-primary-light) !important; transform: translateY(-1px); } .badge-saas { padding: 6px 12px; border-radius: 20px; font-weight: 700; font-size: 0.7rem; text-transform: uppercase; } .status-paid { background: #dcfce7; color: #166534; } .status-urgent { background: #fee2e2; color: #991b1b; } .status-warning { background: #fef9c3; color: #854d0e; } /* TRUST BADGE (Pattern de confiance) */ .trust-badge { display: inline-flex; align-items: center; gap: 6px; font-size: 0.7rem; color: var(--color-primary); background: var(--color-primary-ghost); padding: 4px 10px; border-radius: 100px; font-weight: 600; } /* MODE TEST INDICATOR */ .mode-test-active .header { border-bottom: 3px solid var(--color-warning) !important; }