/* CALIGEST UI : fondations et composants partagés. Charger après les styles métier. */
:root {
  --cg-primary: #315783;
  --cg-primary-600: #244465;
  --cg-primary-soft: #edf2f8;
  --cg-primary-soft-bd: #b5c6db;
  --cg-link: #315783;
  --cg-ink: #15213a;
  --cg-text: #243245;
  --cg-muted: #44546a;
  --cg-line: #c6d2e0;
  --cg-line-2: #dbe3ec;
  --cg-field: #b9c7d7;
  --cg-radius: 8px;
  --ui-text: var(--cg-ink);
  --ui-muted: var(--cg-muted);
  --ui-border: var(--cg-line);
  --ui-border-soft: var(--cg-line-2);
  --ui-surface: var(--cg-surface);
  --ui-surface-soft: #f2f5f9;
  --ui-primary: var(--cg-primary);
  --ui-primary-hover: var(--cg-primary-600);
  --ui-primary-soft: var(--cg-primary-soft);
  --ui-focus: #d69848;
  --ui-danger: #b34242;
  --ui-danger-soft: #fcf0f0;
  --ui-radius-sm: 6px;
  --ui-radius: 8px;
  --ui-radius-lg: 12px;
  --ui-radius-xl: 16px;
  --ui-control-h: 38px;
  --ui-control-sm: 32px;
  --ui-space-1: 4px;
  --ui-space-2: 8px;
  --ui-space-3: 12px;
  --ui-space-4: 16px;
  --ui-space-5: 20px;
  --ui-space-6: 24px;
  --ui-shadow-sm: 0 1px 3px #182b4512;
  --ui-shadow-floating: 0 16px 40px #182b451a, 0 2px 8px #182b4508;
  --ui-shadow-modal: 0 24px 72px #182b4538, 0 4px 16px #182b4514;
  --ui-overlay-bg: #15223a;
  --ui-overlay-opacity: .36;
  --ui-transition: 150ms ease;
  --bs-body-font-family: var(--cg-font);
  --bs-body-color: var(--cg-text);
  --bs-border-color: var(--ui-border);
  --bs-secondary-color: var(--ui-muted);
  --bs-secondary-rgb: 68, 84, 106;
  --bs-link-color: var(--cg-link);
  --bs-link-color-rgb: 49, 87, 131;
  --bs-link-hover-color: var(--ui-primary-hover);
  --bs-link-hover-color-rgb: 36, 68, 101;
  --bs-primary: var(--ui-primary);
}

/* Une même échelle de texte, de contrôles et d’états. */
body { color: var(--cg-text); line-height: 1.45; }
.page-title { font-size: 24px; font-weight: 700; color: var(--ui-text); }
.page-count, .toolbar__label, .sheet-field-hint { color: var(--ui-muted); font-size: 13px; }
.btn, .modal .btn, .page-actions .btn, .users-foot .btn-tool {
  --bs-btn-font-family: var(--cg-font);
  --bs-btn-font-size: 13px;
  --bs-btn-font-weight: 500;
  --bs-btn-line-height: 1.4;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--ui-space-2);
  min-height: var(--ui-control-h);
  height: auto;
  padding: 8px 14px;
  border-radius: var(--ui-radius);
  font-size: 13px;
  font-weight: 500;
  line-height: 1.4;
  box-shadow: none;
  transition: color var(--ui-transition), background-color var(--ui-transition), border-color var(--ui-transition);
}
.btn i { font-size: 15px; color: inherit; }
.btn.btn-sm, .modal .btn.btn-sm { min-height: var(--ui-control-sm); padding: 5px 10px; font-size: 12px; border-radius: var(--ui-radius-sm); }
.btn-primary, .modal .btn-primary, .btn-split .btn {
  --bs-btn-bg: var(--ui-primary);
  --bs-btn-border-color: var(--ui-primary);
  --bs-btn-hover-bg: var(--ui-primary-hover);
  --bs-btn-hover-border-color: var(--ui-primary-hover);
  --bs-btn-active-bg: var(--ui-primary-hover);
  --bs-btn-active-border-color: var(--ui-primary-hover);
  --bs-btn-disabled-bg: var(--ui-primary);
  --bs-btn-disabled-border-color: var(--ui-primary);
  color: #fff; background: var(--ui-primary); border-color: var(--ui-primary); box-shadow: var(--ui-shadow-sm);
}
.btn-primary:hover, .btn-primary:active, .modal .btn-primary:hover { color: #fff; background: var(--ui-primary-hover); border-color: var(--ui-primary-hover); }
.btn-secondary, .btn-outline-secondary, .btn-outline-primary, .btn-tool, .btn-back, .modal .btn-outline-secondary {
  --bs-btn-color: var(--cg-text);
  --bs-btn-border-color: var(--ui-border);
  --bs-btn-hover-color: var(--ui-text);
  --bs-btn-hover-bg: var(--ui-primary-soft);
  --bs-btn-hover-border-color: #b6c6d9;
  --bs-btn-active-color: var(--ui-text);
  --bs-btn-active-bg: var(--ui-primary-soft);
  --bs-btn-active-border-color: #b6c6d9;
  color: var(--cg-text); background: var(--ui-surface); border-color: var(--ui-border);
}
.btn-outline-primary { color: var(--ui-primary); }
.btn-secondary:hover, .btn-outline-secondary:hover, .btn-outline-primary:hover, .btn-tool:hover, .btn-back:hover, .modal .btn-outline-secondary:hover {
  color: var(--ui-text); background: var(--ui-primary-soft); border-color: #b6c6d9;
}
.btn-danger { --bs-btn-bg: var(--ui-danger); --bs-btn-border-color: var(--ui-danger); --bs-btn-hover-bg: #963535; --bs-btn-hover-border-color: #963535; }
.btn-outline-danger { --bs-btn-color: var(--ui-danger); --bs-btn-border-color: #e6c3c3; --bs-btn-hover-color: var(--ui-danger); --bs-btn-hover-bg: var(--ui-danger-soft); --bs-btn-hover-border-color: #d5aaaa; --bs-btn-active-color: var(--ui-danger); --bs-btn-active-bg: var(--ui-danger-soft); --bs-btn-active-border-color: #d5aaaa; }
.btn-ghost { background: transparent; border-color: transparent; color: var(--ui-muted); }
.btn-ghost:hover { background: var(--ui-primary-soft); color: var(--ui-primary); }
.btn-view, .btn-view:hover, .btn-view.show { color: var(--ui-primary); background: var(--ui-primary-soft); border-color: var(--cg-primary-soft-bd); font-weight: 500; }
.btn.btn-icon { width: var(--ui-control-h); height: var(--ui-control-h); padding: 0; color: var(--ui-muted); background: var(--ui-surface); border-color: var(--ui-border); }
.btn.btn-icon:hover { color: var(--ui-primary); background: var(--ui-primary-soft); border-color: #b6c6d9; }
.btn-split .btn { height: var(--ui-control-h); padding: 0 14px; font-size: 13px; font-weight: 500; }
.btn-split .btn:first-child { border-radius: var(--ui-radius) 0 0 var(--ui-radius); }
.btn-split .btn-split__caret { border-radius: 0 var(--ui-radius) var(--ui-radius) 0; }
.btn:focus-visible, .modal .btn:focus-visible, .row-action:focus-visible, .row-cart:focus-visible,
.dashboard-icon-button:focus-visible, .dashboard-edit-done:focus-visible, .dashboard-card__controls button:focus-visible,
.column-search:focus-visible, .certificate-sort:focus-visible, .sheet-hint:focus-visible, .btn-star:focus-visible,
.cart-remove:focus-visible, .cart-deselect:focus-visible, .sector-info-button:focus-visible {
  outline: 2px solid var(--ui-focus); outline-offset: 3px; box-shadow: none;
}
.btn:disabled, .btn.disabled, button:disabled { opacity: .45; }
.row-action, .row-cart, .dashboard-icon-button, .dashboard-edit-done, .dashboard-card__controls button, .cart-remove, .cart-deselect { border-radius: var(--ui-radius); transition: color var(--ui-transition), background-color var(--ui-transition), border-color var(--ui-transition); }
.row-action { width: var(--ui-control-sm); height: var(--ui-control-sm); color: var(--ui-muted); border-color: var(--ui-border); background: var(--ui-surface); }
.row-action:hover, .row-action[aria-expanded="true"], .dashboard-icon-button:hover, .dashboard-card__controls button:hover { color: var(--ui-primary); background: var(--ui-primary-soft); border-color: var(--cg-primary-soft-bd); }
.dashboard-edit-done { color: var(--ui-primary); border-color: var(--ui-border); }
.table-help { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; padding: 0; border: 0; border-radius: var(--ui-radius-sm); color: var(--ui-muted); background: transparent; font-size: 12px; vertical-align: middle; }
.table-help:hover { color: var(--ui-primary); background: var(--ui-primary-soft); }
.table-help:focus-visible { outline: 2px solid var(--ui-focus); outline-offset: 2px; }
.toolbar { gap: var(--ui-space-3); }
.toolbar__left, .toolbar__right, .sheet-toolbar { gap: var(--ui-space-2); }

/* Les menus du bandeau, de la table et des formulaires partagent la même surface. */
.dropdown-menu, .app-header .dropdown-menu, .app-header .app-nav__menu.cg-menu,
.ctx-menu, .search-suggestions, .sector-picker__panel {
  border: 1px solid var(--ui-border); border-radius: var(--ui-radius-lg); padding: 6px;
  background: var(--ui-surface); color: var(--cg-text); box-shadow: var(--ui-shadow-floating); font-size: 13px;
}
.dropdown-item, .app-header .dropdown-item, .app-header .app-nav__menu.cg-menu .dropdown-item, .ctx-menu__item {
  min-height: 34px; padding: 7px 10px; gap: var(--ui-space-2); border-radius: var(--ui-radius-sm);
  color: var(--cg-text); font-size: 13px; font-weight: 500; line-height: 1.35;
}
.dropdown-item:hover, .dropdown-item:focus, .app-header .dropdown-item:hover,
.app-header .app-nav__menu.cg-menu .dropdown-item:hover, .app-header .app-nav__menu.cg-menu .dropdown-item:focus,
.ctx-menu__item:hover, .ctx-menu__item:focus-visible { background: var(--ui-primary-soft); color: var(--ui-primary); }
.dropdown-item:focus-visible, .ctx-menu__item:focus-visible, .search-suggestion:focus-visible { outline: 2px solid var(--ui-focus); outline-offset: -2px; box-shadow: none; }
.dropdown-item.active, .dropdown-item:active { background: var(--ui-primary); color: #fff; }
.dropdown-item i, .ctx-menu__item i { color: var(--ui-muted); }
.ctx-menu__item:hover i, .ctx-menu__item:focus-visible i { color: inherit; }
.ctx-menu__item--danger, .ctx-menu__item--danger i { color: var(--ui-danger); }
.ctx-menu__item--danger:hover, .ctx-menu__item--danger:focus-visible { background: var(--ui-danger-soft); color: var(--ui-danger); }
.dropdown-divider, .app-header .dropdown-divider, .ctx-menu__sep { border-top: 1px solid var(--ui-border-soft); margin: 6px; }
.ctx-menu__head { border-radius: calc(var(--ui-radius-lg) - 1px) calc(var(--ui-radius-lg) - 1px) 0 0; }
.app-header .app-nav__menu.cg-menu .cg-menu-section { color: var(--ui-muted); padding: 7px 10px 4px; letter-spacing: .06em; }
.cg-menu-icon { border-radius: var(--ui-radius-sm); background: var(--ui-surface-soft); color: var(--ui-muted); }
.app-header .app-nav__menu.cg-menu .dropdown-item:hover .cg-menu-icon { color: var(--ui-primary); }
.cg-tooltip { --bs-tooltip-bg: var(--ui-text); --bs-tooltip-border-radius: var(--ui-radius-sm); }
.modal-backdrop { --bs-backdrop-bg: var(--ui-overlay-bg); --bs-backdrop-opacity: var(--ui-overlay-opacity); }
.offcanvas-backdrop { background-color: var(--ui-overlay-bg); }
.offcanvas-backdrop.show { opacity: var(--ui-overlay-opacity); }
.app-notice { border-radius: var(--ui-radius); box-shadow: var(--ui-shadow-floating); font-size: 13px; }

/* La recherche possède un seul bouton de validation, sans chevron ajouté. */
.app-header .global-search { border-radius: var(--ui-radius); height: var(--ui-control-h); }
.app-header .global-search .global-search__btn::after { content: none; display: none; }
.app-header .global-search .global-search__btn { width: var(--ui-control-sm); height: var(--ui-control-sm); font-size: 16px; border-radius: var(--ui-radius-sm); }
.app-header .global-search .global-search__clear { width: 26px; height: 26px; border-radius: var(--ui-radius-sm); }
.app-header .global-search:focus-within { border-color: #a8bdd5; box-shadow: 0 0 0 3px #ffffff12; }
.app-header .app-nav__list>li>a:focus-visible, .app-header .header-cart:focus-visible, .app-header .user-box__link:focus-visible { outline: 2px solid var(--ui-focus); outline-offset: -3px; }

@media(pointer:coarse) {
  .btn:not(.btn-sm), .modal .btn { min-height: 44px; }
  .btn.btn-icon, .row-action, .dashboard-icon-button, .dashboard-card__controls button { width: 44px; height: 44px; }
  .dropdown-item, .app-header .app-nav__menu.cg-menu .dropdown-item, .ctx-menu__item { min-height: 44px; }
}
@media(max-width:767.98px) {
  .users-foot__left, .users-foot__right { flex-wrap: wrap; min-width: 0; max-width: 100%; gap: var(--ui-space-2); }
  .cg-pagination { flex-wrap: wrap; }
}
@media(prefers-reduced-motion:reduce) {
  .btn, .row-action, .row-cart, .dashboard-icon-button, .dashboard-card__controls button, .app-header .app-nav__list>li>a { transition: none; }
}
@media print {
  .page-title { font-size: 21px; }
  .btn { box-shadow: none; }
}
