/* FICHIER GÉNÉRÉ — NE PAS ÉDITER À LA MAIN.
   Source : assets/css/rmoto-app.src.css
   Build  : node tools/build-css.js (préfixage #rmoto-root automatique). */

/* RMoto — styles de l'application front.
   Lot 7 (phase CSS 0.9.x) : reprise du design de la démo, par paliers.
   0.9.0 — Fondations : polices auto-hébergées (Outfit, Cascadia Mono ; OFL),
           variables :root (palette démo, préfixe --rmoto-*), typographie de base.
           Les couleurs de thème configurables (primary/tl/sf/tlsfview) sont
           posées ici avec les valeurs démo par défaut ; leur injection
           dynamique depuis la config admin viendra au palier 0.9.1. */

/* --- Polices auto-hébergées (SIL Open Font License ; cf. assets/fonts/*-OFL.txt) --- */
/* Outfit — corps + titres. Graisses 400/500/600/700/800, sous-ensembles latin + latin-ext. */
@font-face {
  font-family: 'Outfit'; font-style: normal; font-weight: 400; font-display: swap;
  src: url('../fonts/outfit-latin-400-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Outfit'; font-style: normal; font-weight: 400; font-display: swap;
  src: url('../fonts/outfit-latin-ext-400-normal.woff2') format('woff2');
  unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Outfit'; font-style: normal; font-weight: 600; font-display: swap;
  src: url('../fonts/outfit-latin-600-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Outfit'; font-style: normal; font-weight: 600; font-display: swap;
  src: url('../fonts/outfit-latin-ext-600-normal.woff2') format('woff2');
  unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Outfit'; font-style: normal; font-weight: 500; font-display: swap;
  src: url('../fonts/outfit-latin-500-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Outfit'; font-style: normal; font-weight: 500; font-display: swap;
  src: url('../fonts/outfit-latin-ext-500-normal.woff2') format('woff2');
  unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Outfit'; font-style: normal; font-weight: 700; font-display: swap;
  src: url('../fonts/outfit-latin-700-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Outfit'; font-style: normal; font-weight: 700; font-display: swap;
  src: url('../fonts/outfit-latin-ext-700-normal.woff2') format('woff2');
  unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Outfit'; font-style: normal; font-weight: 800; font-display: swap;
  src: url('../fonts/outfit-latin-800-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Outfit'; font-style: normal; font-weight: 800; font-display: swap;
  src: url('../fonts/outfit-latin-ext-800-normal.woff2') format('woff2');
  unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
/* Cascadia Mono — texte monospace (.rmoto-mono). Graisse 400. */
@font-face {
  font-family: 'Cascadia Mono'; font-style: normal; font-weight: 400; font-display: swap;
  src: url('../fonts/cascadia-mono-latin-400-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Cascadia Mono'; font-style: normal; font-weight: 400; font-display: swap;
  src: url('../fonts/cascadia-mono-latin-ext-400-normal.woff2') format('woff2');
  unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* --- Variables de design (palette démo ; préfixe --rmoto-* pour ne pas heurter le thème) ---
   Posées sur :root (global) et non sur .rmoto-root, pour que les éléments rendus
   hors de l'arbre .rmoto-root (toasts attachés à <body>, éventuels portals) en
   héritent aussi. Le préfixe --rmoto-* évite toute collision avec le thème Astra. */
:root {
  /* Couleurs neutres (non configurables) */
  --rmoto-bg: #F4F5F7;
  --rmoto-bg-2: #E8EBEF;
  --rmoto-card: #FFFFFF;
  --rmoto-ink: #11181F;
  --rmoto-ink-2: #3D4654;
  --rmoto-muted: #7A8294;
  --rmoto-line: #E1E5EB;
  --rmoto-line-2: #C5CCD5;
  /* Couleurs de thème configurables — valeurs démo par défaut (surchargées dynamiquement au 0.9.1) */
  --rmoto-primary: #0066A1;
  --rmoto-primary-dk: #004B7A;
  --rmoto-primary-tint: #E0EEF8;
  --rmoto-tl: #6B3FB5;
  --rmoto-tl-tint: #EAE4F5;
  --rmoto-tl-dk: #4F2E88;
  --rmoto-sf: #B8801D;
  --rmoto-sf-tint: #F5EDDF;
  --rmoto-sf-dk: #966716;
  --rmoto-tlsf-view: #0A7C6E;
  --rmoto-tlsf-view-tint: #CFE8E4;
  --rmoto-tlsf-view-dk: #075A50;
  /* Couleurs sémantiques fixes */
  --rmoto-olive: #2E7D5F;
  --rmoto-olive-tint: #DDF0E5;
  --rmoto-amber: #B8801D;
  --rmoto-amber-tint: #F5EDDF;
  --rmoto-rouge: #C0392B;
  --rmoto-rouge-tint: #F8DDD8;
  --rmoto-slate: #475569;
  --rmoto-slate-tint: #E2E8F0;
  /* Alias hérités (mappés sur la palette ci-dessus pour cohérence) */
  --rmoto-accent: var(--rmoto-primary);
  --rmoto-danger: var(--rmoto-rouge);
  --rmoto-success: var(--rmoto-olive);
  --rmoto-success-tint: var(--rmoto-olive-tint);
  --rmoto-th-bg: var(--rmoto-bg-2);
  /* Ombres & rayons */
  --rmoto-shadow: 0 1px 0 rgba(17,24,31,0.04), 0 4px 16px rgba(17,24,31,0.06);
  --rmoto-shadow-lg: 0 2px 0 rgba(17,24,31,0.05), 0 18px 40px rgba(17,24,31,0.10);
  --rmoto-r-s: 6px;
  --rmoto-r-m: 10px;
  --rmoto-r-l: 16px;
  --rmoto-logout-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 4 L4 4 L4 20 L9 20'/%3E%3Cpath d='M10 12 L20 12'/%3E%3Cpath d='M16 8 L20 12 L16 16'/%3E%3C/svg%3E");
}

/* Note : les propriétés de mise en page de .rmoto-root et la typographie de base
   sont définies APRÈS le reset A1 ci-dessous, pour ne pas être annulées par `all: revert`. */

/* === A1 — Reset d'indépendance vis-à-vis du thème (Astra) ============================
   La page hébergeant l'app est volontairement nue : on coupe tout héritage du thème
   pour repartir d'une base vierge (comme la démo a été conçue), puis on rebâtit avec
   notre propre CSS ci-dessous. `all: revert` ramène à la feuille de style du navigateur.
   Le périmètre inclut #rmoto-toast-root (toasts rendus hors de #rmoto-root, sur <body>).

   STRATÉGIE DE SPÉCIFICITÉ (corrige le défaut du :where() initial) :
   - Reset : `#rmoto-root *` → spécificité (1,0,0). Bat tout sélecteur Astra
     (`.entry-content button` = 0,1,1 ; `.ast-container .entry-content a` = 0,2,1).
   - Nos composants sont PRÉFIXÉS `#rmoto-root` au build (script tools/build-css.js)
     → `#rmoto-root .rmoto-xxx` = (1,1,0), ce qui bat À LA FOIS le reset (1,0,0) ET
     Astra (≤0,2,1). Hiérarchie garantie : Astra < reset < composants.
   NE PAS mettre ce reset en :where() (spécificité 0 = Astra repasse devant). ======= */
#rmoto-root, #rmoto-root *, #rmoto-root *::before, #rmoto-root *::after, #rmoto-toast-root, #rmoto-toast-root *, #rmoto-toast-root *::before, #rmoto-toast-root *::after {
  all: revert;
}
#rmoto-root, #rmoto-root *, #rmoto-root *::before, #rmoto-root *::after, #rmoto-toast-root, #rmoto-toast-root *, #rmoto-toast-root *::before, #rmoto-toast-root *::after {
  box-sizing: border-box;
}
#rmoto-root, #rmoto-toast-root {
  font-family: 'Outfit', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  line-height: 1.5;
  color: var(--rmoto-ink);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* Les éléments de formulaire (button, input, select, textarea) n'héritent PAS
   de font-family par défaut (user-agent) : après `all: revert`, ils retombent
   en police système. On force l'héritage pour qu'ils reprennent Outfit. */
#rmoto-root button, #rmoto-root input, #rmoto-root select, #rmoto-root textarea, #rmoto-toast-root button, #rmoto-toast-root input, #rmoto-toast-root select, #rmoto-toast-root textarea {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}
#rmoto-root {
  max-width: 1180px;
  margin: 0 auto;
}
/* Padding latéral du contenu (responsive 0.10) : 24px par défaut, 16px <=640px.
 * Sur le wrapper de contenu (le topbar reste pleine largeur via son propre breakout). */
#rmoto-root .rmoto-content-pad { padding: 0 24px; }

/* Neutralisation de la largeur imposée par les conteneurs Astra parents
   (.ast-container, .entry-content) UNIQUEMENT sur une page contenant l'app.
   body:has(#rmoto-root) cible automatiquement toute page hébergeant le shortcode,
   sans dépendre d'un ID de page. Échec gracieux sur très vieux navigateurs sans
   :has() (l'app reste fonctionnelle, simplement à la largeur de contenu d'Astra). */
/* Fond de page aligné démo (#F4F5F7) sur les pages hébergeant l'app. */
body:has(#rmoto-root) { background: var(--rmoto-bg); overflow-x: clip; }
body:has(#rmoto-root) .ast-container,
body:has(#rmoto-root) .entry-content {
  max-width: none;
  padding-left: 0;
  padding-right: 0;
  margin-left: 0;
  margin-right: 0;
  background: transparent;
}
/* === Fin A1 — la suite est notre CSS de composants (priorité dans la cascade) ====== */

/* --- A4 — Typographie de base (alignée démo ; placée après le reset) --- */
#rmoto-root h1, #rmoto-root h2, #rmoto-root h3, #rmoto-root h4 {
  font-family: 'Outfit', sans-serif; font-weight: 800; letter-spacing: -0.01em; text-transform: uppercase; margin: 0;
}
#rmoto-root h1 { font-size: clamp(28px, 5vw, 44px); letter-spacing: -0.02em; }
#rmoto-root h2 { font-size: clamp(22px, 3.5vw, 30px); }
#rmoto-root h3 { font-size: 18px; }
#rmoto-root h4 { font-size: 15px; }
#rmoto-root .rmoto-mono { font-family: 'Cascadia Mono', ui-monospace, 'Courier New', monospace; font-size: 0.92em; }

#rmoto-root .rmoto-card {
  background: #fff;
  border: 1px solid #e3e3e3;
  border-radius: 12px;
  padding: 24px;
  margin: 16px 0;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}

/* === B4 — Boutons (alignés démo) ====================================================
   Base .rmoto-btn = hauteur fixe 40px, Outfit 600, transitions, :active translateY.
   Les hovers sont DÉFINIS ici (spécificité ≥ 0,2,0) → ils battent tout button:hover
   d'Astra (0,1,1), ce qui supprime la fuite du hover bleu, dans tous les contextes
   (loggé ou non). Couleurs via variables --rmoto-*. ================================= */
#rmoto-root .rmoto-btn, #rmoto-root .rmoto-btn-ghost, #rmoto-root .rmoto-btn-danger, #rmoto-root .rmoto-btn-amber, #rmoto-root .rmoto-btn-success {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  height: 40px; padding: 0 16px;
  border: 1px solid transparent; border-radius: var(--rmoto-r-m);
  font-family: 'Outfit', sans-serif; font-weight: 600; font-size: 14px;
  cursor: pointer; user-select: none; white-space: nowrap;
  transition: transform .08s ease, background .15s ease, color .15s ease, border-color .15s ease;
}
#rmoto-root .rmoto-btn {
  background: var(--rmoto-primary); color: #fff;
}
#rmoto-root .rmoto-btn:hover { background: var(--rmoto-primary-dk); }
#rmoto-root .rmoto-btn:active { transform: translateY(1px); }
#rmoto-root .rmoto-btn:disabled { opacity: 0.45; cursor: not-allowed; }

#rmoto-root .rmoto-btn-ghost {
  background: transparent; color: var(--rmoto-ink);
  border: 1px solid var(--rmoto-line-2);
}
#rmoto-root .rmoto-btn-ghost:hover, #rmoto-root .rmoto-btn-ghost:focus-visible {
  background: var(--rmoto-bg-2);
}

/* --- Lot 5b-2 : vue jour --- */
#rmoto-root .rmoto-day-tabs {
  display: flex; flex-wrap: wrap; gap: 4px; margin: 12px 0;
}
#rmoto-root .rmoto-day-tab {
  min-width: 0; padding: 10px 10px; line-height: 1.2; border: 1px solid var(--rmoto-line);
  background: var(--rmoto-card); border-radius: var(--rmoto-r-m); cursor: pointer; text-align: center;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
}
#rmoto-root .rmoto-day-tab.active { border-color: var(--rmoto-primary); background: var(--rmoto-primary-tint); color: var(--rmoto-primary); font-weight: 600; }
#rmoto-root .rmoto-dt-name { font-family: 'Outfit', sans-serif; font-weight: 800; text-transform: uppercase; font-size: 14px; letter-spacing: 0.03em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
#rmoto-root .rmoto-dt-date { font-family: 'Outfit', sans-serif; font-size: 12px; color: var(--rmoto-muted); margin-top: 4px; font-weight: 600; white-space: nowrap; max-width: 100%; }
#rmoto-root .rmoto-day-tab.active .rmoto-dt-date { color: rgba(255,255,255,0.85); }
#rmoto-root .rmoto-day-tab.is-excursion .rmoto-dt-name { overflow: visible; text-overflow: clip; }
#rmoto-root .rmoto-day-tab.is-excursion .rmoto-dt-name::after { content: " \2605"; color: var(--rmoto-amber); }
#rmoto-root .rmoto-day-tab.active.is-excursion .rmoto-dt-name::after { color: #fff; }
/* J5 — mode dense (noms courts, beaucoup de colonnes) */
#rmoto-root .rmoto-day-tab.is-dense { padding: 8px 0; }
#rmoto-root .rmoto-day-tab.is-dense .rmoto-dt-name { letter-spacing: -0.01em; font-size: 13px; }
#rmoto-root .rmoto-day-tab.is-dense .rmoto-dt-date { font-size: 11px; margin-top: 3px; }
/* J4 — jour « stale » (tous les circuits du jour passés) : grisé comme les colonnes/cartes */
#rmoto-root .rmoto-day-tab.is-stale .rmoto-dt-name, #rmoto-root .rmoto-day-tab.is-stale .rmoto-dt-date { color: var(--rmoto-muted); }
#rmoto-root .rmoto-day-tab.is-stale { opacity: 0.72; }
#rmoto-root .rmoto-day-tab.is-stale.active { opacity: 1; }

/* Barre de navigation unifiée par jour (écran participant, fidèle démo) */
#rmoto-root .rmoto-day-tabs-wrap { background: var(--rmoto-bg); padding: 10px 24px 4px; margin-bottom: 14px; border-bottom: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-day-tabs-wrap.is-no-date { border-bottom: none; padding-bottom: 0; margin-bottom: 11px; }
#rmoto-root .rmoto-day-tabs-wrap.is-admin { background: transparent; border-bottom: none; padding-top: 0; }
#rmoto-root .rmoto-day-tabs-wrap .rmoto-day-tabs { margin: 0; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; -ms-overflow-style: none; }
#rmoto-root .rmoto-day-tabs::-webkit-scrollbar { display: none; }
#rmoto-root .rmoto-day-tabs-wrap .rmoto-day-tab { transition: border-color .15s ease, background .15s ease, color .15s ease; }
#rmoto-root .rmoto-day-tabs-wrap .rmoto-day-tab:hover { border-color: var(--rmoto-line-2); }
#rmoto-root .rmoto-day-tabs-wrap .rmoto-day-tab.active { background: var(--rmoto-primary); color: #fff; border-color: var(--rmoto-primary); }

/* J6 - Indicateurs de defilement du selecteur de jour (triangle + fondu). */
#rmoto-root .rmoto-day-tabs-scroll { position: relative; }
#rmoto-root .rmoto-day-tabs-ind { position: absolute; top: 0; bottom: 0; width: 40px; display: flex; align-items: center; pointer-events: none; z-index: 3; opacity: 0; transition: opacity .18s ease; color: var(--rmoto-primary); font-size: 16px; line-height: 1; }
#rmoto-root .rmoto-dti-left { left: 0; justify-content: flex-start; padding-left: 2px; background: linear-gradient(to right, var(--rmoto-bg) 45%, rgba(244,245,247,0)); }
#rmoto-root .rmoto-dti-right { right: 0; justify-content: flex-end; padding-right: 2px; background: linear-gradient(to left, var(--rmoto-bg) 45%, rgba(244,245,247,0)); }
#rmoto-root .rmoto-dti-left::before { content: '\25C0'; }
#rmoto-root .rmoto-dti-right::before { content: '\25B6'; }
#rmoto-root .rmoto-day-tabs-scroll.is-scroll-start .rmoto-dti-left { opacity: 1; }
#rmoto-root .rmoto-day-tabs-scroll.is-scroll-end .rmoto-dti-right { opacity: 1; }
#rmoto-root .rmoto-day-tabs-title { font-family: 'Outfit', sans-serif; font-weight: 800; font-size: 24px; line-height: 1.1; letter-spacing: -0.01em; margin-top: 10px; text-transform: uppercase; color: var(--rmoto-ink); }

#rmoto-root .rmoto-group { margin: 18px 0; }
#rmoto-root .rmoto-group-title { font-size: 15px; color: #555; margin: 0 0 8px; }
#rmoto-root .rmoto-balade-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px;
}
/* Dégradé de demi-journée (D2, valeurs démo) : bandeau teinté sous le group-header,
 * fondu vers transparent. Le JS pose déjà is-morning/is-afternoon sur la grille. */
#rmoto-root .rmoto-balade-grid.is-morning { background: linear-gradient(180deg, #EBF3FC 0%, transparent 100%); padding: 12px; border-radius: 10px; margin-top: 8px; }
#rmoto-root .rmoto-balade-grid.is-afternoon { background: linear-gradient(180deg, #FFFCEB 0%, transparent 100%); padding: 12px; border-radius: 10px; margin-top: 8px; }
#rmoto-root .rmoto-balade {
  border: 1px solid #e3e3e3; border-radius: 12px; padding: 14px; background: #fff;
  position: relative; overflow: hidden; display: flex; flex-direction: column;
}
/* États de carte (fidèles démo). is-mine : barre supérieure 3px + dégradé tint→blanc,
 * en couleur d'allure via --rmoto-mine-accent (posé en inline par BaladeCard ;
 * défaut --rmoto-primary si pas d'allure). is-waiting : barre ambre. is-stale :
 * fond bg-2 + contenu grisé (sauf la barre, conservée en couleur si is-mine). */
#rmoto-root .rmoto-balade.is-mine { border-color: var(--rmoto-mine-accent, var(--rmoto-primary)); background: linear-gradient(180deg, var(--rmoto-mine-accent-tint, var(--rmoto-primary-tint)), #fff 30%); }
#rmoto-root .rmoto-balade.is-mine::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--rmoto-mine-accent, var(--rmoto-primary)); }
#rmoto-root .rmoto-balade.is-waiting { border-color: var(--rmoto-amber); }
#rmoto-root .rmoto-balade.is-waiting::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--rmoto-amber); }
#rmoto-root .rmoto-tlsf-card.is-locked { cursor: default; }
#rmoto-root .rmoto-tlsf-card.is-locked:hover { box-shadow: none; }
#rmoto-root .rmoto-tlsf-daylock { font-size: 13px; color: var(--rmoto-muted); display: inline-flex; align-items: center; gap: 4px; }
/* Bloc pauses TL/SF (lecture seule) : carte (compact) + ecran de pointage (complet) */
#rmoto-root .rmoto-pauses { margin-top: 12px; padding: 10px 12px; background: var(--rmoto-bg); border-radius: var(--rmoto-r-s); border: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-pauses.is-compact { margin-top: 10px; padding: 8px 10px; }
#rmoto-root .rmoto-pauses-title { font-weight: 600; font-size: 15px; color: var(--rmoto-ink-2); margin-bottom: 6px; }
#rmoto-root .rmoto-pauses-gen { font-size: 15px; color: var(--rmoto-ink); font-style: normal; font-weight: 600; background: var(--rmoto-primary-tint); border-left: 3px solid var(--rmoto-primary); padding: 7px 10px; border-radius: var(--rmoto-r-s); margin-bottom: 8px; }
#rmoto-root .rmoto-pause-row { padding: 5px 0; }
#rmoto-root .rmoto-pause-row + .rmoto-pause-row { border-top: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-pause-main { font-size: 15px; color: var(--rmoto-ink); }
#rmoto-root .rmoto-pauses.is-compact .rmoto-pause-main { font-size: 13px; }
#rmoto-root .rmoto-pauses.is-compact .rmoto-pauses-title { font-size: 13px; }
#rmoto-root .rmoto-pauses.is-compact .rmoto-pauses-gen { font-size: 13px; padding: 5px 8px; margin-bottom: 6px; }
#rmoto-root .rmoto-pauses.is-compact .rmoto-pause-tel { font-size: 13px; }
#rmoto-root .rmoto-pause-nom { font-weight: 600; }
#rmoto-root .rmoto-pause-adr { color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-pause-sub { margin-top: 2px; display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: center; }
#rmoto-root .rmoto-pause-tel { color: var(--rmoto-primary); text-decoration: none; font-size: 14px; white-space: nowrap; }
#rmoto-root .rmoto-pause-note { font-size: 14px; font-weight: 500; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-balade.is-stale { background: var(--rmoto-bg-2); border-color: var(--rmoto-line-2); }
#rmoto-root .rmoto-balade.is-stale::before { display: none; }
#rmoto-root .rmoto-balade.is-stale > * { filter: grayscale(1); opacity: 0.62; }
#rmoto-root .rmoto-balade.is-stale.is-mine { border-color: var(--rmoto-mine-accent, var(--rmoto-primary)); }
#rmoto-root .rmoto-balade.is-stale.is-mine::before { display: block; background: var(--rmoto-mine-accent, var(--rmoto-primary)); filter: none; opacity: 1; }

#rmoto-root .rmoto-cap { display: flex; align-items: center; gap: 12px; margin: 12px 0; }
#rmoto-root .rmoto-cap-num { font-family: 'Outfit', sans-serif; font-weight: 800; font-size: 22px; flex: 0 0 auto; min-width: 60px; }
#rmoto-root .rmoto-cap-bar { flex: 1; height: 10px; background: var(--rmoto-bg-2); border-radius: 999px; overflow: hidden; position: relative; }
#rmoto-root .rmoto-cap-fill { height: 100%; transition: width .3s ease, background-color .3s ease; }
#rmoto-root .rmoto-list { margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--rmoto-line); display: flex; flex-direction: column; gap: 6px; }
#rmoto-root .rmoto-list-empty { font-size: 13px; color: #999; font-style: italic; }
#rmoto-root .rmoto-wait { margin-top: 8px; padding-top: 8px; border-top: 1px dotted var(--rmoto-line); }
#rmoto-root .rmoto-wait-title { font-size: 14px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--rmoto-amber); margin-bottom: 4px; }
#rmoto-root .rmoto-balade-actions { margin-top: auto; padding-top: 12px; display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
#rmoto-root .rmoto-muted { color: #888; font-size: 14px; }

@media (max-width: 1080px) {
  #rmoto-root .rmoto-balade-grid { grid-template-columns: repeat(2, 1fr); }
}

/* --- Lot 5b-3 : navigation + overview + programme + profil --- */

/* Programme */

/* Profil / formulaires */
#rmoto-root .rmoto-profile-email { font-weight: 700; padding: 8px 12px; background: #eaf4fa; border-radius: 6px; text-align: center; font-size: 18px; }
#rmoto-root .rmoto-form-row { display: flex; gap: 12px; flex-wrap: wrap; margin: 8px 0; }
#rmoto-root .rmoto-field { flex: 1 1 180px; display: flex; flex-direction: column; gap: 6px; }
#rmoto-root .rmoto-field label { font-size: 12px; font-weight: 600; color: var(--rmoto-ink-2); text-transform: uppercase; letter-spacing: 0.05em; }
#rmoto-root .rmoto-input { height: 44px; padding: 0 14px; font-size: 15px; color: var(--rmoto-ink); background: #fff; border: 1px solid var(--rmoto-line-2); border-radius: var(--rmoto-r-m); width: 100%; box-sizing: border-box; outline: none; transition: border-color .15s ease, box-shadow .15s ease; }
#rmoto-root .rmoto-input:focus { border-color: var(--rmoto-primary); box-shadow: 0 0 0 4px rgba(0, 102, 161, 0.12); }
#rmoto-root select.rmoto-input { padding-right: 36px; -webkit-appearance: none; appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--rmoto-ink-2) 50%), linear-gradient(135deg, var(--rmoto-ink-2) 50%, transparent 50%); background-position: calc(100% - 16px) center, calc(100% - 10px) center; background-size: 6px 6px, 6px 6px; background-repeat: no-repeat; }
#rmoto-root .rmoto-checkbox { display: flex; gap: 8px; align-items: flex-start; padding: 8px 0; cursor: pointer; font-size: 14px; }

/* --- Lot 5c-1 : administration --- */
#rmoto-root .rmoto-admin-tabs { display: flex; gap: 4px; background: var(--rmoto-bg-2); padding: 4px; border-radius: var(--rmoto-r-m); overflow-x: auto; margin-bottom: 12px; }
#rmoto-root .rmoto-admin-tab { flex: 1; min-width: 110px; background: transparent; border: none; padding: 9px 12px; border-radius: var(--rmoto-r-s); font-family: 'Outfit', sans-serif; font-weight: 600; font-size: 14px; line-height: 1.2; cursor: pointer; color: var(--rmoto-ink-2); white-space: nowrap; }
#rmoto-root .rmoto-admin-tab.active { background: var(--rmoto-card); color: var(--rmoto-ink); box-shadow: 0 1px 0 rgba(0,0,0,0.05); }
#rmoto-root .rmoto-admin-tab:disabled { opacity: 0.5; cursor: not-allowed; }

#rmoto-root .rmoto-admin-panel { padding: 12px; border-top: 1px solid #eee; background: #fafafa; }

#rmoto-root .rmoto-btn-sm { height: 32px; padding: 0 12px; font-size: 13px; border-radius: var(--rmoto-r-s); }
#rmoto-root .rmoto-modal-backdrop { position: fixed; inset: 0; background: rgba(17, 24, 31, 0.55); display: flex; align-items: center; justify-content: center; z-index: 9999; padding: 16px; backdrop-filter: blur(2px); animation: rmotoFadeIn .15s ease; }
@keyframes rmotoFadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes rmotoModalIn { from { opacity: 0; transform: translateY(10px) scale(0.98); } to { opacity: 1; transform: none; } }
#rmoto-root .rmoto-modal { position: relative; background: var(--rmoto-card); border: 1px solid var(--rmoto-line); border-radius: var(--rmoto-r-l); padding: 22px; max-width: 480px; width: 100%; max-height: calc(100vh - 32px); overflow-y: auto; box-shadow: var(--rmoto-shadow-lg); animation: rmotoModalIn .2s cubic-bezier(.2, .8, .2, 1); }

/* Bandeau d'avertissement (surréservation). Polish fin/responsive : Lot 7. */
#rmoto-root .rmoto-warn-banner {
  border-radius: 6px; padding: 10px 14px; margin: 10px 0; font-size: 14px;
  background: #fdecea; border: 1px solid #f0a89c; border-left: 4px solid #b00020; color: #8a1500;
}

/* Bannière d'impersonation */
#rmoto-root .rmoto-impersonate-banner {
  background: #3a2a5a; color: #fff; padding: 8px 14px; border-radius: 8px;
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  flex-wrap: wrap; margin-bottom: 10px; font-size: 14px;
}
#rmoto-root .rmoto-impersonate-banner .rmoto-btn-ghost { color: #fff; border-color: rgba(255,255,255,0.5); }

/* Participants (admin) */
#rmoto-root .rmoto-participants-table { border-collapse: collapse; width: 100%; font-size: 13px; }
#rmoto-root .rmoto-participants-table th, #rmoto-root .rmoto-participants-table td { border-bottom: 1px solid var(--rmoto-line); padding: 7px 10px; text-align: left; vertical-align: middle; }
#rmoto-root .rmoto-participants-table th { background: var(--rmoto-bg-2); font-weight: 700; font-size: 13px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--rmoto-ink-2); }

#rmoto-root .rmoto-dup-flag { color: #e08600; cursor: help; }

/* Badges TL/SF dans la liste participants */
#rmoto-root .rmoto-badges { display: inline-flex; gap: 4px; flex-wrap: wrap; }
#rmoto-root .rmoto-badge { display: inline-block; padding: 1px 7px; border-radius: 10px; font-size: 11px; font-weight: 600; white-space: nowrap; }

/* En-têtes de colonne triables */
#rmoto-root .rmoto-th-sort { cursor: pointer; user-select: none; white-space: nowrap; }
#rmoto-root .rmoto-th-sort:hover { background: #ececec; }
#rmoto-root .rmoto-th-sort.active { color: #0066A1; }

/* --- Table des circuits (ride manager) --- */
#rmoto-root .rmoto-totals-banner { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; align-items: center; background: var(--rmoto-bg-2); border-radius: 6px; padding: 12px 20px; margin: 12px 0; font-size: 16px; }
#rmoto-root .rmoto-totals-label { font-weight: 700; }
#rmoto-root .rmoto-admin-card { background: var(--rmoto-card); border: 1px solid var(--rmoto-line); border-radius: var(--rmoto-r-l); box-shadow: var(--rmoto-shadow); padding: 22px; }
#rmoto-root .rmoto-rides-table { border-collapse: collapse; width: 100%; font-size: 15px; background: var(--rmoto-card); }
#rmoto-root .rmoto-rides-table th { background: var(--rmoto-bg-2); text-align: left; padding: 13px 14px; font-family: 'Outfit', sans-serif; font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--rmoto-ink-2); border-bottom: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-rides-table td { padding: 13px 14px; border-bottom: 1px solid var(--rmoto-line); vertical-align: middle; }
#rmoto-root .rmoto-rides-table > thead > tr > th:first-child, #rmoto-root .rmoto-rides-table > tbody > .rmoto-ride-row > td:first-child { padding-right: 4px; }
#rmoto-root .rmoto-rides-table > thead > tr > th:nth-child(2), #rmoto-root .rmoto-rides-table > tbody > .rmoto-ride-row > td:nth-child(2) { padding-left: 4px; }
#rmoto-root .rmoto-rides-table > tbody > .rmoto-ride-row > td:nth-child(2) { font-weight: 700; font-size: 16px; }
#rmoto-root .rmoto-cat-row td { background: linear-gradient(90deg, var(--rmoto-primary-tint), transparent); color: var(--rmoto-primary-dk); font-family: 'Outfit', sans-serif; font-weight: 800; text-transform: uppercase; font-size: 15px; letter-spacing: 0.04em; padding: 12px 14px; border-top: 1px solid var(--rmoto-line); border-bottom: 2px solid var(--rmoto-primary); }
#rmoto-root .rmoto-ride-row { cursor: pointer; }
#rmoto-root .rmoto-ride-row:hover { background: var(--rmoto-bg); }
#rmoto-root .rmoto-ride-row.open { background: var(--rmoto-bg-2); }
#rmoto-root .rmoto-ride-row.open td { border-top: 2px solid var(--rmoto-ink-2); border-bottom-color: transparent; }
#rmoto-root .rmoto-ride-code { white-space: nowrap; color: var(--rmoto-primary); }
#rmoto-root .rmoto-ride-code strong { font-size: 18px; }
#rmoto-root .rmoto-caret { color: var(--rmoto-ink-2); font-size: 16px; font-weight: 700; }
#rmoto-root .rmoto-cap-badge { display: inline-block; padding: 4px 9px; border-radius: 4px; background: var(--rmoto-olive-tint); color: var(--rmoto-olive); font-family: 'Outfit', sans-serif; font-weight: 700; font-size: 12px; border: 1px solid transparent; vertical-align: middle; }
#rmoto-root .rmoto-cap-badge + .rmoto-wait-badge { margin-left: 6px; font-size: 12px; padding: 4px 9px; vertical-align: middle; }
#rmoto-root .rmoto-cap-badge.over { background: var(--rmoto-rouge-tint); color: var(--rmoto-rouge); }
#rmoto-root .rmoto-status-cell { white-space: nowrap; color: var(--rmoto-ink-2); font-weight: 600; font-size: 13px; }
#rmoto-root .rmoto-tlsf-cell { display: flex; flex-direction: column; gap: 3px; font-size: 14px; font-weight: 700; }
#rmoto-root .rmoto-actions-cell { white-space: nowrap; }
#rmoto-root .rmoto-ride-panel-row td { padding: 10px 12px; background: transparent; border-bottom: 2px solid var(--rmoto-ink-2); }

/* --- Onglet Configuration --- */
#rmoto-root .rmoto-config-subtabs { display: flex; gap: 4px; background: var(--rmoto-bg-2); padding: 3px; border-radius: var(--rmoto-r-m); overflow-x: auto; margin-bottom: 12px; }
#rmoto-root .rmoto-config-subtab { flex: 1; min-width: 90px; background: transparent; border: none; padding: 6px 10px; border-radius: var(--rmoto-r-s); font-family: 'Outfit', sans-serif; font-weight: 600; font-size: 12px; line-height: 1.2; cursor: pointer; color: var(--rmoto-ink-2); white-space: nowrap; }
#rmoto-root .rmoto-config-subtab.active { background: var(--rmoto-card); color: var(--rmoto-ink); box-shadow: 0 1px 0 rgba(0,0,0,0.05); }
#rmoto-root .rmoto-config-title { font-size: 18px; text-transform: uppercase; letter-spacing: 0.03em; margin: 0 0 16px; color: #333; }
#rmoto-root .rmoto-config-subtitle { font-size: 14px; text-transform: uppercase; letter-spacing: 0.04em; color: #0066A1; margin: 24px 0 4px; }
#rmoto-root .rmoto-config-hint { font-size: 14px; color: var(--rmoto-ink-2); line-height: 1.45; margin-bottom: 8px; }
#rmoto-root .rmoto-config-row3 { display: grid; grid-template-columns: 2fr 2fr 1fr; gap: 18px; align-items: start; }
#rmoto-root .rmoto-config-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; align-items: start; }
#rmoto-root .rmoto-textarea { height: auto; padding: 10px 14px; resize: vertical; }
#rmoto-root .rmoto-logo-preview { display: flex; align-items: center; gap: 10px; margin-top: 10px; }
#rmoto-root .rmoto-logo-preview img { width: 48px; height: 48px; object-fit: cover; border-radius: 8px; border: 1px solid #e0e0e0; }
#rmoto-root .rmoto-colors-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-top: 8px; }
#rmoto-root .rmoto-color-field { display: flex; align-items: center; gap: 8px; }
#rmoto-root .rmoto-color-swatch { position: relative; width: 36px; height: 36px; border-radius: 8px; border: 1px solid #ccc; overflow: hidden; flex-shrink: 0; }
#rmoto-root .rmoto-color-input { position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; height: 100%; }
#rmoto-root .rmoto-color-hex { width: 100%; font-family: monospace; }
#rmoto-root .rmoto-role-row { display: grid; grid-template-columns: 70px 2fr 2fr 1fr 1fr; gap: 12px; align-items: start; margin-bottom: 12px; }
#rmoto-root .rmoto-role-label { font-weight: 700; padding-top: 26px; }
#rmoto-root .rmoto-input-short { width: 100%; }
#rmoto-root .rmoto-config-save-row { display: flex; justify-content: center; align-items: center; gap: 14px; margin: 10px 0 18px; }

/* --- Encadrement (Lot 8) : phase + suivi + Grist --- */
#rmoto-root .rmoto-enc-block { margin-bottom: 22px; }
#rmoto-root .rmoto-enc-block + .rmoto-enc-block { border-top: 1px solid var(--rmoto-line); padding-top: 18px; }
#rmoto-root .rmoto-enc-phase-current { font-size: 14px; margin-bottom: 10px; }
#rmoto-root .rmoto-enc-phase-list { display: flex; flex-direction: column; gap: 8px; margin-bottom: 12px; }
#rmoto-root .rmoto-enc-phase-opt { display: grid; grid-template-columns: 18px 1fr; align-items: start; gap: 4px 10px; padding: 10px 12px; border: 1px solid var(--rmoto-line); border-radius: var(--rmoto-r-s); cursor: pointer; }
#rmoto-root .rmoto-enc-phase-opt.active { border-color: var(--rmoto-primary); background: rgba(0,102,161,0.04); }
#rmoto-root .rmoto-enc-phase-opt input { grid-row: 1 / span 2; margin-top: 2px; }
#rmoto-root .rmoto-enc-phase-name { font-weight: 700; font-size: 14px; color: var(--rmoto-ink); }
#rmoto-root .rmoto-enc-phase-desc { grid-column: 2; font-size: 12px; color: var(--rmoto-muted); line-height: 1.4; }
#rmoto-root .rmoto-enc-resp-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; font-size: 14px; }
#rmoto-root .rmoto-enc-resp-list { display: flex; flex-direction: column; gap: 2px; }
#rmoto-root .rmoto-enc-resp-row { display: grid; grid-template-columns: 1fr 1fr auto; align-items: center; gap: 10px; padding: 7px 10px; border-radius: var(--rmoto-r-s); font-size: 13px; }
#rmoto-root .rmoto-enc-resp-row:nth-child(odd) { background: var(--rmoto-bg); }
#rmoto-root .rmoto-enc-resp-name { font-weight: 600; color: var(--rmoto-ink); }
#rmoto-root .rmoto-enc-resp-mail { font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#rmoto-root .rmoto-enc-resp-state { font-size: 12px; color: var(--rmoto-muted); text-align: right; }
#rmoto-root .rmoto-enc-resp-state.ok { color: #2E7D5F; font-weight: 600; }
#rmoto-root .rmoto-enc-adv-toggle { margin: 4px 0 12px; }
#rmoto-root .rmoto-enc-test { font-size: 13px; font-weight: 600; margin-top: 6px; }
#rmoto-root .rmoto-enc-test.ok { color: #2E7D5F; }
#rmoto-root .rmoto-enc-test.fail { color: #B83232; }

/* --- Encadrement (Lot 8 / palier B2) : import du programme d'affectations --- */
#rmoto-root .rmoto-import-drop { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 4px 0 0; padding: 14px 16px; border: 1.5px dashed var(--rmoto-line-2); border-radius: var(--rmoto-r-m); background: #FBFCFD; }
#rmoto-root .rmoto-import-file { position: relative; display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border: 1px solid var(--rmoto-line-2); border-radius: var(--rmoto-r-m); background: #fff; color: var(--rmoto-ink-2); font-weight: 600; font-size: 13.5px; cursor: pointer; }
#rmoto-root .rmoto-import-file:hover { background: var(--rmoto-bg); }
#rmoto-root .rmoto-import-file-input { position: absolute; inset: 0; opacity: 0; width: 100%; height: 100%; cursor: pointer; }
#rmoto-root .rmoto-import-nofile { font-size: 13px; }
#rmoto-root .rmoto-import-chip { display: inline-flex; align-items: center; gap: 8px; padding: 7px 10px; background: #fff; border: 1px solid var(--rmoto-line); border-radius: var(--rmoto-r-s); font-size: 13.5px; }
#rmoto-root .rmoto-import-chip-name { font-weight: 600; }
#rmoto-root .rmoto-import-chip-rm { color: var(--rmoto-muted); cursor: pointer; font-size: 14px; line-height: 1; }
#rmoto-root .rmoto-import-chip-rm:hover { color: var(--rmoto-rouge); }
#rmoto-root .rmoto-import-syn-hint { font-size: 13px; }
#rmoto-root .rmoto-import-result { margin-top: 16px; padding: 15px 16px; border-radius: var(--rmoto-r-m); border: 1px solid; }
#rmoto-root .rmoto-import-result.ok { background: var(--rmoto-tlsf-view-tint); border-color: #A9D6CE; }
#rmoto-root .rmoto-import-result.err { background: var(--rmoto-rouge-tint); border-color: #EEC2BA; }
#rmoto-root .rmoto-import-result-title { font-size: 15px; font-weight: 700; margin-bottom: 4px; }
#rmoto-root .rmoto-import-result.ok .rmoto-import-result-title { color: var(--rmoto-tlsf-view-dk); }
#rmoto-root .rmoto-import-result.err .rmoto-import-result-title { color: var(--rmoto-rouge); }
#rmoto-root .rmoto-import-result p { margin: 0; font-size: 13.5px; line-height: 1.55; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-import-result .rmoto-config-save-row { margin-top: 14px; }
#rmoto-root .rmoto-import-stats { display: flex; flex-wrap: wrap; gap: 8px; margin: 13px 0 2px; }
#rmoto-root .rmoto-import-stat { background: #fff; border: 1px solid #A9D6CE; border-radius: var(--rmoto-r-s); padding: 7px 12px; min-width: 92px; }
#rmoto-root .rmoto-import-stat-n { font-size: 18px; font-weight: 700; color: var(--rmoto-ink); }
#rmoto-root .rmoto-import-stat-k { font-size: 11.5px; font-weight: 600; color: var(--rmoto-muted); }
#rmoto-root .rmoto-import-complete { display: inline-flex; align-items: center; gap: 6px; margin-top: 12px; padding: 4px 10px; background: var(--rmoto-tlsf-view); color: #fff; font-size: 11.5px; font-weight: 700; border-radius: 99px; }
#rmoto-root .rmoto-import-table { width: 100%; border-collapse: collapse; margin: 12px 0 2px; font-size: 13px; }
#rmoto-root .rmoto-import-table th { text-align: left; font-size: 11px; letter-spacing: .04em; text-transform: uppercase; color: var(--rmoto-muted); font-weight: 700; padding: 6px 10px; border-bottom: 1px solid #EEC2BA; }
#rmoto-root .rmoto-import-table td { padding: 7px 10px; border-bottom: 1px solid #F3D8D2; color: var(--rmoto-ink); }
#rmoto-root .rmoto-import-code { font-family: ui-monospace, 'Cascadia Mono', Menlo, Consolas, monospace; font-weight: 600; font-size: 12.5px; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-import-pill { display: inline-block; font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 99px; }
#rmoto-root .rmoto-import-pill.plein { background: var(--rmoto-primary-tint); color: var(--rmoto-primary-dk); }
#rmoto-root .rmoto-import-pill.matin { background: var(--rmoto-tl-tint); color: var(--rmoto-tl-dk); }
#rmoto-root .rmoto-import-pill.aprem { background: var(--rmoto-sf-tint); color: var(--rmoto-sf-dk); }
#rmoto-root .rmoto-import-mismatch-hint { margin-top: 10px !important; padding-left: 12px; border-left: 3px solid var(--rmoto-rouge); }

/* --- Encadrement (Lot 8) : bandeau CTA + vue preferences participant --- */
#rmoto-root .rmoto-enc-cta { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin: 0 0 14px; padding: 14px 18px; background: var(--rmoto-primary); color: #fff; border-radius: var(--rmoto-r-s); }
#rmoto-root .rmoto-enc-cta-text { font-size: 14px; line-height: 1.4; }
#rmoto-root .rmoto-enc-cta-text strong { display: block; font-size: 15px; }
#rmoto-root .rmoto-enc-cta .rmoto-btn { background: #fff; color: var(--rmoto-primary); border-color: #fff; }
#rmoto-root .rmoto-pref-wrap { display: flex; flex-direction: column; gap: 14px; }
#rmoto-root .rmoto-pref-h2 { margin: 0 0 6px; }
#rmoto-root .rmoto-pref-eyebrow { font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--rmoto-primary); margin: 0 0 4px; }
#rmoto-root .rmoto-pref-lede { color: var(--rmoto-ink-2); line-height: 1.5; margin: 0; }
#rmoto-root .rmoto-pref-sent-note { margin: 10px 0 0; padding: 8px 12px; background: var(--rmoto-bg); border-radius: var(--rmoto-r-s); font-size: 15px; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-pref-hint { font-size: 15px; color: var(--rmoto-muted); line-height: 1.45; margin: 8px 0 0; }
#rmoto-root .rmoto-pref-caps-row { font-size: 15px; margin-top: 6px; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
#rmoto-root .rmoto-pref-caps-hint { font-size: 15px; color: var(--rmoto-muted); margin: 10px 0 0; }
#rmoto-root .rmoto-pref-caps-badges { display: inline-flex; gap: 6px; flex-wrap: wrap; }
#rmoto-root .rmoto-pref-fieldlab { font-weight: 700; font-size: 13px; margin: 16px 0 8px; }
#rmoto-root .rmoto-pref-opts { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
#rmoto-root .rmoto-pref-opt { display: flex; align-items: stretch; width: 100%; text-align: left; background: var(--rmoto-card); border: 1px solid var(--rmoto-line); border-radius: var(--rmoto-r-s); padding: 0; overflow: hidden; cursor: pointer; }
#rmoto-root .rmoto-pref-opt:disabled { cursor: default; opacity: .85; }
#rmoto-root .rmoto-pref-opt.pressed { border-color: var(--rmoto-primary); box-shadow: 0 0 0 1px var(--rmoto-primary) inset; }
#rmoto-root .rmoto-pref-band { flex: 0 0 6px; }
#rmoto-root .rmoto-pref-opt-body { flex: 1; display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; }
#rmoto-root .rmoto-pref-opt-name { font-weight: 700; color: var(--rmoto-ink); }
#rmoto-root .rmoto-pref-opt-meta { display: flex; flex-wrap: wrap; gap: 4px 12px; font-size: 12px; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-pref-days { font-size: 13px; font-weight: 600; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-pref-type { color: var(--rmoto-muted); }
#rmoto-root .rmoto-pref-tick { flex: 0 0 34px; display: flex; align-items: center; justify-content: center; font-weight: 700; color: var(--rmoto-primary); }
#rmoto-root .rmoto-pref-empty { padding: 16px; text-align: center; color: var(--rmoto-muted); background: var(--rmoto-bg); border-radius: var(--rmoto-r-s); margin-top: 10px; }
#rmoto-root .rmoto-pref-rb { display: flex; flex-direction: column; gap: 6px; }
#rmoto-root .rmoto-pref-rb-empty { font-size: 13px; color: var(--rmoto-muted); margin: 0; }
#rmoto-root .rmoto-pref-rb-row { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--rmoto-line); border-radius: var(--rmoto-r-s); }
#rmoto-root .rmoto-pref-rb-rank { flex: 0 0 26px; height: 26px; border-radius: 50%; color: #fff; font-weight: 700; font-size: 13px; display: flex; align-items: center; justify-content: center; }
#rmoto-root .rmoto-pref-rb-body { flex: 1; display: flex; flex-direction: column; }
#rmoto-root .rmoto-pref-rb-name { font-weight: 600; color: var(--rmoto-ink); }
#rmoto-root .rmoto-pref-rb-sub { font-size: 12px; color: var(--rmoto-muted); }
#rmoto-root .rmoto-pref-rb-act { display: flex; gap: 4px; }
#rmoto-root .rmoto-iconbtn { border: 1px solid var(--rmoto-line); background: var(--rmoto-card); border-radius: 8px; width: 30px; height: 30px; cursor: pointer; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-iconbtn:disabled { opacity: .4; cursor: default; }
#rmoto-root .rmoto-iconbtn.del { color: #B83232; }
#rmoto-root .rmoto-pref-roles-wrap { margin-top: 6px; }
#rmoto-root .rmoto-pref-roles { display: inline-flex; gap: 6px; background: var(--rmoto-bg); padding: 5px; border-radius: 11px; }
#rmoto-root .rmoto-pref-role { border: 0; background: transparent; color: var(--rmoto-ink-2); font: inherit; font-weight: 600; padding: 6px 12px; border-radius: 8px; cursor: pointer; }
#rmoto-root .rmoto-pref-role.active { background: var(--rmoto-card); color: var(--rmoto-ink); box-shadow: 0 1px 2px rgba(0,0,0,.08); }
#rmoto-root .rmoto-pref-dl { display: grid; grid-template-columns: auto 1fr; gap: 4px 16px; margin: 8px 0 0; }
#rmoto-root .rmoto-pref-dl dt { font-weight: 700; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-pref-dl dd { margin: 0; }
#rmoto-root .rmoto-pref-notice { display: flex; gap: 8px; margin-top: 14px; padding: 14px; background: var(--rmoto-bg); border-radius: var(--rmoto-r-s); font-size: 15px; line-height: 1.5; }
#rmoto-root .rmoto-pref-nav { display: flex; justify-content: space-between; gap: 12px; }
#rmoto-root .rmoto-pref-nav-end { justify-content: flex-end; }
#rmoto-root .rmoto-pref-sent { text-align: center; }
#rmoto-root .rmoto-pref-sent-check { font-size: 34px; color: #2E7D5F; }
#rmoto-root .rmoto-pref-sent-big { font-size: 18px; font-weight: 700; margin-top: 4px; }
#rmoto-root .rmoto-pref-loading { text-align: center; color: var(--rmoto-muted); padding: 24px; }
#rmoto-root .rmoto-pref-reserved { text-align: center; }
#rmoto-root .rmoto-pref-half-note { font-size: 12.5px; color: var(--rmoto-ink-2); line-height: 1.45; margin: 12px 0 0; padding: 9px 11px; background: var(--rmoto-bg); border-radius: var(--rmoto-r-s); }
#rmoto-root .rmoto-enc-cols { display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px 14px; margin-bottom: 14px; padding: 12px; background: var(--rmoto-bg); border-radius: var(--rmoto-r-s); }
#rmoto-root .rmoto-config-save-btn { font-size: 16px; font-weight: 700; padding: 10px 28px; }
@media (max-width: 700px) {
  #rmoto-root .rmoto-config-row3, #rmoto-root .rmoto-config-row2, #rmoto-root .rmoto-colors-row { grid-template-columns: 1fr; }
  #rmoto-root .rmoto-role-row { grid-template-columns: 1fr 1fr; }
  #rmoto-root .rmoto-role-label { padding-top: 0; grid-column: 1 / -1; }
}

/* --- Calendrier : table des jours --- */
#rmoto-root .rmoto-input-sm { height: auto; padding: 5px 8px; font-size: 13px; }
/* --- Excursions --- */
#rmoto-root .rmoto-excursion-day { background: #f7f0e3; border-left: 4px solid #d9a93a; border-radius: 8px; padding: 14px 16px; margin-top: 14px; }
#rmoto-root .rmoto-excursion-day-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 10px; font-size: 16px; }
#rmoto-root .rmoto-excursion-card { background: #fff; border: 1px solid #e6dcc6; border-radius: 8px; padding: 14px 16px; margin-top: 10px; }
#rmoto-root .rmoto-btn-danger { background: transparent; color: var(--rmoto-rouge); border-color: var(--rmoto-rouge); }
#rmoto-root .rmoto-btn-danger:hover { background: var(--rmoto-rouge-tint); }

/* --- Excursions côté participant --- */
#rmoto-root .rmoto-excursion-card-pub { background: linear-gradient(135deg, #FFF8EC, #FFE8C5); border: 1px solid #B8801D; border-radius: 10px; padding: 18px 20px; margin-bottom: 16px; position: relative; overflow: hidden; }
#rmoto-root .rmoto-excursion-card-pub::after { content: "\2605"; position: absolute; top: -10px; right: 20px; font-size: 90px; line-height: 1; color: rgba(184,128,29,0.14); pointer-events: none; }
#rmoto-root .rmoto-excursion-title { margin: 0 0 4px; font-size: 20px; color: var(--rmoto-primary-dk); position: relative; }
#rmoto-root .rmoto-excursion-count { font-size: 15px; font-weight: 600; color: #666; }
#rmoto-root .rmoto-excursion-body { margin-top: 12px; white-space: pre-wrap; font-size: 15px; line-height: 1.5; }
#rmoto-root .rmoto-excursion-list { margin-top: 14px; padding-left: 22px; }
#rmoto-root .rmoto-excursion-list li { padding: 3px 0; font-size: 15px; color: var(--rmoto-ink); }
#rmoto-root .rmoto-excursion-list li.is-me { font-weight: 700; color: #0066A1; }

/* Excursion dans Mon programme (carte ambre) */

/* --- Toasts --- */
#rmoto-toast-root { position: fixed; inset: 0; pointer-events: none; z-index: 9999; }
#rmoto-toast-root .rmoto-toasts { position: fixed; top: 16px; right: 16px; left: 16px; display: flex; flex-direction: column; gap: 8px; pointer-events: none; }
@media (min-width: 600px) { #rmoto-toast-root .rmoto-toasts { left: auto; max-width: 380px; } }
#rmoto-toast-root .rmoto-toast { background: #fff; color: #222; padding: 12px 16px; border-radius: 10px; font-size: 14px; line-height: 1.4; box-shadow: 0 8px 28px rgba(0,0,0,0.16); pointer-events: auto; border-left: 5px solid #888; animation: rmotoToastIn .25s ease; }
#rmoto-toast-root .rmoto-toast-title { font-weight: 700; margin-bottom: 3px; }
#rmoto-toast-root .rmoto-toast-success { border-left-color: #2e7d32; }
#rmoto-toast-root .rmoto-toast-error { border-left-color: #b00020; }
#rmoto-toast-root .rmoto-toast-warn { border-left-color: #e08600; }
#rmoto-toast-root .rmoto-toast-info { border-left-color: #0066A1; }
@keyframes rmotoToastIn { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }
/* Toasts centrés (messages importants) */
#rmoto-toast-root .rmoto-toasts-center { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); display: flex; flex-direction: column; gap: 12px; pointer-events: none; align-items: center; width: calc(100% - 32px); max-width: 520px; }
#rmoto-toast-root .rmoto-toast-center { background: #fff; color: #222; padding: 18px 22px; border-radius: 14px; font-size: 16px; line-height: 1.45; box-shadow: 0 12px 40px rgba(0,0,0,0.18); pointer-events: auto; border: 2px solid #e08600; border-left-width: 6px; animation: rmotoToastCenterIn .3s ease; max-width: 100%; }
#rmoto-toast-root .rmoto-toast-center-title { font-weight: 800; font-size: 18px; color: #e08600; margin-bottom: 6px; }
@keyframes rmotoToastCenterIn { from { opacity: 0; transform: scale(0.96); } to { opacity: 1; transform: scale(1); } }

/* --- Topbar --- */
#rmoto-root .rmoto-topbar { background: var(--rmoto-bg); border-bottom: 1px solid var(--rmoto-line); padding: 12px 0; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); }
#rmoto-root .rmoto-topbar-title-row { display: none; font-family: 'Outfit', sans-serif; font-weight: 800; font-size: 18px; letter-spacing: -0.01em; color: var(--rmoto-ink); text-align: center; padding-bottom: 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#rmoto-root .rmoto-topbar-main { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; max-width: 1180px; margin: 0 auto; padding: 0 24px; }
#rmoto-root .rmoto-brand { display: flex; align-items: center; gap: 12px; min-width: 0; }
#rmoto-root .rmoto-brand-mark { width: 40px; height: 40px; flex: 0 0 40px; border-radius: 50%; background: var(--rmoto-primary); color: #fff; font-family: 'Outfit', sans-serif; font-weight: 800; font-size: 14px; letter-spacing: 0.04em; display: flex; align-items: center; justify-content: center; box-shadow: inset 0 0 0 3px var(--rmoto-bg); border: 1px solid var(--rmoto-primary-dk); overflow: hidden; }
#rmoto-root .rmoto-brand-mark.has-logo { background: var(--rmoto-card); border-color: var(--rmoto-line); box-shadow: none; padding: 0; }
#rmoto-root .rmoto-brand-mark.has-logo img { width: 100%; height: 100%; object-fit: cover; }
#rmoto-root .rmoto-brand-title { min-width: 0; line-height: 1.15; }
#rmoto-root .rmoto-brand-t1 { font-family: 'Outfit', sans-serif; font-weight: 800; font-size: 17px; letter-spacing: -0.01em; text-transform: uppercase; color: var(--rmoto-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#rmoto-root .rmoto-brand-t2 { display: flex; align-items: center; gap: 8px; margin-top: 3px; font-size: 12px; color: var(--rmoto-muted); }
#rmoto-root .rmoto-topbar-user-btn { background: none; border: none; padding: 0; margin: 0; font-family: 'Outfit', sans-serif; font-size: 14px; font-weight: 700; color: var(--rmoto-ink); cursor: pointer; white-space: nowrap; }
#rmoto-root .rmoto-fn-init { display: none; }
#rmoto-root .rmoto-topbar-user-btn:hover { text-decoration: underline; text-underline-offset: 3px; }
#rmoto-root .rmoto-role-badge { display: inline-flex; align-items: center; padding: 1px 6px; border-radius: 3px; font-size: 10px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; background: var(--rmoto-tl-tint); color: var(--rmoto-tl-dk); white-space: nowrap; }
#rmoto-root .rmoto-adm-init { display: none; }
#rmoto-root .rmoto-role-tlsf { background: var(--rmoto-tlsf-view); color: #fff; }
#rmoto-root .rmoto-topbar-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; margin-left: auto; }
#rmoto-root .rmoto-lang-switch { display: inline-flex; height: 32px; border: 1px solid var(--rmoto-line-2); border-radius: var(--rmoto-r-s); overflow: hidden; }
#rmoto-root .rmoto-lang-btn { display: inline-flex; align-items: center; background: transparent; border: none; padding: 0 12px; cursor: pointer; font-family: 'Outfit', sans-serif; font-size: 13px; font-weight: 600; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-lang-btn.active { background: var(--rmoto-primary); color: #fff; }
#rmoto-root .rmoto-btn-tlsf { background: var(--rmoto-tlsf-view); color: #fff; }
#rmoto-root .rmoto-btn-tlsf:disabled { opacity: 0.55; cursor: not-allowed; }
#rmoto-root .rmoto-hide-desk { display: none; }
#rmoto-root .rmoto-logout-icon { align-items: center; color: var(--rmoto-ink); }
/* Icône « porte de sortie » dessinée en CSS via un masque SVG (data URI). Aucun <svg>
   dans le DOM React → on évite les écueils de namespace/casse de viewBox au montage
   client (wp-element). La couleur suit le bouton via background-color: currentColor. */
#rmoto-root .rmoto-logout-icon::before {
  content: ""; display: block; width: 20px; height: 20px;
  background-color: currentColor;
  -webkit-mask: var(--rmoto-logout-mask) center / 20px 20px no-repeat;
  mask: var(--rmoto-logout-mask) center / 20px 20px no-repeat;
}
@media (max-width: 640px) {
  #rmoto-root .rmoto-topbar-title-row { display: block; }
  #rmoto-root .rmoto-brand-t1 { display: none; }
  #rmoto-root .rmoto-brand-mark { display: none; }
  #rmoto-root .rmoto-hide-mobile { display: none; }
  #rmoto-root .rmoto-hide-desk { display: inline-flex; align-items: center; }
  /* Padding latéral resserré sur téléphone. */
  #rmoto-root .rmoto-content-pad, #rmoto-root .rmoto-topbar-main, #rmoto-root .rmoto-day-tabs-wrap { padding-left: 16px; padding-right: 16px; }
  /* Grille des circuits : 1 colonne. */
  #rmoto-root .rmoto-balade-grid { grid-template-columns: 1fr; }
  /* Top bar resserree (0.10.5) : on recupere de la hauteur sans deplacer le contenu. */
  #rmoto-root .rmoto-topbar { padding: 6px 0; }
  #rmoto-root .rmoto-topbar-title-row { font-size: 15px; padding-bottom: 2px; }
  /* TL/SF mobile : le bouton vert "Vue TL/SF" signale deja le role -> on retire le badge
   * et on habille le nom d'une puce verte (fond transparent, texte conserve en noir). */
  #rmoto-root .rmoto-role-badge.rmoto-role-tlsf { display: none; }
  #rmoto-root .rmoto-topbar-user-tlsf { border: 1px solid var(--rmoto-tlsf-view, #0A7C6E); background: var(--rmoto-tlsf-view-tint, #CFE8E4); border-radius: 4px; padding: 2px 8px; }
  #rmoto-root .rmoto-fn-full { display: none; }
  #rmoto-root .rmoto-fn-init { display: inline; }
  #rmoto-root .rmoto-adm-full { display: none; }
  #rmoto-root .rmoto-adm-init { display: inline; }
  #rmoto-root .rmoto-topbar-actions .rmoto-lang-switch, #rmoto-root .rmoto-topbar-actions .rmoto-btn-sm { height: 28px; }
  #rmoto-root .rmoto-day-tabs-wrap { padding-top: 5px; margin-bottom: 8px; }
  #rmoto-root .rmoto-day-tabs-wrap.is-no-date { margin-bottom: 5px; }
  /* Vue jour resserree (0.10.7 - niveau Fort). */
  #rmoto-root .rmoto-day-tabs-title { font-size: 18px; margin-top: 6px; }
  #rmoto-root .rmoto-info-banner { font-size: 13px; padding: 6px 11px; margin-top: 8px; }
  #rmoto-root .rmoto-group-header { padding: 6px 11px; margin: 16px 0 8px; }
  #rmoto-root .rmoto-group-header .rmoto-group-title { font-size: 15px; }
  #rmoto-root .rmoto-pace-filter-pill { font-size: 11px; padding: 3px 9px; }
  #rmoto-root .rmoto-pace-badge { font-size: 11px; padding: 3px 8px; }
  #rmoto-root .rmoto-balade { padding: 9px; }
  #rmoto-root .rmoto-b-time { display: none; }                 /* badge statut remonte dans l'en-tete */
  #rmoto-root .rmoto-b-head .rmoto-b-head-time { display: inline-flex; }     /* ... sous forme courte */
  #rmoto-root .rmoto-b-head .rmoto-b-head-time, #rmoto-root .rmoto-b-head .rmoto-pace-badge { box-sizing: border-box; height: 20px; padding: 0 8px; font-size: 11px; line-height: 1; align-items: center; }
  #rmoto-root .rmoto-b-tlsf { margin: 5px 0; padding: 2px 9px; font-size: 12px; }
  #rmoto-root .rmoto-cap { margin: 5px 0; }
  #rmoto-root .rmoto-b-cutoff { margin-top: 5px; }
  #rmoto-root .rmoto-list { margin-top: 5px; padding-top: 5px; }
  /* Vue generale (matrice) facon demo, TL/SF gardes : nom -> toast, colonnes resserrees,
     creneau via separateurs, police cellule 11px. Selecteurs prefixes .rmoto-ov-wrap : les
     regles de base de la matrice sont plus bas dans le fichier (meme specificite), il faut
     donc une specificite superieure (+1 classe) pour que le mobile l'emporte. */
  #rmoto-root .rmoto-ov-wrap .rmoto-ov-table { min-width: 0; }
  #rmoto-root .rmoto-ov-wrap .rmoto-ov-corner { min-width: 48px; }
  #rmoto-root .rmoto-ov-wrap .rmoto-ov-code-cell { min-width: 48px; max-width: 56px; padding: 7px 3px; }
  #rmoto-root .rmoto-ov-wrap .rmoto-ov-code-line { flex-wrap: wrap; gap: 2px 4px; }
  #rmoto-root .rmoto-ov-wrap .rmoto-ov-day-col { min-width: 110px; }
  #rmoto-root .rmoto-ov-wrap .rmoto-ov-day-btn { padding: 7px 6px; }
  #rmoto-root .rmoto-ov-wrap .rmoto-ov-day-name { font-size: 13px; }
  #rmoto-root .rmoto-ov-wrap .rmoto-ov-day-date { font-size: 11px; }
  #rmoto-root .rmoto-ov-wrap .rmoto-ov-code { font-size: 15px; }
  #rmoto-root .rmoto-ov-wrap .rmoto-ov-route-name { display: none; }
  #rmoto-root .rmoto-ov-wrap .rmoto-ov-cell { padding: 4px 6px; }
  #rmoto-root .rmoto-ov-wrap .rmoto-ov-pace, #rmoto-root .rmoto-ov-wrap .rmoto-ov-dep, #rmoto-root .rmoto-ov-wrap .rmoto-ov-ratio, #rmoto-root .rmoto-ov-wrap .rmoto-ov-cell-role { font-size: 11px; }
  #rmoto-root .rmoto-ov-wrap .rmoto-ov-slot { display: none; }
  #rmoto-root .rmoto-ov-wrap .rmoto-ov-code-cell, #rmoto-root .rmoto-ov-wrap .rmoto-ov-corner { box-shadow: 2px 0 4px -2px rgba(20, 30, 45, 0.2); }
}
#rmoto-root .rmoto-role-admin { background: var(--rmoto-ink); color: #fff; }

/* --- En-tête vue admin --- */
#rmoto-root .rmoto-admin { padding-top: 18px; }
#rmoto-root .rmoto-admin-header { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
#rmoto-root .rmoto-admin-title { margin: 0; font-size: 24px; line-height: 1.1; }
#rmoto-root .rmoto-admin-ver { margin-left: 8px; font-size: 12px; font-weight: 500; color: var(--rmoto-ink-2); vertical-align: baseline; font-family: 'Cascadia Mono', ui-monospace, 'Courier New', monospace; }
#rmoto-root .rmoto-admin-date { font-family: 'Cascadia Mono', ui-monospace, 'Courier New', monospace; font-size: 14px; font-weight: 500; color: var(--rmoto-ink-2); }

/* Config — Règles des circuits : grilles + allures */
#rmoto-root .rmoto-config-row4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-top: 8px; }
@media (max-width: 900px) { #rmoto-root .rmoto-config-row4 { grid-template-columns: repeat(2, 1fr); } }
#rmoto-root .rmoto-pace-row { display: grid; grid-template-columns: 120px 1fr 1.5fr 1.5fr 1fr; gap: 12px; align-items: end; padding: 10px 0; border-bottom: 1px solid #eee; }
#rmoto-root .rmoto-pace-level { align-self: center; }
@media (max-width: 900px) { #rmoto-root .rmoto-pace-row { grid-template-columns: 1fr 1fr; } }

/* Config — Circuits : catégories + table codes */
#rmoto-root .rmoto-cat-name-row { display: grid; grid-template-columns: 220px 1fr 1fr; gap: 12px; align-items: end; padding: 8px 0; }
#rmoto-root .rmoto-cat-name-label { font-weight: 600; align-self: center; }
@media (max-width: 900px) { #rmoto-root .rmoto-cat-name-row { grid-template-columns: 1fr; } }
#rmoto-root .rmoto-codes-table th, #rmoto-root .rmoto-codes-table td { padding: 8px 6px; }
#rmoto-root .rmoto-codes-table th:first-child, #rmoto-root .rmoto-codes-table td:first-child { padding-left: 12px; }
#rmoto-root .rmoto-codes-table th:last-child, #rmoto-root .rmoto-codes-table td:last-child { padding-right: 12px; }
#rmoto-root .rmoto-code-cell { color: var(--rmoto-primary); font-size: 16px; }

/* Zone de réinitialisation destructive (Config Circuits) */
#rmoto-root .rmoto-danger-zone { margin-top: 28px; padding-top: 16px; border-top: 1px dashed #e0a0a0; }

/* Participants : en-tête titre + actions */
#rmoto-root .rmoto-participants-head { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; margin-bottom: 12px; }
#rmoto-root .rmoto-participants-title { margin: 0; font-size: 18px; font-weight: 800; letter-spacing: -0.01em; }
#rmoto-root .rmoto-participants-actions { display: flex; gap: 8px; align-items: center; }
#rmoto-root .rmoto-name-link { background: none; border: 0; padding: 0; margin: 0; font: inherit; color: inherit; cursor: pointer; text-align: left; }
#rmoto-root .rmoto-name-link:hover { color: var(--rmoto-primary); text-decoration: underline; }
#rmoto-root .rmoto-userregs-list { list-style: none; margin: 14px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
#rmoto-root .rmoto-userregs-row { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--rmoto-line); border-radius: var(--rmoto-r-s); background: var(--rmoto-bg); }
#rmoto-root .rmoto-userregs-day { font-size: 14px; font-weight: 400; color: var(--rmoto-ink-2); min-width: 90px; white-space: nowrap; }
#rmoto-root .rmoto-userregs-label { flex: 1; font-weight: 600; font-size: 14px; }
#rmoto-root .rmoto-userreg-badge { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; padding: 2px 8px; border-radius: 4px; white-space: nowrap; border: 1px solid; flex-shrink: 0; }
#rmoto-root .rmoto-userreg-inscrit { background: var(--rmoto-olive-tint); color: var(--rmoto-olive); border-color: var(--rmoto-olive); }
#rmoto-root .rmoto-userreg-waitlist { background: var(--rmoto-amber-tint); color: var(--rmoto-amber); border-color: var(--rmoto-amber); }
#rmoto-root .rmoto-userreg-excursion { background: var(--rmoto-slate-tint); color: var(--rmoto-slate); border-color: var(--rmoto-slate); }
#rmoto-root .rmoto-cap-warning { background: #fef2f2; border: 1px solid #fca5a5; color: #991b1b; border-radius: 8px; padding: 8px 12px; margin-bottom: 12px; font-size: 14px; }
#rmoto-root .rmoto-icon-del { border-color: #fca5a5; }
#rmoto-root .rmoto-row-actions { text-align: right; }

/* Logs : filtres + badges de type */
#rmoto-root .rmoto-log-filter-row { display: flex; flex-wrap: wrap; gap: 4px; background: var(--rmoto-bg-2); padding: 3px; border-radius: var(--rmoto-r-m); }
#rmoto-root .rmoto-log-filter-btn { background: transparent; border: none; padding: 5px 12px; border-radius: var(--rmoto-r-s); font-family: 'Outfit', sans-serif; font-weight: 600; font-size: 12px; cursor: pointer; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-log-filter-btn.active { background: var(--rmoto-card); color: var(--rmoto-ink); box-shadow: 0 1px 0 rgba(0,0,0,0.05); }
#rmoto-root .rmoto-log-badge { display: inline-block; font-size: 11px; font-weight: 700; text-transform: uppercase; padding: 2px 8px; border-radius: 6px; letter-spacing: 0.02em; }
#rmoto-root .rmoto-log-mail { background: #e0e7ff; color: #3730a3; }
#rmoto-root .rmoto-log-edit { background: #e5e7eb; color: #374151; }
#rmoto-root .rmoto-log-inscr { background: #d1fae5; color: #065f46; }
#rmoto-root .rmoto-log-wait { background: #fef3c7; color: #92400e; }
#rmoto-root .rmoto-log-role { background: #ede9fe; color: #5b21b6; }
#rmoto-root .rmoto-log-ride { background: #cffafe; color: #155e75; }
#rmoto-root .rmoto-logs-table { min-width: 760px; }
#rmoto-root .rmoto-logs-table th { white-space: nowrap; }
#rmoto-root .rmoto-logs-table td { vertical-align: middle; }
#rmoto-root .rmoto-logs-table td:last-child { white-space: nowrap; }

/* Logs : barre de pagination */
#rmoto-root .rmoto-log-pager { display: flex; align-items: center; justify-content: center; gap: 16px; margin-top: 14px; }
#rmoto-root .rmoto-log-range { font-size: 13px; color: #555; min-width: 120px; text-align: center; }
#rmoto-root .rmoto-log-config { background: #fae8ff; color: #86198f; }

/* Ride Manager : flèche de lien cliquable sur le nom */
#rmoto-root .rmoto-ride-link { text-decoration: none; color: var(--rmoto-primary); font-weight: 700; }
#rmoto-root .rmoto-ride-link:hover { color: var(--rmoto-primary-dk); }

/* Modale circuit : indices sous les champs */
#rmoto-root .rmoto-field-hint { font-size: 12px; color: var(--rmoto-muted); margin-top: 4px; }
#rmoto-root .rmoto-backup-actions { display: flex; gap: 16px; flex-wrap: wrap; }
#rmoto-root .rmoto-backup-actions .rmoto-field { flex: 1 1 240px; margin: 0; }
#rmoto-root .rmoto-diag-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }
#rmoto-root .rmoto-diag-actions .rmoto-btn-sm { font-size: 14px; }

/* ===== Panneau déplié : tableau d'inscrits ===== */
#rmoto-root .rmoto-panel-head { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; margin-bottom: 12px; }
#rmoto-root .rmoto-panel-actions { display: flex; gap: 8px; flex-wrap: wrap; }
#rmoto-root .rmoto-table-wrap { overflow-x: auto; border: 1px solid var(--rmoto-line); border-radius: var(--rmoto-r-m); }
#rmoto-root .rmoto-ins-table { width: 100%; border-collapse: collapse; font-size: 15px; line-height: 1.3; table-layout: auto; margin: 0; }
#rmoto-root .rmoto-ins-table th { text-align: left; padding: 6px 10px; background: var(--rmoto-bg-2); font-family: 'Outfit', sans-serif; color: var(--rmoto-ink-2); font-size: 13px; font-weight: 700; line-height: 1.2; text-transform: uppercase; letter-spacing: 0.06em; white-space: nowrap; }
#rmoto-root .rmoto-ins-table td { padding: 6px 10px; border-bottom: 1px solid var(--rmoto-line); vertical-align: middle; white-space: nowrap; }
#rmoto-root .rmoto-ins-table .rmoto-mono { font-family: inherit; font-size: 1em; }
#rmoto-root .rmoto-row-tl { background: var(--rmoto-tl-tint, #efe9fb); }
#rmoto-root .rmoto-row-sf { background: var(--rmoto-sf-tint, #fbf3e2); }

/* Pastilles de rôle dans la colonne # */
#rmoto-root .rmoto-badge { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; font-size: 11px; font-weight: 700; border-radius: 4px; text-transform: uppercase; letter-spacing: 0.05em; font-family: 'Outfit', sans-serif; white-space: nowrap; flex-shrink: 0; }
#rmoto-root .rmoto-badge-tl { background: var(--rmoto-tl-tint); color: var(--rmoto-tl-dk); }
#rmoto-root .rmoto-badge-sf { background: var(--rmoto-sf-tint); color: var(--rmoto-sf); }

/* Actions de rôle par ligne */
#rmoto-root .rmoto-tlsf-actions { display: grid; grid-template-columns: 1fr auto; gap: 6px; align-items: center; }
#rmoto-root .rmoto-tlsf-pair { display: flex; gap: 4px; }
#rmoto-root .rmoto-mini-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 32px; font-family: 'Outfit', sans-serif; font-size: 13px; font-weight: 600; min-width: 56px; padding: 6px 8px; border-radius: 6px; cursor: pointer; white-space: nowrap; }
#rmoto-root .rmoto-mini-tl { background: var(--rmoto-tl-tint, #efe9fb); color: var(--rmoto-tl-dk, #5b3aa6); border: 1px solid var(--rmoto-tl, #8e6fd6); }
#rmoto-root .rmoto-mini-sf { background: var(--rmoto-sf-tint, #fbf3e2); color: var(--rmoto-amber); border: 1px solid var(--rmoto-sf, #d09a3c); }
#rmoto-root .rmoto-mini-clear { background: transparent; color: var(--rmoto-ink); border: 1px solid var(--rmoto-line-2); }
/* Boutons d'action en icônes — consolidé (= démo .btn.btn-sm.btn-icon, carré 32x32). */
#rmoto-root .rmoto-icon-btn { width: 32px; height: 32px; padding: 0; border: 1px solid var(--rmoto-line-2); background: transparent; color: var(--rmoto-ink); border-radius: var(--rmoto-r-s); font-size: 16px; line-height: 1; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; vertical-align: middle; margin-right: 6px; transition: background .15s ease, border-color .15s ease, color .15s ease; }
#rmoto-root .rmoto-icon-btn:last-child { margin-right: 0; }
#rmoto-root .rmoto-icon-btn:hover { background: var(--rmoto-bg-2); }
#rmoto-root .rmoto-icon-btn:disabled { opacity: 0.5; cursor: default; }
#rmoto-root .rmoto-icon-danger { border-color: var(--rmoto-rouge); color: var(--rmoto-rouge); }
#rmoto-root .rmoto-icon-danger:hover { background: var(--rmoto-rouge-tint); }

#rmoto-root .rmoto-btn-success { background: var(--rmoto-olive); color: #fff; }
#rmoto-root .rmoto-btn-success:hover { background: #226045; }
#rmoto-root .rmoto-btn-success:disabled { opacity: .5; cursor: not-allowed; }
#rmoto-root .rmoto-waitlist-head { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--rmoto-sf-dk, #9a6a14); margin-bottom: 6px; }

/* ===== Modale ajout participant ===== */
#rmoto-root .rmoto-modal-sm { max-width: 440px; }
#rmoto-root .rmoto-modal-lg { max-width: 720px; }
#rmoto-root .rmoto-modal-subtitle { font-size: 18px; margin: -4px 0 12px; }
#rmoto-root .rmoto-mini-tabs { display: flex; gap: 6px; background: #eef0f3; border-radius: 8px; padding: 4px; margin-bottom: 12px; }
#rmoto-root .rmoto-mini-tabs button { flex: 1; padding: 9px 12px; border: none; background: none; border-radius: 6px; font-weight: 600; cursor: pointer; color: #555; }
#rmoto-root .rmoto-mini-tabs button.active { background: #fff; color: #111; box-shadow: 0 1px 3px rgba(0,0,0,.12); }
#rmoto-root .rmoto-ins-list { display: flex; flex-direction: column; gap: 8px; max-height: 380px; overflow-y: auto; margin-top: 10px; }
#rmoto-root .rmoto-ins-item { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; padding: 8px 10px; border: 1px solid var(--rmoto-line, #e6e7ea); border-radius: 8px; }
#rmoto-root .rmoto-ins-badges { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 4px; }
#rmoto-root .rmoto-ins-badge { font-size: 11.5px; font-weight: 600; padding: 2px 8px; border-radius: 999px; }
#rmoto-root .rmoto-ins-already { background: var(--rmoto-success-tint, #e3f1e7); color: var(--rmoto-success, #2f8a4e); }
#rmoto-root .rmoto-ins-other { background: var(--rmoto-sf-tint, #fbf3e2); color: var(--rmoto-sf-dk, #9a6a14); }
#rmoto-root .rmoto-ins-wait { background: var(--rmoto-sf-tint, #fbf3e2); color: var(--rmoto-sf-dk, #9a6a14); }
#rmoto-root .rmoto-ins-tlsf { background: var(--rmoto-tl-tint, #efe9fb); color: var(--rmoto-tl-dk, #5b3aa6); }
#rmoto-root .rmoto-new-form { display: flex; flex-direction: column; gap: 8px; }

/* Modale ajout : champs en colonne ne doivent pas s'étirer (flex-basis vertical) */
#rmoto-root .rmoto-new-form .rmoto-field { flex: 0 0 auto; }
/* Bouton de fermeture en haut à droite */
#rmoto-root .rmoto-modal-close { position: absolute; top: 12px; right: 14px; width: 32px; height: 32px; border: none; background: none; font-size: 22px; line-height: 1; color: var(--rmoto-muted); cursor: pointer; border-radius: 6px; }
#rmoto-root .rmoto-modal-close:hover { background: var(--rmoto-bg-2); color: var(--rmoto-ink); }
#rmoto-root .rmoto-modal h3 { margin-top: 0; font-size: clamp(22px, 3.5vw, 30px); padding-right: 32px; }

/* Panneau excursion (ride manager, jour d'excursion) */
#rmoto-root .rmoto-excursion-panel { background: var(--rmoto-sf-tint, #fbf3e2); border-left: 5px solid var(--rmoto-sf, #d09a3c); border-radius: 8px; padding: 16px; margin-top: 14px; }
#rmoto-root .rmoto-excursion-panel .rmoto-panel-head { margin-bottom: 10px; }

/* ===== Vue TL/SF (liste de départ + pointage) ===== */
#rmoto-root .rmoto-tlsf { max-width: 1120px; margin: 0 auto; padding-top: 16px; }
#rmoto-root .rmoto-tlsf-banner { background: linear-gradient(135deg, var(--rmoto-tlsf-view), var(--rmoto-tlsf-view-dk)); color: #fff; border-radius: 12px; padding: 16px 18px; box-shadow: 0 2px 10px rgba(0,0,0,0.08); }
#rmoto-root .rmoto-tlsf-banner h2 { margin: 0; color: #fff; font-size: 20px; line-height: 1.1; text-transform: uppercase; letter-spacing: 0.5px; }
#rmoto-root .rmoto-tlsf-banner-sub { margin-top: 4px; opacity: 0.9; font-size: 13px; line-height: 1.3; }
#rmoto-root .rmoto-tlsf-banner-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
#rmoto-root .rmoto-tlsf-banner-txt { min-width: 0; }
#rmoto-root .rmoto-tlsf-page { display: inline-block; margin-top: 5px; font-size: 14px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.4px; border-bottom: 2px solid rgba(255,255,255,0.55); padding-bottom: 1px; }
#rmoto-root .rmoto-tlsf-switch { flex: none; background: rgba(255,255,255,0.16); border: 1px solid rgba(255,255,255,0.5); color: #fff; border-radius: 9px; padding: 8px 13px; font-size: 13px; font-weight: 700; cursor: pointer; white-space: nowrap; transition: background .12s ease; }
#rmoto-root .rmoto-tlsf-switch:hover, #rmoto-root .rmoto-tlsf-switch:focus-visible { background: rgba(255,255,255,0.28); }
#rmoto-root .rmoto-tlsf-day { margin: 0 0 10px; text-transform: uppercase; letter-spacing: 0.5px; }
#rmoto-root h3.rmoto-tlsf-day { font-size: 24px; line-height: 1; }
#rmoto-root .rmoto-tlsf-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 16px; }
#rmoto-root .rmoto-tlsf-card { position: relative; background: #fff; border: 1px solid var(--rmoto-line, #e3e3e3); border-radius: 12px; padding: 18px; cursor: pointer; transition: box-shadow .12s ease, transform .12s ease; }
#rmoto-root .rmoto-tlsf-card:hover { box-shadow: 0 4px 14px rgba(0,0,0,0.1); transform: translateY(-1px); border-color: var(--rmoto-tlsf-view); }
#rmoto-root .rmoto-tlsf-card h4 { margin: 0 0 4px; font-size: 17px; padding-right: 110px; }
#rmoto-root .rmoto-tlsf-code { color: var(--rmoto-accent, #0066A1); font-weight: 800; }
#rmoto-root .rmoto-tlsf-role-tag { position: absolute; top: 14px; right: 14px; font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.4px; padding: 3px 9px; border-radius: 999px; }
#rmoto-root .rmoto-tlsf-role-tag.tl { background: var(--rmoto-tl-tint, #efe9fb); color: var(--rmoto-tl-dk, #5b3aa6); }
#rmoto-root .rmoto-tlsf-role-tag.sf { background: var(--rmoto-sf-tint, #fbf3e2); color: var(--rmoto-sf-dk, #9a6a14); }
#rmoto-root .rmoto-tlsf-meta { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 8px 0; }
#rmoto-root .rmoto-dep-tag { display: inline-flex; align-items: center; gap: 5px; background: var(--rmoto-slate-tint); color: var(--rmoto-slate); padding: 4px 9px; border-radius: 999px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; font-family: 'Outfit', sans-serif; white-space: nowrap; }
#rmoto-root .rmoto-tlsf-roster { list-style: none; margin: 10px 0; padding: 0; border-top: 1px dashed var(--rmoto-line, #e3e3e3); padding-top: 10px; }
#rmoto-root .rmoto-tlsf-roster li { padding: 3px 0; font-size: 14px; display: flex; align-items: center; gap: 8px; }
#rmoto-root .rmoto-tlsf-roster li.checked { color: var(--rmoto-tlsf-view, #0A7C6E); }
#rmoto-root .rmoto-tlsf-roster li.checked > span:first-child::before { content: "\2713 "; font-weight: 800; }
#rmoto-root .rmoto-tlsf-roster li.noshow { color: var(--rmoto-rouge); }
#rmoto-root .rmoto-tlsf-roster li.noshow > span:first-child::before { content: "\2717 "; font-weight: 800; }
#rmoto-root .rmoto-tlsf-stats { display: flex; align-items: center; justify-content: space-between; margin-top: 12px; border-top: 1px solid var(--rmoto-line, #e3e3e3); padding-top: 12px; }
#rmoto-root .rmoto-tlsf-count { font-size: 26px; font-weight: 800; color: var(--rmoto-tlsf-view, #0A7C6E); }
#rmoto-root .rmoto-tlsf-count em { font-size: 16px; font-style: normal; color: var(--rmoto-muted, #888); }
#rmoto-root .rmoto-tlsf-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
#rmoto-root .rmoto-tlsf-res-btn { white-space: nowrap; }
#rmoto-root .rmoto-tlsf-card.is-focus { box-shadow: 0 0 0 2px var(--rmoto-tlsf-view); border-color: var(--rmoto-tlsf-view); }
#rmoto-root .rmoto-btn-tlsf.active { outline: 2px solid #fff; box-shadow: 0 0 0 2px var(--rmoto-tlsf-view, #0A7C6E); }
/* Écran de pointage */
#rmoto-root .rmoto-tlsf-checkin-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; }
#rmoto-root .rmoto-tlsf-checkin-head h2 { margin: 0; color: #fff; }
#rmoto-root .rmoto-tlsf-title-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
#rmoto-root .rmoto-tlsf-checkin-head .rmoto-tlsf-day { font-size: 20px; line-height: 1.1; }
#rmoto-root .rmoto-tlsf-bigcount { font-size: 30px; font-weight: 800; white-space: nowrap; }
#rmoto-root .rmoto-checkin-list { display: flex; flex-direction: column; gap: 6px; margin-top: 14px; }
#rmoto-root .rmoto-checkin-row { display: flex; align-items: center; gap: 14px; padding: 12px 14px; border: 1px solid var(--rmoto-line, #e3e3e3); border-radius: 10px; background: #fff; cursor: pointer; transition: all .12s ease; }
#rmoto-root .rmoto-checkin-row:hover { border-color: var(--rmoto-tlsf-view, #0A7C6E); }
#rmoto-root .rmoto-checkin-row.checked { background: var(--rmoto-tlsf-view-tint, #e3f1ef); border-color: var(--rmoto-tlsf-view, #0A7C6E); }
#rmoto-root .rmoto-checkin-row.busy { opacity: 0.6; pointer-events: none; }
#rmoto-root .rmoto-checkin-cbox { width: 26px; height: 26px; flex: 0 0 26px; border: 2px solid var(--rmoto-line-2, #ccc); border-radius: 6px; display: grid; place-items: center; background: #fff; font-weight: 800; color: #fff; }
#rmoto-root .rmoto-checkin-row.checked .rmoto-checkin-cbox { background: var(--rmoto-tlsf-view, #0A7C6E); border-color: var(--rmoto-tlsf-view, #0A7C6E); }
#rmoto-root .rmoto-checkin-name { font-weight: 600; font-size: 15px; flex: 1; min-width: 0; }
#rmoto-root .rmoto-checkin-phone { font-family: 'Cascadia Mono', 'Cascadia Code', monospace; font-size: 13px; color: var(--rmoto-muted, #888); white-space: nowrap; }
@media (max-width: 500px) { #rmoto-root .rmoto-checkin-row { flex-wrap: wrap; } #rmoto-root .rmoto-checkin-noshow { order: 2; } #rmoto-root .rmoto-checkin-phone { order: 3; width: 100%; padding-left: 40px; } }

/* Check-in : état no-show (absent) */
#rmoto-root .rmoto-checkin-row.noshow { background: #fbeaea; border-color: #d9534f; }
#rmoto-root .rmoto-checkin-row.noshow .rmoto-checkin-name, #rmoto-root .rmoto-checkin-row.noshow .rmoto-checkin-phone { color: #b00020; }
#rmoto-root .rmoto-checkin-row.noshow .rmoto-checkin-cbox { background: #d9534f; border-color: #d9534f; }
#rmoto-root .rmoto-checkin-noshow { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 8px; border: 1.5px solid #d9534f; background: #fff; color: #d9534f; font-weight: 800; font-size: 15px; cursor: pointer; line-height: 1; transition: all .12s ease; }
#rmoto-root .rmoto-checkin-noshow:hover { background: #d9534f; color: #fff; }
#rmoto-root .rmoto-checkin-noshow.reset { border-color: #999; color: #555; }
#rmoto-root .rmoto-checkin-noshow.reset:hover { background: #777; color: #fff; }

/* Verrou des états du bouton TL/SF (vert) et du bouton retour (ghost neutre)
   — empêche le :hover/:focus bleu du thème de déborder. */
#rmoto-root .rmoto-btn-tlsf:hover, #rmoto-root .rmoto-btn-tlsf:focus-visible, #rmoto-root .rmoto-btn-tlsf:active {
  background: var(--rmoto-tlsf-view-dk); color: #fff;
}
/* Le bouton retour de la vue TL/SF reste neutre au survol (pas de bleu). */
#rmoto-root .rmoto-tlsf .rmoto-btn-ghost:hover, #rmoto-root .rmoto-tlsf .rmoto-btn-ghost:focus-visible { background: rgba(0,0,0,0.04); color: var(--rmoto-ink); }

/* ===== Badges d'état temporel (ride manager + vue no-show) ===== */
#rmoto-root .rmoto-status-badge { display: inline-flex; align-items: center; gap: 5px; font-family: 'Outfit', sans-serif; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; padding: 4px 10px; border-radius: 999px; white-space: nowrap; }
#rmoto-root .rmoto-status-scheduled { background: #E2E8F0; color: #4a5b6b; }
#rmoto-root .rmoto-status-imminent { background: #fff3e0; color: #b8801d; }
#rmoto-root .rmoto-status-departing { background: #e3f1ef; color: #0A7C6E; }
#rmoto-root .rmoto-status-in_progress { background: #e8eef7; color: #2A6BB0; }
#rmoto-root .rmoto-status-finished { background: #eaf3ea; color: #2e7d32; }
/* Boutons override show/no-show (colonne SHOW? du ride manager) */
#rmoto-root .rmoto-show-override { display: inline-flex; gap: 4px; }
#rmoto-root .rmoto-ov-show, #rmoto-root .rmoto-ov-noshow { width: 26px; height: 24px; border-radius: 6px; font-weight: 800; font-size: 13px; cursor: pointer; line-height: 1; }
#rmoto-root .rmoto-ov-show { border: 1.5px solid #2e7d32; background: #fff; color: #2e7d32; }
#rmoto-root .rmoto-ov-show:hover { background: #2e7d32; color: #fff; }
#rmoto-root .rmoto-ov-noshow { border: 1.5px solid #d9534f; background: #fff; color: #d9534f; }
#rmoto-root .rmoto-ov-noshow:hover { background: #d9534f; color: #fff; }

/* ===== Vue no-show ===== */
#rmoto-root .rmoto-noshow .rmoto-panel-head { margin-bottom: 12px; }
#rmoto-root .rmoto-ns-toolbar { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; margin-bottom: 6px; }
#rmoto-root .rmoto-ns-pacefilter { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
#rmoto-root .rmoto-ns-banner { font-weight: 700; font-size: 16px; line-height: normal; padding: 14px 18px; border-radius: 10px; border-left: 4px solid; margin-bottom: 8px; background: var(--rmoto-bg-2); color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-ns-banner-finished { background: var(--rmoto-olive-tint); color: var(--rmoto-ink); border-left-color: var(--rmoto-olive); }
#rmoto-root .rmoto-ns-banner-in_progress, #rmoto-root .rmoto-ns-banner-departing, #rmoto-root .rmoto-ns-banner-imminent { background: #E2E8F0; color: #475569; border-left-color: #475569; }
#rmoto-root .rmoto-ns-card { background: var(--rmoto-bg-2, #f5f6f8); border-radius: 10px; padding: 14px 16px; margin-bottom: 8px; }
#rmoto-root .rmoto-ns-head { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }
#rmoto-root .rmoto-ns-head h4 { margin: 0; font-size: 16px; }
#rmoto-root .rmoto-ns-roles { display: flex; flex-wrap: wrap; gap: 18px; margin-top: 8px; font-size: 14px; }
#rmoto-root .rmoto-ns-ok { margin-top: 8px; color: var(--rmoto-olive); font-weight: 700; font-size: 14px; }
#rmoto-root .rmoto-ns-count { margin-top: 8px; color: var(--rmoto-rouge); font-weight: 700; font-size: 14px; }
#rmoto-root .rmoto-ns-list { margin: 6px 0 0; padding-left: 22px; font-size: 14px; }
#rmoto-root .rmoto-ns-list li { margin: 3px 0; }
#rmoto-root .rmoto-ns-empty { padding: 16px; background: var(--rmoto-bg-2, #f5f6f8); border-radius: 8px; color: var(--rmoto-muted, #888); font-size: 14px; }

/* ===== Carte journalière (BaladeCard) au layout démo ===== */
#rmoto-root .rmoto-b-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
#rmoto-root .rmoto-b-title { font-family: 'Outfit', sans-serif; font-weight: 800; font-size: 19px; letter-spacing: -0.01em; line-height: 1.2; min-width: 0; flex: 1; }
#rmoto-root .rmoto-b-code { color: var(--rmoto-accent, #0066A1); font-weight: 800; margin-right: 8px; }
#rmoto-root .rmoto-b-link { color: inherit; text-decoration: none; }
#rmoto-root .rmoto-b-link:hover { text-decoration: underline; }
#rmoto-root .rmoto-b-link-icon { color: var(--rmoto-accent, #0066A1); font-weight: 700; }
#rmoto-root .rmoto-pace-badge { color: #fff; display: inline-flex; align-items: center; line-height: 1; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; padding: 4px 10px; border-radius: 999px; border: 1px solid; white-space: nowrap; }
#rmoto-root .rmoto-b-time { margin-top: 8px; }
#rmoto-root .rmoto-b-head-time { display: none; }  /* version courte (icone + heure) : visible seulement en mobile */
#rmoto-root .rmoto-b-tlsf { display: flex; flex-wrap: wrap; gap: 12px; margin: 10px 0; padding: 10px 12px; background: var(--rmoto-bg-2); border-radius: 6px; border-left: 3px solid var(--rmoto-tlsf-view); font-size: 14px; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-b-role { display: flex; align-items: center; gap: 6px; }
#rmoto-root .rmoto-b-cutoff { font-size: 13px; color: var(--rmoto-ink-2); margin-top: 8px; font-weight: 600; }
#rmoto-root .rmoto-cap-num em { font-style: normal; color: var(--rmoto-muted, #999); font-weight: 500; }
#rmoto-root .rmoto-list-item { display: flex; align-items: center; gap: 8px; font-size: 15px; line-height: 1.3; }
#rmoto-root .rmoto-li-bullet { width: 6px; height: 6px; border-radius: 50%; background: var(--rmoto-ink-2); flex: 0 0 6px; display: inline-block; }
#rmoto-root .rmoto-card-note { font-size: 12px; color: var(--rmoto-muted, #777); font-style: italic; }
#rmoto-root .rmoto-card-closed { font-size: 13px; color: #b00020; font-weight: 600; font-style: italic; }
#rmoto-root .rmoto-role-lock { font-size: 12px; color: var(--rmoto-tl-dk, #5b3aa6); font-style: italic; font-weight: 600; }
#rmoto-root .rmoto-btn-amber { background: var(--rmoto-amber); color: #fff; }
#rmoto-root .rmoto-btn-amber:hover { background: #966716; }
#rmoto-root .rmoto-btn-danger.rmoto-btn-sm { background: #fff; border: 1.5px solid #d9534f; color: #d9534f; padding: 6px 14px; border-radius: 8px; font-weight: 600; cursor: pointer; }
#rmoto-root .rmoto-btn-danger.rmoto-btn-sm:hover:not(:disabled) { background: #d9534f; color: #fff; }
#rmoto-root .rmoto-btn-danger:disabled { opacity: 0.5; cursor: not-allowed; }
/* Ligne de l'utilisateur courant dans la liste (marqueur « — vous »). */
#rmoto-root .rmoto-list-item.is-me { font-weight: 700; color: var(--rmoto-primary-dk); }
#rmoto-root .rmoto-list-item.is-me .rmoto-li-bullet { background: var(--rmoto-primary); width: 8px; height: 8px; flex-basis: 8px; }

/* ===== Onglet Programme (ProgramView) au layout démo ===== */
#rmoto-root .rmoto-section-head { margin-bottom: 10px; }
#rmoto-root .rmoto-section-head h2 { margin: 0; font-size: 24px; line-height: 1; }
#rmoto-root .rmoto-section-sub { color: var(--rmoto-muted, #777); font-size: 15px; font-weight: 400; margin-top: 4px; }
#rmoto-root .rmoto-prog-export { display: flex; justify-content: flex-end; margin: 14px 0 4px; }
#rmoto-root .rmoto-prog-export-btn { font-size: 16px; font-weight: 700; padding: 0 22px; }
#rmoto-root .rmoto-prog-days { display: flex; flex-direction: column; gap: 12px; margin-top: 14px; }
#rmoto-root .rmoto-prog-day { padding: 16px 18px; margin: 0; }
#rmoto-root .rmoto-prog-date { margin: 0 0 12px; font-size: 17px; }
#rmoto-root .rmoto-prog-date.is-stale { text-decoration: line-through; color: var(--rmoto-muted); }
#rmoto-root .rmoto-prog-items { display: flex; flex-direction: column; gap: 6px; }
#rmoto-root .rmoto-prog-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; padding: 10px 12px; border-radius: 6px; border-left: 3px solid transparent; }
#rmoto-root .rmoto-prog-row.is-ins { background: var(--rmoto-olive-tint); border-left-color: var(--rmoto-olive); }
#rmoto-root .rmoto-prog-row.is-wait { background: var(--rmoto-amber-tint); border-left-color: var(--rmoto-amber); }
#rmoto-root .rmoto-prog-row.is-excursion { background: var(--rmoto-amber-tint); border-left-color: var(--rmoto-amber); }
#rmoto-root .rmoto-prog-main { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 8px; flex: 1; min-width: 200px; }
#rmoto-root .rmoto-prog-code { color: var(--rmoto-accent, #0066A1); font-weight: 800; }
#rmoto-root .rmoto-prog-code.is-wait { color: var(--rmoto-amber); }
#rmoto-root .rmoto-prog-name { color: var(--rmoto-ink); font-weight: 700; }
#rmoto-root .rmoto-prog-name.is-wait { color: var(--rmoto-amber); font-weight: 700; }
#rmoto-root .rmoto-prog-actions { display: flex; align-items: center; gap: 8px; }
#rmoto-root .rmoto-pace-badge-sm { font-weight: 700; border-radius: 999px; background: #eef3f7; color: #2a4a5e; display: inline-flex; align-items: center; line-height: 1; font-size: 12px; padding: 4px 10px; }
#rmoto-root .rmoto-slot-tag { display: inline-flex; align-items: center; line-height: 1; white-space: nowrap; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; padding: 4px 10px; border-radius: 999px; border: 1px solid var(--rmoto-line-2); background: #fff; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-wait-badge { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; padding: 2px 8px; border-radius: 4px; background: var(--rmoto-amber-tint); color: var(--rmoto-amber); border: 1px solid var(--rmoto-amber); white-space: nowrap; flex-shrink: 0; }
#rmoto-root .rmoto-badge-xs { font-size: 10px; padding: 1px 7px; }
#rmoto-root .rmoto-prog-row .rmoto-role-lock { width: 100%; margin-top: 4px; }
#rmoto-root .rmoto-btn-ghost.rmoto-btn-sm:disabled, #rmoto-root .rmoto-btn.rmoto-btn-sm:disabled { opacity: 0.5; cursor: not-allowed; }

/* ===== Bandeaux d'avertissement (violations + doublon de balade) ===== */
/* === Bandeaux génériques (système centralisé, aligné démo .info-banner) ======
   Base + tons ; remplace les anciennes classes par bandeau (règles, programme
   du jour, doublon, violation), app ET admin. Tons = variables de tint. */
#rmoto-root .rmoto-info-banner { padding: 14px 18px; border-radius: 10px; border-left: 4px solid transparent; font-size: 16px; line-height: normal; margin-top: 12px; }
#rmoto-root .rmoto-tone-primary { background: var(--rmoto-primary-tint); border-left-color: var(--rmoto-primary); color: var(--rmoto-primary-dk); font-weight: 700; }
#rmoto-root .rmoto-tone-olive { background: var(--rmoto-olive-tint); border-left-color: var(--rmoto-olive); }
#rmoto-root .rmoto-tone-amber { background: var(--rmoto-amber-tint); border-left-color: var(--rmoto-amber); }
#rmoto-root .rmoto-tone-rouge { background: var(--rmoto-rouge-tint); border: 1px solid var(--rmoto-rouge); border-left-width: 4px; margin-top: 16px; }
#rmoto-root .rmoto-info-banner.rmoto-rules { display: block; }
#rmoto-root .rmoto-rules-toggle { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 8px; font-weight: 700; color: var(--rmoto-primary-dk); }
#rmoto-root .rmoto-rules-toggle::-webkit-details-marker { display: none; }
#rmoto-root .rmoto-rules-toggle::after { content: '▾'; font-size: 12px; line-height: 1; transition: transform .18s ease; }
#rmoto-root .rmoto-rules[open] .rmoto-rules-toggle::after { transform: rotate(180deg); }
#rmoto-root .rmoto-rules-body { margin-top: 8px; font-weight: 500; line-height: 1.45; }
#rmoto-root .rmoto-vb-title { font-weight: 800; color: var(--rmoto-rouge); text-transform: uppercase; letter-spacing: 0.03em; font-size: 17px; }
#rmoto-root .rmoto-vb-sub { font-size: 15px; color: var(--rmoto-ink-2); margin-top: 6px; line-height: 1.4; }
#rmoto-root .rmoto-vb-line { font-size: 17px; color: var(--rmoto-ink); margin-top: 6px; }
#rmoto-root .rmoto-vb-line strong { color: var(--rmoto-rouge); font-weight: 700; }
#rmoto-root .rmoto-dup-title { color: var(--rmoto-amber); }
#rmoto-root .rmoto-dup-sub { font-size: 16px; color: var(--rmoto-ink-2); margin-top: 8px; }
#rmoto-root .rmoto-dup-line { margin-top: 4px; }
#rmoto-root .rmoto-dup-line strong { color: var(--rmoto-amber); }

/* Indicateur global de warning dans la topbar (à côté du nom). */
#rmoto-root .rmoto-warn-badge { display: inline-flex; align-items: center; justify-content: center; margin-left: 6px; padding: 1px 6px; border: none; border-radius: 3px; font-size: 11px; line-height: 1; cursor: pointer; vertical-align: middle; }
#rmoto-root .rmoto-warn-badge.rmoto-warn-critical { background: var(--rmoto-rouge-tint); color: var(--rmoto-rouge); }
#rmoto-root .rmoto-warn-badge.rmoto-warn-medium { background: var(--rmoto-amber-tint); color: var(--rmoto-amber); }
#rmoto-root .rmoto-warn-badge:hover { filter: brightness(0.92); }
#rmoto-toast-root .rmoto-toast-warn-icon { color: #e08600; font-weight: 700; }

/* ===== Vue journalière : programme du jour, règles, sections + filtre ===== */
#rmoto-root .rmoto-day-plan-empty { font-size: 16px; font-weight: 600; color: var(--rmoto-ink-2); margin-top: 12px; }
#rmoto-root .rmoto-day-plan { display: flex; flex-wrap: wrap; align-items: baseline; row-gap: 5px; }
#rmoto-root .rmoto-day-plan > strong { white-space: nowrap; margin-right: 5px; }
#rmoto-root .rmoto-dp-item { white-space: nowrap; }
#rmoto-root .rmoto-dp-link { text-decoration: none; font-weight: 700; border-bottom: 1px dotted; }
#rmoto-root .rmoto-dp-link.is-ins { color: var(--rmoto-accent, #0066A1); border-color: var(--rmoto-accent, #0066A1); }
#rmoto-root .rmoto-dp-link.is-wait { color: var(--rmoto-amber); border-color: var(--rmoto-amber); }
#rmoto-root .rmoto-dp-link.is-ins .rmoto-dp-name { color: var(--rmoto-ink, #1a1a1a); }
#rmoto-root .rmoto-dp-code { font-weight: 800; }
#rmoto-root .rmoto-day-plan .rmoto-slot-tag, #rmoto-root .rmoto-day-plan .rmoto-wait-badge { margin-left: 5px; }
#rmoto-root .rmoto-vb-link { color: inherit; text-decoration: none; border-bottom: 1px dotted currentColor; cursor: pointer; }
#rmoto-root .rmoto-dup-link { color: var(--rmoto-amber); text-decoration: none; border-bottom: 1px dotted var(--rmoto-amber); cursor: pointer; }
#rmoto-root .rmoto-vb-link:hover, #rmoto-root .rmoto-dup-link:hover, #rmoto-root .rmoto-dp-link:hover, #rmoto-root .rmoto-prog-jump:hover { filter: brightness(0.9); }
#rmoto-root .rmoto-prog-jump { text-decoration: none; border-bottom: 1px dotted var(--rmoto-primary); }
#rmoto-root .rmoto-prog-row.is-wait .rmoto-prog-jump { border-bottom-color: var(--rmoto-amber); }
#rmoto-root .rmoto-group-header { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 28px 0 12px; padding: 12px 18px; border-radius: 8px; background: var(--rmoto-bg-2); border-left: 4px solid var(--rmoto-line-2); color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-group-header .rmoto-group-title { font-size: 20px; font-weight: 800; letter-spacing: 0.03em; text-transform: uppercase; margin: 0; }
#rmoto-root .rmoto-group-header.is-morning { background: linear-gradient(90deg, #DDE9F5 0%, #EBF3FC 100%); border-left-color: #3A6DB0; color: #1E4878; }
#rmoto-root .rmoto-group-header.is-afternoon { background: linear-gradient(90deg, #FFF5D9 0%, #FFFCEB 100%); border-left-color: #E0A800; color: #946D00; }
#rmoto-root .rmoto-pace-filter { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
#rmoto-root .rmoto-pace-filter-label { font-size: 12px; font-weight: 700; color: var(--rmoto-ink-2); text-transform: uppercase; letter-spacing: 0.04em; margin-right: 4px; }
#rmoto-root .rmoto-pace-filter-pill { display: inline-flex; align-items: center; line-height: 1; font-family: 'Outfit', sans-serif; font-size: 12px; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; padding: 5px 12px; border-radius: 999px; border: 1px solid transparent; cursor: pointer; transition: all .15s ease; }
#rmoto-root .rmoto-pace-filter-pill:hover { filter: brightness(0.95); }
#rmoto-root .rmoto-back-top { font-family: 'Outfit', sans-serif; font-weight: 700; font-size: 11px; letter-spacing: 0.05em; text-transform: uppercase; padding: 5px 12px; border-radius: 6px; background: rgba(255,255,255,0.75); border: 1px solid currentColor; color: inherit; cursor: pointer; flex: 0 0 auto; opacity: 0.85; transition: opacity .15s; }
#rmoto-root .rmoto-back-top:hover { opacity: 1; }
#rmoto-root .rmoto-filter-empty { text-align: center; font-size: 16px; font-weight: 700; color: var(--rmoto-muted, #777); padding: 20px 16px; }

/* En-tête sticky unique (topbar + sélecteur de jour collés ensemble). */
#rmoto-root .rmoto-sticky-header { position: sticky; top: 0; z-index: 30; background: #f4f5f7; }

/* Ride manager (admin) : header date + exports + filtre. */
#rmoto-root .rmoto-rm-head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
#rmoto-root .rmoto-rm-title { margin: 0; font-size: 18px; font-weight: 800; }
#rmoto-root .rmoto-rm-actions { display: flex; gap: 8px; flex-wrap: wrap; }
#rmoto-root .rmoto-rm-filter { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin: 10px 0 4px; }
#rmoto-root .rmoto-rm-toolbar2 { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 10px 0 4px; }
#rmoto-root .rmoto-rm-toolbar2 .rmoto-rm-filter { margin: 0; }
#rmoto-root .rmoto-rm-toolbar2 .rmoto-rm-actions { gap: 8px; }

/* ===== Vue générale (Overview) ===== */
#rmoto-root .rmoto-ov-head { margin-bottom: 10px; }
#rmoto-root .rmoto-ov-hint { font-size: 15px; color: var(--rmoto-muted, #777); margin-top: 4px; }
#rmoto-root .rmoto-ov-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--rmoto-line); border-radius: 12px; }
#rmoto-root .rmoto-ov-table { border-collapse: separate; border-spacing: 0; width: 100%; min-width: 720px; font-size: 12px; }
#rmoto-root .rmoto-ov-corner { background: var(--rmoto-bg); position: sticky; left: 0; z-index: 3; min-width: 150px; padding: 6px 10px; border-bottom: 1px solid var(--rmoto-line); border-right: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-ov-day-col { background: var(--rmoto-bg); text-align: center; padding: 0; min-width: 116px; border-bottom: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-ov-day-col.is-stale .rmoto-ov-day-name, #rmoto-root .rmoto-ov-day-col.is-stale .rmoto-ov-day-date { color: var(--rmoto-muted); }
#rmoto-root .rmoto-ov-day-btn { width: 100%; border: none; background: transparent; cursor: pointer; padding: 10px 10px; font: inherit; }
#rmoto-root .rmoto-ov-day-btn:hover { background: var(--rmoto-bg-2); }
#rmoto-root .rmoto-ov-day-name { font-weight: 800; font-size: 17px; color: var(--rmoto-ink); line-height: 1.1; }
#rmoto-root .rmoto-ov-day-date { font-size: 15px; font-weight: 500; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-ov-group-row td { background: var(--rmoto-bg-2); padding: 4px 10px; }
#rmoto-root .rmoto-ov-group-label { position: sticky; left: 0; display: inline-block; white-space: nowrap; font-weight: 800; text-transform: uppercase; letter-spacing: 0.05em; font-size: 12px; color: var(--rmoto-ink-2); background: var(--rmoto-bg-2); padding-right: 8px; }
#rmoto-root .rmoto-ov-code-cell { background: var(--rmoto-bg); vertical-align: middle; padding: 7px 10px; text-align: left; position: sticky; left: 0; z-index: 2; border-right: 1px solid var(--rmoto-line); border-bottom: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-ov-code-cell.rmoto-ov-zebra { background: #EEF0F3; }
#rmoto-root .rmoto-ov-code-line { display: flex; align-items: baseline; gap: 6px; }
#rmoto-root .rmoto-ov-code { font-weight: 800; font-size: 17px; color: var(--rmoto-accent, #0066A1); }
#rmoto-root .rmoto-ov-slot { font-size: 10px; color: var(--rmoto-muted); text-transform: uppercase; letter-spacing: 0.04em; }
#rmoto-root .rmoto-ov-link { text-decoration: none; color: var(--rmoto-accent, #0066A1); font-weight: 700; }
#rmoto-root .rmoto-ov-route-name { font-size: 14px; font-weight: 500; color: var(--rmoto-ink-2, #555); margin-top: 2px; line-height: 1.2; }
#rmoto-root .rmoto-ov-cell { padding: 5px 7px; vertical-align: top; cursor: pointer; transition: filter .12s ease; border-bottom: 1px solid var(--rmoto-line); border-right: 1px solid var(--rmoto-line-2); }
#rmoto-root .rmoto-ov-cell:hover { filter: brightness(0.96); }
#rmoto-root .rmoto-ov-empty { text-align: center; color: var(--rmoto-line-2); cursor: default; background: repeating-linear-gradient(45deg, transparent, transparent 4px, var(--rmoto-bg-2) 4px, var(--rmoto-bg-2) 5px); }
#rmoto-root .rmoto-ov-cell.is-waiting { background-image: repeating-linear-gradient(45deg, rgba(0,0,0,0.10) 0, rgba(0,0,0,0.10) 3px, transparent 3px, transparent 7px) !important; }
#rmoto-root .rmoto-ov-cell-top { display: flex; align-items: center; gap: 4px; }
#rmoto-root .rmoto-ov-pace { font-weight: 800; font-size: 12px; flex: 1 1 0; text-align: left; }
#rmoto-root .rmoto-ov-dep { font-size: 12px; font-weight: 400; color: inherit; white-space: nowrap; flex: 0 0 auto; text-align: center; }
#rmoto-root .rmoto-ov-nodep { color: var(--rmoto-amber); }
#rmoto-root .rmoto-ov-ratio { font-weight: 700; font-size: 13px; color: inherit; flex: 1 1 0; text-align: right; }
#rmoto-root .rmoto-ov-ratio.full { color: var(--rmoto-muted); }
#rmoto-root .rmoto-ov-cell-role { display: flex; gap: 4px; align-items: baseline; font-size: 12px; margin-top: 2px; line-height: 1.25; }
#rmoto-root .rmoto-ov-role-lbl { font-weight: 800; opacity: 0.75; }
#rmoto-root .rmoto-ov-role-name { line-height: 1.2; word-break: break-word; }
#rmoto-root .rmoto-ov-cell.is-mine .rmoto-ov-role-lbl, #rmoto-root .rmoto-ov-cell.is-mine .rmoto-ov-role-name { color: #fff; }
#rmoto-root .rmoto-ov-legend { display: flex; flex-wrap: wrap; gap: 20px; align-items: center; margin-top: 14px; margin-bottom: 16px; font-size: 14px; color: var(--rmoto-ink-2, #555); }
#rmoto-root .rmoto-ov-leg { display: inline-flex; align-items: center; gap: 7px; }
#rmoto-root .rmoto-ov-swatch { display: inline-block; width: 16px; height: 16px; border-radius: 4px; border: 1.5px solid; }
#rmoto-root .rmoto-ov-swatch.is-full { background: var(--rmoto-bg-2); border-color: var(--rmoto-line-2); }
#rmoto-root .rmoto-ov-swatch.is-wait { background: var(--rmoto-bg-2); border-color: var(--rmoto-ink); background-image: repeating-linear-gradient(45deg, rgba(0,0,0,0.18) 0, rgba(0,0,0,0.18) 3px, transparent 3px, transparent 6px); }
#rmoto-root .rmoto-ov-leg-mine { background: var(--rmoto-ink); color: #fff; box-shadow: inset 0 0 0 2px var(--rmoto-ink); border-radius: 4px; padding: 2px 10px; font-weight: 700; font-size: 13px; }
#rmoto-root .rmoto-ov-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
#rmoto-root .rmoto-ov-head h3 { font-size: 24px; line-height: 1; }
#rmoto-root .rmoto-ov-head .rmoto-pace-filter { margin-top: 2px; }
#rmoto-root .rmoto-ov-nomatch { text-align: center; color: var(--rmoto-muted, #8a9099); font-style: italic; font-size: 12px; cursor: default; background: #fafbfc; }
#rmoto-root .rmoto-brand-clickable { cursor: pointer; text-decoration: none; color: inherit; }
#rmoto-root .rmoto-brand-clickable:hover, #rmoto-root .rmoto-brand-clickable:focus, #rmoto-root .rmoto-brand-clickable:active { color: inherit; text-decoration: none; opacity: 0.85; }
#rmoto-root .rmoto-backup-warn { color: #B8801D; font-weight: 600; }
#rmoto-root .rmoto-backup-error { color: #B83232; font-weight: 600; margin-top: 8px; }
#rmoto-root .rmoto-backup-recap { margin-top: 12px; padding: 12px 14px; border: 1px solid #d8dee6; border-radius: 8px; background: #f7f9fb; }
#rmoto-root .rmoto-backup-recap-line { display: flex; gap: 4px; padding: 2px 0; }

/* ---------------------------------------------------------------------------
 * Parcours d'inscription initial (0.7.0) — structure minimale.
 * Le polish fin (fidélité aux maquettes, responsive) relève du Lot 7/0.9.0.
 * ------------------------------------------------------------------------- */
#rmoto-root .rmoto-login-wrap { display: grid; place-items: center; min-height: 100vh; padding: 24px; }
#rmoto-root .rmoto-login-card { max-width: 460px; width: 100%; padding: 28px; }
#rmoto-root .rmoto-login-hero { text-align: center; margin-bottom: 22px; }
#rmoto-root .rmoto-login-mark { width: 64px; height: 64px; margin: 0 auto 14px; border-radius: 50%; background: var(--rmoto-primary); color: #fff; font-family: 'Outfit', sans-serif; font-weight: 800; font-size: 22px; letter-spacing: 0.02em; display: grid; place-items: center; border: 2px solid var(--rmoto-primary-dk); box-shadow: inset 0 0 0 4px var(--rmoto-card); overflow: hidden; }
#rmoto-root .rmoto-login-mark.has-logo { background: var(--rmoto-card); border-color: var(--rmoto-line); box-shadow: none; padding: 0; }
#rmoto-root .rmoto-login-mark.has-logo img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
#rmoto-root .rmoto-login-title { font-size: clamp(24px, 5vw, 36px); font-weight: 700; }
#rmoto-root .rmoto-login-sub { font-size: 22px; font-weight: 700; color: var(--rmoto-ink); margin-top: 12px; }
#rmoto-root .rmoto-login-body { display: flex; flex-direction: column; gap: 12px; margin-top: 12px; }
/* .rmoto-field a flex:1 1 180px (pense pour les RANGEES horizontales de champs). En colonne
 * (ecran de connexion, onboarding) ce flex-grow + flex-basis 180px etire le champ en hauteur
 * (gros vide sous l'input). On lui rend une hauteur naturelle dans ces deux contextes. */
#rmoto-root .rmoto-login-body .rmoto-field, #rmoto-root .rmoto-col .rmoto-field { flex: 0 0 auto; }
#rmoto-root .rmoto-login-intro { margin: 0; font-size: 17px; line-height: 1.5; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-login-warning { font-size: 16px; font-weight: 700; text-align: center; color: var(--rmoto-ink); padding: 10px 14px; background: var(--rmoto-primary-tint); border-radius: 6px; line-height: 1.45; }
#rmoto-root .rmoto-login-submit { height: 52px; font-size: 17px; }
#rmoto-root .rmoto-modal-head h2 { margin: 0; }
#rmoto-root .rmoto-modal-sub { font-size: 15px; color: var(--rmoto-ink-2); margin-top: 8px; line-height: 1.45; }
#rmoto-root .rmoto-modal-body { margin-top: 14px; }
#rmoto-root .rmoto-col { display: flex; flex-direction: column; gap: 10px; }
/* En disposition colonne, les champs ne doivent pas s'étirer verticalement
   (le flex:1 1 180px de .rmoto-field est destiné aux lignes horizontales). */
#rmoto-root .rmoto-col > .rmoto-field { flex: 0 0 auto; }
#rmoto-root .rmoto-field-error { color: var(--rmoto-rouge); font-size: 13px; margin-top: 4px; }
/* Bandeau récapitulatif des doublons possibles (onglet Participants). Détectif. */
#rmoto-root .rmoto-dup-banner-title { font-weight: 700; margin-bottom: 6px; }
#rmoto-root .rmoto-dup-banner-list { margin: 0; padding-left: 20px; }
#rmoto-root .rmoto-dup-banner-list li { padding: 2px 0; }
#rmoto-root .rmoto-dup-item { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
#rmoto-root .rmoto-dup-ignore { flex: 0 0 auto; }
/* Modale de suppression de participant : aperçu chiffré de l'impact. */
#rmoto-root .rmoto-del-row { display: flex; justify-content: space-between; padding: 6px 0; border-bottom: 1px solid #eee; }
#rmoto-root .rmoto-del-n { color: #666; }
#rmoto-root .rmoto-del-n-hot { color: #b00020; }

/* Whitelist (Configuration → Accès) */
#rmoto-root .rmoto-whitelist-box { background: #f4f5f7; border: 1px solid #e0e0e0; border-radius: 8px; padding: 12px 14px; margin-top: 8px; }
#rmoto-root .rmoto-whitelist-actions { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin: 8px 0; }
#rmoto-root .rmoto-disabled { opacity: 0.6; pointer-events: none; }
#rmoto-root .rmoto-whitelist-list { max-height: 50vh; overflow-y: auto; border: 1px solid #e0e0e0; border-radius: 8px; }
#rmoto-root .rmoto-whitelist-item { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 12px; border-bottom: 1px solid #f0f0f0; }
#rmoto-root .rmoto-whitelist-item:last-child { border-bottom: none; }
#rmoto-root .rmoto-login-sent { text-align: center; display: flex; flex-direction: column; align-items: center; gap: 12px; margin-top: 4px; }
#rmoto-root .rmoto-login-sent-icon { width: 56px; height: 56px; border-radius: 50%; display: grid; place-items: center; font-size: 26px; line-height: 1; background: var(--rmoto-olive-tint); color: var(--rmoto-olive); }
#rmoto-root .rmoto-login-sent h2 { font-size: 22px; font-weight: 700; margin: 0; }
#rmoto-root .rmoto-login-sent p { margin: 0; font-size: 16px; line-height: 1.5; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-login-sent-hint { font-size: 14px; color: var(--rmoto-muted); line-height: 1.45; margin-top: 2px; }
#rmoto-root .rmoto-login-sent-email { color: var(--rmoto-primary); word-break: break-all; }


/* Harmonisation mobile : les titres de vue (Programme general / Recapitulatif des inscriptions)
   s'alignent sur le titre de jour (18px). Bloc place en fin de fichier pour passer APRES les
   regles de base (.rmoto-ov-head h3, .rmoto-section-head h2) a specificite egale. */
@media (max-width: 640px) {
  #rmoto-root .rmoto-ov-head h3 { font-size: 18px; }
  #rmoto-root .rmoto-section-head h2 { font-size: 18px; }
  #rmoto-root h3.rmoto-tlsf-day { font-size: 18px; }
  #rmoto-root .rmoto-crew-day-title { font-size: 19px; }
}


/* Vue Recap / Mon programme - resserrage mobile (0.10.23). Bloc en fin de fichier pour passer
   APRES les regles de base .rmoto-prog-* (sinon ecrasees, cf. cascade). Badges scopes via
   .rmoto-prog-main car pace-badge-sm / slot-tag servent aussi ailleurs (TL/SF, admin). */
@media (max-width: 640px) {
  #rmoto-root .rmoto-prog-day { padding: 12px 14px; }
  #rmoto-root .rmoto-prog-row { padding: 8px 11px; }
  #rmoto-root .rmoto-prog-actions { margin-left: auto; }
  #rmoto-root .rmoto-prog-main .rmoto-pace-badge-sm, #rmoto-root .rmoto-prog-main .rmoto-slot-tag { font-size: 11px; padding: 3px 9px; }
  #rmoto-root .rmoto-prog-main .rmoto-wait-badge { font-size: 10px; }
  #rmoto-root .rmoto-prog-export { justify-content: stretch; }
  #rmoto-root .rmoto-prog-export-btn { width: 100%; }
}

/* =====================================================================
   Marche d'echange TL/SF (phase echange) — panneaux a pourvoir + propositions
   ===================================================================== */
#rmoto-root .rmoto-ech {
  --ev: var(--rmoto-tlsf-view); --evt: var(--rmoto-tlsf-view-tint); --evd: var(--rmoto-tlsf-view-dk);
  --va: var(--rmoto-amber); --vat: var(--rmoto-amber-tint); --vad: #8A6D1A;
  --wa: var(--rmoto-rouge); --wat: var(--rmoto-rouge-tint); --wad: var(--rmoto-rouge);
  display: flex; flex-direction: column; gap: 18px;
}
#rmoto-root .rmoto-ech-h1 { font-size: 20px; font-weight: 800; margin: 0; color: var(--rmoto-ink); }
#rmoto-root .rmoto-ech-hint { font-size: 13px; color: var(--rmoto-muted); margin: -8px 0 0; }

#rmoto-root .rmoto-ech-sec { background: var(--rmoto-card); border-radius: var(--rmoto-radius, 14px); padding: 14px 16px; box-shadow: var(--rmoto-shadow); }
#rmoto-root .rmoto-ech-sec.vac { border: 1px solid var(--va); border-left: 5px solid var(--va); }
#rmoto-root .rmoto-ech-sec.prop { border: 1px solid var(--rmoto-primary); border-left: 5px solid var(--rmoto-primary); }
#rmoto-root .rmoto-ech-head { display: flex; align-items: center; gap: 9px; margin-bottom: 10px; }
#rmoto-root .rmoto-ech-head .ic { width: 26px; height: 26px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 800; }
#rmoto-root .rmoto-ech-sec.vac .ic { background: var(--vat); color: var(--vad); }
#rmoto-root .rmoto-ech-sec.prop .ic { background: var(--rmoto-primary-tint); color: var(--rmoto-primary-dk); }
#rmoto-root .rmoto-ech-head h2 { font-size: 15px; font-weight: 700; margin: 0; }
#rmoto-root .rmoto-ech-head .cnt { margin-left: auto; color: #fff; font-size: 12px; font-weight: 700; border-radius: 999px; padding: 2px 9px; }
#rmoto-root .rmoto-ech-sec.vac .cnt { background: var(--va); }
#rmoto-root .rmoto-ech-sec.prop .cnt { background: var(--rmoto-primary); }
#rmoto-root .rmoto-ech-empty { font-size: 13px; color: var(--rmoto-muted); }
#rmoto-root .rmoto-ech-grid { display: flex; flex-wrap: wrap; gap: 10px; }

#rmoto-root .rmoto-ech-vcard { display: flex; flex-direction: column; gap: 6px; border: 1px solid var(--vat); background: var(--vat); border-radius: 11px; padding: 10px 12px; min-width: 180px; }
#rmoto-root .rmoto-ech-vcard-l1 { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
#rmoto-root .rmoto-ech-vcode { font-weight: 800; font-size: 15px; color: var(--rmoto-ink); }
#rmoto-root .rmoto-ech-vname { font-size: 14px; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-ech-vcard-l2 { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
#rmoto-root .rmoto-ech-vday { font-size: 13.5px; color: var(--rmoto-ink-2); text-transform: capitalize; }
#rmoto-root .rmoto-ech-role { font-size: 11px; font-weight: 800; padding: 1px 7px; border-radius: 6px; color: #fff; }
#rmoto-root .rmoto-ech-role.tl { background: var(--rmoto-tl); }
#rmoto-root .rmoto-ech-role.sf { background: var(--rmoto-sf); }
#rmoto-root .rmoto-ech-take { margin-top: 3px; border: 0; border-radius: 8px; padding: 7px; font: inherit; font-size: 13px; font-weight: 700; cursor: pointer; background: var(--va); color: #fff; }
#rmoto-root .rmoto-ech-take[disabled] { background: #E4D6BF; color: #9A8B6E; cursor: not-allowed; }
#rmoto-root .rmoto-ech-take.cancel { background: var(--rmoto-card); color: var(--rmoto-rouge, #b3261e); border: 1px solid var(--rmoto-rouge, #b3261e); }
#rmoto-root .rmoto-ech-take.cancel[disabled] { opacity: 0.5; }

#rmoto-root .rmoto-ech-pcard { display: flex; flex-direction: column; gap: 7px; border: 1px solid var(--rmoto-primary-tint); background: var(--rmoto-primary-tint); border-radius: 11px; padding: 11px 13px; min-width: 230px; max-width: 320px; }
#rmoto-root .rmoto-ech-pcard.out { background: var(--rmoto-bg-2); border-color: var(--rmoto-line); }
#rmoto-root .rmoto-ech-pk { font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--rmoto-primary-dk); }
#rmoto-root .rmoto-ech-pcard.out .rmoto-ech-pk { color: var(--rmoto-muted); }
#rmoto-root .rmoto-ech-pl { font-size: 14px; color: var(--rmoto-ink); line-height: 1.35; }
#rmoto-root .rmoto-ech-pos { font-size: 13px; color: var(--rmoto-ink-2); background: var(--rmoto-card); border: 1px solid var(--rmoto-line); border-radius: 7px; padding: 5px 8px; }
#rmoto-root .rmoto-ech-pacts { display: flex; gap: 7px; margin-top: 2px; }
#rmoto-root .rmoto-ech-pbtn { flex: 1; border: 0; border-radius: 8px; padding: 8px; font: inherit; font-size: 13px; font-weight: 700; cursor: pointer; }
#rmoto-root .rmoto-ech-pbtn[disabled] { opacity: .6; cursor: progress; }
#rmoto-root .rmoto-ech-pbtn.ok { background: var(--rmoto-primary); color: #fff; }
#rmoto-root .rmoto-ech-pbtn.no { background: var(--rmoto-card); border: 1px solid var(--rmoto-line); color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-ech-pstatus { font-size: 13px; font-weight: 700; padding: 6px 8px; border-radius: 8px; text-align: center; }
#rmoto-root .rmoto-ech-pstatus.wait { background: var(--rmoto-card); color: var(--rmoto-muted); border: 1px dashed var(--rmoto-line-2); }
#rmoto-root .rmoto-ech-pstatus.done { background: var(--evt); color: var(--evd); }
#rmoto-root .rmoto-ech-pstatus.exp { background: var(--wat); color: var(--wad); }
#rmoto-root .rmoto-ech-pstatus.ref { background: var(--rmoto-bg-2); color: var(--rmoto-muted); }
#rmoto-root .rmoto-ech-warn { display: flex; gap: 9px; background: var(--wat); border: 1px solid var(--wa); border-radius: 9px; padding: 9px 11px; font-size: 14px; color: var(--wad); }

/* --- matrice du programme (vue echange) --- */
#rmoto-root .rmoto-ech-board { overflow-x: auto; background: var(--rmoto-card); border: 1px solid var(--rmoto-line); border-radius: 14px; box-shadow: var(--rmoto-shadow); }
#rmoto-root .rmoto-ech-board table { border-collapse: collapse; width: 100%; }
#rmoto-root .rmoto-ech-board th, #rmoto-root .rmoto-ech-board td { border: 1px solid var(--rmoto-line); padding: 0; vertical-align: top; }
#rmoto-root .rmoto-ech-board thead th { background: var(--rmoto-bg); padding: 9px 8px; font-size: 12px; text-align: center; }
#rmoto-root .rmoto-ech-corner { background: var(--rmoto-bg); }
#rmoto-root .rmoto-ech-dn { font-weight: 800; font-size: 17px; color: var(--rmoto-ink); line-height: 1.1; }
#rmoto-root .rmoto-ech-dd { font-size: 15px; font-weight: 500; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-ech-grp td { background: var(--rmoto-bg-2); font-weight: 800; font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--rmoto-muted); padding: 5px 8px; }
#rmoto-root .rmoto-ech-codecell { background: var(--rmoto-bg); padding: 7px 10px !important; min-width: 130px; text-align: left; vertical-align: middle; }
#rmoto-root .rmoto-ech-code { font-weight: 800; font-size: 17px; color: var(--rmoto-accent, #0066A1); display: flex; align-items: baseline; gap: 6px; }
#rmoto-root .rmoto-ech-slot { font-size: 10px; font-weight: 600; color: var(--rmoto-muted); text-transform: uppercase; letter-spacing: 0.04em; background: none; padding: 0; }
#rmoto-root .rmoto-ech-cname { font-size: 14px; font-weight: 500; color: var(--rmoto-ink-2, #555); margin-top: 2px; line-height: 1.2; }
#rmoto-root .rmoto-ech-cell { min-width: 110px; }
#rmoto-root .rmoto-ech-cell.empty { background: repeating-linear-gradient(45deg, var(--rmoto-card), var(--rmoto-card) 4px, var(--rmoto-bg-2) 4px, var(--rmoto-bg-2) 8px); }
#rmoto-root .rmoto-ech-dep { display: flex; flex-direction: column; }
#rmoto-root .rmoto-ech-r { display: flex; align-items: center; gap: 6px; padding: 5px 7px; font-size: 12px; }
#rmoto-root .rmoto-ech-r + .rmoto-ech-r { border-top: 1px dashed var(--rmoto-line); }
#rmoto-root .rmoto-ech-r.mine { background: var(--evt); }
#rmoto-root .rmoto-ech-r.mine .rmoto-ech-rw { color: var(--evd); font-weight: 800; }
#rmoto-root .rmoto-ech-r.vacant { background: var(--vat); }
#rmoto-root .rmoto-ech-r.vacant .rmoto-ech-rw { color: var(--vad); font-weight: 800; font-style: italic; }
#rmoto-root .rmoto-ech-r.dim { opacity: 0.4; }
#rmoto-root .rmoto-ech-rb { font-weight: 800; opacity: 0.75; flex-shrink: 0; }
#rmoto-root .rmoto-ech-rw { font-size: 13px; color: var(--rmoto-ink); line-height: 1.2; word-break: break-word; }

/* zebra (alternance de lignes) de la matrice echange */
#rmoto-root .rmoto-ech-zebra > td:not(.empty) { background: var(--rmoto-bg); }
#rmoto-root .rmoto-ech-zebra > .rmoto-ech-codecell { background: #EEF0F3; }
#rmoto-root .rmoto-ech-slot { white-space: nowrap; }

/* barre de filtre d'allures de la matrice echange */
#rmoto-root .rmoto-ech-filterbar { margin: 2px 0 10px; }

/* --- modale d'action (C3.3) --- */
#rmoto-root .rmoto-ech-cell.clickable { cursor: pointer; }
#rmoto-root .rmoto-ech-cell.clickable:hover { filter: brightness(0.97); }
#rmoto-root .rmoto-ech-scrim { position: fixed; inset: 0; background: rgba(20,28,40,0.45); display: flex; align-items: center; justify-content: center; padding: 16px; z-index: 9998; }
#rmoto-root .rmoto-ech-modal { background: var(--rmoto-card); border-radius: 18px; max-width: 440px; width: 100%; box-shadow: var(--rmoto-shadow-lg, 0 20px 60px rgba(0,0,0,0.25)); max-height: 90vh; display: flex; flex-direction: column; overflow: hidden; }
#rmoto-root .rmoto-ech-mhead { position: relative; padding: 18px 18px 15px; border-bottom: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-ech-mday { font-size: 18px; font-weight: 800; color: var(--rmoto-ink); text-transform: capitalize; line-height: 1.15; margin-bottom: 6px; padding-right: 30px; }
#rmoto-root .rmoto-ech-mtitle { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; margin-bottom: 9px; }
#rmoto-root .rmoto-ech-mcode { flex-shrink: 0; font-size: 13px; font-weight: 800; color: #fff; background: var(--rmoto-accent, #0066A1); border-radius: 6px; padding: 2px 9px; }
#rmoto-root .rmoto-ech-mname { font-size: 17px; font-weight: 700; color: var(--rmoto-ink); line-height: 1.2; }
#rmoto-root .rmoto-ech-mclose { position: absolute; top: 13px; right: 14px; border: none; background: var(--rmoto-bg-2); color: var(--rmoto-muted); width: 28px; height: 28px; border-radius: 50%; cursor: pointer; font-size: 14px; line-height: 1; }
#rmoto-root .rmoto-ech-mclose:hover { background: var(--rmoto-line); }
#rmoto-root .rmoto-ech-mbody { padding: 14px 18px 18px; overflow-y: auto; }
#rmoto-root .rmoto-ech-rsec { border: 1px solid var(--rmoto-line); border-radius: 12px; padding: 11px 13px; margin-bottom: 10px; }
#rmoto-root .rmoto-ech-rsec.mine { border-color: var(--rmoto-tlsf-view, #2a9d8f); background: var(--rmoto-tlsf-view-tint, #e7f5f3); }
#rmoto-root .rmoto-ech-rsec.vacant { border-color: var(--rmoto-amber, #e08600); background: var(--rmoto-amber-tint, #fdf3e2); }
#rmoto-root .rmoto-ech-rsec-top { display: flex; align-items: center; gap: 9px; }
#rmoto-root .rmoto-ech-rsec .rmoto-ech-rb { font-size: 12px; }
#rmoto-root .rmoto-ech-rsec-name { font-size: 12px; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-ech-rsec-who { font-size: 15px; font-weight: 700; color: var(--rmoto-ink); }
#rmoto-root .rmoto-ech-acts { display: flex; flex-direction: column; gap: 8px; margin-top: 11px; }
#rmoto-root .rmoto-ech-act { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; text-align: left; width: 100%; border: 1px solid var(--rmoto-line); border-radius: 10px; padding: 9px 12px; background: var(--rmoto-card); cursor: pointer; transition: border-color .12s, background .12s; }
#rmoto-root .rmoto-ech-act:hover:not(.disabled) { border-color: var(--rmoto-accent, #0066A1); background: var(--rmoto-bg); }
#rmoto-root .rmoto-ech-act.disabled { opacity: 0.55; cursor: not-allowed; }
#rmoto-root .rmoto-ech-at { font-size: 14px; font-weight: 700; color: var(--rmoto-ink); }
#rmoto-root .rmoto-ech-as { font-size: 12px; color: var(--rmoto-muted); }
#rmoto-root .rmoto-ech-lock { font-size: 11px; color: var(--rmoto-rouge, #b3261e); font-weight: 600; margin-top: 2px; }
#rmoto-root .rmoto-ech-sub { border-top: 1px dashed var(--rmoto-line); margin-top: 6px; padding-top: 14px; }
#rmoto-root .rmoto-ech-subh { margin: 0 0 10px; font-size: 14px; font-weight: 700; color: var(--rmoto-ink); }
#rmoto-root .rmoto-ech-subnote { font-size: 13px; color: var(--rmoto-ink-2, #555); margin: 0 0 12px; line-height: 1.4; }
#rmoto-root .rmoto-ech-offers { display: flex; flex-direction: column; gap: 7px; margin-bottom: 12px; }
#rmoto-root .rmoto-ech-offer { display: flex; align-items: center; gap: 9px; border: 1px solid var(--rmoto-line); border-radius: 9px; padding: 8px 11px; cursor: pointer; }
#rmoto-root .rmoto-ech-offer.sel { border-color: var(--rmoto-accent, #0066A1); background: var(--rmoto-bg); }
#rmoto-root .rmoto-ech-ol { flex: 1; font-size: 13px; font-weight: 600; color: var(--rmoto-ink); }
#rmoto-root .rmoto-ech-om { font-size: 12px; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-ech-warns { display: flex; flex-direction: column; gap: 8px; margin-bottom: 12px; }
#rmoto-root .rmoto-ech-warn { display: flex; gap: 9px; border-radius: 9px; padding: 9px 11px; font-size: 14px; line-height: 1.45; }
#rmoto-root .rmoto-ech-warn.hard { background: var(--rmoto-rouge-tint, #fdeceb); color: var(--rmoto-rouge-dk, #8a1c16); border: 1px solid var(--rmoto-rouge, #b3261e); }
#rmoto-root .rmoto-ech-warn.soft { background: var(--rmoto-amber-tint, #fdf3e2); color: var(--rmoto-amber-dk, #8a5a00); border: 1px solid var(--rmoto-amber, #e08600); }
#rmoto-root .rmoto-ech-wi { flex-shrink: 0; }
#rmoto-root .rmoto-ech-ack { display: flex; align-items: flex-start; gap: 8px; font-size: 12.5px; color: var(--rmoto-ink-2, #555); cursor: pointer; margin-bottom: 12px; }
#rmoto-root .rmoto-ech-ack input { margin-top: 2px; }
#rmoto-root .rmoto-ech-confirm { width: 100%; border: none; border-radius: 10px; padding: 12px; font-size: 14px; font-weight: 700; color: #fff; background: var(--rmoto-accent, #0066A1); cursor: pointer; }
#rmoto-root .rmoto-ech-confirm:disabled { opacity: 0.45; cursor: not-allowed; }
#rmoto-root .rmoto-ech-confirm.vac { background: var(--rmoto-amber, #e08600); }
#rmoto-root .rmoto-ech-confirm.view { background: var(--rmoto-tlsf-view, #2a9d8f); }
#rmoto-root .rmoto-ech-async { font-size: 13px; color: var(--rmoto-ink-2, #555); margin-top: 11px; line-height: 1.45; }

/* --- bouton rafraichir eligibilite (admin) --- */
#rmoto-root .rmoto-enc-elig-row { display: flex; align-items: center; gap: 12px; margin-top: 10px; flex-wrap: wrap; }
#rmoto-root .rmoto-enc-elig-row .rmoto-config-hint { margin: 0; }

/* ===================================================================
 * Onglet Mes ressources (vue TL/SF) — cartes repliables par sortie.
 * =================================================================== */
#rmoto-root .rmoto-crew { margin-top: 8px; }
#rmoto-root .rmoto-crew-loading { padding: 20px; text-align: center; }

#rmoto-root .rmoto-crew-tabs { display: flex; gap: 6px; margin-bottom: 14px; border-bottom: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-crew-tab { background: none; border: none; border-bottom: 2px solid transparent; padding: 8px 14px; font-size: 14px; font-weight: 700; color: var(--rmoto-muted); cursor: pointer; }
#rmoto-root .rmoto-crew-tab.active { color: var(--rmoto-primary); border-bottom-color: var(--rmoto-primary); }

#rmoto-root .rmoto-crew-top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
#rmoto-root .rmoto-crew-assist { display: inline-flex; align-items: center; gap: 8px; background: var(--rmoto-primary-tint); border: 1px solid var(--rmoto-primary); border-radius: 999px; padding: 5px 12px; font-size: 13px; color: var(--rmoto-primary-dk); }
#rmoto-root .rmoto-crew-assist-label { font-weight: 700; }
#rmoto-root .rmoto-crew-assist a { color: var(--rmoto-primary); font-weight: 700; text-decoration: none; }
#rmoto-root .rmoto-crew-expandall { margin-left: auto; border: 1px solid var(--rmoto-line-2); background: var(--rmoto-card); border-radius: 8px; padding: 5px 12px; font-size: 13px; font-weight: 700; color: var(--rmoto-ink-2); cursor: pointer; }

#rmoto-root .rmoto-crew-empty { text-align: center; padding: 34px 20px; }
#rmoto-root .rmoto-crew-empty-icon { font-size: 30px; opacity: .6; }
#rmoto-root .rmoto-crew-empty-title { font-size: 15px; font-weight: 800; margin-top: 10px; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-crew-empty-sub { font-size: 13px; margin-top: 4px; max-width: 440px; margin-left: auto; margin-right: auto; }

#rmoto-root .rmoto-crew-day { margin-top: 18px; }
#rmoto-root .rmoto-crew-day-title { font-size: 24px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.5px; line-height: 1; color: var(--rmoto-primary-dk); margin: 0 0 10px; }
#rmoto-root .rmoto-crew-dayhead { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }

#rmoto-root .rmoto-crew-card { background: var(--rmoto-card); border: 1px solid var(--rmoto-line); border-radius: var(--rmoto-r-m); margin-bottom: 12px; overflow: hidden; }
#rmoto-root .rmoto-crew-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 12px 14px; cursor: pointer; }
#rmoto-root .rmoto-crew-head:hover { background: var(--rmoto-bg); }
#rmoto-root .rmoto-crew-code { color: #fff; font-weight: 800; font-size: 16px; border-radius: 8px; padding: 3px 10px; }
#rmoto-root .rmoto-crew-name { font-size: 19px; font-weight: 800; text-decoration: none; }
#rmoto-root .rmoto-crew-tag { font-size: 11px; font-weight: 700; color: var(--rmoto-ink-2); background: var(--rmoto-bg-2); border-radius: 999px; padding: 2px 9px; }
#rmoto-root .rmoto-crew-pace { font-size: 11px; font-weight: 700; border: 1px solid; border-radius: 999px; padding: 2px 9px; }
#rmoto-root .rmoto-crew-sample { font-size: 11px; font-weight: 700; color: var(--rmoto-amber-dk); background: var(--rmoto-amber-tint); border-radius: 999px; padding: 2px 9px; }
#rmoto-root .rmoto-crew-role { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.4px; border-radius: 999px; padding: 3px 9px; margin-left: auto; }
#rmoto-root .rmoto-crew-role.tl { background: var(--rmoto-tl-tint, #efe9fb); color: var(--rmoto-tl-dk, #5b3aa6); }
#rmoto-root .rmoto-crew-role.sf { background: var(--rmoto-sf-tint, #fbf3e2); color: var(--rmoto-sf-dk, #9a6a14); }
#rmoto-root .rmoto-crew-chev { color: var(--rmoto-muted); font-size: 14px; margin-left: 4px; }

#rmoto-root .rmoto-crew-body { padding: 0 14px 14px; border-top: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-crew-mapref { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; background: var(--rmoto-primary-tint); border: 1px solid var(--rmoto-primary); border-radius: 10px; padding: 10px 12px; margin-top: 12px; }
#rmoto-root .rmoto-crew-mapref-txt { flex: 1; min-width: 220px; }
#rmoto-root .rmoto-crew-mapref-title { font-size: 13px; font-weight: 800; color: var(--rmoto-primary-dk); }
#rmoto-root .rmoto-crew-mapref-sub { font-size: 12px; margin-top: 2px; }
#rmoto-root .rmoto-crew-btn { display: inline-flex; align-items: center; gap: 6px; background: var(--rmoto-primary); color: #fff; border-radius: 8px; padding: 6px 12px; font-size: 13px; font-weight: 700; text-decoration: none; white-space: nowrap; }
#rmoto-root .rmoto-crew-btn.ghost { background: var(--rmoto-card); color: var(--rmoto-primary); border: 1px solid var(--rmoto-primary); }
#rmoto-root .rmoto-crew-notes { font-size: 14px; color: var(--rmoto-ink-2); background: var(--rmoto-primary-tint); border-left: 3px solid var(--rmoto-primary); border-radius: 6px; padding: 8px 11px; }

#rmoto-root .rmoto-crew-dl { margin-top: 12px; display: flex; flex-direction: column; gap: 6px; }
#rmoto-root .rmoto-crew-dl-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
#rmoto-root .rmoto-crew-dl-label { font-size: 13px; font-weight: 800; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-crew-seg { font-size: 14px; }
#rmoto-root .rmoto-crew-seg b { margin-right: 2px; }
#rmoto-root .rmoto-crew-fmt { display: inline-block; border: 1px solid var(--rmoto-line-2); border-radius: 7px; padding: 3px 10px; font-size: 12px; font-weight: 700; color: var(--rmoto-primary-dk); text-decoration: none; margin-left: 4px; }
#rmoto-root .rmoto-crew-fmt.is-disabled { color: var(--rmoto-muted); border-style: dashed; cursor: not-allowed; }

#rmoto-root .rmoto-crew-sec { margin-top: 14px; }
#rmoto-root .rmoto-crew-sec-title { font-size: 16px; font-weight: 800; margin-bottom: 6px; color: var(--rmoto-ink); display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
#rmoto-root .rmoto-crew-ver { font-size: 11px; font-weight: 600; padding: 1px 7px; border-radius: 999px; background: var(--rmoto-primary); color: #fff; letter-spacing: 0.02em; }
#rmoto-root .rmoto-crew-upd { font-size: 12px; font-weight: 500; color: var(--rmoto-muted); }
#rmoto-root .rmoto-crew-sec-sub { font-weight: 600; color: var(--rmoto-muted); }
#rmoto-root .rmoto-crew-table { border-collapse: collapse; width: 100%; font-size: 14px; }
#rmoto-root .rmoto-crew-table th { background: var(--rmoto-th-bg); color: var(--rmoto-muted); font-weight: 700; text-align: left; padding: 6px 8px; font-size: 12px; border-bottom: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-crew-table td { padding: 6px 8px; border-bottom: 1px solid var(--rmoto-line); vertical-align: top; }
#rmoto-root .rmoto-crew-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 5px; vertical-align: 1px; }
#rmoto-root .rmoto-crew-pill { font-size: 11px; font-weight: 700; border: 1px solid; border-radius: 6px; padding: 1px 7px; }
#rmoto-root .rmoto-crew-mono { font-variant-numeric: tabular-nums; color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-crew-sub { font-size: 12px; font-weight: 400; }
#rmoto-root .rmoto-crew-copy { border: 1px solid var(--rmoto-line-2); background: var(--rmoto-card); border-radius: 6px; padding: 1px 7px; font-size: 11px; color: var(--rmoto-ink-2); cursor: pointer; margin-left: 6px; }

#rmoto-root .rmoto-crew-legend { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 12px; font-size: 11px; color: var(--rmoto-ink-2); }

/* --- Sous-bloc par trace (multi = bandeau repliable) --- */
#rmoto-root .rmoto-crew-trk { border: 1px solid var(--rmoto-line); border-radius: 10px; margin-top: 12px; background: var(--rmoto-card); padding: 12px; }
#rmoto-root .rmoto-crew-trk.rmoto-crew-trk-multi { padding: 0; }
#rmoto-root .rmoto-crew-trk-bar { display: flex; align-items: center; gap: 8px; padding: 11px 13px; cursor: pointer; user-select: none; border-bottom: 1px solid var(--rmoto-line); border-radius: 10px 10px 0 0; }
#rmoto-root .rmoto-crew-trk.is-collapsed .rmoto-crew-trk-bar { border-bottom: none; border-radius: 10px; }
#rmoto-root .rmoto-crew-trk-name { font-size: 13px; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; }
#rmoto-root .rmoto-crew-trk-chev { margin-left: auto; font-size: 14px; }
#rmoto-root .rmoto-crew-trk-body { padding: 12px; }

/* --- Bouton "Tout" (telechargement groupe par ligne) --- */
#rmoto-root .rmoto-crew-dlall { display: inline-flex; align-items: center; gap: 5px; background: var(--rmoto-primary); color: #fff; border: none; border-radius: 8px; padding: 5px 13px; font-size: 13px; font-weight: 800; cursor: pointer; text-decoration: none; margin-left: auto; }

/* --- Carte gpx.studio en lazy-load --- */
#rmoto-root .rmoto-crew-map-ph { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 7px; background: repeating-linear-gradient(45deg, #EEF3F8, #EEF3F8 12px, #E7EEF5 12px, #E7EEF5 24px); border: 1px dashed var(--rmoto-primary); border-radius: 10px; height: 132px; cursor: pointer; margin-top: 12px; }
#rmoto-root .rmoto-crew-map-emoji { font-size: 22px; }
#rmoto-root .rmoto-crew-map-cta { display: inline-flex; align-items: center; gap: 6px; background: var(--rmoto-primary); color: #fff; border-radius: 8px; padding: 6px 12px; font-size: 12px; font-weight: 700; }
#rmoto-root .rmoto-crew-map-hint { font-size: 11px; }
#rmoto-root .rmoto-crew-map-frame { position: relative; border-radius: 10px; overflow: hidden; border: 1px solid var(--rmoto-primary); margin-top: 12px; }
#rmoto-root .rmoto-crew-map-frame iframe { display: block; width: 100%; height: 360px; border: 0; }
#rmoto-root .rmoto-crew-map-hide { position: absolute; top: 8px; right: 8px; background: rgba(255,255,255,.94); border: 1px solid var(--rmoto-line-2); border-radius: 7px; padding: 3px 9px; font-size: 11px; font-weight: 700; color: var(--rmoto-ink-2); cursor: pointer; z-index: 2; }

/* --- Pauses : lien telephone --- */
#rmoto-root .rmoto-crew-spot-tel { color: var(--rmoto-primary); text-decoration: none; font-weight: 700; }
#rmoto-root .rmoto-crew-back { display: inline-flex; align-items: center; gap: 5px; background: var(--rmoto-bg-2); border: 1px solid var(--rmoto-line-2); color: var(--rmoto-ink-2); border-radius: 8px; padding: 6px 12px; font-size: 12px; font-weight: 700; cursor: pointer; margin-top: 12px; }
#rmoto-root .rmoto-crew-back:hover, #rmoto-root .rmoto-crew-back:focus-visible { background: var(--rmoto-line-2); }
#rmoto-root .rmoto-crew-cfg-status { margin-top: 10px; font-size: 13px; border-radius: 8px; padding: 8px 11px; }
#rmoto-root .rmoto-crew-cfg-status.testing { background: var(--rmoto-bg-2); color: var(--rmoto-ink-2); }
#rmoto-root .rmoto-crew-cfg-status.ok { background: #e6f4ea; color: #1e7e34; border: 1px solid #b7dfc2; }
#rmoto-root .rmoto-crew-cfg-status.err { background: #fdecea; color: #b3261e; border: 1px solid #f5c6c2; }
#rmoto-root .rmoto-crew-cfg-codes { margin-top: 4px; font-size: 12px; font-family: ui-monospace, monospace; color: var(--rmoto-ink-2); word-break: break-word; }
/* --- Pool remplacant (jour x allure) --- */
#rmoto-root .rmoto-pool-wrap { overflow-x: auto; margin-top: 8px; }
#rmoto-root .rmoto-pool-tbl { border-collapse: separate; border-spacing: 0; width: 100%; min-width: 760px; }
#rmoto-root .rmoto-pool-corner { background: var(--rmoto-th-bg); border-bottom: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-pool-day { background: var(--rmoto-th-bg); text-align: center; padding: 7px 9px; border-bottom: 1px solid var(--rmoto-line); border-left: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-pool-dn { font-weight: 800; font-size: 13px; color: var(--rmoto-ink); text-transform: uppercase; letter-spacing: .03em; }
#rmoto-root .rmoto-pool-dd { font-size: 11px; color: var(--rmoto-muted); }
#rmoto-root .rmoto-pool-al { background: var(--rmoto-card); text-align: left; padding: 9px 11px; font-weight: 800; font-size: 14px; white-space: nowrap; border-bottom: 1px solid var(--rmoto-line); border-right: 2px solid var(--rmoto-line); position: sticky; left: 0; }
#rmoto-root .rmoto-pool-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; margin-right: 7px; vertical-align: middle; }
#rmoto-root .rmoto-pool-cell { vertical-align: top; padding: 8px 9px; border-bottom: 1px solid var(--rmoto-line); border-left: 1px solid var(--rmoto-line); min-width: 140px; }
#rmoto-root .rmoto-pool-vol { display: flex; align-items: center; gap: 6px; margin: 3px 0; font-size: 13px; cursor: default; }
#rmoto-root .rmoto-pool-vol:hover .rmoto-pool-nm { text-decoration: underline dotted; }
#rmoto-root .rmoto-pool-pls { display: inline-flex; gap: 3px; flex: none; }
#rmoto-root .rmoto-pool-pl { font-size: 9.5px; font-weight: 800; border-radius: 5px; padding: 1px 5px; letter-spacing: .03em; }
#rmoto-root .rmoto-pool-pl.tl { background: var(--rmoto-tl-tint); color: var(--rmoto-tl-dk); }
#rmoto-root .rmoto-pool-pl.sf { background: var(--rmoto-sf-tint); color: var(--rmoto-sf-dk); }
#rmoto-root .rmoto-pool-nm { font-weight: 600; color: var(--rmoto-ink); }
#rmoto-root .rmoto-pool-empty { color: var(--rmoto-line-2); }
#rmoto-root .rmoto-pool-legend { display: flex; gap: 16px; flex-wrap: wrap; margin-top: 10px; font-size: 12px; color: var(--rmoto-ink-2); align-items: center; }
#rmoto-root .rmoto-pool-legend .rmoto-pool-pl { vertical-align: middle; }
/* --- Bascule Liste / Tableau par jour (participants) --- */
#rmoto-root .rmoto-part-viewtabs { display: flex; gap: 4px; border-bottom: 1px solid var(--rmoto-line); margin-bottom: 12px; }
#rmoto-root .rmoto-part-viewtabs .rmoto-subtab { background: none; border: none; padding: 8px 14px; font-weight: 700; font-size: 14px; color: var(--rmoto-muted); border-bottom: 2px solid transparent; cursor: pointer; }
#rmoto-root .rmoto-part-viewtabs .rmoto-subtab.is-active { color: var(--rmoto-primary); border-bottom-color: var(--rmoto-primary); }
/* --- Grille participant x jour --- */
#rmoto-root .rmoto-pg-wrap { overflow-x: auto; margin-top: 6px; }
#rmoto-root .rmoto-pg-tbl { border-collapse: separate; border-spacing: 0; width: 100%; min-width: 820px; }
#rmoto-root .rmoto-pg-nmh { position: sticky; left: 40px; z-index: 2; background: var(--rmoto-th-bg); text-align: left; padding: 8px 12px; font-size: 12px; font-weight: 800; color: var(--rmoto-ink-2); white-space: nowrap; border-bottom: 1px solid var(--rmoto-line); border-right: 2px solid var(--rmoto-line); cursor: pointer; user-select: none; }
#rmoto-root .rmoto-pg-arr { color: var(--rmoto-primary); }
#rmoto-root .rmoto-pg-day { background: var(--rmoto-th-bg); text-align: center; padding: 7px 9px; border-bottom: 1px solid var(--rmoto-line); border-left: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-pg-dn { font-weight: 800; font-size: 13px; color: var(--rmoto-ink); text-transform: uppercase; letter-spacing: .03em; }
#rmoto-root .rmoto-pg-dd { font-size: 11px; color: var(--rmoto-muted); }
#rmoto-root .rmoto-pg-nm { position: sticky; left: 40px; z-index: 1; background: var(--rmoto-card); text-align: left; padding: 8px 12px; font-weight: 700; font-size: 14px; color: var(--rmoto-ink); white-space: nowrap; border-bottom: 1px solid var(--rmoto-line); border-right: 2px solid var(--rmoto-line); }
#rmoto-root .rmoto-pg-cell { vertical-align: top; padding: 6px 8px; border-bottom: 1px solid var(--rmoto-line); border-left: 1px solid var(--rmoto-line); min-width: 112px; }
#rmoto-root .rmoto-pg-in { display: inline-flex; align-items: center; gap: 4px; margin: 2px 4px 2px 0; }
#rmoto-root .rmoto-pg-code { display: inline-block; color: #fff; font-weight: 800; font-size: 12px; border-radius: 6px; padding: 2px 8px; letter-spacing: .02em; }
#rmoto-root .rmoto-pg-code.out { background: #fff; border: 1.5px dashed currentColor; font-weight: 800; }
#rmoto-root .rmoto-pg-role { font-size: 9px; font-weight: 800; border-radius: 5px; padding: 1px 5px; letter-spacing: .03em; }
#rmoto-root .rmoto-pg-role.tl { background: var(--rmoto-tl-tint); color: var(--rmoto-tl-dk); }
#rmoto-root .rmoto-pg-role.sf { background: var(--rmoto-sf-tint); color: var(--rmoto-sf-dk); }
#rmoto-root .rmoto-pg-wl { display: inline-flex; align-items: center; gap: 5px; margin: 2px 4px 2px 0; }
#rmoto-root .rmoto-pg-wlp { font-size: 10px; font-weight: 800; color: var(--rmoto-muted); }
#rmoto-root .rmoto-pg-empty { color: var(--rmoto-line-2); }
/* Colonne numero de ligne (sticky tout a gauche) */
#rmoto-root .rmoto-pg-numh, #rmoto-root .rmoto-pg-num { position: sticky; left: 0; width: 40px; min-width: 40px; max-width: 40px; text-align: center; }
#rmoto-root .rmoto-pg-numh { z-index: 3; background: var(--rmoto-th-bg); font-size: 11px; font-weight: 800; color: var(--rmoto-muted); padding: 7px 4px; border-bottom: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-pg-num { z-index: 2; background: var(--rmoto-card); font-size: 12px; font-weight: 700; color: var(--rmoto-muted); padding: 8px 4px; border-bottom: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-pg-footnum { border-top: 2px solid var(--rmoto-line); }
/* --- Onglet Statistiques (admin > participants) --- */
#rmoto-root .rmoto-ps-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 4px 0 18px; }
#rmoto-root .rmoto-ps-kpi { background: var(--rmoto-card); border: 1px solid var(--rmoto-line); border-radius: 12px; padding: 12px 14px; }
#rmoto-root .rmoto-ps-kn { font-size: 25px; font-weight: 800; line-height: 1; color: var(--rmoto-ink); }
#rmoto-root .rmoto-ps-kmax { font-size: 15px; color: var(--rmoto-muted); font-weight: 700; }
#rmoto-root .rmoto-ps-kl { font-size: 12px; color: var(--rmoto-muted); margin-top: 4px; }
#rmoto-root .rmoto-ps-ksub { font-size: 11px; color: var(--rmoto-ink-2); font-weight: 700; margin-top: 2px; }
#rmoto-root .rmoto-ps-kbar { margin-top: 7px; }
#rmoto-root .rmoto-ps-unit { display: inline-block; font-size: 9px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: var(--rmoto-ink-2); background: var(--rmoto-bg-2); border: 1px solid var(--rmoto-line); border-radius: 5px; padding: 1px 6px; margin-left: 6px; vertical-align: middle; }
#rmoto-root .rmoto-ps-sec { margin: 20px 0; }
#rmoto-root .rmoto-ps-h { font-size: 15px; margin: 0 0 9px; }
#rmoto-root .rmoto-ps-card { background: var(--rmoto-card); border: 1px solid var(--rmoto-line); border-radius: 12px; padding: 12px 14px; }
#rmoto-root .rmoto-ps-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
#rmoto-root .rmoto-ps-scroll { overflow-x: auto; }
#rmoto-root .rmoto-ps-tbl { border-collapse: collapse; width: 100%; font-size: 13px; }
#rmoto-root .rmoto-ps-tbl th { text-align: left; font-size: 11px; font-weight: 700; color: var(--rmoto-ink-2); text-transform: uppercase; letter-spacing: .02em; padding: 7px 8px; border-bottom: 1px solid var(--rmoto-line); background: var(--rmoto-th-bg); white-space: nowrap; }
#rmoto-root .rmoto-ps-tbl th.rmoto-ps-th { cursor: pointer; user-select: none; }
#rmoto-root .rmoto-ps-arr { color: var(--rmoto-primary); font-size: 10px; }
#rmoto-root .rmoto-ps-tbl td { padding: 7px 8px; border-bottom: 1px solid var(--rmoto-line); vertical-align: middle; }
#rmoto-root .rmoto-ps-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
#rmoto-root .rmoto-ps-code { display: inline-block; color: #fff; font-weight: 800; font-size: 11px; border-radius: 5px; padding: 1px 6px; }
#rmoto-root .rmoto-ps-slot { font-size: 9px; font-weight: 800; color: var(--rmoto-muted); margin-left: 4px; text-transform: uppercase; }
#rmoto-root .rmoto-ps-cname { color: var(--rmoto-ink-2); margin-left: 6px; }
#rmoto-root .rmoto-ps-pace { display: inline-block; color: #fff; font-size: 11px; font-weight: 700; border-radius: 5px; padding: 1px 7px; }
#rmoto-root .rmoto-ps-wl { color: var(--rmoto-danger); }
#rmoto-root .rmoto-ps-dash { color: var(--rmoto-line-2); }
#rmoto-root .rmoto-ps-barcell { min-width: 150px; white-space: nowrap; }
#rmoto-root .rmoto-ps-track { position: relative; display: inline-block; width: 110px; height: 9px; background: var(--rmoto-bg-2); border-radius: 6px; vertical-align: middle; overflow: hidden; }
#rmoto-root .rmoto-ps-fill { position: absolute; left: 0; top: 0; height: 100%; border-radius: 6px; background: var(--rmoto-primary); }
#rmoto-root .rmoto-ps-fill.is-high { background: #B8801D; }
#rmoto-root .rmoto-ps-fill.is-full { background: var(--rmoto-danger); }
#rmoto-root .rmoto-ps-fill.is-warn { background: var(--rmoto-danger); }
#rmoto-root .rmoto-ps-pct { font-size: 11px; font-weight: 700; color: var(--rmoto-ink-2); margin-left: 6px; }
#rmoto-root .rmoto-ps-alrow { display: flex; align-items: center; gap: 12px; margin: 11px 0; }
#rmoto-root .rmoto-ps-allbl { width: 100px; font-weight: 700; font-size: 13px; color: var(--rmoto-ink); }
#rmoto-root .rmoto-ps-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; margin-right: 6px; }
#rmoto-root .rmoto-ps-albar { flex: 1; }
#rmoto-root .rmoto-ps-albar .rmoto-ps-track { width: 100%; height: 12px; }
#rmoto-root .rmoto-ps-alnum { width: 128px; text-align: right; font-size: 13px; font-variant-numeric: tabular-nums; color: var(--rmoto-ink); }
#rmoto-root .rmoto-ps-pct2 { font-weight: 800; }
#rmoto-root .rmoto-ps-pct2.is-over { color: var(--rmoto-danger); }
#rmoto-root .rmoto-ps-wlnote { font-size: 10px; color: var(--rmoto-danger); font-weight: 700; }
#rmoto-root .rmoto-ps-vbars { display: flex; gap: 12px; align-items: flex-end; padding: 8px 4px 0; }
#rmoto-root .rmoto-ps-daycol { flex: 1; text-align: center; }
#rmoto-root .rmoto-ps-bwrap { height: 132px; display: flex; align-items: flex-end; justify-content: center; }
#rmoto-root .rmoto-ps-vbar { width: 70%; border-radius: 6px 6px 0 0; min-height: 4px; background: var(--rmoto-primary); }
#rmoto-root .rmoto-ps-vbar.is-high { background: #1e7e34; }
#rmoto-root .rmoto-ps-vbar.is-full { background: var(--rmoto-danger); }
#rmoto-root .rmoto-ps-vbar.is-zero { background: var(--rmoto-muted); }
#rmoto-root .rmoto-ps-dlbl { font-size: 12px; font-weight: 700; margin-top: 6px; color: var(--rmoto-ink); }
#rmoto-root .rmoto-ps-dpct { font-size: 11px; color: var(--rmoto-muted); }
#rmoto-root .rmoto-ps-dpct span { display: block; font-size: 10px; }
/* --- Bloc places par jour x allure (Statistiques) --- */
#rmoto-root .rmoto-ps-dptbl { min-width: 640px; }
#rmoto-root .rmoto-ps-dptbl th.rmoto-ps-dpg { text-align: center; font-weight: 700; padding: 6px 8px; white-space: nowrap; }
#rmoto-root .rmoto-ps-dptbl th.rmoto-ps-dpg .rmoto-ps-dot { margin-right: 5px; }
#rmoto-root .rmoto-ps-dptbl th.rmoto-ps-dpsub { font-size: 10px; font-weight: 600; color: var(--rmoto-muted); text-align: right; padding: 3px 8px; text-transform: uppercase; letter-spacing: .02em; }
#rmoto-root .rmoto-ps-dptbl td.rmoto-ps-dpday { font-weight: 700; white-space: nowrap; }
#rmoto-root .rmoto-ps-dptbl td.rmoto-ps-dpfull { color: var(--rmoto-danger, #B8801D); font-weight: 800; }
#rmoto-root .rmoto-ps-dptbl .rmoto-ps-dptot { background: rgba(0, 75, 122, .05); font-weight: 700; }
#rmoto-root .rmoto-ps-dptbl th.rmoto-ps-dptot { color: var(--rmoto-ink); }
#rmoto-root .rmoto-ps-dptbl tr.rmoto-ps-dpfoot td { border-top: 2px solid var(--rmoto-line); background: rgba(0, 75, 122, .06); font-weight: 800; }
#rmoto-root .rmoto-ps-dptbl tr.rmoto-ps-dpfoot td.rmoto-ps-dpday { color: var(--rmoto-brand, #004B7A); }
/* --- Export synthèses (sous-onglet Encadrement) --- */
#rmoto-root .rmoto-exp-card { display: flex; align-items: center; gap: 16px; justify-content: space-between; background: var(--rmoto-card); border: 1px solid var(--rmoto-line); border-radius: 12px; padding: 14px 16px; margin: 10px 0; }
#rmoto-root .rmoto-exp-txt { flex: 1; }
#rmoto-root .rmoto-exp-t { font-size: 14px; font-weight: 700; color: var(--rmoto-ink); }
#rmoto-root .rmoto-exp-d { font-size: 12.5px; color: var(--rmoto-muted); margin-top: 3px; }
#rmoto-root .rmoto-exp-btn { white-space: nowrap; flex: 0 0 auto; }
@media (max-width: 640px) { #rmoto-root .rmoto-exp-card { flex-direction: column; align-items: stretch; } #rmoto-root .rmoto-exp-btn { width: 100%; } }
@media (max-width: 900px) { #rmoto-root .rmoto-ps-kpis { grid-template-columns: repeat(2, 1fr); } #rmoto-root .rmoto-ps-grid2 { grid-template-columns: 1fr; } }
#rmoto-root .rmoto-pg-toth { background: var(--rmoto-th-bg); text-align: center; padding: 7px 10px; font-size: 12px; font-weight: 800; color: var(--rmoto-ink-2); border-bottom: 1px solid var(--rmoto-line); border-left: 2px solid var(--rmoto-line); }
#rmoto-root .rmoto-pg-toth.rmoto-pg-sortable { cursor: pointer; user-select: none; }
#rmoto-root .rmoto-pg-totc { text-align: center; font-weight: 800; font-size: 14px; color: var(--rmoto-ink); background: var(--rmoto-bg-2); border-bottom: 1px solid var(--rmoto-line); border-left: 2px solid var(--rmoto-line); padding: 6px 8px; }
#rmoto-root .rmoto-pg-footrow { position: sticky; bottom: 0; }
#rmoto-root .rmoto-pg-footrow .rmoto-pg-totc { border-top: 2px solid var(--rmoto-line); }
#rmoto-root .rmoto-pg-footl { text-transform: uppercase; letter-spacing: .03em; font-size: 12px; color: var(--rmoto-ink-2); border-top: 2px solid var(--rmoto-line); }
#rmoto-root .rmoto-pg-grand { color: var(--rmoto-primary); border-top: 2px solid var(--rmoto-line); }
/* --- Excursion : verrou (place payee) --- */
#rmoto-root .rmoto-excursion-locked { display: inline-flex; align-items: center; gap: 6px; font-weight: 800; font-size: 14px; color: #1e7e34; background: #e6f4ea; border: 1px solid #b7dfc2; border-radius: 8px; padding: 8px 14px; }
#rmoto-root .rmoto-icon-locked { filter: none; opacity: 1; }
#rmoto-root .rmoto-icon-locked:hover { background: var(--rmoto-bg-2); }
#rmoto-root .rmoto-excursion-closed { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; font-size: 14px; color: var(--rmoto-ink-2); background: var(--rmoto-bg-2); border: 1px solid var(--rmoto-line); border-radius: 8px; padding: 8px 14px; }


/* Modale de normalisation des noms (apercu avant/apres). */
#rmoto-root .rmoto-norm-list { max-height: 340px; overflow-y: auto; border: 1px solid var(--rmoto-line); border-radius: var(--rmoto-r-s); }
#rmoto-root .rmoto-norm-row { padding: 8px 10px; border-bottom: 1px solid var(--rmoto-line); }
#rmoto-root .rmoto-norm-row:last-child { border-bottom: none; }
#rmoto-root .rmoto-norm-email { font-size: 11px; color: var(--rmoto-muted); margin-bottom: 2px; }
#rmoto-root .rmoto-norm-cell { display: inline-block; margin-right: 18px; font-size: 14px; color: var(--rmoto-ink); }
#rmoto-root .rmoto-norm-old { color: var(--rmoto-muted); text-decoration: line-through; }
#rmoto-root .rmoto-norm-arrow { color: var(--rmoto-muted); }
