/* ==========================================================================
   BORDEAUXWINGS — thème phpVMS (hérite de « seven », Bootstrap 5.3)
   Charte graphique v1.0 (octobre 2026) appliquée par-dessus Bootstrap :
   police Josefin Sans, palette Bordeaux / Rosé / Terre / Encre / Pierre,
   thème clair par défaut et thème sombre « Encre de Chai » (data-bs-theme).
   ========================================================================== */


/* --------------------------------------------------------------------------
   1. POLICES
   -------------------------------------------------------------------------- */
@font-face {
  font-family: "Josefin Sans";
  src: url("../fonts/JosefinSans-Variable.ttf") format("truetype");
  font-weight: 100 700;
  font-style: normal;
  font-display: swap;
  /* Hauteur d'x faible (0,378 em) : on agrandit le dessin pour rester lisible */
  size-adjust: 112%;
}


/* --------------------------------------------------------------------------
   2. PALETTE & TOKENS — thème clair
   -------------------------------------------------------------------------- */
:root,
[data-bs-theme="light"] {
  --bw-bordeaux: #6E1A33;   /* Bordeaux Garonne — principale */
  --bw-rose:     #D3988A;   /* Rosé Clairet — accent, filets */
  --bw-terre:    #8E4C40;   /* Terre de Graves — textes secondaires */
  --bw-encre:    #20181B;   /* Encre de Chai — fonds sombres, texte */
  --bw-pierre:   #F7F3EC;   /* Pierre Blonde — fonds clairs */

  --bw-accent:        var(--bw-bordeaux);
  --bw-accent-rgb:    110, 26, 51;
  --bw-accent-hover:  #5A1429;
  --bw-on-accent:     var(--bw-pierre);
  --bw-label:         var(--bw-terre);
  --bw-surface:       #FFFFFF;
  --bw-surface-2:     #FBF8F3;
  --bw-border:        #EAE2D7;
  --bw-border-strong: #DCD1C4;
  --bw-row-hover:     rgba(110, 26, 51, 0.03);
  --bw-shadow:        0 1px 2px rgba(32, 24, 27, 0.05);
  --bw-shadow-pop:    0 16px 40px rgba(32, 24, 27, 0.14);
  --bw-nav-bg:        var(--bw-bordeaux);

  --bw-font: "Josefin Sans", Futura, "Century Gothic", sans-serif;
  --bw-mono: "JetBrains Mono", SFMono-Regular, Menlo, Consolas, monospace;

  /* Bootstrap */
  --bs-body-font-family: var(--bw-font);
  --bs-font-monospace:   var(--bw-mono);
  --bs-body-font-size:   0.95rem;
  --bs-body-bg:          var(--bw-pierre);
  --bs-body-bg-rgb:      247, 243, 236;
  --bs-body-color:       var(--bw-encre);
  --bs-body-color-rgb:   32, 24, 27;
  --bs-emphasis-color:   var(--bw-encre);
  --bs-secondary-color:  rgba(32, 24, 27, 0.68);
  --bs-tertiary-color:   rgba(32, 24, 27, 0.5);
  --bs-secondary-bg:     #EDE6DB;
  --bs-tertiary-bg:      var(--bw-surface-2);
  --bs-border-color:     var(--bw-border);
  --bs-border-color-translucent: rgba(32, 24, 27, 0.1);
  --bs-heading-color:    var(--bw-encre);

  --bs-primary:          var(--bw-bordeaux);
  --bs-primary-rgb:      110, 26, 51;
  --bs-primary-text-emphasis: #4A1122;
  --bs-primary-bg-subtle:     #F1E1E5;
  --bs-primary-border-subtle: #DDB8C2;
  --bs-secondary:        #62565A;
  --bs-secondary-rgb:    98, 86, 90;

  /* Statuts assombris pour rester ≥ 4,5:1 sur fond clair */
  --bs-success: #2E7D57;  --bs-success-rgb: 46, 125, 87;
  --bs-warning: #8F620B;  --bs-warning-rgb: 143, 98, 11;
  --bs-info:    #3A5BB8;  --bs-info-rgb:    58, 91, 184;
  --bs-danger:  #B3362F;  --bs-danger-rgb:  179, 54, 47;

  --bs-link-color:           var(--bw-bordeaux);
  --bs-link-color-rgb:       110, 26, 51;
  --bs-link-hover-color:     var(--bw-accent-hover);
  --bs-link-hover-color-rgb: 90, 20, 41;

  --bs-border-radius:    0.5rem;
  --bs-border-radius-sm: 0.375rem;
  --bs-border-radius-lg: 0.75rem;
  --bs-focus-ring-color: rgba(110, 26, 51, 0.2);
}


/* --------------------------------------------------------------------------
   3. TOKENS — thème sombre « Encre de Chai »
   -------------------------------------------------------------------------- */
[data-bs-theme="dark"] {
  --bw-accent:        var(--bw-rose);
  --bw-accent-rgb:    211, 152, 138;
  --bw-accent-hover:  #DEAC9F;
  --bw-on-accent:     var(--bw-encre);
  --bw-label:         var(--bw-rose);
  --bw-surface:       #2A2124;
  --bw-surface-2:     #32282B;
  --bw-border:        #382D31;
  --bw-border-strong: #4A3D42;
  --bw-row-hover:     rgba(247, 243, 236, 0.03);
  --bw-shadow:        none;
  --bw-shadow-pop:    0 16px 40px rgba(0, 0, 0, 0.5);
  --bw-nav-bg:        #2A1219;

  --bs-body-bg:          var(--bw-encre);
  --bs-body-bg-rgb:      32, 24, 27;
  --bs-body-color:       var(--bw-pierre);
  --bs-body-color-rgb:   247, 243, 236;
  --bs-emphasis-color:   #FFFFFF;
  --bs-secondary-color:  rgba(247, 243, 236, 0.7);
  --bs-tertiary-color:   rgba(247, 243, 236, 0.5);
  --bs-secondary-bg:     #3B3034;
  --bs-tertiary-bg:      var(--bw-surface-2);
  --bs-border-color:     var(--bw-border);
  --bs-border-color-translucent: rgba(247, 243, 236, 0.12);
  --bs-heading-color:    var(--bw-pierre);

  --bs-primary:          var(--bw-rose);
  --bs-primary-rgb:      211, 152, 138;
  --bs-primary-text-emphasis: #E8C4BB;
  --bs-primary-bg-subtle:     #3A2529;
  --bs-primary-border-subtle: #6B3F45;
  --bs-secondary:        #B8ADA9;
  --bs-secondary-rgb:    184, 173, 169;

  --bs-success: #4CC38A;  --bs-success-rgb: 76, 195, 138;
  --bs-warning: #E0AE4B;  --bs-warning-rgb: 224, 174, 75;
  --bs-info:    #678AE9;  --bs-info-rgb:    103, 138, 233;
  --bs-danger:  #E5675F;  --bs-danger-rgb:  229, 103, 95;

  --bs-link-color:           var(--bw-rose);
  --bs-link-color-rgb:       211, 152, 138;
  --bs-link-hover-color:     #DEAC9F;
  --bs-link-hover-color-rgb: 222, 172, 159;
  --bs-focus-ring-color: rgba(211, 152, 138, 0.3);
}


/* --------------------------------------------------------------------------
   4. BASE & TYPOGRAPHIE
   -------------------------------------------------------------------------- */
body { font-feature-settings: "kern"; -webkit-font-smoothing: antialiased; }
::selection { background: rgba(var(--bw-accent-rgb), 0.22); }

:where(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: 2px solid var(--bw-accent);
  outline-offset: 2px;
}

a { text-underline-offset: 2px; }

/* Titres : capitales SemiBold, approche large comme le logotype */
h1, h2, h3, .h1, .h2, .h3 {
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  line-height: 1.2;
}
h1, .h1 { font-size: 1.9rem; }
h2, .h2 { font-size: 1.45rem; margin-bottom: 1rem; }
h3, .h3 { font-size: 1.15rem; }
h4, h5, h6, .h4, .h5, .h6 { font-weight: 600; letter-spacing: 0.04em; }

code, kbd, pre, samp, .font-monospace, .bdw-mono { font-family: var(--bw-mono); }
code { color: var(--bw-accent); }

/* Étiquette (eyebrow) : capitales, approche +0,22 em */
.bdw-eyebrow {
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--bw-label);
}


/* --------------------------------------------------------------------------
   5. BARRE DE NAVIGATION — fond Bordeaux, logo inversé
   -------------------------------------------------------------------------- */
.bdw-navbar {
  background: var(--bw-nav-bg);
  padding-top: 0.6rem;
  padding-bottom: 0.6rem;
  border-bottom: 2px solid var(--bw-rose);
  --bs-navbar-color: rgba(247, 243, 236, 0.82);
  --bs-navbar-hover-color: #FFFFFF;
  --bs-navbar-active-color: #FFFFFF;
  --bs-navbar-brand-color: #FFFFFF;
  --bs-navbar-brand-hover-color: #FFFFFF;
  --bs-navbar-toggler-border-color: rgba(247, 243, 236, 0.25);
  --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28247, 243, 236, 0.85%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
/* Les menus déroulants de la barre suivent le thème clair / sombre de la page */
.bdw-navbar .dropdown-menu .dropdown-item { color: var(--bs-body-color); }
.bdw-navbar .dropdown-menu .dropdown-item.active,
.bdw-navbar .dropdown-menu .dropdown-item:active { color: var(--bw-on-accent); }
.bdw-brand img { display: block; height: 32px; width: auto; }
.bdw-navbar .nav-link {
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  align-items: center;
  border-radius: 999px;
  padding: 0.4rem 0.8rem !important;
}
/* Couleur explicite : la règle générale `.nav-link { color: var(--bw-accent) }` plus bas
   (Bordeaux en clair) rendait les liens et le bouton thème invisibles sur la barre Bordeaux */
.bdw-navbar .nav-link,
.bdw-navbar .btn.nav-link { color: var(--bs-navbar-color); }
.bdw-navbar .nav-link:hover,
.bdw-navbar .nav-link:focus-visible,
.bdw-navbar .nav-link.show,
.bdw-navbar .btn.nav-link:hover { color: var(--bs-navbar-hover-color); }
.bdw-navbar .nav-link:hover { background: rgba(247, 243, 236, 0.08); }
.bdw-navbar .nav-link.active {
  background: var(--bw-pierre);
  color: var(--bw-bordeaux);
}
.bdw-navbar .nav-link i { font-size: 1rem; }
.bdw-avatar {
  width: 34px; height: 34px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--bw-rose);
}
.bdw-navbar .dropdown-menu { --bs-dropdown-link-active-bg: var(--bw-bordeaux); }
@media (max-width: 991.98px) {
  .bdw-navbar .navbar-nav { padding-top: 0.75rem; gap: 2px; }
}


/* --------------------------------------------------------------------------
   6. COMPOSANTS BOOTSTRAP
   -------------------------------------------------------------------------- */

/* Cartes : surfaces blanches, filet discret */
.card {
  --bs-card-bg: var(--bw-surface);
  --bs-card-border-color: var(--bw-border);
  --bs-card-cap-bg: transparent;
  --bs-card-border-radius: 0.75rem;
  --bs-card-inner-border-radius: calc(0.75rem - 1px);
  box-shadow: var(--bw-shadow);
}
.card-header, .card-footer { border-color: var(--bw-border); }
.card-footer { background: var(--bw-surface-2); }

/* Les en-têtes « bg-primary text-white » de seven deviennent des étiquettes
   de la charte plutôt que des bandeaux pleins */
.card > .card-header.bg-primary,
.card > .card-header.bg-primary.text-white,
.card-title > .card-header.bg-primary,
.card-title > .card-header.bg-primary.text-white {
  background: transparent !important;
  color: var(--bw-label) !important;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  padding-top: 0.9rem;
  border-bottom: 1px solid var(--bw-border);
}
.card > .card-header.bg-primary .text-white { color: inherit !important; }
.card > .card-header.bg-primary :is(h1, h2, h3, h4, h5, h6) { color: inherit; font-size: inherit; letter-spacing: inherit; margin: 0; }
.card-title > h4.card-header { margin: 0; }
.card-title { margin-bottom: 0; }

/* Boutons */
.btn {
  --bs-btn-font-weight: 600;
  --bs-btn-border-radius: 999px;
  letter-spacing: 0.03em;
}
.btn-sm { --bs-btn-border-radius: 999px; }
.btn-primary {
  --bs-btn-bg: var(--bw-accent);
  --bs-btn-border-color: var(--bw-accent);
  --bs-btn-color: var(--bw-on-accent);
  --bs-btn-hover-bg: var(--bw-accent-hover);
  --bs-btn-hover-border-color: var(--bw-accent-hover);
  --bs-btn-hover-color: var(--bw-on-accent);
  --bs-btn-active-bg: var(--bw-accent-hover);
  --bs-btn-active-border-color: var(--bw-accent-hover);
  --bs-btn-active-color: var(--bw-on-accent);
  --bs-btn-disabled-bg: var(--bw-accent);
  --bs-btn-disabled-border-color: var(--bw-accent);
  --bs-btn-disabled-color: var(--bw-on-accent);
  --bs-btn-focus-shadow-rgb: var(--bw-accent-rgb);
}
.btn-outline-primary {
  --bs-btn-color: var(--bw-accent);
  --bs-btn-border-color: var(--bw-accent);
  --bs-btn-hover-bg: var(--bw-accent);
  --bs-btn-hover-border-color: var(--bw-accent);
  --bs-btn-hover-color: var(--bw-on-accent);
  --bs-btn-active-bg: var(--bw-accent);
  --bs-btn-active-border-color: var(--bw-accent);
  --bs-btn-active-color: var(--bw-on-accent);
  --bs-btn-focus-shadow-rgb: var(--bw-accent-rgb);
}
/* Boutons secondaires / info de seven : variante neutre de la charte */
.btn-secondary, .btn-info, .btn-light {
  --bs-btn-bg: var(--bw-surface);
  --bs-btn-border-color: var(--bw-border-strong);
  --bs-btn-color: var(--bs-body-color);
  --bs-btn-hover-bg: var(--bw-surface-2);
  --bs-btn-hover-border-color: var(--bw-accent);
  --bs-btn-hover-color: var(--bw-accent);
  --bs-btn-active-bg: var(--bw-surface-2);
  --bs-btn-active-border-color: var(--bw-accent);
  --bs-btn-active-color: var(--bw-accent);
  --bs-btn-focus-shadow-rgb: var(--bw-accent-rgb);
}
.btn-success {
  --bs-btn-bg: var(--bs-success); --bs-btn-border-color: var(--bs-success);
  --bs-btn-hover-bg: color-mix(in srgb, var(--bs-success) 85%, #000);
  --bs-btn-hover-border-color: color-mix(in srgb, var(--bs-success) 85%, #000);
}
.btn-danger {
  --bs-btn-bg: var(--bs-danger); --bs-btn-border-color: var(--bs-danger);
  --bs-btn-hover-bg: color-mix(in srgb, var(--bs-danger) 85%, #000);
  --bs-btn-hover-border-color: color-mix(in srgb, var(--bs-danger) 85%, #000);
}
[data-bs-theme="dark"] .btn-success,
[data-bs-theme="dark"] .btn-danger { --bs-btn-color: var(--bw-encre); --bs-btn-hover-color: var(--bw-encre); }

/* Badges : étiquettes en capitales */
.badge {
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  border-radius: 0.3rem;
  padding: 0.4em 0.6em 0.3em;
}
.badge.bg-secondary { background: var(--bs-secondary-bg) !important; color: var(--bs-body-color); }
[data-bs-theme="dark"] .badge.bg-primary,
[data-bs-theme="dark"] .badge.bg-success,
[data-bs-theme="dark"] .badge.bg-warning,
[data-bs-theme="dark"] .badge.bg-info,
[data-bs-theme="dark"] .badge.bg-danger { color: var(--bw-encre); }
.badge.bg-warning { color: #FFFFFF; }
[data-bs-theme="dark"] .badge.bg-warning { color: var(--bw-encre); }

/* Tableaux */
.table {
  --bs-table-bg: transparent;
  --bs-table-hover-bg: var(--bw-row-hover);
  --bs-table-striped-bg: var(--bw-row-hover);
  --bs-table-border-color: var(--bw-border);
}
.table > thead th, .table th {
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--bs-secondary-color);
}
.table th a { color: inherit; text-decoration: none; }

/* Formulaires */
.form-control, .form-select {
  background-color: var(--bw-surface);
  border-color: var(--bw-border-strong);
}
.form-control:focus, .form-select:focus, .ts-control:focus-within, .focus .ts-control {
  border-color: rgba(var(--bw-accent-rgb), 0.6) !important;
  box-shadow: 0 0 0 0.2rem rgba(var(--bw-accent-rgb), 0.15) !important;
}
.form-label { font-weight: 600; font-size: 0.85rem; }
.form-check-input:checked { background-color: var(--bw-accent); border-color: var(--bw-accent); }
.input-group-text { background: var(--bw-surface-2); border-color: var(--bw-border-strong); color: var(--bw-label); }
.ts-control, .ts-dropdown { background: var(--bw-surface) !important; color: var(--bs-body-color) !important; border-color: var(--bw-border-strong) !important; }
.ts-dropdown .active { background: rgba(var(--bw-accent-rgb), 0.1) !important; color: var(--bs-body-color) !important; }

/* Pagination */
.pagination {
  --bs-pagination-color: var(--bs-body-color);
  --bs-pagination-bg: var(--bw-surface);
  --bs-pagination-border-color: var(--bw-border);
  --bs-pagination-hover-color: var(--bw-accent);
  --bs-pagination-hover-bg: var(--bw-surface-2);
  --bs-pagination-hover-border-color: var(--bw-border-strong);
  --bs-pagination-active-bg: var(--bw-accent);
  --bs-pagination-active-border-color: var(--bw-accent);
  --bs-pagination-active-color: var(--bw-on-accent);
  --bs-pagination-focus-box-shadow: 0 0 0 0.2rem rgba(var(--bw-accent-rgb), 0.2);
  justify-content: center;
}

/* Onglets, accordéons, listes, menus */
.nav-tabs { --bs-nav-tabs-link-active-color: var(--bw-accent); --bs-nav-tabs-link-active-border-color: var(--bw-border) var(--bw-border) var(--bw-surface); --bs-nav-tabs-link-active-bg: var(--bw-surface); --bs-nav-tabs-border-color: var(--bw-border); }
.nav-tabs .nav-link { color: var(--bs-secondary-color); font-weight: 600; }
.nav-pills { --bs-nav-pills-link-active-bg: var(--bw-accent); --bs-nav-pills-link-active-color: var(--bw-on-accent); }
.nav-link { color: var(--bw-accent); }
.accordion {
  --bs-accordion-bg: var(--bw-surface);
  --bs-accordion-border-color: var(--bw-border);
  --bs-accordion-active-bg: var(--bs-primary-bg-subtle);
  --bs-accordion-active-color: var(--bs-primary-text-emphasis);
  --bs-accordion-btn-focus-box-shadow: 0 0 0 0.2rem rgba(var(--bw-accent-rgb), 0.15);
}
.list-group { --bs-list-group-bg: var(--bw-surface); --bs-list-group-border-color: var(--bw-border); --bs-list-group-active-bg: var(--bw-accent); --bs-list-group-active-border-color: var(--bw-accent); --bs-list-group-active-color: var(--bw-on-accent); }
.dropdown-menu {
  --bs-dropdown-bg: var(--bw-surface);
  --bs-dropdown-border-color: var(--bw-border);
  --bs-dropdown-link-hover-bg: rgba(var(--bw-accent-rgb), 0.08);
  --bs-dropdown-link-active-bg: var(--bw-accent);
  --bs-dropdown-link-active-color: var(--bw-on-accent);
  --bs-dropdown-box-shadow: var(--bw-shadow-pop);
  box-shadow: var(--bw-shadow-pop);
  border-radius: 0.75rem;
  padding: 0.4rem;
}
.dropdown-item { border-radius: 0.45rem; }
.modal { --bs-modal-bg: var(--bw-surface); --bs-modal-border-color: var(--bw-border); --bs-modal-border-radius: 0.9rem; }
.offcanvas { --bs-offcanvas-bg: var(--bw-surface); }
.progress { --bs-progress-bg: var(--bs-secondary-bg); --bs-progress-bar-bg: var(--bw-accent); --bs-progress-height: 0.5rem; }

/* Alertes : fond surface, filet coloré à gauche */
.alert {
  --bs-alert-bg: var(--bw-surface);
  --bs-alert-color: var(--bs-body-color);
  --bs-alert-border-color: var(--bw-border);
  border-left: 4px solid var(--bs-alert-link-color, var(--bw-accent));
  box-shadow: var(--bw-shadow);
}
.alert-success { border-left-color: var(--bs-success); }
.alert-warning { border-left-color: var(--bs-warning); }
.alert-danger, .alert-error { border-left-color: var(--bs-danger); }
.alert-info { border-left-color: var(--bs-info); }
.alert .bi { color: var(--bw-label); }

/* Utilitaires de seven réinterprétés */
.text-primary { color: var(--bw-accent) !important; }
.bg-primary { background-color: var(--bw-accent) !important; }
.bg-primary.text-white, .bg-primary .text-white { color: var(--bw-on-accent) !important; }
.border-primary { border-color: var(--bw-accent) !important; }


/* --------------------------------------------------------------------------
   7. PIED DE PAGE
   -------------------------------------------------------------------------- */
.bdw-footer {
  padding: 1rem 0;
  border-top: 1px solid var(--bw-border);
  font-size: 0.7rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--bs-secondary-color);
}
.bdw-footer a { color: var(--bw-label); text-decoration: none; }


/* --------------------------------------------------------------------------
   8. BLOCS DU THÈME (dashboard, vols)
   -------------------------------------------------------------------------- */
.bdw-page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.5rem; }
.bdw-page-head h1, .bdw-page-head h2 { margin: 0.25rem 0 0; }

/* Cartes KPI */
.bdw-stat { padding: 1.1rem 1.2rem 1rem; position: relative; height: 100%; }
.bdw-stat-value { font-size: 1.75rem; font-weight: 500; line-height: 1.15; margin-top: 0.9rem; }
.bdw-stat-value.bdw-mono { font-size: 1.5rem; }
.bdw-stat-icon {
  position: absolute; top: 0.9rem; right: 0.9rem;
  width: 2rem; height: 2rem; border-radius: 50%;
  display: grid; place-items: center;
  background: rgba(var(--bw-accent-rgb), 0.09);
  color: var(--bw-accent);
}

/* Carte d'un vol */
.bdw-flight { overflow: hidden; }
.bdw-flight-head { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; flex-wrap: wrap; }
.bdw-ident { font-family: var(--bw-mono); font-weight: 600; font-size: 1.15rem; letter-spacing: 0.02em; }
.bdw-ident small { font-family: var(--bw-font); font-weight: 400; font-size: 0.8rem; letter-spacing: 0.08em; color: var(--bs-secondary-color); margin-left: 0.4rem; }
.bdw-airline-logo { max-height: 28px; max-width: 90px; width: auto; }
.bdw-route { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 1rem; margin: 1rem 0 0.75rem; }
.bdw-route-end { min-width: 0; }
.bdw-route-end.is-arr { text-align: right; }
.bdw-icao { font-family: var(--bw-mono); font-weight: 600; font-size: 1.6rem; line-height: 1.1; text-decoration: none; color: var(--bs-body-color); }
.bdw-icao:hover { color: var(--bw-accent); }
.bdw-apt-name { font-size: 0.85rem; color: var(--bs-secondary-color); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bdw-time { font-family: var(--bw-mono); font-size: 0.95rem; margin-top: 0.15rem; }
.bdw-time .bdw-eyebrow { font-family: var(--bw-font); margin-right: 0.35rem; }
.bdw-route-mid { display: flex; flex-direction: column; align-items: center; gap: 0.2rem; color: var(--bs-secondary-color); font-size: 0.8rem; min-width: 7rem; }
.bdw-route-line { display: flex; align-items: center; gap: 0.4rem; width: 100%; color: var(--bw-rose); }
.bdw-route-line::before, .bdw-route-line::after { content: ""; flex: 1; border-top: 1px dashed currentColor; }
.bdw-route-line i { color: var(--bw-accent); font-size: 1.1rem; transform: rotate(90deg); }
.bdw-flight-meta { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.bdw-chip {
  display: inline-flex; align-items: center; gap: 0.35rem;
  padding: 0.2rem 0.6rem;
  border: 1px solid var(--bw-border);
  border-radius: 999px;
  background: var(--bw-surface-2);
  font-size: 0.8rem;
  color: var(--bs-secondary-color);
}
.bdw-chip i { color: var(--bw-label); }
.bdw-flight .card-footer { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; }
.bdw-flight.is-saved { border-color: rgba(var(--bw-accent-rgb), 0.45); }
.bdw-flight.is-saved .bdw-flight-head::after { content: none; }

/* Barre de tri des vols */
.bdw-sortbar { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem 0.9rem; margin-bottom: 1rem; font-size: 0.72rem; letter-spacing: 0.16em; text-transform: uppercase; }
.bdw-sortbar a { color: var(--bs-secondary-color); text-decoration: none; }
.bdw-sortbar a:hover { color: var(--bw-accent); }

/* Listes compactes des widgets (derniers PIREPs, pilotes…) */
.bdw-app .card-body .table-sm td { padding-top: 0.45rem; padding-bottom: 0.45rem; }

@media (max-width: 575.98px) {
  .bdw-icao { font-size: 1.3rem; }
  .bdw-route { gap: 0.5rem; }
  .bdw-route-mid { min-width: 4.5rem; }
}


/* --------------------------------------------------------------------------
   9. PAGES D'AUTHENTIFICATION — couverture de la charte (Encre de Chai)
   -------------------------------------------------------------------------- */
.bdw-cover {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  padding: 1.5rem;
  background:
    radial-gradient(1200px 600px at 50% -10%, rgba(110, 26, 51, 0.55), transparent 70%),
    var(--bw-encre);
  color: var(--bw-pierre);
}
.bdw-cover-main { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 2rem 0; }
.bdw-cover-logo { display: block; width: 220px; max-width: 70vw; height: auto; }
.bdw-cover-sub {
  margin: 1.9rem 0 2.1rem;
  font-size: 0.7rem; font-weight: 300; letter-spacing: 0.4em; text-transform: uppercase;
  color: var(--bw-rose); text-align: center;
}
.bdw-cover .card { width: 100%; max-width: 420px; box-shadow: var(--bw-shadow-pop); }
.bdw-cover .bdw-wide { max-width: 760px; }
.bdw-cover-foot {
  display: flex; justify-content: space-between; gap: 0.75rem; flex-wrap: wrap;
  font-size: 0.62rem; letter-spacing: 0.3em; text-transform: uppercase;
  color: rgba(247, 243, 236, 0.55);
}
.bdw-cover-foot a { color: var(--bw-rose); text-decoration: none; }
.bdw-cover-lang { position: absolute; top: 1.25rem; right: 1.5rem; }


/* ==========================================================================
   STYLE « OUTIL » (2026-10-17) — aligné sur le SPA et l'admin Filament
   Surcharge les tokens ci-dessus : IBM Plex Sans + Inconsolata, gris
   neutres, rayons courts, densité. Les pages Blade d'un pilote connecté
   utilisent la coquille du SPA (barre latérale sombre, partials/sidebar).
   ========================================================================== */
:root,
[data-bs-theme="light"] {
  --bw-font: "IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, sans-serif;
  --bw-mono: "Inconsolata", ui-monospace, SFMono-Regular, Menlo, monospace;
  --bw-label: #5B6472;
  --bw-surface: #FFFFFF;
  --bw-surface-2: #F7F8FA;
  --bw-border: #E3E5E9;
  --bw-border-strong: #D1D5DB;
  --bw-row-hover: #F3F4F6;
  --bw-shadow: none;
  --bw-rail-bg: #16181D;

  --bs-body-font-family: var(--bw-font);
  --bs-font-monospace: var(--bw-mono);
  --bs-body-font-size: 0.8125rem;
  --bs-body-bg: #F1F2F4;
  --bs-body-bg-rgb: 241, 242, 244;
  --bs-body-color: #1F2937;
  --bs-body-color-rgb: 31, 41, 55;
  --bs-emphasis-color: #111827;
  --bs-secondary-color: #5B6472;
  --bs-tertiary-color: #8A93A1;
  --bs-secondary-bg: #E5E7EB;
  --bs-tertiary-bg: #F7F8FA;
  --bs-border-color: var(--bw-border);
  --bs-heading-color: #111827;
  --bs-border-radius: 4px;
  --bs-border-radius-sm: 3px;
  --bs-border-radius-lg: 6px;
  --bs-border-radius-xl: 6px;
}
[data-bs-theme="dark"] {
  --bw-label: #9AA2AF;
  --bw-surface: #161920;
  --bw-surface-2: #1B1F27;
  --bw-border: #262B35;
  --bw-border-strong: #333945;
  --bw-row-hover: #1E222B;
  --bw-rail-bg: #0A0B0E;

  --bs-body-bg: #0E1015;
  --bs-body-bg-rgb: 14, 16, 21;
  --bs-body-color: #E5E7EB;
  --bs-body-color-rgb: 229, 231, 235;
  --bs-emphasis-color: #FFFFFF;
  --bs-secondary-color: #9AA2AF;
  --bs-tertiary-color: #6B7380;
  --bs-secondary-bg: #262B35;
  --bs-tertiary-bg: #1B1F27;
  --bs-heading-color: #F3F4F6;
}

body { font-feature-settings: "tnum" 1; }
h1, h2, h3, .h1, .h2, .h3, h4, h5, h6, .h4, .h5, .h6 {
  font-family: var(--bw-font);
  letter-spacing: 0 !important;
  text-transform: none !important;
  font-weight: 600;
}
h1, .h1 { font-size: 1.25rem; }
h2, .h2 { font-size: 1rem; }
h3, .h3 { font-size: 0.9375rem; }
.bdw-eyebrow { letter-spacing: 0.06em; font-size: 0.6875rem; }
.card { box-shadow: none; }
.card-header { padding: 0.5rem 0.875rem; font-weight: 600; }
.card-body { padding: 0.875rem; }
.btn { --bs-btn-padding-y: 0.3rem; --bs-btn-padding-x: 0.7rem; --bs-btn-font-size: 0.8125rem; letter-spacing: 0; text-transform: none; font-weight: 500; }
.btn-sm { --bs-btn-padding-y: 0.15rem; --bs-btn-padding-x: 0.5rem; --bs-btn-font-size: 0.75rem; }
.form-control, .form-select { font-size: 0.8125rem; padding-top: 0.3rem; padding-bottom: 0.3rem; }
.input-group-text { font-size: 0.8125rem; padding-top: 0.3rem; padding-bottom: 0.3rem; }
.form-label { font-size: 0.75rem; margin-bottom: 0.2rem; }
.table { font-size: 0.8125rem; --bs-table-bg: var(--bw-surface); }
.table > :not(caption) > * > * { padding: 0.4rem 0.6rem; }
.table > thead th, .table th { font-size: 0.6875rem; letter-spacing: 0.02em; text-transform: none; font-weight: 600; color: var(--bs-secondary-color); background: var(--bw-surface-2); }
.badge { font-weight: 600; letter-spacing: 0; border-radius: 3px; }
.alert { padding: 0.5rem 0.75rem; font-size: 0.8125rem; }

/* ---- Coquille (pilote connecté) ---------------------------------------- */
.bdw-shell { display: flex; min-height: 100vh; }
.bdw-rail {
  position: sticky; top: 0; flex: 0 0 216px; width: 216px; height: 100vh;
  display: flex; flex-direction: column;
  background: var(--bw-rail-bg); color: #E5E7EB; font-size: 13px; z-index: 1030;
}
.bdw-rail-brand {
  display: flex; align-items: center; gap: 10px; height: 48px; padding: 0 14px; flex-shrink: 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08); color: #E5E7EB; text-decoration: none;
}
.bdw-rail-brand span { display: grid; line-height: 1.15; }
.bdw-rail-brand strong { font-size: 13px; font-weight: 600; letter-spacing: 0.02em; }
.bdw-rail-brand small { font-size: 10px; letter-spacing: 0.08em; color: #6B7380; }
.bdw-rail-links { flex: 1; overflow-y: auto; padding: 8px; display: grid; align-content: start; gap: 1px; }
.bdw-rail-section { padding: 8px 8px 4px; font-size: 10px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: #6B7380; }
.bdw-rail-links a, .bdw-rail-lang {
  display: flex; align-items: center; gap: 10px; min-height: 30px; padding: 5px 8px;
  border-radius: 4px; color: #A1A8B3; text-decoration: none; font-weight: 500;
}
.bdw-rail-links a:hover, .bdw-rail-lang:hover { background: rgba(255, 255, 255, 0.06); color: #F3F4F6; }
.bdw-rail-links a.active { background: rgba(211, 152, 138, 0.14); color: var(--bw-rose); box-shadow: inset 2px 0 0 var(--bw-rose); }
.bdw-rail-links svg { flex-shrink: 0; }
.bdw-rail-lang { cursor: pointer; }
.bdw-rail-lang select { background: transparent; color: inherit; border: 0; font: inherit; padding: 0; cursor: pointer; max-width: 100%; }
.bdw-rail-lang option { color: #1F2937; background: #fff; }
.bdw-rail-user {
  display: flex; align-items: center; gap: 10px; padding: 10px 12px; flex-shrink: 0;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}
.bdw-rail-avatar {
  width: 30px; height: 30px; flex-shrink: 0; border-radius: 50%; overflow: hidden;
  display: grid; place-items: center; background: #262B35; color: #E5E7EB; font-size: 11px; font-weight: 700;
}
.bdw-rail-avatar img { width: 100%; height: 100%; object-fit: cover; }
.bdw-rail-who { min-width: 0; flex: 1; display: grid; line-height: 1.2; }
.bdw-rail-who strong { font-size: 12px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bdw-rail-who small { font-family: var(--bw-mono); font-size: 11px; color: #6B7380; }
.bdw-rail-more { border: 0; background: transparent; color: #A1A8B3; padding: 4px; border-radius: 4px; }
.bdw-rail-more:hover { background: rgba(255, 255, 255, 0.06); color: #fff; }
.bdw-rail .dropdown-menu { font-size: 13px; }

.bdw-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.bdw-topbar {
  position: sticky; top: 0; z-index: 1020; display: flex; align-items: center; gap: 14px;
  height: 48px; padding: 0 20px; background: var(--bw-surface); border-bottom: 1px solid var(--bw-border);
  font-size: 13px;
}
.bdw-topbar-airline { font-weight: 600; }
.bdw-topbar small { color: var(--bs-tertiary-color); font-size: 11px; margin-right: 4px; }
.bdw-topbar-airline small { margin-left: 4px; font-family: var(--bw-mono); }
.bdw-topbar-sep { width: 1px; height: 20px; background: var(--bw-border); }
.bdw-topbar-item { font-family: var(--bw-mono); }
.bdw-topbar-item small { font-family: var(--bw-font); text-transform: uppercase; letter-spacing: 0.06em; font-size: 10px; }
.bdw-topbar-clock { font-family: var(--bw-mono); font-size: 14px; font-weight: 600; }
.bdw-rail-toggle { display: none; border: 0; background: transparent; font-size: 22px; padding: 0; color: inherit; }
.bdw-content { flex: 1; min-width: 0; padding: 16px 20px 24px; }
.bdw-content > .container, .bdw-content .container { max-width: none; padding-left: 0; padding-right: 0; }
.bdw-rail-backdrop { display: none; }

@media (max-width: 991.98px) {
  .bdw-rail { position: fixed; left: 0; top: 0; transform: translateX(-100%); transition: transform .2s ease; }
  .bdw-rail-open .bdw-rail { transform: none; }
  .bdw-rail-open .bdw-rail-backdrop { display: block; position: fixed; inset: 0; background: rgba(0, 0, 0, .4); z-index: 1025; }
  .bdw-rail-toggle { display: inline-flex; }
  .bdw-topbar { padding: 0 16px; }
  .bdw-content { padding: 12px 16px 20px; }
  .bdw-topbar-sep, .bdw-topbar-item { display: none; }
}
.btn, .btn-sm, .btn-lg { --bs-btn-border-radius: 4px; border-radius: 4px; }
.btn-group > .btn:first-child { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.btn-group > .btn:last-child { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.cc-window.cc-floating { max-width: 22em !important; padding: 0.75em 1em !important; font-size: 12px !important; border-radius: 6px; font-family: var(--bw-font) !important; }
.cc-window .cc-btn { font-size: 12px !important; padding: 0.3em 0.8em !important; border-radius: 4px; }

/* Menu groupé (2026-10-18) : groupes repliables, même structure que le SPA (bdw_nav.php « menu ») */
.bdw-rail-group {
  display: flex; align-items: center; gap: 10px; width: 100%; min-height: 30px; padding: 5px 8px;
  border: 0; border-radius: 4px; background: transparent; color: #A1A8B3;
  font: inherit; font-size: 13px; font-weight: 500; text-align: left; cursor: pointer;
}
.bdw-rail-group span { flex: 1; }
.bdw-rail-group:hover { background: rgba(255, 255, 255, 0.06); color: #F3F4F6; }
.bdw-rail-group.has-active { color: #F3F4F6; }
.bdw-rail-chev { font-size: 11px; opacity: .7; transition: transform .15s ease; }
.bdw-rail-group[aria-expanded="true"] .bdw-rail-chev { transform: rotate(180deg); }
.bdw-rail-sub { display: grid; gap: 1px; margin: 1px 0 4px 18px; padding-left: 10px; border-left: 1px solid rgba(255, 255, 255, 0.08); }
.bdw-rail-sub[hidden] { display: none; }
.bdw-rail-links .bdw-rail-sub a { min-height: 28px; padding: 4px 8px; font-size: 12.5px; }
.bdw-rail-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; background: #6B7380; }
.bdw-rail-dot[data-color="primary"] { background: var(--bw-rose); }
.bdw-rail-dot[data-color="info"] { background: #3b82f6; }
.bdw-rail-dot[data-color="success"] { background: #22c55e; }
.bdw-rail-dot[data-color="warning"] { background: #f59e0b; }
.bdw-rail-dot[data-color="danger"] { background: #ef4444; }
