/* ==========================================================================
   SITE COMMUNS — extrait de admin.css le 04/10/2026 : les seules règles dont
   les sites public (www) et business (pro) ont besoin (formulaires, cartes,
   utilitaires...). Avant, ces deux sites téléchargeaient tout admin.css
   (128 Ko, réservé à l'outil de travail) en chaîne derrière styles.css.
   ⚠️ Un nouveau besoin commun aux pages publiques ET à l'admin : ajouter la
   règle ici ET dans admin.css (l'admin ne charge pas ce fichier-ci).
   ========================================================================== */
table { border-collapse: collapse; }
.field-row { display: flex; gap: var(--space-4); flex-wrap: wrap; }
.field-row > div { flex: 1; min-width: 180px; }
.field-row > div.field-narrow { flex: 0 0 160px; min-width: 140px; }
.field-relative { position: relative; }
.field-row-aligned {
  display: grid; gap: var(--space-4);
  grid-template-columns: repeat(auto-fit, minmax(140px, 200px));
  grid-template-rows: auto auto auto;
}
.field-row-aligned > .field { display: grid; grid-template-rows: subgrid; grid-row: span 3; }
@supports not (grid-template-rows: subgrid) {
  .field-row-aligned > .field { display: block; }
  .field-row-aligned .field-label { min-height: 2lh; }
}
.client-dropdown {
  position: absolute; z-index: 20; top: 100%; left: 0; right: 0;
  background: var(--surface-light-2); border: 1px solid var(--border-light); border-radius: var(--radius-md);
  box-shadow: var(--shadow-md); max-height: 260px; overflow-y: auto; margin-top: 4px;
}
.client-option { padding: var(--space-2) var(--space-3); cursor: pointer; display: flex; justify-content: space-between; gap: var(--space-2); align-items: center; border-bottom: 1px solid var(--border-light); }
.client-option:hover, .client-option.is-active { background: var(--surface-light-3); }
.client-option:last-child { border-bottom-color: transparent; }
@media (max-width: 760px) {
  .card { padding: var(--space-4); }
}
.row { display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap; }
.actions-row { display: flex; gap: var(--space-2); flex-wrap: wrap; }
.divider-top { border-top: 1px solid var(--border-light); padding-top: var(--space-3); }
.is-hidden { display: none !important; }
.mb-3 { margin-bottom: var(--space-3); }
.mb-4 { margin-bottom: var(--space-4); }
.mb-5 { margin-bottom: var(--space-5); }
.mt-2 { margin-top: var(--space-2); }
.mt-3 { margin-top: var(--space-3); }
.mt-5 { margin-top: var(--space-5); }
.text-center { text-align: center; }
.page-title { font-size: var(--text-title-lg); font-weight: var(--weight-bold); margin: 0; }
.form-narrow { max-width: 420px; }
.form-wide { max-width: 640px; }
.error-list { margin: 0; padding-left: 18px; }
.btn-block { width: 100%; }
.gate-icon { font-size: 30px; margin-bottom: var(--space-2); }
.gate-wrap { margin: 0 auto; }
.table-wrap { overflow-x: auto; }
.checkbox-inline { display: flex; align-items: center; gap: var(--space-2); font-size: var(--text-2xs); }
.checkbox-inline input { width: auto; }
.mini-card { padding: var(--space-4); margin-bottom: var(--space-2); border-radius: var(--radius-md); background: var(--surface-light-2); border: 1px solid var(--border-light); transition: border-color 0.15s ease, transform 0.15s ease; }
.mini-card:last-child { margin-bottom: 0; }
.mini-card.card-clickable { cursor: pointer; }
.mini-card.card-clickable:hover { border-color: var(--accent-gold); transform: translateY(-1px); }
.mini-card-resa-actions { display: flex; align-items: center; gap: var(--space-2); }
.mini-card-resa-edit { text-decoration: none; line-height: 1; padding: var(--space-1); }
.mini-card-top { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-3); }
.mini-card-who { font-weight: var(--weight-semibold); }
.mini-card-sub { font-size: var(--text-body-sm); color: var(--text-on-light-secondary); margin-top: 2px; }
.route { display: flex; flex-direction: column; }
.route-dot {
  margin-top: 18px; width: 11px; height: 11px; border-radius: 999px;
  background: var(--surface-light-1); border: 2px solid var(--border-light); z-index: 1;
  transition: border-color 0.2s ease, background-color 0.2s ease, transform 0.2s ease;
}

/* Accessibilité clavier (04/10/2026) — lien « Aller au contenu » : invisible
   tant qu'on ne tabule pas, il apparaît en premier à la touche Tab. */
.skip-link {
  position: absolute; left: 12px; top: -64px; z-index: 100;
  padding: 10px 16px; border-radius: 8px;
  background: #c9a24a; color: #0b0a08; font-weight: 700; text-decoration: none;
  transition: top .15s ease;
}
.skip-link:focus { top: 12px; outline: 2px solid #0b0a08; outline-offset: 2px; }
#contenu:focus { outline: none; }

/* Repère visible au clavier sur les boutons des menus (sans effet à la souris) */
.ps-nav-toggle:focus-visible, .ps-nav-trigger:focus-visible, .ps-nav a:focus-visible, .ps-nav-dropdown a:focus-visible,
.b-nav-toggle:focus-visible, .b-nav-trigger:focus-visible, .b-navlinks a:focus-visible, .b-nav-dropdown a:focus-visible {
  outline: 2px solid #c9a24a; outline-offset: 3px; border-radius: 4px;
}

/* « Réduire les animations » (réglage du téléphone / de l'ordinateur) : filet
   global pour toute transition ou animation oubliée plus haut — hover
   décalés, survols de cartes, défilement doux (04/10/2026). */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important; animation-iteration-count: 1 !important;
    transition-duration: .01ms !important; scroll-behavior: auto !important;
  }
}
