/* ============================================================
   GVS+ — design system v2.0
   Le logo GVS+ superpose déjà bleu + vert + un accent chaud : ce ne sont
   pas des couleurs de marque abstraites, ce sont celles des logiciels
   enseignés (Word, Excel, PowerPoint/Publisher). v2.0 assume ce lien au
   lieu de le laisser accidentel, et garde l'identité "carnet technique"
   (mono, curseur qui clignote, fiches) déjà présente en v1.
   ============================================================ */
:root{
  --ink:#0B1330;
  --ink-soft:#3C4874;
  --paper:#F2F6FC;
  --paper-raised:#FFFFFF;
  --line:#E1E8F7;
  --muted:#69739A;

  --blue:#0B3FA8;      /* Word — navigation, identité */
  --blue-2:#2E5FD9;
  --green:#0E9350;     /* Excel — succès, synchro, disponibilité */
  --green-2:#22B96A;
  --amber:#F2A900;     /* PowerPoint — appel à l'action */
  --amber-2:#FFC531;
  --plum:#6D3FC2;      /* Publisher — réseaux, discret */
  --plum-2:#8B5CF6;
  --red:#DC2626;

  /* Couleur exacte extraite du logo GVS+, utilisée pour l'état "icône
     active/cliquée" du menu — bleu foncé en clair, vert foncé en sombre. */
  --icon-active:#001D92;
  --icon-active-light:#0B3FA8;

  --radius:18px;
  --radius-sm:12px;
  --shadow:0 10px 28px rgba(11,19,48,.09);
  --shadow-sm:0 4px 14px rgba(11,19,48,.07);

  --font-display:'Space Grotesk',sans-serif;
  --font-body:'Inter',sans-serif;
  --font-mono:'IBM Plex Mono',monospace;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
img{max-width:100%}

.logo-watermark{
  position:fixed;inset:0;border:0;background:none;padding:0;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
}
.logo-watermark img{
  width:min(76vw,440px);height:auto;opacity:.05;
  user-select:none;-webkit-user-drag:none;pointer-events:none;
}
body.dark .logo-watermark img{opacity:.045;filter:brightness(1.6)}

.icon-label{display:inline-flex;align-items:center;gap:7px}
.icon-label svg{width:16px;height:16px;flex:none}
.status-dot{width:8px;height: 20px;border-radius:50%;flex:none;background:#B9C4E0}
.status-dot.on{background:var(--green);box-shadow:0 0 0 3px rgba(14,147,80,.18)}
.status-dot.off{background:#B9C4E0}
h3.icon-label svg{width:15px;height:15px}
.btn.icon-label svg{width:16px;height:16px}
button.icon-label,a.icon-label{justify-content:center}

html,body{margin:0;padding:0;overscroll-behavior-y:none}
html{--gvs-header-h:calc(clamp(78px,27vw,138px) + 108px)}
html{height:100%}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-body);
  -webkit-font-smoothing:antialiased;
  padding-bottom:24px;
  touch-action:manipulation;
  min-height:100vh;
  min-height:100dvh;
}
button{ -webkit-user-select:none;user-select:none;-webkit-touch-callout:none }
a{ -webkit-user-select:text;user-select:text }
main.wrap, main.wrap *{ -webkit-user-select:text;user-select:text }
input,textarea,select{-webkit-user-select:text;user-select:text}
body.standalone .topbar{padding-top:calc(22px + env(safe-area-inset-top))}
h1,h2,h3{font-family:var(--font-display);margin:0;letter-spacing:-.01em}
a{color:inherit;transition:filter .15s ease,opacity .15s ease}
a:active{filter:brightness(1.3)}
button{font-family:var(--font-body)}
.hidden{display:none!important}
.wrap{max-width:720px;margin:0 auto;padding:calc(74px + env(safe-area-inset-top)) 18px 0}

.site-admin-photo-footer{
  display:flex;align-items:center;gap:10px;justify-content:center;
  margin:26px 0 18px;padding:12px 16px;
  border-top:1px solid rgba(0,0,0,.08);
}
.site-admin-photo-footer img{
  width:34px;height:34px;border-radius:50%;object-fit:cover;
  box-shadow:var(--shadow-sm,0 1px 4px rgba(0,0,0,.15));
}
.site-admin-photo-footer span{font-size:12.5px;color:var(--muted,#777)}
.site-admin-photo-footer.hidden{display:none!important}

/* ---------- bouton fermer / cloche ---------- */
.closeapp-btn{
  position:relative;width:36px;height:36px;border-radius:50%;border:0;cursor:pointer;
  background:var(--paper-raised);color:#E63946;font-weight:800;
  display:flex;align-items:center;justify-content:center;
  box-shadow:var(--shadow-sm);
  transition:transform .15s ease,filter .15s ease;
}
.closeapp-btn svg{width:19px;height:19px}
.closeapp-btn:active{transform:scale(.9);filter:brightness(1.25)}
.notifbell{
  position:relative;
  width:36px;height:36px;border-radius:50%;border:0;cursor:pointer;
  background:var(--paper-raised);color:var(--ink);
  display:flex;align-items:center;justify-content:center;
  box-shadow:var(--shadow-sm);
  transition:transform .15s ease,filter .15s ease;
}
.notifbell svg{width:19px;height:19px}
.notifbell:active{transform:scale(.9);filter:brightness(1.25)}
.notifbell .navbadge{position:absolute;top:-4px;right:-4px}

/* ---------- logo (page Compte uniquement) ---------- */
.logo{
  height:240px;width:auto;max-width:80vw;display:block;
  object-fit:contain;background:transparent;
}
.logo-animated{animation:logoPulse 2.6s ease-in-out infinite}
@keyframes logoPulse{
  0%,100%{transform:scale(1)}
  50%{transform:scale(1.06)}
}

/* ---------- auth (connexion / inscription compte) ---------- */
.authtabs{display:flex;gap:8px;margin-bottom:16px}
.authtab{flex:1;padding:11px;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.45);background:linear-gradient(180deg,#3B9EFF,#0066FF);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#fff;font-weight:600;font-family:var(--font-body);cursor:pointer;position:relative;overflow:hidden;box-shadow:0 3px 12px rgba(0,102,255,.35),inset 0 1px 0 rgba(255,255,255,.45);transition:background .15s ease,color .15s ease,border-color .15s ease,box-shadow .15s ease,transform .1s ease}
.authtab::before{content:'';position:absolute;top:0;left:0;right:0;height:52%;background:linear-gradient(180deg,rgba(255,255,255,.5),rgba(255,255,255,0));pointer-events:none}
.authtab:active{transform:scale(.97)}
.authtab.active{border-color:rgba(255,255,255,.75);box-shadow:0 5px 18px rgba(0,102,255,.5),inset 0 1px 0 rgba(255,255,255,.55)}
.autherr{color:var(--red);font-size:13px;margin-top:6px;min-height:16px}
.error{color:var(--red);font-size:13px;margin-top:6px;min-height:16px}

/* ---------- bloc titre (page Compte) ---------- */
.authbrand{display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;margin:4px 0 22px}
.authbrand h2{font-size:20px}
.zoom-text{animation:zoomText 2.4s ease-in-out infinite}
@keyframes zoomText{
  0%,100%{transform:scale(1)}
  50%{transform:scale(1.08)}
}

/* ---------- Google Forms intégré (admin uniquement) ---------- */
.gform-embed{margin-top:10px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff}
.gform-embed iframe{display:block;width:100%;height:520px;border:0}

/* ---------- entête (sans logo ni texte, garde le padding) ---------- */
.topbar{padding:14px 0 6px}
.brand h1{display:none}
.hero{margin-top:22px;position:relative;z-index:1;text-align:center}
.hero .eyebrow{
  font-family:var(--font-mono);font-size:12px;color:var(--green);
  display:flex;align-items:center;justify-content:center;gap:6px;margin-bottom:8px;
}
.cursor{display:inline-block;width:8px;height:14px;background:var(--amber);animation:blink 1s step-end infinite}
@keyframes blink{50%{opacity:0}}
.hero h2{font-size:25px;line-height:1.25;max-width:20ch;margin-left:auto;margin-right:auto}
.hero p{opacity:.82;margin:8px auto 0;line-height:1.5;font-size:14.5px;max-width:36ch}

/* ---------- main / cards ---------- */
/* Valeur de secours généreuse tant que le JS n'a pas mesuré la hauteur
   réelle du menu fixe (adjustLayoutForNav) : évite que le début de
   chaque page/onglet soit caché sous le menu au premier affichage. */
main.wrap{padding-top:calc(var(--gvs-header-h,150px) + env(safe-area-inset-top))}
.page{display:none}
.page.active{display:block;animation:fade .25s ease}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

.card{
  position:relative;
  background:var(--paper-raised);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:18px;
  box-shadow:var(--shadow);
  margin-bottom:14px;
}
.section-title{display:flex;align-items:baseline;justify-content:space-between;margin:14px 0 12px}
/* Plein écran (double-clic) : le menu fixe est déjà re-mesuré par le JS,
   on resserre un peu plus l'espace au-dessus des titres de section */
body.gvs-fs-active .section-title{margin-top:6px}
.dashboard-section-title{position:relative;min-height:32px;align-items:center;justify-content:center}
.dashboard-section-title h2{width:100%;margin:0;text-align:center}
.dashboard-section-title span{position:absolute;right:0;top:50%;transform:translateY(-50%)}
.dashboard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}
.dash-card{
  background:var(--paper-raised);border:1px solid var(--line);border-radius:16px;
  padding:14px 10px;text-align:center;box-shadow:var(--shadow-sm);
}
.dash-icon{
  width:34px;height:34px;margin:0 auto 8px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,rgba(11,63,168,.1),rgba(14,147,80,.12));
  color:var(--blue);
}
.dash-icon svg{width:17px;height:17px}
.dash-value{font-size:22px;font-weight:800;color:var(--blue);font-family:var(--font-display);line-height:1.1}
.dash-label{font-size:10.5px;color:var(--muted);margin-top:3px;line-height:1.25}
body.dark .dash-icon{background:linear-gradient(135deg,rgba(124,156,255,.16),rgba(74,222,128,.14));color:#8FADFF}
body.dark .dash-value{color:#8FADFF}
@media (max-width:380px){
  .dashboard-grid{grid-template-columns:repeat(2,1fr)}
}

/* ---------- avatar de profil (photo ou initiales) ---------- */
.avatar-wrap{position:relative;width:92px;height:92px;margin:0 auto}
.avatar{
  width:92px;height:92px;border-radius:50%;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--blue),var(--blue-2));
  color:#fff;font-size:30px;font-weight:800;font-family:var(--font-display);
  border:3px solid var(--paper-raised);box-shadow:0 6px 18px rgba(11,63,168,.25);
}
.avatar img{width:100%;height:100%;object-fit:cover;display:block}
.avatar-edit{
  position:absolute;right:-2px;bottom:-2px;width:32px;height:32px;border-radius:50%;
  border:2px solid var(--paper-raised);background:var(--green);color:#fff;cursor:pointer;
  display:flex;align-items:center;justify-content:center;box-shadow:0 3px 10px rgba(0,0,0,.25);
  transition:transform .15s ease;
}
.avatar-edit svg{width:15px;height:15px}
.avatar-edit:active{transform:scale(.88)}

/* ---------- statut « en ligne » façon Facebook : petit rond vert
   posé sur la photo de profil, + libellé texte vert ---------- */
.avatar-wrap-sm{position:relative;display:inline-flex;flex:none}
.avatar-status-dot{
  position:absolute;right:-1px;bottom:-1px;width:16px;height: 20px;border-radius:50%;
  background:var(--green);border:3px solid var(--paper-raised,#fff);
  box-shadow:0 1px 3px rgba(0,0,0,.25);display:none;z-index:2;
}
.avatar-status-dot.show{display:block}
.avatar-status-dot.left{right:auto;left:-1px}
/* Liste « Compte d'utilisateur » de l'administration : pastille toujours visible,
   verte en ligne / rouge hors ligne (contrairement au badge « façon Facebook »
   utilisé ailleurs dans l'app, qui ne s'affiche que si en ligne). */
#userList .user-admin-card .avatar-status-dot.offline{background:#EF4444}
body.dark #userList .user-admin-card .avatar-status-dot.offline{background:#F87171}
.avatar-status-dot.sm{width:13px;height: 20px;border-width:2px}
.avatar-status-dot.xs{width:11px;height: 20px;border-width:2px}
.online-dot{color:var(--green);font-weight:700;font-size:12.5px;display:inline-flex;align-items:center;gap:4px}
.online-dot.hidden{display:none!important}
.online-dot .dot{width:7px;height:7px;border-radius:50%;background:currentColor}
.insc-online-dot{margin-left:6px;font-size:11.5px}


.profile-details{display:flex;flex-direction:column;gap:11px}
.profile-detail-row{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid var(--line)}
.profile-detail-row:first-child{border-top:0;padding-top:0}
.profile-detail-row span:first-child{color:var(--muted);font-size:13px}
.profile-detail-row span:last-child{font-weight:700;font-size:13.5px;text-align:right}
.section-title h2{font-size:18px;color:var(--ink-soft);font-weight:600}
.section-title span{font-family:var(--font-mono);font-size:11px;color:var(--muted)}

.quickgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}
.qcard{
  position:relative;overflow:hidden;
  background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-sm);
  padding:14px;box-shadow:var(--shadow);
}
/* Signature : coin plié façon fiche d'atelier — un seul geste décoratif,
   réutilisé nulle part ailleurs dans l'appli. */
.qcard::after{
  content:"";position:absolute;top:0;right:0;width:0;height:0;
  border-style:solid;border-width:0 20px 20px 0;
  border-color:transparent var(--paper) transparent transparent;
  filter:drop-shadow(-1px 1px 1px rgba(11,19,48,.12));
}
body.dark .qcard::after{border-color:transparent #0B1020 transparent transparent}
.qcard .qicon{
  width:44px;height:44px;border-radius:13px;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,rgba(11,63,168,.1),rgba(14,147,80,.12));
  color:var(--blue);
}
/* Animation légère et professionnelle de toutes les icônes de l'accueil */
.qcard .qicon{animation:gvsHomeIconFloat 3.6s ease-in-out infinite;transform-origin:center;will-change:transform,box-shadow}
.qcard:hover .qicon{animation-duration:1.1s;transform:translateY(-2px) scale(1.05)}
.qcard .qicon svg{width:22px;height:22px}
.qcard:nth-child(2n) .qicon{animation-delay:.35s}
.qcard:nth-child(3n) .qicon{animation-delay:.7s}
/* Administration : icônes professionnelles, nettes et totalement statiques. */
#admin .admin-qcard .qicon{
  animation:none!important;
  transform:none!important;
  will-change:auto!important;
  transition:none!important;
  background:linear-gradient(145deg,rgba(18,54,184,.10),rgba(21,159,122,.10));
  color:#1236b8;
  border:1px solid rgba(18,54,184,.10);
  box-shadow:0 4px 12px rgba(18,54,184,.07);
}
#admin .admin-qcard:hover .qicon,
#admin .admin-qcard:nth-child(2n) .qicon,
#admin .admin-qcard:nth-child(3n) .qicon{
  animation:none!important;
  transform:none!important;
}
#admin .admin-qcard .qicon svg{width:23px;height:23px;stroke-width:1.9}
body.dark #admin .admin-qcard .qicon{
  background:linear-gradient(145deg,rgba(124,156,255,.16),rgba(74,222,128,.13));
  color:#b9d0ff;
  border-color:rgba(124,156,255,.16);
  box-shadow:0 4px 14px rgba(0,0,0,.22);
}
@keyframes gvsHomeIconFloat{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-2px) scale(1.035)}}
body.dark .qcard .qicon{background:linear-gradient(135deg,rgba(124,156,255,.16),rgba(74,222,128,.14));color:#8FADFF}
.qcard h3{font-size:14.5px;margin-top:8px}
.qcard p{font-size:12.5px;color:var(--muted);margin:5px 0 10px;line-height:1.4}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  border:1px solid rgba(255,255,255,.45);border-radius:13px;padding:12px 16px;font-weight:700;font-size:14px;
  background:linear-gradient(180deg,#3B9EFF,#0066FF);color:#fff;cursor:pointer;text-decoration:none;
  position:relative;overflow:hidden;
  box-shadow:0 0 7px rgba(0,102,255,.55),0 0 18px rgba(0,102,255,.34),inset 0 1px 0 rgba(255,255,255,.5);
  transition:transform .15s ease,box-shadow .15s ease,filter .12s ease,background .15s ease,color .15s ease;
}
.btn::before{content:'';position:absolute;top:0;left:0;right:0;height:52%;background:linear-gradient(180deg,rgba(255,255,255,.5),rgba(255,255,255,0));pointer-events:none}
.btn.ghost::before{content:none}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:scale(.97);filter:brightness(1.12)}
body.dark .btn{background:linear-gradient(180deg,#8AF0B4,#34D399);color:#064E3B;border-color:rgba(255,255,255,.3);box-shadow:0 0 7px rgba(74,222,128,.62),0 0 18px rgba(52,211,153,.4),inset 0 1px 0 rgba(255,255,255,.42)}
.btn.amber,.btn.teal,.btn.light,.btn.like-btn,.btn.logout-light{background:linear-gradient(180deg,#3B9EFF,#0066FF);color:#fff;border:1px solid rgba(255,255,255,.45);box-shadow:0 0 7px rgba(0,102,255,.55),0 0 18px rgba(0,102,255,.34),inset 0 1px 0 rgba(255,255,255,.5)}
body.dark .btn.amber,body.dark .btn.teal,body.dark .btn.light,body.dark .btn.like-btn,body.dark .btn.logout-light{background:linear-gradient(180deg,#8AF0B4,#34D399);color:#064E3B;border-color:rgba(255,255,255,.3);box-shadow:0 0 7px rgba(74,222,128,.62),0 0 18px rgba(52,211,153,.4),inset 0 1px 0 rgba(255,255,255,.42)}

/* GVS+ — boutons d'accès : bleu lumineux en mode clair, vert clair lumineux en mode sombre. */
.btn.access-btn{background:linear-gradient(180deg,#3B9EFF,#0066FF)!important;color:#fff!important;border-color:rgba(255,255,255,.55)!important;box-shadow:0 0 7px rgba(0,102,255,.55),0 0 18px rgba(0,102,255,.34),inset 0 1px 0 rgba(255,255,255,.5)!important}
body.dark .btn.access-btn{background:linear-gradient(180deg,#8AF0B4,#34D399)!important;color:#064E3B!important;border-color:rgba(255,255,255,.35)!important;box-shadow:0 0 7px rgba(74,222,128,.62),0 0 18px rgba(52,211,153,.4),inset 0 1px 0 rgba(255,255,255,.42)!important}

/* Tous les boutons de suppression sont rouges et restent rouges dans les deux thèmes. */
.btn.red{background:linear-gradient(180deg,#ff5b5b,#dc2626)!important;color:#fff!important;border-color:rgba(255,255,255,.58)!important;box-shadow:0 0 7px rgba(220,38,38,.62),0 0 20px rgba(220,38,38,.38),inset 0 1px 0 rgba(255,255,255,.48)!important}
.btn.red:hover{background:linear-gradient(180deg,#ff6b6b,#b91c1c)!important;box-shadow:0 0 9px rgba(220,38,38,.72),0 0 23px rgba(220,38,38,.44),inset 0 1px 0 rgba(255,255,255,.5)!important}

/* Retours / Quitter : rouge lumineux dans les deux thèmes. */
.gvs-return-btn,.btn.gvs-return-btn,.link-btn.gvs-return-btn{background:linear-gradient(180deg,#ff5b5b,#dc2626)!important;color:#fff!important;border:1px solid rgba(255,255,255,.58)!important;border-radius:12px!important;text-decoration:none!important;box-shadow:0 0 7px rgba(220,38,38,.62),0 0 20px rgba(220,38,38,.38),inset 0 1px 0 rgba(255,255,255,.48)!important}
.gvs-return-btn:hover,.btn.gvs-return-btn:hover,.link-btn.gvs-return-btn:hover{background:linear-gradient(180deg,#ff6b6b,#b91c1c)!important;box-shadow:0 0 9px rgba(220,38,38,.72),0 0 23px rgba(220,38,38,.44),inset 0 1px 0 rgba(255,255,255,.5)!important}

.btn.like-btn.liked svg{fill:currentColor}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn.full{width:100%}
.btn.sm{padding:9px 12px;font-size:12.5px;border-radius:10px}
.btn:disabled{opacity:.5;cursor:default;transform:none}

.module{border-top:1px solid var(--line);padding:14px 0;text-align:center}
.module:first-child{border-top:0}
.module .code{font-family:var(--font-mono);font-size:11px;color:var(--green);font-weight:700}
.module h3{font-size:16px;margin:4px 0 4px}
.module p{font-size:13.5px;color:var(--muted);margin:0 0 10px;line-height:1.45}
.module .meta{font-family:var(--font-mono);font-size:11.5px;color:var(--muted)}
.module .btn{margin-left:auto;margin-right:auto}

.resource{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding:13px 0}
.resource:first-child{border-top:0}
.resource h3{font-size:14.5px;margin:0 0 2px}
.resource span{font-size:12px;color:var(--muted)}
.resource-thumb{width:52px;height:52px;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:#f4f4f4;flex:none}
.resource>div:not(.resource-thumb){flex:1;min-width:0}

.announcement{border-top:1px solid var(--line);padding:14px 0}
.announcement-photo{margin:8px 0}
.announcement-photo img{display:block;width:100%;max-height:420px;object-fit:contain;background:var(--paper-raised,#F2F6FC);border-radius:12px}
.announcement-pdf-link{display:inline-block;margin-top:8px;text-decoration:none}
#annoncesSectionTitle{justify-content:center}
#annoncesSectionTitle h2{text-align:center;width:100%}
#announcementCard{
  max-height:70vh;overflow-y:auto;-webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;scroll-behavior:smooth;
}
.announcement:first-child{border-top:0}
.announcement .date{font-family:var(--font-mono);font-size:11px;color:var(--muted)}
.announcement h3{font-size:15px;margin:4px 0}
.announcement p{font-size:13.5px;color:var(--ink-soft);line-height:1.5;margin:0}

.empty{text-align:center;padding:26px 10px;color:var(--muted);font-size:13.5px}

.socials{display:flex;gap:9px;flex-wrap:wrap;margin-top:10px}
.social{
  background:linear-gradient(135deg,var(--plum),var(--plum-2));border-radius:11px;padding:10px 13px;font-size:13px;font-weight:700;
  text-decoration:none;color:#fff;transition:transform .15s ease,filter .12s ease;
}
.social:active{transform:scale(.96);filter:brightness(1.12)}
.socials-oneline{flex-wrap:nowrap;overflow-x:hidden}
.socials-oneline .social{font-size:10.5px;padding:8px 6px;white-space:nowrap;flex:1 1 0;text-align:center}

/* ---------- forms ---------- */
label{display:block;font-size:12.5px;font-weight:700;color:var(--ink-soft);margin:12px 0 6px}
input,textarea,select{
  width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:12px;
  font-size:14.5px;font-family:var(--font-body);background:#fff;color:var(--ink);
  transition:border-color .15s ease;
}
textarea{min-height:80px;resize:vertical}
input:focus,textarea:focus,select:focus,button:focus-visible,a:focus-visible{
  outline:2px solid var(--green);outline-offset:2px;
}
.formrow{display:flex;gap:10px}
.formrow>*{flex:1}
.checkline{display:flex;align-items:center;gap:7px;font-size:13px;cursor:pointer;width:auto}
.checkline input[type="checkbox"]{width:auto;padding:0;border-radius:4px;flex:none}
.password-field{position:relative}
.password-field input{padding-right:44px}
.password-toggle{
  position:absolute;right:4px;top:50%;transform:translateY(-50%);
  width:34px;height:34px;border:0;background:none;cursor:pointer;
  display:flex;align-items:center;justify-content:center;color:var(--muted);
  border-radius:8px;transition:filter .15s ease;
}
.password-toggle svg{width:19px;height:19px}
.password-toggle:active{filter:brightness(1.4)}

/* ---------- identité visuelle GVS+ ---------- */
.brand-mark{position:relative}
.brand-mark::after{content:"";position:absolute;left:0;right:0;bottom:-5px;height:3px;border-radius:99px;background:linear-gradient(90deg,var(--blue),var(--green));opacity:.9}
.ad-preview{margin-top:10px;border:1px dashed #B9C9E7;border-radius:14px;padding:8px;background:#F7FAFF}
.ad-preview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:8px}
.ad-preview-grid img{width:100%;height:70px;object-fit:cover;border-radius:8px}
.ad-preview img{display:block;width:100%;max-height:280px;object-fit:contain;border-radius:10px}
.admin-ad-item{border-top:1px solid var(--line);padding:12px 0;display:flex;gap:12px;align-items:center}
.admin-ad-item:first-child{border-top:0}
.admin-ad-item>img{width:82px;height:62px;object-fit:cover;border-radius:10px;border:1px solid #C8D7EE;background:#F7FAFF}
.admin-ad-info{min-width:0;flex:1}
.admin-ad-info>b{display:block;font-size:13px;margin-bottom:4px}
.admin-ad-info .small{display:block}
.admin-ad-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}

/* GVS+ — Actualités : bandeau fixe en haut de l’accueil, juste au-dessus des carreaux. */
.news-section{
  position:sticky;
  top:var(--gvs-header-h,0px);
  z-index:30;
  margin:0 0 14px;
  padding:10px 0 8px;
  background:var(--paper,#fff);
  border-bottom:1px solid var(--line,#d8e2f0);
  box-shadow:0 4px 12px rgba(0,0,0,.06);
}
.news-section.hidden{display:none!important}
.news-section .section-title{margin:0 0 7px;padding:0 4px}
.news-section .section-title h2{font-size:15px;margin:0}
.news-section .news-carousel{padding-bottom:2px}
body.dark .news-section{background:var(--paper,#0f172a);border-bottom-color:var(--line,#2A3550)}
.news-carousel{
  display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;
  padding-bottom:4px;-webkit-overflow-scrolling:touch;
}
.news-card{
  flex:0 0 82%;scroll-snap-align:start;
  border:1px solid var(--line,#d8e2f0);border-radius:16px;overflow:hidden;
  background:var(--paper-raised,#fff);box-shadow:var(--shadow-sm,0 1px 4px rgba(0,0,0,.08));
}
.news-photo-carousel{width:100%;overflow:hidden}
.news-photo-strip{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.news-photo-strip::-webkit-scrollbar{display:none}
.news-photo-slide{flex:0 0 100%;scroll-snap-align:start;min-width:100%}
.news-photo-frame{height:175px;width:100%;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.04);overflow:hidden}
.news-photo-frame img{width:100%;height:100%;object-fit:contain;display:block}
.news-card p{margin:0;padding:8px 12px;font-size:13px;line-height:1.4;min-height:0}
.news-photo-dots{display:flex;justify-content:center;align-items:center;gap:5px;padding:7px 0 2px}
.news-photo-dot{width:6px;height:6px;border-radius:50%;border:none;padding:0;background:var(--line,#d8e2f0);cursor:pointer;transition:width .15s}
.news-photo-dot.active{width:16px;border-radius:4px;background:var(--blue,#0B3FA8)}
body.dark .news-photo-frame{background:rgba(255,255,255,.06)}
body.dark .news-photo-dot{background:var(--line,#2A3550)}
body.dark .news-photo-dot.active{background:var(--blue-2,#2E5FD9)}
body.dark .news-card img{background:rgba(255,255,255,.06)}

/* GVS+ — Bande dessiner : affichage manuel, grand format */
.bande-dessiner-section{padding:12px 0;overflow:hidden}
.bande-dessiner-carousel{width:100%;position:relative;display:flex;align-items:center;justify-content:center}
.bande-dessiner-viewport{width:100%;min-height:320px;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:14px}
.bande-dessiner-viewport img{display:block;width:100%;height:auto;max-height:720px;object-fit:contain;border-radius:14px}
.bande-dessiner-nav{position:absolute;z-index:2;top:50%;transform:translateY(-50%);width:44px;height:44px;border:0;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;font-size:34px;line-height:40px;display:flex;align-items:center;justify-content:center;cursor:pointer}
.bande-dessiner-prev{left:12px}.bande-dessiner-next{right:12px}
.bande-dessiner-counter{text-align:center;font-size:13px;margin-top:8px;opacity:.72}
.bande-dessiner-empty{margin-top:10px}
.bande-dessiner-upload-preview{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.bande-dessiner-upload-preview-item{width:88px;height:104px;border:1px solid var(--line,#d8e2f0);border-radius:10px;overflow:hidden;position:relative;background:var(--paper-raised,#fff)}
.bande-dessiner-upload-preview-item img{width:100%;height:100%;object-fit:cover;display:block}
.bande-dessiner-upload-preview-item span{position:absolute;left:4px;right:4px;bottom:4px;padding:3px 5px;border-radius:6px;background:rgba(0,0,0,.58);color:#fff;font-size:10px;text-align:center}
.bande-dessiner-admin-row{display:grid;grid-template-columns:64px 1fr auto;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line,#d8e2f0)}
.bande-dessiner-admin-row:last-child{border-bottom:0}.bande-dessiner-admin-row img{width:64px;height:76px;border-radius:9px;object-fit:cover;display:block}.bande-dessiner-admin-meta{min-width:0}.bande-dessiner-admin-meta strong{display:block}
@media(max-width:520px){.bande-dessiner-viewport{min-height:220px}.bande-dessiner-viewport img{max-height:600px}.bande-dessiner-nav{width:38px;height:38px;font-size:28px}.bande-dessiner-prev{left:7px}.bande-dessiner-next{right:7px}.bande-dessiner-admin-row{grid-template-columns:56px 1fr}.bande-dessiner-admin-row img{width:56px;height:68px}.bande-dessiner-admin-row .btn{grid-column:2;justify-self:start}}
.news-carousel-wrap{position:relative}
.news-nav{
  position:absolute;top:50%;transform:translateY(-50%);z-index:2;
  width:32px;height:32px;border-radius:50%;border:1px solid var(--line,#d8e2f0);
  background:var(--paper-raised,#fff);box-shadow:var(--shadow-sm,0 1px 4px rgba(0,0,0,.08));
  display:flex;align-items:center;justify-content:center;color:var(--blue,#0B3FA8);
  cursor:pointer;padding:0;transition:opacity .15s,transform .15s;
}
.news-nav:active{transform:translateY(-50%) scale(.92)}
.news-nav svg{width:17px;height:17px}
.news-nav-prev{left:2px}
.news-nav-next{right:2px}
.news-carousel-wrap.single .news-nav{display:none}
.news-dots{display:flex;justify-content:center;align-items:center;gap:6px;margin-top:10px}
.news-dot{width:7px;height:7px;border-radius:50%;border:none;padding:0;background:var(--line,#d8e2f0);cursor:pointer;transition:width .15s,background .15s}
.news-dot.active{background:var(--blue,#0B3FA8);width:18px;border-radius:4px}
body.dark .news-nav{color:var(--blue-2,#2E5FD9)}
body.dark .news-dot{background:var(--line,#2A3550)}
body.dark .news-dot.active{background:var(--blue-2,#2E5FD9)}
@media (max-width:480px){
  .admin-ad-item{align-items:flex-start}
  .admin-ad-item>img{width:68px;height:68px}
  .admin-ad-actions .btn{padding:8px 9px;font-size:11px}
}

/* ---------- photo du responsable GVS+ ---------- */
.admin-profile-card{margin-top:14px;text-align:center}
.admin-profile-public-title{font-size:13px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.08em;margin-bottom:12px}
.admin-profile-photo{width:92px;height:92px;border-radius:50%;object-fit:cover;display:block;margin:0 auto 10px;border:3px solid var(--paper-raised);box-shadow:0 6px 18px rgba(11,63,168,.25)}
.admin-profile-name{font-size:18px;font-weight:900;color:var(--ink);margin-top:2px}
.admin-profile-placeholder{width:92px;height:92px;border-radius:50%;margin:0 auto 10px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--blue),var(--blue-2));color:#fff;font-weight:800;font-size:28px}
.crop-modal{position:fixed;inset:0;z-index:9999;background:rgba(5,12,25,.78);display:flex;align-items:center;justify-content:center;padding:18px}
.crop-panel{width:min(430px,100%);background:var(--paper-raised);border-radius:20px;padding:18px;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.crop-stage{position:relative;width:100%;height:min(72vw,340px);max-height:340px;overflow:hidden;border-radius:16px;background:#111;touch-action:none}
.crop-stage img{position:absolute;left:50%;top:50%;max-width:none;user-select:none;-webkit-user-drag:none;transform-origin:center center;cursor:grab}
.crop-stage img.dragging{cursor:grabbing}
.crop-window{position:absolute;left:50%;top:50%;width:min(72vw,280px);height:min(72vw,280px);max-width:280px;max-height:280px;transform:translate(-50%,-50%);border:3px solid #fff;border-radius:50%;box-shadow:0 0 0 9999px rgba(0,0,0,.42);pointer-events:none}
.crop-controls{margin-top:14px}
.crop-controls input[type=range]{width:100%}
.crop-actions{display:flex;gap:10px;margin-top:12px}
.crop-actions .btn{flex:1}

/* ---------- admin ---------- */
.badge{
  display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:11.5px;
  padding:6px 10px;border-radius:20px;font-weight:600;
}
.badge.online{background:#E3F6EB;color:var(--green)}
.badge.local{background:#FDE8E8;color:#B91C1C}
.dot{width:7px;height:7px;border-radius:50%;background:currentColor}
.admin-item{display:flex;justify-content:space-between;align-items:center;gap:10px;border-top:1px solid var(--line);padding:11px 0}
.admin-item:first-child{border-top:0}
.admin-item b{font-size:13.5px}
.small{font-size:12px;color:var(--muted);line-height:1.5}
.divider{height:1px;background:var(--line);margin:16px 0}

/* ---------- messagerie (discussion façon Messenger) ---------- */
.msg-thread{display:flex;flex-direction:column;gap:8px;max-height:52vh;overflow-y:auto;padding:4px 2px}
.msg-bubble{max-width:80%;padding:9px 13px;border-radius:16px;font-size:13.5px;line-height:1.45;display:flex;flex-direction:column;gap:2px}
.msg-bubble time{font-size:10px;opacity:.65;align-self:flex-end}
.msg-bubble.msg-in{align-self:flex-start;background:var(--paper);border:1px solid var(--line);border-bottom-left-radius:4px;color:var(--ink)}
.msg-bubble.msg-out{align-self:flex-end;background:linear-gradient(135deg,var(--blue),var(--blue-2));color:#fff;border-bottom-right-radius:4px}
.msg-input-row{display:flex;gap:8px;align-items:center}
.msg-input-row input{flex:1}
.mic-btn{display:flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;flex:none;border-radius:50%;background:var(--paper);border:1px solid var(--line);color:var(--ink);transition:background .15s,color .15s,transform .1s}
.mic-btn svg{width:18px;height:18px}
.mic-btn.recording{background:#e0483e;border-color:#e0483e;color:#fff;transform:scale(1.08);animation:gvsMicPulse 1.1s ease-in-out infinite}
@keyframes gvsMicPulse{0%,100%{box-shadow:0 0 0 0 rgba(224,72,62,.45)}50%{box-shadow:0 0 0 8px rgba(224,72,62,0)}}
.voice-rec{display:flex;align-items:center;gap:8px;margin-top:8px;padding:6px 10px;border-radius:12px;background:#FDEEEC;color:#B3261E;font-size:12.5px}
.voice-rec.hidden{display:none}
.voice-rec-dot{width:9px;height:9px;border-radius:50%;background:#e0483e;animation:gvsMicPulse 1.1s ease-in-out infinite;flex:none}
.voice-rec button{margin-left:auto}
.voice-msg{display:flex;align-items:center;gap:6px}
.voice-msg audio{max-width:220px;height:36px}
.voice-msg-dur{font-size:11px;opacity:.8}
body.dark .voice-rec{background:#3A1E1C;color:#F4A9A2}
body.dark .mic-btn{background:#1B2547;border-color:#28345E;color:#EAF0FF}
.admin-msg-item{display:flex;flex-direction:column;align-items:stretch;gap:0}
.admin-msg-thread{margin-top:8px;max-height:220px}
body.dark .msg-bubble.msg-in{background:#1B2547;border-color:#28345E}

/* ---------- barre de menus (fixe en haut) ---------- */
#appHeader{
  position:fixed;top:0;left:0;right:0;z-index:20;
  background:#fff;
  border-bottom:0;
}
.gvs-header-banner{
  width:100%;
  height:clamp(78px,27vw,138px);
  overflow:hidden;
  background:#fff;
}
.gvs-header-banner img{
  width:100%;height:100%;display:block;
  object-fit:cover;object-position:center;
}
.topstrip{
  display:flex;justify-content:flex-start;align-items:center;gap:10px;flex-wrap:nowrap;
  padding:0;
}

/* ---------- Bandeau GVS+ fixe au-dessus de la barre WiFi/batterie ---------- */
.gvs-mini-brand-bar{
  position:relative;z-index:100;
  width:100%;height: 48px;box-sizing:border-box;
  display:flex;align-items:center;justify-content:space-between;
  padding:0 14px;
  background:#fff;
  border-bottom:0!important;
  color:#063B8F;
  font-family:var(--font-sans,Arial,sans-serif);
  font-size:38px;font-weight:900;letter-spacing:.3px;
}
.gvs-mini-brand-bar span{display:block;line-height:1;}
.gvs-mini-brand-name{transform:translateX(-10px);}
body.dark .gvs-mini-brand-bar{
  background:#111827;
  color:#9CFFB2;
  border-bottom-color:transparent;
}
.gvs-mini-brand-client-btn{
  flex:0 0 auto;margin:0;padding:0;border:0;background:transparent;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
}
.gvs-mini-brand-client-btn img{width:40px;height:40px;display:block;object-fit:contain;border-radius:50%;filter:drop-shadow(0 0 6px rgba(220,38,38,.65)) drop-shadow(0 0 14px rgba(220,38,38,.35))}
.gvs-mini-brand-client-btn:active{transform:scale(.92);}
@media(max-width:600px){.gvs-mini-brand-client-btn img{width:36px;height:36px;}}

/* ---------- barre d'état façon Android (heure/date + statut appareil) ---------- */
.android-status-bar{
  position:relative;z-index:21;
  display:flex;align-items:center;justify-content:space-between;gap:6px;
  padding:calc(4px + env(safe-area-inset-top)) 10px 4px;
  background:linear-gradient(135deg,rgba(11,63,168,.55) 0%,rgba(14,147,80,.55) 100%);
  color:#fff;
  font-family:var(--font-mono);
}
.asb-left{display:flex;align-items:center;gap:6px;min-width:0;flex:1 1 auto;overflow-x:auto;scrollbar-width:none;}
.asb-left::-webkit-scrollbar{display:none}
.asb-right{display:flex;align-items:center;gap:2px;flex-wrap:nowrap;margin-left:auto;}
.asb-icon,.asb-icon-btn svg,.asb-bell-icon{width:20px!important;height: 20px!important;display:block;flex:none;box-sizing:border-box;}
.asb-icon-btn{width:27px;height:27px;color:inherit!important;}
.asb-chip{height:27px;color:inherit!important;}
.asb-chip .asb-txt{color:inherit!important;}
.asb-right,.asb-left{color:#fff;}
body.dark .asb-right,body.dark .asb-left{color:#fff;}
.asb-chip{
  display:flex;align-items:center;gap:3px;background:transparent;
  border:0;border-radius:999px;color:#111;padding:2px 3px;cursor:pointer;
  font-family:var(--font-mono);
}
.asb-chip .asb-txt{font-size:11.5px;font-weight:700;white-space:nowrap;}
.asb-icon-btn{
  display:flex;align-items:center;justify-content:center;width:24px;height:24px;
  background:transparent;border:0;border-radius:999px;color:#111;cursor:pointer;opacity:.85;
}
.asb-icon-btn svg{width:21px;height:21px;display:block;}
.asb-icon-btn:hover,.asb-icon-btn.active{opacity:1;background:rgba(0,0,0,.08);}
body.dark .asb-chip,body.dark .asb-icon-btn{color:#fff;}
body.dark .asb-icon-btn:hover,body.dark .asb-icon-btn.active{background:rgba(255,255,255,.14);}
.asb-icon-btn.active{color:#FFC531;}
#asbBattery,#asbBattery .asb-icon{color:#111!important;}
body.dark #asbBattery,body.dark #asbBattery .asb-icon{color:#8BE28B!important;}
#asbBattery.low .asb-icon{color:#FF7B7B!important;}
#asbBattery .asb-icon,#asbBattery.asb-chip .asb-icon{width:29px!important;height:30px!important;min-width:29px!important;min-height:30px!important;order:1!important;}
#asbBattery{height:auto!important;min-height:41px!important;flex-direction:row!important;}
#asbBattery .asb-txt{order:2!important;}


@media(max-width:700px){
  .gvs-header-banner{height:clamp(82px,29vw,112px);}
  .brand-logo-image2{width:76px;height:60px;}
  .brand-mascot{height:42px;}
  html{--gvs-header-h:calc(clamp(82px,29vw,112px) + 96px);}
}
@media(max-width:400px){
  .asb-left{gap:5px}
  .asb-left .live-datetime{font-size:10px;max-width:120px}
  .asb-chip .asb-txt{display:none}
  #asbBattery .asb-txt{display:inline-block}
  .asb-chip{padding:4px 6px}
  .asb-icon-btn{width:23px;height:23px}
}
/* Mode plein écran (PWA installée) : bandeau batterie plus compact pour éviter qu'il soit trop grand */
body.standalone .android-status-bar{padding:calc(3px + env(safe-area-inset-top)) 12px 3px;}
body.standalone .asb-left{gap:4px;}
body.standalone .asb-icon{width:19px;height:19px;}
body.standalone .asb-chip{padding:2px 5px;}
body.standalone .asb-chip .asb-txt{font-size:11px;}
body.standalone .asb-icon-btn{width:22px;height:22px;}
body.standalone .asb-icon-btn svg{width:19px;height:19px;}
.brand-cluster{display:flex;align-items:center;gap:20px;min-width:0;justify-content:flex-start;margin:0 !important;}
.brand-logo-image2{
  width:82px;height:68px;object-fit:contain;object-position:left center;
  display:block;flex:none;
  margin:0 !important;
  align-self:flex-start;
}

.brand-mascot{height:52px;width:auto;display:block;flex:none;margin-left:auto;animation:gvsMascotFloat 2.6s ease-in-out infinite;filter:drop-shadow(0 2px 3px rgba(11,63,168,.25))}
@keyframes gvsMascotFloat{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-4px) rotate(2deg)}}
@media(max-width:520px){.brand-mascot{height:58px}}
.topstrip-icons-wrap{display:flex;flex-direction:column;align-items:flex-end;gap:5px}
.live-datetime{font-size:11.5px;font-weight:900;line-height:1.2;white-space:nowrap;overflow:hidden;max-width:190px;text-align:center;background:#ffd6d6;color:#111;padding:4px 9px;border-radius:8px;box-sizing:border-box;}
.live-datetime-scroll{display:inline-block;white-space:nowrap;min-width:max-content;animation:liveDateTimeMarquee 22s linear infinite;will-change:transform;}
@keyframes liveDateTimeMarquee{0%{transform:translateX(-115%)}100%{transform:translateX(115%)}}
@media (prefers-reduced-motion:reduce){.live-datetime-scroll{animation:none;transform:none;}}
/* GVS+ : texte gras bleu sombre fixe, légèrement flottant */
.brandword{
  display:inline-block;
  font-family:var(--font-display);font-weight:900;font-size:28px;
  color:#0B3FA8;letter-spacing:-.02em;line-height:1;
  background:none;border:0;padding:4px 2px;cursor:pointer;
  text-shadow:none;
  animation:none;transform:none;
  will-change:auto;
}

.brandword:active{transform:none}
.topstrip-icons{display:flex;align-items:center;gap:10px}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.search-bar-icon{display:flex;color:var(--muted);flex:0 0 auto;cursor:pointer}
.search-bar-icon:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:50%}
.search-bar-icon svg{width:19px;height:19px}
body.dark /* GVS+ — bloc recherche + flèche fixe, réservé à la session Accueil (carreaux + J'aime). */
.home-top-search-block{padding-top:0}
.home-top-arrow-row{display:flex;justify-content:flex-start;padding:0 12px 8px;margin-top:-2px}
.home-top-arrow-row .home-top-arrow{margin:0}
.bottomnav{
  display:flex;justify-content:space-around;
  padding:6px 2px 8px;
}
.bottomnav button{
  background:none;border:0;color:var(--ink-soft);font-size:8.3px;font-weight:900;letter-spacing:-.3px;
  display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 1px;cursor:pointer;
  position:relative;flex:1 1 0;min-width:0;white-space:nowrap;
}
.bottomnav button .navicon{
  font-size:24px;display:flex;align-items:center;justify-content:center;
  transition:transform .2s cubic-bezier(.34,1.56,.64,1);
}
.bottomnav button .navicon svg{width:23px;height:23px;transition:transform .2s cubic-bezier(.34,1.56,.64,1)}
.bottomnav button.active,
.bottomnav button:active{color:var(--icon-active-light);}
.bottomnav button.active .navicon,
.bottomnav button:active .navicon{transform:scale(1.15);}
.bottomnav button.active .navicon svg,
.bottomnav button:active .navicon svg{stroke:var(--icon-active-light);}
@keyframes navIconTapPulse{0%{transform:scale(1)}45%{transform:scale(1.32)}100%{transform:scale(1)}}
.navicon.icon-tap-pulse,
.settings-simple-icon.icon-tap-pulse,
.search-bar-icon.icon-tap-pulse,
svg.icon-tap-pulse{animation:navIconTapPulse .32s cubic-bezier(.34,1.56,.64,1);}
.navbadge{
  position:absolute;top:-1px;right:5px;background:#E63946;color:#fff;font-size:8px;font-weight:800;
  min-width:14px;height:14px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px;
}

.toast{
  position:fixed;left:50%;bottom:24px;transform:translateX(-50%);
  background:linear-gradient(135deg,var(--blue),var(--blue-2));color:#fff;padding:11px 18px;border-radius:12px;font-size:13.5px;
  box-shadow:var(--shadow);z-index:50;opacity:0;pointer-events:none;transition:opacity .2s, bottom .2s;
}
.toast.show{opacity:1;bottom:34px}

/* ---------- sessions Profil Général ---------- */
.profile-general-title{text-align:center;margin:8px 0 18px}
.profile-general-title h2{margin:0;font-size:22px}
.profile-sessions{display:flex;flex-direction:row;align-items:stretch;justify-content:center;gap:8px;margin:8px auto 0;width:100%;max-width:360px}
.profile-session-btn{flex:1;min-width:0;width:auto;display:flex;align-items:center;justify-content:center;gap:8px;padding:13px 18px;border:1px solid var(--line);border-radius:13px;background:var(--paper-raised);color:var(--ink);font-weight:800;font-size:14px;cursor:pointer;box-shadow:0 4px 12px rgba(11,63,168,.08);transition:transform .15s,background .15s,color .15s}
.profile-session-btn:hover{background:#E7F7EE;color:#0B6B3A}
.profile-session-btn:active{background:#087A3F;color:#fff;transform:scale(.98)}
.profile-session-icon{font-size:18px}
.profile-session-notice{text-align:center;margin:10px auto 0;max-width:360px}.profile-session-panel{width:100%;max-width:520px;margin:12px auto 0}.admin-session-btn{border-color:#0b6b3a}.profile-session-btn:focus-visible{outline:3px solid rgba(8,122,63,.25);outline-offset:2px}

/* ---------- accès admin (page Profil uniquement) ---------- */
.adminlink{
  color:var(--muted);opacity:.85;text-decoration:none;font-size:13px;font-weight:600;cursor:pointer;
  display:inline-flex;align-items:center;gap:6px;padding:9px 16px;
  border-radius:12px;border:1px solid var(--line);background:var(--paper-raised);
}

@media(min-width:700px){
  .quickgrid{grid-template-columns:1fr 1fr 1fr}
}

/* ---------- bannière d'installation (app-like) : clair = bleu électrique, sombre = vert clair ---------- */
.installbar{
  position:fixed;left:12px;right:12px;bottom:calc(70px + env(safe-area-inset-bottom));
  background:linear-gradient(135deg,#0066FF,#3B9EFF);color:#111;border-radius:16px;
  padding:10px 10px 10px 12px;display:flex;align-items:center;gap:10px;
  box-shadow:0 10px 30px rgba(0,102,255,.35);z-index:60;
  animation:installbar-in .25s ease-out;
}
body.dark .installbar{background:linear-gradient(135deg,#22c55e,#90EE90);color:#111;box-shadow:0 10px 30px rgba(34,197,94,.35);}
.installbar img{width:40px;height:40px;border-radius:9px;background:#fff;padding:3px;flex:none}
.installbar-text{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0;color:#111}
.installbar-text b{font-size:13.5px;color:#111}
.installbar-text span{font-size:11.5px;color:#111;line-height:1.35;opacity:.85}
.installbar .btn{flex:none;white-space:nowrap}
.installbar-close{
  background:none;border:0;color:#E11D2E;cursor:pointer;
  width:26px;height:26px;flex:none;border-radius:50%;
  display:flex;align-items:center;justify-content:center;opacity:1;
}
.installbar-close svg{width:14px;height:14px}
.installbar-close:active{background:rgba(225,29,46,.15)}
@keyframes installbar-in{from{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}

/* ---------- affiches publicitaires ---------- */
/* Défilement piloté en JS (voir initCarousel dans app.js) : scroll natif
   tactile, on peut glisser pour revenir en arrière, ça reprend tout seul
   après le relâchement. Barre de défilement masquée pour l'esthétique. */
.ad-banner-wrap{
  margin:0 0 18px;border-radius:18px;overflow:hidden;
  scrollbar-width:none;-ms-overflow-style:none;
}
.ad-banner-wrap::-webkit-scrollbar{display:none}
.ad-track{display:flex;gap:14px;width:max-content}
.ad-banner{
  position:relative;margin:0;border-radius:18px;overflow:hidden;
  border:1px solid #C8D7EE;background:#fff;box-shadow:0 8px 26px rgba(11,63,168,.12);
  flex:0 0 auto;width:min(86vw,420px);
  display:flex;align-items:center;justify-content:center;
}
/* Chaque image garde sa forme d'origine (pas de recadrage ni d'étirement) :
   la largeur est fixée par la carte, la hauteur suit naturellement. Un
   plafond de sécurité empêche une image très haute de déborder l'écran. */
.ad-banner img{display:block;width:100%;height:auto;max-height:min(80vh,640px);object-fit:contain}

/* ---------- Mon ordinateur — composants PC (même logique de défilement que les affiches) ---------- */
.pc-comp-section{margin:0 0 18px}
.pc-comp-carousel-wrap{
  margin:0;border-radius:18px;overflow:hidden;
  scrollbar-width:none;-ms-overflow-style:none;
}
.pc-comp-carousel-wrap::-webkit-scrollbar{display:none}
.pc-comp-track{display:flex;gap:14px;width:max-content}
.pc-comp-card{
  position:relative;margin:0;border-radius:18px;overflow:hidden;
  border:1px solid #C8D7EE;background:#fff;box-shadow:0 8px 26px rgba(11,63,168,.12);
  flex:0 0 auto;width:min(74vw,300px);
  padding:0 0 14px;
}
.pc-comp-photo{width:100%;background:#F2F6FC;display:flex;align-items:center;justify-content:center;overflow:hidden}
.pc-comp-photo img{display:block;width:100%;height:auto;max-height:min(65vh,460px);object-fit:contain}
.pc-comp-card b{display:block;margin:12px 14px 4px;font-size:14px;color:var(--ink)}
.pc-comp-card p{margin:0 14px;font-size:12.5px;line-height:1.4;color:var(--muted)}
body.dark .pc-comp-card{background:#141B2E;border-color:#3A4568}
body.dark .pc-comp-photo{background:#1B2440}

/* ---------- cours (défilement vertical, même logique que les affiches) ---------- */
.course-carousel-wrap{
  touch-action:auto;
  margin:0 0 18px;border-radius:18px;height:min(74vh,600px);overflow-y:auto;overflow-x:hidden;scroll-behavior:smooth;
  scrollbar-width:none;-ms-overflow-style:none;
}
.course-carousel-wrap::-webkit-scrollbar{display:none}
.course-track{display:flex;flex-direction:column;gap:14px;height:max-content}
.course-card{
  position:relative;margin:0;border-radius:18px;overflow:hidden;
  border:1px solid #C8D7EE;background:#fff;box-shadow:0 8px 26px rgba(11,63,168,.12);
  flex:0 0 auto;width:100%;
  display:flex;align-items:center;justify-content:center;
}
/* Même principe : la carte a la largeur du carrousel, l'image garde sa
   forme d'origine, avec un plafond pour ne jamais déborder de l'écran. */
.course-card img{display:block;width:100%;height:auto;max-height:min(74vh,600px);object-fit:contain}
body.dark .course-card{background:#141B2E;border-color:#3A4568}

/* ============================================================
   Mode sombre — activé via la classe .dark sur <body>
   (bouton lune/soleil à côté de la cloche de notifications)
   ============================================================ */
body.dark{
  --paper-raised:#141B2E;
  --paper:#0B1020;
  --ink:#EAF0FF;
  --ink-soft:#B9C4E0;
  --line:#2A3550;
  --muted:#8C96B8;
  --icon-active:#028F29;
  --icon-active-light:#4ADE80;
  background:#0B1020;
}
body.dark #appHeader{
  background:#0F1730;
  border-bottom:0;
}
body.dark .brandword{color:#4ADE80}
body.dark input,body.dark textarea,body.dark select{
  background:#141B2E;color:var(--ink);border-color:var(--line);
}
body.dark input::placeholder,body.dark textarea::placeholder{color:#6C7799}
body.dark .authtab{background:linear-gradient(180deg,#8AF0B4,#34D399);color:#064E3B;border-color:rgba(255,255,255,.25);box-shadow:0 3px 12px rgba(52,211,153,.35),inset 0 1px 0 rgba(255,255,255,.5)}
body.dark .authtab.active{border-color:rgba(255,255,255,.55);box-shadow:0 5px 18px rgba(52,211,153,.55),inset 0 1px 0 rgba(255,255,255,.6)}
body.dark .gform-embed{background:#141B2E;border-color:var(--line)}
body.dark .resource-thumb{background:#1B2440;border-color:var(--line)}
body.dark .ad-preview{background:#141B2E;border-color:#3A4568}
body.dark .admin-ad-item>img{background:#1B2440;border-color:var(--line)}
body.dark .badge.online{background:#123322;color:#4ADE80}
body.dark .online-dot{color:#4ADE80}
body.dark .badge.local{background:#3A1717;color:#FF6B6B}
body.dark .avatar-status-dot{background:#4ADE80}
body.dark .notifbell,body.dark .closeapp-btn{background:#1B2440;color:var(--ink);box-shadow:0 4px 12px rgba(0,0,0,.35)}
body.dark .ad-banner{background:#141B2E;border-color:#3A4568}
body.dark .adminlink{color:var(--ink-soft)}
body.dark .admin-item,body.dark .resource{border-color:var(--line)}

.authtabs-inner{margin-top:4px;margin-bottom:14px}.authtabs-inner .authtab{font-size:13px;padding:9px}
.authtab-arrow-btn{
  flex:0 0 auto;width:34px;height:34px;padding:0;margin:0;
  border:0;background:transparent;display:flex;align-items:center;justify-content:center;
  cursor:pointer;font-size:18px;line-height:1;
}
.authtab-arrow-btn:active{transform:scale(.88);}
@media(max-width:600px){.authtab-arrow-btn{width:28px;height:28px;font-size:15px}}

/* ---------- gestion des utilisateurs par l’administrateur ---------- */
.user-admin-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.user-select{display:flex;align-items:center;gap:10px;min-width:0;cursor:pointer}
.user-select input{width:18px;height:18px;accent-color:var(--green);flex:none}
.user-select>span{min-width:0}
.admin-user-check:checked{accent-color:#0B6B3A}
@media (max-width:380px){.user-admin-row{align-items:flex-start}.user-admin-row .btn{flex:none}}

/* ---------- administration : fiches utilisateurs ---------- */
.user-admin-card{display:block!important;padding:12px 2px!important;margin-bottom:0;background:transparent!important;border:none!important;box-shadow:none!important;border-radius:0!important;border-bottom:1px solid var(--line,rgba(0,0,0,.08))}
.user-admin-card:last-child{border-bottom:none}
.user-admin-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.admin-user-avatar{width:54px;height:54px;border-radius:50%;object-fit:cover;flex:none;border:2px solid rgba(11,107,58,.15);background:var(--light,#f2f7f4)}
.admin-user-avatar-placeholder{display:flex;align-items:center;justify-content:center;font-weight:800;color:#0B6B3A;font-size:15px}
.user-admin-top .user-select{gap:10px;flex:1}
.admin-user-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:13px 0 10px;padding-top:12px;border-top:1px solid var(--line,rgba(0,0,0,.08))}
.admin-user-details>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.admin-user-details span{font-size:11px;opacity:.65}
.admin-user-details b{font-size:13px;word-break:break-word}
.admin-user-security{font-size:12px;padding:8px 10px;border-radius:9px;background:rgba(11,107,58,.07);color:#0B6B3A}
@media(max-width:520px){.admin-user-details{grid-template-columns:1fr}.admin-user-avatar{width:48px;height:48px}}
.user-admin-collapse{display:none}
.user-admin-card.expanded .user-admin-collapse{display:block}
.user-toggle-arrow{border:none;background:transparent;font-size:15px;line-height:1;cursor:pointer;padding:6px;border-radius:8px;flex-shrink:0}
.user-toggle-arrow:hover{background:rgba(0,0,0,.06)}
.admin-user-security .link-btn{border:none;background:none;color:#0B6B3A;text-decoration:underline;cursor:pointer;font:inherit;padding:0}

.profile-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.profile-edit-grid label{display:block;margin-bottom:5px;font-size:13px;font-weight:700;color:var(--muted)}
.profile-edit-grid input{width:100%;box-sizing:border-box}
.profile-edit-full{grid-column:1 / -1}
@media (max-width:560px){.profile-edit-grid{grid-template-columns:1fr}.profile-edit-full{grid-column:auto}}
/* Empêche Safari iOS de zoomer automatiquement sur l'écran quand on touche
   un champ de saisie (ça arrive dès que font-size < 16px) : sur tous les
   écrans de l'appli (connexion, inscription, messagerie, profil, admin...),
   on force au moins 16px sur mobile pour les champs qui étaient plus petits. */
@media (max-width:700px){
  input, textarea, select,
  .messenger-search input, .anip-home-search input,
  .dictionary-search input, .cv-grid input, .cv-grid textarea,
  #gvsZip1Messenger .search-bar input, #gvsZip1Messenger .chat-input-wrap input,
  #gvsZip1Messenger .gvs1-all-friends-search input{
    font-size:16px!important;
  }
}
.profile-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.profile-edit-grid label{display:block;margin-bottom:5px;font-size:13px;font-weight:700;color:var(--muted)}.profile-edit-grid input{width:100%;box-sizing:border-box}.profile-edit-full{grid-column:1 / -1}@media (max-width:560px){.profile-edit-grid{grid-template-columns:1fr}.profile-edit-full{grid-column:auto}}

.profile-edit-help{margin-top:4px}.profile-edit-item{min-width:0}.profile-edit-control{display:flex;align-items:center;gap:6px}.profile-edit-control input{flex:1}.profile-field-edit{width:38px;height:40px;border:1px solid var(--border);border-radius:10px;background:var(--card);font-size:28px;line-height:1;color:var(--primary);cursor:pointer;display:flex;align-items:center;justify-content:center}.profile-field-edit:hover{transform:translateX(2px)}.profile-field-edit:disabled{opacity:.45;cursor:not-allowed}.profile-edit-actions{display:flex;gap:10px;margin-top:12px}.profile-edit-actions .btn{flex:1}.profile-edit-control input:disabled{opacity:.72;cursor:default;background:var(--soft)}

/* ---------- barre haute : icône + libellé ---------- */
.top-icon-group{display:flex;flex-direction:column;align-items:center;min-width:54px}.topstrip-icons{gap:8px}.top-icon-label{font-size:10px;font-weight:800;line-height:1;margin-top:4px;white-space:nowrap;color:var(--muted)}.top-icon-group .notifbell,.profile-close-group .closeapp-btn{width:38px;height:38px;padding:0}.profile-close-group .closeapp-btn{width:42px;height:42px}.profile-close-group .top-icon-label{color:#E63946}.profile-title-actions{display:flex;align-items:center;gap:10px}.profile-general-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.app-version{font-size:11px;font-weight:800;color:var(--muted);white-space:nowrap}
/* ---------- écran d'attente de connexion ---------- */
.startup-gate{position:fixed;inset:0;z-index:99999;background:var(--paper);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;box-sizing:border-box}.startup-gate.hidden{display:none}

/* Écran de mise à jour obligatoire : au-dessus de tout, y compris
   l'écran de démarrage/connexion — impossible d'atteindre l'app en
   dessous tant que l'utilisateur n'a pas mis à jour. */
.force-update-gate{
  position:fixed;inset:0;z-index:999999;
  background:rgba(5,12,25,.85);backdrop-filter:blur(4px);
  display:flex;align-items:center;justify-content:center;padding:24px;
  box-sizing:border-box;
}
.force-update-card{
  background:var(--paper-raised,#fff);border-radius:var(--radius,18px);
  box-shadow:var(--shadow);padding:32px 26px;max-width:360px;width:100%;
  text-align:center;
}
.force-update-card img{width:64px;height:64px;border-radius:16px;margin-bottom:16px}
.force-update-card h2{margin:0 0 10px;font-family:var(--font-display);font-size:19px;color:var(--ink)}
.force-update-card p{margin:0 0 22px;font-size:14px;line-height:1.5;color:var(--ink-soft)}
.force-update-card .btn{width:100%}
body.dark .force-update-gate{background:rgba(0,0,0,.9)}
/* ---------- Activation des notifications Android/Web Push ---------- */
.gvs-push-prompt{display:flex;align-items:center;gap:14px;margin:0 0 16px;padding:15px 16px;border:1px solid rgba(14,147,80,.25);border-radius:18px;background:linear-gradient(135deg,rgba(85,201,107,.13),rgba(123,231,168,.08));box-shadow:0 8px 24px rgba(14,147,80,.08)}
.gvs-push-prompt.hidden{display:none}
.gvs-push-prompt-icon{width:48px;height:48px;flex:0 0 48px;border-radius:15px;display:grid;place-items:center;background:var(--green,#55c96b);font-size:24px}
.gvs-push-prompt-content{min-width:0;flex:1}.gvs-push-prompt-content h3{margin:0 0 5px;font-size:15px}.gvs-push-prompt-content p{margin:0;color:var(--muted);font-size:12px;line-height:1.45}.gvs-push-prompt-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}.gvs-push-prompt-actions .btn{margin:0}
@media (max-width:520px){.gvs-push-prompt{align-items:flex-start}.gvs-push-prompt-icon{width:42px;height:42px;flex-basis:42px}.gvs-push-prompt-actions{display:grid;grid-template-columns:1fr 1fr}.gvs-push-prompt-actions .btn{width:100%}}
body.dark .gvs-push-prompt{background:rgba(85,201,107,.08);border-color:rgba(123,231,168,.22)}

/* Logo animé au démarrage */
.startup-logo{width:auto;height:130px;max-width:72vw;object-fit:contain;margin-bottom:18px}
/* L'écran de démarrage reste toujours en apparence claire, quel que soit le thème choisi. */
.startup-gate{background:#F2F6FC!important}
.startup-status{color:#69739A!important}
body.dark .startup-gate{background:#F2F6FC!important}.profile-title-actions .top-icon-group{margin:0}
/* Étoile de chargement : attente de connexion, juste sous le logo */
.startup-spinner{display:flex;align-items:center;justify-content:center;margin-top:2px}
.startup-status{margin:10px 0 0;font-size:13px;font-weight:700;color:var(--muted);letter-spacing:.2px}
.startup-gate.startup-ready .startup-spinner,.startup-gate.startup-ready .startup-status{display:none}
/* Texte « Connexion en cours… » en arc-en-ciel, dans les mêmes teintes que l'étoile de chargement */
.startup-status{
  background:linear-gradient(90deg,#ff0000,#ff9d00,#e8ff00,#00d639,#00d9ff,#5b2cff,#ff00b8,#ff0000)!important;
  background-size:100% 100%!important;
  -webkit-background-clip:text!important;
  background-clip:text!important;
  -webkit-text-fill-color:transparent!important;
  color:transparent!important;
  animation:gvsStartupStatusRainbow 3s linear infinite!important;
}
@keyframes gvsStartupStatusRainbow{
  from{filter:hue-rotate(0deg)}
  to{filter:hue-rotate(360deg)}
}
@media (prefers-reduced-motion:reduce){
  .startup-status{animation:none!important;filter:none!important;}
}
/* « Soyez les bienvenus ! » : même effet arc-en-ciel que « Connexion en cours… » du démarrage */
.authbrand-welcome{
  background:linear-gradient(90deg,#ff0000,#ff9d00,#e8ff00,#00d639,#00d9ff,#5b2cff,#ff00b8,#ff0000)!important;
  background-size:100% 100%!important;
  -webkit-background-clip:text!important;
  background-clip:text!important;
  -webkit-text-fill-color:transparent!important;
  color:transparent!important;
  animation:gvsStartupStatusRainbow 3s linear infinite!important;
}
body.dark:has(#auth.active) .authbrand-welcome{-webkit-text-fill-color:transparent!important;color:transparent!important;}
@media (prefers-reduced-motion:reduce){
  .authbrand-welcome{animation:none!important;filter:none!important;}
}
/* Flèche de modification intégrée visuellement dans la barre de saisie */
.profile-edit-line{position:relative;display:flex;align-items:center}
.profile-edit-line input{padding-right:50px!important}
.profile-edit-line .profile-field-edit{position:absolute;right:5px;top:50%;transform:translateY(-50%);width:32px;height:32px;border:0;background:transparent;border-radius:8px;font-size:25px;z-index:2}
.profile-edit-line .profile-field-edit:hover{transform:translate(1px,-50%);background:rgba(11,63,168,.06)}
body.dark .profile-edit-line .profile-field-edit:hover{background:rgba(255,255,255,.08)}


/* ---------- Compte : titre centré ---------- */
.profile-general-title{display:block!important;text-align:center!important;margin:8px 0 18px!important}
.profile-general-title h2{margin:0!important}

/* ---------- Version 2.2.0 : sous le message du compte, centrée ---------- */
.auth-version{display:block;margin-top:6px;text-align:center;font-size:11px;font-weight:800;color:var(--muted)}

/* ---------- Inscription : tous les boutons en vert clair ---------- */
#inscription .btn{background:var(--green-2);border-color:var(--green-2);color:#fff}
#inscription .btn:hover{background:var(--green);border-color:var(--green)}
#inscription .btn:active{background:var(--green);border-color:var(--green);transform:scale(.98)}


/* ---------- Fermeture : bouton texte « FERMER » en rouge, sans icône X ---------- */
#auth{position:relative}
/* Drapeau + Fermer : intégrés à #appHeader (fixe, blanc, toujours au sommet),
   donc plus jamais soumis à l'animation de fondu de la page #auth — bandeau
   totalement immobile, replié au-dessus du logo. */
.auth-topbar{
  display:flex;align-items:center;justify-content:space-between;
  background:#fff;padding:10px 14px;
  border-bottom:1px solid var(--line);
  box-shadow:0 1px 4px rgba(0,0,0,.06);
}
body.dark .auth-topbar{border-bottom-color:#2A3550}
.benin-flag-float{
  display:flex;align-items:center;justify-content:center;
  background:none;border:0;box-shadow:none;
  animation:none;transform:none;
  user-select:none;-webkit-user-select:none;
}
.benin-flag-float img{width:38px;height:38px;display:block;border-radius:50%;pointer-events:none}
body.dark .benin-flag-float{background:none;border:0;box-shadow:none}
.auth-close-wrap{
  display:flex;align-items:center;margin:0;
}
.auth-close-wrap .auth-close-btn{
  background:none;border:none;padding:6px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;line-height:1;
}
.auth-close-wrap .auth-close-btn:active{opacity:.7;transform:scale(.94)}
.auth-close-icon{width:38px;height:38px;display:block;pointer-events:none;filter:drop-shadow(0 0 6px rgba(220,38,38,.65)) drop-shadow(0 0 14px rgba(220,38,38,.35))}

/* En mode sombre, seul le bloc "Espace Client" (.card) doit passer en sombre :
   le haut de l'écran (drapeau, logo, "Soyez les bienvenus") reste clair. */
/* Espace Client : fond blanc uni (au lieu du bleu ciel --paper de l'app),
   sur toute la zone y compris l'environnement du logo. */
body:has(#auth.active){background:#fff}
body.dark:has(#auth.active){background:#fff}
body.dark:has(#auth.active) .authbrand h2{color:#0B1330}

/* ---------- Inscription : tous les boutons client en vert clair ---------- */
#inscription .btn, body.inscription-page .btn, .inscription-page .btn{background:var(--green-2)!important;border-color:var(--green-2)!important;color:#fff!important}
#inscription .btn:hover, body.inscription-page .btn:hover, .inscription-page .btn:hover{background:var(--green)!important;border-color:var(--green)!important}

/* ---------- Réseaux sociaux de l'inscription : vert clair uniforme ---------- */
#inscription #social .social,
#inscription #socialContact .social{
  background:var(--green-2)!important;
  border-color:var(--green-2)!important;
  color:#fff!important;
}
#inscription #social .social:hover,
#inscription #socialContact .social:hover{
  background:var(--green)!important;
  border-color:var(--green)!important;
}
#inscription #social .social:active,
#inscription #socialContact .social:active{
  background:var(--green)!important;
  border-color:var(--green)!important;
}




/* ---------- Finition GVS+ : démarrage et petits écrans ---------- */

@media (max-width:420px){
  .wrap{padding-left:14px;padding-right:14px}
  .card{padding:15px}
  .authbrand{margin-top:10px;margin-bottom:16px}
  .authbrand .logo{height:205px}
  .authtab{padding:10px 8px;font-size:13px}
  .formrow{grid-template-columns:1fr!important}
}
@media (max-height:700px){
  .authbrand .logo{height:170px}
  .authbrand{gap:8px;margin-bottom:12px}
}

/* Champs éditables : la flèche reste visuellement dans la barre de saisie */
.profile-edit-line{position:relative;display:flex;align-items:stretch}
.profile-edit-line>input{flex:1;min-width:0;padding-right:48px}
.profile-field-edit{flex:0 0 40px;margin-left:-44px;align-self:center;z-index:2}

/* Copie native par appui long sur les textes de contenu */
main.wrap, main.wrap *{-webkit-user-select:text;user-select:text}
button,.btn,.navicon,.navbadge{-webkit-user-select:none;user-select:none}

/* ---------- Cours PDF publiés ---------- */
.course-published-track{display:flex;flex-direction:column;gap:18px;touch-action:auto;}
.course-published-card{background:var(--paper-raised,#fff);border:1px solid var(--line,#d8e2f0);border-radius:20px;overflow:hidden;box-shadow:0 8px 26px rgba(11,63,168,.10)}
.course-cover-link{display:block;width:100%;padding:0;border:0;background:transparent;position:relative;cursor:pointer;text-align:left}
.course-cover-link img{display:block;width:100%;height:auto;max-height:70vh;object-fit:contain;background:#f4f7fb}
.course-pdf-badge{position:absolute;left:12px;bottom:12px;background:rgba(11,63,168,.92);color:#fff;padding:8px 12px;border-radius:999px;font-size:.78rem;font-weight:700}
.course-published-body{padding:14px 16px 16px}
.course-published-body h3{margin:0 0 5px}
.course-gallery{display:flex;flex-direction:column;gap:10px;padding:0 12px 14px}
.course-gallery img{display:block;width:100%;height:auto;max-height:70vh;object-fit:contain;border-radius:14px;background:#f4f7fb}
.light-green{background:#9BE7B2!important;color:#123d24!important;border-color:#7fd69a!important}
.light-green svg{width:18px;height:18px;vertical-align:middle;margin-right:5px}
body.dark .course-published-card{background:#141B2E;border-color:#3A4568}
body.dark .course-cover-link img,body.dark .course-gallery img{background:#0f1730}

/* Mes cours : défilement manuel uniquement */
.course-published-track{display:flex;flex-direction:column;gap:18px;}
.course-download-wrap{padding:12px 16px 0;}
.course-download-btn{min-height:46px;font-weight:700;text-decoration:none;display:flex;align-items:center;justify-content:center;}
.course-gallery-wrap{touch-action:pan-y;margin:0 12px 14px;border-radius:14px;max-height:min(70vh,600px);overflow-y:auto;overflow-x:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;background:#f4f7fb;}
.course-gallery-wrap::-webkit-scrollbar{width:10px}
.course-gallery-wrap::-webkit-scrollbar-track{background:rgba(120,140,170,.18);border-radius:99px}
.course-gallery-wrap::-webkit-scrollbar-thumb{background:var(--green,#55c96b);border-radius:99px;border:2px solid transparent;background-clip:padding-box}
.course-gallery-wrap{scrollbar-width:auto;scrollbar-color:var(--green,#55c96b) rgba(120,140,170,.18)}
.course-gallery-track{display:flex;flex-direction:column;gap:10px;min-height:max-content;}
.course-gallery-track img{display:block;width:100%;height:auto;max-height:none;object-fit:contain;border-radius:14px;background:#f4f7fb;flex:0 0 auto;}
body.dark .course-gallery-wrap,body.dark .course-gallery-track img{background:#0f1730;}

/* Barre de défilement manuelle des cours */
.course-scroll-control{display:flex;align-items:center;gap:10px;padding:0 12px 16px}
.course-scroll-control label{font-size:11px;font-weight:800;color:var(--muted);white-space:nowrap}
.course-scrollbar{width:100%;height:28px;accent-color:var(--green,#55c96b);cursor:pointer;touch-action:pan-x}
.course-scrollbar::-webkit-slider-runnable-track{height:8px;background:rgba(120,140,170,.22);border-radius:99px}
.course-scrollbar::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:24px;height:24px;margin-top:-8px;border-radius:50%;background:var(--green,#55c96b);border:3px solid var(--paper-raised,#fff);box-shadow:0 2px 8px rgba(0,0,0,.2)}
.course-scrollbar::-moz-range-track{height:8px;background:rgba(120,140,170,.22);border-radius:99px}
.course-scrollbar::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--green,#55c96b);border:3px solid var(--paper-raised,#fff)}


/* Mini-jeu */
.game-modal{position:fixed;inset:0;z-index:10020;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;padding:18px}
.game-modal.hidden{display:none}
.game-panel{position:relative;width:min(460px,100%);background:var(--paper-raised,#fff);border-radius:22px;padding:24px;box-shadow:0 20px 60px rgba(0,0,0,.28);text-align:center}
.game-close{position:absolute;top:10px;right:10px;border:0;background:transparent;font-size:20px;cursor:pointer}
.game-icon{font-size:42px}.game-question{font-size:18px;font-weight:800;line-height:1.4}.game-answers{display:grid;gap:10px;margin:18px 0}.game-answer{padding:12px;border:1px solid var(--line,#d8e2f0);border-radius:12px;background:transparent;font-weight:700;cursor:pointer}.game-answer:disabled{opacity:.7}.game-result{min-height:22px}
.game-score{font-weight:800;color:var(--blue,#0B3FA8);margin:2px 0 4px}
.game-answer-correct{border-color:#0E9350!important;background:rgba(14,147,80,.12)!important;color:#0E9350!important;opacity:1!important}
.game-answer-wrong{border-color:#DC2626!important;background:rgba(220,38,38,.10)!important;color:#DC2626!important;opacity:1!important}
body.dark .game-answer-correct{background:rgba(14,147,80,.22)!important;color:#4ADE80!important}
body.dark .game-answer-wrong{background:rgba(220,38,38,.22)!important;color:#F87171!important}
body.dark .game-score{color:#8EACFF}
body.dark .game-panel{background:#141B2E;color:#fff}.game-panel .btn{margin-top:8px}

.ai-panel{max-height:88vh;overflow:auto}.ai-chat-box{max-height:280px;overflow:auto;text-align:left;margin:12px 0;padding:10px;border:1px solid var(--line,#d8e2f0);border-radius:14px;background:rgba(0,0,0,.025)}.ai-message{padding:9px 11px;border-radius:12px;margin:7px 0;white-space:pre-wrap;line-height:1.45}.ai-message.user{background:#e8f5e9;margin-left:12%}.ai-message.bot{background:#eef3ff;margin-right:12%}.ai-question{width:100%;resize:vertical;box-sizing:border-box;border:1px solid var(--line,#d8e2f0);border-radius:12px;padding:11px;font:inherit;background:var(--paper-raised,#fff);color:inherit}.ai-status{min-height: 20px;margin-top:8px}body.dark .ai-message.user{background:#173a2a}body.dark .ai-message.bot{background:#202b49}

/* Jeux : icône souriante, professionnelle et discrètement animée */
.game-icon-animated{position:relative;overflow:visible;animation:gvsGameFloat 2.6s ease-in-out infinite;transform-origin:center}
.game-icon-animated .game-smile{position:absolute;right:-2px;bottom:-4px;font-size:13px;font-weight:900;line-height:1;background:#fff;border-radius:50%;padding:1px 3px;box-shadow:0 2px 6px rgba(0,0,0,.16);animation:gvsGameSmile 2.6s ease-in-out infinite}
@keyframes gvsGameFloat{0%,100%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-3px) rotate(-2deg)}}
@keyframes gvsGameSmile{0%,100%{transform:scale(1)}50%{transform:scale(1.12)}}

/* IA : icône robot moderne et animée */
.ai-icon-animated{background:linear-gradient(135deg,rgba(123,231,168,.24),rgba(75,216,137,.14)) !important;color:#0E9350 !important}
.ai-icon-animated svg{animation:gvsAiPulse 2.8s ease-in-out infinite}
@keyframes gvsAiPulse{0%,100%{transform:scale(1);filter:drop-shadow(0 0 0 rgba(14,147,80,0))}50%{transform:scale(1.08);filter:drop-shadow(0 3px 6px rgba(14,147,80,.22))}}
body.dark .ai-icon-animated{color:#7BE7A8 !important}

/* Mes cours : chaque cours est un groupe indépendant. Le défilement utilise
   désormais le défilement normal de la page, sans zone interne qui bloque le geste tactile. */
.course-groups-list{display:flex;flex-direction:column;gap:22px;padding:4px 0 28px;}
.course-group-card{background:var(--paper-raised,#fff);border:1px solid var(--line,#d8e2f0);border-radius:22px;overflow:hidden;box-shadow:0 8px 26px rgba(11,63,168,.10);}
.course-group-header{padding:16px 16px 12px;border-bottom:1px solid var(--line,#d8e2f0);background:linear-gradient(180deg,rgba(85,201,107,.10),transparent);}
.course-group-number{font-size:11px;font-weight:800;letter-spacing:.12em;color:var(--green,#55c96b);margin-bottom:4px;}
.course-group-header h3{margin:0;font-size:18px;line-height:1.3;}
.course-group-count{display:inline-block;margin-top:6px;font-size:12px;color:var(--muted,#68758a);}
.course-pages-group{display:flex;flex-direction:column;gap:10px;padding:12px;max-height:72vh;overflow-y:auto;overscroll-behavior:contain;scroll-behavior:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y;}
.course-scroll-toggle{margin:0 12px 10px;font-size:13px;min-height:42px;}
.course-page{position:relative;margin:0;padding:0;border-radius:14px;overflow:hidden;background:#f4f7fb;box-shadow:0 2px 10px rgba(11,63,168,.06);}
.course-page img{display:block;width:100%;height:auto;max-height:none;object-fit:contain;background:#f4f7fb;}
.course-page-number{position:absolute;right:9px;bottom:9px;padding:4px 8px;border-radius:999px;background:rgba(0,0,0,.58);color:#fff;font-size:11px;font-weight:700;}
.course-group-card .course-cover-link{margin:12px 12px 0;border-radius:14px;overflow:hidden;}
.course-group-card .course-cover-link img{display:block;width:100%;height:auto;object-fit:contain;}
.course-group-card .course-download-wrap{padding:0 12px 14px;}
body.dark .course-group-card{background:#141B2E;border-color:#3A4568;}
body.dark .course-group-header{border-color:#3A4568;background:linear-gradient(180deg,rgba(85,201,107,.12),transparent);}
body.dark .course-page,body.dark .course-page img{background:#0f1730;}

/* Bouton WhatsApp des cours : vrai lien ouvrant une nouvelle session/onglet */
.course-download-btn{cursor:pointer;text-decoration:none;}
.course-download-btn svg{width:18px;height:18px;vertical-align:middle;margin-right:6px;}

/* Nouvelle présentation des cours : une page à la fois, navigation manuelle. */
.course-vertical-pages{margin:12px;display:flex;flex-direction:column;gap:14px;}
.course-vertical-pages .course-page-view{display:block;position:relative;width:100%;overflow:hidden;border-radius:16px;background:#f4f7fb;scroll-margin-top:12px;}
.course-vertical-pages .course-page-view img{display:block;width:100%;height:auto;max-height:none;object-fit:contain;background:#f4f7fb;}
body.dark .course-vertical-pages .course-page-view,body.dark .course-vertical-pages .course-page-view img{background:#0f1730;}


/* ---------- Paramètres globaux ---------- */
.settings-modal{position:fixed;inset:0;z-index:12000;background:rgba(5,12,25,.62);display:flex;align-items:flex-start;justify-content:center;padding:18px;overflow-y:auto;backdrop-filter:blur(4px)}
.settings-modal.hidden{display:none}
.settings-panel{position:relative;width:min(560px,100%);margin:auto;background:var(--paper-raised,#fff);color:var(--ink,#10213f);border:1px solid var(--line,#d8e2f0);border-radius:24px;box-shadow:0 24px 70px rgba(0,0,0,.28);padding:20px}
.settings-close{position:absolute;right:12px;top:10px;width:40px;height:40px;border:0;background:transparent;border-radius:50%;font-size:30px;line-height:1;cursor:pointer;color:var(--ink)}
.settings-head{display:flex;gap:12px;align-items:center;padding:4px 38px 16px 2px;border-bottom:1px solid var(--line)}
.settings-icon{width:48px;height:48px;border-radius:15px;display:grid;place-items:center;background:var(--green,#55c96b);color:#fff;font-size:25px}
.settings-head h2{margin:0 0 4px}.settings-head p{margin:0;color:var(--muted);font-size:13px}
.settings-list{display:flex;flex-direction:column;gap:0}
.settings-row{min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 2px;border-bottom:1px solid var(--line)}
.settings-row b{display:block;font-size:14px}.settings-row small{display:block;color:var(--muted);font-size:12px;margin-top:3px}
.settings-row select{min-width:120px;max-width:170px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink)}
.settings-action{cursor:pointer}.settings-action>span{font-size:26px;color:var(--muted)}
.settings-about{padding:18px 2px 4px}.settings-about h3{margin:0 0 8px}.settings-about p{margin:5px 0;color:var(--muted);font-size:12px;line-height:1.5}.settings-version{margin-top:14px;padding:12px;border-radius:12px;background:rgba(85,201,107,.12);font-size:13px}
.switch{position:relative;display:inline-flex;width:48px;height:28px;flex:0 0 auto}.switch input{opacity:0;width:0;height:0}.switch span{position:absolute;inset:0;background:#aeb8ca;border-radius:999px;cursor:pointer;transition:.2s}.switch span:before{content:"";position:absolute;width:22px;height:22px;left:3px;top:3px;background:#fff;border-radius:50%;box-shadow:0 2px 5px rgba(0,0,0,.2);transition:.2s}.switch input:checked+span{background:var(--green,#55c96b)}.switch input:checked+span:before{transform:translateX(20px)}
body.settings-open{overflow:hidden}
/* Les cours occupent naturellement la page : pas de zone de défilement interne. */
.course-carousel-wrap{height:auto;max-height:none;overflow:visible;scroll-behavior:auto}
.course-vertical-pages{scroll-margin-top:16px}
.course-page-view{scroll-margin-top:16px}
.course-page-number{position:absolute;right:10px;bottom:10px;background:rgba(0,0,0,.58);color:#fff;padding:6px 9px;border-radius:999px;font-size:11px;font-weight:700}
@media (max-width:520px){.settings-modal{padding:10px}.settings-panel{border-radius:20px;padding:16px}.settings-row{align-items:flex-start}.settings-row select{min-width:105px}.settings-head{padding-right:32px}}

/* Barre supérieure : paramètres simple + notifications */
.topstrip-icons{display:flex;align-items:center;gap:8px;}
.top-simple-icon{position:relative;width:40px;height:40px;border:0;background:transparent;border-radius:12px;color:inherit;display:grid;place-items:center;cursor:pointer;padding:0;transition:color .15s ease;}
.top-simple-icon .navicon{display:grid;place-items:center;}
.top-simple-icon svg{width:21px;height:21px;transition:transform .15s ease;}
.top-simple-icon:active,.top-simple-icon.icon-pressed{color:var(--icon-active);}
.top-simple-icon:active svg,.top-simple-icon.icon-pressed svg{stroke:var(--icon-active);}
.top-simple-icon:active .settings-simple-icon,.top-simple-icon.icon-pressed .settings-simple-icon{color:var(--icon-active);}
.top-simple-icon:active .top-icon-label,.top-simple-icon.icon-pressed .top-icon-label{color:var(--icon-active);}
.top-simple-icon .navbadge{position:absolute;top:0;right:-2px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#e53935;color:#fff;font-size:9px;font-weight:800;display:grid;place-items:center;border:2px solid var(--paper,#fff);}
.top-simple-icon .navbadge.hidden{display:none;}
.admin-section-title,.admin-section-title h2{justify-content:center;text-align:center;}
.admin-section-title{position:relative;}
.admin-section-title #syncBadgeWrap{position:absolute;right:0;}
.settings-version{text-align:center;}

/* Finition barre supérieure et paramètres */
.settings-simple-icon{font-size:21px;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.settings-icon{font-size:24px;line-height:1}
.settings-version{text-align:center}
.admin-section-title h2{text-align:center}
.admin-section-title{justify-content:center}

/* Dictionnaire dans Paramètres */
.settings-dictionary{align-items:flex-start;}
.dictionary-box{width:100%;margin-top:8px;}
.dictionary-search{display:flex;gap:8px;align-items:center;}
.dictionary-search input{flex:1;min-width:0;}
.dictionary-result{margin-top:8px;padding:10px 12px;border-radius:10px;background:rgba(0,0,0,.04);font-size:.92rem;line-height:1.45;}
body.dark .dictionary-result{background:rgba(255,255,255,.07);}
@media (max-width:600px){.dictionary-search{flex-direction:column;align-items:stretch}.dictionary-search .btn{width:100%}.settings-dictionary{display:block;}}

/* Calculatrice */
.calculator-panel{max-width:420px;}
.calculator-box{margin-top:14px;}
.calculator-display{width:100%;box-sizing:border-box;text-align:right;font-family:var(--font-mono);font-size:24px;font-weight:700;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);margin-bottom:12px;}
.calculator-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;}
.calculator-grid button{border:1px solid var(--line);border-radius:12px;padding:14px;font-size:18px;font-weight:800;background:var(--paper);color:var(--ink);cursor:pointer;}
.calculator-grid button:active{transform:scale(.97);}
.calculator-grid .span-2{grid-column:span 2;}
.calculator-grid .equal{background:var(--blue);color:#fff;}

/* GVS+ header + outils */
.brandword{display:inline-flex;align-items:center;gap:0;border:0;background:transparent;font:900 22px var(--font-display);padding:0 4px;cursor:pointer;white-space:nowrap;}
.gvs-letter{display:inline-block;animation:gvsLetterZoom 2.4s ease-in-out infinite;}
.gvs-letter.g{color:#16a34a;animation-delay:0s}.gvs-letter.v{color:#eab308;animation-delay:.15s}.gvs-letter.s{color:#dc2626;animation-delay:.30s}.gvs-letter.plus{color:#2563eb;animation-delay:.45s}
@keyframes gvsLetterZoom{0%,100%{transform:scale(1)}50%{transform:scale(1.22)}}
.brand-cluster{display:flex;align-items:center;gap:20px;min-width:0}
.topstrip-icons{display:flex;align-items:flex-start;gap:8px;margin-left:auto}
.top-icon-group,.top-simple-icon{flex-direction:column}
.top-simple-icon{height:50px;width:58px;display:flex;align-items:center;justify-content:center;gap:3px}
.top-simple-icon .top-icon-label{font-size:9px;font-weight:800;line-height:1;white-space:nowrap;color:var(--muted)}
.top-simple-icon .navbadge{top:0;right:7px}
.live-datetime{font-size:12px;font-weight:900;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px;min-width:150px;text-align:center;background:#ffd6d6;color:#111;padding:6px 10px;border-radius:10px;box-sizing:border-box}
.calendar-picker{width:100%;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);font-size:16px}.calendar-result{margin-top:12px;padding:14px;border-radius:12px;background:var(--paper);font-weight:700;text-align:center}
.dictionary-panel{max-width:420px}.dictionary-input{width:100%;box-sizing:border-box;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);font-size:16px;margin-top:14px}.dictionary-result{margin-top:12px;padding:14px;border-radius:12px;background:var(--paper);font-size:14px;line-height:1.5;min-height:48px}
.cv-photo-wrap{text-align:center;margin-bottom:14px}.cv-photo{width:110px;height:110px;border-radius:50%;object-fit:cover;background:var(--paper);border:2px solid var(--line);display:block;margin:0 auto 10px}.cv-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.cv-grid input,.cv-grid textarea{width:100%;padding:11px;border:1px solid var(--line);border-radius:10px;background:var(--paper-raised);color:var(--ink);font:inherit}.cv-grid textarea{min-height:90px;grid-column:1/-1;resize:vertical}.cv-status{text-align:center;margin-top:8px}.ai-input-row{display:flex;gap:8px;align-items:stretch}.ai-input-row .ai-question{flex:1}.ai-mic-btn{width:50px;border:1px solid var(--line);border-radius:12px;background:var(--paper-raised);font-size:22px;cursor:pointer}.ai-mic-btn:active{transform:scale(.94)}
@media(max-width:520px){.brandword{font-size:20px}.live-datetime{min-width:132px;max-width:150px;font-size:10px}.cv-grid{grid-template-columns:1fr}.cv-grid textarea{grid-column:auto}.top-simple-icon{width:54px}}
@media(max-width:380px){.bottomnav button{font-size:7.6px;letter-spacing:-.4px}.bottomnav button .navicon{font-size:21px}.bottomnav button .navicon svg{width:20px;height:20px}}

body.dark .live-datetime{background:#20293a;color:#f4f7ff;}
body:not(.dark) .live-datetime{background:#ffd6d6;color:#173b7a;}
.cv-signature{margin-top:12px;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--paper-raised)}
.cv-signature canvas{width:100%;height:150px;display:block;background:#fff;border-radius:8px;touch-action:none;border:1px dashed #bbb}
.cv-signature-actions{display:flex;gap:8px;margin-top:8px}
.inscription-section{margin:18px 0 8px;font-weight:900;font-size:16px}
.inscription-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.inscription-grid .full{grid-column:1/-1}
.inscription-help{font-size:12px;color:var(--muted);margin-top:4px}
@media(max-width:650px){.inscription-grid{grid-template-columns:1fr}}
/* Date et heure : sans fond, noir en clair, blanc en sombre, gras et italique */
.live-datetime,
body.dark .live-datetime,
body:not(.dark) .live-datetime{
  background: transparent !important;
  color: #000 !important;
  font-weight: 900 !important;
  font-style: italic !important;
  border-radius: 0 !important;
  padding: 0 !important;
}
body.dark .live-datetime{ color: #fff !important; }
.live-datetime-scroll{
  font-weight: 900 !important;
  font-style: italic !important;
  color: #000 !important;
}
body.dark .live-datetime-scroll{ color: #fff !important; }

/* ═══════════════════════════════════════════════
   FORMULAIRE D'INSCRIPTION INTÉGRÉ GVS+
   ═══════════════════════════════════════════════ */
/* -- Progression -- */
.gf-prog-card{padding:14px 16px}
.gf-prog-top{display:flex;justify-content:space-between;font-weight:800;font-size:13px;margin-bottom:8px}
.gf-bar-track{height:7px;background:#FEF3C7;border-radius:99px;overflow:hidden}
.gf-bar-track div{height:100%;background:#D97706;transition:width .35s ease;border-radius:99px}
.gf-step-row{display:flex;justify-content:space-between;margin-top:8px;font-size:10px;font-weight:700;text-transform:uppercase;color:var(--muted)}
.gf-step-row span{flex:1;text-align:center}
.gf-step-row span:first-child{text-align:left}
.gf-step-row span:last-child{text-align:right}
.gf-step-row .gf-cur{color:#D97706}

/* -- Sections -- */
.gf-step{animation:gfFade .22s ease}
@keyframes gfFade{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
.gf-sh{display:flex;gap:10px;align-items:flex-start;margin-bottom:18px}
.gf-num{width:30px;height:30px;border-radius:50%;background:#FEF3C7;color:#92400E;display:grid;place-items:center;font-weight:900;flex:none;font-size:14px}
.gf-sh h3{margin:0;font-size:16px}
.gf-sh p{margin:2px 0 0}

/* -- Labels & champs -- */
.gf-lbl{display:block;font-weight:700;font-size:13px;margin-bottom:12px}
.gf-hint{font-weight:400;color:var(--muted)}
.gf-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
#inscription input:not([type=radio]):not([type=checkbox]):not([type=file]),
#inscription select,#inscription textarea{
  display:block;width:100%;margin-top:6px;
  border:1.5px solid var(--line);border-radius:10px;padding:12px;
  font:inherit;font-size:14px;background:var(--paper-raised);color:var(--ink);
  outline:none;box-sizing:border-box;
}
#inscription input:focus,#inscription select:focus,#inscription textarea:focus{
  border-color:#D97706;box-shadow:0 0 0 3px rgba(217,119,6,.13)
}
.gf-radio-group{display:flex;gap:12px;margin-top:8px}
.gf-radio{display:flex;align-items:center;gap:6px;font-weight:600;font-size:13px;cursor:pointer}
.gf-radio input{width:auto;margin:0}

/* -- Choix de formation -- */
.gf-choices{display:grid;gap:9px;margin-bottom:12px}
.gf-choice{display:block;border:1.5px solid var(--line);border-radius:13px;padding:12px 14px;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.gf-choice input[type=radio]{display:none}
.gf-choice-body{display:flex;align-items:center;gap:10px}
.gf-choice-icon{font-size:22px;flex:none}
.gf-choice-body b{display:block;font-size:13.5px}
.gf-choice-body small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.gf-choice-body{flex:1}
.gf-price-badge{background:#FEF3C7;color:#92400E;font-weight:800;font-size:11px;padding:4px 8px;border-radius:20px;white-space:nowrap;flex:none}
.gf-price-badge.bourse{background:#D1FAE5;color:#065F46}
.gf-choice-sel,.gf-choice:has(input:checked){border-color:#D97706;box-shadow:0 0 0 2.5px rgba(217,119,6,.2);background:#FFFBEB}
body.dark .gf-choice-sel,body.dark .gf-choice:has(input:checked){background:#2A1F00}
.gf-choice-bourse.gf-choice-sel,.gf-choice-bourse:has(input:checked){border-color:#10B981;box-shadow:0 0 0 2.5px rgba(16,185,129,.2);background:#ECFDF5}
body.dark .gf-choice-bourse.gf-choice-sel{background:#032016}
.gf-amount-box{display:flex;justify-content:space-between;align-items:center;background:#0B2545;color:#fff;border-radius:12px;padding:14px 16px;margin-top:4px}
.gf-amount-box span{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;opacity:.82}
.gf-amount-box b{font-weight:900;font-size:20px;color:#FCD34D}

/* -- Paiement -- */
.gf-pay-block{padding:13px;border:1.5px solid var(--line);border-radius:13px;margin-bottom:12px}
.gf-pay-title{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:10px}
.gf-operators{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:8px}
.gf-op{border:2px solid var(--line);border-radius:12px;padding:11px 6px;cursor:pointer;text-align:center;background:var(--paper-raised);display:flex;flex-direction:column;align-items:center;gap:3px;font-family:inherit}
.gf-op b{font-size:13px;font-weight:900;display:block}
.gf-op span{font-size:10px;color:var(--muted);font-weight:600}
.gf-op.mtn{border-color:#F59E0B}.gf-op.mtn b{color:#B45309}
.gf-op.mtn.selected{background:#FFFBEB;border-color:#D97706}
.gf-op.moov{border-color:#3B82F6}.gf-op.moov b{color:#1D4ED8}
.gf-op.moov.selected{background:#EFF6FF;border-color:#3B82F6}
.gf-op.celtiis{border-color:#10B981}.gf-op.celtiis b{color:#065F46}
.gf-op.celtiis.selected{background:#ECFDF5;border-color:#10B981}
body.dark .gf-op.mtn.selected{background:#2A1F00}
body.dark .gf-op.moov.selected{background:#0D1F3C}
body.dark .gf-op.celtiis.selected{background:#032016}
.gf-op-box{background:var(--paper-raised);border:1.5px solid var(--line);border-radius:10px;padding:11px;margin-top:6px}
.gf-op-detail-row{display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:4px 0;border-bottom:1px solid var(--line)}
.gf-op-detail-row:last-child{border:0}
.gf-op-detail-row span{color:var(--muted);font-weight:600}
.gf-op-detail-row b{font-weight:900}
.gf-kkia-btn{display:block;font-size:14px;padding:14px;text-align:center;text-decoration:none;border-radius:11px}

/* -- Preuve -- */
.gf-proof-choices,.gf-rpa-choices{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.gf-radio-big{display:flex;align-items:center;gap:10px;padding:11px 14px;border:1.5px solid var(--line);border-radius:11px;cursor:pointer;font-weight:600;font-size:13.5px}
.gf-radio-big input{width:auto;flex:none}
.gf-proof-preview img{display:block;max-width:100%;max-height:180px;border-radius:10px;margin-top:8px;border:1px solid var(--line)}

/* -- Récap -- */
.gf-summary{background:#FEF3C7;border-radius:11px;padding:14px;font-size:13.5px}
body.dark .gf-summary{background:#2A1F00}
.gf-summary p{margin:5px 0}
.gf-check-consent{display:flex;gap:10px;align-items:flex-start;font-weight:600;font-size:13px;margin-top:12px;cursor:pointer}
.gf-check-consent input{flex:none;margin-top:3px;width:auto}
.gf-warn{background:#FEE2E2;color:#991B1B;font-weight:700;padding:11px 13px;border-radius:10px;margin-top:10px;font-size:13px}

/* -- Navigation -- */
.gf-nav{display:flex;gap:10px}
.gf-nav .btn{flex:1}

/* -- Succès -- */
.gf-ok-icon{width:56px;height:56px;border-radius:50%;background:#10B981;color:#fff;display:grid;place-items:center;font-size:28px;margin:0 auto 4px}

@media(max-width:420px){.gf-row{grid-template-columns:1fr}.gf-operators{grid-template-columns:repeat(3,1fr)}}


/* Nouvelles fonctions inscription / statut */
.inscription-schedule-card{margin-bottom:14px}.inscription-schedule-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.schedule-item{padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--paper-raised);display:flex;flex-direction:column;gap:5px}.schedule-item b{font-size:15px}.schedule-item span{font-weight:800}.schedule-item small{color:var(--ink-soft)}.registration-status-box{padding:14px;border-radius:14px;border:1px solid var(--line);background:var(--paper-raised);text-align:center}.registration-status{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:6px 11px;font-weight:900;font-size:12px}.registration-status.pending{background:#FEF3C7;color:#92400E}.registration-status.valid{background:#D1FAE5;color:#065F46}.registration-status.rejected{background:#FEE2E2;color:#991B1B}.admin-registration-item{display:flex;justify-content:space-between;gap:12px;align-items:center}.dashboard-registration-card .section-title h3{margin:0}.brandword{font-size:34px}@media(max-width:520px){.brandword{font-size:31px}.inscription-schedule-grid{grid-template-columns:1fr}.admin-registration-item{align-items:flex-start;flex-direction:column}}

.gf-choice-disabled{opacity:.68;filter:saturate(.55);cursor:not-allowed}.gf-choice-disabled .gf-price-badge{opacity:.8}
/* Corrections GVS+ demandées */
.brandword{color:#0B3FA8 !important;font-size:34px !important;font-weight:900 !important}
body.dark .brandword{color:#4ADE80 !important}
.startup-logo{height:210px !important;max-width:86vw !important;animation:none !important;transform:none !important}
.updates-panel{max-height:88vh;overflow:auto}
.updates-list{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.update-item{padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--paper-raised)}
.update-item ul{margin:8px 0 0 20px;padding:0}.update-item li{margin:4px 0}

/* Date et heure : toujours blanc en mode sombre */
body.dark #liveDateTime, body.dark #liveDateTime .live-datetime-scroll { color:#fff !important; }

/* GVS+ — accès administration présenté comme un bouton */
.admin-access-button{display:inline!important;min-width:0!important;padding:0!important;margin:0!important;border:0!important;background:transparent!important;box-shadow:none!important;color:inherit!important;text-decoration:none!important;font:inherit!important;font-weight:700!important;cursor:pointer!important}.admin-access-button:hover,.admin-access-button:focus,.admin-access-button:active{color:inherit!important;background:transparent!important;border:0!important;box-shadow:none!important;text-decoration:none!important;outline:none}.admin-access-button:focus-visible{outline:1px dotted currentColor!important;outline-offset:3px}
.msg-users-list{display:grid;gap:8px;margin-top:10px}
.msg-user-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px;border:1px solid var(--border);border-radius:14px;background:var(--card)}
.msg-user-main{display:flex;align-items:center;gap:10px;min-width:0}
.msg-user-avatar{width:42px;height:42px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:var(--soft);font-weight:800;flex:none}
.msg-user-name{font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msg-user-online{font-size:12px;color:#168447}


/* ---------- recherche globale GVS+ ---------- */
.search-result-card{
  display:block;width:100%;text-align:left;
  appearance:none;-webkit-appearance:none;
  border:1px solid var(--line);background:var(--paper-raised);
  color:var(--ink);border-radius:14px;padding:15px 16px;margin:0 0 10px;
  cursor:pointer;box-shadow:var(--shadow-sm);
  transition:transform .15s ease,filter .15s ease,border-color .15s ease;
}
.search-result-card:hover{transform:translateY(-1px);border-color:var(--blue-2)}
.search-result-card:active{transform:scale(.99);filter:brightness(.98)}
.search-result-card h3{font-size:16px;margin:4px 0 5px}
.search-result-card p{font-size:13px;line-height:1.5;color:var(--ink-soft);margin:0}
.search-result-type{
  display:inline-block;font-family:var(--font-mono);font-size:10px;
  letter-spacing:.05em;color:var(--green);font-weight:700;
}
.search-result-open{
  display:block;margin-top:9px;font-size:12px;font-weight:700;color:var(--blue);
}
body.dark .search-result-card{background:var(--paper-raised)}


/* GVS+ / drapeau : affichage totalement statique */
.benin-flag-float{background:none !important;border:0 !important;box-shadow:none !important;border-radius:0 !important;}
.brandword,.brandword:active{color:#0B3FA8 !important;animation:none !important;transform:none !important;text-shadow:none !important;}
.gvs-letter{animation:none !important;transform:none !important;}
/* GVS+ : bleu en mode clair, vert sombre en mode sombre */
.brandword,
.brandword:active,
.brandword:hover,
.brandword:focus-visible { color:#0B3FA8 !important; }
body.dark .brandword,
body.dark .brandword:active,
body.dark .brandword:hover,
body.dark .brandword:focus-visible { color:#4ADE80 !important; }

.msg-actions{display:inline-flex;align-items:center;gap:5px;align-self:flex-end;margin-left:auto}.msg-delete,.msg-edit{border:0;background:transparent;cursor:pointer;opacity:.85;font-size:.9em;padding:1px 3px;line-height:1}.msg-delete:hover,.msg-edit:hover{opacity:1;transform:scale(1.08)}.msg-edited{font-size:10px;opacity:.7;margin-left:4px}


/* Photo du Directeur général dans la carte de discussion */
#msgDirectorAvatar{
  width:92px;height:92px;border-radius:50%;
  margin:0 auto 10px;
  overflow:hidden;
  display:flex;align-items:center;justify-content:center;
}
#msgDirectorAvatar .admin-message-avatar{
  width:100%;height:100%;
  border-radius:50%;
  object-fit:cover;
  display:block;
}


/* Suppression des demandes/conversations depuis la liste d'administration */
.admin-msg-row-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto;}
.admin-conv-delete{display:inline-flex!important;align-items:center;justify-content:center;width:34px;height:34px;min-width:34px;padding:0!important;border:0;cursor:pointer;font-size:17px;line-height:1;border-radius:9px;}
.admin-conv-delete:hover{filter:brightness(.92);}

/* ============================================================
   GVS+Communication — module Messages façon Messenger
   Ajout visuel dans l'onglet #messagerie sans remplacer
   la messagerie cloud existante de GVS+.
   ============================================================ */
#messagerie .section-title h2{display:flex;align-items:center;gap:8px}
#messagerie .section-title h2::before{content:'💬';font-size:1.05em}
#messagerie #msgUsersCard,
#messagerie #msgPeerChatCard,
#messagerie #msgFriendCard,
#messagerie #msgChatCard{border-radius:18px;box-shadow:0 8px 28px rgba(18,54,184,.08)}
#messagerie #msgUsersCard .section-title,
#messagerie #msgChatCard>div:first-child,
#messagerie #msgPeerChatCard>div:first-child{padding:2px 2px 0}
#messagerie .msg-users-list{gap:7px;max-height:420px;overflow:auto;padding:2px}
#messagerie .msg-user-item{padding:12px;border-radius:14px;transition:.18s ease;background:var(--card)}
#messagerie .msg-user-item:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(18,54,184,.08);border-color:var(--blue)}
#messagerie .msg-user-main{flex:1}
#messagerie .msg-user-avatar{width:46px;height:46px;border:2px solid rgba(18,54,184,.12)}
#messagerie .msg-user-name{font-size:14px}
#messagerie .msg-user-online{display:flex;align-items:center;gap:4px;margin-top:2px}
#messagerie .msg-user-online::before{content:'🟢';font-size:9px}
#messagerie .msg-thread{min-height:270px;max-height:52vh;padding:14px 8px;background:linear-gradient(180deg,#f7f9fd,#eef3fb);border-radius:14px;scroll-behavior:smooth}
#messagerie .msg-bubble{max-width:min(78%,520px);padding:10px 13px;border-radius:17px;font-size:14px;box-shadow:0 2px 8px rgba(0,0,0,.04)}
#messagerie .msg-bubble.msg-in{border-bottom-left-radius:5px;background:#fff}
#messagerie .msg-bubble.msg-out{border-bottom-right-radius:5px}
#messagerie .msg-input-row{background:#fff;border:1px solid var(--line);padding:7px;border-radius:25px;margin-top:10px!important}
#messagerie .msg-input-row input{border:0!important;outline:0;background:transparent;min-width:0}
#messagerie .msg-input-row .btn{border-radius:20px;min-height:38px}
#messagerie .msg-input-row .mic-btn{width:40px;padding:0;display:grid;place-items:center}
#messagerie .msg-input-row .mic-btn svg{width:20px;height:20px}
#messagerie .voice-rec{border-radius:12px;margin-top:8px}
#messagerie #msgChatCard,
#messagerie #msgPeerChatCard{overflow:hidden}
#messagerie #msgChatCard>div:first-child,
#messagerie #msgPeerChatCard>div:first-child{padding:5px 4px 2px}
#messagerie #msgAdminOnlineBadge{white-space:nowrap}
#messagerie #msgFriendCard{text-align:center;padding:24px}
#messagerie #msgFriendCard .admin-profile-placeholder{box-shadow:0 4px 18px rgba(18,54,184,.15)}
#messagerie #msgGlobalStatsCard{background:linear-gradient(135deg,#fff,#f6f9ff)}
@media (min-width:820px){
  #messagerie #msgUsersCard{max-height:500px}
  #messagerie #msgPeerChatCard,#messagerie #msgChatCard{min-height:430px}
}
@media (max-width:600px){
  #messagerie .section-title{gap:8px}
  #messagerie .msg-thread{min-height:300px;max-height:55vh;padding:10px 5px}
  #messagerie .msg-bubble{max-width:86%;font-size:13px}
  #messagerie .msg-user-item{padding:10px}
  #messagerie .msg-user-avatar{width:42px;height:42px}
  #messagerie .msg-input-row{gap:4px}
  #messagerie .msg-input-row .btn.amber{padding-left:12px;padding-right:12px}
}

.peer-chat-tools{position:relative;display:flex;align-items:center;gap:5px}.peer-chat-menu{position:absolute;right:0;top:44px;z-index:50;min-width:210px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.14);padding:6px}.peer-chat-menu button{display:block;width:100%;text-align:left;background:transparent;border:0;padding:10px 12px;border-radius:8px;color:var(--ink);cursor:pointer}.peer-chat-menu button:hover{background:var(--soft)}.msg-blocked-notice{background:#fff0f0;border:1px solid #f1b5b5;color:#a32828;border-radius:10px;padding:9px 11px;font-size:12px;text-align:center;margin-bottom:8px}


/* ============================================================
   V114 — Messages : nouvelle interface + actions fiables
   Les boutons admin n'utilisent plus d'onclick dynamique avec des
   guillemets imbriqués. L'interface est volontairement très visible.
   ============================================================ */
.admin-messages-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.admin-messages-title-icon{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:11px;background:#eef7ff;font-size:18px}
.admin-messages-live{font-size:10px;letter-spacing:.08em;border-radius:999px;padding:5px 9px;background:#e9f8ef;color:#168447;font-weight:800}
#msgAdminConvList{display:grid;gap:12px}
.admin-msg-card{border:1px solid var(--line);border-radius:18px;background:var(--card);overflow:visible;box-shadow:0 5px 18px rgba(18,54,184,.06);transition:.18s ease}
.admin-msg-card:hover{box-shadow:0 9px 26px rgba(18,54,184,.10)}
.admin-msg-card.is-open{border-color:rgba(18,54,184,.28)}
.admin-msg-card-head{display:flex;align-items:center;gap:12px;padding:14px;cursor:pointer;outline:none;border-radius:18px}
.admin-msg-card-head:focus-visible{box-shadow:inset 0 0 0 3px rgba(18,54,184,.18)}
.admin-msg-avatar{width:48px;height:48px;min-width:48px;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:linear-gradient(135deg,#e9f0ff,#dff7ed);color:#1236b8;font-weight:900;font-size:18px}
.admin-msg-avatar img{width:100%;height:100%;object-fit:cover}
.admin-msg-main{min-width:0;flex:1}
.admin-msg-name-line{display:flex;align-items:center;gap:8px;min-width:0}
.admin-msg-name-line strong{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-msg-new{font-size:9px;font-weight:900;letter-spacing:.05em;padding:4px 7px;border-radius:999px;background:#e8f8ef;color:#168447;flex:none}
.admin-msg-email,.admin-msg-preview{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.admin-msg-preview{color:var(--ink);opacity:.78}
.admin-msg-head-right{display:flex;align-items:center;gap:8px;flex:none}
.admin-msg-status{font-size:10px;font-weight:800;padding:5px 8px;border-radius:999px;white-space:nowrap}
.admin-msg-status.pending{background:#fff5df;color:#9a6500}.admin-msg-status.accepted{background:#e9f8ef;color:#168447}.admin-msg-status.rejected{background:#fff0f0;color:#b32626}
.admin-msg-chevron{font-size:20px;line-height:1;color:#5e6a85;width:24px;text-align:center}
.admin-msg-request-actions{display:flex;gap:8px;align-items:center;padding:0 14px 14px}
.admin-msg-request-actions.compact{justify-content:flex-end;padding-top:0}
.admin-msg-action{min-height:42px;flex:1;justify-content:center;border-radius:12px;font-weight:800}
.admin-msg-action.admin-msg-delete{flex:0 0 auto}
.admin-msg-details{border-top:1px solid var(--line);padding:12px;background:linear-gradient(180deg,#fbfcff,#f5f8fd);border-radius:0 0 18px 18px}
.admin-msg-thread{max-height:52vh;min-height:170px;margin:0!important}
.admin-msg-reply-row{margin-top:10px!important}
.admin-msg-reply-row input{min-width:0}
.admin-msg-waiting{text-align:center;padding:10px;color:var(--muted);font-size:12px}
.admin-msg-empty{display:grid;place-items:center;text-align:center;padding:34px 18px;color:var(--muted);border:1px dashed var(--line);border-radius:16px}
.admin-msg-empty-icon{font-size:30px;margin-bottom:6px}
.admin-msg-empty span{font-size:12px;margin-top:3px}

/* Client-side Messages: rendre le module immédiatement identifiable comme une messagerie. */
#messagerie>.section-title{padding:4px 2px 10px}
#messagerie>.section-title h2{font-size:26px}
#messagerie #msgUsersCard{border:1px solid rgba(18,54,184,.10)}
#messagerie #msgUsersList{display:grid;gap:8px}
#messagerie .msg-user-item{display:flex;align-items:center;gap:10px;border:1px solid var(--line);background:#fff;padding:11px;border-radius:15px}
#messagerie .msg-user-main{display:flex;align-items:center;gap:10px;min-width:0}
#messagerie .msg-user-main>div:last-child{min-width:0}
#messagerie .msg-user-name{font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#messagerie .msg-user-item>.btn{margin-left:auto;flex:none}
#messagerie #msgFriendCard{border:1px solid rgba(18,54,184,.12);background:linear-gradient(145deg,#fff,#f5f8ff)}
#messagerie #msgAddFriendBtn{min-height:46px;font-weight:800;font-size:14px}
@media(max-width:600px){
  .admin-msg-card-head{padding:12px;gap:9px}
  .admin-msg-avatar{width:43px;height:43px;min-width:43px}
  .admin-msg-head-right{gap:4px}
  .admin-msg-status{display:none}
  .admin-msg-request-actions{padding:0 12px 12px;gap:6px}
  .admin-msg-action{min-height:44px}
  .admin-msg-action span{font-size:13px}
  .admin-msg-details{padding:9px}
}

/* V115 — messagerie enrichie façon Messenger */
.msg-tabs{display:flex;gap:6px;padding:4px;background:var(--soft);border-radius:14px;margin:10px 0}.msg-tab{flex:1;border:0;background:transparent;border-radius:11px;padding:10px 8px;font-weight:800;color:var(--muted);cursor:pointer}.msg-tab.active{background:#fff;color:var(--blue);box-shadow:0 2px 8px rgba(0,0,0,.08)}
.msg-search{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--paper);border-radius:24px;padding:4px 12px;margin:10px 0}.msg-search input{border:0!important;outline:0;background:transparent!important;min-width:0;width:100%;padding:8px 2px}
.msg-user-preview{margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}.msg-attachment-tools{display:flex;gap:7px;align-items:center;margin-top:8px}.msg-tool{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:var(--paper);cursor:pointer;font-size:17px;display:grid;place-items:center}.msg-tool:active{transform:scale(.95)}
.msg-attachment-image{display:block;max-width:min(280px,72vw);max-height:280px;border-radius:13px;object-fit:cover}.msg-attachment-video{display:block;width:min(300px,76vw);max-height:280px;border-radius:13px;background:#000}.msg-file,.msg-location{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:11px;background:rgba(255,255,255,.16);color:inherit;text-decoration:none;font-weight:700}.msg-in .msg-file,.msg-in .msg-location{background:var(--soft);color:var(--ink)}
@media(max-width:600px){.msg-tool{width:35px;height:35px}.msg-user-preview{max-width:180px}.msg-attachment-image{max-width:72vw}}

/* GVS+ Messenger — interface complète inspirée du modèle fourni */
.messenger-app{background:#fff;border:1px solid #d8e2f2;border-radius:22px;overflow:hidden;box-shadow:0 12px 35px rgba(18,54,184,.10);min-height:680px;position:relative}
.messenger-topbar{height:64px;background:#fff;border-bottom:1px solid #e7edf7;display:flex;align-items:center;justify-content:space-between;padding:7px 14px;position:sticky;top:0;z-index:4}
.messenger-count-badge{font-size:11px;font-weight:600;color:#7c8798;background:#eef4ff;border-radius:9px;padding:2px 8px;margin-left:8px;vertical-align:middle}
.director-status-banner{background:#eef4ff;border:1px solid #d3e0f7;color:#1239ae;border-radius:12px;padding:12px;text-align:center;font-size:13px;margin-bottom:10px}
.director-status-banner p{margin:4px 0 10px;color:#4a5670;font-size:12px}
.director-status-banner .btn{margin:2px}
.messenger-brand img{width:66px;height:48px;object-fit:contain}.messenger-brand b{display:block;color:#1239ae;font-size:17px}.messenger-brand small{color:#6c7890;font-size:11px}.messenger-top-actions{display:flex;gap:3px;align-items:center}.messenger-top-actions button{border:0;background:transparent;width:39px;height:42px;border-radius:12px;font-size:19px;position:relative;cursor:pointer}.messenger-top-actions button:hover{background:#f1f5fb}.mini-badge{position:absolute;right:1px;top:2px;background:#e12626;color:#fff;font-size:8px;line-height:15px;min-width:15px;height:15px;border-radius:9px;font-weight:800}
.messenger-screen{display:none;padding:16px 14px 80px;min-height:590px;background:linear-gradient(180deg,#fff 0,#f8fbff 100%)}.messenger-screen.active{display:block}.messenger-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.messenger-title-row h2{margin:0;font-size:22px}.messenger-title-row p{margin:3px 0 0;color:#7c8798;font-size:12px}.circle-action{border:0;background:#eef4ff;color:#1239ae;border-radius:50%;width:38px;height:38px;font-size:20px;cursor:pointer}.messenger-search{height:43px;border-radius:22px;background:#f0f4f9;display:flex;align-items:center;gap:8px;padding:0 13px;margin-bottom:12px}.messenger-search span{font-size:21px;color:#77859a}.messenger-search input{border:0!important;background:transparent!important;outline:0!important;width:100%;font-size:13px;padding:0!important}
.messenger-list{display:flex;flex-direction:column;gap:3px}.messenger-item{display:flex;align-items:center;gap:10px;padding:10px 6px;border-bottom:1px solid #edf1f6;cursor:pointer}.messenger-item:hover{background:#f5f8fc;border-radius:12px}.messenger-avatar,.msg-user-avatar{width:45px;height:45px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:#eaf0fb;color:#1239ae;font-weight:800;flex:none}.messenger-item-main{min-width:0;flex:1}.messenger-item-main b{display:block;font-size:14px}.messenger-item-main small{display:block;color:#8792a2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px}.messenger-time{font-size:10px;color:#9099a8}.messenger-unread{background:#1264d9;color:#fff;min-width:19px;height:19px;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:800}.friend-tabs{display:flex;gap:6px;background:#eef3f8;padding:4px;border-radius:13px;margin-bottom:10px}.friend-tabs button{flex:1;border:0;background:transparent;border-radius:10px;padding:9px 5px;font-weight:800;color:#718096;cursor:pointer;font-size:12px}.friend-tabs button.active{background:#fff;color:#1239ae;box-shadow:0 2px 7px rgba(0,0,0,.08)}.friend-tabs span{background:#e32b32;color:#fff;border-radius:9px;padding:1px 5px;font-size:9px}
.chat-header{display:flex;align-items:center;gap:9px;margin:-16px -14px 0;padding:10px 11px;border-bottom:1px solid #e8edf5;background:#fff;position:sticky;top:64px;z-index:3}.chat-header>button{border:0;background:transparent;font-size:21px;cursor:pointer}.chat-avatar{width:40px;height:40px;border-radius:50%;background:#eef3fb;color:#1239ae;display:grid;place-items:center;font-weight:900;object-fit:cover;overflow:hidden}.chat-avatar img{width:100%;height:100%;object-fit:cover}.chat-person{flex:1;min-width:0}.chat-person b{display:block;font-size:13px}.chat-person small{display:block;color:#168447;font-size:10px;margin-top:2px}.chat-head-actions{display:flex;gap:2px}.chat-head-actions button{font-size:18px!important}.messenger-chat-thread{height:calc(100vh - 360px);height:calc(100dvh - 360px);min-height:360px;max-height:none!important;background:linear-gradient(180deg,#f8faff,#edf3fb);border-radius:0;padding:15px 8px!important;margin:0 -14px}.messenger-chat-thread .msg-bubble{max-width:76%;position:relative;padding:9px 11px;border-radius:16px;box-shadow:0 2px 7px rgba(20,55,120,.07);font-size:13px}.messenger-chat-thread .msg-in{align-self:flex-start;background:#fff;border-top-left-radius:5px}.messenger-chat-thread .msg-out{align-self:flex-end;background:#1674df;color:#fff;border-top-right-radius:5px}.messenger-chat-thread time{display:block;font-size:8px;opacity:.62;margin-top:4px;text-align:right}.chat-composer{display:flex;gap:5px;align-items:center;background:#fff;border:1px solid #dfe6f1;border-radius:24px;padding:5px;margin-top:9px}.chat-composer input{flex:1;border:0!important;outline:0!important;background:transparent!important;min-width:0;padding:9px 3px!important}.attach-btn,.mic-round,.send-round{border:0;width:37px;height:37px;border-radius:50%;display:grid;place-items:center;cursor:pointer;flex:none}.attach-btn{background:#edf3fb;color:#1239ae;font-size:22px}.mic-round{background:#eef4fb;font-size:16px}.send-round{background:#1264d9;color:#fff;font-size:18px}.media-tray{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;background:#fff;border:1px solid #e1e8f1;border-radius:15px;padding:9px;margin-top:7px}.media-tray button{border:0;background:#f5f8fc;border-radius:12px;padding:9px 4px;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:18px;cursor:pointer}.media-tray button span{font-size:10px;color:#5f6c80}.director-tray{grid-template-columns:repeat(4,1fr)}
.composer-actions{display:flex;gap:6px;border-top:1px solid #edf1f6;border-bottom:1px solid #edf1f6;padding:8px 0;margin-bottom:12px}.composer-actions button{flex:1;border:0;background:#fff;font-weight:700;color:#3e4d64;font-size:12px;padding:7px;border-radius:9px;cursor:pointer}.composer-actions button:hover{background:#f2f6fb}.feed-post{background:#fff;border:1px solid #e1e8f2;border-radius:15px;padding:12px;box-shadow:0 4px 14px rgba(18,54,184,.05)}.feed-head{display:flex;align-items:center;gap:9px}.feed-head button{margin-left:auto;border:0;background:transparent}.feed-avatar{width:42px;height:42px;border-radius:50%;background:#eef3fb;color:#1239ae;display:grid;place-items:center;font-weight:900}.feed-head b,.feed-head small{display:block}.feed-head small{font-size:10px;color:#8b95a3;margin-top:2px}.feed-post>p{font-size:13px;line-height:1.45}.feed-logo{width:100%;height:210px;object-fit:contain;background:#f3f6fb;border-radius:10px}.feed-stats{display:flex;justify-content:space-between;font-size:11px;color:#6f7c8e;padding-top:8px}.online-count{font-size:11px;color:#168447;display:flex;align-items:center;gap:5px}.dot{width:8px;height:8px;background:#18b75a;border-radius:50%;display:inline-block}.messenger-bottomnav{position:absolute;bottom:0;left:0;right:0;height:64px;background:#fff;border-top:1px solid #e4eaf2;display:grid;grid-template-columns:repeat(5,1fr);z-index:5}.messenger-bottomnav button{border:0;background:transparent;color:#7a8698;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:17px;cursor:pointer}.messenger-bottomnav span{font-size:9px}.messenger-bottomnav button.active{color:#1264d9;font-weight:800}.messenger-settings{background:#fff;border:1px solid #e2e8f1;border-radius:15px;overflow:hidden}.messenger-settings>div{position:relative;padding:14px 52px 14px 13px;border-bottom:1px solid #edf1f6;min-height:48px}.messenger-settings>div:last-child{border-bottom:0}.messenger-settings b,.messenger-settings span{display:block}.messenger-settings span{font-size:11px;color:#7d8796;margin-top:4px}.messenger-settings .switch{position:absolute;right:13px;top:15px}.messenger-settings select{position:absolute;right:12px;top:14px;border:1px solid #dbe3ee;border-radius:8px;padding:5px;background:#fff}.contact-profile{text-align:center;background:#fff;border:1px solid #e2e8f1;border-radius:17px;padding:25px 15px}.profile-big-avatar{width:90px;height:90px;border-radius:50%;background:#eef3fb;color:#1239ae;display:grid;place-items:center;font-weight:900;font-size:24px;margin:0 auto 10px;overflow:hidden}.profile-big-avatar img{width:100%;height:100%;object-fit:cover}.profile-actions{display:flex;justify-content:center;gap:18px;margin:18px 0}.profile-actions button{border:0;background:transparent;color:#1264d9;display:flex;flex-direction:column;gap:5px;font-size:22px;cursor:pointer}.profile-actions span{font-size:10px}.profile-actions .danger{color:#e12b35}.profile-details{text-align:left;background:#f7f9fc;border-radius:12px;padding:12px;font-size:12px}.profile-details p{margin:7px 0}
@media(max-width:600px){.messenger-app{border-radius:0;border-left:0;border-right:0;min-height:calc(100vh - 150px);min-height:calc(100dvh - 150px)}.messenger-screen{min-height:calc(100vh - 230px);min-height:calc(100dvh - 230px);padding-left:10px;padding-right:10px}.messenger-topbar{padding-left:9px;padding-right:9px}.messenger-chat-thread{height:calc(100vh - 340px);height:calc(100dvh - 340px);min-height:330px}.messenger-top-actions button{width:35px}.feed-logo{height:170px}}

/* ============================================================
   GVS+ MESSAGERIE — refonte UI v120
   Interface inspirée du modèle fourni : barre bleue, écrans nets,
   navigation persistante et actions accessibles.
   ============================================================ */
.messenger-app{
  position:relative;max-width:680px;margin:0 auto;overflow:hidden;
  background:#f7faff;border:1px solid #d7e3f7;border-radius:18px;
  box-shadow:0 14px 38px rgba(11,63,168,.12);
}
.messenger-topbar{
  height:64px;background:linear-gradient(135deg,#0753c9,#0b3fa8);
  color:#fff;border:0;padding:6px 14px;position:sticky;top:0;z-index:20;
}
.messenger-brand{display:flex;align-items:center;gap:8px;min-width:112px}
.messenger-brand img{width:62px;height:48px;background:#fff;border-radius:28px;padding:2px}
.messenger-brand b,.messenger-brand small{color:#fff}
.messenger-brand b{font-size:16px}.messenger-brand small{opacity:.82}
.messenger-top-actions{gap:2px}
.messenger-top-actions button{color:#fff;width:40px;height:42px;border-radius:10px;font-size:20px}
.messenger-top-actions button:hover{background:rgba(255,255,255,.16)}
.messenger-screen{
  min-height:590px;padding:18px 14px 82px;background:#fff;
}
.messenger-screen.active{display:block}
.messenger-title-row{margin-bottom:14px}
.messenger-title-row h2{font-size:22px;color:#123b82}
.messenger-search{height:42px;background:#eef4fb;border:1px solid #e4edf8;margin-bottom:14px}
.messenger-item{padding:11px 7px;border-bottom:1px solid #e8eef7}
.messenger-item:active{background:#eef5ff}
.messenger-avatar,.msg-user-avatar{width:48px;height:48px}
.messenger-bottomnav{
  position:absolute;bottom:0;height:68px;background:linear-gradient(135deg,#0753c9,#0b3fa8);
  border:0;box-shadow:0 -4px 16px rgba(8,56,145,.14);
}
.messenger-bottomnav button{color:rgba(255,255,255,.78);font-size:18px}
.messenger-bottomnav button.active{color:#fff;background:rgba(255,255,255,.12)}
.messenger-bottomnav span{font-size:10px}
.chat-header{
  margin:-18px -14px 0;top:64px;padding:9px 10px;
  background:#fff;border-bottom:1px solid #e4ebf6;
}
.chat-header>button{color:#123b82}
.chat-person b{color:#123b82}
.chat-composer{box-shadow:0 2px 10px rgba(20,59,130,.06)}
@media(max-width:600px){
 .messenger-app{border-radius:0;border-left:0;border-right:0;box-shadow:none}
 .messenger-screen{min-height:calc(100dvh - 170px);padding-top:16px}
 .messenger-topbar{height:60px}
 .messenger-brand img{width:58px;height:44px}
 .messenger-top-actions button{width:36px}
 .messenger-bottomnav{height:64px}
 .messenger-chat-thread{height:calc(100dvh - 330px);min-height:300px}
}

/* V121 — identité WhatsApp, adaptée à GVS+ */
#messagerie .messenger-app{background:#efeae2;border-color:#d8ddd5}
#messagerie .messenger-topbar{background:#075e54;box-shadow:0 1px 3px rgba(0,0,0,.18)}
#messagerie .messenger-brand small{color:#d7eee9}
#messagerie .messenger-top-actions button:hover{background:rgba(255,255,255,.12)}
#messagerie .messenger-screen{background:#efeae2}
#messagerie [data-messenger-screen="messages"],#messagerie [data-messenger-screen="amis"],#messagerie [data-messenger-screen="online"],#messagerie [data-messenger-screen="settings"],#messagerie [data-messenger-screen="home"]{background:#fff}
#messagerie .messenger-title-row h2{color:#111b21;font-size:21px}
#messagerie .messenger-search{background:#f0f2f5;border:0;height:40px}
#messagerie .messenger-search input{color:#111b21}
#messagerie .messenger-item{padding:12px 6px;border-bottom:1px solid #edf0f2}
#messagerie .messenger-item:hover{background:#f5f6f6}
#messagerie .messenger-avatar{background:#dfe9e6;color:#075e54}
#messagerie .messenger-item-main b{color:#111b21}
#messagerie .messenger-item-main small{color:#667781}
#messagerie .messenger-unread{background:#25d366}
#messagerie .circle-action{background:#25d366;color:#fff}
#messagerie .friend-tabs{background:#f0f2f5}
#messagerie .friend-tabs button.active{color:#075e54}
#messagerie .messenger-bottomnav{background:#075e54;border-top-color:#064c44}
#messagerie .messenger-bottomnav button{color:rgba(255,255,255,.72)}
#messagerie .messenger-bottomnav button.active{color:#fff;background:rgba(255,255,255,.13)}
#messagerie .chat-header{background:#f0f2f5;border-bottom-color:#d8dddf;top:60px}
#messagerie .chat-header>button{color:#075e54}
#messagerie .chat-avatar{background:#dfe9e6;color:#075e54}
#messagerie .chat-person b{color:#111b21}
#messagerie .chat-person small{color:#667781}
#messagerie .messenger-chat-thread{background-color:#efeae2;background-image:radial-gradient(rgba(0,0,0,.035) .7px,transparent .7px);background-size:12px 12px}
#messagerie .messenger-chat-thread .msg-bubble{box-shadow:0 1px 1px rgba(0,0,0,.08);border-radius:8px;font-size:13px}
#messagerie .messenger-chat-thread .msg-in{background:#fff}
#messagerie .messenger-chat-thread .msg-out{background:#d9fdd3;color:#111b21}
#messagerie .chat-composer{border:0;background:#f0f2f5;box-shadow:none;border-radius:24px}
#messagerie .attach-btn,#messagerie .mic-round{background:transparent;color:#54656d}
#messagerie .send-round{background:#128c7e}
#messagerie .media-tray{background:#f0f2f5;border:0}
#messagerie .media-tray button{background:#fff}
#messagerie .messenger-settings{border:0;border-radius:0}
#messagerie .messenger-settings>div{background:#fff}
@media(max-width:600px){#messagerie .messenger-topbar{height:60px}#messagerie .messenger-screen{min-height:calc(100dvh - 170px)}#messagerie .messenger-chat-thread{height:calc(100dvh - 330px)}}

.tab-access-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;margin-top:12px}.tab-access-grid .checkline{margin:0;padding:10px;border:1px solid #e5e7eb;border-radius:10px}.tab-maintenance{opacity:.65;position:relative}.tab-maintenance::after{content:'Maintenance';font-size:9px;margin-left:4px;color:#b45309}@media(max-width:520px){.tab-access-grid{grid-template-columns:1fr}}

.emoji-btn{border:0;background:transparent;font-size:20px;cursor:pointer;padding:4px}.emoji-picker{position:absolute;bottom:58px;left:8px;right:8px;background:var(--paper,#fff);border:1px solid var(--line,#ddd);border-radius:14px;padding:8px;display:flex;flex-wrap:wrap;gap:5px;box-shadow:0 8px 24px rgba(0,0,0,.15);z-index:20}.emoji-picker button{border:0;background:transparent;font-size:23px;padding:5px;cursor:pointer;border-radius:8px}.emoji-picker button:hover{background:rgba(0,0,0,.06)}.chat-composer{position:relative}

/* ZIP1 MESSAGERIE INTEGREE */
#gvsZip1Messenger{--blue-deep:#1a3f9e;--blue:#1565d8;--blue-msg:#1877f2;--green:#2fa84f;--green-dark:#238a3f;--bg:#eef1f6;--card:#fff;--text:#1c1e21;--muted:#65676b;--border:#e4e6eb;--online:#31c463;--danger:#e0433d;--radius:14px;--shadow:0 1px 2px rgba(0,0,0,.06),0 2px 8px rgba(0,0,0,.05);font-family:"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--text);box-sizing:border-box;}
#gvsZip1Messenger *,#gvsZip1Messenger *::before,#gvsZip1Messenger *::after{box-sizing:border-box;}
#gvsZip1Messenger button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}
#gvsZip1Messenger input{font-family:inherit;}
#gvsZip1Messenger svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
#gvsZip1Messenger .gvs1-inner-title{display:none;}
#gvsZip1Messenger /* ============ PANEL (Friends/Messages/Settings/Online/Notif) ============ */
.panel-col{max-width:600px;margin:0 auto;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;}#gvsZip1Messenger .panel-header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--border);}#gvsZip1Messenger .panel-header h2{margin:0;font-size:20px;}#gvsZip1Messenger .panel-header.with-back{gap:10px;justify-content:flex-start;}#gvsZip1Messenger .head-icon{color:var(--blue);width:26px;height:26px;}#gvsZip1Messenger .muted{color:var(--muted);font-size:13px;}#gvsZip1Messenger .search-bar{display:flex;align-items:center;gap:8px;margin:14px 18px;background:var(--bg);border-radius:20px;padding:9px 14px;}#gvsZip1Messenger .search-bar svg{width:17px;height:17px;color:var(--muted);flex-shrink:0;}#gvsZip1Messenger .search-bar input{flex:1;border:none;background:transparent;font-size:14px;color:var(--text);}#gvsZip1Messenger .search-bar input:focus{outline:none;}#gvsZip1Messenger .tabs{display:flex;gap:8px;padding:0 18px 12px;}#gvsZip1Messenger .tab{padding:7px 14px;border-radius:18px;background:var(--bg);color:var(--muted);font-weight:600;font-size:13px;display:flex;align-items:center;gap:6px;}#gvsZip1Messenger .tab.active{background:var(--blue);color:#fff;}#gvsZip1Messenger .tab-badge{background:var(--danger);color:#fff;border-radius:8px;font-size:10px;padding:1px 6px;}#gvsZip1Messenger .dot-online{width:7px;height:7px;border-radius:50%;background:var(--online);display:inline-block;}#gvsZip1Messenger .friend-list, #gvsZip1Messenger .conv-list{display:flex;flex-direction:column;}#gvsZip1Messenger .list-row{
  display:flex;align-items:center;gap:12px;padding:11px 18px;border-top:1px solid var(--border);
  cursor:pointer;transition:.12s;
}#gvsZip1Messenger .list-row:first-child{border-top:none;}#gvsZip1Messenger .list-row:hover{background:var(--bg);}#gvsZip1Messenger .avatar-wrap{position:relative;flex-shrink:0;}#gvsZip1Messenger .status-dot{
  position:absolute;bottom:1px;right:1px;width:11px;height: 20px;border-radius:50%;
  border:2.5px solid var(--card);background:#b0b3b8;
}#gvsZip1Messenger .status-dot.online{background:var(--online);}#gvsZip1Messenger .row-meta{flex:1;min-width:0;display:flex;flex-direction:column;}#gvsZip1Messenger .row-meta strong{font-size:15px;font-weight:600;}#gvsZip1Messenger .row-meta span{color:var(--muted);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}#gvsZip1Messenger .row-side{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex-shrink:0;}#gvsZip1Messenger .row-time{color:var(--muted);font-size:11.5px;}#gvsZip1Messenger .row-badge{background:var(--blue);color:#fff;font-size:10px;font-weight:700;min-width:17px;height:17px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 4px;}#gvsZip1Messenger .row-msg-icon{color:var(--blue);width:20px;height:20px;}#gvsZip1Messenger .group-avatar{background:linear-gradient(135deg,var(--blue),var(--green));font-size:13px;}#gvsZip1Messenger /* ============ CHAT VIEW ============ */
#view-chat.active{display:flex;gap:0;max-width:900px;margin:0 auto;}#gvsZip1Messenger .chat-col{flex:1;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;height:calc(100vh - 108px);height:calc(100dvh - 108px);min-height:520px;overflow:hidden;position:relative;}#gvsZip1Messenger .chat-header{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);}#gvsZip1Messenger .back-btn{display:none;}#gvsZip1Messenger .chat-header-id{display:flex;align-items:center;gap:10px;flex:1;cursor:pointer;min-width:0;}#gvsZip1Messenger .chat-header-meta{display:flex;flex-direction:column;min-width:0;}#gvsZip1Messenger .chat-header-meta strong{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}#gvsZip1Messenger .chat-header-meta span{font-size:12px;color:var(--online);}#gvsZip1Messenger .chat-header-meta span.offline{color:var(--muted);}#gvsZip1Messenger .chat-header-actions{display:flex;gap:2px;}#gvsZip1Messenger .chat-messages{flex:1;overflow-y:auto;padding:18px 20px;display:flex;flex-direction:column;gap:4px;background:
  repeating-linear-gradient(var(--card),var(--card));}#gvsZip1Messenger .msg-row{display:flex;gap:8px;max-width:75%;margin-bottom:4px;align-items:flex-end;}#gvsZip1Messenger .msg-row.out{align-self:flex-end;flex-direction:row-reverse;}#gvsZip1Messenger .msg-row .avatar{width:26px;height:26px;font-size:11px;}#gvsZip1Messenger .bubble{padding:9px 14px;border-radius:18px;font-size:14.5px;line-height:1.4;position:relative;}#gvsZip1Messenger .msg-row.in .bubble{background:var(--bg);color:var(--text);border-bottom-left-radius:4px;}#gvsZip1Messenger .msg-row.out .bubble{background:var(--blue-msg);color:#fff;border-bottom-right-radius:4px;}#gvsZip1Messenger .sender-name{font-size:11.5px;font-weight:700;margin-bottom:2px;display:block;}#gvsZip1Messenger .msg-time{font-size:10px;color:var(--muted);margin-top:2px;display:flex;gap:4px;align-items:center;}#gvsZip1Messenger .msg-row.out .msg-time{justify-content:flex-end;color:#dce8ff;}#gvsZip1Messenger .msg-time svg{width:13px;height:13px;}#gvsZip1Messenger .check-read{color:var(--blue-deep);}#gvsZip1Messenger .bubble.image-bubble{padding:4px;background:transparent;}#gvsZip1Messenger .bubble.image-bubble img{max-width:220px;border-radius:14px;display:block;}#gvsZip1Messenger .bubble.image-caption-wrap{padding:0;background:transparent;display:flex;flex-direction:column;gap:4px;}#gvsZip1Messenger .voice-bubble{display:flex;align-items:center;gap:10px;min-width:190px;}#gvsZip1Messenger .voice-play{width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.25);display:flex;align-items:center;justify-content:center;flex-shrink:0;}#gvsZip1Messenger .msg-row.in .voice-play{background:var(--blue);color:#fff;}#gvsZip1Messenger .voice-play svg{width:16px;height:16px;fill:currentColor;stroke:none;}#gvsZip1Messenger .waveform{flex:1;display:flex;align-items:center;gap:2px;height:22px;}#gvsZip1Messenger .waveform span{width:2.5px;background:currentColor;opacity:.6;border-radius:2px;}#gvsZip1Messenger .voice-duration{font-size:11px;opacity:.85;flex-shrink:0;}#gvsZip1Messenger .chat-input-bar{display:flex;align-items:center;gap:6px;padding:10px 14px;border-top:1px solid var(--border);position:relative;}#gvsZip1Messenger .chat-input-wrap{flex:1;display:flex;align-items:center;gap:6px;background:var(--bg);border-radius:22px;padding:6px 10px;}#gvsZip1Messenger .chat-input-wrap input{flex:1;border:none;background:transparent;padding:5px 4px;font-size:14.5px;}#gvsZip1Messenger .chat-input-wrap input:focus{outline:none;}#gvsZip1Messenger .icon-btn.small{width:28px;height:28px;}#gvsZip1Messenger .icon-btn.send{color:var(--blue);}#gvsZip1Messenger .attach-menu{
  position:absolute;bottom:64px;left:14px;background:var(--card);border:1px solid var(--border);
  border-radius:14px;box-shadow:var(--shadow);display:grid;grid-template-columns:repeat(3,90px);gap:4px;padding:10px;z-index:20;
}#gvsZip1Messenger .attach-menu button{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 4px;border-radius:10px;font-size:12px;color:var(--text);}#gvsZip1Messenger .attach-menu button:hover{background:var(--bg);}#gvsZip1Messenger .attach-ico{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;}#gvsZip1Messenger .attach-ico svg{width:20px;height:20px;}#gvsZip1Messenger /* contact info panel */
.contact-panel{width:290px;background:var(--card);border-left:1px solid var(--border);border-radius:0 var(--radius) var(--radius) 0;display:flex;flex-direction:column;}#gvsZip1Messenger .contact-panel-head{display:flex;justify-content:flex-end;padding:8px;}#gvsZip1Messenger .contact-panel-body{display:flex;flex-direction:column;align-items:center;padding:0 20px 20px;text-align:center;}#gvsZip1Messenger .online-tag{color:var(--online);font-size:13px;margin-top:2px;}#gvsZip1Messenger .contact-panel-actions{display:flex;gap:10px;margin:18px 0;width:100%;}#gvsZip1Messenger .contact-panel-actions button{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;background:var(--bg);border-radius:12px;padding:10px 4px;font-size:12px;color:var(--blue);font-weight:600;}#gvsZip1Messenger .contact-panel-actions button.danger{color:var(--danger);}#gvsZip1Messenger .contact-panel-actions button svg{width:18px;height:18px;}#gvsZip1Messenger .contact-panel-info{width:100%;text-align:left;border-top:1px solid var(--border);padding-top:14px;}#gvsZip1Messenger .contact-panel-info h4{margin:0 0 10px;font-size:14px;}#gvsZip1Messenger .contact-panel-info p{display:flex;justify-content:space-between;margin:8px 0;font-size:13px;color:var(--muted);}#gvsZip1Messenger .contact-panel-info p strong{color:var(--text);font-weight:600;}

@media (max-width:820px){#gvsZip1Messenger .contact-panel{position:absolute;right:0;top:0;bottom:0;z-index:30;box-shadow:-4px 0 14px rgba(0,0,0,.12);}}
@media (max-width:700px){#gvsZip1Messenger .panel-col,#gvsZip1Messenger .chat-col{max-width:100%;}#gvsZip1Messenger .chat-col{height:calc(100vh - 150px);height:calc(100dvh - 150px);min-height:480px;}#gvsZip1Messenger .chat-input-bar{padding:8px;}#gvsZip1Messenger .chat-header{padding:10px 8px;}}
@media (max-width:480px){#gvsZip1Messenger .panel-col{border-radius:10px;}#gvsZip1Messenger .search-bar{margin:10px;}#gvsZip1Messenger .tabs{padding-left:10px;padding-right:10px;}}


/* ============================================================
   GVS+ V125 — Accueil en carreaux façon portail de services
   Les anciens onglets du bas deviennent des carreaux accessibles
   directement depuis l'écran d'accueil.
   ============================================================ */
.anip-home-menu{
  margin:0;
  padding:0 0 24px;
}
.anip-menu-heading{
  text-align:center;
  margin:4px auto 18px;
}
.anip-menu-kicker{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:54px;
  height:28px;
  padding:0 12px;
  border-radius:999px;
  background:rgba(11,63,168,.08);
  color:var(--blue);
  font-size:12px;
  font-weight:800;
  letter-spacing:.08em;
  margin-bottom:8px;
}
.anip-menu-heading h2{
  font-size:24px;
  line-height:1.15;
  color:var(--ink);
}
.anip-menu-heading p{
  margin:7px auto 0;
  max-width:320px;
  color:var(--muted);
  font-size:13px;
  line-height:1.45;
}
.anip-tiles-title{
  position:sticky;
  top:var(--gvs-header-h,0px);
  z-index:15;
  margin:0 0 14px;
  padding:10px 0;
  background:var(--paper,#fff);
  justify-content:center;
  text-align:center;
}
body.dark .anip-tiles-title{background:var(--paper,#0b1020)}
.anip-tiles-title h2{text-align:center;width:100%}
.anip-tile-grid{
  display:flex;
  flex-wrap:nowrap;
  align-items:center;
  gap:8px;
  overflow-x:auto;
  overflow-y:hidden;
  scroll-snap-type:x proximity;
  -webkit-overflow-scrolling:touch;
  scroll-behavior:smooth;
  padding:2px 2px 8px;
  scrollbar-width:thin;
}
.anip-tile-grid::-webkit-scrollbar{height:6px}
.anip-tile-grid::-webkit-scrollbar-thumb{background:rgba(47,128,255,.35);border-radius:999px}
.anip-tile{
  position:relative;
  aspect-ratio:1/1;
  flex:0 0 118px;
  width:118px;
  max-width:118px;
  margin:0;
  scroll-snap-align:start;
  border:1px solid #2f80ff;
  border-radius:18px;
  background:var(--paper-raised);
  color:var(--ink);
  box-shadow:
    0 0 5px rgba(47,128,255,.65),
    0 0 12px rgba(47,128,255,.38),
    0 6px 18px rgba(11,19,48,.08);
  padding:9px 6px 8px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  cursor:pointer;
  font-family:var(--font-body);
  transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease,filter .15s ease,opacity .18s ease,background .18s ease;
  overflow:hidden;
}
/* V371 — cube cliqué : devient transparent le temps du retour visuel, les autres carreaux restent inchangés. */

/* GVS+ — Bordures lumineuses des carreaux de navigation */
.anip-tile:hover,
.anip-tile:focus-visible{
  border-color:#69a8ff;
  box-shadow:
    0 0 7px rgba(47,128,255,.85),
    0 0 18px rgba(47,128,255,.55),
    0 8px 22px rgba(11,19,48,.12);
}
.anip-tile:focus-visible{outline:none;}
.anip-tile.gvs-tile-clicked{
  background:transparent!important;
  border-color:transparent!important;
  box-shadow:none!important;
  opacity:.3;
}
.anip-tile.gvs-tile-clicked::before{opacity:0}
.anip-tile.gvs-tile-clicked .anip-tile-icon{opacity:.55}
.anip-tile::before{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(145deg,rgba(255,255,255,.82),transparent 60%);
  pointer-events:none;
}
.anip-tile:active{
  transform:scale(.96);
  filter:brightness(1.02);
  box-shadow:0 3px 10px rgba(11,19,48,.08);
}
.anip-tile-icon{
  position:relative;
  z-index:1;
  width:42px;height:42px;
  border-radius:13px;
  display:flex;
  align-items:center;
  justify-content:center;
  margin-bottom:6px;
  font-size:22px;
  line-height:1;
  font-weight:700;
  background:rgba(11,63,168,.09);
  color:var(--blue);
}
.anip-tile-icon svg{width:23px;height:23px;display:block;}
/* Icône + nom centrés verticalement et horizontalement dans tous les carreaux
   (retire l'alignement en haut qui existait pour certains carreaux précis). */
.tile-formations,
.tile-profile,
.tile-messages,
.tile-registration,
.tile-my-computer,
.tile-jobs{
  justify-content:center;
  padding-top:9px;
}
.tile-settings .anip-tile-icon{background:rgba(11,19,48,.08)!important;color:var(--ink-soft)!important}
.tile-jobs .anip-tile-icon{background:rgba(21,159,122,.12)!important;color:var(--teal,#159f7a)!important}
.tile-tv .anip-tile-icon{background:rgba(16,93,184,.12)!important;color:#105DB8!important}
.tile-tv:hover .anip-tile-icon,.tile-tv:focus-visible .anip-tile-icon{background:rgba(16,93,184,.18)!important}

.anip-tile strong{
  position:relative;
  z-index:1;
  font-size:12px;
  line-height:1.2;
  font-weight:800;
}
.anip-tile small{
  position:relative;
  z-index:1;
  margin-top:3px;
  font-size:9px;
  line-height:1.2;
  color:var(--muted);
}
.anip-tile-badge{
  position:absolute;
  top:9px;right:9px;
  z-index:3;
  min-width:16px;height:16px;
  padding:0 4px;
  border-radius:999px;
  background:#DC2626;
  color:#fff;
  font-size:8px;
  font-weight:800;
  display:flex;
  align-items:center;
  justify-content:center;
}
.anip-tile-badge.hidden{display:none!important}

.gvs-section-notif-badge{
  display:inline-flex;
  vertical-align:middle;
  align-items:center;
  justify-content:center;
  min-width:18px;
  height:18px;
  padding:0 5px;
  margin-left:6px;
  border-radius:999px;
  background:#DC2626;
  color:#fff;
  font-size:10px;
  line-height:1;
  font-weight:900;
  box-shadow:0 0 8px rgba(220,38,38,.45);
}
.gvs-section-notif-badge.hidden{display:none!important}

/* V366 — statut en ligne/hors ligne + fiche complète dans Messages (admin) */
.gvs-msg-status-mark{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:700;margin-left:8px}
.gvs-msg-status-mark.is-online{color:var(--green,#0e9350)}
.gvs-msg-status-mark.is-offline{color:var(--muted,#8892a8)}
.gvs-fiche-caret{margin-left:6px;font-size:11px;color:#5e6a85;vertical-align:middle}
.gvs-fiche-rouge-wrap{padding:0 14px}
.gvs-fiche-rouge{border:1px solid rgba(220,38,38,.35);border-left:4px solid var(--red,#DC2626);border-radius:12px;background:rgba(220,38,38,.05);padding:12px 14px;margin:2px 0 12px}
.gvs-fiche-title{font-weight:800;font-size:13px;color:var(--red,#DC2626);margin-bottom:6px}
body.dark .gvs-fiche-rouge{background:rgba(220,38,38,.12);border-color:rgba(248,113,113,.42)}
body.dark .gvs-fiche-title{color:#F87171}
@media(max-width:520px){.gvs-fiche-rouge-wrap{padding:0 9px}}

.anip-tile:nth-child(3n+1) .anip-tile-icon{background:rgba(11,63,168,.10);color:var(--blue)}
.anip-tile:nth-child(3n+2) .anip-tile-icon{background:rgba(14,147,80,.11);color:var(--green)}
.anip-tile:nth-child(3n) .anip-tile-icon{background:rgba(242,169,0,.13);color:#B77900}
.tile-messages .anip-tile-icon{background:rgba(109,63,194,.11)!important;color:var(--plum)!important}
.tile-news .anip-tile-icon{background:rgba(220,38,38,.09)!important;color:var(--red)!important}
.tile-ai .anip-tile-icon{background:rgba(46,95,217,.11)!important;color:var(--blue-2)!important}

@media (min-width:600px){
  .anip-tile-grid{gap:10px}
  .anip-tile{flex:0 0 138px;width:138px;max-width:138px}
}
@media (max-width:360px){
  .anip-tile-grid{gap:5px}
  .anip-tile{flex:0 0 98px;width:98px;max-width:98px;padding:7px 5px}
  .anip-tile-icon{width:35px;height:35px;border-radius:10px;font-size:19px;margin-bottom:4px}
  .anip-tile-icon svg{width:19px;height:19px}
  .anip-tile strong{font-size:10.5px}
  .anip-tile small{font-size:8px}
  .tile-formations,
  .tile-profile,
  .tile-messages,
  .tile-registration,
  .tile-my-computer,
  .tile-jobs{padding-top:3px}
}

/* Les carreaux remplacent le menu inférieur sur tout le site. */
.bottomnav{display:none!important}

/* Le bandeau GVS+ reste un accès permanent à l'accueil. */
.brandword{cursor:pointer}
body.dark .anip-menu-kicker{background:rgba(124,156,255,.13);color:#9CB4FF}
body.dark .anip-tile{
  background:#11182A;
  border-color:#25304B;
  box-shadow:0 8px 20px rgba(0,0,0,.22);
}
body.dark .anip-menu-heading h2{color:#F4F7FF}
body.dark .anip-tile::before{background:linear-gradient(145deg,rgba(255,255,255,.04),transparent 60%)}
body.dark .anip-tile small{color:#9AA7C5}

/* V126/V127 — retour + recherche intégrés au portail de carreaux */
.gvs-back-button{
  display:flex;align-items:center;gap:6px;
  border:0;background:transparent;color:#DC2626;
  font:800 13px var(--font-body);
  padding:4px 2px 10px;cursor:pointer;
}
.gvs-back-button svg{width:21px;height:21px;display:block}
.gvs-back-button:active{transform:translateX(-2px)}
.anip-home-search{
  display:flex;align-items:center;gap:10px;
  width:100%;box-sizing:border-box;
  min-height:48px;margin:0 0 14px;
  padding:0 14px;border:1px solid var(--line);border-radius:16px;
  background:var(--paper-raised);box-shadow:0 5px 16px rgba(11,19,48,.07);
}
.anip-home-search svg{width:20px;height:20px;flex:0 0 auto;color:var(--muted)}
.anip-home-search input{width:100%;border:0;outline:0;background:transparent;color:var(--ink);font:600 13px var(--font-body)}
.anip-home-search input::placeholder{color:var(--muted);font-weight:500}
body.dark .anip-home-search{background:#11182A;border-color:#25304B}
body.dark .anip-home-search input{color:#F4F7FF}
@media(max-width:360px){.anip-home-search{min-height:44px;padding:0 11px}.anip-home-search input{font-size:12px}}

/* ---------- outils de navigation des sections ---------- */
.gvs-page-tools{
  position:sticky;
  top:0;
  z-index:18;
  display:flex;
  align-items:center;
  gap:9px;
  padding:8px 0 10px;
  margin:0 -2px 8px;
  background:var(--paper,#fff);
  border-bottom:1px solid var(--line);
}
.gvs-page-tools-arrow-only{justify-content:flex-start}
.gvs-section-search{
  order:1;
  flex:1 1 auto;
  min-width:0;
  min-height:44px;
  display:flex;
  align-items:center;
  gap:9px;
  padding:0 12px;
  box-sizing:border-box;
  border:1px solid var(--line);
  border-radius:14px;
  background:var(--paper-raised);
  box-shadow:0 4px 12px rgba(11,19,48,.06);
}
.gvs-section-search svg{width:19px;height:19px;flex:0 0 auto;color:var(--muted)}
.gvs-section-search input{
  width:100%;min-width:0;border:0;outline:0;background:transparent;
  color:var(--ink);font:600 12.5px var(--font-body);
}
.gvs-section-search input::placeholder{color:var(--muted);font-weight:500}
.gvs-section-back{
  order:2;
  flex:0 0 auto;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:auto;
  padding:6px;
  border:0;
  border-radius:0;
  background:none;
  color:#E63946;
  font:800 11.5px var(--font-body);
  cursor:pointer;
  box-shadow:none;
}
.gvs-section-back svg{width:28px;height:28px}
.gvs-section-back span{display:none}
.gvs-section-back:active{transform:scale(.9)}
#homeTopSearchBlock .gvs-page-tools{background:transparent;border-bottom:1px solid rgba(11,19,48,.18);box-shadow:none;margin:0 -2px 0;padding-bottom:6px;}
body.dark #homeTopSearchBlock .gvs-page-tools{background:transparent;border-color:rgba(255,255,255,.18);}
#homeTopSearchBlock .gvs-section-back svg{width:20px;height:20px}
.gvs-page-tools + .section-title{margin-top:12px}
body.dark .gvs-page-tools{background:#0B1020;border-color:#25304B}
body.dark .gvs-section-search{background:#11182A;border-color:#25304B}
body.dark .gvs-section-search input{color:#F4F7FF}
body.dark .gvs-section-back{background:none;border:0;color:#FF6B78}

/* ---------- barre d'onglets fixe de la messagerie (Accueil/Amis/Message/Notif./Corbeille) ---------- */
#messagerie{--gvs-msg-tabs-h:56px;--gvs-msg-arrow-h:48px}
.gvs-msg-toptabs{
  position:sticky;
  top:calc(var(--gvs-header-h,132px) + var(--gvs-msg-arrow-h));
  z-index:19;
  display:flex;
  align-items:stretch;
  height:var(--gvs-msg-tabs-h);
  margin:0 -2px;
  background:var(--paper-raised);
  border-bottom:1px solid var(--line);
  box-shadow:0 4px 12px rgba(11,19,48,.06);
}
.gvs-msg-tab{
  flex:1 1 0;
  min-width:0;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:2px;
  border:0;
  border-top:2px solid transparent;
  background:none;
  color:var(--muted);
  cursor:pointer;
  padding:4px 2px 0;
}
.gvs-msg-tab-ic{font-size:17px;line-height:1}
.gvs-msg-tab-ic svg{width:19px;height:19px;display:block;margin:0 auto}
.gvs-msg-tab-lbl{font:700 9px var(--font-body);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.gvs-msg-tab.active{color:var(--icon-active-light);border-top-color:var(--icon-active-light)}
.gvs-msg-tab:active{transform:scale(.95)}
body.dark .gvs-msg-toptabs{background:#0B1020;border-color:#25304B}
body.dark .gvs-msg-tab{color:#8592BE}
body.dark .gvs-msg-tab.active{color:#7FA3FF;border-top-color:#7FA3FF}
#messagerie .gvs-page-tools{top:var(--gvs-header-h,132px)}
#messagerie .chat-header{top:calc(var(--gvs-header-h,132px) + var(--gvs-msg-arrow-h) + var(--gvs-msg-tabs-h) + 60px)}
.gvs-msg-panel.hidden{display:none!important}
.gvs-msg-placeholder{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:34px 18px}
.gvs-msg-placeholder-ic{font-size:34px}
.gvs-msg-placeholder b{font-size:14px}
.gvs-msg-placeholder p{margin:0}
@media(max-width:380px){
  .gvs-msg-tab-ic{font-size:15px}
  .gvs-msg-tab-lbl{font-size:8px}
}

.anip-home-menu{
  padding-top:0;
}
.anip-home-search{order:1}
.home-nav-arrow{
  order:2;
  width:max-content;
  margin:0 0 10px auto;
  min-height:40px;
  padding:0 11px;
  border:1px solid rgba(14,147,80,.25);
  border-radius:13px;
  background:#D9F7E5;
  color:#08743D;
}
.anip-tile-grid{order:3}
body.dark .home-nav-arrow{background:#123D2A;border-color:#245D43;color:#86EFAC}

/* Boutons d'action de l'accueil : vert clair */
.btn.light-green{
  background:linear-gradient(180deg,#3B9EFF,#0066FF)!important;
  color:#fff!important;
  border:1px solid rgba(255,255,255,.45)!important;
  box-shadow:0 0 7px rgba(0,102,255,.55),0 0 18px rgba(0,102,255,.34),inset 0 1px 0 rgba(255,255,255,.5);
}
.btn.light-green:hover{filter:brightness(1.05)}
body.dark .btn.light-green{
  background:linear-gradient(180deg,#8AF0B4,#34D399)!important;
  color:#064E3B!important;
  border-color:rgba(255,255,255,.3)!important;
  box-shadow:0 3px 14px rgba(52,211,153,.4),inset 0 1px 0 rgba(255,255,255,.4);
}
@media(max-width:420px){
  .gvs-page-tools{gap:7px}
  .gvs-section-back{padding:0 8px}
  .gvs-section-back span{display:none}
  .gvs-section-search{min-height:42px}
}

.gvs-home-tools{
  position:sticky;
  top:0;
  z-index:18;
  display:flex;
  align-items:center;
  gap:9px;
  padding:8px 0 10px;
  margin:0 -2px 8px;
  background:var(--paper,#fff);
  border-bottom:1px solid var(--line);
}
.gvs-home-tools .anip-home-search{
  order:2;
  flex:1 1 auto;
  width:auto;
  min-width:0;
  margin:0;
}
.gvs-home-tools .gvs-client-arrow{
  order:1;
  flex:0 0 auto;
  min-height:44px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:5px;
  padding:0 10px;
  border:1px solid rgba(14,147,80,.25);
  border-radius:14px;
  background:#D9F7E5;
  color:#08743D;
  font:800 11.5px var(--font-body);
  cursor:pointer;
  box-shadow:0 4px 12px rgba(14,147,80,.10);
}
.gvs-client-arrow svg{width:19px;height:19px;flex:none}
.gvs-client-arrow:active{transform:scale(.97)}
body.dark .gvs-client-arrow{background:#123D2A;border-color:#245D43;color:#86EFAC}
.gvs-home-tools .home-nav-arrow{
  order:1;
  flex:0 0 auto;
  margin:0;
}
body.dark .gvs-home-tools{background:#0B1020;border-color:#25304B}
@media(max-width:420px){
  .gvs-home-tools{gap:7px}
  .gvs-home-tools .home-nav-arrow span{display:none}
  .gvs-home-tools .home-nav-arrow{min-height:44px}
  .gvs-home-tools .gvs-client-arrow{min-height:44px}
  .gvs-home-tools .gvs-client-arrow span{display:none}
}


/* ---------- Contrôle global fixe : flèche Espace Client ---------- */
.gvs-fixed-header-tools{display:flex;align-items:center;gap:7px;flex:0 0 auto;}
.gvs-fixed-client-arrow{width:auto;height:auto;flex:0 0 auto;display:grid;place-items:center;border:0;border-radius:0;background:transparent;color:#E63946;cursor:pointer;box-shadow:none;padding:4px;}
.gvs-fixed-client-arrow svg{width:20px;height:20px}
.gvs-fixed-client-arrow:active{transform:scale(.9)}
body.dark .gvs-fixed-client-arrow{background:transparent;color:#E63946}
/* La flèche Espace Client se rapproche du logo GVS+ ; les icônes de droite (thème…) restent alignées à droite. */
.topstrip-icons-wrap{margin-left:auto}
.gvs-fixed-header-tools{margin-left:-10px}
@media(max-width:700px){
  .topstrip{gap:7px;padding-left:9px;padding-right:9px}
  .gvs-fixed-client-arrow svg{width:20px;height:20px}
  .topstrip-icons-wrap{gap:2px}
  .live-datetime{max-width:145px;min-width:0;font-size:9.5px;padding:4px 6px}
  .top-simple-icon{width:48px}
}
@media(max-width:470px){
  .brand-mascot{height:38px}
  .brand-cluster{flex:0 0 auto}
  .gvs-fixed-header-tools{margin-left:0}
  /* GVS+ — date/heure défilante réaffichée en haut, à côté du thème */
}
@media(max-width:350px){
  .top-simple-icon{width:43px}
  .top-simple-icon .top-icon-label{font-size:8px}
}
/* Le carreau Accueil ouvre la zone des sessions et chaque session reste dans la même page. */
#homeSessions{scroll-margin-top:150px}

/* GVS+ V130/V131 — Accueil séparé des carreaux de navigation */
.home-navigation-arrow-wrap{
  display:flex;
  justify-content:flex-start;
  margin:0 0 10px;
}
.home-navigation-arrow-wrap .home-nav-arrow{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  margin:0;
  min-height:42px;
  padding:0 12px;
  border:1px solid rgba(14,147,80,.25);
  border-radius:13px;
  background:#D9F7E5;
  color:#08743D;
  font:800 11.5px var(--font-body);
  cursor:pointer;
  box-shadow:0 4px 12px rgba(14,147,80,.10);
}
.home-navigation-arrow-wrap .home-nav-arrow svg{width:19px;height:19px}
.home-navigation-arrow-wrap .home-nav-arrow:active{transform:scale(.97)}
.home-sessions-back-wrap{
  display:none;
  justify-content:flex-start;
  margin:14px 0 18px;
}
.home-sessions-back{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  min-height:42px;
  padding:0 12px;
  border:1px solid rgba(14,147,80,.25);
  border-radius:13px;
  background:#D9F7E5;
  color:#08743D;
  font:800 11.5px var(--font-body);
  cursor:pointer;
  box-shadow:0 4px 12px rgba(14,147,80,.10);
}
.home-sessions-back svg{width:19px;height:19px}
.home-sessions-back:active{transform:scale(.97)}

/* Par défaut, l'accueil affiche les carreaux de navigation (et les actualités
   de l'Espace Rubriques si publiées). */
#home #homeSessions,
#home .home-sessions-back-wrap{display:none}
/* Après clic sur le carreau Accueil, les 6 sessions deviennent la seule zone de contenu.
   Les actualités (#newsSection) restent réservées à l'écran principal des carreaux
   (Espace Rubriques) et ne s'affichent plus ici. */
#home.home-sessions-mode .anip-tile-grid,
#home.home-sessions-mode .anip-tiles-title,
#home.home-sessions-mode .gvs-news-title,
#home.home-sessions-mode #newsSection,
#home.home-sessions-mode .home-navigation-arrow-wrap,
#home.home-sessions-mode #gvsPushPrompt,
#home.home-sessions-mode .home-like-section{display:none!important}
#home.home-sessions-mode #homeSessions{display:grid}
#home.home-sessions-mode .home-sessions-back-wrap{display:flex}

/* Administration : même principe — par défaut, la grille de carreaux
   (#adminSessions) est la seule zone visible ; la liste détaillée des
   sections (#adminSectionsList) reste masquée tant qu'aucun carreau n'a
   été ouvert. */
#admin #adminSectionsList,
#admin .admin-sessions-back-wrap{display:none}
/* La grille des 3 rubriques admin reste visible sur l'écran principal.
   Elle ne doit disparaître que lorsqu'une session précise est ouverte. */
#admin #adminSessions{display:grid}
#admin.admin-sessions-mode #adminSessions{display:none}
#admin.admin-sessions-mode #adminSectionsList{display:block}
#admin.admin-sessions-mode .admin-sessions-back-wrap{display:flex}
/* Dans les nouvelles sessions (ouvertes via un carreau), le titre est déjà
   porté par le carreau : on masque donc les bandeaux d'accordéon
   (« Messages 🔻 », etc.) et toutes les sections non ouvertes, pour ne
   laisser visible que le contenu de la session en cours. */
#admin.admin-sessions-mode #adminSectionsList .admin-accordion-trigger{display:none}
#admin.admin-sessions-mode #adminSectionsList .admin-accordion{display:none}
#admin.admin-sessions-mode #adminSectionsList .admin-accordion.gvs-session-open{display:block}
body.dark .home-navigation-arrow-wrap .home-nav-arrow,
body.dark .home-sessions-back{background:#123D2A;border-color:#245D43;color:#86EFAC}
@media(max-width:420px){
  .home-navigation-arrow-wrap .home-nav-arrow span,
  .home-sessions-back span{display:none}
  .home-navigation-arrow-wrap .home-nav-arrow,
  .home-sessions-back{min-height:44px;width:44px;padding:0}
}

/* GVS+ v138 — option J'aime intégrée à la même ligne de défilement que les
   carreaux de navigation (Accueil uniquement) */
.home-like-section{
  margin:0;
  padding:10px 14px;
  border:1px solid var(--line);
  border-radius:18px;
  background:var(--paper-raised,#fff);
  box-shadow:0 8px 24px rgba(11,63,168,.08);
  display:flex;
  align-items:center;
  flex-wrap:nowrap;
  gap:10px;
}
/* Rectangulaire, calée sur la même hauteur que les carreaux de navigation. */
.anip-tile-grid .home-like-section{
  flex:0 0 244px;
  width:244px;
  max-width:244px;
  height:118px;
  scroll-snap-align:start;
}
@media (min-width:600px){
  .anip-tile-grid .home-like-section{flex:0 0 276px;width:276px;max-width:276px;height:138px}
}
@media (max-width:360px){
  .anip-tile-grid .home-like-section{flex:0 0 204px;width:204px;max-width:204px;height:98px;padding:8px 10px;gap:8px}
}
.home-like-icon{
  width:48px;height:48px;flex:0 0 48px;border-radius:15px;
  display:flex;align-items:center;justify-content:center;
  background:#FCE7EF;color:#D92D4F;
  border:0;padding:0;cursor:pointer;font:inherit;
  position:relative;z-index:1;pointer-events:auto;
}
.anip-tile-grid .home-like-icon{width:36px;height:36px;flex:0 0 36px;border-radius:11px}
.anip-tile-grid .home-like-icon svg{width:19px;height:19px}
.home-like-icon:active{transform:scale(.94)}
.home-like-icon svg{width:25px;height:25px;pointer-events:none}
.home-like-content{flex:1;min-width:0}
.home-like-content h3{margin:0 0 4px;font-size:16px;color:var(--ink)}
.home-like-content p{margin:0;color:var(--muted);font-size:12px;line-height:1.4}
.anip-tile-grid .home-like-content h3{font-size:12px;margin:0 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.anip-tile-grid .home-like-content p{font-size:9.5px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.home-like-section .like-btn{flex:0 0 auto;min-height:44px;padding:0 15px;position:relative;z-index:1;pointer-events:auto;cursor:pointer}
.anip-tile-grid .home-like-section .like-btn{min-height:30px;padding:0 11px;font-size:11px;width:auto}
.home-like-section .like-btn.liked{background:#D92D4F!important;color:#fff!important;border-color:#D92D4F!important}
.home-like-count{margin-left:3px}
body.dark .home-like-section{background:#11182A;border-color:#25304B}
body.dark .home-like-icon{background:rgba(217,45,79,.14);color:#FF7D98}
@media(max-width:520px){
  .home-like-section{align-items:flex-start;flex-wrap:wrap}
  .home-like-content{padding-top:2px}
  .home-like-section .like-btn{width:100%}
}


/* GVS+ — agrandissement du bandeau date/heure défilant (prioritaire sur les anciennes règles) */
.live-datetime{font-size:15px!important;max-width:230px!important;padding:5px 10px!important}
@media(max-width:700px){.live-datetime{font-size:13px!important;max-width:190px!important}}
@media(max-width:470px){.live-datetime{font-size:12px!important;max-width:160px!important}}
@media(max-width:350px){.live-datetime{font-size:11px!important;max-width:135px!important}}

/* ---------- GVS+ — Tirer pour actualiser (pull-to-refresh) ---------- */
#pullToRefreshIndicator{
  position:fixed;top:-56px;left:50%;
  width:42px;height:42px;
  transform:translateX(-50%);
  display:flex;align-items:center;justify-content:center;
  border-radius:50%;
  background:#fff;
  box-shadow:0 6px 18px rgba(11,19,48,.18);
  z-index:30;
  opacity:0;
  pointer-events:none;
  transition:top .28s cubic-bezier(.34,1.56,.64,1), opacity .2s ease;
}
#pullToRefreshIndicator .pull-refresh-spinner{width:24px;height:24px;color:#0B3FA8;transform-origin:50% 50%}
#pullToRefreshIndicator .pull-refresh-ring{fill:none;stroke:currentColor;stroke-width:4;stroke-linecap:round;stroke-dasharray:94 32}
#pullToRefreshIndicator.pull-refresh-loading .pull-refresh-spinner{animation:gvsPullRotate 1.4s linear infinite}
#pullToRefreshIndicator.pull-refresh-loading .pull-refresh-ring{animation:gvsPullDash 1.5s ease-in-out infinite}
body.dark #pullToRefreshIndicator{background:#131B33;box-shadow:0 6px 18px rgba(0,0,0,.5)}
body.dark #pullToRefreshIndicator .pull-refresh-spinner{color:#4ADE80}
@keyframes gvsPullRotate{to{transform:rotate(360deg)}}
@keyframes gvsPullDash{
  0%{stroke-dasharray:1 125;stroke-dashoffset:0}
  50%{stroke-dasharray:75 126;stroke-dashoffset:-29}
  100%{stroke-dasharray:75 126;stroke-dashoffset:-104}
}
/* V155 — photo de profil du message réduite */
#messagerie .chat-header .chat-avatar,
#gvsZip1Messenger .chat-header .chat-avatar{
  width:34px;
  height:34px;
  min-width:34px;
  font-size:12px;
}
@media(max-width:600px){
  #messagerie .chat-header .chat-avatar,
  #gvsZip1Messenger .chat-header .chat-avatar{
    width:32px;
    height:32px;
    min-width:32px;
    font-size:11px;
  }
}

/* V156 — navigation Messages en haut, boutons ronds et fondus */
#gvsZip1Messenger{padding-top:0!important;}
#gvsZip1Messenger .gvs1-top-nav{
  position:sticky;top:0;z-index:25;display:flex;align-items:center;justify-content:space-evenly;gap:28px;
  height:62px;padding:7px 12px;margin:0 -2px 10px;
  background:rgba(255,255,255,.62);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(160,175,200,.18);
}
#gvsZip1Messenger .gvs1-top-nav button{
  position:relative;width:42px;height:42px;min-width:42px;border:0;border-radius:50%;
  display:grid;place-items:center;cursor:pointer;color:#54708f;background:rgba(235,242,251,.68);
  box-shadow:0 3px 12px rgba(35,70,120,.08);transition:transform .16s ease,background .16s ease,color .16s ease,box-shadow .16s ease;
}
#gvsZip1Messenger .gvs1-top-nav button:hover{transform:translateY(-1px);background:rgba(220,232,247,.9);}
#gvsZip1Messenger .gvs1-top-nav button.active{color:#fff;background:rgba(11,63,168,.88);box-shadow:0 4px 14px rgba(11,63,168,.22);}
#gvsZip1Messenger .gvs1-top-nav button:active{transform:scale(.94);}
#gvsZip1Messenger .gvs1-top-nav svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
#gvsZip1Messenger .gvs1-top-badge{position:absolute;top:-2px;right:-2px;min-width:16px;height:16px;padding:0 4px;border-radius:9px;background:#e53935;color:#fff;font-size:9px;font-weight:800;display:flex;align-items:center;justify-content:center;}
@media(max-width:600px){#gvsZip1Messenger .gvs1-top-nav{height:56px;gap:22px;margin-bottom:7px;}#gvsZip1Messenger .gvs1-top-nav button{width:38px;height:38px;min-width:38px;}#gvsZip1Messenger .gvs1-top-nav svg{width:19px;height:19px;}}
body.dark #gvsZip1Messenger .gvs1-top-nav{background:rgba(15,25,48,.68);border-bottom-color:rgba(255,255,255,.08);}
body.dark #gvsZip1Messenger .gvs1-top-nav button{color:#aebed8;background:rgba(35,49,78,.72);}
body.dark #gvsZip1Messenger .gvs1-top-nav button.active{color:#fff;background:rgba(11,63,168,.92);}

/* V157 — Amis : tous les membres du site */
#gvsZip1Messenger .gvs1-all-friends-modal{position:absolute;inset:0;z-index:80;background:rgba(8,35,85,.28);backdrop-filter:blur(3px);display:flex;align-items:flex-start;justify-content:center;padding:76px 12px 18px;}
#gvsZip1Messenger .gvs1-all-friends-card{width:min(620px,100%);max-height:calc(100% - 10px);background:rgba(255,255,255,.96);border:1px solid rgba(255,255,255,.7);border-radius:22px;overflow:hidden;box-shadow:0 16px 45px rgba(0,0,0,.2);display:flex;flex-direction:column;}
#gvsZip1Messenger .gvs1-all-friends-head{display:flex;align-items:center;justify-content:space-between;padding:15px 16px 10px;border-bottom:1px solid rgba(0,0,0,.07);}
#gvsZip1Messenger .gvs1-all-friends-head div{display:flex;flex-direction:column;gap:2px}.gvs1-all-friends-head strong{font-size:18px}.gvs1-all-friends-head small{color:#718096;font-size:12px}
#gvsZip1Messenger .gvs1-all-friends-head button{border:0;background:rgba(0,0,0,.06);width:34px;height:34px;border-radius:50%;font-size:24px;line-height:1;cursor:pointer;color:#445;}
#gvsZip1Messenger .gvs1-all-friends-search{margin:12px 14px;display:flex;align-items:center;gap:8px;background:#f2f5f9;border-radius:18px;padding:8px 12px}.gvs1-all-friends-search svg{width:19px;height:19px;fill:none;stroke:#738197;stroke-width:2}.gvs1-all-friends-search input{border:0;outline:0;background:transparent;width:100%;font-size:14px}
#gvsZip1Messenger .gvs1-all-friends-list{overflow:auto;padding:0 6px 8px}.gvs1-all-friend-row{width:100%;border:0;border-bottom:1px solid #edf0f4;background:transparent;display:flex;align-items:center;gap:11px;padding:10px 10px;text-align:left;cursor:pointer}.gvs1-all-friend-row:hover{background:#f6f9ff}.gvs1-all-friend-avatar{width:42px;height:42px;min-width:42px;border-radius:50%;overflow:hidden;background:#e8eef8;display:grid;place-items:center}.gvs1-all-friend-avatar img{width:100%;height:100%;object-fit:cover}.gvs1-all-friend-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.gvs1-all-friend-meta strong{font-size:14px;color:#182230}.gvs1-all-friend-meta small{font-size:11px;color:#7b8797;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gvs1-all-friend-status{font-size:12px}
@media(max-width:700px){#gvsZip1Messenger .gvs1-all-friends-modal{position:fixed;padding:68px 8px 8px}#gvsZip1Messenger .gvs1-all-friends-card{max-height:calc(100vh - 76px)}}

/* V159 — vocaux façon WhatsApp : maintien + glissement vertical */
#gvsZip1Messenger .voice-record-btn{touch-action:none;user-select:none;-webkit-user-select:none;}
#gvsZip1Messenger .voice-record-btn.recording{background:#e53935!important;color:#fff!important;border-radius:50%;transform:scale(1.08);box-shadow:0 0 0 7px rgba(229,57,53,.12);}
#gvsZip1Messenger .gvs1-voice-hint{position:absolute;left:50%;bottom:78px;transform:translate(-50%,10px);opacity:0;pointer-events:none;background:rgba(20,28,40,.9);color:#fff;padding:9px 14px;border-radius:18px;font-size:12px;white-space:nowrap;transition:.15s;z-index:60;}
#gvsZip1Messenger .gvs1-voice-hint.show{opacity:1;transform:translate(-50%,0);}

/* V161 — flèche intégrée à la même barre que les icônes, tout fixe en haut avant le titre Messages */
#gvsZip1Messenger .gvs1-top-nav{
  position:fixed!important;
  top:6px!important;
  left:8px!important;
  right:8px!important;
  z-index:300!important;
  margin:0!important;
  height:54px;
  box-sizing:border-box;
  display:flex!important;
  align-items:center;
  justify-content:space-evenly;
  gap:18px;
  padding:6px 8px;
  border-radius:28px;
  background:rgba(255,255,255,.82);
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
  box-shadow:0 5px 18px rgba(20,45,90,.14);
}
#gvsZip1Messenger .gvs1-top-nav button{
  flex:0 0 42px;
}
#gvsZip1Messenger .gvs1-top-nav .gvs1-nav-back{
  width:42px!important;
  height:42px!important;
  min-width:42px!important;
  min-height:42px!important;
  padding:0!important;
  display:flex!important;
  align-items:center;
  justify-content:center;
  border:0!important;
  border-radius:50%!important;
  background:rgba(235,241,249,.9)!important;
  color:inherit!important;
  box-shadow:0 2px 8px rgba(20,45,90,.10);
}
#gvsZip1Messenger .gvs1-top-nav .gvs1-nav-back svg{
  width:21px;height:21px;display:block;
}
/* Le contenu commence sous la barre fixe afin que le titre ne soit jamais masqué. */
#messagerie .gvs1-inner-title{
  padding-top:70px!important;
}
@media(max-width:600px){
  #gvsZip1Messenger .gvs1-top-nav{
    top:5px!important;
    left:5px!important;
    right:5px!important;
    height:52px;
    gap:10px;
    padding:5px 6px;
    border-radius:27px;
  }
  #gvsZip1Messenger .gvs1-top-nav button{flex-basis:40px;}
  #gvsZip1Messenger .gvs1-top-nav .gvs1-nav-back{
    width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;
  }
  #messagerie .gvs1-inner-title{padding-top:66px!important;}
}

/* V162 — barre Messages réellement fixée tout en haut, avant le titre « Messages » */
#messagerie{position:relative!important;}
#gvsZip1Messenger{position:relative!important;padding-top:0!important;}
#gvsZip1Messenger .gvs1-top-nav{
  position:fixed!important;
  top:0!important;
  left:0!important;
  right:0!important;
  width:100%!important;
  height:58px!important;
  margin:0!important;
  z-index:9999!important;
  border-radius:0 0 20px 20px!important;
  padding:7px 14px!important;
  box-sizing:border-box!important;
  background:rgba(255,255,255,.94)!important;
  backdrop-filter:blur(18px)!important;
  -webkit-backdrop-filter:blur(18px)!important;
  box-shadow:0 4px 16px rgba(20,45,90,.14)!important;
}
#gvsZip1Messenger .gvs1-inner-title{
  padding-top:70px!important;
  position:relative!important;
  z-index:1!important;
}
@media(max-width:600px){
  #gvsZip1Messenger .gvs1-top-nav{
    top:0!important;left:0!important;right:0!important;
    height:56px!important;
    padding:6px 8px!important;
    border-radius:0 0 18px 18px!important;
  }
  #gvsZip1Messenger .gvs1-inner-title{padding-top:66px!important;}
}

/* V163 — barre fixe au-dessus du titre Messages + avatar de discussion encore plus petit */
#gvsZip1Messenger .gvs1-top-nav{
  position:fixed!important;
  top:0!important;
  left:0!important;
  right:0!important;
  width:100%!important;
  height:56px!important;
  z-index:10000!important;
}
/* Réserve exactement la hauteur de la barre avant le titre « Messages » */
#gvsZip1Messenger .gvs1-screen{
  padding-top:56px!important;
  box-sizing:border-box;
}
#gvsZip1Messenger .gvs1-screen.gvs1-screen-chat,
#gvsZip1Messenger #gvs1-chat{
  padding-top:56px!important;
}
/* Photo ronde du contact dans l'en-tête du chat : plus petite */
#gvsZip1Messenger .chat-header .avatar{
  width:28px!important;
  height:28px!important;
  min-width:28px!important;
  font-size:10px!important;
  border-width:2px!important;
}
#gvsZip1Messenger .chat-header-id{gap:8px!important;}
@media(max-width:600px){
  #gvsZip1Messenger .gvs1-top-nav{height:54px!important;}
  #gvsZip1Messenger .gvs1-screen,
  #gvsZip1Messenger .gvs1-screen.gvs1-screen-chat,
  #gvsZip1Messenger #gvs1-chat{padding-top:54px!important;}
  #gvsZip1Messenger .chat-header .avatar{
    width:25px!important;height:25px!important;min-width:25px!important;font-size:9px!important;
  }
}

/* v164 — en-tête du chat centré, sans appel/vidéo/menu */
#gvsZip1Messenger .chat-header{justify-content:center!important;position:relative!important;}
#gvsZip1Messenger .chat-header-id{flex:0 1 auto!important;justify-content:center!important;text-align:center!important;gap:8px!important;}
#gvsZip1Messenger .chat-header-meta{align-items:flex-start!important;text-align:left!important;}
#gvsZip1Messenger .gvs1-nav-back{color:#e53935!important;}
#gvsZip1Messenger .gvs1-nav-back svg{stroke:#e53935!important;fill:none!important;}


/* v165 — barre de discussion et profil fixes + avatar plus visible + emojis */
#gvsZip1Messenger .chat-col{
  position:relative!important;
  overflow:hidden!important;
  height:calc(100vh - 58px)!important;
  height:calc(100dvh - 58px)!important;
  min-height:480px!important;
}
#gvsZip1Messenger .chat-header{
  position:sticky!important;
  top:0!important;
  z-index:30!important;
  flex:none!important;
  min-height:58px!important;
  box-sizing:border-box!important;
  background:rgba(255,255,255,.97)!important;
  backdrop-filter:blur(12px)!important;
  -webkit-backdrop-filter:blur(12px)!important;
  box-shadow:0 2px 8px rgba(20,45,90,.08)!important;
}
#gvsZip1Messenger .chat-header .avatar{
  width:40px!important;
  height:40px!important;
  min-width:40px!important;
  border-radius:50%!important;
  font-size:13px!important;
  flex:none!important;
}
#gvsZip1Messenger .chat-messages{
  min-height:0!important;
  overflow-y:auto!important;
  overscroll-behavior:contain!important;
  flex:1 1 auto!important;
}
#gvsZip1Messenger .chat-input-bar{
  position:sticky!important;
  bottom:0!important;
  z-index:35!important;
  flex:none!important;
  background:rgba(255,255,255,.98)!important;
  box-shadow:0 -3px 10px rgba(20,45,90,.08)!important;
  margin-top:0!important;
  padding:8px!important;
}
#gvsZip1Messenger .emoji-btn{
  width:34px!important;height:34px!important;min-width:34px!important;
  font-size:20px!important;padding:0!important;border:0!important;background:transparent!important;
  display:grid!important;place-items:center!important;cursor:pointer!important;
}
#gvsZip1Messenger .emoji-picker{
  position:absolute!important;
  left:10px!important;
  right:10px!important;
  bottom:64px!important;
  max-height:190px!important;
  overflow-y:auto!important;
  display:grid!important;
  grid-template-columns:repeat(8,1fr)!important;
  gap:3px!important;
  background:rgba(255,255,255,.98)!important;
  border:1px solid #dfe6f1!important;
  border-radius:16px!important;
  padding:9px!important;
  box-shadow:0 10px 28px rgba(20,45,90,.18)!important;
  z-index:60!important;
}
#gvsZip1Messenger .emoji-picker.hidden{display:none!important}
#gvsZip1Messenger .emoji-picker button{
  border:0!important;background:transparent!important;border-radius:9px!important;
  font-size:23px!important;padding:5px!important;cursor:pointer!important;line-height:1.1!important;
}
#gvsZip1Messenger .emoji-picker button:hover{background:#f0f4fa!important}
@media(max-width:600px){
  #gvsZip1Messenger .chat-col{height:calc(100vh - 54px)!important;height:calc(100dvh - 54px)!important;min-height:440px!important;}
  #gvsZip1Messenger .chat-header{min-height:54px!important;padding:8px!important;}
  #gvsZip1Messenger .chat-header .avatar{width:40px!important;height:40px!important;min-width:40px!important;}
  #gvsZip1Messenger .emoji-picker{grid-template-columns:repeat(7,1fr)!important;bottom:62px!important;max-height:180px!important;}
}

/* v166 — bandeau : titre Messages intégré après les icônes + suppression recherche conversations */
#gvsZip1Messenger .gvs1-top-nav{
  justify-content:center!important;
  gap:22px!important;
}
#gvsZip1Messenger .gvs1-nav-title{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  margin-left:4px!important;
  padding:7px 13px!important;
  border-radius:18px!important;
  font-size:14px!important;
  font-weight:700!important;
  color:#0b3fa8!important;
  background:rgba(255,255,255,.62)!important;
  border:1px solid rgba(11,63,168,.12)!important;
  white-space:nowrap!important;
}
#gvsZip1Messenger .gvs1-messages-panel-header{
  display:none!important;
}
#gvsZip1Messenger #convList{
  flex:1 1 auto!important;
}
@media(max-width:600px){
  #gvsZip1Messenger .gvs1-top-nav{gap:15px!important;}
  #gvsZip1Messenger .gvs1-nav-title{font-size:13px!important;padding:6px 10px!important;margin-left:1px!important;}
}


/* v167 — profil plus grand, nom + statut sous la photo, zone de saisie rapprochée */
#gvsZip1Messenger .chat-header{
  justify-content:center!important;
  padding:8px 16px 7px!important;
  min-height:76px!important;
}
#gvsZip1Messenger .chat-header-id{
  flex:0 0 auto!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:2px!important;
  text-align:center!important;
}
#gvsZip1Messenger .chat-header .avatar{
  width:54px!important;
  height:54px!important;
  min-width:54px!important;
  min-height:54px!important;
  border-radius:50%!important;
  font-size:16px!important;
  flex:none!important;
}
#gvsZip1Messenger .chat-header-meta{
  align-items:center!important;
  text-align:center!important;
  gap:1px!important;
}
#gvsZip1Messenger .chat-header-meta strong{font-size:14px!important;line-height:16px!important;}
#gvsZip1Messenger .chat-header-meta span{font-size:11px!important;line-height:14px!important;color:var(--online)!important;}
#gvsZip1Messenger .chat-input-bar{
  margin:0!important;
  padding:5px 7px 6px!important;
}
#gvsZip1Messenger .chat-messages{padding-bottom:4px!important;}

@media(max-width:600px){
  #gvsZip1Messenger .chat-header{min-height:82px!important;padding:7px 10px 6px!important;}
  #gvsZip1Messenger .chat-header .avatar{width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;font-size:17px!important;}
  #gvsZip1Messenger .chat-header-meta strong{font-size:14px!important;}
  #gvsZip1Messenger .chat-header-meta span{font-size:11px!important;}
  #gvsZip1Messenger .chat-input-bar{padding:4px 6px 5px!important;}
}


/* V168 — conversation façon Facebook / WhatsApp
   Profil et statut agrandis uniquement dans une conversation ouverte.
   La zone des messages reste défilable indépendamment de l'en-tête et de l'écriture.
*/
#gvsZip1Messenger #gvs1-chat .chat-col{
  display:flex!important;
  flex-direction:column!important;
  overflow:hidden!important;
}
#gvsZip1Messenger #gvs1-chat .chat-header{
  min-height:104px!important;
  padding:8px 12px 5px!important;
  flex:0 0 auto!important;
}
#gvsZip1Messenger #gvs1-chat .chat-header-id{
  gap:1px!important;
}
#gvsZip1Messenger #gvs1-chat .chat-header .avatar{
  width:76px!important;
  height:76px!important;
  min-width:76px!important;
  min-height:76px!important;
  font-size:22px!important;
  border-width:2px!important;
}
#gvsZip1Messenger #gvs1-chat .chat-header-meta{
  gap:0!important;
  line-height:1!important;
}
#gvsZip1Messenger #gvs1-chat .chat-header-meta strong{
  font-size:15px!important;
  line-height:18px!important;
}
#gvsZip1Messenger #gvs1-chat .chat-header-meta span{
  font-size:12px!important;
  line-height:15px!important;
  font-weight:700!important;
}
#gvsZip1Messenger #gvs1-chat .chat-messages{
  flex:1 1 auto!important;
  min-height:0!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  -webkit-overflow-scrolling:touch!important;
  overscroll-behavior:contain!important;
  padding-top:4px!important;
  padding-bottom:6px!important;
  scroll-behavior:smooth!important;
}
#gvsZip1Messenger #gvs1-chat .chat-input-bar{
  flex:0 0 auto!important;
  margin-top:0!important;
  padding:5px 7px 6px!important;
}
@media(max-width:600px){
  #gvsZip1Messenger #gvs1-chat .chat-header{
    min-height:112px!important;
    padding:6px 8px 4px!important;
  }
  #gvsZip1Messenger #gvs1-chat .chat-header .avatar{
    width:82px!important;
    height:82px!important;
    min-width:82px!important;
    min-height:82px!important;
    font-size:24px!important;
  }
  #gvsZip1Messenger #gvs1-chat .chat-header-meta strong{
    font-size:15px!important;
    line-height:18px!important;
  }
  #gvsZip1Messenger #gvs1-chat .chat-header-meta span{
    font-size:12px!important;
    line-height:15px!important;
  }
  #gvsZip1Messenger #gvs1-chat .chat-messages{
    padding-top:3px!important;
    padding-bottom:5px!important;
  }
}

/* GVS+ V169 — écran Messages vidé : seule la flèche est conservée */
#gvs1-messages {
  padding: 0 !important;
}
#gvs1-messages .gvs1-messages-empty-screen {
  position: relative;
  width: 100%;
  min-height: 100%;
  height: 100%;
  background: transparent;
}
#gvs1-messages .gvs1-messages-back-only {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 20;
}


/* V172 — Section Message volontairement vide : seule la flèche de retour reste visible. */
#messagerie .gvs-messages-arrow-only{display:flex;align-items:flex-start;justify-content:flex-start;width:100%;min-height:1px;}
#messagerie .messages-back-only{display:flex!important;align-items:center;justify-content:center;margin:10px 0 0 10px;padding:0;width:42px;height:42px;background:transparent!important;border:0;box-shadow:none;border-radius:0;}
#messagerie .messages-back-only svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
#messagerie .gvs-messages-arrow-only *:not(button):not(svg):not(path){display:none!important;}
#messagerie .gvs-messages-arrow-only button svg path{display:block!important;}


/* V173 — Onglet Messages : absolument rien sauf la flèche de retour. */
#messagerie {
  position: relative !important;
  padding: 0 !important;
  margin: 0 !important;
  min-height: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}
#messagerie > * { display: revert !important; }
#messagerie > .gvs-page-tools-arrow-only{display:flex !important;}
#messagerie > .gvs-msg-toptabs{display:flex !important;}
#messagerie > .gvs-msg-panel{display:block !important;}
#messagerie > .gvs-msg-panel.hidden{display:none !important;}
#messagerie .gvs-msg-panel.hidden{display:none !important;}
/* V183 — Messages reprend exactement la flèche de retour standard (identique à Formations). */
#messagerie > .gvs-page-tools-arrow-only { display: flex !important; }
#messagerie > .gvs-page-tools-arrow-only .gvs-section-back { display: flex !important; }
#messagerie > .gvs-page-tools-arrow-only .gvs-section-back svg { display: block !important; }
#messagerie > .gvs-messages-arrow-only {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 42px !important;
  height: 42px !important;
  margin: 10px 0 0 10px !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  color: #d51f3a !important;
  font-size: 0 !important;
}
#messagerie > .gvs-messages-arrow-only svg {
  display: block !important;
  width: 30px !important;
  height: 30px !important;
  fill: none !important;
  stroke: currentColor !important;
  stroke-width: 2.6 !important;
  stroke-linecap: round !important;
  stroke-linejoin: round !important;
}
#messagerie > .gvs-messages-arrow-only svg path { display: block !important; }


/* V174 — flèche de retour exactement sous la forme <-- */
#messagerie > .gvs-messages-arrow-only {
  display: block !important;
  width: auto !important;
  height: auto !important;
  margin: 10px 0 0 10px !important;
  padding: 0 !important;
  color: #d51f3a !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  font-family: "Courier New", monospace !important;
  font-size: 32px !important;
  font-weight: 400 !important;
  line-height: 1 !important;
  letter-spacing: -5px !important;
}
#messagerie > .gvs-messages-arrow-only svg { display: none !important; }

.gvs-section-back svg,.home-nav-arrow svg,.gvs-client-arrow svg,.gvs-fixed-client-arrow svg,.home-top-arrow svg,.messages-back-only svg,.gvs-messages-arrow-only svg{
display:block!important;width:24px!important;height:24px!important;fill:none!important;stroke:#E63946!important;stroke-width:2.5!important;stroke-linecap:round!important;stroke-linejoin:round!important
}
.gvs-section-back,.home-nav-arrow,.gvs-client-arrow,.gvs-fixed-client-arrow,.home-top-arrow,.messages-back-only,.gvs-messages-arrow-only{color:#E63946!important}
#messagerie>.gvs-messages-arrow-only{display:inline-flex!important;align-items:center!important;justify-content:center!important;width:42px!important;height:42px!important;margin:10px 0 0 10px!important;padding:0!important;background:transparent!important;border:0!important;box-shadow:none!important}

/* V185 — En-tête : logo GVS+, mascotte animée et bouton Thème alignés sur une seule ligne. */
.topstrip{flex-wrap:nowrap!important}
.brand-cluster{flex:0 0 auto!important}
.topstrip-icons-wrap{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end!important;flex:1 1 auto!important;min-width:0!important;gap:8px!important}
.topstrip-icons-wrap .live-datetime{flex:1 1 auto!important;min-width:0!important;text-overflow:ellipsis!important}
.topstrip-icons-wrap .topstrip-icons{flex:0 0 auto!important;margin-left:0!important;align-items:center!important}
@media(max-width:350px){
  .topstrip-icons-wrap .live-datetime{display:none!important}
}

/* V257 — Administration en blocs déroulants */
.admin-accordion{padding:0!important;overflow:hidden;margin-bottom:12px;border:1px solid rgba(24,35,46,.09);box-shadow:0 6px 18px rgba(24,35,46,.06)}
.admin-accordion-trigger{width:100%;min-height:64px;border:0;background:transparent;display:grid;grid-template-columns:42px minmax(0,1fr) 58px;align-items:center;gap:12px;text-align:left;padding:10px 14px;cursor:pointer;color:var(--ink,#17212b)}
.admin-accordion-trigger:hover{background:rgba(16,185,129,.055)}
.admin-accordion-icon{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:rgba(16,185,129,.10);color:#16815f;flex:none}
.admin-accordion-icon svg{width:21px;height:21px}
.admin-accordion-title{font-size:15px;font-weight:800;line-height:1.25;min-width:0;display:flex;align-items:center}
.admin-accordion-arrow{justify-self:end;width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:rgba(16,185,129,.12);font-size:22px;line-height:1;transition:transform .2s ease,background .2s ease}
.admin-accordion.is-open .admin-accordion-arrow{transform:rotate(180deg);background:rgba(16,185,129,.19)}
.admin-accordion-body{padding:0 16px 16px;border-top:1px solid rgba(24,35,46,.07)}
.admin-accordion-body[hidden]{display:none}
.admin-accordion-body>.card{margin-top:12px}
.admin-dashboard-message-card{position:relative}
.admin-dashboard-message-card .dash-label{font-weight:800}
.admin-autosave-status{font-size:12px;font-weight:700;color:#16815f;margin-left:auto;white-space:nowrap}
@media(max-width:600px){
  .admin-accordion-trigger{grid-template-columns:38px minmax(0,1fr) 52px;padding:9px 10px;gap:9px}
  .admin-accordion-icon{width:36px;height:36px;border-radius:10px}
  .admin-accordion-title{font-size:14px}
  .admin-accordion-arrow{width:42px;height:42px;font-size:20px}
}

/* V258 corrections */
.admin-accordion-trigger .admin-accordion-arrow{
  display:grid!important; place-items:center!important;
  width:48px!important; height:48px!important;
  font-size:23px!important; font-weight:900!important;
}
.admin-accordion-title{white-space:normal!important;text-align:left!important;}

/* V265 — Gestion de messagerie : blocage de la zone de saisie */
.admin-message-composer-control{margin:14px 0 4px;padding:15px;border:1px solid rgba(24,35,46,.09);border-radius:14px;background:rgba(16,185,129,.035)}
.admin-control-row{display:flex;align-items:center;justify-content:space-between;gap:16px}
.admin-control-row strong{display:block;font-size:14px;margin-bottom:4px}
.admin-switch{position:relative;display:inline-block;width:58px;height:32px;flex:none}
.admin-switch input{opacity:0;width:0;height:0}
.admin-switch-slider{position:absolute;inset:0;cursor:pointer;border-radius:32px;background:#d7dde2;transition:.2s}
.admin-switch-slider:before{content:"";position:absolute;width:24px;height:24px;left:4px;top:4px;border-radius:50%;background:#fff;transition:.2s;box-shadow:0 1px 4px rgba(0,0,0,.18)}
.admin-switch input:checked + .admin-switch-slider{background:#d9534f}
.admin-switch input:checked + .admin-switch-slider:before{transform:translateX(26px)}
.admin-composer-status{margin-top:9px;font-size:12px;font-weight:700}

html.admin-block-message-composer [contenteditable="true"],
html.admin-block-message-composer textarea[name*="message" i],
html.admin-block-message-composer textarea[id*="message" i],
html.admin-block-message-composer input[name*="message" i]{
  pointer-events:none!important;opacity:.45!important;
}
html.admin-block-message-composer button[type="submit"][data-message],
html.admin-block-message-composer .message-send,
html.admin-block-message-composer .send-message{
  pointer-events:none!important;opacity:.45!important;
}

/* V266 — Espace Message réservé aux utilisateurs pour écrire au Directeur général */
.gvs-user-director-space{margin:0 0 14px;padding:12px;border:1px solid rgba(24,35,46,.10);border-radius:16px;background:#fff}
.gvs-user-director-head{display:flex;align-items:center;gap:10px;padding-bottom:10px;border-bottom:1px solid rgba(24,35,46,.08)}
.gvs-user-director-head>div:last-child{display:flex;flex-direction:column;gap:2px}
.gvs-user-director-head small{opacity:.68}
.gvs-user-director-thread{max-height:260px;overflow:auto;padding:10px 2px}
.gvs-user-director-composer{display:flex;align-items:flex-end;gap:7px;border-top:1px solid rgba(24,35,46,.08);padding-top:9px}
.gvs-user-director-composer textarea{flex:1;min-height:42px;max-height:120px;resize:none;border:1px solid rgba(24,35,46,.13);border-radius:13px;padding:10px 12px;font:inherit;outline:none}
.gvs-user-director-composer textarea:focus{border-color:#16815f}
.gvs-user-director-composer .gvs-msg-icon-btn,.gvs-user-director-composer .gvs-msg-send{flex:none}
.gvs-user-director-locked{padding:10px;border-radius:11px;background:rgba(217,83,79,.08);font-size:12px;font-weight:700;margin-top:8px}


/* V268 — carreau Messageries : uniquement Message + Notification des messages, icônes professionnelles */
.gvs-msg-toptabs-two{
  height:auto;
  min-height:92px;
  gap:10px;
  padding:10px;
  margin:0;
  background:transparent;
  border:0;
  box-shadow:none;
  position:sticky;
}
.gvs-msg-toptabs-two .gvs-msg-tab{
  flex:1 1 0;
  min-height:76px;
  padding:10px 8px;
  gap:7px;
  border:1px solid var(--line);
  border-radius:16px;
  background:var(--paper-raised);
  color:var(--ink-soft);
  box-shadow:var(--shadow-sm);
  transition:transform .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.gvs-msg-toptabs-two .gvs-msg-tab-ic{
  display:flex;
  align-items:center;
  justify-content:center;
  width:38px;
  height:38px;
  border-radius:12px;
  background:#EEF3FF;
  color:var(--icon-active-light);
}
.gvs-msg-toptabs-two .gvs-msg-tab-ic svg{
  width:24px;
  height:24px;
}
.gvs-msg-toptabs-two .gvs-msg-tab-lbl{
  font:700 11px var(--font-body);
  letter-spacing:0;
  white-space:normal;
  text-align:center;
  line-height:1.15;
  overflow:visible;
}
.gvs-msg-toptabs-two .gvs-msg-tab.active{
  color:var(--icon-active-light);
  border-color:rgba(11,63,168,.28);
  box-shadow:0 6px 18px rgba(11,63,168,.10);
  border-top:1px solid rgba(11,63,168,.28);
}
.gvs-msg-toptabs-two .gvs-msg-tab.active .gvs-msg-tab-ic{
  background:#DDE8FF;
}
.gvs-msg-toptabs-two .gvs-msg-tab:active{
  transform:scale(.98);
}
body.dark .gvs-msg-toptabs-two{
  background:transparent;
}
body.dark .gvs-msg-toptabs-two .gvs-msg-tab{
  background:#11182B;
  border-color:#293653;
  color:#A7B2D2;
}
body.dark .gvs-msg-toptabs-two .gvs-msg-tab-ic{
  background:#18264A;
  color:#8EACFF;
}
body.dark .gvs-msg-toptabs-two .gvs-msg-tab.active{
  color:#9CB5FF;
  border-color:#40558A;
}
@media(max-width:380px){
  .gvs-msg-toptabs-two{gap:7px;padding:8px}
  .gvs-msg-toptabs-two .gvs-msg-tab{min-height:72px;padding:8px 5px}
  .gvs-msg-toptabs-two .gvs-msg-tab-lbl{font-size:10px}
}

/* V270 — Directeur : photo, présence réelle et messagerie directe */
.gvs-director-photo{overflow:hidden!important;display:grid;place-items:center;font-weight:900;background:#eef3fb}
.gvs-director-photo img{width:100%;height:100%;object-fit:cover;display:block}
.gvs-director-offline{color:inherit!important;display:inline-flex!important;align-items:center;gap:0}
.gvs-user-director-composer{display:flex;align-items:center;gap:6px}
.gvs-user-director-composer .gvs-msg-icon-btn{flex:0 0 auto}
.gvs-user-director-composer textarea{flex:1;min-width:0}
.gvs-director-online-row .messenger-avatar{overflow:hidden}
.gvs-msg-unread{background:#e32b32!important}
/* V271 — le gros point vert et le libellé « En ligne » ne sont plus affichés pour l'administration. */
.gvs-director-online-row .messenger-item-main small:empty{display:none!important}
#gvsDirectorStatus,#gvsUserDirectorStatus,#gvsMsgChatStatus{display:none!important}
[data-gvs-director-online]{display:none!important}

/* V275 — statut admin compact : petit point vert/rouge et bouton déconnexion de même taille. */
#syncBadge.badge.online{display:inline-flex!important;align-items:center;justify-content:center;gap:4px;min-width:88px;min-height:30px;height:30px;box-sizing:border-box;padding:6px 10px;}
#syncBadge.badge.online .dot{width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block;flex:0 0 7px;}
#syncBadge.badge.local{min-width:88px;min-height:30px;box-sizing:border-box;justify-content:center;padding:6px 10px;}
#panel > .card:first-child .btn.logout-light.sm{
  min-width:88px;
  min-height:30px;
  height:30px;
  box-sizing:border-box;
  padding:6px 10px;
  font-size:11.5px;
  border-radius:20px;
}
/* V279 — Messagerie > Message : profil du Directeur centré + présence sous la photo */
.gvs-user-director-head{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  gap:5px;
  padding:14px 8px 12px;
  border-bottom:1px solid rgba(24,35,46,.08);
}
.gvs-user-director-head .gvs-msg-avatar{
  width:92px;
  height:92px;
  min-width:92px;
  margin:0 auto 2px;
  border-radius:50%;
  overflow:hidden;
  display:flex;
  align-items:center;
  justify-content:center;
}
.gvs-user-director-head .gvs-msg-avatar img{
  width:100%;
  height:100%;
  object-fit:cover;
  border-radius:50%;
  display:block;
}
.gvs-director-presence{
  display:block;
  font-size:13px;
  line-height:18px;
  font-weight:700;
  opacity:1;
}
.gvs-director-name{
  display:block;
  font-size:15px;
  line-height:20px;
  margin:0;
}
.gvs-director-presence.gvs-director-online{color:inherit;}
.gvs-director-presence.gvs-director-offline{color:inherit;}

/* V281 — Présentation centrée du Directeur dans Messagerie > Message */
#msgTabPanel-message .gvs-user-director-space{display:block;text-align:center}
#msgTabPanel-message .gvs-user-director-head{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;text-align:center!important;gap:6px!important}
#msgTabPanel-message .gvs-user-director-head .gvs-msg-avatar{margin:0 auto!important;width:96px!important;height:96px!important;min-width:96px!important;border-radius:50%!important;overflow:hidden!important}
#msgTabPanel-message .gvs-user-director-head .gvs-msg-avatar img{width:100%!important;height:100%!important;object-fit:cover!important;border-radius:50%!important;display:block!important}
#msgTabPanel-message .gvs-director-presence{display:block!important;margin:0!important;font-size:13px!important;line-height:18px!important;font-weight:700!important}
#msgTabPanel-message .gvs-director-name{display:block!important;margin:0!important;font-size:15px!important;line-height:20px!important;font-weight:800!important}

/* V282 — Affichage obligatoire du statut dans Messagerie > Message */
#msgTabPanel-message #gvsUserDirectorStatus{
  display:block!important;
  visibility:visible!important;
  position:static!important;
  opacity:1!important;
  font-size:13px!important;
  line-height: 20px!important;
  font-weight:700!important;
  margin:0!important;
}
#msgTabPanel-message #gvsUserDirectorStatus.gvs-director-online{color:#16a34a!important;}
#msgTabPanel-message #gvsUserDirectorStatus.gvs-director-offline{color:#dc2626!important;}
#msgTabPanel-message #gvsUserDirectorMessageSpace{display:block!important;visibility:visible!important;}


/* V283 — bloc Directeur : aspect messagerie moderne et icônes SVG */
#msgTabPanel-message .gvs-user-director-space{
  max-width:680px;margin:0 auto 14px;padding:0 12px 12px;
  border:1px solid rgba(24,35,46,.10);border-radius:20px;background:#fff;
  box-shadow:0 8px 26px rgba(20,40,80,.07);overflow:hidden;
}
#msgTabPanel-message .gvs-user-director-head{padding:18px 8px 14px;border-bottom:1px solid rgba(24,35,46,.08)}
#msgTabPanel-message .gvs-user-director-head .gvs-msg-avatar{width:104px!important;height:104px!important;min-width:104px!important;box-shadow:0 3px 14px rgba(0,0,0,.10)}
#msgTabPanel-message .gvs-director-presence{font-size:13px!important;font-weight:700!important}
#msgTabPanel-message .gvs-director-name{font-size:16px!important;font-weight:800!important}
#msgTabPanel-message .gvs-user-director-thread{min-height:180px;max-height:46vh;overflow:auto;padding:14px 4px;background:#f7f8fa}
#msgTabPanel-message .gvs-user-director-composer{
  display:flex;align-items:center;gap:5px;margin-top:10px;padding:7px 8px;
  border:1px solid #dfe3e8;border-radius:28px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.04);
}
#msgTabPanel-message .gvs-user-director-composer textarea{border:0!important;background:transparent!important;box-shadow:none!important;outline:0!important;padding:8px 5px;min-height:38px;max-height:110px;border-radius:20px!important}
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-icon-btn,
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-send{
  width:40px;height:40px;min-width:40px;padding:0;border:0;border-radius:50%;display:grid;place-items:center;background:transparent;color:#59636e;cursor:pointer;flex:0 0 40px;
}
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-icon-btn:hover{background:#f0f2f5}
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-icon-btn svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-send{color:#16815f}
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-send svg{width:23px;height:23px;display:block}
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-icon-btn.recording{background:#e8f7ef;color:#16815f;transform:translateY(-2px)}
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-icon-btn.swipe-up{box-shadow:0 0 0 5px rgba(22,129,95,.10);transform:translateY(-8px)}

/* V284 — Directeur : carte centrée + barre de composition professionnelle */
.gvs-user-director-space{
  width:min(100%,760px);
  margin:0 auto;
  display:flex;
  flex-direction:column;
  align-items:stretch;
}
.gvs-user-director-head{
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
  gap:7px !important;
  padding:18px 12px 12px !important;
}
.gvs-user-director-head .gvs-msg-avatar{
  width:92px !important;
  height:92px !important;
  min-width:92px !important;
  border-radius:50% !important;
  overflow:hidden !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  margin:0 auto !important;
}
.gvs-user-director-head .gvs-msg-avatar img{
  width:100% !important;height:100% !important;object-fit:cover !important;display:block !important;
}
.gvs-user-director-status{
  font-size:13px !important;
  font-weight:700 !important;
  line-height:1.2 !important;
  display:block !important;
}
.gvs-director-name{
  font-size:16px !important;
  font-weight:700 !important;
  display:block !important;
}
.gvs-user-director-thread{
  min-height:150px;
  max-height:46vh;
  overflow:auto;
}
.gvs-user-director-composer{
  display:flex !important;
  align-items:center !important;
  gap:7px !important;
  padding:8px !important;
  border-radius:18px !important;
}
.gvs-user-director-composer .gvs-msg-icon-btn,
.gvs-user-director-composer .gvs-msg-send{
  width:40px !important;
  height:40px !important;
  min-width:40px !important;
  border-radius:50% !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
}
.gvs-user-director-composer .gvs-msg-send svg{
  width:21px !important;height:21px !important;
}
.gvs-user-director-composer textarea{
  flex:1 1 auto !important;
  min-width:0 !important;
  border-radius:18px !important;
}
.gvs-user-director-composer .gvs-msg-send{
  cursor:pointer !important;
}
.gvs-user-director-composer .gvs-msg-icon-btn.recording,
.gvs-user-director-composer .gvs-msg-icon-btn.swipe-up{
  transform:translateY(-5px) scale(1.06);
}

/* V285 — Photo du Directeur synchronisée avec Administration + saisie plus grande */
#msgTabPanel-message .gvs-user-director-head .gvs-msg-avatar,
#msgTabPanel-message .gvs-user-director-head .gvs-director-photo{
  width:110px!important;height:110px!important;min-width:110px!important;
  border-radius:50%!important;overflow:hidden!important;
}
#msgTabPanel-message .gvs-user-director-head .gvs-msg-avatar img,
#msgTabPanel-message .gvs-user-director-head .gvs-director-photo img{
  width:100%!important;height:100%!important;object-fit:cover!important;display:block!important;
}
#msgTabPanel-message .gvs-user-director-composer{
  min-height:58px!important;padding:8px 10px!important;gap:7px!important;
}
#msgTabPanel-message .gvs-user-director-composer textarea{
  flex:1 1 auto!important;width:100%!important;min-height:46px!important;height:46px!important;
  max-height:140px!important;padding:11px 10px!important;font-size:16px!important;line-height:22px!important;
  resize:none!important;overflow-y:auto!important;
}

/* V286 — Messagerie > Message : barre compacte et micro façon WhatsApp */
#msgTabPanel-message .gvs-user-director-composer{gap:2px!important;padding:7px 7px!important;min-height:62px!important;}
#msgTabPanel-message .gvs-user-director-composer textarea{min-height:50px!important;height:50px!important;max-height:150px!important;padding:12px 8px!important;font-size:16px!important;line-height:23px!important;}
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-icon-btn,
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-send{width:36px!important;height:36px!important;min-width:36px!important;flex:0 0 36px!important;}
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-icon-btn svg{width:20px!important;height:20px!important;}
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-send svg{width:22px!important;height:22px!important;}
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-icon-btn.swipe-up{transform:translateY(-12px) scale(1.08)!important;}

/* V293 — étoile multicolore, rotation douce + Message toujours visible en sombre */
body.dark #msgTabPanel-message{display:block!important;visibility:visible!important;opacity:1!important;background:#0b1020!important;color:#eef4ff!important}
body.dark #msgTabPanel-message .gvs-user-director-space{display:block!important;visibility:visible!important;background:#111827!important;color:#eef4ff!important;border-color:#334155!important}
body.dark #msgTabPanel-message .gvs-user-director-head{background:#111827!important;color:#eef4ff!important;border-color:#334155!important}
body.dark #msgTabPanel-message .gvs-user-director-thread{display:block!important;background:#0b1220!important;color:#f8fafc!important}
body.dark #msgTabPanel-message .gvs-user-director-composer{display:flex!important;background:#111827!important;border-color:#334155!important}
body.dark #msgTabPanel-message .gvs-user-director-composer textarea{color:#f8fafc!important;background:#1f2937!important}
body.dark #msgTabPanel-message .gvs-user-director-composer textarea::placeholder{color:#a8b4c7!important}
body.dark #msgTabPanel-message .gvs-user-director-thread .msg-bubble{color:#f8fafc!important}
body.dark #msgTabPanel-message .gvs-user-director-thread .msg-bubble.msg-in{background:#263244!important}
body.dark #msgTabPanel-message .gvs-user-director-thread .msg-bubble.msg-out{background:#164b88!important;color:#fff!important}


/* V370 — Administration : bandeau du Directeur visible et fixe en haut (photo ronde + Nom Prénom + statut rectangulaire) */
#adminHeaderCard.admin-header-card{
  position:sticky;
  top:var(--gvs-header-h,0px);
  z-index:30;
  background:var(--paper-raised,#fff);
  box-shadow:0 4px 14px rgba(0,0,0,.08);
}
#adminHeaderDirectorHead{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  text-align:left!important;
  gap:12px!important;
  padding:0 0 12px!important;
}
#adminHeaderDirectorHead .gvs-msg-avatar{
  width:50px!important;
  height:50px!important;
  min-width:50px!important;
  margin:0!important;
  border-radius:50%!important;
  overflow:hidden!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}
#adminHeaderDirectorHead .gvs-msg-avatar img{
  width:100%!important;height:100%!important;object-fit:cover!important;display:block!important;
}
#adminHeaderDirectorInfo{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:5px;
  min-width:0;
}
#adminHeaderDirectorName{
  font-size:14px;
  font-weight:800;
  line-height:1.2;
  max-width:100%;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
#adminHeaderDirectorStatus{
  display:inline-flex!important;
  align-items:center;
  gap:4px;
  width:fit-content;
  padding:3px 10px;
  border-radius:6px;
  font-size:10.5px;
  font-weight:800;
  line-height:1.3;
  opacity:1!important;
  background:rgba(220,38,38,.10);
  color:#dc2626;
}
#adminHeaderDirectorStatus.gvs-director-online{background:rgba(22,163,74,.12);color:#16a34a}
#adminHeaderDirectorStatus.gvs-director-offline{background:rgba(220,38,38,.10);color:#dc2626}
body.dark #adminHeaderCard.admin-header-card{background:var(--paper-raised,#0f172a);box-shadow:0 4px 14px rgba(0,0,0,.4)}
body.dark #adminHeaderDirectorStatus.gvs-director-online{background:rgba(22,163,74,.22)}
body.dark #adminHeaderDirectorStatus.gvs-director-offline{background:rgba(220,38,38,.22)}

/* V300 — ⭐ branches individually multicolores + compositors utilisateurs/admins type ChatGPT/Facebook/WhatsApp */
.gvs-user-director-composer,
.gvs-msg-composer{
  display:flex!important;align-items:flex-end!important;gap:6px!important;width:100%!important;box-sizing:border-box!important;
  min-height:58px!important;padding:7px 8px!important;border-radius:30px!important;
  background:#fff!important;border:1px solid #d9dee7!important;box-shadow:0 1px 5px rgba(0,0,0,.08)!important;
}
.gvs-user-director-composer textarea,
.gvs-msg-composer textarea{
  flex:1 1 auto!important;min-width:0!important;width:auto!important;height:42px!important;min-height:42px!important;max-height:180px!important;
  margin:0!important;padding:9px 4px!important;border:0!important;border-radius:22px!important;background:transparent!important;
  color:#172033!important;line-height:22px!important;resize:none!important;overflow-y:hidden!important;outline:none!important;box-shadow:none!important;
}
.gvs-user-director-composer .gvs-msg-icon-btn,.gvs-user-director-composer .gvs-msg-send,
.gvs-msg-composer .gvs-msg-icon-btn,.gvs-msg-composer .gvs-msg-send{
  flex:0 0 40px!important;width:40px!important;height:40px!important;min-width:40px!important;margin:0!important;
  border:0!important;border-radius:50%!important;display:grid!important;place-items:center!important;background:transparent!important;
}
.gvs-user-director-composer .gvs-msg-icon-btn:hover,.gvs-user-director-composer .gvs-msg-send:hover,
.gvs-msg-composer .gvs-msg-icon-btn:hover,.gvs-msg-composer .gvs-msg-send:hover{background:#f0f2f5!important}
body.dark .gvs-user-director-composer,body.dark .gvs-msg-composer{background:#202123!important;border-color:#4b5563!important;box-shadow:0 1px 6px rgba(0,0,0,.35)!important}
body.dark .gvs-user-director-composer textarea,body.dark .gvs-msg-composer textarea{color:#f8fafc!important;background:transparent!important}
body.dark .gvs-user-director-composer textarea::placeholder,body.dark .gvs-msg-composer textarea::placeholder{color:#9ca3af!important}
body.dark .gvs-user-director-composer .gvs-msg-icon-btn:hover,body.dark .gvs-user-director-composer .gvs-msg-send:hover,
body.dark .gvs-msg-composer .gvs-msg-icon-btn:hover,body.dark .gvs-msg-composer .gvs-msg-send:hover{background:#34363a!important}
@media(max-width:520px){
 .gvs-user-director-composer,.gvs-msg-composer{min-height:56px!important;padding:6px!important;border-radius:28px!important}
 .gvs-user-director-composer textarea,.gvs-msg-composer textarea{height:40px!important;min-height:40px!important;max-height:180px!important;font-size:15.5px!important}
 .gvs-user-director-composer .gvs-msg-icon-btn,.gvs-user-director-composer .gvs-msg-send,.gvs-msg-composer .gvs-msg-icon-btn,.gvs-msg-composer .gvs-msg-send{flex-basis:36px!important;width:36px!important;height:36px!important;min-width:36px!important}
}

/* V301 — grande barre de saisie type messagerie (Messagerie > Message), icônes fixes visibles en clair et sombre */
#msgTabPanel-message .gvs-user-director-composer,
#msgTabPanel-message .gvs-msg-composer{
  display:flex!important;align-items:flex-end!important;gap:7px!important;
  width:100%!important;box-sizing:border-box!important;
  min-height:64px!important;padding:8px 10px!important;border-radius:22px!important;
}
#msgTabPanel-message .gvs-user-director-composer textarea,
#msgTabPanel-message .gvs-msg-composer textarea{
  flex:1 1 auto!important;width:auto!important;min-width:0!important;
  height:46px!important;min-height:46px!important;max-height:160px!important;
  padding:11px 8px!important;font-size:16px!important;line-height:22px!important;
  resize:none!important;overflow-y:auto!important;
}
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-icon-btn,
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-send,
#msgTabPanel-message .gvs-msg-composer .gvs-msg-icon-btn,
#msgTabPanel-message .gvs-msg-composer .gvs-msg-send{
  flex:0 0 40px!important;width:40px!important;height:40px!important;min-width:40px!important;
  border-radius:50%!important;display:grid!important;place-items:center!important;
  color:#54656f!important;
}
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-icon-btn:hover,
#msgTabPanel-message .gvs-msg-composer .gvs-msg-icon-btn:hover{background:#f0f2f5!important}
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-send,
#msgTabPanel-message .gvs-msg-composer .gvs-msg-send{color:#16815f!important}
body.dark #msgTabPanel-message .gvs-user-director-composer .gvs-msg-icon-btn,
body.dark #msgTabPanel-message .gvs-msg-composer .gvs-msg-icon-btn{color:#aebac1!important}
body.dark #msgTabPanel-message .gvs-user-director-composer .gvs-msg-icon-btn:hover,
body.dark #msgTabPanel-message .gvs-msg-composer .gvs-msg-icon-btn:hover{background:#34363a!important}
body.dark #msgTabPanel-message .gvs-user-director-composer .gvs-msg-send,
body.dark #msgTabPanel-message .gvs-msg-composer .gvs-msg-send{color:#2fd583!important}
@media(max-width:520px){
  #msgTabPanel-message .gvs-user-director-composer,
  #msgTabPanel-message .gvs-msg-composer{min-height:84px!important;padding:10px!important}
  #msgTabPanel-message .gvs-user-director-composer textarea,
  #msgTabPanel-message .gvs-msg-composer textarea{height:60px!important;min-height:60px!important;max-height:220px!important}
}

/* V302 — barre de saisie encore plus grande + rotation de l'étoile beaucoup plus rapide */
#msgTabPanel-message .gvs-user-director-composer,
#msgTabPanel-message .gvs-msg-composer{
  min-height:158px!important;padding:16px 14px!important;border-radius:30px!important;
}
#msgTabPanel-message .gvs-user-director-composer textarea,
#msgTabPanel-message .gvs-msg-composer textarea{
  height:126px!important;min-height:126px!important;max-height:340px!important;
  padding:16px 8px!important;font-size:16.5px!important;line-height:25px!important;
}
@media(max-width:520px){
  #msgTabPanel-message .gvs-user-director-composer,
  #msgTabPanel-message .gvs-msg-composer{min-height:140px!important;padding:14px 12px!important}
  #msgTabPanel-message .gvs-user-director-composer textarea,
  #msgTabPanel-message .gvs-msg-composer textarea{height:112px!important;min-height:112px!important;max-height:300px!important}
}


/* V303 — bandeau d'icônes séparé, le reste de la barre entièrement dédié à la saisie (façon Claude) */
#msgTabPanel-message .gvs-user-director-composer,
#msgTabPanel-message .gvs-msg-composer{
  display:flex!important;flex-direction:column!important;align-items:stretch!important;
  gap:0!important;padding:0!important;border-radius:24px!important;overflow:hidden!important;
}
#msgTabPanel-message .gvs-user-director-composer textarea,
#msgTabPanel-message .gvs-msg-composer textarea{
  width:100%!important;flex:1 1 auto!important;box-sizing:border-box!important;
  border-radius:0!important;padding:16px 16px 10px!important;
}
#msgTabPanel-message .gvs-composer-toolbar{
  display:flex!important;align-items:center!important;gap:2px!important;
  padding:6px 10px 8px!important;flex:0 0 auto!important;
  border-top:1px solid rgba(24,35,46,.08)!important;
}
#msgTabPanel-message .gvs-composer-spacer{flex:1 1 auto!important}
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-icon-btn,
#msgTabPanel-message .gvs-user-director-composer .gvs-msg-send,
#msgTabPanel-message .gvs-msg-composer .gvs-msg-icon-btn,
#msgTabPanel-message .gvs-msg-composer .gvs-msg-send{
  flex:0 0 38px!important;width:38px!important;height:38px!important;min-width:38px!important;margin:0!important;
}
body.dark #msgTabPanel-message .gvs-composer-toolbar{border-top-color:#334155!important}

/* étoile : richesse multicolore restaurée — chaque branche garde sa propre couleur (20 teintes distinctes) */

/* V304 — encart de réponse rapide du Panel Administrateur harmonisé avec la grande barre */
.admin-msg-reply-row{
  display:flex!important;align-items:center!important;gap:6px!important;
  background:#fff!important;border:1px solid #d9dee7!important;border-radius:26px!important;
  padding:6px 6px 6px 14px!important;box-shadow:0 1px 5px rgba(0,0,0,.06)!important;
}
.admin-msg-reply-row input{
  flex:1 1 auto!important;border:0!important;outline:0!important;background:transparent!important;
  min-width:0!important;font-size:15px!important;padding:11px 4px!important;
}
.admin-msg-reply-row .btn{
  border-radius:50%!important;min-width:38px!important;width:38px!important;height:38px!important;
  padding:0!important;display:grid!important;place-items:center!important;flex:0 0 38px!important;
}
.admin-msg-reply-row .btn.amber{background:#16815f!important;color:#fff!important;border:0!important}
body.dark .admin-msg-reply-row{background:#202123!important;border-color:#4b5563!important}
body.dark .admin-msg-reply-row input{color:#f8fafc!important}
body.dark .admin-msg-reply-row input::placeholder{color:#9ca3af!important}

/* étoile : couleurs arc-en-ciel restaurées (chaque branche garde sa couleur définie en HTML) */

/* V320.1 — espace réservé au bandeau supérieur : il ne doit jamais recouvrir les carreaux. */
#appHeader{contain:layout paint;}
.gvs-director-request-panel{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:10px 0 8px;padding:10px 12px;border:1px solid rgba(14,147,80,.18);border-radius:14px;background:rgba(14,147,80,.045);}
.gvs-director-request-text{font-size:12px;line-height:1.35;font-weight:700;color:var(--ink-soft);}
.gvs-director-request-panel .btn{flex:0 0 auto;white-space:nowrap;}
.gvs-director-request-panel.is-pending{background:rgba(245,158,11,.07);border-color:rgba(245,158,11,.2);}
.gvs-director-request-panel.is-accepted{display:none!important;}
@media(max-width:520px){.gvs-director-request-panel{align-items:stretch;flex-direction:column}.gvs-director-request-panel .btn{width:100%;}}
/* V323 — demande Directeur : simple + vert, sans rond, centré dans la barre d'icônes. */
.gvs-director-request-panel{display:none!important}
.gvs-director-request-toolbar-btn{width:auto!important;height:auto!important;min-width:0!important;padding:0 10px!important;border:0!important;border-radius:0!important;background:transparent!important;color:#16a34a!important;font-size:28px!important;font-weight:800!important;line-height:1!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important;box-shadow:none!important}
.gvs-director-request-toolbar-btn:active{transform:scale(.92);}
.gvs-director-request-toolbar-btn:disabled{opacity:.65!important;cursor:default!important}
.gvs-director-request-toolbar-btn.hidden{display:none!important}
.gvs-director-request-toolbar-btn.is-pending{color:#16a34a!important}
/* Une demande en attente doit être immédiatement visible dans l'administration. */
#adminMessagesCard.is-open .admin-msg-request-actions{display:flex!important;}

/* V324 — + de demande : simple, vert, sans rond, centré entre les icônes. */
#gvsUserDirectorComposer.gvs-request-mode .gvs-composer-toolbar{
  display:grid!important;
  grid-template-columns:1fr 1fr auto 1fr 1fr!important;
  align-items:center!important;
  justify-items:center!important;
  gap:4px!important;
}
#gvsUserDirectorComposer.gvs-request-mode .gvs-composer-spacer{display:none!important}
#gvsUserDirectorComposer .gvs-director-request-toolbar-btn{
  width:auto!important;height:auto!important;min-width:28px!important;min-height:34px!important;
  margin:0!important;padding:0 7px!important;border:0!important;border-radius:0!important;
  background:transparent!important;color:#16a34a!important;box-shadow:none!important;
  font-size:30px!important;font-weight:900!important;line-height:1!important;
  display:inline-flex!important;align-items:center!important;justify-content:center!important;
}
#gvsUserDirectorComposer .gvs-director-request-toolbar-btn:active{transform:scale(.9)!important}
#gvsUserDirectorComposer.gvs-request-mode .gvs-msg-icon-btn[disabled]{opacity:.42!important;filter:grayscale(.25)}
#gvsUserDirectorComposer.gvs-request-mode .gvs-msg-send[disabled]{opacity:.42!important}
@media(max-width:520px){#gvsUserDirectorComposer.gvs-request-mode .gvs-composer-toolbar{grid-template-columns:1fr 1fr auto 1fr 1fr!important;gap:2px!important}}
/* L'inbox Directeur doit toujours exposer une demande en attente dans Message. */
.gvs-msg-inbox-row.is-request{border:1px solid rgba(22,163,74,.28)!important;background:rgba(22,163,74,.06)!important}
.gvs-msg-request-inline{display:flex!important;align-items:center!important;gap:5px!important;flex-wrap:wrap!important;margin-left:auto!important}
.gvs-msg-request-inline button{cursor:pointer!important}

/* V325 — Demande d'accès Directeur : + strictement centré entre 😀 📎 et 🎤 ✈️.
   Avant acceptation, les contrôles restent visibles mais l'envoi est verrouillé. */
#gvsUserDirectorComposer.gvs-request-mode .gvs-composer-toolbar{
  display:grid!important;
  grid-template-columns:1fr 1fr auto 1fr 1fr!important;
  align-items:center!important;
  justify-items:center!important;
  gap:4px!important;
}
#gvsUserDirectorComposer.gvs-request-mode .gvs-composer-toolbar > .gvs-msg-icon-btn[aria-label="Emojis"]{grid-column:1!important;}
#gvsUserDirectorComposer.gvs-request-mode .gvs-composer-toolbar > .gvs-msg-icon-btn[aria-label="Pièces jointes"]{grid-column:2!important;}
#gvsUserDirectorComposer.gvs-request-mode .gvs-director-request-toolbar-btn{grid-column:3!important;grid-row:1!important;}
#gvsUserDirectorComposer.gvs-request-mode .gvs-composer-spacer{display:none!important;}
#gvsUserDirectorComposer.gvs-request-mode #gvsUserDirectorMic{grid-column:4!important;}
#gvsUserDirectorComposer.gvs-request-mode #gvsUserDirectorSend{grid-column:5!important;}
#gvsUserDirectorComposer.gvs-request-mode #gvsUserDirectorMic,
#gvsUserDirectorComposer.gvs-request-mode #gvsUserDirectorSend{opacity:.5;cursor:not-allowed;}
#gvsUserDirectorComposer.gvs-request-mode #gvsUserDirectorInput{cursor:not-allowed;}
#gvsUserDirectorComposer.gvs-request-mode #gvsUserDirectorInput::placeholder{opacity:.72;}
@media(max-width:520px){
  #gvsUserDirectorComposer.gvs-request-mode .gvs-composer-toolbar{grid-template-columns:1fr 1fr auto 1fr 1fr!important;gap:2px!important;}
}

/* V326 — + parfaitement centré : cinq colonnes de largeur identique. */
#gvsUserDirectorComposer.gvs-request-mode .gvs-composer-toolbar{
  position:relative!important;
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
  align-items:center!important;
  justify-items:center!important;
  gap:0!important;
}
#gvsUserDirectorComposer.gvs-request-mode .gvs-composer-toolbar > .gvs-msg-icon-btn[aria-label="Emojis"]{grid-column:1!important;grid-row:1!important;}
#gvsUserDirectorComposer.gvs-request-mode .gvs-composer-toolbar > .gvs-msg-icon-btn[aria-label="Pièces jointes"]{grid-column:2!important;grid-row:1!important;}
#gvsUserDirectorComposer.gvs-request-mode .gvs-director-request-toolbar-btn{
  grid-column:3!important;grid-row:1!important;
  justify-self:center!important;
  margin-inline:auto!important;
  padding:0!important;
  min-width:0!important;
  width:30px!important;height:34px!important;
}
#gvsUserDirectorComposer.gvs-request-mode .gvs-composer-spacer{display:none!important;}
#gvsUserDirectorComposer.gvs-request-mode #gvsUserDirectorMic{grid-column:4!important;grid-row:1!important;}
#gvsUserDirectorComposer.gvs-request-mode #gvsUserDirectorSend{grid-column:5!important;grid-row:1!important;}
#gvsUserDirectorComposer.gvs-request-mode #gvsUserDirectorInput{
  pointer-events:auto!important;
  caret-color:transparent!important;
}

/* V328 persistent composer/action fixes */
#gvsMsgComposer .gvs-composer-toolbar{position:relative!important;display:grid!important;grid-template-columns:repeat(5,1fr)!important;align-items:center!important;justify-items:center!important;gap:4px!important}
#gvsMsgComposer .gvs-composer-spacer{display:none!important}
#gvsMsgComposer #gvsMsgAccessRequestBtn{grid-column:3!important;grid-row:1!important;border:0!important;background:transparent!important;color:#16a34a!important;font-size:29px!important;font-weight:900!important;line-height:1!important;padding:2px 8px!important;margin:0!important;box-shadow:none!important;border-radius:0!important}
#gvsMsgComposer #gvsMsgVoiceBtn{grid-column:4!important;grid-row:1!important}
#gvsMsgComposer .gvs-msg-send{grid-column:5!important;grid-row:1!important}
#gvsMsgComposer .gvs-msg-icon-btn:first-child{grid-column:1!important;grid-row:1!important}
#gvsMsgComposer .gvs-msg-icon-btn:nth-child(2){grid-column:2!important;grid-row:1!important}
#gvsMsgComposer .gvs-msg-access-request.hidden{display:none!important}
.gvs-msg-admin-request-actions,.admin-msg-request-actions{display:flex!important;visibility:visible!important;opacity:1!important}

/* V329 final */
#gvsMsgComposer .gvs-composer-toolbar{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;position:relative!important;width:100%!important;align-items:center!important;justify-items:center!important}
#gvsMsgComposer #gvsMsgAccessRequestBtn{grid-column:3!important;position:static!important;justify-self:center!important;transform:none!important;color:#16a34a!important;background:transparent!important;border:0!important;box-shadow:none!important;font-size:30px!important;font-weight:900!important;line-height:1!important;padding:0 10px!important;margin:0!important}
#gvsMsgComposer #gvsMsgVoiceBtn{grid-column:4!important}
#gvsMsgComposer .gvs-msg-send{grid-column:5!important}
#gvsMsgComposer .gvs-msg-icon-btn:first-child{grid-column:1!important}
#gvsMsgComposer .gvs-msg-icon-btn:nth-child(2){grid-column:2!important}
#gvsMsgComposer .gvs-msg-access-request.hidden{display:none!important}
#gvsMsgComposer textarea.gvs-composer-locked{cursor:not-allowed!important}
/* Actualités : jusqu'à 10 photos et gestion individuelle dans l'administration */
.news-photo-strip{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}
.news-photo-slide{flex:0 0 100%;scroll-snap-align:start}
.news-photo-slide img{width:100%;height:220px;object-fit:cover;display:block;background:rgba(0,0,0,.04)}
.news-photo-slide p{margin:0;padding:9px 12px;font-size:13px;line-height:1.4}
.news-upload-preview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px}
.news-upload-preview-item{position:relative;border:1px solid var(--line,#d8e2f0);border-radius:10px;overflow:hidden;background:var(--paper-raised,#fff)}
.news-upload-preview-item img{width:100%;height:100px;object-fit:cover;display:block}
.news-upload-preview-item span{display:block;padding:5px 7px;font-size:11px;font-weight:700}
#newsCaptionsEditor{display:grid;gap:7px;margin-top:10px}
.admin-news-item{border:1px solid var(--line,#d8e2f0);border-radius:14px;padding:10px;margin-top:10px;background:var(--paper-raised,#fff)}
.admin-news-images{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:10px}
.admin-news-photo{border:1px solid var(--line,#d8e2f0);border-radius:10px;padding:7px;min-width:0}
.admin-news-photo img{width:100%;height:120px;object-fit:cover;border-radius:8px;display:block;margin-bottom:7px}
.admin-news-photo label:not(.admin-replace-news-label){display:block;font-size:11px;font-weight:700;margin-bottom:4px}
.admin-news-photo textarea{width:100%;box-sizing:border-box;resize:vertical;font:inherit;font-size:12px}
.admin-news-photo input[type="text"]{width:100%;box-sizing:border-box;font:inherit;font-size:12px;margin-bottom:7px}
.admin-replace-news-label{display:flex!important;align-items:center;justify-content:center;cursor:pointer;margin-top:7px;width:100%;box-sizing:border-box}
@media(max-width:480px){.admin-news-images{grid-template-columns:1fr}.news-upload-preview{grid-template-columns:repeat(2,1fr)}}

/* V345 — Le défilement des photos d'actualité ne doit jamais déplacer la page. */
.news-photo-carousel{
  width:100%;
  overflow:hidden;
  position:relative;
  contain:layout paint;
  overscroll-behavior:contain;
}
.news-photo-strip{
  display:flex;
  width:100%;
  overflow-x:auto;
  overflow-y:hidden;
  scroll-snap-type:x mandatory;
  scroll-behavior:smooth;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
  overscroll-behavior-x:contain;
  overscroll-behavior-y:none;
  touch-action:pan-x;
  /* Empêche le geste horizontal de faire bouger le document verticalement. */
}
.news-photo-slide{
  flex:0 0 100%;
  width:100%;
  min-width:100%;
  scroll-snap-align:start;
  scroll-snap-stop:always;
  display:flex;
  flex-direction:column;
}
.news-photo-frame{
  height:175px;
  min-height:175px;
  max-height:175px;
  width:100%;
  flex:0 0 175px;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
}
.news-photo-frame img,
.news-photo-slide img{
  width:100%;
  height:100%;
  object-fit:contain;
  display:block;
}
.news-photo-slide p{
  height:42px;
  min-height:42px;
  max-height:42px;
  overflow:hidden;
  box-sizing:border-box;
  margin:0;
  padding:8px 12px;
  line-height:1.35;
}
.news-photo-dots{position:relative;z-index:2}

/* V346 — Actualités : afficher chaque photo entière, même si elle doit être plus petite. */
.news-photo-frame{
  height:150px !important;
  min-height:150px !important;
  max-height:150px !important;
  width:100% !important;
  flex:0 0 150px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  overflow:hidden !important;
  background:rgba(0,0,0,.025) !important;
  padding:0 !important;
  box-sizing:border-box !important;
}
.news-photo-frame img,
.news-photo-slide img{
  display:block !important;
  width:auto !important;
  height:auto !important;
  max-width:100% !important;
  max-height:150px !important;
  object-fit:contain !important;
  object-position:center center !important;
  margin:0 auto !important;
}
.news-photo-slide{overflow:hidden !important;}

/* V347 — Le bloc de chaque actualité occupe toute la largeur disponible. */
.news-carousel{gap:0 !important;padding-left:0 !important;padding-right:0 !important;}
.news-card{
  flex:0 0 100% !important;
  width:100% !important;
  max-width:100% !important;
  box-sizing:border-box !important;
}
.news-photo-carousel,
.news-photo-strip,
.news-photo-slide,
.news-photo-frame{
  width:100% !important;
  max-width:100% !important;
  box-sizing:border-box !important;
}

/* V348 — Agrandir les photos tout en conservant 100 % de l'image visible. */
.news-photo-frame{
  height:220px !important;
  min-height:220px !important;
  max-height:220px !important;
  width:100% !important;
  flex:0 0 220px !important;
  padding:0 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  overflow:hidden !important;
  box-sizing:border-box !important;
}
.news-photo-frame img,
.news-photo-slide img{
  width:100% !important;
  height:100% !important;
  max-width:100% !important;
  max-height:100% !important;
  object-fit:contain !important;
  object-position:center center !important;
  display:block !important;
  margin:0 !important;
}
@media(max-width:480px){
  .news-photo-frame{
    height:205px !important;
    min-height:205px !important;
    max-height:205px !important;
    flex-basis:205px !important;
  }
}

/* v349 — Actualités : bloc photo vertical pour mieux voir l'intégralité des images */
.news-photo-frame{
  height:360px !important;
  min-height:360px !important;
  max-height:360px !important;
  width:100% !important;
  flex:0 0 360px !important;
  padding:0 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  overflow:hidden !important;
  box-sizing:border-box !important;
}
.news-photo-frame img,
.news-photo-slide img{
  width:100% !important;
  height:100% !important;
  max-width:100% !important;
  max-height:100% !important;
  object-fit:contain !important;
  object-position:center center !important;
  display:block !important;
  margin:0 !important;
}
@media(max-width:480px){
  .news-photo-frame{
    height:330px !important;
    min-height:330px !important;
    max-height:330px !important;
    flex-basis:330px !important;
  }
}

/* V350 — Le bloc Actualités prend exactement le format de l'image */
.news-photo-frame{
  height:auto !important;
  min-height:0 !important;
  max-height:none !important;
  width:100% !important;
  flex:0 0 auto !important;
  padding:0 !important;
  display:block !important;
  overflow:hidden !important;
  box-sizing:border-box !important;
}
.news-photo-frame img,
.news-photo-slide img{
  width:100% !important;
  height:auto !important;
  max-width:100% !important;
  max-height:none !important;
  object-fit:contain !important;
  object-position:center center !important;
  display:block !important;
  margin:0 !important;
}

/* V351 — Actualités : image/bloc légèrement réduit, sans recadrage */
.news-photo-frame{
  width:90% !important;
  max-width:90% !important;
  margin-left:auto !important;
  margin-right:auto !important;
}
.news-photo-frame img,
.news-photo-slide img{
  width:100% !important;
  max-width:100% !important;
  height:auto !important;
  object-fit:contain !important;
}

/* V352 — Actualités : image encore plus petite, format conservé */
.news-photo-frame{
  width:75% !important;
  max-width:75% !important;
  margin-left:auto !important;
  margin-right:auto !important;
}
.news-photo-frame img,
.news-photo-slide img{
  width:100% !important;
  max-width:100% !important;
  height:auto !important;
  object-fit:contain !important;
}

/* V353 — Actualités : image à 50% de la largeur du bloc, sans recadrage */
.news-photo-frame{
  width:50% !important;
  max-width:50% !important;
  margin-left:auto !important;
  margin-right:auto !important;
}
.news-photo-frame img,
.news-photo-slide img{
  width:100% !important;
  max-width:100% !important;
  height:auto !important;
  object-fit:contain !important;
}

/* V354 — Actualités : même esprit que le bloc « Plus d'informations » de l'accueil */
.news-carousel{gap:12px !important;padding-left:0 !important;padding-right:0 !important;}
.news-card{
  position:relative !important;
  overflow:hidden !important;
  background:var(--paper-raised) !important;
  border:1px solid var(--line) !important;
  border-radius:var(--radius-sm) !important;
  padding:14px !important;
  box-shadow:var(--shadow) !important;
  box-sizing:border-box !important;
}
.news-card::after{
  content:"" !important;
  position:absolute !important;
  top:0 !important; right:0 !important;
  width:0 !important; height:0 !important;
  border-style:solid !important;
  border-width:0 20px 20px 0 !important;
  border-color:transparent var(--paper) transparent transparent !important;
  filter:drop-shadow(-1px 1px 1px rgba(11,19,48,.12)) !important;
  pointer-events:none !important;
}
body.dark .news-card::after{border-color:transparent #0B1020 transparent transparent !important;}
.news-photo-carousel,
.news-photo-strip,
.news-photo-slide{
  width:100% !important;
  max-width:100% !important;
  box-sizing:border-box !important;
}
.news-photo-frame{
  width:100% !important;
  max-width:100% !important;
  height:auto !important;
  min-height:0 !important;
  max-height:190px !important;
  margin:0 !important;
  padding:0 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  background:rgba(0,0,0,.04) !important;
  border-radius:13px !important;
  overflow:hidden !important;
  box-sizing:border-box !important;
}
.news-photo-frame img,
.news-photo-slide img{
  width:100% !important;
  max-width:100% !important;
  height:auto !important;
  max-height:190px !important;
  object-fit:contain !important;
  object-position:center !important;
  display:block !important;
  margin:0 !important;
  border-radius:13px !important;
}
.news-card p{padding:8px 0 0 !important;}
@media(max-width:480px){
  .news-photo-frame,
  .news-photo-frame img,
  .news-photo-slide img{max-height:165px !important;}
}

/* V355 — Actualités : bloc et photo calqués sur le style des carreaux d'Accueil (« Plus d'informations ») */
.news-card{
  position:relative !important;
  min-height:126px !important;
  border:1px solid var(--line) !important;
  border-radius:20px !important;
  background:var(--paper-raised) !important;
  color:var(--ink) !important;
  box-shadow:0 6px 18px rgba(11,19,48,.08) !important;
  padding:16px 12px 14px !important;
  box-sizing:border-box !important;
  overflow:hidden !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
}
.news-card::before{
  content:"" !important;
  position:absolute !important;
  inset:0 !important;
  background:linear-gradient(145deg,rgba(255,255,255,.82),transparent 60%) !important;
  pointer-events:none !important;
}
.news-card::after{
  content:"" !important;
  position:absolute !important;
  top:0 !important; right:0 !important;
  width:0 !important; height:0 !important;
  border-style:solid !important;
  border-width:0 20px 20px 0 !important;
  border-color:transparent var(--paper) transparent transparent !important;
  filter:drop-shadow(-1px 1px 1px rgba(11,19,48,.12)) !important;
  pointer-events:none !important;
}
.news-photo-carousel,
.news-photo-strip,
.news-photo-slide{
  position:relative !important;
  z-index:1 !important;
  width:100% !important;
  max-width:100% !important;
  box-sizing:border-box !important;
}
.news-photo-frame{
  width:100% !important;
  max-width:100% !important;
  height:125px !important;
  min-height:125px !important;
  max-height:125px !important;
  border-radius:15px !important;
  background:rgba(11,63,168,.06) !important;
  overflow:hidden !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  padding:0 !important;
  margin:0 !important;
}
.news-photo-frame img,
.news-photo-slide img{
  width:100% !important;
  height:100% !important;
  max-width:100% !important;
  max-height:100% !important;
  object-fit:contain !important;
  object-position:center !important;
  display:block !important;
  margin:0 !important;
  border-radius:15px !important;
}
.news-card p{
  position:relative !important;
  z-index:1 !important;
  width:100% !important;
  margin:7px 0 0 !important;
  padding:0 !important;
  font-size:12px !important;
  line-height:1.35 !important;
  text-align:left !important;
}
body.dark .news-card{
  background:#11182A !important;
  border-color:#25304B !important;
  box-shadow:0 8px 20px rgba(0,0,0,.22) !important;
}
body.dark .news-card::before{background:linear-gradient(145deg,rgba(255,255,255,.04),transparent 60%) !important;}
body.dark .news-card::after{border-color:transparent #0B1020 transparent transparent !important;}
@media (min-width:600px){
  .news-card{min-height:145px !important;}
  .news-photo-frame{height:145px !important;min-height:145px !important;max-height:145px !important;}
}
@media (max-width:360px){
  .news-card{min-height:116px !important;padding:12px 8px !important;}
  .news-photo-frame{height:105px !important;min-height:105px !important;max-height:105px !important;border-radius:13px !important;}
  .news-photo-frame img,.news-photo-slide img{border-radius:13px !important;}
}

/* V356 — Actualités : petit bloc de 50 %, comme les carreaux de l'Accueil */
.news-carousel{
  width:100% !important;
  max-width:100% !important;
  gap:12px !important;
  box-sizing:border-box !important;
}
.news-card{
  flex:0 0 70% !important;
  width:70% !important;
  max-width:70% !important;
  min-width:70% !important;
  min-height:0 !important;
  padding:12px !important;
  border-radius:20px !important;
  box-sizing:border-box !important;
}
.news-photo-carousel,
.news-photo-strip,
.news-photo-slide,
.news-photo-frame{
  width:100% !important;
  max-width:100% !important;
  box-sizing:border-box !important;
}
.news-photo-frame{
  height:auto !important;
  min-height:0 !important;
  max-height:none !important;
  aspect-ratio:1 / 1 !important;
  border-radius:15px !important;
}
.news-photo-frame img,
.news-photo-slide img{
  width:100% !important;
  height:100% !important;
  max-width:100% !important;
  max-height:100% !important;
  object-fit:contain !important;
  border-radius:15px !important;
}
@media(max-width:480px){
  .news-card{
    flex-basis:70% !important;
    width:70% !important;
    max-width:70% !important;
    min-width:70% !important;
    padding:10px !important;
  }
  .news-photo-frame{
    aspect-ratio:1 / 1 !important;
  }
}

/* V359 — Actualités : bloc centré à 65 % */
.news-carousel{
  justify-content:center !important;
  gap:0 !important;
}
.news-card{
  flex:0 0 65% !important;
  width:65% !important;
  max-width:65% !important;
  min-width:65% !important;
  margin-left:auto !important;
  margin-right:auto !important;
}
.news-photo-carousel,
.news-photo-strip,
.news-photo-slide,
.news-photo-frame,
.news-photo-frame img,
.news-photo-slide img{
  width:100% !important;
  max-width:100% !important;
}
@media(max-width:480px){
  .news-card{
    flex-basis:65% !important;
    width:65% !important;
    max-width:65% !important;
    min-width:65% !important;
  }
}

/* V360 — Actualités : format vertical comme le bloc photos */
.news-card{
  aspect-ratio:4 / 5 !important;
  height:auto !important;
  overflow:hidden !important;
}
.news-photo-carousel,
.news-photo-strip,
.news-photo-slide,
.news-photo-frame{
  height:100% !important;
}
.news-photo-frame{
  aspect-ratio:auto !important;
  min-height:0 !important;
  max-height:none !important;
}
.news-photo-frame img,
.news-photo-slide img{
  width:100% !important;
  height:100% !important;
  object-fit:contain !important;
}
@media(max-width:480px){
  .news-card{aspect-ratio:4 / 5 !important;}
}

/* V361 — Actualités : bloc encore réduit et centré */
.news-card{
  flex:0 0 55% !important;
  width:55% !important;
  max-width:55% !important;
  min-width:55% !important;
  margin-left:auto !important;
  margin-right:auto !important;
}
@media(max-width:480px){
  .news-card{
    flex-basis:55% !important;
    width:55% !important;
    max-width:55% !important;
    min-width:55% !important;
  }
}

/* V362 — Actualités : une photo = un bloc. Le bloc et sa photo défilent ensemble. */
.news-card{
  flex:0 0 55% !important;
  width:55% !important;
  max-width:55% !important;
  min-width:55% !important;
  margin-left:auto !important;
  margin-right:auto !important;
}
.news-card .news-photo-carousel,
.news-card .news-photo-strip,
.news-card .news-photo-slide{
  width:100% !important;
  max-width:100% !important;
  overflow:visible !important;
}
.news-card .single-photo-slide{
  display:block !important;
  overflow:visible !important;
  scroll-snap-type:none !important;
}
.news-card .news-photo-slide{
  flex:0 0 100% !important;
  width:100% !important;
}
@media(max-width:480px){
  .news-card{flex-basis:55% !important;width:55% !important;max-width:55% !important;min-width:55% !important;}
}

/* V371 — Résultat du quiz + félicitations visuelles */
#gvsGameModal .game-result-correct,
#gvsGameModal .gvs-congratulations { font-weight:900; font-size:1.35rem; animation:gvsBravoPop .45s ease-out both; }
#gvsGameModal .game-result-wrong { font-weight:900; font-size:1.25rem; animation:gvsFauxShake .35s ease-out both; }
@keyframes gvsBravoPop { 0%{transform:scale(.55);opacity:0} 70%{transform:scale(1.12);opacity:1} 100%{transform:scale(1);opacity:1} }
@keyframes gvsFauxShake { 0%,100%{transform:translateX(0)} 25%{transform:translateX(-7px)} 50%{transform:translateX(7px)} 75%{transform:translateX(-4px)} }
.gvs-celebration { position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index:9999; }
.gvs-spark { position:absolute; left:var(--x); top:42%; font-size:clamp(16px,4vw,30px); font-weight:900; opacity:0; animation:gvsSparkFly 1.65s cubic-bezier(.2,.75,.25,1) var(--delay) forwards; }
@keyframes gvsSparkFly { 0%{opacity:0;transform:translate(-50%,0) scale(.2) rotate(0deg)} 12%{opacity:1} 100%{opacity:0;transform:translate(calc(-50% + var(--dx)),-220px) scale(1.25) rotate(var(--rot))} }

/* V372 — Mes Rubriques : bandeau d'état toujours visible sur l'accueil. */
#home.active ~ * #androidStatusBar{}
body:not(.standalone) #androidStatusBar{z-index:10000;}
/* V372 — Félicitations du quiz : pluie de brillants visible et joyeuse. */
.gvs-congratulations{color:inherit;}

/* V374 — Note du quiz sur 20 et bouton de recommencement */
#gvsRestartBtn{margin-top:8px;}
#gvsGameModal .game-score{font-size:1.15rem;font-weight:900;}

/* V376 — Identité GVS+ : bleu professionnel */
.brandword,
.brandword:active,
.brandword:hover,
.brandword:focus-visible,
body.dark .brandword,
body.dark .brandword:active,
body.dark .brandword:hover,
body.dark .brandword:focus-visible {
  color:#1261C9 !important;
  font-weight:950 !important;
  letter-spacing:-0.6px;
  text-shadow:0 1px 1px rgba(18,97,201,.12);
}


/* V377 — stabilité tactile et interactions rapides */
button, a, input, textarea, select, label, [role="button"]{
  -webkit-tap-highlight-color:transparent;
}
button, a, [role="button"]{
  touch-action:manipulation;
}
button:not(:disabled), a, [role="button"]{
  cursor:pointer;
}
/* Évite qu'une couche décorative transparente bloque un contrôle. */
.gvs-celebration, .gvs-spark, .crop-window{pointer-events:none!important;}
/* Les éléments masqués ne doivent jamais intercepter un toucher. */
.hidden, [hidden]{display:none!important;pointer-events:none!important;}
/* Réduit le coût des effets lourds sur les petits appareils. */
@media (max-width:700px){
  .glass, .glass-card, .backdrop-blur, [style*="backdrop-filter"]{
    -webkit-backdrop-filter:none;
  }
}

/* V378 — Identité GVS+ bleu professionnel avec finition argentée */
.brandword,
.brandword:active,
.brandword:hover,
.brandword:focus-visible,
body.dark .brandword,
body.dark .brandword:active,
body.dark .brandword:hover,
body.dark .brandword:focus-visible{
  background:linear-gradient(135deg,#0B4DB8 0%,#1D73D5 45%,#AFC4DA 100%);
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  color:#1261C9 !important;
  font-weight:950 !important;
  letter-spacing:-0.8px;
  text-shadow:0 1px 1px rgba(11,77,184,.12);
}
.home-sessions-back .gvs-quit-platform{color:#E63946!important;}
.gvs-quit-platform span{display:inline!important;font-size:12px;font-weight:900;}
.gvs-quit-platform{gap:7px!important;padding:7px 11px!important;}
.gvs-quit-platform svg{width:20px!important;height:20px!important;}
@media(max-width:520px){.gvs-quit-platform span{font-size:11px}.gvs-quit-platform{padding:7px 9px!important}}


/* V379 — Quitter la plateforme au-dessus de Mes Rubriques + identité selon le thème */
#home > .home-sessions-back-wrap{
  display:flex !important;
  justify-content:flex-start !important;
  align-items:center !important;
  margin:0 0 8px !important;
  padding:0 !important;
}
#home > .home-sessions-back-wrap .gvs-quit-platform{
  display:inline-flex !important;
  align-items:center;
  gap:7px;
}
/* Mode clair : bleu professionnel + finition argentée */
.brandword,.brandword:active,.brandword:hover,.brandword:focus-visible{
  background:linear-gradient(135deg,#0B4DB8 0%,#1D73D5 48%,#C9D4DF 100%) !important;
  -webkit-background-clip:text !important;
  background-clip:text !important;
  -webkit-text-fill-color:transparent !important;
  color:#1261C9 !important;
  font-weight:950 !important;
  text-shadow:0 1px 1px rgba(11,77,184,.12);
}
/* Mode sombre : vert clair professionnel */
body.dark .brandword,body.dark .brandword:active,body.dark .brandword:hover,body.dark .brandword:focus-visible{
  background:linear-gradient(135deg,#86EFAC 0%,#4ADE80 55%,#BBF7D0 100%) !important;
  -webkit-background-clip:text !important;
  background-clip:text !important;
  -webkit-text-fill-color:transparent !important;
  color:#86EFAC !important;
  text-shadow:0 1px 2px rgba(74,222,128,.18);
}


/* V380 — Récompenses du Quiz : affichage clair et attractif */
#gvsGameModal .gvs-congratulations{
  line-height:1.55;
  font-size:.96rem;
  padding:12px 10px;
  border-radius:14px;
}
#gvsGameModal .gvs-prize-grade{
  display:inline-block;
  margin-top:4px;
  font-size:1.12rem;
  font-weight:950;
}
#gvsGameModal .gvs-congratulations strong{font-weight:950;}


/* V382 — flèche historique dans le carreau Accueil et navigation compacte */
.anip-tile.tile-home{position:relative;}
.anip-tile-back-arrow{position:absolute;right:10px;bottom:8px;font-size:18px;font-weight:900;opacity:.9;}
body.dark .anip-tile-back-arrow{color:#86EFAC;}
#gvsContinueQuizBtn{margin-top:8px;}
#gvsGameModal .gvs-prize-grade{line-height:1.25;}

/* V383 — sortie explicite de la plateforme depuis Mes rubriques */
.gvs-fixed-client-arrow{display:flex;align-items:center;gap:6px;}
.gvs-fixed-client-arrow-label{font-size:.78rem;font-weight:850;white-space:nowrap;}
@media (max-width:700px){.gvs-fixed-client-arrow-label{font-size:.7rem;}}


/* V385 — navigation texte uniquement */
.gvs-fixed-client-arrow svg{display:none!important;}
.gvs-section-back svg{display:none!important;}
.gvs-section-back span{display:inline!important;}
.gvs-fixed-client-arrow-label{display:inline!important;}

/* V386 — boutons de navigation professionnels et cliquables */
.gvs-fixed-client-arrow,
.gvs-section-back{
  appearance:none;
  -webkit-appearance:none;
  display:inline-flex !important;
  align-items:center;
  justify-content:center;
  min-height:42px;
  padding:9px 16px !important;
  border:1px solid rgba(18,97,201,.22) !important;
  border-radius:12px !important;
  background:linear-gradient(135deg,#1261C9,#2f7fe0) !important;
  color:#fff !important;
  font-size:.82rem;
  font-weight:850;
  line-height:1.1;
  letter-spacing:.1px;
  cursor:pointer !important;
  box-shadow:0 5px 14px rgba(18,97,201,.20), inset 0 1px 0 rgba(255,255,255,.22) !important;
  transition:transform .16s ease, box-shadow .16s ease, filter .16s ease;
  text-decoration:none;
  pointer-events:auto !important;
}
.gvs-fixed-client-arrow:hover,
.gvs-section-back:hover{filter:brightness(1.05);box-shadow:0 7px 18px rgba(18,97,201,.26),inset 0 1px 0 rgba(255,255,255,.25) !important;}
.gvs-fixed-client-arrow:active,
.gvs-section-back:active{transform:translateY(1px) scale(.98);}
.gvs-fixed-client-arrow:focus-visible,
.gvs-section-back:focus-visible{outline:3px solid rgba(18,97,201,.28);outline-offset:2px;}
.gvs-fixed-client-arrow svg,
.gvs-section-back svg{display:none !important;}
.gvs-fixed-client-arrow-label,
.gvs-section-back span{display:inline !important;color:inherit !important;}
body.dark .gvs-fixed-client-arrow,
body.dark .gvs-section-back{
  background:linear-gradient(135deg,#49d17d,#24ad62) !important;
  border-color:rgba(73,209,125,.30) !important;
  color:#062e18 !important;
  box-shadow:0 5px 14px rgba(36,173,98,.22),inset 0 1px 0 rgba(255,255,255,.28) !important;
}
@media(max-width:700px){
  .gvs-fixed-client-arrow,.gvs-section-back{min-height:40px;padding:8px 13px !important;font-size:.75rem;}
}

/* V388 — Quitter la plateforme : texte simple et gras, à droite du même bandeau */
.topstrip #topstripClientArrowWrap{
  margin-left:auto !important;
  margin-right:0 !important;
  flex:0 0 auto !important;
  display:flex !important;
  align-items:center !important;
  justify-content:flex-end !important;
}
.topstrip #topstripClientArrowWrap .gvs-fixed-client-arrow{
  min-height:0 !important;
  padding:5px 2px !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  color:inherit !important;
  font-size:.82rem !important;
  font-weight:900 !important;
  line-height:1.1 !important;
  box-shadow:none !important;
}
.topstrip #topstripClientArrowWrap .gvs-fixed-client-arrow-label{
  display:inline !important;
  font-weight:900 !important;
  white-space:nowrap !important;
}
.topstrip #topstripClientArrowWrap .gvs-fixed-client-arrow svg{display:none !important;}
.topstrip #topstripClientArrowWrap .gvs-fixed-client-arrow .gvs-power-btn-icon{width:34px !important;height:34px !important;display:block !important;object-fit:contain;border-radius:50%;padding:0 !important;}
body.dark .topstrip #topstripClientArrowWrap .gvs-fixed-client-arrow{
  background:transparent !important;
  color:inherit !important;
}
@media(max-width:700px){
  .topstrip #topstripClientArrowWrap .gvs-fixed-client-arrow{
    min-height:0 !important;
    padding:5px 1px !important;
    font-size:.74rem !important;
  }
}

/* V388 — suppression définitive de la flèche noire du carreau Accueil */
.anip-tile-back-arrow{display:none !important;}

/* V389 — Quitter la plateforme : texte rouge simple et gras, complètement à droite du bandeau */
.topstrip #topstripClientArrowWrap .gvs-fixed-client-arrow{
  min-height:0 !important;
  padding:4px 0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  color:#E63946 !important;
  font-size:.82rem !important;
  font-weight:900 !important;
  line-height:1.1 !important;
  box-shadow:none !important;
}
.topstrip #topstripClientArrowWrap .gvs-fixed-client-arrow-label{
  color:#E63946 !important;
  font-weight:900 !important;
  white-space:nowrap !important;
}
body.dark .topstrip #topstripClientArrowWrap .gvs-fixed-client-arrow,
body.dark .topstrip #topstripClientArrowWrap .gvs-fixed-client-arrow-label{
  color:#E63946 !important;
  background:transparent !important;
}

/* V389 — bouton texte simple dans le carreau Accueil */
.anip-tile.tile-home{position:relative;}
.anip-tile-home-action{
  display:inline-block !important;
  margin-top:8px !important;
  padding:4px 0 !important;
  border:0 !important;
  background:transparent !important;
  color:#E63946 !important;
  font-size:.78rem !important;
  font-weight:900 !important;
  line-height:1.1 !important;
  text-decoration:none !important;
  cursor:pointer !important;
  pointer-events:auto !important;
}
.anip-tile-home-action:hover{text-decoration:underline !important;}
.anip-tile-home-action:focus-visible{outline:2px solid rgba(230,57,70,.35);outline-offset:2px;border-radius:4px;}
body.dark .anip-tile-home-action{color:#E63946 !important;}
@media(max-width:700px){
  .anip-tile-home-action{font-size:.72rem !important;}
}

/* v390 — navigation text buttons: red, bold, no blue background */
.gvs-section-back,
.gvs-fixed-client-arrow{
  appearance:none !important;
  -webkit-appearance:none !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  min-height:auto !important;
  padding:4px 6px !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  color:#d60000 !important;
  font-size:.85rem !important;
  font-weight:900 !important;
  line-height:1.2 !important;
  box-shadow:none !important;
  text-decoration:none !important;
  cursor:pointer !important;
  pointer-events:auto !important;
}
.gvs-section-back:hover,
.gvs-fixed-client-arrow:hover,
.gvs-section-back:focus-visible,
.gvs-fixed-client-arrow:focus-visible{
  background:transparent !important;
  color:#b40000 !important;
  box-shadow:none !important;
  filter:none !important;
}
.gvs-section-back:active,
.gvs-fixed-client-arrow:active{
  transform:none !important;
}
.gvs-fixed-client-arrow svg,
.gvs-section-back svg{display:none !important;}
.gvs-fixed-client-arrow-label,
.gvs-section-back span{display:inline-flex !important;align-items:center !important;color:inherit !important;}
/* Bouton Retour de section : icône rouge « revenir au départ » à la place du texte */
.gvs-section-back span img{width:32px;height:32px;display:block;}


/* v394 — Retour placé en haut de l'espace Actualités */
.gvs-news-top-actions{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;margin:0 0 10px 0;}
.gvs-news-return{appearance:none;-webkit-appearance:none;display:inline-flex;align-items:center;justify-content:flex-start;margin:0;padding:0;border:0;background:transparent;cursor:pointer;line-height:0;flex:0 0 auto;}
.gvs-news-return img{width:44px;height:44px;display:block;}
.gvs-news-return:hover{opacity:.9}
.gvs-news-return:active{transform:scale(.94)}
/* Bouton bleu : ouvre les carreaux de navigation — reste à droite, sur la même ligne que le rouge */
.gvs-news-open-tiles{appearance:none;-webkit-appearance:none;display:inline-flex;align-items:center;justify-content:flex-end;margin:0 0 0 auto;padding:0;border:0;background:transparent;cursor:pointer;line-height:0;flex:0 0 auto;}
.gvs-news-open-tiles img{width:44px;height:44px;display:block;}
.gvs-news-open-tiles:hover{opacity:.9}
.gvs-news-open-tiles:active{transform:scale(.94)}
/* v400 — logo image 2 vraiment collé au coin gauche */
#appHeader .topstrip{
  padding-left:0 !important;
  margin-left:0 !important;
}
#appHeader .brand-cluster{
  margin-left:0 !important;
  padding-left:0 !important;
}
#appHeader .brand-logo-image2{
  margin-left:0 !important;
  padding-left:0 !important;
  align-self:flex-start;
}
@media(max-width:700px){
  #appHeader .topstrip{padding-left:0 !important;padding-right:9px !important;}
}

/* V402 — navigation rouge/bleu identique à Accueil/Actualités sur toutes les pages.
   Les deux icônes restent fixes (sticky) et gardent exactement les mêmes images. */
.gvs-global-actions{
  position:sticky !important;
  top:0 !important;
  z-index:40 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:10px !important;
  min-height:54px !important;
  margin:0 -2px 10px !important;
  padding:5px 0 7px !important;
  background:var(--paper,#fff) !important;
  border-bottom:1px solid var(--line,#d8e2f0) !important;
  box-shadow:0 4px 12px rgba(0,0,0,.06) !important;
}
.gvs-global-actions .gvs-global-red,
.gvs-global-actions .gvs-global-blue{
  appearance:none !important;
  -webkit-appearance:none !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:44px !important;
  height:44px !important;
  flex:0 0 44px !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  cursor:pointer !important;
  line-height:0 !important;
}
.gvs-global-actions .gvs-global-blue{margin-left:auto !important;}
.gvs-global-actions .gvs-global-red img,
.gvs-global-actions .gvs-global-blue img{
  width:44px !important;
  height:44px !important;
  display:block !important;
  object-fit:contain !important;
}
.gvs-global-actions .gvs-global-red:hover,
.gvs-global-actions .gvs-global-blue:hover{opacity:.9 !important;}
.gvs-global-actions .gvs-global-red:active,
.gvs-global-actions .gvs-global-blue:active{transform:scale(.94) !important;}
body.dark .gvs-global-actions{
  background:#0B1020 !important;
  border-bottom-color:#25304B !important;
}
/* En sombre, l'icône rouge reste l'icône seule : aucun carré/fond vert. */
body.dark .gvs-global-actions .gvs-global-red,
body.dark .gvs-global-actions .gvs-global-red img{
  background:transparent !important;
  box-shadow:none !important;
}
/* Bouton de connexion : reprend directement l'image verte fournie. */
.gvs-connect-image-btn{
  width:100% !important;
  min-height:76px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  padding:4px !important;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  cursor:pointer !important;
}
.gvs-connect-image-btn img{
  width:72px !important;
  height:72px !important;
  object-fit:contain !important;
  display:block !important;
  filter:drop-shadow(0 0 8px rgba(34,197,94,.65)) drop-shadow(0 0 18px rgba(34,197,94,.35)) !important;
}
.gvs-connect-image-btn:hover img{filter:drop-shadow(0 0 10px rgba(34,197,94,.75)) drop-shadow(0 0 22px rgba(34,197,94,.45)) brightness(1.04) !important;transform:scale(1.03);}
.gvs-connect-image-btn:active img{transform:scale(.95);}
/* Mascotte : bien calée dans le coin droit et agrandie jusqu'à la hauteur du logo. */
#appHeader .topstrip{position:relative !important;min-height:82px !important;align-items:center !important;}
#appHeader .brand-mascot{
  height:78px !important;
  width:auto !important;
  flex:0 0 auto !important;
  margin-left:auto !important;
  margin-right:0 !important;
  object-fit:contain !important;
  transform-origin:center right !important;
}
@media(max-width:520px){
  #appHeader .topstrip{min-height:76px !important;}
  #appHeader .brand-mascot{height:70px !important;}
  .gvs-global-actions{min-height:52px !important;}
  .gvs-global-actions .gvs-global-red,
  .gvs-global-actions .gvs-global-blue{width:44px !important;height:44px !important;flex-basis:44px !important;}
}
/* V402-fix — rester sous le bandeau fixe GVS+ pendant le défilement. */
.gvs-global-actions{top:var(--gvs-header-h,150px) !important;}

/* V404 — Suppression du bandeau contenant le logo GVS+ et l'image d'animation. */
#appHeader .topstrip{
  display:none !important;
  min-height:0 !important;
  height:0 !important;
  padding:0 !important;
  margin:0 !important;
  border:0 !important;
}
/* L'espace réservé à l'ancien bandeau est retiré : seule la barre d'état reste en haut. */
html{--gvs-header-h:40px !important;}
@media(max-width:700px){
  html{--gvs-header-h:40px !important;}
}

/* V407 — suppression définitive du bandeau de recherche et du bandeau de flèches rouge/bleu */
.home-top-search-block,.gvs-news-top-actions{display:none!important;}
/* Étoile de démarrage : rotation rapide */
/* V409 — correction définitive */
/* Aucun bandeau rouge/bleu autour des flèches */
.gvs-global-actions,
.gvs-news-top-actions{display:none !important;height:0 !important;min-height:0 !important;margin:0 !important;padding:0 !important;border:0 !important;box-shadow:none !important;background:transparent !important;}
/* Étoile très rapide et entièrement bleu sombre, sans point central coloré */

/* V415 — GVS+ agrandi et étoile réglée à 0,50 s par tour */
.gvs-mini-brand-bar{font-size:32px !important;height:54px !important;padding-left:14px !important;}
.gvs-mini-brand-bar span{font-size:32px !important;font-weight:900 !important;}

/* v416 — réglages finaux demandés */
.gvs-mini-brand-bar{font-size:38px !important;color:#0B3FA8 !important;}
body.dark .gvs-mini-brand-bar{font-size:38px !important;color:#90EE90 !important;}

/* V452 — montre circulaire temps réel, centrée, fixe, avant la barre de recherche */
.gvs-round-clock-wrap{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:5px;width:100%;box-sizing:border-box;padding:3px 12px 8px;
  background:#fff;position:relative;z-index:101;
  animation:none;transform:none;
}
body.dark .gvs-round-clock-wrap{background:#0F1730;}
.gvs-round-clock{
  width:92px;height:92px;border-radius:50%;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;
  background:#fff;box-sizing:border-box;position:relative;
  border:2.5px solid #0B3FA8;
  box-shadow:0 0 8px 2px rgba(11,63,168,.55),0 0 18px 5px rgba(46,95,217,.35);
  animation:gvsClockGlowLight 2.6s ease-in-out infinite alternate;
}
@keyframes gvsClockGlowLight{
  0%{box-shadow:0 0 6px 1px rgba(11,63,168,.45),0 0 14px 3px rgba(46,95,217,.25)}
  100%{box-shadow:0 0 10px 3px rgba(11,63,168,.75),0 0 22px 7px rgba(46,95,217,.45)}
}
body.dark .gvs-round-clock{
  background:#141B2E;
  border-color:#7CFFB2;
  animation:gvsClockGlowDark 2.6s ease-in-out infinite alternate;
}
@keyframes gvsClockGlowDark{
  0%{box-shadow:0 0 6px 1px rgba(124,255,178,.45),0 0 14px 3px rgba(74,222,128,.25)}
  100%{box-shadow:0 0 10px 3px rgba(124,255,178,.8),0 0 22px 7px rgba(74,222,128,.5)}
}
.gvs-round-clock-svg{width:100%;height:100%;display:block}
/* V491 — logo GVS+ légèrement agrandi, placé derrière les aiguilles */
.gvs-clock-logo-svg{
  pointer-events:none;
}
.gvs-clock-face{fill:#fff;stroke:none}
body.dark .gvs-clock-face{fill:#141B2E}
.gvs-clock-ticks line{stroke:#B9C4E0;stroke-width:1.6;stroke-linecap:round}
body.dark .gvs-clock-ticks line{stroke:#3A4568}
.gvs-clock-numbers text{
  font:700 9.5px var(--font-body,Arial,sans-serif);
  fill:#3C4874;text-anchor:middle;dominant-baseline:central;user-select:none;
}
body.dark .gvs-clock-numbers text{fill:#B9C4E0}
.gvs-clock-hand{stroke-linecap:round}
.gvs-clock-hand-hour{stroke:#0B1330;stroke-width:3.4}
.gvs-clock-hand-minute{stroke:#0B1330;stroke-width:2.6}
.gvs-clock-hand-second{stroke:#DC2626;stroke-width:1.3}
body.dark .gvs-clock-hand-hour,body.dark .gvs-clock-hand-minute{stroke:#EAF0FF}
.gvs-clock-center{fill:#0B1330}
body.dark .gvs-clock-center{fill:#EAF0FF}
.gvs-round-clock-date{
  font:700 12.5px/1.2 var(--font-body,Arial,sans-serif);
  color:#3C4874;letter-spacing:.15px;text-align:center;text-transform:capitalize;
}
body.dark .gvs-round-clock-date{color:#B9C4E0}
@media(max-width:360px){
  .gvs-round-clock{width:80px;height:80px}
  .gvs-round-clock-date{font-size:11.5px}
}



/* V456 — ligne d'icônes réseaux/applications, juste sous la barre de recherche */
.gvs-quick-apps-bar{
  display:flex;align-items:center;justify-content:space-between;gap:6px;
  width:100%;box-sizing:border-box;padding:9px 10px 11px;
  overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;
  background:#fff;position:relative;z-index:101;
}
.gvs-quick-apps-bar::-webkit-scrollbar{display:none}
body.dark .gvs-quick-apps-bar{background:#0F1730}
.gvs-quick-app-btn{
  flex:0 0 auto;width:40px;height:40px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;position:relative;
  box-shadow:0 2px 6px rgba(0,0,0,.18);text-decoration:none;
}
.gvs-quick-app-btn svg,.gvs-quick-app-btn img{width:22px;height:22px;display:block;object-fit:contain}
.gvs-quick-app-btn:active{transform:scale(.92)}
.gvs-qa-tiktok-icon{width:25px !important;height:25px !important;display:block;object-fit:contain;filter:none !important;}
.gvs-inline-tiktok-icon{width:20px;height:20px;display:inline-block;vertical-align:middle;object-fit:contain;filter:none;}
.gvs-fixed-app{flex:0 0 auto;width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;position:relative;box-shadow:0 2px 6px rgba(0,0,0,.18);text-decoration:none;overflow:hidden}
.gvs-fixed-app img{width:100%;height:100%;display:block;object-fit:contain}
.gvs-fixed-app:active{transform:scale(.92)}
.gvs-qa-wab{position:relative}
.gvs-qa-chrome{background:conic-gradient(from -90deg,#EA4335 0deg 120deg,#4285F4 120deg 240deg,#34A853 240deg 360deg)}
.gvs-qa-chrome::before{content:'';position:absolute;inset:29%;background:#fff;border-radius:50%}
.gvs-qa-chrome::after{content:'';position:absolute;inset:38%;background:#4285F4;border-radius:50%}
.gvs-qa-play{background:linear-gradient(135deg,#00D2FF,#34A853 45%,#FBBC05 72%,#EA4335 100%)}
@media(max-width:400px){
  .gvs-quick-app-btn{width:34px;height:34px}
  .gvs-quick-app-btn svg{width:18px;height:18px}
  .gvs-quick-apps-bar{gap:4px;padding:8px 6px 9px}
}
@media(max-width:340px){
  .gvs-quick-app-btn{width:29px;height:29px}
  .gvs-quick-app-btn svg,.gvs-quick-app-btn img{width:15px;height:15px}
  .gvs-quick-apps-bar{gap:3px}
  .gvs-fixed-app{width:29px;height:29px}
}

/* V417 — bandeau bleu de recherche long placé immédiatement sous GVS+ */


/* V417-rework — bandeau de recherche professionnel au-dessus de GVS+ */
.gvs-top-search-bar{
  position:relative;z-index:101;width:100%;box-sizing:border-box;
  padding:8px 12px;background:#fff;border-bottom:0 !important;
}
.gvs-top-search-inner{
  width:100%;max-width:none;box-sizing:border-box;position:relative;
  display:flex;align-items:center;background:#f5f7fa;border:1px solid #d5dbe3;
  border-radius:14px;min-height:48px;overflow:hidden;
  box-shadow:0 2px 8px rgba(0,0,0,.08);
}
.gvs-top-search-inner input{
  flex:1;min-width:0;height:48px;border:0;outline:0;background:transparent;
  padding:0 56px 0 16px;font:600 16px/1.2 var(--font-sans,Arial,sans-serif);
  color:#172033;box-sizing:border-box;
}
.gvs-top-search-inner input::placeholder{color:#7b8493;font-weight:500;}
.gvs-top-search-btn{
  position:absolute;right:4px;top:4px;width:40px;height:40px;border:0;border-radius:11px;
  display:grid;place-items:center;background:transparent;color:#0B3FA8;cursor:pointer;
}
.gvs-top-search-btn svg{width:21px;height:21px;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;}
body.dark .gvs-top-search-bar{background:#111827;border-bottom:0 !important;}
body.dark .gvs-top-search-inner{background:#1f2937;border-color:#374151;box-shadow:0 2px 8px rgba(0,0,0,.28);}
body.dark .gvs-top-search-inner input{color:#f3f4f6;}
body.dark .gvs-top-search-inner input::placeholder{color:#aeb7c5;}
body.dark .gvs-top-search-btn{background:transparent;color:#90EE90;}
@media(max-width:520px){
  .gvs-top-search-bar{padding:7px 9px;}
  .gvs-top-search-inner,.gvs-top-search-inner input{min-height:46px;height:46px;}
  .gvs-top-search-btn{width:38px;height:38px;top:4px;right:4px;}
}

/* Toutes les pages défilent derrière le bandeau fixe GVS+. */
#appHeader{z-index:9990!important;}
main.wrap{position:relative;z-index:1;}
.gvs-mini-brand-bar,.gvs-brand-lower-space,.android-status-bar,.gvs-top-search-bar,.topstrip{position:relative;}
.gvs-mini-brand-bar{border-bottom:0!important;}

/* V436 — uniquement les flèches/boutons de retour rouges lumineux */
.gvs-section-back,.home-nav-arrow,.gvs-client-arrow,.gvs-fixed-client-arrow,.home-top-arrow,.messages-back-only,.gvs-messages-arrow-only,.gvs-red-back-arrow{
  filter:drop-shadow(0 0 3px rgba(255,0,0,.98)) drop-shadow(0 0 8px rgba(255,0,0,.82)) !important;
}
.gvs-section-back svg,.home-nav-arrow svg,.gvs-client-arrow svg,.gvs-fixed-client-arrow svg,.home-top-arrow svg,.messages-back-only svg,.gvs-messages-arrow-only svg{
  filter:drop-shadow(0 0 3px rgba(255,0,0,1)) drop-shadow(0 0 7px rgba(255,0,0,.9)) !important;
}
.gvs-red-back-arrow-image{
  filter:drop-shadow(0 0 3px rgba(255,0,0,1)) drop-shadow(0 0 9px rgba(255,0,0,.9)) !important;
}


/* V430-CORRECTION — Barre de recherche lumineuse */
.search-bar,
.search-container,
.search-box,
input[type="search"]{
  border: 1px solid rgba(0, 191, 255, .75) !important;
  box-shadow:
    0 0 6px rgba(0, 191, 255, .55),
    0 0 14px rgba(0, 191, 255, .35),
    inset 0 0 8px rgba(0, 191, 255, .12) !important;
  transition: box-shadow .25s ease, border-color .25s ease !important;
}
.search-bar:focus,
.search-container:focus-within,
.search-box:focus-within,
input[type="search"]:focus{
  border-color: rgba(0, 220, 255, 1) !important;
  box-shadow:
    0 0 8px rgba(0, 220, 255, .85),
    0 0 20px rgba(0, 191, 255, .60),
    0 0 32px rgba(0, 191, 255, .28),
    inset 0 0 10px rgba(0, 191, 255, .16) !important;
}


/* GVS+ — Boutons inscription lumineux */
.inscription-page button,
.inscription-page .btn,
.inscription-page a.btn,
.inscription-page input[type="submit"],
.inscription-page input[type="button"],
.inscription button,
.inscription .btn,
.inscription a.btn,
.inscription input[type="submit"],
.inscription input[type="button"]{
  background:#008cff !important;
  border-color:#008cff !important;
  color:#fff !important;
  box-shadow:0 0 7px rgba(0,140,255,.9),0 0 18px rgba(0,140,255,.6),0 0 30px rgba(0,140,255,.28);
}
.inscription-page button:hover,
.inscription-page .btn:hover,
.inscription-page a.btn:hover,
.inscription-page input[type="submit"]:hover,
.inscription-page input[type="button"]:hover,
.inscription button:hover,
.inscription .btn:hover,
.inscription a.btn:hover,
.inscription input[type="submit"]:hover,
.inscription input[type="button"]:hover{
  background:#19a0ff !important;
  box-shadow:0 0 9px rgba(0,160,255,1),0 0 22px rgba(0,160,255,.72),0 0 34px rgba(0,160,255,.35);
}
@media (prefers-color-scheme: dark){
  .inscription-page button,
  .inscription-page .btn,
  .inscription-page a.btn,
  .inscription-page input[type="submit"],
  .inscription-page input[type="button"],
  .inscription button,
  .inscription .btn,
  .inscription a.btn,
  .inscription input[type="submit"],
  .inscription input[type="button"]{
    background:#66ff8a !important;
    border-color:#66ff8a !important;
    color:#062b12 !important;
    box-shadow:0 0 7px rgba(102,255,138,.95),0 0 18px rgba(102,255,138,.62),0 0 30px rgba(102,255,138,.3);
  }
}


/* GVS+ — CORRECTIF FINAL : tous les boutons INSCRIPTION */
body.inscription-page button,
body.inscription-page .btn,
body.inscription-page a.btn,
body.inscription-page input[type="submit"],
body.inscription-page input[type="button"],
body.inscription-page input[type="reset"]{
  background:linear-gradient(180deg,#39a7ff,#006cff) !important;
  border:1px solid #008cff !important;
  color:#fff !important;
  box-shadow:
    0 0 5px rgba(0,140,255,1),
    0 0 12px rgba(0,140,255,.9),
    0 0 24px rgba(0,140,255,.65),
    inset 0 1px 0 rgba(255,255,255,.5) !important;
}
body.inscription-page button:hover,
body.inscription-page .btn:hover,
body.inscription-page a.btn:hover,
body.inscription-page input[type="submit"]:hover,
body.inscription-page input[type="button"]:hover,
body.inscription-page input[type="reset"]:hover{
  background:linear-gradient(180deg,#55b4ff,#0878ff) !important;
  border-color:#39a7ff !important;
  box-shadow:
    0 0 7px rgba(0,150,255,1),
    0 0 18px rgba(0,150,255,1),
    0 0 32px rgba(0,150,255,.8),
    inset 0 1px 0 rgba(255,255,255,.6) !important;
}
body.dark.inscription-page button,
body.dark.inscription-page .btn,
body.dark.inscription-page a.btn,
body.dark.inscription-page input[type="submit"],
body.dark.inscription-page input[type="button"],
body.dark.inscription-page input[type="reset"]{
  background:linear-gradient(180deg,#8affb0,#45e878) !important;
  border:1px solid #66ff8a !important;
  color:#063b18 !important;
  box-shadow:
    0 0 5px rgba(102,255,138,1),
    0 0 12px rgba(102,255,138,.9),
    0 0 24px rgba(102,255,138,.65),
    inset 0 1px 0 rgba(255,255,255,.65) !important;
}
body.dark.inscription-page button:hover,
body.dark.inscription-page .btn:hover,
body.dark.inscription-page a.btn:hover,
body.dark.inscription-page input[type="submit"]:hover,
body.dark.inscription-page input[type="button"]:hover,
body.dark.inscription-page input[type="reset"]:hover{
  background:linear-gradient(180deg,#9affba,#5af08a) !important;
  border-color:#8affaa !important;
  box-shadow:
    0 0 7px rgba(125,255,155,1),
    0 0 18px rgba(125,255,155,1),
    0 0 32px rgba(125,255,155,.82),
    inset 0 1px 0 rgba(255,255,255,.7) !important;
}


/* GVS+ — INSCRIPTION : exactement le même style que les boutons d'actualité */
#inscription .gf-nav .btn,
#inscription #gvsInscSuccess .btn,
#inscription #kkiapayBtn,
#inscription #social .social,
#inscription #socialContact .social,
#inscription .socials-oneline .social{
  background:linear-gradient(180deg,#3B9EFF,#0066FF)!important;
  color:#fff!important;
  border:1px solid rgba(255,255,255,.45)!important;
  box-shadow:0 3px 14px rgba(0,102,255,.35),inset 0 1px 0 rgba(255,255,255,.45)!important;
}
#inscription .gf-nav .btn:hover,
#inscription #gvsInscSuccess .btn:hover,
#inscription #kkiapayBtn:hover,
#inscription #social .social:hover,
#inscription #socialContact .social:hover,
#inscription .socials-oneline .social:hover{
  filter:brightness(1.05)!important;
}
body.dark #inscription .gf-nav .btn,
body.dark #inscription #gvsInscSuccess .btn,
body.dark #inscription #kkiapayBtn,
body.dark #inscription #social .social,
body.dark #inscription #socialContact .social,
body.dark #inscription .socials-oneline .social{
  background:linear-gradient(180deg,#8AF0B4,#34D399)!important;
  color:#064E3B!important;
  border-color:rgba(255,255,255,.3)!important;
  box-shadow:0 3px 14px rgba(52,211,153,.4),inset 0 1px 0 rgba(255,255,255,.4)!important;
}
body.dark #inscription .gf-nav .btn:hover,
body.dark #inscription #gvsInscSuccess .btn:hover,
body.dark #inscription #kkiapayBtn:hover,
body.dark #inscription #social .social:hover,
body.dark #inscription #socialContact .social:hover,
body.dark #inscription .socials-oneline .social:hover{
  filter:brightness(1.05)!important;
}
#inscription #social a.social,
#inscription #socialContact a.social,
#inscription .socials-oneline a.social{
  text-decoration:none!important;
}



/* GVS+ — Carreaux de navigation lumineux */
.anip-tile,
.gvs-tile,
.nav-tile,
.navigation-tile{
  border-color:#008cff !important;
  box-shadow:
    0 0 5px rgba(0,140,255,.95),
    0 0 12px rgba(0,140,255,.70),
    0 0 24px rgba(0,140,255,.38),
    0 6px 18px rgba(11,19,48,.08) !important;
}
.anip-tile:hover,
.gvs-tile:hover,
.nav-tile:hover,
.navigation-tile:hover{
  border-color:#35a7ff !important;
  box-shadow:
    0 0 7px rgba(0,150,255,1),
    0 0 18px rgba(0,150,255,.85),
    0 0 30px rgba(0,150,255,.55),
    0 8px 22px rgba(11,19,48,.12) !important;
}
body.dark .anip-tile,
body.dark .gvs-tile,
body.dark .nav-tile,
body.dark .navigation-tile{
  border-color:#66ff8a !important;
  box-shadow:
    0 0 5px rgba(102,255,138,.95),
    0 0 12px rgba(102,255,138,.70),
    0 0 24px rgba(102,255,138,.38),
    0 6px 18px rgba(0,0,0,.18) !important;
}
body.dark .anip-tile:hover,
body.dark .gvs-tile:hover,
body.dark .nav-tile:hover,
body.dark .navigation-tile:hover{
  border-color:#8affaa !important;
  box-shadow:
    0 0 7px rgba(125,255,155,1),
    0 0 18px rgba(125,255,155,.85),
    0 0 30px rgba(125,255,155,.55),
    0 8px 22px rgba(0,0,0,.22) !important;
}

/* V431 — Quiz professionnel : félicitations brillantes multicolores */
#gvsGameModal .game-panel{
  border:1px solid rgba(0,140,255,.28);
  box-shadow:0 20px 60px rgba(0,0,0,.28),0 0 24px rgba(0,140,255,.16);
}
#gvsGameModal .game-question{color:var(--ink,#10213f);}
#gvsGameModal .game-score{
  padding:7px 12px;
  border-radius:999px;
  display:inline-block;
  background:linear-gradient(90deg,rgba(0,140,255,.10),rgba(124,58,237,.10),rgba(16,185,129,.10));
  box-shadow:0 0 14px rgba(0,140,255,.16);
}
#gvsGameModal .game-answer{
  border-color:#008cff;
  box-shadow:0 0 8px rgba(0,140,255,.13);
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
#gvsGameModal .game-answer:hover:not(:disabled){
  transform:translateY(-1px);
  box-shadow:0 0 14px rgba(0,140,255,.28);
}
#gvsGameModal .gvs-congratulations{
  position:relative;
  overflow:visible;
  font-weight:950;
  background:linear-gradient(90deg,#ff1744,#ff8a00,#ffd600,#00c853,#00b0ff,#7c4dff,#ff1744);
  background-size:300% 100%;
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  color:#ff1744;
  text-shadow:0 0 10px rgba(255,193,7,.22);
  animation:gvsCongratsColors 3s linear infinite,gvsBravoPop .45s ease-out both;
}
#gvsGameModal .gvs-prize-grade{
  background:linear-gradient(90deg,#ff1744,#ff8a00,#00c853,#00b0ff,#7c4dff,#ff1744);
  background-size:250% 100%;
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  animation:gvsCongratsColors 2.4s linear infinite;
  filter:drop-shadow(0 0 7px rgba(0,176,255,.28));
}
.gvs-celebration .gvs-spark:nth-child(4n+1){color:#ff1744;text-shadow:0 0 12px #ff1744;}
.gvs-celebration .gvs-spark:nth-child(4n+2){color:#ffd600;text-shadow:0 0 12px #ffd600;}
.gvs-celebration .gvs-spark:nth-child(4n+3){color:#00c853;text-shadow:0 0 12px #00c853;}
.gvs-celebration .gvs-spark:nth-child(4n){color:#00b0ff;text-shadow:0 0 12px #00b0ff;}
@keyframes gvsCongratsColors{0%{background-position:0% 50%}100%{background-position:300% 50%}}
body.dark #gvsGameModal .game-panel{
  border-color:rgba(102,255,138,.35);
  box-shadow:0 20px 60px rgba(0,0,0,.42),0 0 26px rgba(102,255,138,.14);
}
body.dark #gvsGameModal .game-question{color:#fff;}
body.dark #gvsGameModal .game-score{box-shadow:0 0 14px rgba(102,255,138,.18);}
body.dark #gvsGameModal .game-answer{border-color:#66ff8a;box-shadow:0 0 8px rgba(102,255,138,.14);}
body.dark #gvsGameModal .game-answer:hover:not(:disabled){box-shadow:0 0 14px rgba(102,255,138,.30);}

/* V434 — Correction bouton « Recommencer le quiz » */
#gvsRestartBtn{
  position:relative!important;
  z-index:100!important;
  pointer-events:auto!important;
  touch-action:manipulation!important;
  -webkit-tap-highlight-color:transparent;
}
#gvsRestartBtn:not(:disabled){cursor:pointer!important;}
#gvsGameModal .game-panel{z-index:2;}

/* V435 — Titres du Quiz GVS+ centrés */
#gvsGameModal .game-panel > h2,
#gvsGameModal .game-panel > .game-question,
#gvsGameModal .game-panel > .game-score{
  text-align:center !important;
}
#gvsGameModal .game-panel > h2{
  width:100%;
}
#gvsGameModal .game-panel > .game-score{
  display:block;
  width:max-content;
  max-width:100%;
  margin-left:auto;
  margin-right:auto;
}


/* V436 — Quiz : défilement interne + chronomètre 15 secondes */
#gvsGameModal .game-panel{
  max-height:88vh;
  overflow-y:auto;
  overflow-x:hidden;
  scrollbar-width:auto;
  scrollbar-color:#0B8CFF rgba(120,140,170,.20);
  -webkit-overflow-scrolling:touch;
}
#gvsGameModal .game-panel::-webkit-scrollbar{width:12px;}
#gvsGameModal .game-panel::-webkit-scrollbar-track{background:rgba(120,140,170,.16);border-radius:99px;}
#gvsGameModal .game-panel::-webkit-scrollbar-thumb{background:#0B8CFF;border-radius:99px;border:3px solid transparent;background-clip:padding-box;}
.gvs-quiz-scroll-control{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:8px;padding:4px 34px 8px 4px;background:var(--paper-raised,#fff);}
.gvs-quiz-scroll-control label{font-size:10px;font-weight:900;white-space:nowrap;opacity:.75;}
.gvs-quiz-scrollbar{width:100%;height:24px;accent-color:#0B8CFF;cursor:pointer;touch-action:pan-x;}
.gvs-quiz-scrollbar::-webkit-slider-runnable-track{height:6px;background:rgba(120,140,170,.25);border-radius:99px;}
.gvs-quiz-scrollbar::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;margin-top:-6px;border-radius:50%;background:#0B8CFF;border:2px solid var(--paper-raised,#fff);box-shadow:0 1px 6px rgba(0,0,0,.2);}
.gvs-quiz-scrollbar::-moz-range-track{height:6px;background:rgba(120,140,170,.25);border-radius:99px;}
.gvs-quiz-scrollbar::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#0B8CFF;border:2px solid var(--paper-raised,#fff);}
.gvs-quiz-timer{display:inline-block;margin:3px auto 8px;padding:6px 12px;border-radius:999px;font-weight:950;font-size:1rem;background:rgba(11,140,255,.10);box-shadow:0 0 10px rgba(11,140,255,.16);}
.gvs-quiz-timer.gvs-time-warning{background:rgba(220,38,38,.12);color:#DC2626;box-shadow:0 0 14px rgba(220,38,38,.25);animation:gvsTimerPulse .6s ease-in-out infinite alternate;}
@keyframes gvsTimerPulse{from{transform:scale(1)}to{transform:scale(1.06)}}
body.dark .gvs-quiz-scroll-control{background:#141B2E;}
body.dark #gvsGameModal .game-panel{scrollbar-color:#66ff8a rgba(255,255,255,.12);}
body.dark #gvsGameModal .game-panel::-webkit-scrollbar-thumb{background:#66ff8a;}
body.dark .gvs-quiz-scrollbar{accent-color:#66ff8a;}
body.dark .gvs-quiz-scrollbar::-webkit-slider-thumb{background:#66ff8a;}
body.dark .gvs-quiz-scrollbar::-moz-range-thumb{background:#66ff8a;}
body.dark .gvs-quiz-timer{background:rgba(102,255,138,.10);box-shadow:0 0 10px rgba(102,255,138,.16);}
body.dark .gvs-quiz-timer.gvs-time-warning{background:rgba(248,113,113,.15);color:#F87171;}
@media(max-width:520px){
  #gvsGameModal{padding:8px;align-items:center;}
  #gvsGameModal .game-panel{max-height:92vh;padding:18px 14px;}
  .gvs-quiz-scroll-control{padding-right:30px;}
}

/* Bouton rouge « Quitter » dans chaque session de bloc de l'administration. */
.admin-session-quit-wrap{
  display:flex;
  justify-content:center;
  margin:18px 0 4px;
  padding-top:14px;
  border-top:1px solid rgba(24,35,46,.08);
}
.admin-session-quit-btn{
  background:linear-gradient(180deg,#ff5b5b,#dc2626)!important;
  border-color:rgba(255,255,255,.58)!important;
  color:#fff!important;
  min-width:140px;
  font-weight:800;
  box-shadow:0 0 7px rgba(220,38,38,.62),0 0 20px rgba(220,38,38,.38),inset 0 1px 0 rgba(255,255,255,.48)!important;
}
.admin-session-quit-btn:hover{
  background:linear-gradient(180deg,#ff6b6b,#b91c1c)!important;
  border-color:rgba(255,255,255,.62)!important;
  box-shadow:0 0 9px rgba(220,38,38,.72),0 0 23px rgba(220,38,38,.44),inset 0 1px 0 rgba(255,255,255,.5)!important;
}
.admin-session-quit-btn:active{
  transform:scale(.98);
}
body.dark .admin-session-quit-wrap{
  border-top-color:rgba(255,255,255,.10);
}

/* GVS+ v445 — Finition demandée
   - Les affiches publicitaires gardent seules un contour lumineux : bleu électrique
     en clair, vert clair en sombre.
   - Suppression des contours lumineux bleu/vert des autres blocs.
   - Espace Client entièrement sombre lorsque le thème sombre est actif.
*/

/* Retirer les anciens contours lumineux des blocs génériques. */
.news-card, .card, .qcard, .dash-card, .announcement,
.gvs-msg-composer, .gvs-user-director-composer,
.gvs-director-photo, .admin-profile-photo {
  border: 1px solid var(--line, #D7DFEA) !important;
  box-shadow: none !important;
  animation: none !important;
  filter: none !important;
}
body.dark .news-card, body.dark .card, body.dark .qcard, body.dark .dash-card,
body.dark .announcement, body.dark .gvs-msg-composer,
body.dark .gvs-user-director-composer, body.dark .gvs-director-photo,
body.dark .admin-profile-photo {
  border-color: var(--line, #2A3550) !important;
  box-shadow: none !important;
  animation: none !important;
  filter: none !important;
}

/* Affiches publicitaires : contour lumineux dédié. */
.ad-banner, .ad-banner-wrap .ad-banner {
  border: 2px solid rgba(0, 102, 255, .95) !important;
  box-shadow:
    0 0 6px rgba(0, 102, 255, .85),
    0 0 14px rgba(0, 140, 255, .55),
    inset 0 0 7px rgba(0, 102, 255, .18) !important;
  animation: gvsBlocGlow438 2.4s ease-in-out infinite alternate !important;
}
body.dark .ad-banner, body.dark .ad-banner-wrap .ad-banner {
  border: 2px solid rgba(120, 255, 150, .95) !important;
  box-shadow:
    0 0 6px rgba(120, 255, 150, .85),
    0 0 14px rgba(140, 255, 170, .55),
    inset 0 0 7px rgba(120, 255, 150, .18) !important;
  animation: gvsBlocGlowDark438 2.4s ease-in-out infinite alternate !important;
}

/* Logo GVS+ dans l'Espace Client. */
#auth .authbrand .logo {
  height: 140px !important;
  width: auto !important;
  max-width: 68vw !important;
  margin-top: -22px !important;
}

/* Espace Client entièrement sombre en mode sombre : environnement,
   bandeau fixe, zone logo/titre et carte d'authentification. */
body.dark:has(#auth.active) {
  background: #0B1020 !important;
  color: #EAF0FF !important;
}
body.dark:has(#auth.active) #auth {
  background: #0B1020 !important;
  color: #EAF0FF !important;
}
body.dark:has(#auth.active) .auth-topbar {
  background: #0F1730 !important;
  border-bottom-color: #2A3550 !important;
  box-shadow: none !important;
}
body.dark:has(#auth.active) .authbrand h2,
body.dark:has(#auth.active) #auth h3,
body.dark:has(#auth.active) #auth label,
body.dark:has(#auth.active) #auth .small,
body.dark:has(#auth.active) #auth p {
  color: #EAF0FF !important;
}
body.dark:has(#auth.active) #auth .card {
  background: #141B2E !important;
  color: #EAF0FF !important;
  border: 1px solid #2A3550 !important;
  box-shadow: none !important;
  animation: none !important;
  filter: none !important;
}
body.dark:has(#auth.active) #auth input,
body.dark:has(#auth.active) #auth textarea,
body.dark:has(#auth.active) #auth select {
  background: #0F1730 !important;
  color: #EAF0FF !important;
  border-color: #2A3550 !important;
}
body.dark:has(#auth.active) #auth input::placeholder,
body.dark:has(#auth.active) #auth textarea::placeholder {
  color: #7F8AA8 !important;
}

/* En clair, Espace Client reste opaque et clair, sans contour lumineux. */
body:not(.dark):has(#auth.active) #auth .card {
  border: 1px solid #D7DFEA !important;
  box-shadow: none !important;
  animation: none !important;
  filter: none !important;
}


/* V457 — Bandeau système : icônes parfaitement uniformes */
.gvs-header-banner .asb-chip,
.gvs-header-banner .asb-icon-btn{
  width:32px !important;
  height: 26px !important;
  min-width:32px !important;
  min-height: 26px !important;
  padding:0 !important;
  margin:0 !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  box-sizing:border-box !important;
  color:currentColor !important;
}
.gvs-header-banner .asb-icon,
.gvs-header-banner .asb-icon-btn svg,
.gvs-header-banner .asb-bell-icon,
.gvs-header-banner .navicon{
  width:22px !important;
  height:22px !important;
  min-width:22px !important;
  min-height:22px !important;
  box-sizing:border-box !important;
  color:currentColor !important;
}
.gvs-header-banner #asbBattery.low .asb-icon,
.gvs-header-banner #asbBattery.charging .asb-icon,
.gvs-header-banner .asb-icon-btn.active{
  color:currentColor !important;
}
.gvs-header-banner .asb-txt{font-size:11px !important;font-weight:700 !important;}

/* V459 — Gestion des icônes du bandeau : même taille + noir en clair / blanc en sombre */
.android-status-bar .asb-left,
.android-status-bar .asb-right{color:#111 !important;}
body.dark .android-status-bar .asb-left,
body.dark .android-status-bar .asb-right{color:#fff !important;}
.android-status-bar .asb-icon-btn,
.android-status-bar .asb-chip,
.android-status-bar .asb-icon,
.android-status-bar .asb-icon-btn svg,
.android-status-bar .asb-bell-icon,
.android-status-bar .navicon{color:currentColor !important;}
.android-status-bar .asb-user-hidden,
.android-status-bar .asb-admin-hidden{display:none !important;}
.asb-more-wrap{position:relative;display:flex;align-items:center;flex:0 0 auto;}
.asb-more-btn{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;margin:0!important;border:0;background:transparent;color:currentColor;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;cursor:pointer;}
.asb-more-btn svg{width:22px!important;height:22px!important;display:block;}
.asb-more-btn:hover,.asb-more-btn:focus-visible{background:rgba(0,0,0,.08);outline:none;}
body.dark .asb-more-btn:hover,body.dark .asb-more-btn:focus-visible{background:rgba(255,255,255,.14);}
.asb-more-menu{position:absolute;right:0;top:calc(100% + 7px);z-index:1000;width:210px;padding:8px;border-radius:14px;background:#fff;color:#111;box-shadow:0 10px 30px rgba(0,0,0,.24);border:1px solid rgba(0,0,0,.12);}
body.dark .asb-more-menu{background:#111827;color:#fff;border-color:rgba(255,255,255,.16);box-shadow:0 10px 30px rgba(0,0,0,.5);}
.asb-more-menu.hidden{display:none!important;}
.asb-more-title{font-size:12px;font-weight:900;padding:4px 8px 7px;opacity:.72;}
.asb-more-menu label{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:9px;font-size:12px;font-weight:700;cursor:pointer;}
.asb-more-menu{max-height:min(70vh,360px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;}
.asb-more-menu::-webkit-scrollbar{width:6px;}
.asb-more-menu::-webkit-scrollbar-thumb{background:rgba(100,116,139,.55);border-radius:8px;}
.asb-menu-item-icon{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 20px;}
.asb-menu-item-icon svg{width:18px;height:18px;display:block;}
.asb-menu-theme-row{font-weight:900!important;border-top:1px solid rgba(127,127,127,.18);margin-top:3px;padding-top:9px!important;}

.asb-more-menu label:hover{background:rgba(0,0,0,.06);}
body.dark .asb-more-menu label:hover{background:rgba(255,255,255,.09);}
.asb-more-menu input{width:16px;height:16px;accent-color:#111;}
body.dark .asb-more-menu input{accent-color:#fff;}
@media(max-width:400px){.asb-more-menu{right:-4px;width:190px;}.asb-more-btn{width:23px!important;height:23px!important;min-width:23px!important;min-height:23px!important;}.asb-more-btn svg{width:18px!important;height:18px!important;}}

/* GVS+ — Nom + bouton Power rouge exactement sur la même ligne. */
#gvsMiniBrandBar.gvs-mini-brand-bar{
  display:grid!important;
  grid-template-columns:1fr auto!important;
  align-items:center!important;
  justify-content:initial!important;
  width:100%!important;
  box-sizing:border-box!important;
  margin:0!important;
  padding:0 14px!important;
}
#gvsMiniBrandBar .gvs-mini-brand-name{
  grid-column:1!important;
  justify-self:center!important;
  text-align:center!important;
  margin:0!important;
}
#gvsMiniBrandBar .gvs-mini-brand-client-btn{
  grid-column:2!important;
  justify-self:end!important;
  margin:0!important;
  position:relative!important;
  top:0!important;
}
#gvsMiniBrandBar .gvs-mini-brand-client-btn img{
  display:block!important;
}

/* V461 — horloge circulaire agrandie + icônes sociales simples sans fond */
.gvs-round-clock{width:128px;height:128px;}
.gvs-quick-app-btn{
  width:42px;height:42px;border-radius:0;background:transparent !important;
  box-shadow:none !important;border:0;
  color:#111; padding:0;
}
.gvs-quick-app-btn svg{width:27px;height:27px;fill:currentColor !important;stroke:currentColor;}
.gvs-quick-app-btn img{width:27px;height:27px;object-fit:contain}
.gvs-quick-app-btn:nth-child(1){color:#1877F2}
.gvs-quick-app-btn:nth-child(2){color:#0099FF}
.gvs-quick-app-btn:nth-child(3){color:#111}
.gvs-quick-app-btn:nth-child(4){color:#25D366}
.gvs-quick-app-btn:nth-child(5){color:#0B5E3C}
.gvs-quick-app-btn:nth-child(6){color:#4285F4}
.gvs-quick-app-btn:nth-child(7){color:#DC2626}
.gvs-quick-app-btn:nth-child(8){color:#34A853}
.gvs-qa-wab::after,.gvs-qa-chrome::before,.gvs-qa-chrome::after{display:none !important}
.gvs-qa-chrome{background:transparent !important}
.gvs-qa-play{background:transparent !important}
.gvs-fixed-app{width:42px;height:42px;border-radius:10px;background:transparent !important;box-shadow:none !important;border:0;padding:0;overflow:hidden}
.gvs-fixed-app img{width:100%;height:100%;object-fit:contain}
@media(max-width:400px){
  .gvs-round-clock{width:116px;height:116px}
  .gvs-quick-app-btn{width:36px;height:36px}
  .gvs-quick-app-btn svg,.gvs-quick-app-btn img{width:23px;height:23px}
  .gvs-fixed-app{width:36px;height:36px}
}
@media(max-width:340px){
  .gvs-round-clock{width:108px;height:108px}
  .gvs-quick-app-btn{width:31px;height:31px}
  .gvs-quick-app-btn svg{width:20px;height:20px}
  .gvs-fixed-app{width:31px;height:31px}
}
body.dark .gvs-quick-app-btn:nth-child(3){color:#fff}

/* V462 — vrais logos de marque, sans fond de bouton : les couleurs internes des SVG sont conservées. */
.gvs-quick-app-btn{background:transparent!important;border:0!important;box-shadow:none!important;border-radius:0!important;display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;}
.gvs-quick-app-btn svg{width:32px!important;height:32px!important;display:block!important;fill:initial!important;stroke:initial!important;}
.gvs-quick-app-btn img{width:32px!important;height:32px!important;display:block!important;object-fit:contain!important;}
@media(max-width:400px){.gvs-quick-app-btn svg{width:28px!important;height:28px!important;}.gvs-quick-app-btn img{width:28px!important;height:28px!important;}}
@media(max-width:340px){.gvs-quick-app-btn svg{width:25px!important;height:25px!important;}.gvs-quick-app-btn img{width:25px!important;height:25px!important;}}
.gvs-quick-app-btn:nth-child(1),.gvs-quick-app-btn:nth-child(2),.gvs-quick-app-btn:nth-child(3),.gvs-quick-app-btn:nth-child(4),.gvs-quick-app-btn:nth-child(5),.gvs-quick-app-btn:nth-child(6),.gvs-quick-app-btn:nth-child(7),.gvs-quick-app-btn:nth-child(8){color:inherit;}

/* V463 — micro directement dans la barre de recherche (Chrome et scan retirés du bandeau) */
.gvs-top-search-mic{
  position:absolute;top:4px;right:52px;width:40px;height: 33px;border:0;border-radius:10px;
  display:grid;place-items:center;background:transparent;cursor:pointer;z-index:2;color:#526071;
}
.gvs-top-search-mic svg{width:21px;height:21px;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.gvs-top-search-mic:active{transform:scale(.92)}
.gvs-top-search-inner input{padding-right:104px}
body.dark .gvs-top-search-mic{color:#e5e7eb}
@media(max-width:520px){
 .gvs-top-search-mic{width:36px;height:38px;top:4px;right:44px}
 .gvs-top-search-inner input{padding-right:90px}
}

/* V474 — séparation discrète de la barre des icônes */
.gvs-quick-apps-bar{
  border-bottom:1px solid rgba(20,20,20,.28) !important;
  box-shadow:0 1px 0 rgba(0,0,0,.10) !important;
}
body.dark .gvs-quick-apps-bar{
  border-bottom-color:rgba(0,0,0,.45) !important;
  box-shadow:0 1px 0 rgba(0,0,0,.25) !important;
}

/* V475 — séparation sombre visible entre la barre des icônes et le contenu */
.gvs-quick-apps-bar{border-bottom:2px solid rgba(20,20,20,.55)!important;box-shadow:0 1px 0 rgba(0,0,0,.18)!important}
body.dark .gvs-quick-apps-bar{border-bottom:2px solid rgba(0,0,0,.65)!important;box-shadow:0 1px 0 rgba(0,0,0,.30)!important}

/* V476 — trait de séparation beaucoup plus discret sous la barre des icônes */
.gvs-quick-apps-bar{
  border-bottom:1px solid rgba(20,20,20,.10) !important;
  box-shadow:none !important;
}
body.dark .gvs-quick-apps-bar{
  border-bottom-color:rgba(0,0,0,.18) !important;
  box-shadow:none !important;
}

/* GVS+ v477 — icônes des réseaux légèrement réduites */
.gvs-quick-app-btn{width:38px!important;height:38px!important;}
.gvs-quick-app-btn svg,.gvs-quick-app-btn img{width:24px!important;height:24px!important;}
@media(max-width:400px){
  .gvs-quick-app-btn{width:33px!important;height:33px!important;}
  .gvs-quick-app-btn svg,.gvs-quick-app-btn img{width:21px!important;height:21px!important;}
}
@media(max-width:340px){
  .gvs-quick-app-btn{width:29px!important;height:29px!important;}
  .gvs-quick-app-btn svg,.gvs-quick-app-btn img{width:19px!important;height:19px!important;}
}

/* V478 — Messagerie > Message : rond du profil lumineux selon le thème */
#msgTabPanel-message .gvs-user-director-head .gvs-msg-avatar{
  border:3px solid #1688ff !important;
  box-shadow:0 0 8px rgba(0,132,255,.72),0 0 18px rgba(0,132,255,.45),0 0 32px rgba(0,132,255,.22) !important;
}
body.dark #msgTabPanel-message .gvs-user-director-head .gvs-msg-avatar{
  border-color:#72f7a3 !important;
  box-shadow:0 0 8px rgba(114,247,163,.78),0 0 18px rgba(114,247,163,.50),0 0 32px rgba(114,247,163,.25) !important;
}

/* V479 — profils lumineux + barre des applications plus compacte */
.messenger-avatar,
.msg-user-avatar,
.chat-avatar,
#gvsZip1Messenger .avatar,
#gvsZip1Messenger .messenger-avatar,
#gvsZip1Messenger .msg-user-avatar,
#gvsZip1Messenger .chat-avatar,
.gvs-director-photo{
  box-shadow:0 0 5px rgba(0,110,255,.78),0 0 11px rgba(0,110,255,.34)!important;
}
body.dark .messenger-avatar,
body.dark .msg-user-avatar,
body.dark .chat-avatar,
body.dark #gvsZip1Messenger .avatar,
body.dark #gvsZip1Messenger .messenger-avatar,
body.dark #gvsZip1Messenger .msg-user-avatar,
body.dark #gvsZip1Messenger .chat-avatar,
body.dark .gvs-director-photo{
  box-shadow:0 0 5px rgba(116,255,150,.82),0 0 11px rgba(116,255,150,.38)!important;
}
.gvs-quick-apps-bar{padding-top:5px!important;padding-bottom:6px!important;}

/* V480 — espaces supérieurs resserrés + profils utilisateurs/admin lumineux */
.gvs-mini-brand-bar{padding-bottom:2px!important;margin-bottom:0!important;}
.gvs-top-search-bar{padding-top:4px!important;padding-bottom:4px!important;}
.gvs-quick-apps-bar{padding-top:4px!important;padding-bottom:5px!important;gap:4px!important;}
.gvs-quick-app-btn{width:38px!important;height:38px!important;}
.gvs-quick-app-btn svg,.gvs-quick-app-btn img{width:29px!important;height:29px!important;}
@media(max-width:400px){
 .gvs-quick-app-btn{width:33px!important;height:33px!important;}
 .gvs-quick-app-btn svg,.gvs-quick-app-btn img{width:25px!important;height:25px!important;}
}
@media(max-width:340px){
 .gvs-quick-app-btn{width:29px!important;height:29px!important;}
 .gvs-quick-app-btn svg,.gvs-quick-app-btn img{width:22px!important;height:22px!important;}
}
/* Halo du profil : clair = bleu électrique, sombre = vert clair */
.profile-big-avatar,.messenger-avatar,.msg-user-avatar,.chat-avatar,.feed-avatar{
  box-shadow:0 0 0 2px rgba(0,128,255,.88),0 0 10px rgba(0,128,255,.55)!important;
}
body.dark .profile-big-avatar,body.dark .messenger-avatar,body.dark .msg-user-avatar,body.dark .chat-avatar,body.dark .feed-avatar{
  box-shadow:0 0 0 2px rgba(144,238,144,.9),0 0 10px rgba(144,238,144,.55)!important;
}

/* V482 — montre circulaire légèrement agrandie */
.gvs-round-clock{width:140px!important;height:140px!important;}
@media(max-width:400px){.gvs-round-clock{width:126px!important;height:126px!important;}}
@media(max-width:340px){.gvs-round-clock{width:118px!important;height:118px!important;}}

/* V483 — retirer le bandeau GVS+ uniquement dans l'Espace Client */
body:has(#auth.active) .gvs-mini-brand-bar{display:none!important;}

/* V484 — petits tirets de seconde : 60 repères autour de la montre */
.gvs-clock-ticks line.second-tick{stroke:#CBD5E8;stroke-width:0.9;stroke-linecap:round}
.gvs-clock-ticks line.major{stroke:#9EABC6;stroke-width:1.6;stroke-linecap:round}
body.dark .gvs-clock-ticks line.second-tick{stroke:#52617F;stroke-width:0.9}
body.dark .gvs-clock-ticks line.major{stroke:#71809F;stroke-width:1.6}

/* V486 — célébration visible à chaque première création de compte */
.gvs-signup-celebration{position:fixed;inset:0;z-index:999999;display:flex;align-items:center;justify-content:center;pointer-events:none;overflow:hidden;background:rgba(255,255,255,.16);animation:gvsCelebrateFade 30s ease forwards}
.gvs-signup-message{position:fixed;z-index:2147483647;max-width:88%;padding:0;margin:0;text-align:center;font-weight:900;font-size:clamp(19px,5.5vw,32px);line-height:1.2;background:transparent!important;border:0!important;box-shadow:none!important;color:transparent!important;-webkit-text-fill-color:transparent!important;background-image:linear-gradient(90deg,#ff0000,#ff9d00,#e8ff00,#00d639,#00d9ff,#5b2cff,#ff00b8,#ff0000)!important;background-size:300% 100%!important;-webkit-background-clip:text!important;background-clip:text!important;animation:gvsCelebratePop .7s cubic-bezier(.2,1.4,.4,1) both,gvsMessageRainbow 3s linear infinite!important}
/* Foyer réel de la célébration : centre de l'espace de l'horloge circulaire. */
.gvs-clock-celebration-origin{
  position:fixed!important;
  left:var(--gvs-celebration-origin-x,50vw);
  top:var(--gvs-celebration-origin-y,50vh);
  width:clamp(34px,12vw,72px);
  height:clamp(34px,12vw,72px);
  margin-left:calc(clamp(34px,12vw,72px) / -2);
  margin-top:calc(clamp(34px,12vw,72px) / -2);
  border-radius:50%;
  border:3px solid rgba(0,168,255,.95);
  box-shadow:0 0 10px rgba(0,168,255,.9),0 0 28px rgba(123,97,255,.75),0 0 55px rgba(255,77,109,.45);
  pointer-events:none;
  z-index:2147483003!important;
  animation:gvsClockOriginBurst 1.25s ease-out 2 both;
}
@keyframes gvsClockOriginBurst{
  0%{transform:scale(.35);opacity:0}
  12%{transform:scale(.55);opacity:1}
  100%{transform:scale(2.15);opacity:0}
}

.gvs-celebrate-spark{position:absolute;left:var(--gvs-celebration-origin-x,50%);top:var(--gvs-celebration-origin-y,50%);width:10px;height:10px;border-radius:50%;opacity:0;animation:gvsSpark 3.5s cubic-bezier(.15,.7,.2,1) forwards}
.gvs-celebrate-heart{position:absolute;left:var(--gvs-celebration-origin-x,50%);top:var(--gvs-celebration-origin-y,50%);font-size:clamp(20px,6vw,34px);opacity:0;filter:drop-shadow(0 2px 5px rgba(0,0,0,.15));animation:gvsHeart 3.9s ease-out forwards}
body.dark .gvs-signup-celebration{background:rgba(4,10,18,.22)}
body.dark .gvs-signup-message{background-color:transparent!important;border:0!important;box-shadow:none!important;color:transparent!important;-webkit-text-fill-color:transparent!important}
@keyframes gvsCelebratePop{from{transform:var(--gvs-msg-translate,translate(-50%,-50%)) scale(.35);opacity:0}to{transform:var(--gvs-msg-translate,translate(-50%,-50%)) scale(1);opacity:1}}
@keyframes gvsCelebrateFade{0%,82%{opacity:1}100%{opacity:0}}
@keyframes gvsSpark{0%{transform:translate(-50%,-50%) scale(.2);opacity:0}10%{opacity:1}100%{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) rotate(720deg) scale(.75);opacity:0}}
@keyframes gvsHeart{0%{transform:translate(-50%,-50%) scale(.3) rotate(-15deg);opacity:0}12%{opacity:1}100%{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1.15) rotate(25deg);opacity:0}}


/* V487 — grande célébration de première inscription : beaucoup de brillants et 8 secondes */
.gvs-signup-celebration{animation:gvsCelebrateFade 30s ease forwards!important}
 .gvs-signup-message{animation:gvsCelebratePop .7s cubic-bezier(.2,1.4,.4,1) both,gvsMessageRainbow 3s linear infinite!important}
.gvs-celebrate-spark{width:clamp(7px,2.2vw,13px)!important;height:clamp(7px,2.2vw,13px)!important;animation-duration:4.8s!important}
.gvs-celebrate-heart{font-size:clamp(20px,6vw,38px)!important;animation-duration:5.2s!important}
@keyframes gvsMessageRainbow{from{background-position:0% 50%;filter:hue-rotate(0deg)}to{background-position:100% 50%;filter:hue-rotate(360deg)}}
/* « Ravie de vous revoir » : même effet que « Connexion en cours… » — toutes les couleurs
   de l'arc-en-ciel visibles en même temps sur la phrase (dégradé figé, seule la teinte tourne),
   au lieu du dégradé qui défile (2-3 couleurs visibles à la fois) utilisé par défaut. */
.gvs-signup-message.gvs-message-full-rainbow{
  background-size:100% 100%!important;
  animation:gvsCelebratePop .7s cubic-bezier(.2,1.4,.4,1) both,gvsStartupStatusRainbow 3s linear infinite!important;
}
@media (prefers-reduced-motion:reduce){
  .gvs-signup-message.gvs-message-full-rainbow{animation:gvsCelebratePop .7s cubic-bezier(.2,1.4,.4,1) both!important;filter:none!important;}
}


/* V489 — Célébration confinée à l'affichage de l'Espace Rubriques (le JS ne
   la déclenche que si cette page est active), mais en position fixe pour
   couvrir tout l'écran, pas seulement la hauteur du bloc Accueil. */
#home{position:relative;}
/* V491 — célébration sur toute la rubrique, y compris par-dessus l’horloge circulaire.
   La couche est réellement viewport-wide et reste au-dessus des bandeaux, de la
   barre GVS+ et de l’horloge sans bloquer les commandes. */
#home .gvs-signup-celebration{
  position:fixed!important;
  inset:0!important;
  width:100vw!important;
  height:100vh!important;
  min-width:100vw!important;
  min-height:100dvh!important;
  z-index:2147483000!important;
  overflow:hidden!important;
  pointer-events:none!important;
  transform:none!important;
}
#home .gvs-signup-celebration .gvs-signup-message{z-index:2147483002!important;}
#home .gvs-signup-celebration .gvs-celebrate-spark,
#home .gvs-signup-celebration .gvs-celebrate-heart{z-index:2147483001!important;}
/* L’horloge reste visible sous les effets de célébration, jamais découpée par sa zone. */
#home #gvsRoundClockWrap,
#home #gvsRoundClock{overflow:visible!important;}

/* V490 — bandeau du message de célébration resserré (moins imposant) */
.gvs-signup-message{max-width:78%!important;padding:12px 18px!important;border-radius:16px!important;font-size:clamp(12px,4.2vw,19px)!important;line-height:1.25!important;font-weight:900!important;}

/* GVS+ — bandeau bleu + bouton Power réservés EXCLUSIVEMENT à l'Espace Rubriques. */
#gvsMiniBrandBar.hidden{display:none!important;}
body:not(:has(#home.active)) #gvsMiniBrandBar{display:none!important;}

/* GVS+ — hub multi-jeux et mini-jeux */
#gvsGamesHub{max-height:92vh;overflow:auto}
.gvs-games-score{font-weight:900;font-size:17px;margin:10px 0;color:var(--blue,#0B3FA8)}
.gvs-game-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0}
.gvs-game-card{border:1px solid var(--line,#d8e2f0);background:var(--paper,#fff);color:inherit;border-radius:16px;padding:15px 10px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:5px;font:inherit;box-shadow:0 4px 12px rgba(0,0,0,.06)}
.gvs-game-card span{font-size:32px}.gvs-game-card b{font-size:14px}.gvs-game-card small{opacity:.72}.gvs-game-card:hover{transform:translateY(-1px)}
.gvs-training-reward{padding:11px;border-radius:13px;background:rgba(85,201,107,.12);font-weight:700}
.gvs-puzzle-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:15px 0}.gvs-puzzle-tile{position:relative;border:2px solid var(--line,#d8e2f0);border-radius:12px;overflow:hidden;background:#fff;padding:0;cursor:pointer;aspect-ratio:1}.gvs-puzzle-tile img{width:100%;height:100%;object-fit:cover}.gvs-puzzle-tile span{position:absolute;top:4px;left:5px;background:#fff;border-radius:99px;padding:2px 7px;font-weight:900}.gvs-puzzle-tile.selected{border-color:#0B8CFF;box-shadow:0 0 0 3px rgba(11,140,255,.2)}
.gvs-race{margin:12px 0}.gvs-road{height:280px;border-radius:18px;background:repeating-linear-gradient(90deg,#3c4654 0,#3c4654 31%,#e9edf2 31.5%,#3c4654 32%);position:relative;overflow:hidden;border:3px solid #222}.gvs-car,.gvs-obstacle{position:absolute;transform:translateX(-50%);font-size:36px;transition:left .15s}.gvs-car{bottom:18px}.gvs-obstacle{top:35%;transition:top .3s,left .15s}.gvs-race-score{font-weight:900;margin:9px}.gvs-race-controls{display:flex;gap:10px}.gvs-race-controls button{flex:1;border:0;border-radius:13px;padding:12px;font-size:24px;cursor:pointer}
.gvs-goal{height:180px;border:8px solid #eee;border-bottom:18px solid #ddd;border-radius:16px 16px 6px 6px;display:grid;grid-template-columns:repeat(3,1fr);gap:3px;background:repeating-linear-gradient(0deg,rgba(0,0,0,.05),rgba(0,0,0,.05) 2px,transparent 2px,transparent 20px);padding:8px}.gvs-goal-zone{border:1px dashed rgba(0,0,0,.2);background:rgba(255,255,255,.15);font-size:28px;cursor:pointer}.gvs-ball{font-size:48px;margin:10px}
body.dark .gvs-game-card{background:#182033;border-color:#40506b}.gvs-mini-final{padding:25px 10px;font-size:20px;line-height:1.8}
@media(max-width:380px){.gvs-game-grid{grid-template-columns:1fr}.gvs-race{margin-inline:-4px}}


/* GVS+ v503 — en-tête : animation centrée entre GVS+ et le bouton Power rouge */
.gvs-mini-brand-bar{
  position:relative!important;
  display:grid!important;
  grid-template-columns:1fr auto 1fr!important;
  align-items:center!important;
  justify-content:initial!important;
  gap:8px!important;
}
.gvs-mini-brand-name{justify-self:start;display:block;line-height:1}
.gvs-mini-brand-animation{
  width:42px;height:42px;display:flex;align-items:center;justify-content:center;
  justify-self:center;pointer-events:none;
}
.gvs-mini-brand-client-btn{justify-self:end}
.gvs-mini-brand-client-btn img{width:40px!important;height:40px!important}
@media(max-width:600px){
  .gvs-mini-brand-animation{width:38px;height:38px}
  .gvs-mini-animated-star{width:34px;height:34px}
  .gvs-mini-brand-client-btn img{width:36px!important;height:36px!important}
}

/* GVS+ v503 — puzzle : chaque morceau affiche réellement l’image complète dans son cadre */
.gvs-puzzle-board{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
  grid-template-rows:repeat(2,minmax(0,1fr))!important;
  width:min(100%,420px)!important;
  aspect-ratio:1/1!important;
  margin:18px auto!important;
  gap:2px!important;
  overflow:hidden!important;
  position:relative!important;
  background:#fff!important;
  border-radius:0!important;
  box-shadow:none!important;
  touch-action:manipulation!important;
}
.gvs-puzzle-tile{
  position:relative!important;
  display:block!important;
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  min-height:0!important;
  aspect-ratio:auto!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  overflow:hidden!important;
  background:#fff!important;
  cursor:pointer!important;
}
.gvs-puzzle-viewport{
  position:absolute!important;inset:0!important;display:block!important;
  overflow:hidden!important;width:100%!important;height:100%!important;
}
.gvs-puzzle-img{
  position:absolute!important;display:block!important;
  width:500%!important;height:200%!important;
  max-width:none!important;object-fit:fill!important;
  margin:0!important;padding:0!important;
  pointer-events:none!important;user-select:none!important;
}
.gvs-puzzle-tile.selected{
  box-shadow:inset 0 0 0 3px rgba(0,102,255,.95)!important;
  z-index:5!important;
}
.gvs-game-actions{display:grid;gap:8px;margin-top:10px}
.gvs-puzzle-timer{
  width:min(100%,500px);
  margin:8px auto 4px;
  text-align:center;
  font-weight:900;
  font-size:18px;
  line-height:1.3;
  padding:8px 12px;
  border-radius:12px;
  background:var(--card,#fff);
  box-shadow:0 2px 8px rgba(0,0,0,.10);
}


/* GVS+ v3 — statut : icônes nettes et professionnelles */
.android-status-bar .asb-icon,
.android-status-bar .asb-icon-btn svg,
.android-status-bar .asb-chip svg{
  width:22px !important;
  height: 20px !important;
  display:block;
  vector-effect:non-scaling-stroke;
}
.android-status-bar .asb-icon-btn,
.android-status-bar .asb-chip{
  -webkit-tap-highlight-color:transparent;
}
#asbBattery .asb-icon{stroke-width:1.2 !important;}
#installBtn{background:linear-gradient(180deg,#FF6B6B,#E63946)!important;color:#fff!important;border-color:rgba(255,255,255,.45)!important;box-shadow:0 0 12px 3px rgba(230,57,70,.7),0 3px 14px rgba(230,57,70,.5),inset 0 1px 0 rgba(255,255,255,.45)!important;animation:installBtnGlow 1.6s ease-in-out infinite;}
body.dark #installBtn{border-color:rgba(255,255,255,.3)!important;box-shadow:0 0 14px 4px rgba(255,107,107,.75),0 3px 14px rgba(230,57,70,.6),inset 0 1px 0 rgba(255,255,255,.4)!important;}
@keyframes installBtnGlow{0%,100%{box-shadow:0 0 10px 2px rgba(230,57,70,.55),0 3px 14px rgba(230,57,70,.4),inset 0 1px 0 rgba(255,255,255,.45)}50%{box-shadow:0 0 18px 6px rgba(230,57,70,.9),0 3px 14px rgba(230,57,70,.6),inset 0 1px 0 rgba(255,255,255,.45)}}

/* GVS+ v4 — vrais dessins d'icônes professionnels */
.gvs-real-icon{
  width:22px !important;
  height:22px !important;
  display:inline-block !important;
  object-fit:contain !important;
  vertical-align:middle !important;
  color:currentColor !important;
}
.gvs-camera-icon{width:24px !important;height:24px !important;}

/* GVS+ v5 — date plus lisible */
.gvs-date, .date, .current-date, .status-date, [data-date],
#date, #currentDate, #todayDate {
  font-size: 1.05rem !important;
  font-weight: 600 !important;
  line-height: 1.35 !important;
  letter-spacing: .02em !important;
  white-space: nowrap !important;
  text-rendering: geometricPrecision !important;
}

/* GVS+ v6 — vraie icône graphique de torche */
.gvs-flashlight-icon{
  width:23px !important;
  height:23px !important;
  display:inline-block !important;
  object-fit:contain !important;
  vertical-align:middle !important;
}

/* Final override: puzzle split uses only thin white lines; no tile gaps/borders. */
.gvs-puzzle-board{gap:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:transparent!important;}
.gvs-puzzle-tile,.gvs-puzzle-tile.selected{border:0!important;border-radius:0!important;box-shadow:none!important;}
.gvs-puzzle-board:after{content:""!important;position:absolute!important;inset:0!important;z-index:20!important;pointer-events:none!important;background:linear-gradient(to right,transparent 0 19.95%,#fff 19.95% 20.05%,transparent 20.05% 39.95%,#fff 39.95% 40.05%,transparent 40.05% 59.95%,#fff 59.95% 60.05%,transparent 60.05% 79.95%,#fff 79.95% 80.05%,transparent 80.05% 100%),linear-gradient(to bottom,transparent 0 49.9%,#fff 49.9% 50.1%,transparent 50.1% 100%)!important;background-repeat:no-repeat!important;}

/* GVS+ v22 — puzzle : séparations = traits blancs simples de 1px uniquement */
.gvs-puzzle-board{
  gap:0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  background:transparent!important;
}
.gvs-puzzle-tile,
.gvs-puzzle-tile.selected{
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  outline:none!important;
}
.gvs-puzzle-board:after{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  z-index:50!important;
  pointer-events:none!important;
  background:
    linear-gradient(to right,
      transparent 0%, transparent calc(20% - .5px), #fff calc(20% - .5px), #fff calc(20% + .5px), transparent calc(20% + .5px),
      transparent calc(40% - .5px), #fff calc(40% - .5px), #fff calc(40% + .5px), transparent calc(40% + .5px),
      transparent calc(60% - .5px), #fff calc(60% - .5px), #fff calc(60% + .5px), transparent calc(60% + .5px),
      transparent calc(80% - .5px), #fff calc(80% - .5px), #fff calc(80% + .5px), transparent calc(80% + .5px), transparent 100%),
    linear-gradient(to bottom,
      transparent 0%, transparent calc(50% - .5px), #fff calc(50% - .5px), #fff calc(50% + .5px), transparent calc(50% + .5px), transparent 100%)!important;
  background-repeat:no-repeat!important;
}


/* V481 — GVS+ sous le bandeau Wi-Fi/batterie + fond blanc de son icône sociale */
.gvs-mini-brand-bar{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  box-sizing:border-box;
}
.gvs-mini-brand-bar{padding-left:10px!important;padding-right:10px!important;}
.gvs-mini-brand-name{display:block!important;text-align:left!important;}
.gvs-fixed-app.gvs-qa-gvsplus{
  width:42px!important;
  height:42px!important;
  aspect-ratio:1/1!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  background:#fff!important;
  border-radius:50%!important;
  box-shadow:0 2px 6px rgba(0,0,0,.18)!important;
  overflow:hidden!important;
  padding:0!important;
}
.gvs-fixed-app.gvs-qa-gvsplus img{
  width:100%!important;
  height:100%!important;
  display:block!important;
  background:#fff!important;
  border-radius:50%!important;
  object-fit:cover!important;
}

/* Correction finale — GVS+ réellement dans le coin supérieur gauche sous le bandeau d'état */
#gvsMiniBrandBar.gvs-mini-brand-bar{
  padding-left:0!important;
  padding-right:10px!important;
}
#gvsMiniBrandBar .gvs-mini-brand-name{
  justify-self:start!important;
  text-align:left!important;
  margin-left:0!important;
  padding-left:0!important;
}

/* Ajustement final demandé — GVS+ légèrement décollé du coin gauche */
#gvsMiniBrandBar.gvs-mini-brand-bar{
  padding-left:12px!important;
}
#gvsMiniBrandBar .gvs-mini-brand-name{
  margin-left:0!important;
  padding-left:0!important;
}

/* Ajustement demandé — bandeau GVS+ légèrement remonté sous le bandeau d'état */
#gvsMiniBrandBar.gvs-mini-brand-bar{
  position:relative!important;
  top:-6px!important;
}

/* GVS+ — réduction de l'espace supérieur du bandeau Wi-Fi/batterie */
.android-status-bar{padding:calc(1px + env(safe-area-inset-top)) 10px 3px !important;}
body.standalone .android-status-bar{padding:calc(1px + env(safe-area-inset-top)) 12px 2px !important;}

/* GVS+ — réduction supplémentaire de l'espace supérieur du bandeau Wi-Fi/batterie */
.android-status-bar{padding:calc(0px + env(safe-area-inset-top)) 10px 2px !important;}
body.standalone .android-status-bar{padding:calc(0px + env(safe-area-inset-top)) 12px 1px !important;}

/* GVS+ — réduction horizontale du bandeau Wi-Fi/batterie */
.android-status-bar{padding-left:6px !important;padding-right:6px !important;}
body.standalone .android-status-bar{padding-left:8px !important;padding-right:8px !important;}

/* GVS+ — bandeau Wi-Fi/batterie légèrement remonté */
.android-status-bar{transform:translateY(-3px);margin-bottom:-3px;}

/* GVS+ — bandeau supérieur encore légèrement remonté */
.android-status-bar{transform:translateY(-2px);}
body.standalone .android-status-bar{transform:translateY(-2px);}


/* GVS+ — plein écran : bandeau Wi-Fi/batterie encore plus remonté */
.android-status-bar{transform:translateY(-4px)!important;margin-bottom:-4px!important;}
body.standalone .android-status-bar{transform:translateY(-6px)!important;margin-bottom:-6px!important;}

/* GVS+ — bandeau Wi-Fi/batterie encore plus haut en plein écran */
body.standalone .android-status-bar{padding-top:calc(0px + env(safe-area-inset-top)) !important;padding-bottom:1px !important;}
@media (display-mode: fullscreen){.android-status-bar{padding-top:0 !important;padding-bottom:1px !important;}}

/* GVS+ — plein écran : supprimer l'espace au-dessus du bandeau Wi-Fi/batterie */
@media (display-mode: fullscreen){
  .android-status-bar{
    margin-top:0 !important;
    padding-top:0 !important;
    transform:translateY(-10px) !important;
    margin-bottom:-10px !important;
  }
}
body.fullscreen .android-status-bar,
body.is-fullscreen .android-status-bar{
  margin-top:0 !important;
  padding-top:0 !important;
  transform:translateY(-10px) !important;
  margin-bottom:-10px !important;
}
/* GVS+ — finition demandée : plein écran plus haut, batterie faible visible en sombre,
   bandeau GVS+ / Power moins haut depuis le bas */
@media (display-mode: fullscreen){
  .android-status-bar{transform:translateY(-14px)!important;margin-bottom:-14px!important;padding-top:0!important;padding-bottom:0!important;}
}
body.fullscreen .android-status-bar,body.is-fullscreen .android-status-bar{
  transform:translateY(-14px)!important;margin-bottom:-14px!important;padding-top:0!important;padding-bottom:0!important;
}
body.dark #asbBattery.low .asb-icon,
body.dark #asbBattery.low{color:#FF7B7B!important;}
.gvs-mini-brand-bar{height:52px!important;padding-top:0!important;padding-bottom:0!important;}
.gvs-mini-brand-client-btn img{width:34px!important;height:34px!important;}
@media(max-width:600px){.gvs-mini-brand-client-btn img{width:32px!important;height:32px!important;}}

/* GVS+ — finition : pourcentage batterie blanc en mode sombre + icônes encore plus haut en plein écran */
body.dark #asbBattery .asb-battery-percent,
body.dark #asbBatteryText{color:#fff!important;}
@media (display-mode: fullscreen){
  .android-status-bar{transform:translateY(-20px)!important;margin-bottom:-20px!important;}
}
body.fullscreen .android-status-bar,
body.is-fullscreen .android-status-bar{
  transform:translateY(-20px)!important;margin-bottom:-20px!important;
}

/* GVS+ — WhatsApp Business : signe + à côté de l’icône */
.gvs-qa-wab{position:relative!important;}
.gvs-wa-business-plus{position:absolute!important;right:-2px!important;bottom:-2px!important;font-size:16px!important;line-height:1!important;font-weight:900!important;color:#25D366!important;text-shadow:0 0 2px rgba(0,0,0,.35)!important;}
@media(max-width:400px){.gvs-wa-business-plus{font-size:14px!important;right:-2px!important;bottom:-2px!important;}}

/* GVS+ — plein écran : bandeau Wi-Fi/batterie/date encore plus haut */
@media (display-mode: fullscreen){
  .android-status-bar{transform:translateY(-26px)!important;margin-bottom:-26px!important;}
}
body.fullscreen .android-status-bar,
body.is-fullscreen .android-status-bar{
  transform:translateY(-26px)!important;margin-bottom:-26px!important;
}

/* Plein écran: bandeau encore plus haut + alarme en gras */
@media (display-mode: fullscreen){.android-status-bar{transform:translateY(-6px)!important;margin-bottom:-6px!important;} .android-status-bar .alarm-icon,.android-status-bar .alarm,.android-status-bar [class*=alarm]{font-weight:900!important;} }

/* GVS+ — correction réelle : plein écran encore plus haut + icône Alarme renforcée */
@media (display-mode: fullscreen){
  .android-status-bar{transform:translateY(-36px)!important;margin-bottom:-36px!important;}
}
body.fullscreen .android-status-bar,
body.is-fullscreen .android-status-bar{
  transform:translateY(-36px)!important;margin-bottom:-36px!important;
}
.android-status-bar [data-asb-item="alarm"] svg{width:22px!important;height: 20px!important;}
.android-status-bar [data-asb-item="alarm"] svg path,
.android-status-bar [data-asb-item="alarm"] svg circle{
  stroke-width:2.5px!important;
}

/* GVS+ — bandeau Wi-Fi/batterie : réduire la largeur horizontale */
.android-status-bar{
  padding-left:5px!important;
  padding-right:5px!important;
}
body.standalone .android-status-bar{
  padding-left:7px!important;
  padding-right:7px!important;
}

/* GVS+ — Espace Client : bouton « Mot de passe oublié » centré + couleurs de thème,
   puis espacement légèrement augmenté avant la phrase d'appareil et l'accès Administration. */
#loginTab > div[style*="text-align:right"]{
  text-align:center !important;
}
#loginTab > div[style*="text-align:right"] .link-btn{
  display:inline-block !important;
  color:#0066FF !important;
  font-weight:800 !important;
  text-decoration:none !important;
}
body.dark #loginTab > div[style*="text-align:right"] .link-btn{
  color:#86EFAC !important;
}
#authModeNote{
  margin-top:24px !important;
}
#authModeNote + p{
  margin-top:18px !important;
}

/* GVS+ — Espace Client : ajustement final */
#loginTab > div[style*="text-align:right"]{ text-align:center !important; margin-top:14px !important; }
#loginTab > div[style*="text-align:right"] .link-btn{
 display:inline-flex !important; align-items:center !important; justify-content:center !important;
 min-height:42px !important; padding:9px 18px !important; border-radius:12px !important;
 border:1px solid #0066FF !important; background:rgba(0,102,255,.10) !important;
 color:#0066FF !important; font-weight:800 !important; text-decoration:none !important;
 box-shadow:0 0 10px rgba(0,102,255,.20) !important;
}
body.dark #loginTab > div[style*="text-align:right"] .link-btn{
 border-color:#86EFAC !important; background:rgba(134,239,172,.10) !important; color:#86EFAC !important;
 box-shadow:0 0 10px rgba(134,239,172,.18) !important;
}
#authModeNote{ margin-top:34px !important; }
#authModeNote + p{ margin-top:28px !important; }
/* GVS+ — Espace Client : remonter très légèrement la phrase et l'accès Administration */
#authModeNote{margin-top:28px!important;}
#authModeNote + p{margin-top:22px!important;}

/* GVS+ v60 — « Mot de passe oublié ? (via WhatsApp) » ne doit jamais aller à la ligne */
#loginTab > div[style*="text-align:right"] .link-btn{
  white-space:nowrap !important;
  font-size:clamp(11.5px, 3.6vw, 14px) !important;
  padding-left:clamp(8px, 3vw, 18px) !important;
  padding-right:clamp(8px, 3vw, 18px) !important;
}


/* GVS+ — bouton Mot de passe oublié légèrement réduit */
.forgot-password, #forgotPassword, .forgot-password-btn, button[onclick*="forgot"], a[href*="forgot"] {
  transform: scale(0.90);
  transform-origin: center center;
}

/* GVS+ — icône légèrement réduite dans le bandeau Facebook/TikTok/Messenger */
.gvs-fixed-app.gvs-qa-gvsplus img{
  width:84%!important;
  height:84%!important;
  margin:auto!important;
}

/* GVS+ — réduction du fond blanc dans le bandeau des applis rapides */
.gvs-quick-apps-bar .gvs-quick-app-btn:has(img[src*="icon-gvsplus"]), .gvs-quick-apps-bar .gvs-quick-app-btn.gvs-plus-btn { width:34px !important; height: 28px !important; padding:2px !important; }
.gvs-quick-apps-bar .gvs-quick-app-btn:has(img[src*="icon-gvsplus"]) img, .gvs-quick-apps-bar .gvs-quick-app-btn.gvs-plus-btn img { width:29px !important; height:29px !important; object-fit:contain !important; }

/* GVS+ : bandeau statut collé en haut en plein écran */
@media all and (display-mode: fullscreen){
  .android-status-bar{margin-top:-10px !important; transform:translateY(-10px) !important;}
}
body.fullscreen .android-status-bar, body.is-fullscreen .android-status-bar{margin-top:-10px !important; transform:translateY(-10px) !important;}

/* GVS+ — finition logo, démarrage et étoile */
.gvs-quick-apps-bar .gvs-quick-app-btn:has(img[src*="icon-gvsplus"]),
.gvs-quick-apps-bar .gvs-quick-app-btn.gvs-plus-btn{width:36px!important;height:36px!important;padding:1px!important;border-radius:50%!important;}
.gvs-quick-apps-bar .gvs-quick-app-btn:has(img[src*="icon-gvsplus"]) img,
.gvs-quick-apps-bar .gvs-quick-app-btn.gvs-plus-btn img{width:32px!important;height:32px!important;object-fit:contain!important;}
/* Logo GVS+ légèrement réduit à l'ouverture */
.startup-logo{height:175px!important;max-width:78vw!important;}
/* Alarme réellement renforcée */
.android-status-bar [data-asb-item="alarm"] svg{width:22px!important;height: 20px!important;}
.android-status-bar [data-asb-item="alarm"] svg path{stroke-width:3px!important;}

/* GVS+ — fond blanc extérieur réduit dans le bandeau Facebook/TikTok/Messenger, proche du rendu Chrome */
.gvs-quick-apps-bar .gvs-fixed-app.gvs-qa-gvsplus{
  width:31px!important;height: 25px!important;
  padding:0!important;
  background:transparent!important;
  border-radius:50%!important;
  box-shadow:none!important;
  overflow:visible!important;
}
.gvs-quick-apps-bar .gvs-fixed-app.gvs-qa-gvsplus img{
  width:27px!important;height:27px!important;
  margin:auto!important;
  background:transparent!important;
  border-radius:50%!important;
  object-fit:contain!important;
}

/* GVS+ — finition demandée : icône GVS+ légèrement agrandie, bandeau statut très compact en plein écran,
   et Espace Client légèrement réduit pour tenir entièrement à l'écran. */
.gvs-quick-apps-bar .gvs-fixed-app.gvs-qa-gvsplus{
  width:33px!important;height: 27px!important;padding:0!important;
  background:transparent!important;box-shadow:none!important;
}
.gvs-quick-apps-bar .gvs-fixed-app.gvs-qa-gvsplus img{
  width:29px!important;height:29px!important;background:transparent!important;
  object-fit:contain!important;margin:auto!important;
}

@media all and (display-mode: fullscreen){
  .android-status-bar{
    padding:0 4px 1px!important;
    margin-top:-28px!important;
    margin-bottom:-28px!important;
    transform:translateY(-28px)!important;
    min-height:0!important;
  }
  .android-status-bar .asb-icon{width:18px!important;height: 20px!important;}
  .android-status-bar .asb-chip{height: 20px!important;padding:1px 4px!important;}
  .android-status-bar .asb-icon-btn{width:22px!important;height: 20px!important;}
  .android-status-bar .asb-icon-btn svg{width:18px!important;height: 20px!important;}

  /* V503 : la compaction de l'Espace Client en plein écran a été retirée (rendu identique au mode normal). */
}

/* GVS+ — Espace Client : bandeau du drapeau légèrement réduit */
#auth .auth-topbar{
  padding:6px 10px !important;
  min-height:0 !important;
}
#auth .benin-flag-float img{
  width:32px !important;
  height:32px !important;
}
#auth .auth-close-wrap .auth-close-btn{padding:4px !important;}
#auth .auth-close-icon{width:32px !important;height:32px !important;}

/* GVS+ — Espace Client : réduire encore la hauteur par le bas du bandeau drapeau */
#auth .auth-topbar{padding-top:6px!important;padding-bottom:1px!important;}
#auth .benin-flag-float,#auth .auth-close-wrap{align-self:center!important;}


/* GVS+ — icônes officielles de l’application ChatGPT et de l’application Claude */
.gvs-quick-apps-bar .gvs-qa-chatgpt img{
  object-fit:contain!important;
  border-radius:0!important;
  background:transparent!important;
}
.gvs-quick-apps-bar .gvs-qa-claude img{
  object-fit:contain!important;
  border-radius:8px!important;
  background:#fff!important;
}
/* GVS+ — ChatGPT et Claude dans le bandeau des applications rapides */
.gvs-quick-apps-bar .gvs-qa-chatgpt,
.gvs-quick-apps-bar .gvs-qa-claude{
  display:flex!important;align-items:center!important;justify-content:center!important;
  width:38px!important;height: 31px!important;padding:0!important;
  background:transparent!important;border:0!important;box-shadow:none!important;
  border-radius:0!important;flex:0 0 38px!important;
}
.gvs-quick-apps-bar .gvs-qa-chatgpt img,
.gvs-quick-apps-bar .gvs-qa-claude img{
  width:25px!important;height:25px!important;object-fit:contain!important;display:block!important;
}
@media(max-width:400px){
 .gvs-quick-apps-bar .gvs-qa-chatgpt,.gvs-quick-apps-bar .gvs-qa-claude{width:33px!important;height:33px!important;flex-basis:33px!important;}
 .gvs-quick-apps-bar .gvs-qa-chatgpt img,.gvs-quick-apps-bar .gvs-qa-claude img{width:22px!important;height:22px!important;}
}
@media(max-width:340px){
 .gvs-quick-apps-bar .gvs-qa-chatgpt,.gvs-quick-apps-bar .gvs-qa-claude{width:29px!important;height:29px!important;flex-basis:29px!important;}
 .gvs-quick-apps-bar .gvs-qa-chatgpt img,.gvs-quick-apps-bar .gvs-qa-claude img{width:19px!important;height:19px!important;}
}

/* GVS+ — ChatGPT et Claude bien visibles de face */
.gvs-quick-apps-bar .gvs-qa-chatgpt img,
.gvs-quick-apps-bar .gvs-qa-claude img{width:28px!important;height:28px!important;max-width:28px!important;max-height:28px!important;object-fit:contain!important;object-position:center center!important;display:block!important;opacity:1!important;transform:none!important;border-radius:8px!important;}

/* GVS+ — correction visuelle ChatGPT / Claude : icônes droites, nettes et vues de face */
.gvs-quick-apps-bar .gvs-qa-chatgpt img,
.gvs-quick-apps-bar .gvs-qa-claude img{
  width:30px!important;height:30px!important;max-width:30px!important;max-height:30px!important;
  object-fit:contain!important;object-position:center!important;display:block!important;
  opacity:1!important;transform:none!important;border-radius:0!important;
}

/* Final icons: transparent and visible */
.gvs-quick-apps-bar .gvs-qa-claude img{width:30px!important;height:30px!important;object-fit:contain!important;display:block!important;visibility:visible!important;opacity:1!important;background:transparent!important;border:0!important;border-radius:0!important;transform:none!important;}
.gvs-quick-apps-bar .gvs-qa-chatgpt img{width:21px!important;height:21px!important;object-fit:contain!important;display:block!important;visibility:visible!important;opacity:1!important;background:transparent!important;border:0!important;border-radius:0!important;transform:none!important;}

/* GVS+ — icône « Gestionnaire de fichiers » un peu plus grande que les autres icônes du bandeau */
.gvs-quick-apps-bar .gvs-qa-filemanager img{width:40px!important;height:40px!important;max-width:40px!important;max-height:40px!important;object-fit:contain!important;}
@media(max-width:400px){.gvs-quick-apps-bar .gvs-qa-filemanager img{width:35px!important;height:35px!important;max-width:35px!important;max-height:35px!important;}}
@media(max-width:340px){.gvs-quick-apps-bar .gvs-qa-filemanager img{width:30px!important;height:30px!important;max-width:30px!important;max-height:30px!important;}}

/* GVS+ — icône batterie du bandeau de statut légèrement remontée */
#asbBattery{
  transform:translateY(-2px)!important;
}

/* GVS+ — défilement tactile aligné (snap) sur le bandeau d'icônes réseaux/applications */
.gvs-quick-apps-bar{
  scroll-snap-type:x mandatory!important;
  scroll-padding-left:10px!important;
  scroll-behavior:smooth!important;
  -webkit-overflow-scrolling:touch!important;
  overflow-x:auto!important;
}
.gvs-quick-apps-bar .gvs-fixed-app,
.gvs-quick-apps-bar .gvs-quick-app-btn{
  scroll-snap-align:start!important;
  scroll-snap-stop:always!important;
}

/* GVS+ — icônes ChatGPT et X en blanc en mode sombre (Claude reste identique au mode clair) */
body.dark .gvs-quick-apps-bar .gvs-qa-chatgpt img,
body.dark .gvs-quick-apps-bar .gvs-qa-x img{
  filter:brightness(0) saturate(100%) invert(1)!important;
}

/* GVS+ — fond blanc derrière l'icône GVS+ en mode sombre */
body.dark .gvs-quick-apps-bar .gvs-fixed-app.gvs-qa-gvsplus{
  background:#fff!important;
  border-radius:50%!important;
}

/* GVS+ — icône Claude : même dessin/couleur dans les deux thèmes, mais sans fond blanc en mode sombre */
.gvs-quick-apps-bar .gvs-qa-claude,
body.dark .gvs-quick-apps-bar .gvs-qa-claude{
  color:initial!important;
}
.gvs-quick-apps-bar .gvs-qa-claude img{
  filter:none!important;
  -webkit-filter:none!important;
  background:#fff!important;
  opacity:1!important;
}
body.dark .gvs-quick-apps-bar .gvs-qa-claude img{
  filter:none!important;
  -webkit-filter:none!important;
  background:transparent!important;
  opacity:1!important;
}


/* GVS+ — bandeau statut : icône batterie à la même taille visuelle que l'icône téléphone */
.android-status-bar .asb-icon,
.android-status-bar .asb-icon-btn svg,
.android-status-bar .asb-bell-icon,
.android-status-bar #asbBattery .asb-icon{
  width:20px!important;
  height: 20px!important;
  min-width:20px!important;
  min-height: 20px!important;
  max-width:20px!important;
  max-height:20px!important;
}
.android-status-bar .asb-icon-btn{
  width:24px!important;
  height: 20px!important;
  min-width:24px!important;
  min-height: 20px!important;
  padding:0!important;
}
.android-status-bar .asb-chip{
  min-height: 20px!important;
  height:24px!important;
  padding:1px 4px!important;
  gap:2px!important;
}
.android-status-bar #asbBattery{
  min-height: 20px!important;
  height:24px!important;
}
.android-status-bar #asbBattery .asb-icon{
  order:1!important;
}
.android-status-bar #asbBattery .asb-txt{
  order:2!important;
}
@media(max-width:400px){
  .android-status-bar .asb-icon,
  .android-status-bar .asb-icon-btn svg,
  .android-status-bar .asb-bell-icon,
  .android-status-bar #asbBattery .asb-icon{
    width:20px!important;height: 20px!important;
    min-width:20px!important;min-height: 20px!important;
    max-width:20px!important;max-height:20px!important;
  }
  .android-status-bar .asb-icon-btn{
    width:24px!important;height: 20px!important;min-width:24px!important;
  }
}

/* GVS+ — bandeau Wi-Fi/statut légèrement raccourci horizontalement, sans modifier les icônes */
.android-status-bar{
  width:calc(100% - 16px)!important;
  margin-left:auto!important;
  margin-right:auto!important;
  box-sizing:border-box!important;
}


/* GVS+ v33 — bandeau Wi-Fi : largeur restaurée + icônes légèrement remontées */
.android-status-bar{
  width:100%!important;
  margin-left:0!important;
  margin-right:0!important;
  transform:translateY(-26px)!important;
  margin-bottom:-13px!important;
}
body.fullscreen .android-status-bar,
body.is-fullscreen .android-status-bar{
  width:100%!important;
  margin-left:0!important;
  margin-right:0!important;
  transform:translateY(-26px)!important;
  margin-bottom:-13px!important;
}
body.standalone .android-status-bar{
  width:100%!important;
  margin-left:0!important;
  margin-right:0!important;
  transform:translateY(-26px)!important;
  margin-bottom:-13px!important;
}


/* GVS+ v37 — réduire légèrement la longueur du bas du bandeau du drapeau */
.flag-banner,
.flag-container,
.drapeau-banner,
.drapeau-container,
.status-flag-banner{
  max-width:92%!important;
}

/* GVS+ v39 — le trait inférieur du bandeau drapeau est plus court,
   sans modifier la longueur du bandeau ni les icônes. */
#auth .auth-topbar{
  position:relative!important;
  max-width:none!important;
}
#auth .auth-topbar{
  border-bottom:0!important;
}
#auth .auth-topbar::after{
  content:"";
  position:absolute;
  left:12%;
  right:12%;
  bottom:0;
  height:1px;
  background:var(--line);
  pointer-events:none;
}
body.dark #auth .auth-topbar::after{
  background:#2A3550;
}

/* GVS+ v41 — Espace Client légèrement réduit */
#client-space,
.client-space,
#espace-client,
.espace-client{
  transform:scale(.94);
  transform-origin:center top;
}

/* GVS+ v42 — logo GVS+ légèrement réduit dans l'Espace Client */
#auth .gvs-logo,
#auth .gvs-logo img,
#auth .client-logo,
#auth .client-logo img,
#auth .logo-gvs,
#auth .logo-gvs img,
#client-space .gvs-logo,
#client-space .gvs-logo img{
  transform:scale(.90);
  transform-origin:center center;
}



/* GVS+ v44 — Espace Client : contour complet visible en plein écran */
/* V503 — Espace Client : bloc à sa taille normale en plein écran (l'ancien rétrécissement v44 est retiré). */


/* GVS+ v45 — Logo Espace Client légèrement réduit */
#auth .authbrand .logo{
  height:130px !important;
  max-width:64vw !important;
}
#auth .gvs-logo, #auth .gvs-logo img,
#auth .client-logo, #auth .client-logo img,
#auth .logo-gvs, #auth .logo-gvs img,
#client-space .gvs-logo, #client-space .gvs-logo img{
  transform:scale(.84) !important;
  transform-origin:center center;
}

/* GVS+ v46 — Espace Client : rapprocher légèrement le logo de la ligne du bandeau drapeau */
#auth .authbrand{
  margin-top:5px !important;
}

/* GVS+ v48 — Espace Client : rapprocher nettement le logo de la ligne du bandeau drapeau */
/* GVS+ v58 — remonté un peu plus haut */
#auth .authbrand{
  margin-top:-20px !important;
}

/* V553 — Espace Client : bloc légèrement élargi vers le bas */
#auth .card{
  padding-bottom:38px !important;
}

/* V-FS-FIT — Espace Client en mode plein écran : tout le bloc (logo,
   contour, boutons, © GVS+ 2026) doit tenir d'un coup dans la hauteur de
   l'écran, sans qu'il faille glisser vers le haut pour voir le bas. Les
   tailles utilisent des unités vh (clamp) au lieu de valeurs fixes : sur
   un grand écran, le bloc reste proche de sa taille normale (comme dans
   la capture fournie) ; sur un écran plus petit, il se réduit juste assez
   pour rester entièrement visible sans défilement. */
body.gvs-fs-active #auth.active{
  min-height:100vh !important;
  min-height:100dvh !important;
  display:flex !important;
  flex-direction:column !important;
  justify-content:center !important;
  overflow-y:auto !important;
  padding-top:clamp(4px, 1vh, 14px) !important;
  padding-bottom:max(10px, env(safe-area-inset-bottom, 0px)) !important;
}
body.gvs-fs-active #auth .authbrand{
  margin-top:clamp(-46px, -6.2vh, -26px) !important;
  margin-bottom:clamp(8px, 2vh, 16px) !important;
  gap:clamp(2px, 0.6vh, 8px) !important;
}
body.gvs-fs-active #auth .authbrand .logo{
  height:clamp(88px, 16.5vh, 132px) !important;
}
body.gvs-fs-active #auth .authbrand h2{
  font-size:clamp(1.05rem, 2.6vh, 1.3rem) !important;
  margin:clamp(2px, 0.6vh, 6px) 0 0 !important;
}
/* boutons/drapeau agrandis, en gardant le format plein écran sans défilement */
body.gvs-fs-active .benin-flag-float img,
body.gvs-fs-active .auth-close-icon{
  width:clamp(30px, 4.6vh, 38px) !important;
  height:clamp(30px, 4.6vh, 38px) !important;
}
body.gvs-fs-active #auth .authtabs-inner .authtab{
  padding:clamp(10px, 1.9vh, 13px) 8px !important;
  font-size:clamp(14px, 1.9vh, 15px) !important;
}
body.gvs-fs-active #loginTab > div[style*="text-align:right"] .link-btn{
  min-height:clamp(42px, 6.2vh, 50px) !important;
  padding:clamp(9px, 1.6vh, 12px) clamp(10px, 2.6vw, 22px) !important;
  font-size:clamp(11.5px, 2.4vw, 15px) !important;
  white-space:nowrap !important;
}
body.gvs-fs-active #auth .card{
  padding:clamp(10px, 2vh, 18px) clamp(12px, 3vw, 18px) !important;
  padding-bottom:clamp(10px, 2vh, 24px) !important;
  margin-bottom:clamp(4px, 1vh, 12px) !important;
}
body.gvs-fs-active #auth .card>h3{
  margin:0 0 clamp(6px, 1.4vh, 14px) !important;
  font-size:clamp(0.95rem, 2.4vh, 1.05rem) !important;
}
body.gvs-fs-active #auth .authtabs-inner{
  margin-top:clamp(2px, 0.6vh, 4px) !important;
  margin-bottom:clamp(4px, 1vh, 10px) !important;
}
body.gvs-fs-active #auth label{
  margin:clamp(3px, 0.9vh, 8px) 0 clamp(2px, 0.4vh, 4px) !important;
  font-size:clamp(12px, 1.6vh, 14px) !important;
}
body.gvs-fs-active #auth input,
body.gvs-fs-active #auth textarea,
body.gvs-fs-active #auth select{
  padding:clamp(7px, 1.4vh, 12px) 12px !important;
  font-size:clamp(13px, 1.8vh, 15px) !important;
}
body.gvs-fs-active #auth .gvs-connect-image-btn{
  margin-top:clamp(3px, 0.8vh, 10px) !important;
  min-height:clamp(40px, 6.2vh, 58px) !important;
}
body.gvs-fs-active #auth .gvs-connect-image-btn img{
  width:clamp(38px, 6.2vh, 58px) !important;
  height:clamp(38px, 6.2vh, 58px) !important;
}
body.gvs-fs-active #auth .autherr{
  min-height:0 !important;
  margin-top:clamp(2px, 0.5vh, 6px) !important;
}
body.gvs-fs-active #auth p.small,
body.gvs-fs-active #auth #authModeNote{
  margin-top:clamp(4px, 0.9vh, 10px) !important;
}

/* V-FS-SIGNUP-FIT — Onglet « Créer un compte » en plein écran : ce
   formulaire a beaucoup plus de champs que l'onglet « Se connecter »,
   donc il faut resserrer encore l'espacement (logo, libellés, champs,
   lignes) pour que tout le bloc tienne sur un seul écran sans défilement,
   exactement comme pour l'Espace Client (onglet connexion). */
body.gvs-fs-active #auth:has(#signupTab:not(.hidden)) .authbrand{
  margin-bottom:clamp(2px, 0.6vh, 8px) !important;
  gap:clamp(1px, 0.3vh, 4px) !important;
}
body.gvs-fs-active #auth:has(#signupTab:not(.hidden)) .authbrand .logo{
  height:clamp(56px, 10vh, 84px) !important;
}
body.gvs-fs-active #auth:has(#signupTab:not(.hidden)) .authbrand h2{
  font-size:clamp(0.85rem, 1.8vh, 1rem) !important;
}
body.gvs-fs-active #auth:has(#signupTab:not(.hidden)) .card{
  padding:clamp(6px, 1.2vh, 12px) clamp(10px, 2.5vw, 16px) !important;
  padding-bottom:clamp(6px, 1.2vh, 14px) !important;
}
body.gvs-fs-active #auth:has(#signupTab:not(.hidden)) .card>h3{
  margin:0 0 clamp(3px, 0.7vh, 8px) !important;
}
body.gvs-fs-active #signupTab label{
  margin:clamp(1px, 0.35vh, 4px) 0 clamp(1px, 0.2vh, 2px) !important;
  font-size:clamp(10.5px, 1.3vh, 12.5px) !important;
}
body.gvs-fs-active #signupTab input,
body.gvs-fs-active #signupTab select{
  padding:clamp(4px, 0.9vh, 8px) 10px !important;
  font-size:clamp(12px, 1.4vh, 13.5px) !important;
}
body.gvs-fs-active #signupTab .formrow{
  gap:8px !important;
}
body.gvs-fs-active #signupTab p.small{
  margin:clamp(1px, 0.3vh, 3px) 0 !important;
  font-size:clamp(9.5px, 1.1vh, 11px) !important;
  line-height:1.3 !important;
}
body.gvs-fs-active #signupTab .gvs-connect-image-btn{
  margin-top:clamp(2px, 0.5vh, 6px) !important;
  min-height:clamp(32px, 4.6vh, 44px) !important;
}
body.gvs-fs-active #signupTab .gvs-connect-image-btn img{
  width:clamp(30px, 4.6vh, 44px) !important;
  height:clamp(30px, 4.6vh, 44px) !important;
}


/* GVS+ — icône Xender dans le bandeau des applications. */
.gvs-quick-apps-bar .gvs-qa-xender img{
  width:32px !important;
  height:32px !important;
  object-fit:contain !important;
}
@media(max-width:400px){.gvs-quick-apps-bar .gvs-qa-xender img{width:28px !important;height:28px !important;}}
@media(max-width:340px){.gvs-quick-apps-bar .gvs-qa-xender img{width:25px !important;height:25px !important;}}

/* ============================================================
   GVS+ — WhatsApp Directeur Général (nouvelle messagerie)
   ============================================================ */
#messagerie .gvs-wa-user-home,
#messagerie .gvs-wa-chat,
.gvs-wa-admin-root{box-sizing:border-box;font-family:"Segoe UI",Roboto,Arial,sans-serif}
#messagerie .gvs-wa-user-home{max-width:620px;margin:0 auto;padding:16px 12px 26px;text-align:center}
.gvs-wa-director-card{width:100%;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;gap:9px;padding:20px 12px 12px;cursor:pointer;color:inherit}
.gvs-wa-director-card strong{font-size:17px;letter-spacing:.1px}
.gvs-wa-director-card:active .gvs-wa-avatar-lg{transform:scale(.97)}
.gvs-wa-avatar{width:54px;height:54px;min-width:54px;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:#e8edf5;color:#17314f;font-weight:800;border:2px solid rgba(22,101,216,.28);box-shadow:0 0 0 4px rgba(21,101,216,.07)}
.gvs-wa-avatar img{width:100%;height:100%;object-fit:cover;display:block}
.gvs-wa-avatar-lg{width:112px;height:112px;min-width:112px;border-width:3px;box-shadow:0 0 0 7px rgba(21,101,216,.08),0 9px 28px rgba(0,0,0,.10);font-size:28px}

/* GVS+ — profil GVS+ de la messagerie : petite vibration périodique pour
   attirer l'oeil sur le profil à contacter. */
@keyframes gvsProfileVibrate{
  0%,88%,100%{transform:translate(0,0) rotate(0)}
  89%{transform:translate(-2px,0) rotate(-3deg)}
  90.5%{transform:translate(2px,0) rotate(3deg)}
  92%{transform:translate(-2px,0) rotate(-3deg)}
  93.5%{transform:translate(2px,0) rotate(3deg)}
  95%{transform:translate(-1px,0) rotate(-2deg)}
  96.5%{transform:translate(1px,0) rotate(2deg)}
  98%{transform:translate(0,0) rotate(0)}
}
#gvsWaDirectorAvatar.gvs-wa-avatar-lg{
  animation:gvsProfileVibrate 3.2s ease-in-out infinite;
  transform-origin:center center;
}
.gvs-wa-director-card:active #gvsWaDirectorAvatar.gvs-wa-avatar-lg{animation-play-state:paused}
.gvs-wa-chat-avatar{width:42px;height:42px;min-width:42px;border-width:2px;box-shadow:none}
.gvs-wa-chat-head-clean .gvs-wa-chat-avatar{flex:0 0 42px}
.gvs-wa-fixed-note{display:block!important;width:max-content!important;max-width:none!important;margin:7px auto 0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;font-size:13px!important;line-height:1.3!important;font-weight:650!important;white-space:nowrap!important;text-align:center!important;box-sizing:border-box!important;}
.gvs-wa-hidden{display:none!important}
.gvs-wa-chat{max-width:1100px;margin:0 auto;border:1px solid #e4e6eb;border-radius:18px;background:#fff;box-shadow:0 10px 30px rgba(0,0,0,.09);display:flex;flex-direction:column;height:min(82vh,900px);overflow:hidden;position:relative}
.gvs-wa-chat.hidden,.gvs-wa-sticker-panel.hidden,.gvs-wa-admin-chat.hidden,.gvs-wa-admin-list.hidden{display:none!important}
.gvs-wa-chat-head{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #e4e6eb;background:#fff;z-index:2}
.gvs-wa-back{width:36px;height:36px;border:0;border-radius:50%;background:transparent;font-size:33px;line-height:1;cursor:pointer;display:grid;place-items:center;color:#000}
.gvs-wa-chat-head-main{min-width:0;display:flex;flex-direction:column;align-items:flex-start}
.gvs-wa-chat-head-main strong{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:55vw;color:#1c1e21}
.gvs-wa-chat-head-main small{font-size:11px;color:#65676b}
.gvs-wa-chat-head-main small.gvs-wa-status-online{color:#16a34a;font-weight:700}
.gvs-wa-chat-head-actions{margin-left:auto;display:flex;align-items:center;gap:2px;position:relative}
.gvs-wa-head-icon{width:36px;height:36px;border:0;border-radius:50%;background:transparent;color:#000;cursor:pointer;display:grid;place-items:center}
.gvs-wa-head-icon:hover{background:rgba(0,0,0,.06)}
.gvs-wa-head-icon svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.gvs-wa-head-menu{position:absolute;top:44px;right:0;background:#fff;border:1px solid #e4e6eb;border-radius:12px;box-shadow:0 10px 26px rgba(0,0,0,.16);overflow:hidden;z-index:20;min-width:210px}
.gvs-wa-head-menu button{display:block;width:100%;text-align:left;padding:11px 14px;border:0;background:transparent;color:#1c1e21;font-size:13.5px;cursor:pointer}
.gvs-wa-head-menu button:hover{background:rgba(0,0,0,.05)}
.gvs-wa-chat-thread{flex:1;overflow:auto;padding:14px 12px 18px;display:flex;flex-direction:column;gap:10px;background:#f7f9fc}
.gvs-wa-empty{margin:auto;max-width:85%;text-align:center;color:#748091;font-size:13px;line-height:1.5;padding:20px}
.gvs-wa-msg{max-width:min(92%,860px);display:flex;flex-direction:row;align-items:flex-end;gap:8px;align-self:flex-start;position:relative;min-width:0!important;box-sizing:border-box!important;}
.gvs-wa-chat-thread{overflow-x:hidden!important;}
.gvs-wa-msg .gvs-wa-text,
.gvs-wa-msg .gvs-wa-attachment-file{
  max-width:100%!important;
  box-sizing:border-box!important;
  white-space:pre-wrap!important;
  overflow-wrap:anywhere!important;
  word-break:break-word!important;
}
.gvs-wa-msg.out{align-self:flex-end;flex-direction:row-reverse}
.gvs-wa-msg-content{display:flex;flex-direction:column;min-width:0}
.gvs-wa-msg.in .gvs-wa-msg-content{align-items:flex-start}
.gvs-wa-msg.out .gvs-wa-msg-content{align-items:flex-end}
.gvs-wa-msg-avatar{width:30px;height:30px;min-width:30px;flex:0 0 30px;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:#e8edf5;margin-bottom:2px}
.gvs-wa-msg-avatar img{width:100%;height:100%;object-fit:cover;display:block}
.gvs-wa-msg-avatar svg{width:18px;height:18px;fill:#fff}
.gvs-wa-msg-avatar-user{background:#2f6fed}
.gvs-wa-msg .gvs-wa-text{display:block;padding:10px 13px;border-radius:18px;line-height:1.45;font-size:14px;box-shadow:0 2px 6px rgba(0,0,0,.06)}
.gvs-wa-msg.in .gvs-wa-text{border-bottom-left-radius:6px;background:#eef1f6;color:#1c1e21}
.gvs-wa-msg.out .gvs-wa-text{border-bottom-right-radius:6px;background:#2f6fed;color:#fff}
.gvs-wa-meta{display:flex;align-items:center;gap:5px;padding:2px 4px 0;font-size:9.5px;color:#7a8492}
.gvs-wa-checks{letter-spacing:-2px;font-weight:900;color:#8b98a8}
.gvs-wa-checks.seen{color:#2f6fed}
.gvs-wa-attachment.image{max-width:260px;border-radius:16px;overflow:hidden}
.gvs-wa-attachment.image img{display:block;width:100%;height:auto;max-height:330px;object-fit:cover}
.gvs-wa-attachment video{max-width:290px;width:100%;border-radius:14px;display:block}
.gvs-wa-attachment-file{padding:10px 13px;border-radius:15px;background:#eef2f7;color:#152236;text-decoration:none;font-size:13px;display:inline-flex;align-items:center;gap:7px}
/* Voix : aucune bulle colorée, juste la commande audio. */
.gvs-wa-msg.is-voice{background:transparent!important;box-shadow:none!important;padding:0!important}
.gvs-wa-msg.is-voice .gvs-wa-meta{margin-top:2px}
.gvs-wa-voice{display:flex;align-items:center;gap:8px;min-width:230px;padding:4px 2px;background:transparent!important;color:#1c1e21}
.gvs-wa-voice-play{width:34px;height:34px;border:0;border-radius:50%;background:#edf2f7;color:#111;cursor:pointer;display:grid;place-items:center;font-size:12px}
.gvs-wa-voice-progress{width:130px;accent-color:#2f6fed}
.gvs-wa-voice-duration{font-size:10px;color:#6b7280;min-width:28px}
.gvs-wa-voice audio{display:none!important}
.gvs-wa-composer{display:flex;align-items:flex-end;gap:5px;padding:7px 8px;border-top:1px solid #e4e6eb;background:#fff;width:100%;box-sizing:border-box;position:relative}
.gvs-wa-composer .gvs-wa-icon,.gvs-wa-composer .gvs-wa-send{flex:0 0 40px}
.gvs-wa-composer textarea{flex:1 1 auto;width:100%;min-width:0;box-sizing:border-box;resize:none;border:0;outline:0;background:#f0f2f5;border-radius:22px;padding:11px 13px;font:inherit;font-size:15px;color:#111;line-height:20px;min-height:44px;height:44px;max-height:240px;overflow-y:auto;transition:height .12s ease,background .15s ease;display:block}
.gvs-wa-composer textarea:focus{background:#e9edf2}
.gvs-wa-composer textarea::placeholder{color:#7c8795;font-size:14px}
.gvs-wa-icon,.gvs-wa-send{width:40px;height:40px;min-width:40px;border:0;background:transparent;border-radius:50%;display:grid;place-items:center;cursor:pointer;font-size:21px;line-height:1;align-self:flex-end;color:#54637a}
.gvs-wa-icon:hover{background:rgba(0,0,0,.06)}
.gvs-wa-send{background:#2f6fed;color:#fff;font-size:18px;font-weight:800;box-shadow:0 3px 9px rgba(47,111,237,.3)}
/* ── Mode sombre : mêmes éléments, palette sombre (comme sur la capture en thème sombre) ── */
body.dark .gvs-wa-chat{background:#0b1220;border-color:#1c2534;box-shadow:0 10px 30px rgba(0,0,0,.35)}
body.dark .gvs-wa-chat-head{background:#0e1626;border-color:#1c2534}
body.dark .gvs-wa-back{color:#fff}
body.dark .gvs-wa-chat-head-main strong{color:#fff}
body.dark .gvs-wa-chat-head-main small{color:#93a1b8}
body.dark .gvs-wa-chat-head-main small.gvs-wa-status-online{color:#4ade80}
body.dark .gvs-wa-head-icon{color:#fff}
body.dark .gvs-wa-head-icon:hover{background:rgba(255,255,255,.08)}
body.dark .gvs-wa-head-menu{background:#182338;border-color:#2a374c;box-shadow:0 10px 26px rgba(0,0,0,.4)}
body.dark .gvs-wa-head-menu button{color:#f0f3f8}
body.dark .gvs-wa-head-menu button:hover{background:rgba(255,255,255,.08)}
body.dark .gvs-wa-chat-thread{background:#0b1220}
body.dark .gvs-wa-empty{color:#8996ac}
body.dark .gvs-wa-msg-avatar{background:#233049}
body.dark .gvs-wa-msg.in .gvs-wa-text{background:#232f42;color:#f2f5fa}
body.dark .gvs-wa-msg.out .gvs-wa-text{background:#2f6fed;color:#fff}
body.dark .gvs-wa-meta{color:#8996ac}
body.dark .gvs-wa-checks{color:#7d8aa0}
body.dark .gvs-wa-checks.seen{color:#4cb2ff}
body.dark .gvs-wa-attachment-file{background:#233049;color:#f0f3f8}
body.dark .gvs-wa-voice{color:#f0f3f8}
body.dark .gvs-wa-voice-play{background:#233049;color:#fff}
body.dark .gvs-wa-voice-duration{color:#93a1b8}
body.dark .gvs-wa-composer{background:#0e1626;border-color:#1c2534}
body.dark .gvs-wa-composer textarea{background:#1a2438;color:#f0f3f8}
body.dark .gvs-wa-composer textarea:focus{background:#212d44}
body.dark .gvs-wa-composer textarea::placeholder{color:#8996ac}
body.dark .gvs-wa-icon{color:#dfe6f2}
body.dark .gvs-wa-icon:hover{background:rgba(255,255,255,.08)}

.gvs-wa-composer.has-text .gvs-wa-mic{display:none}
.gvs-wa-composer:not(.has-text) .gvs-wa-send{display:none}
.gvs-wa-composer.has-text .gvs-wa-send{display:grid}


.gvs-wa-sticker-panel{position:absolute;left:8px;right:8px;bottom:68px;z-index:6;background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:16px;box-shadow:0 14px 36px rgba(0,0,0,.14);padding:10px}
.gvs-wa-sticker-title{font-size:12px;font-weight:800;margin-bottom:8px;color:#465162}
.gvs-wa-sticker-grid{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:5px}
.gvs-wa-sticker-grid button{border:0;background:#f4f6f8;border-radius:10px;padding:8px 0;font-size:22px;cursor:pointer}
.gvs-wa-sticker-grid button:hover{background:#eaf0f7}

/* Administration */
.gvs-wa-admin-root{margin-top:10px}
.gvs-wa-admin-layout{display:grid;grid-template-columns:minmax(230px,34%) minmax(0,1fr);border:1px solid rgba(0,0,0,.08);border-radius:16px;overflow:hidden;background:#fff;min-height:560px}
.gvs-wa-admin-list{background:#fff;border-right:1px solid rgba(0,0,0,.08);overflow:auto}
.gvs-wa-admin-chat{display:flex;flex-direction:column;min-width:0;position:relative}
.gvs-wa-admin-title{display:flex;align-items:baseline;justify-content:space-between;padding:13px 14px;border-bottom:1px solid rgba(0,0,0,.08)}
.gvs-wa-admin-title strong{font-size:17px}.gvs-wa-admin-title span{font-size:11px;color:#758095}
.gvs-wa-admin-row{width:100%;display:flex;align-items:center;gap:10px;padding:11px 10px;border:0;border-bottom:1px solid rgba(0,0,0,.05);background:#fff;text-align:left;cursor:pointer}
.gvs-wa-admin-row:hover,.gvs-wa-admin-row.active{background:#f4f7fa}
.gvs-wa-admin-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.gvs-wa-admin-row-main strong{font-size:13px}.gvs-wa-admin-row-main small{font-size:11px;color:#7b8696;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gvs-wa-admin-row-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px;min-width:26px}.gvs-wa-admin-row-side time{font-size:9px;color:#8993a3}
.gvs-wa-unread{display:grid;place-items:center;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:#ff3347;color:#fff;font-size:9px}
.gvs-wa-admin-chat .gvs-wa-composer{margin-top:auto}

@keyframes gvsWaPulse{50%{transform:scale(1.05)}}

/* La messagerie garde désormais un thème sombre fixe (voir règles plus haut),
   identique que le site soit en thème clair ou sombre — comme sur le modèle fourni. */
body.dark .gvs-wa-admin-row{background:#0f172a;border-bottom-color:#202d40}
body.dark .gvs-wa-admin-row:hover,body.dark .gvs-wa-admin-row.active{background:#172338}
body.dark .gvs-wa-admin-row-main small,body.dark .gvs-wa-admin-row-side time,body.dark .gvs-wa-admin-title span{color:#a9b5c8}
body.dark .gvs-wa-admin-row-main strong{color:#fff}
body.dark .gvs-wa-admin-title strong{color:#fff}

@media(max-width:760px){
  #messagerie .gvs-wa-chat{width:100%;max-width:100%;height:calc(100dvh - 145px);min-height:520px;border-radius:12px}
  .gvs-wa-avatar-lg{width:96px;height:96px;min-width:96px}
  .gvs-wa-admin-layout{display:block;min-height:0}
  .gvs-wa-admin-list{min-height:360px;border-right:0}
  .gvs-wa-admin-chat{height:calc(100dvh - 250px);min-height:440px}
  .gvs-wa-sticker-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
}

/* GVS+ WhatsApp fix: roots are visible even when the host page starts empty. */
#gvsWaUserRoot{display:block!important;min-height:180px;width:100%;}
#gvsWaUserRoot.gvs-wa-user-root{visibility:visible!important;opacity:1!important;}
body.dark .gvs-wa-composer textarea{background:#172235;color:#fff;}
body.dark .gvs-wa-composer{background:#101b2c;color:#fff;}
body.dark .gvs-wa-director-card strong{color:#fff;}
.gvs-wa-user-home{visibility:visible!important;opacity:1!important;}
/* GVS+ LOCAL MESSAGERIE — visibilité renforcée */
#gvsWaUserRoot.gvs-wa-user-root{display:block!important;min-height:120px;visibility:visible!important;opacity:1!important}
#gvsWaUserRoot .gvs-wa-user-home{display:flex!important;flex-direction:column!important;align-items:center!important;gap:10px!important;padding:18px!important}
#gvsWaUserRoot .gvs-wa-director-card{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;background:transparent!important;border:0!important;cursor:pointer!important;color:inherit!important}
#gvsWaUserRoot .gvs-wa-fixed-note{display:block!important;width:max-content!important;max-width:none!important;text-align:center!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;font-size:13px!important;line-height:1.3!important;font-weight:650!important;white-space:nowrap!important;margin:7px auto 0!important;}
.gvs-wa-hidden{display:none!important}
.gvs-wa-chat.hidden,.gvs-wa-admin-chat.hidden,.gvs-wa-sticker-panel.hidden{display:none!important}

/* GVS+ WhatsApp composer — version locale fidèle au comportement WhatsApp */
.gvs-wa-composer{gap:7px;padding:8px 9px;align-items:flex-end}
.gvs-wa-composer textarea{min-height:44px;height:44px;max-height:240px;padding:11px 15px;border-radius:23px;font-size:15px;line-height:20px}
.gvs-wa-composer .gvs-wa-icon,.gvs-wa-composer .gvs-wa-send{width:42px;height:42px;min-width:42px;flex-basis:42px}
.gvs-wa-composer .gvs-wa-icon{font-size:22px}
.gvs-wa-composer .gvs-wa-mic{font-size:21px;touch-action:none;user-select:none;-webkit-user-select:none}
.gvs-wa-composer.has-text .gvs-wa-send{display:grid}




.gvs-wa-voice{min-width:245px;max-width:100%;padding:3px 0}
.gvs-wa-voice-progress{flex:1;min-width:110px}
@media(max-width:520px){
 .gvs-wa-composer{padding:7px 6px;gap:4px}
 .gvs-wa-composer .gvs-wa-icon,.gvs-wa-composer .gvs-wa-send{width:39px;height:39px;min-width:39px;flex-basis:39px}
 .gvs-wa-composer textarea{font-size:15px;padding:10px 13px;min-height:42px;height:42px}
}

/* GVS+ WhatsApp message actions */
.gvs-wa-msg{position:relative;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.gvs-wa-message-menu{position:fixed;z-index:99999;min-width:190px;max-width:260px;padding:6px;border-radius:14px;background:var(--gvs-wa-panel,#fff);box-shadow:0 8px 28px rgba(0,0,0,.28);border:1px solid rgba(0,0,0,.12);display:flex;flex-direction:column;gap:2px}
.gvs-wa-message-menu button{border:0;background:transparent;text-align:left;padding:11px 13px;border-radius:10px;font:600 14px/1.2 inherit;color:inherit;cursor:pointer}
.gvs-wa-message-menu button:hover,.gvs-wa-message-menu button:active{background:rgba(128,128,128,.14)}
.gvs-wa-action-toast{position:fixed;z-index:100000;left:50%;bottom:90px;transform:translateX(-50%);padding:9px 15px;border-radius:20px;background:rgba(20,20,20,.9);color:#fff;font:600 13px sans-serif;pointer-events:none}
.gvs-wa-edited{font-size:10px;opacity:.65;font-style:normal;margin-left:4px}


/* GVS+ — Emojis/stickers riches + sélection qui referme automatiquement le panneau. */
.gvs-wa-sticker-tabs{display:flex;gap:6px;margin-bottom:8px;border-bottom:1px solid rgba(0,0,0,.08);padding-bottom:7px}
.gvs-wa-sticker-tabs button{border:0;background:transparent;border-radius:9px;padding:7px 10px;font:700 12px/1 inherit;color:#667085;cursor:pointer}
.gvs-wa-sticker-tabs button.active{background:#eaf2ff;color:#1677ff}
.gvs-wa-sticker-grid{max-height:250px;overflow-y:auto;scrollbar-width:thin}
.gvs-wa-sticker-grid.hidden{display:none!important}
.gvs-wa-sticker-grid button{min-height:38px}
.gvs-wa-mic svg{width:22px;height:22px;display:block;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
body.dark .gvs-wa-sticker-tabs{border-bottom-color:#2a374c}
body.dark .gvs-wa-sticker-tabs button{color:#aebbd0}
body.dark .gvs-wa-sticker-tabs button.active{background:#1d3348;color:#76ff85}

/* Enregistrement vocal verrouillé par glissement vers le haut. */




.gvs-wa-chat-delete{margin-left:auto;border:0;background:transparent;color:inherit;font-size:18px;width:40px;height:40px;border-radius:10px;cursor:pointer;display:grid;place-items:center}.gvs-wa-chat-delete:hover{background:rgba(127,127,127,.16)}

/* V — Bloc messages agrandi : meilleure visibilité des longs textes et retours à la ligne */
#messagerie .msg-thread,
#gvsMsgChatThread,
#msgPeerThread,
.admin-msg-thread{
  width:100%!important;
  min-height:420px!important;
  max-height:72vh!important;
  box-sizing:border-box!important;
  padding:18px 12px!important;
}
#messagerie .msg-input-row,
#gvsMsgComposer,
#gvsUserDirectorComposer{
  width:100%!important;
  max-width:none!important;
  box-sizing:border-box!important;
}
#gvsMsgComposer #gvsMsgComposerInput,
#gvsUserDirectorComposer #gvsUserDirectorInput,
#messagerie .msg-input-row input,
#messagerie .msg-input-row textarea{
  width:100%!important;
  min-width:0!important;
  min-height:120px!important;
  max-height:320px!important;
  box-sizing:border-box!important;
  padding:14px 16px!important;
  line-height:1.5!important;
  white-space:pre-wrap!important;
  overflow-y:auto!important;
}
#messagerie .msg-bubble{
  max-width:min(90%,760px)!important;
  padding:12px 15px!important;
  line-height:1.5!important;
}
@media(max-width:600px){
  #messagerie .msg-thread,#gvsMsgChatThread,#msgPeerThread,.admin-msg-thread{
    min-height:380px!important;
    max-height:68vh!important;
    padding:14px 8px!important;
  }
  #gvsMsgComposer #gvsMsgComposerInput,
  #gvsUserDirectorComposer #gvsUserDirectorInput,
  #messagerie .msg-input-row input,
  #messagerie .msg-input-row textarea{
    min-height:110px!important;
    max-height:280px!important;
  }
  #messagerie .msg-bubble{max-width:94%!important;}
}

/* GVS+ — bloc de conversation agrandi : plus large et plus haut */
.gvs-wa-chat{width:min(100%,1100px);min-height:620px;}
.gvs-wa-chat-thread{padding:18px 20px 24px;gap:10px;}
.gvs-wa-msg{max-width:min(94%,900px);}
.gvs-wa-chat-delete{font-size:20px;}
@media(min-width:761px){.gvs-wa-admin-root{width:100%;}.gvs-wa-admin-layout{min-height:680px;}.gvs-wa-admin-chat .gvs-wa-chat-thread{min-height:0;}}
@media(max-width:760px){.gvs-wa-chat{width:100%;max-width:100%;min-height:540px;height:calc(100dvh - 135px)!important;}.gvs-wa-msg{max-width:95%;}}

/* V+ — messagerie : texte blanc gras, emojis/stickers sans fond, bloc encore agrandi */
.gvs-wa-msg .gvs-wa-text,
.gvs-wa-msg.in .gvs-wa-text,
.gvs-wa-msg.out .gvs-wa-text{
  color:#fff!important;
  font-weight:700!important;
}
.gvs-wa-sticker-grid button,
.gvs-wa-sticker-tabs button,
#gvsZip1Messenger .emoji-picker button,
.emoji-picker button{
  background:transparent!important;
  box-shadow:none!important;
}
.gvs-wa-sticker-grid button:hover,
.gvs-wa-sticker-tabs button:hover,
#gvsZip1Messenger .emoji-picker button:hover,
.emoji-picker button:hover{
  background:transparent!important;
}
.gvs-wa-chat{
  width:min(100%,1400px)!important;
  max-width:1400px!important;
  height:min(94vh,1100px)!important;
  min-height:760px!important;
}
.gvs-wa-chat-thread{
  width:100%!important;
  min-height:0!important;
  padding:24px 28px 30px!important;
  gap:12px!important;
  box-sizing:border-box!important;
}
.gvs-wa-msg{max-width:min(97%,1200px)!important;}
.gvs-wa-composer textarea{
  min-height:52px!important;
  max-height:360px!important;
  padding:13px 15px!important;
  font-weight:600!important;
}
.gvs-wa-sticker-panel{
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
@media(max-width:760px){
  .gvs-wa-chat{
    width:100%!important;
    max-width:100%!important;
    height:calc(100dvh - 90px)!important;
    min-height:680px!important;
    border-radius:10px!important;
  }
  .gvs-wa-chat-thread{padding:20px 14px 26px!important;}
  .gvs-wa-msg{max-width:98%!important;}
  .gvs-wa-composer textarea{max-height:340px!important;}
}

/* GVS+ — conversation encore plus large horizontalement */
#messagerie .gvs-wa-chat,
.gvs-wa-admin-chat.gvs-wa-chat{
  width:98vw!important;
  max-width:1800px!important;
  margin-left:auto!important;
  margin-right:auto!important;
}
.gvs-wa-chat-thread{
  width:100%!important;
}
@media(min-width:1200px){
  #messagerie .gvs-wa-chat,
  .gvs-wa-admin-chat.gvs-wa-chat{width:99vw!important;}
}
@media(max-width:760px){
  #messagerie .gvs-wa-chat,
  .gvs-wa-admin-chat.gvs-wa-chat{width:100%!important;max-width:100%!important;}
}


/* GVS+ — Emojis/stickers : aucun fond bleu dans le message */
.gvs-wa-msg.emoji-only .gvs-wa-text{
  background:transparent!important;
  box-shadow:none!important;
  padding:2px 0!important;
  border-radius:0!important;
  color:inherit!important;
  font-size:34px!important;
  line-height:1.18!important;
  font-weight:400!important;
}
.gvs-wa-sticker-grid button,
.gvs-wa-sticker-grid button:hover,
.gvs-wa-sticker-grid button:active{
  background:transparent!important;
  box-shadow:none!important;
  border:0!important;
}

/* GVS+ — barre vocale inspirée du composeur WhatsApp : verrouillage par glissement */











/* GVS+ voice player — WhatsApp-like layout */
.gvs-wa-voice{display:flex!important;align-items:center!important;gap:9px!important;min-width:245px!important;max-width:100%!important;padding:3px 0!important;background:transparent!important;color:inherit!important;}
.gvs-wa-voice-play{width:50px!important;height:50px!important;min-width:50px!important;border:0!important;border-radius:50%!important;background:transparent!important;color:currentColor!important;display:grid!important;place-items:center!important;cursor:pointer!important;font-size:22px!important;padding:0!important;}
.gvs-wa-voice-track{position:relative;flex:1;min-width:155px;height:45px;display:flex;flex-direction:column;justify-content:center;overflow:hidden;}
.gvs-wa-voice-wave{height:24px;display:flex;align-items:center;gap:2px;overflow:hidden;pointer-events:none;}
.gvs-wa-voice-wave i{display:block;width:2.5px;height:var(--h);min-height:3px;border-radius:3px;background:currentColor;opacity:.55;}
.gvs-wa-voice-progress{position:absolute!important;inset:0!important;width:100%!important;height:28px!important;margin:0!important;opacity:.001!important;cursor:pointer!important;z-index:2!important;}
.gvs-wa-voice-bottom{display:flex;justify-content:space-between;align-items:center;font-size:10px;line-height:12px;opacity:.7;}
.gvs-wa-voice-duration{font-size:10px!important;min-width:28px!important;color:inherit!important;}
.gvs-wa-voice-speed{font-size:10px;font-weight:800;cursor:pointer;padding:1px 4px;border-radius:8px;}
.gvs-wa-voice-speed:hover{background:rgba(127,127,127,.14);}
.gvs-wa-voice audio{display:none!important;}
.gvs-wa-msg.is-voice .gvs-wa-meta{margin-top:0!important;}
/* Clic sur la photo du Directeur général pour commencer une discussion */
#msgDirectorAvatar,
#gvsDirectorAvatar.gvs-director-avatar-clickable{cursor:pointer;transition:transform .16s ease,filter .16s ease,box-shadow .16s ease;}
#msgDirectorAvatar:hover,
#gvsDirectorAvatar.gvs-director-avatar-clickable:hover{transform:scale(1.035);filter:brightness(1.04);box-shadow:0 0 0 3px rgba(37,99,235,.22),0 8px 24px rgba(37,99,235,.18);}
#msgDirectorAvatar:focus-visible,
#gvsDirectorAvatar.gvs-director-avatar-clickable:focus-visible{outline:3px solid var(--blue-2,#2563eb);outline-offset:4px;}

/* GVS+ — fond blanc uniquement derrière le bloc de sélection emojis/stickers */
.gvs-wa-sticker-panel{
  background:#fff!important;
  border:1px solid rgba(0,0,0,.10)!important;
  box-shadow:0 14px 36px rgba(0,0,0,.14)!important;
}
.gvs-wa-sticker-grid,
#gvsZip1Messenger .emoji-picker,
.emoji-picker{
  background:#fff!important;
  border-radius:12px!important;
}
/* Les emojis/stickers eux-mêmes restent sans fond coloré */
.gvs-wa-sticker-grid button,
.gvs-wa-sticker-tabs button,
#gvsZip1Messenger .emoji-picker button,
.emoji-picker button{
  background:transparent!important;
}

/* GVS+ — mode sombre messagerie : commandes blanches + messages noirs */
body.dark .gvs-wa-composer .gvs-wa-icon,
body.dark .gvs-wa-composer .gvs-wa-mic,
body.dark .gvs-wa-composer .gvs-wa-attach,
body.dark .gvs-wa-composer .gvs-wa-emoji,
body.dark .gvs-wa-composer .gvs-wa-sticker,
body.dark .gvs-wa-composer .gvs-wa-send{
  color:#fff!important;
}
body.dark .gvs-wa-composer .gvs-wa-icon,
body.dark .gvs-wa-composer .gvs-wa-mic,
body.dark .gvs-wa-composer .gvs-wa-attach,
body.dark .gvs-wa-composer .gvs-wa-emoji,
body.dark .gvs-wa-composer .gvs-wa-sticker{
  background:transparent!important;
}
body.dark .gvs-wa-composer .gvs-wa-send{
  background:#fff!important;
  color:#000!important;
  box-shadow:0 3px 9px rgba(255,255,255,.18)!important;
}
body.dark .gvs-wa-composer .gvs-wa-icon:hover,
body.dark .gvs-wa-composer .gvs-wa-mic:hover,
body.dark .gvs-wa-composer .gvs-wa-attach:hover,
body.dark .gvs-wa-composer .gvs-wa-emoji:hover,
body.dark .gvs-wa-composer .gvs-wa-sticker:hover{
  background:rgba(255,255,255,.10)!important;
}
body.dark .gvs-wa-msg.emoji-only .gvs-wa-text{
  background:transparent!important;
}


/* V284 — Message d'invitation sous le profil du Directeur Général */
#msgTabPanel-message .gvs-director-start-hint{
  margin:16px 0 0!important;
  padding:10px 8px 12px;
  text-align:center;
  font-size:14px;
  line-height:20px;
  font-weight:800!important;
  color:#111827;
}
body.dark #msgTabPanel-message .gvs-director-start-hint,
.dark #msgTabPanel-message .gvs-director-start-hint{
  color:#fff!important;
}


/* Ajustement final demandé : espaces plus larges entre les icônes téléphone/alarme/caméra/torche/localisation. */
.android-status-bar .asb-left{gap:8px!important;}

/* Enregistrement vocal : rendu inspiré de WhatsApp (point rouge, durée, forme d'onde,
   verrouillage par glissement vers le haut). */








@keyframes gvsWaPulse{50%{opacity:.45}}


/* === Restrictions admin (micro / texte) + états bloqués côté utilisateur === */
.gvs-wa-admin-controls{display:flex;flex-direction:column;gap:10px;margin:0 0 12px;padding:14px;border:1px solid rgba(21,101,216,.2);border-radius:16px;background:rgba(21,101,216,.05)}
.gvs-wa-admin-controls.hidden{display:none}
.gvs-wa-admin-controls strong{font-size:15px}
.gvs-wa-admin-controls small{font-size:12px;color:#758095;line-height:1.4}
.gvs-wa-switch-row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:14px;font-weight:600;cursor:pointer}
.gvs-wa-switch{appearance:none;-webkit-appearance:none;flex:0 0 46px;width:46px;height:26px;border-radius:26px;background:#c5ccd6;position:relative;cursor:pointer;transition:background .18s ease;border:0;outline:0;margin:0}
.gvs-wa-switch::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .18s ease}
.gvs-wa-switch:checked{background:#d72525}
.gvs-wa-switch:checked::after{transform:translateX(20px)}
.gvs-wa-mic.gvs-wa-blocked{opacity:.4;position:relative}
.gvs-wa-mic.gvs-wa-blocked::after{content:"";position:absolute;left:20%;right:20%;top:50%;height:2px;background:#d72525;transform:rotate(-45deg);border-radius:2px}
.gvs-wa-composer .gvs-wa-mic{transition:transform .12s ease-out}
.gvs-wa-lock-indicator{position:absolute;display:flex;flex-direction:column;align-items:center;gap:2px;transform:translateX(-50%);background:#fff;border-radius:20px;padding:9px 7px 7px;box-shadow:0 4px 14px rgba(0,0,0,.18);z-index:6;opacity:0;pointer-events:none;transition:opacity .15s ease}
.gvs-wa-lock-indicator.visible{opacity:1}
.gvs-wa-lock-indicator .gvs-wa-lock-icon{font-size:16px;line-height:1;color:#8a96a3;transition:color .15s ease,transform .15s ease}
.gvs-wa-lock-indicator .gvs-wa-lock-chevron{font-size:11px;color:#8a96a3;animation:gvsWaChevronBounce 1.1s infinite}
.gvs-wa-lock-indicator.locked .gvs-wa-lock-icon{color:#16833b;transform:scale(1.2)}
.gvs-wa-lock-indicator.locked .gvs-wa-lock-chevron{display:none}
@keyframes gvsWaChevronBounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
body.dark .gvs-wa-lock-indicator{background:#182338;box-shadow:0 4px 14px rgba(0,0,0,.4)}
body.dark .gvs-wa-lock-indicator .gvs-wa-lock-icon,body.dark .gvs-wa-lock-indicator .gvs-wa-lock-chevron{color:#8fa0b8}
body.dark .gvs-wa-lock-indicator.locked .gvs-wa-lock-icon{color:#4fd97a}
.gvs-wa-composer textarea:disabled{opacity:.65;cursor:not-allowed}

/* Répondre en citant un message (notamment les vocaux) */
.gvs-wa-reply-preview{display:flex;align-items:center;gap:9px;padding:8px 12px;border-top:1px solid rgba(0,0,0,.08);background:#f0f2f5}
.gvs-wa-reply-preview.hidden{display:none!important}
.gvs-wa-reply-preview-bar{width:3px;align-self:stretch;border-radius:2px;background:#1688ff;flex:0 0 3px}
.gvs-wa-reply-preview-body{flex:1;min-width:0}
.gvs-wa-reply-preview-name{font-size:12px;font-weight:700;color:#1688ff;line-height:1.3}
.gvs-wa-reply-preview-text{font-size:13px;color:#555;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gvs-wa-reply-preview-close{flex:0 0 auto;border:0;background:transparent;font-size:19px;line-height:1;color:#667085;cursor:pointer;padding:4px 6px}
body.dark .gvs-wa-reply-preview{background:#101b2c;border-color:#2a374c}
body.dark .gvs-wa-reply-preview-text{color:#aebbd0}

.gvs-wa-quote{display:flex;gap:7px;margin-bottom:5px;padding:6px 9px;border-radius:9px;background:rgba(0,0,0,.06);cursor:pointer}
.gvs-wa-msg.out .gvs-wa-quote{background:rgba(255,255,255,.35)}
.gvs-wa-msg.is-voice .gvs-wa-quote{margin-bottom:4px}
.gvs-wa-quote-bar{width:3px;border-radius:2px;background:#1688ff;flex:0 0 3px}
.gvs-wa-quote-body{min-width:0;flex:1}
.gvs-wa-quote-name{font-size:11.5px;font-weight:700;color:#1688ff;line-height:1.3}
.gvs-wa-quote-text{font-size:12.5px;color:#3a3a3a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.dark .gvs-wa-quote{background:rgba(255,255,255,.08)}
body.dark .gvs-wa-quote-text{color:#dbe4f0}
.gvs-wa-msg.gvs-wa-flash{animation:gvsWaFlash .9s ease}
@keyframes gvsWaFlash{0%{filter:brightness(1)}25%{filter:brightness(1.35)}100%{filter:brightness(1)}}
body.dark .gvs-wa-admin-controls{background:rgba(117,255,140,.06);border-color:rgba(117,255,140,.2)}
body.dark .gvs-wa-admin-controls small{color:#a9b5c8}

/* GVS+ puzzle — aperçu permanent des 3 images finales */
.gvs-puzzle-final-images{margin:18px auto 6px;width:min(100%,720px);padding:12px;border:1px solid rgba(127,127,127,.25);border-radius:14px;background:rgba(127,127,127,.06);text-align:center;}
.gvs-puzzle-final-images>strong{display:block;margin-bottom:10px;font-weight:900;}
.gvs-puzzle-final-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.gvs-puzzle-final-gallery figure{margin:0;min-width:0;}
.gvs-puzzle-final-gallery img{display:block;width:100%;height:140px;object-fit:contain;border-radius:10px;border:2px solid rgba(127,127,127,.3);background:#fff;}
.gvs-puzzle-final-gallery figcaption{font-size:.8rem;font-weight:800;margin-top:5px;}
@media(max-width:520px){.gvs-puzzle-final-gallery{gap:6px}.gvs-puzzle-final-gallery img{height:110px;border-radius:8px}.gvs-puzzle-final-images{padding:9px}}

/* GVS+ — bloc de message utilisateur agrandi */
#gvsWaUserComposer{
  width:100%!important;
  padding:10px 12px!important;
  gap:8px!important;
}
#gvsWaUserComposer textarea{
  width:100%!important;
  min-height:64px!important;
  height:64px!important;
  max-height:420px!important;
  padding:14px 17px!important;
  border-radius:24px!important;
  font-size:16px!important;
  line-height:22px!important;
  box-sizing:border-box!important;
}
#gvsWaUserThread .gvs-wa-msg.out{
  max-width:99%!important;
  width:auto!important;
}
#gvsWaUserThread .gvs-wa-msg.out .gvs-wa-text{
  max-width:100%!important;
  padding:13px 17px!important;
  font-size:15px!important;
  line-height:1.5!important;
}
@media(max-width:760px){
  #gvsWaUserComposer{padding:9px 8px!important;gap:6px!important}
  #gvsWaUserComposer textarea{min-height:60px!important;height:60px!important;max-height:380px!important;padding:13px 15px!important}
  #gvsWaUserThread .gvs-wa-msg.out{max-width:99%!important}
}

/* GVS+ — Messagerie utilisateur : bloc bord à bord de la page */
#messagerie .gvs-wa-chat{
  width:100vw!important;
  max-width:none!important;
  margin-left:calc(50% - 50vw)!important;
  margin-right:calc(50% - 50vw)!important;
  border-left:0!important;
  border-right:0!important;
  border-radius:0!important;
}
#messagerie .gvs-wa-chat-thread{
  width:100%!important;
  box-sizing:border-box!important;
}
#messagerie .gvs-wa-composer{
  width:100%!important;
  box-sizing:border-box!important;
}
@media(max-width:760px){
  #messagerie .gvs-wa-chat{
    width:100vw!important;
    min-width:100vw!important;
    margin-left:calc(50% - 50vw)!important;
    margin-right:calc(50% - 50vw)!important;
    border-radius:0!important;
  }
}

/* V3 — Un seul bloc arrondi regroupant le champ de texte et la ligne d'icônes,
   façon carte de saisie (comme Claude / WhatsApp), au lieu de deux blocs séparés. */
.gvs-wa-composer,
#gvsWaUserComposer.gvs-wa-composer{
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch!important;
  gap:2px!important;
  background:#f0f2f5!important;
  border:1px solid rgba(0,0,0,.08)!important;
  border-radius:26px!important;
  padding:8px 12px 10px!important;
}
#gvsWaUserComposer.gvs-wa-composer{
  width:calc(100% - 16px)!important;
  max-width:none!important;
  box-sizing:border-box!important;
  margin:6px 8px!important;
}
body.dark .gvs-wa-composer,
body.dark #gvsWaUserComposer.gvs-wa-composer{
  background:#1b2738!important;
  border-color:#2a374c!important;
}
.gvs-wa-composer > textarea,
#gvsWaUserComposer.gvs-wa-composer textarea{
  order:1!important;
  flex:0 0 auto!important;
  width:100%!important;
  min-width:0!important;
  margin:0!important;
  background:transparent!important;
  border:0!important;
  outline:0!important;
  padding:6px 4px 8px!important;
  min-height:26px!important;
  max-height:220px!important;
  overflow-y:auto!important;
  border-radius:0!important;
}
body.dark .gvs-wa-composer > textarea,
body.dark #gvsWaUserComposer.gvs-wa-composer textarea{
  background:transparent!important;
  color:#fff!important;
}
.gvs-wa-composer-row2{
  order:2!important;
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  width:100%!important;
}
.gvs-wa-row2-spacer{flex:1 1 auto!important;}
.gvs-wa-composer-row2 .gvs-wa-icon{
  align-self:center!important;
  flex:0 0 auto!important;
  width:38px!important;
  height:38px!important;
  min-width:38px!important;
  margin:0!important;
  border-radius:50%!important;
  background:transparent!important;
}
.gvs-wa-composer-row2 .gvs-wa-mic,
.gvs-wa-composer-row2 .gvs-wa-send{
  align-self:center!important;
  flex:0 0 auto!important;
  width:50px!important;
  height:50px!important;
  min-width:50px!important;
  margin:0!important;
  border-radius:50%!important;
  font-size:20px!important;
}
.gvs-wa-composer-row2 .gvs-wa-mic{
  background:#fff!important;
  color:#111!important;
  box-shadow:0 3px 10px rgba(0,0,0,.18)!important;
}
.gvs-wa-composer-row2 .gvs-wa-send{
  background:#1688ff!important;
  color:#fff!important;
  box-shadow:0 3px 10px rgba(22,136,255,.28)!important;
}
body.dark .gvs-wa-composer-row2 .gvs-wa-icon{color:#fff!important;}
body.dark .gvs-wa-composer-row2 .gvs-wa-icon:hover{background:#203047!important;}
/* Un seul et même emplacement pour micro / avion papier, comme sur WhatsApp :
   le micro s'affiche tant que le champ est vide, l'avion papier le remplace dès qu'on écrit
   OU dès que le vocal est verrouillé (glissé vers le haut) — exactement comme WhatsApp. */
#gvsWaUserComposer:not(.has-text):not(.voice-locked) .gvs-wa-mic{display:grid!important;visibility:visible!important;opacity:1!important;}
#gvsWaUserComposer.has-text .gvs-wa-mic{display:none!important;}
#gvsWaUserComposer.has-text .gvs-wa-send,
#gvsWaUserComposer.voice-locked .gvs-wa-send{display:grid!important;visibility:visible!important;opacity:1!important;}
#gvsWaUserComposer:not(.has-text):not(.voice-locked) .gvs-wa-send{display:none!important;}
@media(max-width:600px){
  #gvsWaUserComposer.gvs-wa-composer{padding:6px 8px!important;}
  #gvsWaUserComposer textarea{min-height:24px!important;padding:5px 4px 7px!important;}
  .gvs-wa-composer-row2 .gvs-wa-icon{width:36px!important;height:36px!important;min-width:36px!important;}
  .gvs-wa-composer-row2 .gvs-wa-mic,
  .gvs-wa-composer-row2 .gvs-wa-send{width:46px!important;height:46px!important;min-width:46px!important;}
}

/* GVS+ WhatsApp voice gesture — glissement visible */





.gvs-wa-composer .gvs-wa-icon[id$="Attach"]{font-size:28px;font-weight:500}



/* GVS+ — l’icône reste à sa place d’origine dans le bandeau des applications */
.gvs-quick-apps-bar .gvs-fixed-app.gvs-qa-gvsplus{
  transform:none!important;
}
.gvs-quick-apps-bar .gvs-fixed-app.gvs-qa-gvsplus:active{
  transform:scale(.92)!important;
}


/* Correction : déplacer uniquement le NOM « GVS+ » vers la gauche.
   L’icône GVS+ du bandeau des applications reste à sa position d’origine. */
#gvsMiniBrandBar .gvs-mini-brand-name{
  transform:translateX(-8px)!important;
}

/* GVS+ v3.3 — icône GVS+ du bandeau Facebook/TikTok/Messenger : cercle PARFAIT (largeur = hauteur), en mode clair et sombre.
   Cause du défaut : le conteneur mesurait 33×27 px avec border-radius:50 %, ce qui donnait un ovale gonflé de gauche à droite ;
   en mode sombre, un fond blanc était en plus appliqué sur cet ovale. Le disque blanc + l'anneau fin sont maintenant
   dessinés dans l'image elle-même (icons/icon-gvsplus-round.png) et le conteneur est un carré parfait. */
#gvsQuickAppsBar .gvs-fixed-app.gvs-qa-gvsplus{
  --gvs-round-size:32px;
  flex:0 0 var(--gvs-round-size)!important;
  width:var(--gvs-round-size)!important;
  height:var(--gvs-round-size)!important;
  min-width:var(--gvs-round-size)!important;
  min-height:var(--gvs-round-size)!important;
  max-width:var(--gvs-round-size)!important;
  max-height:var(--gvs-round-size)!important;
  aspect-ratio:1/1!important;
  box-sizing:border-box!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:50%!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:hidden!important;
}
#gvsQuickAppsBar .gvs-fixed-app.gvs-qa-gvsplus img{
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  aspect-ratio:1/1!important;
  display:block!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  border-radius:50%!important;
  background:transparent!important;
  box-shadow:none!important;
  filter:none!important;
  object-fit:contain!important;
}
body.dark #gvsQuickAppsBar .gvs-fixed-app.gvs-qa-gvsplus{background:transparent!important;border-radius:50%!important;}
@media(max-width:400px){#gvsQuickAppsBar .gvs-fixed-app.gvs-qa-gvsplus{--gvs-round-size:28px;}}
@media(max-width:340px){#gvsQuickAppsBar .gvs-fixed-app.gvs-qa-gvsplus{--gvs-round-size:24px;}}


/* V371 — Administration : bandeau du Directeur centré (photo au-dessus du nom), sans statut « Hors ligne »,
   bouton « Se déconnecter » rouge électrique en mode clair et sombre. */
#adminHeaderCard #adminHeaderDirectorHead{
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  text-align:center!important;
  gap:10px!important;
  padding:6px 0 14px!important;
}
#adminHeaderCard #adminHeaderDirectorHead .gvs-msg-avatar{
  width:88px!important;height:88px!important;min-width:88px!important;
  margin:0 auto!important;
}
#adminHeaderCard #adminHeaderDirectorHead .gvs-msg-avatar:empty{display:none!important}
#adminHeaderCard #adminHeaderDirectorInfo{align-items:center!important;text-align:center!important;width:100%}
#adminHeaderCard #adminHeaderDirectorName{text-align:center!important;width:100%;font-size:16px}
#adminHeaderCard .btn.logout-light,
body.dark #adminHeaderCard .btn.logout-light{
  background:linear-gradient(180deg,#FF4040,#FF0000)!important;
  color:#fff!important;
  border:1px solid rgba(255,255,255,.45)!important;
  box-shadow:0 3px 14px rgba(255,0,0,.45),inset 0 1px 0 rgba(255,255,255,.35)!important;
}

/* V372 — Plus de nom dans le bandeau admin : sans photo, le bloc directeur disparaît. */
#adminHeaderCard #adminHeaderDirectorHead:has(.gvs-msg-avatar:empty){display:none!important}
#adminHeaderCard #adminHeaderDirectorHead .gvs-msg-avatar{cursor:pointer}

/* V373 — Accès administrateur : « Mot de passe oublié » identique à celui de l'Espace Client. */
#adminForgotRow{ text-align:center !important; margin-top:14px !important; }
#adminForgotRow .link-btn{
 display:inline-flex !important; align-items:center !important; justify-content:center !important;
 min-height:42px !important; padding:9px clamp(8px, 3vw, 18px) !important; border-radius:12px !important;
 border:1px solid #0066FF !important; background:rgba(0,102,255,.10) !important;
 color:#0066FF !important; font-weight:800 !important; text-decoration:none !important;
 box-shadow:0 0 10px rgba(0,102,255,.20) !important;
 white-space:nowrap !important;
 font-size:clamp(11.5px, 3.6vw, 14px) !important;
}
body.dark #adminForgotRow .link-btn{
 border-color:#86EFAC !important; background:rgba(134,239,172,.10) !important; color:#86EFAC !important;
 box-shadow:0 0 10px rgba(134,239,172,.18) !important;
}

/* V374 — Boutons « Se déconnecter » : rouge électrique en mode clair ET sombre. */
#clientProfilePanel .btn.logout-light,
#adminHeaderCard .btn.logout-light,
body.dark #clientProfilePanel .btn.logout-light,
body.dark #adminHeaderCard .btn.logout-light{
  background:linear-gradient(180deg,#FF4040,#FF0000)!important;
  color:#fff!important;
  border:1px solid rgba(255,255,255,.45)!important;
  box-shadow:0 3px 16px rgba(255,0,0,.52),inset 0 1px 0 rgba(255,255,255,.38)!important;
}
#clientProfilePanel .btn.logout-light:hover,
#adminHeaderCard .btn.logout-light:hover{
  background:linear-gradient(180deg,#FF5A5A,#FF0000)!important;
}


/* V375 — Espace Client : les boutons Power verts de connexion/inscription restent toujours visibles et cliquables. */
#auth .gvs-connect-image-btn,
#auth .gvs-connect-image-btn img{
  position:relative!important;
  z-index:10010!important;
  visibility:visible!important;
  opacity:1!important;
  pointer-events:auto!important;
}
#auth .gvs-connect-image-btn{
  isolation:isolate!important;
  min-height:82px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:visible!important;
  transform:none!important;
}
#auth .gvs-connect-image-btn img{
  flex:0 0 auto!important;
  visibility:visible!important;
  opacity:1!important;
  display:block!important;
  position:relative!important;
  z-index:10011!important;
}
/* Le Power vert de l'Espace Client reste au-dessus des overlays et ne disparaît
   pas lorsque le contenu de l'écran d'authentification défile. */
#auth #loginBtn,
#auth #signupBtn{
  position:sticky!important;
  bottom:10px!important;
  z-index:10012!important;
  isolation:isolate!important;
  background:transparent!important;
}
#auth #loginBtn::before,
#auth #signupBtn::before{
  content:"";
  position:absolute!important;
  inset:0!important;
  z-index:-1!important;
  border-radius:18px!important;
  pointer-events:none!important;
}
#appHeader .auth-topbar{
  position:sticky!important;
  top:0!important;
  z-index:10020!important;
}

/* Espace Rubriques : « Espace Rubriques », « Actualités » et le carrousel des actualités
   forment un bloc FIXE, collé juste sous la barre des réseaux (Facebook, TikTok…).
   Les carreaux de navigation défilent en arrière-plan, sous ce bloc. */
html.gvs-home-hdr-ready body:has(#home.active) main.wrap{
  padding-top:var(--gvs-home-header-h,0px)!important;
}
.gvs-home-fixed-titles{
  position:sticky;top:var(--gvs-home-header-h,0px);z-index:30;
  margin:0;padding:0;background:var(--paper,#fff);isolation:isolate;
}
body.dark .gvs-home-fixed-titles{background:var(--paper,#0b1020)}
.gvs-home-fixed-titles .anip-tiles-title{
  position:static;top:auto;margin:0;padding:1px 0 0;background:transparent;
}
.gvs-home-fixed-titles .anip-tiles-title h2{font-size:16px;line-height:1.15;margin:0}
.gvs-home-fixed-titles .gvs-news-title{
  justify-content:flex-start;text-align:left;margin:0;padding:1px 4px 3px;
}
.gvs-home-fixed-titles .gvs-news-title h2{font-size:15px;line-height:1.15;margin:0;text-align:left;width:auto}
.gvs-home-fixed-titles:has(#newsSection.hidden) .gvs-news-title{display:none}
#home #newsSection:not(.hidden){display:block}
#home #newsSection{position:static;top:auto;margin:0;padding:0 0 6px;box-shadow:0 5px 8px -4px rgba(0,0,0,.14)}
/* Titre « Pages de navigation » : à gauche, juste au-dessus des carreaux (qui défilent) */
.gvs-nav-pages-title{
  justify-content:flex-start;text-align:left;margin:6px 0 2px;padding:0 4px;
}
.gvs-nav-pages-title h2{font-size:15px;margin:0;text-align:left;width:auto}
#home.home-sessions-mode .gvs-nav-pages-title{display:none}

/* Horloge circulaire rapprochée du bandeau GVS+ bleu, sans jamais rentrer
   dans le bandeau Wi-Fi/batterie au-dessus, sur l'Accueil. */
#gvsRoundClockWrap.gvs-round-clock-wrap{margin-top:0!important;padding-top:6px!important}

/* V492 — CÉLÉBRATION AU PREMIER PLAN : elle sort de #home pendant l'animation
   pour ne jamais rester derrière l'horloge circulaire ou les bandeaux. */
body > .gvs-signup-celebration{
  position:fixed!important;
  inset:0!important;
  width:100vw!important;
  height:100vh!important;
  min-width:100vw!important;
  min-height:100dvh!important;
  z-index:2147483647!important;
  overflow:hidden!important;
  pointer-events:none!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  isolation:isolate!important;
  background:rgba(255,255,255,.08)!important;
}
body.dark > .gvs-signup-celebration{background:rgba(0,0,0,.08)!important;}
body > .gvs-signup-celebration .gvs-clock-celebration-origin{z-index:2147483647!important;}
body > .gvs-signup-celebration .gvs-celebrate-spark,
body > .gvs-signup-celebration .gvs-celebrate-heart{z-index:2147483647!important;}
body > .gvs-signup-celebration .gvs-signup-message{z-index:2147483647!important;}

/* V493 — message « Content de vous revoir » : sans fond blanc, centré en haut
   entre GVS+ et le bouton Power, juste au-dessus de l'horloge. */
.gvs-signup-celebration .gvs-signup-message{
  position:fixed!important;
  left:50%!important;
  top:auto;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  padding:0!important;
  border-radius:0!important;
  color:transparent!important;
  -webkit-text-fill-color:transparent!important;
  background-image:linear-gradient(90deg,#ff0000,#ff9d00,#e8ff00,#00d639,#00d9ff,#5b2cff,#ff00b8,#ff0000)!important;
  background-size:300% 100%!important;
  -webkit-background-clip:text!important;
  background-clip:text!important;
  white-space:nowrap!important;
  text-align:center!important;
  line-height:1.15!important;
  font-weight:900!important;
  pointer-events:none!important;
}

/* V500 — Correction : en plein écran (application installée), le bandeau
   Wi-Fi/batterie (.android-status-bar) se retrouvait remonté hors de l'écran
   par les nombreux ajustements successifs (translateY/marges négatives
   cumulés), ce qui le coupait ainsi que le bandeau GVS+ juste en dessous.
   On repart d'un réglage propre, sans décalage négatif : juste l'espace de
   sécurité pour l'encoche/caméra éventuelle. */
@media (display-mode: fullscreen){
  .android-status-bar{
    transform:none!important;
    margin-top:0!important;
    margin-bottom:0!important;
    padding-top:max(0px, calc(env(safe-area-inset-top, 0px) - 8px))!important;
    padding-bottom:2px!important;
    min-height:34px!important;
  }
}
body.fullscreen .android-status-bar,
body.is-fullscreen .android-status-bar{
  transform:none!important;
  margin-top:0!important;
  margin-bottom:0!important;
  padding-top:max(0px, calc(env(safe-area-inset-top, 0px) - 8px))!important;
  padding-bottom:2px!important;
  min-height:34px!important;
}

/* V501 — plein écran (app installée) : bandeau Wi-Fi/batterie/icônes remonté encore un peu.
   On réduit uniquement l'espace de sécurité au-dessus des icônes (pas de translateY :
   #appHeader est en « contain: paint » et couperait le bandeau). Réglage : --gvs-asb-lift
   (12px = remonte d'environ 12px de plus ; augmenter pour monter davantage, réduire pour descendre). */
:root{--gvs-asb-lift:12px;}
@media (display-mode: fullscreen){
  .android-status-bar{
    padding-top:max(0px, calc(env(safe-area-inset-top, 0px) - 8px - var(--gvs-asb-lift)))!important;
  }
}
body.fullscreen .android-status-bar,
body.is-fullscreen .android-status-bar{
  padding-top:max(0px, calc(env(safe-area-inset-top, 0px) - 8px - var(--gvs-asb-lift)))!important;
}

/* V502 — pages hors Accueil (Formations, Inscription, Messagerie…) : le bandeau GVS+ bleu est masqué,
   donc l'horloge circulaire ne doit plus remonter de 8px (marge négative prévue pour l'Accueil)
   sinon elle rentre dans le bandeau Wi-Fi/icônes. On lui laisse un petit espace sous le bandeau. */
body:not(:has(#home.active)) #gvsRoundClockWrap.gvs-round-clock-wrap{
  margin-top:0!important;
  padding-top:6px!important;
}

/* V504 — Espace Client / Créer un compte : le Power vert reste FIXE à sa place.
   1) plus de position « sticky » (il glissait au défilement et à l'ouverture du clavier) ;
   2) la place du message d'erreur est toujours réservée (le bouton ne descend plus quand une erreur s'affiche) ;
   3) plus d'effet d'agrandissement au toucher ; 4) l'image reste en place pendant la connexion. */
#auth #loginBtn,
#auth #signupBtn{
  position:relative!important;
  bottom:auto!important;
  top:auto!important;
  transform:none!important;
}
#auth #loginErr,
#auth #signupErr{
  min-height:36px!important;
  line-height:1.35!important;
  margin-top:6px!important;
}
#auth .gvs-connect-image-btn:hover img,
#auth .gvs-connect-image-btn:active img{
  transform:none!important;
}
#auth .gvs-connect-image-btn.gvs-power-busy img{opacity:.55!important;}

/* V-admin-messages-2026-09-21 — dates/heures, suppression rouge et fermeture d'installation */
.admin-messages-subtitle{margin:6px 0 12px;line-height:1.45}
.admin-msg-datetime{font-size:11px;font-weight:800;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-msg-action.admin-msg-delete,
.admin-msg-action.admin-msg-delete:hover{
  background:linear-gradient(180deg,#ff4d5e,#dc1f32)!important;
  color:#fff!important;
  border-color:rgba(255,255,255,.5)!important;
  box-shadow:0 0 10px 2px rgba(220,31,50,.55),0 3px 10px rgba(220,31,50,.35)!important;
}
.msg-delete{
  color:#dc1f32!important;
  font-weight:950!important;
  font-size:1.02em!important;
  text-shadow:0 0 6px rgba(220,31,50,.45);
}
.msg-delete:hover{transform:scale(1.12)!important}
body.dark .msg-delete{color:#ff5364!important;text-shadow:0 0 8px rgba(255,83,100,.65)}
.installbar-close{
  width:38px!important;height:38px!important;
  min-width:38px!important;
  font-size:26px!important;
  font-weight:950!important;
  color:#d7192c!important;
  text-shadow:0 0 7px rgba(215,25,44,.55);
}
.installbar-close svg{width:22px!important;height:22px!important;stroke-width:3.2!important}

/* GVS+ — onglets/carres désactivés : invisibles pour les utilisateurs */
.gvs-tab-disabled-hidden{display:none!important}

/* GVS+ — Badge Actualités : rouge lumineux, texte blanc dans tous les modes */
.gvs-section-notif-badge:not(.hidden){
  background:#ff1f1f !important;
  color:#fff !important;
  -webkit-text-fill-color:#fff !important;
  border:1px solid rgba(255,255,255,.72) !important;
  text-shadow:0 0 3px rgba(255,255,255,.9) !important;
  box-shadow:
    0 0 5px rgba(255,31,31,.95),
    0 0 12px rgba(255,31,31,.78),
    0 0 22px rgba(255,31,31,.52) !important;
  filter:none !important;
  opacity:1 !important;
}
.gvs-section-notif-badge:not(.hidden),
.gvs-section-notif-badge:not(.hidden) *{
  color:#fff !important;
  -webkit-text-fill-color:#fff !important;
}


/* ---- Page bloquée par l'administrateur : texte rouge sur fond blanc (clair ET sombre) ---- */
.toast.toast-blocked,
body.dark .toast.toast-blocked{
  background:#fff !important;
  background-image:none !important;
  color:#E11D2E !important;
  border:1.5px solid #E11D2E;
  font-weight:800;
  text-align:center;
  white-space:normal;
  width:max-content;
  max-width:88vw;
  box-shadow:0 6px 22px rgba(0,0,0,.28);
}
.tab-blocked-user{cursor:pointer}


/* v3.0.5 — La phrase traverse réellement toute la hauteur de l'écran.
   Position fixe au centre + déplacement vertical via transform uniquement,
   pour éviter les conflits de positionnement avec les conteneurs de la page. */
body > .gvs-signup-celebration .gvs-signup-message.gvs-message-scatter{
  display:block!important;
  position:fixed!important;
  left:50%!important;
  top:50%!important;
  z-index:2147483647!important;
  pointer-events:none!important;
  overflow:visible!important;
  white-space:nowrap!important;
  width:max-content!important;
  max-width:calc(100vw - 24px)!important;
  text-align:center!important;
  padding:0!important;
  margin:0!important;
  transform:translate(-50%,-120vh)!important;
  animation:gvsMessageTopToBottomVisible 60s linear forwards!important;
  will-change:transform,opacity;
  background-image:linear-gradient(90deg,#ff0000,#ff9d00,#e8ff00,#00d639,#00d9ff,#5b2cff,#ff00b8,#ff0000)!important;
  background-size:300% 100%!important;
  -webkit-background-clip:text!important;
  background-clip:text!important;
  color:transparent!important;
  -webkit-text-fill-color:transparent!important;
}
@keyframes gvsMessageTopToBottomVisible{
  0%{transform:translate(-50%,-120vh)!important;opacity:0;}
  5%{transform:translate(-50%,-100vh)!important;opacity:1;}
  50%{transform:translate(-50%,0)!important;opacity:1;}
  95%{transform:translate(-50%,100vh)!important;opacity:1;}
  100%{transform:translate(-50%,120vh)!important;opacity:0;}
}


/* v3.0.5 — Défilement vertical réel de la phrase de célébration.
   La phrase reste un seul bloc et traverse progressivement l'écran du haut vers le bas
   pendant 60 secondes. L'animation agit directement sur TRANSFORM et prend la priorité
   sur les anciens positionnements. */
body > .gvs-signup-celebration .gvs-signup-message.gvs-message-scatter{
  position:fixed!important;
  left:50%!important;
  top:50%!important;
  bottom:auto!important;
  margin:0!important;
  transform:translate3d(-50%,-120vh,0)!important;
  animation:gvsMessageVerticalReal 60s linear forwards!important;
  z-index:2147483647!important;
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  pointer-events:none!important;
  will-change:transform,opacity!important;
}
@keyframes gvsMessageVerticalReal{
  0%{
    transform:translate3d(-50%,-120vh,0)!important;
    opacity:0!important;
  }
  4%{
    transform:translate3d(-50%,-90vh,0)!important;
    opacity:1!important;
  }
  25%{
    transform:translate3d(-50%,-45vh,0)!important;
    opacity:1!important;
  }
  50%{
    transform:translate3d(-50%,0,0)!important;
    opacity:1!important;
  }
  75%{
    transform:translate3d(-50%,45vh,0)!important;
    opacity:1!important;
  }
  96%{
    transform:translate3d(-50%,90vh,0)!important;
    opacity:1!important;
  }
  100%{
    transform:translate3d(-50%,120vh,0)!important;
    opacity:0!important;
  }
}

/* v3.0.6 — La phrase de célébration est animée par app.js en temps réel.
   Ces règles désactivent toute ancienne animation CSS susceptible de bloquer
   son déplacement et garantissent un positionnement fixe visible. */
body > .gvs-signup-celebration .gvs-signup-message.gvs-message-scatter{
  position:fixed!important;
  left:50%!important;
  top:0!important;
  bottom:auto!important;
  transform:translateX(-50%)!important;
  animation:none!important;
  transition:none!important;
  visibility:visible!important;
  opacity:1!important;
  z-index:2147483647!important;
  pointer-events:none!important;
  display:block!important;
}

/* GVS+ — alignement explicite façon WhatsApp/Facebook
   Vue utilisateur : ses messages à DROITE, réponses du Directeur à GAUCHE.
   Vue administration : messages reçus des utilisateurs à GAUCHE, réponses de l'administrateur à DROITE. */
.gvs-wa-chat-thread.gvs-wa-user-view .gvs-wa-msg.out{align-self:flex-end!important;align-items:flex-end!important;}
.gvs-wa-chat-thread.gvs-wa-user-view .gvs-wa-msg.in{align-self:flex-start!important;align-items:flex-start!important;}
.gvs-wa-chat-thread.gvs-wa-admin-view .gvs-wa-msg.in{align-self:flex-start!important;align-items:flex-start!important;}
.gvs-wa-chat-thread.gvs-wa-admin-view .gvs-wa-msg.out{align-self:flex-end!important;align-items:flex-end!important;}

/* GVS+ — disposition messagerie : reçu à gauche, envoyé à droite,
   identique dans l'espace utilisateur et l'espace administrateur. */
.gvs-wa-chat-thread .gvs-wa-msg.in,
.gvs-wa-chat-thread .gvs-wa-msg[data-wa-direction="received"]{
  align-self:flex-start!important;
  align-items:flex-start!important;
  margin-left:0!important;
  margin-right:auto!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.out,
.gvs-wa-chat-thread .gvs-wa-msg[data-wa-direction="sent"]{
  align-self:flex-end!important;
  align-items:flex-end!important;
  margin-left:auto!important;
  margin-right:0!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.in .gvs-wa-meta{justify-content:flex-start!important;}
.gvs-wa-chat-thread .gvs-wa-msg.out .gvs-wa-meta{justify-content:flex-end!important;}

/* Première ouverture / conversation vide : bloc compact. Quand des messages
   existent, la zone de conversation reprend toute la hauteur disponible,
   comme une conversation qui s'agrandit progressivement. */
.gvs-wa-chat.is-empty{
  height:auto!important;
  min-height:0!important;
}
.gvs-wa-chat.is-empty .gvs-wa-chat-thread{
  flex:0 0 auto!important;
  height:auto!important;
  min-height:72px!important;
  max-height:120px!important;
  padding:8px 12px!important;
}
.gvs-wa-chat.is-empty .gvs-wa-empty{
  margin:0 auto!important;
  padding:10px 12px!important;
}
.gvs-wa-chat.has-messages .gvs-wa-chat-thread{
  flex:1 1 auto!important;
  min-height:180px!important;
}

@media(max-width:760px){
  .gvs-wa-chat.is-empty .gvs-wa-chat-thread{
    min-height:64px!important;
    max-height:104px!important;
    padding:6px 10px!important;
  }
  .gvs-wa-chat.has-messages .gvs-wa-chat-thread{min-height:220px!important;}
}





/* GVS+ — ALIGNEMENT DEMANDÉ PAR L'UTILISATEUR
   Message envoyé par la personne connectée -> GAUCHE
   Message reçu de l'autre personne -> DROITE
   S'applique aux conversations utilisateur et administration. */
.msg-bubble.msg-out,
.messenger-chat-thread .msg-bubble.msg-out,
#gvsZip1Messenger .msg-row.out {
  align-self: flex-start !important;
  margin-left: 0 !important;
  margin-right: auto !important;
  justify-self: start !important;
}

.msg-bubble.msg-in,
.messenger-chat-thread .msg-bubble.msg-in,
#gvsZip1Messenger .msg-row.in {
  align-self: flex-end !important;
  margin-left: auto !important;
  margin-right: 0 !important;
  justify-self: end !important;
}

/* Les variantes textuelles utilisées par certains anciens blocs. */
.message-sent, .sent, .outgoing, .message-outgoing,
.message-envoye, .envoye, .message-sortant {
  margin-left: 0 !important;
  margin-right: auto !important;
  align-self: flex-start !important;
  justify-self: start !important;
  justify-content: flex-start !important;
}
.message-received, .received, .incoming, .message-incoming,
.message-recu, .recu, .message-entrant {
  margin-left: auto !important;
  margin-right: 0 !important;
  align-self: flex-end !important;
  justify-self: end !important;
  justify-content: flex-end !important;
}


/* V486 — finition Messagerie */
#msgTabPanel-message .gvs-user-director-head .gvs-msg-avatar{position:relative!important;overflow:visible!important;cursor:pointer!important;}
#msgTabPanel-message .gvs-profile-hand-director{
  position:absolute!important;
  right:-24px!important;
  bottom:-18px!important;
  z-index:30!important;
  width:34px!important;height:34px!important;
  font-size:30px!important;line-height:1!important;
  pointer-events:none!important;
  transform-origin:50% 80%!important;
  animation:gvsHandPoint486 1.05s ease-in-out infinite!important;
  filter:drop-shadow(0 1px 2px rgba(0,0,0,.28))!important;
}
@keyframes gvsHandPoint486{
  0%,100%{transform:translate(0,0) rotate(-10deg);opacity:.45}
  45%{transform:translate(-4px,-7px) rotate(-2deg);opacity:1}
  70%{transform:translate(0,-3px) rotate(-7deg);opacity:.8}
}
#msgTabPanel-message .gvs-profile-click-prompt{
  margin-top:6px!important;
  font-size:13px!important;
  line-height:18px!important;
  font-weight:800!important;
  text-align:center!important;
  opacity:.82!important;
}
#msgTabPanel-message .gvs-director-name{margin-top:10px!important;}
#msgTabPanel-message .gvs-user-director-thread.gvs-empty-thread{
  min-height:42px!important;
  height:42px!important;
  max-height:64px!important;
  padding:4px 6px!important;
  overflow:hidden!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}
#msgTabPanel-message .gvs-user-director-thread.gvs-empty-thread .gvs-msg-empty{
  margin:0!important;padding:3px 6px!important;font-size:11px!important;line-height:15px!important;
}
#msgTabPanel-message .gvs-user-director-thread.gvs-has-messages-thread{
  min-height:150px!important;
  max-height:46vh!important;
  height:auto!important;
  padding:14px 4px!important;
  overflow:auto!important;
}
#msgTabPanel-message .gvs-visible-voice{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  min-width:190px!important;
  max-width:100%!important;
  padding:4px 2px!important;
}
#msgTabPanel-message .gvs-visible-voice-play{
  width:34px!important;height:34px!important;min-width:34px!important;
  border:0!important;border-radius:50%!important;
  display:grid!important;place-items:center!important;
  cursor:pointer!important;font-size:14px!important;
  background:#16815f!important;color:#fff!important;
}
#msgTabPanel-message .gvs-visible-voice-label{font-weight:800!important;white-space:nowrap!important;}
#msgTabPanel-message .gvs-visible-voice .voice-msg-dur{font-weight:700!important;white-space:nowrap!important;}
#msgTabPanel-message .gvs-visible-voice audio{display:none!important;width:0!important;height:0!important;}
body.dark #msgTabPanel-message .gvs-profile-click-prompt{color:#f8fafc!important;}
body.dark #msgTabPanel-message .gvs-visible-voice-play{background:#2fd583!important;color:#08110c!important;}

/* v489 — Zone des messages vide : très compacte, comme une zone de conversation vide.
   Dès qu'un message existe, la zone reprend l'espace disponible. */
.gvs-wa-chat.is-empty .gvs-wa-chat-thread,
.gvs-wa-admin-chat.is-empty .gvs-wa-chat-thread{
  flex:0 0 42px!important;
  height:42px!important;
  min-height:42px!important;
  max-height:42px!important;
  padding:2px 10px!important;
  overflow:hidden!important;
  gap:0!important;
}
.gvs-wa-chat.is-empty .gvs-wa-chat-thread:empty,
.gvs-wa-admin-chat.is-empty .gvs-wa-chat-thread:empty{
  min-height:42px!important;
}
@media(max-width:760px){
  .gvs-wa-chat.is-empty .gvs-wa-chat-thread,
  .gvs-wa-admin-chat.is-empty .gvs-wa-chat-thread{
    flex-basis:36px!important;
    height:36px!important;
    min-height:36px!important;
    max-height:36px!important;
    padding:1px 8px!important;
  }
}


/* V490 — zone vide ultra-compacte + vocaux toujours visibles */
#msgTabPanel-message .gvs-user-director-thread.gvs-empty-thread{
  min-height:18px!important;
  height:18px!important;
  max-height:18px!important;
  padding:0!important;
  margin:0!important;
  overflow:hidden!important;
  display:block!important;
}
#msgTabPanel-message .gvs-user-director-thread.gvs-empty-thread .gvs-msg-empty{display:none!important;}
#msgTabPanel-message .gvs-user-director-thread.gvs-has-messages-thread{
  min-height:150px!important;height:auto!important;max-height:46vh!important;padding:12px 4px!important;overflow:auto!important;
}
#msgTabPanel-message .voice-msg.gvs-visible-voice,
.gvs-visible-voice{
  display:flex!important;align-items:center!important;gap:10px!important;min-width:220px!important;max-width:100%!important;padding:4px 2px!important;box-sizing:border-box!important;
}
#msgTabPanel-message .gvs-visible-voice-play,
.gvs-visible-voice-play{
  width:48px!important;height:48px!important;min-width:48px!important;border:0!important;border-radius:50%!important;display:grid!important;place-items:center!important;cursor:pointer!important;font-size:20px!important;font-weight:900!important;line-height:1!important;background:#16815f!important;color:#fff!important;box-shadow:0 2px 7px rgba(0,0,0,.16)!important;padding:0!important;
}
.gvs-visible-voice-main{min-width:0!important;flex:1 1 auto!important;display:flex!important;flex-direction:column!important;gap:4px!important;}
.gvs-visible-voice-title{font-size:12px!important;font-weight:800!important;white-space:nowrap!important;}
.gvs-visible-voice-wave{height:20px!important;display:flex!important;align-items:center!important;gap:2px!important;overflow:hidden!important;}
.gvs-visible-voice-wave i{display:block!important;width:2.5px!important;height:var(--vh)!important;min-height:3px!important;background:currentColor!important;opacity:.58!important;border-radius:3px!important;}
.gvs-visible-voice-meta{display:flex!important;align-items:center!important;justify-content:space-between!important;font-size:10px!important;opacity:.76!important;}
.gvs-visible-voice audio{display:none!important;width:0!important;height:0!important;}
body.dark .gvs-visible-voice-play{background:#2fd583!important;color:#08110c!important;}
#gvsUserDirectorMic,#gvsMsgVoiceBtn{touch-action:none!important;}

/* V491 — rendu vocal visible utilisateur + administration */
.gvs-visible-voice{display:flex!important;align-items:center!important;gap:10px!important;min-width:190px!important;max-width:310px!important;padding:8px 10px!important;border-radius:18px!important;box-sizing:border-box!important;}
.gvs-visible-voice-play{width:48px!important;height:48px!important;min-width:48px!important;border:0!important;border-radius:50%!important;display:flex!important;align-items:center!important;justify-content:center!important;font-size:22px!important;font-weight:900!important;cursor:pointer!important;padding:0!important;}
.gvs-visible-voice-main{flex:1 1 auto!important;min-width:0!important;}
.gvs-visible-voice-title{display:block!important;font-size:12px!important;line-height:1.1!important;}
.gvs-visible-voice-wave{height:22px!important;display:flex!important;align-items:center!important;gap:2px!important;overflow:hidden!important;margin:3px 0!important;}
.gvs-visible-voice-wave i{width:3px!important;min-width:3px!important;height:var(--vh)!important;background:currentColor!important;border-radius:3px!important;opacity:.65!important;display:block!important;}
.gvs-visible-voice-meta{display:flex!important;justify-content:space-between!important;font-size:10px!important;opacity:.75!important;}
.gvs-visible-voice audio{display:none!important;}

/* V492 — vocal toujours visible */
.gvs-wa-msg.is-voice .gvs-wa-voice{display:flex!important;visibility:visible!important;opacity:1!important;min-width:260px!important;min-height:58px!important;}
.gvs-wa-msg.is-voice .gvs-wa-voice-play{display:grid!important;visibility:visible!important;width:52px!important;height:52px!important;min-width:52px!important;font-size:24px!important;}
.gvs-wa-msg.is-voice .gvs-wa-voice-wave{display:flex!important;visibility:visible!important;}
.gvs-wa-msg.is-voice .gvs-wa-voice-track{display:flex!important;visibility:visible!important;}
.gvs-wa-msg.is-voice .gvs-wa-voice audio{display:none!important;}


/* V493 — zone vide encore 2x plus petite */
#msgTabPanel-message .gvs-user-director-thread.gvs-empty-thread{min-height:9px!important;height:9px!important;max-height:9px!important;padding:0!important;margin:0!important;overflow:hidden!important;}
.gvs-wa-chat.is-empty .gvs-wa-chat-thread,.gvs-wa-admin-chat.is-empty .gvs-wa-chat-thread{flex-basis:18px!important;height:18px!important;min-height:18px!important;max-height:18px!important;padding:0 6px!important;overflow:hidden!important;}

/* V493 — enregistrement vocal en temps réel */
.gvs-v493-live{display:flex!important;align-items:center!important;justify-content:center!important;gap:7px!important;width:100%!important;box-sizing:border-box!important;padding:4px 8px!important;font-size:12px!important;font-weight:800!important;line-height:1!important;}
.gvs-v493-live.hidden{display:none!important;}
.gvs-v493-dot{font-size:10px!important;animation:gvs493Pulse .75s ease-in-out infinite!important;}
.gvs-v493-wave{letter-spacing:1px!important;animation:gvs493Wave .55s linear infinite!important;white-space:nowrap!important;overflow:hidden!important;max-width:110px!important;}
.gvs-v493-time{font-variant-numeric:tabular-nums!important;min-width:34px!important;}
.gvs-v493-text{white-space:nowrap!important;}
@keyframes gvs493Pulse{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}
@keyframes gvs493Wave{0%{transform:translateX(0)}100%{transform:translateX(-8px)}}

/* Le micro monte et reste bloqué en haut pendant la prise de son. */
#gvsUserDirectorComposer.gvs-v493-recording #gvsUserDirectorMic,
#gvsMsgComposer.gvs-v493-recording #gvsMsgVoiceBtn{transform:translateY(-58px)!important;z-index:100!important;}
/* Après la fin, le micro revient et l'avion papier est l'action d'envoi. */
#gvsUserDirectorComposer.gvs-v493-recording #gvsUserDirectorSend,
#gvsMsgComposer.gvs-v493-recording .gvs-msg-send{visibility:hidden!important;opacity:0!important;pointer-events:none!important;}
#gvsUserDirectorComposer.gvs-v493-prepared #gvsUserDirectorSend,
#gvsMsgComposer.gvs-v493-prepared .gvs-msg-send{visibility:visible!important;opacity:1!important;pointer-events:auto!important;}
#gvsUserDirectorComposer.gvs-v493-prepared #gvsUserDirectorMic,
#gvsMsgComposer.gvs-v493-prepared #gvsMsgVoiceBtn{transform:translateY(0)!important;}

body.dark .gvs-v493-live{color:#b8ffd0!important;}


/* GVS+ v495 — correction finale messagerie/vocaux */
/* ENVOYÉ = GAUCHE / REÇU = DROITE, dans utilisateur ET administration. */
.gvs-wa-chat-thread .gvs-wa-msg.out,
.gvs-wa-chat-thread .gvs-wa-msg[data-wa-direction="sent"]{
  align-self:flex-start!important; align-items:flex-start!important;
  margin-left:0!important; margin-right:auto!important; justify-self:start!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.in,
.gvs-wa-chat-thread .gvs-wa-msg[data-wa-direction="received"]{
  align-self:flex-end!important; align-items:flex-end!important;
  margin-left:auto!important; margin-right:0!important; justify-self:end!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.out .gvs-wa-meta{justify-content:flex-start!important;}
.gvs-wa-chat-thread .gvs-wa-msg.in .gvs-wa-meta{justify-content:flex-end!important;}

/* Conversation vide : zone vraiment minimale. */
.gvs-wa-chat.is-empty .gvs-wa-chat-thread,
.gvs-wa-admin-chat.is-empty .gvs-wa-chat-thread{
  flex:0 0 9px!important; height:9px!important; min-height:9px!important;
  max-height:9px!important; padding:0!important; margin:0!important; overflow:hidden!important;
}
.gvs-wa-chat.is-empty .gvs-wa-empty,
.gvs-wa-admin-chat.is-empty .gvs-wa-empty{display:none!important;}

/* Vocal : toujours visible, même si certaines anciennes règles du site le masquent. */
.gvs-wa-msg.is-voice{display:flex!important;visibility:visible!important;opacity:1!important;}
.gvs-wa-msg.is-voice .gvs-wa-voice{display:flex!important;visibility:visible!important;opacity:1!important;min-width:250px!important;min-height:58px!important;}
.gvs-wa-msg.is-voice .gvs-wa-voice-play{display:grid!important;visibility:visible!important;opacity:1!important;width:52px!important;height:52px!important;min-width:52px!important;font-size:24px!important;}
.gvs-wa-msg.is-voice .gvs-wa-voice-track,
.gvs-wa-msg.is-voice .gvs-wa-voice-wave{display:flex!important;visibility:visible!important;opacity:1!important;}

/* Pendant le vocal : micro verrouillé en haut, avion papier à l'emplacement du micro. */






/* Indication en temps réel de l'enregistrement. */







/* Démarrage étoile : durée visible avant l'Espace Client. */
#startupGate{animation:none!important;}


/* Zone vide très compacte */
.gvs-wa-chat-thread.gvs-empty-thread{min-height:18px!important;height:18px!important;max-height:18px!important;overflow:hidden!important}
/* Vocaux visibles et bouton de lecture plus grand */
.gvs-wa-voice{display:flex!important;align-items:center!important;gap:10px!important;min-height:54px!important}
.gvs-wa-voice-play{width:48px!important;height:48px!important;min-width:48px!important;border-radius:50%!important;font-size:22px!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important}

/* V492 — Espace de sécurité sous le bandeau Wi‑Fi/batterie :
   le bandeau GVS+ et l'horloge des autres rubriques descendent légèrement
   pour ne plus rentrer visuellement dans la barre d'état. */
.gvs-mini-brand-bar{
  margin-top:8px !important;
}
.gvs-round-clock-wrap{
  margin-top:4px !important;
}
/* Flèches d'accordéon administration : SVG professionnel, sans emoji. */
.admin-accordion-arrow svg{width:20px!important;height:20px!important;display:block}
.admin-accordion.is-open .admin-accordion-arrow svg{transform:rotate(180deg)}

/* GVS+ — Messagerie utilisateur : garder l'horloge sous la barre Wi-Fi/batterie au retour. */
/* Correction définitive après sortie de la messagerie utilisateur : le bandeau d'état
   reste dans le flux normal de #appHeader, afin que l'horloge ne passe jamais dessous. */
body:has(#msgTabPanel-message:not(.hidden)):not(.gvs-wa-user-chat-open) #androidStatusBar{
  position:relative!important;
  top:auto!important; left:auto!important; right:auto!important; bottom:auto!important;
  width:100%!important; height:auto!important; min-height:0!important;
  margin:0!important; transform:none!important;
}
body:has(#msgTabPanel-message:not(.hidden)):not(.gvs-wa-user-chat-open) #gvsRoundClockWrap{
  margin-top:0!important;
  padding-top:6px!important;
}

/* GVS+ — étoile de démarrage : rotation rapide, pendant exactement 6 secondes
   (12 tours rapides sur 6s), puis elle s'arrête. */
.startup-star{
  width:50px!important;height:50px!important;max-width:50px!important;max-height:50px!important;
  animation:gvsMulticolorStarRotation 6s linear 1 forwards!important;
  animation-direction:normal!important;
  transform-origin:50% 50%!important;
  transform-box:fill-box!important;
  will-change:transform!important;
  backface-visibility:hidden!important;
  -webkit-backface-visibility:hidden!important;
}
.startup-star polygon{animation:none!important;transition:none!important;}
@keyframes gvsMulticolorStarRotation{
  from{transform:translateZ(0) rotate(0deg)}
  to{transform:translateZ(0) rotate(4320deg)}
}


/* GVS+ — Règles de couleurs des bulles de messagerie unifiées et definies plus haut
   (voir .gvs-wa-msg.in .gvs-wa-text / .gvs-wa-msg.out .gvs-wa-text). Les anciennes
   règles contradictoires (fonds transparents forcés, couleurs par « vue »,
   inversions gauche/droite) ont été supprimées. */

/* GVS+ v17 — messagerie : icône de pièces jointes (trombone).
   Trait = couleur du bouton ; blanc en mode sombre (discussion utilisateur et admin). */
.gvs-wa-composer #gvsWaUserAttach svg,
.gvs-wa-composer #gvsWaAdminAttach svg{
  width:24px!important;height:24px!important;display:block;
  fill:none!important;stroke:currentColor!important;
  stroke-width:2;stroke-linecap:round;stroke-linejoin:round;
}
body.dark .gvs-wa-composer #gvsWaUserAttach,
body.dark .gvs-wa-composer #gvsWaAdminAttach,
#gvsWaUserChat.gvs-wa-theme-dark #gvsWaUserAttach,
#gvsWaAdminChat.gvs-wa-theme-dark #gvsWaAdminAttach{color:#fff!important;}
body.dark .gvs-wa-composer #gvsWaUserAttach svg,
body.dark .gvs-wa-composer #gvsWaAdminAttach svg,
#gvsWaUserChat.gvs-wa-theme-dark #gvsWaUserAttach svg,
#gvsWaAdminChat.gvs-wa-theme-dark #gvsWaAdminAttach svg{stroke:#fff!important;}

/* GVS+ v17 — beaucoup d'emojis et de stickers : grille défilante, titres de groupes */
.gvs-wa-sticker-panel .gvs-wa-sticker-grid{
  max-height:min(320px,42vh)!important;overflow-y:auto!important;
  -webkit-overflow-scrolling:touch;overscroll-behavior:contain;
  grid-template-columns:repeat(8,minmax(0,1fr))!important;gap:4px!important;
}
.gvs-wa-sticker-panel .gvs-wa-sticker-grid button{font-size:24px!important;min-height:40px;padding:4px 0!important;}
.gvs-wa-pack-title{
  grid-column:1/-1;position:sticky;top:0;z-index:1;
  background:#fff;color:#465162;font-size:12px;font-weight:800;padding:6px 2px 4px;
}
.gvs-wa-sticker-panel .gvs-wa-sticker-grid[data-wa-grid="sticker"]{grid-template-columns:repeat(6,minmax(0,1fr))!important;}
.gvs-wa-sticker-panel .gvs-wa-sticker-grid button.gvs-wa-sticker-emo{font-size:22px!important;}
.gvs-wa-sticker-panel .gvs-wa-sticker-grid button.gvs-wa-sticker-txt{
  grid-column:span 3;font-size:13px!important;font-weight:700;line-height:1.25;
  color:#1f2937!important;background:#f1f5f9!important;border-radius:12px!important;
  padding:8px 6px!important;min-height:42px;
}
@media(max-width:600px){
  .gvs-wa-sticker-panel .gvs-wa-sticker-grid{grid-template-columns:repeat(7,minmax(0,1fr))!important;}
  .gvs-wa-sticker-panel .gvs-wa-sticker-grid[data-wa-grid="sticker"]{grid-template-columns:repeat(4,minmax(0,1fr))!important;}
  .gvs-wa-sticker-panel .gvs-wa-sticker-grid button.gvs-wa-sticker-txt{grid-column:span 2;}
}

/* GVS+ v20 — messagerie : le petit rond de profil et le message sont sur la MÊME LIGNE
   (rond avant le message : « 👤 Salut GVS+ »), reçu comme envoyé, côté utilisateur et admin. */
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction]{
  flex-direction:row!important;
  align-items:flex-start!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction] .gvs-wa-msg-content{
  align-items:flex-start!important;
}
.gvs-wa-line{display:flex;flex-direction:row;align-items:center;gap:8px;min-width:0;max-width:100%;}
.gvs-wa-line.is-media{align-items:flex-start;}
.gvs-wa-line>.gvs-wa-msg-avatar{flex:0 0 30px!important;align-self:center!important;margin:0!important;order:0!important;}
.gvs-wa-line.is-media>.gvs-wa-msg-avatar{align-self:flex-start!important;}
.gvs-wa-line>:not(.gvs-wa-msg-avatar){min-width:0;flex:0 1 auto;}
.gvs-wa-msg-content>.gvs-wa-meta{padding-left:38px;}
/* GVS+ — Fix racine du bug d'alignement de l'heure : la règle ci-dessus
   (v20) forçait align-items:flex-start sur TOUS les messages, y compris les
   messages « own » (bulle bleue), ce qui collait l'heure à gauche même
   quand la bulle était à droite. On rétablit la bonne logique : own = à
   DROITE (bulle + heure), other = à GAUCHE (bulle + heure), utilisateur ET
   administrateur, avec une spécificité au moins égale pour gagner. */
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction].gvs-wa-own .gvs-wa-msg-content{
  align-items:flex-end!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction].gvs-wa-other .gvs-wa-msg-content{
  align-items:flex-start!important;
}
/* GVS+ v24 — la photo de l'administrateur reste placée AVANT le texte du message,
   exactement comme pour les messages des utilisateurs (ordre par défaut : photo puis texte). */
.gvs-wa-msg.in .gvs-wa-line>.gvs-wa-msg-avatar{order:0!important;}
.gvs-wa-msg.in .gvs-wa-line>:not(.gvs-wa-msg-avatar){order:1!important;}
/* Appui long : pas de menu natif ni de sélection sur la bulle (avatar, heure,
   coche…), mais le TEXTE du message reste sélectionnable pour copier/couper
   un passage précis (voir logique JS de bascule menu/sélection). */
.gvs-wa-msg{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;}
.gvs-wa-msg .gvs-wa-text{
  -webkit-touch-callout:default!important;
  -webkit-user-select:text!important;
  user-select:text!important;
}
/* Liens (URL, e-mail, numéro) dans les messages : copiables par appui long,
   le menu du message ne doit pas s'ouvrir dessus (voir logique JS). */
.gvs-wa-msg .gvs-wa-link{
  -webkit-touch-callout:default!important;
  -webkit-user-select:text!important;
  user-select:text!important;
}
.gvs-wa-message-menu button.gvs-wa-menu-danger{color:#dc2626;}
.gvs-wa-message-menu button.gvs-wa-menu-quit{color:#fff;background:#dc2626;text-align:center;margin-top:4px;}
.gvs-wa-message-menu button.gvs-wa-menu-quit:hover,.gvs-wa-message-menu button.gvs-wa-menu-quit:active{background:#b91c1c;}

/* GVS+ v22 — couleurs des bulles selon celui qui regarde (identique côté utilisateur et côté admin) :
   mes messages = bleu ; les messages de l'autre = gris (texte lisible en mode clair comme sombre). */
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-own:not(.emoji-only) .gvs-wa-text{background:#2f6fed!important;color:#fff!important;}
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-other:not(.emoji-only) .gvs-wa-text{background:#eef1f6!important;color:#1c1e21!important;}
body.dark .gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-other:not(.emoji-only) .gvs-wa-text{background:#232f42!important;color:#f2f5fa!important;}
.gvs-wa-msg.gvs-wa-own .gvs-wa-quote{background:rgba(255,255,255,.35);}
.gvs-wa-msg.gvs-wa-other .gvs-wa-quote{background:rgba(0,0,0,.06);}
body.dark .gvs-wa-msg.gvs-wa-other .gvs-wa-quote{background:rgba(255,255,255,.08);}

/* GVS+ v23 — rond de profil des messages : vraie photo de l'utilisateur (initiales si pas de photo). */
.gvs-wa-msg-avatar-user.has-photo{background:transparent}
.gvs-wa-msg-avatar-user:not(.has-photo) span{color:#fff;font-size:11px;font-weight:800;line-height:1;letter-spacing:.2px}
.gvs-wa-msg-avatar img{border-radius:50%}

/* GVS+ v23 — zone de saisie de l'administrateur : même taille et même comportement que celle des utilisateurs. */
#gvsWaAdminChat .gvs-wa-composer{width:100%;max-width:none;box-sizing:border-box;}
#gvsWaAdminChat .gvs-wa-composer:not(.has-text):not(.voice-locked) .gvs-wa-mic{display:grid!important;visibility:visible!important;opacity:1!important;}
#gvsWaAdminChat .gvs-wa-composer.has-text .gvs-wa-mic{display:none!important;}
#gvsWaAdminChat .gvs-wa-composer.has-text .gvs-wa-send,
#gvsWaAdminChat .gvs-wa-composer.voice-locked .gvs-wa-send{display:grid!important;visibility:visible!important;opacity:1!important;}
#gvsWaAdminChat .gvs-wa-composer:not(.has-text):not(.voice-locked) .gvs-wa-send{display:none!important;}
@media(max-width:600px){
  #gvsWaAdminChat .gvs-wa-composer{padding:6px 8px!important;}
  #gvsWaAdminChat .gvs-wa-composer textarea{min-height:24px!important;padding:5px 4px 7px!important;}
}
/* Le fil plein écran laisse toujours la place de la zone de saisie (marge ajustée en JS, ceci est le minimum). */
#gvsWaUserThread,#gvsWaAdminThread{scroll-padding-bottom:140px;}

/* GVS+ FINAL — 2026-09-24 : bulles compactes et toujours à gauche.
   Dans la discussion utilisateur : GVS+ = bleu, utilisateur = gris.
   Dans la discussion administration : utilisateur = gris, GVS+ = bleu.
   La position dépend uniquement de l'expéditeur, jamais du côté de l'interface. */
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-chat-thread .gvs-wa-msg,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-chat-thread .gvs-wa-msg,
#gvsWaUserChat .gvs-wa-chat-thread .gvs-wa-msg,
#gvsWaAdminChat .gvs-wa-chat-thread .gvs-wa-msg {
  align-self:flex-start !important;
  align-items:flex-start !important;
  margin-left:0 !important;
  margin-right:auto !important;
  flex-direction:row !important;
  max-width:82% !important;
}

body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-chat-thread .gvs-wa-msg.out,
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-chat-thread .gvs-wa-msg.in,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-chat-thread .gvs-wa-msg.out,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-chat-thread .gvs-wa-msg.in {
  align-self:flex-start !important;
  margin-left:0 !important;
  margin-right:auto !important;
}

/* Bulles de texte : plus petites, sans grand rectangle inutile. */
#gvsWaUserChat .gvs-wa-msg .gvs-wa-text,
#gvsWaAdminChat .gvs-wa-msg .gvs-wa-text {
  max-width:100% !important;
  width:max-content !important;
  padding:6px 10px !important;
  margin:1px 0 !important;
  border-radius:14px !important;
  line-height:1.3 !important;
  font-size:13.5px !important;
  box-shadow:none !important;
  box-sizing:border-box !important;
}

/* GVS+ = bleu, quel que soit le panneau ouvert. */
#gvsWaUserChat .gvs-wa-msg[data-wa-from="admin"] .gvs-wa-text,
#gvsWaAdminChat .gvs-wa-msg[data-wa-from="admin"] .gvs-wa-text {
  background:#2f6fed !important;
  color:#fff !important;
  border-bottom-left-radius:4px !important;
  border-bottom-right-radius:14px !important;
}

/* Utilisateur = gris, quel que soit le panneau ouvert. */
#gvsWaUserChat .gvs-wa-msg:not([data-wa-from="admin"]) .gvs-wa-text,
#gvsWaAdminChat .gvs-wa-msg:not([data-wa-from="admin"]) .gvs-wa-text {
  background:#e4e6eb !important;
  color:#111 !important;
  border-bottom-left-radius:4px !important;
  border-bottom-right-radius:14px !important;
}

body.dark #gvsWaUserChat .gvs-wa-msg:not([data-wa-from="admin"]) .gvs-wa-text,
body.dark #gvsWaAdminChat .gvs-wa-msg:not([data-wa-from="admin"]) .gvs-wa-text {
  background:#3a3b3c !important;
  color:#fff !important;
}

/* Les messages vocaux restent compacts et à gauche, sans grosse bulle de fond. */
#gvsWaUserChat .gvs-wa-msg.is-voice,
#gvsWaAdminChat .gvs-wa-msg.is-voice {
  align-self:flex-start !important;
  margin-left:0 !important;
  margin-right:auto !important;
  background:transparent !important;
  box-shadow:none !important;
}


/* GVS+ — 24/09/2026 — disposition finale conforme aux maquettes fournies.
   GVS+ est TOUJOURS à gauche ; l'utilisateur est TOUJOURS à droite,
   aussi bien dans l'espace administrateur que dans l'espace utilisateur. */
#gvsWaUserChat .gvs-wa-chat-thread .gvs-wa-msg[data-wa-from="admin"],
#gvsWaAdminChat .gvs-wa-chat-thread .gvs-wa-msg[data-wa-from="admin"]{
  align-self:flex-start!important;
  align-items:flex-start!important;
  margin-left:0!important;
  margin-right:auto!important;
  flex-direction:row!important;
}
#gvsWaUserChat .gvs-wa-chat-thread .gvs-wa-msg:not([data-wa-from="admin"]),
#gvsWaAdminChat .gvs-wa-chat-thread .gvs-wa-msg:not([data-wa-from="admin"]){
  align-self:flex-end!important;
  align-items:flex-end!important;
  margin-left:auto!important;
  margin-right:0!important;
  flex-direction:row-reverse!important;
}

/* Avatar : GVS+ à gauche de sa bulle ; utilisateur à droite de sa bulle. */
#gvsWaUserChat .gvs-wa-msg[data-wa-from="admin"] .gvs-wa-line,
#gvsWaAdminChat .gvs-wa-msg[data-wa-from="admin"] .gvs-wa-line{
  flex-direction:row!important;
  justify-content:flex-start!important;
}
#gvsWaUserChat .gvs-wa-msg:not([data-wa-from="admin"]) .gvs-wa-line,
#gvsWaAdminChat .gvs-wa-msg:not([data-wa-from="admin"]) .gvs-wa-line{
  flex-direction:row-reverse!important;
  justify-content:flex-end!important;
}

/* Bulles compactes : le fond épouse le contenu au lieu d'occuper une grande zone. */
#gvsWaUserChat .gvs-wa-msg .gvs-wa-text,
#gvsWaAdminChat .gvs-wa-msg .gvs-wa-text{
  display:inline-block!important;
  width:fit-content!important;
  max-width:min(76vw,620px)!important;
  padding:8px 11px!important;
  margin:0!important;
  border-radius:16px!important;
  line-height:1.34!important;
  font-size:14px!important;
  box-shadow:none!important;
}
#gvsWaUserChat .gvs-wa-msg[data-wa-from="admin"] .gvs-wa-text,
#gvsWaAdminChat .gvs-wa-msg[data-wa-from="admin"] .gvs-wa-text{
  background:#2f6fed!important;
  color:#fff!important;
  border-bottom-left-radius:5px!important;
  border-bottom-right-radius:16px!important;
}
#gvsWaUserChat .gvs-wa-msg:not([data-wa-from="admin"]) .gvs-wa-text,
#gvsWaAdminChat .gvs-wa-msg:not([data-wa-from="admin"]) .gvs-wa-text{
  background:#e4e6eb!important;
  color:#111!important;
  border-bottom-left-radius:16px!important;
  border-bottom-right-radius:5px!important;
}
body.dark #gvsWaUserChat .gvs-wa-msg:not([data-wa-from="admin"]) .gvs-wa-text,
body.dark #gvsWaAdminChat .gvs-wa-msg:not([data-wa-from="admin"]) .gvs-wa-text{
  background:#3a3b3c!important;
  color:#fff!important;
}

/* Les métadonnées suivent leur bulle. */
#gvsWaUserChat .gvs-wa-msg[data-wa-from="admin"] .gvs-wa-meta,
#gvsWaAdminChat .gvs-wa-msg[data-wa-from="admin"] .gvs-wa-meta{
  justify-content:flex-start!important;
  padding-left:38px!important;
  padding-right:4px!important;
}
#gvsWaUserChat .gvs-wa-msg:not([data-wa-from="admin"]) .gvs-wa-meta,
#gvsWaAdminChat .gvs-wa-msg:not([data-wa-from="admin"]) .gvs-wa-meta{
  justify-content:flex-end!important;
  padding-left:4px!important;
  padding-right:38px!important;
}

/* Vocaux : même logique gauche/droite, sans grosse bulle colorée. */
#gvsWaUserChat .gvs-wa-msg.is-voice[data-wa-from="admin"],
#gvsWaAdminChat .gvs-wa-msg.is-voice[data-wa-from="admin"]{
  align-self:flex-start!important;
  margin-right:auto!important;
  margin-left:0!important;
}
#gvsWaUserChat .gvs-wa-msg.is-voice:not([data-wa-from="admin"]),
#gvsWaAdminChat .gvs-wa-msg.is-voice:not([data-wa-from="admin"]){
  align-self:flex-end!important;
  margin-left:auto!important;
  margin-right:0!important;
}


/* GVS+ FINAL — 24/09/2026 — sens des messages selon le compte ouvert.
   Utilisateur : son message = droite/bleu ; GVS+ = gauche/gris.
   Administrateur : GVS+ = droite/bleu ; utilisateur = gauche/gris.
   Les anciennes règles de positionnement sont volontairement neutralisées ici. */
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-chat-thread .gvs-wa-msg,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-chat-thread .gvs-wa-msg {
  max-width:82% !important;
}

/* Toujours : propre message à droite, interlocuteur à gauche. */
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-own,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-own {
  align-self:flex-end !important;
  align-items:flex-end !important;
  margin-left:auto !important;
  margin-right:0 !important;
  flex-direction:row-reverse !important;
}
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-other,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-other {
  align-self:flex-start !important;
  align-items:flex-start !important;
  margin-left:0 !important;
  margin-right:auto !important;
  flex-direction:row !important;
}

/* Ligne interne : avatar du propriétaire à droite, interlocuteur à gauche. */
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-own .gvs-wa-line,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-own .gvs-wa-line {
  flex-direction:row-reverse !important;
  justify-content:flex-end !important;
}
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-other .gvs-wa-line,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-other .gvs-wa-line {
  flex-direction:row !important;
  justify-content:flex-start !important;
}

/* Bleu = message du compte ouvert ; gris = message reçu. */
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-own .gvs-wa-text,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-own .gvs-wa-text {
  background:#2f6fed !important;
  color:#fff !important;
  border-bottom-right-radius:5px !important;
  border-bottom-left-radius:16px !important;
}
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-other .gvs-wa-text,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-other .gvs-wa-text {
  background:#e4e6eb !important;
  color:#111 !important;
  border-bottom-left-radius:5px !important;
  border-bottom-right-radius:16px !important;
}
body.dark.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-other:not(.emoji-only):not(.sticker-only) .gvs-wa-text,
body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-other:not(.emoji-only):not(.sticker-only) .gvs-wa-text {
  background:#3a3b3c !important;
  color:#fff !important;
}
/* GVS+ — les emojis/stickers reçus ne doivent jamais avoir de fond, même en mode sombre */
body.dark.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.emoji-only .gvs-wa-text,
body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.emoji-only .gvs-wa-text,
body.dark.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.sticker-only .gvs-wa-text,
body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.sticker-only .gvs-wa-text {
  background:transparent !important;
  box-shadow:none !important;
}

/* Les vocaux suivent exactement le même côté que leur expéditeur. */
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-own.is-voice,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-own.is-voice {
  align-self:flex-end !important;
  margin-left:auto !important;
  margin-right:0 !important;
  flex-direction:row-reverse !important;
}
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-other.is-voice,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-other.is-voice {
  align-self:flex-start !important;
  margin-left:0 !important;
  margin-right:auto !important;
  flex-direction:row !important;
}

/* Bulles plus compactes. */
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg .gvs-wa-text,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg .gvs-wa-text {
  width:fit-content !important;
  max-width:min(76vw,620px) !important;
  padding:7px 10px !important;
  margin:0 !important;
  border-radius:15px !important;
  line-height:1.32 !important;
  font-size:14px !important;
  box-shadow:none !important;
}

/* GVS+ — Correction définitive du placement des avatars dans les discussions.
   Le propriétaire de la discussion garde toujours sa photo à DROITE de sa bulle.
   L'interlocuteur garde sa photo à GAUCHE de sa bulle.
   Utilisateur : utilisateur bleu à droite + photo utilisateur à droite ; GVS+ gris à gauche + photo GVS+ à gauche.
   Administrateur : GVS+ bleu à droite + photo GVS+ à droite ; utilisateur gris à gauche + photo utilisateur à gauche. */
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-own .gvs-wa-line,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-own .gvs-wa-line {
  flex-direction:row !important;
  justify-content:flex-end !important;
}
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-other .gvs-wa-line,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-other .gvs-wa-line {
  flex-direction:row !important;
  justify-content:flex-start !important;
}

/* GVS+ — V519 : barre de saisie et visualisation vocale façon WhatsApp,
   basée sur la maquette fournie. */
.gvs-wa-composer{
  position:fixed!important;
  left:10px!important; right:10px!important; bottom:8px!important;
  width:auto!important; margin:0!important;
  padding:8px 12px 10px!important;
  border:1px solid rgba(120,140,170,.28)!important;
  border-radius:30px!important;
  background:rgba(255,255,255,.96)!important;
  box-shadow:0 3px 18px rgba(0,0,0,.10)!important;
  z-index:2147483002!important;
  box-sizing:border-box!important;
}
.gvs-wa-composer textarea{
  width:100%!important; min-height:44px!important; height:44px!important;
  margin:0!important; padding:9px 10px 5px!important;
  border:0!important; outline:none!important; border-radius:20px!important;
  background:transparent!important; color:#172033!important;
  font-size:16px!important; line-height:1.35!important; resize:none!important;
  box-sizing:border-box!important;
}
.gvs-wa-composer textarea::placeholder{color:#718096!important;opacity:1!important}
.gvs-wa-composer-row2{gap:2px!important;min-height:48px!important;align-items:center!important}
.gvs-wa-composer-row2 .gvs-wa-icon{
  width:42px!important;height:42px!important;min-width:42px!important;
  border-radius:50%!important;background:transparent!important;
  color:#1d3557!important;font-size:25px!important;
}
.gvs-wa-composer-row2 .gvs-wa-icon:hover{background:rgba(29,53,87,.08)!important}
.gvs-wa-composer-row2 .gvs-wa-icon svg{width:24px!important;height:24px!important;stroke:currentColor!important}
.gvs-wa-composer-row2 .gvs-wa-row2-spacer{flex:1 1 auto!important}
.gvs-wa-composer-row2 .gvs-wa-mic{
  width:52px!important;height:52px!important;min-width:52px!important;
  border:1px solid rgba(80,100,125,.22)!important;
  border-radius:50%!important;background:#f7f9fc!important;
  color:#263b59!important;
}
.gvs-wa-composer-row2 .gvs-wa-mic svg{width:27px!important;height:27px!important}
.gvs-wa-composer-row2 .gvs-wa-send{
  width:56px!important;height:56px!important;min-width:56px!important;
  margin-left:5px!important;border:0!important;border-radius:50%!important;
  background:#1688ff!important;color:#fff!important;
  font-size:0!important;box-shadow:none!important;
}
.gvs-wa-composer-row2 .gvs-wa-send::before{content:'➤';font-size:27px!important;line-height:1!important}



/* Barre d'enregistrement : remplace visuellement la barre de saisie pendant la prise de son. */













/* Visualisation des vocaux envoyés : lecture + vraie forme d'onde + durée. */
.gvs-wa-msg.is-voice .gvs-wa-voice{
  min-width:245px!important;min-height:54px!important;display:flex!important;align-items:center!important;gap:8px!important;
}
.gvs-wa-msg.is-voice .gvs-wa-voice-play{
  width:46px!important;height:46px!important;min-width:46px!important;border-radius:50%!important;
  display:grid!important;place-items:center!important;font-size:20px!important;
  background:rgba(255,255,255,.22)!important;color:currentColor!important;
}
.gvs-wa-msg.is-voice .gvs-wa-voice-track{height:46px!important;min-width:150px!important}
.gvs-wa-msg.is-voice .gvs-wa-voice-wave{height:25px!important;gap:2px!important}
.gvs-wa-msg.is-voice .gvs-wa-voice-wave i{width:2.5px!important;min-width:2.5px!important;height:var(--h)!important;border-radius:3px!important;background:currentColor!important;opacity:.78!important}
.gvs-wa-msg.is-voice .gvs-wa-voice-bottom{font-size:10px!important;opacity:.78!important}

body.dark .gvs-wa-composer{background:rgba(13,22,34,.98)!important;border-color:rgba(255,255,255,.16)!important;color:#f4f7fb!important}
body.dark .gvs-wa-composer textarea{color:#f4f7fb!important}
body.dark .gvs-wa-composer textarea::placeholder{color:#aab8c9!important}
body.dark .gvs-wa-composer-row2 .gvs-wa-icon{color:#eef4ff!important}
body.dark .gvs-wa-composer-row2 .gvs-wa-mic{background:#101a29!important;border-color:rgba(255,255,255,.18)!important;color:#fff!important}




@media(max-width:520px){
  .gvs-wa-composer{left:8px!important;right:8px!important;bottom:6px!important;border-radius:27px!important;padding:7px 8px 8px!important}
  .gvs-wa-composer textarea{font-size:16px!important;min-height:42px!important;height:42px!important}
  .gvs-wa-composer-row2 .gvs-wa-icon{width:39px!important;height:39px!important;min-width:39px!important}
  .gvs-wa-composer-row2 .gvs-wa-mic{width:50px!important;height:50px!important;min-width:50px!important}
  .gvs-wa-composer-row2 .gvs-wa-send{width:54px!important;height:54px!important;min-width:54px!important}
  
  
  
}

/* Enregistrement vocal : indicateur intégré à la barre de saisie, dans le coin gauche.
   Pendant l'enregistrement, le champ de texte et les 3 icônes de gauche laissent la place à :
   × (annuler) · point rouge · minuteur · onde sonore. Micro et avion papier restent à droite. */
.gvs-wa-rec-inline{display:none;align-items:center;gap:8px;flex:1 1 auto;min-width:0;height:48px;margin:0;padding:0}
.gvs-wa-rec-inline:not(.hidden){display:flex!important}
.gvs-wa-composer.voice-locked textarea,
.gvs-wa-composer.voice-locked .gvs-wa-composer-row2 .gvs-wa-icon:not(.gvs-wa-mic),
.gvs-wa-composer.voice-locked .gvs-wa-row2-spacer{display:none!important}
.gvs-wa-rec-cancel{flex:0 0 40px;width:40px;height:40px;min-width:40px;padding:0;border:0;border-radius:50%;background:transparent;color:#566b86;font-size:30px;line-height:1;display:grid;place-items:center;cursor:pointer}
.gvs-wa-rec-dot{flex:0 0 auto;color:#e53935;font-size:16px;line-height:1;animation:gvsWaPulse 1s infinite}
.gvs-wa-rec-inline b{flex:0 0 auto;min-width:38px;font-size:15px;font-weight:600;color:#1d3557;font-variant-numeric:tabular-nums}
.gvs-wa-rec-wave{flex:1 1 auto;min-width:0;height:30px;display:flex;align-items:center;gap:2px;overflow:hidden;color:#1688ff}
.gvs-wa-rec-wave i{display:block;flex:0 0 3px;width:3px;height:var(--record-height,7px);max-height:28px;border-radius:3px;background:currentColor;transition:height .06s linear}
.gvs-wa-rec-wave:not(.live) i{animation:gvsRecWave .8s ease-in-out infinite alternate}
.gvs-wa-rec-wave:not(.live) i:nth-child(2n){animation-delay:.12s}
.gvs-wa-rec-wave:not(.live) i:nth-child(3n){animation-delay:.24s}
@keyframes gvsRecWave{from{transform:scaleY(.5);opacity:.5}to{transform:scaleY(1.6);opacity:1}}
.gvs-wa-composer-row2 .gvs-wa-mic.recording{background:#ffe3e3!important;border-color:#e53935!important;color:#d72525!important}
body.dark .gvs-wa-composer-row2 .gvs-wa-mic.recording{background:#3a1c22!important;border-color:#e53935!important;color:#ff6b6b!important}
body.dark .gvs-wa-rec-inline b{color:#eef4ff}
body.dark .gvs-wa-rec-cancel{color:#b9c6d8}


/* GVS+ V520 — finition messagerie : aucune bulle ne doit passer sous la barre de saisie. */
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-chat-thread,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-chat-thread{
  scroll-padding-bottom:180px!important;
  padding-left:10px!important;
  padding-right:10px!important;
  box-sizing:border-box!important;
}

/* Composeur pleine largeur, collé au tout bord inférieur de l'écran. */
body.gvs-wa-user-chat-open #gvsWaUserComposer,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-composer,
.gvs-wa-composer{
  left:0!important;
  right:0!important;
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
  bottom:0!important;
  padding-bottom:calc(8px + env(safe-area-inset-bottom, 0px))!important;
  border-radius:0!important;
  box-sizing:border-box!important;
}

.gvs-wa-composer-card{width:100%!important;max-width:none!important;box-sizing:border-box!important;}

/* Les messages bleus prennent davantage de largeur vers la gauche tout en restant alignés à droite. */
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-own .gvs-wa-text,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-own .gvs-wa-text{
  max-width:min(86vw,700px)!important;
}
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-own,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-own{
  max-width:90%!important;
}

/* Avion papier propre : un seul SVG, sans second symbole superposé. */
.gvs-wa-composer-row2 .gvs-wa-send::before{content:none!important;display:none!important;}
.gvs-wa-composer-row2 .gvs-wa-send svg{
  display:block!important;
  width:25px!important;
  height:25px!important;
  margin:0!important;
  fill:currentColor!important;
  stroke:none!important;
  transform:translate(-1px,0) rotate(0deg)!important;
}
.gvs-wa-composer-row2 .gvs-wa-send{
  width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;
  flex:0 0 52px!important;
  display:inline-flex!important;align-items:center!important;justify-content:center!important;
  padding:0!important;margin-left:4px!important;
  border:0!important;border-radius:50%!important;
  background:#1688ff!important;color:#fff!important;
  box-shadow:0 2px 7px rgba(22,136,255,.28)!important;
  font-size:0!important;
}

@media(max-width:520px){
  .gvs-wa-composer{left:0!important;right:0!important;width:100%!important;}
  .gvs-wa-composer-row2 .gvs-wa-send{width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;flex-basis:50px!important;}
  .gvs-wa-composer-row2 .gvs-wa-send svg{width:24px!important;height:24px!important;}
}

/* GVS+ — Liens détectés automatiquement dans les messages */
.gvs-wa-text .gvs-wa-link{
  color:#4ade80!important;
  text-decoration:underline!important;
  text-underline-offset:2px;
  cursor:pointer;
  overflow-wrap:anywhere;
}
.gvs-wa-msg[data-wa-from="admin"] .gvs-wa-text .gvs-wa-link{
  color:#4ade80!important;
}
body.dark .gvs-wa-msg[data-wa-from="admin"] .gvs-wa-text .gvs-wa-link{
  color:#86efac!important;
}
body.dark .gvs-wa-msg:not([data-wa-from="admin"]) .gvs-wa-text .gvs-wa-link{
  color:#86efac!important;
}

/* Composeur poussé au ras du bord inférieur, sur toute la largeur de l'écran. */
body.gvs-wa-user-chat-open #gvsWaUserComposer,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-composer,
.gvs-wa-composer{
  left:0!important;
  right:0!important;
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
  bottom:0!important;
  padding-bottom:calc(10px + env(safe-area-inset-bottom, 0px))!important;
  border-bottom-left-radius:0!important;
  border-bottom-right-radius:0!important;
  box-sizing:border-box!important;
}
@media(max-width:520px){
  body.gvs-wa-user-chat-open #gvsWaUserComposer,
  body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-composer,
  .gvs-wa-composer{left:0!important;right:0!important;width:100%!important;}
}

/* Photos de profil dans la conversation : plus petites, toujours centrées sur la ligne
   pour rester alignées même quand le message est court. */
.gvs-wa-msg-avatar{
  width:20px!important;height:20px!important;min-width:20px!important;
}
.gvs-wa-msg-avatar svg{width:12px!important;height:12px!important;}
.gvs-wa-line>.gvs-wa-msg-avatar{
  flex:0 0 20px!important;
  align-self:center!important;
  margin:0!important;
}

/* V519 — Phrase de profil GVS+ : reste fixée au bas du bloc de profil,
   sans remonter ni se déplacer avec les éléments de la discussion. */
#gvsWaUserRoot .gvs-wa-director-card {
  position: relative !important;
  padding-bottom: 34px !important;
}
#gvsWaUserRoot .gvs-wa-profile-start-note {
  position: absolute !important;
  left: 50% !important;
  bottom: 8px !important;
  transform: translateX(-50%) !important;
  margin: 0 !important;
  white-space: nowrap !important;
  text-align: center !important;
  z-index: 3 !important;
}

/* V540 — Icône Réseau / Wi‑Fi rétablie dans la barre d'état (indicateur simple, sans économie de données). */
#asbNetwork{cursor:default!important;pointer-events:none;color:#111!important;}
body.dark #asbNetwork{color:#fff!important;}
#asbNetwork .asb-icon{width:22px!important;height:20px!important;min-width:22px!important;color:inherit!important;}
html.gvs-offline #asbNetwork{opacity:.45;}

/* V541 — Icône Wi‑Fi : noire en mode clair, blanche en mode sombre (y compris dans la messagerie). */
html body #asbNetwork,html body #asbNetwork .asb-icon,
html body.gvs-wa-user-chat-open #asbNetwork,html body.gvs-wa-admin-chat-open #asbNetwork,
html body.gvs-wa-user-chat-open #asbNetwork .asb-icon,html body.gvs-wa-admin-chat-open #asbNetwork .asb-icon{color:#000!important;}
html body.dark #asbNetwork,html body.dark #asbNetwork .asb-icon,
html body.dark.gvs-wa-user-chat-open #asbNetwork,html body.dark.gvs-wa-admin-chat-open #asbNetwork,
html body.dark.gvs-wa-user-chat-open #asbNetwork .asb-icon,html body.dark.gvs-wa-admin-chat-open #asbNetwork .asb-icon{color:#fff!important;}

/* ===== V544 — Liens/numéros en BLANC sur le fond bleu conservé des messages + fond blanc derrière le bloc de saisie =====
   (Les règles de messagerie actives sont dans ce fichier styles.css.) */

/* 1) Message contenant un lien ou un numéro : la bulle garde sa couleur normale (bleu pour l'expéditeur
   concerné, gris/sombre pour l'autre) au lieu de devenir transparente. */

/* 2) Liens et numéros : BLANC bien visible, gras, soulignés, sans fond ni cadre. */
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg[data-wa-from] .gvs-wa-text .gvs-wa-link,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg[data-wa-from] .gvs-wa-text .gvs-wa-link{
  color:#4ade80!important;
  -webkit-text-fill-color:#4ade80!important;
  font-weight:800!important;
  text-decoration:underline!important;
  text-decoration-thickness:1px!important;
  text-underline-offset:3px!important;
  -webkit-text-decoration-color:#4ade80!important;
  text-decoration-color:#4ade80!important;
  background:none!important;
  background-color:transparent!important;
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  text-shadow:0 0 5px rgba(74,222,128,.55)!important;
  padding:0!important;
  margin:0!important;
  border-radius:0!important;
  cursor:pointer!important;
  pointer-events:auto!important;
  -webkit-tap-highlight-color:transparent!important;
  overflow-wrap:anywhere;
}
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link.gvs-wa-phone,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link.gvs-wa-phone{
  white-space:nowrap!important;
  overflow-wrap:normal!important;
}
html body.dark.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link,
html body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link,
html body.dark.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg[data-wa-from] .gvs-wa-text .gvs-wa-link,
html body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg[data-wa-from] .gvs-wa-text .gvs-wa-link{
  color:#86efac!important;
  -webkit-text-fill-color:#86efac!important;
  -webkit-text-decoration-color:#86efac!important;
  text-decoration-color:#86efac!important;
  text-shadow:0 0 6px rgba(134,239,172,.6)!important;
}

/* 3) Bloc de saisie : collé au bord inférieur + fond de la même couleur que le bloc de saisie lui-même,
   prolongé derrière/en dessous, pour qu'on ne voie plus jamais la discussion dans la petite bande sous le bloc. */
html body.gvs-wa-user-chat-open #gvsWaUserComposer,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-composer{
  bottom:0!important;
  border-bottom:0!important;
  border-bottom-left-radius:0!important;
  border-bottom-right-radius:0!important;
}
html body.gvs-wa-user-chat-open #gvsWaUserComposer::after,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-composer::after{
  content:""!important;
  position:absolute!important;
  left:0!important; right:0!important; top:100%!important;
  height:600px!important;
  background:rgba(255,255,255,.96)!important;
  pointer-events:none!important;
}
html body.dark.gvs-wa-user-chat-open #gvsWaUserComposer::after,
html body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-composer::after{
  background:rgba(13,22,34,.98)!important;
}

/* GVS+ — Fix : le bloc de saisie de texte doit avoir la même couleur de fond
   en mode sombre côté utilisateur ET côté administrateur (le sélecteur
   #gvsWaUserComposer avait une règle plus spécifique qui le décalait vers
   un bleu-nuit différent du reste). On force ici la même couleur partout. */
body.dark #gvsWaUserComposer.gvs-wa-composer,
body.dark #gvsWaAdminChat .gvs-wa-composer,
body.dark .gvs-wa-composer,
#gvsWaUserChat.gvs-wa-theme-dark #gvsWaUserComposer,
#gvsWaAdminChat.gvs-wa-theme-dark .gvs-wa-composer {
  background: rgba(13,22,34,.98) !important;
  background-color: rgba(13,22,34,.98) !important;
}

/* GVS+ — Fix : l'heure/date d'un message doit rester du même côté que sa
   bulle. Les anciennes règles basées sur data-wa-from="admin" ont été
   neutralisées par le bloc "FINAL — 24/09/2026" pour les bulles
   (.gvs-wa-own / .gvs-wa-other), mais pas pour .gvs-wa-meta : côté
   administrateur, la bulle passait à droite pour ses propres messages
   alors que l'heure restait à gauche. On aligne .gvs-wa-meta sur la même
   logique relative (own = droite, other = gauche), avec une spécificité
   plus forte pour gagner définitivement. */
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-own .gvs-wa-meta,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-own .gvs-wa-meta {
  justify-content: flex-end !important;
  padding-left: 4px !important;
  padding-right: 38px !important;
}
body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-other .gvs-wa-meta,
body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-other .gvs-wa-meta {
  justify-content: flex-start !important;
  padding-left: 38px !important;
  padding-right: 4px !important;
}

/* GVS+ — Photo de profil dans la discussion : reste tout en bas du
   message (et non centrée dans le bloc). Annule le centrage précédent. */
.gvs-wa-line > .gvs-wa-msg-avatar {
  align-self: flex-end !important;
  transform: none !important;
}

/* GVS+ — Séparateur de date façon Facebook : centré au-dessus d'un
   groupe de messages du même jour (Aujourd'hui / Hier / date). */
.gvs-wa-day-sep{
  align-self: center !important;
  display: flex;
  justify-content: center;
  width: auto;
  margin: 6px 0 2px;
}
.gvs-wa-day-sep > span{
  background: rgba(0,0,0,.06);
  color: #65676b;
  font-size: 12.5px;
  font-weight: 600;
  padding: 4px 12px;
  border-radius: 12px;
  line-height: 1.3;
}
body.dark .gvs-wa-day-sep > span{
  background: rgba(255,255,255,.08);
  color: #b0b8c4;
}

/* GVS+ — Icônes du bandeau (retour, photo de profil par défaut, téléphone,
   caméra, trois points) : noir en mode clair, blanc en mode sombre, comme
   sur Facebook. La photo de profil réelle (quand il y en a une) n'est pas
   concernée : seule la silhouette par défaut suit cette couleur. */
.gvs-wa-chat-avatar:not(.has-photo){
  background: #e4e6ea !important;
  border-color: transparent !important;
  box-shadow: none !important;
  color: #000 !important;
}
.gvs-wa-chat-avatar:not(.has-photo) svg{
  width: 22px; height: 22px; fill: currentColor;
}
body.dark .gvs-wa-chat-avatar:not(.has-photo){
  background: #3a3b3c !important;
  color: #fff !important;
}

/* GVS+ — Photos de profil dans la conversation façon Facebook : affichées
   uniquement sur le dernier message d'une série consécutive du même
   expéditeur (le même jour) ; un espace invisible garde l'alignement des
   bulles sur les autres messages du groupe. */
.gvs-wa-msg-avatar.gvs-wa-msg-avatar-spacer{
  background: transparent !important;
  box-shadow: none !important;
  border: 0 !important;
}

/* GVS+ — Bandeau « < GVS+ » : retour, téléphone, caméra, trois points
   totalement noirs en mode clair, blancs en mode sombre (règle finale,
   priorité maximale). Les trois points doivent être des ronds pleins,
   pas des anneaux creux. */
.gvs-wa-chat-head .gvs-wa-back,
.gvs-wa-chat-head .gvs-wa-head-icon{
  color: #000 !important;
}
body.dark .gvs-wa-chat-head .gvs-wa-back,
body.dark .gvs-wa-chat-head .gvs-wa-head-icon{
  color: #fff !important;
}
#gvsWaUserMenuBtn svg, #gvsWaAdminMenuBtn svg{
  fill: currentColor !important;
  stroke: none !important;
}
/* GVS+ — Les icônes appel/vidéo étaient en contour (fill:none + stroke) ce qui les
   faisait apparaître blanches avec un simple trait noir. On les rend pleines,
   comme les trois points et comme les icônes du bandeau wifi/batterie. */
.gvs-wa-chat-head .gvs-wa-head-icon svg{
  fill: currentColor !important;
  stroke: none !important;
}

/* GVS+ — Liens/numéros de téléphone/e-mails dans la conversation : VERT CLAIR
   lumineux (léger halo), en mode clair comme en mode sombre, quel que soit
   l'expéditeur du message. Règle finale, priorité maximale (placée en toute
   fin de fichier, sélecteurs [data-wa-from] inclus pour l'emporter partout). */
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg[data-wa-from] .gvs-wa-text .gvs-wa-link,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg[data-wa-from] .gvs-wa-text .gvs-wa-link{
  color:#4ade80!important;
  -webkit-text-fill-color:#4ade80!important;
  text-decoration-color:#4ade80!important;
  -webkit-text-decoration-color:#4ade80!important;
  text-shadow:0 0 5px rgba(74,222,128,.55)!important;
}
html body.dark.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link,
html body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link,
html body.dark.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg[data-wa-from] .gvs-wa-text .gvs-wa-link,
html body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg[data-wa-from] .gvs-wa-text .gvs-wa-link{
  color:#86efac!important;
  -webkit-text-fill-color:#86efac!important;
  text-decoration-color:#86efac!important;
  -webkit-text-decoration-color:#86efac!important;
  text-shadow:0 0 6px rgba(134,239,172,.6)!important;
}

/* GVS+ — V536 : fond du bloc de saisie totalement opaque (blanc plein en mode
   clair, plus de transparence laissant deviner la discussion derrière). */
.gvs-wa-composer{
  background:#ffffff!important;
}
body.dark .gvs-wa-composer{
  background:#0d1622!important;
}
html body.gvs-wa-user-chat-open #gvsWaUserComposer::after,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-composer::after{
  background:#ffffff!important;
}
html body.dark.gvs-wa-user-chat-open #gvsWaUserComposer::after,
html body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-composer::after{
  background:#0d1622!important;
}
body.dark #gvsWaUserComposer.gvs-wa-composer,
body.dark #gvsWaAdminChat .gvs-wa-composer,
#gvsWaUserChat.gvs-wa-theme-dark #gvsWaUserComposer,
#gvsWaAdminChat.gvs-wa-theme-dark .gvs-wa-composer{
  background:#0d1622!important;
  background-color:#0d1622!important;
}

/* GVS+ — V550 : le bandeau (< retour, photo, nom, téléphone, caméra, trois
   points) était trop collé en haut. On le fait descendre un peu en ajoutant
   du padding au-dessus de son contenu, sans casser la zone de sécurité
   (encoche/barre système) déjà gérée ailleurs. */
.gvs-wa-chat-head{
  padding-top:18px!important;
  padding-bottom:14px!important;
}

/* GVS+ — V550 : un message très court (« ? », « . », « : »...) donnait une
   bulle trop étroite, plus étroite que l'heure affichée dessous, ce qui
   décalait les bords gauche/droite par rapport aux autres bulles. On impose
   une largeur minimale à la bulle pour que tous les bords restent alignés. */
.gvs-wa-msg .gvs-wa-text{
  min-width:58px!important;
  box-sizing:border-box!important;
}
.gvs-wa-msg-content{
  min-width:58px!important;
}

/* GVS+ — V552 : retour à un alignement gauche/droite (le centrage de la V551
   est annulé). Le message de la personne connectée (bulle bleue) est à
   DROITE, et le message gris de l'autre personne est à GAUCHE — la même
   règle des deux côtés, espace utilisateur ET espace administrateur.
   Sélecteur volontairement très spécifique (classe répétée) pour l'emporter
   sur toutes les anciennes règles accumulées au fil des versions. */
#gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-own,
#gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-own{
  align-self:flex-end!important;
  align-items:flex-end!important;
  margin-left:auto!important;
  margin-right:0!important;
  justify-self:end!important;
}
#gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-other,
#gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-other{
  align-self:flex-start!important;
  align-items:flex-start!important;
  margin-left:0!important;
  margin-right:auto!important;
  justify-self:start!important;
}
#gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-own .gvs-wa-meta,
#gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-own .gvs-wa-meta{
  justify-content:flex-end!important;
}
#gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-other .gvs-wa-meta,
#gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-other .gvs-wa-meta{
  justify-content:flex-start!important;
}

/* ===================================================================
   GVS+ — CONTRÔLE : respect de l'espace caméra / haut-parleur (v600)
   -------------------------------------------------------------------
   De nombreux réglages successifs du bandeau d'icônes (.android-status-bar,
   au-dessus du bandeau « GVS+ ») ont empilé des transform:translateY(...)
   et des marges négatives qui remontent la barre au-dessus de l'espace
   réservé par le système (env(safe-area-inset-top)). Sur certains
   téléphones (encoche, poinçon caméra, Dynamic Island, bord incurvé),
   les icônes finissaient sous la caméra ou le haut-parleur.
   On neutralise ici tous ces décalages, dans tous les modes (normal,
   standalone, plein écran), et on ne repose plus que sur l'espace de
   sécurité fourni par chaque téléphone + une petite marge fixe.
   Ce bloc est placé en toute fin de fichier pour l'emporter sur tous
   les réglages précédents (même spécificité + !important : le dernier
   déclaré gagne). */
:root{--gvs-asb-lift:0px!important;}

.android-status-bar,
body.standalone .android-status-bar,
body.fullscreen .android-status-bar,
body.is-fullscreen .android-status-bar{
  transform:none!important;
  margin-top:0!important;
  margin-bottom:0!important;
  padding-top:calc(0px + env(safe-area-inset-top,0px))!important;
  padding-left:calc(6px + env(safe-area-inset-left,0px))!important;
  padding-right:calc(6px + env(safe-area-inset-right,0px))!important;
  padding-bottom:4px!important;
  min-height:0!important;
}

@media (display-mode: fullscreen){
  .android-status-bar{
    transform:none!important;
    margin-top:0!important;
    margin-bottom:0!important;
    padding-top:calc(0px + env(safe-area-inset-top,0px))!important;
  }
}

/* ===================================================================
   GVS+ — Icônes du bandeau caméra/haut-parleur légèrement agrandies (v601)
   -------------------------------------------------------------------
   Les icônes (.android-status-bar) étaient verrouillées à 20px par
   plusieurs réglages successifs (avec max-width/max-height empêchant
   tout agrandissement). On les agrandit ici légèrement, de façon
   uniforme sur tous les appareils et tous les modes (normal, écran
   étroit <400px, application installée). Bloc placé en fin de fichier
   pour l'emporter sur les réglages précédents. */
.android-status-bar .asb-icon,
.android-status-bar .asb-icon-btn svg,
.android-status-bar .asb-bell-icon,
.android-status-bar #asbBattery .asb-icon,
body.standalone .android-status-bar .asb-icon,
body.standalone .android-status-bar .asb-icon-btn svg{
  width:23px!important;
  height:23px!important;
  min-width:23px!important;
  min-height:23px!important;
  max-width:23px!important;
  max-height:23px!important;
}
.android-status-bar .asb-icon-btn,
body.standalone .android-status-bar .asb-icon-btn{
  width:28px!important;
  height:26px!important;
  min-width:28px!important;
  min-height:26px!important;
  padding:0!important;
}
.android-status-bar .asb-chip,
body.standalone .android-status-bar .asb-chip{
  min-height:26px!important;
  height:28px!important;
}
.android-status-bar #asbBattery,
body.standalone .android-status-bar #asbBattery{
  min-height:26px!important;
  height:28px!important;
}
.android-status-bar #asbNetwork .asb-icon{
  width:25px!important;
  height:23px!important;
  min-width:25px!important;
}
.android-status-bar [data-asb-item="alarm"] svg{
  width:25px!important;
  height:23px!important;
}

/* ===================================================================
   GVS+ — Icône de localisation cachée par le défilement du bandeau (v602)
   -------------------------------------------------------------------
   .asb-left (appel/alarme/caméra/torche/localisation) était réglé pour
   rétrécir et défiler (overflow-x:auto, barre invisible) dès que la
   place manquait, alors que .asb-right (batterie/réseau/notifications/
   thème/vibreur/sonnerie/volumes/« plus ») refusait de rétrécir. Sur un
   écran étroit, c'est donc .asb-left qui se faisait comprimer, et son
   dernier bouton — la localisation — sortait du cadre visible, sans
   aucun indice qu'il fallait glisser pour le voir.
   On inverse les rôles : le groupe de gauche garde toujours sa taille
   complète (jamais comprimé, jamais caché), et c'est le groupe de
   droite qui absorbe un éventuel manque de place. */
.android-status-bar .asb-left{
  flex:0 0 auto!important;
  min-width:max-content!important;
  overflow:visible!important;
}
.android-status-bar .asb-right{
  flex:1 1 auto!important;
  min-width:0!important;
  overflow-x:auto!important;
  overflow-y:visible!important;
  scrollbar-width:none!important;
  justify-content:flex-end!important;
}
.android-status-bar .asb-right::-webkit-scrollbar{display:none!important;}

/* ===================================================================
   GVS+ — Icônes masquées : aucun emplacement vide, réajustement automatique (v603)
   -------------------------------------------------------------------
   Quand une icône du bandeau est décochée dans « Gérer les icônes du
   bandeau », elle reçoit la classe .asb-user-hidden. On verrouille ici
   explicitement que cette classe la retire complètement de la mise en
   page (aucune largeur, aucune marge, aucun espace réservé), afin que
   les icônes restantes se resserrent toujours automatiquement, quel
   que soit l'endroit d'où l'icône est retirée. */
.android-status-bar .asb-user-hidden,
.android-status-bar .asb-admin-hidden{
  display:none!important;
  width:0!important;
  min-width:0!important;
  max-width:0!important;
  height:0!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  flex:0 0 0!important;
}
.android-status-bar.gvs-asb-fully-hidden{display:none!important;}


/* GVS+ — Liens et numéros : vert pur, sans effet lumineux */
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg[data-wa-from] .gvs-wa-text .gvs-wa-link,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg[data-wa-from] .gvs-wa-text .gvs-wa-link,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg .gvs-wa-text a[href^="tel:"],
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg .gvs-wa-text a[href^="tel:"]{
  color:#00ff00!important;
  -webkit-text-fill-color:#00ff00!important;
  text-decoration-color:#00ff00!important;
  -webkit-text-decoration-color:#00ff00!important;
  text-shadow:none!important;
  filter:none!important;
  box-shadow:none!important;
}

/* Appui long sur une personne de la liste des messages administrateur */
.gvs-admin-longpress-menu{
  position:fixed;
  inset:0;
  z-index:100000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:20px;
  background:rgba(0,0,0,.38);
}
.gvs-admin-longpress-menu.hidden{display:none!important}
.gvs-admin-longpress-box{
  width:min(340px,92vw);
  border-radius:18px;
  background:var(--card,#fff);
  border:1px solid var(--line,#d9e0ea);
  box-shadow:0 18px 50px rgba(0,0,0,.25);
  padding:16px;
}
.gvs-admin-longpress-title{
  font-weight:800;
  color:var(--ink,#111827);
  margin-bottom:12px;
  text-align:center;
}
.gvs-admin-longpress-delete{
  width:100%;
  min-height:46px;
  border:0;
  border-radius:12px;
  background:#fff0f0;
  color:#c00000;
  font-weight:900;
  font-size:15px;
  cursor:pointer;
}
body.dark .gvs-admin-longpress-box{background:#101b2a;border-color:#2c3a4f}
body.dark .gvs-admin-longpress-title{color:#fff}
body.dark .gvs-admin-longpress-delete{background:#2b1518;color:#ff4d4d}


/* Comptes utilisateurs : bouton d'ouverture des informations */
#userList .user-admin-card .user-select{display:flex;align-items:center;gap:10px;min-width:0;}
#userList .user-admin-card .user-select>span{display:flex;flex-direction:column;min-width:0;}
#userList .user-admin-card .user-toggle-arrow{font-size:18px;color:#0B6B3A;}
body.dark #userList .user-admin-card .user-toggle-arrow{color:#86efac;}
#userList .user-admin-card .user-admin-collapse{display:none;}
#userList .user-admin-card.expanded .user-admin-collapse{display:block;}


/* GVS+ — MODE GRIS : LIENS ET NUMÉROS BLEUS SOULIGNÉS */
html body.dark-mode a,
html body.mode-gris a,
html body.dark a,
html body.gris a,
html[data-theme="dark"] body a,
html[data-theme="gray"] body a,
.dark-mode .link,
.mode-gris .link,
.dark .link,
.gris .link {
  color: #0066FF !important;
  -webkit-text-fill-color: #0066FF !important;
  text-decoration: underline !important;
  text-decoration-color: #0066FF !important;
  border: none !important;
  outline: none !important;
  box-shadow: none !important;
  text-shadow: none !important;
}

/* GVS+ — Espace Client : bandeau du drapeau réduit un peu plus (les
   tentatives précédentes ciblaient "#auth .auth-topbar", mais le bandeau
   n'est pas dans #auth dans le HTML actuel : ces règles ne s'appliquaient
   jamais. Celles-ci utilisent le bon sélecteur, ".auth-topbar" /
   "#authTopbar", et s'appliquent donc réellement). */
.auth-topbar{
  padding:6px 10px !important;
}
.benin-flag-float img{
  width:28px !important;
  height:28px !important;
}
.auth-close-icon{
  width:28px !important;
  height:28px !important;
}

/* GVS+ — horloge circulaire réduite un peu (moins grande que V482) */
.gvs-round-clock{width:118px!important;height:118px!important;}
@media(max-width:400px){.gvs-round-clock{width:106px!important;height:106px!important;}}
@media(max-width:340px){.gvs-round-clock{width:100px!important;height:100px!important;}}

/* GVS+ — écran de veille plein écran à la fermeture de l'app (horloge
   circulaire agrandie). Voir la note dans closeApp()/showLockscreenClock
   (app.js) : aucune app web ne peut atteindre l'écran de verrouillage du
   système sur aucune plateforme, ceci est le plus proche possible. */
#gvsLockscreenOverlay{
  position:fixed;inset:0;z-index:2147483000;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:22px;background:#0B1330;
  animation:gvsLockscreenFade .25s ease both;
}
#gvsLockscreenOverlay.hidden{display:none!important;}
@keyframes gvsLockscreenFade{from{opacity:0}to{opacity:1}}
#gvsLockscreenOverlay .gvs-round-clock-wrap{background:transparent!important;padding:0!important;}
#gvsLockscreenOverlay .gvs-round-clock{
  width:min(64vw,320px)!important;height:min(64vw,320px)!important;
}
#gvsLockscreenOverlay .gvs-round-clock-date{color:#EAF0FF!important;font-size:1.15rem!important;}
#gvsLockscreenHint{
  order:2;color:#8FA0D0;font-size:.92rem;font-weight:600;letter-spacing:.02em;
  text-align:center;padding:0 24px;
}


/* GVS+ — CORRECTION 26/09/2026 : liens, numéros et e-mails visibles en mode sombre.
   Les messages bleus ne doivent jamais rendre leur lien bleu sur bleu.
   Ces règles ciblent uniquement les liens générés par la messagerie. */
html body.dark.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link,
html body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link,
html body.dark.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link:visited,
html body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link:visited,
html body.dark.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link:hover,
html body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link:hover,
html body.dark.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link:active,
html body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link:active {
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  text-decoration:underline!important;
  text-decoration-color:#fff!important;
  text-decoration-thickness:1.5px!important;
  text-underline-offset:3px!important;
  font-weight:800!important;
  text-shadow:none!important;
  background:transparent!important;
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
}
html body.dark.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link.gvs-wa-phone,
html body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg .gvs-wa-text .gvs-wa-link.gvs-wa-phone {
  white-space:nowrap!important;
  overflow-wrap:normal!important;
}

/* ===================================================================
   GVS+ — CORRECTION 26/09/2026 (bis) : côté bulle GRISE (message reçu),
   liens/numéros en BLEU au lieu de vert. La bulle BLEUE (message envoyé)
   n'est pas touchée par cette règle. Placée en toute fin de fichier pour
   l'emporter sur toutes les règles vertes précédentes (même spécificité :
   la dernière déclarée gagne).
   =================================================================== */
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg[data-wa-direction="received"] .gvs-wa-text .gvs-wa-link,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg[data-wa-direction="received"] .gvs-wa-text .gvs-wa-link,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg[data-wa-direction="received"] .gvs-wa-text a[href^="tel:"],
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg[data-wa-direction="received"] .gvs-wa-text a[href^="tel:"] {
  color:#0066ff!important;
  -webkit-text-fill-color:#0066ff!important;
  text-decoration-color:#0066ff!important;
  -webkit-text-decoration-color:#0066ff!important;
  text-shadow:none!important;
  filter:none!important;
}

/* ===================================================================
   GVS+ — RÈGLE FINALE ABSOLUE : liens (URL), e-mails et numéros de
   téléphone détectés automatiquement dans les messages (utilisateur
   ET administrateur, message envoyé ET reçu, mode clair ET sombre)
   sont TOUJOURS en BLEU, avec un soulignement BLEU. Sélecteur à
   spécificité volontairement maximale (classe répétée) pour l'emporter
   sur toutes les règles de couleur (vertes/blanches) accumulées plus
   haut dans ce fichier.
   =================================================================== */
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text .gvs-wa-link,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text .gvs-wa-link,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text a[href^="tel:"],
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text a[href^="tel:"],
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text a[href^="mailto:"],
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text a[href^="mailto:"],
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text .gvs-wa-link:visited,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text .gvs-wa-link:visited,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text .gvs-wa-link:hover,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text .gvs-wa-link:hover,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text .gvs-wa-link:active,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text .gvs-wa-link:active,
html body.dark.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text .gvs-wa-link,
html body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text .gvs-wa-link,
html body.dark.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text a[href^="tel:"],
html body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text a[href^="tel:"]{
  color:#0B6BFF!important;
  -webkit-text-fill-color:#0B6BFF!important;
  text-decoration:underline!important;
  text-decoration-color:#0B6BFF!important;
  -webkit-text-decoration-color:#0B6BFF!important;
  text-decoration-thickness:1.5px!important;
  text-underline-offset:3px!important;
  font-weight:800!important;
  text-shadow:none!important;
  filter:none!important;
  background:transparent!important;
  background-color:transparent!important;
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
}
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text .gvs-wa-link.gvs-wa-phone,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg .gvs-wa-text .gvs-wa-link.gvs-wa-phone{
  white-space:nowrap!important;
  overflow-wrap:normal!important;
}

/* ===================================================================
   GVS+ — CORRECTION 26/09/2026 (ter) : sur le message qu'on a SOI-MÊME
   envoyé (bulle bleue, "sent"), le lien/numéro reste VERT — en mode
   clair ET sombre, pour l'utilisateur ET l'administrateur — comme
   avant. Seul le message REÇU (bulle grise, "received") est bleu
   souligné (règle "RÈGLE FINALE ABSOLUE" juste au-dessus). Sélecteur
   avec l'attribut [data-wa-direction="sent"] en plus, pour l'emporter
   sur cette règle qui ne distinguait pas la direction.
   =================================================================== */
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text .gvs-wa-link,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text .gvs-wa-link,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text a[href^="tel:"],
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text a[href^="tel:"],
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text a[href^="mailto:"],
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text a[href^="mailto:"],
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text .gvs-wa-link:visited,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text .gvs-wa-link:visited,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text .gvs-wa-link:hover,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text .gvs-wa-link:hover,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text .gvs-wa-link:active,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text .gvs-wa-link:active,
html body.dark.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text .gvs-wa-link,
html body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text .gvs-wa-link,
html body.dark.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text a[href^="tel:"],
html body.dark.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text a[href^="tel:"]{
  color:#4ade80!important;
  -webkit-text-fill-color:#4ade80!important;
  text-decoration:underline!important;
  text-decoration-color:#4ade80!important;
  -webkit-text-decoration-color:#4ade80!important;
  text-decoration-thickness:1.5px!important;
  text-underline-offset:3px!important;
  font-weight:800!important;
  text-shadow:none!important;
  filter:none!important;
  background:transparent!important;
  background-color:transparent!important;
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
}
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text .gvs-wa-link.gvs-wa-phone,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg.gvs-wa-msg[data-wa-direction="sent"] .gvs-wa-text .gvs-wa-link.gvs-wa-phone{
  white-space:nowrap!important;
  overflow-wrap:normal!important;
}


/* GVS+ — Création de compte : le formulaire occupe toute la hauteur disponible.
   Le logo animé et « Soyez les bienvenus ! » restent uniquement sur Connexion. */
#auth.auth-signup-mode .authbrand{
  display:none !important;
}

/* GVS+ — Espace Client : bouton « Mot de passe oublié » légèrement réduit. */
#loginTab > div[style*="text-align:right"] .link-btn{
  min-height:36px !important;
  padding:7px 13px !important;
  border-radius:10px !important;
  font-size:clamp(11px, 3.35vw, 13px) !important;
}

/* GVS+ — Création de compte : le bloc doit commencer immédiatement sous
   le bandeau drapeau et utiliser toute la largeur disponible de l'écran. */
body:has(#auth.active) #auth.auth-signup-mode{
  width:100vw !important;
  min-height:calc(100dvh - 64px) !important;
  margin:0 !important;
  padding:0 !important;
}
body:has(#auth.active) main.wrap:has(#auth.auth-signup-mode){
  max-width:none !important;
  width:100% !important;
  padding-top:64px !important;
  padding-left:0 !important;
  padding-right:0 !important;
  padding-bottom:0 !important;
}
#auth.auth-signup-mode .card{
  width:100% !important;
  max-width:none !important;
  margin:0 !important;
  border-left:0 !important;
  border-right:0 !important;
  border-radius:0 !important;
  min-height:calc(100dvh - 64px) !important;
  box-shadow:none !important;
}
#auth.auth-signup-mode .authbrand{display:none !important;}

/* GVS+ — Inscription : espacement lisible entre chaque information.
   On desserre uniquement le formulaire « Créer un compte » afin que les
   libellés, champs et options restent clairement séparés sur mobile. */
body.gvs-fs-active #auth.auth-signup-mode .card{
  padding:16px 20px 22px !important;
}
body.gvs-fs-active #auth.auth-signup-mode .card>h3{
  margin:0 0 16px !important;
}
body.gvs-fs-active #auth.auth-signup-mode #signupTab label{
  display:block !important;
  margin:8px 0 5px !important;
  font-size:14px !important;
  line-height:1.2 !important;
}
body.gvs-fs-active #auth.auth-signup-mode #signupTab input,
body.gvs-fs-active #auth.auth-signup-mode #signupTab select{
  padding:10px 12px !important;
  min-height:48px !important;
  font-size:16px !important;
  line-height:1.25 !important;
}
body.gvs-fs-active #auth.auth-signup-mode #signupTab .formrow{
  gap:14px !important;
  margin-bottom:2px !important;
}
body.gvs-fs-active #auth.auth-signup-mode #signupTab p.small{
  margin:6px 0 4px !important;
  font-size:12px !important;
  line-height:1.35 !important;
}
body.gvs-fs-active #auth.auth-signup-mode #signupTab .password-field{
  margin-bottom:2px !important;
}
body.gvs-fs-active #auth.auth-signup-mode #signupTab .autherr{
  margin-top:6px !important;
}
body.gvs-fs-active #auth.auth-signup-mode #signupTab .gvs-connect-image-btn{
  margin-top:10px !important;
}

/* V+ — réactions sur appui long : sélecteur complet emojis + stickers */
.gvs-wa-message-menu{max-height:min(78vh,560px)!important;overflow:hidden!important;min-width:270px!important;max-width:min(94vw,360px)!important;}
.gvs-wa-message-menu .gvs-wa-quick-reactions{max-width:none!important;overflow-x:auto!important;flex-wrap:nowrap!important;}
.gvs-wa-reaction-tabs{display:flex;gap:5px;padding:5px 4px 7px;border-bottom:1px solid rgba(128,128,128,.22);}
.gvs-wa-reaction-tabs button{flex:1!important;text-align:center!important;padding:8px 7px!important;font-size:13px!important;}
.gvs-wa-reaction-tabs button.active{background:#eaf2ff!important;color:#1677ff!important;}
.gvs-wa-reaction-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:3px;padding:6px 2px;max-height:220px;overflow-y:auto;overscroll-behavior:contain;}
.gvs-wa-reaction-grid.hidden{display:none!important;}
.gvs-wa-reaction-grid button.gvs-wa-reaction-pick{min-width:0!important;width:auto!important;height:36px!important;padding:2px!important;text-align:center!important;font-size:22px!important;border-radius:9px!important;background:transparent!important;}
.gvs-wa-reaction-grid button.gvs-wa-reaction-pick:hover,.gvs-wa-reaction-grid button.gvs-wa-reaction-pick:active{background:rgba(22,119,255,.10)!important;}
.gvs-wa-reaction-grid button.gvs-wa-reaction-pick.is-sticker{font-size:21px!important;}
.gvs-wa-reaction-pack-title{grid-column:1/-1;font-size:11px;font-weight:800;opacity:.65;padding:5px 3px 2px;}
.gvs-wa-message-actions{border-top:1px solid rgba(128,128,128,.18);padding-top:3px;}
body.dark .gvs-wa-reaction-tabs{border-color:#2a374c;}
body.dark .gvs-wa-reaction-tabs button.active{background:#1d3348!important;color:#76ff85!important;}
body.dark .gvs-wa-reaction-grid button.gvs-wa-reaction-pick:hover,body.dark .gvs-wa-reaction-grid button.gvs-wa-reaction-pick:active{background:rgba(118,255,133,.10)!important;}
/* Invitation sous le profil : positionnée nettement plus bas et lisible */
#msgTabPanel-message .gvs-director-start-hint{margin:28px 0 0!important;padding:0 12px 14px!important;font-weight:800!important;font-size:15px!important;line-height:22px!important;}


/* V+ FIX DEFINITIF — appui long Android + panneau réactions */
.gvs-wa-msg{-webkit-touch-callout:none;}
.gvs-wa-message-menu.gvs-wa-reaction-menu{z-index:2147483647!important;}
@media(max-width:760px){
  .gvs-wa-message-menu.gvs-wa-reaction-menu{
    position:fixed!important;
    left:8px!important;
    right:8px!important;
    bottom:max(8px,env(safe-area-inset-bottom))!important;
    top:auto!important;
    width:auto!important;
    min-width:0!important;
    max-width:none!important;
    max-height:72vh!important;
    overflow-y:auto!important;
    border-radius:18px!important;
    padding:8px!important;
    background:var(--gvs-wa-panel,#fff)!important;
    box-shadow:0 -8px 32px rgba(0,0,0,.30)!important;
  }
  .gvs-wa-message-menu.gvs-wa-reaction-menu .gvs-wa-quick-reactions{
    display:flex!important;
    flex-wrap:nowrap!important;
    overflow-x:auto!important;
    padding:4px 2px 7px!important;
  }
  .gvs-wa-message-menu.gvs-wa-reaction-menu .gvs-wa-quick-reactions button{
    flex:0 0 38px!important;
    width:38px!important;
    height:38px!important;
    padding:0!important;
    text-align:center!important;
    font-size:24px!important;
  }
  .gvs-wa-message-menu.gvs-wa-reaction-menu .gvs-wa-reaction-grid{
    max-height:30vh!important;
  }
}
/* Phrase d'accueil sous le profil GVS+ : plus basse et bien lisible. */
#gvsWaUserRoot .gvs-wa-profile-start-note{
  margin-top:22px!important;
  font-weight:800!important;
  font-size:15px!important;
  line-height:22px!important;
  text-align:center!important;
}

/* GVS+ — correction finale : emoji/sticker envoyé seul = aucun fond de bulle */
#gvsWaUserChat .gvs-wa-chat-thread .gvs-wa-msg.emoji-only .gvs-wa-text,
#gvsWaAdminChat .gvs-wa-chat-thread .gvs-wa-msg.emoji-only .gvs-wa-text,
#gvsWaUserChat .gvs-wa-chat-thread .gvs-wa-msg.sticker-only .gvs-wa-text,
#gvsWaAdminChat .gvs-wa-chat-thread .gvs-wa-msg.sticker-only .gvs-wa-text{
  background:transparent!important;
  background-color:transparent!important;
  box-shadow:none!important;
  border:0!important;
  border-radius:0!important;
  padding:0!important;
  margin:0!important;
  color:inherit!important;
  width:auto!important;
  min-width:0!important;
  font-size:34px!important;
  line-height:1.18!important;
}
#gvsWaUserChat .gvs-wa-chat-thread .gvs-wa-msg.emoji-only .gvs-wa-msg-content,
#gvsWaAdminChat .gvs-wa-chat-thread .gvs-wa-msg.emoji-only .gvs-wa-msg-content,
#gvsWaUserChat .gvs-wa-chat-thread .gvs-wa-msg.sticker-only .gvs-wa-msg-content,
#gvsWaAdminChat .gvs-wa-chat-thread .gvs-wa-msg.sticker-only .gvs-wa-msg-content{
  background:transparent!important;
  box-shadow:none!important;
}
/* Phrase sous le profil : réellement descendue, sans rester collée à la photo */
#gvsWaUserRoot .gvs-wa-director-card .gvs-wa-profile-start-note{
  bottom:-16px!important;
  top:auto!important;
  margin:0!important;
  font-weight:800!important;
}

/* V542 FINAL — Emojis/stickers seuls : aucun fond bleu/gris dans la conversation. */
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.emoji-only,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.emoji-only,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.sticker-only,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.sticker-only,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.emoji-only .gvs-wa-msg-content,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.emoji-only .gvs-wa-msg-content,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.sticker-only .gvs-wa-msg-content,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.sticker-only .gvs-wa-msg-content,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.emoji-only .gvs-wa-line,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.emoji-only .gvs-wa-line,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.sticker-only .gvs-wa-line,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.sticker-only .gvs-wa-line,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.emoji-only .gvs-wa-text,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.emoji-only .gvs-wa-text,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.sticker-only .gvs-wa-text,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.sticker-only .gvs-wa-text {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.emoji-only .gvs-wa-text,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.emoji-only .gvs-wa-text,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.sticker-only .gvs-wa-text,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.sticker-only .gvs-wa-text {
  padding: 0 !important;
  margin: 0 !important;
  width: auto !important;
  max-width: none !important;
  min-width: 0 !important;
  display: inline !important;
  font-size: 38px !important;
  line-height: 1.12 !important;
  color: inherit !important;
}
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.emoji-only .gvs-wa-line,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.emoji-only .gvs-wa-line,
html body.gvs-wa-user-chat-open #gvsWaUserChat .gvs-wa-msg.sticker-only .gvs-wa-line,
html body.gvs-wa-admin-chat-open #gvsWaAdminChat .gvs-wa-msg.sticker-only .gvs-wa-line {
  padding: 0 !important;
  margin: 0 !important;
  gap: 4px !important;
  background: transparent !important;
  width: auto !important;
  max-width: 100% !important;
}

/* V543 FINAL — Chiffres 1 à 12 de l'horloge plus grands et contrastés. */
.gvs-clock-numbers text {
  font-family: Arial, Helvetica, sans-serif !important;
  font-size: 11.5px !important;
  font-weight: 900 !important;
  fill: #0B1330 !important;
  stroke: #FFFFFF !important;
  stroke-width: 1.35px !important;
  paint-order: stroke fill !important;
  stroke-linejoin: round !important;
  text-anchor: middle !important;
  dominant-baseline: central !important;
}
body.dark .gvs-clock-numbers text {
  fill: #FFFFFF !important;
  stroke: #141B2E !important;
  stroke-width: 1.35px !important;
}

/* GVS+ — réactions de message visibles comme dans WhatsApp/Facebook.
   Elles restent attachées au message et apparaissent en petite pastille sous
   son angle inférieur, avec le nombre de réactions. */
.gvs-wa-msg-content{position:relative!important;overflow:visible!important;}
.gvs-wa-reactions{
  display:flex!important;
  align-items:center!important;
  flex-wrap:wrap!important;
  gap:2px!important;
  min-height:0!important;
  margin-top:-7px!important;
  margin-bottom:2px!important;
  position:relative!important;
  z-index:8!important;
  pointer-events:auto!important;
}
.gvs-wa-msg.out .gvs-wa-reactions{justify-content:flex-end!important;margin-right:7px!important;}
.gvs-wa-msg.in .gvs-wa-reactions{justify-content:flex-start!important;margin-left:7px!important;}
.gvs-wa-reaction{
  appearance:none!important;
  -webkit-appearance:none!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:2px!important;
  min-width:30px!important;
  height:27px!important;
  padding:2px 7px!important;
  border:1px solid rgba(120,130,145,.28)!important;
  border-radius:15px!important;
  background:#fff!important;
  color:#20242a!important;
  box-shadow:0 1px 4px rgba(0,0,0,.16)!important;
  font-size:18px!important;
  line-height:1!important;
  cursor:pointer!important;
}
.gvs-wa-reaction b{font-size:11px!important;font-weight:800!important;color:#586273!important;line-height:1!important;}
.gvs-wa-reaction.mine{border-color:#2f6fed!important;box-shadow:0 0 0 1px rgba(47,111,237,.18),0 1px 4px rgba(0,0,0,.16)!important;}
body.dark .gvs-wa-reaction{background:#182231!important;color:#fff!important;border-color:#4b5d73!important;}
body.dark .gvs-wa-reaction b{color:#d7e0ec!important;}
body.dark .gvs-wa-reaction.mine{border-color:#76ff85!important;box-shadow:0 0 0 1px rgba(118,255,133,.18),0 1px 4px rgba(0,0,0,.25)!important;}
@media(max-width:760px){
  .gvs-wa-reaction{min-width:29px!important;height:26px!important;font-size:17px!important;padding:2px 6px!important;}
}

/* ── Appel vidéo (Jitsi Meet) ────────────────────────────────────────── */
/* Carte « Appel vidéo » dans le fil de discussion */
.gvs-wa-call-card{
  display:flex; align-items:center; gap:10px;
  background:#fff; border:1px solid rgba(0,0,0,.08); border-radius:14px;
  padding:10px 14px; cursor:pointer; min-width:190px; text-align:left;
  font:inherit; color:inherit;
}
.gvs-wa-call-card:active{ opacity:.85; }
.gvs-wa-call-icon{ font-size:22px; line-height:1; }
.gvs-wa-call-text{ display:flex; flex-direction:column; gap:2px; }
.gvs-wa-call-text small{ opacity:.65; font-weight:400; }
body.dark .gvs-wa-call-card{ background:#1f2937; border-color:rgba(255,255,255,.12); color:#fff; }

/* Fenêtre d'appel plein écran (iframe Jitsi Meet) */
.gvs-wa-call-modal{
  position:fixed; inset:0; z-index:2147483647;
  display:none; flex-direction:column; background:#000;
}
.gvs-wa-call-modal.open{ display:flex; }
.gvs-wa-call-modal-bar{
  display:flex; justify-content:flex-end; padding:calc(env(safe-area-inset-top,0px) + 8px) 10px 8px;
  background:#000;
}
.gvs-wa-call-hangup{
  background:#e53935; color:#fff; border:0; border-radius:999px;
  padding:8px 16px; font-weight:600; font-size:14px;
}
.gvs-wa-call-modal #gvsWaCallFrame{
  flex:1; width:100%; border:0;
  padding-bottom:env(safe-area-inset-bottom,0px);
}
body.gvs-wa-call-open{ overflow:hidden; }

/* ===== Thème d'horloge (admin) — 10 formats visuels pour l'horloge circulaire ===== */
.gvs-clock-format-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;margin-top:10px}
.gvs-clock-format-opt{display:flex;align-items:center;gap:9px;font-size:12.5px;padding:9px 10px;border:1px solid #e5e7eb;border-radius:10px;cursor:pointer}
.gvs-clock-format-opt input{margin:0}
.gvs-clock-format-opt.active{border-color:#0B3FA8;background:#eef4ff}
body.dark .gvs-clock-format-opt{border-color:#2a374c;color:#e7ecf6}
body.dark .gvs-clock-format-opt.active{border-color:#7CFFB2;background:#132033}
@media(max-width:480px){.gvs-clock-format-grid{grid-template-columns:1fr}}
.gvs-clock-format-swatch{width:22px;height:22px;min-width:22px;border-radius:50%;display:inline-block;border:3px solid #0B3FA8;background:radial-gradient(circle,#fff 54%,#0B3FA8 55%)}
.gvs-clock-format-swatch-1{border-color:#0B3FA8;background:radial-gradient(circle,#fff 54%,#0B3FA8 55%)}
.gvs-clock-format-swatch-2{border-color:#D4AF37;background:radial-gradient(circle,#fff 54%,#D4AF37 55%)}
.gvs-clock-format-swatch-3{border-color:#E11D48;background:radial-gradient(circle,#fff 54%,#E11D48 55%)}
.gvs-clock-format-swatch-4{border-color:#8B5CF6;background:radial-gradient(circle,#fff 54%,#8B5CF6 55%)}
.gvs-clock-format-swatch-5{border-color:#F59E0B;background:radial-gradient(circle,#fff 54%,#F59E0B 55%)}
.gvs-clock-format-swatch-6{border-color:#2b2f36;background:radial-gradient(circle,#fff 54%,#2b2f36 55%)}
.gvs-clock-format-swatch-7{border-color:#14B8A6;background:radial-gradient(circle,#fff 54%,#14B8A6 55%)}
.gvs-clock-format-swatch-8{border-color:#EC4899;background:radial-gradient(circle,#fff 54%,#EC4899 55%)}
.gvs-clock-format-swatch-9{border-color:#9CA3AF;background:radial-gradient(circle,#fff 54%,#9CA3AF 55%)}
.gvs-clock-format-swatch-10{border-color:#e63946;background:conic-gradient(#e63946,#f4a300,#2ecc71,#1e90ff,#8b5cf6,#e63946)}

/* Format 1 = réglages déjà définis plus haut (par défaut, aucune règle supplémentaire). */

/* Format 2 — Doré */
@keyframes gvsClockGlowFmt2{0%{box-shadow:0 0 6px 1px rgba(212,175,55,.45),0 0 14px 3px rgba(212,175,55,.25)}100%{box-shadow:0 0 10px 3px rgba(212,175,55,.8),0 0 22px 7px rgba(212,175,55,.5)}}
body.gvs-clock-format-2 .gvs-round-clock,body.dark.gvs-clock-format-2 .gvs-round-clock{border-color:#D4AF37!important;animation-name:gvsClockGlowFmt2!important}

/* Format 3 — Rubis */
@keyframes gvsClockGlowFmt3{0%{box-shadow:0 0 6px 1px rgba(225,29,72,.45),0 0 14px 3px rgba(225,29,72,.25)}100%{box-shadow:0 0 10px 3px rgba(225,29,72,.8),0 0 22px 7px rgba(225,29,72,.5)}}
body.gvs-clock-format-3 .gvs-round-clock,body.dark.gvs-clock-format-3 .gvs-round-clock{border-color:#E11D48!important;animation-name:gvsClockGlowFmt3!important}

/* Format 4 — Violet */
@keyframes gvsClockGlowFmt4{0%{box-shadow:0 0 6px 1px rgba(139,92,246,.45),0 0 14px 3px rgba(139,92,246,.25)}100%{box-shadow:0 0 10px 3px rgba(139,92,246,.8),0 0 22px 7px rgba(139,92,246,.5)}}
body.gvs-clock-format-4 .gvs-round-clock,body.dark.gvs-clock-format-4 .gvs-round-clock{border-color:#8B5CF6!important;animation-name:gvsClockGlowFmt4!important}

/* Format 5 — Ambre */
@keyframes gvsClockGlowFmt5{0%{box-shadow:0 0 6px 1px rgba(245,158,11,.45),0 0 14px 3px rgba(245,158,11,.25)}100%{box-shadow:0 0 10px 3px rgba(245,158,11,.8),0 0 22px 7px rgba(245,158,11,.5)}}
body.gvs-clock-format-5 .gvs-round-clock,body.dark.gvs-clock-format-5 .gvs-round-clock{border-color:#F59E0B!important;animation-name:gvsClockGlowFmt5!important}

/* Format 6 — Minimaliste noir (sans lueur ni animation) */
body.gvs-clock-format-6 .gvs-round-clock,body.dark.gvs-clock-format-6 .gvs-round-clock{border-color:#2b2f36!important;box-shadow:none!important;animation:none!important}

/* Format 7 — Turquoise */
@keyframes gvsClockGlowFmt7{0%{box-shadow:0 0 6px 1px rgba(20,184,166,.45),0 0 14px 3px rgba(20,184,166,.25)}100%{box-shadow:0 0 10px 3px rgba(20,184,166,.8),0 0 22px 7px rgba(20,184,166,.5)}}
body.gvs-clock-format-7 .gvs-round-clock,body.dark.gvs-clock-format-7 .gvs-round-clock{border-color:#14B8A6!important;animation-name:gvsClockGlowFmt7!important}

/* Format 8 — Fuchsia */
@keyframes gvsClockGlowFmt8{0%{box-shadow:0 0 6px 1px rgba(236,72,153,.45),0 0 14px 3px rgba(236,72,153,.25)}100%{box-shadow:0 0 10px 3px rgba(236,72,153,.8),0 0 22px 7px rgba(236,72,153,.5)}}
body.gvs-clock-format-8 .gvs-round-clock,body.dark.gvs-clock-format-8 .gvs-round-clock{border-color:#EC4899!important;animation-name:gvsClockGlowFmt8!important}

/* Format 9 — Argenté */
@keyframes gvsClockGlowFmt9{0%{box-shadow:0 0 6px 1px rgba(156,163,175,.45),0 0 14px 3px rgba(156,163,175,.25)}100%{box-shadow:0 0 10px 3px rgba(156,163,175,.8),0 0 22px 7px rgba(156,163,175,.5)}}
body.gvs-clock-format-9 .gvs-round-clock,body.dark.gvs-clock-format-9 .gvs-round-clock{border-color:#9CA3AF!important;animation-name:gvsClockGlowFmt9!important}

/* Format 10 — Arc-en-ciel (couleur du contour et de la lueur qui défile) */
@keyframes gvsClockGlowFmt10{
  0%{border-color:#e63946;box-shadow:0 0 8px 2px rgba(230,57,70,.55),0 0 18px 5px rgba(230,57,70,.35)}
  20%{border-color:#f4a300;box-shadow:0 0 8px 2px rgba(244,163,0,.55),0 0 18px 5px rgba(244,163,0,.35)}
  40%{border-color:#2ecc71;box-shadow:0 0 8px 2px rgba(46,204,113,.55),0 0 18px 5px rgba(46,204,113,.35)}
  60%{border-color:#1e90ff;box-shadow:0 0 8px 2px rgba(30,144,255,.55),0 0 18px 5px rgba(30,144,255,.35)}
  80%{border-color:#8b5cf6;box-shadow:0 0 8px 2px rgba(139,92,246,.55),0 0 18px 5px rgba(139,92,246,.35)}
  100%{border-color:#e63946;box-shadow:0 0 8px 2px rgba(230,57,70,.55),0 0 18px 5px rgba(230,57,70,.35)}
}
body.gvs-clock-format-10 .gvs-round-clock,body.dark.gvs-clock-format-10 .gvs-round-clock{animation:gvsClockGlowFmt10 6s linear infinite!important}

/* ===== Type (analogique/numérique) et forme du cadre de l'horloge ===== */
.gvs-clock-shape-swatch{width:22px;height:22px;min-width:22px;display:inline-block;border:2.5px solid #0B3FA8;background:#fff}
.gvs-clock-shape-swatch-round{border-radius:50%}
.gvs-clock-shape-swatch-square{border-radius:0}
.gvs-clock-shape-swatch-rounded{border-radius:28%}
.gvs-clock-shape-swatch-hexagon{border-radius:0;clip-path:polygon(25% 0%,75% 0%,100% 50%,75% 100%,25% 100%,0% 50%)}
body.dark .gvs-clock-shape-swatch{background:#141B2E;border-color:#7CFFB2}

/* Affichage numérique : masque le cadran à aiguilles et affiche l'heure en chiffres,
   tout en gardant le contour/lueur colorée du format sélectionné. */
.gvs-clock-digital{
  display:none;position:absolute;inset:0;align-items:center;justify-content:center;
  font:800 15px/1 var(--font-body,Arial,sans-serif);letter-spacing:.5px;
  color:#3C4874;user-select:none;
}
body.dark .gvs-clock-digital{color:#B9C4E0}
body.gvs-clock-type-digital .gvs-round-clock-svg{display:none!important}
body.gvs-clock-type-digital .gvs-clock-digital{display:flex!important}
@media(max-width:360px){.gvs-clock-digital{font-size:12.5px}}

/* Forme du cadre : change le contour de l'horloge (le cadran/aiguilles restent ronds à l'intérieur). */
body.gvs-clock-shape-square .gvs-round-clock{border-radius:0!important}
body.gvs-clock-shape-rounded .gvs-round-clock{border-radius:26%!important}
body.gvs-clock-shape-hexagon .gvs-round-clock{
  border-radius:0!important;
  clip-path:polygon(25% 0%,75% 0%,100% 50%,75% 100%,25% 100%,0% 50%)!important;
}

/* GVS+ — l'horloge circulaire reste au premier plan (par-dessus le bandeau
   GVS+ et le bouton Power rouge si jamais ils se chevauchent), mais garde un
   espace normal sous le bandeau Wi-Fi/batterie pour ne plus rentrer dedans. */
#gvsRoundClockWrap.gvs-round-clock-wrap{
  margin-top:6px!important;
  padding-top:0!important;
  position:relative!important;
  z-index:500!important;
  background:transparent!important;
}
body.dark #gvsRoundClockWrap.gvs-round-clock-wrap{
  background:transparent!important;
}
/* V520 — CORRECTION DÉFINITIVE : l'ancienne règle spécifique à l'Accueil
   (margin-top:-6px) faisait remonter l'horloge exactement dans le bandeau
   Wi-Fi/batterie sur cette page. Elle est supprimée : l'Accueil garde
   désormais le même espacement positif (margin-top:6px) que toutes les
   autres rubriques, défini juste au-dessus. Ne pas réintroduire de marge
   négative ici : c'est la cause exacte du bug qui revenait sans cesse.
   Si l'horloge doit un jour se rapprocher du bandeau bleu GVS+, réduire la
   valeur positive (ex. 3px) plutôt que de repasser en négatif. */
#gvsMiniBrandBar.gvs-mini-brand-bar{
  position:relative!important;
  z-index:50!important;
  background:transparent!important;
}

/* GVS+ — Grand logo en arrière-plan du site, sur toutes les pages.
   Filigrane fixe, très discret (n'affecte pas la lisibilité du texte),
   visible dans les espaces non couverts par les cartes/blocs opaques
   (comme le fond clair/sombre déjà visible entre les carreaux d'accueil).
   Placé sur ::before avec z-index négatif : reste sous main.wrap (z-index:1)
   et sous #appHeader (z-index:9990), donc ne gêne jamais le contenu ni les
   boutons. */
body::before{
  content:'';
  position:fixed;
  inset:0;
  z-index:-1;
  pointer-events:none;
  background-image:var(--gvs-site-logo-url, url('icons/logo.png'));
  background-repeat:no-repeat;
  background-position:center 42%;
  background-size:min(82vw,460px) auto;
  opacity:.07;
}
body.dark::before{
  opacity:.09;
  filter:brightness(0) invert(1);
}
@media(max-width:360px){
  body::before{background-size:min(88vw,340px) auto;}
}

/* ============================================================
   GVS+ — correctif : bulle des messages vocaux façon WhatsApp
   Avant : le lecteur vocal (.gvs-wa-voice) n'avait AUCUN fond et sa
   couleur de texte dépendait d'un héritage lointain (body > ... >
   .gvs-wa-voice), ce qui le rendait invisible en mode sombre (icône,
   vague sonore et durée de la même couleur que le fond).
   Après : la bulle vocale reprend EXACTEMENT les couleurs déjà
   éprouvées des bulles de texte (bleu à droite pour "moi", gris clair/
   sombre à gauche pour l'autre), donc toujours lisible, dans les deux
   thèmes, comme sur WhatsApp. Placé en toute fin de fichier + haute
   spécificité pour gagner sur les anciennes règles "fond transparent".
   ============================================================ */
.gvs-wa-chat-thread .gvs-wa-msg.is-voice .gvs-wa-voice{
  padding:9px 12px!important;
  border-radius:18px!important;
  box-shadow:0 2px 6px rgba(0,0,0,.06)!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.is-voice.gvs-wa-own .gvs-wa-voice{
  background:#2f6fed!important;
  color:#fff!important;
  border-bottom-right-radius:6px!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.is-voice.gvs-wa-other .gvs-wa-voice{
  background:#eef1f6!important;
  color:#1c1e21!important;
  border-bottom-left-radius:6px!important;
}
body.dark .gvs-wa-chat-thread .gvs-wa-msg.is-voice.gvs-wa-other .gvs-wa-voice{
  background:#232f42!important;
  color:#f2f5fa!important;
}
body.dark .gvs-wa-chat-thread .gvs-wa-msg.is-voice.gvs-wa-own .gvs-wa-voice{
  background:#2f6fed!important;
  color:#fff!important;
}
/* Bouton lecture, vague sonore, curseur, durée et vitesse : toujours
   dans la couleur du texte de LEUR bulle (héritée de .gvs-wa-voice
   ci-dessus), donc toujours visibles quel que soit le thème. */
.gvs-wa-chat-thread .gvs-wa-msg.is-voice .gvs-wa-voice-play{
  background:rgba(127,127,127,.22)!important;
  color:inherit!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.is-voice .gvs-wa-voice-wave i{
  background:currentColor!important;
  opacity:.9!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.is-voice .gvs-wa-voice-duration,
.gvs-wa-chat-thread .gvs-wa-msg.is-voice .gvs-wa-voice-speed,
.gvs-wa-chat-thread .gvs-wa-msg.is-voice .gvs-wa-voice-bottom{
  color:inherit!important;
  opacity:.85!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.is-voice .gvs-wa-voice-speed:hover{
  background:rgba(127,127,127,.22)!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.is-voice .gvs-wa-voice-progress{
  accent-color:currentColor!important;
}

/* ============================================================
   GVS+ — vocal : bouton play + vague sur une seule ligne,
   indication visuelle "en cours de lecture", et réactions
   repositionnées proprement entre le message et l'heure.
   ============================================================ */

/* 1) Bouton play toujours sur la même ligne que la vague sonore,
   quelle que soit la largeur d'écran : jamais de retour à la ligne,
   le bouton garde sa taille, la vague prend le reste de la place. */
.gvs-wa-chat-thread .gvs-wa-msg.is-voice .gvs-wa-voice{
  flex-wrap:nowrap!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.is-voice .gvs-wa-voice-play{
  flex:0 0 auto!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.is-voice .gvs-wa-voice-track{
  flex:1 1 auto!important;
}

/* 2) "En cours de lecture" : la vague sonore ondule pendant la
   lecture (classe posée/retirée en JS sur play/pause/ended), et le
   bouton play se met en évidence pendant ce temps. */
.gvs-wa-chat-thread .gvs-wa-msg.is-voice .gvs-wa-voice-wave i{
  transition:transform .15s ease,opacity .15s ease;
}
.gvs-wa-chat-thread .gvs-wa-msg.is-voice .gvs-wa-voice.gvs-wa-voice-playing .gvs-wa-voice-wave i{
  animation:gvsVoicePlayingWave .9s ease-in-out infinite;
  animation-delay:calc(var(--wi,0) * 45ms);
}
.gvs-wa-chat-thread .gvs-wa-msg.is-voice .gvs-wa-voice.gvs-wa-voice-playing .gvs-wa-voice-play{
  background:rgba(127,127,127,.38)!important;
  box-shadow:0 0 0 2px currentColor inset!important;
}
@keyframes gvsVoicePlayingWave{
  0%,100%{transform:scaleY(.55);opacity:.55}
  50%{transform:scaleY(1.15);opacity:1}
}
@media(prefers-reduced-motion:reduce){
  .gvs-wa-chat-thread .gvs-wa-msg.is-voice .gvs-wa-voice.gvs-wa-voice-playing .gvs-wa-voice-wave i{animation:none!important;opacity:1!important;}
}

/* 3) Réactions (emojis/stickers) : rangée propre ENTRE le message et
   l'heure, sans chevaucher ni le message ni l'heure — comme sur
   WhatsApp, mais sans le chevauchement qui les faisait recouvrir la
   bulle (vocale en particulier, désormais avec un fond opaque). */
.gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-reactions{
  margin-top:4px!important;
  margin-bottom:2px!important;
}

/* ============================================================
   GVS+ — témoin d'enregistrement vocal toujours visible, en temps
   réel, dans les deux thèmes (même logique que le correctif des
   bulles vocales : des couleurs explicites plutôt qu'héritées,
   pour ne jamais dépendre d'un contexte CSS changeant ailleurs).
   ============================================================ */
.gvs-wa-composer .gvs-wa-rec-inline:not(.hidden){
  display:flex!important;
  visibility:visible!important;
  opacity:1!important;
}
.gvs-wa-composer .gvs-wa-rec-dot{
  color:#e53935!important;
}
.gvs-wa-composer .gvs-wa-rec-inline b{
  color:#1d3557!important;
}
body.dark .gvs-wa-composer .gvs-wa-rec-inline b{
  color:#eef4ff!important;
}
.gvs-wa-composer .gvs-wa-rec-wave{
  color:#1688ff!important;
}
.gvs-wa-composer .gvs-wa-rec-cancel{
  color:#566b86!important;
}
body.dark .gvs-wa-composer .gvs-wa-rec-cancel{
  color:#b9c6d8!important;
}
/* La vague réagit en direct au niveau du micro (classe .live posée en JS) ;
   tant qu'elle n'est pas encore branchée, une ondulation de secours confirme
   quand même que l'enregistrement est bien en cours. */
.gvs-wa-composer .gvs-wa-rec-wave i{
  background:currentColor!important;
}

/* ============================================================
   GVS+ — citation de réponse (appui long → Répondre) VRAIMENT
   collée à la bulle du message concerné, comme sur WhatsApp.
   Avant : la citation était une carte semi-transparente séparée,
   posée sur le fond de la conversation (pas sur la bulle), donc
   visuellement détachée du message et flottant au-dessus de
   n'importe quel message. Après : la citation forme la partie
   haute de LA MÊME bulle que le message qui répond (couleur
   assortie, aucun espace, coins fusionnés) — elle n'appartient
   donc plus qu'à ce seul message.
   ============================================================ */
.gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-quote{
  margin-bottom:0!important;
  border-top-left-radius:14px!important;
  border-top-right-radius:14px!important;
  border-bottom-left-radius:4px!important;
  border-bottom-right-radius:4px!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-own .gvs-wa-quote{
  background:#3f7cf3!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-own .gvs-wa-quote-name,
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-own .gvs-wa-quote-text{
  color:#fff!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-own .gvs-wa-quote-bar{
  background:#fff!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-other .gvs-wa-quote{
  background:#e1e6ee!important;
}
body.dark .gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-other .gvs-wa-quote{
  background:#2c3b56!important;
}
/* La bulle (texte ou vocal) qui suit directement une citation perd ses
   coins arrondis du haut : les deux blocs se rejoignent sans espace, comme
   une seule et même bulle en deux parties. */
.gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-quote + .gvs-wa-line .gvs-wa-text,
.gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-quote + .gvs-wa-line .gvs-wa-voice{
  border-top-left-radius:4px!important;
  border-top-right-radius:4px!important;
}

/* GVS+ — fenêtre du bas des messages (texte + vocaux), style Facebook/Messenger */
.gvs-wa-sheet-backdrop{position:fixed;inset:0;z-index:2147483646;background:rgba(0,0,0,.5);animation:gvsSheetFade .18s ease-out;}
.gvs-wa-message-menu.gvs-wa-sheet{
  position:fixed!important;left:0!important;right:0!important;top:auto!important;bottom:0!important;
  width:auto!important;min-width:0!important;max-width:none!important;max-height:88vh!important;
  overflow-y:auto!important;overscroll-behavior:contain;
  padding:0 0 max(10px,env(safe-area-inset-bottom))!important;gap:0!important;
  border-radius:22px 22px 0 0!important;border:0!important;
  background:#fff!important;color:#1c1e21!important;
  box-shadow:0 -6px 30px rgba(0,0,0,.25)!important;z-index:2147483647!important;
  animation:gvsSheetUp .22s ease-out;
}
body.dark .gvs-wa-message-menu.gvs-wa-sheet{background:#242526!important;color:#e4e6eb!important;}
.gvs-wa-sheet .gvs-wa-sheet-grab{display:flex;justify-content:center;padding:12px 0 8px;touch-action:none;}
.gvs-wa-sheet .gvs-wa-sheet-grab span{width:42px;height:5px;border-radius:3px;background:#ced0d4;}
body.dark .gvs-wa-sheet .gvs-wa-sheet-grab span{background:#4e4f50;}
.gvs-wa-sheet .gvs-wa-quick-reactions{display:flex!important;flex-wrap:nowrap!important;justify-content:space-between;align-items:center;gap:0;padding:6px 14px 14px!important;border-bottom:1px solid #e4e6eb;overflow:visible!important;}
body.dark .gvs-wa-sheet .gvs-wa-quick-reactions{border-color:#3e4042;}
.gvs-wa-sheet .gvs-wa-quick-reactions button{flex:0 0 auto!important;width:46px!important;height:46px!important;padding:0!important;border-radius:50%!important;background:transparent!important;font-size:34px!important;line-height:1!important;text-align:center!important;display:flex;align-items:center;justify-content:center;transition:transform .12s;}
.gvs-wa-sheet .gvs-wa-quick-reactions button:active{transform:scale(1.25);}
.gvs-wa-sheet .gvs-wa-quick-reactions button.gvs-wa-react-more{width:44px!important;height:44px!important;background:#e4e6eb!important;color:#050505!important;font-size:30px!important;font-weight:400;}
body.dark .gvs-wa-sheet .gvs-wa-quick-reactions button.gvs-wa-react-more{background:#3a3b3c!important;color:#e4e6eb!important;}
.gvs-wa-sheet .gvs-wa-reaction-panel{padding:6px 10px 4px;border-bottom:1px solid #e4e6eb;}
.gvs-wa-sheet .gvs-wa-reaction-panel.hidden{display:none!important;}
body.dark .gvs-wa-sheet .gvs-wa-reaction-panel{border-color:#3e4042;}
.gvs-wa-sheet .gvs-wa-reaction-grid{max-height:34vh!important;}
.gvs-wa-sheet .gvs-wa-message-actions{border:0!important;padding:8px 0 0!important;display:flex;flex-direction:column;}
.gvs-wa-sheet button.gvs-wa-sheet-item{display:flex!important;align-items:center;gap:16px;width:100%;padding:10px 16px!important;border-radius:0!important;background:transparent!important;font:500 19px/1.2 inherit!important;color:inherit!important;text-align:left;}
.gvs-wa-sheet button.gvs-wa-sheet-item:active{background:rgba(128,128,128,.14)!important;}
.gvs-wa-sheet .gvs-wa-sheet-ico{flex:0 0 auto;width:48px;height:48px;border-radius:50%;background:#e4e6eb;color:#050505;display:flex;align-items:center;justify-content:center;}
body.dark .gvs-wa-sheet .gvs-wa-sheet-ico{background:#3a3b3c;color:#e4e6eb;}
.gvs-wa-sheet .gvs-wa-menu-danger .gvs-wa-sheet-ico{color:#fa3e5a;}
.gvs-wa-sheet .gvs-wa-menu-danger{color:inherit!important;}
@keyframes gvsSheetUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
@keyframes gvsSheetFade{from{opacity:0}to{opacity:1}}
@media(min-width:761px){
  .gvs-wa-message-menu.gvs-wa-sheet{left:50%!important;right:auto!important;width:min(480px,100vw)!important;transform:translateX(-50%);animation:none;}
}
/* Sélectionner du texte */
.gvs-wa-select-overlay{position:fixed;inset:0;z-index:2147483647;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;padding:18px;}
.gvs-wa-select-box{width:min(440px,100%);max-height:80vh;display:flex;flex-direction:column;gap:12px;background:#fff;color:#1c1e21;border-radius:18px;padding:16px;box-shadow:0 10px 40px rgba(0,0,0,.4);}
body.dark .gvs-wa-select-box{background:#242526;color:#e4e6eb;}
.gvs-wa-select-title{font-weight:800;font-size:16px;}
.gvs-wa-select-text{overflow-y:auto;user-select:text!important;-webkit-user-select:text!important;-webkit-touch-callout:default;white-space:pre-wrap;word-break:break-word;font-size:17px;line-height:1.4;padding:10px;border-radius:12px;background:rgba(128,128,128,.12);}
.gvs-wa-select-actions{display:flex;gap:8px;}
.gvs-wa-select-actions button{flex:1;border:0;border-radius:12px;padding:12px;font-weight:700;font-size:15px;background:#0866ff;color:#fff;}
.gvs-wa-select-actions button[data-sel-close]{background:rgba(128,128,128,.22);color:inherit;}

/* GVS+ — sélecteur d'emojis organisé (sans stickers) */
.gvs-emoji-picker{display:flex;flex-direction:column;min-height:0;}
.gvs-emoji-cats{display:flex;gap:2px;padding:2px 2px 6px;border-bottom:1px solid rgba(128,128,128,.22);overflow-x:auto;scrollbar-width:none;}
.gvs-emoji-cats::-webkit-scrollbar{display:none;}
.gvs-emoji-picker .gvs-emoji-cat{flex:1 0 auto!important;width:auto!important;min-width:36px;height:36px!important;padding:0 6px!important;border:0!important;border-bottom:3px solid transparent!important;border-radius:8px 8px 0 0!important;background:transparent!important;font-size:20px!important;line-height:1!important;text-align:center!important;opacity:.55;cursor:pointer;}
.gvs-emoji-picker .gvs-emoji-cat.active{opacity:1;border-bottom-color:#0866ff!important;}
body.dark .gvs-emoji-picker .gvs-emoji-cat.active{border-bottom-color:#76ff85!important;}
.gvs-emoji-scroll{position:relative;max-height:min(38vh,260px);overflow-y:auto;overscroll-behavior:contain;padding:0 2px 4px;scrollbar-width:thin;}
.gvs-emoji-title{position:sticky;top:0;z-index:2;background:#fff;color:#65676b;font-size:12px;font-weight:800;padding:8px 4px 4px;}
body.dark .gvs-emoji-title{background:#242526;color:#b0b3b8;}
.gvs-wa-sticker-panel .gvs-emoji-title{background:#fff;}
body.dark .gvs-wa-sticker-panel .gvs-emoji-title{background:#182231;}
.gvs-emoji-grid{display:grid!important;grid-template-columns:repeat(8,minmax(0,1fr))!important;gap:2px!important;}
.gvs-emoji-picker .gvs-emoji-btn{min-width:0!important;width:auto!important;height:40px!important;min-height:0!important;padding:0!important;border:0!important;border-radius:10px!important;background:transparent!important;font-size:26px!important;line-height:1!important;text-align:center!important;display:flex;align-items:center;justify-content:center;cursor:pointer;}
.gvs-emoji-picker .gvs-emoji-btn:active{background:rgba(128,128,128,.2)!important;transform:scale(1.15);}
@media(max-width:380px){.gvs-emoji-grid{grid-template-columns:repeat(7,minmax(0,1fr))!important;}}
.gvs-wa-sheet .gvs-emoji-scroll{max-height:36vh;}

/* GVS+ — date et heure centrées dans la conversation, comme Facebook */
.gvs-wa-chat-thread .gvs-wa-day-sep{align-self:center!important;width:100%!important;display:flex!important;justify-content:center!important;margin:12px 0 6px!important;}
.gvs-wa-chat-thread .gvs-wa-day-sep>span{background:transparent!important;padding:0 8px!important;font-size:12px!important;font-weight:500!important;color:#65676b!important;text-align:center!important;border-radius:0!important;}
body.dark .gvs-wa-chat-thread .gvs-wa-day-sep>span{background:transparent!important;color:#b0b3b8!important;}
.gvs-wa-meta:empty{display:none!important;}

/* GVS+ — réactions collées à la bulle (bord bas, côté intérieur), comme Facebook */
.gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-msg-content>.gvs-wa-reactions{
  margin-top:-11px!important;margin-bottom:8px!important;padding:0!important;gap:3px!important;
  position:relative!important;z-index:9!important;flex-wrap:nowrap!important;width:auto!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.out .gvs-wa-msg-content>.gvs-wa-reactions{justify-content:flex-start!important;margin-left:8px!important;margin-right:0!important;}
.gvs-wa-chat-thread .gvs-wa-msg.in .gvs-wa-msg-content>.gvs-wa-reactions{justify-content:flex-end!important;margin-right:8px!important;margin-left:0!important;align-self:flex-end!important;}
.gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-reaction{
  min-width:0!important;height:22px!important;padding:0 6px!important;border-radius:11px!important;
  font-size:14px!important;line-height:20px!important;
  background:#fff!important;border:2px solid #f0f2f5!important;box-shadow:0 1px 3px rgba(0,0,0,.28)!important;
}
body.dark .gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-reaction{background:#3a3b3c!important;border-color:#18191a!important;}
.gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-reaction b{font-size:11px!important;margin-left:3px!important;}
.gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-reaction.mine{border-color:#0866ff!important;}

/* GVS+ — réponse à un message, exactement comme Facebook Messenger */
/* 1) Bandeau au-dessus de la zone de saisie : « Vous répondez à … » */
.gvs-wa-reply-preview{gap:10px!important;padding:8px 14px 8px 16px!important;background:#fff!important;border-top:1px solid #e4e6eb!important;}
.gvs-wa-reply-preview .gvs-wa-reply-preview-bar{display:none!important;}
.gvs-wa-reply-preview .gvs-wa-reply-preview-name{font-size:13px!important;font-weight:600!important;color:#050505!important;line-height:1.3!important;}
.gvs-wa-reply-preview .gvs-wa-reply-preview-text{font-size:13px!important;color:#65676b!important;}
.gvs-wa-reply-preview .gvs-wa-reply-preview-close{width:28px;height:28px;border-radius:50%!important;background:#e4e6eb!important;color:#050505!important;font-size:18px!important;display:flex;align-items:center;justify-content:center;padding:0!important;}
body.dark .gvs-wa-reply-preview{background:#242526!important;border-color:#3e4042!important;}
body.dark .gvs-wa-reply-preview .gvs-wa-reply-preview-name{color:#e4e6eb!important;}
body.dark .gvs-wa-reply-preview .gvs-wa-reply-preview-text{color:#b0b3b8!important;}
body.dark .gvs-wa-reply-preview .gvs-wa-reply-preview-close{background:#3a3b3c!important;color:#e4e6eb!important;}

/* 2) Dans la discussion : étiquette + bulle grise derrière la réponse */
.gvs-wa-chat-thread .gvs-wa-rq-label{display:flex;align-items:center;gap:5px;font-size:12px;line-height:1.3;color:#65676b;margin:4px 0 3px;max-width:100%;}
.gvs-wa-chat-thread .gvs-wa-rq-label svg{flex:0 0 auto;}
.gvs-wa-chat-thread .gvs-wa-rq-label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.gvs-wa-chat-thread .gvs-wa-rq{
  position:relative;z-index:1;cursor:pointer;box-sizing:border-box;
  max-width:min(260px,72vw);min-width:60px;
  padding:9px 14px 22px;margin:0 0 -14px;border-radius:18px;
  background:#e4e6eb;color:#65676b;
}
.gvs-wa-chat-thread .gvs-wa-rq-text{font-size:14px;line-height:1.35;color:inherit;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word;white-space:pre-wrap;}
.gvs-wa-chat-thread .gvs-wa-rq:active{filter:brightness(.94);}
.gvs-wa-chat-thread .gvs-wa-rq ~ .gvs-wa-line{position:relative;z-index:2;}
/* l'étiquette et la bulle grise s'alignent sur la bulle, pas sur la photo de profil */
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-own .gvs-wa-rq-label,
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-own .gvs-wa-rq{margin-right:38px;align-self:flex-end;}
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-other .gvs-wa-rq-label,
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-other .gvs-wa-rq{margin-left:38px;align-self:flex-start;}
.gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-rq{margin-bottom:-14px;}
body.dark .gvs-wa-chat-thread .gvs-wa-rq-label{color:#b0b3b8;}
body.dark .gvs-wa-chat-thread .gvs-wa-rq{background:#3a3b3c;color:#b0b3b8;}
/* message d'origine mis en évidence après un clic sur la citation */
.gvs-wa-msg.gvs-wa-flash{animation:gvsWaFlash 1.2s ease;}
@keyframes gvsWaFlash{0%,100%{filter:none}20%,60%{filter:brightness(.82)}}

/* 3) Glisser un message pour répondre */
.gvs-wa-msg{will-change:transform;}
.gvs-wa-swipe-ico{position:absolute;top:50%;width:30px;height:30px;margin-top:-15px;border-radius:50%;background:#e4e6eb;color:#65676b;display:flex;align-items:center;justify-content:center;transform:scale(.6);opacity:.6;transition:transform .12s,opacity .12s,background .12s;pointer-events:none;}
.gvs-wa-swipe-ico.left{left:-40px;}
.gvs-wa-swipe-ico.right{right:-40px;}
.gvs-wa-swipe-ico.ready{transform:scale(1);opacity:1;background:#0866ff;color:#fff;}
body.dark .gvs-wa-swipe-ico{background:#3a3b3c;color:#b0b3b8;}

/* GVS+ — statut « Envoi… / Envoyé / Vu à 14:45 » sous le dernier message, comme Facebook */
.gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-status{align-self:flex-end;margin:3px 38px 0 0;font-size:11.5px;line-height:1.2;color:#65676b;text-align:right;}
.gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-status.is-seen{color:#0866ff;font-weight:600;}
.gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-status.is-pending{opacity:.75;font-style:italic;}
body.dark .gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-status{color:#b0b3b8;}
body.dark .gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-status.is-seen{color:#76ff85;}

/* GVS+ — « Vu » exactement comme Facebook : mini-photo sous la bulle, à droite ;
   mes messages n'ont plus de photo à côté de la bulle */
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-own .gvs-wa-rq-label,
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-own .gvs-wa-rq{margin-right:0!important;}
.gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-status{margin:3px 2px 0 0!important;}
.gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-seen-row{align-self:flex-end;display:flex;margin:3px 2px 0 0;line-height:0;}
.gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-seen-row .gvs-wa-msg-avatar{width:16px!important;height:16px!important;min-width:16px!important;flex:0 0 16px!important;margin:0!important;border-radius:50%!important;overflow:hidden;font-size:8px!important;}
.gvs-wa-chat-thread .gvs-wa-msg .gvs-wa-seen-row img{width:100%!important;height:100%!important;object-fit:cover;border-radius:50%;}
/* la ligne d'un message envoyé n'a plus de place réservée pour une photo */
.gvs-wa-chat-thread .gvs-wa-msg.gvs-wa-own .gvs-wa-line{gap:0!important;}

/* GVS+ — Icône Wi‑Fi cliquable : rouge = connexion coupée, vert = connexion active. */
html body #asbNetwork{cursor:pointer!important;pointer-events:auto!important;-webkit-tap-highlight-color:transparent;}
html body #asbNetwork.gvs-wifi-on,html body #asbNetwork.gvs-wifi-on .asb-icon,
html body.dark #asbNetwork.gvs-wifi-on,html body.dark #asbNetwork.gvs-wifi-on .asb-icon,
html body.gvs-wa-user-chat-open #asbNetwork.gvs-wifi-on,html body.gvs-wa-user-chat-open #asbNetwork.gvs-wifi-on .asb-icon,
html body.gvs-wa-admin-chat-open #asbNetwork.gvs-wifi-on,html body.gvs-wa-admin-chat-open #asbNetwork.gvs-wifi-on .asb-icon{color:#1fb254!important;}
html body #asbNetwork.gvs-wifi-off,html body #asbNetwork.gvs-wifi-off .asb-icon,
html body.dark #asbNetwork.gvs-wifi-off,html body.dark #asbNetwork.gvs-wifi-off .asb-icon,
html body.gvs-wa-user-chat-open #asbNetwork.gvs-wifi-off,html body.gvs-wa-user-chat-open #asbNetwork.gvs-wifi-off .asb-icon,
html body.gvs-wa-admin-chat-open #asbNetwork.gvs-wifi-off,html body.gvs-wa-admin-chat-open #asbNetwork.gvs-wifi-off .asb-icon{color:#e53935!important;}
html.gvs-offline #asbNetwork{opacity:1!important;}

/* GVS+ — Wi‑Fi : vert clair lumineux (allumé) / rouge clair lumineux (éteint). */
html body #asbNetwork.gvs-wifi-on,html body #asbNetwork.gvs-wifi-on .asb-icon,
html body.dark #asbNetwork.gvs-wifi-on,html body.dark #asbNetwork.gvs-wifi-on .asb-icon,
html body.gvs-wa-user-chat-open #asbNetwork.gvs-wifi-on,html body.gvs-wa-user-chat-open #asbNetwork.gvs-wifi-on .asb-icon,
html body.gvs-wa-admin-chat-open #asbNetwork.gvs-wifi-on,html body.gvs-wa-admin-chat-open #asbNetwork.gvs-wifi-on .asb-icon{color:#4dff88!important;}
html body #asbNetwork.gvs-wifi-off,html body #asbNetwork.gvs-wifi-off .asb-icon,
html body.dark #asbNetwork.gvs-wifi-off,html body.dark #asbNetwork.gvs-wifi-off .asb-icon,
html body.gvs-wa-user-chat-open #asbNetwork.gvs-wifi-off,html body.gvs-wa-user-chat-open #asbNetwork.gvs-wifi-off .asb-icon,
html body.gvs-wa-admin-chat-open #asbNetwork.gvs-wifi-off,html body.gvs-wa-admin-chat-open #asbNetwork.gvs-wifi-off .asb-icon{color:#ff5c6c!important;}
html body #asbNetwork.gvs-wifi-on .asb-icon{filter:drop-shadow(0 0 3px #4dff88) drop-shadow(0 0 7px rgba(77,255,136,.85));}
html body #asbNetwork.gvs-wifi-off .asb-icon{filter:drop-shadow(0 0 3px #ff5c6c) drop-shadow(0 0 7px rgba(255,92,108,.85));}

/* GVS+ — icône réseau GSM (données mobiles) : mêmes dimensions que l'icône Wi‑Fi. */
#asbNetwork .asb-gsm-icon{width:22px!important;height:20px!important;min-width:22px!important;color:inherit!important;}
.android-status-bar #asbNetwork .asb-gsm-icon{width:25px!important;height:23px!important;min-width:25px!important;}
html body #asbNetwork.gvs-wifi-on .asb-gsm-icon{filter:drop-shadow(0 0 3px #4dff88) drop-shadow(0 0 7px rgba(77,255,136,.85));}
html body #asbNetwork.gvs-wifi-off .asb-gsm-icon{filter:drop-shadow(0 0 3px #ff5c6c) drop-shadow(0 0 7px rgba(255,92,108,.85));}

/* ===== GVS+ — Réponses et réactions exactement comme Facebook Messenger ===== */
/* Réponse : la citation est une bulle PLUS CLAIRE que la réponse, texte normal, posée derrière. */
.gvs-wa-chat-thread .gvs-wa-rq{background:#f5f6f8!important;color:#6b6f76!important;padding:8px 14px 20px!important;margin-bottom:-12px!important;border-radius:18px!important;}
.gvs-wa-chat-thread .gvs-wa-rq-text{font-size:14px!important;font-weight:400!important;line-height:1.3!important;color:#6b6f76!important;}
.gvs-wa-chat-thread .gvs-wa-rq-label{font-size:12px!important;font-weight:400!important;color:#65676b!important;}
body.dark .gvs-wa-chat-thread .gvs-wa-rq{background:#2b2c2d!important;color:#a8abb0!important;}
body.dark .gvs-wa-chat-thread .gvs-wa-rq-text{color:#a8abb0!important;}
/* Réaction : petite pastille collée au bord bas de la bulle (texte, vocal, photo),
   côté intérieur : à gauche pour mes messages, à droite pour ceux de l'autre personne. */
.gvs-wa-chat-thread .gvs-wa-line{position:relative;}
.gvs-wa-chat-thread .gvs-wa-msg.has-react{margin-bottom:20px!important;}
.gvs-wa-chat-thread .gvs-wa-line>.gvs-wa-reactions{
  position:absolute!important;bottom:-16px!important;top:auto!important;margin:0!important;padding:0!important;
  width:auto!important;display:flex!important;flex-wrap:nowrap!important;gap:2px!important;z-index:9!important;
}
.gvs-wa-chat-thread .gvs-wa-msg.out .gvs-wa-line>.gvs-wa-reactions{left:8px!important;right:auto!important;}
.gvs-wa-chat-thread .gvs-wa-msg.in .gvs-wa-line>.gvs-wa-reactions{right:8px!important;left:auto!important;}
.gvs-wa-chat-thread .gvs-wa-line>.gvs-wa-reactions .gvs-wa-reaction{
  height:21px!important;min-width:0!important;padding:0 5px!important;border-radius:11px!important;
  font-size:13px!important;line-height:17px!important;background:#fff!important;
  border:2px solid #fff!important;box-shadow:0 1px 3px rgba(0,0,0,.30)!important;
}
.gvs-wa-chat-thread .gvs-wa-line>.gvs-wa-reactions .gvs-wa-reaction.mine{border-color:#fff!important;box-shadow:0 0 0 1.5px #0866ff,0 1px 3px rgba(0,0,0,.25)!important;}
.gvs-wa-chat-thread .gvs-wa-line>.gvs-wa-reactions .gvs-wa-reaction b{font-size:11px!important;margin-left:2px!important;color:#65676b!important;}
body.dark .gvs-wa-chat-thread .gvs-wa-line>.gvs-wa-reactions .gvs-wa-reaction{background:#3a3b3c!important;border-color:#18191a!important;}

/* GVS+ — vrai micro (comme le bouton d'envoi vocal) dans les citations, réponses et aperçus de messages vocaux */
.gvs-wa-mic-inline{width:1.15em;height:1.15em;flex:0 0 auto;display:inline-block;vertical-align:-0.2em;margin-right:5px;color:inherit;}
.gvs-wa-rq-text .gvs-wa-mic-inline,.gvs-wa-reply-preview-text .gvs-wa-mic-inline,.gvs-wa-admin-row-main small .gvs-wa-mic-inline{color:inherit;}
.gvs-wa-mic-line{display:inline-flex;align-items:center;max-width:100%;}

/* Bande dessiner : boutons au-dessus des images */
.bande-dessiner-carousel{position:relative;overflow:hidden}
.bande-dessiner-controls{
  position:relative;
  z-index:20;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  padding:0 0 12px;
  background:var(--paper,#fff);
}
.bande-dessiner-nav{
  position:relative !important;
  inset:auto !important;
  min-width:110px;
  margin:0 !important;
  box-shadow:var(--shadow-sm,0 1px 4px rgba(0,0,0,.10));
}
.bande-dessiner-track{animation:none !important}
@media(max-width:520px){
  .bande-dessiner-controls{gap:8px;padding-bottom:10px}
  .bande-dessiner-nav{min-width:96px}
}

/* Bande dessiner — navigation toujours au-dessus + image aussi grande que les visuels d'annonces */
.bande-dessiner-section .bande-dessiner-carousel{
  width:100%;
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:0;
}
.bande-dessiner-section .bande-dessiner-controls{
  order:0;
  width:100%;
  flex:0 0 auto;
  position:relative;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  padding:0 0 12px;
  margin:0;
}
.bande-dessiner-section .bande-dessiner-nav{
  position:relative !important;
  inset:auto !important;
  transform:none !important;
  flex:1 1 0;
  min-width:0;
  min-height:44px;
  margin:0 !important;
}
.bande-dessiner-section .bande-dessiner-viewport{
  order:1;
  width:100%;
  min-height:220px;
  height:auto;
  display:block;
  overflow:hidden;
  border-radius:14px;
  background:var(--paper-raised,#fff);
}
.bande-dessiner-section .bande-dessiner-viewport img{
  display:block;
  width:100%;
  height:auto;
  max-width:100%;
  max-height:none;
  object-fit:contain;
  object-position:top center;
  border-radius:14px;
  margin:0;
}
.bande-dessiner-section .bande-dessiner-counter{
  order:2;
  margin-top:8px;
}
@media(max-width:520px){
  .bande-dessiner-section .bande-dessiner-controls{gap:8px;padding-bottom:10px}
  .bande-dessiner-section .bande-dessiner-nav{min-height:42px;font-size:14px}
  .bande-dessiner-section .bande-dessiner-viewport{min-height:220px}
}

/* Pastilles rondes vertes sur/à côté des photos de profil : supprimées (le libellé « ● En ligne » reste) */
.avatar-status-dot,.avatar-status-dot.show,#gvsZip1Messenger .status-dot{display:none!important}

/* Administration > Comptes : photo de profil cliquable pour écrire à l'utilisateur */
#userList .user-avatar-chat{background:linear-gradient(135deg,#e9f0ff,#dff7ed);color:#1236b8;font:inherit;font-weight:900;font-size:18px;-webkit-tap-highlight-color:transparent;transition:transform .12s}
#userList .user-avatar-chat:active{transform:scale(.94)}
#userList .user-avatar-chat img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}

/* Changement de logo (admin) : logo importé — jamais déformé, jamais inversé en mode sombre. */
html.gvs-custom-logo body.dark::before{filter:none}
img.gvs-logo-custom,.gvs-logo-custom{object-fit:contain}
#gvsQuickAppsBar .gvs-fixed-app.gvs-qa-gvsplus img.gvs-logo-custom{
  width:100%!important;height:100%!important;object-fit:contain!important;
  border-radius:50%!important;background:#fff!important;padding:2px!important;box-sizing:border-box!important;
}
#adminSiteLogoPreviewWrap{display:flex;flex-direction:column;align-items:center;gap:8px;margin:10px 0}
#adminSiteLogoPreviewWrap img{max-width:160px;max-height:120px;object-fit:contain;border-radius:10px;border:1px solid rgba(128,128,128,.35);background:repeating-conic-gradient(#e6e6e6 0 25%,#fff 0 50%) 0 0/16px 16px;padding:6px}

/* GVS+ v35 — Espace Client : uniquement le logo GVS+ remonte un peu (le titre et le reste ne bougent pas). */
#auth .authbrand .logo{
  position:relative !important;
  top:-26px !important;
}

/* Changement de logo (admin) : largeur et hauteur de tous les logos GVS+ réglables (propriété « scale », indépendante des animations/transform existants). */
.gvs-logo-sz{
  scale:var(--gvs-logo-sx,1) var(--gvs-logo-sy,1);
  transform-box:fill-box;
  transform-origin:center center;
}
.gvs-logo-size-box{margin:12px 0;padding:10px;border:1px solid rgba(128,128,128,.35);border-radius:12px}
.gvs-logo-size-box label{display:flex;justify-content:space-between;align-items:center;margin:8px 0 2px}
.gvs-logo-size-box input[type=range]{width:100%}

/* Logo du bandeau (Facebook, TikTok…) : garde toujours sa taille par défaut, hors réglage admin. */
#gvsQuickAppsBar .gvs-logo-sz,
#gvsQuickAppsBar.gvs-logo-sz{scale:1 1 !important}

/* Actualités : cadre simple, défilement libre au doigt par l'utilisateur (comme les affiches publicitaires). */
.news-section{
  margin:0 0 14px !important;padding:8px !important;
  border:1px solid #C8D7EE !important;border-radius:18px !important;
  box-shadow:none !important;
}
body.dark .news-section{border-color:#3A4568 !important}
.news-section .news-dots{display:none !important}
.news-section .news-nav{display:flex !important}
.news-section .news-carousel-wrap.single .news-nav{display:none !important}
.news-section .news-carousel{scroll-behavior:smooth !important}
.news-section .news-carousel{
  scroll-snap-type:none !important;scroll-behavior:auto !important;
  overflow-x:auto !important;overscroll-behavior-x:contain;
  scrollbar-width:none;-ms-overflow-style:none;
}
.news-section .news-carousel::-webkit-scrollbar{display:none}
.news-section .news-card{scroll-snap-align:none !important}

/* Actualités : une photo entière par vue (jamais coupée), boutons de défilement placés sous les photos. */
.news-section .news-carousel{
  scroll-snap-type:x mandatory !important;
  gap:0 !important;justify-content:flex-start !important;
}
.news-section .news-card{
  flex:0 0 100% !important;width:100% !important;min-width:100% !important;max-width:100% !important;
  margin:0 !important;aspect-ratio:auto !important;height:auto !important;
  scroll-snap-align:start !important;scroll-snap-stop:always;
  overflow:hidden !important;
}
.news-section .news-card .news-photo-carousel,
.news-section .news-card .news-photo-strip,
.news-section .news-card .news-photo-slide,
.news-section .news-card .news-photo-frame{height:auto !important;overflow:visible !important}
.news-section .news-card .news-photo-frame{aspect-ratio:auto !important;display:block !important;background:transparent !important}
.news-section .news-card .news-photo-frame img,
.news-section .news-card .news-photo-slide img{
  width:100% !important;height:auto !important;max-height:min(68vh,560px) !important;
  object-fit:contain !important;display:block;margin:0 auto;
}
.news-section .news-carousel-wrap{padding-bottom:46px}
.news-section .news-nav{
  top:auto !important;bottom:2px !important;transform:none !important;
  width:38px !important;height:38px !important;
}
.news-section .news-nav:active{transform:scale(.92) !important}
.news-section .news-nav-prev{left:calc(50% - 46px) !important;right:auto !important}
.news-section .news-nav-next{left:calc(50% + 8px) !important;right:auto !important}

/* Actualités : photos plus petites (toujours entières). */
.news-section .news-card .news-photo-frame img,
.news-section .news-card .news-photo-slide img{
  max-height:min(34vh,280px) !important;
}
.news-section .news-card{padding:8px !important}
.news-section .news-card p{font-size:12px !important}
.news-section .news-carousel-wrap{padding-bottom:42px}
.news-section .news-nav{width:34px !important;height:34px !important}
.news-section .news-nav-prev{left:calc(50% - 42px) !important}

/* Actualités : bloc compact pour laisser voir les pages de navigation. */
.news-section{padding:6px !important;margin-bottom:8px !important}
.news-section .news-card{padding:4px !important;border-radius:14px !important}
.news-section .news-card .news-photo-frame img,
.news-section .news-card .news-photo-slide img{max-height:min(15vh,125px) !important}
.news-section .news-card p{padding:3px 6px 0 !important;font-size:11px !important;line-height:1.25 !important;max-height:2.6em;overflow:hidden}
.news-section .news-carousel-wrap{padding-bottom:34px}
.news-section .news-nav{width:28px !important;height:28px !important}
.news-section .news-nav svg{width:14px !important;height:14px !important}
.news-section .news-nav-prev{left:calc(50% - 34px) !important}
.news-section .news-nav-next{left:calc(50% + 6px) !important}
.news-section .section-title{margin:0 0 4px !important}

/* Actualités : boutons à gauche/droite, plus de cadre intérieur autour des images, grand cadre un peu plus haut. */
.news-section .news-carousel-wrap{padding-bottom:0 !important}
.news-section .news-nav{
  top:50% !important;bottom:auto !important;
  transform:translateY(-50%) !important;
  width:30px !important;height:30px !important;
  background:rgba(255,255,255,.88) !important;
}
body.dark .news-section .news-nav{background:rgba(15,23,42,.88) !important}
.news-section .news-nav:active{transform:translateY(-50%) scale(.92) !important}
.news-section .news-nav-prev{left:4px !important;right:auto !important}
.news-section .news-nav-next{right:4px !important;left:auto !important}
.news-section .news-card,
body.dark .news-section .news-card{
  border:0 !important;background:transparent !important;box-shadow:none !important;
  border-radius:0 !important;padding:0 !important;
}
.news-section .news-card::before,
.news-section .news-card::after{display:none !important;content:none !important}
.news-section .news-card .news-photo-frame,
.news-section .news-card .news-photo-slide,
.news-section .news-card .news-photo-carousel,
.news-section .news-card .news-photo-strip{
  border:0 !important;background:transparent !important;box-shadow:none !important;border-radius:0 !important;
}
.news-section .news-card .news-photo-frame img,
.news-section .news-card .news-photo-slide img{
  border:0 !important;box-shadow:none !important;background:transparent !important;border-radius:10px !important;
  max-height:min(24vh,200px) !important;
}

/* Carreaux de navigation : un peu plus hauts (largeur inchangée). */
.anip-tile{aspect-ratio:1 / 1.12 !important}

/* Icônes des carreaux un peu plus grandes. */
.anip-tile-icon{width:50px !important;height:50px !important;border-radius:15px !important}
.anip-tile-icon svg{width:28px !important;height:28px !important}
@media (max-width:360px){
  .anip-tile-icon{width:42px !important;height:42px !important}
  .anip-tile-icon svg{width:23px !important;height:23px !important}
}

/* Carreau « J'aime » : même hauteur que les autres carreaux (+12 %), contenu et bouton centrés. */
.anip-tile-grid .home-like-section{
  height:132px !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
  gap:3px !important;
  padding:8px 10px !important;
}
.anip-tile-grid .home-like-icon{width:28px !important;height:28px !important;flex:0 0 28px !important;border-radius:9px !important;margin:0 auto}
.anip-tile-grid .home-like-icon svg{width:16px !important;height:16px !important}
.anip-tile-grid .home-like-content{flex:0 0 auto !important;width:100%;text-align:center}
.anip-tile-grid .home-like-content p{margin:0 auto;-webkit-line-clamp:2}
.anip-tile-grid .home-like-section .like-btn{width:auto !important;align-self:center !important;margin:2px auto 0 !important;display:inline-flex;align-items:center;justify-content:center}
@media (min-width:600px){
  .anip-tile-grid .home-like-section{height:155px !important}
}
@media (max-width:360px){
  .anip-tile-grid .home-like-section{height:110px !important;padding:6px 8px !important}
  .anip-tile-grid .home-like-icon{display:none !important}
}

/* Flèches des actualités : lumineuses — bleu électrique (mode clair), vert clair (mode sombre). */
.news-section .news-nav{
  color:#0A5CFF !important;
  border:1.5px solid #2F80FF !important;
  box-shadow:0 0 6px rgba(47,128,255,.85),0 0 14px rgba(47,128,255,.5) !important;
}
.news-section .news-nav svg{stroke:#0A5CFF !important;filter:drop-shadow(0 0 3px rgba(47,128,255,.9))}
body.dark .news-section .news-nav{
  color:#86F7B0 !important;
  border-color:#4ADE80 !important;
  box-shadow:0 0 6px rgba(74,222,128,.85),0 0 14px rgba(74,222,128,.5) !important;
}
body.dark .news-section .news-nav svg{stroke:#86F7B0 !important;filter:drop-shadow(0 0 3px rgba(134,247,176,.9))}

/* Pages de navigation : descendues un petit peu (hors accueil, connexion et messagerie) */
.page.active:not(#home):not(#auth):not(#messagerie){padding-top:14px}

/* Messagerie utilisateurs : la phrase du profil reste sur une seule ligne, en réduisant la taille si l'écran est étroit */
#gvsWaUserRoot .gvs-wa-profile-start-note,
#gvsWaUserRoot .gvs-wa-director-card .gvs-wa-profile-start-note{
  white-space:nowrap!important;
  font-size:clamp(8px,3.3vw,15px)!important;
  max-width:96vw!important;
  width:max-content!important;
  overflow:visible!important;
}

/* GVS+ — Bandeau de discussion : un nom d'utilisateur trop long ne doit plus
   passer sous les icônes appel / vidéo / menu. Le bloc du nom occupe l'espace
   restant (flex:1, min-width:0) et le nom est coupé avec « … » ; les icônes
   gardent leur taille (flex-shrink:0). Règle finale, priorité maximale. */
.gvs-wa-chat-head{
  min-width:0!important;
}
.gvs-wa-chat-head .gvs-wa-back,
.gvs-wa-chat-head .gvs-wa-avatar{
  flex:0 0 auto!important;
}
.gvs-wa-chat-head .gvs-wa-chat-head-main{
  flex:1 1 0!important;
  min-width:0!important;
  max-width:100%!important;
  overflow:hidden!important;
}
.gvs-wa-chat-head .gvs-wa-chat-head-main strong,
.gvs-wa-chat-head .gvs-wa-chat-head-main small{
  display:block!important;
  max-width:100%!important;
  min-width:0!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.gvs-wa-chat-head .gvs-wa-chat-head-actions{
  flex:0 0 auto!important;
  margin-left:0!important;
}
