/* =============================================================================
   webbike.css — feuille de style unique WebBike Honda Genève
   Fusion de : style1.css + style1/{style,atelier,commande,opportunite,location}.css
   Améliorations UX : tailles police, padding, boutons, polices, couleurs agressives
   ============================================================================= */

/* =============================================================================
   RESET ET GLOBALS (ex style1.css)
   ============================================================================= */

body {
  background-color: #ccccff;
}

frame {
  border: 1px solid Blue;
}

form {
  margin: 0;
}

/* Police sans-serif globale */
body, th, td, a {
  font-family: system-ui, -apple-system, sans-serif;
  font-size: 14px;
}

/* Les form elements n'héritent pas automatiquement du navigateur — forcer explicitement.
   On exclut radio/checkbox : le min-height déforme les puces Bootstrap (.form-check-input). */
input:not([type=radio]):not([type=checkbox]), select, button, textarea {
  font-family: system-ui, -apple-system, sans-serif;
  font-size: 14px;
  min-height: 26px;
}

th {
  text-align: left;
}

a { text-decoration: none }
a:hover { text-decoration: underline }

big {
  font-size: 16px;
}

/* =============================================================================
   THÈME PRINCIPAL (ex style1/style.css)
   ============================================================================= */

body {
  color: #ffa331;
  background-color: #12123F;
  margin: 10px;
}

.div_titre_fonction {
  padding-top: 10px;
  padding-bottom: 10px;
  font-size: 20px;
  font-weight: bold;
}

table a:visited { color: #000 }

/* Formulaire de recherche */
.tab_recherche {
  background-color: #0d2137;
  margin-top: 10px;
  margin-bottom: 10px;
  border: dotted 0 #000;
}

.span_err { color: #ff2000; padding-right: 1px; }

.select_resultat {
  font-size: 13px;
  font-family: "Courier New", Courier, Monaco, monospace;
  background-color: #e8e8e8;
  margin: 3px;
  padding: 2px;
  border-color: #ffa500;
  border-width: 1px;
}

.th_nom_champ { font-size: 13px; font-family: system-ui, -apple-system, sans-serif; padding-right: 4px; padding-left: 4px; border: dotted 0 #000; }

.td_saisie_champ {
  font-size: 13px;
  font-family: system-ui, -apple-system, sans-serif;
  padding: 4px;
  border: dotted 0 #000;
}

.td_saisie_champ input {
  font-size: 13px;
  font-family: system-ui, -apple-system, sans-serif;
  background-color: #e8e8e8;
  margin: 1px 3px 1px 6px;
  padding: 2px;
  border: 1px solid #aaa;
}

.td_saisie_champ select {
  font-family: system-ui, -apple-system, sans-serif;
  background-color: #e8e8e8;
  margin: 1px 3px 1px 6px;
  padding: 2px;
  border: 1px solid #aaa;
}

.td_saisie_champ a { color: #e8e8e8; font-size: 13px; font-family: system-ui, -apple-system, sans-serif; margin: 1px 3px; }

.div_comptabilite a:visited, #notes a:visited, .tab_recherche a:visited { color: #808080 !important }

/* ── Drawer détail WB 2.0 (socle Tabulator) ──────────────────────────────── */
/* ⛔ LA LARGEUR EST DÉFINIE DANS `css/app.css`, SECTION « Dialogues », ET NULLE
   PART AILLEURS. Elle l'était ici AUSSI (720 px) et là-bas (min(38rem,100vw) =
   608 px) : deux valeurs, même spécificité, et `webbike.css` chargé APRÈS
   `app.css` (index.php) — c'est donc 720 qui gagnait, en silence, alors que la
   valeur lue et commentée par qui ouvrait le socle était 608. Retiré d'ici le
   15.08.2026.

   ⛔ ET CE RETRAIT A CASSÉ LA LARGEUR PENDANT TROIS JOURS, PARCE QUE LA RAISON
   POUR LAQUELLE 720 GAGNAIT N'AVAIT PAS ÉTÉ COMPRISE. Ce n'était pas d'être
   déclaré deux fois : c'était d'être déclaré dans la SEULE feuille chargée après
   Bootstrap. `app.css` vient AVANT lui, et Bootstrap écrit
   `.offcanvas.offcanvas-end { width: … }` à la même spécificité — donc la règle
   d'`app.css` perdait, et le tiroir est retombé à 400 px sans un mot. Corrigé le
   18.08.2026 : `app.css` règle désormais `--bs-offcanvas-width`, que Bootstrap
   pose sur une seule classe et qui se surcharge donc par spécificité.
   ⚠️ NE PAS REMETTRE DE LARGEUR ICI : ce serait masquer le problème une seconde
   fois, pas le résoudre. */

/* ── Cellule « Véhicule » (dataset location_contrats) ────────────────────── */
/* Ligne 1 : marque/modèle (lien d'aperçu) — Ligne 2 : plaque + badge puissance. */
.wb-vehicule-cell { display: flex; flex-direction: column; gap: 2px; line-height: 1.25; }
.wb-vehicule-titre a { font-weight: 500; }
.wb-vehicule-sub {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.wb-vehicule-plaque { font-size: .8rem; color: #6c757d; }

/* ⛔ UNE PLAQUE DE CONTRAT QUI N'EST PAS CELLE DU PAPIER DOIT SE VOIR SANS
   SURVOL. Les contrats antérieurs au 12.08.2026 n'ont pas de plaque gelée : la
   cellule montre alors l'état COURANT du véhicule. Le pointillé et le point
   d'interrogation disent « valeur reconstituée » ; l'infobulle dit pourquoi et
   ce qu'il ne faut pas en faire (la citer à la police). Sans ce repère, le repli
   se lirait comme une trace — c'est le « plausible et faux » que tout le
   chantier radar cherche à éviter. */
.wb-plaque-non-gelee {
  border-bottom: 1px dotted currentColor;
  cursor: help;
}
/* La plaque du contrat DIFFÈRE de celle d'aujourd'hui : le véhicule a été
   réimmatriculé depuis. Le repère est discret — c'est un contexte, pas une
   alerte — mais il est là, parce que c'est le cas où recopier la plaque
   courante désignerait la mauvaise moto. */
.wb-plaque-changee { color: #997404; cursor: help; }
/* Même mise en garde, portée par une icône seule : dans le tiroir de contrat, la
   plaque est noyée dans un libellé (« HONDA — NOIR — GE151889 ») qu'un soulignage
   marquerait en entier. */
.wb-plaque-non-gelee-icone { color: #997404; cursor: help; }
/* ⚠️ LE CADRE VIENT DE LA CHARTE DEPUIS LE 12.09.2026 (lot X) : la marque est
   un `.et` — un mot réglé dans un filet, sans coin arrondi. Il ne reste ici que
   ce que `.et` ne dit pas, c'est-à-dire la COULEUR, qui est la donnée : la
   catégorie de permis se lit d'un coup d'œil sur une colonne de vingt lignes,
   et trois nuances d'encre ne la rendraient pas. */
.wb-permis-badge {
  border-color: transparent;
}
.wb-permis-a1      { background-color: #d1e7dd; color: #0a3622; } /* A1 ≤ 11 kW */
.wb-permis-alimite { background-color: #fff3cd; color: #664d03; } /* A limité ]11-35] kW */
.wb-permis-a       { background-color: #f8d7da; color: #58151c; } /* A > 35 kW */
/* ⚠️ Puissance non renseignée. Volontairement HACHURÉ et non coloré : les trois
   couleurs ci-dessus disent « voici la catégorie », celle-ci doit dire « il n'y
   en a pas ». Un gris uni se lirait comme une quatrième catégorie, et 19 des 21
   véhicules prêtables sont dans ce cas — l'écran ne doit pas laisser croire
   qu'on connaît leur puissance. */
.wb-permis-inconnu {
  background-image: repeating-linear-gradient(
    45deg, #e9ecef, #e9ecef 4px, #dee2e6 4px, #dee2e6 8px
  );
  color: #495057;
  font-style: italic;
}

/* ── Pastilles de couleur (colonne « Couleur » du parc véhicules) ───────────
   La teinte du certificat d'homologation 13.20A, rendue visible.

   ⚠️ LA BORDURE N'EST PAS DÉCORATIVE. Sans elle, une pastille blanche ou crème
   disparaît sur le fond de la grille : la ligne se lirait « pas de couleur »
   alors qu'elle en porte une. Elle est semi-transparente pour rester discrète
   sur les teintes sombres, où elle ne sert à rien.

   ⚠️ ET ON N'INVENTE PAS DE PASTILLE. Une teinte absente de la palette
   (lib/couleur_normalisation.inc.php) n'obtient aucun carré : le libellé reste
   seul. Un gris de repli se lirait « c'est gris », ce que personne n'a dit. */
.wb-pastille {
  display: inline-block;
  width: 12px;
  height: 12px;
  border-radius: 3px;
  margin-right: 5px;
  vertical-align: -1px;
  border: 1px solid rgba(0, 0, 0, .25);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .18);
}
/* Un deux-tons porte deux pastilles accolées : elles se touchent pour se lire
   comme UNE information (« blanc et rouge »), pas comme deux colonnes. */
.wb-pastille + .wb-pastille { margin-left: -4px; }
.wb-couleur-nom { vertical-align: middle; }

/* ⚠️ Une teinte DÉDUITE se distingue d'une teinte LUE. « Noir » parce que
   quelqu'un a écrit « noir » et « Noir » parce que le code NHA76 est noir
   ailleurs dans la base ne valent pas la même chose : la seconde est une
   inférence — juste 4 246 fois sur ce parc, fausse le jour où le code aura été
   mal recopié. Bordure esquissée plutôt que couleur atténuée : la teinte
   affichée doit rester la vraie, c'est son STATUT qui change. */
.wb-pastille-deduite {
  border-style: dashed;
  border-color: rgba(0, 0, 0, .45);
  box-shadow: none;
}
.wb-couleur-deduite { color: #6c757d; font-style: italic; }

/* Le code couleur dans SA colonne : une référence de commande de pièces, qu'on
   lit caractère par caractère (« NHB44H/BL »). Chiffres à chasse fixe pour que
   deux codes voisins s'alignent et se comparent d'un coup d'œil. */
.wb-couleur-code-cell {
  font-variant-numeric: tabular-nums;
  letter-spacing: .02em;
  white-space: nowrap;
}
