/* Gestion des baux – feuille de style unique (aucune ressource externe) */
:root {
  --fond: #f4f6f8; --carte: #ffffff; --texte: #1f2933; --discret: #5f6b7a; --ligne: #e1e6eb;
  --primaire: #2f4f6f; --primaire-clair: #e8eef4; --accent: #c0841a;
  --ok: #2e7d4f; --ok-fond: #e6f4ec; --alerte: #b5541c; --alerte-fond: #fdf0e6;
  --attente: #6b5bb5; --attente-fond: #efedfa; --erreur: #b3261e; --erreur-fond: #fdecea;
  --rayon: 8px; --ombre: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .08);
}
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body { font-family: "Segoe UI", system-ui, -apple-system, Roboto, Helvetica, Arial, sans-serif; font-size: 14.5px;
       line-height: 1.45; color: var(--texte); background: var(--fond); }
a { color: var(--primaire); text-decoration: none; }
a:hover { text-decoration: underline; }
h1 { font-size: 1.45rem; margin: 0 0 .25rem; }
h2 { font-size: 1.1rem; margin: 1.6rem 0 .6rem; color: var(--primaire); }
h3 { font-size: 1rem; margin: 1rem 0 .4rem; }
.sous-titre { color: var(--discret); margin: 0 0 1rem; }

/* Mise en page */
.app { display: grid; grid-template-columns: 230px 1fr; min-height: 100vh; }
.menu { background: var(--primaire); color: #fff; padding: 1rem .75rem; position: sticky; top: 0; height: 100vh; overflow-y: auto; }
.menu .marque { display: flex; flex-direction: column; gap: .5rem; padding: .25rem .5rem 1rem; border-bottom: 1px solid rgba(255,255,255,.15); margin-bottom: .75rem; }
.menu .marque img { max-width: 100%; max-height: 70px; object-fit: contain; background: #fff; border-radius: 6px; padding: 4px; }
.menu .marque strong { font-size: 1.05rem; }
.menu .marque span { font-size: .8rem; opacity: .75; }
.menu nav a { display: block; color: #e9eef3; padding: .45rem .6rem; border-radius: 6px; margin: 1px 0; }
.menu nav a:hover, .menu nav a.actif { background: rgba(255,255,255,.12); text-decoration: none; color: #fff; }
.menu nav .rubrique { font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; opacity: .6; margin: 1rem .6rem .3rem; }
.menu .badge { float: right; background: var(--accent); color: #fff; border-radius: 10px; padding: 0 .45rem; font-size: .75rem; }
.contenu { min-width: 0; }
.bandeau { height: 120px; background: linear-gradient(120deg, #2f4f6f, #4a6f8f); background-size: cover; background-position: center; }
.barre { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .6rem 1.5rem; background: var(--carte);
         border-bottom: 1px solid var(--ligne); flex-wrap: wrap; }
.barre form { display: flex; gap: .5rem; align-items: center; }
.barre .utilisateur { color: var(--discret); font-size: .9rem; }
main { padding: 1.25rem 1.5rem 3rem; max-width: 1400px; }

/* Cartes, grilles */
.carte { background: var(--carte); border-radius: var(--rayon); box-shadow: var(--ombre); padding: 1rem 1.15rem; margin-bottom: 1rem; }
.carte > h2:first-child, .carte > h3:first-child { margin-top: 0; }
.grille { display: grid; gap: 1rem; }
.grille-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grille-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grille-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.chiffre { font-size: 1.6rem; font-weight: 600; color: var(--primaire); }
.libelle { color: var(--discret); font-size: .85rem; }
dl.infos { display: grid; grid-template-columns: max-content 1fr; gap: .35rem 1rem; margin: 0; }
dl.infos dt { color: var(--discret); }
dl.infos dd { margin: 0; }

/* Tableaux */
.tableau-conteneur { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; background: var(--carte); }
th, td { text-align: left; padding: .5rem .6rem; border-bottom: 1px solid var(--ligne); vertical-align: top; }
th { font-size: .78rem; text-transform: uppercase; letter-spacing: .03em; color: var(--discret); background: #fafbfc; font-weight: 600; }
td.n, th.n { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
tr.total td { font-weight: 700; border-top: 2px solid var(--primaire); }
tr.discret td { color: var(--discret); }
tbody tr:hover { background: #fafcff; }

/* Étiquettes */
.etiquette { display: inline-block; padding: .1rem .5rem; border-radius: 999px; font-size: .78rem; font-weight: 600; white-space: nowrap; }
.etiquette.ok { background: var(--ok-fond); color: var(--ok); }
.etiquette.alerte { background: var(--alerte-fond); color: var(--alerte); }
.etiquette.attente { background: var(--attente-fond); color: var(--attente); }
.etiquette.neutre { background: #eef1f4; color: var(--discret); }
.etiquette.erreur { background: var(--erreur-fond); color: var(--erreur); }

/* Messages */
.messages { list-style: none; padding: 0; margin: 0 0 1rem; }
.messages li { padding: .65rem .9rem; border-radius: var(--rayon); margin-bottom: .5rem; background: var(--primaire-clair); }
.messages li.success { background: var(--ok-fond); color: var(--ok); }
.messages li.error { background: var(--erreur-fond); color: var(--erreur); }
.messages li.warning { background: var(--alerte-fond); color: var(--alerte); }
.avertissement { background: var(--alerte-fond); color: #7a3a10; border-left: 4px solid var(--alerte); padding: .6rem .9rem; border-radius: 4px; margin: .5rem 0; }
.info { background: var(--primaire-clair); border-left: 4px solid var(--primaire); padding: .6rem .9rem; border-radius: 4px; margin: .5rem 0; }

/* Formulaires */
input, select, textarea, button { font: inherit; }
input[type=text], input[type=date], input[type=number], input[type=password], input[type=email], select, textarea {
  padding: .42rem .55rem; border: 1px solid #c8d0d8; border-radius: 6px; background: #fff; max-width: 100%; }
textarea { width: 100%; min-height: 260px; font-family: inherit; }
.bouton, button { display: inline-block; padding: .45rem .9rem; border-radius: 6px; border: 1px solid var(--primaire);
  background: var(--primaire); color: #fff; cursor: pointer; font-weight: 600; text-decoration: none; }
.bouton:hover, button:hover { filter: brightness(1.08); text-decoration: none; }
.bouton.secondaire, button.secondaire { background: #fff; color: var(--primaire); }
.bouton.danger, button.danger { background: var(--erreur); border-color: var(--erreur); }
.bouton.petit, button.petit { padding: .2rem .55rem; font-size: .82rem; }
.actions { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; }
.filtres { display: flex; flex-wrap: wrap; gap: .5rem; align-items: end; margin-bottom: 1rem; }
.filtres label { display: flex; flex-direction: column; font-size: .8rem; color: var(--discret); gap: .2rem; }
.formule { font-family: Consolas, "Courier New", monospace; background: #f6f8fa; padding: .5rem .75rem; border-radius: 6px; }
details summary { cursor: pointer; color: var(--primaire); font-weight: 600; }
.frise { position: relative; border-left: 3px solid var(--primaire-clair); margin-left: .5rem; padding-left: 1rem; }
.frise .evt { margin-bottom: .8rem; }
.frise .evt::before { content: ""; position: absolute; left: -7px; width: 11px; height: 11px; border-radius: 50%; background: var(--primaire); margin-top: .35rem; }

/* Connexion */
.page-connexion { min-height: 100vh; display: grid; place-items: center; background: linear-gradient(135deg, #2f4f6f, #6c8aa8); padding: 1rem; }
.page-connexion .carte { width: 100%; max-width: 420px; padding: 2rem; }
.page-connexion label { display: block; margin: .8rem 0 .25rem; color: var(--discret); }
.page-connexion input { width: 100%; }

@media (max-width: 900px) {
  .app { grid-template-columns: 1fr; }
  .menu { position: static; height: auto; }
  .grille-2, .grille-3, .grille-4 { grid-template-columns: 1fr; }
  main { padding: 1rem; }
  .bandeau { height: 70px; }
}
@media print {
  .menu, .barre, .bandeau, .actions, .filtres, button { display: none !important; }
  .app { display: block; }
  .carte { box-shadow: none; border: 1px solid var(--ligne); }
}
