/*
  Bootstrap 5.3 habillé aux jetons HOOS : les variables --bs-* et les classes
  de couleur pointent vers les jetons de hoos.css. Le thème Bootstrap suit le
  système (data-bs-theme posé dans <head>), les jetons HOOS aussi.
*/
:root, [data-bs-theme=light], [data-bs-theme=dark] {
  --bs-body-font-family: var(--font-sans);
  --bs-body-bg: var(--paper);
  --bs-body-bg-rgb: 247, 246, 244;
  --bs-body-color: var(--ink);
  --bs-emphasis-color: var(--ink-deep);
  --bs-secondary-color: var(--ink-soft);
  --bs-tertiary-color: var(--ink-faint);
  --bs-secondary-bg: var(--paper-sunken);
  --bs-tertiary-bg: var(--paper-sunken);
  --bs-border-color: var(--rule);
  --bs-border-color-translucent: var(--rule);
  --bs-heading-color: var(--ink-deep);
  --bs-link-color: var(--ink-deep);
  --bs-link-color-rgb: 35, 35, 35;
  --bs-link-hover-color: var(--ink-soft);
  --bs-link-hover-color-rgb: 92, 92, 92;
  --bs-border-radius: 6px;
  --bs-border-radius-sm: 4px;
  --bs-border-radius-lg: 8px;
  --bs-primary: var(--accent);
  --bs-primary-rgb: 50, 50, 50;
  --bs-success: var(--good);
  --bs-success-rgb: 47, 107, 82;
  --bs-warning: var(--flag);
  --bs-warning-rgb: 138, 90, 18;
  --bs-danger: var(--danger);
  --bs-danger-rgb: 155, 58, 46;
  --bs-info: var(--ink-soft);
  --bs-info-rgb: 92, 92, 92;
  --bs-secondary: var(--ink-soft);
  --bs-secondary-rgb: 92, 92, 92;
  --bs-light-rgb: 237, 235, 231;
  --bs-dark-rgb: 35, 35, 35;
  --bs-focus-ring-color: var(--accent-wash);
  --bs-form-valid-color: var(--good);
  --bs-form-valid-border-color: var(--good);
  --bs-form-invalid-color: var(--danger);
  --bs-form-invalid-border-color: var(--danger);
}
[data-bs-theme=dark] {
  --bs-body-bg-rgb: 26, 26, 26;
  --bs-link-color-rgb: 255, 255, 255;
  --bs-link-hover-color-rgb: 181, 177, 171;
  --bs-primary-rgb: 240, 238, 234;
  --bs-success-rgb: 108, 179, 146;
  --bs-warning-rgb: 217, 167, 93;
  --bs-danger-rgb: 224, 138, 126;
  --bs-info-rgb: 181, 177, 171;
  --bs-secondary-rgb: 181, 177, 171;
  --bs-light-rgb: 18, 18, 18;
  --bs-dark-rgb: 255, 255, 255;
}

body { background: var(--paper); color: var(--ink); font-family: var(--font-sans); -webkit-font-smoothing: antialiased; }
h1, h2, h3, h4, h5, .h1, .h2, .h3, .h4, .h5 { font-family: var(--font-display); font-weight: 500; letter-spacing: -0.02em; color: var(--ink-deep); }
.text-dark { color: var(--ink-deep) !important; }
.text-muted { color: var(--ink-soft) !important; }

/* Barre du haut : papier, filet, H + HOOS + BOB50 CONNECT. */
.navbar.hoos-nav { background: color-mix(in srgb, var(--paper) 90%, transparent) !important; border-bottom: 1px solid var(--rule); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); --bs-navbar-toggler-border-color: var(--rule-strong); }
.hoos-nav .nav-link { color: var(--ink-soft) !important; font-size: .88rem; }
.hoos-nav .nav-link:hover, .hoos-nav .nav-link:focus { color: var(--ink-deep) !important; }

/* Cartes en relief : fond plus clair, filet en crête, ombre courte. */
.card { --bs-card-bg: var(--paper-raised); --bs-card-border-color: var(--rule); --bs-card-cap-bg: var(--paper-raised); border: 1px solid var(--rule); border-radius: 8px; box-shadow: var(--lift-1), var(--crest); }
.card-header { background: var(--paper-raised); border-bottom: 1px solid var(--rule); border-radius: 8px 8px 0 0 !important; font-weight: 500; font-family: var(--font-display); color: var(--ink-deep); }
.client-card { transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease; }
.client-card:hover { box-shadow: var(--lift-2), var(--crest); border-color: var(--rule-strong); transform: translateY(-2px); }

/* Boutons : accent anthracite (clair en sombre), secondaire en contour. */
.btn { --bs-btn-font-weight: 500; --bs-btn-border-radius: 6px; }
.btn-primary, .btn-warning, .btn-success {
  --bs-btn-bg: var(--accent); --bs-btn-border-color: var(--accent); --bs-btn-color: var(--accent-ink);
  --bs-btn-hover-bg: var(--accent-strong); --bs-btn-hover-border-color: var(--accent-strong); --bs-btn-hover-color: var(--accent-ink);
  --bs-btn-active-bg: var(--accent-strong); --bs-btn-active-border-color: var(--accent-strong); --bs-btn-active-color: var(--accent-ink);
  --bs-btn-disabled-bg: var(--accent); --bs-btn-disabled-border-color: var(--accent); --bs-btn-disabled-color: var(--accent-ink);
  --bs-btn-focus-shadow-rgb: 120, 120, 120;
  box-shadow: var(--lift-1);
}
.btn-outline-primary, .btn-outline-secondary, .btn-outline-info, .btn-outline-light, .btn-outline-dark {
  --bs-btn-color: var(--ink); --bs-btn-border-color: var(--rule-strong); --bs-btn-bg: transparent;
  --bs-btn-hover-bg: var(--accent-wash); --bs-btn-hover-border-color: var(--accent); --bs-btn-hover-color: var(--ink-deep);
  --bs-btn-active-bg: var(--accent-wash); --bs-btn-active-border-color: var(--accent); --bs-btn-active-color: var(--ink-deep);
  --bs-btn-disabled-color: var(--ink-faint); --bs-btn-disabled-border-color: var(--rule);
  --bs-btn-focus-shadow-rgb: 120, 120, 120;
}
.btn-outline-success { --bs-btn-color: var(--good); --bs-btn-border-color: color-mix(in srgb, var(--good) 45%, transparent); --bs-btn-hover-bg: var(--good-wash); --bs-btn-hover-border-color: var(--good); --bs-btn-hover-color: var(--good); --bs-btn-active-bg: var(--good-wash); --bs-btn-active-color: var(--good); --bs-btn-disabled-color: var(--good); --bs-btn-disabled-border-color: color-mix(in srgb, var(--good) 30%, transparent); }
.btn-outline-warning { --bs-btn-color: var(--flag); --bs-btn-border-color: color-mix(in srgb, var(--flag) 45%, transparent); --bs-btn-hover-bg: var(--flag-wash); --bs-btn-hover-border-color: var(--flag); --bs-btn-hover-color: var(--flag); --bs-btn-active-bg: var(--flag-wash); --bs-btn-active-color: var(--flag); --bs-btn-disabled-color: var(--flag); --bs-btn-disabled-border-color: color-mix(in srgb, var(--flag) 30%, transparent); }
.btn-outline-danger { --bs-btn-color: var(--danger); --bs-btn-border-color: color-mix(in srgb, var(--danger) 45%, transparent); --bs-btn-hover-bg: var(--danger-wash); --bs-btn-hover-border-color: var(--danger); --bs-btn-hover-color: var(--danger); --bs-btn-active-bg: var(--danger-wash); --bs-btn-active-color: var(--danger); }

/* Champs : fond relevé, contour fort, anneau accent-wash au focus. */
.form-control, .form-select {
  background-color: var(--paper-raised); border-color: var(--rule-strong); color: var(--ink);
  box-shadow: inset 0 1px 2px rgba(35, 35, 35, 0.04);
}
.form-control::placeholder { color: var(--ink-faint); }
.form-control:focus, .form-select:focus { background-color: var(--paper-raised); border-color: var(--accent); color: var(--ink); box-shadow: 0 0 0 3px var(--accent-wash); }
.form-check-input { background-color: var(--paper-raised); border-color: var(--rule-strong); }
.form-check-input:checked { background-color: var(--accent); border-color: var(--accent); }
.form-check-input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-wash); }
[data-bs-theme=dark] .form-check-input:checked[type=checkbox] { --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%231a1a1a' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e"); }
.input-group-text { background: var(--paper-sunken); border-color: var(--rule-strong); color: var(--ink-soft); }

/* Tableaux */
.table { --bs-table-bg: transparent; --bs-table-color: var(--ink); --bs-table-border-color: var(--rule); --bs-table-hover-bg: var(--paper-sunken); --bs-table-hover-color: var(--ink); --bs-table-striped-bg: var(--paper-sunken); }
.table th { font-weight: 500; font-size: .74rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-faint); }
.table > :not(caption) > * > * { border-bottom-color: var(--rule); }
thead.table-light, .table-light { --bs-table-bg: var(--paper-sunken); --bs-table-color: var(--ink-soft); --bs-table-border-color: var(--rule); }

/* Pastilles d'état (badges) : lavis + couleur d'état, jamais décoratives. */
.badge { font-weight: 500; letter-spacing: .01em; }
.badge.bg-success { background: var(--good-wash) !important; color: var(--good) !important; }
.badge.bg-warning { background: var(--flag-wash) !important; color: var(--flag) !important; }
.badge.bg-danger { background: var(--danger-wash) !important; color: var(--danger) !important; }
.badge.bg-secondary, .badge.bg-light { background: var(--paper-sunken) !important; color: var(--ink-soft) !important; }
.badge.bg-primary { background: var(--accent) !important; color: var(--accent-ink) !important; }
.bg-light { background-color: var(--paper-sunken) !important; }
.bg-primary.bg-opacity-10 { background-color: var(--accent-wash) !important; }
.border-primary { border-color: var(--accent) !important; }
.badge-success { background: var(--good-wash); color: var(--good); }
.badge-error { background: var(--danger-wash); color: var(--danger); }
.badge-running { background: var(--flag-wash); color: var(--flag); }
.text-primary { color: var(--ink-deep) !important; }
.text-info { color: var(--ink-soft) !important; }
.text-warning { color: var(--flag) !important; }
.text-success { color: var(--good) !important; }
.text-danger { color: var(--danger) !important; }
.spinner-border.text-primary { color: var(--accent) !important; }

/* Messages */
.alert { --bs-alert-border-radius: 6px; border-width: 1px; }
.alert-success { --bs-alert-bg: var(--good-wash); --bs-alert-color: var(--good); --bs-alert-border-color: color-mix(in srgb, var(--good) 25%, transparent); --bs-alert-link-color: var(--good); }
.alert-danger { --bs-alert-bg: var(--danger-wash); --bs-alert-color: var(--danger); --bs-alert-border-color: color-mix(in srgb, var(--danger) 25%, transparent); --bs-alert-link-color: var(--danger); }
.alert-warning { --bs-alert-bg: var(--flag-wash); --bs-alert-color: var(--flag); --bs-alert-border-color: color-mix(in srgb, var(--flag) 25%, transparent); }
.alert-info { --bs-alert-bg: var(--paper-sunken); --bs-alert-color: var(--ink); --bs-alert-border-color: var(--rule); }

/* Onglets, menus, pagination */
.nav-tabs { --bs-nav-tabs-border-color: var(--rule); --bs-nav-tabs-link-active-bg: var(--paper-raised); --bs-nav-tabs-link-active-color: var(--ink-deep); --bs-nav-tabs-link-active-border-color: var(--rule) var(--rule) var(--paper-raised); --bs-nav-link-color: var(--ink-soft); --bs-nav-link-hover-color: var(--ink-deep); }
.dropdown-menu { --bs-dropdown-bg: var(--paper-raised); --bs-dropdown-border-color: var(--rule); --bs-dropdown-link-color: var(--ink); --bs-dropdown-link-hover-bg: var(--paper-sunken); --bs-dropdown-link-hover-color: var(--ink-deep); --bs-dropdown-link-active-bg: var(--accent); --bs-dropdown-link-active-color: var(--accent-ink); --bs-dropdown-divider-bg: var(--rule); box-shadow: var(--lift-2); }
.pagination { --bs-pagination-color: var(--ink); --bs-pagination-bg: var(--paper-raised); --bs-pagination-border-color: var(--rule-strong); --bs-pagination-hover-color: var(--ink-deep); --bs-pagination-hover-bg: var(--paper-sunken); --bs-pagination-active-bg: var(--accent); --bs-pagination-active-border-color: var(--accent); --bs-pagination-active-color: var(--accent-ink); --bs-pagination-disabled-bg: var(--paper-raised); --bs-pagination-disabled-color: var(--ink-faint); }
.list-group { --bs-list-group-bg: var(--paper-raised); --bs-list-group-border-color: var(--rule); --bs-list-group-color: var(--ink); }
.modal { --bs-modal-bg: var(--paper-raised); --bs-modal-border-color: var(--rule); }

/* Styles maison de BOB50 */
.section-label { font-size: 11px; text-transform: uppercase; letter-spacing: .22em; color: var(--ink-faint); font-weight: 500; margin-bottom: .5rem; }
.status-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
.dot-success { background: var(--good); }
.dot-none { background: var(--ink-faint); }
.delivery-badge { font-size: .75rem; padding: .25rem .6rem; border-radius: 999px; font-weight: 500; background: var(--paper-sunken); color: var(--ink-soft); border: 1px solid var(--rule); }
.delivery-local, .delivery-cloud, .delivery-email, .delivery-none { background: var(--paper-sunken); color: var(--ink-soft); }
.role-admin, .role-comptable { font-size: .7rem; padding: .15rem .5rem; border-radius: 999px; font-weight: 500; }
.role-admin { background: var(--accent); color: var(--accent-ink); }
.role-comptable { background: var(--paper-sunken); color: var(--ink-soft); border: 1px solid var(--rule); }
.sortable { cursor: pointer; user-select: none; }
.sortable:hover { color: var(--ink-deep); }
.tabular, .table td.text-end { font-variant-numeric: tabular-nums; }

/* Écrans d'attente (export, chargement) : bandeau encre, ne s'inverse pas. */
.hoos-voile { background: color-mix(in srgb, var(--band) 94%, transparent) !important; }
.hoos-voile-carte { background: var(--paper-raised) !important; border: 1px solid var(--rule); box-shadow: var(--lift-2); }
