:root {
  --kw-primary: #3157d5;
  --kw-primary-dark: #223f9f;
  --kw-primary-soft: #edf1ff;
  --kw-navy: #111c3d;
  --kw-surface: #ffffff;
  --kw-bg: #f4f6fb;
  --kw-border: #e3e8f2;
  --kw-text: #17213b;
  --kw-muted: #68738b;
  --kw-success: #17875f;
  --kw-danger: #cf3d57;
  --kw-warning: #d58a16;
  --kw-radius: 14px;
  --kw-shadow: 0 8px 26px rgba(25, 40, 79, .08);
}

html { scroll-behavior: smooth; }
body {
  color: var(--kw-text);
  background: var(--kw-bg);
  font-family: Inter, system-ui, -apple-system, "Segoe UI", sans-serif;
  -webkit-font-smoothing: antialiased;
}

body::selection { color: #fff; background: var(--kw-primary); }
a { color: var(--kw-primary); }
.text-muted { color: var(--kw-muted) !important; }

.navbar {
  margin-left: 252px !important;
  min-height: 66px;
  padding: .7rem 1rem;
  background: rgba(17, 28, 61, .97) !important;
  border-bottom: 1px solid rgba(255,255,255,.08);
  backdrop-filter: blur(14px);
  box-shadow: 0 5px 22px rgba(12, 22, 49, .16) !important;
}
.navbar-brand { letter-spacing: -.02em; }

.sidebar {
  width: 252px !important;
  padding: 1.25rem .8rem !important;
  overflow-y: auto;
  background: linear-gradient(180deg, #111c3d 0%, #18274f 100%) !important;
  border-right: 1px solid rgba(255,255,255,.06);
  box-shadow: 8px 0 28px rgba(20, 31, 62, .12);
}
.sidebar h4 {
  padding: .4rem .8rem 1rem !important;
  margin: 0 !important;
  font-size: .78rem !important;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: #aebadc !important;
}
.sidebar a {
  margin: .18rem 0;
  padding: .72rem .85rem !important;
  border-radius: 10px;
  color: #c3cbe0 !important;
  font-size: .91rem;
}
.sidebar a i:not(.bi-chevron-down) { width: 20px; text-align: center; font-size: 1.02rem; }
.sidebar a:hover { color: #fff !important; background: rgba(255,255,255,.08) !important; transform: translateX(2px); }
.sidebar a.active {
  color: #fff !important;
  background: linear-gradient(135deg, #4167e8, #3157d5) !important;
  box-shadow: 0 7px 18px rgba(49, 87, 213, .3);
}
.sidebar .collapse { border-left: 1px solid rgba(255,255,255,.12); margin-left: 1.25rem; }
.sidebar .collapse a { padding-block: .55rem !important; font-size: .86rem; }

main { margin-left: 252px !important; padding: 5.6rem 1.5rem 2rem !important; }
main > .container-fluid { max-width: 1720px; margin-inline: auto; }
.content { min-width: 0; }

h1, h2, h3, h4, h5, h6 { color: var(--kw-text); letter-spacing: -.025em; }
.card {
  border: 1px solid var(--kw-border) !important;
  border-radius: var(--kw-radius) !important;
  background: var(--kw-surface);
  box-shadow: var(--kw-shadow) !important;
  overflow: hidden;
}
.card-header {
  padding: 1rem 1.2rem;
  border-bottom: 1px solid var(--kw-border);
  background: #fbfcff;
}
.card-header.bg-primary, .card-header.bg-dark, .card-header.bg-danger,
.card-header.bg-success, .card-header.bg-info { color: #fff !important; }
.card-header.bg-primary *, .card-header.bg-dark *, .card-header.bg-danger *,
.card-header.bg-success *, .card-header.bg-info * { color: inherit !important; }
.modal-header.bg-primary *, .modal-header.bg-dark *, .modal-header.bg-danger *,
.modal-header.bg-success * { color: inherit !important; }
.card-body { padding: 1.25rem; }

.table-responsive { border-radius: 0 0 var(--kw-radius) var(--kw-radius); }
.table { --bs-table-bg: transparent; margin-bottom: 0; color: var(--kw-text); }
.table > :not(caption) > * > * { padding: .88rem .9rem; border-bottom-color: #e9edf5; vertical-align: middle; }
.table thead th {
  color: #58647e;
  background: #f7f9fd !important;
  font-size: .74rem;
  font-weight: 700;
  letter-spacing: .055em;
  text-transform: uppercase;
  white-space: nowrap;
}
.table-hover > tbody > tr:hover > * { --bs-table-bg-state: #f5f7ff; }

.form-label { margin-bottom: .42rem; color: #46526c; font-size: .86rem; font-weight: 650; }
.form-control, .form-select, .select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
  min-height: 42px;
  border: 1px solid #d8deea !important;
  border-radius: 10px !important;
  background-color: #fff;
  color: var(--kw-text);
  box-shadow: none !important;
}
.form-control:focus, .form-select:focus {
  border-color: #7f98eb !important;
  box-shadow: 0 0 0 .22rem rgba(49,87,213,.12) !important;
}
.form-control::placeholder { color: #9aa4b7; }
.form-text { color: var(--kw-muted); font-size: .78rem; }

.btn {
  min-height: 40px;
  padding: .55rem .9rem;
  border-radius: 9px;
  font-weight: 650;
  box-shadow: none !important;
  transition: transform .16s ease, background-color .16s ease, border-color .16s ease;
}
.btn:hover { transform: translateY(-1px); }
.btn-sm { min-height: 32px; padding: .36rem .65rem; border-radius: 8px; font-size: .8rem; }
.btn-primary { background: var(--kw-primary); border-color: var(--kw-primary); }
.btn-primary:hover { background: var(--kw-primary-dark); border-color: var(--kw-primary-dark); }
.btn-success { background: var(--kw-success); border-color: var(--kw-success); }
.btn-danger { background: var(--kw-danger); border-color: var(--kw-danger); }
.btn-outline-primary { color: var(--kw-primary); border-color: #a8b7eb; }

.badge { padding: .42em .68em; border-radius: 999px; font-weight: 650; letter-spacing: .01em; }
.alert { border: 0; border-radius: 11px; box-shadow: inset 4px 0 currentColor; }
.modal-content { border: 0; border-radius: 16px !important; box-shadow: 0 24px 70px rgba(15,26,56,.25); overflow: hidden; }
.modal-header, .modal-footer { padding: 1rem 1.25rem; border-color: var(--kw-border); }
.modal-body { padding: 1.25rem; }
.dropdown-menu { padding: .5rem; border: 1px solid var(--kw-border); border-radius: 12px; box-shadow: 0 14px 38px rgba(22,35,69,.15); }
.dropdown-item { padding: .58rem .7rem; border-radius: 8px; }
.dropdown-item:hover { background: var(--kw-primary-soft); color: var(--kw-primary-dark); }

.dataTables_wrapper { padding: .25rem 0; }
.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select { border: 1px solid #d8deea; border-radius: 8px; padding: .42rem .6rem; background: #fff; }
.dataTables_wrapper .dataTables_paginate .paginate_button { border: 0 !important; border-radius: 8px !important; }
.dataTables_wrapper .dataTables_paginate .paginate_button.current { color: #fff !important; background: var(--kw-primary) !important; }

@media (max-width: 991.98px) {
  .card-body { padding: 1rem; }
  .table > :not(caption) > * > * { padding: .72rem; }
}
@media (max-width: 767.98px) {
  .sidebar { transform: translateX(-105%); width: min(86vw, 292px) !important; }
  .sidebar.show { transform: translateX(0); }
  .navbar { margin-left: 0 !important; min-height: 60px; }
  .navbar-brand { font-size: 1rem; }
  main { margin-left: 0 !important; padding: 4.8rem .75rem 1.25rem !important; }
  h2 { font-size: 1.45rem; }
  h3 { font-size: 1.25rem; }
  .card { border-radius: 12px !important; }
  .modal-dialog { margin: .65rem; }
  .btn { white-space: normal; }
}

/* Écrans d'authentification */
body > .login-card, body > .card {
  border-radius: 20px !important;
  border: 1px solid rgba(255,255,255,.7) !important;
  box-shadow: 0 28px 75px rgba(18,31,70,.25) !important;
}
body:has(> .login-card), body:has(> .card) {
  background: radial-gradient(circle at 15% 15%, #7089ef 0, transparent 32%),
              linear-gradient(135deg, #17265a, #3f5fd0) !important;
}
.login-card .title { color: var(--kw-navy); letter-spacing: -.03em; }
