/* =========================================================================
   GDS IMMO — Design moderne
   Ce fichier surcharge panel.css / style.css sans toucher au HTML/PHP.
   Il doit être chargé APRES panel.css dans le <head>.
   ========================================================================= */

:root{
  /* Couleurs GDS (logo) : bleu de la toiture, orange des lettres, bleu nuit */
  --v-primary:      #1A78A2;
  --v-primary-dark: #135B7C;
  --v-primary-light:#E4F0F6;
  --v-accent:       #DB6119;
  --v-accent-light: #FBEDE4;
  --v-ink:          #1C2B3A;
  --v-ink-soft:     #5B6876;
  --v-border:       #E1E8EE;
  --v-bg:           #EEF3F6;
  --v-card:         #ffffff;
  --v-radius:       10px;
  --v-radius-sm:    6px;
  --v-shadow:       0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.08);
  --v-shadow-lg:    0 8px 24px rgba(16,24,40,.10);
  --v-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, Helvetica, Arial, sans-serif;
}

*{ box-sizing:border-box; }

html,body{
  background:var(--v-bg) !important;
  font-family:var(--v-font);
  color:var(--v-ink);
}

body{ margin:0; padding:0; }

a{ color:var(--v-primary); }
a:hover{ color:var(--v-primary-dark); }

/* ---------------------------------------------------------------------
   1. TOP BAR (.cadre_haut)
   --------------------------------------------------------------------- */
.cadre_haut{
  background:linear-gradient(135deg, #1F84B0 0%, #135B7C 100%) !important;
  border-bottom:3px solid #DB6119 !important;
  border-bottom:none;
  box-shadow:var(--v-shadow);
  height:auto !important;
  padding:12px 20px !important;
  display:flex;
  align-items:center;
  position:sticky;
  top:0;
  z-index:50;
}
.cadre_haut table{ width:100%; border-collapse:collapse; }
.cadre_haut table td{ border:none !important; background:transparent !important; vertical-align:middle; }
.cadre_haut .venus{
  font-family:var(--v-font) !important;
  font-size:22px !important;
  letter-spacing:.2px;
  color:#fff !important;
}
.cadre_haut .venus strong{ color:#fff !important; }
.cadre_haut .venus .v{ color:#fff !important; }
.cadre_haut table tr:first-child > td:last-child{ display:none; } /* logo "Vénus" redondant en bout de barre */
.cadre_haut .bien{
  font-family:var(--v-font) !important;
  font-size:12px;
  color:rgba(255,255,255,.75);
  display:block;
}
.cadre_haut .log{
  font-family:var(--v-font) !important;
  font-size:14px !important;
  font-weight:600;
  color:#fff !important;
}
.cadre_haut input[type="submit"]{
  all:unset;
  cursor:pointer;
  font-size:13px;
  font-weight:600;
  padding:8px 14px;
  border-radius:var(--v-radius-sm);
  border:1px solid rgba(255,255,255,.35);
  color:#fff;
  background:rgba(255,255,255,.12);
  transition:all .15s ease;
  white-space:nowrap;
}
.cadre_haut input[type="submit"]:hover{
  border-color:#fff;
  background:rgba(255,255,255,.22);
}
.cadre_haut form[action="deconnexion.php"] input{
  border-color:rgba(255,255,255,.35);
}
.cadre_haut form[action="deconnexion.php"] input:hover{
  background:var(--v-accent);
  border-color:var(--v-accent);
}

/* ---------------------------------------------------------------------
   2. SIDEBAR (.cadre_gauche + .bloc_menu)
   --------------------------------------------------------------------- */
.cadre_gauche{
  background:var(--v-card) !important;
  border-right:1px solid var(--v-border);
  width:250px !important;
  height:auto !important;   /* annule le height:85% du panel.css d'origine, qui coupait le fond avant la fin du menu */
  min-height:calc(100vh - 60px);
  padding:16px 12px !important;
  float:left;
}

.bloc_menu{
  border:none !important;
  background:transparent !important;
  margin-bottom:2px;
  border-radius:var(--v-radius-sm);
  overflow:hidden;
}

.bloc_menu_titre{
  background:transparent !important;
  height:auto !important;
  padding:8px 10px 4px 4px !important;
}
.bloc_menu_titre p{
  font-family:var(--v-font) !important;
  font-size:11px !important;
  font-weight:700 !important;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--v-ink-soft) !important;
}
.bloc_menu_titre a:link,
.bloc_menu_titre a:visited,
.bloc_menu_titre a:active,
.bloc_menu_titre a:hover{
  color:var(--v-ink-soft) !important;
}

.bloc_menu_items p{
  font-family:var(--v-font) !important;
  font-size:13px !important;
  padding:0 !important;
  display:flex;
  flex-direction:column;
  gap:0;
}
.bloc_menu_items > p > span{
  display:flex !important;
  align-items:center;
  gap:8px;
  padding:2px 8px;
  border-radius:var(--v-radius-sm);
  transition:background .12s ease;
}
.bloc_menu_items > p > span:hover{ background:var(--v-primary-light); }
.bloc_menu_items br{ display:none; } /* le flex gap remplace les <br> */
.bloc_menu_items a:link,
.bloc_menu_items a:visited,
.bloc_menu_items a:active{
  color:var(--v-ink) !important;
  text-decoration:none !important;
  font-weight:500;
  font-size:13px;
  line-height:1.2;
}
.bloc_menu_items a:hover{
  color:var(--v-primary) !important;
  font-weight:600 !important;
}
/* icônes de menu : on neutralise les vieux pictos house.png ... */
.bloc_menu_items img{
  width:16px !important;
  height:16px !important;
  opacity:0;
  position:absolute;
}
/* ... et on affiche à la place une icône SVG par rubrique, injectée en :before */
.bloc_menu_items > p > span::before{
  content:"";
  width:20px;
  height:20px;
  flex:0 0 20px;
  border-radius:50%;
  background-color:var(--v-primary-light);
  background-repeat:no-repeat;
  background-position:center;
  background-size:13px;
  display:inline-block;
}
.bloc_menu_items > p > span:hover::before{ transform:scale(1.1); }
#menu_1 > p > span::before,
#bloc_menu_1 .bloc_menu_items > p > span::before{ background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231A78A2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="3.5"/><path d="M5 20c0-3.6 3.1-6.5 7-6.5s7 2.9 7 6.5"/></svg>'); }
#menu_5 > p > span::before,
#bloc_menu_5 .bloc_menu_items > p > span::before{ background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231A78A2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-8H7v8"/><path d="M3 9.5 12 3l9 6.5"/><path d="M5 10v11h14V10"/></svg>'); }
#menu_2 > p > span::before,
#bloc_menu_2 .bloc_menu_items > p > span::before{ background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231A78A2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M9.5 15.5c.5 1 1.5 1.5 2.5 1.5 1.5 0 2.5-.8 2.5-2s-1-1.8-2.5-2c-1.5-.2-2.5-.8-2.5-2s1-2 2.5-2c1 0 2 .5 2.5 1.5"/><path d="M12 7v1.2M12 15.8V17"/></svg>'); }
#menu_7 > p > span::before,
#bloc_menu_7 .bloc_menu_items > p > span::before{ background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231A78A2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 7h18l-1.6 12.2a2 2 0 0 1-2 1.8H6.6a2 2 0 0 1-2-1.8L3 7Z"/><path d="M8 7V5a4 4 0 0 1 8 0v2"/></svg>'); }
#menu_6 > p > span::before,
#bloc_menu_6 .bloc_menu_items > p > span::before{ background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231A78A2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="8" r="3.2"/><path d="M2.5 20c0-3.3 2.9-6 6.5-6s6.5 2.7 6.5 6"/><circle cx="18" cy="8.5" r="2.4"/><path d="M15.7 14.3c2.9.3 5.3 2.7 5.3 5.7"/></svg>'); }
/* Pastilles des compteurs de menu (locataires en retard, loyers a augmenter...) */
.v-menu-badge{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:20px; height:20px; padding:0 6px; margin-left:auto;
  border-radius:10px; font-family:var(--v-font); font-size:11px; font-weight:700;
  line-height:1;
}
.v-menu-badge.rouge{ background:#fdecec; color:#b42318; }
.v-menu-badge.orange{ background:#fff4e5; color:#b54708; }
.bloc_menu_items span:hover .v-menu-badge.rouge{ background:#f8d7d5; }
.bloc_menu_items span:hover .v-menu-badge.orange{ background:#fce6c2; }

/* rubrique inconnue -> icône générique */
.bloc_menu_items > p > span::before{ background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231A78A2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/></svg>'); }
#menu_9 > p > span::before,
#bloc_menu_9 .bloc_menu_items > p > span::before{ background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231A78A2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"/></svg>'); }

/* ---------------------------------------------------------------------
   3. ZONE DE CONTENU (.centre, .titre, .content)
   --------------------------------------------------------------------- */
.centre{
  width:auto !important;
  max-width:1000px;
  margin:24px 0 24px 24px !important;
  padding:0 24px 0 0;
  float:none;
  overflow:hidden; /* établit un nouveau contexte de bloc : ignore le float du menu au lieu de l'éviter */
}
.titre{
  padding:0 0 8px 0 !important;
  border-bottom:1px solid var(--v-border);
  margin-bottom:10px;
}
.titre p{
  font-family:var(--v-font) !important;
  font-size:20px !important;
  font-weight:700 !important;
  color:var(--v-ink) !important;
  display:block;
  line-height:1.3;
}
/* Les titres d'origine sont dans <span style="width:32px"> (place de l'ancienne icone) :
   on annule cette largeur fixe pour que le titre s'affiche normalement sur une ligne */
.titre p span,
.titre span{
  width:auto !important;
  display:inline !important;
  white-space:normal;
}
.titre img{ display:none; } /* vieille icône titre -> remplacée par l'accent visuel du bandeau */
.centre > img[src*="bar.png"]{ display:none; }

.centre .content{
  background:var(--v-card);
  border:1px solid var(--v-border);
  border-radius:var(--v-radius);
  box-shadow:var(--v-shadow);
  padding:20px;
  margin-left:0 !important;
  /* Filet de securite : si un tableau est malgre tout trop large pour la carte
     (contenu inhabituellement long, petit ecran...), il defile horizontalement
     A L'INTERIEUR de la carte au lieu de faire deborder toute la page. */
  overflow-x:auto;
}
.centre p{ margin:0 0 6px 0; }
.centre .content p{
  font-family:var(--v-font) !important;
  font-size:14px !important;
}

/* ---------------------------------------------------------------------
   4. TABLEAUX DE DONNÉES (listes)
   --------------------------------------------------------------------- */
.centre table{
  width:100% !important;
  border-collapse:separate !important;
  border-spacing:0 !important;
  background:transparent !important;
}
.centre table table{ box-shadow:none; border:none; } /* tableaux imbriqués (mises en page) */

.centre table th,
.centre table td{
  font-family:var(--v-font) !important;
}

/* en-têtes de colonnes historiquement en bgcolor="#427A32" */
.centre table tr[bgcolor="#427A32"] td,
.centre table td.bloc_menu_titre{
  background:linear-gradient(135deg, var(--v-primary) 0%, var(--v-primary-dark) 100%) !important;
  color:#fff !important;
  font-size:12px !important;
  font-weight:600 !important;
  text-transform:uppercase;
  letter-spacing:.04em;
  padding:10px 8px !important;
  border:none !important;
}
.centre table td.bloc_menu_titre p{ color:#fff !important; margin:0 !important; }
.centre table tr[bgcolor="#427A32"] .bloc_menu_titre,
.centre table tr[bgcolor="#427A32"] .bloc_menu_titre p{
  background:transparent !important;
  color:#fff !important;
  margin:0 !important;
}

/* lignes de données (bgcolor="#F1FBF0") */
.centre table tr[bgcolor="#F1FBF0"] td{
  background:var(--v-card) !important;
  border-bottom:1px solid var(--v-border) !important;
  padding:4px 8px !important;
  font-size:12px;
}
.centre table tr[bgcolor="#F1FBF0"]:hover td{
  background:var(--v-primary-light) !important;
}
.centre table tr[bgcolor="#F1FBF0"] td p{ margin:0 !important; }
.centre table tr[bgcolor="#F1FBF0"] td img{ max-height:13px !important; width:auto !important; vertical-align:middle; }

/* barre "Nouveau ..." au-dessus des listes */
.centre table tr[bgcolor="#F1FBF0"] td a[title*="Ajout"],
.centre table tr[bgcolor="#F1FBF0"] td a[title*="ajout"]{
  display:inline-flex;
  align-items:center;
  gap:8px;
  background:var(--v-primary);
  color:#fff !important;
  padding:8px 14px;
  border-radius:var(--v-radius-sm);
  font-weight:600;
  font-size:13px;
}
.centre table tr[bgcolor="#F1FBF0"] td a[title*="Ajout"]:hover,
.centre table tr[bgcolor="#F1FBF0"] td a[title*="ajout"]:hover{
  background:var(--v-primary-dark);
}
.centre table tr[bgcolor="#F1FBF0"] td a[title*="Ajout"] p,
.centre table tr[bgcolor="#F1FBF0"] td a[title*="ajout"] p{ color:#fff !important; margin:0 !important; }
.centre table tr[bgcolor="#F1FBF0"] td a[title*="Ajout"] img,
.centre table tr[bgcolor="#F1FBF0"] td a[title*="ajout"] img{ filter:brightness(0) invert(1); }

/* ---------------------------------------------------------------------
   5. PAGINATION (nouveau)
   --------------------------------------------------------------------- */
.v-pagination{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  padding:16px 0 4px 0;
  font-family:var(--v-font);
}
.v-pagination a,
.v-pagination span{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:32px;
  height:32px;
  padding:0 8px;
  border-radius:var(--v-radius-sm);
  font-size:13px;
  font-weight:600;
  text-decoration:none !important;
  color:var(--v-ink-soft) !important;
  border:1px solid var(--v-border);
  background:#fff;
}
.v-pagination a:hover{ border-color:var(--v-primary); color:var(--v-primary) !important; }
.v-pagination .v-page-active{
  background:var(--v-primary) !important;
  border-color:var(--v-primary) !important;
  color:#fff !important;
}
.v-pagination .v-page-dots{ border:none; background:transparent; }
.v-pagination .v-page-off{
  display:inline-flex; align-items:center; justify-content:center; min-width:32px; height:32px; padding:0 8px;
  border-radius:var(--v-radius-sm); font-size:13px; font-weight:600; border:1px solid var(--v-border);
  background:#F4F7F9; color:var(--v-ink-soft); opacity:.5;
}
.v-pagination-info{
  text-align:center;
  font-size:12px;
  color:var(--v-ink-soft);
  padding-top:4px;
}

/* ---------------------------------------------------------------------
   6. FORMULAIRES
   --------------------------------------------------------------------- */
.centre table td[bgcolor="#009900"]{
  background:var(--v-ink) !important;
  border-radius:var(--v-radius-sm) var(--v-radius-sm) 0 0;
  padding:10px 14px !important;
}
.centre table td[bgcolor="#009900"] span{ color:#fff !important; font-family:var(--v-font) !important; }

/* Garde-fou : tout texte mis en blanc en ligne (style="color:#FFF") doit toujours
   reposer sur un fond sombre, quoi qu'il arrive par ailleurs à la cellule parente */
.centre span[style*="color:#FFF"],
.centre span[style*="color: #FFF"],
.centre span[style*="color:#fff"],
.centre span[style*="color: #fff"]{
  background:var(--v-ink) !important;
  display:inline-block;
  padding:6px 10px !important;
  border-radius:var(--v-radius-sm);
}

.centre table td[bgcolor="#DEF7D7"]{
  background:#fafbfc !important;
  border:1px solid var(--v-border) !important;
  border-top:none !important;
  padding:14px !important;
}

input[type="text"],
input[type="password"],
input[type="email"],
input[type="number"],
select,
textarea{
  font-family:var(--v-font) !important;
  font-size:14px !important;
  border:1px solid var(--v-border) !important;
  background:#fff !important;
  border-radius:var(--v-radius-sm) !important;
  padding:8px 10px !important;
  transition:border-color .15s ease, box-shadow .15s ease;
}
input[type="text"]:focus,
input[type="password"]:focus,
input[type="email"]:focus,
input[type="number"]:focus,
select:focus,
textarea:focus{
  outline:none !important;
  border-color:var(--v-primary) !important;
  box-shadow:0 0 0 3px var(--v-primary-light) !important;
}

.form_register input,
.form_register textarea,
.form_register select{
  border:1px solid var(--v-border) !important;
  background:#fff !important;
}

input[type="submit"],
input[type="button"]{
  font-family:var(--v-font) !important;
  font-size:14px !important;
  font-weight:600 !important;
  color:#fff !important;
  background:linear-gradient(135deg, var(--v-primary) 0%, var(--v-primary-dark) 100%) !important;
  border:none !important;
  border-radius:var(--v-radius-sm) !important;
  padding:10px 20px !important;
  cursor:pointer;
  box-shadow:0 2px 6px rgba(26,120,162,.25);
  transition:transform .1s ease, box-shadow .15s ease;
}
input[type="submit"]:hover,
input[type="button"]:hover{
  box-shadow:0 4px 10px rgba(26,120,162,.35);
  transform:translateY(-1px);
}

input[type="radio"],
input[type="checkbox"]{
  width:16px; height:16px;
  accent-color:var(--v-primary);
  vertical-align:middle;
}

.Style1{ color:var(--v-accent) !important; } /* astérisque champ obligatoire */

/* ---------------------------------------------------------------------
   7. RESPONSIVE
   --------------------------------------------------------------------- */
/* ---------------------------------------------------------------------
   8. BARRE D'EXPORT (Excel / PDF)
   --------------------------------------------------------------------- */
.v-export-wrap{
  margin:0 !important;
  border-spacing:0 !important;
}
.v-export-wrap td{ padding:0 !important; }
.v-export-form{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  margin:0 !important;
  padding:0 0 12px 0 !important;
}
.v-export-label{
  font-family:var(--v-font);
  font-size:13px;
  font-weight:600;
  color:var(--v-ink-soft);
}
.v-export-form select{
  font-family:var(--v-font) !important;
  font-size:13px !important;
  border:1px solid var(--v-border) !important;
  border-radius:var(--v-radius-sm) !important;
  padding:6px 8px !important;
  background:#fff !important;
}
.v-export-btn{
  all:unset;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-family:var(--v-font);
  font-size:13px;
  font-weight:600;
  color:var(--v-ink-soft);
  border:1px solid var(--v-border);
  border-radius:var(--v-radius-sm);
  padding:6px 12px;
  background:#fff;
  transition:all .15s ease;
}
.v-export-btn:hover{
  border-color:var(--v-primary);
  color:var(--v-primary);
  background:var(--v-primary-light);
}

/* ---------------------------------------------------------------------
   9. PIED DE PAGE
   --------------------------------------------------------------------- */
.v-footer{
  clear:both;
  text-align:center;
  padding:14px 20px;
  margin-top:16px;
  border-top:1px solid var(--v-border);
  font-family:var(--v-font);
}
.v-footer p{
  margin:0 !important;
  font-size:12px;
  color:var(--v-ink-soft);
}
.v-footer strong{ color:var(--v-primary); }

/* ---------------------------------------------------------------------
   10. CALENDRIER (jQuery UI datepicker)
   Les images du thème (images/ui-icons_*.png) sont absentes du projet :
   les boutons précédent/suivant sont normalement invisibles (texte masqué
   par text-indent, image de fond introuvable). On les reconstruit en CSS pur.
   --------------------------------------------------------------------- */
.ui-datepicker{
  font-family:var(--v-font) !important;
  border:1px solid var(--v-border) !important;
  border-radius:var(--v-radius) !important;
  box-shadow:var(--v-shadow-lg) !important;
  padding:8px !important;
  background:#fff !important;
}
.ui-datepicker .ui-datepicker-header{
  background:linear-gradient(135deg, var(--v-primary) 0%, var(--v-primary-dark) 100%) !important;
  border:none !important;
  border-radius:var(--v-radius-sm) !important;
  color:#fff !important;
  padding:6px 28px !important; /* laisse la place aux fleches prev/next sans deborder */
}
.ui-datepicker .ui-datepicker-title{
  color:#fff !important;
  font-weight:600 !important;
}
/* liste deroulantes mois / annee : fond blanc propre, texte fonce (lisible) */
.ui-datepicker .ui-datepicker-title select{
  background:#fff !important;
  color:var(--v-ink) !important;
  border:none !important;
  border-radius:4px !important;
  font-size:12px !important;
  font-weight:600 !important;
  padding:2px 4px !important;
}

/* boutons precedent / suivant : boite fixe 16x16 centree comme le theme d'origine,
   texte "Precedent/Suivant" masque (mais toujours accessible), remplace par une fleche CSS */
.ui-datepicker-prev,
.ui-datepicker-next{
  cursor:pointer;
}
.ui-datepicker-prev span,
.ui-datepicker-next span{
  background-image:none !important; /* image du theme manquante */
  display:block !important;
  position:absolute !important;
  left:50% !important;
  top:50% !important;
  width:16px !important;
  height:16px !important;
  margin-left:-8px !important;
  margin-top:-8px !important;
  font-size:0 !important;   /* cache le texte d'origine sans le supprimer du DOM */
  line-height:0 !important;
  overflow:hidden !important;
}
.ui-datepicker-prev span::before,
.ui-datepicker-next span::before{
  content:"";
  display:block;
  width:16px;
  height:16px;
  font-size:16px;
  line-height:16px;
  text-align:center;
  color:#fff;
  font-weight:bold;
}
.ui-datepicker-prev span::before{ content:"\2039"; } /* ‹ */
.ui-datepicker-next span::before{ content:"\203A"; } /* › */
.ui-datepicker-prev:hover span::before,
.ui-datepicker-next:hover span::before{ color:var(--v-primary-light); }

.ui-datepicker-calendar th{
  color:var(--v-ink-soft) !important;
  font-size:11px;
}
.ui-datepicker-calendar .ui-state-default{
  background:#fff !important;
  border:1px solid var(--v-border) !important;
  color:var(--v-ink) !important;
  text-align:center;
  border-radius:4px;
}
.ui-datepicker-calendar .ui-state-hover{
  background:var(--v-primary-light) !important;
  border-color:var(--v-primary) !important;
  color:var(--v-primary) !important;
}
.ui-datepicker-calendar .ui-state-active{
  background:var(--v-primary) !important;
  border-color:var(--v-primary) !important;
  color:#fff !important;
}

/* ---------------------------------------------------------------------
   11. BOUTON CALENDRIER (img.ui-datepicker-trigger, tous les formulaires)
   L'image d'origine (c2.jpg) est remplacee visuellement par un bouton
   de la hauteur du champ date, avec une icone calendrier nette.
   --------------------------------------------------------------------- */
img.ui-datepicker-trigger,
.centre table tr td img.ui-datepicker-trigger{
  box-sizing:border-box !important;
  width:34px !important;
  height:34px !important;
  max-height:none !important;
  padding:34px 0 0 0 !important;          /* pousse l'image d'origine hors du cadre */
  overflow:hidden !important;
  vertical-align:middle !important;
  margin-left:6px !important;
  border-radius:var(--v-radius-sm) !important;
  border:1px solid var(--v-primary) !important;
  background:var(--v-primary-light) url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231A78A2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4.5" width="18" height="16" rx="2"/><path d="M3 9.5h18M8 2.5v4M16 2.5v4"/><path d="M7.5 13.5h2M11 13.5h2M14.5 13.5h2M7.5 17h2M11 17h2"/></svg>') center / 20px no-repeat !important;
  cursor:pointer;
  transition:background-color .15s ease, box-shadow .15s ease;
}
img.ui-datepicker-trigger:hover{
  background-color:#fff !important;
  box-shadow:0 0 0 3px var(--v-primary-light);
}

/* ---------------------------------------------------------------------
   12. TABLEAU DE BORD D'ADMINISTRATION
   --------------------------------------------------------------------- */
.v-adm-kpis{ display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:10px; margin:0 0 14px; }
.v-adm-kpi{ background:#fff; border:1px solid var(--v-border); border-radius:var(--v-radius); padding:12px 14px; box-shadow:var(--v-shadow); }
.v-adm-kpi b{ display:block; font-size:24px; color:var(--v-primary); font-family:var(--v-font); }
.v-adm-kpi span{ font-size:12px; color:var(--v-ink-soft); font-family:var(--v-font); }
.v-adm-kpi.alerte b{ color:var(--v-accent); }
.v-adm-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:14px; }
.v-adm-carte{ background:#fff; border:1px solid var(--v-border); border-radius:var(--v-radius); padding:14px 16px; box-shadow:var(--v-shadow); font-family:var(--v-font); font-size:13px; }
.v-adm-carte.large{ grid-column:1 / -1; }
.v-adm-carte h3{ margin:0 0 10px; font-size:15px; color:var(--v-ink); }
.v-adm-carte ul{ margin:0 0 10px; padding-left:18px; line-height:1.7; }
.v-adm-carte pre{ background:var(--v-ink); color:#e3f6ea; padding:10px 12px; border-radius:6px; font-size:11px; white-space:pre-wrap; max-height:260px; overflow:auto; }
.v-adm-ok{ color:#067647; font-weight:600; } .v-adm-ko{ color:#d92d20; font-weight:600; }
.v-adm-actions{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.v-adm-actions.colonne{ flex-direction:column; align-items:stretch; }
.v-adm-actions form{ margin:0; }
.v-adm-carte .btn, .v-adm-carte button{ display:inline-block; text-align:center; background:var(--v-primary); color:#fff !important; border:1px solid var(--v-primary);
  border-radius:var(--v-radius-sm); padding:8px 14px; font-weight:600; font-size:13px; text-decoration:none !important; cursor:pointer; font-family:var(--v-font); }
.v-adm-carte .btn.sec, .v-adm-carte button.sec{ background:#fff; color:var(--v-primary) !important; }
.v-adm-carte .btn:hover, .v-adm-carte button:hover{ filter:brightness(.95); }
.centre p.ok{ background:#e3f6ea; border:1px solid #16a34a; padding:10px 14px; border-radius:6px; }
.centre p.err{ background:#fdecec; border:1px solid #d92d20; padding:10px 14px; border-radius:6px; }

/* ---------------------------------------------------------------------
   13. RECHERCHE INSTANTANEE (bandeau) + PAGE RECHERCHE
   --------------------------------------------------------------------- */
.v-rech{ position:relative; max-width:560px; margin:0 auto; }
.v-rech input[type="search"]{
  width:100%; height:38px; box-sizing:border-box; border:none !important; border-radius:8px !important;
  padding:0 70px 0 38px !important; font-size:14px !important; background:#fff !important; color:var(--v-ink);
  box-shadow:0 1px 2px rgba(0,0,0,.08);
}
.v-rech input[type="search"]:focus{ outline:none !important; box-shadow:0 0 0 3px rgba(255,255,255,.45) !important; }
.v-rech-loupe{ position:absolute; left:12px; top:10px; color:var(--v-ink-soft); pointer-events:none; }
.v-rech-raccourci{ position:absolute; right:10px; top:10px; font-size:11px; color:var(--v-ink-soft); border:1px solid var(--v-border);
  border-radius:4px; padding:1px 6px; font-family:var(--v-font); pointer-events:none; }
.v-rech-resultats{ display:none; position:absolute; top:44px; left:0; right:0; z-index:200; background:#fff; border:1px solid var(--v-border);
  border-radius:10px; box-shadow:var(--v-shadow-lg); max-height:70vh; overflow-y:auto; padding:6px 0; font-family:var(--v-font); text-align:left; }
.v-rech-groupe{ font-size:11px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--v-ink-soft); padding:8px 14px 4px; }
.v-rech-item{ display:flex; align-items:center; gap:10px; padding:7px 14px; cursor:pointer; }
.v-rech-item.actif{ background:var(--v-primary-light); }
.v-rech-ico{ flex:0 0 30px; width:30px; height:30px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  background:var(--v-primary-light); color:var(--v-primary-dark); }
.v-rech-ico-batiment, .v-rech-ico-porte{ border-radius:8px; background:#eeedfe; color:#3c3489; }
.v-rech-ico-proprio{ border-radius:8px; background:#faeeda; color:#633806; }
.v-rech-txt{ flex:1; min-width:0; display:flex; flex-direction:column; }
.v-rech-titre{ font-size:14px; color:var(--v-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.v-rech-detail{ font-size:12px; color:var(--v-ink-soft); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.v-rech-titre b, .v-rech-detail b{ color:var(--v-primary-dark); }
.v-rech-badge{ font-size:11px; font-weight:600; border-radius:6px; padding:2px 8px; white-space:nowrap; font-family:var(--v-font); }
.v-rech-retard{ background:#fdecec; color:#b42318; }
.v-rech-ok{ background:#e3f6ea; color:#067647; }
.v-rech-neutre{ background:#f1efe8; color:#444441; }
.v-rech-vide{ padding:14px; font-size:13px; color:var(--v-ink-soft); }
.v-rech-pied{ display:flex; justify-content:space-between; align-items:center; gap:10px; border-top:1px solid var(--v-border);
  margin-top:6px; padding:8px 14px 4px; font-size:12px; color:var(--v-ink-soft); }
.v-rech-pied a{ color:var(--v-primary) !important; font-weight:600; text-decoration:none; }
.cadre_haut{ overflow:visible !important; }

.v-rech-page-form{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; background:#fff; border:1px solid var(--v-border);
  border-radius:var(--v-radius); padding:12px; box-shadow:var(--v-shadow); margin-bottom:14px; }
.v-rech-page-form input[type="text"]{ flex:1 1 320px; height:38px; }
.v-rech-page-form select{ height:38px; }
.v-rech-page-form button{ height:38px; background:var(--v-primary); color:#fff; border:0; border-radius:var(--v-radius-sm);
  padding:0 18px; font-weight:600; cursor:pointer; font-family:var(--v-font); }
.v-rech-aide{ background:#fff; border:1px solid var(--v-border); border-radius:var(--v-radius); padding:16px 18px; font-family:var(--v-font); }
.v-rech-aide p{ margin:0 0 8px !important; font-size:14px !important; }
.v-rech-total{ font-family:var(--v-font); color:var(--v-ink-soft); margin:4px 0 6px !important; }
.v-rech-h3{ font-family:var(--v-font); font-size:15px; margin:18px 0 8px; color:var(--v-ink); }
.centre table.v-rech-table{ width:100% !important; background:#fff !important; border:1px solid var(--v-border); border-radius:var(--v-radius);
  border-collapse:separate !important; overflow:hidden; font-family:var(--v-font); font-size:13px; }
.v-rech-table th{ background:linear-gradient(135deg, var(--v-primary) 0%, var(--v-primary-dark) 100%); color:#fff; text-align:left;
  font-size:12px; font-weight:600; padding:8px 10px; }
.v-rech-table td{ padding:6px 10px; border-bottom:1px solid var(--v-border); vertical-align:middle; }
.v-rech-table tr:hover td{ background:var(--v-primary-light); }
.v-rech-table a{ color:var(--v-ink) !important; text-decoration:none; }
.v-rech-actions{ white-space:nowrap; text-align:right; }
.v-rech-form{ display:inline; margin:0; }
.v-rech-action, .centre .v-rech-actions button.v-rech-action{ display:inline-block; font-family:var(--v-font) !important; font-size:12px !important;
  font-weight:600 !important; padding:5px 10px !important; border-radius:6px !important; margin-left:4px; cursor:pointer;
  background:var(--v-primary) !important; color:#fff !important; border:1px solid var(--v-primary) !important; box-shadow:none !important; transform:none !important; }
.v-rech-action.sec, .centre .v-rech-actions button.v-rech-action.sec{ background:#fff !important; color:var(--v-primary) !important; }

/* ---------------------------------------------------------------------
   14. EN-TETE (logo, recherche, menu profil) + PAGE MON PROFIL
   --------------------------------------------------------------------- */
.v-entete{ display:flex; align-items:center; gap:24px; width:100%; }
.v-entete-logo{ flex:0 0 auto; color:#fff !important; font-family:var(--v-font); font-size:21px; font-weight:700; letter-spacing:.3px; text-decoration:none !important; }
.v-entete .v-rech{ flex:1 1 auto; max-width:620px; margin:0 auto; }
.v-profil{ position:relative; flex:0 0 auto; }
.v-profil-bouton{ all:unset; cursor:pointer; display:flex; align-items:center; gap:9px; color:#fff; font-family:var(--v-font);
  padding:4px 10px 4px 4px; border-radius:22px; transition:background .15s ease; }
.v-profil-bouton:hover, .v-profil-bouton[aria-expanded="true"]{ background:rgba(255,255,255,.16); }
.v-profil-bouton:focus-visible{ outline:2px solid #fff; outline-offset:2px; }
.v-profil-nom{ font-size:13px; font-weight:600; max-width:170px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.v-profil-avatar{ display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; border-radius:50%;
  background:#fff; color:var(--v-primary-dark); font-family:var(--v-font); font-size:13px; font-weight:700; flex:0 0 auto; }
.v-profil-avatar.grand{ width:40px; height:40px; font-size:14px; background:var(--v-primary-light); }
.v-profil-avatar.tres-grand{ width:64px; height:64px; font-size:22px; background:var(--v-primary-light); }
.v-profil-menu{ display:none; position:absolute; right:0; top:48px; z-index:210; width:260px; background:#fff; border:1px solid var(--v-border);
  border-radius:10px; box-shadow:var(--v-shadow-lg); padding:6px; font-family:var(--v-font); }
.v-profil-menu.ouvert{ display:block; }
.v-profil-entete{ display:flex; align-items:center; gap:10px; padding:8px 8px 10px; border-bottom:1px solid var(--v-border); margin-bottom:4px;
  font-size:14px; color:var(--v-ink); line-height:1.35; }
.v-profil-entete small{ color:var(--v-ink-soft); font-size:12px; }
.v-profil-menu form{ margin:0; }
.cadre_haut .v-profil-lien, .v-profil-lien{ all:unset; box-sizing:border-box; display:block; width:100%; cursor:pointer; padding:9px 10px;
  border-radius:6px; font-family:var(--v-font); font-size:13px; font-weight:500; color:var(--v-ink) !important; text-decoration:none !important; }
.cadre_haut .v-profil-lien:hover, .v-profil-lien:hover{ background:var(--v-primary-light); }
.cadre_haut .v-profil-lien.danger, .v-profil-lien.danger{ color:#b42318 !important; }
.cadre_haut .v-profil-lien.danger:hover{ background:#fdecec; }
@media (max-width: 900px){ .v-profil-nom{ display:none; } .v-entete{ gap:10px; } .v-entete-logo{ font-size:17px; } }

.v-pf-carte{ background:#fff; border:1px solid var(--v-border); border-radius:var(--v-radius); box-shadow:var(--v-shadow); padding:20px 22px; font-family:var(--v-font); }
.v-pf-haut{ display:flex; align-items:center; gap:16px; padding-bottom:16px; border-bottom:1px solid var(--v-border); margin-bottom:6px; }
.v-pf-haut h2{ margin:0; font-size:20px; color:var(--v-ink); }
.v-pf-haut p{ margin:2px 0 0 !important; color:var(--v-ink-soft); font-size:14px !important; }
.v-pf-grille{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:10px 24px; }
.v-pf-carte h3{ font-size:13px; text-transform:uppercase; letter-spacing:.05em; color:var(--v-ink-soft); margin:16px 0 8px; }
.v-pf-carte dl{ margin:0; display:grid; grid-template-columns:auto 1fr; gap:6px 12px; font-size:14px; }
.v-pf-carte dt{ color:var(--v-ink-soft); } .v-pf-carte dd{ margin:0; color:var(--v-ink); font-weight:500; }
.v-pf-vide{ color:var(--v-ink-soft); font-weight:400; font-style:italic; }
.v-pf-droits{ display:flex; flex-wrap:wrap; gap:6px; }
.v-pf-droits span{ font-size:12px; font-weight:600; border-radius:6px; padding:4px 9px; }
.v-pf-droits .oui{ background:#e3f6ea; color:#067647; } .v-pf-droits .non{ background:#f1efe8; color:#5f5e5a; }
.v-pf-actions{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-top:18px; padding-top:14px; border-top:1px solid var(--v-border); }
.v-pf-actions form{ margin:0; } .v-pf-actions p{ margin:0 !important; color:var(--v-ink-soft); font-size:13px !important; }
.centre .v-pf-bouton{ padding:8px 14px !important; font-size:13px !important; }

/* ---------------------------------------------------------------------
   15. TABLEAU DE BORD (page d'accueil)
   --------------------------------------------------------------------- */
.v-acc{ font-family:var(--v-font); max-width:1240px !important; }
.v-acc-haut{ display:flex; justify-content:space-between; align-items:flex-end; gap:16px; flex-wrap:wrap; margin-bottom:18px; }
.v-acc-haut h1{ margin:0; font-size:24px; color:var(--v-ink); font-weight:700; }
.v-acc-haut p{ margin:4px 0 0 !important; color:var(--v-ink-soft); font-size:14px !important; }
.v-acc-raccourcis{ display:flex; gap:8px; flex-wrap:wrap; }
.v-acc-btn{ display:inline-block; background:var(--v-primary); color:#fff !important; text-decoration:none !important; font-weight:600; font-size:13px;
  padding:9px 14px; border-radius:var(--v-radius-sm); border:1px solid var(--v-primary); box-shadow:0 2px 6px rgba(26,120,162,.2); }
.v-acc-btn:hover{ background:var(--v-primary-dark); }
.v-acc-btn.sec{ background:#fff; color:var(--v-primary) !important; box-shadow:none; }
.v-acc-kpis{ display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:12px; margin-bottom:12px; }
.v-acc-kpi{ display:flex; flex-direction:column; gap:3px; background:#fff; border:1px solid var(--v-border); border-radius:var(--v-radius);
  padding:14px 16px 14px 18px; box-shadow:var(--v-shadow); text-decoration:none !important; color:inherit !important; position:relative; overflow:hidden; }
a.v-acc-kpi:hover{ border-color:var(--v-primary); }
.v-acc-kpi::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--v-primary); }
.v-acc-kpi.fin::before{ background:#0e7490; }
.v-acc-kpi.alerte::before{ background:var(--v-accent); }
.v-acc-kpi-lib{ font-size:12px; font-weight:600; color:var(--v-ink-soft); text-transform:uppercase; letter-spacing:.04em; }
.v-acc-kpi b{ font-size:26px; color:var(--v-ink); line-height:1.2; }
.v-acc-kpi b small{ font-size:14px; color:var(--v-ink-soft); font-weight:600; }
.v-acc-kpi.alerte b{ color:var(--v-accent); }
.v-acc-kpi-sub{ font-size:12px; color:var(--v-ink-soft); }
.v-acc-hausse{ color:#067647; font-weight:700; } .v-acc-baisse{ color:#b42318; font-weight:700; }
.v-acc-barre{ display:block; height:6px; background:#EEF3F6; border-radius:4px; overflow:hidden; margin:4px 0 2px; }
.v-acc-barre span{ display:block; height:100%; background:var(--v-primary); border-radius:4px; }
.v-acc-grille{ display:grid; grid-template-columns:repeat(auto-fit,minmax(340px,1fr)); gap:12px; }
.v-acc-carte{ background:#fff; border:1px solid var(--v-border); border-radius:var(--v-radius); padding:14px 16px; box-shadow:var(--v-shadow); min-width:0; }
.v-acc-carte.large{ grid-column:1 / -1; }
.v-acc-carte h3{ margin:0 0 10px; font-size:15px; color:var(--v-ink); }
.v-acc-carte-titre{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; flex-wrap:wrap; }
.v-acc-carte-titre a{ font-size:12px; font-weight:600; color:var(--v-primary) !important; text-decoration:none; }
.v-acc-legende{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-size:12px; color:var(--v-ink-soft); }
.v-acc-legende i{ display:inline-block; width:10px; height:10px; border-radius:2px; margin-left:8px; }
.v-acc-legende i.ligne{ height:3px; width:14px; border-radius:2px; }
.v-acc-svg{ width:100%; height:auto; display:block; }
.v-acc-svg .v-acc-grille{ stroke:#E1E8EE; stroke-width:1; }
.v-acc-svg .v-acc-axe{ font-size:11px; fill:#5b6674; font-family:var(--v-font); }
.v-acc-svg rect:hover{ opacity:.8; }
.v-acc-recouv{ display:flex; align-items:center; gap:16px; }
.v-acc-jauge{ width:120px; height:120px; flex:0 0 120px; }
.v-acc-jauge-fond{ fill:none; stroke:#EEF3F6; stroke-width:12; }
.v-acc-jauge-txt{ font-size:24px; font-weight:700; fill:#16202b; font-family:var(--v-font); }
.v-acc-recouv p{ margin:0 0 6px !important; font-size:13px !important; color:var(--v-ink-soft); }
.v-acc-recouv p b{ color:var(--v-ink); }
.v-acc-note{ font-size:11px !important; font-style:italic; }
.centre table.v-acc-liste{ width:100% !important; border-collapse:collapse !important; }
.v-acc-liste td{ padding:7px 2px; border-bottom:1px solid var(--v-border); font-size:13px; vertical-align:middle; }
.v-acc-liste tr:last-child td{ border-bottom:none; }
.v-acc-liste td small{ display:block; font-size:11px; color:var(--v-ink-soft); margin-top:1px; }
.v-acc-inclus{ color:#b42318; font-weight:600; }
.v-acc-liste td.num{ text-align:right; white-space:nowrap; }
.v-acc-liste a{ color:var(--v-ink) !important; text-decoration:none; }
.v-acc-vide{ color:var(--v-ink-soft); font-size:13px !important; }
.v-acc-occ{ display:flex; flex-direction:column; gap:9px; }
.v-acc-occ-ligne{ display:grid; grid-template-columns:minmax(130px,1.5fr) 2fr auto; align-items:center; gap:10px; font-size:13px; }
.v-acc-occ-nom{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--v-ink); }
.v-acc-occ-barre{ height:10px; background:#fdecec; border-radius:5px; overflow:hidden; }
.v-acc-occ-barre span{ display:block; height:100%; background:var(--v-primary); border-radius:5px; }
.v-acc-occ-val{ font-size:12px; color:var(--v-ink-soft); min-width:64px; text-align:right; }
.v-acc-libre{ color:#b42318; }
.v-acc-alertes{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
.v-acc-alertes li, .v-acc-alertes a{ font-size:13px; color:var(--v-ink) !important; text-decoration:none; }
.v-acc-alertes small{ color:var(--v-ink-soft); }
.v-acc-pastille{ display:inline-flex; align-items:center; justify-content:center; min-width:26px; height:22px; padding:0 6px; border-radius:11px;
  font-size:12px; font-weight:700; margin-right:6px; }
.v-acc-pastille.rouge{ background:#fdecec; color:#b42318; } .v-acc-pastille.orange{ background:#fff4e5; color:#b54708; }
.v-acc-pastille.vert{ background:#e3f6ea; color:#067647; } .v-acc-pastille.bleu{ background:#e0f2fe; color:#075985; }

/* ---------------------------------------------------------------------
   16. NOUVEAU LOCATAIRE (page dynamique)
   --------------------------------------------------------------------- */
.v-nl{ max-width:1240px !important; font-family:var(--v-font); }
.v-nl-mise{ display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:14px; align-items:start; }
.v-nl-principal{ display:flex; flex-direction:column; gap:14px; min-width:0; }
.v-nl-carte{ background:#fff; border:1px solid var(--v-border); border-radius:var(--v-radius); padding:16px 18px; box-shadow:var(--v-shadow); }
.v-nl-carte h3{ display:flex; align-items:center; gap:10px; margin:0 0 14px; font-size:16px; color:var(--v-ink); }
.v-nl-carte h3 small{ font-size:12px; font-weight:500; color:var(--v-ink-soft); margin-left:auto; }
.v-nl-num{ display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; border-radius:50%;
  background:var(--v-primary); color:#fff; font-size:13px; font-weight:700; }
.v-nl-verrou{ opacity:.45; pointer-events:none; filter:grayscale(.4); }
.v-nl-verrou h3::after{ content:"Choisissez d'abord un logement"; font-size:12px; font-weight:500; color:var(--v-ink-soft); margin-left:auto; }
.v-nl-filtres{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-bottom:12px; }
.v-nl-cherche{ position:relative; flex:1 1 240px; }
.v-nl-cherche svg{ position:absolute; left:10px; top:11px; color:var(--v-ink-soft); }
.v-nl-cherche input{ width:100%; box-sizing:border-box; height:38px; padding-left:32px !important; }
.v-nl-puces{ display:flex; flex-wrap:wrap; gap:6px; }
.v-nl-puces button, .v-nl-rapide button{ all:unset; cursor:pointer; font-size:12px; font-weight:600; padding:6px 11px; border-radius:16px;
  border:1px solid var(--v-border); color:var(--v-ink-soft); background:#fff; }
.v-nl-puces button small{ font-weight:700; color:var(--v-primary); margin-left:2px; }
.v-nl-puces button.actif{ background:var(--v-primary); border-color:var(--v-primary); color:#fff; }
.v-nl-puces button.actif small{ color:#fff; }
.v-nl-bats{ display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:10px; }
.v-nl-bat, .v-nl-appart{ all:unset; box-sizing:border-box; cursor:pointer; display:flex; flex-direction:column; gap:3px; padding:12px 14px;
  border:1.5px solid var(--v-border); border-radius:10px; background:#fff; transition:border-color .15s, box-shadow .15s, transform .1s; }
.v-nl-bat:hover, .v-nl-appart:hover{ border-color:var(--v-primary); box-shadow:0 2px 8px rgba(26,120,162,.12); }
.v-nl-bat.actif, .v-nl-appart.actif{ border-color:var(--v-primary); background:var(--v-primary-light); box-shadow:0 0 0 3px rgba(26,120,162,.15); }
.v-nl-bat b, .v-nl-appart b{ font-size:14px; color:var(--v-ink); }
.v-nl-bat em{ font-style:normal; font-size:12px; font-weight:700; color:#b42318; }
.v-nl-bat-types{ display:flex; flex-wrap:wrap; gap:4px; margin-top:4px; }
.v-nl-bat-types span{ font-size:11px; background:#F1F5F8; color:var(--v-ink-soft); border-radius:5px; padding:2px 6px; }
.v-nl-apparts-zone{ margin-top:14px; padding-top:12px; border-top:1px dashed var(--v-border); }
.v-nl-sous-titre{ margin:0 0 10px !important; font-size:13px !important; font-weight:600; color:var(--v-ink-soft); }
.v-nl-apparts{ display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:8px; }
.v-nl-appart span{ font-size:12px; color:var(--v-ink-soft); }
.v-nl-appart em{ font-style:normal; font-size:13px; font-weight:700; color:var(--v-primary-dark); margin-top:2px; }
.v-nl-champs{ display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:14px 18px; }
.v-nl-champ{ display:flex; flex-direction:column; gap:6px; font-size:13px; }
.v-nl-champ.large{ grid-column:1 / -1; }
.v-nl-champ > span{ font-weight:600; color:var(--v-ink); }
.v-nl-champ > span b{ color:var(--v-accent); }
.v-nl-champ input[type="text"], .v-nl-champ input[type="tel"], .v-nl-champ input[type="email"], .v-nl-champ input[type="date"]{
  width:100%; box-sizing:border-box; height:38px; }
.v-nl-seg{ display:inline-flex; flex-wrap:wrap; border:1px solid var(--v-border); border-radius:8px; overflow:hidden; width:max-content; max-width:100%; }
.v-nl-seg label{ position:relative; cursor:pointer; }
.v-nl-seg input{ position:absolute; opacity:0; pointer-events:none; }
.v-nl-seg span{ display:block; padding:8px 14px; font-size:13px; font-weight:600; color:var(--v-ink-soft); border-right:1px solid var(--v-border); background:#fff; }
.v-nl-seg label:last-child span{ border-right:none; }
.v-nl-seg input:checked + span{ background:var(--v-primary); color:#fff; }
.v-nl-seg input:focus-visible + span{ outline:2px solid var(--v-primary); outline-offset:-2px; }
.v-nl-rapide{ display:flex; gap:6px; }
.v-nl-rapide button:hover{ border-color:var(--v-primary); color:var(--v-primary); }
.v-nl-aide{ color:var(--v-primary-dark); font-size:12px; }
.v-nl-erreur{ color:#b42318; font-size:12px; min-height:0; }
.v-nl-alerte{ margin-top:14px; background:#fff4e5; border:1px solid #f59e0b; border-radius:8px; padding:10px 12px; font-size:13px; color:#7a4a00; }
.v-nl-alerte a{ color:#b54708 !important; font-weight:600; }
.v-nl-recap{ position:sticky; top:84px; }
.v-nl-recap h3{ margin-bottom:10px; }
.v-nl-recap-logement{ display:flex; flex-direction:column; gap:2px; padding:10px 12px; border-radius:8px; background:var(--v-primary-light); margin-bottom:12px; font-size:13px; position:relative; }
.v-nl-recap-logement b{ font-size:15px; color:var(--v-ink); }
.v-nl-recap-logement a{ position:absolute; right:10px; top:10px; font-size:12px; font-weight:600; color:var(--v-primary) !important; }
.v-nl-montants{ display:grid; grid-template-columns:1fr auto; gap:7px 10px; margin:0; font-size:13px; }
.v-nl-montants dt{ color:var(--v-ink-soft); } .v-nl-montants dd{ margin:0; text-align:right; font-weight:600; color:var(--v-ink); }
.v-nl-montants dd small{ display:block; font-size:11px; font-weight:400; color:var(--v-ink-soft); text-decoration:line-through; }
.v-nl-total{ display:flex; justify-content:space-between; align-items:baseline; margin-top:12px; padding-top:12px; border-top:2px solid var(--v-ink); }
.v-nl-total span{ font-weight:700; font-size:13px; text-transform:uppercase; letter-spacing:.04em; }
.v-nl-total b{ font-size:22px; color:var(--v-primary-dark); }
.v-nl-gris{ color:var(--v-ink-soft); } .v-nl-petit{ font-size:12px !important; margin:8px 0 0 !important; }
.v-nl-reste{ list-style:none; padding:0; margin:12px 0 0; display:flex; flex-direction:column; gap:4px; }
.v-nl-reste li{ font-size:12px; color:#b54708; padding-left:18px; position:relative; }
.v-nl-reste li::before{ content:"○"; position:absolute; left:2px; }
.centre button.v-nl-valider{ width:100%; margin-top:14px; padding:12px !important; font-size:15px !important; font-weight:700; border-radius:8px !important;
  background:linear-gradient(135deg, var(--v-primary) 0%, var(--v-primary-dark) 100%) !important; color:#fff !important; border:none !important;
  cursor:pointer; box-shadow:0 2px 8px rgba(26,120,162,.3); font-family:var(--v-font); }
.centre button.v-nl-valider:hover:not(:disabled){ filter:brightness(1.05); transform:translateY(-1px); }
.centre button.v-nl-valider:disabled{ background:#CDD7DF !important; box-shadow:none !important; cursor:not-allowed; transform:none !important; }
.v-nl-vide{ font-size:14px !important; color:var(--v-ink-soft); }
@media (max-width: 1000px){ .v-nl-mise{ grid-template-columns:1fr; } .v-nl-recap{ position:static; } }

/* ---------------------------------------------------------------------
   17. ESPACE LOCATAIRE (encadre de la fiche + code a la creation)
   --------------------------------------------------------------------- */
.v-el{ max-width:720px; margin:0 auto 14px; background:#fff; border:1px solid var(--v-border); border-left:5px solid #0e7490;
  border-radius:var(--v-radius); padding:12px 16px; box-shadow:var(--v-shadow); font-family:var(--v-font); font-size:13px; }
.v-el-tete{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.v-el-tete b{ font-size:14px; }
.v-el-etat{ font-size:12px; font-weight:700; border-radius:12px; padding:3px 10px; }
.v-el-etat.gris{ background:#f1efe8; color:#5f5e5a; } .v-el-etat.orange{ background:#fff4e5; color:#b54708; }
.v-el-etat.bleu{ background:#e0f2fe; color:#075985; } .v-el-etat.vert{ background:#e3f6ea; color:#067647; } .v-el-etat.rouge{ background:#fdecec; color:#b42318; }
.v-el-code{ margin-top:10px; background:#e0f2fe; border-radius:8px; padding:10px 12px; font-size:14px; color:#0c4a6e; }
.v-el-code b.gros{ font-size:22px; letter-spacing:3px; }
.v-el-code small{ display:block; margin-top:4px; color:#075985; }
.v-el-msg{ margin:8px 0 0 !important; color:var(--v-ink-soft); }
.v-el-actions{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:10px; }
.v-el-actions form{ margin:0; }
.v-el-url{ flex:1 1 100%; color:var(--v-ink-soft); font-size:12px; }
.centre .v-el-actions button{ padding:7px 12px !important; font-size:12px !important; font-weight:600; font-family:var(--v-font); cursor:pointer;
  border-radius:var(--v-radius-sm); background:linear-gradient(135deg,var(--v-primary),var(--v-primary-dark)) !important; color:#fff !important; border:1px solid var(--v-primary) !important; }
.centre .v-el-actions button.sec{ background:#fff !important; color:var(--v-primary) !important; border:1px solid var(--v-primary) !important; box-shadow:none !important; }
.v-code-activation{ display:inline-block; margin-top:6px; background:#e0f2fe; color:#0c4a6e; border-radius:6px; padding:6px 10px; font-size:14px; }
.v-code-activation b{ letter-spacing:1px; }

/* ---------------------------------------------------------------------
   18. FICHE LOCATAIRE
   --------------------------------------------------------------------- */
.v-fl{ max-width:1180px !important; font-family:var(--v-font); }
.v-fl-entete{ display:flex; justify-content:space-between; align-items:flex-start; gap:16px; flex-wrap:wrap; background:#fff;
  border:1px solid var(--v-border); border-radius:var(--v-radius); padding:18px 20px; box-shadow:var(--v-shadow); margin-bottom:12px; }
.v-fl-identite{ display:flex; gap:16px; align-items:center; min-width:0; flex:1 1 420px; }
.v-fl-photo{ width:72px; height:72px; border-radius:50%; object-fit:cover; flex:0 0 72px; border:3px solid var(--v-primary-light); }
.v-fl-initiales{ display:inline-flex; align-items:center; justify-content:center; background:var(--v-primary-light); color:var(--v-primary-dark); font-size:24px; font-weight:700; }
.v-fl-identite h1{ margin:0; font-size:22px; color:var(--v-ink); display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.v-fl-statut{ font-size:12px; font-weight:700; border-radius:12px; padding:3px 10px; }
.v-fl-statut.encours{ background:#e3f6ea; color:#067647; } .v-fl-statut.termine{ background:#f1efe8; color:#5f5e5a; }
.v-fl-logement{ margin:4px 0 6px !important; font-size:15px !important; color:var(--v-ink-soft); font-weight:600; }
.v-fl-contacts{ display:flex; flex-wrap:wrap; gap:6px 16px; margin:0 !important; font-size:13px !important; color:var(--v-ink-soft); }
.v-fl-contacts a{ color:var(--v-ink) !important; text-decoration:none; }
.v-fl-actions{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.v-fl-actions form{ margin:0; }
.centre .v-fl-btn, .v-fl-btn{ display:inline-block; font-family:var(--v-font) !important; font-size:13px !important; font-weight:600 !important; padding:9px 14px !important;
  border-radius:var(--v-radius-sm) !important; text-decoration:none !important; cursor:pointer; line-height:1.2;
  background:linear-gradient(135deg,var(--v-primary),var(--v-primary-dark)) !important; color:#fff !important; border:1px solid var(--v-primary) !important; box-shadow:none !important; transform:none !important; }
.centre .v-fl-btn.sec, .v-fl-btn.sec{ background:#fff !important; color:var(--v-primary) !important; }
.centre .v-fl-btn.danger{ background:#fff !important; color:#b42318 !important; border-color:#f3c3c0 !important; }
.centre .v-fl-btn.danger:hover{ background:#fdecec !important; }
.v-fl-kpis{ display:grid; grid-template-columns:1.4fr repeat(4,1fr); gap:10px; margin-bottom:12px; }
.v-fl-kpi{ background:#fff; border:1px solid var(--v-border); border-radius:var(--v-radius); padding:12px 14px; box-shadow:var(--v-shadow); display:flex; flex-direction:column; gap:2px; }
.v-fl-kpi span{ font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--v-ink-soft); }
.v-fl-kpi b{ font-size:20px; color:var(--v-ink); }
.v-fl-kpi small{ font-size:12px; color:var(--v-ink-soft); }
.v-fl-kpi.rouge b{ color:#b42318; }
.v-fl-kpi.principal{ border-left:5px solid var(--v-primary); } .v-fl-kpi.principal b{ font-size:26px; }
.v-fl-kpi.principal.rouge{ border-left-color:#b42318; background:#fffafa; } .v-fl-kpi.principal.vert b{ color:#067647; }
.v-fl-grille{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-bottom:12px; }
.v-fl-carte{ background:#fff; border:1px solid var(--v-border); border-radius:var(--v-radius); padding:14px 18px; box-shadow:var(--v-shadow); min-width:0; }
.v-fl-carte.large{ grid-column:1 / -1; }
.v-fl-carte h3{ margin:0 0 12px; font-size:15px; color:var(--v-ink); }
.v-fl-carte h4{ margin:14px 0 8px; font-size:13px; color:var(--v-ink-soft); text-transform:uppercase; letter-spacing:.04em; }
.v-fl-titre{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; flex-wrap:wrap; }
.v-fl-titre a{ font-size:12px; font-weight:600; color:var(--v-primary) !important; text-decoration:none; }
.v-fl-infos{ display:grid; grid-template-columns:auto 1fr; gap:8px 16px; margin:0; font-size:13px; }
.v-fl-infos dt{ color:var(--v-ink-soft); } .v-fl-infos dd{ margin:0; color:var(--v-ink); font-weight:500; }
.v-fl-infos a{ color:var(--v-primary) !important; font-weight:600; }
.v-fl-histo{ list-style:none; margin:0; padding:0 0 0 14px; border-left:2px solid var(--v-border); display:flex; flex-direction:column; gap:8px; }
.v-fl-histo li{ position:relative; font-size:13px; display:flex; gap:10px; flex-wrap:wrap; color:var(--v-ink-soft); }
.v-fl-histo li::before{ content:""; position:absolute; left:-20px; top:5px; width:10px; height:10px; border-radius:50%; background:#CDD7DF; }
.v-fl-histo li.actif::before{ background:var(--v-primary); box-shadow:0 0 0 3px var(--v-primary-light); }
.v-fl-histo li b{ color:var(--v-ink); } .v-fl-histo li.actif b{ color:var(--v-primary-dark); }
.v-fl-docs{ display:grid; grid-template-columns:repeat(2,1fr); gap:8px; }
.v-fl-docs form{ margin:0; }
.v-fl-docs button{ all:unset; box-sizing:border-box; cursor:pointer; width:100%; display:flex; align-items:center; gap:10px; padding:11px 12px;
  border:1px solid var(--v-border); border-radius:8px; font-family:var(--v-font); font-size:13px; font-weight:600; color:var(--v-ink); background:#fff; }
.v-fl-docs button:hover{ border-color:var(--v-primary); background:var(--v-primary-light); }
.v-fl-docs button span{ font-size:18px; } .v-fl-docs button small{ margin-left:auto; font-size:11px; color:var(--v-ink-soft); }
.centre table.v-fl-table{ width:100% !important; border-collapse:collapse !important; font-size:13px; }
.v-fl-table th{ text-align:left; font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:var(--v-ink-soft); padding:6px 8px; border-bottom:2px solid var(--v-border); background:none !important; }
.v-fl-table td{ padding:8px; border-bottom:1px solid var(--v-border); vertical-align:middle; }
.v-fl-table .num{ text-align:right; white-space:nowrap; }
.v-fl-table form{ margin:0; display:inline; }
.v-fl-recu{ all:unset; cursor:pointer; font-size:12px; font-weight:700; color:var(--v-primary-dark); background:var(--v-primary-light); padding:3px 10px; border-radius:12px; font-family:var(--v-font); }
.v-fl-vide{ color:var(--v-ink-soft); }
.v-fl .v-el{ max-width:none; }
@media (max-width: 1000px){ .v-fl-grille{ grid-template-columns:1fr; } .v-fl-kpis{ grid-template-columns:repeat(2,1fr); } .v-fl-kpi.principal{ grid-column:1 / -1; } .v-fl-docs{ grid-template-columns:1fr; } }

/* ---------------------------------------------------------------------
   19. MODIFIER LES INFOS DU LOCATAIRE
   --------------------------------------------------------------------- */
.v-mp{ max-width:900px !important; font-family:var(--v-font); }
.v-mp-mise{ display:grid; grid-template-columns:220px 1fr; gap:14px; align-items:start; }
.v-mp-carte{ background:#fff; border:1px solid var(--v-border); border-radius:var(--v-radius); padding:16px 18px; box-shadow:var(--v-shadow); }
.v-mp-carte h3{ margin:0 0 14px; font-size:15px; color:var(--v-ink); }
.v-mp-droite{ display:flex; flex-direction:column; gap:14px; }
.v-mp-photo{ text-align:center; }
.v-mp-avatar{ width:150px; height:150px; margin:0 auto 14px; border-radius:50%; overflow:hidden; background:var(--v-primary-light);
  display:flex; align-items:center; justify-content:center; border:3px solid var(--v-primary-light); }
.v-mp-avatar img{ width:100%; height:100%; object-fit:cover; }
.v-mp-vide{ font-size:12px; color:var(--v-ink-soft); padding:0 10px; }
.v-mp-fichier{ display:inline-block; cursor:pointer; font-size:13px; font-weight:600; color:var(--v-primary-dark);
  background:var(--v-primary-light); border-radius:20px; padding:8px 16px; }
.v-mp-fichier input{ display:none; }
.v-mp-effacer{ display:block; margin-top:10px; font-size:12px; color:var(--v-ink-soft); }
.v-mp-aide{ margin:10px 0 0 !important; font-size:11px !important; color:var(--v-ink-soft); }
.v-mp-barre{ margin-top:12px; height:6px; border-radius:4px; background:#EEF3F6; overflow:hidden; }
.v-mp-barre-int{ height:100%; width:0; background:linear-gradient(135deg,var(--v-primary),var(--v-primary-dark)); transition:width .15s ease; }
.v-mp-note{ margin:0 0 12px !important; font-size:12px !important; color:var(--v-ink-soft); background:#F4F7F9; border-radius:6px; padding:8px 10px; }
.v-mp-champs{ display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:14px 18px; }
.v-mp-champ{ display:flex; flex-direction:column; gap:6px; font-size:13px; }
.v-mp-champ.large{ grid-column:1 / -1; }
.v-mp-champ > span{ font-weight:600; color:var(--v-ink); }
.v-mp-champ > span b{ color:var(--v-accent); }
.v-mp-champ input{ width:100%; box-sizing:border-box; height:38px; }
.v-mp-erreur{ color:#b42318; font-size:12px; min-height:0; }
.v-mp-actions{ display:flex; gap:10px; }
#v-mp-msg .ok{ background:#e3f6ea; border:1px solid #16a34a; color:#067647; padding:10px 14px; border-radius:8px; margin-bottom:12px; }
#v-mp-msg .err{ background:#fdecec; border:1px solid #d92d20; color:#b42318; padding:10px 14px; border-radius:8px; margin-bottom:12px; }
@media (max-width: 700px){ .v-mp-mise{ grid-template-columns:1fr; } .v-mp-avatar{ width:120px; height:120px; } }

/* ---------------------------------------------------------------------
   20. ICONES D'ACTION DES LISTES (payer, facture, modifier, supprimer,
   details, sms, mot de passe...) : les anciennes images fichiers/*.png sont
   remplacees par des pictogrammes modernes, coherents avec le reste du
   design. Fonctionne quelle que soit la page grace a :is(a,button):has(),
   SANS toucher au HTML/PHP existant, et sans forcer la taille du lien ou du
   bouton qui la contient (certains melangent icone + texte, comme les
   boutons d'export). Les usages hors lien/bouton (purement decoratifs, ex.
   titres de section) ne sont pas modifies : ils gardent l'image d'origine.
   --------------------------------------------------------------------- */
:is(a,button):has(img[src*="fichiers/coins."]) img[src*="fichiers/coins."] { display:none !important; }
:is(a,button):has(img[src*="fichiers/coins."]) { position:relative; }
:is(a,button):has(img[src*="fichiers/coins."])::before {
  content:""; display:inline-block; width:16px; height:16px; margin:-2px 4px -2px 0;
  vertical-align:middle; background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231A78A2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="6" width="14" height="12" rx="2"/><path d="M8 6V5a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-1"/><circle cx="10" cy="12" r="2.6"/></svg>') center / 16px no-repeat;
}
:is(a,button):has(img[src*="fichiers/coins."]):hover::before { transform:scale(1.15); }
:is(a,button):has(img[src*="fichiers/pdf3."]) img[src*="fichiers/pdf3."] { display:none !important; }
:is(a,button):has(img[src*="fichiers/pdf3."]) { position:relative; }
:is(a,button):has(img[src*="fichiers/pdf3."])::before {
  content:""; display:inline-block; width:16px; height:16px; margin:-2px 4px -2px 0;
  vertical-align:middle; background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%230369a1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 3h7l4 4v13a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z"/><path d="M14 3v4h4"/><path d="M8.5 13h1.8a1.3 1.3 0 1 1 0 2.6H8.5V13Zm0 0v5.2M13 18.2V13h1.6a1.6 1.6 0 0 1 1.6 1.6v1.5a1.6 1.6 0 0 1-1.6 1.6H13Zm5-5.2h2M18 15.6h1.6M18 13v5.2"/></svg>') center / 16px no-repeat;
}
:is(a,button):has(img[src*="fichiers/pdf3."]):hover::before { transform:scale(1.15); }
:is(a,button):has(img[src*="fichiers/b_edit."]) img[src*="fichiers/b_edit."] { display:none !important; }
:is(a,button):has(img[src*="fichiers/b_edit."]) { position:relative; }
:is(a,button):has(img[src*="fichiers/b_edit."])::before {
  content:""; display:inline-block; width:16px; height:16px; margin:-2px 4px -2px 0;
  vertical-align:middle; background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%23b54708" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20h9"/><path d="M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4Z"/></svg>') center / 16px no-repeat;
}
:is(a,button):has(img[src*="fichiers/b_edit."]):hover::before { transform:scale(1.15); }
:is(a,button):has(img[src*="fichiers/b_drop."]) img[src*="fichiers/b_drop."] { display:none !important; }
:is(a,button):has(img[src*="fichiers/b_drop."]) { position:relative; }
:is(a,button):has(img[src*="fichiers/b_drop."])::before {
  content:""; display:inline-block; width:16px; height:16px; margin:-2px 4px -2px 0;
  vertical-align:middle; background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%23b42318" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 7h16"/><path d="M9 7V5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2"/><path d="M6 7l1 13a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2l1-13"/><path d="M10 11v6M14 11v6"/></svg>') center / 16px no-repeat;
}
:is(a,button):has(img[src*="fichiers/b_drop."]):hover::before { transform:scale(1.15); }
:is(a,button):has(img[src*="fichiers/apercu3."]) img[src*="fichiers/apercu3."] { display:none !important; }
:is(a,button):has(img[src*="fichiers/apercu3."]) { position:relative; }
:is(a,button):has(img[src*="fichiers/apercu3."])::before {
  content:""; display:inline-block; width:16px; height:16px; margin:-2px 4px -2px 0;
  vertical-align:middle; background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%233c3489" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1.5 12S5 5 12 5s10.5 7 10.5 7-3.5 7-10.5 7S1.5 12 1.5 12Z"/><circle cx="12" cy="12" r="3"/></svg>') center / 16px no-repeat;
}
:is(a,button):has(img[src*="fichiers/apercu3."]):hover::before { transform:scale(1.15); }
:is(a,button):has(img[src*="fichiers/apercu4."]) img[src*="fichiers/apercu4."] { display:none !important; }
:is(a,button):has(img[src*="fichiers/apercu4."]) { position:relative; }
:is(a,button):has(img[src*="fichiers/apercu4."])::before {
  content:""; display:inline-block; width:16px; height:16px; margin:-2px 4px -2px 0;
  vertical-align:middle; background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%233c3489" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1.5 12S5 5 12 5s10.5 7 10.5 7-3.5 7-10.5 7S1.5 12 1.5 12Z"/><circle cx="12" cy="12" r="3"/></svg>') center / 16px no-repeat;
}
:is(a,button):has(img[src*="fichiers/apercu4."]):hover::before { transform:scale(1.15); }
:is(a,button):has(img[src*="fichiers/sms."]) img[src*="fichiers/sms."] { display:none !important; }
:is(a,button):has(img[src*="fichiers/sms."]) { position:relative; }
:is(a,button):has(img[src*="fichiers/sms."])::before {
  content:""; display:inline-block; width:16px; height:16px; margin:-2px 4px -2px 0;
  vertical-align:middle; background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%230369a1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16v12H8l-4 4V4Z"/><path d="M8 9h8M8 12.5h5"/></svg>') center / 16px no-repeat;
}
:is(a,button):has(img[src*="fichiers/sms."]):hover::before { transform:scale(1.15); }
:is(a,button):has(img[src*="fichiers/report_edit."]) img[src*="fichiers/report_edit."] { display:none !important; }
:is(a,button):has(img[src*="fichiers/report_edit."]) { position:relative; }
:is(a,button):has(img[src*="fichiers/report_edit."])::before {
  content:""; display:inline-block; width:16px; height:16px; margin:-2px 4px -2px 0;
  vertical-align:middle; background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%23926c15" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="8" cy="15" r="4.5"/><path d="M11.2 11.8 19 4l3 3-7.8 7.8"/><path d="M17.5 5.5l3 3"/></svg>') center / 16px no-repeat;
}
:is(a,button):has(img[src*="fichiers/report_edit."]):hover::before { transform:scale(1.15); }
:is(a,button):has(img[src*="fichiers/cancel."]) img[src*="fichiers/cancel."] { display:none !important; }
:is(a,button):has(img[src*="fichiers/cancel."]) { position:relative; }
:is(a,button):has(img[src*="fichiers/cancel."])::before {
  content:""; display:inline-block; width:16px; height:16px; margin:-2px 4px -2px 0;
  vertical-align:middle; background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%23444441" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="5" y="11" width="14" height="9" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/></svg>') center / 16px no-repeat;
}
:is(a,button):has(img[src*="fichiers/cancel."]):hover::before { transform:scale(1.15); }
:is(a,button):has(img[src*="fichiers/report."]) img[src*="fichiers/report."] { display:none !important; }
:is(a,button):has(img[src*="fichiers/report."]) { position:relative; }
:is(a,button):has(img[src*="fichiers/report."])::before {
  content:""; display:inline-block; width:16px; height:16px; margin:-2px 4px -2px 0;
  vertical-align:middle; background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%233c3489" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1.5 12S5 5 12 5s10.5 7 10.5 7-3.5 7-10.5 7S1.5 12 1.5 12Z"/><circle cx="12" cy="12" r="3"/></svg>') center / 16px no-repeat;
}
:is(a,button):has(img[src*="fichiers/report."]):hover::before { transform:scale(1.15); }

/* ---------------------------------------------------------------------
   21. LISTES - hauteur de ligne stable + montants alignes (Mes locataires)
   Les noms ne passent plus jamais a la ligne (hauteur de ligne constante,
   quelle que soit la longueur du nom : plus d'impression que "les lignes
   changent de forme" en parcourant la liste) ; les montants sont alignes a
   droite avec des chiffres de largeur egale, plus faciles a comparer d'un
   coup d'oeil.
   --------------------------------------------------------------------- */
.centre table tr[bgcolor="#F1FBF0"] td{ height:40px; }
.v-liste-nomp{ display:flex !important; align-items:center; max-width:190px; }
.v-liste-nom{ display:flex !important; align-items:center; gap:8px; max-width:190px; overflow:hidden; }
.v-liste-avatar{
  flex:0 0 26px; width:26px; height:26px; border-radius:50%; display:inline-flex;
  align-items:center; justify-content:center; background:var(--v-primary-light);
  color:var(--v-primary-dark); font-family:var(--v-font); font-size:11px; font-weight:700;
}
.v-liste-nom-txt{
  flex:0 1 auto; max-width:150px; text-align:left; white-space:nowrap; overflow:hidden;
  text-overflow:ellipsis; font-size:13px; display:inline-block;
}
.v-liste-nom, .v-liste-nom-txt{ text-decoration:none !important; color:var(--v-ink) !important; }
.v-liste-nom:hover .v-liste-nom-txt{ text-decoration:underline; }
.v-liste-nom-txt strong{ color:var(--v-ink); }
.centre table tr[bgcolor="#F1FBF0"] td p.v-liste-montant{
  margin:0 !important; text-align:right; font-variant-numeric:tabular-nums;
  font-family:var(--v-font); letter-spacing:.01em; white-space:nowrap;
}
.centre table tr[bgcolor="#F1FBF0"] td p.v-liste-montant-nul{ color:var(--v-ink-soft) !important; font-weight:400 !important; }
.centre table tr[bgcolor="#F1FBF0"] td p.v-liste-ligne1{
  margin:0 !important; max-width:150px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}

/* ---------------------------------------------------------------------
   22. HISTORIQUE DE PAIEMENT (paye_loyer.php) : pagination + telechargement
   --------------------------------------------------------------------- */
.v-hist-plus{ display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap;
  background:#F4F7F9; border:1px solid var(--v-border); border-radius:var(--v-radius); padding:12px 16px; margin:10px 0; font-family:var(--v-font); }
.v-hist-plus #v-hist-pagination{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.v-hist-plus .v-pagination-info{ text-align:left; padding-top:0; margin:0 !important; }
.v-hist-plus form{ margin:0; }

/* ---------------------------------------------------------------------
   23. NOUVEAU / MODIFIER UN BATIMENT
   --------------------------------------------------------------------- */
.v-nb{ max-width:1100px !important; font-family:var(--v-font); }
.v-nb-mise{ display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:14px; align-items:start; }
.v-nb-principal{ display:flex; flex-direction:column; gap:14px; min-width:0; }
.v-nb-carte{ background:#fff; border:1px solid var(--v-border); border-radius:var(--v-radius); padding:16px 18px; box-shadow:var(--v-shadow); }
.v-nb-carte h3{ display:flex; align-items:center; gap:10px; margin:0 0 14px; font-size:16px; color:var(--v-ink); }
.v-nb-type-seg label span{ padding:10px 20px; }
.v-nb-type-fixe{ margin:0 !important; font-size:15px !important; font-weight:700; color:var(--v-ink); }
.v-nb-type-fixe small{ display:block; font-size:12px; font-weight:400; color:var(--v-ink-soft); margin-top:4px; }
.centre table.v-nb-grille{ width:100% !important; border-collapse:collapse !important; font-size:13px; }
.v-nb-grille th{ text-align:left; font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:var(--v-ink-soft);
  padding:6px 8px; border-bottom:2px solid var(--v-border); background:none !important; }
.v-nb-grille td{ padding:8px; border-bottom:1px solid var(--v-border); vertical-align:middle; }
.v-nb-grille input{ width:100%; box-sizing:border-box; height:36px; text-align:center; }
.v-nb-stepper{ display:flex; align-items:center; gap:4px; }
.v-nb-stepper input{ text-align:center; }
.v-nb-stepper button{
  flex:0 0 28px; width:28px; height:28px; border-radius:6px; border:1px solid var(--v-border); background:#fff;
  color:var(--v-ink-soft); font-size:16px; font-weight:700; line-height:1; cursor:pointer; font-family:var(--v-font);
}
.v-nb-stepper button:hover{ border-color:var(--v-primary); color:var(--v-primary); background:var(--v-primary-light); }
.v-nl-optionnel{ font-weight:400; color:var(--v-ink-soft); font-size:12px; }
.v-nb-recap{ position:sticky; top:84px; }
.v-nb-gris{ color:var(--v-ink-soft); font-size:13px; }
.v-nb-recap-liste:not([hidden]){ margin:0; display:flex; flex-direction:column; gap:6px; font-size:13px; }
.v-nb-recap-liste dt{ padding:6px 0; border-bottom:1px solid var(--v-border); color:var(--v-ink); }
.v-nb-recap-total:not([hidden]){ margin-top:12px; padding-top:12px; border-top:2px solid var(--v-ink); display:flex; flex-direction:column; gap:6px; }
.v-nb-recap-total div{ display:flex; justify-content:space-between; align-items:baseline; font-size:13px; color:var(--v-ink-soft); }
.v-nb-recap-total b{ font-size:16px; color:var(--v-primary-dark); }
#v-nb-recap-villa p{ margin:0 0 6px !important; font-size:13px !important; color:var(--v-ink-soft); }
#v-nb-recap-villa b{ font-size:20px; color:var(--v-primary-dark); }
@media (max-width: 900px){ .v-nb-mise{ grid-template-columns:1fr; } .v-nb-recap{ position:static; } }

/* ---------------------------------------------------------------------
   24. NOUVEL / MODIFIER UN APPARTEMENT
   --------------------------------------------------------------------- */
.v-na-batiment{ font-family:var(--v-font); font-size:14px; color:var(--v-ink-soft); margin:0 0 12px !important; }
.v-na-batiment strong{ color:var(--v-ink); }
.v-na-type-seg{ flex-wrap:wrap; }
.v-na-apercu{ margin:12px 0 0 !important; font-size:13px !important; color:var(--v-ink-soft); background:#F4F7F9; border-radius:6px; padding:8px 10px; }
.v-na-apercu strong{ color:var(--v-primary-dark); font-size:14px; }
.v-na-note{ margin:10px 0 0 !important; font-size:12px !important; color:var(--v-ink-soft); font-style:italic; }

/* ---------------------------------------------------------------------
   25. NOUVEL / MODIFIER UN UTILISATEUR
   --------------------------------------------------------------------- */
.v-nu .v-mp-mise{ grid-template-columns:1fr; max-width:640px; margin:0 auto; }
.v-nu textarea{ width:100%; box-sizing:border-box; min-height:60px; font-family:var(--v-font); font-size:14px; padding:9px 12px;
  border:1px solid #CDD7DF; border-radius:8px; resize:vertical; }
.v-nu-verrou{ flex-direction:row !important; align-items:center; gap:8px !important; }
.v-nu-verrou input{ width:auto !important; height:auto !important; }
.v-mp-note-inline{ font-size:11px !important; color:var(--v-ink-soft); margin:2px 0 0 !important; }

/* ---------------------------------------------------------------------
   26. PAIEMENT DE LOYER (refonte de la presentation uniquement)
   --------------------------------------------------------------------- */
.v-pl{ max-width:760px; margin:0 auto; font-family:var(--v-font); }
.v-pl-carte{ background:#fff; border:1px solid var(--v-border); border-radius:var(--v-radius); padding:18px 20px; box-shadow:var(--v-shadow); margin-bottom:14px; }
.v-pl-carte h3{ margin:0 0 12px; font-size:15px; color:var(--v-ink); }
.v-pl #v-pl-recherche-zone{ max-width:none; margin:0; }
.v-pl-vide{ margin:12px 0 0 !important; font-size:13px !important; color:var(--v-ink-soft); }
.v-pl-locataire h2{ margin:0; font-size:19px; color:var(--v-ink); }
.v-pl-locataire p{ margin:2px 0 0 !important; font-size:14px !important; color:var(--v-ink-soft); }
.v-pl-kpis{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-top:14px; }
.v-pl-kpi{ background:#F4F7F9; border-radius:8px; padding:10px 12px; display:flex; flex-direction:column; gap:2px; }
.v-pl-kpi span{ font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--v-ink-soft); }
.v-pl-kpi b{ font-size:17px; color:var(--v-ink); }
.v-pl-kpi small{ font-size:11px; color:var(--v-ink-soft); }
.v-pl-kpi.rouge{ background:#fdecec; } .v-pl-kpi.rouge b{ color:#b42318; }
.v-pl-kpi.vert{ background:#e3f6ea; } .v-pl-kpi.vert b{ color:#067647; }
.v-pl-kpi.principal b{ font-size:20px; }
.v-pl-champs{ display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:14px 18px; margin-bottom:14px; }
.v-pl-champ{ display:flex; flex-direction:column; gap:6px; font-size:13px; }
.v-pl-champ.large{ grid-column:1 / -1; }
.v-pl-champ > span{ font-weight:600; color:var(--v-ink); }
.v-pl-champ input[type="text"]{ width:100%; box-sizing:border-box; height:40px; font-size:15px; }
.v-pl-champ textarea{ width:100%; box-sizing:border-box; min-height:50px; font-family:var(--v-font); font-size:14px; padding:9px 12px; border:1px solid #CDD7DF; border-radius:8px; resize:vertical; }
#v-pl-montant{ font-weight:700; font-size:18px !important; }
.v-pl-repartition{ background:#F4F7F9; border-radius:8px; padding:10px 14px; margin-bottom:14px; }
.v-pl-repartition-titre{ margin:0 0 6px !important; font-size:12px !important; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--v-ink-soft); }
.v-pl-repart-ligne{ display:flex; justify-content:space-between; font-size:13px; padding:3px 0; color:var(--v-ink); }
.v-pl-repart-ligne b{ font-weight:700; }
.v-pl-repart-apres{ margin-top:8px; padding-top:8px; border-top:1px dashed var(--v-border); }
.v-pl-repart-apres .v-pl-repart-total{ padding-top:6px; margin-top:2px; border-top:1px solid var(--v-border); font-weight:700; }
.v-pl-neg{ color:#b42318 !important; }
.v-pl-pos{ color:#067647 !important; }
.v-pl-choix-penalite{ margin-bottom:14px; }
.v-pl-choix-penalite > span{ display:block; font-weight:600; color:var(--v-ink); margin-bottom:8px; font-size:13px; }
.v-pl-choix-penalite .v-nl-seg{ flex-wrap:wrap; }

@media (max-width: 700px){ .v-pl-kpis{ grid-template-columns:repeat(2,1fr); } }

/* ---------------------------------------------------------------------
   27. CONTRAT SIGNE (upload)
   --------------------------------------------------------------------- */
.v-ct{ max-width:640px; margin:0 auto; font-family:var(--v-font); }
.v-ct-msg{ padding:10px 14px; border-radius:8px; font-size:13px; margin-bottom:14px; }
.v-ct-msg.ok{ background:#e3f6ea; color:#067647; }
.v-ct-msg.erreur{ background:#fdecec; color:#b42318; }
.v-ct-val{ margin:0 !important; font-size:14px !important; color:var(--v-ink); }
.v-ct-zone{
  display:flex; align-items:center; justify-content:center; flex-direction:column; gap:4px;
  border:2px dashed var(--v-border); border-radius:var(--v-radius); padding:28px 16px; cursor:pointer;
  text-align:center; color:var(--v-ink-soft); transition:border-color .12s ease, background-color .12s ease;
}
.v-ct-zone:hover{ border-color:var(--v-primary); background:var(--v-primary-light); }
.v-ct-zone input[type="file"]{ position:absolute; width:1px; height:1px; opacity:0; overflow:hidden; }
.v-ct-zone svg{ color:var(--v-primary); }
.v-ct-zone b{ font-size:14px; color:var(--v-ink); font-weight:600; }
.v-ct-zone small{ font-size:12px; color:var(--v-ink-soft); }
#v-ct-zone-fichier:not([hidden]){ display:flex; align-items:center; gap:10px; }
#v-ct-zone-fichier b{ font-weight:600; color:var(--v-ink); }
#v-ct-retirer{
  border:1px solid var(--v-border); background:#fff; color:var(--v-ink-soft); border-radius:6px;
  padding:4px 10px; font-size:12px; font-family:var(--v-font); cursor:pointer;
}
#v-ct-retirer:hover{ border-color:#b42318; color:#b42318; }
.v-ct-erreur{ color:#b42318 !important; font-size:13px !important; margin:8px 0 0 !important; min-height:1em; }
.v-ct-progression:not([hidden]){ display:flex; align-items:center; gap:10px; margin-top:14px; }
.v-ct-barre{ flex:1; height:8px; border-radius:4px; background:#eef1ef; overflow:hidden; }
.v-ct-barre-int{ height:100%; width:0%; background:var(--v-primary); border-radius:4px; transition:width .15s ease; }
#v-ct-progression-txt{ font-size:12px; font-weight:600; color:var(--v-ink-soft); min-width:38px; text-align:right; }


.v-fl-lien-danger, .v-fl-infos a.v-fl-lien-danger{ color:#b42318 !important; }
.v-fl-lien-danger:hover{ text-decoration:underline; }
/* ---------------------------------------------------------------------
   28. PAGE DE CONNEXION
   --------------------------------------------------------------------- */
.v-lg{ min-height:100vh; display:flex; align-items:center; justify-content:center; padding:24px; box-sizing:border-box; font-family:var(--v-font); }
.v-lg-carte{ background:#fff; border:1px solid var(--v-border); border-radius:var(--v-radius); box-shadow:var(--v-shadow); padding:36px 34px; width:100%; max-width:400px; text-align:center; }
.v-lg-logo{ margin-bottom:18px; }
.v-lg-logo img{ max-width:180px; max-height:130px; width:auto; height:auto; }
.v-lg-carte h1{ margin:0 0 4px; font-size:19px; color:var(--v-ink); }
.v-lg-sous-titre{ margin:0 0 20px; font-size:13px; color:var(--v-ink-soft); }
.v-lg-erreur{ background:#fdecec; color:#b42318; border-radius:8px; padding:10px 14px; font-size:13px; margin-bottom:18px; text-align:left; }
.v-lg-champ{ display:block; text-align:left; margin-bottom:14px; font-size:13px; }
.v-lg-champ > span{ display:block; font-weight:600; color:var(--v-ink); margin-bottom:5px; }
.v-lg-champ input{ width:100%; box-sizing:border-box; height:42px; font-size:15px; border:1px solid #CDD7DF; border-radius:8px; padding:0 12px; font-family:var(--v-font); }
.v-lg-champ input:focus{ outline:none; border-color:var(--v-primary); }
.v-lg-champ-err{ color:#b42318; font-size:12px; display:block; margin-top:4px; min-height:1.2em; }
.v-lg-btn{ width:100%; height:44px; margin-top:6px; font-size:15px; }
.v-lg-carte .v-fl-lien-danger{ color:#b42318; } /* garde-fou si reutilise ailleurs, sans effet ici */

@media (max-width: 460px){ .v-lg-carte{ padding:28px 22px; } }

/* ---------------------------------------------------------------------
   29. MESSAGERIE (agent + locataire)
   --------------------------------------------------------------------- */
.v-msg{ max-width:760px; margin:0 auto; font-family:var(--v-font); }
.v-msg-notice{ padding:10px 14px; border-radius:8px; font-size:13px; margin-bottom:14px; }
.v-msg-notice.ok{ background:#e3f6ea; color:#067647; }
.v-msg-notice.erreur{ background:#fdecec; color:#b42318; }
.v-msg-soustitre{ margin:16px 0 8px; font-size:13px; font-weight:700; color:var(--v-ink); }
.v-msg-filtres{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:10px; }
.v-msg-filtres select{ flex:1; min-width:160px; height:38px; border:1px solid #CDD7DF; border-radius:8px; padding:0 10px; font-family:var(--v-font); font-size:13px; background:#fff; }
.v-msg #v-msg-recherche-zone{ margin:0 0 12px; max-width:none; }
.v-msg-selection{ display:flex; flex-wrap:wrap; gap:8px; min-height:20px; margin-bottom:6px; }
.v-msg-selection-vide{ font-size:13px; color:var(--v-ink-soft); margin:0 !important; }
.v-msg-chip{ display:flex; align-items:center; gap:6px; background:var(--v-primary-light); border-radius:20px; padding:5px 6px 5px 12px; font-size:13px; }
.v-msg-chip small{ display:block; color:var(--v-ink-soft); font-size:11px; }
.v-msg-chip-x{ border:none; background:#fff; color:var(--v-ink-soft); width:20px; height:20px; border-radius:50%; cursor:pointer; font-size:14px; line-height:1; }
.v-msg-chip-x:hover{ background:#fdecec; color:#b42318; }
.v-msg-vide{ font-size:13px; color:var(--v-ink-soft); }
.v-msg-liste{ display:flex; flex-direction:column; gap:2px; }
.v-msg-ligne{ display:flex; justify-content:space-between; align-items:center; gap:14px; padding:12px 8px; border-bottom:1px solid var(--v-border); text-decoration:none; color:inherit; }
.v-msg-ligne:hover{ background:#F4F7F9; }
.v-msg-ligne-txt{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.v-msg-ligne-txt b{ font-size:14px; color:var(--v-ink); }
.v-msg-ligne-txt span{ font-size:13px; color:var(--v-ink-soft); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:360px; }
.v-msg-ligne-meta{ display:flex; align-items:center; gap:10px; font-size:12px; color:var(--v-ink-soft); white-space:nowrap; }

/* Fil de discussion */
.v-msg-fil{ max-width:640px; margin:0 auto; font-family:var(--v-font); }
.v-msg-fil-entete{ margin-bottom:14px; }
.v-msg-fil-entete h2{ margin:0; font-size:18px; color:var(--v-ink); }
.v-msg-fil-entete p{ margin:2px 0 0 !important; font-size:13px !important; color:var(--v-ink-soft); }
.v-msg-conversation{ display:flex; flex-direction:column; gap:10px; margin-bottom:18px; }
.v-msg-bulle{ max-width:78%; padding:10px 14px; border-radius:14px; font-size:14px; line-height:1.4; }
.v-msg-bulle-meta{ display:block; font-size:11px; margin-top:4px; opacity:.7; }
.v-msg-bulle.agent{ align-self:flex-start; background:#F4F7F9; color:var(--v-ink); border-bottom-left-radius:4px; }
.v-msg-bulle.locataire{ align-self:flex-end; background:var(--v-primary); color:#fff; border-bottom-right-radius:4px; }
.v-msg-repondre textarea{ width:100%; box-sizing:border-box; min-height:70px; border:1px solid #CDD7DF; border-radius:10px; padding:10px 12px; font-family:var(--v-font); font-size:14px; resize:vertical; }

@media (max-width: 700px){ .v-msg-filtres select{ min-width:100%; } .v-msg-bulle{ max-width:90%; } }

/* petit ecran : voir la section TELEPHONE en fin de fichier */

/* compteurs rouges du menu (retards, augmentations) : simple texte, jamais d'icone */
.bloc_menu_items a span{
  display:inline !important;
  padding:0 !important;
  background:none !important;
  font-weight:700;
}
.bloc_menu_items a span::before{ content:none !important; display:none !important; }

/* temps de generation de la page (visible par l'admin uniquement) */
.v-footer .v-chrono{ font-size:11px; color:var(--v-ink-soft); opacity:.7; margin-top:2px !important; }
.v-rech input[type="search"]:not(:placeholder-shown) ~ .v-rech-raccourci{ display:none; }

/* =========================================================================
   SIGNALEMENTS DE MAINTENANCE (cote agence)
   ========================================================================= */
.v-tk-filtres{ display:flex; flex-wrap:wrap; gap:8px; margin:0 0 14px; }
.v-tk-filtres a{ padding:7px 13px; border:1px solid var(--v-border); border-radius:20px; background:#fff; color:var(--v-ink); text-decoration:none; font-size:13px; }
.v-tk-filtres a b{ margin-left:4px; color:var(--v-ink-soft); font-weight:700; }
.v-tk-filtres a.actif{ background:var(--v-primary); border-color:var(--v-primary); color:#fff; }
.v-tk-filtres a.actif b{ color:#fff; }
.v-tk-badge{ font-size:12px; font-weight:700; border-radius:20px; padding:4px 11px; white-space:nowrap; }
.v-tk-badge.attente{ background:#fdecec; color:#b42318; }
.v-tk-badge.cours{ background:#fff4e5; color:#9a5b00; }
.v-tk-badge.ok{ background:var(--v-primary-light); color:var(--v-primary-dark); }
.v-tk-urgent{ font-size:11px; font-weight:700; text-transform:uppercase; background:#b42318; color:#fff; border-radius:4px; padding:1px 6px; margin-left:4px; vertical-align:middle; }
.v-tk-pj{ font-size:11px; font-weight:600; background:#e0f2fe; color:#075985; border-radius:4px; padding:1px 6px; margin-left:4px; vertical-align:middle; }
.v-tk-entete{ display:flex; justify-content:space-between; align-items:flex-start; gap:12px; }
.v-tk-gris{ color:var(--v-ink-soft); margin:6px 0; }
.v-tk-photo{ max-width:420px; width:100%; border-radius:10px; border:1px solid var(--v-border); margin-top:10px; display:block; }
.v-tk-colonnes{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-top:16px; align-items:start; }
@media (max-width: 800px){ .v-tk-colonnes{ grid-template-columns:1fr; } }
.v-tk-colonnes .v-mp-carte{ margin:0; }
.v-tk-chrono{ display:flex; flex-direction:column; }
.v-tk-etape{ display:flex; gap:12px; padding-bottom:16px; position:relative; }
.v-tk-etape:not(:last-child)::before{ content:""; position:absolute; left:5px; top:16px; bottom:0; width:2px; background:var(--v-border); }
.v-tk-puce{ width:12px; height:12px; border-radius:50%; background:var(--v-primary); margin-top:4px; flex-shrink:0; z-index:1; }
.v-tk-etape small{ color:var(--v-ink-soft); margin-left:8px; }
.v-tk-etape p{ margin:4px 0 0; }
/* les etiquettes urgent/photo vivent dans .v-msg-ligne-txt : on neutralise le style gris des <span> de cette liste */
.v-msg-ligne-txt .v-tk-urgent{ display:inline; color:#fff; background:#b42318; font-size:11px; max-width:none; }
.v-msg-ligne-txt .v-tk-pj{ display:inline; color:#075985; background:#e0f2fe; font-size:11px; max-width:none; }

/* =========================================================================
   PARAMETRES (Administration > Parametres)
   ========================================================================= */
.v-param .v-mp-carte{ max-width:860px; margin:0 auto 16px; }
.v-param .v-msg-notice{ max-width:860px; margin:0 auto 14px; }
.v-param-ligne{ display:flex; justify-content:space-between; align-items:flex-start; gap:24px; padding:14px 0; border-top:1px solid var(--v-border); }
.v-param-ligne:first-of-type{ border-top:none; }
.v-param-txt b{ font-size:15px; color:var(--v-ink); }
.v-param-txt p{ margin:4px 0 0; font-size:13px; color:var(--v-ink-soft); line-height:1.45; }
.v-param-txt small{ display:block; margin-top:6px; font-size:11.5px; color:var(--v-ink-soft); opacity:.8; }
.v-param-alerte{ color:#9a5b00 !important; font-weight:600; }
.v-param-confirm{ display:flex; gap:8px; align-items:flex-start; margin-top:10px; padding:10px 12px; background:#fdecec; color:#b42318; border-radius:8px; font-size:13px; font-weight:600; }
.v-param-confirm input{ width:16px; height:16px; flex:none; margin-top:2px; }
.v-param-interrupteur{ position:relative; flex:none; width:46px; height:26px; cursor:pointer; margin-top:2px; }
.v-param-interrupteur input{ opacity:0; width:0; height:0; position:absolute; }
.v-param-interrupteur span{ position:absolute; inset:0; background:#cfd6dd; border-radius:26px; transition:background .2s; }
.v-param-interrupteur span::before{ content:""; position:absolute; left:3px; top:3px; width:20px; height:20px; background:#fff; border-radius:50%; transition:transform .2s; box-shadow:0 1px 3px rgba(0,0,0,.25); }
.v-param-interrupteur input:checked + span{ background:var(--v-primary); }
.v-param-interrupteur input:checked + span::before{ transform:translateX(20px); }
.v-param-interrupteur input:disabled + span{ opacity:.5; cursor:not-allowed; }
.v-param .v-mp-actions{ max-width:860px; margin:0 auto; }
.v-param-note{ max-width:860px; margin:14px auto 0; font-size:12.5px; color:var(--v-ink-soft); }
.v-param p.v-param-note{ margin:14px auto 0 !important; padding:0 4px; }
.v-param-auto{ color:#9a5b00 !important; font-weight:600; }

/* =========================================================================
   GROUPES D'UTILISATEURS
   ========================================================================= */
.v-gr .v-msg-notice{ max-width:980px; margin:0 auto 14px; }
.v-gr-haut{ max-width:980px; margin:0 auto 14px; display:flex; justify-content:space-between; align-items:center; gap:12px; }
.v-gr-haut p{ margin:0; color:var(--v-ink-soft); }
.v-gr-liste{ max-width:980px; margin:0 auto; display:grid; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr)); gap:16px; }
.v-gr-liste .v-gr-carte{ margin:0; display:flex; flex-direction:column; gap:12px; }
.v-gr-entete{ display:flex; justify-content:space-between; align-items:flex-start; gap:10px; }
.v-gr-entete h3{ margin:0; }
.v-gr-desc{ margin:4px 0 0; font-size:13px; color:var(--v-ink-soft); }
.v-gr-nb{ flex:none; font-size:12px; font-weight:700; background:var(--v-primary-light); color:var(--v-primary-dark); border-radius:20px; padding:4px 10px; white-space:nowrap; }
.v-gr-droits{ display:flex; flex-wrap:wrap; gap:6px; }
.v-gr-droits span{ font-size:12px; background:#F0F3F6; border:1px solid var(--v-border); color:var(--v-ink); border-radius:6px; padding:3px 8px; }
.v-gr-droits .v-gr-aucun{ background:#fdecec; border-color:#f5c2c2; color:#b42318; }
.v-gr-actions{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-top:auto; padding-top:10px; border-top:1px solid var(--v-border); }
.v-gr-actions .v-gr-suppr{ color:#b42318; border-color:#f5c2c2; }
.v-gr-info{ font-size:12px; color:var(--v-ink-soft); }
.v-gr-nouveau{ font-size:11px; font-weight:700; text-transform:uppercase; background:#e0f2fe; color:#075985; border-radius:4px; padding:2px 6px; margin-left:6px; vertical-align:middle; }
.v-gr.v-param .v-mp-carte, .v-gr.v-param > a, .v-gr.v-param form{ max-width:860px; }
/* le style general des boutons secondaires impose sa couleur (!important) : on fait de meme, cible */
.centre .v-gr-actions .v-fl-btn.sec.v-gr-suppr{ color:#b42318 !important; border-color:#f5c2c2 !important; }
/* membres d'un groupe (depliables depuis la carte) */
button.v-gr-nb{ border:none; cursor:pointer; font:inherit; font-size:12px; font-weight:700; }
button.v-gr-nb:hover{ filter:brightness(.95); }
.v-gr-nb .v-gr-fleche{ display:inline-block; margin-left:2px; transition:transform .2s; }
button.v-gr-nb[aria-expanded="true"] .v-gr-fleche{ transform:rotate(180deg); }
.v-gr-nb.vide{ background:#F0F3F6; color:var(--v-ink-soft); }
.v-gr-membres{ list-style:none; margin:0; padding:0; border:1px solid var(--v-border); border-radius:8px; max-height:260px; overflow-y:auto; }
.v-gr-membres li{ display:flex; justify-content:space-between; align-items:center; gap:10px; padding:8px 10px; border-top:1px solid var(--v-border); }
.v-gr-membres li:first-child{ border-top:none; }
.v-gr-m-nom{ display:flex; flex-direction:column; min-width:0; }
.v-gr-m-nom b{ font-size:13px; }
.v-gr-m-nom small{ font-size:11.5px; color:var(--v-ink-soft); }
.v-gr-etat{ flex:none; font-size:11px; font-weight:700; border-radius:20px; padding:2px 8px; }
.v-gr-etat.ok{ background:var(--v-primary-light); color:var(--v-primary-dark); }
.v-gr-etat.bloque{ background:#fff4e5; color:#9a5b00; }
.v-gr-etat.off{ background:#F0F3F6; color:var(--v-ink-soft); }

/* =========================================================================
   MENU DE GAUCHE : colonne fixe (ordinateur) + entree active en evidence
   ========================================================================= */
/* Le menu est FIXE : il ne bouge pas quand on fait defiler la page, et se fait defiler seul
   (molette au-dessus du menu) quand il est plus long que l'ecran. L'ancienne version (sticky)
   decrochait des que la page depassait la hauteur de l'ecran, car html/body ont height:100%
   dans panel.css : le menu suivait alors le contenu. */
@media (min-width: 901px){
  body.v-app{ padding-left:250px; height:auto; min-height:100%; }
  body.v-app > .cadre_haut{ margin-left:-250px; width:auto !important; }
  body.v-app > .cadre_gauche{
    position:fixed;
    top:var(--v-haut, 64px);
    left:0;
    bottom:0;
    float:none;
    height:auto !important;
    min-height:0;
    overflow-y:auto;
    overscroll-behavior:contain;   /* arrive en bas du menu, la molette ne fait pas defiler la page */
    box-sizing:border-box;
    scrollbar-width:thin;
    z-index:40;
  }
}
@media print{ body.v-app{ padding-left:0 !important; } body.v-app > .cadre_haut{ margin-left:0 !important; } }
.bloc_menu_items > p > span.v-menu-actif{ background:var(--v-primary-light); box-shadow:inset 3px 0 0 var(--v-primary); }
.bloc_menu_items > p > span.v-menu-actif a{ color:var(--v-primary-dark) !important; font-weight:700 !important; }
/* icone "Envoyer texto aux habitants" (liste des batiments) : pictogramme moderne, comme les autres actions */
:is(a,button):has(img[src*="fichiers/sms."]) img[src*="fichiers/sms."] { display:none !important; }
:is(a,button):has(img[src*="fichiers/sms."]) { position:relative; }
:is(a,button):has(img[src*="fichiers/sms."])::before {
  content:""; display:inline-block; width:16px; height:16px; margin:-2px 4px -2px 0;
  vertical-align:middle; background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%237c3aed" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12a8 8 0 0 1-11.6 7.1L4 20.5l1.4-4.9A8 8 0 1 1 21 12Z"/><path d="M8.5 11h7M8.5 14h4.5"/></svg>') no-repeat center / contain;
}
:is(a,button):has(img[src*="fichiers/sms."]):hover::before { transform:scale(1.15); }

/* =========================================================================
   UTILISATEURS (liste V2) + lien vers la fiche depuis une carte de groupe
   ========================================================================= */
.v-us .v-msg-notice, .v-us .v-us-filtres, .v-us .v-us-etats, .v-us .v-us-carte{ max-width:1100px; margin-left:auto; margin-right:auto; }
.v-us .v-gr-haut{ max-width:1100px; }
.v-us-filtres{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:10px; }
.v-us-filtres input[type="search"]{ flex:1 1 260px; padding:9px 12px; border:1px solid var(--v-border); border-radius:8px; font:inherit; }
.v-us-filtres select{ padding:9px 10px; border:1px solid var(--v-border); border-radius:8px; font:inherit; background:#fff; }
.v-us-table-zone{ overflow-x:auto; }
.v-us-table{ width:100%; border-collapse:collapse; font-size:13px; }
.v-us-table th{ text-align:left; font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--v-ink-soft); padding:8px 10px; border-bottom:1px solid var(--v-border); white-space:nowrap; }
.v-us-table td{ padding:10px; border-bottom:1px solid var(--v-border); vertical-align:middle; }
.v-us-table tr:last-child td{ border-bottom:none; }
.v-us-table tr.v-us-off td:not(.v-us-act){ opacity:.55; }
.v-us-qui b{ white-space:nowrap; }
.v-us-qui{ display:flex; align-items:center; gap:10px; }
.v-us-qui span:last-child{ display:flex; flex-direction:column; }
.v-us-qui small, .v-us-contact small{ display:block; font-size:11.5px; color:var(--v-ink-soft); }
.v-us-avatar{ flex:none; width:34px; height:34px; border-radius:50%; background:var(--v-primary-light); color:var(--v-primary-dark); font-weight:700; font-size:12px; display:flex; align-items:center; justify-content:center; }
.v-us-etat{ font-size:11.5px; font-weight:700; border-radius:20px; padding:3px 9px; white-space:nowrap; }
.v-us-etat.actif{ background:var(--v-primary-light); color:var(--v-primary-dark); }
.v-us-etat.verrouille{ background:#fff4e5; color:#9a5b00; }
.v-us-etat.expire{ background:#fdecec; color:#b42318; }
.v-us-etat.desactive{ background:#F0F3F6; color:var(--v-ink-soft); }
.v-us-alerte{ font-size:11px; font-weight:700; background:#fdecec; color:#b42318; border-radius:4px; padding:1px 6px; }
.v-us-act{ white-space:nowrap; text-align:right; }
.v-us-act form{ display:inline; }
.v-us-btn{ font:inherit; font-size:12px; font-weight:600; padding:5px 9px; margin:2px 0 2px 4px; border:1px solid var(--v-border); border-radius:6px; background:#fff; color:var(--v-ink); cursor:pointer; }
.v-us-btn:hover{ border-color:var(--v-primary); color:var(--v-primary-dark); }
.v-us-btn.vert{ color:var(--v-primary-dark); border-color:#b7dfc5; }
.v-us-btn.rouge{ color:#b42318; border-color:#f5c2c2; }
.v-gr-m-lien{ background:none; border:none; padding:0; font:inherit; color:var(--v-primary-dark); cursor:pointer; text-align:left; }
.v-gr-m-lien:hover b{ text-decoration:underline; }
form.v-gr-m-nom{ margin:0; }

/* =========================================================================
   ENCAISSEMENT (V2) : confirmation d'un paiement + historique d'un locataire
   ========================================================================= */
.v-en .v-mp-carte, .v-en .v-msg-notice{ max-width:1000px; margin-left:auto; margin-right:auto; }
.v-en-recu{ border-top:4px solid var(--v-primary); }
.v-en-recu.annule{ border-top-color:#b42318; }
.v-en-recu-tete{ display:flex; align-items:center; gap:14px; padding-bottom:14px; border-bottom:1px solid var(--v-border); }
.v-en-recu-tete h2{ margin:0; font-size:20px; }
.v-en-recu-tete p{ margin:2px 0 0; color:var(--v-ink-soft); font-size:13px; }
.v-en-coche{ flex:none; width:44px; height:44px; border-radius:50%; background:var(--v-primary-light); color:var(--v-primary-dark); font-size:22px; font-weight:700; display:flex; align-items:center; justify-content:center; }
.v-en-recu.annule .v-en-coche{ background:#fdecec; color:#b42318; }
.v-en-montant{ margin-left:auto; font-size:26px; color:var(--v-ink); white-space:nowrap; }
.v-en-recu.annule .v-en-montant{ text-decoration:line-through; color:var(--v-ink-soft); }
.v-en-grille{ display:grid; grid-template-columns:repeat(3, 1fr); gap:18px; padding:16px 0; }
@media (max-width: 800px){ .v-en-grille{ grid-template-columns:1fr; } }
.v-en-grille > div{ display:flex; flex-direction:column; gap:4px; }
.v-en-grille small, .v-en-kpis small{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--v-ink-soft); font-weight:700; }
.v-en-grille > div > span{ font-size:13px; color:var(--v-ink-soft); }
.v-en-ligne{ display:flex; justify-content:space-between; gap:10px; }
.v-en-ligne em{ font-style:normal; color:var(--v-ink-soft); }
.v-en-ligne b{ color:var(--v-ink); }
.v-en-ligne.total{ border-top:1px solid var(--v-border); padding-top:4px; margin-top:2px; }
b.dette{ color:#b42318 !important; } b.avance{ color:var(--v-primary-dark) !important; } b.ajour{ color:var(--v-primary-dark) !important; }
.v-en-detail{ margin:0 0 14px; padding:10px 12px; background:#F4F7F9; border-radius:8px; font-size:13px; }
.v-en-actions{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.v-en-actions form{ margin:0; }
.v-en-tete{ display:grid; grid-template-columns:1fr auto; gap:14px 24px; align-items:center; }
.v-en-tete h2{ margin:0; font-size:19px; }
.v-en-tete p{ margin:4px 0 0; color:var(--v-ink-soft); font-size:13px; }
.v-en-tete .v-en-actions{ grid-column:1 / -1; }
.v-en-kpis{ display:flex; gap:22px; }
.v-en-kpis > div{ display:flex; flex-direction:column; align-items:flex-end; }
.v-en-kpis b{ font-size:17px; color:var(--v-ink); }
@media (max-width: 800px){ .v-en-tete{ grid-template-columns:1fr; } .v-en-kpis > div{ align-items:flex-start; } }
.v-en-parti{ color:#b42318; font-weight:600; }
.v-en-compte{ font-size:12px; font-weight:400; color:var(--v-ink-soft); margin-left:8px; }
.v-en-table td small{ display:block; font-size:11px; color:var(--v-ink-soft); }
.v-en-table .num{ text-align:right; white-space:nowrap; }
.v-en-det{ max-width:260px; color:var(--v-ink-soft); }
.v-en-tag{ font-size:10.5px; font-weight:700; background:#e0f2fe; color:#075985; border-radius:4px; padding:1px 6px; }
.v-en-mod td{ background:#F4F7F9; }
.v-en-modform{ display:flex; flex-wrap:wrap; align-items:center; gap:12px; }
.v-en-modform label{ font-size:13px; font-weight:600; display:flex; align-items:center; gap:8px; }
.v-en-modform input{ width:140px; padding:7px 10px; border:1px solid var(--v-border); border-radius:6px; font:inherit; }
.v-en-modform small{ color:var(--v-ink-soft); }
/* carte "Paiements de ce locataire" sur la page de paiement */
.v-pl-hist p{ margin:0 0 12px; color:var(--v-ink-soft); }
.v-pl-hist-actions{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.v-pl-hist-actions form{ margin:0; }
.v-en .v-mp-carte{ margin-bottom:16px; } .v-en-table td:first-child{ white-space:nowrap; }

/* =========================================================================
   BROUILLARD DE CAISSE (V2)
   ========================================================================= */
.v-br .v-mp-carte, .v-br .v-msg-notice{ max-width:1100px; margin-left:auto; margin-right:auto; margin-bottom:16px; }
.v-br-choix{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:12px; }
.v-br-raccourcis{ display:flex; flex-wrap:wrap; gap:6px; }
.v-br-raccourcis a{ padding:6px 12px; border:1px solid var(--v-border); border-radius:20px; font-size:13px; color:var(--v-ink); text-decoration:none; background:#fff; }
.v-br-raccourcis a.actif{ background:var(--v-primary); border-color:var(--v-primary); color:#fff; }
.v-br-champs{ display:flex; flex-wrap:wrap; align-items:center; gap:10px; }
.v-br-champs label{ display:flex; align-items:center; gap:6px; font-size:13px; font-weight:600; color:var(--v-ink-soft); }
.v-br-champs input, .v-br-champs select{ padding:7px 9px; border:1px solid var(--v-border); border-radius:8px; font:inherit; background:#fff; }
.v-br-fleche{ display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px; border:1px solid var(--v-border); border-radius:8px; font-size:20px; line-height:1; color:var(--v-ink); text-decoration:none; background:#fff; }
.v-br-fleche:hover{ border-color:var(--v-primary); color:var(--v-primary-dark); }
.v-br-periode{ display:flex; flex-wrap:wrap; align-items:center; gap:4px 16px; padding-bottom:14px; border-bottom:1px solid var(--v-border); }
.v-br-periode h2{ margin:0; font-size:19px; }
.v-br-periode p{ margin:0; color:var(--v-ink-soft); font-size:13px; flex:1; }
.v-br-periode form{ margin:0; }
.v-br-equation{ display:flex; align-items:stretch; gap:10px; padding:18px 0; }
.v-br-terme{ flex:1; display:flex; flex-direction:column; gap:3px; padding:12px 14px; border-radius:10px; background:#F4F7F9; }
.v-br-terme small{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; font-weight:700; color:var(--v-ink-soft); }
.v-br-terme b{ font-size:21px; color:var(--v-ink); white-space:nowrap; }
.v-br-terme span{ font-size:12px; color:var(--v-ink-soft); }
.v-br-terme.entree b{ color:var(--v-primary-dark); }
.v-br-terme.sortie b{ color:#b42318; }
.v-br-terme.total{ background:var(--v-primary); }
.v-br-terme.total small, .v-br-terme.total span, .v-br-terme.total b{ color:#fff; }
.v-br-terme.total.negatif{ background:#b42318; }
.v-br-op{ display:flex; align-items:center; font-size:22px; font-weight:700; color:var(--v-ink-soft); }
@media (max-width: 900px){ .v-br-equation{ flex-wrap:wrap; } .v-br-terme{ flex:1 1 40%; } .v-br-op{ display:none; } }
.v-br-detail{ display:grid; grid-template-columns:repeat(3, 1fr); gap:18px; padding-top:14px; border-top:1px solid var(--v-border); }
@media (max-width: 800px){ .v-br-detail{ grid-template-columns:1fr; } }
.v-br-detail > div{ display:flex; flex-direction:column; gap:4px; font-size:13px; }
.v-br-detail small{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; font-weight:700; color:var(--v-ink-soft); margin-bottom:2px; }
.v-br-vide{ color:var(--v-ink-soft); }
.v-br-journal-tete{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:10px; margin-bottom:8px; }
.v-br-journal-tete h3{ margin:0; }
.v-br-journal-tete .v-br-filtres{ margin:0; }
.v-br-table td{ vertical-align:top; }
.v-br-table td b, .v-br-table td small{ display:block; }
.v-br-table td small{ font-size:11.5px; color:var(--v-ink-soft); }
.v-br-table .num{ text-align:right; white-space:nowrap; }
.v-br-heure{ white-space:nowrap; font-variant-numeric:tabular-nums; font-weight:600; }
.v-br-libelle{ font-style:italic; }
.v-br-type{ display:inline-block; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; border-radius:4px; padding:1px 6px; margin-bottom:3px; }
.v-br-type.paiement{ background:var(--v-primary-light); color:var(--v-primary-dark); }
.v-br-type.entree{ background:#e0f2fe; color:#075985; }
.v-br-type.sortie{ background:#fdecec; color:#b42318; }
.v-br-jour td{ background:#F0F3F6; font-weight:700; font-size:12.5px; color:var(--v-ink); padding:7px 10px !important; }
.v-br-table tfoot td{ border-top:2px solid var(--v-border); font-weight:700; padding:10px; }
.v-br-table .v-us-act form{ display:inline; margin:0; }
.v-br-table a.v-us-btn{ display:inline-block; text-decoration:none; }

/* =========================================================================
   PENALITES (V2)
   ========================================================================= */
.v-pe .v-mp-carte, .v-pe .v-msg-notice, .v-pe > p{ max-width:1100px; margin-left:auto; margin-right:auto; margin-bottom:16px; }
.v-pe-kpis{ display:grid; grid-template-columns:repeat(3, 1fr); gap:12px; }
@media (max-width: 800px){ .v-pe-kpis{ grid-template-columns:1fr; } }
.v-pe-kpi{ display:flex; flex-direction:column; gap:3px; padding:12px 14px; border-radius:10px; background:#F4F7F9; border-left:4px solid var(--v-border); }
.v-pe-kpi small{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; font-weight:700; color:var(--v-ink-soft); }
.v-pe-kpi b{ font-size:21px; color:var(--v-ink); }
.v-pe-kpi span{ font-size:12px; color:var(--v-ink-soft); }
.v-pe-kpi.alerte{ border-left-color:#b42318; } .v-pe-kpi.alerte b{ color:#b42318; }
.v-pe-kpi.ok{ border-left-color:var(--v-primary); }
.v-pe-regle{ grid-column:1 / -1; margin:2px 0 0; font-size:13px; color:var(--v-ink-soft); }
.v-pe-tete{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:10px; margin-bottom:8px; }
.v-pe-tete h3{ margin:0; }
.v-pe-tete input{ flex:0 1 280px; padding:8px 11px; border:1px solid var(--v-border); border-radius:8px; font:inherit; }
.v-pe-rech{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.v-pe-rech input[type=search]{ flex:0 1 260px; }
.v-pe-kpi ul.v-pe-split{ list-style:none !important; margin:8px 0 0 !important; padding:8px 0 0 !important; border-top:1px dashed var(--v-border); display:flex; flex-direction:column; gap:5px; }
.v-pe-kpi ul.v-pe-split li{ display:flex !important; align-items:center; gap:8px; margin:0 !important; padding:0 !important; list-style:none !important; font-size:12.5px !important; line-height:1.3; color:var(--v-ink-soft); }
.v-pe-kpi ul.v-pe-split li::before, .v-pe-kpi ul.v-pe-split li::marker{ content:none; }
.v-pe-split .lib{ flex:1 1 auto; font-size:12.5px !important; color:var(--v-ink-soft) !important; }
.v-pe-split .val{ flex:none; font-size:13px !important; font-weight:700; color:var(--v-ink) !important; white-space:nowrap; }
.v-pe-split .nb{ flex:none; font-size:11px !important; font-weight:600; min-width:28px; text-align:center; padding:1px 7px; border-radius:10px; background:#fff; border:1px solid var(--v-border); color:var(--v-ink-soft) !important; }
.v-pe-split i{ width:9px; height:9px; border-radius:50%; flex:none; display:inline-block; }
.v-pe-split i.actif{ background:var(--v-primary); }
.v-pe-split i.resilie{ background:#98a2b3; }
.v-pe-table td small{ display:block; font-size:11.5px; color:var(--v-ink-soft); }
.v-pe-table .num{ text-align:right; white-space:nowrap; }
.v-pe-table td.v-pe-neg{ color:#b42318; font-weight:600; }
.v-pe-table a.v-us-btn{ display:inline-block; text-decoration:none; }
.v-pe-table .v-us-act form{ display:inline; margin:0; }
.v-pe-det{ font-size:12.5px; color:var(--v-ink-soft); }
.v-pe-etat{ font-size:11.5px; font-weight:700; border-radius:20px; padding:3px 9px; white-space:nowrap; }
.v-pe-etat.attente{ background:#fdecec; color:#b42318; }
.v-pe-etat.ok{ background:var(--v-primary-light); color:var(--v-primary-dark); }
.v-pe-etat.off{ background:#F0F3F6; color:var(--v-ink-soft); }
.centre .v-en-actions .v-fl-btn.sec.v-pe-danger{ color:#b42318 !important; border-color:#f5c2c2 !important; }
.v-pe .v-en-kpis{ flex-wrap:wrap; }

/* =========================================================================
   POINT DE CAISSE (V2) + ETAT MENSUEL (V2)
   ========================================================================= */
.v-pc .v-mp-carte, .v-pc .v-msg-notice, .v-em .v-mp-carte{ max-width:1100px; margin-left:auto; margin-right:auto; margin-bottom:16px; }
.v-pc-criteres{ display:flex; flex-direction:column; gap:12px; }
.v-pc-ligne{ display:flex; flex-wrap:wrap; align-items:center; gap:10px 14px; }
.v-pc-ligne > label{ display:flex; align-items:center; gap:6px; font-size:13px; font-weight:600; color:var(--v-ink-soft); }
.v-pc-ligne > label.large{ flex:1 1 280px; } .v-pc-ligne > label.large select{ flex:1; min-width:0; }
.v-pc-ligne input, .v-pc-ligne select{ padding:7px 9px; border:1px solid var(--v-border); border-radius:8px; font:inherit; background:#fff; max-width:100%; }
.v-pc-ligne .v-br-raccourcis{ margin-left:auto; }
.v-pc-comptes{ display:flex; flex-wrap:wrap; gap:6px; flex:1; }
.v-pc-puce{ cursor:pointer; }
.v-pc-puce input{ position:absolute; opacity:0; width:0; height:0; }
.v-pc-puce span{ display:inline-block; padding:6px 12px; border:1px solid var(--v-border); border-radius:20px; font-size:13px; background:#fff; color:var(--v-ink-soft); }
.v-pc-puce input:checked + span{ background:var(--v-primary-light); border-color:var(--v-primary); color:var(--v-primary-dark); font-weight:600; }
.v-pc-puce input:focus-visible + span{ outline:2px solid var(--v-primary); outline-offset:2px; }
.v-pc-synthese{ display:grid; grid-template-columns:minmax(220px, 1fr) 2fr; gap:20px; }
@media (max-width: 800px){ .v-pc-synthese{ grid-template-columns:1fr; } }
.v-pc-total{ display:flex; flex-direction:column; gap:4px; padding:14px 16px; border-radius:10px; background:var(--v-primary); color:#fff; }
.v-pc-total small{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; font-weight:700; opacity:.9; }
.v-pc-total b{ font-size:26px; }
.v-pc-total span{ font-size:12.5px; opacity:.9; }
.v-pc-total form{ margin:8px 0 0; }
.centre .v-pc-total .v-fl-btn.sec{ background:#fff !important; }
.v-pc-repartition{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.v-pc-repartition > div{ display:flex; flex-direction:column; gap:4px; font-size:13px; }
.v-pc-repartition small{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; font-weight:700; color:var(--v-ink-soft); margin-bottom:2px; }
.v-pc-note{ grid-column:1 / -1; margin:0; font-size:12.5px; color:#9a5b00; }
.v-pc-table td, .v-em-table td{ vertical-align:top; }
.v-pc-table td b, .v-pc-table td small, .v-em-table td small{ display:block; }
.v-pc-table td small, .v-em-table td small{ font-size:11.5px; color:var(--v-ink-soft); }
.v-pc-table .num, .v-em-table .num{ text-align:right; white-space:nowrap; }
.v-pc-table tfoot td, .v-em-table tfoot td{ border-top:2px solid var(--v-border); font-weight:700; padding:10px; }
.v-pc-table a.v-us-btn, .v-em-table a.v-us-btn{ display:inline-block; text-decoration:none; }
.v-pc-compte{ font-size:11px; font-weight:700; border-radius:4px; padding:2px 7px; white-space:nowrap; background:#F0F3F6; color:var(--v-ink); }
.v-pc-compte.c-loyer{ background:var(--v-primary-light); color:var(--v-primary-dark); }
.v-pc-compte.c-penalite{ background:#fff4e5; color:#9a5b00; }
.v-pc-compte.c-autre{ background:#e0f2fe; color:#075985; }
.v-em-jauge{ display:inline-block; width:90px; height:7px; border-radius:6px; background:#e7ece9; overflow:hidden; vertical-align:middle; }
.v-em-jauge span{ display:block; height:100%; background:var(--v-primary); border-radius:6px; }
.v-em-tx{ display:inline !important; margin-left:8px; font-weight:600; color:var(--v-ink) !important; }
.v-em-vac{ font-size:11px; font-weight:700; background:#e0f2fe; color:#075985; border-radius:20px; padding:2px 8px; }
.v-em-table tr.v-em-libre td{ background:#fafbfa; }
.v-em-table .v-pe-etat{ display:inline-block; }

/* ---- Etat mensuel par proprietaire (V2) ---- */
.v-ep-vues{ margin-top:4px; }
.v-ep-bat{ padding:0 !important; overflow:hidden; }
.v-ep-bat > summary{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 14px; padding:14px 18px; cursor:pointer; list-style:none; border-bottom:1px solid var(--v-border); }
.v-ep-bat > summary::-webkit-details-marker{ display:none; }
.v-ep-bat > summary::before{ content:'\25B8'; color:var(--v-ink-soft); transition:transform .15s; }
.v-ep-bat[open] > summary::before{ transform:rotate(90deg); }
.v-ep-bat > summary b{ font-size:15px; }
.v-ep-bat > summary span{ font-size:13px; color:var(--v-ink-soft); }
.v-ep-bat > summary em{ font-style:normal; font-weight:600; }
.v-ep-bat > summary .v-us-btn{ margin-left:auto; }
.v-ep-bat .v-us-table-zone{ padding:0 12px 12px; }
@media print{
  .v-ep-noprint, .cadre_haut, .cadre_gauche, .v-ep-vues, .titre{ display:none !important; }
  .v-ep .v-mp-carte{ box-shadow:none !important; border:1px solid #ccc; }
  .v-ep-bat{ break-inside:avoid-page; }
  .v-ep-bat > summary::before{ display:none; }
}

/* ---- Mes locataires (V2) ---- */
.v-ll-titre{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.v-ll-titre .v-fl-btn{ margin:0 0 6px; }
.v-ll-ajout{ text-align:right; margin:0 0 10px; }
.v-ll-kpis{ display:grid; grid-template-columns:repeat(4, 1fr); gap:12px; }
@media (max-width: 900px){ .v-ll-kpis{ grid-template-columns:repeat(2, 1fr); } }
.v-ll-kpi{ display:flex; flex-direction:column; gap:3px; padding:12px 14px; border-radius:10px; background:#F4F7F9; border-left:4px solid var(--v-border); text-decoration:none !important; color:inherit !important; transition:background .15s; }
.v-ll-kpi:hover{ background:#eef3f0; }
.v-ll-kpi small{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; font-weight:700; color:var(--v-ink-soft); }
.v-ll-kpi b{ font-size:22px; color:var(--v-ink); }
.v-ll-kpi span{ font-size:12px; color:var(--v-ink-soft); }
.v-ll-kpi.alerte{ border-left-color:#b42318; } .v-ll-kpi.alerte b{ color:#b42318; }
.v-ll-kpi.ok{ border-left-color:var(--v-primary); } .v-ll-kpi.ok b{ color:var(--v-primary-dark, #135B7C); }
.v-ll-criteres{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:12px; }
.v-ll-criteres input[type=search]{ flex:1 1 220px; min-width:180px; height:36px; box-sizing:border-box; padding:0 11px; border:1px solid var(--v-border); border-radius:8px; font:inherit; font-size:13px !important; }
.v-ll-criteres select{ flex:0 1 170px; min-width:130px; height:36px; box-sizing:border-box; padding:0 8px; border:1px solid var(--v-border); border-radius:8px; font:inherit; font-size:13px !important; background:#fff; }
.v-ll-criteres .v-us-btn{ height:36px; box-sizing:border-box; display:inline-flex; align-items:center; }
.v-ll-barre{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:flex-start; gap:8px; }
.v-ll-barre .v-tk-filtres{ margin-bottom:10px; }
.v-tk-filtres a.v-ll-anciens{ border-style:dashed; color:var(--v-ink-soft); }
.v-ll-export{ display:flex; gap:6px; align-items:center; margin-bottom:10px; }
.v-ll-export select{ font-size:12.5px !important; height:32px; line-height:normal; padding:0 8px; border:1px solid var(--v-border); border-radius:8px; font:inherit; font-size:12.5px; background:#fff; }
.v-ll-table td small{ display:block; font-size:11.5px; color:var(--v-ink-soft); }
.v-ll-table .num{ text-align:right; white-space:nowrap; }
.v-ll-table .v-us-act form{ display:inline; margin:0; }
.v-ll-nom{ display:flex; align-items:center; gap:10px; text-decoration:none !important; }
.v-ll-nom b{ color:var(--v-primary-dark, #135B7C); }
.v-ll-ajour{ font-size:12px; font-weight:600; color:var(--v-ink-soft); background:#F1F4F7; border-radius:20px; padding:3px 10px; }
.v-ll-zero{ color:var(--v-ink-soft); }
.v-ll-table a.dette{ color:#b42318; font-weight:700; }

/* ---- Mes batiments / Appartements / Proprietaires (V2) ---- */
.v-ll-titre form{ margin:0 0 6px; }
.v-ap-fil{ margin:-6px 0 14px; font-size:13px; color:var(--v-ink-soft); }
.v-bt-grille{ display:grid; grid-template-columns:repeat(auto-fill, minmax(330px, 1fr)); gap:16px; }
.v-bt-carte{ display:flex; flex-direction:column; gap:12px; padding:16px 18px; border:1px solid var(--v-border); border-radius:12px; background:#fff; transition:box-shadow .15s; }
.v-bt-carte:hover{ box-shadow:0 6px 18px rgba(16,32,43,.08); }
.v-bt-carte header{ display:flex; justify-content:space-between; align-items:flex-start; gap:10px; }
.v-bt-carte header form{ margin:0; }
.v-bt-carte h3{ margin:0 0 4px; font-size:16px; }
.v-bt-carte h3 a{ color:var(--v-ink); text-decoration:none; }
.v-bt-carte h3 a:hover{ color:var(--v-primary); }
.v-bt-carte header p{ margin:0; font-size:12.5px; color:var(--v-ink-soft); }
.v-bt-carte .v-bt-pro{ margin-top:2px; font-weight:600; color:var(--v-primary-dark, #135B7C); }
.v-bt-type{ display:inline-block; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:2px 8px; border-radius:10px; background:var(--v-primary-light); color:var(--v-primary-dark, #135B7C); }
.v-bt-occ{ display:flex; flex-direction:column; gap:6px; }
.v-bt-occ-txt{ display:flex; align-items:center; gap:8px; font-size:13px; color:var(--v-ink-soft); }
.v-bt-occ-txt b{ color:var(--v-ink); font-size:15px; }
.v-bt-occ .v-em-jauge{ width:100%; }
.v-bt-chiffres{ display:grid; grid-template-columns:repeat(3, 1fr); gap:8px; margin:0; padding:10px 0 0; border-top:1px dashed var(--v-border); }
.v-bt-chiffres div{ margin:0; }
.v-bt-chiffres dt{ font-size:10.5px; text-transform:uppercase; letter-spacing:.04em; font-weight:700; color:var(--v-ink-soft); }
.v-bt-chiffres dd{ margin:2px 0 0; font-size:13.5px; font-weight:700; color:var(--v-ink); white-space:nowrap; }
.v-bt-carte footer{ display:flex; flex-wrap:wrap; gap:6px; margin-top:auto; }
.v-bt-carte footer form{ margin:0; display:inline; }
.v-ll-kpi .v-em-jauge{ width:100%; margin-top:6px; }
.v-po-occ{ display:block; font-size:13px; margin-bottom:4px; }
.v-ll-table td .v-em-jauge{ width:120px; }
.v-ll-table .v-us-act{ white-space:nowrap; }
.v-ll-table td a{ white-space:nowrap; }
.v-bt .v-ll-criteres select{ flex-basis:200px; }

/* ---- Solde de tout compte / Modifier le contrat / Alerte augmentation (V2) ---- */
.v-cl-mise{ max-width:760px; display:flex; flex-direction:column; gap:0; }
.v-cl-qui{ display:flex; align-items:center; gap:16px; }
.v-cl-qui .v-liste-avatar{ flex:0 0 52px; width:52px; height:52px; font-size:18px; }
.v-cl-qui h2{ margin:0 0 4px; font-size:19px; }
.v-cl-qui p{ margin:2px 0; font-size:13px; color:var(--v-ink-soft); }
.v-cl-lignes{ display:flex; flex-direction:column; border:1px solid var(--v-border); border-radius:10px; overflow:hidden; }
.v-cl-ligne{ display:flex; justify-content:space-between; align-items:center; gap:14px; padding:12px 16px; border-bottom:1px solid var(--v-border); background:#fff; }
.v-cl-ligne:last-child{ border-bottom:none; }
.v-cl-ligne span b{ display:block; font-size:14px; }
.v-cl-ligne span small{ font-size:12px; color:var(--v-ink-soft); }
.v-cl-ligne em{ font-style:normal; font-weight:700; font-size:15px; white-space:nowrap; }
.v-cl-ligne.rend em{ color:#b42318; }
.v-cl-ligne.doit em{ color:var(--v-primary-dark, #135B7C); }
.v-cl-saisie input{ width:150px; padding:8px 10px; border:1px solid var(--v-border); border-radius:8px; font:inherit; text-align:right; font-weight:700; }
.v-cl-total{ display:flex; justify-content:space-between; align-items:center; gap:12px; margin:14px 0; padding:14px 18px; border-radius:10px; background:#F1F4F7; }
.v-cl-total span{ font-size:13.5px; color:var(--v-ink-soft); }
.v-cl-total b{ font-size:22px; white-space:nowrap; }
.v-cl-total.doit{ background:var(--v-primary-light); } .v-cl-total.doit b{ color:var(--v-primary-dark, #135B7C); }
.v-cl-total.rend{ background:#fdecec; } .v-cl-total.rend b{ color:#b42318; }
.v-cl-mode{ display:flex; flex-direction:column; gap:6px; margin-bottom:10px; font-size:13px; color:var(--v-ink-soft); }
.v-cl-note{ font-size:12.5px; color:var(--v-ink-soft); margin:6px 0 12px; }
.v-cl-actions{ display:flex; justify-content:flex-end; gap:8px; margin-top:6px; }
.v-mc-champs{ display:flex; flex-wrap:wrap; gap:14px; align-items:flex-end; }
.v-mc-champs label{ display:flex; flex-direction:column; gap:5px; font-size:12.5px; font-weight:600; color:var(--v-ink-soft); }
.v-mc-champs input, .v-mc-champs select{ height:38px; box-sizing:border-box; padding:0 10px; border:1px solid var(--v-border); border-radius:8px; font:inherit; font-size:14px; background:#fff; min-width:180px; }
.v-mc-champs input[name=loyer]{ font-weight:700; text-align:right; }
.v-mc-rapide{ display:flex; flex-wrap:wrap; align-items:center; gap:6px; font-size:12.5px; color:var(--v-ink-soft); }
.v-au-duree{ display:block; font-weight:700; font-size:13px; }
.v-au-duree.echu{ color:#b42318; }
.v-au-jauge.echu span{ background:#e8731a; }
.v-sm-texte{ max-width:420px; font-size:12.5px; line-height:1.4; white-space:normal; }
.v-rs-option{ display:flex; gap:12px; align-items:flex-start; padding:12px 14px; margin-bottom:14px; border:1px solid var(--v-border); border-radius:10px; cursor:pointer; background:#F7F9FB; }
.v-rs-option input{ margin-top:3px; width:18px; height:18px; accent-color:var(--v-primary); }
.v-rs-option b{ display:block; font-size:14px; }
.v-rs-option small{ font-size:12.5px; color:var(--v-ink-soft); }
.v-pw-carte{ max-width:520px; display:flex; flex-direction:column; gap:14px; }
.v-pw-qui{ margin:0; font-size:13.5px; color:var(--v-ink-soft); }
.v-pw-champ{ display:flex; flex-direction:column; gap:6px; font-size:12.5px; font-weight:600; color:var(--v-ink-soft); }
.v-pw-saisie{ display:flex; gap:6px; }
.v-pw-saisie input{ flex:1; height:40px; box-sizing:border-box; padding:0 12px; border:1px solid var(--v-border); border-radius:8px; font:inherit; font-size:14px; }
.v-pw-aide{ margin:0; font-size:12.5px; color:var(--v-ink-soft); }
.v-pw-aide.erreur{ color:#b42318; font-weight:600; }
.v-sms-lib{ font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--v-ink-soft); }
.v-sms-dest{ margin:4px 0 0; font-size:14px; }
.v-sms-liste summary{ cursor:pointer; font-size:12.5px; color:var(--v-primary); margin-top:4px; }
.v-sms-liste p{ font-size:12.5px; color:var(--v-ink-soft); }
.v-sms-carte textarea{ padding:10px 12px; border:1px solid var(--v-border); border-radius:8px; font:inherit; font-size:14px; resize:vertical; font-weight:400; color:var(--v-ink); }

/* ---- Parametres > Notifications (mode d'envoi par evenement) ---- */
.v-nc-intro{ margin:0 0 12px; font-size:13px; color:var(--v-ink-soft); line-height:1.5; }
.v-nc-public{ margin:18px 0 2px; font-size:11.5px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--v-primary); }
.v-nc-ligne{ display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px 24px; align-items:start; padding:14px 0; border-top:1px solid var(--v-border); }
.v-nc-public + .v-nc-ligne{ border-top:none; }
.v-nc-ligne .v-nc-seg{ margin-top:2px; }
.v-nc-seg span{ padding:7px 11px; font-size:12.5px; white-space:nowrap; }
.v-nc-ligne.off .v-param-txt b{ color:var(--v-ink-soft); }
.v-nc-ligne.off .v-nc-seg input:checked + span{ background:#8a96a3; }
.v-nc-dest{ grid-column:1 / -1; display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)); gap:10px 16px; }
.v-nc-dest label{ display:flex; flex-direction:column; gap:5px; font-size:12px; font-weight:600; color:var(--v-ink-soft); }
.v-nc-dest label.large{ grid-column:1 / -1; }
.v-nc-dest label small{ font-weight:400; }
.v-nc-dest input, .v-nc-dest textarea{ padding:8px 10px; border:1px solid var(--v-border); border-radius:8px; font:inherit; font-size:13.5px; font-weight:400; color:var(--v-ink); background:#fff; resize:vertical; }
.v-nc-dest input:focus, .v-nc-dest textarea:focus{ outline:2px solid var(--v-primary); outline-offset:-1px; border-color:transparent; }
@media (max-width:720px){ .v-nc-ligne{ grid-template-columns:1fr; } .v-nc-seg{ width:100%; } .v-nc-seg label{ flex:1; } .v-nc-seg span{ text-align:center; padding:8px 6px; } }
.v-sms-voies{ display:flex; flex-wrap:wrap; gap:6px; margin:8px 0 0; }
.v-sms-voies span{ font-size:12px; font-weight:600; padding:3px 9px; border-radius:20px; background:#e8f6ed; color:#166534; }
.v-sms-voies span.aucun{ background:#fdf0e6; color:#9a5b00; }
.v-sms-carte input[type=text]{ padding:9px 12px; border:1px solid var(--v-border); border-radius:8px; font:inherit; font-size:14px; font-weight:400; color:var(--v-ink); }

/* ---- Preparer le contrat ---- */
.v-cp .v-mp-carte{ max-width:900px; }
.v-cp-tete{ display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap; }
.v-cp-tete small{ display:block; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--v-ink-soft); }
.v-cp-tete b{ display:block; font-size:18px; margin:2px 0 4px; }
.v-cp-tete span{ font-size:13px; color:var(--v-ink-soft); }
.v-cp-ligne{ display:flex; flex-wrap:wrap; align-items:center; gap:10px 14px; margin:8px 0; }
.v-cp-lib{ font-size:13px; font-weight:600; color:var(--v-ink-soft); }
.v-cp-aide{ font-size:12.5px; color:var(--v-ink-soft); margin:8px 0 0; max-width:900px; }
.v-cp-grille{ display:grid; grid-template-columns:repeat(auto-fit, minmax(260px, 1fr)); gap:14px 18px; }
.v-cp-grille .large{ grid-column:1 / -1; }
.v-cp-grille input, .v-cp-grille select, .v-cp-grille textarea{ padding:9px 11px; border:1px solid var(--v-border); border-radius:8px; font:inherit; font-size:14px; font-weight:400; color:var(--v-ink); background:#fff; resize:vertical; }
.v-cp-grille small{ font-weight:400; font-size:11.5px; }
.v-cp .v-cl-actions{ max-width:900px; }
.v-fl-gris{ display:block; font-size:11.5px; color:var(--v-ink-soft); margin-top:2px; }
.v-nl-occ-champs{ grid-column:1 / -1; display:grid; grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); gap:12px 16px; padding:14px; border:1px dashed var(--v-border); border-radius:10px; background:#F7F9FB; }
.v-nl-occ-titre{ grid-column:1 / -1; margin:0 !important; font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--v-ink-soft); }

/* ---- Rappel de l'abonnement d'hebergement RMZ (bande rouge en haut du contenu) ---- */
.v-rmz-bande{ display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; margin:16px 24px 0; padding:12px 16px; background:#b42318; color:#fff; border-radius:10px; font-size:13.5px; line-height:1.5; box-shadow:0 2px 8px rgba(180,35,24,.25); }
.v-rmz-bande b{ color:#fff; }
.v-rmz-bande span{ white-space:nowrap; opacity:.9; }
.v-rmz-bande .v-rmz-wave{ flex:none; display:inline-flex; align-items:center; gap:8px; background:#fff; color:#1d1d6b !important; font-weight:700; text-decoration:none; padding:8px 14px; border-radius:8px; }
.v-rmz-bande .v-rmz-wave:hover{ background:#eef0ff; }
@media (max-width: 900px){ .v-rmz-bande{ margin:12px 12px 0; } }
.v-rmz-bande .v-wave-logo{ height:24px; width:24px; object-fit:cover; border-radius:5px; }

/* ---- Annexes et avenants du contrat (fiche locataire) ---- */
.v-fl-doc{ display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 8px; margin-bottom:6px; }
.v-fl-doc .v-fl-gris{ display:inline; margin:0; }
.v-fl-doc-suppr{ display:inline; margin:0; }
.v-fl-doc-suppr button{ all:unset; cursor:pointer; font-size:12.5px; color:#b42318; }
.v-fl-doc-suppr button:hover{ text-decoration:underline; }
.v-fl-avenant{ flex-basis:100%; font-size:12.5px; display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 4px; }
.v-fl-manque{ font-style:normal; color:#b54708; background:#fef0c7; border-radius:999px; padding:1px 8px; font-weight:600; }
.v-param-nombre{ display:inline-flex; align-items:center; gap:6px; font-weight:600; white-space:nowrap; }
.v-param-nombre input{ width:70px; text-align:right; padding:7px 9px; border:1px solid var(--v-border); border-radius:8px; font:inherit; }

/* ---- Paiements Wave a valider (page=pwave) ---- */
.v-pw-intro{ color:var(--v-ink-soft); font-size:13px; margin:0 0 12px; max-width:900px; line-height:1.5; }
.v-pw-table td{ vertical-align:top; }
.v-pw-table td small.v-fl-gris{ display:block; }
.v-pw-rouge{ color:#b42318; font-weight:700; }
.v-pw-valider{ display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin:0; }
.v-pw-montant{ width:110px; text-align:right; padding:7px 9px; border:1px solid var(--v-border); border-radius:8px; font:inherit; font-weight:700; }
.v-pw-valider select, .v-pw-rejet select{ padding:7px 8px; border:1px solid var(--v-border); border-radius:8px; font:inherit; font-size:12.5px; }
.v-pw-rejet{ margin-top:6px; font-size:12.5px; }
.v-pw-rejet summary{ cursor:pointer; color:#b42318; display:inline-block; }
.v-pw-rejet form{ display:flex; flex-wrap:wrap; gap:6px; margin:6px 0 0; }
.centre.v-pw{ max-width:1180px; }
.v-pw-table form.v-pw-valider{ display:flex; flex-direction:column; align-items:flex-start; gap:6px; }
.v-pw-recu{ display:flex; flex-direction:column; gap:3px; font-size:12px; font-weight:600; color:var(--v-ink-soft); }
.v-pw-note{ font-size:11.5px; color:#92400e; background:#fef6e4; border-radius:6px; padding:5px 8px; max-width:280px; line-height:1.4; }
.v-pw-calc{ font-size:12.5px; color:var(--v-ink-soft); }
.v-pw-calc b{ color:var(--v-primary-dark); }
/* ---- Date limite de paiement (delai exceptionnel) ---- */
.v-fl-delai{ display:inline-block; font-size:11px; font-weight:700; color:#92400e; background:#fef0c7; border-radius:999px; padding:1px 8px; margin-left:4px; }
.v-ce-form{ display:flex; flex-direction:column; gap:12px; }
.v-ce-choix{ display:flex; align-items:center; gap:10px; padding:12px 14px; border:1px solid var(--v-border); border-radius:10px; cursor:pointer; font-size:14px; }
.v-ce-choix:has(input:checked){ border-color:var(--v-primary); background:var(--v-primary-light); }
.v-ce-choix select{ padding:5px 8px; border:1px solid var(--v-border); border-radius:8px; font:inherit; margin:0 4px; }
.v-ce-motif{ display:flex; flex-direction:column; gap:5px; font-size:13px; font-weight:600; color:var(--v-ink-soft); }
.v-ce-motif input{ padding:9px 11px; border:1px solid var(--v-border); border-radius:8px; font:inherit; font-weight:400; color:var(--v-ink); }

/* ---- Fiche proprietaire (page=fpro) ---- */
.v-fp-entete{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:16px; }
.v-fp-entete h2{ margin:0 0 4px; font-size:22px; }
.v-fp-entete p{ margin:0; color:var(--v-ink-soft); font-size:13px; }
.v-fp-kpis{ display:flex; gap:22px; flex-wrap:wrap; }
.v-fp-kpis div{ display:flex; flex-direction:column; }
.v-fp-kpis small{ font-size:11px; text-transform:uppercase; letter-spacing:.4px; color:var(--v-ink-soft); }
.v-fp-kpis b{ font-size:18px; } .v-fp-kpis span{ font-size:11.5px; color:var(--v-ink-soft); }
.v-fp-alerte{ margin:0 0 10px; padding:8px 12px; border-radius:8px; background:#fef0c7; color:#92400e; font-size:13px; font-weight:600; }
.v-fp-nav{ font-size:12.5px; }
.v-fp-chiffres{ display:grid; grid-template-columns:repeat(3, 1fr); gap:10px; margin:6px 0 10px; }
.v-fp-chiffres div{ background:var(--v-bg, #F4F7F9); border-radius:10px; padding:10px 12px; display:flex; flex-direction:column; gap:2px; }
.v-fp-chiffres small{ font-size:11.5px; color:var(--v-ink-soft); }
.v-fp-chiffres b{ font-size:18px; color:var(--v-ink); }
.v-fp-chiffres span{ font-size:11.5px; color:var(--v-ink-soft); }
.v-fp-chiffres .vert b{ color:var(--v-primary-dark); } .v-fp-chiffres .rouge b{ color:#b42318; }
.v-fp-chiffres .principal{ background:var(--v-primary-light); } .v-fp-chiffres .principal b{ color:var(--v-primary-dark); font-size:20px; }
.v-fp-dep{ margin-top:6px; }
.v-fp-doc-form{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-top:12px; }
.v-fp-doc-form input[type="text"]{ flex:1 1 220px; padding:8px 10px; border:1px solid var(--v-border); border-radius:8px; font:inherit; }
.v-fp-doc-form label{ font-size:12.5px; color:var(--v-ink-soft); display:flex; gap:5px; align-items:center; }
@media (max-width: 800px){ .v-fp-chiffres{ grid-template-columns:repeat(2, 1fr); } }
/* ---- Modifier la fiche proprietaire ---- */
.v-pm-seg{ margin-bottom:12px; }
.v-pm-grille{ display:grid; grid-template-columns:repeat(3, 1fr); gap:10px 14px; }
.v-pm-grille{ align-items:end; }
.v-pm-grille label{ display:flex; flex-direction:column; justify-content:flex-end; gap:4px; font-size:12.5px; font-weight:600; color:var(--v-ink-soft); }
.v-pm-grille label input, .v-pm-grille label select{ height:40px; box-sizing:border-box; }
.v-pm-grille label.large{ grid-column:span 2; }
.v-pm-grille input, .v-pm-grille select, .v-pm-notes{ padding:8px 10px; border:1px solid var(--v-border); border-radius:8px; font:inherit; font-weight:400; color:var(--v-ink); }
.v-pm-notes{ width:100%; box-sizing:border-box; }
.v-pm h4{ margin:16px 0 8px; font-size:13px; text-transform:uppercase; letter-spacing:.4px; color:var(--v-ink-soft); }
@media (max-width: 800px){ .v-pm-grille{ grid-template-columns:1fr; } .v-pm-grille label.large{ grid-column:auto; } }
.v-pm-regles{ display:flex; flex-direction:column; gap:8px; margin:6px 0 12px; }
.v-pm-regles label{ display:flex; gap:8px; align-items:center; font-size:13.5px; }

/* V2 : reversements aux proprietaires */
.v-rv-table td small, .v-rs-calc td small{ display:block; }
.v-rv-table .v-fl-btn{ padding:6px 12px; font-size:12.5px; margin-right:6px; }
.v-rv-suivi{ display:flex; flex-wrap:wrap; align-items:center; gap:10px; }
.v-rv-suivi p{ flex-basis:100%; margin:0; }
.v-rv-suivi input[type=month], .v-rs-periode input[type=month]{ height:36px; padding:0 8px; border:1px solid var(--v-line, #D9E2E9); border-radius:8px; margin-left:6px; }
.v-rs-periode{ display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin:4px 0 12px; }
.v-rs-calc td.v-rs-agence{ color:#98A4AE; text-decoration:line-through; }
.v-rs-calc tr.v-rs-total td{ font-weight:700; border-top:2px solid var(--v-line, #D9E2E9); }
.v-fp-rev{ margin-top:4px; }
tr.v-fp-annule td{ color:#98A4AE; }
tr.v-fp-annule td b{ text-decoration:line-through; }
.v-fp .v-mp-actions{ display:flex; flex-wrap:wrap; gap:8px; margin:6px 0 12px; }
@media (max-width:760px){ .v-rv-table, .v-rs-calc{ display:block; overflow-x:auto; } }
.v-ct.v-rs{ max-width:1180px; }
.v-rs-calc{ font-size:13px; }
.v-rs-calc td:first-child{ white-space:nowrap; }
.v-rs-calc td.num, .v-rs-calc th.num{ white-space:nowrap; }

/* V2 : assainissement des caisses proprietaires */
.v-as-liste td small, .v-as-table td small{ display:block; }
.v-as-2col{ display:grid; grid-template-columns:1.2fr 1fr; gap:14px; align-items:start; }
.v-as-2col > .v-mp-carte{ margin:0; }
.v-as-est td{ padding:7px 8px; }
.v-as-est td small{ display:block; }
.v-as-est tr.v-as-agence td{ color:#98A4AE; }
.v-as-taux{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-top:8px; font-size:13px; }
.v-as-taux input{ height:32px; width:60px; padding:0 6px; border:1px solid var(--v-line, #D9E2E9); border-radius:8px; }
.v-as-indice{ display:inline-block; margin:2px 4px 2px 0; padding:2px 8px; border-radius:10px; background:#fff4e0; color:#8a5300; font-size:11.5px; }
.v-as-table select, .v-as-table input[type=month]{ height:34px; padding:0 6px; border:1px solid var(--v-line, #D9E2E9); border-radius:8px; max-width:210px; }
.v-as-table tr.v-as-ok td:first-child{ box-shadow:inset 3px 0 0 #1f9d55; }
.v-as-actions{ justify-content:flex-end; margin-top:12px; }
.v-as .v-mp-actions{ display:flex; flex-wrap:wrap; gap:8px; }
@media (max-width:900px){ .v-as-2col{ grid-template-columns:1fr; } .v-as-table, .v-as-liste{ display:block; overflow-x:auto; } }
@media print{ .v-as-taux, .v-as-actions, .v-as form .v-mp-actions{ display:none; } }

/* V2 : espace proprietaire (fiche) */
.v-fp-espace{ display:grid; grid-template-columns:1fr 1.3fr; gap:20px; }
.v-fp-acces{ display:grid; grid-template-columns:1fr 1fr; gap:10px; align-items:end; margin-top:10px; }
.v-fp-acces label{ display:flex; flex-direction:column; gap:4px; font-size:12.5px; color:var(--v-ink-soft); }
.v-fp-acces input{ height:38px; padding:0 10px; border:1px solid var(--v-line, #D9E2E9); border-radius:8px; }
.v-fp-acces button{ grid-column:1/-1; justify-self:start; }
.v-fp-acces-etat{ margin-top:8px; }
.v-fp-messages h4{ margin:0 0 8px; }
.v-fp-fil{ display:flex; flex-direction:column; gap:8px; max-height:340px; overflow-y:auto; padding:8px; background:var(--v-bg, #F4F7F9); border-radius:10px; }
.v-fp-bulle{ max-width:85%; padding:8px 12px; border-radius:12px; font-size:13.5px; line-height:1.4; background:#fff; border:1px solid var(--v-line, #D9E2E9); }
.v-fp-bulle.agent{ align-self:flex-end; background:#e3f6ea; border-color:#bfe6cc; }
.v-fp-bulle small{ display:block; font-size:11px; color:var(--v-ink-soft); margin-top:3px; }
.v-fp-repondre{ display:flex; flex-direction:column; gap:8px; margin-top:8px; }
.v-fp-repondre textarea{ width:100%; box-sizing:border-box; border:1px solid var(--v-line, #D9E2E9); border-radius:8px; padding:8px 10px; font:inherit; resize:vertical; }
.v-fp-repondre button{ align-self:flex-end; }
.v-pmsg-table td small{ display:block; }
@media (max-width:900px){ .v-fp-espace{ grid-template-columns:1fr; } }
.v-pm-agence{ display:flex; flex-direction:row; gap:10px; align-items:flex-start; font-size:14px; cursor:pointer; } .v-pm-agence input{ margin-top:3px; }

/* V2 : couleurs GDS sur les anciennes cellules teintees de vert (pages V1) */
.centre td[bgcolor="#DEF7D7"], .centre td[bgcolor="#def7d7"]{ background:var(--v-primary-light) !important; }
/* logo GDS dans la barre du haut (pastille blanche : le logo est sur fond blanc) */
.v-entete-logo{ display:inline-flex !important; align-items:center; gap:10px; }
.v-entete-logo-img{ height:34px; width:auto; background:#fff; border-radius:6px; padding:2px 4px; }
/* messages des proprietaires : nouveau message */
.v-pmsg-nouveau{ display:grid; grid-template-columns:minmax(220px, 1fr) 2fr auto; gap:12px; align-items:end; }
.v-pmsg-nouveau label{ display:flex; flex-direction:column; gap:4px; font-size:12.5px; color:var(--v-ink-soft); }
.v-pmsg-nouveau select{ height:40px; padding:0 8px; border:1px solid var(--v-border); border-radius:8px; }
.v-pmsg-nouveau textarea{ border:1px solid var(--v-border); border-radius:8px; padding:8px 10px; font:inherit; resize:vertical; }
.v-fp-actions-haut{ display:inline-flex; gap:8px; flex-wrap:wrap; }
@media (max-width:900px){ .v-pmsg-nouveau{ grid-template-columns:1fr; } }


/* =========================================================================
   TELEPHONE ET PETITE TABLETTE (900 px et moins)
   - le menu de gauche devient un tiroir, ouvert par le bouton a trois traits ;
   - le contenu occupe toute la largeur ;
   - un tableau trop large defile dans sa carte, jamais toute la page ;
   - champs en 16 px : le telephone ne zoome plus tout seul quand on tape.
   ========================================================================= */
.v-burger, .v-voile{ display:none; }
@media (max-width: 900px){
  body.v-app{ height:auto; min-height:100%; }
  .cadre_haut{ padding:8px 10px !important; }
  .v-entete{ gap:8px; }
  .v-burger{ display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; width:42px; height:42px;
    padding:0; border:0; border-radius:10px; background:rgba(255,255,255,.16); color:#fff; cursor:pointer; }
  .v-burger:active{ background:rgba(255,255,255,.3); }
  .v-entete-logo{ font-size:0 !important; gap:0 !important; }
  .v-entete-logo-img{ height:30px; }
  .v-entete .v-rech{ min-width:0; }
  .v-rech-raccourci{ display:none !important; }
  .v-rech input[type="search"]{ font-size:16px !important; }
  .v-profil-bouton > svg{ display:none; }

  body.v-app > .cadre_gauche{
    position:fixed; top:0; left:0; bottom:0;
    width:84vw !important; max-width:310px;
    height:auto !important; min-height:0;
    float:none; overflow-y:auto; overscroll-behavior:contain;
    box-sizing:border-box; padding-top:18px !important;
    transform:translateX(-105%); transition:transform .22s ease;
    box-shadow:0 0 40px rgba(15,30,45,.35);
    z-index:300;
  }
  body.v-menu-ouvert > .cadre_gauche{ transform:none; }
  .v-voile{ display:block; position:fixed; top:0; right:0; bottom:0; left:0; background:rgba(15,30,45,.45);
    opacity:0; pointer-events:none; transition:opacity .2s; z-index:250; }
  body.v-menu-ouvert .v-voile{ opacity:1; pointer-events:auto; }
  body.v-menu-ouvert{ overflow:hidden; }
  .bloc_menu_items a{ padding-top:4px; padding-bottom:4px; }

  .centre{ max-width:none; margin:12px 0 20px !important; padding:0 10px; box-sizing:border-box; }
  .centre .content{ padding:14px; }
  .titre p{ font-size:18px !important; }
  .centre img{ max-width:100%; height:auto; }
  .centre input[type="text"], .centre input[type="number"], .centre input[type="date"], .centre input[type="email"],
  .centre input[type="tel"], .centre input[type="password"], .centre input[type="search"], .centre select, .centre textarea{
    font-size:16px !important; max-width:100%; box-sizing:border-box;
  }
}

/* tableaux de liste presentes en fiches sur telephone (classe posee par v_mobile.js) */
@media (max-width: 900px){
  .centre table.v-pile, .centre table.v-pile > tbody, .centre table.v-pile > tfoot{ display:block; width:100% !important; }
  .centre table.v-pile > thead, .centre table.v-pile tr.v-pile-entete{ display:none !important; }
  .centre table.v-pile tr{ display:block; background:#fff; border:1px solid var(--v-border); border-radius:12px;
    padding:8px 12px; margin:0 0 10px; box-shadow:0 1px 2px rgba(15,30,45,.05); }
  .centre table.v-pile > tfoot tr{ background:var(--v-primary-light); }
  .centre table.v-pile td, .centre table.v-pile th{ display:flex !important; justify-content:space-between; align-items:center; gap:12px;
    width:auto !important; min-width:0 !important; border:none !important; border-bottom:1px dashed #E3EAF0 !important;
    padding:7px 0 !important; text-align:right !important; white-space:normal !important; background:transparent !important; height:auto !important; }
  .centre table.v-pile td:last-child, .centre table.v-pile th:last-child{ border-bottom:none !important; }
  .centre table.v-pile td[data-lib]:not([data-lib=""])::before{ content:attr(data-lib); flex:0 0 42%; text-align:left;
    font-size:12px; font-weight:600; color:var(--v-ink-soft); text-transform:none; letter-spacing:0; }
  .centre table.v-pile td:first-child{ font-weight:600; }
  .centre table.v-pile td.v-pile-plein{ display:block !important; text-align:left !important; }
  .centre table.v-pile td.v-pile-plein::before{ display:none; }
  .centre table.v-pile td.v-pile-vide{ display:none !important; }
}
@media (max-width: 900px){
  .centre table.v-pile .v-pile-val{ flex:1 1 auto; min-width:0; display:flex; flex-wrap:wrap; justify-content:flex-end; align-items:center; gap:6px; text-align:right; }
  .centre table.v-pile .v-pile-val > *{ max-width:100%; }
  .centre table.v-pile td.v-pile-plein .v-pile-val{ justify-content:flex-start; text-align:left; }
  /* premiere colonne (nom, reference...) : titre de la fiche, sans libelle */
  .centre table.v-pile td.v-pile-titre{ font-size:15px; padding-bottom:9px !important; }
  .centre table.v-pile td.v-pile-titre::before{ display:none !important; }
  .centre table.v-pile td.v-pile-titre .v-pile-val{ justify-content:flex-start; text-align:left; }
  .centre select{ height:auto !important; min-height:40px; line-height:1.25 !important; }
}
@media (max-width: 900px){
  /* un champ ou un texte long (nom de proprietaire, adresse, e-mail) ne pousse plus la carte hors de l'ecran */
  .centre label, .centre form > *, .centre dl, .centre dd, .centre dt,
  .centre [class*="grille"] > *, .centre [class*="mise"] > *{ min-width:0; }
  .centre dd, .centre dt{ overflow-wrap:anywhere; }
  .centre select, .centre textarea{ max-width:100% !important; }
  .v-pmsg-nouveau select, .v-pmsg-nouveau textarea, .v-pmsg-nouveau .v-fl-btn{ width:100%; box-sizing:border-box; }
  .centre .v-fl-btn{ max-width:100%; white-space:normal; }
}

/* Mes batiments : cartes bien detachees du fond, meme sans survol (liseré bleu GDS, ombre) ; plus marquees au survol */
.v-bt-carte{ border:1px solid #C9DAE5; border-top:4px solid var(--v-primary); box-shadow:0 2px 8px rgba(19,91,124,.12); transition:box-shadow .15s, transform .15s, border-color .15s; }
.v-bt-carte:hover{ border-color:var(--v-primary); box-shadow:0 10px 26px rgba(19,91,124,.22); transform:translateY(-2px); }
@media (hover:none){ .v-bt-carte:hover{ transform:none; } }

/* Journal d'activite (admin) */
.v-ac-filtres{ display:flex; flex-wrap:wrap; align-items:flex-end; gap:10px 14px; }
.v-ac-filtres .v-tk-filtres{ width:100%; margin:0; }
.v-ac-filtres label{ display:flex; flex-direction:column; gap:4px; font-size:12.5px; color:var(--v-ink-soft); }
.v-ac-table td small, .v-ac-table td.num small{ display:block; }
.v-ac-table tr.v-ac-inactif td{ color:var(--v-ink-soft); background:#FAFBFC; }
.v-ac-table tr.v-ac-inactif td b{ font-weight:600; }
.v-ac-journal td.v-ac-quand{ white-space:nowrap; }
.v-ac-journal td.v-ac-det{ color:var(--v-ink-soft); font-size:12.5px; }
.v-ac-journal tr.v-ac-ko td{ background:#FDF1F0; }
.v-ac-journal tr.v-ac-post td:nth-child(3){ font-weight:600; }
.v-ac-journal small.v-ac-err{ display:block; font-size:11.5px; color:#8A2A1F; max-width:420px; overflow-wrap:anywhere; }

/* avertissement une minute avant la deconnexion pour inactivite */
.v-session-alerte{ position:fixed; left:50%; bottom:20px; transform:translateX(-50%); z-index:400; max-width:calc(100% - 32px); box-sizing:border-box;
  background:#1C2B3A; color:#fff; border-left:4px solid #DB6119; border-radius:10px; padding:12px 16px; font-size:14px; box-shadow:0 10px 30px rgba(15,30,45,.3); }
