newdesigngestionnaire/Bootstrap_new/css/theme-modern.css
2026-02-25 11:01:58 +00:00

317 lines
7.3 KiB
CSS

/* ==================================================
INTER SANTÉ — GLOBAL HEALTH DESIGN SYSTEM 2026
Full Harmonized Edition
================================================== */
/* ================================
FONTS
================================ */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Plus+Jakarta+Sans:wght@600;700&display=swap');
/* ================================
CSS VARIABLES
================================ */
:root {
/* ===== BRAND ===== */
--color-primary: #1463FF;
--color-primary-light: #4C8DFF;
--color-primary-dark: #0E47B5;
--color-accent: #20C997;
--color-success: #22C55E;
--color-urgent: #EF4444;
--color-warning: #F59E0B;
--color-info: #3B82F6;
--color-neutral: #64748B;
/* ===== BACKGROUNDS ===== */
--bg-base: #F7F9FC;
--bg-surface: #FFFFFF;
--bg-surface-2: #F1F5F9;
--bg-sidebar: #0F172A;
--bg-header: rgba(255,255,255,0.85);
/* ===== TEXT ===== */
--text-primary: #0F172A;
--text-secondary: #64748B;
--text-muted: #94A3B8;
--text-inverse: #FFFFFF;
/* ===== BORDERS ===== */
--border-light: #E2E8F0;
--border-medium: #CBD5E1;
/* ===== RADIUS ===== */
--radius-sm: 8px;
--radius-md: 14px;
--radius-lg: 20px;
--radius-xl: 28px;
--radius-full: 9999px;
/* ===== SHADOWS ===== */
--shadow-xs: 0 1px 2px rgba(0,0,0,0.04);
--shadow-sm: 0 4px 12px rgba(15,23,42,0.05);
--shadow-md: 0 8px 24px rgba(15,23,42,0.08);
--shadow-lg: 0 16px 40px rgba(15,23,42,0.12);
--shadow-glow: 0 0 0 3px rgba(20,99,255,0.15);
--transition-fast: 0.15s ease;
--transition-base: 0.25s cubic-bezier(.4,0,.2,1);
--transition-slow: 0.4s cubic-bezier(.4,0,.2,1);
--sidebar-width: 260px;
--sidebar-collapsed: 72px;
--header-height: 72px;
--context-width: 360px;
}
/* ================================
GLOBAL RESET
================================ */
*, *::before, *::after { box-sizing: border-box; }
html { font-size: 14px; scroll-behavior: smooth; }
body {
font-family: 'Inter', sans-serif;
background: var(--bg-base);
color: var(--text-primary);
line-height: 1.6;
-webkit-font-smoothing: antialiased;
}
h1,h2,h3,h4,h5,h6,
.fw-bold,.fw-semibold,.nav-link span {
font-family: 'Plus Jakarta Sans', sans-serif;
}
/* ================================
HEADER
================================ */
#header {
height: var(--header-height);
backdrop-filter: blur(14px);
background: var(--bg-header);
border-bottom: 1px solid var(--border-light);
padding: 0 1.5rem;
z-index: 1000;
}
#header .logo span {
font-weight: 700;
font-size: 1.1rem;
color: var(--color-primary);
}
/* ================================
SIDEBAR
================================ */
#sidebar {
width: var(--sidebar-width);
background: var(--bg-sidebar);
position: fixed;
top: var(--header-height);
left: 0;
height: calc(100vh - var(--header-height));
padding: 18px 12px;
overflow-y: auto;
}
.sidebar-nav { list-style: none; padding: 0; margin: 0; }
.sidebar-nav > .nav-item > .nav-link {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 12px;
border-radius: var(--radius-md);
color: rgba(255,255,255,0.75);
font-weight: 500;
transition: var(--transition-base);
}
.sidebar-nav > .nav-item > .nav-link:hover {
background: rgba(255,255,255,0.08);
color: white;
}
.sidebar-nav > .nav-item > .nav-link.active {
background: rgba(20,99,255,0.2);
color: white;
box-shadow: var(--shadow-glow);
}
/* Submenu */
.sidebar-nav .nav-content {
list-style: none;
padding-left: 28px;
}
.sidebar-nav .nav-content li a {
display: block;
padding: 8px 10px;
border-radius: var(--radius-sm);
color: rgba(255,255,255,0.6);
font-size: 0.8rem;
transition: var(--transition-fast);
}
.sidebar-nav .nav-content li a:hover,
.sidebar-nav .nav-content li a.active-submenu {
color: var(--color-accent);
background: rgba(255,255,255,0.08);
}
/* ================================
MAIN
================================ */
#main {
margin-left: var(--sidebar-width);
padding-top: calc(var(--header-height) + 20px);
padding-bottom: 40px;
min-height: 100vh;
}
/* ================================
CARDS
================================ */
.card {
background: var(--bg-surface);
border-radius: var(--radius-lg);
border: 1px solid var(--border-light);
box-shadow: var(--shadow-sm);
transition: var(--transition-base);
}
.card:hover {
transform: translateY(-3px);
box-shadow: var(--shadow-md);
}
.card-header {
border-bottom: 1px solid var(--border-light);
padding: 16px 20px;
font-weight: 600;
}
/* ================================
TABLES
================================ */
.table {
background: var(--bg-surface);
border-collapse: separate;
border-spacing: 0;
font-size: 0.85rem;
}
.table th {
background: var(--bg-surface);
color: var(--text-muted);
font-weight: 600;
border-bottom: 1px solid var(--border-light);
}
.table td {
border-bottom: 1px solid var(--border-light);
}
.table tbody tr:hover {
background: rgba(20,99,255,0.05);
}
/* ================================
BUTTONS
================================ */
.btn {
border-radius: var(--radius-md);
font-weight: 600;
font-size: 0.85rem;
}
.btn-primary {
background: var(--color-primary);
border: none;
color: white;
}
.btn-primary:hover {
background: var(--color-primary-dark);
transform: translateY(-1px);
}
/* ================================
FORMS
================================ */
.form-control, .form-select {
border-radius: var(--radius-sm);
border: 1px solid var(--border-medium);
}
.form-control:focus,
.form-select:focus {
border-color: var(--color-primary);
box-shadow: 0 0 0 3px rgba(20,99,255,0.15);
}
/* ================================
BADGES
================================ */
.badge-status {
padding: 4px 10px;
border-radius: var(--radius-full);
font-size: 0.7rem;
font-weight: 600;
}
.badge-valide { background: rgba(34,197,94,0.1); color: var(--color-success); }
.badge-urgent { background: rgba(239,68,68,0.1); color: var(--color-urgent); }
.badge-attente { background: rgba(245,158,11,0.1); color: var(--color-warning); }
.badge-info { background: rgba(59,130,246,0.1); color: var(--color-info); }
/* ================================
MODALS
================================ */
.modal-content {
border-radius: var(--radius-xl);
box-shadow: var(--shadow-lg);
}
.modal-header {
border-bottom: 1px solid var(--border-light);
}
/* ================================
CONTEXT DRAWER
================================ */
#barre_laterale_d {
position: fixed;
right: 0;
top: var(--header-height);
width: var(--context-width);
height: calc(100vh - var(--header-height));
background: var(--bg-surface);
border-left: 1px solid var(--border-light);
box-shadow: var(--shadow-lg);
}
/* ================================
ALERTS
================================ */
.alert {
border-radius: var(--radius-md);
border-left: 4px solid;
}
.alert-success { border-color: var(--color-success); }
.alert-danger { border-color: var(--color-urgent); }
.alert-warning { border-color: var(--color-warning); }
.alert-info { border-color: var(--color-info); }
/* ================================
RESPONSIVE
================================ */
@media (max-width: 1199px) {
#main { margin-left: 0; }
#sidebar { transform: translateX(-100%); }
}