/* ==========================================================================
   SIGH-CNT — Système d'Information de Gestion Hospitalière
   CLINIQUE NASSIERA TOO SARL — Charte graphique (Cahier des Charges §7.3)
   Bleu institutionnel (navy), fond blanc/gris clair, vert/orange/rouge sémantiques
   ========================================================================== */

:root{
  --cnt-navy: #0b2f5c;
  --cnt-navy-dark: #071f3d;
  --cnt-navy-light: #123a73;
  --cnt-accent: #1d78d1;
  --cnt-gold: #d4a017;
  --cnt-bg: #f3f5f8;
  --cnt-green: #1a9c5b;
  --cnt-orange: #e08a1e;
  --cnt-red: #d64545;
  --cnt-gray-100: #f7f8fa;
  --cnt-gray-200: #e9edf2;
  --cnt-gray-300: #d6dce4;
  --cnt-text: #1f2937;
}

*{ box-sizing:border-box; }

html,body{
  height:100%;
  font-family:"Segoe UI", Inter, system-ui, -apple-system, Arial, sans-serif;
  background:var(--cnt-bg);
  color:var(--cnt-text);
  font-size:14px;
}

::-webkit-scrollbar{ width:8px; height:8px; }
::-webkit-scrollbar-thumb{ background:var(--cnt-gray-300); border-radius:8px; }
::-webkit-scrollbar-track{ background:transparent; }

/* ---------- Layout ---------- */
.cnt-sidebar{
  width:270px;
  min-width:270px;
  background:linear-gradient(180deg,var(--cnt-navy) 0%,var(--cnt-navy-dark) 100%);
  color:#e6edf6;
  height:100vh;
  position:sticky;
  top:0;
  overflow-y:auto;
  transition:margin-left .25s ease;
  z-index:40;
}
@media (max-width:1024px){
  .cnt-sidebar{ position:fixed; left:0; margin-left:-270px; box-shadow:4px 0 24px rgba(0,0,0,.25);}
  .cnt-sidebar.open{ margin-left:0; }
}

.cnt-brand{
  display:flex; align-items:center; gap:.65rem;
  padding:1.1rem 1.1rem;
  border-bottom:1px solid rgba(255,255,255,.12);
}
.cnt-brand .logo-badge{
  width:42px;height:42px;border-radius:10px;
  background:radial-gradient(circle at 30% 30%, var(--cnt-gold), #a97a0c 70%);
  display:flex;align-items:center;justify-content:center;
  font-weight:800; color:#0b2f5c; font-size:16px; letter-spacing:.5px;
  box-shadow: 0 2px 6px rgba(0,0,0,.35);
}
.cnt-brand .brand-text small{ color:#a9c1e0; }

.cnt-nav-section-title{
  font-size:10.5px; text-transform:uppercase; letter-spacing:.09em;
  color:#7fa0cc; padding:.9rem 1.1rem .3rem;
  font-weight:700;
}
.cnt-nav-link{
  display:flex; align-items:center; gap:.7rem;
  padding:.58rem 1.1rem;
  color:#cfdcee;
  font-size:13.3px;
  font-weight:500;
  border-left:3px solid transparent;
  text-decoration:none;
  white-space:nowrap;
}
.cnt-nav-link i{ width:18px; text-align:center; color:#8fb0da; font-size:13px; }
.cnt-nav-link:hover{ background:rgba(255,255,255,.06); color:#fff; }
.cnt-nav-link.active{
  background:rgba(29,120,209,.18);
  border-left-color:var(--cnt-gold);
  color:#fff;
}
.cnt-nav-link.active i{ color:var(--cnt-gold); }

.cnt-topbar{
  height:64px;
  background:#fff;
  border-bottom:1px solid var(--cnt-gray-200);
  display:flex; align-items:center; justify-content:space-between;
  padding:0 1.25rem;
  position:sticky; top:0; z-index:30;
}
.cnt-search-input{
  background:var(--cnt-gray-100);
  border:1px solid var(--cnt-gray-200);
  border-radius:8px;
  padding:.45rem .8rem .45rem 2.2rem;
  font-size:13px;
  width:280px;
}
.cnt-search-wrap{ position:relative; }
.cnt-search-wrap i{ position:absolute; left:.75rem; top:50%; transform:translateY(-50%); color:#94a3b8; font-size:12px; }

.cnt-topbar-icon-btn{
  width:38px;height:38px;border-radius:9px;
  display:flex;align-items:center;justify-content:center;
  color:#475569; background:var(--cnt-gray-100); border:1px solid var(--cnt-gray-200);
  position:relative;
}
.cnt-topbar-icon-btn:hover{ background:var(--cnt-gray-200); }
.cnt-badge-dot{
  position:absolute; top:-4px; right:-4px;
  background:var(--cnt-red); color:#fff; font-size:9.5px; font-weight:700;
  border-radius:999px; min-width:16px; height:16px; display:flex; align-items:center; justify-content:center;
  border:2px solid #fff;
}

.cnt-breadcrumb{ font-size:12.5px; color:#64748b; }
.cnt-breadcrumb a{ color:#64748b; text-decoration:none; }
.cnt-breadcrumb .current{ color:var(--cnt-navy); font-weight:600; }

.cnt-page-title{ font-size:20px; font-weight:800; color:var(--cnt-navy-dark); letter-spacing:-.01em; }
.cnt-page-subtitle{ font-size:12.8px; color:#64748b; }

/* ---------- Cards / KPI ---------- */
.cnt-card{
  background:#fff; border:1px solid var(--cnt-gray-200); border-radius:12px;
  box-shadow:0 1px 2px rgba(16,24,40,.04);
}
.kpi-card{ padding:1.1rem 1.2rem; }
.kpi-icon{
  width:44px;height:44px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;font-size:18px;
}
.kpi-value{ font-size:24px; font-weight:800; color:var(--cnt-navy-dark); }
.kpi-label{ font-size:12px; color:#64748b; font-weight:600; }
.kpi-trend-up{ color:var(--cnt-green); font-size:11.5px; font-weight:700; }
.kpi-trend-down{ color:var(--cnt-red); font-size:11.5px; font-weight:700; }

/* ---------- Buttons ---------- */
.btn-cnt-primary{
  background:var(--cnt-navy); border-color:var(--cnt-navy); color:#fff;
  font-weight:600; font-size:13.2px; border-radius:8px;
}
.btn-cnt-primary:hover{ background:var(--cnt-navy-light); border-color:var(--cnt-navy-light); color:#fff; }
.btn-cnt-gold{
  background:var(--cnt-gold); border-color:var(--cnt-gold); color:#3a2b00; font-weight:700; border-radius:8px;
}
.btn-cnt-outline{
  border:1px solid var(--cnt-gray-300); color:var(--cnt-navy-dark); background:#fff; font-weight:600; border-radius:8px; font-size:13px;
}
.btn-cnt-outline:hover{ background:var(--cnt-gray-100); }
.btn-icon-sq{
  width:32px;height:32px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--cnt-gray-300);background:#fff;color:#475569;
}
.btn-icon-sq:hover{ background:var(--cnt-gray-100); }
.btn-icon-sq.view:hover{ color:var(--cnt-accent); border-color:var(--cnt-accent); }
.btn-icon-sq.edit:hover{ color:var(--cnt-orange); border-color:var(--cnt-orange); }
.btn-icon-sq.del:hover{ color:var(--cnt-red); border-color:var(--cnt-red); }

/* ---------- Badges statut ---------- */
.badge-status{ font-size:11px; font-weight:700; padding:.32em .65em; border-radius:999px; display:inline-flex; align-items:center; gap:.3em; }
.badge-green{ background:#e4f7ec; color:var(--cnt-green); }
.badge-orange{ background:#fdf1e0; color:var(--cnt-orange); }
.badge-red{ background:#fbe7e7; color:var(--cnt-red); }
.badge-blue{ background:#e6f0fb; color:var(--cnt-accent); }
.badge-gray{ background:#eef1f4; color:#64748b; }
.badge-navy{ background:#e6ecf5; color:var(--cnt-navy); }
.badge-status i{ font-size:6px; }

/* ---------- Table card wrapper ---------- */
.table-toolbar{
  display:flex; align-items:center; justify-content:space-between; gap:.75rem; flex-wrap:wrap;
  padding:1rem 1.1rem; border-bottom:1px solid var(--cnt-gray-200);
}
.module-icon-chip{
  width:40px;height:40px;border-radius:9px;background:#e6ecf5;color:var(--cnt-navy);
  display:flex;align-items:center;justify-content:center;font-size:16px;
}

table.dataTable{ font-size:13px; }
table.dataTable thead th{
  background:var(--cnt-gray-100)!important;
  color:var(--cnt-navy-dark); font-weight:700; font-size:11.6px; text-transform:uppercase; letter-spacing:.04em;
  border-bottom:1px solid var(--cnt-gray-200)!important;
  padding-top:.7rem; padding-bottom:.7rem;
}
table.dataTable tbody td{ vertical-align:middle; padding-top:.62rem; padding-bottom:.62rem; color:#334155; }
table.dataTable.table-striped>tbody>tr:nth-of-type(odd)>* { background-color: #fafbfc; }
div.dataTables_wrapper div.dataTables_length select{ font-size:13px; }
.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select{
  border:1px solid var(--cnt-gray-300); border-radius:7px; padding:.32rem .6rem; font-size:13px;
}
.dataTables_wrapper .dataTables_filter input:focus,
.dataTables_wrapper .dataTables_length select:focus{ outline:none; border-color:var(--cnt-accent); box-shadow:0 0 0 3px rgba(29,120,209,.12); }
.dataTables_wrapper .dataTables_info, .dataTables_wrapper .dataTables_length label, .dataTables_wrapper .dataTables_filter label{
  color:#64748b; font-size:12.6px; font-weight:500;
}
.dataTables_wrapper .dataTables_paginate .paginate_button{
  border-radius:7px!important; margin-left:2px; font-size:12.6px!important; padding:.32rem .62rem!important;
}
.dataTables_wrapper .dataTables_paginate .paginate_button.current{
  background:var(--cnt-navy)!important; border-color:var(--cnt-navy)!important; color:#fff!important;
}
.dataTables_wrapper .dataTables_paginate .paginate_button:hover{ background:var(--cnt-gray-200)!important; color:var(--cnt-navy-dark)!important; }

/* ---------- Forms / validation ---------- */
.form-label{ font-size:12.6px; font-weight:700; color:#334155; margin-bottom:.28rem; }
.form-label .req{ color:var(--cnt-red); }
.form-control, .form-select{
  font-size:13.4px; border-radius:8px; border:1px solid var(--cnt-gray-300);
}
.form-control:focus, .form-select:focus{
  border-color:var(--cnt-accent); box-shadow:0 0 0 3px rgba(29,120,209,.13);
}
.invalid-feedback{ font-size:11.6px; font-weight:600; }
.form-control.is-invalid, .form-select.is-invalid{ border-color:var(--cnt-red); }
.form-section-title{
  font-size:11.5px; font-weight:800; text-transform:uppercase; letter-spacing:.06em;
  color:var(--cnt-navy); border-bottom:2px solid var(--cnt-gray-200); padding-bottom:.4rem; margin-bottom:.9rem;
}

/* ---------- Modals ---------- */
.modal-content{ border:none; border-radius:14px; overflow:hidden; }
.modal-header{ background:var(--cnt-navy); color:#fff; border-bottom:none; padding:1rem 1.25rem; }
.modal-header .modal-title{ font-weight:700; font-size:15.5px; display:flex; align-items:center; gap:.55rem; }
.modal-header .btn-close{ filter:invert(1) brightness(2); opacity:.85; }
.modal-footer{ border-top:1px solid var(--cnt-gray-200); background:#fbfcfd; }
.modal-delete .modal-header{ background:var(--cnt-red); }
.modal-delete .warn-icon{
  width:64px;height:64px;border-radius:50%;background:#fbe7e7;color:var(--cnt-red);
  display:flex;align-items:center;justify-content:center;font-size:28px;margin:0 auto;
}

/* ---------- Toasts ---------- */
.toast-container{ z-index:1080; }
.toast{ border:none; border-radius:10px; box-shadow:0 10px 30px rgba(0,0,0,.15); overflow:hidden; min-width:300px; }
.toast .toast-accent{ width:5px; }
.toast-header{ border-bottom:none; font-weight:700; font-size:13px; }

/* ---------- Login page ---------- */
.login-shell{
  min-height:100vh;
  background:
    radial-gradient(1200px 600px at 90% -10%, rgba(29,120,209,.35), transparent 60%),
    radial-gradient(1000px 500px at -10% 110%, rgba(212,160,23,.25), transparent 60%),
    linear-gradient(135deg, var(--cnt-navy-dark), var(--cnt-navy) 60%, var(--cnt-navy-light));
}
.login-card{ border-radius:18px; box-shadow:0 30px 60px rgba(2,10,30,.35); }

/* ---------- Tabs (Bootstrap) tweak ---------- */
.nav-tabs .nav-link{ font-size:13px; font-weight:600; color:#64748b; border:none; border-bottom:2px solid transparent; }
.nav-tabs .nav-link.active{ color:var(--cnt-navy); border-bottom-color:var(--cnt-navy); background:transparent; }

/* ---------- Misc ---------- */
.section-fade-in{ animation:fadeIn .25s ease; }
@keyframes fadeIn{ from{opacity:0; transform:translateY(4px);} to{opacity:1; transform:translateY(0);} }
.hint-text{ font-size:11.5px; color:#94a3b8; }
.avatar-circle{
  width:34px;height:34px;border-radius:50%;background:var(--cnt-navy);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12.5px;
}
.print-only{ display:none; }
@media print{
  .cnt-sidebar,.cnt-topbar,.no-print{ display:none!important; }
  .print-only{ display:block; }
}
