/* Orkestror — shared.css */
/* LES VARIABLES --navy / --gold / --lt-bg / --sidebar-w NE SONT PLUS DÉCLARÉES
   ICI (26/07/2026). Elles l'étaient à quatre endroits différents — deux fois
   dans ce fichier, deux fois dans theme-ssa.css — à des valeurs qui ne se
   ressemblaient pas. Seule la dernière lue gagnait, et il fallait ouvrir les
   quatre pour savoir laquelle. Elles vivent désormais en un seul point, dans
   `commun/tokens.css`, en alias des jetons --ork-*. Ne pas les remettre ici. */
body { background: var(--lt-bg); font-family: 'Segoe UI', system-ui, sans-serif; padding-top: 56px; }
/* Matricules et references : teinte neutre (le rose « code » Bootstrap
   ressemblait a un etat d'erreur dans les tableaux) */
code { color: #4a6076; }
.bg-navy   { background: var(--navy) !important; }
.text-gold { color: var(--gold) !important; }
.text-navy { color: var(--navy) !important; }
.btn-navy  { background: var(--navy); color: #fff; border: none; }
.btn-navy:hover { background: #073960; color: #fff; }
.btn-gold  { background: var(--gold); color: #fff; border: none; }

/* Navbar (recherche centrale, avatar, boutons utilitaires) */
.navbar-avatar { width:34px; height:34px; border-radius:50%; object-fit:cover; border:2px solid rgba(255,255,255,.45); }
.btn-navlt { background:rgba(255,255,255,.10); color:#fff; border:none; }
.btn-navlt:hover, .btn-navlt:focus { background:rgba(255,255,255,.22); color:#fff; }
.navbar-search { max-width:520px; width:100%; box-shadow:0 1px 4px rgba(0,0,0,.15); border-radius:.45rem; overflow:hidden; }
.navbar-search .form-control:focus { box-shadow:none; }
.navbar-badge { font-size:.6rem; }

/* Pop-ups (modals) : centrés verticalement, un peu plus larges, coins arrondis */
.modal-dialog { min-height: calc(100% - 1rem); display: flex; align-items: center; max-width: 600px; }
.modal-content { border: none; border-radius: 1rem; box-shadow: 0 1rem 3rem rgba(0,0,0,.30); width: 100%; overflow: hidden; }
.modal-header { border-bottom: 0; padding: 1rem 1.5rem; }
.modal-title { font-weight: 600; }
.modal-body { padding: 1.25rem 1.5rem; }
.modal-footer { border-top: 0; padding: .5rem 1.5rem 1.25rem; }

/* ===================== Tableaux — style « Manage list » ===================== */
/* (réf. : en-têtes teal sur fond blanc, lignes aérées, barre-titre foncée,
   icônes éditer/supprimer, pagination bleue) */

/* Barre-titre foncée au-dessus du tableau : titre (à g.) + actions (à dr.) */
.table-toolbar {
  background: var(--navy); color: #fff;
  border-radius: .75rem .75rem 0 0;
  padding: .9rem 1.35rem;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
}
.table-toolbar .tt-title { margin: 0; font-weight: 400; font-size: 1.2rem; }
.table-toolbar .tt-title b { font-weight: 700; }
.table-toolbar .tt-search { width: 320px; max-width: 42vw; border-radius: .4rem; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,.12); }
.table-toolbar .tt-search .form-control:focus { box-shadow: none; }
.table-toolbar .btn-light { background: rgba(255,255,255,.92); border: 0; color: #334155; }
.table-toolbar .btn-light:hover { background: #fff; }

.table { border-collapse: separate; border-spacing: 0; margin-bottom: 0; }
/* En-têtes : fond blanc, texte teal, séparateur épais */
.table thead th {
  background: #fff; color: var(--navy); font-weight: 600;
  border: 0; border-bottom: 2px solid #eef2f7;
  padding: 1rem 1.25rem; white-space: nowrap; letter-spacing: .01em;
}
/* Cellules : aérées, texte slate, fin séparateur */
.table tbody td, .table tbody th {
  height: 54px; padding: .4rem 1.25rem; vertical-align: middle;
  border: 0; border-bottom: 1px solid #eef2f7; color: #5a7184; font-weight: 400;
}
.table tbody tr { background: #fff; }
.table tbody tr:last-child td, .table tbody tr:last-child th { border-bottom: 0; }
.table.table-striped > tbody > tr:nth-of-type(odd) > * { --bs-table-bg-type: #f5f7fa; }
.table > tbody > tr:hover > * { background-color: #eef6f9 !important; }
/* Liens / noms dans les cellules */
.table tbody td a:not(.btn):not(.badge) { color: #5578a6; text-decoration: none; }
.table tbody td a:not(.btn):not(.badge):hover { text-decoration: underline; }
/* Coins arrondis du conteneur */
.table-responsive { border-radius: .75rem; }
.table-responsive > .table thead th:first-child { border-top-left-radius: .75rem; }
.table-responsive > .table thead th:last-child  { border-top-right-radius: .75rem; }
/* Carte avec barre-titre : les coins sont clippés par la carte */
.card:has(.table-toolbar) { overflow: hidden; }
.card .table-toolbar + .table-responsive,
.card .table-toolbar + .table-responsive > .table thead th { border-radius: 0; }

/* Cases à cocher de sélection */
.table .form-check-input { margin: 0; cursor: pointer; border-color: #c4cdd8; }
.table .form-check-input:checked { background-color: var(--navy); border-color: var(--navy); }

/* Icônes d'action (éditer = or / supprimer = rouge), sans bordure */
.btn-icon { background: none; border: 0; padding: .15rem .35rem; font-size: 1.05rem; line-height: 1; }
.btn-icon.edit { color: var(--gold); }  .btn-icon.edit:hover { color: #b3700a; }
.btn-icon.del  { color: #dc3545; }       .btn-icon.del:hover  { color: #a71d2a; }
.btn-icon.view { color: #5a7184; }       .btn-icon.view:hover { color: var(--navy); }

/* Pied : « Showing X out of Y entries » + pagination */
.table-foot { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .75rem; padding: .9rem 1.35rem; color: #6c757d; font-size: .9rem; }
.pagination { margin: 0; }
.pagination .page-link { color: #5a7184; border: 0; margin: 0 .12rem; border-radius: .35rem; min-width: 34px; text-align: center; }
.pagination .page-item.active .page-link { background: #2c8ef0; color: #fff; }
.pagination .page-link:hover { background: #eef2f7; }
/* DataTables : aligner info + pagination sur le même style */
.dataTables_wrapper { padding: .25rem .25rem 0; }
.dataTables_wrapper .dataTables_info { color: #6c757d; padding: 1rem 1.35rem; }
.dataTables_wrapper .dataTables_paginate { padding: .6rem 1.1rem; }
.dataTables_wrapper .dataTables_paginate .paginate_button { border: 0 !important; border-radius: .35rem; }
.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { background: #2c8ef0 !important; border-color: #2c8ef0 !important; color: #fff !important; }
.dataTables_wrapper .dataTables_filter input { border-radius: .4rem; border: 1px solid #e2e8f0; }

/* Sidebar */
.sidebar {
  width: var(--sidebar-w);
  min-height: calc(100vh - 56px);
  background: #1a2332;
  position: sticky; top: 56px;
  height: calc(100vh - 56px);
  overflow-y: auto; overflow-x: hidden;
  flex-shrink: 0;
}
.sidebar-link {
  display: flex; align-items: center; gap: .75rem;
  padding: .65rem 1.25rem;
  color: #8a9bb0; text-decoration: none;
  font-size: .875rem; transition: all .18s;
}
.sidebar-link:hover, .sidebar-link.active {
  color: #fff; background: rgba(255,255,255,.07);
  border-left: 3px solid var(--gold); padding-left: 1.05rem;
}
.sidebar-link.active { color: var(--gold); font-weight: 600; }
.sidebar-icon { width: 18px; text-align: center; }
.sidebar-cat { color:#5b6b80; font-size:.68rem; text-transform:uppercase; letter-spacing:.05em; padding:.7rem 1.25rem .25rem; font-weight:600; }

/* Pipeline / workflow (chaine de validation, procure-to-pay) */
.pipeline { display:flex; gap:.25rem; flex-wrap:wrap; }
.pipe-step { flex:1 1 0; min-width:90px; text-align:center; padding:.5rem .25rem; border-radius:.4rem; background:#eef2f7; font-size:.75rem; color:#6c757d; }
.pipe-step.done { background:#15803d; color:#fff; }
.pipe-step.current { background:var(--gold); color:#fff; font-weight:600; }
.pipe-step.todo { background:#eef2f7; color:#9aa7b5; }
.timeline { list-style:none; padding-left:0; margin:0; }
.timeline li { position:relative; padding:.4rem 0 .9rem 1.5rem; border-left:2px solid #dee2e6; }
.timeline li:last-child { border-left-color:transparent; }
.timeline li::before { content:''; position:absolute; left:-7px; top:.55rem; width:12px; height:12px; border-radius:50%; background:#adb5bd; }
.timeline li.ok::before { background:#15803d; } .timeline li.ko::before { background:#dc2626; } .timeline li.wait::before { background:var(--gold); }

/* Content */
.main-content { min-width: 0; }
.content-area { min-height: calc(100vh - 100px); }

/* Cards */
.card { border: none; box-shadow: 0 1px 6px rgba(0,0,0,.08); border-radius: .75rem; }
.card-header-navy { background: var(--navy); color: #fff; border-radius: .75rem .75rem 0 0 !important; padding: .75rem 1rem; }

/* Stat cards */
.stat-card { border-radius: .75rem; padding: 1.25rem; border: none; box-shadow: 0 2px 8px rgba(0,0,0,.08); }
.stat-number { font-size: 2rem; font-weight: 700; line-height: 1; }
.stat-icon { width: 48px; height: 48px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 1.25rem; }

/* ── Cartes LATÉRALES (à droite des tableaux) — rendu distinct des KPI d'en-tête ── */
.d-flex.flex-column.gap-3 > .stat-card {
  padding: .8rem .95rem;
  border-radius: 12px;
  background: linear-gradient(180deg, #ffffff 0%, #f6f9fc 100%);
  box-shadow: none;
  border: 1px solid #e6edf5;
  border-left: 4px solid var(--gold);
  transition: box-shadow .15s, transform .15s;
}
.d-flex.flex-column.gap-3 > .stat-card:hover { box-shadow: 0 6px 16px rgba(10,74,122,.10); transform: translateX(2px); }
.d-flex.flex-column.gap-3 > .stat-card .stat-icon { width: 38px; height: 38px; border-radius: 11px; font-size: .95rem; }
.d-flex.flex-column.gap-3 > .stat-card .stat-number { font-size: 1.4rem; }
.d-flex.flex-column.gap-3 > .stat-card .small { font-size: .7rem; text-transform: uppercase; letter-spacing: .03em; color: #64748b !important; }

/* Avatar */
.avatar { width: 38px; height: 38px; border-radius: 50%; object-fit: cover; border: 2px solid #dee2e6; }
.avatar-placeholder {
  width: 38px; height: 38px; border-radius: 50%;
  background: var(--navy); color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: .8rem; font-weight: 600;
}
.avatar-lg { width: 100px; height: 100px; font-size: 2rem; }

/* Login */
.login-page {
  min-height: 100vh; display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, var(--navy) 0%, #0d7c8f 100%);
}
.login-card { width: 100%; max-width: 420px; border-radius: 1rem; box-shadow: 0 8px 32px rgba(0,0,0,.25); }

/* Nav active indicator */
.nav-page { font-size: .75rem; color: #6c757d; }

/* Bulletin */
.bulletin-header { border-bottom: 3px solid var(--navy); padding-bottom: .5rem; margin-bottom: 1rem; }
.badge-mention-tb   { background: #15803d; color: #fff; }
.badge-mention-b    { background: #1d4ed8; color: #fff; }
.badge-mention-ab   { background: #D4860A; color: #fff; }
.badge-mention-p    { background: #6b7280; color: #fff; }
.badge-mention-i    { background: #dc2626; color: #fff; }

/* Progress bars */
.progress { height: 8px; border-radius: 4px; }

/* Form focus */
.form-control:focus, .form-select:focus { border-color: var(--navy); box-shadow: 0 0 0 .15rem rgba(10,74,122,.2); }

/* Page breadcrumb */
.page-header { margin-bottom: 1.5rem; }
.page-header h4 { font-weight: 700; color: var(--navy); }

/* Chart placeholder */
.chart-placeholder { background: var(--lt-bg); border-radius: .5rem; display: flex; align-items: center; justify-content: center; color: #aaa; }

@media print {
  .sidebar, .navbar, .btn, .no-print { display: none !important; }
  .main-content { margin: 0 !important; }
  body { padding: 0; background: #fff; }
}

/* ==========================================================================
   ORKESTROR PREMIUM — interface sobre inspirée des logiciels métiers modernes
   ========================================================================== */
/* SECOND jeu de --navy / --gold / --text… RETIRÉ ici (26/07/2026) : c'était la
   deuxième des quatre déclarations concurrentes. Source unique désormais :
   `commun/tokens.css`, bloc « PONT VERS LES VARIABLES PREMIUM HÉRITÉES ». */

html { background: var(--lt-bg); }
body {
  color: var(--text);
  background: var(--lt-bg);
  font-family: Inter, "Segoe UI", system-ui, -apple-system, sans-serif;
  font-size: 14px;
  letter-spacing: -.005em;
}

/* Navigation */
.navbar.bg-navy {
  min-height: 64px;
  background: linear-gradient(90deg, #06172d 0%, #081d38 100%) !important;
  border-bottom: 1px solid rgba(255,255,255,.08);
  box-shadow: 0 1px 0 rgba(8,24,48,.18) !important;
}
body { padding-top: 64px; }
.navbar-brand { letter-spacing: -.035em; font-size: 1.25rem; }
.navbar-brand .text-gold { color: #fff !important; }
.navbar-search {
  max-width: 560px;
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: none;
}
.navbar-search .input-group-text,
.navbar-search .form-control { background: rgba(255,255,255,.96) !important; }
.btn-navlt { background: transparent; color: #cbd5e1; }
.btn-navlt:hover, .btn-navlt:focus { background: rgba(255,255,255,.08); color: #fff; }
.navbar-avatar { border-color: rgba(255,255,255,.25); }

.sidebar {
  top: 64px;
  height: calc(100vh - 64px);
  min-height: calc(100vh - 64px);
  background: #081d38;
  border-right: 1px solid rgba(255,255,255,.06);
}
.sidebar-inner { padding: .65rem .55rem 1.5rem; }
.sidebar-cat {
  padding: 1rem .8rem .35rem;
  color: #65758b;
  font-size: .62rem;
  letter-spacing: .1em;
}
.sidebar-link {
  min-height: 42px;
  margin: 2px 0;
  padding: .62rem .8rem;
  color: #a9b6c8;
  border: 1px solid transparent;
  border-radius: 8px;
}
.sidebar-link:hover {
  color: #fff;
  background: rgba(255,255,255,.055);
  border-left: 1px solid transparent;
  padding-left: .8rem;
}
.sidebar-link.active {
  color: #fff;
  background: #163a70;
  border: 1px solid rgba(102,153,255,.22);
  border-left: 1px solid rgba(102,153,255,.22);
  padding-left: .8rem;
  font-weight: 600;
  box-shadow: inset 3px 0 0 #4f83ff;
}
.sidebar-icon { color: currentColor; opacity: .9; }

/* Page rhythm and typography */
.content-area { padding: 28px 30px !important; }
.page-header { margin-bottom: 1.25rem; }
.page-header h4,
.content-area > h4 {
  color: var(--text) !important;
  font-size: 1.35rem;
  letter-spacing: -.025em;
}
.text-navy { color: var(--text) !important; }
.text-gold { color: var(--primary) !important; }
.text-muted { color: var(--muted) !important; }

/* Surfaces */
.card,
.stat-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow: 0 3px 12px rgba(15, 34, 58, .045);
}
.card:hover { border-color: #dce2ea; }
.card-header,
.card-header-navy {
  min-height: 52px;
  padding: .85rem 1.1rem;
  color: var(--text);
  background: #fff;
  border-bottom: 1px solid var(--border);
  border-radius: 12px 12px 0 0 !important;
  font-weight: 650;
}
.card-header-navy .btn-outline-light {
  color: var(--primary);
  border-color: #cfdcff;
  background: #fff;
}
.card-header-navy .btn-outline-light:hover {
  color: #fff;
  border-color: var(--primary);
  background: var(--primary);
}
.stat-card { padding: 1rem 1.1rem; }
.stat-number { color: var(--text) !important; font-size: 1.55rem; letter-spacing: -.035em; }
.stat-icon,
.mod-tile .mt-ic,
.todo-ic {
  color: var(--primary) !important;
  background: var(--primary-soft) !important;
}

/* Buttons and fields */
.btn { border-radius: 7px; font-weight: 550; }
.btn-primary,
.btn-navy,
.btn-gold {
  color: #fff;
  background: var(--primary);
  border-color: var(--primary);
  box-shadow: 0 1px 2px rgba(37,99,235,.18);
}
.btn-primary:hover,
.btn-navy:hover,
.btn-gold:hover { color: #fff; background: #1d4ed8; border-color: #1d4ed8; }
.btn-outline-primary { color: var(--primary); border-color: #b9cafa; }
.btn-outline-primary:hover { background: var(--primary); border-color: var(--primary); }
.btn-outline-warning { color: var(--muted); border-color: #d8dee8; }
.btn-outline-warning:hover { color: var(--text); background: #f1f4f8; border-color: #ccd3de; }
.form-control,
.form-select,
.input-group-text {
  min-height: 38px;
  border-color: #dfe4eb;
  border-radius: 7px;
  color: var(--text);
  background-color: #fff;
}
.form-control:focus,
.form-select:focus {
  border-color: #93b2ff;
  box-shadow: 0 0 0 3px rgba(37,99,235,.10);
}

/* Tabs */
.nav-tabs { border-bottom: 1px solid var(--border); gap: .35rem; }
.nav-tabs .nav-link {
  color: var(--muted);
  border: 0;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  padding: .75rem .9rem;
}
.nav-tabs .nav-link:hover { color: var(--text); border-bottom-color: #cad4e3; }
.nav-tabs .nav-link.active {
  color: var(--primary);
  background: transparent;
  border-bottom: 2px solid var(--primary);
  font-weight: 600;
}

/* Tables */
.table-toolbar {
  color: var(--text);
  background: #fff;
  border-bottom: 1px solid var(--border);
  border-radius: 12px 12px 0 0;
}
.table-toolbar .tt-title { font-size: 1.08rem; font-weight: 650; }
.table thead th {
  padding: .82rem 1rem;
  color: #526078;
  background: #f8fafc;
  border-bottom: 1px solid var(--border);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .045em;
  text-transform: uppercase;
}
.table tbody td,
.table tbody th {
  height: 58px;
  padding: .55rem 1rem;
  color: #445066;
  border-bottom-color: #edf0f4;
}
.table.table-striped > tbody > tr:nth-of-type(odd) > * { --bs-table-bg-type: #fff; }
.table > tbody > tr:hover > * { background: #f6f9ff !important; }
.table tbody td a:not(.btn):not(.badge) { color: #245fd3; }
.table-responsive { border-radius: 0 0 12px 12px; }
.pagination .page-item.active .page-link,
.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
  background: var(--primary) !important;
  border-color: var(--primary) !important;
}

/* Badges: la couleur n'est utilisée que pour communiquer un statut */
.badge { border-radius: 5px; font-weight: 650; padding: .38em .58em; }
.badge.bg-secondary { color: #546176 !important; background: #eef1f5 !important; }
.badge.bg-primary { color: #245fd3 !important; background: #e9f0ff !important; }
.badge.bg-success { color: #26734d !important; background: #e6f5ec !important; }
.badge.bg-warning { color: #966515 !important; background: #fff4d8 !important; }
.badge.bg-danger { color: #b33945 !important; background: #fdebed !important; }
/* bg-info : pastel comme les autres badges (le cyan Bootstrap + texte blanc
   etait illisible, ex. mention « Assez Bien » du bulletin) */
.badge.bg-info { color: #0f6a8f !important; background: #e1f3fa !important; }
.navbar .badge.bg-danger { color: #fff !important; background: #d94855 !important; }

/* Components */
.avatar-placeholder { color: #245fd3; background: #e9f0ff; }
.progress { height: 6px; background: #e9edf3; }
.progress-bar { background: var(--primary); }
.pipeline { gap: .4rem; }
.pipe-step { background: #f0f3f7; color: #758195; }
.pipe-step.done { color: #26734d; background: #e6f5ec; }
.pipe-step.current { color: #245fd3; background: #e9f0ff; }
.timeline li.ok::before { background: var(--success); }
.timeline li.wait::before { background: var(--warning); }
.login-page { background: #071a33; }

@media (max-width: 991.98px) {
  :root { --sidebar-w: 210px; }
  .content-area { padding: 20px !important; }
}

/* ── Sidebar mobile : repliee par defaut, ouverte par le bouton hamburger ──
   POURQUOI : en dessous de 768px la sidebar fixe ecrasait tout le contenu ;
   elle passe en panneau lateral (off-canvas) au-dessus de la page.
   Le JS (ui-premium.js) pose/retire .is-open sur #sidebar au clic. */
@media (max-width: 767.98px) {
  .sidebar {
    position: fixed;
    top: 56px; left: 0; bottom: 0;
    height: auto; min-height: 0;
    z-index: 1040;
    transform: translateX(-100%);
    transition: transform .22s ease;
    box-shadow: none;
  }
  .sidebar.is-open {
    transform: none;
    box-shadow: 0 12px 32px rgba(0,0,0,.35);
  }
  /* Voile derriere la sidebar ouverte : cliquer dessus la referme */
  .ork-sidebar-backdrop {
    position: fixed;
    inset: 56px 0 0 0;
    z-index: 1035;
    background: rgba(10,20,35,.45);
    opacity: 0;
    pointer-events: none;
    transition: opacity .22s ease;
  }
  .ork-sidebar-backdrop.is-open { opacity: 1; pointer-events: auto; }
}

/* ── Login : petits ecrans — marge laterale pour que la carte ne soit
   jamais coupee (la carte fait 420px, un ecran 414px la rognait) ── */
body.login-page { padding-top: 0; }
.login-page { padding: 1.25rem; }
.login-card { max-width: min(420px, 100%); }

/* ==========================================================================
   TABLEAUX PREMIUM — fidèle au modèle « Manage list »
   ========================================================================== */
.ork-table-card {
  overflow: hidden;
  border: 1px solid #e4e8ee;
  border-radius: 4px;
  box-shadow: 0 4px 16px rgba(31, 48, 72, .055);
}
.ork-table-card > .card-body { padding: 0 !important; }
.ork-table-card .table-toolbar {
  min-height: 62px;
  padding: 12px 24px;
  color: #fff;
  background: #486381;
  border: 0;
  border-radius: 3px 3px 0 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
}
.ork-table-card .tt-title {
  margin: 0;
  color: #fff;
  font-size: 1.45rem;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: -.025em;
}
.ork-table-card .tt-title strong { font-weight: 700; }
.ork-table-card .tt-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}
.ork-table-card .tt-actions .btn {
  min-height: 32px;
  padding: .38rem .72rem;
  color: #fff;
  border: 1px solid transparent;
  border-radius: 3px;
  box-shadow: none;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: .78rem;
  font-weight: 600;
}
.ork-table-card .ork-add {
  color: #fff;
  background: #0a6ed1;
  border-color: #0a6ed1;
}
.ork-table-card .ork-add:hover { color: #fff; background: #085caf; border-color: #085caf; }
.ork-table-card .ork-tool {
  color: #fff;
  background: transparent;
  border-color: rgba(255,255,255,.55) !important;
}
.ork-table-card .ork-tool:hover { color: #fff; background: rgba(255,255,255,.12); }
.ork-table-card .ork-delete {
  color: #fff;
  background: transparent;
  border-color: rgba(255,255,255,.55) !important;
}
.ork-table-card .ork-delete:hover { color: #fff; background: rgba(255,255,255,.12); }
.ork-table-card .tt-search {
  width: 210px;
  height: 32px;
  padding: 0 10px;
  color: #53657b;
  background: #fff;
  border: 1px solid rgba(255,255,255,.55);
  border-radius: 3px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.ork-table-card .tt-search:focus-within {
  border-color: #73b8ff;
  box-shadow: 0 0 0 2px rgba(10,110,209,.22);
}
.ork-table-card .tt-search .fa { color: #6a7b90; font-size: .78rem; }
.ork-table-card .tt-search input {
  width: 100%;
  min-width: 0;
  padding: 0;
  color: #1d2d3e;
  background: transparent;
  border: 0;
  outline: 0;
  font-size: .78rem;
}
.ork-table-card .tt-search input::placeholder { color: #7a899b; }
.ork-table-card .table-responsive {
  padding: 7px 24px 0;
  overflow-x: auto;
  border-radius: 0;
}
.ork-table-card .ork-premium-table {
  width: 100% !important;
  margin: 0 !important;
  border-collapse: collapse;
  table-layout: auto;
}
.ork-table-card .ork-premium-table thead th {
  height: 42px;
  padding: 8px 12px;
  color: #526786;
  background: #fff;
  border: 0;
  border-bottom: 2px solid #e8eaed;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
  vertical-align: middle;
}
.ork-table-card .ork-premium-table tbody tr {
  background: #fff;
  transition: background-color .14s ease;
}
.ork-table-card .ork-premium-table tbody td,
.ork-table-card .ork-premium-table tbody th {
  height: 40px;
  padding: 6px 12px;
  color: #506581;
  background: transparent;
  border: 0;
  border-bottom: 1px solid #e7e9ec;
  font-size: .78rem;
  font-weight: 400;
  line-height: 1.35;
  vertical-align: middle;
}
.ork-table-card .ork-premium-table tbody tr:last-child td,
.ork-table-card .ork-premium-table tbody tr:last-child th { border-bottom: 0; }
.ork-table-card .ork-premium-table.table-striped > tbody > tr:nth-of-type(odd) > * {
  --bs-table-bg-type: transparent;
  background: transparent;
}
.ork-table-card .ork-premium-table tbody tr:hover > * { background: #f8faff !important; }
.ork-table-card .ork-premium-table tbody tr.is-selected > * { background: #edf4ff !important; }
.ork-table-card .ork-premium-table tbody td a:not(.btn):not(.badge) {
  color: #47648d;
  font-weight: 500;
  text-decoration: none;
}
.ork-table-card .ork-premium-table tbody td a:not(.btn):not(.badge):hover {
  color: #245fd3;
  text-decoration: none;
}
.ork-table-card .ork-check {
  width: 40px !important;
  min-width: 40px;
  padding-left: 10px !important;
  padding-right: 6px !important;
  text-align: center;
}
.ork-table-card .form-check-input {
  width: 16px;
  height: 16px;
  margin: 0;
  border: 1px solid #bdc5cf;
  border-radius: 2px;
  box-shadow: none;
}
.ork-table-card .form-check-input:checked {
  background-color: #3b82f6;
  border-color: #3b82f6;
}
.ork-table-card .ork-actions { min-width: 100px; }
.ork-table-card .btn-icon {
  width: 26px;
  height: 26px;
  margin-left: 3px;
  padding: 0;
  border: 0;
  border-radius: 5px;
  background: transparent;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: .92rem;
  text-decoration: none !important;
}
.ork-table-card .btn-icon.view { color: #5f738a; }
.ork-table-card .btn-icon.edit { color: #0a6ed1; }
.ork-table-card .btn-icon.del { color: #5f738a; }
.ork-table-card .btn-icon:hover { background: #f1f4f8; }
.ork-table-card .badge {
  padding: .34rem .52rem;
  border-radius: 4px;
  font-size: .68rem;
  letter-spacing: .01em;
}
.ork-table-card .ork-datatable {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
}
.ork-table-card .ork-datatable > .table-responsive,
.ork-table-card .ork-datatable > table,
.ork-table-card .ork-datatable > .dataTables_scroll { grid-column: 1 / -1; }
.ork-table-card .dataTables_info {
  grid-column: 1;
  padding: 25px 24px 24px !important;
  color: #526786;
  font-size: .8rem;
}
.ork-table-card .dataTables_paginate {
  grid-column: 2;
  padding: 17px 24px 17px 10px !important;
}
.ork-table-card .dataTables_paginate .pagination {
  align-items: center;
  gap: 3px;
}
.ork-table-card .pagination .page-link {
  min-width: 34px;
  height: 34px;
  margin: 0;
  padding: .45rem .6rem;
  color: #6a7180;
  background: transparent;
  border: 0;
  border-radius: 2px;
  box-shadow: none;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: .78rem;
}
.ork-table-card .pagination .page-item.active .page-link {
  color: #fff;
  background: #19aee6 !important;
}
.ork-table-card .pagination .page-link:hover {
  color: #245fd3;
  background: #eef3f8;
}
.ork-table-card .pagination .page-item.disabled .page-link {
  color: #9aa3af;
  background: transparent;
}
@media (max-width: 767.98px) {
  .ork-table-card .table-toolbar { padding: 15px 18px; }
  .ork-table-card .tt-title { font-size: 1.18rem; }
  .ork-table-card .table-responsive { padding-right: 12px; padding-left: 12px; }
  .ork-table-card .ork-datatable { display: block; }
  .ork-table-card .dataTables_info { padding: 18px 16px 8px !important; text-align: center; }
  .ork-table-card .dataTables_paginate { padding: 8px 12px 18px !important; }
  .ork-table-card .dataTables_paginate .pagination { justify-content: center; flex-wrap: wrap; }
}

/* ==========================================================================
   STANDARD GLOBAL DES BOUTONS — bleu, gris, noir
   ========================================================================== */
.btn {
  min-height: 34px;
  padding: .42rem .78rem;
  border-radius: 4px;
  box-shadow: none !important;
  font-size: .8rem;
  font-weight: 600;
  line-height: 1.2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .4rem;
}
.btn-sm {
  min-height: 30px;
  padding: .34rem .64rem;
  font-size: .75rem;
}
.btn-primary,
.btn-success,
.btn-info,
.btn-navy,
.btn-gold {
  color: #fff !important;
  background: #0a6ed1 !important;
  border-color: #0a6ed1 !important;
}
.btn-primary:hover,
.btn-success:hover,
.btn-info:hover,
.btn-navy:hover,
.btn-gold:hover {
  color: #fff !important;
  background: #085caf !important;
  border-color: #085caf !important;
}
.btn-secondary,
.btn-light {
  color: #1d2d3e !important;
  background: #fff !important;
  border-color: #8996a5 !important;
}
.btn-secondary:hover,
.btn-light:hover {
  color: #0a6ed1 !important;
  background: #f5f7f9 !important;
  border-color: #0a6ed1 !important;
}
.btn-outline-primary,
.btn-outline-secondary,
.btn-outline-success,
.btn-outline-info,
.btn-outline-warning,
.btn-outline-danger,
.btn-danger,
.btn-warning {
  color: #0a6ed1 !important;
  background: transparent !important;
  border-color: #0a6ed1 !important;
}
.btn-outline-primary:hover,
.btn-outline-secondary:hover,
.btn-outline-success:hover,
.btn-outline-info:hover,
.btn-outline-warning:hover,
.btn-outline-danger:hover,
.btn-danger:hover,
.btn-warning:hover {
  color: #fff !important;
  background: #0a6ed1 !important;
  border-color: #0a6ed1 !important;
}
.btn:disabled,
.btn.disabled {
  color: #8996a5 !important;
  background: #eaecee !important;
  border-color: #d5dadd !important;
  opacity: 1;
}

/* ==========================================================================
   BANDEAUX UNIFIÉS — reprise du bleu ardoise des tableaux
   La barre latérale est volontairement exclue de ces règles.
   ========================================================================== */
/* `--header-slate` (l'ardoise #486381) est déclarée dans `commun/tokens.css`,
   où elle pointe sur le gris clair du canon. Elle n'est plus définie ici : ce
   fichier ne fait que la CONSOMMER, dans les 10 règles ci-dessous. */

.navbar.bg-navy {
  background: var(--header-slate) !important;
  border-bottom-color: rgba(255,255,255,.12);
}

.card-header-navy,
.card > .card-header.card-header-navy {
  color: #fff !important;
  background: var(--header-slate) !important;
  border-bottom-color: rgba(255,255,255,.10);
}

.card-header-navy .btn,
.card > .card-header.card-header-navy .btn {
  color: #fff !important;
  background: transparent !important;
  border-color: rgba(255,255,255,.65) !important;
}

.card-header-navy .btn:hover,
.card > .card-header.card-header-navy .btn:hover {
  color: var(--header-slate) !important;
  background: #fff !important;
  border-color: #fff !important;
}

.ork-table-card .table-toolbar { background: var(--header-slate); }
.ork-table-card .tt-search { width: 300px; }

@media (max-width: 1199.98px) {
  .ork-table-card .tt-search { width: 250px; }
}

@media (max-width: 767.98px) {
  .ork-table-card .tt-search { width: min(100%, 320px); }
}

/* ==========================================================================
   VARIANTE TEST — en-têtes de tableaux gris et actions type navigation métier
   ========================================================================== */
.ork-table-card .table-toolbar {
  color: #1d2d3e;
  background: #f1f3f5;
  border-bottom: 1px solid #d9dee4;
}

.ork-table-card .tt-title { color: #1d2d3e; }

.ork-table-card .tt-search {
  background: #fff;
  border-color: #a9b3bf;
}

.ork-table-card .tt-actions .btn,
.ork-table-card .ork-add,
.ork-table-card .ork-tool,
.ork-table-card .ork-delete {
  color: #0a6ed1 !important;
  background: #fff !important;
  border-color: #0a6ed1 !important;
}

.ork-table-card .tt-actions .btn:hover,
.ork-table-card .ork-add:hover,
.ork-table-card .ork-tool:hover,
.ork-table-card .ork-delete:hover {
  color: #fff !important;
  background: #0a6ed1 !important;
  border-color: #0a6ed1 !important;
}

.ork-table-card .tt-actions .btn:active,
.ork-table-card .ork-add:active,
.ork-table-card .ork-tool:active,
.ork-table-card .ork-delete:active {
  color: #fff !important;
  background: #085caf !important;
  border-color: #085caf !important;
}

.ork-table-card .tt-actions .btn:focus-visible {
  outline: 0;
  box-shadow: 0 0 0 2px rgba(10,110,209,.22) !important;
}

/* Action primaire et pagination : même bleu applicatif */
.ork-table-card .tt-actions .ork-add {
  color: #fff !important;
  background: #0a6ed1 !important;
  border-color: #0a6ed1 !important;
}

.ork-table-card .tt-actions .ork-add:hover {
  color: #fff !important;
  background: #085caf !important;
  border-color: #085caf !important;
}

.ork-table-card .pagination .page-item.active .page-link,
.ork-table-card .dataTables_paginate .page-item.active .page-link {
  color: #fff !important;
  background: #0a6ed1 !important;
  border-color: #0a6ed1 !important;
}

.ork-table-card .pagination .page-item.active .page-link:hover,
.ork-table-card .dataTables_paginate .page-item.active .page-link:hover {
  background: #085caf !important;
  border-color: #085caf !important;
}

/* ==========================================================================
   STRUCTURE PREMIUM — topbar claire au-dessus de la sidebar + KPI éditoriaux
   Tableaux, onglets et sidebar restent inchangés.
   ========================================================================== */
.navbar.bg-navy {
  width: 100%;
  z-index: 1040;
  color: #142033 !important;
  background: #fff !important;
  border-bottom: 1px solid #dfe4ea;
  box-shadow: 0 2px 8px rgba(20,32,51,.055) !important;
}

.navbar.bg-navy .navbar-brand,
.navbar.bg-navy .navbar-brand .text-gold,
.navbar.bg-navy .text-white,
.navbar.bg-navy a.text-white,
.navbar.bg-navy .dropdown > a {
  color: #142033 !important;
}

.navbar.bg-navy .text-white-50,
.navbar.bg-navy .navbar-brand small,
.navbar.bg-navy .dropdown > a .text-white-50 {
  color: #718096 !important;
}

.navbar.bg-navy .navbar-toggler,
.navbar.bg-navy .btn-navlt {
  color: #53657a !important;
  background: transparent !important;
}

.navbar.bg-navy .navbar-toggler:hover,
.navbar.bg-navy .btn-navlt:hover,
.navbar.bg-navy .btn-navlt:focus {
  color: #0a6ed1 !important;
  background: #edf4fc !important;
}

.navbar.bg-navy .navbar-search {
  border-color: #dfe4ea;
  box-shadow: none;
}

.navbar.bg-navy .navbar-avatar {
  border-color: #cbd4de;
}

.stat-card {
  min-height: 92px;
  padding: .95rem 1.05rem;
  border: 1px solid #e1e6ec;
  border-radius: 12px;
  box-shadow: 0 3px 12px rgba(20,32,51,.045);
}

.stat-card:hover {
  border-color: #d4dce5;
  box-shadow: 0 5px 16px rgba(20,32,51,.065);
}

.stat-card .stat-icon {
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  border-radius: 10px;
  color: #0a6ed1 !important;
  background: #eaf2ff !important;
}

.stat-card .stat-number {
  color: #142033 !important;
  font-size: 1.48rem;
  font-weight: 750;
  line-height: 1.05;
}

.stat-card .small {
  margin-top: .18rem;
  color: #718096 !important;
  font-size: .72rem;
}

/* ==========================================================================
   REFACTOR FINAL — bandeau restauré, KPI analytiques, tables transversales
   ========================================================================== */
.navbar.bg-navy {
  color: #fff !important;
  background: var(--header-slate) !important;
  border-bottom-color: rgba(255,255,255,.12);
  box-shadow: 0 2px 8px rgba(20,32,51,.12) !important;
}
.navbar.bg-navy .navbar-brand,
.navbar.bg-navy .navbar-brand .text-gold,
.navbar.bg-navy .text-white,
.navbar.bg-navy a.text-white,
.navbar.bg-navy .dropdown > a { color: #fff !important; }
.navbar.bg-navy .text-white-50,
.navbar.bg-navy .navbar-brand small,
.navbar.bg-navy .dropdown > a .text-white-50 { color: rgba(255,255,255,.66) !important; }
.navbar.bg-navy .navbar-toggler,
.navbar.bg-navy .btn-navlt { color: #fff !important; }
.navbar.bg-navy .navbar-toggler:hover,
.navbar.bg-navy .btn-navlt:hover,
.navbar.bg-navy .btn-navlt:focus {
  color: #fff !important;
  background: rgba(255,255,255,.12) !important;
}
.navbar.bg-navy .navbar-avatar { border-color: rgba(255,255,255,.35); }

/* KPI : valeur + micro-visualisation SAP-like, sans ajouter de couleur décorative. */
.ork-kpi-card {
  position: relative;
  min-height: 98px;
  /* Plus de graphique decoratif a droite : padding symetrique */
  padding-right: 1.25rem !important;
  overflow: hidden;
  background:
    linear-gradient(90deg, rgba(10,110,209,.035), transparent 42%),
    #fff;
}
.ork-kpi-card::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 3px;
  background: #0a6ed1;
  opacity: .75;
}
.ork-kpi-card .stat-icon {
  width: 46px;
  height: 46px;
  flex-basis: 46px;
  border-radius: 9px;
}
.ork-kpi-card .stat-number { font-size: 1.58rem; }
.ork-kpi-viz {
  position: absolute;
  right: 18px;
  bottom: 21px;
  width: 72px;
  height: 38px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-end;
  gap: 4px;
}
.ork-kpi-viz::before {
  content: "";
  position: absolute;
  inset: -9px -6px;
  border-left: 1px solid #dce5ef;
}
.ork-kpi-viz span {
  display: block;
  height: 6px;
  min-width: 18px;
  border-radius: 1px;
  background: #0a6ed1;
  transform-origin: right center;
  transition: width .18s ease;
}
.ork-kpi-card:hover .ork-kpi-viz span { width: 100% !important; }

/* Tables hors DataTables : même densité, typographie et alternance que le canon. */
.ork-static-table-card { overflow: hidden; }
.ork-static-table {
  width: 100%;
  margin: 0 !important;
  border-collapse: collapse;
}
.ork-static-table thead th {
  height: 42px;
  padding: 8px 12px;
  color: #425a76;
  background: #f5f7f9 !important;
  border: 0;
  border-bottom: 1px solid #dce2e8;
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  vertical-align: middle;
}
.ork-static-table tbody td,
.ork-static-table tbody th {
  min-height: 40px;
  padding: 8px 12px;
  color: #455b75;
  border: 0;
  border-bottom: 1px solid #e5e9ee;
  font-size: .78rem;
  vertical-align: middle;
}
.ork-static-table tbody tr:nth-child(odd) > * { background: #f3f3f3; }
.ork-static-table tbody tr:nth-child(even) > * { background: #fff; }
.ork-static-table tbody tr:hover > * { background: #edf4ff !important; }
.ork-static-table tfoot td,
.ork-static-table tfoot th {
  padding: 9px 12px;
  color: #142033;
  background: #f1f4f7;
  border-top: 1px solid #cdd6df;
  font-weight: 700;
}

/* Actions : traitement identique à Documents, avec les icônes propres au canon. */
.ork-row-action {
  width: 30px;
  height: 30px;
  margin-left: 4px;
  padding: 0;
  color: #0a6ed1 !important;
  background: #fff !important;
  border: 1px solid #0a6ed1 !important;
  border-radius: 4px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: .8rem;
  line-height: 1;
  text-decoration: none !important;
  vertical-align: middle;
}
.ork-row-action:hover {
  color: #fff !important;
  background: #0a6ed1 !important;
}
.ork-row-action.del:hover {
  color: #fff !important;
  background: #bb0000 !important;
  border-color: #bb0000 !important;
}

/* Fenêtre de création générée par chaque tableau canonique. */
.ork-create-modal .modal-header {
  padding: 1.15rem 1.35rem;
  background: #f1f3f5;
  border-bottom: 1px solid #dbe1e7;
}
.ork-create-modal .modal-kicker {
  margin-bottom: .18rem;
  color: #0a6ed1;
  font-size: .68rem;
  font-weight: 750;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.ork-create-modal .modal-title { color: #142033; font-size: 1.15rem; font-weight: 750; }
.ork-create-modal .form-label { margin-bottom: .35rem; color: #425a76; font-size: .75rem; font-weight: 650; }
.ork-create-modal .modal-footer { border-top: 1px solid #e2e7ec; }

/* Le dashboard bénéficie du même niveau analytique. */
.kpi {
  position: relative;
  background:
    linear-gradient(90deg, rgba(10,110,209,.035), transparent 45%),
    #fff !important;
}
.kpi::before {
  content: "";
  width: 3px;
  position: absolute;
  inset: 0 auto 0 0;
  background: #0a6ed1;
  opacity: .75;
}
.kpi .kpi-iconbox { box-shadow: inset 0 0 0 1px rgba(10,110,209,.06); }

/* ==========================================================================
   KPI ANALYTIQUES — variantes, mini-graphiques et couleurs conditionnelles
   ========================================================================== */
:root {
  --kpi-info: #0a6ed1;
  --kpi-success: #18864b;
  --kpi-warning: #c47a00;
  --kpi-danger: #bb0000;
}

.ork-kpi-card {
  --kpi-color: var(--kpi-info);
  padding-left: 1.22rem !important;
}
.ork-kpi-card::before {
  width: 7px;
  background: var(--kpi-color);
  opacity: 1;
}
.ork-kpi-info { --kpi-color: var(--kpi-info); }
.ork-kpi-success { --kpi-color: var(--kpi-success); }
.ork-kpi-warning { --kpi-color: var(--kpi-warning); }
.ork-kpi-danger { --kpi-color: var(--kpi-danger); }
.ork-kpi-card .ork-kpi-value,
.ork-kpi-card .stat-number { color: var(--kpi-color) !important; }
.ork-kpi-card .stat-icon {
  color: var(--kpi-color) !important;
  background: color-mix(in srgb, var(--kpi-color) 10%, white) !important;
}
.ork-kpi-card .ork-kpi-viz {
  right: 14px;
  bottom: 12px;
  width: 98px;
  height: 68px;
  gap: 5px;
  color: var(--kpi-color);
}
.ork-kpi-card .ork-kpi-viz::before { display: none; }

.ork-donut {
  --pct: 72;
  width: 48px;
  height: 48px;
  margin-left: auto;
  border-radius: 50%;
  background: conic-gradient(var(--kpi-color) calc(var(--pct) * 1%), #e6ebf0 0);
  display: grid;
  place-items: center;
}
.ork-donut::after {
  content: "";
  width: 34px;
  height: 34px;
  position: absolute;
  border-radius: 50%;
  background: #fff;
}
.ork-donut span { position: relative; z-index: 1; color: var(--kpi-color); font-size: .63rem; font-weight: 750; }
.ork-mini-legend { display:flex;justify-content:flex-end;align-items:center;gap:4px;color:#718096;font-size:.56rem; }
.ork-mini-legend i { width:6px;height:6px;border-radius:50%;background:var(--kpi-color); }

.ork-stack { width: 96px; height: 10px; margin-top: 5px; overflow: hidden; border-radius: 2px; display:flex; background:#e6ebf0; }
.ork-stack span:nth-child(1) { background: var(--kpi-color); }
.ork-stack span:nth-child(2) { background: color-mix(in srgb, var(--kpi-color) 62%, white); }
.ork-stack span:nth-child(3) { background: color-mix(in srgb, var(--kpi-color) 28%, white); }
.ork-bars { height:42px;display:flex;align-items:flex-end;justify-content:flex-end;gap:6px; }
.ork-bars i { width:10px;background:var(--kpi-color);border-radius:2px 2px 0 0;opacity:.75; }

.ork-evolution { display:flex;justify-content:flex-end;align-items:center;gap:5px;color:var(--kpi-success);font-size:.7rem; }
.ork-evolution.is-down { color:var(--kpi-danger); }
.ork-spark { width:94px;height:38px;overflow:visible; }
.ork-spark polyline { fill:none;stroke:var(--kpi-color);stroke-width:2.2;vector-effect:non-scaling-stroke; }

.ork-multi { height:48px;display:flex;align-items:flex-end;justify-content:flex-end;gap:10px; }
.ork-multi span { width:18px;height:45px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:3px; }
.ork-multi i { width:12px;background:var(--kpi-color);border-radius:2px 2px 0 0; }
.ork-multi b { color:#718096;font-size:.52rem;font-weight:650; }
.ork-multi-dots { display:flex;justify-content:flex-end;gap:4px; }
.ork-multi-dots i { width:5px;height:5px;border-radius:50%;background:var(--kpi-color);opacity:.4; }

/* Dashboard : quatre lectures distinctes et bandeau conditionnel élargi. */
.kpi {
  --kpi-color: var(--kpi-info);
  padding-left: 5px;
}
.kpi::before { width: 7px; background: var(--kpi-color); opacity: 1; }
.kpi-info { --kpi-color: var(--kpi-info); }
.kpi-success { --kpi-color: var(--kpi-success); }
.kpi-warning { --kpi-color: var(--kpi-warning); }
.kpi-danger { --kpi-color: var(--kpi-danger); }
.kpi .kpi-num { color: var(--kpi-color) !important; }
.kpi .kpi-iconbox {
  color: var(--kpi-color);
  background: color-mix(in srgb, var(--kpi-color) 10%, white);
}
.kpi .trend { color: var(--kpi-color); }
.kpi-content { position: relative; }
.kpi-microbars {
  height: 29px;
  margin-top: 7px;
  display:flex;
  align-items:flex-end;
  gap:5px;
}
.kpi-microbars i { width:9px;background:var(--kpi-color);border-radius:2px 2px 0 0;opacity:.65; }
.kpi-donut {
  --pct: 78;
  width:36px;height:36px;position:absolute;right:0;bottom:-4px;border-radius:50%;
  background:conic-gradient(var(--kpi-color) calc(var(--pct)*1%),#e6ebf0 0);
  display:grid;place-items:center;
}
.kpi-donut::after { content:"";width:25px;height:25px;border-radius:50%;background:#fff;position:absolute; }
.kpi-donut span { position:relative;z-index:1;color:var(--kpi-color);font-size:.55rem;font-weight:750; }
.kpi-sparkline { width:110px;height:30px;margin-top:6px;overflow:visible; }
.kpi-sparkline polyline { fill:none;stroke:var(--kpi-color);stroke-width:2;vector-effect:non-scaling-stroke; }
.kpi-stack { height:8px;margin-top:12px;display:flex;overflow:hidden;border-radius:2px;background:#e6ebf0; }
.kpi-stack i:nth-child(1){background:var(--kpi-color)}
.kpi-stack i:nth-child(2){background:color-mix(in srgb,var(--kpi-color) 58%,white)}
.kpi-stack i:nth-child(3){background:color-mix(in srgb,var(--kpi-color) 26%,white)}
.kpi-stack-labels { margin-top:4px;display:flex;justify-content:space-between;color:#718096;font-size:.52rem; }


/* ==========================================================================
   FILTRES CENTRAUX DES TABLEAUX
   ========================================================================== */
.ork-table-card .table-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}
.ork-table-card .tt-actions > label {
  height: 32px;
  margin: 0;
  background: #fff;
  border: 1px solid #a9b3bf;
  border-radius: 3px;
  display: flex;
  align-items: center;
}
.ork-table-card .tt-actions > label:focus-within {
  border-color: #0a6ed1;
  box-shadow: 0 0 0 2px rgba(10,110,209,.16);
}
.ork-table-card .tt-actions .tt-search {
  width: min(430px, 38vw);
  padding: 0 9px;
}
.ork-table-card .ork-open-filters {
  width: auto;
  height: 32px;
  min-height: 32px;
  padding: 0 .72rem;
  color: #0a6ed1 !important;
  background: #fff !important;
  border: 1px solid #0a6ed1 !important;
}
.ork-table-card .ork-open-filters:hover,
.ork-table-card .ork-open-filters.is-active {
  color: #fff !important;
  background: #0a6ed1 !important;
}
.ork-table-card .ork-open-filters { position: relative; }
.ork-table-card .ork-filter-count:not(:empty) {
  min-width: 15px;
  height: 15px;
  padding: 0 3px;
  position: absolute;
  top: -7px;
  right: -7px;
  color: #fff;
  background: #bb0000;
  border: 2px solid #f1f3f5;
  border-radius: 10px;
  display: grid;
  place-items: center;
  font-size: .52rem;
  font-weight: 750;
}

@media (max-width: 1450px) {
  .ork-table-card .table-toolbar {
    align-items: flex-start;
    flex-direction: column;
  }
  .ork-table-card .tt-actions {
    width: 100%;
    justify-content: flex-end;
    flex-wrap: wrap;
  }
  .ork-table-card .tt-actions .tt-search { width: min(430px, 55vw); }
}

@media (max-width: 767.98px) {
  .ork-table-card .tt-actions .tt-search { width: 100%; }
  .ork-table-card .tt-actions { width: 100%; justify-content: flex-start; }
}

/* Popup de filtres avancés */
.ork-filter-modal .modal-header {
  padding: 1.15rem 1.35rem;
  background: #f1f3f5;
  border-bottom: 1px solid #dbe1e7;
}
.ork-filter-modal .modal-kicker {
  margin-bottom: .18rem;
  color: #0a6ed1;
  font-size: .68rem;
  font-weight: 750;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.ork-filter-modal .modal-title { color: #142033; font-size: 1.15rem; font-weight: 750; }
.ork-filter-modal .form-label { margin-bottom: .35rem; color: #425a76; font-size: .75rem; font-weight: 650; }
.ork-filter-section-title {
  margin-top: .2rem;
  padding-top: .9rem;
  color: #0a6ed1;
  border-top: 1px solid #e2e7ec;
  font-size: .76rem;
  font-weight: 700;
}

/* Import / export dans le pied, à la place du compteur d'éléments. */
.ork-table-card .ork-table-footer-tools {
  grid-column: 1;
  padding: 15px 24px 17px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.ork-table-card .ork-table-footer-tools .btn {
  min-height: 32px;
  padding: .38rem .72rem;
  color: #0a6ed1 !important;
  background: #fff !important;
  border-color: #0a6ed1 !important;
}
.ork-table-card .ork-table-footer-tools .btn:hover {
  color: #fff !important;
  background: #0a6ed1 !important;
}

@media (max-width: 767.98px) {
  .ork-table-card .ork-table-footer-tools {
    justify-content: center;
    padding: 15px 12px 6px;
  }
}

/* ==========================================================================
   RACCOURCIS CONTEXTUELS DE PAGE
   ========================================================================== */
.sidebar-link[href="parents.html"],
.sidebar-link[href="rapports.html"] {
  display: none !important;
}

.page-context-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}
.page-context-actions .btn {
  color: #0a6ed1 !important;
  background: #fff !important;
  border-color: #0a6ed1 !important;
}
.page-context-actions .btn:hover {
  color: #fff !important;
  background: #0a6ed1 !important;
}

.accounting-view-switch {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 7px;
  flex-wrap: wrap;
  padding-bottom: 12px;
  border-bottom: 1px solid #dfe4ea;
}
.accounting-view-switch .btn {
  min-height: 32px;
  color: #0a6ed1 !important;
  background: #fff !important;
  border: 1px solid #0a6ed1 !important;
}
.accounting-view-switch .btn:hover,
.accounting-view-switch .btn.active {
  color: #fff !important;
  background: #0a6ed1 !important;
  border-color: #0a6ed1 !important;
}

.accounting-top-tab.active {
  color: #fff !important;
  background: #0a6ed1 !important;
  border-color: #0a6ed1 !important;
}

/* ==========================================================================
   MODALE D'ENCAISSEMENT
   ========================================================================== */
#mPay .modal-dialog { max-width: 820px; }
.payment-modal { max-width: 820px; border-radius: 12px; }
.payment-modal .modal-header {
  padding: 1.15rem 1.35rem;
  color: #fff;
  background: var(--header-slate);
  border: 0;
}
.payment-modal .modal-kicker { color: rgba(255,255,255,.68); font-size: .67rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.payment-modal .modal-title { color: #fff; font-size: 1.15rem; font-weight: 750; }
.payment-modal .btn-close { filter: invert(1); opacity: .75; }
.payment-modal .modal-body { padding: 1.25rem 1.35rem; }
.payment-modal .form-label { margin-bottom: .35rem; color: #425a76; font-size: .73rem; font-weight: 650; }
.payment-student-summary {
  padding: .9rem 1rem;
  background: #f5f8fb;
  border: 1px solid #dfe6ed;
  border-radius: 9px;
  display: flex;
  align-items: center;
  gap: .85rem;
}
.payment-avatar { width:42px;height:42px;flex:0 0 42px;border-radius:9px;color:#0a6ed1;background:#e5f0fc;display:grid;place-items:center;font-weight:750; }
.payment-student-summary .form-select { min-height: 34px; padding-top: .25rem; padding-bottom: .25rem; background-color: transparent; border-color: transparent; font-weight: 700; }
.payment-student-summary .form-select:focus { background:#fff; border-color:#0a6ed1; }
.payment-student-meta { display:flex;align-items:center;gap:7px;color:#718096;font-size:.68rem; }
.payment-student-meta i { width:4px;height:4px;border-radius:50%;background:#a9b3bf; }
.payment-status { padding:.28rem .5rem;color:#26734d;background:#e6f5ec;border-radius:4px;font-size:.65rem;font-weight:700;white-space:nowrap; }
.payment-section { margin:1rem 0;padding-top:1rem;border-top:1px solid #e5e9ee; }
.payment-section-head { margin-bottom:.65rem;display:flex;align-items:center;justify-content:space-between;color:#425a76;font-size:.78rem; }
.payment-section-head > div { display:flex;align-items:center;gap:7px; }
.payment-section-head small { color:#8190a1; }
.payment-step { width:20px;height:20px;border-radius:50%;color:#fff;background:#0a6ed1;display:grid;place-items:center;font-size:.65rem;font-weight:750; }
.payment-methods { display:grid;grid-template-columns:repeat(4,1fr);gap:8px; }
.payment-method { min-height:78px;padding:.7rem;position:relative;cursor:pointer;background:#fff;border:1px solid #d9e0e7;border-radius:7px;display:flex;align-items:center;gap:.55rem;transition:.15s; }
.payment-method:hover { border-color:#79afe5;background:#f8fbff; }
.payment-method.active { border-color:#0a6ed1;background:#edf5fd;box-shadow:0 0 0 2px rgba(10,110,209,.1); }
.payment-method input { position:absolute;opacity:0; }
.payment-method-icon { width:34px;height:34px;flex:0 0 34px;border-radius:7px;color:#0a6ed1;background:#e5f0fc;display:grid;place-items:center; }
.payment-method strong,.payment-method small { display:block; }
.payment-method strong { color:#24364a;font-size:.72rem; }
.payment-method small { margin-top:2px;color:#8190a1;font-size:.58rem;line-height:1.15; }
.payment-check { position:absolute;right:7px;top:7px;color:#0a6ed1;opacity:0;font-size:.72rem; }
.payment-method.active .payment-check { opacity:1; }
.payment-receipt-options { height:38px;padding:0 .7rem;background:#f7f9fb;border:1px solid #dfe4ea;border-radius:5px;display:flex;align-items:center;gap:13px;font-size:.68rem; }
.payment-receipt-options label { display:flex;align-items:center;gap:5px; }
.payment-recap { padding:.75rem 1rem;background:#f1f4f7;border-radius:7px;display:grid;grid-template-columns:repeat(3,1fr);gap:12px; }
.payment-recap div { padding-right:12px;border-right:1px solid #d7dee5; }
.payment-recap div:last-child { border:0; }
.payment-recap span,.payment-recap strong { display:block; }
.payment-recap span { color:#718096;font-size:.62rem; }
.payment-recap strong { margin-top:2px;color:#142033;font-size:.82rem; }
.payment-secure { color:#718096;font-size:.67rem; }
.payment-secure i { color:#18864b;margin-right:4px; }
@media(max-width:767.98px){
  .payment-methods{grid-template-columns:repeat(2,1fr)}
  .payment-student-summary{align-items:flex-start;flex-wrap:wrap}
  .payment-status{margin-left:50px}
  .payment-recap{grid-template-columns:1fr}
  .payment-recap div{padding:0 0 7px;border:0;border-bottom:1px solid #d7dee5}
}

/* ==========================================================================
   DIMENSIONS ET MODE FORMULAIRE COMPLET DES POPUPS
   ========================================================================== */
.modal-dialog {
  width: calc(100% - 2rem);
  max-width: 760px;
}
.modal-dialog.modal-lg { max-width: 980px; }
.modal-dialog.modal-xl { max-width: 1160px; }
.modal-dialog.ork-modal-expanded {
  width: calc(100% - 3rem);
  max-width: 1180px !important;
}
.modal-dialog.ork-modal-expanded .modal-content {
  min-height: min(780px, calc(100vh - 3rem));
}
.modal-dialog.ork-modal-expanded .modal-body {
  max-height: calc(100vh - 190px);
  overflow-y: auto;
}
.modal-content { border-radius: 12px; }
.modal-body { padding: 1.35rem 1.5rem; }
.modal-footer {
  min-height: 64px;
  padding: .8rem 1.5rem 1rem;
  gap: 7px;
}
.ork-full-form {
  color: #0a6ed1 !important;
  background: #fff !important;
  border-color: #0a6ed1 !important;
}
.ork-full-form:hover {
  color: #fff !important;
  background: #0a6ed1 !important;
}
@media (max-width: 767.98px) {
  .modal-dialog,
  .modal-dialog.ork-modal-expanded {
    width: calc(100% - 1rem);
    margin: .5rem auto;
  }
  .modal-dialog.ork-modal-expanded .modal-content { min-height: calc(100vh - 1rem); }
  .modal-footer .ork-full-form {
    width: 100%;
    margin-right: 0 !important;
  }
}

@media (max-width: 767.98px) {
  .page-context-actions,
  .accounting-view-switch { justify-content: flex-start; }
}

/* ==========================================================================
   BASCULE KPI / FILTRES — contrôle réutilisable en haut des vues
   ========================================================================== */
.ork-view-panel-toggle {
  min-height: 31px;
  padding: 2px;
  background: #fff;
  border: 1px solid #0a6ed1;
  border-radius: 7px;
  display: inline-flex;
  align-items: center;
  gap: 2px;
  box-shadow: 0 1px 4px rgba(10, 110, 209, .08);
}
.ork-view-panel-toggle button {
  min-height: 25px;
  padding: .24rem .58rem;
  color: #0a6ed1;
  background: transparent;
  border: 0;
  border-radius: 5px;
  display: inline-flex;
  align-items: center;
  gap: .38rem;
  font-size: .7rem;
  font-weight: 750;
  line-height: 1;
  white-space: nowrap;
  transition: background .15s ease, color .15s ease, box-shadow .15s ease;
}
.ork-view-panel-toggle button:hover,
.ork-view-panel-toggle button.is-active {
  color: #fff;
  background: #0a6ed1;
  box-shadow: 0 2px 7px rgba(10, 110, 209, .22);
}
.ork-view-panel-toggle button:focus-visible {
  outline: 2px solid rgba(10, 110, 209, .28);
  outline-offset: 2px;
}
[data-view-panel] {
  position: relative;
  transform-origin: top center;
  backface-visibility: hidden;
  will-change: opacity, transform, filter;
}
[data-view-panel][hidden] { display: none !important; }
[data-view-panel].ork-panel-entering {
  animation: orkPanelEnter .58s cubic-bezier(.16, 1, .3, 1) both;
}
[data-view-panel].ork-panel-leaving {
  pointer-events: none;
  animation: orkPanelLeave .38s cubic-bezier(.45, 0, .18, 1) both;
}
@keyframes orkPanelEnter {
  0% {
    opacity: 0;
    transform: translateY(18px) scale(.972);
    filter: blur(14px) saturate(.92);
    clip-path: inset(10px 0 0 0 round 14px);
  }
  58% {
    opacity: 1;
    transform: translateY(-2px) scale(1.006);
    filter: blur(0) saturate(1.02);
    clip-path: inset(0 0 0 0 round 10px);
  }
  100% {
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: blur(0) saturate(1);
    clip-path: inset(0 0 0 0 round 0);
  }
}
@keyframes orkPanelLeave {
  0% {
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: blur(0) saturate(1);
  }
  100% {
    opacity: 0;
    transform: translateY(-12px) scale(.982);
    filter: blur(10px) saturate(.9);
  }
}
@supports (animation-timeline: auto) {
  [data-view-panel].ork-panel-entering::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    background: linear-gradient(110deg, transparent 0%, rgba(255,255,255,.38) 38%, transparent 68%);
    transform: translateX(-120%);
    animation: orkPanelGlint .7s cubic-bezier(.16, 1, .3, 1) both;
  }
}
@keyframes orkPanelGlint {
  from {
    opacity: 0;
    transform: translateX(-120%);
  }
  30% {
    opacity: .55;
  }
  100% {
    opacity: 0;
    transform: translateX(120%);
  }
}
@media (prefers-reduced-motion: reduce) {
  [data-view-panel].ork-panel-entering,
  [data-view-panel].ork-panel-leaving {
    animation: none !important;
  }
}

/* Transition de scène : plus confortable que le simple fade.
   Le conteneur accompagne la hauteur du bloc actif, façon interface native. */
.ork-view-panel-stage {
  position: relative;
  overflow: hidden;
  transition:
    height .72s cubic-bezier(.22, 1, .36, 1),
    filter .72s cubic-bezier(.22, 1, .36, 1);
  will-change: height;
}
.ork-view-panel-stage > .ork-context-filter {
  margin-top: 0 !important;
  border-top: 1px solid #dfe5ec;
  border-radius: 9px;
}
.ork-view-panel-stage > .ork-context-filter .ork-context-filter__bar {
  border-radius: 8px 8px 0 0;
}
.ork-view-panel-stage.is-morphing {
  filter: drop-shadow(0 12px 26px rgba(15, 35, 58, .055));
}
.ork-view-panel-stage.is-morphing > [data-view-panel] {
  width: 100%;
  margin-bottom: 0 !important;
}
.ork-view-panel-stage.is-morphing > [data-view-panel].ork-panel-leaving {
  position: absolute;
  inset: 0 auto auto 0;
  z-index: 1;
}
.ork-view-panel-stage.is-morphing > [data-view-panel].ork-panel-entering {
  position: relative;
  z-index: 2;
}
.ork-view-panel-stage > [data-view-panel].ork-panel-entering {
  animation: orkPanelMorphIn .72s cubic-bezier(.22, 1, .36, 1) both;
}
.ork-view-panel-stage > [data-view-panel].ork-panel-leaving {
  animation: orkPanelMorphOut .42s cubic-bezier(.32, .72, 0, 1) both;
}
.ork-view-panel-stage > [data-view-panel].ork-panel-entering::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
  border-radius: 14px;
  background:
    radial-gradient(circle at 18% 0%, rgba(255,255,255,.52), transparent 36%),
    linear-gradient(105deg, transparent 0%, rgba(255,255,255,.28) 42%, transparent 72%);
  mix-blend-mode: screen;
  opacity: 0;
  transform: translateX(-18%);
  animation: orkPanelSoftLight .72s cubic-bezier(.22, 1, .36, 1) both;
}
@keyframes orkPanelMorphIn {
  0% {
    opacity: 0;
    transform: translate3d(0, 24px, 0) scale(.965);
    filter: blur(18px) saturate(.86);
  }
  45% {
    opacity: 1;
    transform: translate3d(0, -3px, 0) scale(1.012);
    filter: blur(0) saturate(1.04);
  }
  72% {
    transform: translate3d(0, 1px, 0) scale(.998);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
    filter: blur(0) saturate(1);
  }
}
@keyframes orkPanelMorphOut {
  0% {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
    filter: blur(0) saturate(1);
  }
  100% {
    opacity: 0;
    transform: translate3d(0, -18px, 0) scale(.972);
    filter: blur(16px) saturate(.86);
  }
}
@keyframes orkPanelSoftLight {
  0% { opacity: 0; transform: translateX(-18%); }
  35% { opacity: .38; }
  100% { opacity: 0; transform: translateX(18%); }
}
@media (prefers-reduced-motion: reduce) {
  .ork-view-panel-stage,
  .ork-view-panel-stage > [data-view-panel].ork-panel-entering,
  .ork-view-panel-stage > [data-view-panel].ork-panel-leaving,
  .ork-view-panel-stage > [data-view-panel].ork-panel-entering::after {
    animation: none !important;
    transition: none !important;
  }
}
@media (max-width: 575.98px) {
  .ork-view-panel-toggle { width: 100%; }
  .ork-view-panel-toggle button { flex: 1; justify-content: center; }
}

/* ==========================================================================
   FILTRE CONTEXTUEL PLIABLE — COMPOSANT RÉUTILISABLE
   ========================================================================== */
.ork-context-filter {
  margin: -.65rem 0 1.35rem;
  background: #fff;
  border: 1px solid #dfe5ec;
  border-radius: 9px;
  box-shadow: 0 4px 14px rgba(15, 35, 58, .045);
  overflow: hidden;
}
.ork-context-filter__bar {
  min-height: 60px;
  padding: .65rem .85rem;
  color: #fff;
  background: var(--header-slate, #486381);
  border-bottom: 1px solid rgba(255,255,255,.14);
  display: flex;
  align-items: center;
  gap: .8rem;
}
.ork-context-filter__toggle {
  min-width: 205px;
  padding: .45rem .55rem;
  color: #fff;
  background: transparent;
  border: 0;
  display: inline-flex;
  align-items: center;
  gap: .65rem;
  font-size: .78rem;
  font-weight: 750;
  text-align: left;
}
.ork-context-filter__toggle:hover {
  color: #fff;
  background: rgba(255,255,255,.08);
  border-radius: 7px;
}
.ork-context-filter__toggle i {
  width: 18px;
  transition: transform .2s ease;
}
.ork-context-filter.is-open .ork-context-filter__toggle i { transform: rotate(90deg); }
.ork-context-filter__summary {
  min-width: 0;
  flex: 1;
  display: flex;
  align-items: center;
  gap: 6px;
  overflow-x: auto;
  scrollbar-width: thin;
}
.ork-context-filter__chip {
  max-width: 310px;
  padding: .42rem .65rem;
  color: #fff;
  background: rgba(255,255,255,.13);
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 5px;
  font-size: .68rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ork-context-filter__chip b { color: #fff; font-weight: 700; }
.ork-context-filter__bar-actions {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 8px;
}
.ork-context-filter__bar-actions .ork-context-filter__reset {
  color: #0a6ed1;
  padding: .42rem .65rem;
  background: #fff;
  border: 1px solid rgba(255,255,255,.72);
  border-radius: 7px;
  box-shadow: 0 1px 4px rgba(0,0,0,.14);
}
.ork-context-filter__bar-actions .ork-context-filter__reset:hover {
  color: #085caf;
  background: #f3f8ff;
  border-color: #fff;
  text-decoration: none;
}
.ork-context-filter__body {
  max-height: 0;
  padding: 0 1.25rem;
  opacity: 0;
  overflow: hidden;
  border-top: 0 solid #e7ebf0;
  transition: max-height .28s ease, opacity .18s ease, padding .28s ease, border-width .28s ease;
}
.ork-context-filter.is-open .ork-context-filter__body {
  max-height: 560px;
  padding: 1rem 1.25rem 1.15rem;
  opacity: 1;
  border-top-width: 1px;
}
.ork-context-filter__grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(160px, 1fr));
  gap: .8rem;
}
.ork-context-filter .form-label {
  margin-bottom: .3rem;
  color: #64748b;
  font-size: .67rem;
  font-weight: 700;
}
.ork-context-filter .form-select,
.ork-context-filter .form-control {
  min-height: 35px;
  color: #273a50;
  border-color: #cfd8e3;
  border-radius: 5px;
  font-size: .73rem;
}
.ork-context-filter .form-select:focus,
.ork-context-filter .form-control:focus {
  border-color: #0a6ed1;
  box-shadow: 0 0 0 2px rgba(10, 110, 209, .1);
}
.ork-context-filter__footer {
  margin-top: .95rem;
  padding-top: .85rem;
  border-top: 1px solid #e7ebf0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.ork-context-filter__hint { color: #7b899a; font-size: .67rem; }
.ork-context-filter__actions { display: flex; align-items: center; gap: 8px; }
.ork-context-filter__reset {
  color: #0a6ed1;
  background: transparent;
  border: 0;
  font-size: .7rem;
  font-weight: 700;
}
.ork-context-filter__reset:hover { text-decoration: underline; }
@media (max-width: 1199.98px) {
  .ork-context-filter__grid { grid-template-columns: repeat(3, minmax(160px, 1fr)); }
}
@media (max-width: 767.98px) {
  .ork-context-filter { margin-top: -.45rem; }
  .ork-context-filter__bar { align-items: flex-start; flex-direction: column; }
  .ork-context-filter__toggle { min-width: 0; }
  .ork-context-filter__summary { width: 100%; }
  .ork-context-filter__grid { grid-template-columns: 1fr; }
  .ork-context-filter__footer { align-items: stretch; flex-direction: column; }
  .ork-context-filter__actions { justify-content: flex-end; }
}

/* ==========================================================================
   FICHE D'OBJET / FORMULAIRE PREMIUM — COMPOSANT RÉUTILISABLE
   ========================================================================== */
.ork-object-page { max-width: 1380px; margin: 0 auto; }
.ork-object-header {
  position: sticky;
  /* top: 0 ET NON 82px — corrige le 26/07/2026.
     POURQUOI : `sticky` se cale sur le conteneur qui DEFILE, ici `.content-area`,
     qui commence deja SOUS le bandeau de l'application. Les 82 px etaient donc
     comptes une seconde fois : l'en-tete collant descendait de 82 px de trop et
     RECOUVRAIT le haut du premier panneau -- titre de section et carte de
     synthese masques, sur toutes les fiches objet.
     Le defaut passait inapercu parce que le bandeau « donnees de demonstration »
     occupait justement cette hauteur. En retirant le bandeau, il est apparu.
     Meme defaut, plus discret (22 px), sur eleve-form, compta-compte-detail et
     compta-ecriture-detail : la meme correction les couvre tous. */
  top: 0;
  z-index: 8;
  margin: 0 0 16px;
  padding: 12px 14px;
  background: rgba(255,255,255,.96);
  border: 1px solid #d7e0e8;
  border-radius: 8px;
  box-shadow: 0 7px 24px rgba(15,35,58,.12);
  backdrop-filter: blur(10px);
  display: flex;
  align-items: center;
  gap: 12px;
}
.ork-object-back {
  width: 32px;
  height: 32px;
  flex: 0 0 32px;
  color: #0a6ed1;
  background: #fff;
  border: 1px solid #b8cee4;
  border-radius: 6px;
  display: grid;
  place-items: center;
  text-decoration: none;
}
.ork-object-back:hover { color: #fff; background: #0a6ed1; border-color: #0a6ed1; }
.ork-object-avatar {
  width: 48px;
  height: 48px;
  flex: 0 0 48px;
  color: #0a6ed1;
  background: #e8f2fd;
  border: 1px solid #cfe2f6;
  border-radius: 10px;
  display: grid;
  place-items: center;
  font-size: 1rem;
  font-weight: 800;
}
.ork-object-avatar img {
  width: 100%;
  height: 100%;
  border-radius: inherit;
  object-fit: cover;
}
.ork-object-heading { min-width: 0; flex: 1; }
.ork-object-kicker {
  color: #718096;
  font-size: .61rem;
  font-weight: 750;
  letter-spacing: .07em;
  text-transform: uppercase;
}
.ork-object-title {
  margin: 2px 0 3px;
  color: #10243c;
  font-size: 1.12rem;
  font-weight: 780;
}
.ork-object-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 15px; color: #64748b; font-size: .69rem; }
.ork-object-meta span { display: inline-flex; align-items: center; gap: 5px; }
.ork-object-actions { display: flex; align-items: center; flex-wrap: wrap; justify-content: flex-end; gap: 7px; }
.ork-object-status {
  padding: .28rem .54rem;
  color: #187349;
  background: #e7f5ed;
  border: 1px solid #cdebd9;
  border-radius: 5px;
  font-size: .62rem;
  font-weight: 750;
}
.ork-object-layout { display: grid; grid-template-columns: minmax(0, 1fr) 310px; gap: 14px; align-items: start; }
.ork-object-main, .ork-object-aside { min-width: 0; }
.ork-form-panel {
  margin-bottom: 12px;
  background: #fff;
  border: 1px solid #dce3ea;
  border-radius: 8px;
  overflow: hidden;
}
.ork-form-panel__head {
  width: 100%;
  min-height: 45px;
  padding: .65rem .9rem;
  color: #17324f;
  background: #f4f6f8;
  border: 0;
  border-bottom: 1px solid #e1e6ec;
  display: flex;
  align-items: center;
  gap: 9px;
  text-align: left;
}
.ork-form-panel__head > i:first-child { width: 19px; color: #0a6ed1; text-align: center; }
.ork-form-panel__head strong { font-size: .79rem; }
.ork-form-panel__head small { margin-left: 4px; color: #8190a1; font-size: .62rem; }
.ork-form-panel__head .ork-panel-chevron { margin-left: auto; color: #7890a7; transition: transform .2s; }
.ork-form-panel__head[aria-expanded="true"] .ork-panel-chevron { transform: rotate(180deg); }
.ork-form-panel__body { padding: 14px 16px 16px; }
.ork-form-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 12px 14px; }
.ork-field { grid-column: span 4; }
.ork-field.is-half { grid-column: span 6; }
.ork-field.is-wide { grid-column: span 8; }
.ork-field.is-full { grid-column: 1 / -1; }
.ork-field .form-label {
  margin-bottom: .28rem;
  color: #53677d;
  font-size: .66rem;
  font-weight: 700;
}
.ork-field .required { color: #d92d3f; }
.ork-field .form-control,
.ork-field .form-select {
  min-height: 37px;
  color: #25384e;
  background-color: #fff;
  border-color: #ccd6e1;
  border-radius: 5px;
  font-size: .73rem;
}
.ork-field textarea.form-control { min-height: 76px; }
.ork-field .form-control:focus,
.ork-field .form-select:focus { border-color: #0a6ed1; box-shadow: 0 0 0 2px rgba(10,110,209,.1); }
.ork-field-note { margin-top: 4px; color: #8a98a8; font-size: .59rem; }
.ork-photo-card {
  min-height: 175px;
  padding: 15px;
  background: #f7f9fb;
  border: 1px dashed #bdc9d5;
  border-radius: 7px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  text-align: center;
}
.ork-photo-preview {
  width: 82px;
  height: 82px;
  margin-bottom: 9px;
  color: #0a6ed1;
  background: #e4f0fc;
  border: 3px solid #fff;
  border-radius: 12px;
  box-shadow: 0 2px 8px rgba(20,47,75,.12);
  display: grid;
  place-items: center;
  font-size: 1.35rem;
  font-weight: 800;
}
.ork-photo-preview img {
  width: 100%;
  height: 100%;
  border-radius: 10px;
  object-fit: cover;
}
.ork-form-panel__body--with-photo {
  display: grid;
  grid-template-columns: 184px minmax(0, 1fr);
  gap: 14px;
  align-items: start;
}
.ork-photo-card--left {
  min-height: 100%;
  justify-content: flex-start;
  position: sticky;
  top: 88px;
}
.ork-photo-card label { color: #0a6ed1; cursor: pointer; font-size: .68rem; font-weight: 700; }
.ork-photo-card input { display: none; }
.ork-line-tiles-toolbar {
  margin-bottom: 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  color: #6d7c8d;
  font-size: .68rem;
}
.ork-line-tiles {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 12px;
}
.ork-line-tile {
  min-height: 116px;
  padding: 12px;
  color: #172033;
  background: linear-gradient(180deg, #fff 0%, #f8fafc 100%);
  border: 1px solid #dce4ec;
  border-left: 4px solid #0a6ed1;
  border-radius: 10px;
  box-shadow: 0 8px 18px rgba(16, 35, 60, .055);
  display: grid;
  grid-template-columns: 18px minmax(0, 1fr) auto;
  gap: 10px;
  cursor: pointer;
  transition: .16s ease;
}
.ork-line-tile:hover,
.ork-line-tile:focus {
  transform: translateY(-1px);
  border-color: #9fc6ed;
  box-shadow: 0 12px 26px rgba(10, 110, 209, .12);
  outline: none;
}
.ork-line-tile__grab {
  color: #9aa8b7;
  display: grid;
  place-items: center;
}
.ork-line-tile__title {
  margin-bottom: 10px;
  color: #10243c;
  font-size: .82rem;
  font-weight: 800;
}
.ork-line-tile__metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}
.ork-line-tile__metrics small {
  display: block;
  color: #8290a2;
  font-size: .56rem;
  font-weight: 700;
  text-transform: uppercase;
}
.ork-line-tile__metrics strong {
  display: block;
  color: #243b55;
  font-size: .72rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ork-line-tile__status {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: space-between;
  gap: 8px;
}
.ork-line-tile__status span {
  padding: .28rem .45rem;
  color: #0a6ed1;
  background: #eaf4ff;
  border-radius: 999px;
  font-size: .62rem;
  font-weight: 800;
  white-space: nowrap;
}
@media (max-width: 767.98px) {
  .ork-form-panel__body--with-photo { grid-template-columns: 1fr; }
  .ork-photo-card--left { position: static; min-height: 150px; }
  .ork-line-tile { grid-template-columns: minmax(0,1fr); }
  .ork-line-tile__grab { display: none; }
  .ork-line-tile__status { flex-direction: row; align-items: center; }
}

/* Arborescence premium — Paramètres & Administration */
.ork-premium-tree {
  background: #fff;
  border: 1px solid #dfe6ee;
  border-radius: 12px;
  box-shadow: 0 10px 28px rgba(16, 35, 60, .06);
  overflow: hidden;
}
.ork-premium-tree__head {
  min-height: 52px;
  padding: .75rem 1rem;
  color: #fff;
  background: var(--header-slate, #486381);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.ork-premium-tree__head h6 { margin: 0; font-size: .86rem; font-weight: 800; }
.ork-premium-tree__head small { color: rgba(255,255,255,.72); }
.ork-premium-tree__body {
  padding: 14px;
  display: grid;
  gap: 12px;
}
.ork-tree-node {
  position: relative;
  padding: 12px;
  background: linear-gradient(180deg,#fff 0%,#f8fafc 100%);
  border: 1px solid #e0e7ef;
  border-radius: 10px;
}
.ork-tree-node::before {
  content: "";
  position: absolute;
  left: 24px;
  top: 44px;
  bottom: -13px;
  width: 1px;
  background: #d9e3ee;
}
.ork-tree-node:last-child::before { display: none; }
.ork-tree-node__row {
  display: flex;
  align-items: center;
  gap: 10px;
}
.ork-tree-node__icon {
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
  color: #0a6ed1;
  background: #eaf4ff;
  border: 1px solid #d2e6fb;
  border-radius: 9px;
  display: grid;
  place-items: center;
}
.ork-tree-node__title { min-width: 0; flex: 1; }
.ork-tree-node__title strong { display:block; color:#10243c; font-size:.78rem; }
.ork-tree-node__title span { color:#748397; font-size:.63rem; }
.ork-tree-node__metric {
  padding: .25rem .48rem;
  color: #0a6ed1;
  background: #eaf4ff;
  border-radius: 999px;
  font-size: .62rem;
  font-weight: 800;
  white-space: nowrap;
}
.ork-tree-children {
  margin: 10px 0 0 24px;
  padding-left: 18px;
  border-left: 1px dashed #ccd8e4;
  display: grid;
  gap: 8px;
}
.ork-tree-child {
  padding: 9px 10px;
  background: #fff;
  border: 1px solid #e6ecf2;
  border-radius: 8px;
  display: flex;
  align-items: center;
  gap: 9px;
}
.ork-tree-child i { width: 18px; color: #6e7e90; text-align: center; }
.ork-tree-child span { flex: 1; color: #263a52; font-size: .7rem; font-weight: 700; }
.ork-tree-child small { color: #7b8796; font-size: .61rem; }
.ork-tree-child:hover {
  border-color: #acd0f3;
  background: #f4f9ff;
}
.ork-summary-card {
  margin-bottom: 12px;
  background: #fff;
  border: 1px solid #dce3ea;
  border-radius: 8px;
  overflow: hidden;
}
.ork-summary-card__head {
  min-height: 43px;
  padding: .68rem .85rem;
  color: #fff;
  background: #3c5874;
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: .75rem;
  font-weight: 750;
}
.ork-summary-card__body { padding: .8rem .9rem; }
.ork-summary-row { padding: .48rem 0; border-bottom: 1px solid #edf0f3; display: flex; justify-content: space-between; gap: 12px; font-size: .68rem; }
.ork-summary-row:last-child { border-bottom: 0; }
.ork-summary-row span { color: #718096; }
.ork-summary-row strong { color: #24384f; text-align: right; }
.ork-progress-line { position: relative; margin: 11px 2px 4px; height: 3px; background: #d8e0e8; }
/* Barre d'avancement : largeur pilotee par --pct (posee par la page selon
   l'etape courante). 0 par defaut : une barre remplie a 72 % en dur
   affichait un faux avancement des l'ouverture (audit 26/07/2026). */
.ork-progress-line > span { position: absolute; inset: 0 auto 0 0; width: calc(var(--pct, 0) * 1%); background: #18864b; }
.ork-progress-steps { display: grid; grid-template-columns: repeat(4,1fr); }
.ork-progress-step { position: relative; padding-top: 15px; color: #7b8998; font-size: .56rem; text-align: center; }
.ork-progress-step::before {
  content: "";
  position: absolute;
  top: -4px;
  left: calc(50% - 5px);
  width: 10px;
  height: 10px;
  background: #fff;
  border: 2px solid #a8b5c2;
  border-radius: 50%;
}
.ork-progress-step.is-done { color: #187349; font-weight: 700; }
.ork-progress-step.is-done::before { background: #18864b; border-color: #18864b; }
.ork-dropzone {
  padding: 14px;
  color: #66788c;
  background: #fafbfc;
  border: 1px dashed #bcc8d4;
  border-radius: 6px;
  font-size: .67rem;
  text-align: center;
}
.ork-file-row { margin-top: 8px; padding: 8px 9px; background: #f6f8fa; border-radius: 5px; display: flex; align-items: center; gap: 8px; font-size: .64rem; }
.ork-file-row i { color: #e0364b; }
.ork-file-row span { flex: 1; }
.ork-history { margin: 0; padding: 0; list-style: none; }
.ork-history li { position: relative; padding: 0 0 13px 21px; color: #40566d; font-size: .64rem; }
.ork-history li::before { content:""; position:absolute; left:4px; top:4px; width:7px; height:7px; background:#0a6ed1; border-radius:50%; }
.ork-history li::after { content:""; position:absolute; left:7px; top:13px; bottom:0; width:1px; background:#d9e1e8; }
.ork-history li:last-child::after { display:none; }
.ork-history time { display:block; margin-top:2px; color:#8b98a6; font-size:.56rem; }
.ork-form-footer {
  position: sticky;
  bottom: 8px;
  z-index: 4;
  margin-top: 14px;
  padding: 10px 12px;
  background: rgba(255,255,255,.96);
  border: 1px solid #d7e0e8;
  border-radius: 8px;
  box-shadow: 0 7px 24px rgba(15,35,58,.12);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.ork-form-footer__state { color:#687b8e; font-size:.64rem; }
.ork-form-footer__actions { display:flex; align-items:center; gap:7px; }
@media (max-width: 1199.98px) {
  .ork-object-layout { grid-template-columns: minmax(0,1fr) 270px; }
}
@media (max-width: 991.98px) {
  .ork-object-layout { grid-template-columns: 1fr; }
  .ork-object-aside { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
  .ork-summary-card { margin-bottom:0; }
}
@media (max-width: 767.98px) {
  .ork-object-header { align-items:flex-start; flex-wrap:wrap; }
  .ork-object-avatar { display:none; }
  .ork-object-actions { width:100%; justify-content:flex-start; }
  .ork-field, .ork-field.is-half, .ork-field.is-wide { grid-column:1/-1; }
  .ork-object-aside { grid-template-columns:1fr; }
  .ork-form-footer { align-items:stretch; flex-direction:column; }
  .ork-form-footer__actions { justify-content:flex-end; }
}

/* ==========================================================================
   STANDARD VUE PREMIUM — grille métier + calendrier
   ========================================================================== */
.ork-table-card {
  border: 1px solid #d7dee8 !important;
  border-radius: 6px !important;
  box-shadow: 0 8px 24px rgba(7,26,51,.06) !important;
}
.ork-table-card .table-toolbar.ork-grid-toolbar {
  min-height: 60px;
  padding: 11px 18px 11px 20px;
  color: #fff !important;
  background: var(--header-slate, #486381) !important;
  border: 0 !important;
  border-bottom: 1px solid rgba(255,255,255,.16) !important;
  border-radius: 6px 6px 0 0 !important;
}
.ork-table-card .ork-grid-toolbar .tt-title {
  color: #fff !important;
  font-size: 1.12rem;
  font-weight: 500;
}
.ork-table-card .ork-grid-toolbar .tt-title strong { font-weight: 800; }
.ork-table-card .ork-grid-toolbar .tt-actions { gap: 7px; }
.ork-table-card .ork-grid-toolbar .tt-search {
  width: min(360px, 30vw) !important;
  min-width: 260px;
  height: 34px;
  background: #fff !important;
  border: 1px solid rgba(255,255,255,.72) !important;
  box-shadow: 0 1px 4px rgba(0,0,0,.14);
}
.ork-table-card .ork-grid-toolbar .tt-search:focus-within {
  border-color: #fff !important;
  box-shadow: 0 0 0 2px rgba(255,255,255,.34), 0 3px 10px rgba(0,0,0,.16);
}
.ork-search-clear {
  width: 22px;
  height: 22px;
  padding: 0;
  color: #6c7c8e;
  background: #eef3f8;
  border: 0;
  border-radius: 50%;
  display: none;
  place-items: center;
  font-size: .72rem;
}
.ork-search-clear.is-visible { display: grid; }
.ork-search-clear:hover { color: #0a6ed1; background: #dcecff; }
.ork-table-card .ork-grid-toolbar .tt-actions .btn,
.ork-table-card .ork-grid-toolbar .ork-add,
.ork-table-card .ork-grid-toolbar .ork-open-filters,
.ork-table-card .ork-grid-toolbar .ork-columns,
.ork-table-card .ork-grid-toolbar .ork-tool,
.ork-table-card .ork-grid-toolbar .ork-delete {
  height: 34px;
  min-height: 34px;
  color: #fff !important;
  background: transparent !important;
  border: 1px solid rgba(255,255,255,.68) !important;
  border-radius: 4px;
  box-shadow: none !important;
}
.ork-table-card .ork-grid-toolbar .tt-actions .btn:hover,
.ork-table-card .ork-grid-toolbar .tt-actions .btn:focus,
.ork-table-card .ork-grid-toolbar .ork-open-filters.is-active {
  color: var(--header-slate, #486381) !important;
  background: #fff !important;
  border-color: #fff !important;
}
.ork-table-card .ork-grid-toolbar .ork-add {
  color: #fff !important;
  background: #0a6ed1 !important;
  border-color: #69b7ff !important;
}
.ork-table-card .ork-grid-toolbar .ork-add:hover {
  color: #0a6ed1 !important;
  background: #fff !important;
  border-color: #fff !important;
}
.ork-table-card .ork-filter-count:not(:empty) { border-color: var(--header-slate, #486381); }
.ork-grid-group-line {
  min-height: 42px;
  padding: 0 18px;
  color: #66788d;
  background: #fff;
  border-bottom: 1px solid #dbe1e8;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.ork-group-drop {
  height: 26px;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: #5d6f84;
  font-size: .72rem;
}
.ork-group-drop i { color: #1c2c3f; }
.ork-grid-counter {
  color: #0b1f36;
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  font-size: .76rem;
}
.ork-grid-counter strong { font-size: .9rem; }
.ork-table-card .table-responsive {
  padding: 0 !important;
  border-radius: 0 !important;
}
.ork-table-card .ork-premium-table {
  border-collapse: separate !important;
  border-spacing: 0 !important;
  table-layout: auto;
}
.ork-table-card .ork-premium-table thead th {
  height: 44px;
  padding: 8px 11px !important;
  color: #3f526d !important;
  background: #f7f9fb !important;
  border-top: 1px solid #eef2f6 !important;
  border-right: 1px solid #dfe5ec !important;
  border-bottom: 1px solid #cfd8e3 !important;
  font-size: .72rem !important;
  font-weight: 800 !important;
  text-transform: uppercase;
  letter-spacing: .015em;
}
.ork-table-card .ork-premium-table thead th:last-child { border-right: 0 !important; }
.ork-table-card .ork-premium-table tbody td,
.ork-table-card .ork-premium-table tbody th {
  height: 38px !important;
  padding: 6px 11px !important;
  color: #324762 !important;
  border-right: 1px solid #edf1f5 !important;
  border-bottom: 1px solid #e4e9ef !important;
  font-size: .74rem !important;
}
.ork-table-card .ork-premium-table tbody td:last-child,
.ork-table-card .ork-premium-table tbody th:last-child { border-right: 0 !important; }
.ork-table-card .ork-premium-table tbody tr:nth-child(odd) > * { background: #fff !important; }
.ork-table-card .ork-premium-table tbody tr:nth-child(even) > * { background: #fbfcfd !important; }
.ork-table-card .ork-premium-table tbody tr:hover > * {
  background: #eaf4ff !important;
  box-shadow: inset 0 1px 0 #cde5ff, inset 0 -1px 0 #cde5ff;
}
.ork-table-card .ork-actions {
  border-left: 1px solid #d7dee8;
  background: #fff !important;
}
.ork-row-action {
  width: 30px;
  height: 30px;
  margin-left: 3px;
  color: #0a6ed1 !important;
  background: #fff !important;
  border: 1px solid #0a6ed1 !important;
  border-radius: 4px !important;
  display: inline-grid !important;
  place-items: center;
  text-decoration: none !important;
  line-height: 1;
}
.ork-row-action:hover {
  color: #fff !important;
  background: #0a6ed1 !important;
}
.ork-row-action.del:hover {
  color: #fff !important;
  background: #c92033 !important;
  border-color: #c92033 !important;
}
.ork-datatable .dataTables_paginate,
.ork-datatable .ork-table-footer-tools {
  padding-bottom: 14px !important;
}
.ork-column-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 8px;
}
.ork-column-option {
  padding: 9px 10px;
  background: #f7f9fb;
  border: 1px solid #dce3eb;
  border-radius: 5px;
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: .82rem;
}

.ork-calendar-popover {
  width: 292px;
  padding: 12px;
  position: fixed;
  z-index: 2000;
  display: none;
  color: #0b1f36;
  background: #fff;
  border: 1px solid #c9d5e2;
  border-radius: 10px;
  box-shadow: 0 22px 60px rgba(7,26,51,.28);
}
.ork-calendar-popover.is-open { display: block; }
.ork-calendar-head {
  height: 36px;
  padding: 0 2px 8px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.ork-calendar-head strong { font-size: .9rem; }
.ork-calendar-head button,
.ork-calendar-foot button {
  color: #0a6ed1;
  background: #f3f8ff;
  border: 1px solid #c7def8;
  border-radius: 6px;
}
.ork-calendar-head button {
  width: 30px;
  height: 28px;
}
.ork-calendar-head button:hover,
.ork-calendar-foot button:hover {
  color: #fff;
  background: #0a6ed1;
  border-color: #0a6ed1;
}
.ork-calendar-days,
.ork-calendar-grid {
  display: grid;
  grid-template-columns: repeat(7,1fr);
  gap: 4px;
}
.ork-calendar-days span {
  padding: 5px 0;
  color: #6a7b90;
  font-size: .66rem;
  font-weight: 800;
  text-align: center;
}
.ork-calendar-grid button {
  height: 32px;
  color: #263a52;
  background: #fff;
  border: 1px solid transparent;
  border-radius: 7px;
  font-size: .78rem;
}
.ork-calendar-grid button:hover {
  color: #0a6ed1;
  background: #eaf4ff;
  border-color: #b9dafc;
}
.ork-calendar-grid button.is-muted { color: #a6b1bf; }
.ork-calendar-grid button.is-today { border-color: #0a6ed1; font-weight: 800; }
.ork-calendar-grid button.is-selected {
  color: #fff;
  background: #0a6ed1;
  border-color: #0a6ed1;
  box-shadow: 0 5px 12px rgba(10,110,209,.25);
}
.ork-calendar-foot {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid #edf1f5;
  display: flex;
  justify-content: space-between;
}
.ork-calendar-foot button {
  padding: 5px 9px;
  font-size: .72rem;
  font-weight: 700;
}

@media (max-width: 1199.98px) {
  .ork-table-card .ork-grid-toolbar .tt-search { width: min(100%, 330px) !important; }
}
@media (max-width: 767.98px) {
  .ork-table-card .table-toolbar.ork-grid-toolbar { align-items: stretch; }
  .ork-table-card .ork-grid-toolbar .tt-actions { justify-content: flex-start; }
  .ork-table-card .ork-grid-toolbar .tt-search { min-width: 100%; }
  .ork-grid-group-line { align-items: flex-start; flex-direction: column; padding: 9px 14px; }
  .ork-column-grid { grid-template-columns: 1fr; }
}

/* Ajustements grille métier : interactions ligne, moins de hauteur, sans boutons d'action */
.ork-table-card .table-toolbar.ork-grid-toolbar {
  min-height: 50px !important;
  padding: 8px 14px 8px 18px !important;
}
.ork-table-card .ork-grid-toolbar .tt-title { font-size: 1.02rem !important; }
.ork-table-card .ork-grid-toolbar .tt-search,
.ork-table-card .ork-grid-toolbar .tt-actions .btn,
.ork-table-card .ork-grid-toolbar .ork-add,
.ork-table-card .ork-grid-toolbar .ork-open-filters,
.ork-table-card .ork-grid-toolbar .ork-columns,
.ork-table-card .ork-grid-toolbar .ork-tool,
.ork-table-card .ork-grid-toolbar .ork-delete {
  height: 30px !important;
  min-height: 30px !important;
}
.ork-table-card .ork-grid-toolbar .tt-actions .btn {
  padding: 0 .62rem !important;
  font-size: .72rem !important;
}
.ork-table-card .ork-grid-toolbar .ork-add {
  color: #0a6ed1 !important;
  background: #fff !important;
  border-color: #fff !important;
}
.ork-table-card .ork-grid-toolbar .ork-add:hover {
  color: #fff !important;
  background: #0a6ed1 !important;
  border-color: #69b7ff !important;
}
.ork-grid-group-line { display: none !important; }
.ork-table-card .ork-premium-table thead th {
  height: 36px !important;
  padding-top: 5px !important;
  padding-bottom: 5px !important;
}
.ork-table-card .ork-premium-table tbody td,
.ork-table-card .ork-premium-table tbody th {
  height: 31px !important;
  padding-top: 4px !important;
  padding-bottom: 4px !important;
  font-size: .71rem !important;
}
.ork-table-card .ork-premium-table tbody tr { cursor: pointer; }
.ork-table-card .ork-premium-table tbody tr.is-selected > * {
  background: #dcecff !important;
  box-shadow: inset 0 1px 0 #bad8fb, inset 0 -1px 0 #bad8fb;
}
.ork-table-card .ork-check {
  position: relative;
  width: 42px !important;
  min-width: 42px !important;
}
.ork-table-card tbody .ork-check::before {
  content: "⋮⋮";
  position: absolute;
  left: 5px;
  top: 50%;
  transform: translateY(-50%);
  opacity: 0;
  color: #0a6ed1;
  font-size: .82rem;
  font-weight: 800;
  letter-spacing: -3px;
}
.ork-table-card tbody tr:hover .ork-check::before,
.ork-table-card tbody tr.is-selected .ork-check::before {
  opacity: .75;
}
.ork-table-card tbody .ork-check .form-check-input {
  position: relative;
  z-index: 1;
}
.ork-row-menu {
  width: 218px;
  padding: 6px;
  position: fixed;
  z-index: 2200;
  opacity: 0;
  transform: translateY(4px) scale(.98);
  color: #0b1f36;
  background: #fff;
  border: 1px solid #cbd7e4;
  border-radius: 8px;
  box-shadow: 0 18px 50px rgba(7,26,51,.24);
  transition: opacity .12s ease, transform .12s ease;
}
.ork-row-menu.is-open {
  opacity: 1;
  transform: translateY(0) scale(1);
}
.ork-row-menu button {
  width: 100%;
  padding: 8px 9px;
  color: #263a52;
  background: transparent;
  border: 0;
  border-radius: 6px;
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: .78rem;
  text-align: left;
}
.ork-row-menu button i {
  width: 16px;
  color: #0a6ed1;
  text-align: center;
}
.ork-row-menu button:hover {
  color: #0a6ed1;
  background: #eaf4ff;
}
.ork-row-menu button.is-danger,
.ork-row-menu button.is-danger i { color: #c92033; }
.ork-row-menu button.is-danger:hover {
  color: #fff;
  background: #c92033;
}
.ork-row-menu button.is-danger:hover i { color: #fff; }

/* ── Loader de tableau (transition statique → données API) — porté de maquette-base ── */
.ork-table-loader {
  position: absolute;
  inset: 0;
  background: rgba(255,255,255,.93);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 20;
  border-radius: inherit;
  min-height: 180px;
  transition: opacity .2s;
}
.ork-table-loader.is-error { align-items: center; justify-content: center; }

/* ═══════════════════════════════════════════════════════════════
   ASSISTANT PAR ETAPES (assistant.js) — fil d'Ariane a pastilles
   POURQUOI : un seul patron visuel pour toutes les saisies longues
   (inscription eleve, notes, encaissement, demande d'achat).
════════════════════════════════════════════════════════════════ */
.ork-assistant-fil {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .35rem;
  margin-bottom: 1.1rem;
  flex-wrap: nowrap;
}
.ork-assistant-pas {
  display: flex;
  align-items: center;
  gap: .45rem;
  color: #94a3b8;
  font-size: .8rem;
  font-weight: 600;
  white-space: nowrap;
}
.ork-assistant-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.9rem;
  height: 1.9rem;
  border-radius: 50%;
  border: 2px solid #cbd5e1;
  background: #fff;
  color: #64748b;
  font-size: .8rem;
  flex-shrink: 0;
}
.ork-assistant-pas.is-active { color: var(--navy); }
.ork-assistant-pas.is-active .ork-assistant-num {
  border-color: #2563eb;
  background: #2563eb;
  color: #fff;
}
.ork-assistant-pas.is-done { color: #15803d; }
.ork-assistant-pas.is-done .ork-assistant-num {
  border-color: #15803d;
  background: #dcfce7;
  color: #15803d;
}
.ork-assistant-trait {
  flex: 1 1 1.2rem;
  min-width: .8rem;
  height: 2px;
  background: #e2e8f0;
  border-radius: 2px;
}
.ork-assistant-pied {
  display: flex;
  justify-content: space-between;
  gap: .5rem;
  margin-top: 1rem;
  padding-top: .85rem;
  border-top: 1px solid #e9edf3;
}
.ork-assistant-pied [data-assistant-suiv],
.ork-assistant-pied [data-assistant-fin] { margin-left: auto; }
/* Recapitulatif : lignes libellee/valeur, reutilise par toutes les pages */
.ork-recap-ligne {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: .4rem 0;
  border-bottom: 1px dashed #e2e8f0;
  font-size: .88rem;
}
.ork-recap-ligne:last-child { border-bottom: 0; }
.ork-recap-ligne span  { color: #64748b; }
.ork-recap-ligne strong { color: var(--navy); text-align: right; }
/* Mobile 414px : libelle sous le numero pour ne pas deborder */
@media (max-width: 575px) {
  .ork-assistant-pas { flex-direction: column; gap: .2rem; font-size: .62rem; }
  .ork-assistant-trait { margin-bottom: 1rem; }
}

/* ============================================================
   #39 Cloisonnement UI par permissions (2026-07-25)
   .ork-perm-refuse : pose par rbac-ui.js sur tout element [data-perm] dont la
   permission n'est pas detenue. Le !important resiste aux .show() de jQuery
   (le bouton Supprimer du canon se re-affiche a la selection de lignes).
   .ork-sans-delete : pose sur la <table> quand ressource:delete manque ->
   masque la poubelle de chaque ligne sans toucher au JS du canon.
   ============================================================ */
.ork-perm-refuse { display: none !important; }
.ork-sans-delete .ork-row-action.del { display: none !important; }

/* ============================================================
   Respiration sous le contenu, au-dessus du pied de page (2026-07-25)
   POURQUOI : le theme fige le pied de page en bas (footer.border-top en
   flex 38px) et fait defiler le contenu DANS .content-area ; en cours de
   defilement, le dernier bloc visible vient buter net contre le trait du
   pied de page — l'espacement inferieur a disparu. Un padding-bottom ne
   suffit pas (il ne se voit qu'une fois defile tout en bas) : on pose une
   MARGE sous la zone qui defile, donc un liseret de fond TOUJOURS visible
   entre le contenu et le pied de page, cale sur la gouttiere du design
   system (2 x --ork-gouttiere = 10px, proche des 12px que le canon tableau
   reserve deja au meme endroit).
   PAGES A TABLEAU CANON EXCLUES (:has) : ajusterHauteurTableau (table-canon
   .js) cale la hauteur du tableau sur la position REELLE du footer et
   reserve deja sa respiration de 12px ; une marge supplementaire ici
   rognerait la pagination (double marge). :has() est deja employe ailleurs
   (shared.css .card:has, commun/colonnes.css).
   ============================================================ */
body:not(:has(.ork-table-card)) .content-area {
  margin-bottom: calc(var(--ork-gouttiere, 5px) * 2);
}
